Hello,

I worked a little on "add slide thumbnails to HTML export" part.
The code compiles ok with Debian testing updated x86 (and no parameter at all in autogen), gcc (Debian 4.5.2-4)

I only tried this :
- create a impress document with 2 slides
- export to XHTML, HTML and save it in test.html
then I got these files :
- test.html
- img0.png
- img1.png
- thumb0.png
- thumb1.png
- text0.html
- text1.html

I don't know if it's what was expected but i'm sure it needs some reviewing since I added, changed and removed 1 or 2 things from the original patch.
If this patch is ok, i can of course push it.

Julien.
commit a60dd719453536a559801619f0c5a5af0cfc2701
Author: Julien Nabet <serval2...@yahoo.fr>
Date:   Fri Mar 25 00:11:37 2011 +0100

    Try to resurrect "add slide thumbnails to HTML export" part

diff --git a/sd/source/filter/html/htmlex.cxx b/sd/source/filter/html/htmlex.cxx
index 2687a6e..64e2b7e 100644
--- a/sd/source/filter/html/htmlex.cxx
+++ b/sd/source/filter/html/htmlex.cxx
@@ -387,7 +387,7 @@ HtmlExport::HtmlExport(
         meMode( PUBLISH_HTML ),
         mbContentsPage(false),
         mnButtonThema(-1),
-        mnWidthPixel( PUB_LOWRES_WIDTH ),
+        mnWidthPixel( PUB_MEDRES_WIDTH ),
         meFormat( FORMAT_JPG ),
         mbNotes(false),
         mnCompression( -1 ),
@@ -399,6 +399,7 @@ HtmlExport::HtmlExport(
         maHTMLExtension(SdResId(STR_HTMLEXP_DEFAULT_EXTENSION)),
         mpHTMLFiles(NULL),
         mpImageFiles(NULL),
+        mpThumbnailFiles(NULL),
         mpPageNames(NULL),
         mpTextFiles(NULL),
         maIndexUrl(RTL_CONSTASCII_USTRINGPARAM("index")),
@@ -437,12 +438,13 @@ HtmlExport::~HtmlExport()
     // ------------------------------------------------------------------
     // Listen loeschen
     // ------------------------------------------------------------------
-    if(mpImageFiles && mpHTMLFiles && mpPageNames && mpTextFiles)
+    if(mpImageFiles && mpHTMLFiles && mpThumbnailFiles && mpPageNames && 
mpTextFiles )
     {
         for ( sal_uInt16 nSdPage = 0; nSdPage < mnSdPageCount; nSdPage++)
         {
             delete mpImageFiles[nSdPage];
             delete mpHTMLFiles[nSdPage];
+            delete mpThumbnailFiles[nSdPage];
             delete mpPageNames[nSdPage];
             delete mpTextFiles[nSdPage];
         }
@@ -450,6 +452,7 @@ HtmlExport::~HtmlExport()
 
     delete[] mpImageFiles;
     delete[] mpHTMLFiles;
+    delete[] mpThumbnailFiles;
     delete[] mpPageNames;
     delete[] mpTextFiles;
 }
@@ -740,6 +743,11 @@ void HtmlExport::ExportHtml()
         if( !CreateImagesForPresPages() )
             break;
 
+        if( mbContentsPage &&
+           !CreateImagesForPresPages( true ) )
+            break;
+
+
         if( !CreateHtmlForPresPages() )
             break;
 
@@ -973,7 +981,7 @@ bool HtmlExport::SavePresentation()
 // =====================================================================
 // Image-Dateien anlegen
 // =====================================================================
-bool HtmlExport::CreateImagesForPresPages()
+bool HtmlExport::CreateImagesForPresPages( bool bThumbnail)
 {
     try
     {
@@ -990,9 +998,9 @@ bool HtmlExport::CreateImagesForPresPages()
 
         Sequence< PropertyValue > 
aFilterData(((meFormat==FORMAT_JPG)&&(mnCompression != -1))? 3 : 2);
         aFilterData[0].Name = OUString( 
RTL_CONSTASCII_USTRINGPARAM("PixelWidth") );
-        aFilterData[0].Value <<= (sal_Int32)mnWidthPixel;
+        aFilterData[0].Value <<= (sal_Int32)(bThumbnail ? PUB_THUMBNAIL_WIDTH 
: mnWidthPixel );
         aFilterData[1].Name = OUString( 
RTL_CONSTASCII_USTRINGPARAM("PixelHeight") );
-        aFilterData[1].Value <<= (sal_Int32)mnHeightPixel;
+        aFilterData[1].Value <<= (sal_Int32)(bThumbnail ? PUB_THUMBNAIL_HEIGHT 
: mnHeightPixel);
         if((meFormat==FORMAT_JPG)&&(mnCompression != -1))
         {
             aFilterData[2].Name = OUString( 
RTL_CONSTASCII_USTRINGPARAM("Quality") );
@@ -1019,7 +1027,11 @@ bool HtmlExport::CreateImagesForPresPages()
             SdPage* pPage = maPages[ nSdPage ];
 
             OUString aFull(maExportPath);
-            aFull += *mpImageFiles[nSdPage];
+            if (bThumbnail)
+                aFull += *mpThumbnailFiles[nSdPage];
+            else
+                aFull += *mpImageFiles[nSdPage];
+
 
             aDescriptor[0].Value <<= aFull;
 
@@ -1893,7 +1905,7 @@ bool HtmlExport::CreateContentPage()
     aStr.AppendAscii( "<center><table width=\"90%\"><tr>\r\n" );
 
     // Inhaltsverzeichnis
-    aStr.AppendAscii( "<td valign=\"top\" align=\"left\" width=\"50%\">\r\n" );
+    aStr.AppendAscii( "<td valign=\"top\" align=\"left\" width=\"25%\">\r\n" );
     aStr.AppendAscii( "<h3>" );
     aStr += RESTOHTML(STR_HTMLEXP_CONTENTS);
     aStr.AppendAscii( "</h3>" );
@@ -1911,7 +1923,7 @@ bool HtmlExport::CreateContentPage()
     aStr.AppendAscii( "</td>\r\n" );
 
     // Dokument Infos
-    aStr.AppendAscii( "<td valign=\"top\" width=\"50%\">\r\n" );
+    aStr.AppendAscii( "<td valign=\"top\" align=\"left\" width=\"75%\">\r\n" );
 
     if(maAuthor.Len())
     {
@@ -1962,6 +1974,21 @@ bool HtmlExport::CreateContentPage()
         aStr.AppendAscii( "</a></p>\r\n" );
     }
 
+    for(sal_uInt16 nSdPage = 0; nSdPage < mnSdPageCount; nSdPage++)
+    {
+        String aText;
+
+        aText.AppendAscii( "<img src=\"" );
+        aText += StringToURL( *mpThumbnailFiles[nSdPage] );
+        aText.AppendAscii( "\" width=\"256\" height=\"192\" alt=\"" );
+        aText += StringToHTMLString( *mpPageNames[nSdPage] );
+        aText.AppendAscii( "\">" );
+
+        aStr += CreateLink(*mpHTMLFiles[nSdPage], aText);
+        aStr.AppendAscii( "\r\n" );
+    }
+
+
     aStr.AppendAscii( "</td></tr></table></center>\r\n" );
 
     aStr.AppendAscii( "</body>\r\n</html>" );
@@ -2086,6 +2113,7 @@ void HtmlExport::CreateFileNames()
     // Listen mit neuen Dateinamen anlegen
     mpHTMLFiles = new String*[mnSdPageCount];
     mpImageFiles = new String*[mnSdPageCount];
+    mpThumbnailFiles = new String*[mnSdPageCount];
     mpPageNames = new String*[mnSdPageCount];
     mpTextFiles = new String*[mnSdPageCount];
 
@@ -2116,6 +2144,15 @@ void HtmlExport::CreateFileNames()
 
         mpImageFiles[nSdPage] = pName;
 
+        pName = new String( RTL_CONSTASCII_USTRINGPARAM("thumb") );
+        *pName += String::CreateFromInt32(nSdPage);
+        if( meFormat!=FORMAT_JPG )
+            pName->AppendAscii( ".png" );
+        else
+            pName->AppendAscii( ".jpg" );
+
+        mpThumbnailFiles[nSdPage] = pName;
+
         pName = new String( RTL_CONSTASCII_USTRINGPARAM("text"));
         *pName += String::CreateFromInt32(nSdPage);
         *pName += maHTMLExtension;
@@ -3108,6 +3145,7 @@ bool HtmlExport::checkForExistingFiles()
         {
             if( (mpImageFiles[nSdPage] && checkFileExists( xFA, 
*mpImageFiles[nSdPage] )) ||
                 (mpHTMLFiles[nSdPage] && checkFileExists( xFA, 
*mpHTMLFiles[nSdPage] )) ||
+                (mpThumbnailFiles[nSdPage] && checkFileExists( xFA, 
*mpThumbnailFiles[nSdPage] )) ||
                 (mpPageNames[nSdPage] && checkFileExists( xFA, 
*mpPageNames[nSdPage] )) ||
                 (mpTextFiles[nSdPage] && checkFileExists( xFA, 
*mpTextFiles[nSdPage] )) )
             {
diff --git a/sd/source/filter/html/htmlex.hxx b/sd/source/filter/html/htmlex.hxx
index 43af349..09dd697 100644
--- a/sd/source/filter/html/htmlex.hxx
+++ b/sd/source/filter/html/htmlex.hxx
@@ -58,6 +58,9 @@
 #define PUB_HIGHRES_WIDTH      1024
 #define PUB_HIGHRES_HEIGHT     768
 
+#define PUB_THUMBNAIL_WIDTH  256
+#define PUB_THUMBNAIL_HEIGHT 192
+
 #define HtmlButtonThemaStr = "private://gallery/hidden/HtmlExportButtons";
 
 class List;
@@ -149,6 +152,7 @@ class HtmlExport
     String      maHTMLExtension;
     String** mpHTMLFiles;
     String** mpImageFiles;
+    String** mpThumbnailFiles;
     String** mpPageNames;
     String** mpTextFiles;
 
@@ -166,7 +170,7 @@ class HtmlExport
 
     void SetDocColors( SdPage* pPage = NULL );
 
-    bool       CreateImagesForPresPages();
+    bool        CreateImagesForPresPages( bool bThumbnails = false );
     bool       CreateHtmlTextForPresPages();
     bool       CreateHtmlForPresPages();
     bool       CreateContentPage();
_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to