Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*************************************************************************
3 : : *
4 : : * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 : : *
6 : : * Copyright 2000, 2010 Oracle and/or its affiliates.
7 : : *
8 : : * OpenOffice.org - a multi-platform office productivity suite
9 : : *
10 : : * This file is part of OpenOffice.org.
11 : : *
12 : : * OpenOffice.org is free software: you can redistribute it and/or modify
13 : : * it under the terms of the GNU Lesser General Public License version 3
14 : : * only, as published by the Free Software Foundation.
15 : : *
16 : : * OpenOffice.org is distributed in the hope that it will be useful,
17 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 : : * GNU Lesser General Public License version 3 for more details
20 : : * (a copy is included in the LICENSE file that accompanied this code).
21 : : *
22 : : * You should have received a copy of the GNU Lesser General Public License
23 : : * version 3 along with OpenOffice.org. If not, see
24 : : * <http://www.openoffice.org/license.html>
25 : : * for a copy of the LGPLv3 License.
26 : : *
27 : : ************************************************************************/
28 : :
29 : : #include <com/sun/star/embed/EmbedStates.hpp>
30 : : #include <com/sun/star/beans/XPropertySet.hpp>
31 : :
32 : : #include "hintids.hxx"
33 : : #include <rtl/strbuf.hxx>
34 : : #include <svl/urihelper.hxx>
35 : : #include <vcl/svapp.hxx>
36 : : #include <sfx2/frmhtml.hxx>
37 : : #include <sfx2/frmhtmlw.hxx>
38 : : #include <vcl/wrkwin.hxx>
39 : : #include <sot/storage.hxx>
40 : : #include <svx/xoutbmp.hxx>
41 : : #include <editeng/ulspitem.hxx>
42 : : #include <editeng/lrspitem.hxx>
43 : : #include <svtools/htmlkywd.hxx>
44 : : #include <svtools/htmltokn.h>
45 : : #include <SwAppletImpl.hxx>
46 : : #include <fmtornt.hxx>
47 : : #include <fmtfsize.hxx>
48 : : #include <fmtsrnd.hxx>
49 : : #include <fmtanchr.hxx>
50 : : #include <fmtcntnt.hxx>
51 : : #include <frmfmt.hxx>
52 : :
53 : : #include <svl/ownlist.hxx>
54 : : #include "pam.hxx"
55 : : #include "doc.hxx"
56 : : #include "ndtxt.hxx"
57 : : #include "swerror.h"
58 : : #include "ndole.hxx"
59 : : #include "swtable.hxx"
60 : : #include "swhtml.hxx"
61 : : #include "wrthtml.hxx"
62 : : #include "htmlfly.hxx"
63 : : #include "swcss1.hxx"
64 : : #include <com/sun/star/embed/XClassifiedObject.hpp>
65 : : #include <comphelper/embeddedobjectcontainer.hxx>
66 : : #include <sot/clsids.hxx>
67 : :
68 : : using namespace com::sun::star;
69 : :
70 : : #define HTML_DFLT_EMBED_WIDTH ((MM50*5)/2)
71 : : #define HTML_DFLT_EMBED_HEIGHT ((MM50*5)/2)
72 : :
73 : : #define HTML_DFLT_APPLET_WIDTH ((MM50*5)/2)
74 : : #define HTML_DFLT_APPLET_HEIGHT ((MM50*5)/2)
75 : :
76 : : namespace {
77 : :
78 : : static char const sHTML_O_Hidden_False[] = "FALSE";
79 : :
80 : : }
81 : :
82 : : const sal_uLong HTML_FRMOPTS_EMBED_ALL =
83 : : HTML_FRMOPT_ALT |
84 : : HTML_FRMOPT_SIZE |
85 : : HTML_FRMOPT_NAME;
86 : : const sal_uLong HTML_FRMOPTS_EMBED_CNTNR =
87 : : HTML_FRMOPTS_EMBED_ALL |
88 : : HTML_FRMOPT_ABSSIZE;
89 : : const sal_uLong HTML_FRMOPTS_EMBED =
90 : : HTML_FRMOPTS_EMBED_ALL |
91 : : HTML_FRMOPT_ALIGN |
92 : : HTML_FRMOPT_SPACE |
93 : : HTML_FRMOPT_BRCLEAR |
94 : : HTML_FRMOPT_NAME;
95 : : const sal_uLong HTML_FRMOPTS_HIDDEN_EMBED =
96 : : HTML_FRMOPT_ALT |
97 : : HTML_FRMOPT_NAME;
98 : :
99 : : const sal_uLong HTML_FRMOPTS_APPLET_ALL =
100 : : HTML_FRMOPT_ALT |
101 : : HTML_FRMOPT_SIZE;
102 : : const sal_uLong HTML_FRMOPTS_APPLET_CNTNR =
103 : : HTML_FRMOPTS_APPLET_ALL |
104 : : HTML_FRMOPT_ABSSIZE;
105 : : const sal_uLong HTML_FRMOPTS_APPLET =
106 : : HTML_FRMOPTS_APPLET_ALL |
107 : : HTML_FRMOPT_ALIGN |
108 : : HTML_FRMOPT_SPACE |
109 : : HTML_FRMOPT_BRCLEAR;
110 : :
111 : : const sal_uLong HTML_FRMOPTS_IFRAME_ALL =
112 : : HTML_FRMOPT_ALT |
113 : : HTML_FRMOPT_SIZE;
114 : : const sal_uLong HTML_FRMOPTS_IFRAME_CNTNR =
115 : : HTML_FRMOPTS_IFRAME_ALL |
116 : : HTML_FRMOPT_ABSSIZE;
117 : : const sal_uLong HTML_FRMOPTS_IFRAME =
118 : : HTML_FRMOPTS_IFRAME_ALL |
119 : : HTML_FRMOPT_ALIGN |
120 : : HTML_FRMOPT_SPACE |
121 : : HTML_FRMOPT_BORDER |
122 : : HTML_FRMOPT_BRCLEAR;
123 : :
124 : : const sal_uLong HTML_FRMOPTS_OLE_CSS1 =
125 : : HTML_FRMOPT_S_ALIGN |
126 : : HTML_FRMOPT_S_SPACE;
127 : :
128 : :
129 : 0 : void SwHTMLParser::SetFixSize( const Size& rPixSize,
130 : : const Size& rTwipDfltSize,
131 : : sal_Bool bPrcWidth, sal_Bool bPrcHeight,
132 : : SfxItemSet& /*rCSS1ItemSet*/,
133 : : SvxCSS1PropertyInfo& rCSS1PropInfo,
134 : : SfxItemSet& rFlyItemSet )
135 : : {
136 : : // absolulte Groessenangaben in Twip umrechnen
137 : 0 : sal_uInt8 nPrcWidth = 0, nPrcHeight = 0;
138 : 0 : Size aTwipSz( bPrcWidth || USHRT_MAX==rPixSize.Width() ? 0 : rPixSize.Width(),
139 [ # # ][ # # ]: 0 : bPrcHeight || USHRT_MAX==rPixSize.Height() ? 0 : rPixSize.Height() );
[ # # # # ]
140 [ # # ][ # # ]: 0 : if( (aTwipSz.Width() || aTwipSz.Height()) && Application::GetDefaultDevice() )
[ # # ][ # # ]
[ # # ]
141 : : {
142 : : aTwipSz =
143 : : Application::GetDefaultDevice()->PixelToLogic( aTwipSz,
144 [ # # ][ # # ]: 0 : MapMode(MAP_TWIP) );
[ # # ][ # # ]
145 : : }
146 : :
147 : : // die Breite bearbeiten
148 [ # # ]: 0 : if( SVX_CSS1_LTYPE_PERCENTAGE == rCSS1PropInfo.eWidthType )
149 : : {
150 : 0 : nPrcWidth = (sal_uInt8)rCSS1PropInfo.nWidth;
151 : 0 : aTwipSz.Width() = rTwipDfltSize.Width();
152 : : }
153 [ # # ]: 0 : else if( SVX_CSS1_LTYPE_TWIP== rCSS1PropInfo.eWidthType )
154 : : {
155 : 0 : aTwipSz.Width() = rCSS1PropInfo.nWidth;
156 : : }
157 [ # # ][ # # ]: 0 : else if( bPrcWidth && rPixSize.Width() )
[ # # ]
158 : : {
159 : 0 : nPrcWidth = (sal_uInt8)rPixSize.Width();
160 [ # # ]: 0 : if( nPrcWidth > 100 )
161 : 0 : nPrcWidth = 100;
162 : :
163 : 0 : aTwipSz.Width() = rTwipDfltSize.Width();
164 : : }
165 [ # # ]: 0 : else if( USHRT_MAX==rPixSize.Width() )
166 : : {
167 : 0 : aTwipSz.Width() = rTwipDfltSize.Width();
168 : : }
169 [ # # ]: 0 : if( aTwipSz.Width() < MINFLY )
170 : : {
171 : 0 : aTwipSz.Width() = MINFLY;
172 : : }
173 : :
174 : : // Hoehe bearbeiten
175 [ # # ]: 0 : if( SVX_CSS1_LTYPE_PERCENTAGE == rCSS1PropInfo.eHeightType )
176 : : {
177 : 0 : nPrcHeight = (sal_uInt8)rCSS1PropInfo.nHeight;
178 : 0 : aTwipSz.Height() = rTwipDfltSize.Height();
179 : : }
180 [ # # ]: 0 : else if( SVX_CSS1_LTYPE_TWIP== rCSS1PropInfo.eHeightType )
181 : : {
182 : 0 : aTwipSz.Height() = rCSS1PropInfo.nHeight;
183 : : }
184 [ # # ][ # # ]: 0 : else if( bPrcHeight && rPixSize.Height() )
[ # # ]
185 : : {
186 : 0 : nPrcHeight = (sal_uInt8)rPixSize.Height();
187 [ # # ]: 0 : if( nPrcHeight > 100 )
188 : 0 : nPrcHeight = 100;
189 : :
190 : 0 : aTwipSz.Height() = rTwipDfltSize.Height();
191 : : }
192 [ # # ]: 0 : else if( USHRT_MAX==rPixSize.Height() )
193 : : {
194 : 0 : aTwipSz.Height() = rTwipDfltSize.Height();
195 : : }
196 [ # # ]: 0 : if( aTwipSz.Height() < MINFLY )
197 : : {
198 : 0 : aTwipSz.Height() = MINFLY;
199 : : }
200 : :
201 : : // Size setzen
202 [ # # ]: 0 : SwFmtFrmSize aFrmSize( ATT_FIX_SIZE, aTwipSz.Width(), aTwipSz.Height() );
203 : 0 : aFrmSize.SetWidthPercent( nPrcWidth );
204 : 0 : aFrmSize.SetHeightPercent( nPrcHeight );
205 [ # # ][ # # ]: 0 : rFlyItemSet.Put( aFrmSize );
206 : 0 : }
207 : :
208 : 0 : void SwHTMLParser::SetSpace( const Size& rPixSpace,
209 : : SfxItemSet& rCSS1ItemSet,
210 : : SvxCSS1PropertyInfo& rCSS1PropInfo,
211 : : SfxItemSet& rFlyItemSet )
212 : : {
213 : 0 : sal_Int32 nLeftSpace = 0, nRightSpace = 0;
214 : 0 : sal_uInt16 nUpperSpace = 0, nLowerSpace = 0;
215 [ # # ][ # # ]: 0 : if( (rPixSpace.Width() || rPixSpace.Height()) && Application::GetDefaultDevice() )
[ # # ][ # # ]
[ # # ]
216 : : {
217 : 0 : Size aTwipSpc( rPixSpace.Width(), rPixSpace.Height() );
218 : : aTwipSpc =
219 : : Application::GetDefaultDevice()->PixelToLogic( aTwipSpc,
220 [ # # ][ # # ]: 0 : MapMode(MAP_TWIP) );
[ # # ][ # # ]
221 : 0 : nLeftSpace = nRightSpace = aTwipSpc.Width();
222 : 0 : nUpperSpace = nLowerSpace = (sal_uInt16)aTwipSpc.Height();
223 : : }
224 : :
225 : : // linken/rechten Rand setzen
226 : : const SfxPoolItem *pItem;
227 [ # # ][ # # ]: 0 : if( SFX_ITEM_SET==rCSS1ItemSet.GetItemState( RES_LR_SPACE, sal_True, &pItem ) )
228 : : {
229 : : // Ggf. den Erstzeilen-Einzug noch plaetten
230 : 0 : const SvxLRSpaceItem *pLRItem = (const SvxLRSpaceItem *)pItem;
231 [ # # ]: 0 : SvxLRSpaceItem aLRItem( *pLRItem );
232 [ # # ]: 0 : aLRItem.SetTxtFirstLineOfst( 0 );
233 [ # # ]: 0 : if( rCSS1PropInfo.bLeftMargin )
234 : : {
235 : 0 : nLeftSpace = aLRItem.GetLeft();
236 : 0 : rCSS1PropInfo.bLeftMargin = sal_False;
237 : : }
238 [ # # ]: 0 : if( rCSS1PropInfo.bRightMargin )
239 : : {
240 : 0 : nRightSpace = aLRItem.GetRight();
241 : 0 : rCSS1PropInfo.bRightMargin = sal_False;
242 : : }
243 [ # # ][ # # ]: 0 : rCSS1ItemSet.ClearItem( RES_LR_SPACE );
244 : : }
245 [ # # ][ # # ]: 0 : if( nLeftSpace > 0 || nRightSpace > 0 )
246 : : {
247 [ # # ]: 0 : SvxLRSpaceItem aLRItem( RES_LR_SPACE );
248 : 0 : aLRItem.SetLeft( nLeftSpace > 0 ? nLeftSpace : 0 );
249 : 0 : aLRItem.SetRight( nRightSpace > 0 ? nRightSpace : 0 );
250 [ # # ]: 0 : rFlyItemSet.Put( aLRItem );
251 [ # # ]: 0 : if( nLeftSpace )
252 : : {
253 : : const SwFmtHoriOrient& rHoriOri =
254 [ # # ]: 0 : (const SwFmtHoriOrient&)rFlyItemSet.Get( RES_HORI_ORIENT );
255 [ # # ]: 0 : if( text::HoriOrientation::NONE == rHoriOri.GetHoriOrient() )
256 : : {
257 [ # # ]: 0 : SwFmtHoriOrient aHoriOri( rHoriOri );
258 : 0 : aHoriOri.SetPos( aHoriOri.GetPos() + nLeftSpace );
259 [ # # ][ # # ]: 0 : rFlyItemSet.Put( aHoriOri );
260 : : }
261 [ # # ]: 0 : }
262 : : }
263 : :
264 : : // oberen/unteren Rand setzen
265 [ # # ][ # # ]: 0 : if( SFX_ITEM_SET==rCSS1ItemSet.GetItemState( RES_UL_SPACE, sal_True, &pItem ) )
266 : : {
267 : : // Ggf. den Erstzeilen-Einzug noch plaetten
268 : 0 : const SvxULSpaceItem *pULItem = (const SvxULSpaceItem *)pItem;
269 [ # # ]: 0 : if( rCSS1PropInfo.bTopMargin )
270 : : {
271 : 0 : nUpperSpace = pULItem->GetUpper();
272 : 0 : rCSS1PropInfo.bTopMargin = sal_False;
273 : : }
274 [ # # ]: 0 : if( rCSS1PropInfo.bBottomMargin )
275 : : {
276 : 0 : nLowerSpace = pULItem->GetLower();
277 : 0 : rCSS1PropInfo.bBottomMargin = sal_False;
278 : : }
279 [ # # ]: 0 : rCSS1ItemSet.ClearItem( RES_UL_SPACE );
280 : : }
281 [ # # ][ # # ]: 0 : if( nUpperSpace || nLowerSpace )
282 : : {
283 [ # # ]: 0 : SvxULSpaceItem aULItem( RES_UL_SPACE );
284 : 0 : aULItem.SetUpper( nUpperSpace );
285 : 0 : aULItem.SetLower( nLowerSpace );
286 [ # # ]: 0 : rFlyItemSet.Put( aULItem );
287 [ # # ]: 0 : if( nUpperSpace )
288 : : {
289 : : const SwFmtVertOrient& rVertOri =
290 [ # # ]: 0 : (const SwFmtVertOrient&)rFlyItemSet.Get( RES_VERT_ORIENT );
291 [ # # ]: 0 : if( text::VertOrientation::NONE == rVertOri.GetVertOrient() )
292 : : {
293 [ # # ]: 0 : SwFmtVertOrient aVertOri( rVertOri );
294 : 0 : aVertOri.SetPos( aVertOri.GetPos() + nUpperSpace );
295 [ # # ][ # # ]: 0 : rFlyItemSet.Put( aVertOri );
296 : : }
297 [ # # ]: 0 : }
298 : : }
299 : 0 : }
300 : :
301 : :
302 : 0 : void SwHTMLParser::InsertEmbed()
303 : : {
304 [ # # ][ # # ]: 0 : String aURL, aType, aName, aAlt, aId, aStyle, aClass;
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
305 : 0 : Size aSize( USHRT_MAX, USHRT_MAX );
306 : 0 : Size aSpace( USHRT_MAX, USHRT_MAX );
307 : 0 : sal_Bool bPrcWidth = sal_False, bPrcHeight = sal_False, bHidden = sal_False;
308 : 0 : sal_Int16 eVertOri = text::VertOrientation::NONE;
309 : 0 : sal_Int16 eHoriOri = text::HoriOrientation::NONE;
310 [ # # ]: 0 : SvCommandList aCmdLst;
311 [ # # ]: 0 : const HTMLOptions& rHTMLOptions = GetOptions();
312 : :
313 : : // Die Optionen werden vorwaerts gelesen, weil die Plugins sie in
314 : : // dieser Reihenfolge erwarten. Trotzdem darf immer nur der erste
315 : : // Wert einer Option beruecksichtigt werden.
316 [ # # ]: 0 : for (size_t i = 0, n = rHTMLOptions.size(); i < n; ++i)
317 : : {
318 [ # # ]: 0 : const HTMLOption& rOption = rHTMLOptions[i];
319 [ # # # # : 0 : switch( rOption.GetToken() )
# # # # #
# # # #
# ]
320 : : {
321 : : case HTML_O_ID:
322 [ # # ]: 0 : aId = rOption.GetString();
323 : 0 : break;
324 : : case HTML_O_STYLE:
325 [ # # ]: 0 : aStyle = rOption.GetString();
326 : 0 : break;
327 : : case HTML_O_CLASS:
328 [ # # ]: 0 : aClass = rOption.GetString();
329 : 0 : break;
330 : : case HTML_O_NAME:
331 [ # # ]: 0 : aName = rOption.GetString();
332 : 0 : break;
333 : : case HTML_O_SRC:
334 [ # # ]: 0 : if( !aURL.Len() )
335 [ # # ]: 0 : aURL = rOption.GetString();
336 : 0 : break;
337 : : case HTML_O_ALT:
338 [ # # ]: 0 : aAlt = rOption.GetString();
339 : 0 : break;
340 : : case HTML_O_TYPE:
341 [ # # ]: 0 : if( !aType.Len() )
342 [ # # ]: 0 : aType = rOption.GetString();
343 : 0 : break;
344 : : case HTML_O_ALIGN:
345 [ # # ][ # # ]: 0 : if( eVertOri==text::VertOrientation::NONE && eHoriOri==text::HoriOrientation::NONE )
346 : : {
347 [ # # ]: 0 : eVertOri = rOption.GetEnum( aHTMLImgVAlignTable, eVertOri );
348 [ # # ]: 0 : eHoriOri = rOption.GetEnum( aHTMLImgHAlignTable, eHoriOri );
349 : : }
350 : 0 : break;
351 : : case HTML_O_WIDTH:
352 [ # # ]: 0 : if( USHRT_MAX==aSize.Width() )
353 : : {
354 [ # # ]: 0 : bPrcWidth = (rOption.GetString().Search('%') != STRING_NOTFOUND);
355 [ # # ]: 0 : aSize.Width() = (long)rOption.GetNumber();
356 : : }
357 : 0 : break;
358 : : case HTML_O_HEIGHT:
359 [ # # ]: 0 : if( USHRT_MAX==aSize.Height() )
360 : : {
361 [ # # ]: 0 : bPrcHeight = (rOption.GetString().Search('%') != STRING_NOTFOUND);
362 [ # # ]: 0 : aSize.Height() = (long)rOption.GetNumber();
363 : : }
364 : 0 : break;
365 : : case HTML_O_HSPACE:
366 [ # # ]: 0 : if( USHRT_MAX==aSpace.Width() )
367 [ # # ]: 0 : aSpace.Width() = (long)rOption.GetNumber();
368 : 0 : break;
369 : : case HTML_O_VSPACE:
370 [ # # ]: 0 : if( USHRT_MAX==aSpace.Height() )
371 [ # # ]: 0 : aSpace.Height() = (long)rOption.GetNumber();
372 : 0 : break;
373 : : case HTML_O_UNKNOWN:
374 [ # # ][ # # ]: 0 : if( rOption.GetTokenString().EqualsIgnoreCaseAscii( OOO_STRING_SW_HTML_O_Hidden ) )
375 : : bHidden =
376 [ # # ]: 0 : !rOption.GetString().EqualsIgnoreCaseAscii( sHTML_O_Hidden_False );
377 : 0 : break;
378 : : }
379 : :
380 : : // Es werden alle Parameter an das Plugin weitergereicht
381 [ # # ][ # # ]: 0 : aCmdLst.Append( rOption.GetTokenString(), rOption.GetString() );
[ # # ]
382 : : }
383 : :
384 [ # # ][ # # ]: 0 : SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
385 [ # # ]: 0 : SvxCSS1PropertyInfo aPropInfo;
386 [ # # ]: 0 : if( HasStyleOptions( aStyle, aId, aClass ) )
387 [ # # ]: 0 : ParseStyleOptions( aStyle, aId, aClass, aItemSet, aPropInfo );
388 : :
389 : : // Die Default-Werte umsetzen (ausser Hoehe/Breite, das macht schon
390 : : // SetFrmSize() fuer uns)
391 [ # # ][ # # ]: 0 : if( eVertOri==text::VertOrientation::NONE && eHoriOri==text::HoriOrientation::NONE )
392 : 0 : eVertOri = text::VertOrientation::TOP;
393 [ # # ]: 0 : if( USHRT_MAX==aSpace.Width() )
394 : 0 : aSpace.Width() = 0;
395 [ # # ]: 0 : if( USHRT_MAX==aSpace.Height() )
396 : 0 : aSpace.Height() = 0;
397 [ # # ]: 0 : if( bHidden )
398 : : {
399 : : // Size (0,0) wird in SetFrmSize auf (MINFLY, MINFLY) umgebogen
400 : 0 : aSize.Width() = 0; aSize.Height() = 0;
401 : 0 : aSpace.Width() = 0; aSpace.Height() = 0;
402 : 0 : bPrcWidth = bPrcHeight = sal_False;
403 : : }
404 : :
405 : : // die URL aufbereiten
406 [ # # ]: 0 : INetURLObject aURLObj;
407 : 0 : bool bHasURL = aURL.Len() &&
408 : : aURLObj.SetURL(
409 : : URIHelper::SmartRel2Abs(
410 : : INetURLObject(sBaseURL), aURL,
411 [ # # ][ # # ]: 0 : URIHelper::GetMaybeFileHdl()) );
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # #
# # # # #
# # # ]
[ # # ]
412 : :
413 : : // do not insert plugin if it has neither URL nor type
414 : 0 : bool bHasType = aType.Len() != 0;
415 [ # # ][ # # ]: 0 : if( !bHasURL && !bHasType )
416 : 0 : return;
417 : :
418 : : // das Plugin anlegen
419 [ # # ]: 0 : comphelper::EmbeddedObjectContainer aCnt;
420 : 0 : ::rtl::OUString aObjName;
421 [ # # ][ # # ]: 0 : uno::Reference < embed::XEmbeddedObject > xObj = aCnt.CreateEmbeddedObject( SvGlobalName( SO3_PLUGIN_CLASSID ).GetByteSequence(), aObjName );
[ # # ][ # # ]
[ # # ]
422 [ # # ][ # # ]: 0 : if ( svt::EmbeddedObjectRef::TryRunningState( xObj ) )
423 : : {
424 [ # # ][ # # ]: 0 : uno::Reference < beans::XPropertySet > xSet( xObj->getComponent(), uno::UNO_QUERY );
[ # # ]
425 [ # # ]: 0 : if ( xSet.is() )
426 : : {
427 [ # # ]: 0 : if( bHasURL )
428 [ # # ]: 0 : xSet->setPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("PluginURL")),
429 [ # # ][ # # ]: 0 : uno::makeAny( ::rtl::OUString( aURL ) ) );
[ # # ][ # # ]
430 [ # # ]: 0 : if( bHasType )
431 [ # # ]: 0 : xSet->setPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("PluginMimeType")),
432 [ # # ][ # # ]: 0 : uno::makeAny( ::rtl::OUString( aType ) ) );
[ # # ][ # # ]
433 : :
434 [ # # ]: 0 : uno::Sequence < beans::PropertyValue > aProps;
435 [ # # ]: 0 : aCmdLst.FillSequence( aProps );
436 [ # # ][ # # ]: 0 : xSet->setPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("PluginCommands")), uno::makeAny( aProps ) );
[ # # ][ # # ]
[ # # ]
437 : :
438 : 0 : }
439 : : }
440 : :
441 : 0 : SfxItemSet aFrmSet( pDoc->GetAttrPool(),
442 [ # # ]: 0 : RES_FRMATR_BEGIN, RES_FRMATR_END-1 );
443 [ # # ]: 0 : if( !IsNewDoc() )
444 [ # # ]: 0 : Reader::ResetFrmFmtAttrs( aFrmSet );
445 : :
446 : : // den Anker setzen
447 [ # # ]: 0 : if( !bHidden )
448 : : {
449 [ # # ]: 0 : SetAnchorAndAdjustment( eVertOri, eHoriOri, aItemSet, aPropInfo, aFrmSet );
450 : : }
451 : : else
452 : : {
453 [ # # ]: 0 : SwFmtAnchor aAnchor( FLY_AT_PARA );
454 [ # # ]: 0 : aAnchor.SetAnchor( pPam->GetPoint() );
455 [ # # ]: 0 : aFrmSet.Put( aAnchor );
456 [ # # ][ # # ]: 0 : aFrmSet.Put( SwFmtHoriOrient( 0, text::HoriOrientation::LEFT, text::RelOrientation::FRAME) );
[ # # ]
457 [ # # ][ # # ]: 0 : aFrmSet.Put( SwFmtSurround( SURROUND_THROUGHT ) );
[ # # ]
458 [ # # ][ # # ]: 0 : aFrmSet.Put( SwFmtVertOrient( 0, text::VertOrientation::TOP, text::RelOrientation::PRINT_AREA ) );
[ # # ][ # # ]
459 : : }
460 : :
461 : : // und noch die Groesse des Rahmens
462 : 0 : Size aDfltSz( HTML_DFLT_EMBED_WIDTH, HTML_DFLT_EMBED_HEIGHT );
463 : : SetFixSize( aSize, aDfltSz, bPrcWidth, bPrcHeight, aItemSet, aPropInfo,
464 [ # # ]: 0 : aFrmSet );
465 [ # # ]: 0 : SetSpace( aSpace, aItemSet, aPropInfo, aFrmSet );
466 : :
467 : : // und in das Dok einfuegen
468 : : SwFrmFmt* pFlyFmt =
469 [ # # ][ # # ]: 0 : pDoc->Insert( *pPam, ::svt::EmbeddedObjectRef( xObj, embed::Aspects::MSOLE_CONTENT ), &aFrmSet, NULL, NULL );
[ # # ]
470 : :
471 : : // Namen am FrmFmt setzen
472 [ # # ]: 0 : if( aName.Len() )
473 [ # # ]: 0 : pFlyFmt->SetName( aName );
474 : :
475 : : // den alternativen Text setzen
476 : : SwNoTxtNode *pNoTxtNd =
477 [ # # # # ]: 0 : pDoc->GetNodes()[ pFlyFmt->GetCntnt().GetCntntIdx()
478 [ # # ]: 0 : ->GetIndex()+1 ]->GetNoTxtNode();
479 [ # # ]: 0 : pNoTxtNd->SetTitle( aAlt );
480 : :
481 : : // Ggf Frames anlegen und auto-geb. Rahmen registrieren
482 [ # # ]: 0 : if( !bHidden )
483 : : {
484 : : // HIDDEN-Plugins sollen absatzgebunden bleiben. Da RegisterFlyFrm
485 : : // absatzgebundene Rahmen mit DUrchlauf in am Zeichen gebundene
486 : : // Rahmen umwandelt, muessen die Frames hier von Hand angelegt werden.
487 [ # # ]: 0 : RegisterFlyFrm( pFlyFmt );
488 [ # # ][ # # ]: 0 : }
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
489 : : }
490 : :
491 : :
492 : : #ifdef SOLAR_JAVA
493 : 0 : void SwHTMLParser::NewObject()
494 : : {
495 [ # # ][ # # ]: 0 : String aClassID, aName, aStandBy, aId, aStyle, aClass;
[ # # ][ # # ]
[ # # ][ # # ]
496 : 0 : Size aSize( USHRT_MAX, USHRT_MAX );
497 : 0 : Size aSpace( 0, 0 );
498 : 0 : sal_Int16 eVertOri = text::VertOrientation::TOP;
499 : 0 : sal_Int16 eHoriOri = text::HoriOrientation::NONE;
500 : :
501 : 0 : sal_Bool bPrcWidth = sal_False, bPrcHeight = sal_False,
502 : 0 : bDeclare = sal_False;
503 : : // Eine neue Command-List anlegen
504 [ # # ][ # # ]: 0 : delete pAppletImpl;
505 : 0 : pAppletImpl = new SwApplet_Impl( pDoc->GetAttrPool(),
506 [ # # ][ # # ]: 0 : RES_FRMATR_BEGIN, RES_FRMATR_END-1 );
507 : :
508 [ # # ]: 0 : const HTMLOptions& rHTMLOptions = GetOptions();
509 [ # # ]: 0 : for (size_t i = rHTMLOptions.size(); i; )
510 : : {
511 [ # # ]: 0 : const HTMLOption& rOption = rHTMLOptions[--i];
512 [ # # # # : 0 : switch( rOption.GetToken() )
# # # # #
# # # # #
# # # # #
# # ]
513 : : {
514 : : case HTML_O_ID:
515 [ # # ]: 0 : aId = rOption.GetString();
516 : 0 : break;
517 : : case HTML_O_STYLE:
518 [ # # ]: 0 : aStyle = rOption.GetString();
519 : 0 : break;
520 : : case HTML_O_CLASS:
521 [ # # ]: 0 : aClass = rOption.GetString();
522 : 0 : break;
523 : : case HTML_O_DECLARE:
524 : 0 : bDeclare = sal_True;
525 : 0 : break;
526 : : case HTML_O_CLASSID:
527 [ # # ]: 0 : aClassID = rOption.GetString();
528 : 0 : break;
529 : : case HTML_O_CODEBASE:
530 : 0 : break;
531 : : case HTML_O_DATA:
532 : 0 : break;
533 : : case HTML_O_TYPE:
534 : 0 : break;
535 : : case HTML_O_CODETYPE:
536 : 0 : break;
537 : : case HTML_O_ARCHIVE:
538 : : case HTML_O_UNKNOWN:
539 : 0 : break;
540 : : case HTML_O_STANDBY:
541 [ # # ]: 0 : aStandBy = rOption.GetString();
542 : 0 : break;
543 : : case HTML_O_WIDTH:
544 [ # # ]: 0 : bPrcWidth = (rOption.GetString().Search('%') != STRING_NOTFOUND);
545 [ # # ]: 0 : aSize.Width() = (long)rOption.GetNumber();
546 : 0 : break;
547 : : case HTML_O_HEIGHT:
548 [ # # ]: 0 : bPrcHeight = (rOption.GetString().Search('%') != STRING_NOTFOUND);
549 [ # # ]: 0 : aSize.Height() = (long)rOption.GetNumber();
550 : 0 : break;
551 : : case HTML_O_ALIGN:
552 [ # # ]: 0 : eVertOri = rOption.GetEnum( aHTMLImgVAlignTable, eVertOri );
553 [ # # ]: 0 : eHoriOri = rOption.GetEnum( aHTMLImgHAlignTable, eHoriOri );
554 : 0 : break;
555 : : case HTML_O_USEMAP:
556 : 0 : break;
557 : : case HTML_O_NAME:
558 [ # # ]: 0 : aName = rOption.GetString();
559 : 0 : break;
560 : : case HTML_O_HSPACE:
561 [ # # ]: 0 : aSpace.Width() = (long)rOption.GetNumber();
562 : 0 : break;
563 : : case HTML_O_VSPACE:
564 [ # # ]: 0 : aSpace.Height() = (long)rOption.GetNumber();
565 : 0 : break;
566 : : case HTML_O_BORDER:
567 : 0 : break;
568 : :
569 : : case HTML_O_SDONCLICK:
570 : : case HTML_O_ONCLICK:
571 : : case HTML_O_SDONMOUSEOVER:
572 : : case HTML_O_ONMOUSEOVER:
573 : : case HTML_O_SDONMOUSEOUT:
574 : : case HTML_O_ONMOUSEOUT:
575 : 0 : break;
576 : : }
577 : : // Es werden alle Parameter auch an das Applet weitergereicht
578 : 0 : pAppletImpl->AppendParam( rOption.GetTokenString(),
579 [ # # # # ]: 0 : rOption.GetString() );
[ # # ]
580 : :
581 : : }
582 : :
583 : : // Objects that are declared only are not evaluated. Moreover, only
584 : : // Java applets are supported.
585 : 0 : sal_Bool bIsApplet = sal_False;
586 : :
587 [ # # ][ # # ]: 0 : if( !bDeclare && aClassID.Len() == 42 &&
[ # # ][ # # ]
588 [ # # ]: 0 : aClassID.EqualsAscii( "clsid:", 0, 6 ) )
589 : : {
590 [ # # ]: 0 : aClassID.Erase( 0, 6 );
591 [ # # ]: 0 : SvGlobalName aCID;
592 [ # # ][ # # ]: 0 : if( aCID.MakeId( aClassID ) )
593 : : {
594 : : SvGlobalName aJavaCID( 0x8AD9C840UL, 0x044EU, 0x11D1U, 0xB3U, 0xE9U,
595 [ # # ]: 0 : 0x00U, 0x80U, 0x5FU, 0x49U, 0x9DU, 0x93U );
596 : :
597 [ # # ][ # # ]: 0 : bIsApplet = aJavaCID == aCID;
598 [ # # ]: 0 : }
599 : : }
600 : :
601 [ # # ]: 0 : if( !bIsApplet )
602 : : {
603 [ # # ][ # # ]: 0 : delete pAppletImpl;
604 : 0 : pAppletImpl = 0;
605 : 0 : return;
606 : : }
607 : :
608 [ # # ]: 0 : pAppletImpl->SetAltText( aStandBy );
609 : :
610 [ # # ][ # # ]: 0 : SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
611 [ # # ]: 0 : SvxCSS1PropertyInfo aPropInfo;
612 [ # # ]: 0 : if( HasStyleOptions( aStyle, aId, aClass ) )
613 [ # # ]: 0 : ParseStyleOptions( aStyle, aId, aClass, aItemSet, aPropInfo );
614 : :
615 : 0 : SfxItemSet& rFrmSet = pAppletImpl->GetItemSet();
616 [ # # ]: 0 : if( !IsNewDoc() )
617 [ # # ]: 0 : Reader::ResetFrmFmtAttrs( rFrmSet );
618 : :
619 : : // den Anker und die Ausrichtung setzen
620 [ # # ]: 0 : SetAnchorAndAdjustment( eVertOri, eHoriOri, aItemSet, aPropInfo, rFrmSet );
621 : :
622 : : // und noch die Groesse des Rahmens
623 : 0 : Size aDfltSz( HTML_DFLT_APPLET_WIDTH, HTML_DFLT_APPLET_HEIGHT );
624 : : SetFixSize( aSize, aDfltSz, bPrcWidth, bPrcHeight, aItemSet, aPropInfo,
625 [ # # ]: 0 : rFrmSet );
626 [ # # ][ # # ]: 0 : SetSpace( aSpace, aItemSet, aPropInfo, rFrmSet );
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
627 : : }
628 : : #endif
629 : :
630 : 0 : void SwHTMLParser::EndObject()
631 : : {
632 : : #ifdef SOLAR_JAVA
633 [ # # ]: 0 : if( !pAppletImpl )
634 : 0 : return;
635 [ # # ][ # # ]: 0 : if( pAppletImpl->CreateApplet( sBaseURL ) )
636 : : {
637 : 0 : pAppletImpl->FinishApplet();
638 : :
639 : : // und in das Dok einfuegen
640 : : SwFrmFmt* pFlyFmt =
641 : : pDoc->Insert( *pPam,
642 : : ::svt::EmbeddedObjectRef( pAppletImpl->GetApplet(), embed::Aspects::MSOLE_CONTENT ),
643 : 0 : &pAppletImpl->GetItemSet(),
644 : : NULL,
645 [ # # ][ # # ]: 0 : NULL );
[ # # ]
646 : :
647 : : // den alternativen Namen setzen
648 : : SwNoTxtNode *pNoTxtNd =
649 : 0 : pDoc->GetNodes()[ pFlyFmt->GetCntnt().GetCntntIdx()
650 : 0 : ->GetIndex()+1 ]->GetNoTxtNode();
651 [ # # ]: 0 : pNoTxtNd->SetTitle( pAppletImpl->GetAltText() );
652 : :
653 : : // Ggf Frames anlegen und auto-geb. Rahmen registrieren
654 : 0 : RegisterFlyFrm( pFlyFmt );
655 : :
656 [ # # ]: 0 : delete pAppletImpl;
657 : 0 : pAppletImpl = 0;
658 : : }
659 : : #endif
660 : : }
661 : :
662 : : #ifdef SOLAR_JAVA
663 : 0 : void SwHTMLParser::InsertApplet()
664 : : {
665 [ # # ][ # # ]: 0 : String aCodeBase, aCode, aName, aAlt, aId, aStyle, aClass;
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
666 : 0 : Size aSize( USHRT_MAX, USHRT_MAX );
667 : 0 : Size aSpace( 0, 0 );
668 : 0 : sal_Bool bPrcWidth = sal_False, bPrcHeight = sal_False, bMayScript = sal_False;
669 : 0 : sal_Int16 eVertOri = text::VertOrientation::TOP;
670 : 0 : sal_Int16 eHoriOri = text::HoriOrientation::NONE;
671 : :
672 : : // Eine neue Command-List anlegen
673 [ # # ][ # # ]: 0 : delete pAppletImpl;
674 [ # # ][ # # ]: 0 : pAppletImpl = new SwApplet_Impl( pDoc->GetAttrPool(), RES_FRMATR_BEGIN, RES_FRMATR_END-1 );
675 : :
676 [ # # ]: 0 : const HTMLOptions& rHTMLOptions = GetOptions();
677 [ # # ]: 0 : for (size_t i = rHTMLOptions.size(); i; )
678 : : {
679 [ # # ]: 0 : const HTMLOption& rOption = rHTMLOptions[--i];
680 [ # # # # : 0 : switch( rOption.GetToken() )
# # # # #
# # # #
# ]
681 : : {
682 : : case HTML_O_ID:
683 [ # # ]: 0 : aId = rOption.GetString();
684 : 0 : break;
685 : : case HTML_O_STYLE:
686 [ # # ]: 0 : aStyle = rOption.GetString();
687 : 0 : break;
688 : : case HTML_O_CLASS:
689 [ # # ]: 0 : aClass = rOption.GetString();
690 : 0 : break;
691 : : case HTML_O_CODEBASE:
692 [ # # ]: 0 : aCodeBase = rOption.GetString();
693 : 0 : break;
694 : : case HTML_O_CODE:
695 [ # # ]: 0 : aCode = rOption.GetString();
696 : 0 : break;
697 : : case HTML_O_NAME:
698 [ # # ]: 0 : aName = rOption.GetString();
699 : 0 : break;
700 : : case HTML_O_ALT:
701 [ # # ]: 0 : aAlt = rOption.GetString();
702 : 0 : break;
703 : : case HTML_O_ALIGN:
704 [ # # ]: 0 : eVertOri = rOption.GetEnum( aHTMLImgVAlignTable, eVertOri );
705 [ # # ]: 0 : eHoriOri = rOption.GetEnum( aHTMLImgHAlignTable, eHoriOri );
706 : 0 : break;
707 : : case HTML_O_WIDTH:
708 [ # # ]: 0 : bPrcWidth = (rOption.GetString().Search('%') != STRING_NOTFOUND);
709 [ # # ]: 0 : aSize.Width() = (long)rOption.GetNumber();
710 : 0 : break;
711 : : case HTML_O_HEIGHT:
712 [ # # ]: 0 : bPrcHeight = (rOption.GetString().Search('%') != STRING_NOTFOUND);
713 [ # # ]: 0 : aSize.Height() = (long)rOption.GetNumber();
714 : 0 : break;
715 : : case HTML_O_HSPACE:
716 [ # # ]: 0 : aSpace.Width() = (long)rOption.GetNumber();
717 : 0 : break;
718 : : case HTML_O_VSPACE:
719 [ # # ]: 0 : aSpace.Height() = (long)rOption.GetNumber();
720 : 0 : break;
721 : : case HTML_O_MAYSCRIPT:
722 : 0 : bMayScript = sal_True;
723 : 0 : break;
724 : : }
725 : :
726 : : // Es werden alle Parameter auch an das Applet weitergereicht
727 : 0 : pAppletImpl->AppendParam( rOption.GetTokenString(),
728 [ # # # # ]: 0 : rOption.GetString() );
[ # # ]
729 : : }
730 : :
731 [ # # ]: 0 : if( !aCode.Len() )
732 : : {
733 [ # # ][ # # ]: 0 : delete pAppletImpl;
734 : 0 : pAppletImpl = 0;
735 : 0 : return;
736 : : }
737 : :
738 [ # # ]: 0 : if ( aCodeBase.Len() )
739 [ # # ][ # # ]: 0 : aCodeBase = INetURLObject::GetAbsURL( sBaseURL, aCodeBase );
[ # # ][ # # ]
740 [ # # ][ # # ]: 0 : pAppletImpl->CreateApplet( aCode, aName, bMayScript, aCodeBase, sBaseURL );//, aAlt );
[ # # ][ # # ]
[ # # ]
741 [ # # ]: 0 : pAppletImpl->SetAltText( aAlt );
742 : :
743 [ # # ][ # # ]: 0 : SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
744 [ # # ]: 0 : SvxCSS1PropertyInfo aPropInfo;
745 [ # # ]: 0 : if( HasStyleOptions( aStyle, aId, aClass ) )
746 [ # # ]: 0 : ParseStyleOptions( aStyle, aId, aClass, aItemSet, aPropInfo );
747 : :
748 : 0 : SfxItemSet& rFrmSet = pAppletImpl->GetItemSet();
749 [ # # ]: 0 : if( !IsNewDoc() )
750 [ # # ]: 0 : Reader::ResetFrmFmtAttrs( rFrmSet );
751 : :
752 : : // den Anker und die Ausrichtung setzen
753 [ # # ]: 0 : SetAnchorAndAdjustment( eVertOri, eHoriOri, aItemSet, aPropInfo, rFrmSet );
754 : :
755 : : // und noch die Groesse des Rahmens
756 : 0 : Size aDfltSz( HTML_DFLT_APPLET_WIDTH, HTML_DFLT_APPLET_HEIGHT );
757 : : SetFixSize( aSize, aDfltSz, bPrcWidth, bPrcHeight, aItemSet, aPropInfo,
758 [ # # ]: 0 : rFrmSet );
759 [ # # ][ # # ]: 0 : SetSpace( aSpace, aItemSet, aPropInfo, rFrmSet );
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
760 : : }
761 : : #endif
762 : :
763 : 0 : void SwHTMLParser::EndApplet()
764 : : {
765 : : #ifdef SOLAR_JAVA
766 [ # # ]: 0 : if( !pAppletImpl )
767 : 0 : return;
768 : :
769 : 0 : pAppletImpl->FinishApplet();
770 : :
771 : : // und in das Dok einfuegen
772 : : SwFrmFmt* pFlyFmt =
773 : : pDoc->Insert( *pPam,
774 : : ::svt::EmbeddedObjectRef( pAppletImpl->GetApplet(), embed::Aspects::MSOLE_CONTENT ),
775 : 0 : &pAppletImpl->GetItemSet(),
776 : : NULL,
777 [ # # ][ # # ]: 0 : NULL );
[ # # ]
778 : :
779 : : // den alternativen Namen setzen
780 : : SwNoTxtNode *pNoTxtNd =
781 : 0 : pDoc->GetNodes()[ pFlyFmt->GetCntnt().GetCntntIdx()
782 : 0 : ->GetIndex()+1 ]->GetNoTxtNode();
783 [ # # ]: 0 : pNoTxtNd->SetTitle( pAppletImpl->GetAltText() );
784 : :
785 : : // Ggf Frames anlegen und auto-geb. Rahmen registrieren
786 : 0 : RegisterFlyFrm( pFlyFmt );
787 : :
788 [ # # ]: 0 : delete pAppletImpl;
789 : 0 : pAppletImpl = 0;
790 : : #endif
791 : : }
792 : :
793 : 0 : void SwHTMLParser::InsertParam()
794 : : {
795 : : #ifdef SOLAR_JAVA
796 [ # # ]: 0 : if( !pAppletImpl )
797 : : return;
798 : :
799 [ # # ][ # # ]: 0 : String aName, aValue;
800 : :
801 [ # # ]: 0 : const HTMLOptions& rHTMLOptions = GetOptions();
802 [ # # ]: 0 : for (size_t i = rHTMLOptions.size(); i; )
803 : : {
804 [ # # ]: 0 : const HTMLOption& rOption = rHTMLOptions[--i];
805 [ # # # ]: 0 : switch( rOption.GetToken() )
806 : : {
807 : : case HTML_O_NAME:
808 [ # # ]: 0 : aName = rOption.GetString();
809 : 0 : break;
810 : : case HTML_O_VALUE:
811 [ # # ]: 0 : aValue = rOption.GetString();
812 : 0 : break;
813 : : }
814 : : }
815 : :
816 [ # # ]: 0 : if( !aName.Len() )
817 : : return;
818 : :
819 [ # # ][ # # ]: 0 : pAppletImpl->AppendParam( aName, aValue );
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
820 : : #endif
821 : : }
822 : :
823 : :
824 : :
825 : 0 : void SwHTMLParser::InsertFloatingFrame()
826 : : {
827 [ # # ][ # # ]: 0 : String aAlt, aId, aStyle, aClass;
[ # # ][ # # ]
828 : 0 : Size aSize( USHRT_MAX, USHRT_MAX );
829 : 0 : Size aSpace( 0, 0 );
830 : 0 : sal_Bool bPrcWidth = sal_False, bPrcHeight = sal_False;
831 : 0 : sal_Int16 eVertOri = text::VertOrientation::TOP;
832 : 0 : sal_Int16 eHoriOri = text::HoriOrientation::NONE;
833 : :
834 [ # # ]: 0 : const HTMLOptions& rHTMLOptions = GetOptions();
835 : :
836 : : // Erstmal die Optionen f?r das Writer-Frame-Format holen
837 [ # # ]: 0 : for (size_t i = 0, n = rHTMLOptions.size(); i < n; ++i)
838 : : {
839 [ # # ]: 0 : const HTMLOption& rOption = rHTMLOptions[i];
840 [ # # # # : 0 : switch( rOption.GetToken() )
# # # # #
# ]
841 : : {
842 : : case HTML_O_ID:
843 [ # # ]: 0 : aId = rOption.GetString();
844 : 0 : break;
845 : : case HTML_O_STYLE:
846 [ # # ]: 0 : aStyle = rOption.GetString();
847 : 0 : break;
848 : : case HTML_O_CLASS:
849 [ # # ]: 0 : aClass = rOption.GetString();
850 : 0 : break;
851 : : case HTML_O_ALT:
852 [ # # ]: 0 : aAlt = rOption.GetString();
853 : 0 : break;
854 : : case HTML_O_ALIGN:
855 [ # # ]: 0 : eVertOri = rOption.GetEnum( aHTMLImgVAlignTable, eVertOri );
856 [ # # ]: 0 : eHoriOri = rOption.GetEnum( aHTMLImgHAlignTable, eHoriOri );
857 : 0 : break;
858 : : case HTML_O_WIDTH:
859 [ # # ]: 0 : bPrcWidth = (rOption.GetString().Search('%') != STRING_NOTFOUND);
860 [ # # ]: 0 : aSize.Width() = (long)rOption.GetNumber();
861 : 0 : break;
862 : : case HTML_O_HEIGHT:
863 [ # # ]: 0 : bPrcHeight = (rOption.GetString().Search('%') != STRING_NOTFOUND);
864 [ # # ]: 0 : aSize.Height() = (long)rOption.GetNumber();
865 : 0 : break;
866 : : case HTML_O_HSPACE:
867 [ # # ]: 0 : aSpace.Width() = (long)rOption.GetNumber();
868 : 0 : break;
869 : : case HTML_O_VSPACE:
870 [ # # ]: 0 : aSpace.Height() = (long)rOption.GetNumber();
871 : 0 : break;
872 : : }
873 : : }
874 : :
875 : : // und jetzt die fuer den SfxFrame
876 [ # # ]: 0 : SfxFrameDescriptor aFrameDesc;
877 : :
878 [ # # ]: 0 : SfxFrameHTMLParser::ParseFrameOptions( &aFrameDesc, rHTMLOptions, sBaseURL );
879 : :
880 : : // den Floating-Frame anlegen
881 [ # # ]: 0 : comphelper::EmbeddedObjectContainer aCnt;
882 : 0 : ::rtl::OUString aObjName;
883 [ # # ][ # # ]: 0 : uno::Reference < embed::XEmbeddedObject > xObj = aCnt.CreateEmbeddedObject( SvGlobalName( SO3_IFRAME_CLASSID ).GetByteSequence(), aObjName );
[ # # ][ # # ]
[ # # ]
884 : :
885 : : try
886 : : {
887 : : // TODO/MBA: testing
888 [ # # ][ # # ]: 0 : if ( svt::EmbeddedObjectRef::TryRunningState( xObj ) )
889 : : {
890 [ # # ][ # # ]: 0 : uno::Reference < beans::XPropertySet > xSet( xObj->getComponent(), uno::UNO_QUERY );
[ # # ]
891 [ # # ]: 0 : if ( xSet.is() )
892 : : {
893 [ # # ]: 0 : ::rtl::OUString aName = aFrameDesc.GetName();
894 : 0 : ScrollingMode eScroll = aFrameDesc.GetScrollingMode();
895 [ # # ]: 0 : sal_Bool bHasBorder = aFrameDesc.HasFrameBorder();
896 : 0 : Size aMargin = aFrameDesc.GetMargin();
897 : :
898 [ # # ][ # # ]: 0 : xSet->setPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FrameURL")), uno::makeAny( ::rtl::OUString( aFrameDesc.GetURL().GetMainURL( INetURLObject::NO_DECODE ) ) ) );
[ # # ][ # # ]
[ # # ]
899 [ # # ][ # # ]: 0 : xSet->setPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FrameName")), uno::makeAny( aName ) );
[ # # ][ # # ]
900 : :
901 [ # # ]: 0 : if ( eScroll == ScrollingAuto )
902 [ # # ]: 0 : xSet->setPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FrameIsAutoScroll")),
903 [ # # ][ # # ]: 0 : uno::makeAny( sal_True ) );
[ # # ]
904 : : else
905 [ # # ]: 0 : xSet->setPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FrameIsScrollingMode")),
906 [ # # ][ # # ]: 0 : uno::makeAny( (sal_Bool) ( eScroll == ScrollingYes) ) );
[ # # ]
907 : :
908 [ # # ]: 0 : xSet->setPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FrameIsBorder")),
909 [ # # ][ # # ]: 0 : uno::makeAny( bHasBorder ) );
[ # # ]
910 : :
911 [ # # ]: 0 : xSet->setPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FrameMarginWidth")),
912 [ # # ][ # # ]: 0 : uno::makeAny( sal_Int32( aMargin.Width() ) ) );
[ # # ]
913 : :
914 [ # # ]: 0 : xSet->setPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FrameMarginHeight")),
915 [ # # ][ # # ]: 0 : uno::makeAny( sal_Int32( aMargin.Height() ) ) );
[ # # ]
916 [ # # ]: 0 : }
917 : : }
918 : : }
919 [ # # ]: 0 : catch ( uno::Exception& )
920 : : {
921 : : }
922 : :
923 [ # # ][ # # ]: 0 : SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
924 [ # # ]: 0 : SvxCSS1PropertyInfo aPropInfo;
925 [ # # ]: 0 : if( HasStyleOptions( aStyle, aId, aClass ) )
926 [ # # ]: 0 : ParseStyleOptions( aStyle, aId, aClass, aItemSet, aPropInfo );
927 : :
928 : : // den Itemset holen
929 : 0 : SfxItemSet aFrmSet( pDoc->GetAttrPool(),
930 [ # # ]: 0 : RES_FRMATR_BEGIN, RES_FRMATR_END-1 );
931 [ # # ]: 0 : if( !IsNewDoc() )
932 [ # # ]: 0 : Reader::ResetFrmFmtAttrs( aFrmSet );
933 : :
934 : : // den Anker und die Ausrichtung setzen
935 [ # # ]: 0 : SetAnchorAndAdjustment( eVertOri, eHoriOri, aItemSet, aPropInfo, aFrmSet );
936 : :
937 : : // und noch die Groesse des Rahmens
938 : 0 : Size aDfltSz( HTML_DFLT_APPLET_WIDTH, HTML_DFLT_APPLET_HEIGHT );
939 : : SetFixSize( aSize, aDfltSz, bPrcWidth, bPrcHeight, aItemSet, aPropInfo,
940 [ # # ]: 0 : aFrmSet );
941 [ # # ]: 0 : SetSpace( aSpace, aItemSet, aPropInfo, aFrmSet );
942 : :
943 : : // und in das Dok einfuegen
944 : : SwFrmFmt* pFlyFmt =
945 [ # # ][ # # ]: 0 : pDoc->Insert( *pPam, ::svt::EmbeddedObjectRef( xObj, embed::Aspects::MSOLE_CONTENT ), &aFrmSet, NULL, NULL );
[ # # ]
946 : :
947 : : // den alternativen Namen setzen
948 : : SwNoTxtNode *pNoTxtNd =
949 [ # # # # ]: 0 : pDoc->GetNodes()[ pFlyFmt->GetCntnt().GetCntntIdx()
950 [ # # ]: 0 : ->GetIndex()+1 ]->GetNoTxtNode();
951 [ # # ]: 0 : pNoTxtNd->SetTitle( aAlt );
952 : :
953 : : // Ggf Frames anlegen und auto-geb. Rahmen registrieren
954 [ # # ]: 0 : RegisterFlyFrm( pFlyFmt );
955 : :
956 [ # # ][ # # ]: 0 : bInFloatingFrame = sal_True;
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
957 : 0 : }
958 : :
959 : :
960 : 0 : sal_uInt16 SwHTMLWriter::GuessOLENodeFrmType( const SwNode& rNode )
961 : : {
962 : 0 : SwOLEObj& rObj = ((SwOLENode*)rNode.GetOLENode())->GetOLEObj();
963 : :
964 : 0 : SwHTMLFrmType eType = HTML_FRMTYPE_OLE;
965 : :
966 [ # # ][ # # ]: 0 : uno::Reference < embed::XClassifiedObject > xClass ( rObj.GetOleRef(), uno::UNO_QUERY );
967 [ # # ][ # # ]: 0 : SvGlobalName aClass( xClass->getClassID() );
[ # # ][ # # ]
968 [ # # ][ # # ]: 0 : if( aClass == SvGlobalName( SO3_PLUGIN_CLASSID ) )
[ # # ][ # # ]
969 : : {
970 : 0 : eType = HTML_FRMTYPE_PLUGIN;
971 : : }
972 [ # # ][ # # ]: 0 : else if( aClass == SvGlobalName( SO3_IFRAME_CLASSID ) )
[ # # ][ # # ]
973 : : {
974 : 0 : eType = HTML_FRMTYPE_IFRAME;
975 : : }
976 : : #ifdef SOLAR_JAVA
977 [ # # ][ # # ]: 0 : else if( aClass == SvGlobalName( SO3_APPLET_CLASSID ) )
[ # # ][ # # ]
978 : : {
979 : 0 : eType = HTML_FRMTYPE_APPLET;
980 : : }
981 : : #endif
982 : :
983 [ # # ]: 0 : return static_cast< sal_uInt16 >(eType);
984 : : }
985 : :
986 : 0 : Writer& OutHTML_FrmFmtOLENode( Writer& rWrt, const SwFrmFmt& rFrmFmt,
987 : : sal_Bool bInCntnr )
988 : : {
989 : 0 : SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
990 : :
991 [ # # ]: 0 : const SwFmtCntnt& rFlyCntnt = rFrmFmt.GetCntnt();
992 : 0 : sal_uLong nStt = rFlyCntnt.GetCntntIdx()->GetIndex()+1;
993 [ # # ][ # # ]: 0 : SwOLENode *pOLENd = rHTMLWrt.pDoc->GetNodes()[ nStt ]->GetOLENode();
994 : :
995 : : OSL_ENSURE( pOLENd, "OLE-Node erwartet" );
996 [ # # ]: 0 : if( !pOLENd )
997 : 0 : return rWrt;
998 : :
999 : 0 : SwOLEObj &rObj = pOLENd->GetOLEObj();
1000 : :
1001 [ # # ]: 0 : uno::Reference < embed::XEmbeddedObject > xObj( rObj.GetOleRef() );
1002 [ # # ][ # # ]: 0 : if ( !svt::EmbeddedObjectRef::TryRunningState( xObj ) )
1003 : 0 : return rWrt;
1004 : :
1005 [ # # ][ # # ]: 0 : uno::Reference < beans::XPropertySet > xSet( xObj->getComponent(), uno::UNO_QUERY );
[ # # ]
1006 : 0 : sal_Bool bHiddenEmbed = sal_False;
1007 : :
1008 [ # # ]: 0 : if( !xSet.is() )
1009 : : {
1010 : : OSL_FAIL("Unknown Object" );
1011 : 0 : return rWrt;
1012 : : }
1013 : :
1014 : : sal_uLong nFrmOpts;
1015 : :
1016 : : // wenn meoglich vor dem "Objekt" einen Zeilen-Umbruch ausgeben
1017 [ # # ]: 0 : if( rHTMLWrt.bLFPossible )
1018 [ # # ]: 0 : rHTMLWrt.OutNewLine( sal_True );
1019 : :
1020 [ # # ]: 0 : if( rFrmFmt.GetName().Len() )
1021 : 0 : rHTMLWrt.OutImplicitMark( rFrmFmt.GetName(),
1022 [ # # ]: 0 : pMarkToOLE );
1023 : 0 : uno::Any aAny;
1024 [ # # ][ # # ]: 0 : SvGlobalName aGlobName( xObj->getClassID() );
[ # # ][ # # ]
1025 : 0 : rtl::OStringBuffer sOut;
1026 [ # # ]: 0 : sOut.append('<');
1027 [ # # ][ # # ]: 0 : if( aGlobName == SvGlobalName( SO3_PLUGIN_CLASSID ) )
[ # # ][ # # ]
1028 : : {
1029 : : // erstmal das Plug-spezifische
1030 [ # # ]: 0 : sOut.append(OOO_STRING_SVTOOLS_HTML_embed);
1031 : :
1032 : 0 : ::rtl::OUString aStr;
1033 [ # # ]: 0 : String aURL;
1034 [ # # ][ # # ]: 0 : aAny = xSet->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("PluginURL")) );
[ # # ]
1035 [ # # ][ # # ]: 0 : if( (aAny >>= aStr) && !aStr.isEmpty() )
[ # # ]
1036 : : {
1037 : 0 : aURL = URIHelper::simpleNormalizedMakeRelative( rWrt.GetBaseURL(),
1038 [ # # ][ # # ]: 0 : aStr);
[ # # ]
1039 : : }
1040 : :
1041 [ # # ]: 0 : if( aURL.Len() )
1042 : : {
1043 [ # # ][ # # ]: 0 : sOut.append(' ').append(OOO_STRING_SVTOOLS_HTML_O_src)
1044 [ # # ]: 0 : .append("=\"");
1045 [ # # ][ # # ]: 0 : rWrt.Strm() << sOut.makeStringAndClear().getStr();
1046 [ # # ][ # # ]: 0 : HTMLOutFuncs::Out_String( rWrt.Strm(), aURL, rHTMLWrt.eDestEnc, &rHTMLWrt.aNonConvertableCharacters );
1047 [ # # ]: 0 : sOut.append('\"');
1048 : : }
1049 : :
1050 : 0 : ::rtl::OUString aType;
1051 [ # # ][ # # ]: 0 : aAny = xSet->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("PluginMimeType")) );
[ # # ]
1052 [ # # ][ # # ]: 0 : if( (aAny >>= aType) && !aType.isEmpty() )
[ # # ]
1053 : : {
1054 [ # # ][ # # ]: 0 : sOut.append(' ').append(OOO_STRING_SVTOOLS_HTML_O_type)
1055 [ # # ]: 0 : .append("=\"");
1056 [ # # ][ # # ]: 0 : rWrt.Strm() << sOut.makeStringAndClear().getStr();
1057 [ # # ][ # # ]: 0 : HTMLOutFuncs::Out_String( rWrt.Strm(), aType, rHTMLWrt.eDestEnc, &rHTMLWrt.aNonConvertableCharacters );
[ # # ][ # # ]
1058 [ # # ]: 0 : sOut.append('\"');
1059 : : }
1060 : :
1061 [ # # ]: 0 : if ((FLY_AT_PARA == rFrmFmt.GetAnchor().GetAnchorId()) &&
[ # # # # ]
[ # # ]
1062 [ # # ]: 0 : SURROUND_THROUGHT == rFrmFmt.GetSurround().GetSurround() )
1063 : : {
1064 : : // Das Plugin ist HIDDEN
1065 [ # # ][ # # ]: 0 : sOut.append(' ').append(OOO_STRING_SW_HTML_O_Hidden);
1066 : 0 : nFrmOpts = HTML_FRMOPTS_HIDDEN_EMBED;
1067 : 0 : bHiddenEmbed = sal_True;
1068 : : }
1069 : : else
1070 : : {
1071 : : nFrmOpts = bInCntnr ? HTML_FRMOPTS_EMBED_CNTNR
1072 [ # # ]: 0 : : HTML_FRMOPTS_EMBED;
1073 [ # # ]: 0 : }
1074 : : }
1075 [ # # ][ # # ]: 0 : else if( aGlobName == SvGlobalName( SO3_APPLET_CLASSID ) )
[ # # ][ # # ]
1076 : : {
1077 : : // oder das Applet-Spezifische
1078 : :
1079 [ # # ]: 0 : sOut.append(OOO_STRING_SVTOOLS_HTML_applet);
1080 : :
1081 : : // CODEBASE
1082 : 0 : ::rtl::OUString aCd;
1083 [ # # ][ # # ]: 0 : aAny = xSet->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("AppletCodeBase")) );
[ # # ]
1084 [ # # ][ # # ]: 0 : if( (aAny >>= aCd) && !aCd.isEmpty() )
[ # # ]
1085 : : {
1086 [ # # ][ # # ]: 0 : String sCodeBase( URIHelper::simpleNormalizedMakeRelative(rWrt.GetBaseURL(), aCd) );
[ # # ]
1087 [ # # ]: 0 : if( sCodeBase.Len() )
1088 : : {
1089 [ # # ][ # # ]: 0 : sOut.append(' ').append(OOO_STRING_SVTOOLS_HTML_O_codebase)
1090 [ # # ]: 0 : .append("=\"");
1091 [ # # ][ # # ]: 0 : rWrt.Strm() << sOut.makeStringAndClear().getStr();
1092 [ # # ][ # # ]: 0 : HTMLOutFuncs::Out_String( rWrt.Strm(), sCodeBase, rHTMLWrt.eDestEnc, &rHTMLWrt.aNonConvertableCharacters );
1093 [ # # ]: 0 : sOut.append('\"');
1094 [ # # ]: 0 : }
1095 : : }
1096 : :
1097 : : // CODE
1098 : 0 : ::rtl::OUString aClass;
1099 [ # # ][ # # ]: 0 : aAny = xSet->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("AppletCode")) );
[ # # ]
1100 : 0 : aAny >>= aClass;
1101 [ # # ][ # # ]: 0 : sOut.append(' ').append(OOO_STRING_SVTOOLS_HTML_O_code)
1102 [ # # ]: 0 : .append("=\"");
1103 [ # # ][ # # ]: 0 : rWrt.Strm() << sOut.makeStringAndClear().getStr();
1104 [ # # ][ # # ]: 0 : HTMLOutFuncs::Out_String( rWrt.Strm(), aClass, rHTMLWrt.eDestEnc, &rHTMLWrt.aNonConvertableCharacters );
[ # # ][ # # ]
1105 [ # # ]: 0 : sOut.append('\"');
1106 : :
1107 : : // NAME
1108 : 0 : ::rtl::OUString aAppletName;
1109 [ # # ][ # # ]: 0 : aAny = xSet->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("AppletName")) );
[ # # ]
1110 : 0 : aAny >>= aAppletName;
1111 [ # # ]: 0 : if( !aAppletName.isEmpty() )
1112 : : {
1113 [ # # ][ # # ]: 0 : sOut.append(' ').append(OOO_STRING_SVTOOLS_HTML_O_name)
1114 [ # # ]: 0 : .append("=\"");
1115 [ # # ][ # # ]: 0 : rWrt.Strm() << sOut.makeStringAndClear().getStr();
1116 [ # # ][ # # ]: 0 : HTMLOutFuncs::Out_String( rWrt.Strm(), aAppletName, rHTMLWrt.eDestEnc, &rHTMLWrt.aNonConvertableCharacters );
[ # # ][ # # ]
1117 [ # # ]: 0 : sOut.append('\"');
1118 : : }
1119 : :
1120 : 0 : sal_Bool bScript = sal_False;
1121 [ # # ][ # # ]: 0 : aAny = xSet->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("AppletIsScript")) );
[ # # ]
1122 : 0 : aAny >>= bScript;
1123 [ # # ]: 0 : if( bScript )
1124 [ # # ][ # # ]: 0 : sOut.append(' ').append(OOO_STRING_SVTOOLS_HTML_O_mayscript);
1125 : :
1126 : : nFrmOpts = bInCntnr ? HTML_FRMOPTS_APPLET_CNTNR
1127 [ # # ]: 0 : : HTML_FRMOPTS_APPLET;
1128 : : }
1129 : : else
1130 : : {
1131 : : // oder das Flating-Frame spezifische
1132 : :
1133 [ # # ]: 0 : sOut.append(OOO_STRING_SVTOOLS_HTML_iframe);
1134 [ # # ][ # # ]: 0 : rWrt.Strm() << sOut.makeStringAndClear().getStr();
1135 : :
1136 [ # # ]: 0 : SfxFrameHTMLWriter::Out_FrameDescriptor( rWrt.Strm(), rWrt.GetBaseURL(),
1137 : : xSet,
1138 : : rHTMLWrt.eDestEnc,
1139 [ # # ]: 0 : &rHTMLWrt.aNonConvertableCharacters );
1140 : :
1141 : : nFrmOpts = bInCntnr ? HTML_FRMOPTS_IFRAME_CNTNR
1142 [ # # ]: 0 : : HTML_FRMOPTS_IFRAME;
1143 : : }
1144 : :
1145 [ # # ][ # # ]: 0 : rWrt.Strm() << sOut.makeStringAndClear().getStr();
1146 : :
1147 : : // ALT, WIDTH, HEIGHT, HSPACE, VSPACE, ALIGN
1148 [ # # ][ # # ]: 0 : if( rHTMLWrt.IsHTMLMode( HTMLMODE_ABS_POS_FLY ) && !bHiddenEmbed )
[ # # ]
1149 : 0 : nFrmOpts |= HTML_FRMOPTS_OLE_CSS1;
1150 [ # # ][ # # ]: 0 : rtl::OString aEndTags = rHTMLWrt.OutFrmFmtOptions( rFrmFmt, pOLENd->GetTitle(), nFrmOpts );
[ # # ]
1151 [ # # ][ # # ]: 0 : if( rHTMLWrt.IsHTMLMode( HTMLMODE_ABS_POS_FLY ) && !bHiddenEmbed )
[ # # ]
1152 [ # # ]: 0 : rHTMLWrt.OutCSS1_FrmFmtOptions( rFrmFmt, nFrmOpts );
1153 : :
1154 [ # # ][ # # ]: 0 : if( aGlobName == SvGlobalName( SO3_APPLET_CLASSID ) )
[ # # ][ # # ]
1155 : : {
1156 : : // fuer Applets die Parameter als eigene Tags ausgeben
1157 : : // und ein </APPLET> schreiben
1158 : :
1159 [ # # ]: 0 : uno::Sequence < beans::PropertyValue > aProps;
1160 [ # # ][ # # ]: 0 : aAny = xSet->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("AppletCommands")) );
[ # # ]
1161 [ # # ]: 0 : aAny >>= aProps;
1162 : :
1163 [ # # ]: 0 : SvCommandList aCommands;
1164 [ # # ]: 0 : aCommands.FillFromSequence( aProps );
1165 [ # # ]: 0 : std::vector<sal_uLong> aParams;
1166 : 0 : size_t i = aCommands.size();
1167 [ # # ]: 0 : while( i > 0 )
1168 : : {
1169 [ # # ]: 0 : const SvCommand& rCommand = aCommands[ --i ];
1170 [ # # ]: 0 : const String& rName = rCommand.GetCommand();
1171 [ # # ][ # # ]: 0 : sal_uInt16 nType = SwApplet_Impl::GetOptionType( rName, sal_True );
1172 [ # # ]: 0 : if( SWHTML_OPTTYPE_TAG == nType )
1173 : : {
1174 [ # # ]: 0 : const String& rValue = rCommand.GetArgument();
1175 [ # # ][ # # ]: 0 : rWrt.Strm() << ' ';
1176 [ # # ][ # # ]: 0 : HTMLOutFuncs::Out_String( rWrt.Strm(), rName, rHTMLWrt.eDestEnc, &rHTMLWrt.aNonConvertableCharacters );
1177 [ # # ][ # # ]: 0 : rWrt.Strm() << "=\"";
1178 [ # # ][ # # ]: 0 : HTMLOutFuncs::Out_String( rWrt.Strm(), rValue, rHTMLWrt.eDestEnc, &rHTMLWrt.aNonConvertableCharacters ) << '\"';
[ # # ][ # # ]
1179 : : }
1180 [ # # ]: 0 : else if( SWHTML_OPTTYPE_PARAM == nType )
1181 : : {
1182 [ # # ]: 0 : aParams.push_back( i );
1183 : : }
1184 [ # # ]: 0 : }
1185 : :
1186 [ # # ][ # # ]: 0 : rHTMLWrt.Strm() << '>';
1187 : :
1188 : 0 : rHTMLWrt.IncIndentLevel(); // Inhalt von Applet einruecken
1189 : :
1190 : 0 : sal_uInt16 ii = aParams.size();
1191 [ # # ]: 0 : while( ii > 0 )
1192 : : {
1193 [ # # ][ # # ]: 0 : const SvCommand& rCommand = aCommands[ aParams[--ii] ];
1194 [ # # ]: 0 : const String& rName = rCommand.GetCommand();
1195 [ # # ]: 0 : const String& rValue = rCommand.GetArgument();
1196 [ # # ]: 0 : rHTMLWrt.OutNewLine();
1197 : 0 : rtl::OStringBuffer sBuf;
1198 [ # # ][ # # ]: 0 : sBuf.append('<').append(OOO_STRING_SVTOOLS_HTML_param)
1199 [ # # ][ # # ]: 0 : .append(' ').append(OOO_STRING_SVTOOLS_HTML_O_name)
1200 [ # # ]: 0 : .append("=\"");
1201 [ # # ][ # # ]: 0 : rWrt.Strm() << sBuf.makeStringAndClear().getStr();
1202 [ # # ][ # # ]: 0 : HTMLOutFuncs::Out_String( rWrt.Strm(), rName, rHTMLWrt.eDestEnc, &rHTMLWrt.aNonConvertableCharacters );
1203 [ # # ][ # # ]: 0 : sBuf.append("\" ").append(OOO_STRING_SVTOOLS_HTML_O_value)
1204 [ # # ]: 0 : .append("=\"");
1205 [ # # ][ # # ]: 0 : rWrt.Strm() << sBuf.makeStringAndClear().getStr();
1206 [ # # ][ # # ]: 0 : HTMLOutFuncs::Out_String( rWrt.Strm(), rValue, rHTMLWrt.eDestEnc, &rHTMLWrt.aNonConvertableCharacters ) << "\">";
[ # # ]
1207 [ # # ][ # # ]: 0 : }
1208 : :
1209 : 0 : rHTMLWrt.DecIndentLevel(); // Inhalt von Applet einruecken
1210 [ # # ]: 0 : if( aCommands.size() )
1211 [ # # ]: 0 : rHTMLWrt.OutNewLine();
1212 [ # # ][ # # ]: 0 : HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), OOO_STRING_SVTOOLS_HTML_applet, sal_False );
[ # # ]
1213 : : }
1214 : : else
1215 [ # # ][ # # ]: 0 : if( aGlobName == SvGlobalName( SO3_PLUGIN_CLASSID ) )
[ # # ][ # # ]
1216 : : {
1217 : : // fuer Plugins die Paramater als Optionen schreiben
1218 : :
1219 [ # # ]: 0 : uno::Sequence < beans::PropertyValue > aProps;
1220 [ # # ][ # # ]: 0 : aAny = xSet->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("PluginCommands")) );
[ # # ]
1221 [ # # ]: 0 : aAny >>= aProps;
1222 : :
1223 [ # # ]: 0 : SvCommandList aCommands;
1224 [ # # ]: 0 : aCommands.FillFromSequence( aProps );
1225 [ # # ]: 0 : for( size_t i = 0; i < aCommands.size(); i++ )
1226 : : {
1227 [ # # ]: 0 : const SvCommand& rCommand = aCommands[ i ];
1228 [ # # ]: 0 : const String& rName = rCommand.GetCommand();
1229 : :
1230 [ # # ][ # # ]: 0 : if( SwApplet_Impl::GetOptionType( rName, sal_False ) == SWHTML_OPTTYPE_TAG )
[ # # ]
1231 : : {
1232 [ # # ]: 0 : const String& rValue = rCommand.GetArgument();
1233 [ # # ][ # # ]: 0 : rWrt.Strm() << ' ';
1234 [ # # ][ # # ]: 0 : HTMLOutFuncs::Out_String( rWrt.Strm(), rName, rHTMLWrt.eDestEnc, &rHTMLWrt.aNonConvertableCharacters );
1235 [ # # ][ # # ]: 0 : rWrt.Strm() << "=\"";
1236 [ # # ][ # # ]: 0 : HTMLOutFuncs::Out_String( rWrt.Strm(), rValue, rHTMLWrt.eDestEnc, &rHTMLWrt.aNonConvertableCharacters ) << '\"';
[ # # ][ # # ]
1237 : : }
1238 [ # # ]: 0 : }
1239 [ # # ][ # # ]: 0 : rHTMLWrt.Strm() << '>';
[ # # ]
1240 : : }
1241 : : else
1242 : : {
1243 : : // und fuer Floating-Frames einfach noch ein </IFRAME>
1244 : : // ausgeben
1245 : :
1246 [ # # ][ # # ]: 0 : rHTMLWrt.Strm() << '>';
1247 [ # # ][ # # ]: 0 : HTMLOutFuncs::Out_AsciiTag( rWrt.Strm(), OOO_STRING_SVTOOLS_HTML_iframe, sal_False );
1248 : : }
1249 : :
1250 [ # # ]: 0 : if( !aEndTags.isEmpty() )
1251 [ # # ][ # # ]: 0 : rWrt.Strm() << aEndTags.getStr();
1252 : :
1253 [ # # ]: 0 : return rWrt;
1254 : : }
1255 : :
1256 : 0 : Writer& OutHTML_FrmFmtOLENodeGrf( Writer& rWrt, const SwFrmFmt& rFrmFmt,
1257 : : sal_Bool bInCntnr )
1258 : : {
1259 : 0 : SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
1260 : :
1261 : 0 : const SwFmtCntnt& rFlyCntnt = rFrmFmt.GetCntnt();
1262 : 0 : sal_uLong nStt = rFlyCntnt.GetCntntIdx()->GetIndex()+1;
1263 : 0 : SwOLENode *pOLENd = rHTMLWrt.pDoc->GetNodes()[ nStt ]->GetOLENode();
1264 : :
1265 : : OSL_ENSURE( pOLENd, "OLE-Node erwartet" );
1266 [ # # ]: 0 : if( !pOLENd )
1267 : 0 : return rWrt;
1268 : :
1269 : : {
1270 [ # # ][ # # ]: 0 : Graphic aGrf( *pOLENd->GetGraphic() );
1271 [ # # ]: 0 : String aGrfNm;
1272 : 0 : const String* pTempFileName = rHTMLWrt.GetOrigFileName();
1273 [ # # ]: 0 : if(pTempFileName)
1274 [ # # ]: 0 : aGrfNm = *pTempFileName;
1275 : :
1276 : : sal_uInt16 nErr = XOutBitmap::WriteGraphic( aGrf, aGrfNm,
1277 : : rtl::OUString("JPG"),
1278 : : (XOUTBMP_USE_GIF_IF_POSSIBLE |
1279 [ # # ][ # # ]: 0 : XOUTBMP_USE_NATIVE_IF_POSSIBLE) );
[ # # ]
1280 [ # # ]: 0 : if( nErr ) // fehlerhaft, da ist nichts auszugeben
1281 : : {
1282 : 0 : rHTMLWrt.nWarn = WARN_SWG_POOR_LOAD | WARN_SW_WRITE_BASE;
1283 : 0 : return rWrt;
1284 : : }
1285 : : aGrfNm = URIHelper::SmartRel2Abs(
1286 : 0 : INetURLObject(rWrt.GetBaseURL()), aGrfNm,
1287 [ # # ]: 0 : URIHelper::GetMaybeFileHdl() );
[ # # # # ]
[ # # ][ # # ]
[ # # ][ # # ]
1288 : : sal_uLong nFlags = bInCntnr ? HTML_FRMOPTS_GENIMG_CNTNR
1289 [ # # ]: 0 : : HTML_FRMOPTS_GENIMG;
1290 : : OutHTML_Image( rWrt, rFrmFmt, aGrfNm,
1291 : 0 : pOLENd->GetTitle(), pOLENd->GetTwipSize(),
1292 [ # # ][ # # ]: 0 : nFlags, pMarkToOLE );
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
1293 : : }
1294 : :
1295 : 0 : return rWrt;
1296 : : }
1297 : :
1298 : :
1299 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|