blob: 3c5b3cb1b48428f0054c7a5a1abc4b89f051838c [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef _SD_HTMLEX_HXX
#define _SD_HTMLEX_HXX
#include <com/sun/star/beans/PropertyValue.hpp>
#include <com/sun/star/ucb/XSimpleFileAccess.hpp>
#include <vcl/gdimtf.hxx>
#include <svl/itemset.hxx>
#include "resltn.hxx" // enum PublishingResolution
#include <svtools/colrdlg.hxx>
#include <svtools/ehdl.hxx>
#include "strings.hrc"
#include "DrawDocShell.hxx"
#include "Window.hxx"
#include "ViewShell.hxx"
#include "assclass.hxx"
#ifndef _SD_RESID_HXX
#include "sdresid.hxx"
#endif
#include "pubdlg.hxx"
#include <vector>
#include <boost/scoped_ptr.hpp>
#define NUM_BUTTONS 12
#define PUB_LOWRES_WIDTH 640
#define PUB_LOWRES_HEIGHT 480
#define PUB_MEDRES_WIDTH 800
#define PUB_MEDRES_HEIGHT 600
#define PUB_HIGHRES_WIDTH 1024
#define PUB_HIGHRES_HEIGHT 768
class List;
class SfxProgress;
class SdrOutliner;
class SdPage;
class HtmlState;
class SdrTextObj;
class SdrPage;
class SdDrawDocument;
class ButtonSet;
namespace sd {
class View;
}
class HtmlErrorContext : public ErrorContext
{
private:
sal_uInt16 mnResId;
String maURL1;
String maURL2;
public:
HtmlErrorContext(Window *pWin=0);
~HtmlErrorContext() {};
virtual sal_Bool GetString( sal_uLong nErrId, String& rCtxStr );
void SetContext( sal_uInt16 nResId, const String& rURL );
void SetContext( sal_uInt16 nResId, const String& rURL1, const String& rURL2 );
};
// =====================================================================
// this class exports an Impress Document as a HTML Presentation
// =====================================================================
class HtmlExport
{
std::vector< SdPage* > maPages;
std::vector< SdPage* > maNotesPages;
String maPath;
SdDrawDocument* mpDoc;
::sd::DrawDocShell* mpDocSh;
HtmlErrorContext meEC;
HtmlPublishMode meMode;
SfxProgress* mpProgress;
bool mbImpress;
sal_uInt16 mnSdPageCount;
sal_uInt16 mnPagesWritten;
bool mbContentsPage;
sal_Int16 mnButtonThema;
sal_uInt16 mnWidthPixel;
sal_uInt16 mnHeightPixel;
PublishingFormat meFormat;
bool mbHeader;
bool mbNotes;
bool mbFrames;
bool mbKiosk;
String maIndex;
String maEMail;
String maAuthor;
String maHomePage;
String maInfo;
sal_Int16 mnCompression;
String maDocFileName;
String maFramePage;
String mDocTitle;
bool mbDownload;
bool mbAutoSlide;
sal_uInt32 mnSlideDuration;
bool mbSlideSound;
bool mbHiddenSlides;
bool mbEndless;
bool mbUserAttr; // die folgenden Farben werden fuer das <body>
Color maTextColor; // tag genutzt, wenn mbUserAttr true ist
Color maBackColor;
Color maLinkColor;
Color maVLinkColor;
Color maALinkColor;
Color maFirstPageColor;
bool mbDocColors;
String maHTMLExtension;
String** mpHTMLFiles;
String** mpImageFiles;
String** mpPageNames;
String** mpTextFiles;
String maExportPath; // Das Ausgabeverzeichnes bzw. die URL
String maIndexUrl;
String maURLPath;
String maCGIPath;
PublishingScript meScript;
const String maHTMLHeader;
boost::scoped_ptr< ButtonSet > mpButtonSet;
SdrTextObj* GetLayoutTextObject(SdrPage* pPage);
void SetDocColors( SdPage* pPage = NULL );
bool CreateImagesForPresPages();
bool CreateHtmlTextForPresPages();
bool CreateHtmlForPresPages();
bool CreateContentPage();
void CreateFileNames();
bool CreateBitmaps();
bool CreateOutlinePages();
bool CreateFrames();
bool CreateNotesPages();
bool CreateNavBarFrames();
bool CreateASPScripts();
bool CreatePERLScripts();
bool CreateImageFileList();
bool CreateImageNumberFile();
bool checkForExistingFiles();
bool checkFileExists( ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XSimpleFileAccess >& xFileAccess, String const & aFileName );
String getDocumentTitle();
bool SavePresentation();
String CreateLink( const String& aLink, const String& aText,
const String& aTarget = String()) const;
String CreateImage( const String& aImage, const String& aAltText, sal_Int16 nWidth = -1, sal_Int16 nHeight = -1 ) const;
String CreateNavBar( sal_uInt16 nSdPage, bool bIsText ) const;
String CreateBodyTag() const;
String ParagraphToHTMLString( SdrOutliner* pOutliner, sal_uLong nPara, const Color& rBackgroundColor );
String TextAttribToHTMLString( SfxItemSet* pSet, HtmlState* pState, const Color& rBackgroundColor );
String CreateTextForTitle( SdrOutliner* pOutliner, SdPage* pPage, const Color& rBackgroundColor );
String CreateTextForPage( SdrOutliner* pOutliner, SdPage* pPage, bool bHeadLine, const Color& rBackgroundColor );
String CreateTextForNotesPage( SdrOutliner* pOutliner, SdPage* pPage, bool bHeadLine, const Color& rBackgroundColor );
String CreateHTMLCircleArea( sal_uLong nRadius, sal_uLong nCenterX,
sal_uLong nCenterY, const String& rHRef ) const;
String CreateHTMLPolygonArea( const ::basegfx::B2DPolyPolygon& rPolyPoly, Size aShift, double fFactor, const String& rHRef ) const;
String CreateHTMLRectArea( const Rectangle& rRect,
const String& rHRef ) const;
String CreatePageURL( sal_uInt16 nPgNum );
String InsertSound( const String& rSoundFile );
bool CopyFile( const String& rSourceFile, const String& rDestPath );
bool CopyScript( const String& rPath, const String& rSource, const String& rDest, bool bUnix = false );
void InitProgress( sal_uInt16 nProgrCount );
void ResetProgress();
String WriteMetaCharset() const;
void InitExportParameters( const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& rParams);
void ExportHtml();
void ExportKiosk();
void ExportWebCast();
bool WriteHtml( const String& rFileName, bool bAddExtension, const String& rHtmlData );
String GetButtonName( int nButton ) const;
public:
HtmlExport( rtl::OUString aPath, const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& rParams, SdDrawDocument* pExpDoc, ::sd::DrawDocShell* pDocShell );
virtual ~HtmlExport();
static String ColorToHTMLString( Color aColor );
static String StringToHTMLString( const String& rString );
static String StringToURL( const String& rURL );
};
#endif // _SD_HTMLEX_HXX