xref: /trunk/main/sd/source/filter/html/htmlex.hxx (revision 67e470da)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef _SD_HTMLEX_HXX
25 #define _SD_HTMLEX_HXX
26 
27 #include <com/sun/star/beans/PropertyValue.hpp>
28 #include <com/sun/star/ucb/XSimpleFileAccess.hpp>
29 #include <vcl/gdimtf.hxx>
30 #include <svl/itemset.hxx>
31 #include "resltn.hxx"       // enum PublishingResolution
32 #include <svtools/colrdlg.hxx>
33 #include <svtools/ehdl.hxx>
34 
35 #include "strings.hrc"
36 #include "DrawDocShell.hxx"
37 #include "Window.hxx"
38 #include "ViewShell.hxx"
39 #include "assclass.hxx"
40 
41 #ifndef _SD_RESID_HXX
42 #include "sdresid.hxx"
43 #endif
44 #include "pubdlg.hxx"
45 
46 #include <vector>
47 #include <boost/scoped_ptr.hpp>
48 
49 #define NUM_BUTTONS 12
50 
51 #define PUB_LOWRES_WIDTH	640
52 #define PUB_LOWRES_HEIGHT	480
53 #define PUB_MEDRES_WIDTH	800
54 #define PUB_MEDRES_HEIGHT	600
55 #define PUB_HIGHRES_WIDTH	1024
56 #define PUB_HIGHRES_HEIGHT	768
57 
58 class List;
59 class SfxProgress;
60 class SdrOutliner;
61 class SdPage;
62 class HtmlState;
63 class SdrTextObj;
64 class SdrPage;
65 class SdDrawDocument;
66 class ButtonSet;
67 
68 namespace sd {
69 class View;
70 }
71 
72 class HtmlErrorContext : public ErrorContext
73 {
74 private:
75 	sal_uInt16	mnResId;
76 	String	maURL1;
77 	String	maURL2;
78 
79 public:
80 					HtmlErrorContext(Window *pWin=0);
~HtmlErrorContext()81 					~HtmlErrorContext() {};
82 
83 	virtual sal_Bool	GetString( sal_uLong nErrId, String& rCtxStr );
84 
85 	void			SetContext( sal_uInt16 nResId, const String& rURL );
86 	void			SetContext( sal_uInt16 nResId, const String& rURL1, const String& rURL2 );
87 };
88 
89 // =====================================================================
90 // this class exports an Impress Document as a HTML Presentation
91 // =====================================================================
92 class HtmlExport
93 {
94     std::vector< SdPage* > maPages;
95     std::vector< SdPage* > maNotesPages;
96 
97 	String maPath;
98 
99 	SdDrawDocument* mpDoc;
100 	::sd::DrawDocShell* mpDocSh;
101 
102 	HtmlErrorContext meEC;
103 
104 	HtmlPublishMode meMode;
105 	SfxProgress* mpProgress;
106 	bool mbImpress;
107 	sal_uInt16 mnSdPageCount;
108 	sal_uInt16 mnPagesWritten;
109 	bool mbContentsPage;
110 	sal_Int16 mnButtonThema;
111 	sal_uInt16 mnWidthPixel;
112 	sal_uInt16 mnHeightPixel;
113 	PublishingFormat meFormat;
114 	bool mbHeader;
115 	bool mbNotes;
116 	bool mbFrames;
117 	bool mbKiosk;
118 	String maIndex;
119 	String maEMail;
120 	String maAuthor;
121 	String maHomePage;
122 	String maInfo;
123 	sal_Int16 mnCompression;
124 	String maDocFileName;
125 	String maFramePage;
126 	String mDocTitle;
127 	bool mbDownload;
128 
129 	bool mbAutoSlide;
130 	sal_uInt32	mnSlideDuration;
131 	bool mbSlideSound;
132     bool mbHiddenSlides;
133 	bool mbEndless;
134 
135 	bool mbUserAttr;			// die folgenden Farben werden fuer das <body>
136 	Color maTextColor;			// tag genutzt, wenn mbUserAttr true ist
137 	Color maBackColor;
138 	Color maLinkColor;
139 	Color maVLinkColor;
140 	Color maALinkColor;
141 	Color maFirstPageColor;
142 	bool mbDocColors;
143 
144 	String	 maHTMLExtension;
145 	String** mpHTMLFiles;
146 	String** mpImageFiles;
147 	String** mpPageNames;
148 	String** mpTextFiles;
149 
150 	String maExportPath;			// Das Ausgabeverzeichnes bzw. die URL
151 	String maIndexUrl;
152 	String maURLPath;
153 	String maCGIPath;
154 	PublishingScript meScript;
155 
156 	const String maHTMLHeader;
157 
158 	boost::scoped_ptr< ButtonSet > mpButtonSet;
159 
160 	SdrTextObj* GetLayoutTextObject(SdrPage* pPage);
161 
162 	void SetDocColors( SdPage* pPage = NULL );
163 
164 	bool	CreateImagesForPresPages();
165 	bool	CreateHtmlTextForPresPages();
166 	bool	CreateHtmlForPresPages();
167 	bool	CreateContentPage();
168 	void	CreateFileNames();
169 	bool	CreateBitmaps();
170 	bool	CreateOutlinePages();
171 	bool	CreateFrames();
172 	bool	CreateNotesPages();
173 	bool	CreateNavBarFrames();
174 
175 	bool	CreateASPScripts();
176 	bool	CreatePERLScripts();
177 	bool	CreateImageFileList();
178 	bool	CreateImageNumberFile();
179 
180 	bool	checkForExistingFiles();
181 	bool	checkFileExists( ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XSimpleFileAccess >& xFileAccess, String const & aFileName );
182 
183 	String getDocumentTitle();
184 	bool	SavePresentation();
185 
186 	String	CreateLink( const String& aLink, const String& aText,
187 						const String& aTarget = String()) const;
188 	String	CreateImage( const String& aImage, const String& aAltText, sal_Int16 nWidth = -1, sal_Int16 nHeight = -1 ) const;
189 	String	CreateNavBar( sal_uInt16 nSdPage, bool bIsText ) const;
190 	String	CreateBodyTag() const;
191 
192 	String	ParagraphToHTMLString( SdrOutliner* pOutliner, sal_uLong nPara, const Color& rBackgroundColor );
193 	String	TextAttribToHTMLString( SfxItemSet* pSet, HtmlState* pState, const Color& rBackgroundColor );
194 
195 	String	CreateTextForTitle( SdrOutliner* pOutliner, SdPage* pPage, const Color& rBackgroundColor );
196 	String	CreateTextForPage( SdrOutliner* pOutliner, SdPage* pPage, bool bHeadLine, const Color& rBackgroundColor );
197 	String	CreateTextForNotesPage( SdrOutliner* pOutliner, SdPage* pPage, bool bHeadLine, const Color& rBackgroundColor );
198 
199 	String	CreateHTMLCircleArea( sal_uLong nRadius, sal_uLong nCenterX,
200 								  sal_uLong nCenterY, const String& rHRef ) const;
201 	String	CreateHTMLPolygonArea( const ::basegfx::B2DPolyPolygon& rPolyPoly, Size aShift, double fFactor, const String& rHRef ) const;
202 	String	CreateHTMLRectArea( const Rectangle& rRect,
203 								const String& rHRef ) const;
204 
205 	String	CreatePageURL( sal_uInt16 nPgNum );
206 
207 	String InsertSound( const String& rSoundFile );
208 	bool CopyFile( const String& rSourceFile, const String& rDestPath );
209 	bool CopyScript( const String& rPath, const String& rSource, const String& rDest, bool bUnix = false );
210 
211 	void InitProgress( sal_uInt16 nProgrCount );
212 	void ResetProgress();
213 
214 	String WriteMetaCharset() const;
215 
216 	void InitExportParameters( const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& rParams);
217 	void ExportHtml();
218 	void ExportKiosk();
219 	void ExportWebCast();
220 
221 	bool WriteHtml( const String& rFileName, bool bAddExtension, const String& rHtmlData );
222 	String GetButtonName( int nButton ) const;
223 
224  public:
225 	 HtmlExport( rtl::OUString aPath, const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& rParams, SdDrawDocument* pExpDoc, ::sd::DrawDocShell* pDocShell );
226 	virtual ~HtmlExport();
227 
228 	static String	ColorToHTMLString( Color aColor );
229 	static String	StringToHTMLString( const String& rString );
230 	static String	StringToURL( const String& rURL );
231 };
232 
233 #endif // _SD_HTMLEX_HXX
234