LCOV - code coverage report
Current view: top level - sd/source/filter/html - htmlex.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 0 1649 0.0 %
Date: 2012-08-25 Functions: 0 70 0.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 0 4057 0.0 %

           Branch data     Line data    Source code
       1                 :            : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2                 :            : /*************************************************************************
       3                 :            :  *
       4                 :            :  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       5                 :            :  *
       6                 :            :  * Copyright 2000, 2010 Oracle and/or its affiliates.
       7                 :            :  *
       8                 :            :  * OpenOffice.org - a multi-platform office productivity suite
       9                 :            :  *
      10                 :            :  * This file is part of OpenOffice.org.
      11                 :            :  *
      12                 :            :  * OpenOffice.org is free software: you can redistribute it and/or modify
      13                 :            :  * it under the terms of the GNU Lesser General Public License version 3
      14                 :            :  * only, as published by the Free Software Foundation.
      15                 :            :  *
      16                 :            :  * OpenOffice.org is distributed in the hope that it will be useful,
      17                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      18                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      19                 :            :  * GNU Lesser General Public License version 3 for more details
      20                 :            :  * (a copy is included in the LICENSE file that accompanied this code).
      21                 :            :  *
      22                 :            :  * You should have received a copy of the GNU Lesser General Public License
      23                 :            :  * version 3 along with OpenOffice.org.  If not, see
      24                 :            :  * <http://www.openoffice.org/license.html>
      25                 :            :  * for a copy of the LGPLv3 License.
      26                 :            :  *
      27                 :            :  ************************************************************************/
      28                 :            : 
      29                 :            : 
      30                 :            : #include "htmlex.hxx"
      31                 :            : #include <com/sun/star/document/XExporter.hpp>
      32                 :            : #include <com/sun/star/lang/XMultiServiceFactory.hpp>
      33                 :            : #include <com/sun/star/document/XFilter.hpp>
      34                 :            : #include <com/sun/star/ucb/SimpleFileAccess.hpp>
      35                 :            : 
      36                 :            : #include <rtl/uri.hxx>
      37                 :            : #include <comphelper/processfactory.hxx>
      38                 :            : #include <osl/file.hxx>
      39                 :            : #include <tools/fsys.hxx>
      40                 :            : #include <unotools/pathoptions.hxx>
      41                 :            : #include <svtools/FilterConfigItem.hxx>
      42                 :            : #include <unotools/ucbstreamhelper.hxx>
      43                 :            : #include <unotools/localfilehelper.hxx>
      44                 :            : #include <com/sun/star/frame/XStorable.hpp>
      45                 :            : #include <sfx2/progress.hxx>
      46                 :            : #include <vcl/wrkwin.hxx>
      47                 :            : #include <svl/aeitem.hxx>
      48                 :            : #include <svx/svditer.hxx>
      49                 :            : #include <svtools/imaprect.hxx>
      50                 :            : #include <svtools/imapcirc.hxx>
      51                 :            : #include <svtools/imappoly.hxx>
      52                 :            : #include <vcl/msgbox.hxx>
      53                 :            : #include <sfx2/app.hxx>
      54                 :            : #include <editeng/outlobj.hxx>
      55                 :            : #include <editeng/editobj.hxx>
      56                 :            : #include <svx/svdopath.hxx>
      57                 :            : #include <svx/xoutbmp.hxx>
      58                 :            : #include <svtools/htmlout.hxx>
      59                 :            : #include <sfx2/docfile.hxx>
      60                 :            : #include <vcl/cvtgrf.hxx>
      61                 :            : #include <svtools/colorcfg.hxx>
      62                 :            : #include <svtools/filter.hxx>
      63                 :            : #include <editeng/colritem.hxx>
      64                 :            : #include <editeng/editeng.hxx>
      65                 :            : #include <editeng/wghtitem.hxx>
      66                 :            : #include <editeng/udlnitem.hxx>
      67                 :            : #include <editeng/postitem.hxx>
      68                 :            : #include <editeng/crsditem.hxx>
      69                 :            : #include <editeng/flditem.hxx>
      70                 :            : #include <sfx2/dispatch.hxx>
      71                 :            : #include <sfx2/fcontnr.hxx>
      72                 :            : #include <svl/style.hxx>
      73                 :            : #include <editeng/frmdiritem.hxx>
      74                 :            : #include <svx/svdoutl.hxx>
      75                 :            : #include <tools/urlobj.hxx>               // INetURLObject
      76                 :            : #include <vcl/bmpacc.hxx>
      77                 :            : #include <svtools/sfxecode.hxx>
      78                 :            : #include <com/sun/star/beans/PropertyState.hpp>
      79                 :            : #include <tools/resmgr.hxx>
      80                 :            : #include "comphelper/anytostring.hxx"
      81                 :            : #include "cppuhelper/exc_hlp.hxx"
      82                 :            : 
      83                 :            : #include "drawdoc.hxx"
      84                 :            : #include "Outliner.hxx"
      85                 :            : #include "sdpage.hxx"
      86                 :            : #include "sdattr.hxx"
      87                 :            : #include "glob.hrc"
      88                 :            : #include "anminfo.hxx"
      89                 :            : #include "imapinfo.hxx"
      90                 :            : #include "sdresid.hxx"
      91                 :            : #include "buttonset.hxx"
      92                 :            : #include <basegfx/polygon/b2dpolygon.hxx>
      93                 :            : 
      94                 :            : using ::rtl::OUString;
      95                 :            : using ::rtl::OString;
      96                 :            : using namespace ::com::sun::star;
      97                 :            : using namespace ::com::sun::star::uno;
      98                 :            : using namespace ::com::sun::star::beans;
      99                 :            : using namespace ::com::sun::star::frame;
     100                 :            : using namespace ::com::sun::star::lang;
     101                 :            : using namespace ::com::sun::star::document;
     102                 :            : 
     103                 :            : #define KEY_QUALITY     "JPG-EXPORT-QUALITY"
     104                 :            : 
     105                 :            : // Parameter aus Itemset abfragen
     106                 :            : 
     107                 :            : #define RESTOHTML( res ) StringToHTMLString(String(SdResId(res)))
     108                 :            : #define S2H( str ) StringToHTMLString( str )
     109                 :            : 
     110                 :            : // bei Aenderungen auch NUM_BUTTONS in pubdlg.hxx aendern!!
     111                 :            : const char *pButtonNames[NUM_BUTTONS] =
     112                 :            : {
     113                 :            :     "first-inactive.png",
     114                 :            :     "first.png",
     115                 :            :     "left-inactive.png",
     116                 :            :     "left.png",
     117                 :            :     "right-inactive.png",
     118                 :            :     "right.png",
     119                 :            :     "last-inactive.png",
     120                 :            :     "last.png",
     121                 :            :     "home.png",
     122                 :            :     "text.png",
     123                 :            :     "expand.png",
     124                 :            :     "collapse.png",
     125                 :            : };
     126                 :            : 
     127                 :            : #define BTN_FIRST_0 0
     128                 :            : #define BTN_FIRST_1 1
     129                 :            : #define BTN_PREV_0  2
     130                 :            : #define BTN_PREV_1  3
     131                 :            : #define BTN_NEXT_0  4
     132                 :            : #define BTN_NEXT_1  5
     133                 :            : #define BTN_LAST_0  6
     134                 :            : #define BTN_LAST_1  7
     135                 :            : #define BTN_INDEX   8
     136                 :            : #define BTN_TEXT    9
     137                 :            : #define BTN_MORE    10
     138                 :            : #define BTN_LESS    11
     139                 :            : 
     140                 :            : // *********************************************************************
     141                 :            : // Hilfsklasse fuer das simple erzeugen von Dateien lokal/remote
     142                 :            : // *********************************************************************
     143                 :            : class EasyFile
     144                 :            : {
     145                 :            : private:
     146                 :            :     SvStream*   pOStm;
     147                 :            :     SfxMedium*  pMedium;
     148                 :            :     bool        bOpen;
     149                 :            : 
     150                 :            : public:
     151                 :            : 
     152                 :            :     EasyFile();
     153                 :            :     ~EasyFile();
     154                 :            : 
     155                 :            :     sal_uLong createStream( const String& rUrl, SvStream*& rpStr );
     156                 :            :     sal_uLong createFileName(  const String& rUrl, String& rFileName );
     157                 :            :     sal_uLong close();
     158                 :            : };
     159                 :            : 
     160                 :            : // *********************************************************************
     161                 :            : // Hilfsklasse fuer das einbinden von Textattributen in die Html-Ausgabe
     162                 :            : // *********************************************************************
     163         [ #  # ]:          0 : class HtmlState
     164                 :            : {
     165                 :            : private:
     166                 :            :     bool mbColor;
     167                 :            :     bool mbWeight;
     168                 :            :     bool mbItalic;
     169                 :            :     bool mbUnderline;
     170                 :            :     bool mbStrike;
     171                 :            :     bool mbLink;
     172                 :            :     Color maColor;
     173                 :            :     Color maDefColor;
     174                 :            :     String maLink;
     175                 :            :     String maTarget;
     176                 :            : 
     177                 :            : public:
     178                 :            :     HtmlState( Color aDefColor );
     179                 :            : 
     180                 :            :     String SetWeight( bool bWeight );
     181                 :            :     String SetItalic( bool bItalic );
     182                 :            :     String SetUnderline( bool bUnderline );
     183                 :            :     String SetColor( Color aColor );
     184                 :            :     String SetStrikeout( bool bStrike );
     185                 :            :     String SetLink( const String& aLink, const String& aTarget );
     186                 :            :     String Flush();
     187                 :            : };
     188                 :            : 
     189                 :            : // =====================================================================
     190                 :            : // alle noch offennen Tags schliessen
     191                 :            : // =====================================================================
     192                 :          0 : String HtmlState::Flush()
     193                 :            : {
     194 [ #  # ][ #  # ]:          0 :     String aStr, aEmpty;
     195                 :            : 
     196 [ #  # ][ #  # ]:          0 :     aStr += SetWeight(false);
                 [ #  # ]
     197 [ #  # ][ #  # ]:          0 :     aStr += SetItalic(false);
                 [ #  # ]
     198 [ #  # ][ #  # ]:          0 :     aStr += SetUnderline(false);
                 [ #  # ]
     199 [ #  # ][ #  # ]:          0 :     aStr += SetStrikeout(false);
                 [ #  # ]
     200 [ #  # ][ #  # ]:          0 :     aStr += SetColor(maDefColor);
                 [ #  # ]
     201 [ #  # ][ #  # ]:          0 :     aStr += SetLink(aEmpty,aEmpty);
                 [ #  # ]
     202                 :            : 
     203         [ #  # ]:          0 :     return aStr;
     204                 :            : }
     205                 :            : 
     206                 :            : // =====================================================================
     207                 :            : // c'tor mit Defaultfarbe fuer die Seite
     208                 :            : // =====================================================================
     209         [ #  # ]:          0 : HtmlState::HtmlState( Color aDefColor )
     210                 :            : {
     211                 :          0 :     mbColor = false;
     212                 :          0 :     mbWeight = false;
     213                 :          0 :     mbItalic = false;
     214                 :          0 :     mbUnderline = false;
     215                 :          0 :     mbLink = false;
     216                 :          0 :     mbStrike = false;
     217                 :          0 :     maDefColor = aDefColor;
     218                 :          0 : }
     219                 :            : 
     220                 :            : // =====================================================================
     221                 :            : // aktiviert/deaktiviert Fettdruck
     222                 :            : // =====================================================================
     223                 :          0 : String HtmlState::SetWeight( bool bWeight )
     224                 :            : {
     225                 :          0 :     String aStr;
     226                 :            : 
     227 [ #  # ][ #  # ]:          0 :     if(bWeight && !mbWeight)
     228         [ #  # ]:          0 :         aStr.AppendAscii( "<b>" );
     229 [ #  # ][ #  # ]:          0 :     else if(!bWeight && mbWeight)
     230         [ #  # ]:          0 :         aStr.AppendAscii( "</b>" );
     231                 :            : 
     232                 :          0 :     mbWeight = bWeight;
     233                 :          0 :     return aStr;
     234                 :            : }
     235                 :            : 
     236                 :            : // =====================================================================
     237                 :            : // aktiviert/deaktiviert Italic
     238                 :            : // =====================================================================
     239                 :          0 : String HtmlState::SetItalic( bool bItalic )
     240                 :            : {
     241                 :          0 :     String aStr;
     242                 :            : 
     243 [ #  # ][ #  # ]:          0 :     if(bItalic && !mbItalic)
     244         [ #  # ]:          0 :         aStr.AppendAscii( "<i>" );
     245 [ #  # ][ #  # ]:          0 :     else if(!bItalic && mbItalic)
     246         [ #  # ]:          0 :         aStr.AppendAscii( "</i>" );
     247                 :            : 
     248                 :          0 :     mbItalic = bItalic;
     249                 :          0 :     return aStr;
     250                 :            : }
     251                 :            : 
     252                 :            : // =====================================================================
     253                 :            : // aktiviert/deaktiviert Unterstrichen
     254                 :            : // =====================================================================
     255                 :          0 : String HtmlState::SetUnderline( bool bUnderline )
     256                 :            : {
     257                 :          0 :     String aStr;
     258                 :            : 
     259 [ #  # ][ #  # ]:          0 :     if(bUnderline && !mbUnderline)
     260         [ #  # ]:          0 :         aStr.AppendAscii( "<u>" );
     261 [ #  # ][ #  # ]:          0 :     else if(!bUnderline && mbUnderline)
     262         [ #  # ]:          0 :         aStr.AppendAscii( "</u>" );
     263                 :            : 
     264                 :          0 :     mbUnderline = bUnderline;
     265                 :          0 :     return aStr;
     266                 :            : }
     267                 :            : 
     268                 :            : // =====================================================================
     269                 :            : // aktiviert/deaktiviert Durchstreichen
     270                 :            : // =====================================================================
     271                 :          0 : String HtmlState::SetStrikeout( bool bStrike )
     272                 :            : {
     273                 :          0 :     String aStr;
     274                 :            : 
     275 [ #  # ][ #  # ]:          0 :     if(bStrike && !mbStrike)
     276         [ #  # ]:          0 :         aStr.AppendAscii( "<strike>" );
     277 [ #  # ][ #  # ]:          0 :     else if(!bStrike && mbStrike)
     278         [ #  # ]:          0 :         aStr.AppendAscii( "</strike>" );
     279                 :            : 
     280                 :          0 :     mbStrike = bStrike;
     281                 :          0 :     return aStr;
     282                 :            : }
     283                 :            : 
     284                 :            : // =====================================================================
     285                 :            : // Setzt die angegebenne Textfarbe
     286                 :            : // =====================================================================
     287                 :          0 : String HtmlState::SetColor( Color aColor )
     288                 :            : {
     289                 :          0 :     String aStr;
     290                 :            : 
     291 [ #  # ][ #  # ]:          0 :     if(mbColor && aColor == maColor)
                 [ #  # ]
     292                 :          0 :         return aStr;
     293                 :            : 
     294         [ #  # ]:          0 :     if(mbColor)
     295                 :            :     {
     296         [ #  # ]:          0 :         aStr.AppendAscii( "</font>" );
     297                 :          0 :         mbColor = false;
     298                 :            :     }
     299                 :            : 
     300         [ #  # ]:          0 :     if(aColor != maDefColor)
     301                 :            :     {
     302                 :          0 :         maColor = aColor;
     303                 :            : 
     304         [ #  # ]:          0 :         aStr.AppendAscii( "<font color=\"" );
     305 [ #  # ][ #  # ]:          0 :         aStr += HtmlExport::ColorToHTMLString(aColor);
                 [ #  # ]
     306         [ #  # ]:          0 :         aStr.AppendAscii( "\">" );
     307                 :            : 
     308                 :          0 :         mbColor = true;
     309                 :            :     }
     310                 :            : 
     311                 :          0 :     return aStr;
     312                 :            : }
     313                 :            : 
     314                 :            : // =====================================================================
     315                 :            : // aktiviert/deaktiviert einen Hyperlink
     316                 :            : // =====================================================================
     317                 :          0 : String HtmlState::SetLink( const String& aLink, const String& aTarget )
     318                 :            : {
     319                 :          0 :     String aStr;
     320                 :            : 
     321 [ #  # ][ #  # ]:          0 :     if(mbLink&&maLink == aLink&&maTarget==aTarget)
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
     322                 :          0 :         return aStr;
     323                 :            : 
     324         [ #  # ]:          0 :     if(mbLink)
     325                 :            :     {
     326         [ #  # ]:          0 :         aStr.AppendAscii( "</a>" );
     327                 :          0 :         mbLink = false;
     328                 :            :     }
     329                 :            : 
     330         [ #  # ]:          0 :     if(aLink.Len())
     331                 :            :     {
     332         [ #  # ]:          0 :         aStr.AppendAscii( "<a href=\"" );
     333 [ #  # ][ #  # ]:          0 :         aStr += HtmlExport::StringToURL(aLink);
                 [ #  # ]
     334         [ #  # ]:          0 :         if(aTarget.Len())
     335                 :            :         {
     336         [ #  # ]:          0 :             aStr.AppendAscii( "\" target=\"" );
     337         [ #  # ]:          0 :             aStr += aTarget;
     338                 :            :         }
     339         [ #  # ]:          0 :         aStr.AppendAscii( "\">" );
     340                 :          0 :         mbLink = true;
     341         [ #  # ]:          0 :         maLink = aLink;
     342         [ #  # ]:          0 :         maTarget = aTarget;
     343                 :            :     }
     344                 :            : 
     345                 :          0 :     return aStr;
     346                 :            : }
     347                 :            : 
     348                 :            : // *********************************************************************
     349                 :            : // class HtmlExport Methoden
     350                 :            : // *********************************************************************
     351                 :            : 
     352                 :          0 : static String getParagraphStyle( SdrOutliner* pOutliner, sal_uInt16 nPara )
     353                 :            : {
     354         [ #  # ]:          0 :     SfxItemSet aParaSet( pOutliner->GetParaAttribs( nPara ) );
     355                 :            : 
     356         [ #  # ]:          0 :     String sStyle( RTL_CONSTASCII_USTRINGPARAM("direction:") );
     357 [ #  # ][ #  # ]:          0 :     if( static_cast<const SvxFrameDirectionItem*>(aParaSet.GetItem( EE_PARA_WRITINGDIR ))->GetValue() == FRMDIR_HORI_RIGHT_TOP )
     358                 :            :     {
     359 [ #  # ][ #  # ]:          0 :         sStyle += String( RTL_CONSTASCII_USTRINGPARAM("rtl;") );
                 [ #  # ]
     360                 :            :     }
     361                 :            :     else
     362                 :            :     {
     363 [ #  # ][ #  # ]:          0 :          sStyle += String( RTL_CONSTASCII_USTRINGPARAM("ltr;") );
                 [ #  # ]
     364                 :            :     }
     365         [ #  # ]:          0 :     return sStyle;
     366                 :            : }
     367                 :            : 
     368                 :            : // =====================================================================
     369                 :            : // Konstruktor fuer die Html Export Hilfsklasse
     370                 :            : // =====================================================================
     371                 :          0 : HtmlExport::HtmlExport(
     372                 :            :     OUString aPath,
     373                 :            :     const Sequence< PropertyValue >& rParams,
     374                 :            :     SdDrawDocument* pExpDoc,
     375                 :            :     ::sd::DrawDocShell* pDocShell )
     376                 :            :     :   maPath( aPath ),
     377                 :            :         mpDoc(pExpDoc),
     378                 :            :         mpDocSh( pDocShell ),
     379                 :            :         meEC(NULL),
     380                 :            :         meMode( PUBLISH_HTML ),
     381                 :            :         mbContentsPage(false),
     382                 :            :         mnButtonThema(-1),
     383                 :            :         mnWidthPixel( PUB_MEDRES_WIDTH ),
     384                 :            :         meFormat( FORMAT_JPG ),
     385                 :            :         mbNotes(false),
     386                 :            :         mnCompression( -1 ),
     387                 :            :         mbDownload( false ),
     388                 :            :         mbSlideSound(true),
     389                 :            :         mbHiddenSlides(true),
     390                 :            :         mbUserAttr(false),
     391                 :            :         mbDocColors(false),
     392                 :            :         maHTMLExtension(SdResId(STR_HTMLEXP_DEFAULT_EXTENSION)),
     393                 :            :         mpHTMLFiles(NULL),
     394                 :            :         mpImageFiles(NULL),
     395                 :            :         mpThumbnailFiles(NULL),
     396                 :            :         mpPageNames(NULL),
     397                 :            :         mpTextFiles(NULL),
     398                 :            :         maIndexUrl("index"),
     399                 :            :         meScript( SCRIPT_ASP ),
     400                 :            :         maHTMLHeader(
     401                 :            :             "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\r\n"
     402                 :            :             "     \"http://www.w3.org/TR/html4/transitional.dtd\">\r\n"
     403                 :            :             "<html>\r\n<head>\r\n" ),
     404 [ #  # ][ #  # ]:          0 :         mpButtonSet( new ButtonSet() )
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
     405                 :            : {
     406                 :          0 :     bool bChange = mpDoc->IsChanged();
     407                 :            : 
     408         [ #  # ]:          0 :     maIndexUrl += maHTMLExtension;
     409                 :            : 
     410         [ #  # ]:          0 :     InitExportParameters( rParams );
     411                 :            : 
     412   [ #  #  #  # ]:          0 :     switch( meMode )
     413                 :            :     {
     414                 :            :     case PUBLISH_HTML:
     415                 :            :     case PUBLISH_FRAMES:
     416         [ #  # ]:          0 :         ExportHtml();
     417                 :          0 :         break;
     418                 :            :     case PUBLISH_WEBCAST:
     419         [ #  # ]:          0 :         ExportWebCast();
     420                 :          0 :         break;
     421                 :            :     case PUBLISH_KIOSK:
     422         [ #  # ]:          0 :         ExportKiosk();
     423                 :          0 :         break;
     424                 :            :     }
     425                 :            : 
     426         [ #  # ]:          0 :     mpDoc->SetChanged(bChange);
     427                 :          0 : }
     428                 :            : 
     429 [ #  # ][ #  # ]:          0 : HtmlExport::~HtmlExport()
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     430                 :            : {
     431                 :            :     // ------------------------------------------------------------------
     432                 :            :     // Listen loeschen
     433                 :            :     // ------------------------------------------------------------------
     434 [ #  # ][ #  # ]:          0 :     if(mpImageFiles && mpHTMLFiles && mpThumbnailFiles && mpPageNames && mpTextFiles )
         [ #  # ][ #  # ]
                 [ #  # ]
     435                 :            :     {
     436         [ #  # ]:          0 :         for ( sal_uInt16 nSdPage = 0; nSdPage < mnSdPageCount; nSdPage++)
     437                 :            :         {
     438 [ #  # ][ #  # ]:          0 :             delete mpImageFiles[nSdPage];
     439 [ #  # ][ #  # ]:          0 :             delete mpHTMLFiles[nSdPage];
     440 [ #  # ][ #  # ]:          0 :             delete mpThumbnailFiles[nSdPage];
     441 [ #  # ][ #  # ]:          0 :             delete mpPageNames[nSdPage];
     442 [ #  # ][ #  # ]:          0 :             delete mpTextFiles[nSdPage];
     443                 :            :         }
     444                 :            :     }
     445                 :            : 
     446         [ #  # ]:          0 :     delete[] mpImageFiles;
     447         [ #  # ]:          0 :     delete[] mpHTMLFiles;
     448         [ #  # ]:          0 :     delete[] mpThumbnailFiles;
     449         [ #  # ]:          0 :     delete[] mpPageNames;
     450         [ #  # ]:          0 :     delete[] mpTextFiles;
     451         [ #  # ]:          0 : }
     452                 :            : 
     453                 :            : /** get common export parameters from item set */
     454                 :          0 : void HtmlExport::InitExportParameters( const Sequence< PropertyValue >& rParams )
     455                 :            : {
     456 [ #  # ][ #  # ]:          0 :     mbImpress = mpDoc && mpDoc->GetDocumentType() == DOCUMENT_TYPE_IMPRESS;
     457                 :            : 
     458                 :          0 :     sal_Int32 nArgs = rParams.getLength();
     459                 :          0 :     const PropertyValue* pParams = rParams.getConstArray();
     460                 :          0 :     OUString aStr;
     461         [ #  # ]:          0 :     while( nArgs-- )
     462                 :            :     {
     463         [ #  # ]:          0 :         if ( pParams->Name == "PublishMode" )
     464                 :            :         {
     465                 :          0 :             sal_Int32 temp = 0;
     466                 :          0 :             pParams->Value >>= temp;
     467                 :          0 :             meMode = (HtmlPublishMode)temp;
     468                 :            :         }
     469         [ #  # ]:          0 :         else if ( pParams->Name == "IndexURL" )
     470                 :            :         {
     471                 :          0 :             pParams->Value >>= aStr;
     472         [ #  # ]:          0 :             maIndexUrl = aStr;
     473                 :            :         }
     474         [ #  # ]:          0 :         else if ( pParams->Name == "Format" )
     475                 :            :         {
     476                 :          0 :             sal_Int32 temp = 0;
     477                 :          0 :             pParams->Value >>= temp;
     478                 :          0 :             meFormat = (PublishingFormat)temp;
     479                 :            :         }
     480         [ #  # ]:          0 :         else if ( pParams->Name == "Compression" )
     481                 :            :         {
     482                 :          0 :             pParams->Value >>= aStr;
     483         [ #  # ]:          0 :             String aTmp( aStr );
     484         [ #  # ]:          0 :             if(aTmp.Len())
     485                 :            :             {
     486         [ #  # ]:          0 :                 xub_StrLen nPos = aTmp.Search( '%' );
     487         [ #  # ]:          0 :                 if(nPos != STRING_NOTFOUND)
     488         [ #  # ]:          0 :                     aTmp.Erase(nPos,1);
     489         [ #  # ]:          0 :                 mnCompression = (sal_Int16)aTmp.ToInt32();
     490         [ #  # ]:          0 :             }
     491                 :            :         }
     492         [ #  # ]:          0 :         else if ( pParams->Name == "Width" )
     493                 :            :         {
     494                 :          0 :             sal_Int32 temp = 0;
     495                 :          0 :             pParams->Value >>= temp;
     496                 :          0 :             mnWidthPixel = (sal_uInt16)temp;
     497                 :            :         }
     498         [ #  # ]:          0 :         else if ( pParams->Name == "UseButtonSet" )
     499                 :            :         {
     500                 :          0 :             sal_Int32 temp = 0;
     501                 :          0 :             pParams->Value >>= temp;
     502                 :          0 :             mnButtonThema = (sal_Int16)temp;
     503                 :            :         }
     504         [ #  # ]:          0 :         else if ( pParams->Name == "IsExportNotes" )
     505                 :            :         {
     506         [ #  # ]:          0 :             if( mbImpress )
     507                 :            :             {
     508                 :          0 :                 sal_Bool temp = sal_False;
     509                 :          0 :                 pParams->Value >>= temp;
     510                 :          0 :                 mbNotes = temp;
     511                 :            :             }
     512                 :            :         }
     513         [ #  # ]:          0 :         else if ( pParams->Name == "IsExportContentsPage" )
     514                 :            :         {
     515                 :          0 :             sal_Bool temp = sal_False;
     516                 :          0 :             pParams->Value >>= temp;
     517                 :          0 :             mbContentsPage = temp;
     518                 :            :         }
     519         [ #  # ]:          0 :         else if ( pParams->Name == "Author" )
     520                 :            :         {
     521                 :          0 :             pParams->Value >>= aStr;
     522         [ #  # ]:          0 :             maAuthor = aStr;
     523                 :            :         }
     524         [ #  # ]:          0 :         else if ( pParams->Name == "EMail" )
     525                 :            :         {
     526                 :          0 :             pParams->Value >>= aStr;
     527         [ #  # ]:          0 :             maEMail = aStr;
     528                 :            :         }
     529         [ #  # ]:          0 :         else if ( pParams->Name == "HomepageURL" )
     530                 :            :         {
     531                 :          0 :             pParams->Value >>= aStr;
     532         [ #  # ]:          0 :             maHomePage = aStr;
     533                 :            :         }
     534         [ #  # ]:          0 :         else if ( pParams->Name == "UserText" )
     535                 :            :         {
     536                 :          0 :             pParams->Value >>= aStr;
     537         [ #  # ]:          0 :             maInfo = aStr;
     538                 :            :         }
     539         [ #  # ]:          0 :         else if ( pParams->Name == "EnableDownload" )
     540                 :            :         {
     541                 :          0 :             sal_Bool temp = sal_False;
     542                 :          0 :             pParams->Value >>= temp;
     543                 :          0 :             mbDownload = temp;
     544                 :            :         }
     545         [ #  # ]:          0 :         else if ( pParams->Name == "SlideSound" )
     546                 :            :         {
     547                 :          0 :             sal_Bool temp = sal_True;
     548                 :          0 :             pParams->Value >>= temp;
     549                 :          0 :             mbSlideSound = temp;
     550                 :            :         }
     551         [ #  # ]:          0 :         else if ( pParams->Name == "HiddenSlides" )
     552                 :            :         {
     553                 :          0 :             sal_Bool temp = sal_True;
     554                 :          0 :             pParams->Value >>= temp;
     555                 :          0 :             mbHiddenSlides = temp;
     556                 :            :         }
     557         [ #  # ]:          0 :         else if ( pParams->Name == "BackColor" )
     558                 :            :         {
     559                 :          0 :             sal_Int32 temp = 0;
     560                 :          0 :             pParams->Value >>= temp;
     561                 :          0 :             maBackColor = temp;
     562                 :          0 :             mbUserAttr = true;
     563                 :            :         }
     564         [ #  # ]:          0 :         else if ( pParams->Name == "TextColor" )
     565                 :            :         {
     566                 :          0 :             sal_Int32 temp = 0;
     567                 :          0 :             pParams->Value >>= temp;
     568                 :          0 :             maTextColor = temp;
     569                 :          0 :             mbUserAttr = true;
     570                 :            :         }
     571         [ #  # ]:          0 :         else if ( pParams->Name == "LinkColor" )
     572                 :            :         {
     573                 :          0 :             sal_Int32 temp = 0;
     574                 :          0 :             pParams->Value >>= temp;
     575                 :          0 :             maLinkColor = temp;
     576                 :          0 :             mbUserAttr = true;
     577                 :            :         }
     578         [ #  # ]:          0 :         else if ( pParams->Name == "VLinkColor" )
     579                 :            :         {
     580                 :          0 :             sal_Int32 temp = 0;
     581                 :          0 :             pParams->Value >>= temp;
     582                 :          0 :             maVLinkColor = temp;
     583                 :          0 :             mbUserAttr = true;
     584                 :            :         }
     585         [ #  # ]:          0 :         else if ( pParams->Name == "ALinkColor" )
     586                 :            :         {
     587                 :          0 :             sal_Int32 temp = 0;
     588                 :          0 :             pParams->Value >>= temp;
     589                 :          0 :             maALinkColor = temp;
     590                 :          0 :             mbUserAttr = true;
     591                 :            :         }
     592         [ #  # ]:          0 :         else if ( pParams->Name == "IsUseDocumentColors" )
     593                 :            :         {
     594                 :          0 :             sal_Bool temp = sal_False;
     595                 :          0 :             pParams->Value >>= temp;
     596                 :          0 :             mbDocColors = temp;
     597                 :            :         }
     598         [ #  # ]:          0 :         else if ( pParams->Name == "KioskSlideDuration" )
     599                 :            :         {
     600                 :          0 :             sal_Int32 temp = sal_False;
     601                 :          0 :             pParams->Value >>= temp;
     602                 :          0 :             mnSlideDuration = temp;
     603                 :          0 :             mbAutoSlide = true;
     604                 :            :         }
     605         [ #  # ]:          0 :         else if ( pParams->Name == "KioskEndless" )
     606                 :            :         {
     607                 :          0 :             sal_Bool temp = sal_False;
     608                 :          0 :             pParams->Value >>= temp;
     609                 :          0 :             mbEndless = temp;
     610                 :            :         }
     611         [ #  # ]:          0 :         else if ( pParams->Name == "WebCastCGIURL" )
     612                 :            :         {
     613                 :          0 :             pParams->Value >>= aStr;
     614         [ #  # ]:          0 :             maCGIPath = aStr;
     615                 :            :         }
     616         [ #  # ]:          0 :         else if ( pParams->Name == "WebCastTargetURL" )
     617                 :            :         {
     618                 :          0 :             pParams->Value >>= aStr;
     619         [ #  # ]:          0 :             maURLPath = aStr;
     620                 :            :         }
     621         [ #  # ]:          0 :         else if ( pParams->Name == "WebCastScriptLanguage" )
     622                 :            :         {
     623                 :          0 :             pParams->Value >>= aStr;
     624         [ #  # ]:          0 :             if ( aStr == "asp" )
     625                 :            :             {
     626                 :          0 :                 meScript = SCRIPT_ASP;
     627                 :            :             }
     628                 :            :             else
     629                 :            :             {
     630                 :          0 :                 meScript = SCRIPT_PERL;
     631                 :            :             }
     632                 :            :         }
     633                 :            :         else
     634                 :            :         {
     635                 :            :             OSL_FAIL("Unknown property for html export detected!");
     636                 :            :         }
     637                 :            : 
     638                 :          0 :         pParams++;
     639                 :            :     }
     640                 :            : 
     641         [ #  # ]:          0 :     if( meMode == PUBLISH_KIOSK )
     642                 :            :     {
     643                 :          0 :         mbContentsPage = false;
     644                 :          0 :         mbNotes = false;
     645                 :            : 
     646                 :            :     }
     647                 :            : 
     648                 :            :     // calculate image sizes
     649         [ #  # ]:          0 :     SdPage* pPage = mpDoc->GetSdPage(0, PK_STANDARD);
     650         [ #  # ]:          0 :     Size aTmpSize( pPage->GetSize() );
     651                 :          0 :     double dRatio=((double)aTmpSize.Width())/aTmpSize.Height();
     652                 :            : 
     653                 :          0 :     mnHeightPixel = (sal_uInt16)(mnWidthPixel/dRatio);
     654                 :            : 
     655                 :            :     //------------------------------------------------------------------
     656                 :            :     // Ziel ausklamuestern...
     657                 :            : 
     658 [ #  # ][ #  # ]:          0 :     INetURLObject aINetURLObj( maPath );
     659                 :            :     DBG_ASSERT( aINetURLObj.GetProtocol() != INET_PROT_NOT_VALID, "invalid URL" );
     660                 :            : 
     661 [ #  # ][ #  # ]:          0 :     maExportPath = aINetURLObj.GetPartBeforeLastName(); // with trailing '/'
     662 [ #  # ][ #  # ]:          0 :     maIndex = aINetURLObj.GetLastName();
     663                 :            : 
     664         [ #  # ]:          0 :     mnSdPageCount = mpDoc->GetSdPageCount( PK_STANDARD );
     665         [ #  # ]:          0 :     for( sal_uInt16 nPage = 0; nPage < mnSdPageCount; nPage++ )
     666                 :            :     {
     667         [ #  # ]:          0 :         pPage = mpDoc->GetSdPage( nPage, PK_STANDARD );
     668                 :            : 
     669 [ #  # ][ #  # ]:          0 :         if( mbHiddenSlides || !pPage->IsExcluded() )
                 [ #  # ]
     670                 :            :         {
     671         [ #  # ]:          0 :             maPages.push_back( pPage );
     672 [ #  # ][ #  # ]:          0 :             maNotesPages.push_back( mpDoc->GetSdPage( nPage, PK_NOTES ) );
     673                 :            :         }
     674                 :            :     }
     675                 :          0 :     mnSdPageCount = maPages.size();
     676                 :            : 
     677                 :          0 :     mbFrames = meMode == PUBLISH_FRAMES;
     678                 :            : 
     679 [ #  # ][ #  # ]:          0 :     maDocFileName = maIndex;
     680                 :          0 : }
     681                 :            : 
     682                 :            : ///////////////////////////////////////////////////////////////////////
     683                 :            : // Exportiert das im Konstruktor angegebenne Impress Dokument nach HTML
     684                 :            : ///////////////////////////////////////////////////////////////////////
     685                 :          0 : void HtmlExport::ExportHtml()
     686                 :            : {
     687         [ #  # ]:          0 :     if(mbUserAttr)
     688                 :            :     {
     689         [ #  # ]:          0 :         if( maTextColor == COL_AUTO )
     690                 :            :         {
     691         [ #  # ]:          0 :             if( !maBackColor.IsDark() )
     692                 :          0 :                 maTextColor = COL_BLACK;
     693                 :            :         }
     694                 :            :     }
     695         [ #  # ]:          0 :     else if( mbDocColors )
     696                 :            :     {
     697                 :            :         // Standard Farben fuer das Farbschema 'Aus Dokument'
     698                 :          0 :         SetDocColors();
     699                 :          0 :         maFirstPageColor = maBackColor;
     700                 :            :     }
     701                 :            : 
     702                 :            :     // get name for downloadable presentation if needed
     703         [ #  # ]:          0 :     if( mbDownload )
     704                 :            :     {
     705                 :            :         // Separator such und Extension ausblenden
     706                 :          0 :         sal_uInt16 nSepPos = maDocFileName.Search( sal_Unicode('.') );
     707                 :            : 
     708         [ #  # ]:          0 :         if(nSepPos != STRING_NOTFOUND)
     709                 :          0 :             maDocFileName.Erase(nSepPos);
     710                 :            : 
     711                 :          0 :         maDocFileName.AppendAscii( ".odp" );
     712                 :            :     }
     713                 :            : 
     714                 :            :     //////
     715                 :            : 
     716                 :          0 :     sal_uInt16 nProgrCount = mnSdPageCount;
     717         [ #  # ]:          0 :     nProgrCount += mbImpress?mnSdPageCount:0;
     718         [ #  # ]:          0 :     nProgrCount += mbContentsPage?1:0;
     719 [ #  # ][ #  # ]:          0 :     nProgrCount += (mbFrames && mbNotes)?mnSdPageCount:0;
     720         [ #  # ]:          0 :     nProgrCount += (mbFrames)?8:0;
     721                 :          0 :     InitProgress( nProgrCount );
     722                 :            : 
     723                 :          0 :     mpDocSh->SetWaitCursor( true );
     724                 :            : 
     725                 :            :     //------------------------------------------------------------------
     726                 :            :     // Exceptions sind doch was schoennes...
     727                 :            : 
     728                 :          0 :     CreateFileNames();
     729                 :            : 
     730                 :            :     // this is not a true while
     731                 :            :     while( 1 )
     732                 :            :     {
     733         [ #  # ]:          0 :         if( checkForExistingFiles() )
     734                 :          0 :             break;
     735                 :            : 
     736         [ #  # ]:          0 :         if( !CreateImagesForPresPages() )
     737                 :          0 :             break;
     738                 :            : 
     739   [ #  #  #  # ]:          0 :         if( mbContentsPage &&
                 [ #  # ]
     740                 :          0 :            !CreateImagesForPresPages( true ) )
     741                 :          0 :             break;
     742                 :            : 
     743                 :            : 
     744         [ #  # ]:          0 :         if( !CreateHtmlForPresPages() )
     745                 :          0 :             break;
     746                 :            : 
     747         [ #  # ]:          0 :         if( mbImpress )
     748         [ #  # ]:          0 :             if( !CreateHtmlTextForPresPages() )
     749                 :          0 :                 break;
     750                 :            : 
     751         [ #  # ]:          0 :         if( mbFrames )
     752                 :            :         {
     753         [ #  # ]:          0 :             if( !CreateFrames() )
     754                 :          0 :                 break;
     755                 :            : 
     756         [ #  # ]:          0 :             if( !CreateOutlinePages() )
     757                 :          0 :                 break;
     758                 :            : 
     759         [ #  # ]:          0 :             if( !CreateNavBarFrames() )
     760                 :          0 :                 break;
     761                 :            : 
     762 [ #  # ][ #  # ]:          0 :             if( mbNotes && mbImpress )
     763         [ #  # ]:          0 :                 if( !CreateNotesPages() )
     764                 :          0 :                     break;
     765                 :            : 
     766                 :            :         }
     767                 :            : 
     768         [ #  # ]:          0 :         if( mbContentsPage )
     769         [ #  # ]:          0 :             if( !CreateContentPage() )
     770                 :          0 :                 break;
     771                 :            : 
     772         [ #  # ]:          0 :         if( !CreateBitmaps() )
     773                 :          0 :             break;
     774                 :            : 
     775                 :          0 :         mpDocSh->SetWaitCursor( false );
     776                 :          0 :         ResetProgress();
     777                 :            : 
     778         [ #  # ]:          0 :         if( mbDownload )
     779                 :          0 :             SavePresentation();
     780                 :            : 
     781                 :          0 :         return;
     782                 :            :     }
     783                 :            : 
     784                 :            :     // if we get to this point the export was
     785                 :            :     // canceled by the user after an error
     786                 :          0 :     mpDocSh->SetWaitCursor( false );
     787                 :          0 :     ResetProgress();
     788                 :            : }
     789                 :            : 
     790                 :            : ///////////////////////////////////////////////////////////////////////
     791                 :            : 
     792                 :          0 : void HtmlExport::SetDocColors( SdPage* pPage )
     793                 :            : {
     794         [ #  # ]:          0 :     if( pPage == NULL )
     795         [ #  # ]:          0 :         pPage = mpDoc->GetSdPage(0, PK_STANDARD);
     796                 :            : 
     797         [ #  # ]:          0 :     svtools::ColorConfig aConfig;
     798         [ #  # ]:          0 :     maVLinkColor = Color(aConfig.GetColorValue(svtools::LINKSVISITED).nColor);
     799         [ #  # ]:          0 :     maALinkColor = Color(aConfig.GetColorValue(svtools::LINKS).nColor);
     800         [ #  # ]:          0 :     maLinkColor  = Color(aConfig.GetColorValue(svtools::LINKS).nColor);
     801                 :          0 :     maTextColor  = Color(COL_BLACK);
     802                 :            : 
     803                 :          0 :     SfxStyleSheet* pSheet = NULL;
     804                 :            : 
     805         [ #  # ]:          0 :     if( mpDoc->GetDocumentType() == DOCUMENT_TYPE_IMPRESS )
     806                 :            :     {
     807                 :            :         // Standard Textfarbe aus Outline-Vorlage der ersten Seite
     808         [ #  # ]:          0 :         pSheet = pPage->GetStyleSheetForPresObj(PRESOBJ_OUTLINE);
     809         [ #  # ]:          0 :         if(pSheet == NULL)
     810         [ #  # ]:          0 :             pSheet = pPage->GetStyleSheetForPresObj(PRESOBJ_TEXT);
     811         [ #  # ]:          0 :         if(pSheet == NULL)
     812         [ #  # ]:          0 :             pSheet = pPage->GetStyleSheetForPresObj(PRESOBJ_TITLE);
     813                 :            :     }
     814                 :            : 
     815         [ #  # ]:          0 :     if(pSheet == NULL)
     816                 :          0 :         pSheet = mpDoc->GetDefaultStyleSheet();
     817                 :            : 
     818         [ #  # ]:          0 :     if(pSheet)
     819                 :            :     {
     820         [ #  # ]:          0 :         SfxItemSet& rSet = pSheet->GetItemSet();
     821 [ #  # ][ #  # ]:          0 :         if(rSet.GetItemState(EE_CHAR_COLOR,sal_True) == SFX_ITEM_ON)
     822         [ #  # ]:          0 :             maTextColor = ((SvxColorItem*)rSet.GetItem(EE_CHAR_COLOR,sal_True))->GetValue();
     823                 :            :     }
     824                 :            : 
     825                 :            :     // Standard Hintergrundfarbe aus Background der MasterPage der ersten Seite
     826         [ #  # ]:          0 :     maBackColor = pPage->GetPageBackgroundColor();
     827                 :            : 
     828         [ #  # ]:          0 :     if( maTextColor == COL_AUTO )
     829                 :            :     {
     830 [ #  # ][ #  # ]:          0 :         if( !maBackColor.IsDark() )
     831                 :          0 :             maTextColor = COL_BLACK;
     832         [ #  # ]:          0 :     }
     833                 :          0 : }
     834                 :            : 
     835                 :            : ///////////////////////////////////////////////////////////////////////
     836                 :            : 
     837                 :          0 : void HtmlExport::InitProgress( sal_uInt16 nProgrCount )
     838                 :            : {
     839 [ #  # ][ #  # ]:          0 :     String aStr(SdResId(STR_CREATE_PAGES));
     840 [ #  # ][ #  # ]:          0 :     mpProgress = new SfxProgress( mpDocSh, aStr, nProgrCount );
                 [ #  # ]
     841                 :          0 : }
     842                 :            : 
     843                 :            : ///////////////////////////////////////////////////////////////////////
     844                 :            : 
     845                 :          0 : void HtmlExport::ResetProgress()
     846                 :            : {
     847         [ #  # ]:          0 :     delete mpProgress;
     848                 :          0 :     mpProgress = NULL;
     849                 :          0 : }
     850                 :            : 
     851                 :            : ///////////////////////////////////////////////////////////////////////
     852                 :            : 
     853                 :          0 : void HtmlExport::ExportKiosk()
     854                 :            : {
     855                 :          0 :     mnPagesWritten = 0;
     856                 :          0 :     InitProgress( 2*mnSdPageCount );
     857                 :            : 
     858                 :          0 :     CreateFileNames();
     859         [ #  # ]:          0 :     if( !checkForExistingFiles() )
     860                 :            :     {
     861         [ #  # ]:          0 :         if( CreateImagesForPresPages() )
     862                 :          0 :             CreateHtmlForPresPages();
     863                 :            :     }
     864                 :            : 
     865                 :          0 :     ResetProgress();
     866                 :          0 : }
     867                 :            : 
     868                 :            : ///////////////////////////////////////////////////////////////////////
     869                 :            : // Export Document with WebCast (TM) Technology
     870                 :            : ///////////////////////////////////////////////////////////////////////
     871                 :          0 : void HtmlExport::ExportWebCast()
     872                 :            : {
     873                 :          0 :     mnPagesWritten = 0;
     874         [ #  # ]:          0 :     InitProgress( mnSdPageCount + 9 );
     875                 :            : 
     876         [ #  # ]:          0 :     mpDocSh->SetWaitCursor( sal_True );
     877                 :            : 
     878         [ #  # ]:          0 :     CreateFileNames();
     879                 :            : 
     880         [ #  # ]:          0 :     String aEmpty;
     881         [ #  # ]:          0 :     if(maCGIPath.Len() == 0)
     882         [ #  # ]:          0 :         maCGIPath.Assign( sal_Unicode('.') );
     883                 :            : 
     884         [ #  # ]:          0 :     if( maCGIPath.GetChar( maCGIPath.Len() - 1 ) != sal_Unicode('/') )
     885         [ #  # ]:          0 :         maCGIPath.Append( sal_Unicode('/') );
     886                 :            : 
     887         [ #  # ]:          0 :     if( meScript == SCRIPT_ASP )
     888                 :            :     {
     889         [ #  # ]:          0 :         maURLPath.AssignAscii( "./" );
     890                 :            :     }
     891                 :            :     else
     892                 :            :     {
     893         [ #  # ]:          0 :            String aEmpty2;
     894         [ #  # ]:          0 :         if(maURLPath.Len() == 0)
     895         [ #  # ]:          0 :             maURLPath.Assign( sal_Unicode('.') );
     896                 :            : 
     897         [ #  # ]:          0 :         if( maURLPath.GetChar( maURLPath.Len() - 1 ) != sal_Unicode('/') )
     898 [ #  # ][ #  # ]:          0 :             maURLPath.Append( sal_Unicode('/') );
     899                 :            :     }
     900                 :            : 
     901                 :            :     // this is not a true while
     902                 :            :     while(1)
     903                 :            :     {
     904 [ #  # ][ #  # ]:          0 :         if( checkForExistingFiles() )
     905                 :          0 :             break;
     906                 :            : 
     907 [ #  # ][ #  # ]:          0 :         if(!CreateImagesForPresPages())
     908                 :          0 :             break;
     909                 :            : 
     910         [ #  # ]:          0 :         if( meScript == SCRIPT_ASP )
     911                 :            :         {
     912 [ #  # ][ #  # ]:          0 :             if(!CreateASPScripts())
     913                 :          0 :                 break;
     914                 :            :         }
     915                 :            :         else
     916                 :            :         {
     917 [ #  # ][ #  # ]:          0 :             if(!CreatePERLScripts())
     918                 :          0 :                 break;
     919                 :            :         }
     920                 :            : 
     921 [ #  # ][ #  # ]:          0 :         if(!CreateImageFileList())
     922                 :          0 :             break;
     923                 :            : 
     924 [ #  # ][ #  # ]:          0 :         if(!CreateImageNumberFile())
     925                 :          0 :             break;
     926                 :            : 
     927                 :          0 :         break;
     928                 :            :     }
     929                 :            : 
     930         [ #  # ]:          0 :     mpDocSh->SetWaitCursor( false );
     931 [ #  # ][ #  # ]:          0 :     ResetProgress();
     932                 :          0 : }
     933                 :            : 
     934                 :            : ///////////////////////////////////////////////////////////////////////
     935                 :            : // Save the presentation as a downloadable file in the dest directory
     936                 :            : ///////////////////////////////////////////////////////////////////////
     937                 :            : 
     938                 :          0 : bool HtmlExport::SavePresentation()
     939                 :            : {
     940         [ #  # ]:          0 :     meEC.SetContext( STR_HTMLEXP_ERROR_CREATE_FILE, maDocFileName );
     941                 :            : 
     942         [ #  # ]:          0 :     OUString aURL( maExportPath );
     943         [ #  # ]:          0 :     aURL += maDocFileName;
     944                 :            : 
     945                 :            : 
     946         [ #  # ]:          0 :     mpDocSh->EnableSetModified( true );
     947                 :            : 
     948                 :            :     try
     949                 :            :     {
     950 [ #  # ][ #  # ]:          0 :         uno::Reference< frame::XStorable > xStorable( mpDoc->getUnoModel(), uno::UNO_QUERY );
     951         [ #  # ]:          0 :         if( xStorable.is() )
     952                 :            :         {
     953         [ #  # ]:          0 :             uno::Sequence< beans::PropertyValue > aProperties( 2 );
     954         [ #  # ]:          0 :             aProperties[ 0 ].Name = "Overwrite";
     955 [ #  # ][ #  # ]:          0 :             aProperties[ 0 ].Value <<= (sal_Bool)sal_True;
     956         [ #  # ]:          0 :             aProperties[ 1 ].Name = "FilterName";
     957 [ #  # ][ #  # ]:          0 :             aProperties[ 1 ].Value <<= rtl::OUString("impress8");
     958 [ #  # ][ #  # ]:          0 :             xStorable->storeToURL( aURL, aProperties );
     959                 :            : 
     960         [ #  # ]:          0 :             mpDocSh->EnableSetModified( false );
     961                 :            : 
     962         [ #  # ]:          0 :             return true;
     963 [ #  # ][ #  # ]:          0 :         }
     964                 :            :     }
     965         [ #  # ]:          0 :     catch( Exception& )
     966                 :            :     {
     967                 :            :     }
     968                 :            : 
     969         [ #  # ]:          0 :     mpDocSh->EnableSetModified( false );
     970                 :            : 
     971                 :          0 :     return false;
     972                 :            : }
     973                 :            : 
     974                 :            : // =====================================================================
     975                 :            : // Image-Dateien anlegen
     976                 :            : // =====================================================================
     977                 :          0 : bool HtmlExport::CreateImagesForPresPages( bool bThumbnail)
     978                 :            : {
     979                 :            :     try
     980                 :            :     {
     981         [ #  # ]:          0 :         Reference < XMultiServiceFactory > xMSF( ::comphelper::getProcessServiceFactory() );
     982         [ #  # ]:          0 :         if( !xMSF.is() )
     983                 :          0 :             return false;
     984                 :            : 
     985 [ #  # ][ #  # ]:          0 :         Reference< XExporter > xGraphicExporter( xMSF->createInstance( "com.sun.star.drawing.GraphicExportFilter" ), UNO_QUERY );
                 [ #  # ]
     986         [ #  # ]:          0 :         Reference< XFilter > xFilter( xGraphicExporter, UNO_QUERY );
     987                 :            : 
     988                 :            :         DBG_ASSERT( xFilter.is(), "no com.sun.star.drawing.GraphicExportFilter?" );
     989         [ #  # ]:          0 :         if( !xFilter.is() )
     990                 :          0 :             return false;
     991                 :            : 
     992 [ #  # ][ #  # ]:          0 :         Sequence< PropertyValue > aFilterData(((meFormat==FORMAT_JPG)&&(mnCompression != -1))? 3 : 2);
                 [ #  # ]
     993         [ #  # ]:          0 :         aFilterData[0].Name = "PixelWidth";
     994 [ #  # ][ #  # ]:          0 :         aFilterData[0].Value <<= (sal_Int32)(bThumbnail ? PUB_THUMBNAIL_WIDTH : mnWidthPixel );
                 [ #  # ]
     995         [ #  # ]:          0 :         aFilterData[1].Name = "PixelHeight";
     996 [ #  # ][ #  # ]:          0 :         aFilterData[1].Value <<= (sal_Int32)(bThumbnail ? PUB_THUMBNAIL_HEIGHT : mnHeightPixel);
                 [ #  # ]
     997 [ #  # ][ #  # ]:          0 :         if((meFormat==FORMAT_JPG)&&(mnCompression != -1))
     998                 :            :         {
     999         [ #  # ]:          0 :             aFilterData[2].Name = "Quality";
    1000 [ #  # ][ #  # ]:          0 :             aFilterData[2].Value <<= (sal_Int32)mnCompression;
    1001                 :            :         }
    1002                 :            : 
    1003         [ #  # ]:          0 :         Sequence< PropertyValue > aDescriptor( 3 );
    1004         [ #  # ]:          0 :         aDescriptor[0].Name = "URL";
    1005         [ #  # ]:          0 :         aDescriptor[1].Name = "FilterName";
    1006                 :          0 :         OUString sFormat;
    1007         [ #  # ]:          0 :         if( meFormat == FORMAT_PNG )
    1008                 :          0 :             sFormat = "PNG";
    1009         [ #  # ]:          0 :         else if( meFormat == FORMAT_GIF )
    1010                 :          0 :             sFormat = "GIF";
    1011                 :            :         else
    1012                 :          0 :             sFormat = "JPG";
    1013                 :            : 
    1014 [ #  # ][ #  # ]:          0 :         aDescriptor[1].Value <<= sFormat;
    1015         [ #  # ]:          0 :         aDescriptor[2].Name = "FilterData";
    1016 [ #  # ][ #  # ]:          0 :         aDescriptor[2].Value <<= aFilterData;
    1017                 :            : 
    1018         [ #  # ]:          0 :         for (sal_uInt16 nSdPage = 0; nSdPage < mnSdPageCount; nSdPage++)
    1019                 :            :         {
    1020                 :          0 :             SdPage* pPage = maPages[ nSdPage ];
    1021                 :            : 
    1022         [ #  # ]:          0 :             OUString aFull(maExportPath);
    1023         [ #  # ]:          0 :             if (bThumbnail)
    1024         [ #  # ]:          0 :                 aFull += *mpThumbnailFiles[nSdPage];
    1025                 :            :             else
    1026         [ #  # ]:          0 :                 aFull += *mpImageFiles[nSdPage];
    1027                 :            : 
    1028                 :            : 
    1029 [ #  # ][ #  # ]:          0 :             aDescriptor[0].Value <<= aFull;
    1030                 :            : 
    1031 [ #  # ][ #  # ]:          0 :             Reference< XComponent > xPage( pPage->getUnoPage(), UNO_QUERY );
    1032 [ #  # ][ #  # ]:          0 :             xGraphicExporter->setSourceDocument( xPage );
    1033 [ #  # ][ #  # ]:          0 :             xFilter->filter( aDescriptor );
    1034                 :            : 
    1035         [ #  # ]:          0 :             if (mpProgress)
    1036         [ #  # ]:          0 :                 mpProgress->SetState(++mnPagesWritten);
    1037 [ #  # ][ #  # ]:          0 :         }
         [ #  # ][ #  # ]
           [ #  #  #  # ]
    1038                 :            :     }
    1039                 :          0 :     catch( Exception& )
    1040                 :            :     {
    1041                 :          0 :         return false;
    1042                 :            :     }
    1043                 :            : 
    1044                 :          0 :     return true;
    1045                 :            : }
    1046                 :            : 
    1047                 :            : // =====================================================================
    1048                 :            : // Ermittelt das SdrTextObject mit dem Layout Text dieser Seite
    1049                 :            : // =====================================================================
    1050                 :          0 : SdrTextObj* HtmlExport::GetLayoutTextObject(SdrPage* pPage)
    1051                 :            : {
    1052                 :          0 :     sal_uLong           nObjectCount = pPage->GetObjCount();
    1053                 :          0 :     SdrObject*      pObject      = NULL;
    1054                 :          0 :     SdrTextObj*     pResult      = NULL;
    1055                 :            : 
    1056         [ #  # ]:          0 :     for (sal_uLong nObject = 0; nObject < nObjectCount; nObject++)
    1057                 :            :     {
    1058                 :          0 :         pObject = pPage->GetObj(nObject);
    1059         [ #  # ]:          0 :         if (pObject->GetObjInventor() == SdrInventor &&
           [ #  #  #  # ]
    1060                 :          0 :             pObject->GetObjIdentifier() == OBJ_OUTLINETEXT)
    1061                 :            :         {
    1062                 :          0 :             pResult = (SdrTextObj*)pObject;
    1063                 :          0 :             break;
    1064                 :            :         }
    1065                 :            :     }
    1066                 :          0 :     return pResult;
    1067                 :            : }
    1068                 :            : 
    1069                 :            : // =====================================================================
    1070                 :            : // HTML-Text Versionen fuer Impress Seiten erzeugen
    1071                 :            : // =====================================================================
    1072                 :            : 
    1073                 :          0 : String HtmlExport::WriteMetaCharset() const
    1074                 :            : {
    1075                 :          0 :     String aStr;
    1076         [ #  # ]:          0 :     const sal_Char *pCharSet = rtl_getBestMimeCharsetFromTextEncoding( RTL_TEXTENCODING_UTF8 );
    1077         [ #  # ]:          0 :     if ( pCharSet )
    1078                 :            :     {
    1079         [ #  # ]:          0 :         aStr.AppendAscii( "  <meta HTTP-EQUIV=CONTENT-TYPE CONTENT=\"text/html; charset=" );
    1080         [ #  # ]:          0 :         aStr.AppendAscii( pCharSet );
    1081         [ #  # ]:          0 :         aStr.AppendAscii( "\">\r\n" );
    1082                 :            :     }
    1083                 :          0 :     return aStr;
    1084                 :            : }
    1085                 :            : 
    1086                 :          0 : bool HtmlExport::CreateHtmlTextForPresPages()
    1087                 :            : {
    1088                 :          0 :     bool bOk = true;
    1089                 :            : 
    1090                 :          0 :     SdrOutliner* pOutliner = mpDoc->GetInternalOutliner();
    1091                 :            : 
    1092 [ #  # ][ #  # ]:          0 :     for(sal_uInt16 nSdPage = 0; nSdPage < mnSdPageCount && bOk; nSdPage++)
                 [ #  # ]
    1093                 :            :     {
    1094                 :          0 :         SdPage* pPage = maPages[ nSdPage ];
    1095                 :            : 
    1096         [ #  # ]:          0 :         if( mbDocColors )
    1097                 :            :         {
    1098         [ #  # ]:          0 :             SetDocColors( pPage );
    1099                 :            :         }
    1100                 :            : 
    1101                 :            : // HTML Kopf
    1102         [ #  # ]:          0 :         String aStr(maHTMLHeader);
    1103 [ #  # ][ #  # ]:          0 :         aStr += WriteMetaCharset();
                 [ #  # ]
    1104         [ #  # ]:          0 :         aStr.AppendAscii( "  <title>" );
    1105 [ #  # ][ #  # ]:          0 :         aStr += StringToHTMLString( *mpPageNames[nSdPage] );
                 [ #  # ]
    1106         [ #  # ]:          0 :         aStr.AppendAscii( "</title>\r\n" );
    1107         [ #  # ]:          0 :         aStr.AppendAscii( "</head>\r\n" );
    1108 [ #  # ][ #  # ]:          0 :         aStr += CreateBodyTag();
                 [ #  # ]
    1109                 :            : 
    1110                 :            : // Navigationsleiste
    1111 [ #  # ][ #  # ]:          0 :         aStr += CreateNavBar(nSdPage, true);
                 [ #  # ]
    1112                 :            : 
    1113                 :            : // Seitentitel
    1114 [ #  # ][ #  # ]:          0 :         String sTitleText( CreateTextForTitle(pOutliner,pPage, pPage->GetPageBackgroundColor()) );
    1115         [ #  # ]:          0 :         aStr.AppendAscii( "<h1 style=\"");
    1116 [ #  # ][ #  # ]:          0 :         aStr.Append( getParagraphStyle( pOutliner, 0 ) );
                 [ #  # ]
    1117         [ #  # ]:          0 :         aStr.AppendAscii( "\">" );
    1118         [ #  # ]:          0 :         aStr += sTitleText;
    1119         [ #  # ]:          0 :         aStr.AppendAscii( "</h1>\r\n" );
    1120                 :            : 
    1121                 :            : // Gliederungstext schreiben
    1122 [ #  # ][ #  # ]:          0 :         aStr += CreateTextForPage( pOutliner, pPage, true, pPage->GetPageBackgroundColor() );
         [ #  # ][ #  # ]
    1123                 :            : 
    1124                 :            : // Notizen
    1125         [ #  # ]:          0 :         if(mbNotes)
    1126                 :            :         {
    1127                 :          0 :             SdPage* pNotesPage = maNotesPages[ nSdPage ];
    1128         [ #  # ]:          0 :             String aNotesStr( CreateTextForNotesPage( pOutliner, pNotesPage, true, maBackColor) );
    1129                 :            : 
    1130         [ #  # ]:          0 :             if( aNotesStr.Len() )
    1131                 :            :             {
    1132         [ #  # ]:          0 :                 aStr.AppendAscii( "<br>\r\n<h3>" );
    1133 [ #  # ][ #  # ]:          0 :                 aStr += RESTOHTML(STR_HTMLEXP_NOTES);
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
    1134         [ #  # ]:          0 :                 aStr.AppendAscii( ":</h3>\r\n" );
    1135                 :            : 
    1136         [ #  # ]:          0 :                 aStr += aNotesStr;
    1137         [ #  # ]:          0 :             }
    1138                 :            :         }
    1139                 :            : 
    1140                 :            : // Seite beenden
    1141         [ #  # ]:          0 :         aStr.AppendAscii( "</body>\r\n</html>" );
    1142                 :            : 
    1143         [ #  # ]:          0 :         bOk = WriteHtml( *mpTextFiles[nSdPage], false, aStr );
    1144                 :            : 
    1145         [ #  # ]:          0 :         if (mpProgress)
    1146         [ #  # ]:          0 :             mpProgress->SetState(++mnPagesWritten);
    1147                 :            : 
    1148 [ #  # ][ #  # ]:          0 :     }
    1149                 :            : 
    1150                 :          0 :     pOutliner->Clear();
    1151                 :            : 
    1152                 :          0 :     return bOk;
    1153                 :            : }
    1154                 :            : 
    1155                 :            : /** exports the given html data into a non unicode file in the current export path with
    1156                 :            :     the given filename */
    1157                 :          0 : bool HtmlExport::WriteHtml( const String& rFileName, bool bAddExtension, const String& rHtmlData )
    1158                 :            : {
    1159                 :          0 :     sal_uLong nErr = 0;
    1160                 :            : 
    1161         [ #  # ]:          0 :     String aFileName( rFileName );
    1162         [ #  # ]:          0 :     if( bAddExtension )
    1163         [ #  # ]:          0 :         aFileName += maHTMLExtension;
    1164                 :            : 
    1165         [ #  # ]:          0 :     meEC.SetContext( STR_HTMLEXP_ERROR_CREATE_FILE, rFileName );
    1166                 :          0 :     EasyFile aFile;
    1167                 :            :     SvStream* pStr;
    1168         [ #  # ]:          0 :     String aFull( maExportPath );
    1169         [ #  # ]:          0 :     aFull += aFileName;
    1170         [ #  # ]:          0 :     nErr = aFile.createStream(aFull , pStr);
    1171         [ #  # ]:          0 :     if(nErr == 0)
    1172                 :            :     {
    1173                 :            :         rtl::OString aStr(rtl::OUStringToOString(rHtmlData,
    1174 [ #  # ][ #  # ]:          0 :             RTL_TEXTENCODING_UTF8));
    1175         [ #  # ]:          0 :         *pStr << aStr.getStr();
    1176         [ #  # ]:          0 :         nErr = aFile.close();
    1177                 :            :     }
    1178                 :            : 
    1179         [ #  # ]:          0 :     if( nErr != 0 )
    1180         [ #  # ]:          0 :         ErrorHandler::HandleError(nErr);
    1181                 :            : 
    1182 [ #  # ][ #  # ]:          0 :     return nErr == 0;
                 [ #  # ]
    1183                 :            : }
    1184                 :            : 
    1185                 :            : // =====================================================================
    1186                 :            : 
    1187                 :            : /** Erzeugt den Outliner Text fuer das Titelobjekt einer Seite
    1188                 :            :  */
    1189                 :          0 : String HtmlExport::CreateTextForTitle( SdrOutliner* pOutliner, SdPage* pPage, const Color& rBackgroundColor )
    1190                 :            : {
    1191                 :          0 :     SdrTextObj* pTO = (SdrTextObj*)pPage->GetPresObj(PRESOBJ_TITLE);
    1192         [ #  # ]:          0 :     if(!pTO)
    1193                 :          0 :         pTO = GetLayoutTextObject(pPage);
    1194                 :            : 
    1195 [ #  # ][ #  # ]:          0 :     if (pTO && !pTO->IsEmptyPresObj())
                 [ #  # ]
    1196                 :            :     {
    1197                 :          0 :         OutlinerParaObject* pOPO = pTO->GetOutlinerParaObject();
    1198 [ #  # ][ #  # ]:          0 :         if(pOPO && pOutliner->GetParagraphCount() != 0)
                 [ #  # ]
    1199                 :            :         {
    1200                 :          0 :             pOutliner->Clear();
    1201                 :          0 :             pOutliner->SetText(*pOPO);
    1202                 :          0 :             return ParagraphToHTMLString(pOutliner,0, rBackgroundColor);
    1203                 :            :         }
    1204                 :            :     }
    1205                 :            : 
    1206                 :          0 :     return String();
    1207                 :            : }
    1208                 :            : 
    1209                 :            : // =====================================================================
    1210                 :            : // Erzeugt den Outliner Text fuer eine Seite
    1211                 :            : // =====================================================================
    1212                 :          0 : String HtmlExport::CreateTextForPage( SdrOutliner* pOutliner,
    1213                 :            :                                       SdPage* pPage,
    1214                 :            :                                       bool bHeadLine, const Color& rBackgroundColor )
    1215                 :            : {
    1216                 :          0 :     String aStr;
    1217                 :            : 
    1218         [ #  # ]:          0 :     SdrTextObj* pTO = (SdrTextObj*)pPage->GetPresObj(PRESOBJ_TEXT);
    1219         [ #  # ]:          0 :     if(!pTO)
    1220         [ #  # ]:          0 :         pTO = GetLayoutTextObject(pPage);
    1221                 :            : 
    1222 [ #  # ][ #  # ]:          0 :     if (pTO && !pTO->IsEmptyPresObj())
         [ #  # ][ #  # ]
    1223                 :            :     {
    1224         [ #  # ]:          0 :         OutlinerParaObject* pOPO = pTO->GetOutlinerParaObject();
    1225         [ #  # ]:          0 :         if (pOPO)
    1226                 :            :         {
    1227         [ #  # ]:          0 :             pOutliner->Clear();
    1228         [ #  # ]:          0 :             pOutliner->SetText( *pOPO );
    1229                 :            : 
    1230         [ #  # ]:          0 :             sal_uLong nCount = pOutliner->GetParagraphCount();
    1231                 :            : 
    1232                 :          0 :             Paragraph* pPara = NULL;
    1233                 :          0 :             sal_Int16 nActDepth = -1;
    1234                 :            : 
    1235         [ #  # ]:          0 :             String aParaText;
    1236         [ #  # ]:          0 :             for (sal_uLong nPara = 0; nPara < nCount; nPara++)
    1237                 :            :             {
    1238         [ #  # ]:          0 :                 pPara = pOutliner->GetParagraph(nPara);
    1239         [ #  # ]:          0 :                 if(pPara == 0)
    1240                 :          0 :                     continue;
    1241                 :            : 
    1242         [ #  # ]:          0 :                 const sal_Int16 nDepth = (sal_uInt16) pOutliner->GetDepth( (sal_uInt16) nPara );
    1243 [ #  # ][ #  # ]:          0 :                 aParaText = ParagraphToHTMLString(pOutliner,nPara,rBackgroundColor);
                 [ #  # ]
    1244                 :            : 
    1245         [ #  # ]:          0 :                 if(aParaText.Len() == 0)
    1246                 :          0 :                     continue;
    1247                 :            : 
    1248         [ #  # ]:          0 :                 if(nDepth < nActDepth )
    1249                 :            :                 {
    1250         [ #  # ]:          0 :                     do
    1251                 :            :                     {
    1252         [ #  # ]:          0 :                         aStr.AppendAscii( "</ul>" );
    1253                 :          0 :                         nActDepth--;
    1254                 :            :                     }
    1255                 :            :                     while(nDepth < nActDepth);
    1256                 :            :                 }
    1257         [ #  # ]:          0 :                 else if(nDepth > nActDepth )
    1258                 :            :                 {
    1259         [ #  # ]:          0 :                     do
    1260                 :            :                     {
    1261         [ #  # ]:          0 :                         aStr.AppendAscii( "<ul>" );
    1262                 :          0 :                         nActDepth++;
    1263                 :            :                     }
    1264                 :            :                     while( nDepth > nActDepth );
    1265                 :            :                 }
    1266                 :            : 
    1267         [ #  # ]:          0 :                 String sStyle( getParagraphStyle( pOutliner, nPara ) );
    1268         [ #  # ]:          0 :                 if(nActDepth >= 0 )
    1269                 :            :                 {
    1270         [ #  # ]:          0 :                     aStr.AppendAscii( "<li style=\"");
    1271         [ #  # ]:          0 :                     aStr.Append( sStyle );
    1272         [ #  # ]:          0 :                     aStr.AppendAscii( "\">" );
    1273                 :            :                 }
    1274                 :            : 
    1275 [ #  # ][ #  # ]:          0 :                 if(nActDepth <= 0 && bHeadLine)
    1276                 :            :                 {
    1277         [ #  # ]:          0 :                     if( nActDepth == 0 )
    1278                 :            :                     {
    1279         [ #  # ]:          0 :                         aStr.AppendAscii( "<h2>" );
    1280                 :            :                     }
    1281                 :            :                     else
    1282                 :            :                     {
    1283         [ #  # ]:          0 :                         aStr.AppendAscii( "<h2 style=\"");
    1284         [ #  # ]:          0 :                         aStr.Append( sStyle );
    1285         [ #  # ]:          0 :                         aStr.AppendAscii( "\">" );
    1286                 :            :                     }
    1287                 :            :                 }
    1288         [ #  # ]:          0 :                 aStr += aParaText;
    1289 [ #  # ][ #  # ]:          0 :                 if(nActDepth == 0 && bHeadLine)
    1290         [ #  # ]:          0 :                     aStr.AppendAscii( "</h2>" );
    1291         [ #  # ]:          0 :                 if(nActDepth >= 0 )
    1292         [ #  # ]:          0 :                     aStr.AppendAscii( "</li>" );
    1293         [ #  # ]:          0 :                 aStr.AppendAscii( "\r\n" );
    1294         [ #  # ]:          0 :             }
    1295                 :            : 
    1296         [ #  # ]:          0 :             while( nActDepth >= 0 )
    1297                 :            :             {
    1298         [ #  # ]:          0 :                 aStr.AppendAscii( "</ul>" );
    1299                 :          0 :                 nActDepth--;
    1300         [ #  # ]:          0 :             };
    1301                 :            :         }
    1302                 :            :     }
    1303                 :            : 
    1304                 :          0 :     return aStr;
    1305                 :            : }
    1306                 :            : 
    1307                 :            : // =====================================================================
    1308                 :            : // Erzeugt den Outliner Text fuer eine Notizseite
    1309                 :            : // =====================================================================
    1310                 :          0 : String HtmlExport::CreateTextForNotesPage( SdrOutliner* pOutliner,
    1311                 :            :                                            SdPage* pPage,
    1312                 :            :                                            bool,
    1313                 :            :                                            const Color& rBackgroundColor )
    1314                 :            : {
    1315                 :          0 :     String aStr;
    1316                 :            : 
    1317         [ #  # ]:          0 :     SdrTextObj* pTO = (SdrTextObj*)pPage->GetPresObj(PRESOBJ_NOTES);
    1318                 :            : 
    1319 [ #  # ][ #  # ]:          0 :     if (pTO && !pTO->IsEmptyPresObj())
         [ #  # ][ #  # ]
    1320                 :            :     {
    1321         [ #  # ]:          0 :         OutlinerParaObject* pOPO = pTO->GetOutlinerParaObject();
    1322         [ #  # ]:          0 :         if (pOPO)
    1323                 :            :         {
    1324         [ #  # ]:          0 :             pOutliner->Clear();
    1325         [ #  # ]:          0 :             pOutliner->SetText( *pOPO );
    1326                 :            : 
    1327         [ #  # ]:          0 :             sal_uLong nCount = pOutliner->GetParagraphCount();
    1328         [ #  # ]:          0 :             for (sal_uLong nPara = 0; nPara < nCount; nPara++)
    1329                 :            :             {
    1330         [ #  # ]:          0 :                 aStr.AppendAscii("<p style=\"");
    1331 [ #  # ][ #  # ]:          0 :                 aStr.Append( getParagraphStyle( pOutliner, nPara ) );
                 [ #  # ]
    1332         [ #  # ]:          0 :                 aStr.AppendAscii("\">");
    1333 [ #  # ][ #  # ]:          0 :                 aStr += ParagraphToHTMLString( pOutliner, nPara,rBackgroundColor );
                 [ #  # ]
    1334         [ #  # ]:          0 :                 aStr.AppendAscii( "</p>\r\n" );
    1335                 :            :             }
    1336                 :            :         }
    1337                 :            :     }
    1338                 :            : 
    1339                 :          0 :     return aStr;
    1340                 :            : }
    1341                 :            : 
    1342                 :            : // =====================================================================
    1343                 :            : // Wandelt einen Paragraphen des Outliners in Html
    1344                 :            : // =====================================================================
    1345                 :          0 : String HtmlExport::ParagraphToHTMLString( SdrOutliner* pOutliner, sal_uLong nPara, const Color& rBackgroundColor )
    1346                 :            : {
    1347         [ #  # ]:          0 :     String aStr;
    1348                 :            : 
    1349         [ #  # ]:          0 :     if(NULL == pOutliner)
    1350                 :            :         return aStr;
    1351                 :            : 
    1352                 :            :     // TODO: MALTE!!!
    1353                 :          0 :     EditEngine& rEditEngine = *(EditEngine*)&pOutliner->GetEditEngine();
    1354         [ #  # ]:          0 :     bool bOldUpdateMode = rEditEngine.GetUpdateMode();
    1355         [ #  # ]:          0 :     rEditEngine.SetUpdateMode(sal_True);
    1356                 :            : 
    1357         [ #  # ]:          0 :     Paragraph* pPara = pOutliner->GetParagraph(nPara);
    1358         [ #  # ]:          0 :     if(NULL == pPara)
    1359                 :            :         return aStr;
    1360                 :            : 
    1361 [ #  # ][ #  # ]:          0 :     HtmlState aState( (mbUserAttr || mbDocColors)  ? maTextColor : Color(COL_BLACK) );
         [ #  # ][ #  # ]
                 [ #  # ]
    1362         [ #  # ]:          0 :     std::vector<sal_uInt16> aPortionList;
    1363         [ #  # ]:          0 :     rEditEngine.GetPortions( (sal_uInt16) nPara, aPortionList );
    1364                 :            : 
    1365                 :          0 :     sal_uInt16 nPos1 = 0;
    1366 [ #  # ][ #  # ]:          0 :     for( std::vector<sal_uInt16>::const_iterator it( aPortionList.begin() ); it != aPortionList.end(); ++it )
         [ #  # ][ #  # ]
    1367                 :            :     {
    1368         [ #  # ]:          0 :         sal_uInt16 nPos2 = *it;
    1369                 :            : 
    1370                 :          0 :         ESelection aSelection( (sal_uInt16) nPara, nPos1, (sal_uInt16) nPara, nPos2);
    1371                 :            : 
    1372         [ #  # ]:          0 :         SfxItemSet aSet( rEditEngine.GetAttribs( aSelection ) );
    1373                 :            : 
    1374 [ #  # ][ #  # ]:          0 :         String aPortion(StringToHTMLString(rEditEngine.GetText( aSelection )));
                 [ #  # ]
    1375                 :            : 
    1376 [ #  # ][ #  # ]:          0 :         aStr += TextAttribToHTMLString( &aSet, &aState, rBackgroundColor );
                 [ #  # ]
    1377         [ #  # ]:          0 :         aStr += aPortion;
    1378                 :            : 
    1379                 :          0 :         nPos1 = nPos2;
    1380 [ #  # ][ #  # ]:          0 :     }
    1381 [ #  # ][ #  # ]:          0 :     aStr += aState.Flush();
                 [ #  # ]
    1382         [ #  # ]:          0 :     rEditEngine.SetUpdateMode(bOldUpdateMode);
    1383                 :            : 
    1384         [ #  # ]:          0 :     return aStr;
    1385                 :            : }
    1386                 :            : 
    1387                 :            : // =====================================================================
    1388                 :            : // Erzeugt anhand der Attribute im angegebennen Set und dem gegebennen
    1389                 :            : // HtmlState die noetigen Html-Tags um die Attribute zu uebernehmen
    1390                 :            : // =====================================================================
    1391                 :          0 : String HtmlExport::TextAttribToHTMLString( SfxItemSet* pSet, HtmlState* pState, const Color& rBackgroundColor )
    1392                 :            : {
    1393         [ #  # ]:          0 :     String aStr;
    1394                 :            : 
    1395         [ #  # ]:          0 :     if(NULL == pSet)
    1396                 :            :         return aStr;
    1397                 :            : 
    1398 [ #  # ][ #  # ]:          0 :     String aLink, aTarget;
    1399 [ #  # ][ #  # ]:          0 :     if ( pSet->GetItemState( EE_FEATURE_FIELD ) == SFX_ITEM_ON )
    1400                 :            :     {
    1401         [ #  # ]:          0 :         SvxFieldItem* pItem = (SvxFieldItem*)pSet->GetItem( EE_FEATURE_FIELD );
    1402         [ #  # ]:          0 :         if(pItem)
    1403                 :            :         {
    1404 [ #  # ][ #  # ]:          0 :             SvxURLField* pURL = PTR_CAST(SvxURLField, pItem->GetField());
         [ #  # ][ #  # ]
    1405         [ #  # ]:          0 :             if(pURL)
    1406                 :            :             {
    1407         [ #  # ]:          0 :                 aLink = pURL->GetURL();
    1408         [ #  # ]:          0 :                 aTarget = pURL->GetTargetFrame();
    1409                 :            :             }
    1410                 :            :         }
    1411                 :            :     }
    1412                 :            : 
    1413                 :            :     bool bTemp;
    1414         [ #  # ]:          0 :     String aTemp;
    1415                 :            : 
    1416 [ #  # ][ #  # ]:          0 :     if ( pSet->GetItemState( EE_CHAR_WEIGHT ) == SFX_ITEM_ON )
    1417                 :            :     {
    1418         [ #  # ]:          0 :         bTemp = ((const SvxWeightItem&)pSet->Get( EE_CHAR_WEIGHT )).GetWeight() == WEIGHT_BOLD;
    1419 [ #  # ][ #  # ]:          0 :         aTemp = pState->SetWeight( bTemp );
                 [ #  # ]
    1420         [ #  # ]:          0 :         if( bTemp )
    1421         [ #  # ]:          0 :             aStr.Insert( aTemp, 0 );
    1422                 :            :         else
    1423         [ #  # ]:          0 :             aStr += aTemp;
    1424                 :            :     }
    1425                 :            : 
    1426 [ #  # ][ #  # ]:          0 :     if ( pSet->GetItemState( EE_CHAR_UNDERLINE ) == SFX_ITEM_ON )
    1427                 :            :     {
    1428         [ #  # ]:          0 :         bTemp = ((const SvxUnderlineItem&)pSet->Get( EE_CHAR_UNDERLINE )).GetLineStyle() != UNDERLINE_NONE;
    1429 [ #  # ][ #  # ]:          0 :         aTemp = pState->SetUnderline( bTemp );
                 [ #  # ]
    1430         [ #  # ]:          0 :         if( bTemp )
    1431         [ #  # ]:          0 :             aStr.Insert( aTemp, 0 );
    1432                 :            :         else
    1433         [ #  # ]:          0 :             aStr += aTemp;
    1434                 :            :     }
    1435                 :            : 
    1436 [ #  # ][ #  # ]:          0 :     if ( pSet->GetItemState( EE_CHAR_STRIKEOUT ) == SFX_ITEM_ON )
    1437                 :            :     {
    1438         [ #  # ]:          0 :         bTemp = ((const SvxCrossedOutItem&)pSet->Get( EE_CHAR_STRIKEOUT )).GetStrikeout() != STRIKEOUT_NONE;
    1439 [ #  # ][ #  # ]:          0 :         aTemp = pState->SetStrikeout( bTemp );
                 [ #  # ]
    1440         [ #  # ]:          0 :         if( bTemp )
    1441         [ #  # ]:          0 :             aStr.Insert( aTemp, 0 );
    1442                 :            :         else
    1443         [ #  # ]:          0 :             aStr += aTemp;
    1444                 :            :     }
    1445                 :            : 
    1446 [ #  # ][ #  # ]:          0 :     if ( pSet->GetItemState( EE_CHAR_ITALIC ) == SFX_ITEM_ON )
    1447                 :            :     {
    1448         [ #  # ]:          0 :         bTemp = ((const SvxPostureItem&)pSet->Get( EE_CHAR_ITALIC )).GetPosture() != ITALIC_NONE;
    1449 [ #  # ][ #  # ]:          0 :         aTemp = pState->SetItalic( bTemp );
                 [ #  # ]
    1450         [ #  # ]:          0 :         if( bTemp )
    1451         [ #  # ]:          0 :             aStr.Insert( aTemp, 0 );
    1452                 :            :         else
    1453         [ #  # ]:          0 :             aStr += aTemp;
    1454                 :            :     }
    1455                 :            : 
    1456         [ #  # ]:          0 :     if(mbDocColors)
    1457                 :            :     {
    1458 [ #  # ][ #  # ]:          0 :         if ( pSet->GetItemState( EE_CHAR_COLOR ) == SFX_ITEM_ON )
    1459                 :            :         {
    1460         [ #  # ]:          0 :             Color aTextColor = ((const SvxColorItem&) pSet->Get( EE_CHAR_COLOR )).GetValue();
    1461         [ #  # ]:          0 :             if( aTextColor == COL_AUTO )
    1462                 :            :             {
    1463 [ #  # ][ #  # ]:          0 :                 if( !rBackgroundColor.IsDark() )
    1464                 :          0 :                     aTextColor = COL_BLACK;
    1465                 :            :             }
    1466 [ #  # ][ #  # ]:          0 :             aStr += pState->SetColor( aTextColor );
                 [ #  # ]
    1467                 :            :         }
    1468                 :            :     }
    1469                 :            : 
    1470         [ #  # ]:          0 :     if( aLink.Len() )
    1471 [ #  # ][ #  # ]:          0 :         aStr.Insert( pState->SetLink(aLink, aTarget), 0 );
                 [ #  # ]
    1472                 :            :     else
    1473 [ #  # ][ #  # ]:          0 :         aStr += pState->SetLink(aLink, aTarget);
                 [ #  # ]
    1474                 :            : 
    1475 [ #  # ][ #  # ]:          0 :     return aStr;
                 [ #  # ]
    1476                 :            : }
    1477                 :            : 
    1478                 :            : // =====================================================================
    1479                 :            : // HTML-Wrapper fuer Bild-Dateien erzeugen
    1480                 :            : // =====================================================================
    1481                 :          0 : bool HtmlExport::CreateHtmlForPresPages()
    1482                 :            : {
    1483                 :          0 :     bool bOk = true;
    1484                 :            : 
    1485         [ #  # ]:          0 :     std::vector<SdrObject*> aClickableObjects;
    1486                 :            : 
    1487 [ #  # ][ #  # ]:          0 :     for(sal_uInt16 nSdPage = 0; nSdPage < mnSdPageCount && bOk; nSdPage++)
                 [ #  # ]
    1488                 :            :     {
    1489                 :            :         // Klickbare Objekte finden (auch auf der Masterpage) und
    1490                 :            :         // in Liste stellen. In umgekehrter Zeichenreihenfolge in
    1491                 :            :         // die Liste stellen, da in HTML bei Ueberlappungen die
    1492                 :            :         // _erstgenannte_ Area wirkt.
    1493                 :            : 
    1494                 :          0 :         SdPage* pPage = maPages[ nSdPage ];
    1495                 :            : 
    1496         [ #  # ]:          0 :         if( mbDocColors )
    1497                 :            :         {
    1498         [ #  # ]:          0 :             SetDocColors( pPage );
    1499                 :            :         }
    1500                 :            : 
    1501                 :          0 :         bool    bMasterDone = false;
    1502                 :            : 
    1503         [ #  # ]:          0 :         while (!bMasterDone)
    1504                 :            :         {
    1505                 :            :             // sal_True = rueckwaerts
    1506         [ #  # ]:          0 :             SdrObjListIter aIter(*pPage, IM_DEEPWITHGROUPS, sal_True);
    1507                 :            : 
    1508         [ #  # ]:          0 :             SdrObject* pObject = aIter.Next();
    1509         [ #  # ]:          0 :             while (pObject)
    1510                 :            :             {
    1511         [ #  # ]:          0 :                 SdAnimationInfo* pInfo     = mpDoc->GetAnimationInfo(pObject);
    1512         [ #  # ]:          0 :                 SdIMapInfo*      pIMapInfo = mpDoc->GetIMapInfo(pObject);
    1513                 :            : 
    1514 [ #  # ][ #  # ]:          0 :                 if ((pInfo &&
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
    1515                 :            :                      (pInfo->meClickAction == presentation::ClickAction_BOOKMARK  ||
    1516                 :            :                       pInfo->meClickAction == presentation::ClickAction_DOCUMENT  ||
    1517                 :            :                       pInfo->meClickAction == presentation::ClickAction_PREVPAGE  ||
    1518                 :            :                       pInfo->meClickAction == presentation::ClickAction_NEXTPAGE  ||
    1519                 :            :                       pInfo->meClickAction == presentation::ClickAction_FIRSTPAGE ||
    1520                 :            :                       pInfo->meClickAction == presentation::ClickAction_LASTPAGE)) ||
    1521                 :            :                      pIMapInfo)
    1522                 :            :                 {
    1523         [ #  # ]:          0 :                     aClickableObjects.push_back(pObject);
    1524                 :            :                 }
    1525                 :            : 
    1526         [ #  # ]:          0 :                 pObject = aIter.Next();
    1527                 :            :             }
    1528                 :            :             // jetzt zur Masterpage oder beenden
    1529         [ #  # ]:          0 :             if (!pPage->IsMasterPage())
    1530         [ #  # ]:          0 :                 pPage = (SdPage*)(&(pPage->TRG_GetMasterPage()));
    1531                 :            :             else
    1532                 :          0 :                 bMasterDone = true;
    1533                 :          0 :         }
    1534                 :            : 
    1535                 :            : // HTML Head
    1536         [ #  # ]:          0 :         String aStr(maHTMLHeader);
    1537 [ #  # ][ #  # ]:          0 :         aStr += WriteMetaCharset();
                 [ #  # ]
    1538         [ #  # ]:          0 :         aStr.AppendAscii( "  <title>" );
    1539 [ #  # ][ #  # ]:          0 :         aStr += StringToHTMLString(*mpPageNames[nSdPage]);
                 [ #  # ]
    1540         [ #  # ]:          0 :         aStr.AppendAscii( "</title>\r\n" );
    1541                 :            : 
    1542                 :            : // insert timing information
    1543                 :          0 :         pPage = maPages[ nSdPage ];
    1544         [ #  # ]:          0 :         if( meMode == PUBLISH_KIOSK )
    1545                 :            :         {
    1546                 :          0 :             sal_uLong nSecs = 0;
    1547                 :          0 :             bool bEndless = false;
    1548         [ #  # ]:          0 :             if( !mbAutoSlide )
    1549                 :            :             {
    1550         [ #  # ]:          0 :                 if( pPage->GetPresChange() != PRESCHANGE_MANUAL )
    1551                 :            :                 {
    1552                 :          0 :                     nSecs = pPage->GetTime();
    1553                 :          0 :                     bEndless = mpDoc->getPresentationSettings().mbEndless;
    1554                 :            :                 }
    1555                 :            :             }
    1556                 :            :             else
    1557                 :            :             {
    1558                 :          0 :                 nSecs = mnSlideDuration;
    1559                 :          0 :                 bEndless = mbEndless;
    1560                 :            :             }
    1561                 :            : 
    1562         [ #  # ]:          0 :             if( nSecs != 0 )
    1563                 :            :             {
    1564 [ #  # ][ #  # ]:          0 :                 if( nSdPage < (mnSdPageCount-1) || bEndless )
    1565                 :            :                 {
    1566         [ #  # ]:          0 :                     aStr.AppendAscii( "<meta http-equiv=\"refresh\" content=\"" );
    1567 [ #  # ][ #  # ]:          0 :                     aStr += String::CreateFromInt32(nSecs);
                 [ #  # ]
    1568         [ #  # ]:          0 :                     aStr.AppendAscii( "; URL=" );
    1569                 :            : 
    1570                 :          0 :                     int nPage = nSdPage + 1;
    1571         [ #  # ]:          0 :                     if( nPage == mnSdPageCount )
    1572                 :          0 :                         nPage = 0;
    1573                 :            : 
    1574 [ #  # ][ #  # ]:          0 :                     aStr += StringToURL(*mpHTMLFiles[nPage]);
                 [ #  # ]
    1575                 :            : 
    1576         [ #  # ]:          0 :                     aStr.AppendAscii( "\">\r\n" );
    1577                 :            :                 }
    1578                 :            :             }
    1579                 :            :         }
    1580                 :            : 
    1581         [ #  # ]:          0 :         aStr.AppendAscii( "</head>\r\n" );
    1582                 :            : 
    1583                 :            : // HTML Body
    1584 [ #  # ][ #  # ]:          0 :         aStr += CreateBodyTag();
                 [ #  # ]
    1585                 :            : 
    1586 [ #  # ][ #  # ]:          0 :         if( mbSlideSound && pPage->IsSoundOn() )
                 [ #  # ]
    1587 [ #  # ][ #  # ]:          0 :             aStr += InsertSound( pPage->GetSoundFile() );
         [ #  # ][ #  # ]
                 [ #  # ]
    1588                 :            : 
    1589                 :            : // Navigationsleiste
    1590         [ #  # ]:          0 :         if(!mbFrames )
    1591 [ #  # ][ #  # ]:          0 :             aStr += CreateNavBar( nSdPage, false );
                 [ #  # ]
    1592                 :            : // Image
    1593         [ #  # ]:          0 :         aStr.AppendAscii( "<center>" );
    1594         [ #  # ]:          0 :         aStr.AppendAscii( "<img src=\"" );
    1595 [ #  # ][ #  # ]:          0 :         aStr += StringToURL( *mpImageFiles[nSdPage] );
                 [ #  # ]
    1596         [ #  # ]:          0 :         aStr.AppendAscii( "\" alt=\"\"" );
    1597                 :            : 
    1598         [ #  # ]:          0 :         if (!aClickableObjects.empty())
    1599         [ #  # ]:          0 :             aStr.AppendAscii( " USEMAP=\"#map0\"" );
    1600                 :            : 
    1601         [ #  # ]:          0 :         aStr.AppendAscii( "></center>\r\n" );
    1602                 :            : 
    1603                 :            : // Notizen
    1604 [ #  # ][ #  # ]:          0 :         if(mbNotes && !mbFrames)
    1605                 :            :         {
    1606         [ #  # ]:          0 :             SdrOutliner* pOutliner = mpDoc->GetInternalOutliner();
    1607                 :          0 :             SdPage* pNotesPage = maNotesPages[ nSdPage ];
    1608         [ #  # ]:          0 :             String aNotesStr( CreateTextForNotesPage( pOutliner, pNotesPage, true, maBackColor) );
    1609         [ #  # ]:          0 :             pOutliner->Clear();
    1610                 :            : 
    1611         [ #  # ]:          0 :             if( aNotesStr.Len() )
    1612                 :            :             {
    1613         [ #  # ]:          0 :                 aStr.AppendAscii( "<h3>" );
    1614 [ #  # ][ #  # ]:          0 :                 aStr += RESTOHTML(STR_HTMLEXP_NOTES);
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
    1615         [ #  # ]:          0 :                 aStr.AppendAscii( ":</h3><br>\r\n\r\n<p>" );
    1616                 :            : 
    1617         [ #  # ]:          0 :                 aStr += aNotesStr;
    1618         [ #  # ]:          0 :                 aStr.AppendAscii( "\r\n</p>\r\n" );
    1619         [ #  # ]:          0 :             }
    1620                 :            :         }
    1621                 :            : 
    1622                 :            : // ggfs. Imagemap erzeugen
    1623         [ #  # ]:          0 :         if (!aClickableObjects.empty())
    1624                 :            :         {
    1625         [ #  # ]:          0 :             aStr.AppendAscii( "<map name=\"map0\">\r\n" );
    1626                 :            : 
    1627         [ #  # ]:          0 :             for (sal_uInt32 nObject = 0, n = aClickableObjects.size(); nObject < n; nObject++)
    1628                 :            :             {
    1629         [ #  # ]:          0 :                 SdrObject* pObject = aClickableObjects[nObject];
    1630         [ #  # ]:          0 :                 SdAnimationInfo* pInfo     = mpDoc->GetAnimationInfo(pObject);
    1631         [ #  # ]:          0 :                 SdIMapInfo*      pIMapInfo = mpDoc->GetIMapInfo(pObject);
    1632                 :            : 
    1633         [ #  # ]:          0 :                 Rectangle aRect(pObject->GetCurrentBoundRect());
    1634                 :          0 :                 Point     aLogPos(aRect.TopLeft());
    1635 [ #  # ][ #  # ]:          0 :                 bool      bIsSquare = aRect.GetWidth() == aRect.GetHeight();
    1636                 :            : 
    1637 [ #  # ][ #  # ]:          0 :                 sal_uLong nPageWidth = pPage->GetSize().Width() - pPage->GetLftBorder() -
    1638         [ #  # ]:          0 :                                    pPage->GetRgtBorder();
    1639                 :            : 
    1640                 :            :                 // das BoundRect bezieht sich auf den physikalischen
    1641                 :            :                 // Seitenursprung, nicht auf den Koordinatenursprung
    1642 [ #  # ][ #  # ]:          0 :                 aRect.Move(-pPage->GetLftBorder(), -pPage->GetUppBorder());
                 [ #  # ]
    1643                 :            : 
    1644                 :          0 :                 double fLogicToPixel = ((double)mnWidthPixel) / nPageWidth;
    1645                 :          0 :                 aRect.Left()   = (long)(aRect.Left() * fLogicToPixel);
    1646                 :          0 :                 aRect.Top()    = (long)(aRect.Top() * fLogicToPixel);
    1647                 :          0 :                 aRect.Right()  = (long)(aRect.Right() * fLogicToPixel);
    1648                 :          0 :                 aRect.Bottom() = (long)(aRect.Bottom() * fLogicToPixel);
    1649         [ #  # ]:          0 :                 long nRadius = aRect.GetWidth() / 2;
    1650                 :            : 
    1651                 :            : 
    1652                 :            :                 /*************************************************************
    1653                 :            :                 |* wenn das Objekt eine eigene Imagemap enthaelt, werden ihre
    1654                 :            :                 |* Areas in diese Imagemap eingefuegt
    1655                 :            :                 \************************************************************/
    1656         [ #  # ]:          0 :                 if (pIMapInfo)
    1657                 :            :                 {
    1658                 :          0 :                     const ImageMap& rIMap = pIMapInfo->GetImageMap();
    1659                 :          0 :                     sal_uInt16 nAreaCount = rIMap.GetIMapObjectCount();
    1660         [ #  # ]:          0 :                     for (sal_uInt16 nArea = 0; nArea < nAreaCount; nArea++)
    1661                 :            :                     {
    1662         [ #  # ]:          0 :                         IMapObject* pArea = rIMap.GetIMapObject(nArea);
    1663         [ #  # ]:          0 :                         sal_uInt16 nType = pArea->GetType();
    1664         [ #  # ]:          0 :                         String aURL( pArea->GetURL() );
    1665                 :            : 
    1666                 :            :                         // ggfs. Seiten- oder Objektnamen umwandeln in den
    1667                 :            :                         // Namen der entsprechenden HTML-Datei
    1668                 :            :                         sal_Bool        bIsMasterPage;
    1669         [ #  # ]:          0 :                         sal_uInt16      nPgNum = mpDoc->GetPageByName( aURL, bIsMasterPage );
    1670                 :          0 :                         SdrObject*  pObj = NULL;
    1671                 :            : 
    1672         [ #  # ]:          0 :                         if (nPgNum == SDRPAGE_NOTFOUND)
    1673                 :            :                         {
    1674                 :            :                             // Ist das Bookmark ein Objekt?
    1675         [ #  # ]:          0 :                             pObj = mpDoc->GetObj( aURL );
    1676         [ #  # ]:          0 :                             if (pObj)
    1677 [ #  # ][ #  # ]:          0 :                                 nPgNum = pObj->GetPage()->GetPageNum();
    1678                 :            :                         }
    1679         [ #  # ]:          0 :                         if (nPgNum != SDRPAGE_NOTFOUND)
    1680                 :            :                         {
    1681                 :          0 :                             nPgNum = (nPgNum - 1) / 2;  // SdrPageNum --> SdPageNum
    1682 [ #  # ][ #  # ]:          0 :                             aURL = CreatePageURL(nPgNum);
                 [ #  # ]
    1683                 :            :                         }
    1684                 :            : 
    1685   [ #  #  #  # ]:          0 :                         switch(nType)
    1686                 :            :                         {
    1687                 :            :                             case IMAP_OBJ_RECTANGLE:
    1688                 :            :                             {
    1689                 :            :                                 Rectangle aArea(((IMapRectangleObject*)pArea)->
    1690         [ #  # ]:          0 :                                                  GetRectangle(false));
    1691                 :            : 
    1692                 :            :                                 // Umrechnung in Pixelkoordinaten
    1693         [ #  # ]:          0 :                                 aArea.Move(aLogPos.X() - pPage->GetLftBorder(),
    1694 [ #  # ][ #  # ]:          0 :                                            aLogPos.Y() - pPage->GetUppBorder());
    1695                 :          0 :                                 aArea.Left()   = (long)(aArea.Left() * fLogicToPixel);
    1696                 :          0 :                                 aArea.Top()    = (long)(aArea.Top() * fLogicToPixel);
    1697                 :          0 :                                 aArea.Right()  = (long)(aArea.Right() * fLogicToPixel);
    1698                 :          0 :                                 aArea.Bottom() = (long)(aArea.Bottom() * fLogicToPixel);
    1699                 :            : 
    1700 [ #  # ][ #  # ]:          0 :                                 aStr += CreateHTMLRectArea(aArea, aURL);
                 [ #  # ]
    1701                 :            :                             }
    1702                 :          0 :                             break;
    1703                 :            : 
    1704                 :            :                             case IMAP_OBJ_CIRCLE:
    1705                 :            :                             {
    1706                 :            :                                 Point aCenter(((IMapCircleObject*)pArea)->
    1707         [ #  # ]:          0 :                                                  GetCenter(false));
    1708         [ #  # ]:          0 :                                 aCenter += Point(aLogPos.X() - pPage->GetLftBorder(),
    1709         [ #  # ]:          0 :                                                  aLogPos.Y() - pPage->GetUppBorder());
    1710                 :          0 :                                 aCenter.X() = (long)(aCenter.X() * fLogicToPixel);
    1711                 :          0 :                                 aCenter.Y() = (long)(aCenter.Y() * fLogicToPixel);
    1712                 :            : 
    1713                 :            :                                 sal_uLong nCircleRadius = (((IMapCircleObject*)pArea)->
    1714         [ #  # ]:          0 :                                                  GetRadius(false));
    1715                 :          0 :                                 nCircleRadius = (sal_uLong)(nCircleRadius * fLogicToPixel);
    1716                 :            :                                 aStr += CreateHTMLCircleArea(nCircleRadius,
    1717                 :          0 :                                                             aCenter.X(), aCenter.Y(),
    1718 [ #  # ][ #  # ]:          0 :                                                             aURL);
                 [ #  # ]
    1719                 :            :                             }
    1720                 :          0 :                             break;
    1721                 :            : 
    1722                 :            :                             case IMAP_OBJ_POLYGON:
    1723                 :            :                             {
    1724         [ #  # ]:          0 :                                 Polygon aArea(((IMapPolygonObject*)pArea)->GetPolygon(false));
    1725 [ #  # ][ #  # ]:          0 :                                 aStr += CreateHTMLPolygonArea(::basegfx::B2DPolyPolygon(aArea.getB2DPolygon()), Size(aLogPos.X() - pPage->GetLftBorder(), aLogPos.Y() - pPage->GetUppBorder()), fLogicToPixel, aURL);
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
    1726                 :            :                             }
    1727                 :          0 :                             break;
    1728                 :            : 
    1729                 :            :                             default:
    1730                 :            :                             {
    1731                 :            :                                 DBG_WARNING("unbekannter IMAP_OBJ_Typ");
    1732                 :            :                             }
    1733                 :          0 :                             break;
    1734                 :            :                         }
    1735         [ #  # ]:          0 :                     }
    1736                 :            :                 }
    1737                 :            : 
    1738                 :            : 
    1739                 :            : 
    1740                 :            :                 /*************************************************************
    1741                 :            :                 |* wenn es eine presentation::ClickAction gibt, Bookmark bestimmen und eine
    1742                 :            :                 |* Area fuer das ganze Objekt erzeugen
    1743                 :            :                 \************************************************************/
    1744         [ #  # ]:          0 :                 if( pInfo )
    1745                 :            :                 {
    1746         [ #  # ]:          0 :                     String      aHRef;
    1747                 :          0 :                     presentation::ClickAction eClickAction = pInfo->meClickAction;
    1748                 :            : 
    1749   [ #  #  #  #  :          0 :                     switch( eClickAction )
                #  #  # ]
    1750                 :            :                     {
    1751                 :            :                         case presentation::ClickAction_BOOKMARK:
    1752                 :            :                         {
    1753                 :            :                             sal_Bool        bIsMasterPage;
    1754 [ #  # ][ #  # ]:          0 :                             sal_uInt16      nPgNum = mpDoc->GetPageByName( pInfo->GetBookmark(), bIsMasterPage );
                 [ #  # ]
    1755                 :          0 :                             SdrObject*  pObj = NULL;
    1756                 :            : 
    1757         [ #  # ]:          0 :                             if( nPgNum == SDRPAGE_NOTFOUND )
    1758                 :            :                             {
    1759                 :            :                                 // Ist das Bookmark ein Objekt?
    1760 [ #  # ][ #  # ]:          0 :                                 pObj = mpDoc->GetObj(pInfo->GetBookmark());
                 [ #  # ]
    1761         [ #  # ]:          0 :                                 if (pObj)
    1762 [ #  # ][ #  # ]:          0 :                                     nPgNum = pObj->GetPage()->GetPageNum();
    1763                 :            :                             }
    1764                 :            : 
    1765         [ #  # ]:          0 :                             if( SDRPAGE_NOTFOUND != nPgNum )
    1766 [ #  # ][ #  # ]:          0 :                                 aHRef = CreatePageURL(( nPgNum - 1 ) / 2 );
                 [ #  # ]
    1767                 :            :                         }
    1768                 :          0 :                         break;
    1769                 :            : 
    1770                 :            :                         case presentation::ClickAction_DOCUMENT:
    1771 [ #  # ][ #  # ]:          0 :                             aHRef = pInfo->GetBookmark();
                 [ #  # ]
    1772                 :          0 :                         break;
    1773                 :            : 
    1774                 :            :                         case presentation::ClickAction_PREVPAGE:
    1775                 :            :                         {
    1776                 :          0 :                             sal_uLong nPage = nSdPage;
    1777         [ #  # ]:          0 :                             if (nSdPage == 0)
    1778                 :          0 :                                 nPage = 0;
    1779                 :            :                             else
    1780                 :          0 :                                 nPage = nSdPage - 1;
    1781                 :            : 
    1782 [ #  # ][ #  # ]:          0 :                             aHRef = CreatePageURL( (sal_uInt16) nPage);
                 [ #  # ]
    1783                 :            :                         }
    1784                 :          0 :                         break;
    1785                 :            : 
    1786                 :            :                         case presentation::ClickAction_NEXTPAGE:
    1787                 :            :                         {
    1788                 :          0 :                             sal_uLong nPage = nSdPage;
    1789         [ #  # ]:          0 :                             if (nSdPage == mnSdPageCount - 1)
    1790                 :          0 :                                 nPage = mnSdPageCount - 1;
    1791                 :            :                             else
    1792                 :          0 :                                 nPage = nSdPage + 1;
    1793                 :            : 
    1794 [ #  # ][ #  # ]:          0 :                             aHRef = CreatePageURL( (sal_uInt16) nPage);
                 [ #  # ]
    1795                 :            :                         }
    1796                 :          0 :                         break;
    1797                 :            : 
    1798                 :            :                         case presentation::ClickAction_FIRSTPAGE:
    1799 [ #  # ][ #  # ]:          0 :                             aHRef = CreatePageURL(0);
                 [ #  # ]
    1800                 :          0 :                         break;
    1801                 :            : 
    1802                 :            :                         case presentation::ClickAction_LASTPAGE:
    1803 [ #  # ][ #  # ]:          0 :                             aHRef = CreatePageURL(mnSdPageCount - 1);
                 [ #  # ]
    1804                 :          0 :                         break;
    1805                 :            : 
    1806                 :            :                         default:
    1807                 :          0 :                             break;
    1808                 :            :                     }
    1809                 :            : 
    1810                 :            :                     // jetzt die Areas
    1811         [ #  # ]:          0 :                     if( aHRef.Len() )
    1812                 :            :                     {
    1813                 :            :                         // ein Kreis?
    1814 [ #  # ][ #  # ]:          0 :                         if (pObject->GetObjInventor() == SdrInventor &&
         [ #  # ][ #  # ]
                 [ #  # ]
    1815         [ #  # ]:          0 :                             pObject->GetObjIdentifier() == OBJ_CIRC  &&
    1816                 :            :                             bIsSquare )
    1817                 :            :                         {
    1818         [ #  # ]:          0 :                             aStr += CreateHTMLCircleArea(aRect.GetWidth() / 2,
    1819                 :          0 :                                                     aRect.Left() + nRadius,
    1820                 :          0 :                                                     aRect.Top() + nRadius,
    1821 [ #  # ][ #  # ]:          0 :                                                     aHRef);
                 [ #  # ]
    1822                 :            :                         }
    1823                 :            :                         // ein Polygon?
    1824 [ #  # ][ #  # ]:          0 :                         else if (pObject->GetObjInventor() == SdrInventor &&
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
    1825         [ #  # ]:          0 :                                  (pObject->GetObjIdentifier() == OBJ_PATHLINE ||
    1826         [ #  # ]:          0 :                                   pObject->GetObjIdentifier() == OBJ_PLIN ||
    1827         [ #  # ]:          0 :                                   pObject->GetObjIdentifier() == OBJ_POLY))
    1828                 :            :                         {
    1829 [ #  # ][ #  # ]:          0 :                             aStr += CreateHTMLPolygonArea(((SdrPathObj*)pObject)->GetPathPoly(), Size(-pPage->GetLftBorder(), -pPage->GetUppBorder()), fLogicToPixel, aHRef);
         [ #  # ][ #  # ]
                 [ #  # ]
    1830                 :            :                         }
    1831                 :            :                         // was anderes: das BoundRect nehmen
    1832                 :            :                         else
    1833                 :            :                         {
    1834 [ #  # ][ #  # ]:          0 :                             aStr += CreateHTMLRectArea(aRect, aHRef);
                 [ #  # ]
    1835                 :            :                         }
    1836                 :            : 
    1837         [ #  # ]:          0 :                     }
    1838                 :            :                 }
    1839                 :            :             }
    1840                 :            : 
    1841         [ #  # ]:          0 :             aStr.AppendAscii( "</map>\r\n" );
    1842                 :            :         }
    1843                 :          0 :         aClickableObjects.clear();
    1844                 :            : 
    1845         [ #  # ]:          0 :         aStr.AppendAscii( "</body>\r\n</html>" );
    1846                 :            : 
    1847         [ #  # ]:          0 :         bOk = WriteHtml( *mpHTMLFiles[nSdPage], false, aStr );
    1848                 :            : 
    1849         [ #  # ]:          0 :         if (mpProgress)
    1850         [ #  # ]:          0 :             mpProgress->SetState(++mnPagesWritten);
    1851         [ #  # ]:          0 :     }
    1852                 :            : 
    1853                 :          0 :     return bOk;
    1854                 :            : }
    1855                 :            : 
    1856                 :            : // =====================================================================
    1857                 :            : // Uebersichtsseite erzeugen
    1858                 :            : // =====================================================================
    1859                 :          0 : bool HtmlExport::CreateContentPage()
    1860                 :            : {
    1861                 :            :     // Parameter
    1862         [ #  # ]:          0 :     String aEmpty;
    1863                 :            : 
    1864         [ #  # ]:          0 :     if( mbDocColors )
    1865         [ #  # ]:          0 :         SetDocColors();
    1866                 :            : 
    1867                 :            :     // Html Kopf
    1868         [ #  # ]:          0 :     String aStr(maHTMLHeader);
    1869 [ #  # ][ #  # ]:          0 :     aStr += WriteMetaCharset();
                 [ #  # ]
    1870         [ #  # ]:          0 :     aStr.AppendAscii( "  <title>" );
    1871 [ #  # ][ #  # ]:          0 :     aStr += StringToHTMLString(*mpPageNames[0]);
                 [ #  # ]
    1872         [ #  # ]:          0 :     aStr.AppendAscii( "</title>\r\n</head>\r\n" );
    1873 [ #  # ][ #  # ]:          0 :     aStr += CreateBodyTag();
                 [ #  # ]
    1874                 :            : 
    1875                 :            :     // Seitenkopf
    1876         [ #  # ]:          0 :     aStr.AppendAscii( "<center>\r\n" );
    1877                 :            : 
    1878         [ #  # ]:          0 :     if(mbHeader)
    1879                 :            :     {
    1880         [ #  # ]:          0 :         aStr.AppendAscii( "<h1>" );
    1881 [ #  # ][ #  # ]:          0 :         aStr += getDocumentTitle();
                 [ #  # ]
    1882         [ #  # ]:          0 :         aStr.AppendAscii( "</h1><br>\r\n" );
    1883                 :            :     }
    1884                 :            : 
    1885         [ #  # ]:          0 :     aStr.AppendAscii( "<h2>" );
    1886                 :            : 
    1887                 :            :     // Solaris compiler bug workaround
    1888         [ #  # ]:          0 :     if( mbFrames )
    1889                 :            :         aStr += CreateLink( maFramePage,
    1890 [ #  # ][ #  # ]:          0 :                             RESTOHTML(STR_HTMLEXP_CLICKSTART) );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
    1891                 :            :     else
    1892                 :          0 :         aStr += CreateLink( StringToHTMLString(*mpHTMLFiles[0]),
    1893 [ #  # ][ #  # ]:          0 :                             RESTOHTML(STR_HTMLEXP_CLICKSTART) );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
    1894                 :            : 
    1895         [ #  # ]:          0 :     aStr.AppendAscii( "</h2>\r\n</center>\r\n" );
    1896                 :            : 
    1897         [ #  # ]:          0 :     aStr.AppendAscii( "<center><table width=\"90%\"><tr>\r\n" );
    1898                 :            : 
    1899                 :            :     // Inhaltsverzeichnis
    1900         [ #  # ]:          0 :     aStr.AppendAscii( "<td valign=\"top\" align=\"left\" width=\"25%\">\r\n" );
    1901         [ #  # ]:          0 :     aStr.AppendAscii( "<h3>" );
    1902 [ #  # ][ #  # ]:          0 :     aStr += RESTOHTML(STR_HTMLEXP_CONTENTS);
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
    1903         [ #  # ]:          0 :     aStr.AppendAscii( "</h3>" );
    1904                 :            : 
    1905         [ #  # ]:          0 :     for(sal_uInt16 nSdPage = 0; nSdPage < mnSdPageCount; nSdPage++)
    1906                 :            :     {
    1907         [ #  # ]:          0 :         String aPageName = *mpPageNames[nSdPage];
    1908         [ #  # ]:          0 :         aStr.AppendAscii( "<div align=\"left\">" );
    1909         [ #  # ]:          0 :         if(mbFrames)
    1910 [ #  # ][ #  # ]:          0 :             aStr += StringToHTMLString(aPageName);
                 [ #  # ]
    1911                 :            :         else
    1912 [ #  # ][ #  # ]:          0 :             aStr += CreateLink(*mpHTMLFiles[nSdPage], aPageName);
         [ #  # ][ #  # ]
                 [ #  # ]
    1913         [ #  # ]:          0 :         aStr.AppendAscii( "</div>\r\n" );
    1914         [ #  # ]:          0 :     }
    1915         [ #  # ]:          0 :     aStr.AppendAscii( "</td>\r\n" );
    1916                 :            : 
    1917                 :            :     // Dokument Infos
    1918         [ #  # ]:          0 :     aStr.AppendAscii( "<td valign=\"top\" align=\"left\" width=\"75%\">\r\n" );
    1919                 :            : 
    1920         [ #  # ]:          0 :     if(maAuthor.Len())
    1921                 :            :     {
    1922         [ #  # ]:          0 :         aStr.AppendAscii( "<p><strong>" );
    1923 [ #  # ][ #  # ]:          0 :         aStr += RESTOHTML(STR_HTMLEXP_AUTHOR);
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
    1924         [ #  # ]:          0 :         aStr.AppendAscii( ":</strong> " );
    1925 [ #  # ][ #  # ]:          0 :         aStr += StringToHTMLString(maAuthor);
                 [ #  # ]
    1926         [ #  # ]:          0 :         aStr.AppendAscii( "</p>\r\n" );
    1927                 :            :     }
    1928                 :            : 
    1929         [ #  # ]:          0 :     if(maEMail.Len())
    1930                 :            :     {
    1931         [ #  # ]:          0 :         aStr.AppendAscii( "<p><strong>" );
    1932 [ #  # ][ #  # ]:          0 :         aStr += RESTOHTML(STR_HTMLEXP_EMAIL);
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
    1933         [ #  # ]:          0 :         aStr.AppendAscii( ":</strong> <a href=\"mailto:" );
    1934 [ #  # ][ #  # ]:          0 :         aStr += StringToURL(maEMail);
                 [ #  # ]
    1935         [ #  # ]:          0 :         aStr.AppendAscii( "\">" );
    1936 [ #  # ][ #  # ]:          0 :         aStr += StringToHTMLString(maEMail);
                 [ #  # ]
    1937         [ #  # ]:          0 :         aStr.AppendAscii( "</a></p>\r\n" );
    1938                 :            :     }
    1939                 :            : 
    1940         [ #  # ]:          0 :     if(maHomePage.Len())
    1941                 :            :     {
    1942         [ #  # ]:          0 :         aStr.AppendAscii( "<p><strong>" );
    1943 [ #  # ][ #  # ]:          0 :         aStr += RESTOHTML(STR_HTMLEXP_HOMEPAGE);
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
    1944         [ #  # ]:          0 :         aStr.AppendAscii( ":</strong> <a href=\"" );
    1945 [ #  # ][ #  # ]:          0 :         aStr += StringToURL(maHomePage);
                 [ #  # ]
    1946         [ #  # ]:          0 :         aStr.AppendAscii( "\">" );
    1947 [ #  # ][ #  # ]:          0 :         aStr += StringToHTMLString(maHomePage);
                 [ #  # ]
    1948         [ #  # ]:          0 :         aStr.AppendAscii( "</a> </p>\r\n" );
    1949                 :            :     }
    1950                 :            : 
    1951         [ #  # ]:          0 :     if(maInfo.Len())
    1952                 :            :     {
    1953         [ #  # ]:          0 :         aStr.AppendAscii( "<p><strong>" );
    1954 [ #  # ][ #  # ]:          0 :         aStr += RESTOHTML(STR_HTMLEXP_INFO);
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
    1955         [ #  # ]:          0 :         aStr.AppendAscii( ":</strong><br>\r\n" );
    1956 [ #  # ][ #  # ]:          0 :         aStr += StringToHTMLString(maInfo);
                 [ #  # ]
    1957         [ #  # ]:          0 :         aStr.AppendAscii( "</p>\r\n" );
    1958                 :            :     }
    1959                 :            : 
    1960         [ #  # ]:          0 :     if(mbDownload)
    1961                 :            :     {
    1962         [ #  # ]:          0 :         aStr.AppendAscii( "<p><a href=\"" );
    1963 [ #  # ][ #  # ]:          0 :         aStr += StringToURL(maDocFileName);
                 [ #  # ]
    1964         [ #  # ]:          0 :         aStr.AppendAscii( "\">" );
    1965 [ #  # ][ #  # ]:          0 :         aStr += RESTOHTML(STR_HTMLEXP_DOWNLOAD);
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
    1966         [ #  # ]:          0 :         aStr.AppendAscii( "</a></p>\r\n" );
    1967                 :            :     }
    1968                 :            : 
    1969         [ #  # ]:          0 :     for(sal_uInt16 nSdPage = 0; nSdPage < mnSdPageCount; nSdPage++)
    1970                 :            :     {
    1971         [ #  # ]:          0 :         String aText;
    1972                 :            : 
    1973         [ #  # ]:          0 :         aText.AppendAscii( "<img src=\"" );
    1974 [ #  # ][ #  # ]:          0 :         aText += StringToURL( *mpThumbnailFiles[nSdPage] );
                 [ #  # ]
    1975         [ #  # ]:          0 :         aText.AppendAscii( "\" width=\"256\" height=\"192\" alt=\"" );
    1976 [ #  # ][ #  # ]:          0 :         aText += StringToHTMLString( *mpPageNames[nSdPage] );
                 [ #  # ]
    1977         [ #  # ]:          0 :         aText.AppendAscii( "\">" );
    1978                 :            : 
    1979 [ #  # ][ #  # ]:          0 :         aStr += CreateLink(*mpHTMLFiles[nSdPage], aText);
         [ #  # ][ #  # ]
                 [ #  # ]
    1980         [ #  # ]:          0 :         aStr.AppendAscii( "\r\n" );
    1981         [ #  # ]:          0 :     }
    1982                 :            : 
    1983                 :            : 
    1984         [ #  # ]:          0 :     aStr.AppendAscii( "</td></tr></table></center>\r\n" );
    1985                 :            : 
    1986         [ #  # ]:          0 :     aStr.AppendAscii( "</body>\r\n</html>" );
    1987                 :            : 
    1988         [ #  # ]:          0 :     bool bOk = WriteHtml( maIndex, false, aStr );
    1989                 :            : 
    1990         [ #  # ]:          0 :     if (mpProgress)
    1991         [ #  # ]:          0 :         mpProgress->SetState(++mnPagesWritten);
    1992                 :            : 
    1993 [ #  # ][ #  # ]:          0 :     return bOk;
    1994                 :            : }
    1995                 :            : 
    1996                 :            : // =====================================================================
    1997                 :            : // Notiz Seiten erzeugen (fuer Frames)
    1998                 :            : // =====================================================================
    1999                 :          0 : bool HtmlExport::CreateNotesPages()
    2000                 :            : {
    2001                 :          0 :     bool bOk = true;
    2002                 :            : 
    2003                 :          0 :     SdrOutliner* pOutliner = mpDoc->GetInternalOutliner();
    2004 [ #  # ][ #  # ]:          0 :     for( sal_uInt16 nSdPage = 0; bOk && nSdPage < mnSdPageCount; nSdPage++ )
                 [ #  # ]
    2005                 :            :     {
    2006                 :          0 :         SdPage* pPage = maNotesPages[nSdPage];
    2007         [ #  # ]:          0 :         if( mbDocColors )
    2008         [ #  # ]:          0 :             SetDocColors( pPage );
    2009                 :            : 
    2010                 :            :         // Html Kopf
    2011         [ #  # ]:          0 :         String aStr(maHTMLHeader);
    2012 [ #  # ][ #  # ]:          0 :         aStr += WriteMetaCharset();
                 [ #  # ]
    2013         [ #  # ]:          0 :         aStr.AppendAscii( "  <title>" );
    2014 [ #  # ][ #  # ]:          0 :         aStr += StringToHTMLString(*mpPageNames[0]);
                 [ #  # ]
    2015         [ #  # ]:          0 :         aStr.AppendAscii( "</title>\r\n</head>\r\n" );
    2016 [ #  # ][ #  # ]:          0 :         aStr += CreateBodyTag();
                 [ #  # ]
    2017                 :            : 
    2018         [ #  # ]:          0 :         if(pPage)
    2019 [ #  # ][ #  # ]:          0 :             aStr += CreateTextForNotesPage( pOutliner, pPage, true, maBackColor );
                 [ #  # ]
    2020                 :            : 
    2021         [ #  # ]:          0 :         aStr.AppendAscii( "</body>\r\n</html>" );
    2022                 :            : 
    2023                 :          0 :         OUString aFileName( "note" );
    2024                 :          0 :         aFileName += OUString::valueOf(nSdPage);
    2025 [ #  # ][ #  # ]:          0 :         bOk = WriteHtml( aFileName, true, aStr );
                 [ #  # ]
    2026                 :            : 
    2027                 :            : 
    2028                 :            : 
    2029         [ #  # ]:          0 :         if (mpProgress)
    2030         [ #  # ]:          0 :             mpProgress->SetState(++mnPagesWritten);
    2031         [ #  # ]:          0 :     }
    2032                 :            : 
    2033                 :          0 :     pOutliner->Clear();
    2034                 :            : 
    2035                 :          0 :     return bOk;
    2036                 :            : }
    2037                 :            : 
    2038                 :            : // =====================================================================
    2039                 :            : // Outline Seiten erzeugen (fuer Frames)
    2040                 :            : // =====================================================================
    2041                 :          0 : bool HtmlExport::CreateOutlinePages()
    2042                 :            : {
    2043                 :          0 :     bool bOk = true;
    2044                 :            : 
    2045         [ #  # ]:          0 :     if( mbDocColors )
    2046                 :            :     {
    2047                 :          0 :         SetDocColors();
    2048                 :            :     }
    2049                 :            : 
    2050                 :            :     // Seite 0 wird der zugeklappte Outline, Seite 1 der aufgeklappte
    2051 [ #  # ][ #  # ]:          0 :     for (sal_Int32 nPage = 0; nPage < (mbImpress?2:1) && bOk; ++nPage)
         [ #  # ][ #  # ]
    2052                 :            :     {
    2053                 :            :         // Html Kopf
    2054         [ #  # ]:          0 :         String aStr(maHTMLHeader);
    2055 [ #  # ][ #  # ]:          0 :         aStr += WriteMetaCharset();
                 [ #  # ]
    2056         [ #  # ]:          0 :         aStr.AppendAscii( "  <title>" );
    2057 [ #  # ][ #  # ]:          0 :         aStr += StringToHTMLString(*mpPageNames[0]);
                 [ #  # ]
    2058         [ #  # ]:          0 :         aStr.AppendAscii( "</title>\r\n</head>\r\n" );
    2059 [ #  # ][ #  # ]:          0 :         aStr += CreateBodyTag();
                 [ #  # ]
    2060                 :            : 
    2061         [ #  # ]:          0 :         SdrOutliner* pOutliner = mpDoc->GetInternalOutliner();
    2062         [ #  # ]:          0 :         for(sal_uInt16 nSdPage = 0; nSdPage < mnSdPageCount; nSdPage++)
    2063                 :            :         {
    2064                 :          0 :             SdPage* pPage = maPages[ nSdPage ];
    2065                 :            : 
    2066         [ #  # ]:          0 :             aStr.AppendAscii( "<div align=\"left\">" );
    2067         [ #  # ]:          0 :             String aLink( RTL_CONSTASCII_USTRINGPARAM( "JavaScript:parent.NavigateAbs(" ) );
    2068 [ #  # ][ #  # ]:          0 :             aLink += String::CreateFromInt32(nSdPage);
                 [ #  # ]
    2069         [ #  # ]:          0 :             aLink.Append( sal_Unicode(')') );
    2070                 :            : 
    2071         [ #  # ]:          0 :             String aTitle = CreateTextForTitle(pOutliner,pPage, maBackColor);
    2072         [ #  # ]:          0 :             if(aTitle.Len() == 0)
    2073         [ #  # ]:          0 :                 aTitle = *mpPageNames[nSdPage];
    2074                 :            : 
    2075         [ #  # ]:          0 :             aStr.AppendAscii("<p style=\"");
    2076 [ #  # ][ #  # ]:          0 :             aStr.Append( getParagraphStyle( pOutliner, 0 ) );
                 [ #  # ]
    2077         [ #  # ]:          0 :             aStr.AppendAscii("\">");
    2078 [ #  # ][ #  # ]:          0 :             aStr += CreateLink(aLink, aTitle);
         [ #  # ][ #  # ]
                 [ #  # ]
    2079         [ #  # ]:          0 :             aStr.AppendAscii("</p>");
    2080                 :            : 
    2081         [ #  # ]:          0 :             if(nPage==1)
    2082                 :            :             {
    2083 [ #  # ][ #  # ]:          0 :                 aStr += CreateTextForPage( pOutliner, pPage, false, maBackColor );
                 [ #  # ]
    2084                 :            :             }
    2085         [ #  # ]:          0 :             aStr.AppendAscii( "</div>\r\n" );
    2086 [ #  # ][ #  # ]:          0 :         }
    2087         [ #  # ]:          0 :         pOutliner->Clear();
    2088                 :            : 
    2089         [ #  # ]:          0 :         aStr.AppendAscii( "</body>\r\n</html>" );
    2090                 :            : 
    2091                 :          0 :         OUString aFileName( "outline" );
    2092                 :          0 :         aFileName += OUString::valueOf(nPage);
    2093 [ #  # ][ #  # ]:          0 :         bOk = WriteHtml( aFileName, true, aStr );
                 [ #  # ]
    2094                 :            : 
    2095         [ #  # ]:          0 :         if (mpProgress)
    2096         [ #  # ]:          0 :             mpProgress->SetState(++mnPagesWritten);
    2097         [ #  # ]:          0 :     }
    2098                 :            : 
    2099                 :          0 :     return bOk;
    2100                 :            : }
    2101                 :            : 
    2102                 :            : // =====================================================================
    2103                 :            : // Dateinamen festlegen
    2104                 :            : // =====================================================================
    2105                 :          0 : void HtmlExport::CreateFileNames()
    2106                 :            : {
    2107                 :            :     // Listen mit neuen Dateinamen anlegen
    2108                 :          0 :     mpHTMLFiles = new String*[mnSdPageCount];
    2109                 :          0 :     mpImageFiles = new String*[mnSdPageCount];
    2110                 :          0 :     mpThumbnailFiles = new String*[mnSdPageCount];
    2111                 :          0 :     mpPageNames = new String*[mnSdPageCount];
    2112                 :          0 :     mpTextFiles = new String*[mnSdPageCount];
    2113                 :            : 
    2114                 :          0 :     mbHeader = false;   // Ueberschrift auf Uebersichtsseite?
    2115                 :            : 
    2116         [ #  # ]:          0 :     for (sal_uInt16 nSdPage = 0; nSdPage < mnSdPageCount; nSdPage++)
    2117                 :            :     {
    2118                 :            :         String* pName;
    2119 [ #  # ][ #  # ]:          0 :         if(nSdPage == 0 && !mbContentsPage && !mbFrames )
                 [ #  # ]
    2120         [ #  # ]:          0 :             pName = new String(maIndex);
    2121                 :            :         else
    2122                 :            :         {
    2123         [ #  # ]:          0 :             pName = new String( RTL_CONSTASCII_USTRINGPARAM("img") );
    2124         [ #  # ]:          0 :             *pName += String::CreateFromInt32(nSdPage);
    2125                 :          0 :             *pName += maHTMLExtension;
    2126                 :            :         }
    2127                 :            : 
    2128                 :          0 :         mpHTMLFiles[nSdPage] = pName;
    2129                 :            : 
    2130         [ #  # ]:          0 :         pName = new String( RTL_CONSTASCII_USTRINGPARAM("img") );
    2131         [ #  # ]:          0 :         *pName += String::CreateFromInt32(nSdPage);
    2132         [ #  # ]:          0 :         if( meFormat==FORMAT_GIF )
    2133                 :          0 :             pName->AppendAscii( ".gif" );
    2134         [ #  # ]:          0 :         else if( meFormat==FORMAT_JPG )
    2135                 :          0 :             pName->AppendAscii( ".jpg" );
    2136                 :            :         else
    2137                 :          0 :             pName->AppendAscii( ".png" );
    2138                 :            : 
    2139                 :          0 :         mpImageFiles[nSdPage] = pName;
    2140                 :            : 
    2141         [ #  # ]:          0 :         pName = new String( RTL_CONSTASCII_USTRINGPARAM("thumb") );
    2142         [ #  # ]:          0 :         *pName += String::CreateFromInt32(nSdPage);
    2143         [ #  # ]:          0 :         if( meFormat!=FORMAT_JPG )
    2144                 :          0 :             pName->AppendAscii( ".png" );
    2145                 :            :         else
    2146                 :          0 :             pName->AppendAscii( ".jpg" );
    2147                 :            : 
    2148                 :          0 :         mpThumbnailFiles[nSdPage] = pName;
    2149                 :            : 
    2150         [ #  # ]:          0 :         pName = new String( RTL_CONSTASCII_USTRINGPARAM("text"));
    2151         [ #  # ]:          0 :         *pName += String::CreateFromInt32(nSdPage);
    2152                 :          0 :         *pName += maHTMLExtension;
    2153                 :          0 :         mpTextFiles[nSdPage] = pName;
    2154                 :            : 
    2155                 :          0 :         SdPage* pSdPage = maPages[ nSdPage ];
    2156                 :            : 
    2157                 :            :         // get slide title from page name
    2158         [ #  # ]:          0 :         String* pPageTitle = new String();
    2159                 :          0 :         *pPageTitle = pSdPage->GetName();
    2160                 :          0 :         mpPageNames[nSdPage] = pPageTitle;
    2161                 :            :     }
    2162                 :            : 
    2163 [ #  # ][ #  # ]:          0 :     if(!mbContentsPage && mbFrames)
    2164                 :          0 :         maFramePage = maIndex;
    2165                 :            :     else
    2166                 :            :     {
    2167                 :          0 :         maFramePage.AssignAscii( "siframes" );
    2168                 :          0 :         maFramePage += maHTMLExtension;
    2169                 :            :     }
    2170                 :          0 : }
    2171                 :            : 
    2172                 :          0 : String HtmlExport::getDocumentTitle()
    2173                 :            : {
    2174                 :            :     // check for a title object in this page, if its the first
    2175                 :            :     // title it becomes this documents title for the content
    2176                 :            :     // page
    2177         [ #  # ]:          0 :     if( !mbHeader )
    2178                 :            :     {
    2179         [ #  # ]:          0 :         if(mbImpress)
    2180                 :            :         {
    2181                 :            :             // falls es ein nicht-leeres Titelobjekt gibt, dessen ersten Absatz
    2182                 :            :             // als Seitentitel benutzen
    2183                 :          0 :             SdPage* pSdPage = mpDoc->GetSdPage(0, PK_STANDARD);
    2184                 :          0 :             SdrObject* pTitleObj = pSdPage->GetPresObj(PRESOBJ_TITLE);
    2185 [ #  # ][ #  # ]:          0 :             if (pTitleObj && !pTitleObj->IsEmptyPresObj())
                 [ #  # ]
    2186                 :            :             {
    2187                 :          0 :                 OutlinerParaObject* pParaObject = pTitleObj->GetOutlinerParaObject();
    2188         [ #  # ]:          0 :                 if (pParaObject)
    2189                 :            :                 {
    2190                 :            :                     const EditTextObject& rEditTextObject =
    2191                 :          0 :                         pParaObject->GetTextObject();
    2192         [ #  # ]:          0 :                     if (&rEditTextObject)
    2193                 :            :                     {
    2194         [ #  # ]:          0 :                         String aTest(rEditTextObject.GetText(0));
    2195         [ #  # ]:          0 :                         if (aTest.Len() > 0)
    2196 [ #  # ][ #  # ]:          0 :                             mDocTitle = aTest;
    2197                 :            :                     }
    2198                 :            :                 }
    2199                 :            :             }
    2200                 :            : 
    2201         [ #  # ]:          0 :             for( sal_uInt16 i = 0; i < mDocTitle.Len(); i++ )
    2202         [ #  # ]:          0 :                 if( mDocTitle.GetChar(i) == (sal_Unicode)0xff)
    2203                 :          0 :                     mDocTitle.SetChar(i, sal_Unicode(' ') );
    2204                 :            :         }
    2205                 :            : 
    2206         [ #  # ]:          0 :         if( !mDocTitle.Len() )
    2207                 :            :         {
    2208                 :          0 :             mDocTitle = maDocFileName;
    2209                 :          0 :             int nDot = mDocTitle.Search( '.' );
    2210         [ #  # ]:          0 :             if( nDot > 0 )
    2211                 :          0 :                 mDocTitle.Erase( (sal_uInt16)nDot );
    2212                 :            :         }
    2213                 :          0 :         mbHeader = true;
    2214                 :            :     }
    2215                 :            : 
    2216                 :          0 :     return mDocTitle;
    2217                 :            : }
    2218                 :            : 
    2219                 :            : static const char* JS_NavigateAbs =
    2220                 :            :     "function NavigateAbs( nPage )\r\n"
    2221                 :            :     "{\r\n"
    2222                 :            :     "  frames[\"show\"].location.href = \"img\" + nPage + \".$EXT\";\r\n"
    2223                 :            :     "  //frames[\"notes\"].location.href = \"note\" + nPage + \".$EXT\";\r\n"
    2224                 :            :     "  nCurrentPage = nPage;\r\n"
    2225                 :            :     "  if(nCurrentPage==0)\r\n"
    2226                 :            :     "  {\r\n"
    2227                 :            :     "    frames[\"navbar1\"].location.href = \"navbar0.$EXT\";\r\n"
    2228                 :            :     "  }\r\n"
    2229                 :            :     "  else if(nCurrentPage==nPageCount-1)\r\n"
    2230                 :            :     "  {\r\n"
    2231                 :            :     "    frames[\"navbar1\"].location.href = \"navbar2.$EXT\";\r\n"
    2232                 :            :     "  }\r\n"
    2233                 :            :     "  else\r\n"
    2234                 :            :     "  {\r\n"
    2235                 :            :     "    frames[\"navbar1\"].location.href = \"navbar1.$EXT\";\r\n"
    2236                 :            :     "  }\r\n"
    2237                 :            :     "}\r\n\r\n";
    2238                 :            : 
    2239                 :            : static const char* JS_NavigateRel =
    2240                 :            :     "function NavigateRel( nDelta )\r\n"
    2241                 :            :     "{\r\n"
    2242                 :            :     "  var nPage = parseInt(nCurrentPage) + parseInt(nDelta);\r\n"
    2243                 :            :     "  if( (nPage >= 0) && (nPage < nPageCount) )\r\n"
    2244                 :            :     "  {\r\n"
    2245                 :            :     "    NavigateAbs( nPage );\r\n"
    2246                 :            :     "  }\r\n"
    2247                 :            :     "}\r\n\r\n";
    2248                 :            : 
    2249                 :            : static const char* JS_ExpandOutline =
    2250                 :            :     "function ExpandOutline()\r\n"
    2251                 :            :     "{\r\n"
    2252                 :            :     "  frames[\"navbar2\"].location.href = \"navbar4.$EXT\";\r\n"
    2253                 :            :     "  frames[\"outline\"].location.href = \"outline1.$EXT\";\r\n"
    2254                 :            :     "}\r\n\r\n";
    2255                 :            : 
    2256                 :            : static const char * JS_CollapseOutline =
    2257                 :            :     "function CollapseOutline()\r\n"
    2258                 :            :     "{\r\n"
    2259                 :            :     "  frames[\"navbar2\"].location.href = \"navbar3.$EXT\";\r\n"
    2260                 :            :     "  frames[\"outline\"].location.href = \"outline0.$EXT\";\r\n"
    2261                 :            :     "}\r\n\r\n";
    2262                 :            : 
    2263                 :            : // ====================================================================
    2264                 :            : // Seite mit den Frames erzeugen
    2265                 :            : // ====================================================================
    2266                 :          0 : bool HtmlExport::CreateFrames()
    2267                 :            : {
    2268         [ #  # ]:          0 :     String aTmp;
    2269                 :            :     String aStr( RTL_CONSTASCII_USTRINGPARAM(
    2270                 :            :                     "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Frameset//EN\"\r\n"
    2271                 :            :                     "    \"http://www.w3.org/TR/html4/frameset.dtd\">\r\n"
    2272         [ #  # ]:          0 :             "<html>\r\n<head>\r\n" ) );
    2273                 :            : 
    2274 [ #  # ][ #  # ]:          0 :     aStr += WriteMetaCharset();
                 [ #  # ]
    2275         [ #  # ]:          0 :     aStr.AppendAscii( "  <title>" );
    2276 [ #  # ][ #  # ]:          0 :     aStr += StringToHTMLString(*mpPageNames[0]);
                 [ #  # ]
    2277         [ #  # ]:          0 :     aStr.AppendAscii( "</title>\r\n" );
    2278                 :            : 
    2279         [ #  # ]:          0 :     aStr.AppendAscii( "<script type=\"text/javascript\">\r\n<!--\r\n" );
    2280                 :            : 
    2281         [ #  # ]:          0 :     aStr.AppendAscii( "var nCurrentPage = 0;\r\nvar nPageCount = " );
    2282 [ #  # ][ #  # ]:          0 :     aStr += String::CreateFromInt32(mnSdPageCount);
                 [ #  # ]
    2283         [ #  # ]:          0 :     aStr.AppendAscii( ";\r\n\r\n" );
    2284                 :            : 
    2285         [ #  # ]:          0 :     String aFunction;
    2286         [ #  # ]:          0 :     aFunction.AssignAscii(JS_NavigateAbs);
    2287                 :            : 
    2288         [ #  # ]:          0 :     if(mbNotes)
    2289                 :            :     {
    2290         [ #  # ]:          0 :         String aEmpty;
    2291         [ #  # ]:          0 :         String aSlash( RTL_CONSTASCII_USTRINGPARAM( "//" ) );
    2292 [ #  # ][ #  # ]:          0 :         aFunction.SearchAndReplaceAll( aSlash, aEmpty);
                 [ #  # ]
    2293                 :            :     }
    2294                 :            : 
    2295                 :            :     // substitute HTML file extension
    2296         [ #  # ]:          0 :     String aPlaceHolder(RTL_CONSTASCII_USTRINGPARAM(".$EXT"));
    2297         [ #  # ]:          0 :     aFunction.SearchAndReplaceAll(aPlaceHolder, maHTMLExtension);
    2298         [ #  # ]:          0 :     aStr += aFunction;
    2299                 :            : 
    2300         [ #  # ]:          0 :     aTmp.AssignAscii( JS_NavigateRel );
    2301         [ #  # ]:          0 :     aTmp.SearchAndReplaceAll(aPlaceHolder, maHTMLExtension);
    2302         [ #  # ]:          0 :     aStr += aTmp;
    2303                 :            : 
    2304         [ #  # ]:          0 :     if(mbImpress)
    2305                 :            :     {
    2306         [ #  # ]:          0 :         aTmp.AssignAscii( JS_ExpandOutline );
    2307         [ #  # ]:          0 :         aTmp.SearchAndReplaceAll(aPlaceHolder, maHTMLExtension);
    2308         [ #  # ]:          0 :         aStr += aTmp;
    2309                 :            : 
    2310         [ #  # ]:          0 :         aTmp.AssignAscii( JS_CollapseOutline );
    2311         [ #  # ]:          0 :         aTmp.SearchAndReplaceAll(aPlaceHolder, maHTMLExtension);
    2312         [ #  # ]:          0 :         aStr += aTmp;
    2313                 :            :     }
    2314         [ #  # ]:          0 :     aStr.AppendAscii( "// -->\r\n</script>\r\n" );
    2315                 :            : 
    2316         [ #  # ]:          0 :     aStr.AppendAscii( "</head>\r\n" );
    2317                 :            : 
    2318         [ #  # ]:          0 :     aStr.AppendAscii( "<frameset cols=\"*," );
    2319 [ #  # ][ #  # ]:          0 :     aStr += String::CreateFromInt32((mnWidthPixel + 16));
                 [ #  # ]
    2320         [ #  # ]:          0 :     aStr.AppendAscii( "\">\r\n" );
    2321         [ #  # ]:          0 :     if(mbImpress)
    2322                 :            :     {
    2323         [ #  # ]:          0 :         aStr.AppendAscii( "  <frameset rows=\"42,*\">\r\n" );
    2324         [ #  # ]:          0 :         aStr.AppendAscii( "    <frame src=\"navbar3" );
    2325 [ #  # ][ #  # ]:          0 :         aStr += StringToURL(maHTMLExtension);
                 [ #  # ]
    2326         [ #  # ]:          0 :         aStr.AppendAscii( "\" name=\"navbar2\" marginwidth=\"4\" marginheight=\"4\" scrolling=\"no\">\r\n" );
    2327                 :            :     }
    2328         [ #  # ]:          0 :     aStr.AppendAscii( "    <frame src=\"outline0" );
    2329 [ #  # ][ #  # ]:          0 :     aStr += StringToURL(maHTMLExtension);
                 [ #  # ]
    2330         [ #  # ]:          0 :     aStr.AppendAscii( "\" name=\"outline\">\r\n" );
    2331         [ #  # ]:          0 :     if(mbImpress)
    2332         [ #  # ]:          0 :         aStr.AppendAscii( "  </frameset>\r\n" );
    2333                 :            : 
    2334         [ #  # ]:          0 :     if(mbNotes)
    2335                 :            :     {
    2336         [ #  # ]:          0 :         aStr.AppendAscii( "  <frameset rows=\"42," );
    2337 [ #  # ][ #  # ]:          0 :         aStr += String::CreateFromInt32((int)((double)mnWidthPixel * 0.75) + 16);
                 [ #  # ]
    2338         [ #  # ]:          0 :         aStr.AppendAscii( ",*\">\r\n" );
    2339                 :            :     }
    2340                 :            :     else
    2341         [ #  # ]:          0 :         aStr.AppendAscii( "  <frameset rows=\"42,*\">\r\n" );
    2342                 :            : 
    2343         [ #  # ]:          0 :     aStr.AppendAscii( "    <frame src=\"navbar0" );
    2344 [ #  # ][ #  # ]:          0 :     aStr += StringToURL(maHTMLExtension);
                 [ #  # ]
    2345         [ #  # ]:          0 :     aStr.AppendAscii( "\" name=\"navbar1\" marginwidth=\"4\" marginheight=\"4\" scrolling=\"no\">\r\n" );
    2346                 :            : 
    2347         [ #  # ]:          0 :     aStr.AppendAscii( "    <frame src=\"" );
    2348 [ #  # ][ #  # ]:          0 :     aStr += StringToURL(*mpHTMLFiles[0]);
                 [ #  # ]
    2349         [ #  # ]:          0 :     aStr.AppendAscii( "\" name=\"show\" marginwidth=\"4\" marginheight=\"4\">\r\n" );
    2350                 :            : 
    2351         [ #  # ]:          0 :     if(mbNotes)
    2352                 :            :     {
    2353         [ #  # ]:          0 :         aStr.AppendAscii( "    <frame src=\"note0" );
    2354 [ #  # ][ #  # ]:          0 :         aStr += StringToURL(maHTMLExtension);
                 [ #  # ]
    2355         [ #  # ]:          0 :         aStr.AppendAscii( "\" name=\"notes\">\r\n" );
    2356                 :            :     }
    2357         [ #  # ]:          0 :     aStr.AppendAscii( "  </frameset>\r\n" );
    2358                 :            : 
    2359         [ #  # ]:          0 :     aStr.AppendAscii( "<noframes>\r\n" );
    2360 [ #  # ][ #  # ]:          0 :     aStr += CreateBodyTag();
                 [ #  # ]
    2361 [ #  # ][ #  # ]:          0 :     aStr += RESTOHTML(STR_HTMLEXP_NOFRAMES);
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
    2362         [ #  # ]:          0 :     aStr.AppendAscii( "\r\n</noframes>\r\n</frameset>\r\n</html>" );
    2363                 :            : 
    2364         [ #  # ]:          0 :     bool bOk = WriteHtml( maFramePage, false, aStr );
    2365                 :            : 
    2366         [ #  # ]:          0 :     if (mpProgress)
    2367         [ #  # ]:          0 :         mpProgress->SetState(++mnPagesWritten);
    2368                 :            : 
    2369 [ #  # ][ #  # ]:          0 :     return bOk;
         [ #  # ][ #  # ]
    2370                 :            : }
    2371                 :            : 
    2372                 :            : // ====================================================================
    2373                 :            : // Buttonleiste fuer Standard ausgeben
    2374                 :            : // Es werden 4 html files erstellt
    2375                 :            : // navbar0.htm Navigationsleiste Grafik fuer erste Seite
    2376                 :            : // navbar1.htm Navigationsleiste Grafik fuer zweite bis vorletzte Seite
    2377                 :            : // navbar2.htm Navigationsleiste Grafik fuer letzte Seite
    2378                 :            : // navbar3.htm Navigationsleiste Outline zugeklappt
    2379                 :            : // navbar4.htm Navigationsleiste Outline aufgeklappt
    2380                 :            : // ====================================================================
    2381                 :          0 : bool HtmlExport::CreateNavBarFrames()
    2382                 :            : {
    2383                 :          0 :     bool bOk = true;
    2384         [ #  # ]:          0 :     String aButton;
    2385                 :            : 
    2386         [ #  # ]:          0 :     if( mbDocColors )
    2387                 :            :     {
    2388         [ #  # ]:          0 :         SetDocColors();
    2389                 :          0 :         maBackColor = maFirstPageColor;
    2390                 :            :     }
    2391                 :            : 
    2392 [ #  # ][ #  # ]:          0 :     for( int nFile = 0; nFile < 3 && bOk; nFile++ )
                 [ #  # ]
    2393                 :            :     {
    2394         [ #  # ]:          0 :         String aStr(maHTMLHeader);
    2395 [ #  # ][ #  # ]:          0 :         aStr += WriteMetaCharset();
                 [ #  # ]
    2396         [ #  # ]:          0 :         aStr.AppendAscii( "  <title>" );
    2397 [ #  # ][ #  # ]:          0 :         aStr += StringToHTMLString(*mpPageNames[0]);
                 [ #  # ]
    2398         [ #  # ]:          0 :         aStr.AppendAscii( "</title>\r\n</head>\r\n" );
    2399 [ #  # ][ #  # ]:          0 :         aStr += CreateBodyTag();
                 [ #  # ]
    2400         [ #  # ]:          0 :         aStr.AppendAscii( "<center>\r\n" );
    2401                 :            : 
    2402                 :            :     // erste Seite
    2403 [ #  # ][ #  # ]:          0 :         aButton = String(SdResId(STR_HTMLEXP_FIRSTPAGE));
         [ #  # ][ #  # ]
    2404         [ #  # ]:          0 :         if(mnButtonThema != -1)
    2405                 :            :             aButton = CreateImage(GetButtonName((nFile == 0 || mnSdPageCount == 1?
    2406 [ #  # ][ #  # ]:          0 :                                   BTN_FIRST_0:BTN_FIRST_1)), aButton);
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
    2407                 :            : 
    2408 [ #  # ][ #  # ]:          0 :         if(nFile != 0 && mnSdPageCount > 1)
    2409 [ #  # ][ #  # ]:          0 :             aButton = CreateLink( String(RTL_CONSTASCII_USTRINGPARAM("JavaScript:parent.NavigateAbs(0)")), aButton);
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
    2410                 :            : 
    2411         [ #  # ]:          0 :         aStr += aButton;
    2412         [ #  # ]:          0 :         aStr.AppendAscii( "\r\n" );
    2413                 :            : 
    2414                 :            :     // zur vorherigen Seite
    2415 [ #  # ][ #  # ]:          0 :         aButton = String(SdResId(STR_PUBLISH_BACK));
         [ #  # ][ #  # ]
    2416         [ #  # ]:          0 :         if(mnButtonThema != -1)
    2417                 :            :             aButton = CreateImage(GetButtonName((nFile == 0 || mnSdPageCount == 1?
    2418 [ #  # ][ #  # ]:          0 :                                     BTN_PREV_0:BTN_PREV_1)), aButton);
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
    2419                 :            : 
    2420 [ #  # ][ #  # ]:          0 :         if(nFile != 0 && mnSdPageCount > 1)
    2421 [ #  # ][ #  # ]:          0 :             aButton = CreateLink( String(RTL_CONSTASCII_USTRINGPARAM("JavaScript:parent.NavigateRel(-1)")), aButton);
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
    2422                 :            : 
    2423         [ #  # ]:          0 :         aStr += aButton;
    2424         [ #  # ]:          0 :         aStr.AppendAscii( "\r\n" );
    2425                 :            : 
    2426                 :            :     // zur naechsten Seite
    2427 [ #  # ][ #  # ]:          0 :         aButton = String(SdResId(STR_PUBLISH_NEXT));
         [ #  # ][ #  # ]
    2428         [ #  # ]:          0 :         if(mnButtonThema != -1)
    2429                 :            :             aButton = CreateImage(GetButtonName((nFile ==2 || mnSdPageCount == 1?
    2430 [ #  # ][ #  # ]:          0 :                                     BTN_NEXT_0:BTN_NEXT_1)), aButton);
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
    2431                 :            : 
    2432 [ #  # ][ #  # ]:          0 :         if(nFile != 2 && mnSdPageCount > 1)
    2433 [ #  # ][ #  # ]:          0 :             aButton = CreateLink(String(RTL_CONSTASCII_USTRINGPARAM("JavaScript:parent.NavigateRel(1)")), aButton);
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
    2434                 :            : 
    2435         [ #  # ]:          0 :         aStr += aButton;
    2436         [ #  # ]:          0 :         aStr.AppendAscii( "\r\n" );
    2437                 :            : 
    2438                 :            :     // zur letzten Seite
    2439 [ #  # ][ #  # ]:          0 :         aButton = String(SdResId(STR_HTMLEXP_LASTPAGE));
         [ #  # ][ #  # ]
    2440         [ #  # ]:          0 :         if(mnButtonThema != -1)
    2441                 :            :             aButton = CreateImage(GetButtonName((nFile ==2 || mnSdPageCount == 1?
    2442 [ #  # ][ #  # ]:          0 :                                   BTN_LAST_0:BTN_LAST_1)), aButton);
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
    2443                 :            : 
    2444 [ #  # ][ #  # ]:          0 :         if(nFile != 2 && mnSdPageCount > 1)
    2445                 :            :         {
    2446         [ #  # ]:          0 :             String aLink(RTL_CONSTASCII_USTRINGPARAM("JavaScript:parent.NavigateAbs("));
    2447 [ #  # ][ #  # ]:          0 :             aLink += String::CreateFromInt32(mnSdPageCount-1);
                 [ #  # ]
    2448         [ #  # ]:          0 :             aLink.AppendAscii( ")" );
    2449 [ #  # ][ #  # ]:          0 :             aButton = CreateLink( aLink, aButton);
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
    2450                 :            :         }
    2451                 :            : 
    2452         [ #  # ]:          0 :         aStr += aButton;
    2453         [ #  # ]:          0 :         aStr.AppendAscii( "\r\n" );
    2454                 :            : 
    2455                 :            :     // Inhalt
    2456         [ #  # ]:          0 :         if (mbContentsPage)
    2457                 :            :         {
    2458 [ #  # ][ #  # ]:          0 :             aButton = String(SdResId(STR_PUBLISH_OUTLINE));
         [ #  # ][ #  # ]
    2459         [ #  # ]:          0 :             if(mnButtonThema != -1)
    2460 [ #  # ][ #  # ]:          0 :                 aButton = CreateImage(GetButtonName(BTN_INDEX), aButton);
         [ #  # ][ #  # ]
                 [ #  # ]
    2461                 :            : 
    2462                 :            :             // zur Uebersicht
    2463 [ #  # ][ #  # ]:          0 :             aStr += CreateLink(maIndex, aButton, String(RTL_CONSTASCII_USTRINGPARAM("_top")));
         [ #  # ][ #  # ]
                 [ #  # ]
    2464         [ #  # ]:          0 :             aStr.AppendAscii( "\r\n" );
    2465                 :            :         }
    2466                 :            : 
    2467                 :            :     // Textmodus
    2468         [ #  # ]:          0 :         if(mbImpress)
    2469                 :            :         {
    2470 [ #  # ][ #  # ]:          0 :             aButton = String(SdResId(STR_HTMLEXP_SETTEXT));
         [ #  # ][ #  # ]
    2471         [ #  # ]:          0 :             if(mnButtonThema != -1)
    2472 [ #  # ][ #  # ]:          0 :                 aButton = CreateImage(GetButtonName(BTN_TEXT), aButton);
         [ #  # ][ #  # ]
                 [ #  # ]
    2473                 :            : 
    2474         [ #  # ]:          0 :             String  aText0( RTL_CONSTASCII_USTRINGPARAM("text0"));
    2475         [ #  # ]:          0 :             aText0 += maHTMLExtension;
    2476 [ #  # ][ #  # ]:          0 :             aStr += CreateLink( aText0, aButton, String(RTL_CONSTASCII_USTRINGPARAM("_top")));
         [ #  # ][ #  # ]
                 [ #  # ]
    2477 [ #  # ][ #  # ]:          0 :             aStr.AppendAscii( "\r\n" );
    2478                 :            :         }
    2479                 :            : 
    2480                 :            :     // Und fertich...
    2481         [ #  # ]:          0 :         aStr.AppendAscii( "</center>\r\n" );
    2482         [ #  # ]:          0 :         aStr.AppendAscii( "</body>\r\n</html>" );
    2483                 :            : 
    2484         [ #  # ]:          0 :         String aFileName( RTL_CONSTASCII_USTRINGPARAM("navbar") );
    2485 [ #  # ][ #  # ]:          0 :         aFileName += String::CreateFromInt32(nFile);
                 [ #  # ]
    2486                 :            : 
    2487         [ #  # ]:          0 :         bOk = WriteHtml( aFileName, true, aStr );
    2488                 :            : 
    2489         [ #  # ]:          0 :         if (mpProgress)
    2490         [ #  # ]:          0 :             mpProgress->SetState(++mnPagesWritten);
    2491 [ #  # ][ #  # ]:          0 :     }
    2492                 :            : 
    2493                 :            :     // Jetzt kommt die Navigatonsleiste Outliner zugeklappt...
    2494         [ #  # ]:          0 :     if(bOk)
    2495                 :            :     {
    2496         [ #  # ]:          0 :         String aStr(maHTMLHeader);
    2497 [ #  # ][ #  # ]:          0 :         aStr += WriteMetaCharset();
                 [ #  # ]
    2498         [ #  # ]:          0 :         aStr.AppendAscii( "  <title>" );
    2499 [ #  # ][ #  # ]:          0 :         aStr += StringToHTMLString(*mpPageNames[0]);
                 [ #  # ]
    2500         [ #  # ]:          0 :         aStr.AppendAscii( "</title>\r\n</head>\r\n" );
    2501 [ #  # ][ #  # ]:          0 :         aStr += CreateBodyTag();
                 [ #  # ]
    2502                 :            : 
    2503 [ #  # ][ #  # ]:          0 :         aButton = String(SdResId(STR_HTMLEXP_OUTLINE));
         [ #  # ][ #  # ]
    2504         [ #  # ]:          0 :         if(mnButtonThema != -1)
    2505 [ #  # ][ #  # ]:          0 :             aButton = CreateImage(GetButtonName(BTN_MORE), aButton);
         [ #  # ][ #  # ]
                 [ #  # ]
    2506                 :            : 
    2507 [ #  # ][ #  # ]:          0 :         aStr += CreateLink(String(RTL_CONSTASCII_USTRINGPARAM("JavaScript:parent.ExpandOutline()")), aButton);
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
    2508         [ #  # ]:          0 :         aStr.AppendAscii( "</body>\r\n</html>" );
    2509                 :            : 
    2510         [ #  # ]:          0 :         String aFileName( RTL_CONSTASCII_USTRINGPARAM("navbar3") );
    2511                 :            : 
    2512         [ #  # ]:          0 :         bOk = WriteHtml( aFileName, true, aStr );
    2513                 :            : 
    2514         [ #  # ]:          0 :         if (mpProgress)
    2515 [ #  # ][ #  # ]:          0 :             mpProgress->SetState(++mnPagesWritten);
                 [ #  # ]
    2516                 :            :     }
    2517                 :            : 
    2518                 :            :     // ... und jetzt Outliner aufgeklappt
    2519         [ #  # ]:          0 :     if( bOk )
    2520                 :            :     {
    2521         [ #  # ]:          0 :         String aStr(maHTMLHeader);
    2522 [ #  # ][ #  # ]:          0 :         aStr += WriteMetaCharset();
                 [ #  # ]
    2523         [ #  # ]:          0 :         aStr.AppendAscii( "  <title>" );
    2524 [ #  # ][ #  # ]:          0 :         aStr += StringToHTMLString(*mpPageNames[0]);
                 [ #  # ]
    2525         [ #  # ]:          0 :         aStr.AppendAscii( "</title>\r\n</head>\r\n" );
    2526 [ #  # ][ #  # ]:          0 :         aStr += CreateBodyTag();
                 [ #  # ]
    2527                 :            : 
    2528 [ #  # ][ #  # ]:          0 :         aButton = String(SdResId(STR_HTMLEXP_NOOUTLINE));
         [ #  # ][ #  # ]
    2529         [ #  # ]:          0 :         if(mnButtonThema != -1)
    2530 [ #  # ][ #  # ]:          0 :             aButton = CreateImage(GetButtonName(BTN_LESS), aButton);
         [ #  # ][ #  # ]
                 [ #  # ]
    2531                 :            : 
    2532 [ #  # ][ #  # ]:          0 :         aStr += CreateLink(String(RTL_CONSTASCII_USTRINGPARAM("JavaScript:parent.CollapseOutline()")), aButton);
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
    2533         [ #  # ]:          0 :         aStr.AppendAscii( "</body>\r\n</html>" );
    2534                 :            : 
    2535         [ #  # ]:          0 :         String aFileName( RTL_CONSTASCII_USTRINGPARAM("navbar4") );
    2536         [ #  # ]:          0 :         bOk = WriteHtml( aFileName, true, aStr );
    2537                 :            : 
    2538         [ #  # ]:          0 :         if (mpProgress)
    2539 [ #  # ][ #  # ]:          0 :             mpProgress->SetState(++mnPagesWritten);
                 [ #  # ]
    2540                 :            : 
    2541                 :            :     }
    2542                 :            : 
    2543         [ #  # ]:          0 :     return bOk;
    2544                 :            : }
    2545                 :            : 
    2546                 :            : // ====================================================================
    2547                 :            : // Buttonleiste fuer Standard ausgeben
    2548                 :            : // ====================================================================
    2549                 :          0 : String HtmlExport::CreateNavBar( sal_uInt16 nSdPage, bool bIsText ) const
    2550                 :            : {
    2551                 :            :     // Navigationsleiste vorbereiten
    2552 [ #  # ][ #  # ]:          0 :     String aStrNavFirst( SdResId(STR_HTMLEXP_FIRSTPAGE) );
    2553 [ #  # ][ #  # ]:          0 :     String aStrNavPrev( SdResId(STR_PUBLISH_BACK) );
    2554 [ #  # ][ #  # ]:          0 :     String aStrNavNext( SdResId(STR_PUBLISH_NEXT) );
    2555 [ #  # ][ #  # ]:          0 :     String aStrNavLast( SdResId(STR_HTMLEXP_LASTPAGE) );
    2556 [ #  # ][ #  # ]:          0 :     String aStrNavContent( SdResId(STR_PUBLISH_OUTLINE) );
    2557         [ #  # ]:          0 :     String aStrNavText;
    2558         [ #  # ]:          0 :     if( bIsText )
    2559                 :            :     {
    2560 [ #  # ][ #  # ]:          0 :         aStrNavText = String( SdResId(STR_HTMLEXP_SETGRAPHIC) );
         [ #  # ][ #  # ]
    2561                 :            :     }
    2562                 :            :     else
    2563                 :            :     {
    2564 [ #  # ][ #  # ]:          0 :         aStrNavText = String( SdResId(STR_HTMLEXP_SETTEXT) );
         [ #  # ][ #  # ]
    2565                 :            :     }
    2566                 :            : 
    2567 [ #  # ][ #  # ]:          0 :     if(!bIsText && mnButtonThema != -1)
    2568                 :            :     {
    2569 [ #  # ][ #  # ]:          0 :         if(nSdPage<1 || mnSdPageCount == 1)
    2570                 :            :         {
    2571 [ #  # ][ #  # ]:          0 :             aStrNavFirst = CreateImage(GetButtonName(BTN_FIRST_0), aStrNavFirst);
         [ #  # ][ #  # ]
                 [ #  # ]
    2572 [ #  # ][ #  # ]:          0 :             aStrNavPrev  = CreateImage(GetButtonName(BTN_PREV_0), aStrNavPrev);
         [ #  # ][ #  # ]
                 [ #  # ]
    2573                 :            :         }
    2574                 :            :         else
    2575                 :            :         {
    2576 [ #  # ][ #  # ]:          0 :             aStrNavFirst = CreateImage(GetButtonName(BTN_FIRST_1), aStrNavFirst);
         [ #  # ][ #  # ]
                 [ #  # ]
    2577 [ #  # ][ #  # ]:          0 :             aStrNavPrev  = CreateImage(GetButtonName(BTN_PREV_1), aStrNavPrev);
         [ #  # ][ #  # ]
                 [ #  # ]
    2578                 :            :         }
    2579                 :            : 
    2580 [ #  # ][ #  # ]:          0 :         if(nSdPage == mnSdPageCount-1 || mnSdPageCount == 1)
    2581                 :            :         {
    2582 [ #  # ][ #  # ]:          0 :             aStrNavNext    = CreateImage(GetButtonName(BTN_NEXT_0), aStrNavNext);
         [ #  # ][ #  # ]
                 [ #  # ]
    2583 [ #  # ][ #  # ]:          0 :             aStrNavLast    = CreateImage(GetButtonName(BTN_LAST_0), aStrNavLast);
         [ #  # ][ #  # ]
                 [ #  # ]
    2584                 :            :         }
    2585                 :            :         else
    2586                 :            :         {
    2587 [ #  # ][ #  # ]:          0 :             aStrNavNext    = CreateImage(GetButtonName(BTN_NEXT_1), aStrNavNext);
         [ #  # ][ #  # ]
                 [ #  # ]
    2588 [ #  # ][ #  # ]:          0 :             aStrNavLast    = CreateImage(GetButtonName(BTN_LAST_1), aStrNavLast);
         [ #  # ][ #  # ]
                 [ #  # ]
    2589                 :            :         }
    2590                 :            : 
    2591 [ #  # ][ #  # ]:          0 :         aStrNavContent = CreateImage(GetButtonName(BTN_INDEX), aStrNavContent);
         [ #  # ][ #  # ]
                 [ #  # ]
    2592 [ #  # ][ #  # ]:          0 :         aStrNavText    = CreateImage(GetButtonName(BTN_TEXT), aStrNavText);
         [ #  # ][ #  # ]
                 [ #  # ]
    2593                 :            :     }
    2594                 :            : 
    2595         [ #  # ]:          0 :     String aStr( RTL_CONSTASCII_USTRINGPARAM("<center>\r\n")); //<table><tr>\r\n");
    2596                 :            : 
    2597                 :            :     // erste Seite
    2598         [ #  # ]:          0 :     if(nSdPage > 0)
    2599 [ #  # ][ #  # ]:          0 :         aStr += CreateLink(bIsText?*mpTextFiles[0]:*mpHTMLFiles[0],aStrNavFirst);
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
    2600                 :            :     else
    2601         [ #  # ]:          0 :         aStr += aStrNavFirst;
    2602         [ #  # ]:          0 :     aStr.Append(sal_Unicode(' '));
    2603                 :            : 
    2604                 :            :     // to Previous page
    2605         [ #  # ]:          0 :     if(nSdPage > 0)
    2606                 :          0 :         aStr += CreateLink( bIsText?*mpTextFiles[nSdPage-1]:
    2607 [ #  # ][ #  # ]:          0 :                                     *mpHTMLFiles[nSdPage-1],    aStrNavPrev);
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
    2608                 :            :     else
    2609         [ #  # ]:          0 :         aStr += aStrNavPrev;
    2610         [ #  # ]:          0 :     aStr.Append(sal_Unicode(' '));
    2611                 :            : 
    2612                 :            :     // to Next page
    2613         [ #  # ]:          0 :     if(nSdPage < mnSdPageCount-1)
    2614                 :          0 :         aStr += CreateLink( bIsText?*mpTextFiles[nSdPage+1]:
    2615 [ #  # ][ #  # ]:          0 :                                     *mpHTMLFiles[nSdPage+1], aStrNavNext);
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
    2616                 :            :     else
    2617         [ #  # ]:          0 :         aStr += aStrNavNext;
    2618         [ #  # ]:          0 :     aStr.Append(sal_Unicode(' '));
    2619                 :            : 
    2620                 :            :     // to Last page
    2621         [ #  # ]:          0 :     if(nSdPage < mnSdPageCount-1)
    2622                 :          0 :         aStr += CreateLink( bIsText?*mpTextFiles[mnSdPageCount-1]:
    2623                 :          0 :                                     *mpHTMLFiles[mnSdPageCount-1],
    2624 [ #  # ][ #  # ]:          0 :                                     aStrNavLast );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
    2625                 :            :     else
    2626         [ #  # ]:          0 :         aStr += aStrNavLast;
    2627         [ #  # ]:          0 :     aStr.Append(sal_Unicode(' '));
    2628                 :            : 
    2629                 :            :     // to Index page
    2630         [ #  # ]:          0 :     if (mbContentsPage)
    2631                 :            :     {
    2632 [ #  # ][ #  # ]:          0 :         aStr += CreateLink(maIndex, aStrNavContent);
         [ #  # ][ #  # ]
                 [ #  # ]
    2633         [ #  # ]:          0 :         aStr.Append(sal_Unicode(' '));
    2634                 :            :     }
    2635                 :            : 
    2636                 :            :     // Text/Graphics
    2637         [ #  # ]:          0 :     if(mbImpress)
    2638                 :            :     {
    2639                 :          0 :         aStr += CreateLink( bIsText?(mbFrames?maFramePage:*mpHTMLFiles[nSdPage]):
    2640 [ #  # ][ #  # ]:          0 :                                     *mpTextFiles[nSdPage], aStrNavText);
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
    2641                 :            : 
    2642                 :            :     }
    2643                 :            : 
    2644         [ #  # ]:          0 :     aStr.AppendAscii( "</center><br>\r\n" );
    2645                 :            : 
    2646 [ #  # ][ #  # ]:          0 :     return aStr;
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
    2647                 :            : }
    2648                 :            : 
    2649                 :            : /** export navigation graphics from button set */
    2650                 :          0 : bool HtmlExport::CreateBitmaps()
    2651                 :            : {
    2652 [ #  # ][ #  # ]:          0 :     if(mnButtonThema != -1 && mpButtonSet.get() )
                 [ #  # ]
    2653                 :            :     {
    2654         [ #  # ]:          0 :         for( int nButton = 0; nButton < NUM_BUTTONS; nButton++ )
    2655                 :            :         {
    2656 [ #  # ][ #  # ]:          0 :             if(!mbFrames && (nButton == BTN_MORE || nButton == BTN_LESS))
                 [ #  # ]
    2657                 :          0 :                 continue;
    2658                 :            : 
    2659 [ #  # ][ #  # ]:          0 :             if(!mbImpress && (nButton == BTN_TEXT || nButton == BTN_MORE || nButton == BTN_LESS ))
         [ #  # ][ #  # ]
    2660                 :          0 :                 continue;
    2661                 :            : 
    2662         [ #  # ]:          0 :             OUString aFull(maExportPath);
    2663 [ #  # ][ #  # ]:          0 :             aFull += GetButtonName(nButton);
                 [ #  # ]
    2664 [ #  # ][ #  # ]:          0 :             mpButtonSet->exportButton( mnButtonThema, aFull, GetButtonName(nButton) );
         [ #  # ][ #  # ]
    2665                 :          0 :         }
    2666                 :            :     }
    2667                 :          0 :     return true;
    2668                 :            : }
    2669                 :            : 
    2670                 :            : // =====================================================================
    2671                 :            : // Erzeugt den <body> Tag, inkl. der eingestellten Farbattribute
    2672                 :            : // =====================================================================
    2673                 :          0 : String HtmlExport::CreateBodyTag() const
    2674                 :            : {
    2675                 :          0 :     String aStr( RTL_CONSTASCII_USTRINGPARAM("<body") );
    2676                 :            : 
    2677 [ #  # ][ #  # ]:          0 :     if( mbUserAttr || mbDocColors )
    2678                 :            :     {
    2679                 :          0 :         Color aTextColor( maTextColor );
    2680 [ #  # ][ #  # ]:          0 :         if( (aTextColor == COL_AUTO) && (!maBackColor.IsDark()) )
         [ #  # ][ #  # ]
           [ #  #  #  # ]
    2681                 :          0 :             aTextColor = COL_BLACK;
    2682                 :            : 
    2683         [ #  # ]:          0 :         aStr.AppendAscii( " text=\"" );
    2684 [ #  # ][ #  # ]:          0 :         aStr += ColorToHTMLString( aTextColor );
                 [ #  # ]
    2685         [ #  # ]:          0 :         aStr.AppendAscii( "\" bgcolor=\"" );
    2686 [ #  # ][ #  # ]:          0 :         aStr += ColorToHTMLString( maBackColor );
                 [ #  # ]
    2687         [ #  # ]:          0 :         aStr.AppendAscii( "\" link=\"" );
    2688 [ #  # ][ #  # ]:          0 :         aStr += ColorToHTMLString( maLinkColor );
                 [ #  # ]
    2689         [ #  # ]:          0 :         aStr.AppendAscii( "\" vlink=\"" );
    2690 [ #  # ][ #  # ]:          0 :         aStr += ColorToHTMLString( maVLinkColor );
                 [ #  # ]
    2691         [ #  # ]:          0 :         aStr.AppendAscii( "\" alink=\"" );
    2692 [ #  # ][ #  # ]:          0 :         aStr += ColorToHTMLString( maALinkColor );
                 [ #  # ]
    2693         [ #  # ]:          0 :         aStr.AppendAscii( "\"" );
    2694                 :            :     }
    2695                 :            : 
    2696         [ #  # ]:          0 :     aStr.AppendAscii( ">\r\n" );
    2697                 :            : 
    2698                 :          0 :     return aStr;
    2699                 :            : }
    2700                 :            : 
    2701                 :            : // =====================================================================
    2702                 :            : // Erzeugt einen Hyperlink
    2703                 :            : // =====================================================================
    2704                 :          0 : String HtmlExport::CreateLink( const String& aLink,
    2705                 :            :                                const String& aText,
    2706                 :            :                                const String& aTarget ) const
    2707                 :            : {
    2708                 :          0 :     String aStr( RTL_CONSTASCII_USTRINGPARAM("<a href=\""));
    2709 [ #  # ][ #  # ]:          0 :     aStr += StringToURL(aLink);
                 [ #  # ]
    2710         [ #  # ]:          0 :     if(aTarget.Len())
    2711                 :            :     {
    2712         [ #  # ]:          0 :         aStr.AppendAscii( "\" target=\"" );
    2713         [ #  # ]:          0 :         aStr += aTarget;
    2714                 :            :     }
    2715         [ #  # ]:          0 :     aStr.AppendAscii( "\">" );
    2716         [ #  # ]:          0 :     aStr += aText;
    2717         [ #  # ]:          0 :     aStr.AppendAscii( "</a>" );
    2718                 :            : 
    2719                 :          0 :     return aStr;
    2720                 :            : }
    2721                 :            : 
    2722                 :            : // =====================================================================
    2723                 :            : // Erzeugt ein Image-tag
    2724                 :            : // =====================================================================
    2725                 :          0 : String HtmlExport::CreateImage( const String& aImage, const String& aAltText,
    2726                 :            :                                 sal_Int16 nWidth,
    2727                 :            :                                 sal_Int16 nHeight ) const
    2728                 :            : {
    2729                 :          0 :     String aStr( RTL_CONSTASCII_USTRINGPARAM("<img src=\""));
    2730 [ #  # ][ #  # ]:          0 :     aStr += StringToURL(aImage);
                 [ #  # ]
    2731         [ #  # ]:          0 :     aStr.AppendAscii( "\" border=0" );
    2732                 :            : 
    2733         [ #  # ]:          0 :     if( aAltText.Len())
    2734                 :            :     {
    2735         [ #  # ]:          0 :         aStr.AppendAscii( " alt=\"" );
    2736         [ #  # ]:          0 :         aStr += aAltText;
    2737         [ #  # ]:          0 :         aStr.Append(sal_Unicode('"'));
    2738                 :            :     }
    2739                 :            :     else
    2740                 :            :     {
    2741                 :            :         // Agerskov: HTML 4.01 has to have an alt attribut even if it is an empty string
    2742         [ #  # ]:          0 :         aStr.AppendAscii( " alt=\"\"" );
    2743                 :            :      }
    2744                 :            : 
    2745         [ #  # ]:          0 :     if(nWidth > -1)
    2746                 :            :     {
    2747         [ #  # ]:          0 :         aStr.AppendAscii( " width=" );
    2748 [ #  # ][ #  # ]:          0 :         aStr += String::CreateFromInt32(nWidth);
                 [ #  # ]
    2749                 :            :     }
    2750                 :            : 
    2751         [ #  # ]:          0 :     if(nHeight > -1)
    2752                 :            :     {
    2753         [ #  # ]:          0 :         aStr.AppendAscii( " height=" );
    2754 [ #  # ][ #  # ]:          0 :         aStr += String::CreateFromInt32(nHeight);
                 [ #  # ]
    2755                 :            :     }
    2756                 :            : 
    2757         [ #  # ]:          0 :     aStr.Append(sal_Unicode('>'));
    2758                 :            : 
    2759                 :          0 :     return aStr;
    2760                 :            : }
    2761                 :            : 
    2762                 :            : // =====================================================================
    2763                 :            : // Area fuer Kreis erzeugen; es werden Pixelkoordinaten erwartet
    2764                 :            : // =====================================================================
    2765                 :          0 : String HtmlExport::ColorToHTMLString( Color aColor )
    2766                 :            : {
    2767                 :            :     static char hex[] = "0123456789ABCDEF";
    2768                 :          0 :     String aStr( RTL_CONSTASCII_USTRINGPARAM("#xxxxxx"));
    2769         [ #  # ]:          0 :     aStr.SetChar(1, hex[(aColor.GetRed() >> 4) & 0xf] );
    2770         [ #  # ]:          0 :     aStr.SetChar(2, hex[aColor.GetRed()   & 0xf] );
    2771         [ #  # ]:          0 :     aStr.SetChar(3, hex[(aColor.GetGreen() >> 4) & 0xf] );
    2772         [ #  # ]:          0 :     aStr.SetChar(4, hex[aColor.GetGreen() & 0xf] );
    2773         [ #  # ]:          0 :     aStr.SetChar(5, hex[(aColor.GetBlue() >> 4) & 0xf] );
    2774         [ #  # ]:          0 :     aStr.SetChar(6, hex[aColor.GetBlue()  & 0xf] );
    2775                 :            : 
    2776                 :          0 :     return aStr;
    2777                 :            : }
    2778                 :            : 
    2779                 :            : // =====================================================================
    2780                 :            : // Area fuer Kreis erzeugen; es werden Pixelkoordinaten erwartet
    2781                 :            : // =====================================================================
    2782                 :          0 : String HtmlExport::CreateHTMLCircleArea( sal_uLong nRadius,
    2783                 :            :                                          sal_uLong nCenterX,
    2784                 :            :                                          sal_uLong nCenterY,
    2785                 :            :                                          const String& rHRef ) const
    2786                 :            : {
    2787                 :          0 :     String aStr( RTL_CONSTASCII_USTRINGPARAM("<area shape=\"circle\" alt=\"\" coords=\"" ));
    2788                 :            : 
    2789 [ #  # ][ #  # ]:          0 :     aStr += String::CreateFromInt32(nCenterX);
                 [ #  # ]
    2790         [ #  # ]:          0 :     aStr.Append(sal_Unicode(','));
    2791 [ #  # ][ #  # ]:          0 :     aStr += String::CreateFromInt32(nCenterY);
                 [ #  # ]
    2792         [ #  # ]:          0 :     aStr.Append(sal_Unicode(','));
    2793 [ #  # ][ #  # ]:          0 :     aStr += String::CreateFromInt32(nRadius);
                 [ #  # ]
    2794         [ #  # ]:          0 :     aStr.AppendAscii( "\" href=\"" );
    2795 [ #  # ][ #  # ]:          0 :     aStr += StringToURL(rHRef);
                 [ #  # ]
    2796         [ #  # ]:          0 :     aStr.AppendAscii( "\">\n" );
    2797                 :            : 
    2798                 :          0 :     return aStr;
    2799                 :            : }
    2800                 :            : 
    2801                 :            : 
    2802                 :            : // =====================================================================
    2803                 :            : // Area fuer Polygon erzeugen; es werden Pixelkoordinaten erwartet
    2804                 :            : // =====================================================================
    2805                 :          0 : String HtmlExport::CreateHTMLPolygonArea( const ::basegfx::B2DPolyPolygon& rPolyPolygon,
    2806                 :            :     Size aShift, double fFactor, const String& rHRef ) const
    2807                 :            : {
    2808                 :          0 :     String          aStr;
    2809         [ #  # ]:          0 :     const sal_uInt32 nNoOfPolygons(rPolyPolygon.count());
    2810                 :            : 
    2811         [ #  # ]:          0 :     for ( sal_uInt32 nXPoly = 0L; nXPoly < nNoOfPolygons; nXPoly++ )
    2812                 :            :     {
    2813         [ #  # ]:          0 :         const ::basegfx::B2DPolygon& aPolygon = rPolyPolygon.getB2DPolygon(nXPoly);
    2814         [ #  # ]:          0 :         const sal_uInt32 nNoOfPoints(aPolygon.count());
    2815                 :            : 
    2816         [ #  # ]:          0 :         aStr.AppendAscii( "<area shape=\"polygon\" alt=\"\" coords=\"" );
    2817                 :            : 
    2818         [ #  # ]:          0 :         for ( sal_uInt32 nPoint = 0L; nPoint < nNoOfPoints; nPoint++ )
    2819                 :            :         {
    2820         [ #  # ]:          0 :             const ::basegfx::B2DPoint aB2DPoint(aPolygon.getB2DPoint(nPoint));
    2821                 :          0 :             Point aPnt(FRound(aB2DPoint.getX()), FRound(aB2DPoint.getY()));
    2822                 :            :             // das Koordinaten beziehen sich auf den
    2823                 :            :             // physikalischen Seitenursprung, nicht auf den
    2824                 :            :             // Koordinatenursprung
    2825                 :          0 :             aPnt.Move(aShift.Width(), aShift.Height());
    2826                 :            : 
    2827                 :          0 :             aPnt.X() = (long)(aPnt.X() * fFactor);
    2828                 :          0 :             aPnt.Y() = (long)(aPnt.Y() * fFactor);
    2829 [ #  # ][ #  # ]:          0 :             aStr += String::CreateFromInt32(aPnt.X());
                 [ #  # ]
    2830         [ #  # ]:          0 :             aStr.Append(sal_Unicode(','));
    2831 [ #  # ][ #  # ]:          0 :             aStr += String::CreateFromInt32(aPnt.Y());
                 [ #  # ]
    2832                 :            : 
    2833         [ #  # ]:          0 :             if (nPoint < nNoOfPoints - 1)
    2834         [ #  # ]:          0 :                 aStr.Append( sal_Unicode(',') );
    2835                 :          0 :         }
    2836         [ #  # ]:          0 :         aStr.AppendAscii( "\" href=\"" );
    2837 [ #  # ][ #  # ]:          0 :         aStr += StringToURL(rHRef);
                 [ #  # ]
    2838         [ #  # ]:          0 :         aStr.AppendAscii( "\">\n" );
    2839         [ #  # ]:          0 :     }
    2840                 :            : 
    2841                 :          0 :     return aStr;
    2842                 :            : }
    2843                 :            : 
    2844                 :            : // =====================================================================
    2845                 :            : // Area fuer Rechteck erzeugen; es werden Pixelkoordinaten erwartet
    2846                 :            : // =====================================================================
    2847                 :          0 : String HtmlExport::CreateHTMLRectArea( const Rectangle& rRect,
    2848                 :            :                                        const String& rHRef ) const
    2849                 :            : {
    2850                 :          0 :     String aStr( RTL_CONSTASCII_USTRINGPARAM("<area shape=\"rect\" alt=\"\" coords=\"") );
    2851                 :            : 
    2852 [ #  # ][ #  # ]:          0 :     aStr += String::CreateFromInt32(rRect.Left());
                 [ #  # ]
    2853         [ #  # ]:          0 :     aStr.Append(sal_Unicode(','));
    2854 [ #  # ][ #  # ]:          0 :     aStr += String::CreateFromInt32(rRect.Top());
                 [ #  # ]
    2855         [ #  # ]:          0 :     aStr.Append(sal_Unicode(','));
    2856 [ #  # ][ #  # ]:          0 :     aStr += String::CreateFromInt32(rRect.Right());
                 [ #  # ]
    2857         [ #  # ]:          0 :     aStr.Append(sal_Unicode(','));
    2858 [ #  # ][ #  # ]:          0 :     aStr += String::CreateFromInt32(rRect.Bottom());
                 [ #  # ]
    2859         [ #  # ]:          0 :     aStr.AppendAscii( "\" href=\"" );
    2860 [ #  # ][ #  # ]:          0 :     aStr += StringToURL(rHRef);
                 [ #  # ]
    2861         [ #  # ]:          0 :     aStr.AppendAscii( "\">\n" );
    2862                 :            : 
    2863                 :          0 :     return aStr;
    2864                 :            : }
    2865                 :            : 
    2866                 :            : // =====================================================================
    2867                 :            : // StringToHTMLString, konvertiert einen String in
    2868                 :            : // seine HTML-Repraesentation (Umlaute etc.)
    2869                 :            : // =====================================================================
    2870                 :          0 : String HtmlExport::StringToHTMLString( const String& rString )
    2871                 :            : {
    2872         [ #  # ]:          0 :     SvMemoryStream aMemStm;
    2873         [ #  # ]:          0 :     HTMLOutFuncs::Out_String( aMemStm, rString, RTL_TEXTENCODING_UTF8 );
    2874         [ #  # ]:          0 :     aMemStm << (char) 0;
    2875 [ #  # ][ #  # ]:          0 :     return String( (char*)aMemStm.GetData(), RTL_TEXTENCODING_UTF8 );
                 [ #  # ]
    2876                 :            : }
    2877                 :            : 
    2878                 :            : // =====================================================================
    2879                 :            : // Erzeugt die URL einer bestimmten Seite
    2880                 :            : // =====================================================================
    2881                 :          0 : String HtmlExport::CreatePageURL( sal_uInt16 nPgNum )
    2882                 :            : {
    2883         [ #  # ]:          0 :     if(mbFrames)
    2884                 :            :     {
    2885         [ #  # ]:          0 :         String aUrl( RTL_CONSTASCII_USTRINGPARAM("JavaScript:parent.NavigateAbs("));
    2886 [ #  # ][ #  # ]:          0 :         aUrl += String::CreateFromInt32(nPgNum);
                 [ #  # ]
    2887         [ #  # ]:          0 :         aUrl.Append(sal_Unicode(')'));
    2888 [ #  # ][ #  # ]:          0 :         return aUrl;
    2889                 :            :     }
    2890                 :            :     else
    2891                 :          0 :         return *mpHTMLFiles[nPgNum];
    2892                 :            : }
    2893                 :            : 
    2894                 :          0 : bool HtmlExport::CopyScript( const String& rPath, const String& rSource, const String& rDest, bool bUnix /* = false */ )
    2895                 :            : {
    2896 [ #  # ][ #  # ]:          0 :     INetURLObject   aURL( SvtPathOptions().GetConfigPath() );
         [ #  # ][ #  # ]
                 [ #  # ]
    2897         [ #  # ]:          0 :     String      aScript;
    2898                 :            : 
    2899         [ #  # ]:          0 :     aURL.Append( rtl::OUString("webcast") );
    2900 [ #  # ][ #  # ]:          0 :     aURL.Append( rSource );
    2901                 :            : 
    2902         [ #  # ]:          0 :     meEC.SetContext( STR_HTMLEXP_ERROR_OPEN_FILE, rSource );
    2903                 :            : 
    2904                 :          0 :     sal_uLong       nErr = 0;
    2905 [ #  # ][ #  # ]:          0 :     SvStream*   pIStm = ::utl::UcbStreamHelper::CreateStream( aURL.GetMainURL( INetURLObject::NO_DECODE ), STREAM_READ );
         [ #  # ][ #  # ]
    2906                 :            : 
    2907         [ #  # ]:          0 :     if( pIStm )
    2908                 :            :     {
    2909                 :          0 :         rtl::OString aLine;
    2910                 :            : 
    2911 [ #  # ][ #  # ]:          0 :         while( pIStm->ReadLine( aLine ) )
    2912                 :            :         {
    2913         [ #  # ]:          0 :             aScript.AppendAscii( aLine.getStr() );
    2914         [ #  # ]:          0 :             if( bUnix )
    2915                 :            :             {
    2916         [ #  # ]:          0 :                 aScript.AppendAscii( "\n" );
    2917                 :            :             }
    2918                 :            :             else
    2919                 :            :             {
    2920         [ #  # ]:          0 :                 aScript.AppendAscii( "\r\n" );
    2921                 :            :             }
    2922                 :            :         }
    2923                 :            : 
    2924                 :          0 :         nErr = pIStm->GetError();
    2925 [ #  # ][ #  # ]:          0 :         delete pIStm;
    2926                 :            :     }
    2927                 :            : 
    2928         [ #  # ]:          0 :     if( nErr != 0 )
    2929                 :            :     {
    2930         [ #  # ]:          0 :         ErrorHandler::HandleError( nErr );
    2931                 :          0 :         return (bool) nErr;
    2932                 :            :     }
    2933                 :            : 
    2934                 :            : 
    2935 [ #  # ][ #  # ]:          0 :     aScript.SearchAndReplaceAll( String(RTL_CONSTASCII_USTRINGPARAM("$$1")), getDocumentTitle() );
         [ #  # ][ #  # ]
                 [ #  # ]
    2936                 :            : 
    2937 [ #  # ][ #  # ]:          0 :     const String aSaveStr( RESTOHTML( STR_WEBVIEW_SAVE ));
         [ #  # ][ #  # ]
    2938 [ #  # ][ #  # ]:          0 :     aScript.SearchAndReplaceAll( String(RTL_CONSTASCII_USTRINGPARAM("$$2")), aSaveStr );
                 [ #  # ]
    2939                 :            : 
    2940 [ #  # ][ #  # ]:          0 :     aScript.SearchAndReplaceAll( String(RTL_CONSTASCII_USTRINGPARAM("$$3")), maCGIPath );
                 [ #  # ]
    2941                 :            : 
    2942 [ #  # ][ #  # ]:          0 :     aScript.SearchAndReplaceAll( String(RTL_CONSTASCII_USTRINGPARAM("$$4")), String::CreateFromInt32(mnWidthPixel) );
         [ #  # ][ #  # ]
                 [ #  # ]
    2943 [ #  # ][ #  # ]:          0 :     aScript.SearchAndReplaceAll( String(RTL_CONSTASCII_USTRINGPARAM("$$5")), String::CreateFromInt32(mnHeightPixel) );
         [ #  # ][ #  # ]
                 [ #  # ]
    2944                 :            : 
    2945                 :            : 
    2946         [ #  # ]:          0 :     String aDest( rPath );
    2947         [ #  # ]:          0 :     aDest += rDest;
    2948                 :            : 
    2949         [ #  # ]:          0 :     meEC.SetContext( STR_HTMLEXP_ERROR_CREATE_FILE, rDest );
    2950                 :            :     // write script file
    2951                 :            :     {
    2952                 :          0 :         EasyFile aFile;
    2953                 :            :         SvStream* pStr;
    2954         [ #  # ]:          0 :         nErr = aFile.createStream(aDest, pStr);
    2955         [ #  # ]:          0 :         if(nErr == 0)
    2956                 :            :         {
    2957                 :            :             rtl::OString aStr(rtl::OUStringToOString(aScript,
    2958 [ #  # ][ #  # ]:          0 :                 RTL_TEXTENCODING_UTF8));
    2959         [ #  # ]:          0 :             *pStr << aStr.getStr();
    2960                 :            : 
    2961         [ #  # ]:          0 :             nErr = aFile.close();
    2962         [ #  # ]:          0 :         }
    2963                 :            :     }
    2964                 :            : 
    2965         [ #  # ]:          0 :     if (mpProgress)
    2966         [ #  # ]:          0 :         mpProgress->SetState(++mnPagesWritten);
    2967                 :            : 
    2968         [ #  # ]:          0 :     if( nErr != 0 )
    2969         [ #  # ]:          0 :         ErrorHandler::HandleError( nErr );
    2970                 :            : 
    2971 [ #  # ][ #  # ]:          0 :     return nErr == 0;
         [ #  # ][ #  # ]
    2972                 :            : }
    2973                 :            : 
    2974                 :            : static const char * ASP_Scripts[] = { "common.inc", "webcast.asp", "show.asp", "savepic.asp", "poll.asp", "editpic.asp" };
    2975                 :            : 
    2976                 :            : /** erzeugt und speichert die f�r WebShow ben�tigte ASP Scripte */
    2977                 :          0 : bool HtmlExport::CreateASPScripts()
    2978                 :            : {
    2979         [ #  # ]:          0 :     for( sal_uInt16 n = 0; n < (sizeof( ASP_Scripts ) / sizeof(char *)); n++ )
    2980                 :            :     {
    2981         [ #  # ]:          0 :         String aScript;
    2982                 :            : 
    2983         [ #  # ]:          0 :         aScript.AssignAscii( ASP_Scripts[n] );
    2984 [ #  # ][ #  # ]:          0 :         if(!CopyScript(maExportPath, aScript, aScript))
    2985                 :          0 :             return false;
    2986 [ #  # ][ #  # ]:          0 :     }
    2987                 :            : 
    2988 [ #  # ][ #  # ]:          0 :     if(!CopyScript(maExportPath, String(RTL_CONSTASCII_USTRINGPARAM("edit.asp")), maIndex ))
    2989                 :          0 :         return false;
    2990                 :            : 
    2991                 :          0 :     return true;
    2992                 :            : }
    2993                 :            : 
    2994                 :            : 
    2995                 :            : static const char *PERL_Scripts[] = { "webcast.pl", "common.pl", "editpic.pl", "poll.pl", "savepic.pl", "show.pl" };
    2996                 :            : 
    2997                 :            : /** erzeugt und speichert die f�r WebShow ben�tigte PERL Scripte */
    2998                 :          0 : bool HtmlExport::CreatePERLScripts()
    2999                 :            : {
    3000         [ #  # ]:          0 :     for( sal_uInt16 n = 0; n < (sizeof( PERL_Scripts ) / sizeof(char *)); n++ )
    3001                 :            :     {
    3002         [ #  # ]:          0 :         String aScript;
    3003         [ #  # ]:          0 :         aScript.AssignAscii( PERL_Scripts[n] );
    3004 [ #  # ][ #  # ]:          0 :         if(!CopyScript(maExportPath, aScript, aScript, true))
    3005                 :          0 :             return false;
    3006 [ #  # ][ #  # ]:          0 :     }
    3007                 :            : 
    3008 [ #  # ][ #  # ]:          0 :     if(!CopyScript(maExportPath, rtl::OUString("edit.pl"), maIndex, true ))
         [ #  # ][ #  # ]
    3009                 :          0 :         return false;
    3010                 :            : 
    3011 [ #  # ][ #  # ]:          0 :     if(!CopyScript(maExportPath, rtl::OUString("index.pl"), maIndexUrl, true ))
         [ #  # ][ #  # ]
    3012                 :          0 :         return false;
    3013                 :            : 
    3014                 :          0 :     return true;
    3015                 :            : }
    3016                 :            : 
    3017                 :            : /** Erzeugt eine Liste mit den Namen der gespeicherten Images */
    3018                 :          0 : bool HtmlExport::CreateImageFileList()
    3019                 :            : {
    3020         [ #  # ]:          0 :     String aStr;
    3021         [ #  # ]:          0 :     for( sal_uInt16 nSdPage = 0; nSdPage < mnSdPageCount; nSdPage++)
    3022                 :            :     {
    3023 [ #  # ][ #  # ]:          0 :         aStr += String::CreateFromInt32( nSdPage + 1 );
                 [ #  # ]
    3024         [ #  # ]:          0 :         aStr.Append(sal_Unicode(';'));
    3025         [ #  # ]:          0 :         aStr += maURLPath;
    3026         [ #  # ]:          0 :         aStr += *mpImageFiles[nSdPage];
    3027         [ #  # ]:          0 :         aStr.AppendAscii( "\r\n" );
    3028                 :            :     }
    3029                 :            : 
    3030         [ #  # ]:          0 :     String aFileName( RTL_CONSTASCII_USTRINGPARAM("picture.txt") );
    3031         [ #  # ]:          0 :     bool bOk = WriteHtml( aFileName, false, aStr );
    3032                 :            : 
    3033         [ #  # ]:          0 :     if (mpProgress)
    3034         [ #  # ]:          0 :         mpProgress->SetState(++mnPagesWritten);
    3035                 :            : 
    3036 [ #  # ][ #  # ]:          0 :     return bOk;
    3037                 :            : }
    3038                 :            : 
    3039                 :            : /** Erzeugt das File mit der aktuellen Seitennumer */
    3040                 :          0 : bool HtmlExport::CreateImageNumberFile()
    3041                 :            : {
    3042         [ #  # ]:          0 :     String aFull( maExportPath );
    3043         [ #  # ]:          0 :     String aFileName( RTL_CONSTASCII_USTRINGPARAM("currpic.txt") );
    3044         [ #  # ]:          0 :     aFull += aFileName;
    3045                 :            : 
    3046         [ #  # ]:          0 :     meEC.SetContext( STR_HTMLEXP_ERROR_CREATE_FILE, aFileName );
    3047                 :          0 :     EasyFile aFile;
    3048                 :            :     SvStream* pStr;
    3049         [ #  # ]:          0 :     sal_uLong nErr = aFile.createStream(aFull, pStr);
    3050         [ #  # ]:          0 :     if(nErr == 0)
    3051                 :            :     {
    3052         [ #  # ]:          0 :         *pStr << (const char *)"1";
    3053         [ #  # ]:          0 :         nErr = aFile.close();
    3054                 :            :     }
    3055                 :            : 
    3056         [ #  # ]:          0 :     if (mpProgress)
    3057         [ #  # ]:          0 :         mpProgress->SetState(++mnPagesWritten);
    3058                 :            : 
    3059         [ #  # ]:          0 :     if( nErr != 0 )
    3060         [ #  # ]:          0 :         ErrorHandler::HandleError( nErr );
    3061                 :            : 
    3062 [ #  # ][ #  # ]:          0 :     return nErr == 0;
                 [ #  # ]
    3063                 :            : }
    3064                 :            : 
    3065                 :            : // =====================================================================
    3066                 :            : 
    3067                 :          0 : String HtmlExport::InsertSound( const String& rSoundFile )
    3068                 :            : {
    3069         [ #  # ]:          0 :     if( rSoundFile.Len() == 0 )
    3070         [ #  # ]:          0 :         return rSoundFile;
    3071                 :            : 
    3072         [ #  # ]:          0 :     String      aStr( RTL_CONSTASCII_USTRINGPARAM("<embed src=\"") );
    3073 [ #  # ][ #  # ]:          0 :     INetURLObject   aURL( rSoundFile );
    3074                 :            : 
    3075                 :            :     DBG_ASSERT( aURL.GetProtocol() != INET_PROT_NOT_VALID, "invalid URL" );
    3076                 :            : 
    3077 [ #  # ][ #  # ]:          0 :     aStr += String(aURL.getName());
         [ #  # ][ #  # ]
    3078         [ #  # ]:          0 :     aStr.AppendAscii( "\" hidden=\"true\" autostart=\"true\">" );
    3079                 :            : 
    3080         [ #  # ]:          0 :     CopyFile( rSoundFile, maExportPath );
    3081                 :            : 
    3082 [ #  # ][ #  # ]:          0 :     return aStr;
                 [ #  # ]
    3083                 :            : }
    3084                 :            : 
    3085                 :            : // =====================================================================
    3086                 :            : 
    3087                 :          0 : bool HtmlExport::CopyFile( const String& rSourceFile, const String& rDestPath )
    3088                 :            : {
    3089         [ #  # ]:          0 :     DirEntry aSourceEntry( rSourceFile );
    3090         [ #  # ]:          0 :     DirEntry aDestEntry( rDestPath );
    3091                 :            : 
    3092 [ #  # ][ #  # ]:          0 :     meEC.SetContext( STR_HTMLEXP_ERROR_COPY_FILE, aSourceEntry.GetName(), rDestPath );
                 [ #  # ]
    3093         [ #  # ]:          0 :     FSysError nError = aSourceEntry.CopyTo( aDestEntry, FSYS_ACTION_COPYFILE );
    3094                 :            : 
    3095         [ #  # ]:          0 :     if( nError != FSYS_ERR_OK )
    3096                 :            :     {
    3097         [ #  # ]:          0 :         ErrorHandler::HandleError(nError);
    3098                 :          0 :         return false;
    3099                 :            :     }
    3100                 :            :     else
    3101                 :            :     {
    3102                 :          0 :         return true;
    3103 [ #  # ][ #  # ]:          0 :     }
    3104                 :            : }
    3105                 :            : 
    3106                 :            : // =====================================================================
    3107                 :            : 
    3108                 :          0 : bool HtmlExport::checkFileExists( Reference< ::com::sun::star::ucb::XSimpleFileAccess2 >& xFileAccess, String const & aFileName )
    3109                 :            : {
    3110                 :            :     try
    3111                 :            :     {
    3112         [ #  # ]:          0 :         OUString url( maExportPath );
    3113         [ #  # ]:          0 :         url += aFileName;
    3114 [ #  # ][ #  # ]:          0 :         return xFileAccess->exists( url );
                 [ #  # ]
    3115                 :            :     }
    3116                 :          0 :     catch( com::sun::star::uno::Exception& )
    3117                 :            :     {
    3118                 :            :         OSL_FAIL((OString("sd::HtmlExport::checkFileExists(), exception caught: ") +
    3119                 :            :              rtl::OUStringToOString( comphelper::anyToString( cppu::getCaughtException() ), RTL_TEXTENCODING_UTF8 )).getStr() );
    3120                 :            :     }
    3121                 :            : 
    3122                 :          0 :     return false;
    3123                 :            : }
    3124                 :            : 
    3125                 :            : // ---------------------------------------------------------------------
    3126                 :            : 
    3127                 :          0 : bool HtmlExport::checkForExistingFiles()
    3128                 :            : {
    3129                 :          0 :     bool bFound = false;
    3130                 :            : 
    3131                 :            :     try
    3132                 :            :     {
    3133         [ #  # ]:          0 :         Reference< XComponentContext > xContext( ::comphelper::getProcessComponentContext() );
    3134         [ #  # ]:          0 :         uno::Reference<ucb::XSimpleFileAccess2> xFA(ucb::SimpleFileAccess::create(xContext));
    3135                 :            : 
    3136                 :            :         sal_uInt16 nSdPage;
    3137 [ #  # ][ #  # ]:          0 :         for( nSdPage = 0; !bFound && (nSdPage < mnSdPageCount); nSdPage++)
                 [ #  # ]
    3138                 :            :         {
    3139 [ #  # ][ #  # ]:          0 :             if( (mpImageFiles[nSdPage] && checkFileExists( xFA, *mpImageFiles[nSdPage] )) ||
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
    3140         [ #  # ]:          0 :                 (mpHTMLFiles[nSdPage] && checkFileExists( xFA, *mpHTMLFiles[nSdPage] )) ||
    3141         [ #  # ]:          0 :                 (mpThumbnailFiles[nSdPage] && checkFileExists( xFA, *mpThumbnailFiles[nSdPage] )) ||
    3142         [ #  # ]:          0 :                 (mpPageNames[nSdPage] && checkFileExists( xFA, *mpPageNames[nSdPage] )) ||
    3143         [ #  # ]:          0 :                 (mpTextFiles[nSdPage] && checkFileExists( xFA, *mpTextFiles[nSdPage] )) )
    3144                 :            :             {
    3145                 :          0 :                 bFound = true;
    3146                 :            :             }
    3147                 :            :         }
    3148                 :            : 
    3149 [ #  # ][ #  # ]:          0 :         if( !bFound && mbDownload )
    3150         [ #  # ]:          0 :             bFound = checkFileExists( xFA, maDocFileName );
    3151                 :            : 
    3152 [ #  # ][ #  # ]:          0 :         if( !bFound && mbFrames )
    3153         [ #  # ]:          0 :             bFound = checkFileExists( xFA, maFramePage );
    3154                 :            : 
    3155         [ #  # ]:          0 :         if( bFound )
    3156                 :            :         {
    3157         [ #  # ]:          0 :             ResMgr *pResMgr = CREATERESMGR( dbw );
    3158         [ #  # ]:          0 :             if( pResMgr )
    3159                 :            :             {
    3160                 :          0 :                 ResId aResId( 4077, *pResMgr );
    3161         [ #  # ]:          0 :                 String aMsg( aResId );
    3162                 :            : 
    3163                 :          0 :                 OUString aSystemPath;
    3164 [ #  # ][ #  # ]:          0 :                 osl::FileBase::getSystemPathFromFileURL( maExportPath, aSystemPath );
    3165 [ #  # ][ #  # ]:          0 :                 aMsg.SearchAndReplaceAscii( "%FILENAME", aSystemPath );
                 [ #  # ]
    3166         [ #  # ]:          0 :                 WarningBox aWarning( 0, WB_YES_NO | WB_DEF_YES, aMsg );
    3167 [ #  # ][ #  # ]:          0 :                 aWarning.SetImage( WarningBox::GetStandardImage() );
                 [ #  # ]
    3168         [ #  # ]:          0 :                 bFound = ( RET_NO == aWarning.Execute() );
    3169                 :            : 
    3170 [ #  # ][ #  # ]:          0 :                 delete pResMgr;
         [ #  # ][ #  # ]
    3171                 :            :             }
    3172                 :            :             else
    3173                 :            :             {
    3174                 :          0 :                 bFound = false;
    3175                 :            :             }
    3176         [ #  # ]:          0 :         }
    3177                 :            :     }
    3178                 :          0 :     catch( Exception& )
    3179                 :            :     {
    3180                 :            :         OSL_FAIL((OString("sd::HtmlExport::checkForExistingFiles(), exception caught: ") +
    3181                 :            :              rtl::OUStringToOString( comphelper::anyToString( cppu::getCaughtException() ), RTL_TEXTENCODING_UTF8 )).getStr() );
    3182                 :          0 :         bFound = false;
    3183                 :            :     }
    3184                 :            : 
    3185                 :          0 :     return bFound;
    3186                 :            : }
    3187                 :            : 
    3188                 :            : // ---------------------------------------------------------------------
    3189                 :            : 
    3190                 :          0 : String HtmlExport::StringToURL( const String& rURL )
    3191                 :            : {
    3192                 :          0 :     return rURL;
    3193                 :            : }
    3194                 :            : 
    3195                 :          0 : String HtmlExport::GetButtonName( int nButton ) const
    3196                 :            : {
    3197                 :          0 :     String aName;
    3198         [ #  # ]:          0 :     aName.AssignAscii( pButtonNames[nButton] );
    3199                 :          0 :     return aName;
    3200                 :            : }
    3201                 :            : 
    3202                 :            : // =====================================================================
    3203                 :          0 : EasyFile::EasyFile()
    3204                 :            : {
    3205                 :          0 :     pMedium = NULL;
    3206                 :          0 :     pOStm = NULL;
    3207                 :          0 :     bOpen = false;
    3208                 :          0 : }
    3209                 :            : 
    3210                 :            : // =====================================================================
    3211                 :          0 : EasyFile::~EasyFile()
    3212                 :            : {
    3213         [ #  # ]:          0 :     if( bOpen )
    3214                 :          0 :         close();
    3215                 :          0 : }
    3216                 :            : 
    3217                 :            : // =====================================================================
    3218                 :          0 : sal_uLong EasyFile::createStream(  const String& rUrl, SvStream* &rpStr )
    3219                 :            : {
    3220                 :          0 :     sal_uLong nErr = 0;
    3221                 :            : 
    3222         [ #  # ]:          0 :     if(bOpen)
    3223         [ #  # ]:          0 :         nErr = close();
    3224                 :            : 
    3225         [ #  # ]:          0 :     String aFileName;
    3226                 :            : 
    3227         [ #  # ]:          0 :     if( nErr == 0 )
    3228         [ #  # ]:          0 :         nErr = createFileName( rUrl, aFileName );
    3229                 :            : 
    3230         [ #  # ]:          0 :     if( nErr == 0 )
    3231                 :            :     {
    3232         [ #  # ]:          0 :         pOStm = ::utl::UcbStreamHelper::CreateStream( aFileName, STREAM_WRITE | STREAM_TRUNC );
    3233         [ #  # ]:          0 :         if( pOStm )
    3234                 :            :         {
    3235                 :          0 :             bOpen = true;
    3236                 :          0 :             nErr = pOStm->GetError();
    3237                 :            :         }
    3238                 :            :         else
    3239                 :            :         {
    3240                 :          0 :             nErr = ERRCODE_SFX_CANTCREATECONTENT;
    3241                 :            :         }
    3242                 :            :     }
    3243                 :            : 
    3244         [ #  # ]:          0 :     if( nErr != 0 )
    3245                 :            :     {
    3246                 :          0 :         bOpen = false;
    3247 [ #  # ][ #  # ]:          0 :         delete pMedium;
    3248 [ #  # ][ #  # ]:          0 :         delete pOStm;
    3249                 :          0 :         pOStm = NULL;
    3250                 :            :     }
    3251                 :            : 
    3252                 :          0 :     rpStr = pOStm;
    3253                 :            : 
    3254         [ #  # ]:          0 :     return nErr;
    3255                 :            : }
    3256                 :            : 
    3257                 :            : // =====================================================================
    3258                 :          0 : sal_uLong EasyFile::createFileName(  const String& rURL, String& rFileName )
    3259                 :            : {
    3260                 :          0 :     sal_uLong nErr = 0;
    3261                 :            : 
    3262         [ #  # ]:          0 :     if( bOpen )
    3263                 :          0 :         nErr = close();
    3264                 :            : 
    3265         [ #  # ]:          0 :     if( nErr == 0 )
    3266                 :            :     {
    3267 [ #  # ][ #  # ]:          0 :         INetURLObject aURL( rURL );
    3268                 :            : 
    3269         [ #  # ]:          0 :         if( aURL.GetProtocol() == INET_PROT_NOT_VALID )
    3270                 :            :         {
    3271                 :          0 :             rtl::OUString aURLStr;
    3272 [ #  # ][ #  # ]:          0 :             ::utl::LocalFileHelper::ConvertPhysicalNameToURL( rURL, aURLStr );
    3273 [ #  # ][ #  # ]:          0 :             aURL = INetURLObject( aURLStr );
                 [ #  # ]
    3274                 :            :         }
    3275                 :            :         DBG_ASSERT( aURL.GetProtocol() != INET_PROT_NOT_VALID, "invalid URL" );
    3276 [ #  # ][ #  # ]:          0 :         rFileName = aURL.GetMainURL( INetURLObject::NO_DECODE );
                 [ #  # ]
    3277                 :            :     }
    3278                 :            : 
    3279                 :          0 :     return nErr;
    3280                 :            : }
    3281                 :            : 
    3282                 :            : // =====================================================================
    3283                 :          0 : sal_uLong EasyFile::close()
    3284                 :            : {
    3285                 :          0 :     sal_uLong nErr = 0;
    3286                 :            : 
    3287         [ #  # ]:          0 :     delete pOStm;
    3288                 :          0 :     pOStm = NULL;
    3289                 :            : 
    3290                 :          0 :     bOpen = false;
    3291                 :            : 
    3292         [ #  # ]:          0 :     if( pMedium )
    3293                 :            :     {
    3294                 :            :         // uebertragen
    3295                 :          0 :         pMedium->Close();
    3296                 :          0 :         pMedium->Commit();
    3297                 :            : 
    3298                 :          0 :         nErr = pMedium->GetError();
    3299                 :            : 
    3300         [ #  # ]:          0 :         delete pMedium;
    3301                 :          0 :         pMedium = NULL;
    3302                 :            :     }
    3303                 :            : 
    3304                 :          0 :     return nErr;
    3305                 :            : }
    3306                 :            : 
    3307                 :            : // =====================================================================
    3308                 :            : // This class helps reporting errors during file i/o
    3309                 :            : // =====================================================================
    3310                 :            : 
    3311                 :          0 : HtmlErrorContext::HtmlErrorContext(Window *_pWin)
    3312 [ #  # ][ #  # ]:          0 : : ErrorContext(_pWin)
    3313                 :            : {
    3314                 :          0 :     mnResId = 0;
    3315                 :          0 : }
    3316                 :            : 
    3317                 :            : // =====================================================================
    3318                 :            : 
    3319                 :          0 : sal_Bool HtmlErrorContext::GetString( sal_uLong, String& rCtxStr )
    3320                 :            : {
    3321                 :            :     DBG_ASSERT( mnResId != 0, "No error context set" );
    3322         [ #  # ]:          0 :     if( mnResId == 0 )
    3323                 :          0 :         return false;
    3324                 :            : 
    3325 [ #  # ][ #  # ]:          0 :     rCtxStr = String( SdResId( mnResId ) );
                 [ #  # ]
    3326                 :            : 
    3327 [ #  # ][ #  # ]:          0 :     rCtxStr.SearchAndReplace( rtl::OUString("$(URL1)"), maURL1 );
                 [ #  # ]
    3328 [ #  # ][ #  # ]:          0 :     rCtxStr.SearchAndReplace( rtl::OUString("$(URL2)"), maURL2 );
                 [ #  # ]
    3329                 :            : 
    3330                 :          0 :     return true;
    3331                 :            : }
    3332                 :            : 
    3333                 :            : // =====================================================================
    3334                 :            : 
    3335                 :          0 : void HtmlErrorContext::SetContext( sal_uInt16 nResId, const String& rURL )
    3336                 :            : {
    3337                 :          0 :     mnResId = nResId;
    3338                 :          0 :     maURL1 = rURL;
    3339                 :          0 :     maURL2.Erase();
    3340                 :          0 : }
    3341                 :            : 
    3342                 :            : // =====================================================================
    3343                 :            : 
    3344                 :          0 : void HtmlErrorContext::SetContext( sal_uInt16 nResId, const String& rURL1, const String& rURL2 )
    3345                 :            : {
    3346                 :          0 :     mnResId = nResId;
    3347                 :          0 :     maURL1 = rURL1;
    3348                 :          0 :     maURL2 = rURL2;
    3349                 :          0 : }
    3350                 :            : 
    3351                 :            : // =====================================================================
    3352                 :            : 
    3353                 :            : 
    3354                 :            : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10