[Libreoffice] Unused files in the impress repository

Francois Tigeot ftigeot at wolfpond.org
Sat Jul 2 13:12:07 PDT 2011


Hi,

The following files seem to be unused:

  impress/sd/source/filter/eppt/eppt.cxx
  impress/sd/source/filter/html/htmlex.cxx

With the attached patch, I could succesfully complete a build. Howewer,
I'm not 100% sure these files have no purpose whatsoever.

Could someone knowledgeable in this part of the tree confirm if it is
safe to remove them (or not) ?

In the meantime, please do not commit the attached patch.

Thanks,

-- 
Francois Tigeot
-------------- next part --------------
diff --git a/sd/Library_sd.mk b/sd/Library_sd.mk
index 99f51e4..3c23b98 100644
--- a/sd/Library_sd.mk
+++ b/sd/Library_sd.mk
@@ -131,7 +131,6 @@ $(eval $(call gb_Library_add_exception_objects,sd,\
     sd/source/filter/cgm/sdcgmfilter \
     sd/source/filter/grf/sdgrffilter \
     sd/source/filter/html/buttonset \
-    sd/source/filter/html/htmlex \
     sd/source/filter/html/HtmlOptionsDialog \
     sd/source/filter/html/sdhtmlfilter \
     sd/source/filter/sdfilter \
diff --git a/sd/Library_sdfilt.mk b/sd/Library_sdfilt.mk
index 97fe6b6..9a97375 100644
--- a/sd/Library_sdfilt.mk
+++ b/sd/Library_sdfilt.mk
@@ -79,7 +79,6 @@ $(eval $(call gb_Library_add_linked_libs,sdfilt,\
 $(eval $(call gb_Library_set_componentfile,sdfilt,sd/util/sdfilt))
 
 $(eval $(call gb_Library_add_exception_objects,sdfilt,\
-    sd/source/filter/eppt/eppt \
     sd/source/filter/eppt/escherex \
     sd/source/filter/eppt/pptexanimations \
     sd/source/filter/eppt/pptexsoundcollection \
diff --git a/sd/source/filter/eppt/eppt.cxx b/sd/source/filter/eppt/eppt.cxx
deleted file mode 100644
index b996d20..0000000
--- a/sd/source/filter/eppt/eppt.cxx
+++ /dev/null
@@ -1,1534 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org.  If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_sd.hxx"
-#include <eppt.hxx>
-#include "epptdef.hxx"
-#include <tools/globname.hxx>
-#include <tools/datetime.hxx>
-#include <tools/poly.hxx>
-#include <vcl/graph.hxx>
-#include <vcl/bmpacc.hxx>
-#include <vcl/gradient.hxx>
-#include <rtl/ustring.hxx>
-#include <tools/stream.hxx>
-#include <svtools/fltcall.hxx>
-#include <sfx2/docfile.hxx>
-#include <svx/unoapi.hxx>
-#include <svx/svdobj.hxx>
-#include <svx/svdoole2.hxx>
-#include <svx/svdmodel.hxx>
-#include <svx/svdpage.hxx>
-#include <com/sun/star/view/PaperOrientation.hpp>
-#include <com/sun/star/view/PaperFormat.hpp>
-#include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
-#include <com/sun/star/office/XAnnotation.hpp>
-#include <com/sun/star/office/XAnnotationAccess.hpp>
-#include <com/sun/star/office/XAnnotationEnumeration.hpp>
-#include <com/sun/star/geometry/RealPoint2D.hpp>
-#include <com/sun/star/util/DateTime.hpp>
-#include <tools/zcodec.hxx>
-#include <editeng/svxenum.hxx>
-#include <sot/storinfo.hxx>
-#include <filter/msfilter/msoleexp.hxx>
-#include <vcl/virdev.hxx>
-#include <svtools/wmf.hxx>
-#include <filter/msfilter/msdffimp.hxx>
-#include <filter/msfilter/svxmsbas.hxx>
-#include <editeng/flditem.hxx>
-#include <sfx2/docinf.hxx>
-#include <oox/export/utils.hxx>
-
-using namespace com::sun::star;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::presentation;
-
-using ::com::sun::star::beans::XPropertySet;
-
-//============================ PPTWriter ==================================
-
-PPTWriter::PPTWriter( SvStorageRef& rSvStorage,
-            ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > & rXModel,
-            ::com::sun::star::uno::Reference< ::com::sun::star::task::XStatusIndicator > & rXStatInd,
-            SvMemoryStream* pVBA, sal_uInt32 nCnvrtFlags ) :
-    PPTWriterBase           ( rXModel, rXStatInd ),
-    mnCnvrtFlags            ( nCnvrtFlags ),
-    mbStatus                ( sal_False ),
-    mbUseNewAnimations      ( sal_True ),
-    mnLatestStatValue       ( 0 ),
-    mrStg                   ( rSvStorage ),
-    mpCurUserStrm           ( NULL ),
-    mpStrm                  ( NULL ),
-    mpPicStrm               ( NULL ),
-    mpPptEscherEx           ( NULL ),
-    mnVBAOleOfs             ( 0 ),
-    mpVBA                   ( pVBA ),
-    mnExEmbed               ( 0 ),
-    mpExEmbed               ( new SvMemoryStream ),
-    mnPagesWritten          ( 0 ),
-    mnTxId                  ( 0x7a2f64 )
-{
-}
-
-void PPTWriter::exportPPTPre()
-{
-    if ( !mrStg.Is() )
-        return;
-
-    // MasterPages + Slides und Notizen + NotesMasterPage
-    mnDrawings = mnMasterPages + ( mnPages << 1 ) + 1;
-
-    if ( mXStatusIndicator.is() )
-    {
-        mbStatusIndicator = sal_True;
-        mnStatMaxValue = ( mnPages + mnMasterPages ) * 5;
-        mXStatusIndicator->start( String( RTL_CONSTASCII_USTRINGPARAM( "PowerPoint Export" ) ),
-                                    mnStatMaxValue + ( mnStatMaxValue >> 3 ) );
-    }
-
-    SvGlobalName aGName( 0x64818d10L, 0x4f9b, 0x11cf, 0x86, 0xea, 0x00, 0xaa, 0x00, 0xb9, 0x29, 0xe8 );
-    mrStg->SetClass( aGName, 0, String( RTL_CONSTASCII_USTRINGPARAM( "MS PowerPoint 97" ) ) );
-
-    if ( !ImplCreateCurrentUserStream() )
-        return;
-
-    mpStrm = mrStg->OpenSotStream( String( RTL_CONSTASCII_USTRINGPARAM( "PowerPoint Document" ) ) );
-    if ( !mpStrm )
-        return;
-
-    if ( !mpPicStrm )
-        mpPicStrm = mrStg->OpenSotStream( String( RTL_CONSTASCII_USTRINGPARAM( "Pictures" ) ) );
-
-    mpPptEscherEx = new PptEscherEx( *mpStrm );
-}
-
-void PPTWriter::exportPPTPost( )
-{
-    if ( !ImplCloseDocument() )
-        return;
-
-    if ( mbStatusIndicator )
-    {
-        mXStatusIndicator->setText( String( RTL_CONSTASCII_USTRINGPARAM( "PowerPoint Export" ) ) );
-        sal_uInt32 nValue = mnStatMaxValue + ( mnStatMaxValue >> 3 );
-        if ( nValue > mnLatestStatValue )
-        {
-            mXStatusIndicator->setValue( nValue );
-            mnLatestStatValue = nValue;
-        }
-    }
-
-    ImplWriteOLE();
-
-    ImplWriteVBA();
-
-    if ( !ImplWriteAtomEnding() )
-        return;
-
-    if ( !ImplCreateDocumentSummaryInformation() )
-        return;
-
-    mbStatus = sal_True;
-};
-
-// ---------------------------------------------------------------------------------------------
-
-void ImplExportComments( uno::Reference< drawing::XDrawPage > xPage, SvMemoryStream& rBinaryTagData10Atom );
-
-void PPTWriter::ImplWriteSlide( sal_uInt32 nPageNum, sal_uInt32 nMasterNum, sal_uInt16 nMode,
-                                sal_Bool bHasBackground, Reference< XPropertySet > aXBackgroundPropSet )
-{
-    Any aAny;
-
-    const PHLayout& rLayout = GetLayout( mXPagePropSet );
-    mpPptEscherEx->PtReplaceOrInsert( EPP_Persist_Slide | nPageNum, mpStrm->Tell() );
-    mpPptEscherEx->OpenContainer( EPP_Slide );
-    mpPptEscherEx->AddAtom( 24, EPP_SlideAtom, 2 );
-    *mpStrm << rLayout.nLayout;
-    mpStrm->Write( rLayout.nPlaceHolder, 8 );       // placeholderIDs ( 8Stueck )
-    *mpStrm << (sal_uInt32)(nMasterNum | 0x80000000)// master ID ( ist gleich 0x80000000 bei einer masterpage   )
-            << (sal_uInt32)nPageNum + 0x100         // notes ID ( ist gleich null wenn keine notizen vorhanden )
-            << nMode
-            << (sal_uInt16)0;                       // padword
-
-    mnDiaMode = 0;
-    sal_Bool bVisible = sal_True;
-    ::com::sun::star::presentation::FadeEffect eFe = ::com::sun::star::presentation::FadeEffect_NONE;
-
-    if ( GetPropertyValue( aAny, mXPagePropSet, String( RTL_CONSTASCII_USTRINGPARAM( "Visible" ) ) ) )
-        aAny >>= bVisible;
-    if ( GetPropertyValue( aAny, mXPagePropSet, String( RTL_CONSTASCII_USTRINGPARAM( "Change" ) ) ) )
-    {
-        switch ( *(sal_Int32*)aAny.getValue() )
-        {
-            case 1 :        // automatisch
-                mnDiaMode++;
-            case 2 :        // halbautomatisch
-                mnDiaMode++;
-            default :
-            case 0 :        // manuell
-            break;
-        }
-    }
-    if ( GetPropertyValue( aAny, mXPagePropSet, String( RTL_CONSTASCII_USTRINGPARAM( "Effect" ) ) ) )
-        aAny >>= eFe;
-
-    sal_uInt32  nSoundRef = 0;
-    sal_Bool    bIsSound = sal_False;
-    sal_Bool    bStopSound = sal_False;
-    sal_Bool    bLoopSound = sal_False;
-
-    if ( GetPropertyValue( aAny, mXPagePropSet, String( RTL_CONSTASCII_USTRINGPARAM( "Sound" ) ) ) )
-    {
-        rtl::OUString aSoundURL;
-        if ( aAny >>= aSoundURL )
-        {
-            nSoundRef = maSoundCollection.GetId( aSoundURL );
-            bIsSound = sal_True;
-        }
-        else
-            aAny >>= bStopSound;
-    }
-    if ( GetPropertyValue( aAny, mXPagePropSet, String( RTL_CONSTASCII_USTRINGPARAM( "LoopSound" ) ) ) )
-        aAny >>= bLoopSound;
-
-    sal_Bool bNeedsSSSlideInfoAtom = ( bVisible == sal_False )
-                                    || ( mnDiaMode == 2 )
-                                    || ( bIsSound )
-                                    || ( bStopSound )
-                                    || ( eFe != ::com::sun::star::presentation::FadeEffect_NONE );
-    if ( bNeedsSSSlideInfoAtom )
-    {
-        sal_uInt8   nDirection = 0;
-        sal_uInt8   nTransitionType = 0;
-        sal_uInt16  nBuildFlags = 1;        // advange by mouseclick
-        sal_Int32       nSlideTime = 0;         // muss noch !!!
-        sal_uInt8   nSpeed = 1;
-
-        if ( GetPropertyValue( aAny, mXPagePropSet, String( RTL_CONSTASCII_USTRINGPARAM( "Speed" ) ) ) )
-        {
-            ::com::sun::star::presentation::AnimationSpeed aAs;
-            aAny >>= aAs;
-            nSpeed = (sal_uInt8)aAs;
-        }
-        sal_Int16 nTT = 0;
-        if ( GetPropertyValue( aAny, mXPagePropSet, String( RTL_CONSTASCII_USTRINGPARAM( "TransitionType" ) ) )
-            && ( aAny >>= nTT ) )
-        {
-            sal_Int16 nTST = 0;
-            if ( GetPropertyValue( aAny, mXPagePropSet, String( RTL_CONSTASCII_USTRINGPARAM( "TransitionSubtype" ) ) )
-                && ( aAny >>= nTST ) )
-                nTransitionType = GetTransition( nTT, nTST, eFe, nDirection );
-
-        }
-        if ( !nTransitionType )
-            nTransitionType = GetTransition( eFe, nDirection );
-        if ( mnDiaMode == 2 )                                   // automatic ?
-            nBuildFlags |= 0x400;
-        if ( bVisible == sal_False )
-            nBuildFlags |= 4;
-        if ( bIsSound )
-            nBuildFlags |= 16;
-        if ( bLoopSound )
-            nBuildFlags |= 64;
-        if ( bStopSound )
-            nBuildFlags |= 256;
-
-        if ( GetPropertyValue( aAny, mXPagePropSet, String( RTL_CONSTASCII_USTRINGPARAM( "Duration" ) ) ) )// duration of this slide
-            nSlideTime = *(sal_Int32*)aAny.getValue() << 10;        // in ticks
-
-        mpPptEscherEx->AddAtom( 16, EPP_SSSlideInfoAtom );
-        *mpStrm << nSlideTime       // standtime in ticks
-                << nSoundRef
-                << nDirection
-                << nTransitionType
-                << nBuildFlags
-                << nSpeed
-                << (sal_uInt8)0 << (sal_uInt8)0 << (sal_uInt8)0;
-    }
-
-    ImplCreateHeaderFooters( mXPagePropSet );
-
-    EscherSolverContainer aSolverContainer;
-    mpPptEscherEx->OpenContainer( EPP_PPDrawing );
-    mpPptEscherEx->OpenContainer( ESCHER_DgContainer );
-    mpPptEscherEx->EnterGroup(0,0);
-    ImplWritePage( rLayout, aSolverContainer, NORMAL, sal_False, nPageNum );    // Die Shapes der Seite werden im PPT Dok. erzeugt
-    mpPptEscherEx->LeaveGroup();
-
-    if ( bHasBackground )
-        ImplWriteBackground( aXBackgroundPropSet );
-    else
-    {
-        mpPptEscherEx->OpenContainer( ESCHER_SpContainer );
-        mpPptEscherEx->AddShape( ESCHER_ShpInst_Rectangle, 0xc00 );             // Flags: Connector | Background | HasSpt
-        EscherPropertyContainer aPropOpt;
-        aPropOpt.AddOpt( ESCHER_Prop_fillRectRight, PPTtoEMU( maDestPageSize.Width ) );
-        aPropOpt.AddOpt( ESCHER_Prop_fillRectBottom, PPTtoEMU( maDestPageSize.Width ) );
-        aPropOpt.AddOpt( ESCHER_Prop_fNoFillHitTest, 0x120012 );
-        aPropOpt.AddOpt( ESCHER_Prop_fNoLineDrawDash, 0x80000 );
-        aPropOpt.AddOpt( ESCHER_Prop_bWMode, ESCHER_wDontShow );
-        aPropOpt.AddOpt( ESCHER_Prop_fBackground, 0x10001 );                // if true, this is the background shape
-        aPropOpt.Commit( *mpStrm );
-        mpPptEscherEx->CloseContainer();    // ESCHER_SpContainer
-    }
-
-    aSolverContainer.WriteSolver( *mpStrm );
-
-    mpPptEscherEx->CloseContainer();    // ESCHER_DgContainer
-    mpPptEscherEx->CloseContainer();    // EPP_Drawing
-    mpPptEscherEx->AddAtom( 32, EPP_ColorSchemeAtom, 0, 1 );
-    *mpStrm << (sal_uInt32)0xffffff << (sal_uInt32)0x000000 << (sal_uInt32)0x808080 << (sal_uInt32)0x000000 << (sal_uInt32)0x99cc00 << (sal_uInt32)0xcc3333 << (sal_uInt32)0xffcccc << (sal_uInt32)0xb2b2b2;
-
-    SvMemoryStream aBinaryTagData10Atom;
-    ImplExportComments( mXDrawPage, aBinaryTagData10Atom );
-    if ( mbUseNewAnimations )
-    {
-        SvMemoryStream amsofbtAnimGroup;
-        ppt::AnimationExporter aExporter( aSolverContainer, maSoundCollection );
-        aExporter.doexport( mXDrawPage, amsofbtAnimGroup );
-        sal_uInt32 nmsofbtAnimGroupSize = amsofbtAnimGroup.Tell();
-        if ( nmsofbtAnimGroupSize )
-        {
-            {
-                EscherExAtom aMagic2( aBinaryTagData10Atom, 0x2eeb );
-                aBinaryTagData10Atom << (sal_uInt32)0x01c45df9
-                                     << (sal_uInt32)0xe1471b30;
-            }
-            {
-                EscherExAtom aMagic( aBinaryTagData10Atom, 0x2b00 );
-                aBinaryTagData10Atom << (sal_uInt32)0;
-            }
-            aBinaryTagData10Atom.Write( amsofbtAnimGroup.GetData(), amsofbtAnimGroup.Tell() );
-            {
-                EscherExContainer aMagic2( aBinaryTagData10Atom, 0x2b02 );
-            }
-        }
-    }
-    if ( aBinaryTagData10Atom.Tell() )
-    {
-        EscherExContainer aProgTags     ( *mpStrm, EPP_ProgTags );
-        EscherExContainer aProgBinaryTag( *mpStrm, EPP_ProgBinaryTag );
-        {
-            EscherExAtom aCString( *mpStrm, EPP_CString );
-            *mpStrm << (sal_uInt32)0x5f005f
-                    << (sal_uInt32)0x50005f
-                    << (sal_uInt32)0x540050
-                    << (sal_uInt16)0x31
-                    << (sal_uInt16)0x30;
-        }
-        {
-            EscherExAtom aBinaryTagData( *mpStrm, EPP_BinaryTagData );
-            mpStrm->Write( aBinaryTagData10Atom.GetData(), aBinaryTagData10Atom.Tell() );
-        }
-    }
-    mpPptEscherEx->CloseContainer();    // EPP_Slide
-}
-
-// ---------------------------------------------------------------------------------------------
-
-void PPTWriter::ImplWriteSlideMaster( sal_uInt32 nPageNum, Reference< XPropertySet > aXBackgroundPropSet )
-{
-    mpPptEscherEx->PtReplaceOrInsert( EPP_Persist_MainMaster | nPageNum, mpStrm->Tell() );
-    mpPptEscherEx->OpenContainer( EPP_MainMaster );
-    mpPptEscherEx->AddAtom( 24, EPP_SlideAtom, 2 );
-    *mpStrm << (sal_Int32)EPP_LAYOUT_TITLEANDBODYSLIDE  // slide layout -> title and body slide
-            << (sal_uInt8)1 << (sal_uInt8)2 << (sal_uInt8)0 << (sal_uInt8)0 << (sal_uInt8)0 << (sal_uInt8)0 << (sal_uInt8)0 << (sal_uInt8)0     // placeholderID
-            << (sal_uInt32)0        // master ID ( ist gleich null bei einer masterpage )
-            << (sal_uInt32)0        // notes ID ( ist gleich null wenn keine notizen vorhanden )
-            << (sal_uInt16)0        // Bit 1: Follow master objects, Bit 2: Follow master scheme, Bit 3: Follow master background
-            << (sal_uInt16)0;       // padword
-
-    mpPptEscherEx->AddAtom( 32, EPP_ColorSchemeAtom, 0, 6 );
-    *mpStrm << (sal_uInt32)0xffffff << (sal_uInt32)0x000000 << (sal_uInt32)0x808080 << (sal_uInt32)0x000000 << (sal_uInt32)0x99cc00 << (sal_uInt32)0xcc3333 << (sal_uInt32)0xffcccc << (sal_uInt32)0xb2b2b2;
-    mpPptEscherEx->AddAtom( 32, EPP_ColorSchemeAtom, 0, 6 );
-    *mpStrm << (sal_uInt32)0xff0000 << (sal_uInt32)0xffffff << (sal_uInt32)0x000000 << (sal_uInt32)0x00ffff << (sal_uInt32)0x0099ff << (sal_uInt32)0xffff00 << (sal_uInt32)0x0000ff << (sal_uInt32)0x969696;
-    mpPptEscherEx->AddAtom( 32, EPP_ColorSchemeAtom, 0, 6 );
-    *mpStrm << (sal_uInt32)0xccffff << (sal_uInt32)0x000000 << (sal_uInt32)0x336666 << (sal_uInt32)0x008080 << (sal_uInt32)0x339933 << (sal_uInt32)0x000080 << (sal_uInt32)0xcc3300 << (sal_uInt32)0x66ccff;
-    mpPptEscherEx->AddAtom( 32, EPP_ColorSchemeAtom, 0, 6 );
-    *mpStrm << (sal_uInt32)0xffffff << (sal_uInt32)0x000000 << (sal_uInt32)0x333333 << (sal_uInt32)0x000000 << (sal_uInt32)0xdddddd << (sal_uInt32)0x808080 << (sal_uInt32)0x4d4d4d << (sal_uInt32)0xeaeaea;
-    mpPptEscherEx->AddAtom( 32, EPP_ColorSchemeAtom, 0, 6 );
-    *mpStrm << (sal_uInt32)0xffffff << (sal_uInt32)0x000000 << (sal_uInt32)0x808080 << (sal_uInt32)0x000000 << (sal_uInt32)0x66ccff << (sal_uInt32)0xff0000 << (sal_uInt32)0xcc00cc << (sal_uInt32)0xc0c0c0;
-    mpPptEscherEx->AddAtom( 32, EPP_ColorSchemeAtom, 0, 6 );
-    *mpStrm << (sal_uInt32)0xffffff << (sal_uInt32)0x000000 << (sal_uInt32)0x808080 << (sal_uInt32)0x000000 << (sal_uInt32)0xc0c0c0 << (sal_uInt32)0xff6600 << (sal_uInt32)0x0000ff << (sal_uInt32)0x009900;
-    mpPptEscherEx->AddAtom( 32, EPP_ColorSchemeAtom, 0, 6 );
-    *mpStrm << (sal_uInt32)0xffffff << (sal_uInt32)0x000000 << (sal_uInt32)0x808080 << (sal_uInt32)0x000000 << (sal_uInt32)0xff9933 << (sal_uInt32)0xccff99 << (sal_uInt32)0xcc00cc << (sal_uInt32)0xb2b2b2;
-
-    for ( int nInstance = EPP_TEXTTYPE_Title; nInstance <= EPP_TEXTTYPE_QuarterBody; nInstance++ )
-    {
-        if ( nInstance == EPP_TEXTTYPE_notUsed )
-            continue;
-
-        // the auto color is dependent to the page background,so we have to set a page that is in the right context
-        if ( nInstance == EPP_TEXTTYPE_Notes )
-            GetPageByIndex( 0, NOTICE );
-        else
-            GetPageByIndex( 0, MASTER );
-
-        mpPptEscherEx->BeginAtom();
-
-        sal_Bool bFirst = sal_True;
-        sal_Bool bSimpleText = sal_False;
-
-        *mpStrm << (sal_uInt16)5;                           // paragraph count
-
-        for ( sal_uInt16 nLev = 0; nLev < 5; nLev++ )
-        {
-            if ( nInstance >= EPP_TEXTTYPE_CenterBody )
-            {
-                bFirst = sal_False;
-                bSimpleText = sal_True;
-                *mpStrm << nLev;
-            }
-            mpStyleSheet->mpParaSheet[ nInstance ]->Write( *mpStrm, mpPptEscherEx, nLev, bFirst, bSimpleText, mXPagePropSet );
-            mpStyleSheet->mpCharSheet[ nInstance ]->Write( *mpStrm, mpPptEscherEx, nLev, bFirst, bSimpleText, mXPagePropSet );
-            bFirst = sal_False;
-        }
-        mpPptEscherEx->EndAtom( EPP_TxMasterStyleAtom, 0, nInstance );
-    }
-    GetPageByIndex( nPageNum, MASTER );
-
-    EscherSolverContainer aSolverContainer;
-
-    mpPptEscherEx->OpenContainer( EPP_PPDrawing );
-    mpPptEscherEx->OpenContainer( ESCHER_DgContainer );
-
-    mpPptEscherEx->EnterGroup(0,0);
-    ImplWritePage( GetLayout( 0 ), aSolverContainer, MASTER, sal_True );    // Die Shapes der Seite werden im PPT Dok. erzeugt
-    mpPptEscherEx->LeaveGroup();
-
-    ImplWriteBackground( aXBackgroundPropSet );
-
-    aSolverContainer.WriteSolver( *mpStrm );
-
-    mpPptEscherEx->CloseContainer();    // ESCHER_DgContainer
-    mpPptEscherEx->CloseContainer();    // EPP_Drawing
-    mpPptEscherEx->AddAtom( 32, EPP_ColorSchemeAtom, 0, 1 );
-    *mpStrm << (sal_uInt32)0xffffff << (sal_uInt32)0x000000 << (sal_uInt32)0x808080 << (sal_uInt32)0x000000 << (sal_uInt32)0x99cc00 << (sal_uInt32)0xcc3333 << (sal_uInt32)0xffcccc << (sal_uInt32)0xb2b2b2;
-
-    if ( aBuExMasterStream.Tell() )
-    {
-        ImplProgTagContainer( mpStrm, &aBuExMasterStream );
-    }
-    mpPptEscherEx->CloseContainer();    // EPP_MainMaster
-};
-
-// ---------------------------------------------------------------------------------------------
-
-PPTWriter::~PPTWriter()
-{
-    void*  pPtr;
-    delete mpExEmbed;
-    delete mpPptEscherEx;
-    delete mpCurUserStrm;
-    delete mpPicStrm;
-    delete mpStrm;
-
-
-
-    std::vector< PPTExStyleSheet* >::iterator aStyleSheetIter( maStyleSheetList.begin() );
-    while( aStyleSheetIter < maStyleSheetList.end() )
-        delete *aStyleSheetIter++;
-
-    for ( pPtr = maHyperlink.First(); pPtr; pPtr = maHyperlink.Next() )
-        delete (EPPTHyperlink*)pPtr;
-    for ( pPtr = maExOleObj.First(); pPtr; pPtr = maExOleObj.Next() )
-        delete (PPTExOleObjEntry*)pPtr;
-
-    if ( mbStatusIndicator )
-        mXStatusIndicator->end();
-}
-
-// ---------------------------------------------------------------------------------------------
-
-sal_Bool PPTWriter::ImplCreateCurrentUserStream()
-{
-    mpCurUserStrm = mrStg->OpenSotStream( String( RTL_CONSTASCII_USTRINGPARAM( "Current User" ) ) );
-    if ( !mpCurUserStrm )
-        return sal_False;
-    char pUserName[] = "Current User";
-    sal_uInt32 nLenOfUserName = strlen( pUserName );
-    sal_uInt32 nSizeOfRecord = 0x14 + ( ( nLenOfUserName + 4 ) & ~ 3 );
-
-    *mpCurUserStrm << (sal_uInt16)0 << (sal_uInt16)EPP_CurrentUserAtom << nSizeOfRecord;
-    *mpCurUserStrm << (sal_uInt32)0x14                  // Len
-                   << (sal_uInt32)0xe391c05f;           // Magic
-
-    sal_uInt32 nEditPos = mpCurUserStrm->Tell();
-    *mpCurUserStrm << (sal_uInt32)0x0                   // OffsetToCurrentEdit;
-                   << (sal_uInt16)nLenOfUserName        //
-                   << (sal_uInt16)0x3f4                 // DocFileVersion
-                   << (sal_uInt8)3                      // MajorVersion
-                   << (sal_uInt8)0                      // MinorVersion
-                   << (sal_uInt16)0;                    // Pad Word
-    pUserName[ nLenOfUserName ] = 8;
-    mpCurUserStrm->Write( pUserName, nLenOfUserName + 1 );
-    for ( sal_uInt32 i = 0x15 + nLenOfUserName; i < nSizeOfRecord; i++ )
-    {
-        *mpCurUserStrm << (sal_uInt8)0;                 // pad bytes
-    };
-    mpCurUserStrm->Seek( nEditPos );
-    return sal_True;
-};
-
-// ---------------------------------------------------------------------------------------------
-
-sal_Bool PPTWriter::ImplCreateDocumentSummaryInformation()
-{
-    uno::Reference<document::XDocumentPropertiesSupplier> xDPS(
-        mXModel, uno::UNO_QUERY_THROW);
-    uno::Reference<document::XDocumentProperties> xDocProps(
-        xDPS->getDocumentProperties());
-
-    if (xDocProps.is()) {
-
-        // no idea what this is...
-        static sal_uInt8 aGuid[ 0x52 ] =
-        {
-            0x4e, 0x00, 0x00, 0x00,
-            '{',0,'D',0,'B',0,'1',0,'A',0,'C',0,'9',0,'6',0,'4',0,'-',0,
-            'E',0,'3',0,'9',0,'C',0,'-',0,'1',0,'1',0,'D',0,'2',0,'-',0,
-            'A',0,'1',0,'E',0,'F',0,'-',0,'0',0,'0',0,'6',0,'0',0,'9',0,
-            '7',0,'D',0,'A',0,'5',0,'6',0,'8',0,'9',0,'}',0
-        };
-        uno::Sequence<sal_uInt8> aGuidSeq(aGuid, 0x52);
-
-        SvMemoryStream  aHyperBlob;
-        ImplCreateHyperBlob( aHyperBlob );
-
-        uno::Sequence<sal_uInt8> aHyperSeq(aHyperBlob.Tell());
-        const sal_uInt8* pBlob(
-            static_cast<const sal_uInt8*>(aHyperBlob.GetData()));
-        for (sal_Int32 j = 0; j < aHyperSeq.getLength(); ++j) {
-            aHyperSeq[j] = pBlob[j];
-        }
-
-        if ( mnCnvrtFlags & 0x8000 )
-        {
-            uno::Sequence<sal_uInt8> aThumbSeq;
-            if ( GetPageByIndex( 0, NORMAL ) &&
-                 ImplGetPropertyValue( mXPagePropSet,
-                    String( RTL_CONSTASCII_USTRINGPARAM( "PreviewBitmap" ) ) ) )
-            {
-                aThumbSeq =
-                    *static_cast<const uno::Sequence<sal_uInt8>*>(mAny.getValue());
-            }
-            sfx2::SaveOlePropertySet( xDocProps, mrStg,
-                    &aThumbSeq, &aGuidSeq, &aHyperSeq);
-        }
-        else
-        {
-            sfx2::SaveOlePropertySet( xDocProps, mrStg,
-                    NULL, &aGuidSeq, &aHyperSeq );
-        }
-    }
-
-    return sal_True;
-}
-
-// ---------------------------------------------------------------------------------------------
-
-void PPTWriter::ImplWriteExtParaHeader( SvMemoryStream& rSt, sal_uInt32 nRef, sal_uInt32 nInstance, sal_uInt32 nSlideId )
-{
-    if ( rSt.Tell() )
-    {
-        aBuExOutlineStream << (sal_uInt32)( ( EPP_PST_ExtendedParagraphHeaderAtom << 16 )
-                                | ( nRef << 4 ) )
-                            << (sal_uInt32)8
-                            << (sal_uInt32)nSlideId
-                            << (sal_uInt32)nInstance;
-        aBuExOutlineStream.Write( rSt.GetData(), rSt.Tell() );
-    }
-}
-
-// ---------------------------------------------------------------------------------------------
-
-void PPTWriter::ImplCreateHeaderFooterStrings( SvStream& rStrm, ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& rXPagePropSet )
-{
-    if ( rXPagePropSet.is() )
-    {
-        rtl::OUString aString;
-        ::com::sun::star::uno::Any aAny;
-        if ( PropValue::GetPropertyValue( aAny, rXPagePropSet, String( RTL_CONSTASCII_USTRINGPARAM( "HeaderText" ) ), sal_True ) )
-        {
-            if ( aAny >>= aString )
-                PPTWriter::WriteCString( rStrm, aString, 1 );
-        }
-        if ( PropValue::GetPropertyValue( aAny, rXPagePropSet, String( RTL_CONSTASCII_USTRINGPARAM( "FooterText" ) ), sal_True ) )
-        {
-            if ( aAny >>= aString )
-                PPTWriter::WriteCString( rStrm, aString, 2 );
-        }
-        if ( PropValue::GetPropertyValue( aAny, rXPagePropSet, String( RTL_CONSTASCII_USTRINGPARAM( "DateTimeText" ) ), sal_True ) )
-        {
-            if ( aAny >>= aString )
-                PPTWriter::WriteCString( rStrm, aString, 0 );
-        }
-    }
-}
-
-// ---------------------------------------------------------------------------------------------
-
-void PPTWriter::ImplCreateHeaderFooters( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& rXPagePropSet )
-{
-    if ( rXPagePropSet.is() )
-    {
-        sal_Bool bVal = sal_False;
-        sal_uInt32 nVal = 0;
-        ::com::sun::star::uno::Any aAny;
-        if ( PropValue::GetPropertyValue( aAny, rXPagePropSet, String( RTL_CONSTASCII_USTRINGPARAM( "IsHeaderVisible" ) ), sal_True ) )
-        {
-            if ( ( aAny >>= bVal ) && bVal )
-                nVal |= 0x100000;
-        }
-        if ( PropValue::GetPropertyValue( aAny, rXPagePropSet, String( RTL_CONSTASCII_USTRINGPARAM( "IsFooterVisible" ) ), sal_True ) )
-        {
-            if ( ( aAny >>= bVal ) && bVal )
-                nVal |= 0x200000;
-        }
-        if ( PropValue::GetPropertyValue( aAny, rXPagePropSet, String( RTL_CONSTASCII_USTRINGPARAM( "IsDateTimeVisible" ) ), sal_True ) )
-        {
-            if ( ( aAny >>= bVal ) && bVal )
-                nVal |= 0x010000;
-        }
-        if ( PropValue::GetPropertyValue( aAny, rXPagePropSet, String( RTL_CONSTASCII_USTRINGPARAM( "IsPageNumberVisible" ) ), sal_True ) )
-        {
-            if ( ( aAny >>= bVal ) && bVal )
-                nVal |= 0x080000;
-        }
-        if ( PropValue::GetPropertyValue( aAny, rXPagePropSet, String( RTL_CONSTASCII_USTRINGPARAM( "IsDateTimeFixed" ) ), sal_True ) )
-        {
-            if ( ( aAny >>= bVal ) && !bVal )
-                nVal |= 0x20000;
-            else
-                nVal |= 0x40000;
-        }
-        if ( PropValue::GetPropertyValue( aAny, rXPagePropSet, String( RTL_CONSTASCII_USTRINGPARAM( "DateTimeFormat" ) ), sal_True ) )
-        {
-            sal_Int32 nFormat = *(sal_Int32*)aAny.getValue();
-            SvxDateFormat eDateFormat = (SvxDateFormat)( nFormat & 0xf );
-            SvxTimeFormat eTimeFormat = (SvxTimeFormat)( ( nFormat >> 4 ) & 0xf );
-            switch( eDateFormat )
-            {
-                case SVXDATEFORMAT_F :
-                    nFormat = 1;
-                break;
-                case SVXDATEFORMAT_D :
-                    nFormat = 2;
-                break;
-                case SVXDATEFORMAT_C :
-                    nFormat = 4;
-                break;
-                default:
-                case SVXDATEFORMAT_A :
-                    nFormat = 0;
-            }
-            switch( eTimeFormat )
-            {
-                case SVXTIMEFORMAT_24_HM :
-                    nFormat = 9;
-                break;
-                case SVXTIMEFORMAT_12_HM :
-                    nFormat = 11;
-                break;
-                case SVXTIMEFORMAT_24_HMS :
-                    nFormat = 10;
-                break;
-                case SVXTIMEFORMAT_12_HMS :
-                    nFormat = 12;
-                break;
-                default:
-                    break;
-            }
-            nVal |= nFormat;
-        }
-
-        mpPptEscherEx->OpenContainer( EPP_HeadersFooters, 0 );
-        mpPptEscherEx->AddAtom( 4, EPP_HeadersFootersAtom );
-        *mpStrm << nVal;
-        ImplCreateHeaderFooterStrings( *mpStrm, rXPagePropSet );
-        mpPptEscherEx->CloseContainer();
-    }
-}
-
-// ---------------------------------------------------------------------------------------------
-
-sal_Bool PPTWriter::ImplCreateDocument()
-{
-    sal_uInt32 i;
-    sal_uInt16 nSlideType = EPP_SLIDESIZE_TYPECUSTOM;
-
-    sal_uInt32 nWidth = maDestPageSize.Width;
-    sal_uInt32 nHeight = maDestPageSize.Height;
-
-    if ( ( nWidth == 0x1680 ) && ( nHeight == 0x10e0 ) )
-        nSlideType = EPP_SLIDESIZE_TYPEONSCREEN;
-    else if ( ( nWidth == 0x1200 ) && ( nHeight == 0x240 ) )
-        nSlideType = EPP_SLIDESIZE_TYPEBANNER;
-    else if ( ( nWidth == 0x1950 ) && ( nHeight == 0x10e0 ) )
-        nSlideType = EPP_SLIDESIZE_TYPE35MM;
-    else if ( ( nWidth == 0x1860 ) && ( nHeight == 0x10e0 ) )
-        nSlideType = EPP_SLIDESIZE_TYPEA4PAPER;
-
-    mpPptEscherEx->OpenContainer( EPP_Document );
-    // CREATE DOCUMENT ATOM
-    mpPptEscherEx->AddAtom( 40, EPP_DocumentAtom, 1 );
-    *mpStrm << nWidth                           // Slide Size in Master coordinates X
-            << nHeight                          //   "     "   "    "        "      Y
-            << (sal_Int32)maNotesPageSize.Width     // Notes Page Size                  X
-            << (sal_Int32)maNotesPageSize.Height    //   "     "   "                    Y
-            << (sal_Int32)1 << (sal_Int32)2;            // the scale used when the Powerpoint document is embedded. the default is 1:2
-    mpPptEscherEx->InsertPersistOffset( EPP_MAINNOTESMASTER_PERSIST_KEY, mpStrm->Tell() );
-    *mpStrm << (sal_uInt32)0                        // Reference to NotesMaster ( 0 if none );
-            << (sal_uInt32)0                        // Reference to HandoutMaster ( 0 if none );
-            << (sal_Int16)1                         // Number of the first slide;
-            << nSlideType                           // Size of the document slides ( default: EPP_SLIDESIZETYPEONSCREEN )
-            << (sal_uInt8)0                         // bool1 indicates if document was saved with embedded true type fonts
-            << (sal_uInt8)0                         // bool1 indicates if the placeholders on the title slide are omitted
-            << (sal_uInt8)0                         // bool1 right to left ( flag for Bidi version )
-            << (sal_uInt8)1;                            // bool1 visibility of comments shapes
-
-    mpPptEscherEx->PtInsert( EPP_Persist_Document, mpStrm->Tell() );
-
-    mpPptEscherEx->OpenContainer( EPP_HeadersFooters, 3 );  //Master footer (default)
-    mpPptEscherEx->AddAtom( 4, EPP_HeadersFootersAtom );
-    *mpStrm << (sal_uInt32)0x25000d;
-    if ( GetPageByIndex( 0, MASTER ) )
-        ImplCreateHeaderFooterStrings( *mpStrm, mXPagePropSet );
-    mpPptEscherEx->CloseContainer();
-    mpPptEscherEx->OpenContainer( EPP_HeadersFooters, 4 );  //NotesMaster footer (default)
-    mpPptEscherEx->AddAtom( 4, EPP_HeadersFootersAtom );
-    *mpStrm << (sal_uInt32)0x3d000d;
-    if ( GetPageByIndex( 0, NOTICE ) )
-        ImplCreateHeaderFooterStrings( *mpStrm, mXPagePropSet );
-    mpPptEscherEx->CloseContainer();
-
-    mpPptEscherEx->OpenContainer( EPP_SlideListWithText );      // Animation info fuer die Slides
-
-    for ( i = 0; i < mnPages; i++ )
-    {
-        mpPptEscherEx->AddAtom( 20, EPP_SlidePersistAtom );
-        mpPptEscherEx->InsertPersistOffset( EPP_MAINSLIDE_PERSIST_KEY | i, mpStrm->Tell() );
-        *mpStrm << (sal_uInt32)0                                // psrReference - logical reference to the slide persist object ( EPP_MAINSLIDE_PERSIST_KEY )
-                << (sal_uInt32)4                                // flags - only bit 3 used, if set then slide contains shapes other than placeholders
-                << (sal_Int32)0                                     // numberTexts - number of placeholder texts stored with the persist object.  Allows to display outline view without loading the slide persist objects
-                << (sal_Int32)i + 0x100                             // slideId - Unique slide identifier, used for OLE link monikers for example
-                << (sal_uInt32)0;                               // reserved, usualy 0
-
-        if ( !GetPageByIndex( i, NORMAL ) )                     // sehr aufregend: noch einmal ueber alle seiten
-            return sal_False;
-        SetCurrentStyleSheet( GetMasterIndex( NORMAL ) );
-
-        ::com::sun::star::uno::Reference< ::com::sun::star::container::XNamed >
-            aXName( mXDrawPage, ::com::sun::star::uno::UNO_QUERY );
-
-        if ( aXName.is() )
-            maSlideNameList.push_back( aXName->getName() );
-        else
-            maSlideNameList.push_back( ::rtl::OUString() );
-    }
-    mpPptEscherEx->CloseContainer();    // EPP_SlideListWithText
-
-    mpPptEscherEx->OpenContainer( EPP_SlideListWithText, 2 );   // Animation info fuer die notes
-    for( i = 0; i < mnPages; i++ )
-    {
-        mpPptEscherEx->AddAtom( 20, EPP_SlidePersistAtom );
-        mpPptEscherEx->InsertPersistOffset( EPP_MAINNOTES_PERSIST_KEY | i, mpStrm->Tell() );
-        *mpStrm << (sal_uInt32)0
-                << (sal_uInt32)4
-                << (sal_Int32)0
-                << (sal_Int32)i + 0x100
-                << (sal_uInt32)0;
-    }
-    mpPptEscherEx->CloseContainer();        // EPP_SlideListWithText
-
-    ::com::sun::star::uno::Reference< ::com::sun::star::presentation::XPresentationSupplier >
-        aXPresSupplier( mXModel, ::com::sun::star::uno::UNO_QUERY );            ;
-    if ( aXPresSupplier.is() )
-    {
-        ::com::sun::star::uno::Reference< ::com::sun::star::presentation::XPresentation >
-            aXPresentation( aXPresSupplier->getPresentation() );
-        if ( aXPresentation.is() )
-        {
-            mXPropSet = ::com::sun::star::uno::Reference<
-                ::com::sun::star::beans::XPropertySet >
-                    ( aXPresentation, ::com::sun::star::uno::UNO_QUERY );
-            if ( mXPropSet.is() )
-            {
-                ::rtl::OUString aCustomShow;
-                sal_uInt32  nPenColor = 0x1000000;
-                sal_Int32   nRestartTime = 0x7fffffff;
-                sal_Int16   nStartSlide = 0;
-                sal_Int16   nEndSlide = 0;
-                sal_uInt32  nFlags = 0;             // Bit 0:   Auto advance
-                                                    // Bit 1    Skip builds ( do not allow slide effects )
-                                                    // Bit 2    Use slide range
-                                                    // Bit 3    Use named show
-                                                    // Bit 4    Browse mode on
-                                                    // Bit 5    Kiosk mode on
-                                                    // Bit 7    loop continously
-                                                    // Bit ?    show scrollbar
-
-                if ( ImplGetPropertyValue( String( RTL_CONSTASCII_USTRINGPARAM( "CustomShow" ) ) ) )
-                {
-                    aCustomShow = ( *(::rtl::OUString*)mAny.getValue() );
-                    if ( aCustomShow.getLength() )
-                    {
-                        nFlags |= 8;
-                    }
-                }
-                if ( ( nFlags & 8 ) == 0 )
-                {
-                    if ( ImplGetPropertyValue( String( RTL_CONSTASCII_USTRINGPARAM( "FirstPage" ) ) ) )
-                    {
-                        ::rtl::OUString aSlideName( *(::rtl::OUString*)mAny.getValue() );
-
-                        std::vector<rtl::OUString>::const_iterator pIter = std::find(
-                                    maSlideNameList.begin(),maSlideNameList.end(),aSlideName);
-
-                        if (pIter != maSlideNameList.end())
-                        {
-                            nStartSlide = pIter - maSlideNameList.begin() + 1;
-                            nFlags |= 4;
-                            nEndSlide = (sal_uInt16)mnPages;
-                        }
-                    }
-                }
-
-                if ( ImplGetPropertyValue( String( RTL_CONSTASCII_USTRINGPARAM( "IsAutomatic" ) ) ) )
-                {
-                    sal_Bool bBool = sal_False;
-                    mAny >>= bBool;
-                    if ( !bBool )
-                        nFlags |= 1;
-                }
-
-                if ( ImplGetPropertyValue( String( RTL_CONSTASCII_USTRINGPARAM( "IsEndless" ) ) ) ) // muesste eigendlich heissen IsNotEndless !=)"?()&
-                {
-                    sal_Bool bBool = sal_False;
-                    mAny >>= bBool;
-                    if ( bBool )
-                        nFlags |= 0x80;
-                }
-                if ( ImplGetPropertyValue( String( RTL_CONSTASCII_USTRINGPARAM( "IsFullScreen" ) ) ) )
-                {
-                    sal_Bool bBool = sal_False;
-                    mAny >>= bBool;
-                    if ( !bBool )
-                        nFlags |= 0x11;
-                }
-
-                mpPptEscherEx->AddAtom( 80, EPP_SSDocInfoAtom, 1 );
-                *mpStrm << nPenColor << nRestartTime << nStartSlide << nEndSlide;
-
-                sal_uInt32 nCustomShowNameLen = aCustomShow.getLength();
-                if ( nCustomShowNameLen > 31 )
-                    nCustomShowNameLen = 31;
-                if ( nCustomShowNameLen )       // named show identifier
-                {
-                    const sal_Unicode* pCustomShow = aCustomShow.getStr();
-                    for ( i = 0; i < nCustomShowNameLen; i++ )
-                    {
-                        *mpStrm << (sal_uInt16)( pCustomShow[ i ] );
-                    }
-                }
-                for ( i = nCustomShowNameLen; i < 32; i++, *mpStrm << (sal_uInt16)0 ) ;
-
-                *mpStrm << nFlags;
-                ::com::sun::star::uno::Reference< ::com::sun::star::presentation::XCustomPresentationSupplier >
-                    aXCPSup( mXModel, ::com::sun::star::uno::UNO_QUERY );
-                if ( aXCPSup.is() )
-                {
-                    ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >
-                        aXCont( aXCPSup->getCustomPresentations() );
-                    if ( aXCont.is() )
-                    {
-                        ::com::sun::star::uno::Sequence< ::rtl::OUString> aNameSeq( aXCont->getElementNames() );
-                        const ::rtl::OUString* pUString = aNameSeq.getArray();
-                        sal_uInt32 nCount = aNameSeq.getLength();
-                        if ( nCount )
-                        {
-                            mpPptEscherEx->OpenContainer( EPP_NamedShows );
-                            sal_uInt32 nCustomShowIndex = 0;
-                            for( i = 0; i < nCount; i++ )        // Anzahl der Custom Shows
-                            {
-                                if ( pUString[ i ].getLength() )
-                                {
-                                    mpPptEscherEx->OpenContainer( EPP_NamedShow, nCustomShowIndex++ );
-
-                                    sal_uInt32 nNamedShowLen = pUString[ i ].getLength();
-                                    if ( nNamedShowLen > 31 )
-                                        nNamedShowLen = 31;
-                                    mpPptEscherEx->AddAtom( nNamedShowLen << 1, EPP_CString );
-                                    const sal_Unicode* pCustomShowName = pUString[ i ].getStr();
-                                    for ( sal_uInt32 k = 0; k < nNamedShowLen; *mpStrm << (sal_uInt16)( pCustomShowName[ k++ ] ) ) ;
-                                    mAny = aXCont->getByName( pUString[ i ] );
-                                    if ( mAny.getValue() )
-                                    {
-
-                                        ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer > aXIC;
-                                        if ( mAny >>= aXIC )
-                                        {
-                                            mpPptEscherEx->BeginAtom();
-
-                                            sal_Int32 nSlideCount = aXIC->getCount();
-                                            for ( sal_Int32 j = 0; j < nSlideCount; j++ )   // Anzahl der Slides
-                                            {
-                                                mAny = aXIC->getByIndex( j );
-                                                if ( mAny.getValue() )
-                                                {
-                                                    ::com::sun::star::uno::Reference<
-                                                        ::com::sun::star::drawing::XDrawPage > aXDrawPage;
-                                                    if ( mAny >>= aXDrawPage )
-                                                    {
-                                                        ::com::sun::star::uno::Reference<
-                                                            ::com::sun::star::container::XNamed >
-                                                            aXName( aXDrawPage, ::com::sun::star::uno::UNO_QUERY );
-                                                        if ( aXName.is() )
-                                                        {
-                                                            ::rtl::OUString aSlideName( aXName->getName() );
-                                                            std::vector<rtl::OUString>::const_iterator pIter = std::find(
-                                                                        maSlideNameList.begin(),maSlideNameList.end(),aSlideName);
-
-                                                            if (pIter != maSlideNameList.end())
-                                                            {
-                                                                sal_uInt32 nPageNumber = pIter - maSlideNameList.begin();
-                                                                *mpStrm << (sal_uInt32)( nPageNumber + 0x100 ); // unique slide id
-                                                            }
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                            mpPptEscherEx->EndAtom( EPP_NamedShowSlides );
-                                        }
-                                    }
-                                    mpPptEscherEx->CloseContainer();            // EPP_NamedShow
-                                }
-                            }
-                            mpPptEscherEx->CloseContainer();                // EPP_NamedShows
-                        }
-                    }
-                }
-            }
-        }
-    }
-    mpPptEscherEx->AddAtom( 0, EPP_EndDocument );
-    mpPptEscherEx->CloseContainer();    // EPP_Document
-    return sal_True;
-};
-
-// ---------------------------------------------------------------------------------------------
-
-sal_Bool PPTWriter::ImplCreateHyperBlob( SvMemoryStream& rStrm )
-{
-    sal_uInt32 nCurrentOfs, nParaOfs, nParaCount = 0;
-
-    nParaOfs = rStrm.Tell();
-    rStrm << (sal_uInt32)0;         // property size
-    rStrm << (sal_uInt32)0;         // property count
-
-    for ( EPPTHyperlink* pLink = (EPPTHyperlink*)maHyperlink.First(); pLink; pLink = (EPPTHyperlink*)maHyperlink.Next() )
-    {
-        nParaCount += 6;
-        rStrm   << (sal_uInt32)3    // Type VT_I4
-                << (sal_uInt32)7    // (VTI4 - Private1)
-                << (sal_uInt32)3    // Type VT_I4
-                << (sal_uInt32)6    // (VTI4 - Private2)
-                << (sal_uInt32)3    // Type VT_I4
-                << (sal_uInt32)0;   // (VTI4 - Private3)
-
-        // INFO
-        // HIWORD:  = 0 : do not change anything
-        //          = 1 : replace the hyperlink with the target and subadress in the following two VTLPWSTR
-        //          = 2 : delete the hyperlink
-        // LOWORD:  = 0 : graphic shown as background (link)
-        //          = 1 : graphic shown as shape (link)
-        //          = 2 : graphic is used to fill a shape
-        //          = 3 : graphic used to fill a shape outline (future use)
-        //          = 4 : hyperlink attached to a shape
-        //          = 5 :    "         "      " " (Word) field
-        //          = 6 :    "         "      " " (Excel) range
-        //          = 7 :    "         "      " " (PPT) text range
-        //          = 8 :    "         "      " " (Project) task
-
-        sal_uInt32 nUrlLen = pLink->aURL.Len();
-        const sal_Unicode* pUrl = pLink->aURL.GetBuffer();
-
-        sal_uInt32 nInfo = 7;
-
-        rStrm   << (sal_uInt32)3    // Type VT_I4
-                << nInfo;       // Info
-
-        switch( pLink->nType & 0xff )
-        {
-            case 1 :        // click action to slidenumber
-            {
-                rStrm << (sal_uInt32)0x1f << (sal_uInt32)1 << (sal_uInt32)0;    // path
-                rStrm << (sal_uInt32)0x1f << (sal_uInt32)( nUrlLen + 1 );
-                for ( sal_uInt32 i = 0; i < nUrlLen; i++ )
-                {
-                    rStrm << pUrl[ i ];
-                }
-                rStrm << (sal_uInt16)0;
-            }
-            break;
-            case 2 :
-            {
-                sal_uInt32 i;
-
-                rStrm   << (sal_uInt32)0x1f
-                        << (sal_uInt32)( nUrlLen + 1 );
-                for ( i = 0; i < nUrlLen; i++ )
-                {
-                    rStrm << pUrl[ i ];
-                }
-                if ( ! ( i & 1 ) )
-                    rStrm << (sal_uInt16)0;
-                rStrm   << (sal_uInt16)0
-                        << (sal_uInt32)0x1f
-                        << (sal_uInt32)1
-                        << (sal_uInt32)0;
-            }
-            break;
-        }
-    }
-    nCurrentOfs = rStrm.Tell();
-    rStrm.Seek( nParaOfs );
-    rStrm << (sal_uInt32)( nCurrentOfs - ( nParaOfs + 4 ) );
-    rStrm << nParaCount;
-    rStrm.Seek( nCurrentOfs );
-    return sal_True;
-}
-
-// ---------------------------------------------------------------------------------------------
-
-sal_Bool PPTWriter::ImplCreateMainNotes()
-{
-    EscherSolverContainer aSolverContainer;
-
-    mpPptEscherEx->PtReplaceOrInsert( EPP_Persist_MainNotes, mpStrm->Tell() );
-    mpPptEscherEx->OpenContainer( EPP_Notes );
-    mpPptEscherEx->AddAtom( 8, EPP_NotesAtom, 1 );
-    *mpStrm << (sal_uInt32)0x80000001                                               // Number that identifies this slide
-            << (sal_uInt32)0;                                                       // follow nothing
-    mpPptEscherEx->OpenContainer( EPP_PPDrawing );
-    mpPptEscherEx->OpenContainer( ESCHER_DgContainer );
-    mpPptEscherEx->EnterGroup(0,0);
-
-    ImplWritePage( GetLayout( 20 ), aSolverContainer, NOTICE, sal_True );
-
-    mpPptEscherEx->LeaveGroup();
-    mpPptEscherEx->OpenContainer( ESCHER_SpContainer );
-    mpPptEscherEx->AddShape( ESCHER_ShpInst_Rectangle, 0xc00 );
-    EscherPropertyContainer aPropOpt;
-    aPropOpt.AddOpt( ESCHER_Prop_fillColor, 0xffffff );                             // stock valued fill color
-    aPropOpt.AddOpt( ESCHER_Prop_fillBackColor, 0 );
-    aPropOpt.AddOpt( ESCHER_Prop_fillRectRight, 0x68bdde );
-    aPropOpt.AddOpt( ESCHER_Prop_fillRectBottom, 0x8b9f8e );
-    aPropOpt.AddOpt( ESCHER_Prop_fNoFillHitTest, 0x120012 );
-    aPropOpt.AddOpt( ESCHER_Prop_fNoLineDrawDash, 0 );
-    aPropOpt.AddOpt( ESCHER_Prop_bWMode, ESCHER_wDontShow );
-    aPropOpt.AddOpt( ESCHER_Prop_fBackground, 0x10001 );                            // if true, this is the background shape
-    aPropOpt.Commit( *mpStrm );
-    mpPptEscherEx->CloseContainer();    // ESCHER_SpContainer
-
-    aSolverContainer.WriteSolver( *mpStrm );
-
-    mpPptEscherEx->CloseContainer();    // ESCHER_DgContainer
-    mpPptEscherEx->CloseContainer();    // EPP_Drawing
-    mpPptEscherEx->AddAtom( 32, EPP_ColorSchemeAtom, 0, 1 );
-    *mpStrm << (sal_uInt32)0xffffff << (sal_uInt32)0x000000 << (sal_uInt32)0x808080 << (sal_uInt32)0x000000 << (sal_uInt32)0x99cc00 << (sal_uInt32)0xcc3333 << (sal_uInt32)0xffcccc << (sal_uInt32)0xb2b2b2;
-    mpPptEscherEx->CloseContainer();    // EPP_Notes
-    return sal_True;
-}
-
-// ---------------------------------------------------------------------------------------------
-
-static rtl::OUString getInitials( const rtl::OUString& rName )
-{
-    rtl::OUString sInitials;
-
-    const sal_Unicode * pStr = rName.getStr();
-    sal_Int32 nLength = rName.getLength();
-
-    while( nLength )
-    {
-        // skip whitespace
-        while( nLength && (*pStr <= ' ') )
-        {
-            nLength--; pStr++;
-        }
-
-        // take letter
-        if( nLength )
-        {
-            sInitials += rtl::OUString( *pStr );
-            nLength--; pStr++;
-        }
-
-        // skip letters until whitespace
-        while( nLength && (*pStr > ' ') )
-        {
-            nLength--; pStr++;
-        }
-    }
-
-    return sInitials;
-}
-
-void ImplExportComments( uno::Reference< drawing::XDrawPage > xPage, SvMemoryStream& rBinaryTagData10Atom )
-{
-    try
-    {
-        uno::Reference< office::XAnnotationAccess > xAnnotationAccess( xPage, uno::UNO_QUERY_THROW );
-        uno::Reference< office::XAnnotationEnumeration > xAnnotationEnumeration( xAnnotationAccess->createAnnotationEnumeration() );
-
-        sal_Int32 nIndex = 1;
-
-        while( xAnnotationEnumeration->hasMoreElements() )
-        {
-            EscherExContainer aComment10( rBinaryTagData10Atom, EPP_Comment10 );
-            {
-                uno::Reference< office::XAnnotation > xAnnotation( xAnnotationEnumeration->nextElement() );
-
-                geometry::RealPoint2D aRealPoint2D( xAnnotation->getPosition() );
-                MapMode aMapDest( MAP_INCH, Point(), Fraction( 1, 576 ), Fraction( 1, 576 ) );
-                Point aPoint( OutputDevice::LogicToLogic( Point( static_cast< sal_Int32 >( aRealPoint2D.X * 100.0 ),
-                    static_cast< sal_Int32 >( aRealPoint2D.Y * 100.0 ) ), MAP_100TH_MM, aMapDest ) );
-
-                rtl::OUString sAuthor( xAnnotation->getAuthor() );
-                uno::Reference< text::XText > xText( xAnnotation->getTextRange() );
-                rtl::OUString sText( xText->getString() );
-                rtl::OUString sInitials( getInitials( sAuthor ) );
-                util::DateTime aDateTime( xAnnotation->getDateTime() );
-                if ( sAuthor.getLength() )
-                    PPTWriter::WriteCString( rBinaryTagData10Atom, sAuthor, 0 );
-                if ( sText.getLength() )
-                    PPTWriter::WriteCString( rBinaryTagData10Atom, sText, 1 );
-                if ( sInitials.getLength() )
-                    PPTWriter::WriteCString( rBinaryTagData10Atom, sInitials, 2 );
-
-                sal_Int16 nMilliSeconds = aDateTime.HundredthSeconds * 10;
-                EscherExAtom aCommentAtom10( rBinaryTagData10Atom, EPP_CommentAtom10 );
-                rBinaryTagData10Atom << nIndex++
-                                     << aDateTime.Year
-                                     << aDateTime.Month
-                                     << aDateTime.Day   // todo: day of week
-                                     << aDateTime.Day
-                                     << aDateTime.Hours
-                                     << aDateTime.Minutes
-                                     << aDateTime.Seconds
-                                     << nMilliSeconds
-                                     << static_cast< sal_Int32 >( aPoint.X() )
-                                     << static_cast< sal_Int32 >( aPoint.Y() );
-            }
-        }
-    }
-    catch ( uno::Exception& )
-    {
-    }
-}
-
-// ---------------------------------------------------------------------------------------------
-
-void PPTWriter::ImplWriteNotes( sal_uInt32 nPageNum )
-{
-    mpPptEscherEx->PtReplaceOrInsert( EPP_Persist_Notes | nPageNum, mpStrm->Tell() );
-    mpPptEscherEx->OpenContainer( EPP_Notes );
-    mpPptEscherEx->AddAtom( 8, EPP_NotesAtom, 1 );
-    *mpStrm << (sal_uInt32)nPageNum + 0x100
-            << (sal_uInt16)3                                        // follow master ....
-            << (sal_uInt16)0;
-
-    ImplCreateHeaderFooters( mXPagePropSet );
-
-    EscherSolverContainer aSolverContainer;
-
-    mpPptEscherEx->OpenContainer( EPP_PPDrawing );
-    mpPptEscherEx->OpenContainer( ESCHER_DgContainer );
-    mpPptEscherEx->EnterGroup(0,0);
-
-    ImplWritePage( GetLayout( 20 ), aSolverContainer, NOTICE, sal_False );  // Die Shapes der Seite werden im PPT Dok. erzeugt
-
-    mpPptEscherEx->LeaveGroup();
-    mpPptEscherEx->OpenContainer( ESCHER_SpContainer );
-    mpPptEscherEx->AddShape( ESCHER_ShpInst_Rectangle, 0xc00 ); // Flags: Connector | Background | HasSpt
-    EscherPropertyContainer aPropOpt;
-    aPropOpt.AddOpt( ESCHER_Prop_fillColor, 0xffffff );     // stock valued fill color
-    aPropOpt.AddOpt( ESCHER_Prop_fillBackColor, 0 );
-    aPropOpt.AddOpt( ESCHER_Prop_fillRectRight, 0x8b9f8e );
-    aPropOpt.AddOpt( ESCHER_Prop_fillRectBottom, 0x68bdde );
-    aPropOpt.AddOpt( ESCHER_Prop_fNoFillHitTest, 0x120012 );
-    aPropOpt.AddOpt( ESCHER_Prop_fNoLineDrawDash, 0x80000 );
-    aPropOpt.AddOpt( ESCHER_Prop_bWMode, ESCHER_wDontShow );
-    aPropOpt.AddOpt( ESCHER_Prop_fBackground, 0x10001 );
-    aPropOpt.Commit( *mpStrm );
-    mpPptEscherEx->CloseContainer();    // ESCHER_SpContainer
-
-    aSolverContainer.WriteSolver( *mpStrm );
-
-    mpPptEscherEx->CloseContainer();    // ESCHER_DgContainer
-    mpPptEscherEx->CloseContainer();    // EPP_Drawing
-    mpPptEscherEx->AddAtom( 32, EPP_ColorSchemeAtom, 0, 1 );
-    *mpStrm << (sal_uInt32)0xffffff << (sal_uInt32)0x000000 << (sal_uInt32)0x808080 << (sal_uInt32)0x000000 << (sal_uInt32)0x99cc00 << (sal_uInt32)0xcc3333 << (sal_uInt32)0xffcccc << (sal_uInt32)0xb2b2b2;
-    mpPptEscherEx->CloseContainer();    // EPP_Notes
-};
-
-void PPTWriter::ImplWriteBackground( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet )
-{
-    //************************ ******
-    //** DEFAULT BACKGROUND SHAPE **
-    //******************************
-
-    sal_uInt32 nFillColor = 0xffffff;
-    sal_uInt32 nFillBackColor = 0;
-
-    mpPptEscherEx->OpenContainer( ESCHER_SpContainer );
-    mpPptEscherEx->AddShape( ESCHER_ShpInst_Rectangle, 0xc00 );                     // Flags: Connector | Background | HasSpt
-    Point aEmptyPoint = Point();
-    Rectangle aRect( aEmptyPoint, Size( 28000, 21000 ) );
-    EscherPropertyContainer aPropOpt( mpPptEscherEx->GetGraphicProvider(), mpPicStrm, aRect );
-    aPropOpt.AddOpt( ESCHER_Prop_fillType, ESCHER_FillSolid );
-    ::com::sun::star::drawing::FillStyle aFS( ::com::sun::star::drawing::FillStyle_NONE );
-    if ( ImplGetPropertyValue( rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "FillStyle" ) ) ) )
-        mAny >>= aFS;
-
-    switch( aFS )
-    {
-        case ::com::sun::star::drawing::FillStyle_GRADIENT :
-        {
-            aPropOpt.CreateGradientProperties( rXPropSet );
-            aPropOpt.AddOpt( ESCHER_Prop_fNoFillHitTest, 0x1f001e );
-            aPropOpt.GetOpt( ESCHER_Prop_fillColor, nFillColor );
-            aPropOpt.GetOpt( ESCHER_Prop_fillBackColor, nFillBackColor );
-        }
-        break;
-
-        case ::com::sun::star::drawing::FillStyle_BITMAP :
-            aPropOpt.CreateGraphicProperties( rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "FillBitmapURL" ) ), sal_True );
-        break;
-
-        case ::com::sun::star::drawing::FillStyle_HATCH :
-            aPropOpt.CreateGraphicProperties( rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "FillHatch" ) ), sal_True );
-        break;
-
-        case ::com::sun::star::drawing::FillStyle_SOLID :
-        {
-            if ( ImplGetPropertyValue( rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "FillColor" ) ) ) )
-            {
-                nFillColor = mpPptEscherEx->GetColor( *((sal_uInt32*)mAny.getValue()) );
-                nFillBackColor = nFillColor ^ 0xffffff;
-            }
-        }   // PASSTHROUGH INTENDED
-        case ::com::sun::star::drawing::FillStyle_NONE :
-        default:
-            aPropOpt.AddOpt( ESCHER_Prop_fNoFillHitTest, 0x120012 );
-        break;
-    }
-    aPropOpt.AddOpt( ESCHER_Prop_fillColor, nFillColor );
-    aPropOpt.AddOpt( ESCHER_Prop_fillBackColor, nFillBackColor );
-    aPropOpt.AddOpt( ESCHER_Prop_fillRectRight, PPTtoEMU( maDestPageSize.Width ) );
-    aPropOpt.AddOpt( ESCHER_Prop_fillRectBottom, PPTtoEMU( maDestPageSize.Height ) );
-    aPropOpt.AddOpt( ESCHER_Prop_fNoLineDrawDash, 0x80000 );
-    aPropOpt.AddOpt( ESCHER_Prop_bWMode, ESCHER_bwWhite );
-    aPropOpt.AddOpt( ESCHER_Prop_fBackground, 0x10001 );
-    aPropOpt.Commit( *mpStrm );
-    mpPptEscherEx->CloseContainer();    // ESCHER_SpContainer
-}
-
-void PPTWriter::ImplWriteVBA()
-{
-    if ( mpVBA )
-    {
-        mpVBA->Seek( STREAM_SEEK_TO_END );
-        sal_uInt32 nLen = mpVBA->Tell();
-        if ( nLen > 8 )
-        {
-            nLen -= 8;
-            mnVBAOleOfs = mpStrm->Tell();
-            mpPptEscherEx->BeginAtom();
-            mpStrm->Write( (sal_Int8*)mpVBA->GetData() + 8, nLen );
-            mpPptEscherEx->EndAtom( EPP_ExOleObjStg, 0, 1 );
-        }
-    }
-}
-
-// ---------------------------------------------------------------------------------------------
-
-void PPTWriter::ImplWriteOLE( )
-{
-    PPTExOleObjEntry* pPtr;
-
-    SvxMSExportOLEObjects aOleExport( mnCnvrtFlags );
-
-    for ( pPtr = (PPTExOleObjEntry*)maExOleObj.First(); pPtr;
-        pPtr = (PPTExOleObjEntry*)maExOleObj.Next() )
-    {
-        SvMemoryStream* pStrm = NULL;
-        pPtr->nOfsB = mpStrm->Tell();
-        switch ( pPtr->eType )
-        {
-            case NORMAL_OLE_OBJECT :
-            {
-                SdrObject* pSdrObj = GetSdrObjectFromXShape( pPtr->xShape );
-                if ( pSdrObj && pSdrObj->ISA( SdrOle2Obj ) )
-                {
-                    ::uno::Reference < embed::XEmbeddedObject > xObj( ( (SdrOle2Obj*) pSdrObj )->GetObjRef() );
-                    if( xObj.is() )
-                    {
-                        SvStorageRef xTempStorage( new SvStorage( new SvMemoryStream(), sal_True ) );
-                        aOleExport.ExportOLEObject( xObj, *xTempStorage );
-
-                        //TODO/MBA: testing
-                        String aPersistStream( String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( SVEXT_PERSIST_STREAM ) ) );
-                        SvMemoryStream aStream;
-                        SvStorageRef xCleanStorage( new SvStorage( sal_False, aStream ) );
-                        xTempStorage->CopyTo( xCleanStorage );
-                        // create a dummy content stream, the dummy content is necessary for ppt, but not for
-                        // doc files, so we can't share code.
-                        SotStorageStreamRef xStm = xCleanStorage->OpenSotStream( aPersistStream, STREAM_STD_READWRITE );
-                        *xStm   << (sal_uInt32)0        // no ClipboardId
-                                << (sal_uInt32)4        // no target device
-                                << (sal_uInt32)1        // aspect ratio
-                                << (sal_Int32)-1        // L-Index
-                                << (sal_uInt32)0        // Advanced Flags
-                                << (sal_uInt32)0        // compression
-                                << (sal_uInt32)0        // Size
-                                << (sal_uInt32)0        //  "
-                                << (sal_uInt32)0;
-                        pStrm = xCleanStorage->CreateMemoryStream();
-                    }
-                }
-            }
-            break;
-
-            case OCX_CONTROL :
-            {
-                if ( pPtr->xControlModel.is() )
-                {
-                    String aName;
-                    ::com::sun::star::awt::Size aSize;
-                    SvStorageRef xDest( new SvStorage( new SvMemoryStream(), sal_True ) );
-                    sal_Bool bOk = SvxMSConvertOCXControls::WriteOCXStream( xDest, pPtr->xControlModel, aSize, aName );
-                    if ( bOk )
-                        pStrm = xDest->CreateMemoryStream();
-                }
-            }
-        }
-        if ( pStrm )
-        {
-            mpPptEscherEx->BeginAtom();
-            pStrm->Seek( STREAM_SEEK_TO_END );
-            sal_uInt32 npStrmSize = pStrm->Tell();
-            *mpStrm << npStrmSize;                  // uncompressed size
-
-            pStrm->Seek( 0 );
-            ZCodec aZCodec( 0x8000, 0x8000 );
-            aZCodec.BeginCompression();
-            aZCodec.Compress( *pStrm, *mpStrm );
-            aZCodec.EndCompression();
-            delete pStrm;
-            mpPptEscherEx->EndAtom( EPP_ExOleObjStg, 0, 1 );
-        }
-    }
-}
-
-// ---------------------------------------------------------------------------------------------
-// PersistantTable und UserEditAtom schreiben
-
-sal_Bool PPTWriter::ImplWriteAtomEnding()
-{
-
-#define EPP_LastViewTypeNone        0
-#define EPP_LastViewTypeSlideView   1
-#define EPP_LastViewTypeOutlineView 2
-#define EPP_LastViewTypeNotes       3
-
-    sal_uInt32  i, nPos, nOfs, nPersistOfs = mpStrm->Tell();
-    sal_uInt32  nPersistEntrys = 0;
-    *mpStrm << (sal_uInt32)0 << (sal_uInt32)0 << (sal_uInt32)0;         // Record Header und ersten Eintrag ueberspringen
-
-    // Document pesist schreiben
-        nPersistEntrys++;
-        *mpStrm << (sal_uInt32)0;
-    // MasterPages persists schreiben
-    for ( i = 0; i < mnMasterPages; i++ )
-    {
-        nOfs = mpPptEscherEx->PtGetOffsetByID( EPP_Persist_MainMaster | i );
-        if ( nOfs )
-        {
-            *mpStrm << nOfs;
-            mpPptEscherEx->InsertAtPersistOffset( EPP_MAINMASTER_PERSIST_KEY | i, ++nPersistEntrys );
-        }
-    }
-    // MainNotesMaster persist schreiben
-    nOfs = mpPptEscherEx->PtGetOffsetByID( EPP_Persist_MainNotes );
-    if ( nOfs )
-    {
-        *mpStrm << nOfs;
-        mpPptEscherEx->InsertAtPersistOffset( EPP_MAINNOTESMASTER_PERSIST_KEY, ++nPersistEntrys );
-    }
-    // Slide persists schreiben -> es gilt hier auch den EPP_SlidePersistAtome mit einem gueltigen wert zu beschreiben
-    for ( i = 0; i < mnPages; i++ )
-    {
-        nOfs = mpPptEscherEx->PtGetOffsetByID( EPP_Persist_Slide | i );
-        if ( nOfs )
-        {
-            *mpStrm << nOfs;
-            mpPptEscherEx->InsertAtPersistOffset( EPP_MAINSLIDE_PERSIST_KEY | i, ++nPersistEntrys );
-        }
-    }
-    // Notes persists schreiben
-    for ( i = 0; i < mnPages; i++ )
-    {
-        nOfs = mpPptEscherEx->PtGetOffsetByID( EPP_Persist_Notes | i );
-        if ( nOfs )
-        {
-            *mpStrm << nOfs;
-            mpPptEscherEx->InsertAtPersistOffset( EPP_MAINNOTES_PERSIST_KEY | i, ++nPersistEntrys );
-        }
-    }
-    // Ole persists
-    PPTExOleObjEntry* pPtr;
-    for ( pPtr = (PPTExOleObjEntry*)maExOleObj.First(); pPtr; pPtr = (PPTExOleObjEntry*)maExOleObj.Next() )
-    {
-        nOfs = mpPptEscherEx->PtGetOffsetByID( EPP_Persist_ExObj );
-        if ( nOfs )
-        {
-            nPersistEntrys++;
-            *mpStrm << pPtr->nOfsB;
-            sal_uInt32 nOldPos, nPersOfs = nOfs + pPtr->nOfsA + 16 + 8;     // 8 bytes atom header, +16 to the persist entry
-            nOldPos = mpStrm->Tell();
-            mpStrm->Seek( nPersOfs );
-            *mpStrm << nPersistEntrys;
-            mpStrm->Seek( nOldPos );
-        }
-    }
-    // VB persist
-    if ( mnVBAOleOfs && mpVBA )
-    {
-        nOfs = mpPptEscherEx->PtGetOffsetByID( EPP_Persist_VBAInfoAtom );
-        if ( nOfs )
-        {
-            nPersistEntrys++;
-            sal_uInt32 n1, n2;
-
-            mpVBA->Seek( 0 );
-            *mpVBA >> n1
-                   >> n2;
-
-            *mpStrm << mnVBAOleOfs;
-            sal_uInt32 nOldPos = mpStrm->Tell();
-            mpStrm->Seek( nOfs );               // Fill the VBAInfoAtom with the correct index to the persisttable
-            *mpStrm << nPersistEntrys
-                    << n1
-                    << 2;
-            mpStrm->Seek( nOldPos );
-
-        }
-    }
-    nPos = mpStrm->Tell();
-    mpStrm->Seek( nPersistOfs );
-    mpPptEscherEx->AddAtom( ( nPersistEntrys + 1 ) << 2, EPP_PersistPtrIncrementalBlock );      // Record Header eintragen
-    *mpStrm << (sal_uInt32)( ( nPersistEntrys << 20 ) | 1 );
-    mpStrm->Seek( nPos );
-
-    *mpCurUserStrm << (sal_uInt32)nPos;             // offset to current edit setzen
-    mpPptEscherEx->AddAtom( 28, EPP_UserEditAtom );
-    *mpStrm << (sal_Int32)0x100                     // last slide ID
-            << (sal_uInt32)0x03000dbc               // minor and major app version that did the save
-            << (sal_uInt32)0                        // offset last save, 0 after a full save
-            << nPersistOfs                      // File offset to persist pointers for this save operation
-            << (sal_uInt32)1                        // Persist reference to the document persist object
-            << (sal_uInt32)nPersistEntrys           // max persists written, Seed value for persist object id management
-            << (sal_Int16)EPP_LastViewTypeSlideView // last view type
-            << (sal_Int16)0x12;                     // padword
-
-    return sal_True;
-}
-
-// ---------------------
-// - exported function -
-// ---------------------
-
-extern "C" SAL_DLLPUBLIC_EXPORT sal_Bool __LOADONCALLAPI ExportPPT( SvStorageRef& rSvStorage,
-                    ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > & rXModel,
-                        ::com::sun::star::uno::Reference< ::com::sun::star::task::XStatusIndicator > & rXStatInd,
-                            SvMemoryStream* pVBA, sal_uInt32 nCnvrtFlags )
-{
-    PPTWriter*  pPPTWriter;
-    sal_Bool bStatus = sal_False;
-
-    pPPTWriter = new PPTWriter( rSvStorage, rXModel, rXStatInd, pVBA, nCnvrtFlags );
-    if ( pPPTWriter )
-    {
-        pPPTWriter->exportPPT();
-        bStatus = ( pPPTWriter->IsValid() == sal_True );
-        delete pPPTWriter;
-    }
-
-    return bStatus;
-}
-
-extern "C" SAL_DLLPUBLIC_EXPORT sal_Bool __LOADONCALLAPI SaveVBA( SfxObjectShell& rDocShell, SvMemoryStream*& pBas )
-{
-    SvStorageRef xDest( new SvStorage( new SvMemoryStream(), sal_True ) );
-    SvxImportMSVBasic aMSVBas( rDocShell, *xDest, sal_False, sal_False );
-    aMSVBas.SaveOrDelMSVBAStorage( sal_True, String( RTL_CONSTASCII_USTRINGPARAM("_MS_VBA_Overhead") ) );
-
-    SvStorageRef xOverhead = xDest->OpenSotStorage( String( RTL_CONSTASCII_USTRINGPARAM("_MS_VBA_Overhead") ) );
-    if ( xOverhead.Is() && ( xOverhead->GetError() == SVSTREAM_OK ) )
-    {
-        SvStorageRef xOverhead2 = xOverhead->OpenSotStorage( String( RTL_CONSTASCII_USTRINGPARAM("_MS_VBA_Overhead") ) );
-        if ( xOverhead2.Is() && ( xOverhead2->GetError() == SVSTREAM_OK ) )
-        {
-            SvStorageStreamRef xTemp = xOverhead2->OpenSotStream( String( RTL_CONSTASCII_USTRINGPARAM("_MS_VBA_Overhead2") ) );
-            if ( xTemp.Is() && ( xTemp->GetError() == SVSTREAM_OK ) )
-            {
-                sal_uInt32 nLen = xTemp->GetSize();
-                if ( nLen )
-                {
-                    char* pTemp = new char[ nLen ];
-                    if ( pTemp )
-                    {
-                        xTemp->Seek( STREAM_SEEK_TO_BEGIN );
-                        xTemp->Read( pTemp, nLen );
-                        pBas = new SvMemoryStream( pTemp, nLen, STREAM_READ );
-                        pBas->ObjectOwnsMemory( sal_True );
-                        return sal_True;
-                    }
-                }
-            }
-        }
-    }
-
-    return sal_False;
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/filter/html/htmlex.cxx b/sd/source/filter/html/htmlex.cxx
deleted file mode 100644
index dd5ffc6..0000000
--- a/sd/source/filter/html/htmlex.cxx
+++ /dev/null
@@ -1,3361 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org.  If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_sd.hxx"
-
-#include "htmlex.hxx"
-#include <com/sun/star/document/XExporter.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <com/sun/star/document/XFilter.hpp>
-
-#include <rtl/uri.hxx>
-#include <comphelper/processfactory.hxx>
-#include <osl/file.hxx>
-#include <tools/fsys.hxx>
-#include <unotools/pathoptions.hxx>
-#include <svtools/FilterConfigItem.hxx>
-#include <unotools/ucbstreamhelper.hxx>
-#include <unotools/localfilehelper.hxx>
-#include <com/sun/star/frame/XStorable.hpp>
-#include <sfx2/progress.hxx>
-#include <sfx2/progress.hxx>
-#include <vcl/wrkwin.hxx>
-#include <svl/aeitem.hxx>
-#include <svx/svditer.hxx>
-#include <svtools/imaprect.hxx>
-#include <svtools/imapcirc.hxx>
-#include <svtools/imappoly.hxx>
-#include <vcl/msgbox.hxx>
-#include <sfx2/app.hxx>
-#include <editeng/outlobj.hxx>
-#include <editeng/editobj.hxx>
-#include <svx/svdopath.hxx>
-#include <svx/xoutbmp.hxx>
-#include <svtools/htmlout.hxx>
-#include <sfx2/docfile.hxx>
-#include <vcl/cvtgrf.hxx>
-#include <svtools/colorcfg.hxx>
-#include <svtools/filter.hxx>
-#include <editeng/colritem.hxx>
-#include <editeng/editeng.hxx>
-#include <editeng/wghtitem.hxx>
-#include <editeng/udlnitem.hxx>
-#include <editeng/postitem.hxx>
-#include <editeng/crsditem.hxx>
-#include <editeng/flditem.hxx>
-#include <sfx2/dispatch.hxx>
-#include <sfx2/fcontnr.hxx>
-#include <svl/style.hxx>
-#define _SVSTDARR_USHORTS
-#include <svl/svstdarr.hxx>
-#include <editeng/frmdiritem.hxx>
-#include <svx/svdoutl.hxx>
-#include <tools/urlobj.hxx>               // INetURLObject
-#include <vcl/bmpacc.hxx>
-#include <svtools/sfxecode.hxx>
-#include <com/sun/star/beans/PropertyState.hpp>
-#include <tools/resmgr.hxx>
-#include "comphelper/anytostring.hxx"
-#include "cppuhelper/exc_hlp.hxx"
-
-#include "drawdoc.hxx"
-#include "Outliner.hxx"
-#include "sdpage.hxx"
-#include "sdattr.hxx"
-#include "glob.hrc"
-#include "anminfo.hxx"
-#include "imapinfo.hxx"
-#include "sdresid.hxx"
-#include "buttonset.hxx"
-#include <basegfx/polygon/b2dpolygon.hxx>
-
-using ::rtl::OUString;
-using ::rtl::OString;
-using namespace ::com::sun::star;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::frame;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::document;
-
-#define KEY_QUALITY		"JPG-EXPORT-QUALITY"
-
-// Parameter aus Itemset abfragen
-
-#define RESTOHTML( res ) StringToHTMLString(String(SdResId(res)))
-#define S2H( str ) StringToHTMLString( str )
-
-// bei Aenderungen auch NUM_BUTTONS in pubdlg.hxx aendern!!
-const char *pButtonNames[NUM_BUTTONS] =
-{
-    "first-inactive.png",
-    "first.png",
-    "left-inactive.png",
-    "left.png",
-    "right-inactive.png",
-    "right.png",
-    "last-inactive.png",
-    "last.png",
-    "home.png",
-    "text.png",
-    "expand.png",
-    "collapse.png",
-};
-
-#define BTN_FIRST_0	0
-#define BTN_FIRST_1	1
-#define BTN_PREV_0	2
-#define BTN_PREV_1	3
-#define BTN_NEXT_0	4
-#define BTN_NEXT_1	5
-#define BTN_LAST_0	6
-#define BTN_LAST_1	7
-#define BTN_INDEX	8
-#define BTN_TEXT	9
-#define BTN_MORE	10
-#define BTN_LESS	11
-
-// Fuer Detectfilter
-#define CALC_OPTIONS		"9,34,SYSTEM"
-
-// *********************************************************************
-// Hilfsklasse fuer das simple erzeugen von Dateien lokal/remote
-// *********************************************************************
-class EasyFile
-{
-private:
-    SvStream*	pOStm;
-    SfxMedium*	pMedium;
-    bool		bOpen;
-
-public:
-
-    EasyFile();
-    ~EasyFile();
-
-    sal_uLong createStream( const String& rUrl, SvStream*& rpStr );
-    sal_uLong createFileName(  const String& rUrl, String& rFileName );
-    sal_uLong close();
-};
-
-// *********************************************************************
-// Hilfsklasse fuer das einbinden von Textattributen in die Html-Ausgabe
-// *********************************************************************
-class HtmlState
-{
-private:
-    bool mbColor;
-    bool mbWeight;
-    bool mbItalic;
-    bool mbUnderline;
-    bool mbStrike;
-    bool mbLink;
-    Color maColor;
-    Color maDefColor;
-    String maLink;
-    String maTarget;
-
-public:
-    HtmlState( Color aDefColor );
-
-    String SetWeight( bool bWeight );
-    String SetItalic( bool bItalic );
-    String SetUnderline( bool bUnderline );
-    String SetColor( Color aColor );
-    String SetStrikeout( bool bStrike );
-    String SetLink( const String& aLink, const String& aTarget );
-    String Flush();
-};
-
-// =====================================================================
-// alle noch offennen Tags schliessen
-// =====================================================================
-String HtmlState::Flush()
-{
-    String aStr, aEmpty;
-
-    aStr += SetWeight(false);
-    aStr += SetItalic(false);
-    aStr += SetUnderline(false);
-    aStr += SetStrikeout(false);
-    aStr += SetColor(maDefColor);
-    aStr += SetLink(aEmpty,aEmpty);
-
-    return aStr;
-}
-
-// =====================================================================
-// c'tor mit Defaultfarbe fuer die Seite
-// =====================================================================
-HtmlState::HtmlState( Color aDefColor )
-{
-    mbColor = false;
-    mbWeight = false;
-    mbItalic = false;
-    mbUnderline = false;
-    mbLink = false;
-    mbStrike = false;
-    maDefColor = aDefColor;
-}
-
-// =====================================================================
-// aktiviert/deaktiviert Fettdruck
-// =====================================================================
-String HtmlState::SetWeight( bool bWeight )
-{
-    String aStr;
-
-    if(bWeight && !mbWeight)
-        aStr.AppendAscii( "<b>" );
-    else if(!bWeight && mbWeight)
-        aStr.AppendAscii( "</b>" );
-
-    mbWeight = bWeight;
-    return aStr;
-}
-
-// =====================================================================
-// aktiviert/deaktiviert Italic
-// =====================================================================
-String HtmlState::SetItalic( bool bItalic )
-{
-    String aStr;
-
-    if(bItalic && !mbItalic)
-        aStr.AppendAscii( "<i>" );
-    else if(!bItalic && mbItalic)
-        aStr.AppendAscii( "</i>" );
-
-    mbItalic = bItalic;
-    return aStr;
-}
-
-// =====================================================================
-// aktiviert/deaktiviert Unterstrichen
-// =====================================================================
-String HtmlState::SetUnderline( bool bUnderline )
-{
-    String aStr;
-
-    if(bUnderline && !mbUnderline)
-        aStr.AppendAscii( "<u>" );
-    else if(!bUnderline && mbUnderline)
-        aStr.AppendAscii( "</u>" );
-
-    mbUnderline = bUnderline;
-    return aStr;
-}
-
-// =====================================================================
-// aktiviert/deaktiviert Durchstreichen
-// =====================================================================
-String HtmlState::SetStrikeout( bool bStrike )
-{
-    String aStr;
-
-    if(bStrike && !mbStrike)
-        aStr.AppendAscii( "<strike>" );
-    else if(!bStrike && mbStrike)
-        aStr.AppendAscii( "</strike>" );
-
-    mbStrike = bStrike;
-    return aStr;
-}
-
-// =====================================================================
-// Setzt die angegebenne Textfarbe
-// =====================================================================
-String HtmlState::SetColor( Color aColor )
-{
-    String aStr;
-
-    if(mbColor && aColor == maColor)
-        return aStr;
-
-    if(mbColor)
-    {
-        aStr.AppendAscii( "</font>" );
-        mbColor = false;
-    }
-
-    if(aColor != maDefColor)
-    {
-        maColor = aColor;
-
-        aStr.AppendAscii( "<font color=\"" );
-        aStr += HtmlExport::ColorToHTMLString(aColor);
-        aStr.AppendAscii( "\">" );
-
-        mbColor = true;
-    }
-
-    return aStr;
-}
-
-// =====================================================================
-// aktiviert/deaktiviert einen Hyperlink
-// =====================================================================
-String HtmlState::SetLink( const String& aLink, const String& aTarget )
-{
-    String aStr;
-
-    if(mbLink&&maLink == aLink&&maTarget==aTarget)
-        return aStr;
-
-    if(mbLink)
-    {
-        aStr.AppendAscii( "</a>" );
-        mbLink = false;
-    }
-
-    if(aLink.Len())
-    {
-        aStr.AppendAscii( "<a href=\"" );
-        aStr += HtmlExport::StringToURL(aLink);
-        if(aTarget.Len())
-        {
-            aStr.AppendAscii( "\" target=\"" );
-            aStr += aTarget;
-        }
-        aStr.AppendAscii( "\">" );
-        mbLink = true;
-        maLink = aLink;
-        maTarget = aTarget;
-    }
-
-    return aStr;
-}
-
-// *********************************************************************
-// class HtmlExport Methoden
-// *********************************************************************
-
-static String getParagraphStyle( SdrOutliner* pOutliner, sal_uInt16 nPara )
-{
-    SfxItemSet aParaSet( pOutliner->GetParaAttribs( nPara ) );
-
-    String sStyle( RTL_CONSTASCII_USTRINGPARAM("direction:") );
-    if( static_cast<const SvxFrameDirectionItem*>(aParaSet.GetItem( EE_PARA_WRITINGDIR ))->GetValue() == FRMDIR_HORI_RIGHT_TOP )
-    {
-        sStyle += String( RTL_CONSTASCII_USTRINGPARAM("rtl;") );
-    }
-    else
-    {
-         sStyle += String( RTL_CONSTASCII_USTRINGPARAM("ltr;") );
-    }
-    return sStyle;
-}
-
-// =====================================================================
-// Konstruktor fuer die Html Export Hilfsklasse
-// =====================================================================
-HtmlExport::HtmlExport(
-    OUString aPath,
-    const Sequence< PropertyValue >& rParams,
-    SdDrawDocument* pExpDoc,
-    ::sd::DrawDocShell* pDocShell )
-    :	maPath( aPath ),
-        mpDoc(pExpDoc),
-        mpDocSh( pDocShell ),
-        meEC(NULL),
-        meMode( PUBLISH_HTML ),
-        mbContentsPage(false),
-        mnButtonThema(-1),
-        mnWidthPixel( PUB_MEDRES_WIDTH ),
-        meFormat( FORMAT_JPG ),
-        mbNotes(false),
-        mnCompression( -1 ),
-        mbDownload( false ),
-        mbSlideSound(true),
-        mbHiddenSlides(true),
-        mbUserAttr(false),
-        mbDocColors(false),
-        maHTMLExtension(SdResId(STR_HTMLEXP_DEFAULT_EXTENSION)),
-        mpHTMLFiles(NULL),
-        mpImageFiles(NULL),
-        mpThumbnailFiles(NULL),
-        mpPageNames(NULL),
-        mpTextFiles(NULL),
-        maIndexUrl(RTL_CONSTASCII_USTRINGPARAM("index")),
-        meScript( SCRIPT_ASP ),
-        maHTMLHeader( RTL_CONSTASCII_USTRINGPARAM(
-            "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\r\n"
-            "     \"http://www.w3.org/TR/html4/transitional.dtd\">\r\n"
-            "<html>\r\n<head>\r\n" ) ),
-        mpButtonSet( new ButtonSet() )
-{
-    bool bChange = mpDoc->IsChanged();
-
-    maIndexUrl += maHTMLExtension;
-
-    InitExportParameters( rParams );
-
-    switch( meMode )
-    {
-    case PUBLISH_HTML:
-    case PUBLISH_FRAMES:
-        ExportHtml();
-        break;
-    case PUBLISH_WEBCAST:
-        ExportWebCast();
-        break;
-    case PUBLISH_KIOSK:
-        ExportKiosk();
-        break;
-    }
-
-    mpDoc->SetChanged(bChange);
-}
-
-HtmlExport::~HtmlExport()
-{
-    // ------------------------------------------------------------------
-    // Listen loeschen
-    // ------------------------------------------------------------------
-    if(mpImageFiles && mpHTMLFiles && mpThumbnailFiles && mpPageNames && mpTextFiles )
-    {
-        for ( sal_uInt16 nSdPage = 0; nSdPage < mnSdPageCount; nSdPage++)
-        {
-            delete mpImageFiles[nSdPage];
-            delete mpHTMLFiles[nSdPage];
-            delete mpThumbnailFiles[nSdPage];
-            delete mpPageNames[nSdPage];
-            delete mpTextFiles[nSdPage];
-        }
-    }
-
-    delete[] mpImageFiles;
-    delete[] mpHTMLFiles;
-    delete[] mpThumbnailFiles;
-    delete[] mpPageNames;
-    delete[] mpTextFiles;
-}
-
-/** get common export parameters from item set */
-void HtmlExport::InitExportParameters( const Sequence< PropertyValue >& rParams )
-{
-    mbImpress = mpDoc && mpDoc->GetDocumentType() == DOCUMENT_TYPE_IMPRESS;
-
-    sal_Int32 nArgs = rParams.getLength();
-    const PropertyValue* pParams = rParams.getConstArray();
-    OUString aStr;
-    while( nArgs-- )
-    {
-        if( pParams->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "PublishMode" ) ) )
-        {
-            sal_Int32 temp = 0;
-            pParams->Value >>= temp;
-            meMode = (HtmlPublishMode)temp;
-        }
-        else if( pParams->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "IndexURL" ) ) )
-        {
-            pParams->Value >>= aStr;
-            maIndexUrl = aStr;
-        }
-        else if( pParams->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Format" ) ) )
-        {
-            sal_Int32 temp = 0;
-            pParams->Value >>= temp;
-            meFormat = (PublishingFormat)temp;
-        }
-        else if( pParams->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Compression" ) ) )
-        {
-            pParams->Value >>= aStr;
-            String aTmp( aStr );
-            if(aTmp.Len())
-            {
-                xub_StrLen nPos = aTmp.Search( '%' );
-                if(nPos != STRING_NOTFOUND)
-                    aTmp.Erase(nPos,1);
-                mnCompression = (sal_Int16)aTmp.ToInt32();
-            }
-        }
-        else if( pParams->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Width" ) ) )
-        {
-            sal_Int32 temp = 0;
-            pParams->Value >>= temp;
-            mnWidthPixel = (sal_uInt16)temp;
-        }
-        else if( pParams->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "UseButtonSet" ) ) )
-        {
-            sal_Int32 temp = 0;
-            pParams->Value >>= temp;
-            mnButtonThema = (sal_Int16)temp;
-        }
-        else if( pParams->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "IsExportNotes" ) ) )
-        {
-            if( mbImpress )
-            {
-                sal_Bool temp = sal_False;
-                pParams->Value >>= temp;
-                mbNotes = temp;
-            }
-        }
-        else if( pParams->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "IsExportContentsPage" ) ) )
-        {
-            sal_Bool temp = sal_False;
-            pParams->Value >>= temp;
-            mbContentsPage = temp;
-        }
-        else if( pParams->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Author" ) ) )
-        {
-            pParams->Value >>= aStr;
-            maAuthor = aStr;
-        }
-        else if( pParams->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "EMail" ) ) )
-        {
-            pParams->Value >>= aStr;
-            maEMail = aStr;
-        }
-        else if( pParams->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "HomepageURL" ) ) )
-        {
-            pParams->Value >>= aStr;
-            maHomePage = aStr;
-        }
-        else if( pParams->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "UserText" ) ) )
-        {
-            pParams->Value >>= aStr;
-            maInfo = aStr;
-        }
-        else if( pParams->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "EnableDownload" ) ) )
-        {
-            sal_Bool temp = sal_False;
-            pParams->Value >>= temp;
-            mbDownload = temp;
-        }
-        else if( pParams->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "SlideSound" ) ) )
-        {
-            sal_Bool temp = sal_True;
-            pParams->Value >>= temp;
-            mbSlideSound = temp;
-        }
-        else if( pParams->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "HiddenSlides" ) ) )
-        {
-            sal_Bool temp = sal_True;
-            pParams->Value >>= temp;
-            mbHiddenSlides = temp;
-        }
-        else if( pParams->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "BackColor" ) ) )
-        {
-            sal_Int32 temp = 0;
-            pParams->Value >>= temp;
-            maBackColor = temp;
-            mbUserAttr = true;
-        }
-        else if( pParams->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "TextColor" ) ) )
-        {
-            sal_Int32 temp = 0;
-            pParams->Value >>= temp;
-            maTextColor = temp;
-            mbUserAttr = true;
-        }
-        else if( pParams->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "LinkColor" ) ) )
-        {
-            sal_Int32 temp = 0;
-            pParams->Value >>= temp;
-            maLinkColor = temp;
-            mbUserAttr = true;
-        }
-        else if( pParams->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "VLinkColor" ) ) )
-        {
-            sal_Int32 temp = 0;
-            pParams->Value >>= temp;
-            maVLinkColor = temp;
-            mbUserAttr = true;
-        }
-        else if( pParams->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "ALinkColor" ) ) )
-        {
-            sal_Int32 temp = 0;
-            pParams->Value >>= temp;
-            maALinkColor = temp;
-            mbUserAttr = true;
-        }
-        else if( pParams->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "IsUseDocumentColors" ) ) )
-        {
-            sal_Bool temp = sal_False;
-            pParams->Value >>= temp;
-            mbDocColors = temp;
-        }
-        else if( pParams->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "KioskSlideDuration" ) ) )
-        {
-            sal_Int32 temp = sal_False;
-            pParams->Value >>= temp;
-            mnSlideDuration = temp;
-            mbAutoSlide = true;
-        }
-        else if( pParams->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "KioskEndless" ) ) )
-        {
-            sal_Bool temp = sal_False;
-            pParams->Value >>= temp;
-            mbEndless = temp;
-        }
-        else if( pParams->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "WebCastCGIURL" ) ) )
-        {
-            pParams->Value >>= aStr;
-            maCGIPath = aStr;
-        }
-        else if( pParams->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "WebCastTargetURL" ) ) )
-        {
-            pParams->Value >>= aStr;
-            maURLPath = aStr;
-        }
-        else if( pParams->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "WebCastScriptLanguage" ) ) )
-        {
-            pParams->Value >>= aStr;
-            if( aStr.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM( "asp" ) ) )
-            {
-                meScript = SCRIPT_ASP;
-            }
-            else
-            {
-                meScript = SCRIPT_PERL;
-            }
-        }
-        else
-        {
-            OSL_FAIL("Unknown property for html export detected!");
-        }
-
-        pParams++;
-    }
-
-    if( meMode == PUBLISH_KIOSK )
-    {
-        mbContentsPage = false;
-        mbNotes = false;
-
-    }
-
-    // calculate image sizes
-    SdPage* pPage = mpDoc->GetSdPage(0, PK_STANDARD);
-    Size aTmpSize( pPage->GetSize() );
-    double dRatio=((double)aTmpSize.Width())/aTmpSize.Height();
-
-    mnHeightPixel = (sal_uInt16)(mnWidthPixel/dRatio);
-
-    //------------------------------------------------------------------
-    // Ziel ausklamuestern...
-
-    INetURLObject aINetURLObj( maPath );
-    DBG_ASSERT( aINetURLObj.GetProtocol() != INET_PROT_NOT_VALID, "invalid URL" );
-
-    maExportPath = aINetURLObj.GetPartBeforeLastName();	// with trailing '/'
-    maIndex = aINetURLObj.GetLastName();
-
-    mnSdPageCount = mpDoc->GetSdPageCount( PK_STANDARD );
-    for( sal_uInt16 nPage = 0; nPage < mnSdPageCount; nPage++ )
-    {
-        pPage = mpDoc->GetSdPage( nPage, PK_STANDARD );
-
-        if( mbHiddenSlides || !pPage->IsExcluded() )
-        {
-            maPages.push_back( pPage );
-            maNotesPages.push_back( mpDoc->GetSdPage( nPage, PK_NOTES ) );
-        }
-    }
-    mnSdPageCount = maPages.size();
-
-    mbFrames = meMode == PUBLISH_FRAMES;
-
-    maDocFileName = maIndex;
-}
-
-///////////////////////////////////////////////////////////////////////
-// Exportiert das im Konstruktor angegebenne Impress Dokument nach HTML
-///////////////////////////////////////////////////////////////////////
-void HtmlExport::ExportHtml()
-{
-    if(mbUserAttr)
-    {
-        if( maTextColor == COL_AUTO )
-        {
-            if( !maBackColor.IsDark() )
-                maTextColor = COL_BLACK;
-        }
-    }
-    else if( mbDocColors )
-    {
-        // Standard Farben fuer das Farbschema 'Aus Dokument'
-        SetDocColors();
-        maFirstPageColor = maBackColor;
-    }
-
-    // get name for downloadable presentation if needed
-    if( mbDownload )
-    {
-        // Separator such und Extension ausblenden
-        sal_uInt16 nSepPos = maDocFileName.Search( sal_Unicode('.') );
-
-        if(nSepPos != STRING_NOTFOUND)
-            maDocFileName.Erase(nSepPos);
-
-        maDocFileName.AppendAscii( ".odp" );
-    }
-
-    //////
-
-    sal_uInt16 nProgrCount = mnSdPageCount;
-    nProgrCount += mbImpress?mnSdPageCount:0;
-    nProgrCount += mbContentsPage?1:0;
-    nProgrCount += (mbFrames && mbNotes)?mnSdPageCount:0;
-    nProgrCount += (mbFrames)?8:0;
-    InitProgress( nProgrCount );
-
-    mpDocSh->SetWaitCursor( true );
-
-    //------------------------------------------------------------------
-    // Exceptions sind doch was schoennes...
-
-    CreateFileNames();
-
-    // this is not a true while
-    while( 1 )
-    {
-        if( checkForExistingFiles() )
-            break;
-
-        if( !CreateImagesForPresPages() )
-            break;
-
-        if( mbContentsPage &&
-           !CreateImagesForPresPages( true ) )
-            break;
-
-
-        if( !CreateHtmlForPresPages() )
-            break;
-
-        if( mbImpress )
-            if( !CreateHtmlTextForPresPages() )
-                break;
-
-        if( mbFrames )
-        {
-            if( !CreateFrames() )
-                break;
-
-            if( !CreateOutlinePages() )
-                break;
-
-            if( !CreateNavBarFrames() )
-                break;
-
-            if( mbNotes && mbImpress )
-                if( !CreateNotesPages() )
-                    break;
-
-        }
-
-        if( mbContentsPage )
-            if( !CreateContentPage() )
-                break;
-
-        if( !CreateBitmaps() )
-            break;
-
-        mpDocSh->SetWaitCursor( false );
-        ResetProgress();
-
-        if( mbDownload )
-            SavePresentation();
-
-        return;
-    }
-
-    // if we get to this point the export was
-    // canceled by the user after an error
-    mpDocSh->SetWaitCursor( false );
-    ResetProgress();
-}
-
-///////////////////////////////////////////////////////////////////////
-
-void HtmlExport::SetDocColors( SdPage* pPage )
-{
-    if( pPage == NULL )
-        pPage = mpDoc->GetSdPage(0, PK_STANDARD);
-
-    svtools::ColorConfig aConfig;
-    maVLinkColor = Color(aConfig.GetColorValue(svtools::LINKSVISITED).nColor);
-    maALinkColor = Color(aConfig.GetColorValue(svtools::LINKS).nColor);
-    maLinkColor  = Color(aConfig.GetColorValue(svtools::LINKS).nColor);
-    maTextColor  = Color(COL_BLACK);
-
-    SfxStyleSheet* pSheet = NULL;
-
-    if( mpDoc->GetDocumentType() == DOCUMENT_TYPE_IMPRESS )
-    {
-        // Standard Textfarbe aus Outline-Vorlage der ersten Seite
-        pSheet = pPage->GetStyleSheetForPresObj(PRESOBJ_OUTLINE);
-        if(pSheet == NULL)
-            pSheet = pPage->GetStyleSheetForPresObj(PRESOBJ_TEXT);
-        if(pSheet == NULL)
-            pSheet = pPage->GetStyleSheetForPresObj(PRESOBJ_TITLE);
-    }
-
-    if(pSheet == NULL)
-        pSheet = mpDoc->GetDefaultStyleSheet();
-
-    if(pSheet)
-    {
-        SfxItemSet& rSet = pSheet->GetItemSet();
-        if(rSet.GetItemState(EE_CHAR_COLOR,sal_True) == SFX_ITEM_ON)
-            maTextColor = ((SvxColorItem*)rSet.GetItem(EE_CHAR_COLOR,sal_True))->GetValue();
-    }
-
-    // Standard Hintergrundfarbe aus Background der MasterPage der ersten Seite
-    maBackColor = pPage->GetPageBackgroundColor();
-
-    if( maTextColor == COL_AUTO )
-    {
-        if( !maBackColor.IsDark() )
-            maTextColor = COL_BLACK;
-    }
-}
-
-///////////////////////////////////////////////////////////////////////
-
-void HtmlExport::InitProgress( sal_uInt16 nProgrCount )
-{
-    String aStr(SdResId(STR_CREATE_PAGES));
-    mpProgress = new SfxProgress( mpDocSh, aStr, nProgrCount );
-}
-
-///////////////////////////////////////////////////////////////////////
-
-void HtmlExport::ResetProgress()
-{
-    delete mpProgress;
-    mpProgress = NULL;
-}
-
-///////////////////////////////////////////////////////////////////////
-
-void HtmlExport::ExportKiosk()
-{
-    mnPagesWritten = 0;
-    InitProgress( 2*mnSdPageCount );
-
-    CreateFileNames();
-    if( !checkForExistingFiles() )
-    {
-        if( CreateImagesForPresPages() )
-            CreateHtmlForPresPages();
-    }
-
-    ResetProgress();
-}
-
-///////////////////////////////////////////////////////////////////////
-// Export Document with WebCast (TM) Technology
-///////////////////////////////////////////////////////////////////////
-void HtmlExport::ExportWebCast()
-{
-    mnPagesWritten = 0;
-    InitProgress( mnSdPageCount + 9 );
-
-    mpDocSh->SetWaitCursor( sal_True );
-
-    CreateFileNames();
-
-    String aEmpty;
-    if(maCGIPath.Len() == 0)
-        maCGIPath.Assign( sal_Unicode('.') );
-
-    if( maCGIPath.GetChar( maCGIPath.Len() - 1 ) != sal_Unicode('/') )
-        maCGIPath.Append( sal_Unicode('/') );
-
-    if( meScript == SCRIPT_ASP )
-    {
-        maURLPath.AssignAscii( "./" );
-    }
-    else
-    {
-           String aEmpty2;
-        if(maURLPath.Len() == 0)
-            maURLPath.Assign( sal_Unicode('.') );
-
-        if( maURLPath.GetChar( maURLPath.Len() - 1 ) != sal_Unicode('/') )
-            maURLPath.Append( sal_Unicode('/') );
-    }
-
-    // this is not a true while
-    while(1)
-    {
-        if( checkForExistingFiles() )
-            break;
-
-        if(!CreateImagesForPresPages())
-            break;
-
-        if( meScript == SCRIPT_ASP )
-        {
-            if(!CreateASPScripts())
-                break;
-        }
-        else
-        {
-            if(!CreatePERLScripts())
-                break;
-        }
-
-        if(!CreateImageFileList())
-            break;
-
-        if(!CreateImageNumberFile())
-            break;
-
-        break;
-    }
-
-    mpDocSh->SetWaitCursor( false );
-    ResetProgress();
-}
-
-///////////////////////////////////////////////////////////////////////
-// Save the presentation as a downloadable file in the dest directory
-///////////////////////////////////////////////////////////////////////
-
-bool HtmlExport::SavePresentation()
-{
-    meEC.SetContext( STR_HTMLEXP_ERROR_CREATE_FILE, maDocFileName );
-
-    OUString aURL( maExportPath );
-    aURL += maDocFileName;
-
-
-    mpDocSh->EnableSetModified( true );
-
-    try
-    {
-        uno::Reference< frame::XStorable > xStorable( mpDoc->getUnoModel(), uno::UNO_QUERY );
-        if( xStorable.is() )
-        {
-            uno::Sequence< beans::PropertyValue > aProperties( 2 );
-            aProperties[ 0 ].Name = OUString(RTL_CONSTASCII_USTRINGPARAM("Overwrite"));
-            aProperties[ 0 ].Value <<= (sal_Bool)sal_True;
-            aProperties[ 1 ].Name = OUString(RTL_CONSTASCII_USTRINGPARAM("FilterName"));
-            aProperties[ 1 ].Value <<= OUString(RTL_CONSTASCII_USTRINGPARAM("impress8"));
-            xStorable->storeToURL( aURL, aProperties );
-
-            mpDocSh->EnableSetModified( false );
-
-            return true;
-        }
-    }
-    catch( Exception& )
-    {
-    }
-
-    mpDocSh->EnableSetModified( false );
-
-    return false;
-}
-
-// =====================================================================
-// Image-Dateien anlegen
-// =====================================================================
-bool HtmlExport::CreateImagesForPresPages( bool bThumbnail)
-{
-    try
-    {
-        Reference < XMultiServiceFactory > xMSF( ::comphelper::getProcessServiceFactory() );
-        if( !xMSF.is() )
-            return false;
-
-        Reference< XExporter > xGraphicExporter( xMSF->createInstance( OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.GraphicExportFilter") ) ), UNO_QUERY );
-        Reference< XFilter > xFilter( xGraphicExporter, UNO_QUERY );
-
-        DBG_ASSERT( xFilter.is(), "no com.sun.star.drawing.GraphicExportFilter?" );
-        if( !xFilter.is() )
-            return false;
-
-        Sequence< PropertyValue > aFilterData(((meFormat==FORMAT_JPG)&&(mnCompression != -1))? 3 : 2);
-        aFilterData[0].Name = OUString( RTL_CONSTASCII_USTRINGPARAM("PixelWidth") );
-        aFilterData[0].Value <<= (sal_Int32)(bThumbnail ? PUB_THUMBNAIL_WIDTH : mnWidthPixel );
-        aFilterData[1].Name = OUString( RTL_CONSTASCII_USTRINGPARAM("PixelHeight") );
-        aFilterData[1].Value <<= (sal_Int32)(bThumbnail ? PUB_THUMBNAIL_HEIGHT : mnHeightPixel);
-        if((meFormat==FORMAT_JPG)&&(mnCompression != -1))
-        {
-            aFilterData[2].Name = OUString( RTL_CONSTASCII_USTRINGPARAM("Quality") );
-            aFilterData[2].Value <<= (sal_Int32)mnCompression;
-        }
-
-        Sequence< PropertyValue > aDescriptor( 3 );
-        aDescriptor[0].Name = OUString( RTL_CONSTASCII_USTRINGPARAM("URL") );
-        aDescriptor[1].Name = OUString( RTL_CONSTASCII_USTRINGPARAM("FilterName") );
-        OUString sFormat;
-        if( meFormat == FORMAT_PNG )
-            sFormat = OUString( RTL_CONSTASCII_USTRINGPARAM("PNG") );
-        else if( meFormat == FORMAT_GIF )
-            sFormat = OUString( RTL_CONSTASCII_USTRINGPARAM("GIF") );
-        else
-            sFormat = OUString( RTL_CONSTASCII_USTRINGPARAM("JPG") );
-
-        aDescriptor[1].Value <<= sFormat;
-        aDescriptor[2].Name = OUString( RTL_CONSTASCII_USTRINGPARAM("FilterData") );
-        aDescriptor[2].Value <<= aFilterData;
-
-        for (sal_uInt16 nSdPage = 0; nSdPage < mnSdPageCount; nSdPage++)
-        {
-            SdPage* pPage = maPages[ nSdPage ];
-
-            OUString aFull(maExportPath);
-            if (bThumbnail)
-                aFull += *mpThumbnailFiles[nSdPage];
-            else
-                aFull += *mpImageFiles[nSdPage];
-
-
-            aDescriptor[0].Value <<= aFull;
-
-            Reference< XComponent > xPage( pPage->getUnoPage(), UNO_QUERY );
-            xGraphicExporter->setSourceDocument( xPage );
-            xFilter->filter( aDescriptor );
-
-            if (mpProgress)
-                mpProgress->SetState(++mnPagesWritten);
-        }
-    }
-    catch( Exception& )
-    {
-        return false;
-    }
-
-    return true;
-}
-
-// =====================================================================
-// Ermittelt das SdrTextObject mit dem Layout Text dieser Seite
-// =====================================================================
-SdrTextObj* HtmlExport::GetLayoutTextObject(SdrPage* pPage)
-{
-    sal_uLong			nObjectCount = pPage->GetObjCount();
-    SdrObject*		pObject 	 = NULL;
-    SdrTextObj* 	pResult 	 = NULL;
-
-    for (sal_uLong nObject = 0; nObject < nObjectCount; nObject++)
-    {
-        pObject = pPage->GetObj(nObject);
-        if (pObject->GetObjInventor() == SdrInventor &&
-            pObject->GetObjIdentifier() == OBJ_OUTLINETEXT)
-        {
-            pResult = (SdrTextObj*)pObject;
-            break;
-        }
-    }
-    return pResult;
-}
-
-// =====================================================================
-// HTML-Text Versionen fuer Impress Seiten erzeugen
-// =====================================================================
-
-String HtmlExport::WriteMetaCharset() const
-{
-    String aStr;
-    const sal_Char *pCharSet = rtl_getBestMimeCharsetFromTextEncoding( RTL_TEXTENCODING_UTF8 );
-    if ( pCharSet )
-    {
-        aStr.AppendAscii( "  <meta HTTP-EQUIV=CONTENT-TYPE CONTENT=\"text/html; charset=" );
-        aStr.AppendAscii( pCharSet );
-        aStr.AppendAscii( "\">\r\n" );
-    }
-    return aStr;
-}
-
-bool HtmlExport::CreateHtmlTextForPresPages()
-{
-    bool bOk = true;
-
-    SdrOutliner* pOutliner = mpDoc->GetInternalOutliner();
-
-    for(sal_uInt16 nSdPage = 0; nSdPage < mnSdPageCount && bOk; nSdPage++)
-    {
-        SdPage* pPage = maPages[ nSdPage ];
-
-        if( mbDocColors )
-        {
-            SetDocColors( pPage );
-        }
-
-// HTML Kopf
-        String aStr(maHTMLHeader);
-        aStr += WriteMetaCharset();
-        aStr.AppendAscii( "  <title>" );
-        aStr += StringToHTMLString( *mpPageNames[nSdPage] );
-        aStr.AppendAscii( "</title>\r\n" );
-        aStr.AppendAscii( "</head>\r\n" );
-        aStr += CreateBodyTag();
-
-// Navigationsleiste
-        aStr += CreateNavBar(nSdPage, true);
-
-// Seitentitel
-        String sTitleText( CreateTextForTitle(pOutliner,pPage, pPage->GetPageBackgroundColor()) );
-        aStr.AppendAscii( "<h1 style=\"");
-        aStr.Append( getParagraphStyle( pOutliner, 0 ) );
-        aStr.AppendAscii( "\">" );
-        aStr += sTitleText;
-        aStr.AppendAscii( "</h1>\r\n" );
-
-// Gliederungstext schreiben
-        aStr += CreateTextForPage( pOutliner, pPage, true, pPage->GetPageBackgroundColor() );
-
-// Notizen
-        if(mbNotes)
-        {
-            SdPage* pNotesPage = maNotesPages[ nSdPage ];
-            String aNotesStr( CreateTextForNotesPage( pOutliner, pNotesPage, true, maBackColor) );
-
-            if( aNotesStr.Len() )
-            {
-                aStr.AppendAscii( "<br>\r\n<h3>" );
-                aStr += RESTOHTML(STR_HTMLEXP_NOTES);
-                aStr.AppendAscii( ":</h3>\r\n" );
-
-                aStr += aNotesStr;
-            }
-        }
-
-// Seite beenden
-        aStr.AppendAscii( "</body>\r\n</html>" );
-
-        bOk = WriteHtml( *mpTextFiles[nSdPage], false, aStr );
-
-        if (mpProgress)
-            mpProgress->SetState(++mnPagesWritten);
-
-    }
-
-    pOutliner->Clear();
-
-    return bOk;
-}
-
-/** exports the given html data into a non unicode file in the current export path with
-    the given filename */
-bool HtmlExport::WriteHtml( const String& rFileName, bool bAddExtension, const String& rHtmlData )
-{
-    sal_uLong nErr = 0;
-
-    String aFileName( rFileName );
-    if( bAddExtension )
-        aFileName += maHTMLExtension;
-
-    meEC.SetContext( STR_HTMLEXP_ERROR_CREATE_FILE, rFileName );
-    EasyFile aFile;
-    SvStream* pStr;
-    String aFull( maExportPath );
-    aFull += aFileName;
-    nErr = aFile.createStream(aFull , pStr);
-    if(nErr == 0)
-    {
-        ByteString aStr( rHtmlData , RTL_TEXTENCODING_UTF8 ) ;
-        *pStr << aStr.GetBuffer();
-        nErr = aFile.close();
-    }
-
-    if( nErr != 0 )
-        ErrorHandler::HandleError(nErr);
-
-    return nErr == 0;
-}
-
-// =====================================================================
-
-/** Erzeugt den Outliner Text fuer das Titelobjekt einer Seite
- */
-String HtmlExport::CreateTextForTitle( SdrOutliner* pOutliner, SdPage* pPage, const Color& rBackgroundColor )
-{
-    SdrTextObj* pTO = (SdrTextObj*)pPage->GetPresObj(PRESOBJ_TITLE);
-    if(!pTO)
-        pTO = GetLayoutTextObject(pPage);
-
-    if (pTO && !pTO->IsEmptyPresObj())
-    {
-        OutlinerParaObject* pOPO = pTO->GetOutlinerParaObject();
-        if(pOPO && pOutliner->GetParagraphCount() != 0)
-        {
-            pOutliner->Clear();
-            pOutliner->SetText(*pOPO);
-            return ParagraphToHTMLString(pOutliner,0, rBackgroundColor);
-        }
-    }
-
-    return String();
-}
-
-// =====================================================================
-// Erzeugt den Outliner Text fuer eine Seite
-// =====================================================================
-String HtmlExport::CreateTextForPage( SdrOutliner* pOutliner,
-                                      SdPage* pPage,
-                                      bool bHeadLine, const Color& rBackgroundColor )
-{
-    String aStr;
-
-    SdrTextObj* pTO = (SdrTextObj*)pPage->GetPresObj(PRESOBJ_TEXT);
-    if(!pTO)
-        pTO = GetLayoutTextObject(pPage);
-
-    if (pTO && !pTO->IsEmptyPresObj())
-    {
-        OutlinerParaObject* pOPO = pTO->GetOutlinerParaObject();
-        if (pOPO)
-        {
-            pOutliner->Clear();
-            pOutliner->SetText( *pOPO );
-
-            sal_uLong nCount = pOutliner->GetParagraphCount();
-
-            Paragraph* pPara = NULL;
-            sal_Int16 nActDepth = -1;
-
-            String aParaText;
-            for (sal_uLong nPara = 0; nPara < nCount; nPara++)
-            {
-                pPara = pOutliner->GetParagraph(nPara);
-                if(pPara == 0)
-                    continue;
-
-                const sal_Int16 nDepth = (sal_uInt16) pOutliner->GetDepth( (sal_uInt16) nPara );
-                aParaText = ParagraphToHTMLString(pOutliner,nPara,rBackgroundColor);
-
-                if(aParaText.Len() == 0)
-                    continue;
-
-                if(nDepth < nActDepth )
-                {
-                    do
-                    {
-                        aStr.AppendAscii( "</ul>" );
-                        nActDepth--;
-                    }
-                    while(nDepth < nActDepth);
-                }
-                else if(nDepth > nActDepth )
-                {
-                    do
-                    {
-                        aStr.AppendAscii( "<ul>" );
-                        nActDepth++;
-                    }
-                    while( nDepth > nActDepth );
-                }
-
-                String sStyle( getParagraphStyle( pOutliner, nPara ) );
-                if(nActDepth >= 0 )
-                {
-                    aStr.AppendAscii( "<li style=\"");
-                    aStr.Append( sStyle );
-                    aStr.AppendAscii( "\">" );
-                }
-
-                if(nActDepth <= 0 && bHeadLine)
-                {
-                    if( nActDepth == 0 )
-                    {
-                        aStr.AppendAscii( "<h2>" );
-                    }
-                    else
-                    {
-                        aStr.AppendAscii( "<h2 style=\"");
-                        aStr.Append( sStyle );
-                        aStr.AppendAscii( "\">" );
-                    }
-                }
-                aStr += aParaText;
-                if(nActDepth == 0 && bHeadLine)
-                    aStr.AppendAscii( "</h2>" );
-                if(nActDepth >= 0 )
-                    aStr.AppendAscii( "</li>" );
-                aStr.AppendAscii( "\r\n" );
-            }
-
-            while( nActDepth >= 0 )
-            {
-                aStr.AppendAscii( "</ul>" );
-                nActDepth--;
-            };
-        }
-    }
-
-    return aStr;
-}
-
-// =====================================================================
-// Erzeugt den Outliner Text fuer eine Notizseite
-// =====================================================================
-String HtmlExport::CreateTextForNotesPage( SdrOutliner* pOutliner,
-                                           SdPage* pPage,
-                                           bool,
-                                           const Color& rBackgroundColor )
-{
-    String aStr;
-
-    SdrTextObj* pTO = (SdrTextObj*)pPage->GetPresObj(PRESOBJ_NOTES);
-
-    if (pTO && !pTO->IsEmptyPresObj())
-    {
-        OutlinerParaObject* pOPO = pTO->GetOutlinerParaObject();
-        if (pOPO)
-        {
-            pOutliner->Clear();
-            pOutliner->SetText( *pOPO );
-
-            sal_uLong nCount = pOutliner->GetParagraphCount();
-            for (sal_uLong nPara = 0; nPara < nCount; nPara++)
-            {
-                aStr.AppendAscii("<p style=\"");
-                aStr.Append( getParagraphStyle( pOutliner, nPara ) );
-                aStr.AppendAscii("\">");
-                aStr += ParagraphToHTMLString( pOutliner, nPara,rBackgroundColor );
-                aStr.AppendAscii( "</p>\r\n" );
-            }
-        }
-    }
-
-    return aStr;
-}
-
-// =====================================================================
-// Wandelt einen Paragraphen des Outliners in Html
-// =====================================================================
-String HtmlExport::ParagraphToHTMLString( SdrOutliner* pOutliner, sal_uLong nPara, const Color& rBackgroundColor )
-{
-    String aStr;
-
-    if(NULL == pOutliner)
-        return aStr;
-
-    // TODO: MALTE!!!
-    EditEngine& rEditEngine = *(EditEngine*)&pOutliner->GetEditEngine();
-    bool bOldUpdateMode = rEditEngine.GetUpdateMode();
-    rEditEngine.SetUpdateMode(sal_True);
-
-    Paragraph* pPara = pOutliner->GetParagraph(nPara);
-    if(NULL == pPara)
-        return aStr;
-
-    HtmlState aState( (mbUserAttr || mbDocColors)  ? maTextColor : Color(COL_BLACK) );
-    SvUShorts aPortionList;
-    rEditEngine.GetPortions( (sal_uInt16) nPara, aPortionList );
-    sal_uInt16 nPortionCount = aPortionList.Count();
-
-    sal_uInt16 nPos1 = 0;
-    for( sal_uInt16 nPortion = 0; nPortion < nPortionCount; nPortion++ )
-    {
-        sal_uInt16 nPos2 = aPortionList.GetObject(nPortion);
-
-        ESelection aSelection( (sal_uInt16) nPara, nPos1, (sal_uInt16) nPara, nPos2);
-
-        SfxItemSet aSet( rEditEngine.GetAttribs( aSelection ) );
-
-        String aPortion(StringToHTMLString(rEditEngine.GetText( aSelection )));
-
-        aStr += TextAttribToHTMLString( &aSet, &aState, rBackgroundColor );
-        aStr += aPortion;
-
-        nPos1 = nPos2;
-    }
-    aStr += aState.Flush();
-    rEditEngine.SetUpdateMode(bOldUpdateMode);
-
-    return aStr;
-}
-
-// =====================================================================
-// Erzeugt anhand der Attribute im angegebennen Set und dem gegebennen
-// HtmlState die noetigen Html-Tags um die Attribute zu uebernehmen
-// =====================================================================
-String HtmlExport::TextAttribToHTMLString( SfxItemSet* pSet, HtmlState* pState, const Color& rBackgroundColor )
-{
-    String aStr;
-
-    if(NULL == pSet)
-        return aStr;
-
-    String aLink, aTarget;
-    if ( pSet->GetItemState( EE_FEATURE_FIELD ) == SFX_ITEM_ON )
-    {
-        SvxFieldItem* pItem = (SvxFieldItem*)pSet->GetItem( EE_FEATURE_FIELD );
-        if(pItem)
-        {
-            SvxURLField* pURL = PTR_CAST(SvxURLField, pItem->GetField());
-            if(pURL)
-            {
-                aLink = pURL->GetURL();
-                aTarget = pURL->GetTargetFrame();
-            }
-        }
-    }
-
-    bool bTemp;
-    String aTemp;
-
-    if ( pSet->GetItemState( EE_CHAR_WEIGHT ) == SFX_ITEM_ON )
-    {
-        bTemp = ((const SvxWeightItem&)pSet->Get( EE_CHAR_WEIGHT )).GetWeight() == WEIGHT_BOLD;
-        aTemp = pState->SetWeight( bTemp );
-        if( bTemp )
-            aStr.Insert( aTemp, 0 );
-        else
-            aStr += aTemp;
-    }
-
-    if ( pSet->GetItemState( EE_CHAR_UNDERLINE ) == SFX_ITEM_ON )
-    {
-        bTemp = ((const SvxUnderlineItem&)pSet->Get( EE_CHAR_UNDERLINE )).GetLineStyle() != UNDERLINE_NONE;
-        aTemp = pState->SetUnderline( bTemp );
-        if( bTemp )
-            aStr.Insert( aTemp, 0 );
-        else
-            aStr += aTemp;
-    }
-
-    if ( pSet->GetItemState( EE_CHAR_STRIKEOUT ) == SFX_ITEM_ON )
-    {
-        bTemp = ((const SvxCrossedOutItem&)pSet->Get( EE_CHAR_STRIKEOUT )).GetStrikeout() != STRIKEOUT_NONE;
-        aTemp = pState->SetStrikeout( bTemp );
-        if( bTemp )
-            aStr.Insert( aTemp, 0 );
-        else
-            aStr += aTemp;
-    }
-
-    if ( pSet->GetItemState( EE_CHAR_ITALIC ) == SFX_ITEM_ON )
-    {
-        bTemp = ((const SvxPostureItem&)pSet->Get( EE_CHAR_ITALIC )).GetPosture() != ITALIC_NONE;
-        aTemp = pState->SetItalic( bTemp );
-        if( bTemp )
-            aStr.Insert( aTemp, 0 );
-        else
-            aStr += aTemp;
-    }
-
-    if(mbDocColors)
-    {
-        if ( pSet->GetItemState( EE_CHAR_COLOR ) == SFX_ITEM_ON )
-        {
-            Color aTextColor = ((const SvxColorItem&) pSet->Get( EE_CHAR_COLOR )).GetValue();
-            if( aTextColor == COL_AUTO )
-            {
-                if( !rBackgroundColor.IsDark() )
-                    aTextColor = COL_BLACK;
-            }
-            aStr += pState->SetColor( aTextColor );
-        }
-    }
-
-    if( aLink.Len() )
-        aStr.Insert( pState->SetLink(aLink, aTarget), 0 );
-    else
-        aStr += pState->SetLink(aLink, aTarget);
-
-    return aStr;
-}
-
-// =====================================================================
-// HTML-Wrapper fuer Bild-Dateien erzeugen
-// =====================================================================
-bool HtmlExport::CreateHtmlForPresPages()
-{
-    bool bOk = true;
-
-    std::vector<SdrObject*> aClickableObjects;
-
-    for(sal_uInt16 nSdPage = 0; nSdPage < mnSdPageCount && bOk; nSdPage++)
-    {
-        // Klickbare Objekte finden (auch auf der Masterpage) und
-        // in Liste stellen. In umgekehrter Zeichenreihenfolge in
-        // die Liste stellen, da in HTML bei Ueberlappungen die
-        // _erstgenannte_ Area wirkt.
-
-        SdPage* pPage = maPages[ nSdPage ];
-
-        if( mbDocColors )
-        {
-            SetDocColors( pPage );
-        }
-
-        bool    bMasterDone = false;
-
-        while (!bMasterDone)
-        {
-            // sal_True = rueckwaerts
-            SdrObjListIter aIter(*pPage, IM_DEEPWITHGROUPS, sal_True);
-
-            SdrObject* pObject = aIter.Next();
-            while (pObject)
-            {
-                SdAnimationInfo* pInfo     = mpDoc->GetAnimationInfo(pObject);
-                SdIMapInfo*      pIMapInfo = mpDoc->GetIMapInfo(pObject);
-
-                if ((pInfo &&
-                     (pInfo->meClickAction == presentation::ClickAction_BOOKMARK  ||
-                      pInfo->meClickAction == presentation::ClickAction_DOCUMENT  ||
-                      pInfo->meClickAction == presentation::ClickAction_PREVPAGE  ||
-                      pInfo->meClickAction == presentation::ClickAction_NEXTPAGE  ||
-                      pInfo->meClickAction == presentation::ClickAction_FIRSTPAGE ||
-                      pInfo->meClickAction == presentation::ClickAction_LASTPAGE)) ||
-                     pIMapInfo)
-                {
-                    aClickableObjects.push_back(pObject);
-                }
-
-                pObject = aIter.Next();
-            }
-            // jetzt zur Masterpage oder beenden
-            if (!pPage->IsMasterPage())
-                pPage = (SdPage*)(&(pPage->TRG_GetMasterPage()));
-            else
-                bMasterDone = true;
-        }
-
-// HTML Head
-        String aStr(maHTMLHeader);
-        aStr += WriteMetaCharset();
-        aStr.AppendAscii( "  <title>" );
-        aStr += StringToHTMLString(*mpPageNames[nSdPage]);
-        aStr.AppendAscii( "</title>\r\n" );
-
-// insert timing information
-        pPage = maPages[ nSdPage ];
-        if( meMode == PUBLISH_KIOSK )
-        {
-            sal_uLong nSecs = 0;
-            bool bEndless = false;
-            if( !mbAutoSlide )
-            {
-                if( pPage->GetPresChange() != PRESCHANGE_MANUAL )
-                {
-                    nSecs = pPage->GetTime();
-                    bEndless = mpDoc->getPresentationSettings().mbEndless;
-                }
-            }
-            else
-            {
-                nSecs = mnSlideDuration;
-                bEndless = mbEndless;
-            }
-
-            if( nSecs != 0 )
-            {
-                if( nSdPage < (mnSdPageCount-1) || bEndless )
-                {
-                    aStr.AppendAscii( "<meta http-equiv=\"refresh\" content=\"" );
-                    aStr += String::CreateFromInt32(nSecs);
-                    aStr.AppendAscii( "; URL=" );
-
-                    int nPage = nSdPage + 1;
-                    if( nPage == mnSdPageCount )
-                        nPage = 0;
-
-                    aStr += StringToURL(*mpHTMLFiles[nPage]);
-
-                    aStr.AppendAscii( "\">\r\n" );
-                }
-            }
-        }
-
-        aStr.AppendAscii( "</head>\r\n" );
-
-// HTML Body
-        aStr += CreateBodyTag();
-
-        if( mbSlideSound && pPage->IsSoundOn() )
-            aStr += InsertSound( pPage->GetSoundFile() );
-
-// Navigationsleiste
-        if(!mbFrames )
-            aStr += CreateNavBar( nSdPage, false );
-// Image
-        aStr.AppendAscii( "<center>" );
-        aStr.AppendAscii( "<img src=\"" );
-        aStr += StringToURL( *mpImageFiles[nSdPage] );
-        aStr.AppendAscii( "\" alt=\"\"" );
-
-        if (!aClickableObjects.empty())
-            aStr.AppendAscii( " USEMAP=\"#map0\"" );
-
-        aStr.AppendAscii( "></center>\r\n" );
-
-// Notizen
-        if(mbNotes && !mbFrames)
-        {
-            SdrOutliner* pOutliner = mpDoc->GetInternalOutliner();
-            SdPage* pNotesPage = maNotesPages[ nSdPage ];
-            String aNotesStr( CreateTextForNotesPage( pOutliner, pNotesPage, true, maBackColor) );
-            pOutliner->Clear();
-
-            if( aNotesStr.Len() )
-            {
-                aStr.AppendAscii( "<h3>" );
-                aStr += RESTOHTML(STR_HTMLEXP_NOTES);
-                aStr.AppendAscii( ":</h3><br>\r\n\r\n<p>" );
-
-                aStr += aNotesStr;
-                aStr.AppendAscii( "\r\n</p>\r\n" );
-            }
-        }
-
-// ggfs. Imagemap erzeugen
-        if (!aClickableObjects.empty())
-        {
-            aStr.AppendAscii( "<map name=\"map0\">\r\n" );
-
-            for (sal_uInt32 nObject = 0, n = aClickableObjects.size(); nObject < n; nObject++)
-            {
-                SdrObject* pObject = aClickableObjects[nObject];
-                SdAnimationInfo* pInfo	   = mpDoc->GetAnimationInfo(pObject);
-                SdIMapInfo* 	 pIMapInfo = mpDoc->GetIMapInfo(pObject);
-
-                Rectangle aRect(pObject->GetCurrentBoundRect());
-                Point	  aLogPos(aRect.TopLeft());
-                bool	  bIsSquare = aRect.GetWidth() == aRect.GetHeight();
-
-                sal_uLong nPageWidth = pPage->GetSize().Width() - pPage->GetLftBorder() -
-                                   pPage->GetRgtBorder();
-
-                // das BoundRect bezieht sich auf den physikalischen
-                // Seitenursprung, nicht auf den Koordinatenursprung
-                aRect.Move(-pPage->GetLftBorder(), -pPage->GetUppBorder());
-
-                double fLogicToPixel = ((double)mnWidthPixel) / nPageWidth;
-                aRect.Left()   = (long)(aRect.Left() * fLogicToPixel);
-                aRect.Top()    = (long)(aRect.Top() * fLogicToPixel);
-                aRect.Right()  = (long)(aRect.Right() * fLogicToPixel);
-                aRect.Bottom() = (long)(aRect.Bottom() * fLogicToPixel);
-                long nRadius = aRect.GetWidth() / 2;
-
-
-                /*************************************************************
-                |* wenn das Objekt eine eigene Imagemap enthaelt, werden ihre
-                |* Areas in diese Imagemap eingefuegt
-                \************************************************************/
-                if (pIMapInfo)
-                {
-                    const ImageMap& rIMap = pIMapInfo->GetImageMap();
-                    sal_uInt16 nAreaCount = rIMap.GetIMapObjectCount();
-                    for (sal_uInt16 nArea = 0; nArea < nAreaCount; nArea++)
-                    {
-                        IMapObject* pArea = rIMap.GetIMapObject(nArea);
-                        sal_uInt16 nType = pArea->GetType();
-                        String aURL( pArea->GetURL() );
-
-                        // ggfs. Seiten- oder Objektnamen umwandeln in den
-                        // Namen der entsprechenden HTML-Datei
-                        sal_Bool        bIsMasterPage;
-                        sal_uInt16      nPgNum = mpDoc->GetPageByName( aURL, bIsMasterPage );
-                        SdrObject*  pObj = NULL;
-
-                        if (nPgNum == SDRPAGE_NOTFOUND)
-                        {
-                            // Ist das Bookmark ein Objekt?
-                            pObj = mpDoc->GetObj( aURL );
-                            if (pObj)
-                                nPgNum = pObj->GetPage()->GetPageNum();
-                        }
-                        if (nPgNum != SDRPAGE_NOTFOUND)
-                        {
-                            nPgNum = (nPgNum - 1) / 2;	// SdrPageNum --> SdPageNum
-                            aURL = CreatePageURL(nPgNum);
-                        }
-
-                        switch(nType)
-                        {
-                            case IMAP_OBJ_RECTANGLE:
-                            {
-                                Rectangle aArea(((IMapRectangleObject*)pArea)->
-                                                 GetRectangle(false));
-
-                                // Umrechnung in Pixelkoordinaten
-                                aArea.Move(aLogPos.X() - pPage->GetLftBorder(),
-                                           aLogPos.Y() - pPage->GetUppBorder());
-                                aArea.Left()   = (long)(aArea.Left() * fLogicToPixel);
-                                aArea.Top()    = (long)(aArea.Top() * fLogicToPixel);
-                                aArea.Right()  = (long)(aArea.Right() * fLogicToPixel);
-                                aArea.Bottom() = (long)(aArea.Bottom() * fLogicToPixel);
-
-                                aStr += CreateHTMLRectArea(aArea, aURL);
-                            }
-                            break;
-
-                            case IMAP_OBJ_CIRCLE:
-                            {
-                                Point aCenter(((IMapCircleObject*)pArea)->
-                                                 GetCenter(false));
-                                aCenter += Point(aLogPos.X() - pPage->GetLftBorder(),
-                                                 aLogPos.Y() - pPage->GetUppBorder());
-                                aCenter.X() = (long)(aCenter.X() * fLogicToPixel);
-                                aCenter.Y() = (long)(aCenter.Y() * fLogicToPixel);
-
-                                sal_uLong nCircleRadius = (((IMapCircleObject*)pArea)->
-                                                 GetRadius(false));
-                                nCircleRadius = (sal_uLong)(nCircleRadius * fLogicToPixel);
-                                aStr += CreateHTMLCircleArea(nCircleRadius,
-                                                            aCenter.X(), aCenter.Y(),
-                                                            aURL);
-                            }
-                            break;
-
-                            case IMAP_OBJ_POLYGON:
-                            {
-                                Polygon aArea(((IMapPolygonObject*)pArea)->GetPolygon(false));
-                                aStr += CreateHTMLPolygonArea(::basegfx::B2DPolyPolygon(aArea.getB2DPolygon()), Size(aLogPos.X() - pPage->GetLftBorder(), aLogPos.Y() - pPage->GetUppBorder()), fLogicToPixel, aURL);
-                            }
-                            break;
-
-                            default:
-                            {
-                                DBG_WARNING("unbekannter IMAP_OBJ_Typ");
-                            }
-                            break;
-                        }
-                    }
-                }
-
-
-
-                /*************************************************************
-                |* wenn es eine presentation::ClickAction gibt, Bookmark bestimmen und eine
-                |* Area fuer das ganze Objekt erzeugen
-                \************************************************************/
-                if( pInfo )
-                {
-                    String		aHRef;
-                    presentation::ClickAction eClickAction = pInfo->meClickAction;
-
-                    switch( eClickAction )
-                    {
-                        case presentation::ClickAction_BOOKMARK:
-                        {
-                            sal_Bool		bIsMasterPage;
-                            sal_uInt16      nPgNum = mpDoc->GetPageByName( pInfo->GetBookmark(), bIsMasterPage );
-                            SdrObject*  pObj = NULL;
-
-                            if( nPgNum == SDRPAGE_NOTFOUND )
-                            {
-                                // Ist das Bookmark ein Objekt?
-                                pObj = mpDoc->GetObj(pInfo->GetBookmark());
-                                if (pObj)
-                                    nPgNum = pObj->GetPage()->GetPageNum();
-                            }
-
-                            if( SDRPAGE_NOTFOUND != nPgNum )
-                                aHRef = CreatePageURL(( nPgNum - 1 ) / 2 );
-                        }
-                        break;
-
-                        case presentation::ClickAction_DOCUMENT:
-                            aHRef = pInfo->GetBookmark();
-                        break;
-
-                        case presentation::ClickAction_PREVPAGE:
-                        {
-                            sal_uLong nPage = nSdPage;
-                            if (nSdPage == 0)
-                                nPage = 0;
-                            else
-                                nPage = nSdPage - 1;
-
-                            aHRef = CreatePageURL( (sal_uInt16) nPage);
-                        }
-                        break;
-
-                        case presentation::ClickAction_NEXTPAGE:
-                        {
-                            sal_uLong nPage = nSdPage;
-                            if (nSdPage == mnSdPageCount - 1)
-                                nPage = mnSdPageCount - 1;
-                            else
-                                nPage = nSdPage + 1;
-
-                            aHRef = CreatePageURL( (sal_uInt16) nPage);
-                        }
-                        break;
-
-                        case presentation::ClickAction_FIRSTPAGE:
-                            aHRef = CreatePageURL(0);
-                        break;
-
-                        case presentation::ClickAction_LASTPAGE:
-                            aHRef = CreatePageURL(mnSdPageCount - 1);
-                        break;
-
-                        default:
-                            break;
-                    }
-
-                    // jetzt die Areas
-                    if( aHRef.Len() )
-                    {
-                        // ein Kreis?
-                        if (pObject->GetObjInventor() == SdrInventor &&
-                            pObject->GetObjIdentifier() == OBJ_CIRC  &&
-                            bIsSquare )
-                        {
-                            aStr += CreateHTMLCircleArea(aRect.GetWidth() / 2,
-                                                    aRect.Left() + nRadius,
-                                                    aRect.Top() + nRadius,
-                                                    aHRef);
-                        }
-                        // ein Polygon?
-                        else if (pObject->GetObjInventor() == SdrInventor &&
-                                 (pObject->GetObjIdentifier() == OBJ_PATHLINE ||
-                                  pObject->GetObjIdentifier() == OBJ_PLIN ||
-                                  pObject->GetObjIdentifier() == OBJ_POLY))
-                        {
-                            aStr += CreateHTMLPolygonArea(((SdrPathObj*)pObject)->GetPathPoly(), Size(-pPage->GetLftBorder(), -pPage->GetUppBorder()), fLogicToPixel, aHRef);
-                        }
-                        // was anderes: das BoundRect nehmen
-                        else
-                        {
-                            aStr += CreateHTMLRectArea(aRect, aHRef);
-                        }
-
-                    }
-                }
-            }
-
-            aStr.AppendAscii( "</map>\r\n" );
-        }
-        aClickableObjects.clear();
-
-        aStr.AppendAscii( "</body>\r\n</html>" );
-
-        bOk = WriteHtml( *mpHTMLFiles[nSdPage], false, aStr );
-
-        if (mpProgress)
-            mpProgress->SetState(++mnPagesWritten);
-    }
-
-    return bOk;
-}
-
-// =====================================================================
-// Uebersichtsseite erzeugen
-// =====================================================================
-bool HtmlExport::CreateContentPage()
-{
-    // Parameter
-    String aEmpty;
-
-    if( mbDocColors )
-        SetDocColors();
-
-    // Html Kopf
-    String aStr(maHTMLHeader);
-    aStr += WriteMetaCharset();
-    aStr.AppendAscii( "  <title>" );
-    aStr += StringToHTMLString(*mpPageNames[0]);
-    aStr.AppendAscii( "</title>\r\n</head>\r\n" );
-    aStr += CreateBodyTag();
-
-    // Seitenkopf
-    aStr.AppendAscii( "<center>\r\n" );
-
-    if(mbHeader)
-    {
-        aStr.AppendAscii( "<h1>" );
-        aStr += getDocumentTitle();
-        aStr.AppendAscii( "</h1><br>\r\n" );
-    }
-
-    aStr.AppendAscii( "<h2>" );
-
-    // Solaris compiler bug workaround
-    if( mbFrames )
-        aStr += CreateLink( maFramePage,
-                            RESTOHTML(STR_HTMLEXP_CLICKSTART) );
-    else
-        aStr += CreateLink( StringToHTMLString(*mpHTMLFiles[0]),
-                            RESTOHTML(STR_HTMLEXP_CLICKSTART) );
-
-    aStr.AppendAscii( "</h2>\r\n</center>\r\n" );
-
-    aStr.AppendAscii( "<center><table width=\"90%\"><tr>\r\n" );
-
-    // Inhaltsverzeichnis
-    aStr.AppendAscii( "<td valign=\"top\" align=\"left\" width=\"25%\">\r\n" );
-    aStr.AppendAscii( "<h3>" );
-    aStr += RESTOHTML(STR_HTMLEXP_CONTENTS);
-    aStr.AppendAscii( "</h3>" );
-
-    for(sal_uInt16 nSdPage = 0; nSdPage < mnSdPageCount; nSdPage++)
-    {
-        String aPageName = *mpPageNames[nSdPage];
-        aStr.AppendAscii( "<div align=\"left\">" );
-        if(mbFrames)
-            aStr += StringToHTMLString(aPageName);
-        else
-            aStr += CreateLink(*mpHTMLFiles[nSdPage], aPageName);
-        aStr.AppendAscii( "</div>\r\n" );
-    }
-    aStr.AppendAscii( "</td>\r\n" );
-
-    // Dokument Infos
-    aStr.AppendAscii( "<td valign=\"top\" align=\"left\" width=\"75%\">\r\n" );
-
-    if(maAuthor.Len())
-    {
-        aStr.AppendAscii( "<p><strong>" );
-        aStr += RESTOHTML(STR_HTMLEXP_AUTHOR);
-        aStr.AppendAscii( ":</strong> " );
-        aStr += StringToHTMLString(maAuthor);
-        aStr.AppendAscii( "</p>\r\n" );
-    }
-
-    if(maEMail.Len())
-    {
-        aStr.AppendAscii( "<p><strong>" );
-        aStr += RESTOHTML(STR_HTMLEXP_EMAIL);
-        aStr.AppendAscii( ":</strong> <a href=\"mailto:" );
-        aStr += StringToURL(maEMail);
-        aStr.AppendAscii( "\">" );
-        aStr += StringToHTMLString(maEMail);
-        aStr.AppendAscii( "</a></p>\r\n" );
-    }
-
-    if(maHomePage.Len())
-    {
-        aStr.AppendAscii( "<p><strong>" );
-        aStr += RESTOHTML(STR_HTMLEXP_HOMEPAGE);
-        aStr.AppendAscii( ":</strong> <a href=\"" );
-        aStr += StringToURL(maHomePage);
-        aStr.AppendAscii( "\">" );
-        aStr += StringToHTMLString(maHomePage);
-        aStr.AppendAscii( "</a> </p>\r\n" );
-    }
-
-    if(maInfo.Len())
-    {
-        aStr.AppendAscii( "<p><strong>" );
-        aStr += RESTOHTML(STR_HTMLEXP_INFO);
-        aStr.AppendAscii( ":</strong><br>\r\n" );
-        aStr += StringToHTMLString(maInfo);
-        aStr.AppendAscii( "</p>\r\n" );
-    }
-
-    if(mbDownload)
-    {
-        aStr.AppendAscii( "<p><a href=\"" );
-        aStr += StringToURL(maDocFileName);
-        aStr.AppendAscii( "\">" );
-        aStr += RESTOHTML(STR_HTMLEXP_DOWNLOAD);
-        aStr.AppendAscii( "</a></p>\r\n" );
-    }
-
-    for(sal_uInt16 nSdPage = 0; nSdPage < mnSdPageCount; nSdPage++)
-    {
-        String aText;
-
-        aText.AppendAscii( "<img src=\"" );
-        aText += StringToURL( *mpThumbnailFiles[nSdPage] );
-        aText.AppendAscii( "\" width=\"256\" height=\"192\" alt=\"" );
-        aText += StringToHTMLString( *mpPageNames[nSdPage] );
-        aText.AppendAscii( "\">" );
-
-        aStr += CreateLink(*mpHTMLFiles[nSdPage], aText);
-        aStr.AppendAscii( "\r\n" );
-    }
-
-
-    aStr.AppendAscii( "</td></tr></table></center>\r\n" );
-
-    aStr.AppendAscii( "</body>\r\n</html>" );
-
-    bool bOk = WriteHtml( maIndex, false, aStr );
-
-    if (mpProgress)
-        mpProgress->SetState(++mnPagesWritten);
-
-    return bOk;
-}
-
-// =====================================================================
-// Notiz Seiten erzeugen (fuer Frames)
-// =====================================================================
-bool HtmlExport::CreateNotesPages()
-{
-    bool bOk = true;
-
-    SdrOutliner* pOutliner = mpDoc->GetInternalOutliner();
-    for( sal_uInt16 nSdPage = 0; bOk && nSdPage < mnSdPageCount; nSdPage++ )
-    {
-        SdPage* pPage = maNotesPages[nSdPage];
-        if( mbDocColors )
-            SetDocColors( pPage );
-
-        // Html Kopf
-        String aStr(maHTMLHeader);
-        aStr += WriteMetaCharset();
-        aStr.AppendAscii( "  <title>" );
-        aStr += StringToHTMLString(*mpPageNames[0]);
-        aStr.AppendAscii( "</title>\r\n</head>\r\n" );
-        aStr += CreateBodyTag();
-
-        if(pPage)
-            aStr += CreateTextForNotesPage( pOutliner, pPage, true, maBackColor );
-
-        aStr.AppendAscii( "</body>\r\n</html>" );
-
-        String aFileName( RTL_CONSTASCII_USTRINGPARAM("note") );
-        aFileName += String::CreateFromInt32(nSdPage);
-        bOk = WriteHtml( aFileName, true, aStr );
-
-        if (mpProgress)
-            mpProgress->SetState(++mnPagesWritten);
-    }
-
-    pOutliner->Clear();
-
-    return bOk;
-}
-
-// =====================================================================
-// Outline Seiten erzeugen (fuer Frames)
-// =====================================================================
-bool HtmlExport::CreateOutlinePages()
-{
-    bool bOk = true;
-
-    if( mbDocColors )
-    {
-        SetDocColors();
-    }
-
-    // Seite 0 wird der zugeklappte Outline, Seite 1 der aufgeklappte
-    for( int nPage = 0; nPage < (mbImpress?2:1) && bOk; nPage++ )
-    {
-        // Html Kopf
-        String aStr(maHTMLHeader);
-        aStr += WriteMetaCharset();
-        aStr.AppendAscii( "  <title>" );
-        aStr += StringToHTMLString(*mpPageNames[0]);
-        aStr.AppendAscii( "</title>\r\n</head>\r\n" );
-        aStr += CreateBodyTag();
-
-        SdrOutliner* pOutliner = mpDoc->GetInternalOutliner();
-        for(sal_uInt16 nSdPage = 0; nSdPage < mnSdPageCount; nSdPage++)
-        {
-            SdPage* pPage = maPages[ nSdPage ];
-
-            aStr.AppendAscii( "<div align=\"left\">" );
-            String aLink( RTL_CONSTASCII_USTRINGPARAM( "JavaScript:parent.NavigateAbs(" ) );
-            aLink += String::CreateFromInt32(nSdPage);
-            aLink.Append( sal_Unicode(')') );
-
-            String aTitle = CreateTextForTitle(pOutliner,pPage, maBackColor);
-            if(aTitle.Len() == 0)
-                aTitle = *mpPageNames[nSdPage];
-
-            aStr.AppendAscii("<p style=\"");
-            aStr.Append( getParagraphStyle( pOutliner, 0 ) );
-            aStr.AppendAscii("\">");
-            aStr += CreateLink(aLink, aTitle);
-            aStr.AppendAscii("</p>");
-
-            if(nPage==1)
-            {
-                aStr += CreateTextForPage( pOutliner, pPage, false, maBackColor );
-            }
-            aStr.AppendAscii( "</div>\r\n" );
-        }
-        pOutliner->Clear();
-
-        aStr.AppendAscii( "</body>\r\n</html>" );
-
-        String aFileName( RTL_CONSTASCII_USTRINGPARAM("outline") );
-        aFileName += String::CreateFromInt32(nPage);
-        bOk = WriteHtml( aFileName, true, aStr );
-
-        if (mpProgress)
-            mpProgress->SetState(++mnPagesWritten);
-    }
-
-    return bOk;
-}
-
-// =====================================================================
-// Dateinamen festlegen
-// =====================================================================
-void HtmlExport::CreateFileNames()
-{
-    // Listen mit neuen Dateinamen anlegen
-    mpHTMLFiles = new String*[mnSdPageCount];
-    mpImageFiles = new String*[mnSdPageCount];
-    mpThumbnailFiles = new String*[mnSdPageCount];
-    mpPageNames = new String*[mnSdPageCount];
-    mpTextFiles = new String*[mnSdPageCount];
-
-    mbHeader = false;	// Ueberschrift auf Uebersichtsseite?
-
-    for (sal_uInt16 nSdPage = 0; nSdPage < mnSdPageCount; nSdPage++)
-    {
-        String* pName;
-        if(nSdPage == 0 && !mbContentsPage && !mbFrames )
-            pName = new String(maIndex);
-        else
-        {
-            pName = new String( RTL_CONSTASCII_USTRINGPARAM("img") );
-            *pName += String::CreateFromInt32(nSdPage);
-            *pName += maHTMLExtension;
-        }
-
-        mpHTMLFiles[nSdPage] = pName;
-
-        pName = new String( RTL_CONSTASCII_USTRINGPARAM("img") );
-        *pName += String::CreateFromInt32(nSdPage);
-        if( meFormat==FORMAT_GIF )
-            pName->AppendAscii( ".gif" );
-        else if( meFormat==FORMAT_JPG )
-            pName->AppendAscii( ".jpg" );
-        else
-            pName->AppendAscii( ".png" );
-
-        mpImageFiles[nSdPage] = pName;
-
-        pName = new String( RTL_CONSTASCII_USTRINGPARAM("thumb") );
-        *pName += String::CreateFromInt32(nSdPage);
-        if( meFormat!=FORMAT_JPG )
-            pName->AppendAscii( ".png" );
-        else
-            pName->AppendAscii( ".jpg" );
-
-        mpThumbnailFiles[nSdPage] = pName;
-
-        pName = new String( RTL_CONSTASCII_USTRINGPARAM("text"));
-        *pName += String::CreateFromInt32(nSdPage);
-        *pName += maHTMLExtension;
-        mpTextFiles[nSdPage] = pName;
-
-        SdPage* pSdPage = maPages[ nSdPage ];
-
-        // get slide title from page name
-        String* pPageTitle = new String();
-        *pPageTitle = pSdPage->GetName();
-        mpPageNames[nSdPage] = pPageTitle;
-    }
-
-    if(!mbContentsPage && mbFrames)
-        maFramePage = maIndex;
-    else
-    {
-        maFramePage.AssignAscii( "siframes" );
-        maFramePage += maHTMLExtension;
-    }
-}
-
-String HtmlExport::getDocumentTitle()
-{
-    // check for a title object in this page, if its the first
-    // title it becomes this documents title for the content
-    // page
-    if( !mbHeader )
-    {
-        if(mbImpress)
-        {
-            // falls es ein nicht-leeres Titelobjekt gibt, dessen ersten Absatz
-            // als Seitentitel benutzen
-            SdPage* pSdPage = mpDoc->GetSdPage(0, PK_STANDARD);
-            SdrObject* pTitleObj = pSdPage->GetPresObj(PRESOBJ_TITLE);
-            if (pTitleObj && !pTitleObj->IsEmptyPresObj())
-            {
-                OutlinerParaObject* pParaObject = pTitleObj->GetOutlinerParaObject();
-                if (pParaObject)
-                {
-                    const EditTextObject& rEditTextObject =
-                        pParaObject->GetTextObject();
-                    if (&rEditTextObject)
-                    {
-                        String aTest(rEditTextObject.GetText(0));
-                        if (aTest.Len() > 0)
-                            mDocTitle = aTest;
-                    }
-                }
-            }
-
-            for( sal_uInt16 i = 0; i < mDocTitle.Len(); i++ )
-                if( mDocTitle.GetChar(i) == (sal_Unicode)0xff)
-                    mDocTitle.SetChar(i, sal_Unicode(' ') );
-        }
-
-        if( !mDocTitle.Len() )
-        {
-            mDocTitle = maDocFileName;
-            int nDot = mDocTitle.Search( '.' );
-            if( nDot > 0 )
-                mDocTitle.Erase( (sal_uInt16)nDot );
-        }
-        mbHeader = true;
-    }
-
-    return mDocTitle;
-}
-
-static const char* JS_NavigateAbs =
-    "function NavigateAbs( nPage )\r\n"
-    "{\r\n"
-    "  frames[\"show\"].location.href = \"img\" + nPage + \".$EXT\";\r\n"
-    "  //frames[\"notes\"].location.href = \"note\" + nPage + \".$EXT\";\r\n"
-    "  nCurrentPage = nPage;\r\n"
-    "  if(nCurrentPage==0)\r\n"
-    "  {\r\n"
-    "    frames[\"navbar1\"].location.href = \"navbar0.$EXT\";\r\n"
-    "  }\r\n"
-    "  else if(nCurrentPage==nPageCount-1)\r\n"
-    "  {\r\n"
-    "    frames[\"navbar1\"].location.href = \"navbar2.$EXT\";\r\n"
-    "  }\r\n"
-    "  else\r\n"
-    "  {\r\n"
-    "    frames[\"navbar1\"].location.href = \"navbar1.$EXT\";\r\n"
-    "  }\r\n"
-    "}\r\n\r\n";
-
-static const char* JS_NavigateRel =
-    "function NavigateRel( nDelta )\r\n"
-    "{\r\n"
-    "  var nPage = parseInt(nCurrentPage) + parseInt(nDelta);\r\n"
-    "  if( (nPage >= 0) && (nPage < nPageCount) )\r\n"
-    "  {\r\n"
-    "    NavigateAbs( nPage );\r\n"
-    "  }\r\n"
-    "}\r\n\r\n";
-
-static const char* JS_ExpandOutline =
-    "function ExpandOutline()\r\n"
-    "{\r\n"
-    "  frames[\"navbar2\"].location.href = \"navbar4.$EXT\";\r\n"
-    "  frames[\"outline\"].location.href = \"outline1.$EXT\";\r\n"
-    "}\r\n\r\n";
-
-static const char * JS_CollapseOutline =
-    "function CollapseOutline()\r\n"
-    "{\r\n"
-    "  frames[\"navbar2\"].location.href = \"navbar3.$EXT\";\r\n"
-    "  frames[\"outline\"].location.href = \"outline0.$EXT\";\r\n"
-    "}\r\n\r\n";
-
-// ====================================================================
-// Seite mit den Frames erzeugen
-// ====================================================================
-bool HtmlExport::CreateFrames()
-{
-    String aTmp;
-    String aStr( RTL_CONSTASCII_USTRINGPARAM(
-                    "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Frameset//EN\"\r\n"
-                    "    \"http://www.w3.org/TR/html4/frameset.dtd\">\r\n"
-            "<html>\r\n<head>\r\n" ) );
-
-    aStr += WriteMetaCharset();
-    aStr.AppendAscii( "  <title>" );
-    aStr += StringToHTMLString(*mpPageNames[0]);
-    aStr.AppendAscii( "</title>\r\n" );
-
-    aStr.AppendAscii( "<script type=\"text/javascript\">\r\n<!--\r\n" );
-
-    aStr.AppendAscii( "var nCurrentPage = 0;\r\nvar nPageCount = " );
-    aStr += String::CreateFromInt32(mnSdPageCount);
-    aStr.AppendAscii( ";\r\n\r\n" );
-
-    String aFunction;
-    aFunction.AssignAscii(JS_NavigateAbs);
-
-    if(mbNotes)
-    {
-        String aEmpty;
-        String aSlash( RTL_CONSTASCII_USTRINGPARAM( "//" ) );
-        aFunction.SearchAndReplaceAll( aSlash, aEmpty);
-    }
-
-    // substitute HTML file extension
-    String aPlaceHolder(RTL_CONSTASCII_USTRINGPARAM(".$EXT"));
-    aFunction.SearchAndReplaceAll(aPlaceHolder, maHTMLExtension);
-    aStr += aFunction;
-
-    aTmp.AssignAscii( JS_NavigateRel );
-    aTmp.SearchAndReplaceAll(aPlaceHolder, maHTMLExtension);
-    aStr += aTmp;
-
-    if(mbImpress)
-    {
-        aTmp.AssignAscii( JS_ExpandOutline );
-        aTmp.SearchAndReplaceAll(aPlaceHolder, maHTMLExtension);
-        aStr += aTmp;
-
-        aTmp.AssignAscii( JS_CollapseOutline );
-        aTmp.SearchAndReplaceAll(aPlaceHolder, maHTMLExtension);
-        aStr += aTmp;
-    }
-    aStr.AppendAscii( "// -->\r\n</script>\r\n" );
-
-    aStr.AppendAscii( "</head>\r\n" );
-
-    aStr.AppendAscii( "<frameset cols=\"*," );
-    aStr += String::CreateFromInt32((mnWidthPixel + 16));
-    aStr.AppendAscii( "\">\r\n" );
-    if(mbImpress)
-    {
-        aStr.AppendAscii( "  <frameset rows=\"42,*\">\r\n" );
-        aStr.AppendAscii( "    <frame src=\"navbar3" );
-        aStr += StringToURL(maHTMLExtension);
-        aStr.AppendAscii( "\" name=\"navbar2\" marginwidth=\"4\" marginheight=\"4\" scrolling=\"no\">\r\n" );
-    }
-    aStr.AppendAscii( "    <frame src=\"outline0" );
-    aStr += StringToURL(maHTMLExtension);
-    aStr.AppendAscii( "\" name=\"outline\">\r\n" );
-    if(mbImpress)
-        aStr.AppendAscii( "  </frameset>\r\n" );
-
-    if(mbNotes)
-    {
-        aStr.AppendAscii( "  <frameset rows=\"42," );
-        aStr += String::CreateFromInt32((int)((double)mnWidthPixel * 0.75) + 16);
-        aStr.AppendAscii( ",*\">\r\n" );
-    }
-    else
-        aStr.AppendAscii( "  <frameset rows=\"42,*\">\r\n" );
-
-    aStr.AppendAscii( "    <frame src=\"navbar0" );
-    aStr += StringToURL(maHTMLExtension);
-    aStr.AppendAscii( "\" name=\"navbar1\" marginwidth=\"4\" marginheight=\"4\" scrolling=\"no\">\r\n" );
-
-    aStr.AppendAscii( "    <frame src=\"" );
-    aStr += StringToURL(*mpHTMLFiles[0]);
-    aStr.AppendAscii( "\" name=\"show\" marginwidth=\"4\" marginheight=\"4\">\r\n" );
-
-    if(mbNotes)
-    {
-        aStr.AppendAscii( "    <frame src=\"note0" );
-        aStr += StringToURL(maHTMLExtension);
-        aStr.AppendAscii( "\" name=\"notes\">\r\n" );
-    }
-    aStr.AppendAscii( "  </frameset>\r\n" );
-
-    aStr.AppendAscii( "<noframes>\r\n" );
-    aStr += CreateBodyTag();
-    aStr += RESTOHTML(STR_HTMLEXP_NOFRAMES);
-    aStr.AppendAscii( "\r\n</noframes>\r\n</frameset>\r\n</html>" );
-
-    bool bOk = WriteHtml( maFramePage, false, aStr );
-
-    if (mpProgress)
-        mpProgress->SetState(++mnPagesWritten);
-
-    return bOk;
-}
-
-// ====================================================================
-// Buttonleiste fuer Standard ausgeben
-// Es werden 4 html files erstellt
-// navbar0.htm Navigationsleiste Grafik fuer erste Seite
-// navbar1.htm Navigationsleiste Grafik fuer zweite bis vorletzte Seite
-// navbar2.htm Navigationsleiste Grafik fuer letzte Seite
-// navbar3.htm Navigationsleiste Outline zugeklappt
-// navbar4.htm Navigationsleiste Outline aufgeklappt
-// ====================================================================
-bool HtmlExport::CreateNavBarFrames()
-{
-    bool bOk = true;
-    String aButton;
-
-    if( mbDocColors )
-    {
-        SetDocColors();
-        maBackColor = maFirstPageColor;
-    }
-
-    for( int nFile = 0; nFile < 3 && bOk; nFile++ )
-    {
-        String aStr(maHTMLHeader);
-        aStr += WriteMetaCharset();
-        aStr.AppendAscii( "  <title>" );
-        aStr += StringToHTMLString(*mpPageNames[0]);
-        aStr.AppendAscii( "</title>\r\n</head>\r\n" );
-        aStr += CreateBodyTag();
-        aStr.AppendAscii( "<center>\r\n" );
-
-    // erste Seite
-        aButton = String(SdResId(STR_HTMLEXP_FIRSTPAGE));
-        if(mnButtonThema != -1)
-            aButton = CreateImage(GetButtonName((nFile == 0 || mnSdPageCount == 1?
-                                  BTN_FIRST_0:BTN_FIRST_1)), aButton);
-
-        if(nFile != 0 && mnSdPageCount > 1)
-            aButton = CreateLink( String(RTL_CONSTASCII_USTRINGPARAM("JavaScript:parent.NavigateAbs(0)")), aButton);
-
-        aStr += aButton;
-        aStr.AppendAscii( "\r\n" );
-
-    // zur vorherigen Seite
-        aButton = String(SdResId(STR_PUBLISH_BACK));
-        if(mnButtonThema != -1)
-            aButton = CreateImage(GetButtonName((nFile == 0 || mnSdPageCount == 1?
-                                    BTN_PREV_0:BTN_PREV_1)), aButton);
-
-        if(nFile != 0 && mnSdPageCount > 1)
-            aButton = CreateLink( String(RTL_CONSTASCII_USTRINGPARAM("JavaScript:parent.NavigateRel(-1)")), aButton);
-
-        aStr += aButton;
-        aStr.AppendAscii( "\r\n" );
-
-    // zur naechsten Seite
-        aButton = String(SdResId(STR_PUBLISH_NEXT));
-        if(mnButtonThema != -1)
-            aButton = CreateImage(GetButtonName((nFile ==2 || mnSdPageCount == 1?
-                                    BTN_NEXT_0:BTN_NEXT_1)), aButton);
-
-        if(nFile != 2 && mnSdPageCount > 1)
-            aButton = CreateLink(String(RTL_CONSTASCII_USTRINGPARAM("JavaScript:parent.NavigateRel(1)")), aButton);
-
-        aStr += aButton;
-        aStr.AppendAscii( "\r\n" );
-
-    // zur letzten Seite
-        aButton = String(SdResId(STR_HTMLEXP_LASTPAGE));
-        if(mnButtonThema != -1)
-            aButton = CreateImage(GetButtonName((nFile ==2 || mnSdPageCount == 1?
-                                  BTN_LAST_0:BTN_LAST_1)), aButton);
-
-        if(nFile != 2 && mnSdPageCount > 1)
-        {
-            String aLink(RTL_CONSTASCII_USTRINGPARAM("JavaScript:parent.NavigateAbs("));
-            aLink += String::CreateFromInt32(mnSdPageCount-1);
-            aLink.AppendAscii( ")" );
-            aButton = CreateLink( aLink, aButton);
-        }
-
-        aStr += aButton;
-        aStr.AppendAscii( "\r\n" );
-
-    // Inhalt
-        if (mbContentsPage)
-        {
-            aButton = String(SdResId(STR_PUBLISH_OUTLINE));
-            if(mnButtonThema != -1)
-                aButton = CreateImage(GetButtonName(BTN_INDEX), aButton);
-
-            // zur Uebersicht
-            aStr += CreateLink(maIndex, aButton, String(RTL_CONSTASCII_USTRINGPARAM("_top")));
-            aStr.AppendAscii( "\r\n" );
-        }
-
-    // Textmodus
-        if(mbImpress)
-        {
-            aButton = String(SdResId(STR_HTMLEXP_SETTEXT));
-            if(mnButtonThema != -1)
-                aButton = CreateImage(GetButtonName(BTN_TEXT), aButton);
-
-            String	aText0( RTL_CONSTASCII_USTRINGPARAM("text0"));
-            aText0 += maHTMLExtension;
-            aStr += CreateLink( aText0, aButton, String(RTL_CONSTASCII_USTRINGPARAM("_top")));
-            aStr.AppendAscii( "\r\n" );
-        }
-
-    // Und fertich...
-        aStr.AppendAscii( "</center>\r\n" );
-        aStr.AppendAscii( "</body>\r\n</html>" );
-
-        String aFileName( RTL_CONSTASCII_USTRINGPARAM("navbar") );
-        aFileName += String::CreateFromInt32(nFile);
-
-        bOk = WriteHtml( aFileName, true, aStr );
-
-        if (mpProgress)
-            mpProgress->SetState(++mnPagesWritten);
-    }
-
-    // Jetzt kommt die Navigatonsleiste Outliner zugeklappt...
-    if(bOk)
-    {
-        String aStr(maHTMLHeader);
-        aStr += WriteMetaCharset();
-        aStr.AppendAscii( "  <title>" );
-        aStr += StringToHTMLString(*mpPageNames[0]);
-        aStr.AppendAscii( "</title>\r\n</head>\r\n" );
-        aStr += CreateBodyTag();
-
-        aButton = String(SdResId(STR_HTMLEXP_OUTLINE));
-        if(mnButtonThema != -1)
-            aButton = CreateImage(GetButtonName(BTN_MORE), aButton);
-
-        aStr += CreateLink(String(RTL_CONSTASCII_USTRINGPARAM("JavaScript:parent.ExpandOutline()")), aButton);
-        aStr.AppendAscii( "</body>\r\n</html>" );
-
-        String aFileName( RTL_CONSTASCII_USTRINGPARAM("navbar3") );
-
-        bOk = WriteHtml( aFileName, true, aStr );
-
-        if (mpProgress)
-            mpProgress->SetState(++mnPagesWritten);
-    }
-
-    // ... und jetzt Outliner aufgeklappt
-    if( bOk )
-    {
-        String aStr(maHTMLHeader);
-        aStr += WriteMetaCharset();
-        aStr.AppendAscii( "  <title>" );
-        aStr += StringToHTMLString(*mpPageNames[0]);
-        aStr.AppendAscii( "</title>\r\n</head>\r\n" );
-        aStr += CreateBodyTag();
-
-        aButton = String(SdResId(STR_HTMLEXP_NOOUTLINE));
-        if(mnButtonThema != -1)
-            aButton = CreateImage(GetButtonName(BTN_LESS), aButton);
-
-        aStr += CreateLink(String(RTL_CONSTASCII_USTRINGPARAM("JavaScript:parent.CollapseOutline()")), aButton);
-        aStr.AppendAscii( "</body>\r\n</html>" );
-
-        String aFileName( RTL_CONSTASCII_USTRINGPARAM("navbar4") );
-        bOk = WriteHtml( aFileName, true, aStr );
-
-        if (mpProgress)
-            mpProgress->SetState(++mnPagesWritten);
-
-    }
-
-    return bOk;
-}
-
-// ====================================================================
-// Buttonleiste fuer Standard ausgeben
-// ====================================================================
-String HtmlExport::CreateNavBar( sal_uInt16 nSdPage, bool bIsText ) const
-{
-    // Navigationsleiste vorbereiten
-    String aStrNavFirst( SdResId(STR_HTMLEXP_FIRSTPAGE) );
-    String aStrNavPrev( SdResId(STR_PUBLISH_BACK) );
-    String aStrNavNext( SdResId(STR_PUBLISH_NEXT) );
-    String aStrNavLast( SdResId(STR_HTMLEXP_LASTPAGE) );
-    String aStrNavContent( SdResId(STR_PUBLISH_OUTLINE) );
-    String aStrNavText;
-    if( bIsText )
-    {
-        aStrNavText = String( SdResId(STR_HTMLEXP_SETGRAPHIC) );
-    }
-    else
-    {
-        aStrNavText = String( SdResId(STR_HTMLEXP_SETTEXT) );
-    }
-
-    if(!bIsText && mnButtonThema != -1)
-    {
-        if(nSdPage<1 || mnSdPageCount == 1)
-        {
-            aStrNavFirst = CreateImage(GetButtonName(BTN_FIRST_0), aStrNavFirst);
-            aStrNavPrev  = CreateImage(GetButtonName(BTN_PREV_0), aStrNavPrev);
-        }
-        else
-        {
-            aStrNavFirst = CreateImage(GetButtonName(BTN_FIRST_1), aStrNavFirst);
-            aStrNavPrev  = CreateImage(GetButtonName(BTN_PREV_1), aStrNavPrev);
-        }
-
-        if(nSdPage == mnSdPageCount-1 || mnSdPageCount == 1)
-        {
-            aStrNavNext    = CreateImage(GetButtonName(BTN_NEXT_0), aStrNavNext);
-            aStrNavLast    = CreateImage(GetButtonName(BTN_LAST_0), aStrNavLast);
-        }
-        else
-        {
-            aStrNavNext    = CreateImage(GetButtonName(BTN_NEXT_1), aStrNavNext);
-            aStrNavLast    = CreateImage(GetButtonName(BTN_LAST_1), aStrNavLast);
-        }
-
-        aStrNavContent = CreateImage(GetButtonName(BTN_INDEX), aStrNavContent);
-        aStrNavText    = CreateImage(GetButtonName(BTN_TEXT), aStrNavText);
-    }
-
-    String aStr( RTL_CONSTASCII_USTRINGPARAM("<center>\r\n")); //<table><tr>\r\n");
-
-    // erste Seite
-    if(nSdPage > 0)
-        aStr += CreateLink(bIsText?*mpTextFiles[0]:*mpHTMLFiles[0],aStrNavFirst);
-    else
-        aStr += aStrNavFirst;
-    aStr.Append(sal_Unicode(' '));
-
-    // to Previous page
-    if(nSdPage > 0)
-        aStr += CreateLink( bIsText?*mpTextFiles[nSdPage-1]:
-                                    *mpHTMLFiles[nSdPage-1],	aStrNavPrev);
-    else
-        aStr += aStrNavPrev;
-    aStr.Append(sal_Unicode(' '));
-
-    // to Next page
-    if(nSdPage < mnSdPageCount-1)
-        aStr += CreateLink( bIsText?*mpTextFiles[nSdPage+1]:
-                                    *mpHTMLFiles[nSdPage+1], aStrNavNext);
-    else
-        aStr += aStrNavNext;
-    aStr.Append(sal_Unicode(' '));
-
-    // to Last page
-    if(nSdPage < mnSdPageCount-1)
-        aStr += CreateLink( bIsText?*mpTextFiles[mnSdPageCount-1]:
-                                    *mpHTMLFiles[mnSdPageCount-1],
-                                    aStrNavLast );
-    else
-        aStr += aStrNavLast;
-    aStr.Append(sal_Unicode(' '));
-
-    // to Index page
-    if (mbContentsPage)
-    {
-        aStr += CreateLink(maIndex, aStrNavContent);
-        aStr.Append(sal_Unicode(' '));
-    }
-
-    // Text/Graphics
-    if(mbImpress)
-    {
-        aStr += CreateLink( bIsText?(mbFrames?maFramePage:*mpHTMLFiles[nSdPage]):
-                                    *mpTextFiles[nSdPage], aStrNavText);
-
-    }
-
-    aStr.AppendAscii( "</center><br>\r\n" );
-
-    return aStr;
-}
-
-/** export navigation graphics from button set */
-bool HtmlExport::CreateBitmaps()
-{
-    if(mnButtonThema != -1 && mpButtonSet.get() )
-    {
-        for( int nButton = 0; nButton < NUM_BUTTONS; nButton++ )
-        {
-            if(!mbFrames && (nButton == BTN_MORE || nButton == BTN_LESS))
-                continue;
-
-            if(!mbImpress && (nButton == BTN_TEXT || nButton == BTN_MORE || nButton == BTN_LESS ))
-                continue;
-
-            OUString aFull(maExportPath);
-            aFull += GetButtonName(nButton);
-            mpButtonSet->exportButton( mnButtonThema, aFull, GetButtonName(nButton) );
-        }
-    }
-    return true;
-}
-
-// =====================================================================
-// Erzeugt den <body> Tag, inkl. der eingestellten Farbattribute
-// =====================================================================
-String HtmlExport::CreateBodyTag() const
-{
-    String aStr( RTL_CONSTASCII_USTRINGPARAM("<body") );
-
-    if( mbUserAttr || mbDocColors )
-    {
-        Color aTextColor( maTextColor );
-        if( (aTextColor == COL_AUTO) && (!maBackColor.IsDark()) )
-            aTextColor = COL_BLACK;
-
-        aStr.AppendAscii( " text=\"" );
-        aStr += ColorToHTMLString( aTextColor );
-        aStr.AppendAscii( "\" bgcolor=\"" );
-        aStr += ColorToHTMLString( maBackColor );
-        aStr.AppendAscii( "\" link=\"" );
-        aStr += ColorToHTMLString( maLinkColor );
-        aStr.AppendAscii( "\" vlink=\"" );
-        aStr += ColorToHTMLString( maVLinkColor );
-        aStr.AppendAscii( "\" alink=\"" );
-        aStr += ColorToHTMLString( maALinkColor );
-        aStr.AppendAscii( "\"" );
-    }
-
-    aStr.AppendAscii( ">\r\n" );
-
-    return aStr;
-}
-
-// =====================================================================
-// Erzeugt einen Hyperlink
-// =====================================================================
-String HtmlExport::CreateLink( const String& aLink,
-                               const String& aText,
-                               const String& aTarget ) const
-{
-    String aStr( RTL_CONSTASCII_USTRINGPARAM("<a href=\""));
-    aStr += StringToURL(aLink);
-    if(aTarget.Len())
-    {
-        aStr.AppendAscii( "\" target=\"" );
-        aStr += aTarget;
-    }
-    aStr.AppendAscii( "\">" );
-    aStr += aText;
-    aStr.AppendAscii( "</a>" );
-
-    return aStr;
-}
-
-// =====================================================================
-// Erzeugt ein Image-tag
-// =====================================================================
-String HtmlExport::CreateImage( const String& aImage, const String& aAltText,
-                                sal_Int16 nWidth,
-                                sal_Int16 nHeight ) const
-{
-    String aStr( RTL_CONSTASCII_USTRINGPARAM("<img src=\""));
-    aStr += StringToURL(aImage);
-    aStr.AppendAscii( "\" border=0" );
-
-    if( aAltText.Len())
-    {
-        aStr.AppendAscii( " alt=\"" );
-        aStr += aAltText;
-        aStr.Append(sal_Unicode('"'));
-    }
-    else
-    {
-        // Agerskov: HTML 4.01 has to have an alt attribut even if it is an empty string
-        aStr.AppendAscii( " alt=\"\"" );
-     }
-
-    if(nWidth > -1)
-    {
-        aStr.AppendAscii( " width=" );
-        aStr += String::CreateFromInt32(nWidth);
-    }
-
-    if(nHeight > -1)
-    {
-        aStr.AppendAscii( " height=" );
-        aStr += String::CreateFromInt32(nHeight);
-    }
-
-    aStr.Append(sal_Unicode('>'));
-
-    return aStr;
-}
-
-// =====================================================================
-// Area fuer Kreis erzeugen; es werden Pixelkoordinaten erwartet
-// =====================================================================
-String HtmlExport::ColorToHTMLString( Color aColor )
-{
-    static char hex[] = "0123456789ABCDEF";
-    String aStr( RTL_CONSTASCII_USTRINGPARAM("#xxxxxx"));
-    aStr.SetChar(1, hex[(aColor.GetRed() >> 4) & 0xf] );
-    aStr.SetChar(2, hex[aColor.GetRed()   & 0xf] );
-    aStr.SetChar(3, hex[(aColor.GetGreen() >> 4) & 0xf] );
-    aStr.SetChar(4, hex[aColor.GetGreen() & 0xf] );
-    aStr.SetChar(5, hex[(aColor.GetBlue() >> 4) & 0xf] );
-    aStr.SetChar(6, hex[aColor.GetBlue()  & 0xf] );
-
-    return aStr;
-}
-
-// =====================================================================
-// Area fuer Kreis erzeugen; es werden Pixelkoordinaten erwartet
-// =====================================================================
-String HtmlExport::CreateHTMLCircleArea( sal_uLong nRadius,
-                                         sal_uLong nCenterX,
-                                         sal_uLong nCenterY,
-                                         const String& rHRef ) const
-{
-    String aStr( RTL_CONSTASCII_USTRINGPARAM("<area shape=\"circle\" alt=\"\" coords=\"" ));
-
-    aStr += String::CreateFromInt32(nCenterX);
-    aStr.Append(sal_Unicode(','));
-    aStr += String::CreateFromInt32(nCenterY);
-    aStr.Append(sal_Unicode(','));
-    aStr += String::CreateFromInt32(nRadius);
-    aStr.AppendAscii( "\" href=\"" );
-    aStr += StringToURL(rHRef);
-    aStr.AppendAscii( "\">\n" );
-
-    return aStr;
-}
-
-
-// =====================================================================
-// Area fuer Polygon erzeugen; es werden Pixelkoordinaten erwartet
-// =====================================================================
-String HtmlExport::CreateHTMLPolygonArea( const ::basegfx::B2DPolyPolygon& rPolyPolygon,
-    Size aShift, double fFactor, const String& rHRef ) const
-{
-    String			aStr;
-    const sal_uInt32 nNoOfPolygons(rPolyPolygon.count());
-
-    for ( sal_uInt32 nXPoly = 0L; nXPoly < nNoOfPolygons; nXPoly++ )
-    {
-        const ::basegfx::B2DPolygon& aPolygon = rPolyPolygon.getB2DPolygon(nXPoly);
-        const sal_uInt32 nNoOfPoints(aPolygon.count());
-
-        aStr.AppendAscii( "<area shape=\"polygon\" alt=\"\" coords=\"" );
-
-        for ( sal_uInt32 nPoint = 0L; nPoint < nNoOfPoints; nPoint++ )
-        {
-            const ::basegfx::B2DPoint aB2DPoint(aPolygon.getB2DPoint(nPoint));
-            Point aPnt(FRound(aB2DPoint.getX()), FRound(aB2DPoint.getY()));
-            // das Koordinaten beziehen sich auf den
-            // physikalischen Seitenursprung, nicht auf den
-            // Koordinatenursprung
-            aPnt.Move(aShift.Width(), aShift.Height());
-
-            aPnt.X() = (long)(aPnt.X() * fFactor);
-            aPnt.Y() = (long)(aPnt.Y() * fFactor);
-            aStr += String::CreateFromInt32(aPnt.X());
-            aStr.Append(sal_Unicode(','));
-            aStr += String::CreateFromInt32(aPnt.Y());
-
-            if (nPoint < nNoOfPoints - 1)
-                aStr.Append( sal_Unicode(',') );
-        }
-        aStr.AppendAscii( "\" href=\"" );
-        aStr += StringToURL(rHRef);
-        aStr.AppendAscii( "\">\n" );
-    }
-
-    return aStr;
-}
-
-// =====================================================================
-// Area fuer Rechteck erzeugen; es werden Pixelkoordinaten erwartet
-// =====================================================================
-String HtmlExport::CreateHTMLRectArea( const Rectangle& rRect,
-                                       const String& rHRef ) const
-{
-    String aStr( RTL_CONSTASCII_USTRINGPARAM("<area shape=\"rect\" alt=\"\" coords=\"") );
-
-    aStr += String::CreateFromInt32(rRect.Left());
-    aStr.Append(sal_Unicode(','));
-    aStr += String::CreateFromInt32(rRect.Top());
-    aStr.Append(sal_Unicode(','));
-    aStr += String::CreateFromInt32(rRect.Right());
-    aStr.Append(sal_Unicode(','));
-    aStr += String::CreateFromInt32(rRect.Bottom());
-    aStr.AppendAscii( "\" href=\"" );
-    aStr += StringToURL(rHRef);
-    aStr.AppendAscii( "\">\n" );
-
-    return aStr;
-}
-
-// =====================================================================
-// StringToHTMLString, konvertiert einen String in
-// seine HTML-Repraesentation (Umlaute etc.)
-// =====================================================================
-String HtmlExport::StringToHTMLString( const String& rString )
-{
-    SvMemoryStream aMemStm;
-    HTMLOutFuncs::Out_String( aMemStm, rString, RTL_TEXTENCODING_UTF8 );
-    aMemStm << (char) 0;
-    return String( (char*)aMemStm.GetData(), RTL_TEXTENCODING_UTF8 );
-}
-
-// =====================================================================
-// Erzeugt die URL einer bestimmten Seite
-// =====================================================================
-String HtmlExport::CreatePageURL( sal_uInt16 nPgNum )
-{
-    if(mbFrames)
-    {
-        String aUrl( RTL_CONSTASCII_USTRINGPARAM("JavaScript:parent.NavigateAbs("));
-        aUrl += String::CreateFromInt32(nPgNum);
-        aUrl.Append(sal_Unicode(')'));
-        return aUrl;
-    }
-    else
-        return *mpHTMLFiles[nPgNum];
-}
-
-bool HtmlExport::CopyScript( const String& rPath, const String& rSource, const String& rDest, bool bUnix /* = false */ )
-{
-    INetURLObject	aURL( SvtPathOptions().GetConfigPath() );
-    String		aScript;
-
-    aURL.Append( String( RTL_CONSTASCII_USTRINGPARAM("webcast") ) );
-    aURL.Append( rSource );
-
-    meEC.SetContext( STR_HTMLEXP_ERROR_OPEN_FILE, rSource );
-
-    sal_uLong		nErr = 0;
-    SvStream*	pIStm = ::utl::UcbStreamHelper::CreateStream( aURL.GetMainURL( INetURLObject::NO_DECODE ), STREAM_READ );
-
-    if( pIStm )
-    {
-        ByteString aLine;
-
-        while( pIStm->ReadLine( aLine ) )
-        {
-            aScript.AppendAscii( aLine.GetBuffer() );
-            if( bUnix )
-            {
-                aScript.AppendAscii( "\n" );
-            }
-            else
-            {
-                aScript.AppendAscii( "\r\n" );
-            }
-        }
-
-        nErr = pIStm->GetError();
-        delete pIStm;
-    }
-
-    if( nErr != 0 )
-    {
-        ErrorHandler::HandleError( nErr );
-        return (bool) nErr;
-    }
-
-
-    aScript.SearchAndReplaceAll( String(RTL_CONSTASCII_USTRINGPARAM("$$1")), getDocumentTitle() );
-
-    const String aSaveStr( RESTOHTML( STR_WEBVIEW_SAVE ));
-    aScript.SearchAndReplaceAll( String(RTL_CONSTASCII_USTRINGPARAM("$$2")), aSaveStr );
-
-    aScript.SearchAndReplaceAll( String(RTL_CONSTASCII_USTRINGPARAM("$$3")), maCGIPath );
-
-    aScript.SearchAndReplaceAll( String(RTL_CONSTASCII_USTRINGPARAM("$$4")), String::CreateFromInt32(mnWidthPixel) );
-    aScript.SearchAndReplaceAll( String(RTL_CONSTASCII_USTRINGPARAM("$$5")), String::CreateFromInt32(mnHeightPixel) );
-
-
-    String aDest( rPath );
-    aDest += rDest;
-
-    meEC.SetContext( STR_HTMLEXP_ERROR_CREATE_FILE, rDest );
-    // write script file
-    {
-        EasyFile aFile;
-        SvStream* pStr;
-        nErr = aFile.createStream(aDest, pStr);
-        if(nErr == 0)
-        {
-            ByteString aStr( aScript, RTL_TEXTENCODING_UTF8 );
-            *pStr << aStr.GetBuffer();
-
-            nErr = aFile.close();
-        }
-    }
-
-    if (mpProgress)
-        mpProgress->SetState(++mnPagesWritten);
-
-    if( nErr != 0 )
-        ErrorHandler::HandleError( nErr );
-
-    return nErr == 0;
-}
-
-static const char * ASP_Scripts[] = { "common.inc", "webcast.asp", "show.asp", "savepic.asp", "poll.asp", "editpic.asp" };
-
-/** erzeugt und speichert die f?r WebShow ben?tigte ASP Scripte */
-bool HtmlExport::CreateASPScripts()
-{
-    for( sal_uInt16 n = 0; n < (sizeof( ASP_Scripts ) / sizeof(char *)); n++ )
-    {
-        String aScript;
-
-        aScript.AssignAscii( ASP_Scripts[n] );
-        if(!CopyScript(maExportPath, aScript, aScript))
-            return false;
-    }
-
-    if(!CopyScript(maExportPath, String(RTL_CONSTASCII_USTRINGPARAM("edit.asp")), maIndex ))
-        return false;
-
-    return true;
-}
-
-
-static const char *PERL_Scripts[] = { "webcast.pl", "common.pl", "editpic.pl", "poll.pl", "savepic.pl", "show.pl" };
-
-/** erzeugt und speichert die f?r WebShow ben?tigte PERL Scripte */
-bool HtmlExport::CreatePERLScripts()
-{
-    for( sal_uInt16 n = 0; n < (sizeof( PERL_Scripts ) / sizeof(char *)); n++ )
-    {
-        String aScript;
-        aScript.AssignAscii( PERL_Scripts[n] );
-        if(!CopyScript(maExportPath, aScript, aScript, true))
-            return false;
-    }
-
-    if(!CopyScript(maExportPath, String( RTL_CONSTASCII_USTRINGPARAM("edit.pl")), maIndex, true ))
-        return false;
-
-    if(!CopyScript(maExportPath, String( RTL_CONSTASCII_USTRINGPARAM("index.pl")), maIndexUrl, true ))
-        return false;
-
-    return true;
-}
-
-/** Erzeugt eine Liste mit den Namen der gespeicherten Images */
-bool HtmlExport::CreateImageFileList()
-{
-    String aStr;
-    for( sal_uInt16 nSdPage = 0; nSdPage < mnSdPageCount; nSdPage++)
-    {
-        aStr += String::CreateFromInt32( nSdPage + 1 );
-        aStr.Append(sal_Unicode(';'));
-        aStr += maURLPath;
-        aStr += *mpImageFiles[nSdPage];
-        aStr.AppendAscii( "\r\n" );
-    }
-
-    String aFileName( RTL_CONSTASCII_USTRINGPARAM("picture.txt") );
-    bool bOk = WriteHtml( aFileName, false, aStr );
-
-    if (mpProgress)
-        mpProgress->SetState(++mnPagesWritten);
-
-    return bOk;
-}
-
-/** Erzeugt das File mit der aktuellen Seitennumer */
-bool HtmlExport::CreateImageNumberFile()
-{
-    String aFull( maExportPath );
-    String aFileName( RTL_CONSTASCII_USTRINGPARAM("currpic.txt") );
-    aFull += aFileName;
-
-    meEC.SetContext( STR_HTMLEXP_ERROR_CREATE_FILE, aFileName );
-    EasyFile aFile;
-    SvStream* pStr;
-    sal_uLong nErr = aFile.createStream(aFull, pStr);
-    if(nErr == 0)
-    {
-        *pStr << (const char *)"1";
-        nErr = aFile.close();
-    }
-
-    if (mpProgress)
-        mpProgress->SetState(++mnPagesWritten);
-
-    if( nErr != 0 )
-        ErrorHandler::HandleError( nErr );
-
-    return nErr == 0;
-}
-
-// =====================================================================
-
-String HtmlExport::InsertSound( const String& rSoundFile )
-{
-    if( rSoundFile.Len() == 0 )
-        return rSoundFile;
-
-    String		aStr( RTL_CONSTASCII_USTRINGPARAM("<embed src=\"") );
-    INetURLObject	aURL( rSoundFile );
-
-    DBG_ASSERT( aURL.GetProtocol() != INET_PROT_NOT_VALID, "invalid URL" );
-
-    aStr += String(aURL.getName());
-    aStr.AppendAscii( "\" hidden=\"true\" autostart=\"true\">" );
-
-    CopyFile( rSoundFile, maExportPath );
-
-    return aStr;
-}
-
-// =====================================================================
-
-bool HtmlExport::CopyFile( const String& rSourceFile, const String& rDestPath )
-{
-    DirEntry aSourceEntry( rSourceFile );
-    DirEntry aDestEntry( rDestPath );
-
-    meEC.SetContext( STR_HTMLEXP_ERROR_COPY_FILE, aSourceEntry.GetName(), rDestPath );
-    FSysError nError = aSourceEntry.CopyTo( aDestEntry, FSYS_ACTION_COPYFILE );
-
-    if( nError != FSYS_ERR_OK )
-    {
-        ErrorHandler::HandleError(nError);
-        return false;
-    }
-    else
-    {
-        return true;
-    }
-}
-
-// =====================================================================
-
-bool HtmlExport::checkFileExists( Reference< ::com::sun::star::ucb::XSimpleFileAccess >& xFileAccess, String const & aFileName )
-{
-    try
-    {
-        OUString url( maExportPath );
-        url += aFileName;
-        return xFileAccess->exists( url );
-    }
-    catch( com::sun::star::uno::Exception& e )
-    {
-        (void)e;
-        OSL_FAIL((OString("sd::HtmlExport::checkFileExists(), exception caught: ") +
-             rtl::OUStringToOString( comphelper::anyToString( cppu::getCaughtException() ), RTL_TEXTENCODING_UTF8 )).getStr() );
-    }
-
-    return false;
-}
-
-// ---------------------------------------------------------------------
-
-bool HtmlExport::checkForExistingFiles()
-{
-    bool bFound = false;
-
-    try
-    {
-        Reference< XMultiServiceFactory > xMsf( ::comphelper::getProcessServiceFactory() );
-        Reference< ::com::sun::star::ucb::XSimpleFileAccess > xFA( xMsf->createInstance(
-            OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.ucb.SimpleFileAccess"))), UNO_QUERY_THROW );
-
-        sal_uInt16 nSdPage;
-        for( nSdPage = 0; !bFound && (nSdPage < mnSdPageCount); nSdPage++)
-        {
-            if( (mpImageFiles[nSdPage] && checkFileExists( xFA, *mpImageFiles[nSdPage] )) ||
-                (mpHTMLFiles[nSdPage] && checkFileExists( xFA, *mpHTMLFiles[nSdPage] )) ||
-                (mpThumbnailFiles[nSdPage] && checkFileExists( xFA, *mpThumbnailFiles[nSdPage] )) ||
-                (mpPageNames[nSdPage] && checkFileExists( xFA, *mpPageNames[nSdPage] )) ||
-                (mpTextFiles[nSdPage] && checkFileExists( xFA, *mpTextFiles[nSdPage] )) )
-            {
-                bFound = true;
-            }
-        }
-
-        if( !bFound && mbDownload )
-            bFound = checkFileExists( xFA, maDocFileName );
-
-        if( !bFound && mbFrames )
-            bFound = checkFileExists( xFA, maFramePage );
-
-        if( bFound )
-        {
-            ResMgr *pResMgr = CREATERESMGR( dbw );
-            if( pResMgr )
-            {
-                ResId aResId( 4077, *pResMgr );
-                String aMsg( aResId );
-
-                OUString aSystemPath;
-                osl::FileBase::getSystemPathFromFileURL( maExportPath, aSystemPath );
-                aMsg.SearchAndReplaceAscii( "%FILENAME", aSystemPath );
-                WarningBox aWarning( 0, WB_YES_NO | WB_DEF_YES, aMsg );
-                aWarning.SetImage( WarningBox::GetStandardImage() );
-                bFound = ( RET_NO == aWarning.Execute() );
-
-                delete pResMgr;
-            }
-            else
-            {
-                bFound = false;
-            }
-        }
-    }
-    catch( Exception& e )
-    {
-        (void)e;
-        OSL_FAIL((OString("sd::HtmlExport::checkForExistingFiles(), exception caught: ") +
-             rtl::OUStringToOString( comphelper::anyToString( cppu::getCaughtException() ), RTL_TEXTENCODING_UTF8 )).getStr() );
-        bFound = false;
-    }
-
-    return bFound;
-}
-
-// ---------------------------------------------------------------------
-
-String HtmlExport::StringToURL( const String& rURL )
-{
-    return rURL;
-}
-
-String HtmlExport::GetButtonName( int nButton ) const
-{
-    String aName;
-    aName.AssignAscii( pButtonNames[nButton] );
-    return aName;
-}
-
-// =====================================================================
-EasyFile::EasyFile()
-{
-    pMedium = NULL;
-    pOStm = NULL;
-    bOpen = false;
-}
-
-// =====================================================================
-EasyFile::~EasyFile()
-{
-    if( bOpen )
-        close();
-}
-
-// =====================================================================
-sal_uLong EasyFile::createStream(  const String& rUrl, SvStream* &rpStr )
-{
-    sal_uLong nErr = 0;
-
-    if(bOpen)
-        nErr = close();
-
-    String aFileName;
-
-    if( nErr == 0 )
-        nErr = createFileName( rUrl, aFileName );
-
-    if( nErr == 0 )
-    {
-        pOStm = ::utl::UcbStreamHelper::CreateStream( aFileName, STREAM_WRITE | STREAM_TRUNC );
-        if( pOStm )
-        {
-            bOpen = true;
-            nErr = pOStm->GetError();
-        }
-        else
-        {
-            nErr = ERRCODE_SFX_CANTCREATECONTENT;
-        }
-    }
-
-    if( nErr != 0 )
-    {
-        bOpen = false;
-        delete pMedium;
-        delete pOStm;
-        pOStm = NULL;
-    }
-
-    rpStr = pOStm;
-
-    return nErr;
-}
-
-// =====================================================================
-sal_uLong EasyFile::createFileName(  const String& rURL, String& rFileName )
-{
-    sal_uLong nErr = 0;
-
-    if( bOpen )
-        nErr = close();
-
-    if( nErr == 0 )
-    {
-        INetURLObject aURL( rURL );
-
-        if( aURL.GetProtocol() == INET_PROT_NOT_VALID )
-        {
-            String aURLStr;
-            ::utl::LocalFileHelper::ConvertPhysicalNameToURL( rURL, aURLStr );
-            aURL = INetURLObject( aURLStr );
-        }
-        DBG_ASSERT( aURL.GetProtocol() != INET_PROT_NOT_VALID, "invalid URL" );
-        rFileName = aURL.GetMainURL( INetURLObject::NO_DECODE );
-    }
-
-    return nErr;
-}
-
-// =====================================================================
-sal_uLong EasyFile::close()
-{
-    sal_uLong nErr = 0;
-
-    delete pOStm;
-    pOStm = NULL;
-
-    bOpen = false;
-
-    if( pMedium )
-    {
-        // uebertragen
-        pMedium->Close();
-        pMedium->Commit();
-
-        nErr = pMedium->GetError();
-
-        delete pMedium;
-        pMedium = NULL;
-    }
-
-    return nErr;
-}
-
-// =====================================================================
-// This class helps reporting errors during file i/o
-// =====================================================================
-
-HtmlErrorContext::HtmlErrorContext(Window *_pWin)
-: ErrorContext(_pWin)
-{
-    mnResId = 0;
-}
-
-// =====================================================================
-
-sal_Bool HtmlErrorContext::GetString( sal_uLong, String& rCtxStr )
-{
-    DBG_ASSERT( mnResId != 0, "No error context set" );
-    if( mnResId == 0 )
-        return false;
-
-    rCtxStr = String( SdResId( mnResId ) );
-
-    rCtxStr.SearchAndReplace( String( RTL_CONSTASCII_USTRINGPARAM("$(URL1)")), maURL1 );
-    rCtxStr.SearchAndReplace( String( RTL_CONSTASCII_USTRINGPARAM("$(URL2)")), maURL2 );
-
-    return true;
-}
-
-// =====================================================================
-
-void HtmlErrorContext::SetContext( sal_uInt16 nResId, const String& rURL )
-{
-    mnResId = nResId;
-    maURL1 = rURL;
-    maURL2.Erase();
-}
-
-// =====================================================================
-
-void HtmlErrorContext::SetContext( sal_uInt16 nResId, const String& rURL1, const String& rURL2 )
-{
-    mnResId = nResId;
-    maURL1 = rURL1;
-    maURL2 = rURL2;
-}
-
-// =====================================================================
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */


More information about the LibreOffice mailing list