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 #include "PageBordersHandler.hxx"
24
25 #include <dmapper/DomainMapper.hxx>
26 #include <resourcemodel/ResourceModelHelper.hxx>
27 #include <DomainMapper_Impl.hxx>
28 #include <ConversionHelper.hxx>
29 #include <NumberingManager.hxx>
30 #include <ThemeTable.hxx>
31 #include <ModelEventListener.hxx>
32 #include <MeasureHandler.hxx>
33 #include <OLEHandler.hxx>
34 #include <i18npool/mslangid.hxx>
35 #include <i18npool/paper.hxx>
36 #include <ooxml/OOXMLFastTokens.hxx>
37 #include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
38 #include <com/sun/star/document/XOOXMLDocumentPropertiesImporter.hpp>
39 #include <com/sun/star/text/HoriOrientation.hpp>
40 #include <com/sun/star/text/RelOrientation.hpp>
41 #include <com/sun/star/text/VertOrientation.hpp>
42 #include <com/sun/star/text/WrapTextMode.hpp>
43 #include <com/sun/star/text/SizeType.hpp>
44 #include <com/sun/star/text/XEndnotesSupplier.hpp>
45 #include <com/sun/star/text/XFootnotesSupplier.hpp>
46 #include <com/sun/star/text/XLineNumberingProperties.hpp>
47 #include <com/sun/star/text/XTextDocument.hpp>
48 #include <com/sun/star/text/XTextCursor.hpp>
49 #include <com/sun/star/text/XTextPortionAppend.hpp>
50 #include <com/sun/star/text/XParagraphAppend.hpp>
51 #include <com/sun/star/text/FontEmphasis.hpp>
52 #include <com/sun/star/awt/FontRelief.hpp>
53 #include <com/sun/star/awt/FontWeight.hpp>
54 #include <com/sun/star/awt/FontUnderline.hpp>
55 #include <com/sun/star/awt/FontStrikeout.hpp>
56 #include <com/sun/star/awt/FontSlant.hpp>
57 #include <com/sun/star/container/XIndexReplace.hpp>
58 #include <com/sun/star/drawing/XShape.hpp>
59 #include <com/sun/star/document/XEventBroadcaster.hpp>
60 #include <com/sun/star/style/ParagraphAdjust.hpp>
61 #include <com/sun/star/style/BreakType.hpp>
62 #include <com/sun/star/style/CaseMap.hpp>
63 #include <com/sun/star/style/LineSpacing.hpp>
64 #include <com/sun/star/style/LineSpacingMode.hpp>
65 #include <com/sun/star/table/BorderLine.hpp>
66 #include <com/sun/star/text/TextGridMode.hpp>
67 #include <com/sun/star/text/XDocumentIndexesSupplier.hpp>
68 #include <com/sun/star/text/WritingMode.hpp>
69 #include <com/sun/star/text/WritingMode2.hpp>
70 #include <com/sun/star/text/XFootnote.hpp>
71 #include <com/sun/star/style/NumberingType.hpp>
72 #include <comphelper/types.hxx>
73 #include <comphelper/storagehelper.hxx>
74
75 #include <rtl/ustrbuf.hxx>
76 #include <boost/shared_ptr.hpp>
77 #include <com/sun/star/uno/Any.hxx>
78 #include <tools/color.hxx>
79 #include <BorderHandler.hxx>
80 #include <CellColorHandler.hxx>
81 #include <SectionColumnHandler.hxx>
82 #include <vector>
83 #include <iostream>
84
85 #if OSL_DEBUG_LEVEL > 0
86 #include <resourcemodel/QNameToString.hxx>
87 #endif
88
89 #include <resourcemodel/TagLogger.hxx>
90
91 using namespace ::com::sun::star;
92 using namespace ::rtl;
93
94 namespace writerfilter {
95
96 using resourcemodel::resolveSprmProps;
97 using resourcemodel::resolveAttributeProperties;
98
99 namespace dmapper{
100
101 TagLogger::Pointer_t dmapper_logger(TagLogger::getInstance("DOMAINMAPPER"));
102
103 /* ---- Fridrich's mess begins here ---- */
104 struct _PageSz
105 {
106 sal_Int32 code;
107 sal_Int32 h;
108 bool orient;
109 sal_Int32 w;
110 } CT_PageSz;
111
112
113 /* ---- Fridrich's mess (hopefully) ends here ---- */
114
115 /*-- 09.06.2006 09:52:11---------------------------------------------------
116
117 -----------------------------------------------------------------------*/
DomainMapper(const uno::Reference<uno::XComponentContext> & xContext,uno::Reference<io::XInputStream> xInputStream,uno::Reference<lang::XComponent> xModel,SourceDocumentType eDocumentType)118 DomainMapper::DomainMapper( const uno::Reference< uno::XComponentContext >& xContext,
119 uno::Reference< io::XInputStream > xInputStream,
120 uno::Reference< lang::XComponent > xModel,
121 SourceDocumentType eDocumentType) :
122 LoggedProperties(dmapper_logger, "DomainMapper"),
123 LoggedTable(dmapper_logger, "DomainMapper"),
124 LoggedStream(dmapper_logger, "DomainMapper"),
125 m_pImpl( new DomainMapper_Impl( *this, xContext, xModel, eDocumentType )),
126 mnBackgroundColor(0), mbIsHighlightSet(false)
127 {
128 // #i24363# tab stops relative to indent
129 m_pImpl->SetDocumentSettingsProperty(
130 PropertyNameSupplier::GetPropertyNameSupplier().GetName( PROP_TABS_RELATIVE_TO_INDENT ),
131 uno::makeAny( false ) );
132
133 m_pImpl->SetDocumentSettingsProperty(
134 PropertyNameSupplier::GetPropertyNameSupplier().GetName( PROP_ADD_PARA_TABLE_SPACING ),
135 uno::makeAny( false ) );
136
137 //import document properties
138
139 try
140 {
141 uno::Reference< lang::XMultiServiceFactory > xFactory(xContext->getServiceManager(), uno::UNO_QUERY_THROW);
142 uno::Reference< embed::XStorage > xDocumentStorage =
143 (comphelper::OStorageHelper::GetStorageOfFormatFromInputStream(OFOPXML_STORAGE_FORMAT_STRING, xInputStream));
144
145 uno::Reference< uno::XInterface > xTemp = xContext->getServiceManager()->createInstanceWithContext(
146 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.document.OOXMLDocumentPropertiesImporter")),
147 xContext);
148
149 uno::Reference< document::XOOXMLDocumentPropertiesImporter > xImporter( xTemp, uno::UNO_QUERY_THROW );
150 uno::Reference< document::XDocumentPropertiesSupplier > xPropSupplier( xModel, uno::UNO_QUERY_THROW);
151 xImporter->importProperties( xDocumentStorage, xPropSupplier->getDocumentProperties() );
152 }
153 catch( const uno::Exception& rEx )
154 {
155 (void)rEx;
156 }
157 }
158 /*-- 09.06.2006 09:52:12---------------------------------------------------
159
160 -----------------------------------------------------------------------*/
~DomainMapper()161 DomainMapper::~DomainMapper()
162 {
163 try
164 {
165 uno::Reference< text::XDocumentIndexesSupplier> xIndexesSupplier( m_pImpl->GetTextDocument(), uno::UNO_QUERY );
166 uno::Reference< container::XIndexAccess > xIndexes = xIndexesSupplier->getDocumentIndexes();
167 sal_Int32 nIndexes = xIndexes->getCount();
168 if( nIndexes )
169 {
170 //index update has to wait until first view is created
171 uno::Reference< document::XEventBroadcaster > xBroadcaster(xIndexesSupplier, uno::UNO_QUERY);
172 xBroadcaster->addEventListener(uno::Reference< document::XEventListener >(new ModelEventListener));
173 }
174
175
176 // Apply the document settings after everything else
177 m_pImpl->GetSettingsTable()->ApplyProperties( m_pImpl->GetTextDocument( ) );
178 }
179 catch( const uno::Exception& rEx )
180 {
181 (void)rEx;
182 }
183
184 delete m_pImpl;
185 }
186 /*-- 09.06.2006 09:52:12---------------------------------------------------
187
188 -----------------------------------------------------------------------*/
lcl_attribute(Id nName,Value & val)189 void DomainMapper::lcl_attribute(Id nName, Value & val)
190 {
191 static ::rtl::OUString sLocalBookmarkName;
192 sal_Int32 nIntValue = val.getInt();
193 rtl::OUString sStringValue = val.getString();
194
195 SectionPropertyMap * pSectionContext = m_pImpl->GetSectionContext();
196
197 // printf ( "DomainMapper::attribute(0x%.4x, 0x%.4x) [%s]\n", (unsigned int)nName, (unsigned int)nIntValue, ::rtl::OUStringToOString(sStringValue, RTL_TEXTENCODING_DONTKNOW).getStr());
198 if( nName >= NS_rtf::LN_WIDENT && nName <= NS_rtf::LN_LCBSTTBFUSSR )
199 m_pImpl->GetFIB().SetData( nName, nIntValue );
200 else //if( !m_pImpl->getTableManager().attribute( nName, val) )
201 {
202
203
204 /* WRITERFILTERSTATUS: table: attributedata */
205 switch( nName )
206 {
207 /* attributes to be ignored */
208 case NS_rtf::LN_UNUSED1_3:
209 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
210
211 case NS_rtf::LN_UNUSED1_7:
212 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
213
214 case NS_rtf::LN_UNUSED8_3:
215 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
216
217 case NS_rtf::LN_FWRITERESERVATION:
218 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
219
220 case NS_rtf::LN_FLOADOVERRIDE:
221 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
222
223 case NS_rtf::LN_FFAREAST:
224 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
225
226 case NS_rtf::LN_FCRYPTO:
227 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
228
229 case NS_rtf::LN_NFIBBACK:
230 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
231
232 case NS_rtf::LN_LKEY:
233 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
234
235 case NS_rtf::LN_ENVR:
236 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
237
238 case NS_rtf::LN_FMAC:
239 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
240
241 case NS_rtf::LN_FWORD97SAVED:
242 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
243
244 case NS_rtf::LN_FCMAC:
245 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
246
247 case NS_rtf::LN_PNFBPCHPFIRST_W6:
248 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
249
250 case NS_rtf::LN_PNCHPFIRST_W6:
251 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
252
253 case NS_rtf::LN_CPNBTECHP_W6:
254 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
255
256 case NS_rtf::LN_PNFBPPAPFIRST_W6:
257 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
258
259 case NS_rtf::LN_PNPAPFIRST_W6:
260 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
261
262 case NS_rtf::LN_CPNBTEPAP_W6:
263 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
264
265 case NS_rtf::LN_PNFBPLVCFIRST_W6:
266 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
267
268 case NS_rtf::LN_PNLVCFIRST_W6:
269 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
270
271 case NS_rtf::LN_CPNBTELVC_W6:
272 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
273
274 case NS_rtf::LN_CBMAC:
275 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
276
277 case NS_rtf::LN_LPRODUCTCREATED:
278 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
279
280 case NS_rtf::LN_LPRODUCTREVISED:
281 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
282
283 case NS_rtf::LN_CCPMCR:
284 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
285
286 case NS_rtf::LN_PNFBPCHPFIRST:
287 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
288
289 case NS_rtf::LN_PNFBPPAPFIRST:
290 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
291
292 case NS_rtf::LN_PNFBPLVCFIRST:
293 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
294
295 case NS_rtf::LN_FCISLANDFIRST:
296 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
297
298 case NS_rtf::LN_FCISLANDLIM:
299 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
300
301 case NS_rtf::LN_FCSTSHFORIG:
302 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
303
304 case NS_rtf::LN_LCBSTSHFORIG:
305 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
306
307 case NS_rtf::LN_FCPLCFPAD:
308 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
309
310 case NS_rtf::LN_LCBPLCFPAD:
311 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
312
313 case NS_rtf::LN_FCSTTBFGLSY:
314 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
315
316 case NS_rtf::LN_LCBSTTBFGLSY:
317 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
318
319 case NS_rtf::LN_FCPLCFGLSY:
320 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
321
322 case NS_rtf::LN_LCBPLCFGLSY:
323 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
324
325 case NS_rtf::LN_FCPLCFSEA:
326 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
327
328 case NS_rtf::LN_LCBPLCFSEA:
329 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
330
331 case NS_rtf::LN_FCPLCFFLDMCR:
332 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
333
334 case NS_rtf::LN_LCBPLCFFLDMCR:
335 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
336
337 case NS_rtf::LN_FCCMDS:
338 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
339
340 case NS_rtf::LN_LCBCMDS:
341 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
342
343 case NS_rtf::LN_FCPLCMCR:
344 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
345
346 case NS_rtf::LN_LCBPLCMCR:
347 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
348
349 case NS_rtf::LN_FCSTTBFMCR:
350 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
351
352 case NS_rtf::LN_LCBSTTBFMCR:
353 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
354
355 case NS_rtf::LN_FCPRDRVR:
356 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
357
358 case NS_rtf::LN_LCBPRDRVR:
359 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
360
361 case NS_rtf::LN_FCPRENVPORT:
362 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
363
364 case NS_rtf::LN_LCBPRENVPORT:
365 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
366
367 case NS_rtf::LN_FCPRENVLAND:
368 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
369
370 case NS_rtf::LN_LCBPRENVLAND:
371 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
372
373 case NS_rtf::LN_FCWSS:
374 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
375
376 case NS_rtf::LN_LCBWSS:
377 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
378
379 case NS_rtf::LN_FCPLCFPGDFTN:
380 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
381
382 case NS_rtf::LN_LCBPLCFPGDFTN:
383 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
384
385 case NS_rtf::LN_FCAUTOSAVESOURCE:
386 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
387
388 case NS_rtf::LN_LCBAUTOSAVESOURCE:
389 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
390
391 case NS_rtf::LN_FCPLCDOAMOM:
392 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
393
394 case NS_rtf::LN_LCBPLCDOAMOM:
395 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
396
397 case NS_rtf::LN_FCPLCDOAHDR:
398 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
399
400 case NS_rtf::LN_LCBPLCDOAHDR:
401 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
402
403 case NS_rtf::LN_FCPMS:
404 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
405
406 case NS_rtf::LN_LCBPMS:
407 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
408
409 case NS_rtf::LN_FCPLCFPGDEDN:
410 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
411
412 case NS_rtf::LN_LCBPLCFPGDEDN:
413 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
414
415 case NS_rtf::LN_FCPLCFWKB:
416 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
417
418 case NS_rtf::LN_LCBPLCFWKB:
419 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
420
421 case NS_rtf::LN_FCPLCFSPL:
422 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
423
424 case NS_rtf::LN_LCBPLCFSPL:
425 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
426
427 case NS_rtf::LN_FCSTWUSER:
428 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
429
430 case NS_rtf::LN_LCBSTWUSER:
431 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
432
433 case NS_rtf::LN_FCUNUSED:
434 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
435
436 case NS_rtf::LN_LCBUNUSED:
437 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
438
439 case NS_rtf::LN_FCSTTBFINTLFLD:
440 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
441
442 case NS_rtf::LN_LCBSTTBFINTLFLD:
443 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
444
445 case NS_rtf::LN_FCROUTESLIP:
446 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
447
448 case NS_rtf::LN_LCBROUTESLIP:
449 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
450
451 case NS_rtf::LN_FCSTTBSAVEDBY:
452 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
453
454 case NS_rtf::LN_LCBSTTBSAVEDBY:
455 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
456
457 case NS_rtf::LN_FCSTTBFNM:
458 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
459
460 case NS_rtf::LN_LCBSTTBFNM:
461 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
462
463 case NS_rtf::LN_FCDOCUNDO:
464 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
465
466 case NS_rtf::LN_LCBDOCUNDO:
467 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
468
469 case NS_rtf::LN_FCRGBUSE:
470 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
471
472 case NS_rtf::LN_LCBRGBUSE:
473 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
474
475 case NS_rtf::LN_FCUSP:
476 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
477
478 case NS_rtf::LN_LCBUSP:
479 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
480
481 case NS_rtf::LN_FCUSKF:
482 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
483
484 case NS_rtf::LN_LCBUSKF:
485 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
486
487 case NS_rtf::LN_FCPLCUPCRGBUSE:
488 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
489
490 case NS_rtf::LN_LCBPLCUPCRGBUSE:
491 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
492
493 case NS_rtf::LN_FCPLCUPCUSP:
494 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
495
496 case NS_rtf::LN_LCBPLCUPCUSP:
497 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
498
499 case NS_rtf::LN_FCPLGOSL:
500 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
501
502 case NS_rtf::LN_LCBPLGOSL:
503 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
504
505 case NS_rtf::LN_FCPLCOCX:
506 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
507
508 case NS_rtf::LN_LCBPLCOCX:
509 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
510
511 case NS_rtf::LN_DWLOWDATETIME:
512 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
513
514 case NS_rtf::LN_DWHIGHDATETIME:
515 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
516
517 case NS_rtf::LN_FCPLCASUMY:
518 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
519
520 case NS_rtf::LN_LCBPLCASUMY:
521 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
522
523 case NS_rtf::LN_FCPLCFGRAM:
524 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
525
526 case NS_rtf::LN_LCBPLCFGRAM:
527 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
528
529 case NS_rtf::LN_FCSTTBFUSSR:
530 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
531 break;
532
533 case NS_rtf::LN_ISTD: //index of applied style
534 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
535 {
536 //search for the style with the given id and apply it
537 //as CharStyleName or ParaStyleName
538 //if the style is a user defined style then it must have an ISTD - built-in styles might not have it
539 StyleSheetTablePtr pStyleSheets = m_pImpl->GetStyleSheetTable();
540 ::rtl::OUString sValue = ::rtl::OUString::valueOf(nIntValue, 16);
541 const StyleSheetEntryPtr pEntry = pStyleSheets->FindStyleSheetByISTD(sValue);
542 if( pEntry.get( ) )
543 {
544 bool bParaStyle = (pEntry->nStyleTypeCode == STYLE_TYPE_PARA);
545 if(bParaStyle)
546 m_pImpl->SetCurrentParaStyleId(::rtl::OUString::valueOf(static_cast<sal_Int32>(nIntValue), 16));
547 if (m_pImpl->GetTopContext() && m_pImpl->GetTopContextType() != CONTEXT_SECTION)
548 m_pImpl->GetTopContext()->Insert(
549 bParaStyle ?
550 PROP_PARA_STYLE_NAME : PROP_CHAR_STYLE_NAME,
551 true,
552 uno::makeAny(
553 m_pImpl->GetStyleSheetTable()->ConvertStyleName( pEntry->sStyleName ) ) );
554 }
555 }
556 break;
557 case NS_rtf::LN_ISTARTAT:
558 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
559 break;
560 case NS_rtf::LN_NFC:
561 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
562 break;
563 case NS_rtf::LN_FLEGAL:
564 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
565 break;
566 case NS_rtf::LN_FNORESTART:
567 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
568 break;
569 case NS_rtf::LN_FIDENTSAV:
570 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
571 break;
572 case NS_rtf::LN_FCONVERTED:
573 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
574 break;
575 case NS_rtf::LN_FTENTATIVE:
576 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
577 break;
578 case NS_rtf::LN_RGBXCHNUMS:
579 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
580 break;
581 case NS_rtf::LN_IXCHFOLLOW:
582 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
583 break;
584 case NS_rtf::LN_DXASPACE:
585 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
586 break;
587 case NS_rtf::LN_DXAINDENT:
588 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
589 break;
590 case NS_rtf::LN_CBGRPPRLCHPX:
591 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
592 break;
593 case NS_rtf::LN_CBGRPPRLPAPX:
594 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
595 break;
596 case NS_rtf::LN_LSID:
597 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
598 break;
599 case NS_rtf::LN_TPLC:
600 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
601 break;
602 case NS_rtf::LN_RGISTD:
603 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
604 break;
605 case NS_rtf::LN_FSIMPLELIST:
606 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
607 break;
608 case NS_rtf::LN_fAutoNum:
609 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
610 break;
611 case NS_rtf::LN_fHybrid:
612 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
613 break;
614 case NS_rtf::LN_ILVL:
615 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
616 break;
617 case NS_rtf::LN_FSTARTAT:
618 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
619 break;
620 case NS_rtf::LN_FFORMATTING:
621 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
622 break;
623 case NS_rtf::LN_UNSIGNED4_6:
624 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
625 break;
626 case NS_rtf::LN_clfolvl:
627 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
628 break;
629 case NS_rtf::LN_CBFFNM1:
630 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
631 break;
632 case NS_rtf::LN_PRQ:
633 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
634 break;
635 case NS_rtf::LN_FTRUETYPE:
636 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
637 break;
638 case NS_rtf::LN_FF:
639 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
640 break;
641 case NS_rtf::LN_WWEIGHT:
642 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
643 break;
644 case NS_rtf::LN_CHS:
645 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
646
647 {
648 m_pImpl->GetFIB().SetLNCHS( nIntValue );
649 }
650 break;
651 case NS_rtf::LN_IXCHSZALT:
652 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
653 break;
654 case NS_rtf::LN_PANOSE:
655 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
656 break;
657 case NS_rtf::LN_FS:
658 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
659 break;
660 case NS_rtf::LN_STI:
661 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
662 break;
663 case NS_rtf::LN_FSCRATCH:
664 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
665 break;
666 case NS_rtf::LN_FINVALHEIGHT:
667 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
668 break;
669 case NS_rtf::LN_FHASUPE:
670 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
671 break;
672 case NS_rtf::LN_FMASSCOPY:
673 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
674 break;
675 case NS_rtf::LN_SGC:
676 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
677 break;
678 case NS_rtf::LN_ISTDBASE:
679 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
680 break;
681 case NS_rtf::LN_CUPX:
682 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
683 break;
684 case NS_rtf::LN_ISTDNEXT:
685 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
686 break;
687 case NS_rtf::LN_BCHUPE:
688 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
689 break;
690 case NS_rtf::LN_FAUTOREDEF:
691 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
692 break;
693 case NS_rtf::LN_FHIDDEN:
694 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
695 break;
696 case NS_rtf::LN_CSTD:
697 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
698 break;
699 case NS_rtf::LN_CBSTDBASEINFILE:
700 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
701 break;
702 case NS_rtf::LN_FSTDSTYLENAMESWRITTEN:
703 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
704 break;
705 case NS_rtf::LN_UNUSED4_2:
706 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
707 break;
708 case NS_rtf::LN_STIMAXWHENSAVED:
709 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
710 break;
711 case NS_rtf::LN_ISTDMAXFIXEDWHENSAVED:
712 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
713 break;
714 case NS_rtf::LN_NVERBUILTINNAMESWHENSAVED:
715 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
716 break;
717 case NS_rtf::LN_RGFTCSTANDARDCHPSTSH:
718 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
719 break;
720 case NS_rtf::LN_WIDENT:
721 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
722
723 case NS_rtf::LN_NFIB:
724 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
725
726 case NS_rtf::LN_NPRODUCT:
727 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
728 case NS_rtf::LN_LID:
729 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
730 case NS_rtf::LN_PNNEXT:
731 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
732 case NS_rtf::LN_FDOT:
733 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
734 case NS_rtf::LN_FGLSY:
735 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
736 case NS_rtf::LN_FCOMPLEX:
737 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
738 case NS_rtf::LN_FHASPIC:
739 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
740
741 case NS_rtf::LN_CQUICKSAVES:
742 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
743
744 case NS_rtf::LN_FENCRYPTED:
745 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
746
747 case NS_rtf::LN_FWHICHTBLSTM:
748 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
749
750 case NS_rtf::LN_FREADONLYRECOMMENDED:
751 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
752
753 case NS_rtf::LN_FEXTCHAR:
754 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
755
756 case NS_rtf::LN_FEMPTYSPECIAL:
757 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
758
759 case NS_rtf::LN_FLOADOVERRIDEPAGE:
760 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
761
762 case NS_rtf::LN_FFUTURESAVEDUNDO:
763 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
764
765 case NS_rtf::LN_FSPARE0:
766 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
767
768 case NS_rtf::LN_CHSTABLES:
769 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
770
771 case NS_rtf::LN_FCMIN:
772 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
773
774 case NS_rtf::LN_CSW:
775 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
776
777 case NS_rtf::LN_WMAGICCREATED:
778 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
779
780 case NS_rtf::LN_WMAGICREVISED:
781 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
782
783 case NS_rtf::LN_WMAGICCREATEDPRIVATE:
784 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
785
786
787 case NS_rtf::LN_WMAGICREVISEDPRIVATE:
788 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
789
790 case NS_rtf::LN_LIDFE:
791 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
792
793 case NS_rtf::LN_CLW:
794 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
795
796 case NS_rtf::LN_CCPTEXT:
797 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
798
799
800 case NS_rtf::LN_CCPFTN:
801 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
802
803 case NS_rtf::LN_CCPHDD:
804 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
805
806 case NS_rtf::LN_CCPATN:
807 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
808
809 case NS_rtf::LN_CCPEDN:
810 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
811
812 case NS_rtf::LN_CCPTXBX:
813 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
814
815 case NS_rtf::LN_CCPHDRTXBX:
816 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
817
818 case NS_rtf::LN_PNCHPFIRST:
819 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
820
821 case NS_rtf::LN_CPNBTECHP:
822 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
823
824 case NS_rtf::LN_PNPAPFIRST:
825 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
826
827 case NS_rtf::LN_CPNBTEPAP:
828 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
829
830 case NS_rtf::LN_PNLVCFIRST:
831 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
832
833 case NS_rtf::LN_CPNBTELVC:
834 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
835
836 case NS_rtf::LN_CFCLCB:
837 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
838
839 case NS_rtf::LN_FCSTSHF:
840 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
841
842 case NS_rtf::LN_LCBSTSHF:
843 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
844
845 case NS_rtf::LN_FCPLCFFNDREF:
846 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
847
848 case NS_rtf::LN_LCBPLCFFNDREF:
849 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
850
851 case NS_rtf::LN_FCPLCFFNDTXT:
852 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
853
854 case NS_rtf::LN_LCBPLCFFNDTXT:
855 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
856
857 case NS_rtf::LN_FCPLCFANDREF:
858 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
859
860 case NS_rtf::LN_LCBPLCFANDREF:
861 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
862
863 case NS_rtf::LN_FCPLCFANDTXT:
864 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
865
866 case NS_rtf::LN_LCBPLCFANDTXT:
867 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
868
869 case NS_rtf::LN_FCPLCFSED:
870 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
871
872 case NS_rtf::LN_LCBPLCFSED:
873 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
874
875 case NS_rtf::LN_FCPLCFPHE:
876 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
877
878 case NS_rtf::LN_LCBPLCFPHE:
879 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
880
881 case NS_rtf::LN_FCPLCFHDD:
882 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
883
884 case NS_rtf::LN_LCBPLCFHDD:
885 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
886
887 case NS_rtf::LN_FCPLCFBTECHPX:
888 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
889
890 case NS_rtf::LN_LCBPLCFBTECHPX:
891 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
892
893
894 case NS_rtf::LN_FCPLCFBTEPAPX:
895 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
896
897 case NS_rtf::LN_LCBPLCFBTEPAPX:
898 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
899
900 case NS_rtf::LN_FCSTTBFFFN:
901 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
902
903 case NS_rtf::LN_LCBSTTBFFFN:
904 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
905
906 case NS_rtf::LN_FCPLCFFLDMOM:
907 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
908
909 case NS_rtf::LN_LCBPLCFFLDMOM:
910 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
911
912 case NS_rtf::LN_FCPLCFFLDHDR:
913 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
914
915 case NS_rtf::LN_LCBPLCFFLDHDR:
916 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
917
918
919 case NS_rtf::LN_FCPLCFFLDFTN:
920 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
921
922 case NS_rtf::LN_LCBPLCFFLDFTN:
923 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
924
925 case NS_rtf::LN_FCPLCFFLDATN:
926 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
927
928 case NS_rtf::LN_LCBPLCFFLDATN:
929 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
930
931 case NS_rtf::LN_FCSTTBFBKMK:
932 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
933
934 case NS_rtf::LN_LCBSTTBFBKMK:
935 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
936
937 case NS_rtf::LN_FCPLCFBKF:
938 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
939
940 case NS_rtf::LN_LCBPLCFBKF:
941 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
942
943 case NS_rtf::LN_FCPLCFBKL:
944 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
945
946 case NS_rtf::LN_LCBPLCFBKL:
947 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
948
949 case NS_rtf::LN_FCDOP:
950 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
951
952 case NS_rtf::LN_LCBDOP:
953 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
954
955 case NS_rtf::LN_FCSTTBFASSOC:
956 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
957
958 case NS_rtf::LN_LCBSTTBFASSOC:
959 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
960
961 case NS_rtf::LN_FCCLX:
962 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
963
964 case NS_rtf::LN_LCBCLX:
965 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
966
967 case NS_rtf::LN_FCGRPXSTATNOWNERS:
968 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
969
970 case NS_rtf::LN_LCBGRPXSTATNOWNERS:
971 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
972
973 case NS_rtf::LN_FCSTTBFATNBKMK:
974 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
975
976 case NS_rtf::LN_LCBSTTBFATNBKMK:
977 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
978
979 case NS_rtf::LN_FCPLCSPAMOM:
980 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
981
982 case NS_rtf::LN_LCBPLCSPAMOM:
983 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
984
985 case NS_rtf::LN_FCPLCSPAHDR:
986 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
987
988
989 case NS_rtf::LN_LCBPLCSPAHDR:
990 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
991
992 case NS_rtf::LN_FCPLCFATNBKF:
993 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
994
995 case NS_rtf::LN_LCBPLCFATNBKF:
996 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
997
998 case NS_rtf::LN_FCPLCFATNBKL:
999 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1000
1001 case NS_rtf::LN_LCBPLCFATNBKL:
1002 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1003
1004 case NS_rtf::LN_FCFORMFLDSTTBF:
1005 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1006
1007 case NS_rtf::LN_LCBFORMFLDSTTBF:
1008 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1009
1010 case NS_rtf::LN_FCPLCFENDREF:
1011 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1012
1013
1014 case NS_rtf::LN_LCBPLCFENDREF:
1015 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1016
1017 case NS_rtf::LN_FCPLCFENDTXT:
1018 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1019
1020 case NS_rtf::LN_LCBPLCFENDTXT:
1021 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1022
1023 case NS_rtf::LN_FCPLCFFLDEDN:
1024 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1025
1026 case NS_rtf::LN_LCBPLCFFLDEDN:
1027 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1028
1029 case NS_rtf::LN_FCDGGINFO:
1030 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1031
1032 case NS_rtf::LN_LCBDGGINFO:
1033 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1034
1035 case NS_rtf::LN_FCSTTBFRMARK:
1036 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1037
1038
1039 case NS_rtf::LN_LCBSTTBFRMARK:
1040 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1041
1042 case NS_rtf::LN_FCSTTBFCAPTION:
1043 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1044
1045 case NS_rtf::LN_LCBSTTBFCAPTION:
1046 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1047
1048 case NS_rtf::LN_FCSTTBFAUTOCAPTION:
1049 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1050
1051 case NS_rtf::LN_LCBSTTBFAUTOCAPTION:
1052 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1053
1054 case NS_rtf::LN_LCBPLCFTXBXTXT:
1055 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1056
1057 case NS_rtf::LN_FCPLCFFLDTXBX:
1058 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1059
1060 case NS_rtf::LN_LCBPLCFFLDTXBX:
1061 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1062
1063 case NS_rtf::LN_FCPLCFHDRTXBXTXT:
1064 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1065
1066 case NS_rtf::LN_LCBPLCFHDRTXBXTXT:
1067 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1068
1069 case NS_rtf::LN_FCPLCFFLDHDRTXBX:
1070 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1071
1072 case NS_rtf::LN_LCBPLCFFLDHDRTXBX:
1073 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1074
1075 case NS_rtf::LN_FCSTTBTTMBD:
1076 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1077
1078 case NS_rtf::LN_LCBSTTBTTMBD:
1079 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1080
1081 case NS_rtf::LN_FCPGDMOTHER:
1082 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1083
1084 case NS_rtf::LN_LCBPGDMOTHER:
1085 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1086
1087 case NS_rtf::LN_FCBKDMOTHER:
1088 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1089
1090 case NS_rtf::LN_LCBBKDMOTHER:
1091 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1092
1093 case NS_rtf::LN_FCPGDFTN:
1094 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1095
1096 case NS_rtf::LN_LCBPGDFTN:
1097 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1098
1099 case NS_rtf::LN_FCBKDFTN:
1100 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1101
1102 case NS_rtf::LN_LCBBKDFTN:
1103 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1104
1105 case NS_rtf::LN_FCPGDEDN:
1106 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1107
1108 case NS_rtf::LN_LCBPGDEDN:
1109 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1110
1111
1112 case NS_rtf::LN_FCBKDEDN:
1113 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1114
1115 case NS_rtf::LN_LCBBKDEDN:
1116 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1117
1118 case NS_rtf::LN_FCPLCFLST:
1119 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1120
1121
1122 case NS_rtf::LN_LCBPLCFLST:
1123 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1124
1125 case NS_rtf::LN_FCPLFLFO:
1126 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1127
1128 case NS_rtf::LN_LCBPLFLFO:
1129 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1130
1131 case NS_rtf::LN_FCPLCFTXBXBKD:
1132 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1133
1134 case NS_rtf::LN_LCBPLCFTXBXBKD:
1135 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1136
1137 case NS_rtf::LN_FCPLCFTXBXHDRBKD:
1138 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1139
1140 case NS_rtf::LN_LCBPLCFTXBXHDRBKD:
1141 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1142
1143 case NS_rtf::LN_FCSTTBGLSYSTYLE:
1144 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1145
1146
1147 case NS_rtf::LN_LCBSTTBGLSYSTYLE:
1148 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1149
1150 case NS_rtf::LN_FCPLCFBTELVC:
1151 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1152
1153 case NS_rtf::LN_LCBPLCFBTELVC:
1154 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1155
1156 case NS_rtf::LN_FCPLCFLVC:
1157 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1158
1159 case NS_rtf::LN_LCBPLCFLVC:
1160 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1161
1162 case NS_rtf::LN_FCSTTBLISTNAMES:
1163 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1164
1165 case NS_rtf::LN_LCBSTTBLISTNAMES:
1166 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1167
1168 case NS_rtf::LN_LCBSTTBFUSSR:
1169 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1170 {
1171 m_pImpl->GetFIB().SetData( nName, nIntValue );
1172 }
1173 break;
1174 case NS_rtf::LN_FN:
1175 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1176
1177 case NS_rtf::LN_FCSEPX:
1178 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1179
1180 case NS_rtf::LN_FNMPR:
1181 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1182
1183 case NS_rtf::LN_FCMPR:
1184 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1185
1186 //section descriptor, unused or internally used
1187 break;
1188 case NS_rtf::LN_ICOFORE:
1189 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1190 break;
1191 case NS_rtf::LN_ICOBACK:
1192 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1193 break;
1194 case NS_rtf::LN_IPAT:
1195 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1196 break;
1197 case NS_rtf::LN_SHDFORECOLOR:
1198 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1199 break;
1200 case NS_rtf::LN_SHDBACKCOLOR:
1201 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1202 break;
1203 case NS_rtf::LN_SHDPATTERN:
1204 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1205 break;
1206 case NS_rtf::LN_DPTLINEWIDTH:
1207 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1208 break;
1209 case NS_rtf::LN_BRCTYPE:
1210 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1211 break;
1212 case NS_rtf::LN_ICO:
1213 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1214 break;
1215 case NS_rtf::LN_DPTSPACE:
1216 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1217 break;
1218 case NS_rtf::LN_FSHADOW:
1219 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1220 break;
1221 case NS_rtf::LN_FFRAME:
1222 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1223 break;
1224 case NS_rtf::LN_UNUSED2_15:
1225 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1226 break;
1227 case NS_rtf::LN_FFIRSTMERGED:
1228 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1229 break;
1230 case NS_rtf::LN_FMERGED:
1231 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1232 break;
1233 case NS_rtf::LN_FVERTICAL:
1234 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1235 break;
1236 case NS_rtf::LN_FBACKWARD:
1237 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1238 break;
1239 case NS_rtf::LN_FROTATEFONT:
1240 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1241 break;
1242 case NS_rtf::LN_FVERTMERGE:
1243 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1244 break;
1245 case NS_rtf::LN_FVERTRESTART:
1246 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1247 break;
1248 case NS_rtf::LN_VERTALIGN:
1249 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1250 break;
1251 case NS_rtf::LN_FUNUSED:
1252 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1253 break;
1254 case NS_rtf::LN_BRCTOP:
1255 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1256 case NS_rtf::LN_BRCLEFT:
1257 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1258 case NS_rtf::LN_BRCBOTTOM:
1259 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1260 case NS_rtf::LN_BRCRIGHT:
1261 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1262 {
1263 table::BorderLine aBorderLine;
1264 sal_Int32 nLineDistance = ConversionHelper::MakeBorderLine( nIntValue, aBorderLine );
1265 (void)nLineDistance;
1266 PropertyIds eBorderId = PROP_LEFT_BORDER;
1267 PropertyIds eBorderDistId = PROP_LEFT_BORDER_DISTANCE ;
1268 switch( nName )
1269 {
1270 case NS_rtf::LN_BRCTOP:
1271 eBorderId = PROP_TOP_BORDER ;
1272 eBorderDistId = PROP_TOP_BORDER_DISTANCE;
1273 break;
1274 case NS_rtf::LN_BRCLEFT:
1275 // eBorderId = PROP_LEFT_BORDER;
1276 // eBorderDistId = PROP_LEFT_BORDER_DISTANCE ;
1277 break;
1278 case NS_rtf::LN_BRCBOTTOM:
1279 eBorderId = PROP_BOTTOM_BORDER ;
1280 eBorderDistId = PROP_BOTTOM_BORDER_DISTANCE;
1281 break;
1282 case NS_rtf::LN_BRCRIGHT:
1283 eBorderId = PROP_RIGHT_BORDER ;
1284 eBorderDistId = PROP_RIGHT_BORDER_DISTANCE ;
1285 break;
1286 default:;
1287 }
1288 //todo: where to put the border properties
1289 //rContext->Insert(eBorderId, uno::makeAny( aBorderLine ));
1290 //rContext->Insert(eBorderDistId, uno::makeAny( nLineDistance ));
1291 }
1292 break;
1293 case NS_rtf::LN_ITCFIRST:
1294 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1295 break;
1296 case NS_rtf::LN_FPUB:
1297 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1298 break;
1299 case NS_rtf::LN_ITCLIM:
1300 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1301 break;
1302 case NS_rtf::LN_FCOL:
1303 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1304 break;
1305 case NS_rtf::LN_LINECOLOR:
1306 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1307 break;
1308 case NS_rtf::LN_LINEWIDTH:
1309 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1310 break;
1311 case NS_rtf::LN_LINETYPE:
1312 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1313 break;
1314 case NS_rtf::LN_MM:
1315 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1316 break;
1317 case NS_rtf::LN_XEXT:
1318 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1319 break;
1320 case NS_rtf::LN_YEXT:
1321 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1322 break;
1323 case NS_rtf::LN_HMF:
1324 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1325 break;
1326 case NS_rtf::LN_LCB:
1327 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1328 break;
1329 case NS_rtf::LN_CBHEADER:
1330 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1331 break;
1332 case NS_rtf::LN_MFP:
1333 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1334 break;
1335 case NS_rtf::LN_BM_RCWINMF:
1336 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1337 break;
1338 case NS_rtf::LN_DXAGOAL:
1339 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1340 break;
1341 case NS_rtf::LN_DYAGOAL:
1342 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1343 break;
1344 case NS_rtf::LN_MX:
1345 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1346 break;
1347 case NS_rtf::LN_MY:
1348 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1349 break;
1350 case NS_rtf::LN_DXACROPLEFT:
1351 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1352 break;
1353 case NS_rtf::LN_DYACROPTOP:
1354 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1355 break;
1356 case NS_rtf::LN_DXACROPRIGHT:
1357 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1358 break;
1359 case NS_rtf::LN_DYACROPBOTTOM:
1360 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1361 break;
1362 case NS_rtf::LN_BRCL:
1363 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1364 break;
1365 case NS_rtf::LN_FFRAMEEMPTY:
1366 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1367 break;
1368 case NS_rtf::LN_FBITMAP:
1369 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1370 break;
1371 case NS_rtf::LN_FDRAWHATCH:
1372 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1373 break;
1374 case NS_rtf::LN_FERROR:
1375 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1376 break;
1377 case NS_rtf::LN_BPP:
1378 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1379 break;
1380 case NS_rtf::LN_DXAORIGIN:
1381 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1382 break;
1383 case NS_rtf::LN_DYAORIGIN:
1384 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1385 break;
1386 case NS_rtf::LN_CPROPS:
1387 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1388 break;
1389 case NS_rtf::LN_LINEPROPSTOP:
1390 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1391 break;
1392 case NS_rtf::LN_LINEPROPSLEFT:
1393 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1394 break;
1395 case NS_rtf::LN_LINEPROPSBOTTOM:
1396 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1397 break;
1398 case NS_rtf::LN_LINEPROPSRIGHT:
1399 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1400 break;
1401 case NS_rtf::LN_LINEPROPSHORIZONTAL:
1402 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1403 break;
1404 case NS_rtf::LN_LINEPROPSVERTICAL:
1405 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1406 break;
1407 case NS_rtf::LN_headerr:
1408 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1409 break;
1410 case NS_rtf::LN_footerr:
1411 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1412 break;
1413 case NS_rtf::LN_endnote:
1414 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1415 break;
1416
1417 case NS_rtf::LN_BOOKMARKNAME:
1418 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1419 // sStringValue contains the bookmark name
1420 sLocalBookmarkName = sStringValue;
1421 break;
1422
1423 case NS_rtf::LN_IBKL:
1424 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0.5 */
1425 //contains the bookmark identifier - has to be added to the bookmark name imported before
1426 //if it is already available then the bookmark should be inserted
1427 m_pImpl->AddBookmark( sLocalBookmarkName, nIntValue );
1428 sLocalBookmarkName = ::rtl::OUString();
1429 break;
1430
1431 case NS_rtf::LN_LISTLEVEL:
1432 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1433 break;
1434 case NS_rtf::LN_LFOData:
1435 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1436 break;
1437 case NS_rtf::LN_F:
1438 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1439 break;
1440 case NS_rtf::LN_ALTFONTNAME:
1441 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1442 break;
1443 case NS_rtf::LN_XSZFFN:
1444 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1445 break;
1446 case NS_rtf::LN_XSTZNAME:
1447 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1448 break;
1449 case NS_rtf::LN_XSTZNAME1:
1450 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1451 break;
1452 case NS_rtf::LN_UPXSTART:
1453 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1454 break;
1455 case NS_rtf::LN_UPX:
1456 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1457 break;
1458 case NS_rtf::LN_sed:
1459 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1460 //section properties
1461 resolveAttributeProperties(*this, val);
1462 break;
1463 case NS_rtf::LN_tbdAdd:
1464 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1465 //
1466 {
1467 writerfilter::Reference<Properties>::Pointer_t pProperties = val.getProperties();
1468 if( pProperties.get())
1469 {
1470 pProperties->resolve(*this);
1471 //increment to the next tab stop
1472 m_pImpl->NextTabStop();
1473 }
1474 }
1475 break;
1476 case NS_rtf::LN_dxaDel:
1477 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1478 //deleted tab
1479 case NS_rtf::LN_dxaAdd:
1480 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1481 //set tab
1482 case NS_rtf::LN_TLC:
1483 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1484 //tab leading characters - for decimal tabs
1485 case NS_rtf::LN_JC:
1486 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1487 //tab justification
1488 m_pImpl->ModifyCurrentTabStop(nName, nIntValue);
1489 break;
1490 case NS_rtf::LN_UNUSED0_6:
1491 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1492 // really unused
1493 break;
1494 case NS_rtf::LN_rgbrc:
1495 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1496 break;
1497 case NS_rtf::LN_shd:
1498 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1499 break;
1500 case NS_rtf::LN_cellShd:
1501 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1502 break;
1503 case NS_rtf::LN_cellTopColor:
1504 case NS_rtf::LN_cellLeftColor:
1505 case NS_rtf::LN_cellBottomColor:
1506 case NS_rtf::LN_cellRightColor:
1507 OSL_ASSERT("handled by DomainMapperTableManager");
1508 break;
1509
1510 case NS_rtf::LN_LISTTABLE:
1511 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1512 break;
1513 case NS_rtf::LN_LFOTABLE:
1514 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1515 break;
1516 case NS_rtf::LN_FONTTABLE:
1517 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1518 break;
1519 case NS_rtf::LN_STYLESHEET:
1520 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1521 break;
1522
1523 case NS_rtf::LN_fcEastAsianLayout:
1524 /* WRITERFILTERSTATUS: done: 50, planned: 0.5, spent: 0 */
1525 /* it seems that the value is following:
1526 ???? XX YYYY ZZ
1527 where
1528 XX seems to be the run id
1529 ZZ is the length of the function that is normally 6
1530 Lower byte of YYYY determines whether it is
1531 vertical text flow (0x01), or
1532 two lines in one layout (0x02).
1533 For 0x01, if the higher byte of YYYY is zero, the text is not scaled to fit the line height,
1534 in oposite case, it is to be scaled.
1535 For 0x02, the higher byte of YYYY is determinig the prefix and suffix of the run:
1536 no brackets (0x00) ,
1537 () round brackets (0x01),
1538 [] square backets (0x02),
1539 <> angle brackets (0x03) and
1540 {} curly brackets (0x04).
1541 ???? is different and we do not know its signification
1542 */
1543
1544 if ((nIntValue & 0x000000FF) == 6)
1545 {
1546 switch ((nIntValue & 0x0000FF00) >> 8)
1547 {
1548 case 1: // vertical text
1549 if (m_pImpl->GetTopContext())
1550 {
1551 m_pImpl->GetTopContext()->Insert(PROP_CHAR_ROTATION, true, uno::makeAny ( sal_Int16(900) ));
1552 m_pImpl->GetTopContext()->Insert(PROP_CHAR_ROTATION_IS_FIT_TO_LINE, true, uno::makeAny (((nIntValue & 0x00FF0000) >> 16) != 0));
1553 }
1554 break;
1555 case 2: // two lines in one
1556 if (m_pImpl->GetTopContext())
1557 {
1558 m_pImpl->GetTopContext()->Insert(PROP_CHAR_COMBINE_IS_ON, true, uno::makeAny ( true ));
1559 m_pImpl->GetTopContext()->Insert(PROP_CHAR_COMBINE_PREFIX, true, uno::makeAny ( getBracketStringFromEnum((nIntValue & 0x00FF0000) >> 16)));
1560 m_pImpl->GetTopContext()->Insert(PROP_CHAR_COMBINE_SUFFIX, true, uno::makeAny ( getBracketStringFromEnum((nIntValue & 0x00FF0000) >> 16, false)));
1561 }
1562 break;
1563 default:
1564 break;
1565 }
1566 }
1567 break;
1568 case NS_rtf::LN_FRD :
1569 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1570 //footnote reference descriptor, if nIntValue > 0 then automatic, custom otherwise
1571 //ignored
1572 break;
1573 case NS_rtf::LN_FONT: //font of footnote symbol
1574 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1575 if (m_pImpl->GetTopContext())
1576 m_pImpl->GetTopContext()->SetFootnoteFontId( nIntValue );
1577 break;
1578 case NS_ooxml::LN_CT_Sym_char:
1579 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1580 if( m_pImpl->GetTopContext() && m_pImpl->GetTopContext()->GetFootnote().is())
1581 {
1582 m_pImpl->GetTopContext()->GetFootnote()->setLabel(::rtl::OUString( sal_Unicode(nIntValue)));
1583 break;
1584 }
1585 else //it's a _real_ symbol
1586 {
1587 utext( reinterpret_cast < const sal_uInt8 * >( &nIntValue ), 1 );
1588 }
1589 break;
1590 case NS_rtf::LN_CHAR: //footnote symbol character
1591 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1592 if (m_pImpl->GetTopContext())
1593 m_pImpl->GetTopContext()->SetFootnoteSymbol( sal_Unicode(nIntValue));
1594 break;
1595 case NS_ooxml::LN_CT_Sym_font:
1596 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1597 //the footnote symbol and font are provided after the footnote is already inserted
1598 if( m_pImpl->GetTopContext() && m_pImpl->GetTopContext()->GetFootnote().is())
1599 {
1600 uno::Reference< beans::XPropertySet > xAnchorProps( m_pImpl->GetTopContext()->GetFootnote()->getAnchor(), uno::UNO_QUERY );
1601 xAnchorProps->setPropertyValue(
1602 PropertyNameSupplier::GetPropertyNameSupplier().GetName( PROP_CHAR_FONT_NAME),
1603 uno::makeAny( sStringValue ));
1604 }
1605 else //a real symbol
1606 if (m_pImpl->GetTopContext())
1607 m_pImpl->GetTopContext()->Insert(PROP_CHAR_FONT_NAME, true, uno::makeAny( sStringValue ));
1608 break;
1609 case NS_ooxml::LN_CT_Underline_val:
1610 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1611 handleUnderlineType(nIntValue, m_pImpl->GetTopContext());
1612 break;
1613 case NS_ooxml::LN_CT_Color_val:
1614 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1615 if (m_pImpl->GetTopContext())
1616 m_pImpl->GetTopContext()->Insert(PROP_CHAR_COLOR, true, uno::makeAny( nIntValue ) );
1617 break;
1618 case NS_ooxml::LN_CT_Underline_color:
1619 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1620 if (m_pImpl->GetTopContext())
1621 {
1622 m_pImpl->GetTopContext()->Insert(PROP_CHAR_UNDERLINE_HAS_COLOR, true, uno::makeAny( true ) );
1623 m_pImpl->GetTopContext()->Insert(PROP_CHAR_UNDERLINE_COLOR, true, uno::makeAny( nIntValue ) );
1624 }
1625 break;
1626
1627 case NS_ooxml::LN_CT_TabStop_val:
1628 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1629 if (sal::static_int_cast<Id>(nIntValue) == NS_ooxml::LN_Value_ST_TabJc_clear)
1630 {
1631 m_pImpl->m_aCurrentTabStop.bDeleted = true;
1632 }
1633 else
1634 {
1635 m_pImpl->m_aCurrentTabStop.bDeleted = false;
1636 m_pImpl->m_aCurrentTabStop.Alignment = getTabAlignFromValue(nIntValue);
1637 }
1638 break;
1639 case NS_ooxml::LN_CT_TabStop_leader:
1640 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1641 m_pImpl->m_aCurrentTabStop.FillChar = getFillCharFromValue(nIntValue);
1642 break;
1643 case NS_ooxml::LN_CT_TabStop_pos:
1644 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1645 m_pImpl->m_aCurrentTabStop.Position = ConversionHelper::convertTwipToMM100(nIntValue);
1646 break;
1647
1648 case NS_ooxml::LN_CT_Fonts_ascii:
1649 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1650 if (m_pImpl->GetTopContext())
1651 m_pImpl->GetTopContext()->Insert(PROP_CHAR_FONT_NAME, true, uno::makeAny( sStringValue ));
1652 break;
1653 case NS_ooxml::LN_CT_Fonts_asciiTheme:
1654 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1655 if (m_pImpl->GetTopContext())
1656 m_pImpl->GetTopContext()->Insert(PROP_CHAR_FONT_NAME, true, uno::makeAny( m_pImpl->GetThemeTable()->getFontNameForTheme(nIntValue) ));
1657 break;
1658 case NS_ooxml::LN_CT_Fonts_hAnsi:
1659 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1660 break;//unsupported
1661 case NS_ooxml::LN_CT_Fonts_hAnsiTheme:
1662 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1663 break; //unsupported
1664 case NS_ooxml::LN_CT_Fonts_eastAsia:
1665 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1666 if (m_pImpl->GetTopContext())
1667 m_pImpl->GetTopContext()->Insert(PROP_CHAR_FONT_NAME_ASIAN, true, uno::makeAny( sStringValue ));
1668 break;
1669 case NS_ooxml::LN_CT_Fonts_eastAsiaTheme:
1670 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1671 if (m_pImpl->GetTopContext())
1672 m_pImpl->GetTopContext()->Insert(PROP_CHAR_FONT_NAME_COMPLEX, true, uno::makeAny( m_pImpl->GetThemeTable()->getFontNameForTheme(nIntValue) ) );
1673 break;
1674 case NS_ooxml::LN_CT_Fonts_cs:
1675 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1676 if (m_pImpl->GetTopContext())
1677 m_pImpl->GetTopContext()->Insert(PROP_CHAR_FONT_NAME_COMPLEX, true, uno::makeAny( sStringValue ));
1678 break;
1679 case NS_ooxml::LN_CT_Fonts_cstheme:
1680 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1681 if (m_pImpl->GetTopContext())
1682 m_pImpl->GetTopContext()->Insert(PROP_CHAR_FONT_NAME_COMPLEX, true, uno::makeAny( m_pImpl->GetThemeTable()->getFontNameForTheme(nIntValue) ));
1683 break;
1684 case NS_ooxml::LN_CT_Spacing_before:
1685 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1686 if (m_pImpl->GetTopContext())
1687 m_pImpl->GetTopContext()->Insert(PROP_PARA_TOP_MARGIN, true, uno::makeAny( ConversionHelper::convertTwipToMM100( nIntValue ) ));
1688 break;
1689 case NS_ooxml::LN_CT_Spacing_beforeLines:
1690 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1691 break;
1692 case NS_ooxml::LN_CT_Spacing_after:
1693 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1694 if (m_pImpl->GetTopContext())
1695 m_pImpl->GetTopContext()->Insert(PROP_PARA_BOTTOM_MARGIN, true, uno::makeAny( ConversionHelper::convertTwipToMM100( nIntValue ) ));
1696 break;
1697 case NS_ooxml::LN_CT_Spacing_afterLines:
1698 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1699 break;
1700 case NS_ooxml::LN_CT_Spacing_line: //91434
1701 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1702 case NS_ooxml::LN_CT_Spacing_lineRule: //91435
1703 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1704 {
1705 #define SINGLE_LINE_SPACING 240
1706 style::LineSpacing aSpacing;
1707 PropertyMapPtr pTopContext = m_pImpl->GetTopContext();
1708 PropertyMap::iterator aLineSpacingIter = pTopContext->find(PropertyDefinition( PROP_PARA_LINE_SPACING, true ) );
1709 if( aLineSpacingIter != pTopContext->end())
1710 {
1711 aLineSpacingIter->second >>= aSpacing;
1712 }
1713 else
1714 {
1715 //default to single line spacing
1716 aSpacing.Mode = style::LineSpacingMode::FIX;
1717 aSpacing.Height = sal_Int16(ConversionHelper::convertTwipToMM100( SINGLE_LINE_SPACING ));
1718 }
1719 if( nName == NS_ooxml::LN_CT_Spacing_line )
1720 {
1721 //now set the value depending on the Mode
1722 if( aSpacing.Mode == style::LineSpacingMode::PROP )
1723 aSpacing.Height = sal_Int16(sal_Int32(nIntValue) * 100 / SINGLE_LINE_SPACING );
1724 else
1725 aSpacing.Height = sal_Int16(ConversionHelper::convertTwipToMM100( nIntValue ));
1726 }
1727 else //NS_ooxml::LN_CT_Spacing_lineRule:
1728 {
1729 // exactly, atLeast, auto
1730 if( sal::static_int_cast<Id>(nIntValue) == NS_ooxml::LN_Value_wordprocessingml_ST_LineSpacingRule_auto)
1731 {
1732 aSpacing.Mode = style::LineSpacingMode::PROP;
1733 //reinterpret the already set value
1734 aSpacing.Height = sal_Int16( aSpacing.Height * 100 / ConversionHelper::convertTwipToMM100( SINGLE_LINE_SPACING ));
1735 }
1736 else if( sal::static_int_cast<Id>(nIntValue) == NS_ooxml::LN_Value_wordprocessingml_ST_LineSpacingRule_atLeast)
1737 aSpacing.Mode = style::LineSpacingMode::MINIMUM;
1738 else // NS_ooxml::LN_Value_wordprocessingml_ST_LineSpacingRule_exact
1739 aSpacing.Mode = style::LineSpacingMode::FIX;
1740 }
1741 pTopContext->Insert(PROP_PARA_LINE_SPACING, true, uno::makeAny( aSpacing ));
1742 }
1743 break;
1744 case NS_ooxml::LN_CT_Ind_left:
1745 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1746 if (m_pImpl->GetTopContext())
1747 m_pImpl->GetTopContext()->Insert(
1748 PROP_PARA_LEFT_MARGIN, true, uno::makeAny( ConversionHelper::convertTwipToMM100(nIntValue ) ));
1749 break;
1750 case NS_ooxml::LN_CT_Ind_right:
1751 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1752 if (m_pImpl->GetTopContext())
1753 m_pImpl->GetTopContext()->Insert(
1754 PROP_PARA_RIGHT_MARGIN, true, uno::makeAny( ConversionHelper::convertTwipToMM100(nIntValue ) ));
1755 break;
1756 case NS_ooxml::LN_CT_Ind_hanging:
1757 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1758 if (m_pImpl->GetTopContext())
1759 {
1760 sal_Int32 nValue = ConversionHelper::convertTwipToMM100( nIntValue );
1761 m_pImpl->GetTopContext()->Insert(
1762 PROP_PARA_FIRST_LINE_INDENT, true, uno::makeAny( - nValue ));
1763 }
1764 break;
1765 case NS_ooxml::LN_CT_Ind_firstLine:
1766 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1767 if (m_pImpl->GetTopContext())
1768 m_pImpl->GetTopContext()->Insert(
1769 PROP_PARA_FIRST_LINE_INDENT, true, uno::makeAny( ConversionHelper::convertTwipToMM100(nIntValue ) ));
1770 break;
1771
1772 case NS_ooxml::LN_CT_EastAsianLayout_id:
1773 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1774 break;
1775 case NS_ooxml::LN_CT_EastAsianLayout_combine:
1776 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1777 if (m_pImpl->GetTopContext())
1778 m_pImpl->GetTopContext()->Insert(PROP_CHAR_COMBINE_IS_ON, true, uno::makeAny ( nIntValue ? true : false ));
1779 break;
1780 case NS_ooxml::LN_CT_EastAsianLayout_combineBrackets:
1781 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1782 if (m_pImpl->GetTopContext())
1783 {
1784 rtl::OUString sCombinePrefix = getBracketStringFromEnum(nIntValue);
1785 rtl::OUString sCombineSuffix = getBracketStringFromEnum(nIntValue, false);
1786 m_pImpl->GetTopContext()->Insert(PROP_CHAR_COMBINE_PREFIX, true, uno::makeAny ( sCombinePrefix ));
1787 m_pImpl->GetTopContext()->Insert(PROP_CHAR_COMBINE_SUFFIX, true, uno::makeAny ( sCombineSuffix ));
1788 }
1789 break;
1790 case NS_ooxml::LN_CT_EastAsianLayout_vert:
1791 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1792 if (m_pImpl->GetTopContext())
1793 {
1794 sal_Int16 nRotationAngle = (nIntValue ? 900 : 0);
1795 m_pImpl->GetTopContext()->Insert(PROP_CHAR_ROTATION, true, uno::makeAny ( nRotationAngle ));
1796 }
1797 break;
1798 case NS_ooxml::LN_CT_EastAsianLayout_vertCompress:
1799 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1800 if (m_pImpl->GetTopContext())
1801 m_pImpl->GetTopContext()->Insert(PROP_CHAR_ROTATION_IS_FIT_TO_LINE, true, uno::makeAny ( nIntValue ? true : false));
1802 break;
1803
1804 case NS_ooxml::LN_CT_PageSz_code:
1805 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1806 CT_PageSz.code = nIntValue;
1807 break;
1808 case NS_ooxml::LN_CT_PageSz_h:
1809 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1810 {
1811 sal_Int32 nHeight = ConversionHelper::convertTwipToMM100(nIntValue);
1812 CT_PageSz.h = PaperInfo::sloppyFitPageDimension(nHeight);
1813 }
1814 break;
1815 case NS_ooxml::LN_CT_PageSz_orient:
1816 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1817 CT_PageSz.orient = (nIntValue != 0);
1818 break;
1819 case NS_ooxml::LN_CT_PageSz_w:
1820 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1821 {
1822 sal_Int32 nWidth = ConversionHelper::convertTwipToMM100(nIntValue);
1823 CT_PageSz.w = PaperInfo::sloppyFitPageDimension(nWidth);
1824 }
1825 break;
1826
1827 case NS_ooxml::LN_CT_PageMar_top:
1828 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1829 m_pImpl->SetPageMarginTwip( PAGE_MAR_TOP, nIntValue );
1830 break;
1831 case NS_ooxml::LN_CT_PageMar_right:
1832 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1833 m_pImpl->SetPageMarginTwip( PAGE_MAR_RIGHT, nIntValue );
1834 break;
1835 case NS_ooxml::LN_CT_PageMar_bottom:
1836 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1837 m_pImpl->SetPageMarginTwip( PAGE_MAR_BOTTOM, nIntValue );
1838 break;
1839 case NS_ooxml::LN_CT_PageMar_left:
1840 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1841 m_pImpl->SetPageMarginTwip( PAGE_MAR_LEFT, nIntValue );
1842 break;
1843 case NS_ooxml::LN_CT_PageMar_header:
1844 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1845 m_pImpl->SetPageMarginTwip( PAGE_MAR_HEADER, nIntValue );
1846 break;
1847 case NS_ooxml::LN_CT_PageMar_footer:
1848 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1849 m_pImpl->SetPageMarginTwip( PAGE_MAR_FOOTER, nIntValue );
1850 break;
1851 case NS_ooxml::LN_CT_PageMar_gutter:
1852 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1853 m_pImpl->SetPageMarginTwip( PAGE_MAR_GUTTER, nIntValue );
1854 break;
1855 case NS_ooxml::LN_CT_Language_val: //90314
1856 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1857 case NS_ooxml::LN_CT_Language_eastAsia: //90315
1858 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1859 case NS_ooxml::LN_CT_Language_bidi: //90316
1860 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1861 {
1862 LanguageType eLang = MsLangId::convertIsoStringToLanguage( sStringValue );
1863 lang::Locale aLocale = MsLangId::convertLanguageToLocale( eLang );
1864 if (m_pImpl->GetTopContext())
1865 m_pImpl->GetTopContext()->Insert(NS_ooxml::LN_CT_Language_val== nName ? PROP_CHAR_LOCALE :
1866 NS_ooxml::LN_CT_Language_eastAsia == nName ? PROP_CHAR_LOCALE_ASIAN : PROP_CHAR_LOCALE_COMPLEX,
1867 true,
1868 uno::makeAny( aLocale ) );
1869 }
1870 break;
1871 #define AUTO_PARA_SPACING sal_Int32(49)
1872 case NS_ooxml::LN_CT_Spacing_beforeAutospacing:
1873 /* WRITERFILTERSTATUS: done: 80, planned: 0.5, spent: 0.2 */
1874 //TODO: autospacing depends on some document property (called fDontUseHTMLAutoSpacing in old ww8 filter) 100 or 280 twip
1875 //and should be set to 0 on start of page
1876 m_pImpl->GetTopContext()->Insert( PROP_PARA_TOP_MARGIN, false, uno::makeAny( AUTO_PARA_SPACING ) );
1877 break;
1878 case NS_ooxml::LN_CT_Spacing_afterAutospacing:
1879 /* WRITERFILTERSTATUS: done: 80, planned: 0.5, spent: 0.2 */
1880 //TODO: autospacing depends on some document property (called fDontUseHTMLAutoSpacing in old ww8 filter) 100 or 280 twip
1881 m_pImpl->GetTopContext()->Insert( PROP_PARA_BOTTOM_MARGIN, false, uno::makeAny( AUTO_PARA_SPACING ) );
1882 break;
1883 case NS_ooxml::LN_CT_SmartTagRun_uri:
1884 case NS_ooxml::LN_CT_SmartTagRun_element:
1885 /* WRITERFILTERSTATUS: done: 0, planned: 1, spent: 0 */
1886 //TODO: add handling of SmartTags
1887 break;
1888 case NS_ooxml::LN_CT_Br_type :
1889 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1890 //TODO: attributes for break (0x12) are not supported
1891 break;
1892 case NS_ooxml::LN_CT_Fonts_hint :
1893 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
1894 /* assigns script type to ambigous characters, values can be:
1895 NS_ooxml::LN_Value_ST_Hint_default
1896 NS_ooxml::LN_Value_ST_Hint_eastAsia
1897 NS_ooxml::LN_Value_ST_Hint_cs
1898 */
1899 //TODO: unsupported?
1900 break;
1901 case NS_ooxml::LN_CT_TblCellMar_right: // 92375;
1902 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1903 case NS_ooxml::LN_CT_TblBorders_top: // 92377;
1904 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1905 case NS_ooxml::LN_CT_TblBorders_left: // 92378;
1906 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1907 case NS_ooxml::LN_CT_TblBorders_bottom: // 92379;
1908 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
1909 //todo: handle cell mar
1910 break;
1911 case NS_rtf::LN_blip: // contains the binary graphic
1912 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1913 case NS_ooxml::LN_shape:
1914 /* WRITERFILTERSTATUS: done: 50, planned: 0.5, spent: 0 */
1915 {
1916 //looks a bit like a hack - and it is. The graphic import is split into the inline_inline part and
1917 //afterwards the adding of the binary data.
1918 m_pImpl->GetGraphicImport( IMPORT_AS_DETECTED_INLINE )->attribute(nName, val);
1919 m_pImpl->ImportGraphic( val.getProperties(), IMPORT_AS_DETECTED_INLINE );
1920 }
1921 break;
1922 case NS_ooxml::LN_CT_FramePr_dropCap:
1923 case NS_ooxml::LN_CT_FramePr_lines:
1924 case NS_ooxml::LN_CT_FramePr_hAnchor:
1925 case NS_ooxml::LN_CT_FramePr_vAnchor:
1926 case NS_ooxml::LN_CT_FramePr_x:
1927 case NS_ooxml::LN_CT_FramePr_xAlign:
1928 case NS_ooxml::LN_CT_FramePr_y:
1929 case NS_ooxml::LN_CT_FramePr_yAlign:
1930 case NS_ooxml::LN_CT_FramePr_hRule:
1931 case NS_sprm::LN_PWr:
1932 case NS_sprm::LN_PDxaWidth:
1933 case NS_sprm::LN_PWHeightAbs:
1934 case NS_sprm::LN_PDxaFromText:
1935 case NS_sprm::LN_PDyaFromText:
1936 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1937 {
1938 ParagraphProperties* pParaProperties = dynamic_cast< ParagraphProperties*>(m_pImpl->GetTopContext().get());
1939 if( pParaProperties )
1940 {
1941 switch( nName )
1942 {
1943 case NS_ooxml::LN_CT_FramePr_dropCap:
1944 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1945 pParaProperties->SetDropCap( nIntValue );
1946 break;
1947 case NS_ooxml::LN_CT_FramePr_lines:
1948 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1949 pParaProperties->SetLines( nIntValue );
1950 break;
1951 case NS_ooxml::LN_CT_FramePr_hAnchor:
1952 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1953 switch(nIntValue)
1954 {
1955 case NS_ooxml::LN_Value_wordprocessingml_ST_HAnchor_text: //relative to column
1956 nIntValue = text::RelOrientation::FRAME; break;
1957 case NS_ooxml::LN_Value_wordprocessingml_ST_HAnchor_margin: nIntValue = text::RelOrientation::PAGE_PRINT_AREA; break;
1958 case NS_ooxml::LN_Value_wordprocessingml_ST_HAnchor_page: nIntValue = text::RelOrientation::PAGE_FRAME; break;
1959 default:;
1960 }
1961 pParaProperties->SethAnchor( nIntValue );
1962 break;
1963 case NS_ooxml::LN_CT_FramePr_vAnchor:
1964 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1965 switch(nIntValue)
1966 {
1967 case NS_ooxml::LN_Value_wordprocessingml_ST_VAnchor_text: //relative to paragraph
1968 nIntValue = text::RelOrientation::FRAME; break;
1969 case NS_ooxml::LN_Value_wordprocessingml_ST_VAnchor_margin:nIntValue = text::RelOrientation::PAGE_PRINT_AREA ; break;
1970 case NS_ooxml::LN_Value_wordprocessingml_ST_VAnchor_page: nIntValue = text::RelOrientation::PAGE_FRAME; break;
1971 default:;
1972 }
1973 pParaProperties->SetvAnchor( nIntValue );
1974 break;
1975 case NS_ooxml::LN_CT_FramePr_x:
1976 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1977 pParaProperties->Setx( ConversionHelper::convertTwipToMM100(nIntValue ));
1978 break;
1979 case NS_ooxml::LN_CT_FramePr_xAlign:
1980 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1981 switch( nIntValue )
1982 {
1983 case NS_ooxml::LN_Value_wordprocessingml_ST_XAlign_center : nIntValue = text::HoriOrientation::CENTER; break;
1984 case NS_ooxml::LN_Value_wordprocessingml_ST_XAlign_right : nIntValue = text::HoriOrientation::RIGHT; break;
1985 case NS_ooxml::LN_Value_wordprocessingml_ST_XAlign_inside : nIntValue = text::HoriOrientation::INSIDE; break;
1986 case NS_ooxml::LN_Value_wordprocessingml_ST_XAlign_outside : nIntValue = text::HoriOrientation::OUTSIDE; break;
1987 case NS_ooxml::LN_Value_wordprocessingml_ST_XAlign_left : nIntValue = text::HoriOrientation::LEFT; break;
1988 default: nIntValue = text::HoriOrientation::NONE;
1989 }
1990 pParaProperties->SetxAlign( nIntValue );
1991 break;
1992 case NS_ooxml::LN_CT_FramePr_y:
1993 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1994 pParaProperties->Sety( ConversionHelper::convertTwipToMM100(nIntValue ));
1995 break;
1996 case NS_ooxml::LN_CT_FramePr_yAlign:
1997 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
1998 switch( nIntValue )
1999 {
2000 case NS_ooxml::LN_Value_wordprocessingml_ST_YAlign_top :
2001 case NS_ooxml::LN_Value_wordprocessingml_ST_YAlign_inside :nIntValue = text::VertOrientation::TOP; break;
2002 case NS_ooxml::LN_Value_wordprocessingml_ST_YAlign_center :nIntValue = text::VertOrientation::CENTER;break;
2003 case NS_ooxml::LN_Value_wordprocessingml_ST_YAlign_bottom :
2004 case NS_ooxml::LN_Value_wordprocessingml_ST_YAlign_outside :nIntValue = text::VertOrientation::BOTTOM;break;
2005 case NS_ooxml::LN_Value_wordprocessingml_ST_YAlign_inline ://todo: what to do with inline - no avail. in WW97 and WW2007
2006 //no break;
2007 default:nIntValue = text::VertOrientation::NONE;
2008 }
2009 pParaProperties->SetyAlign( nIntValue );
2010 break;
2011 case NS_ooxml::LN_CT_FramePr_hRule:
2012 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
2013 switch( nIntValue )
2014 {
2015 case NS_ooxml::LN_Value_wordprocessingml_ST_HeightRule_exact:
2016 nIntValue = text::SizeType::FIX;
2017 break;
2018 case NS_ooxml::LN_Value_wordprocessingml_ST_HeightRule_atLeast:
2019 nIntValue = text::SizeType::MIN;
2020 break;
2021 case NS_ooxml::LN_Value_wordprocessingml_ST_HeightRule_auto:
2022 //no break;
2023 default:;
2024 nIntValue = text::SizeType::VARIABLE;
2025 }
2026 pParaProperties->SethRule( nIntValue );
2027 break;
2028 case NS_sprm::LN_PWr:
2029 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
2030 {
2031 //should be either LN_Value_wordprocessingml_ST_Wrap_notBeside or LN_Value_wordprocessingml_ST_Wrap_around
2032 OSL_ENSURE( sal::static_int_cast<Id>(nIntValue) == NS_ooxml::LN_Value_wordprocessingml_ST_Wrap_around ||
2033 sal::static_int_cast<Id>(nIntValue) == NS_ooxml::LN_Value_wordprocessingml_ST_Wrap_notBeside,
2034 "wrap not around or not_Beside?");
2035 pParaProperties->SetWrap(sal::static_int_cast<Id>(nIntValue) == NS_ooxml::LN_Value_wordprocessingml_ST_Wrap_around ?
2036 text::WrapTextMode_DYNAMIC : text::WrapTextMode_NONE );
2037 }
2038 break;
2039 case NS_sprm::LN_PDxaWidth:
2040 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
2041 pParaProperties->Setw(ConversionHelper::convertTwipToMM100(nIntValue));
2042 break;
2043 case NS_sprm::LN_PWHeightAbs:
2044 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
2045 pParaProperties->Seth(ConversionHelper::convertTwipToMM100(nIntValue));
2046 break;
2047 case NS_sprm::LN_PDxaFromText:
2048 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
2049 pParaProperties->SethSpace( ConversionHelper::convertTwipToMM100(nIntValue ));
2050 break;
2051 case NS_sprm::LN_PDyaFromText:
2052 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
2053 pParaProperties->SetvSpace( ConversionHelper::convertTwipToMM100(nIntValue ));
2054 break;
2055 default:;
2056 }
2057 }
2058 else
2059 {
2060 //TODO: how to handle frame properties at styles
2061 }
2062 }
2063 break;
2064 case NS_ooxml::LN_CT_LineNumber_start:
2065 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
2066 case NS_ooxml::LN_CT_LineNumber_distance:
2067 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
2068 case NS_ooxml::LN_CT_TrackChange_author:
2069 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
2070 m_pImpl->SetCurrentRedlineAuthor( sStringValue );
2071 break;
2072 case NS_ooxml::LN_CT_TrackChange_date:
2073 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
2074 m_pImpl->SetCurrentRedlineDate( sStringValue );
2075 break;
2076 case NS_ooxml::LN_CT_Markup_id:
2077 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
2078 m_pImpl->SetCurrentRedlineId( nIntValue );
2079 break;
2080 case NS_ooxml::LN_CT_Comment_initials:
2081 m_pImpl->SetCurrentRedlineInitials(sStringValue);
2082 break;
2083 case NS_ooxml::LN_EG_RangeMarkupElements_commentRangeStart:
2084 m_pImpl->AddAnnotationPosition( true, nIntValue );
2085 break;
2086 case NS_ooxml::LN_EG_RangeMarkupElements_commentRangeEnd:
2087 m_pImpl->AddAnnotationPosition( false, nIntValue );
2088 break;
2089 case NS_ooxml::LN_token:
2090 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
2091 m_pImpl->SetCurrentRedlineToken( nIntValue );
2092 break;
2093 case NS_ooxml::LN_CT_LineNumber_countBy:
2094 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
2095 case NS_ooxml::LN_CT_LineNumber_restart:
2096 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
2097 {
2098 //line numbering in Writer is a global document setting
2099 //in Word is a section setting
2100 //if line numbering is switched on anywhere in the document it's set at the global settings
2101 LineNumberSettings aSettings = m_pImpl->GetLineNumberSettings();
2102 switch( nName )
2103 {
2104 case NS_ooxml::LN_CT_LineNumber_countBy:
2105 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
2106 aSettings.nInterval = nIntValue;
2107 break;
2108 case NS_ooxml::LN_CT_LineNumber_start:
2109 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
2110 aSettings.nStartValue = nIntValue; // todo: has to be set at (each) first paragraph
2111 break;
2112 case NS_ooxml::LN_CT_LineNumber_distance:
2113 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
2114 aSettings.nDistance = ConversionHelper::convertTwipToMM100( nIntValue );
2115 break;
2116 case NS_ooxml::LN_CT_LineNumber_restart:
2117 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
2118 //page:empty, probably 0,section:1,continuous:2;
2119 aSettings.bRestartAtEachPage = nIntValue < 1;
2120 break;
2121 default:;
2122 }
2123 m_pImpl->SetLineNumberSettings( aSettings );
2124 }
2125 break;
2126 case NS_ooxml::LN_CT_FtnEdnRef_customMarkFollows:
2127 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
2128 m_pImpl->SetCustomFtnMark( true );
2129 break;
2130 case NS_ooxml::LN_CT_FtnEdnRef_id:
2131 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
2132 // footnote or endnote reference id - not needed
2133 case NS_ooxml::LN_CT_Color_themeColor:
2134 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
2135 case NS_ooxml::LN_CT_Color_themeTint:
2136 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
2137 case NS_ooxml::LN_CT_Color_themeShade:
2138 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
2139 //unsupported
2140 break;
2141 case NS_ooxml::LN_endtrackchange:
2142 m_pImpl->RemoveCurrentRedline( );
2143 break;
2144 case NS_ooxml::LN_CT_DocGrid_linePitch:
2145 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
2146 {
2147 //see SwWW8ImplReader::SetDocumentGrid
2148 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
2149 if(pSectionContext)
2150 {
2151 pSectionContext->SetGridLinePitch( ConversionHelper::convertTwipToMM100( nIntValue ) );
2152 }
2153 }
2154 break;
2155 case NS_ooxml::LN_CT_DocGrid_charSpace:
2156 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
2157 {
2158 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
2159 if(pSectionContext)
2160 {
2161 pSectionContext->SetDxtCharSpace( nIntValue );
2162 }
2163 }
2164 break;
2165 case NS_ooxml::LN_CT_DocGrid_type:
2166 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
2167 {
2168 if (pSectionContext != NULL)
2169 {
2170 pSectionContext->SetGridType(nIntValue);
2171 }
2172 }
2173 break;
2174 default:
2175 {
2176 #if OSL_DEBUG_LEVEL > 0
2177 ::rtl::OString sMessage( "DomainMapper::attribute() - Id: ");
2178 sMessage += ::rtl::OString::valueOf( sal_Int32( nName ), 10 );
2179 sMessage += ::rtl::OString(" / 0x");
2180 sMessage += ::rtl::OString::valueOf( sal_Int32( nName ), 16 );
2181 // sMessage += ::rtl::OString(" / ");
2182 // sMessage += ::rtl::OString
2183 // ((*QNameToString::Instance())(nName).c_str());
2184 sMessage += ::rtl::OString(" value: ");
2185 sMessage += ::rtl::OString::valueOf( sal_Int32( nIntValue ), 10 );
2186 sMessage += ::rtl::OString(" / 0x");
2187 sMessage += ::rtl::OString::valueOf( sal_Int32( nIntValue ), 16 );
2188 OSL_ENSURE( false, sMessage.getStr()); //
2189 #endif
2190 }
2191 }
2192 }
2193 }
2194 /*-- 09.06.2006 09:52:12---------------------------------------------------
2195
2196 -----------------------------------------------------------------------*/
lcl_sprm(Sprm & rSprm)2197 void DomainMapper::lcl_sprm(Sprm & rSprm)
2198 {
2199 if( !m_pImpl->getTableManager().sprm(rSprm))
2200 sprmWithProps( rSprm, m_pImpl->GetTopContext() );
2201 }
2202 /*-- 20.06.2006 09:58:33---------------------------------------------------
2203
2204 -----------------------------------------------------------------------*/
sprmWithProps(Sprm & rSprm,PropertyMapPtr rContext,SprmType eSprmType)2205 void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext, SprmType eSprmType )
2206 {
2207 OSL_ENSURE(rContext.get(), "PropertyMap has to be valid!");
2208 if(!rContext.get())
2209 return ;
2210
2211 sal_uInt32 nSprmId = rSprm.getId();
2212 //needed for page properties
2213 SectionPropertyMap * pSectionContext = m_pImpl->GetSectionContext();
2214
2215 //TODO: In rtl-paragraphs the meaning of left/right are to be exchanged
2216 bool bExchangeLeftRight = false;
2217 // if( nSprmId == NS_sprm::LN_PJcExtra && AlreadyInRTLPara() )
2218 // bExchangeLeftRight = true;
2219 Value::Pointer_t pValue = rSprm.getValue();
2220 sal_Int32 nIntValue = pValue->getInt();
2221 const rtl::OUString sStringValue = pValue->getString();
2222 // printf ( "DomainMapper::sprm(0x%.4x, 0x%.4x) [%s]\n", (unsigned int)nSprmId, (unsigned int)nIntValue, ::rtl::OUStringToOString(sStringValue, RTL_TEXTENCODING_DONTKNOW).getStr());
2223 /* WRITERFILTERSTATUS: table: sprmdata */
2224
2225 switch(nSprmId)
2226 {
2227 case 2: // sprmPIstd
2228 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2229 case 0x4600:
2230 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2231 break; // sprmPIstd - style code
2232 case 3: // "sprmPIstdPermute
2233 case NS_sprm::LN_PIstdPermute:
2234 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2235 break; // sprmPIstdPermute
2236 case NS_sprm::LN_PIncLvl:
2237 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2238 break; // sprmPIncLvl
2239 case NS_sprm::LN_PJcExtra: // sprmPJc Asian (undocumented)
2240 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
2241 case NS_sprm::LN_PJc: // sprmPJc
2242 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
2243 handleParaJustification(nIntValue, rContext, bExchangeLeftRight);
2244 break;
2245 case NS_sprm::LN_PFSideBySide:
2246 /* WRITERFILTERSTATUS: done: 0, planned: 3, spent: 0 */
2247 /* WRITERFILTERSTATUS: comment: */
2248 break; // sprmPFSideBySide
2249
2250 case NS_sprm::LN_PFKeep: // sprmPFKeep
2251 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
2252 /* WRITERFILTERSTATUS: comment: */
2253 rContext->Insert(PROP_PARA_SPLIT, true, uno::makeAny(nIntValue ? false : true));
2254 break;
2255 case NS_sprm::LN_PFKeepFollow: // sprmPFKeepFollow
2256 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 1 */
2257 /* WRITERFILTERSTATUS: comment: */
2258 rContext->Insert(PROP_PARA_KEEP_TOGETHER, true, uno::makeAny( nIntValue ? true : false) );
2259 break;
2260
2261 case NS_sprm::LN_PFPageBreakBefore:
2262 if ( nIntValue == 1 )
2263 {
2264 rContext->Insert( PROP_BREAK_TYPE, true, uno::makeAny( com::sun::star::style::BreakType_PAGE_BEFORE ) );
2265 }
2266 break; // sprmPFPageBreakBefore
2267
2268 case NS_sprm::LN_PBrcl:
2269 break; // sprmPBrcl
2270 case NS_sprm::LN_PBrcp:
2271 break; // sprmPBrcp
2272
2273 case NS_sprm::LN_PIlvl: // sprmPIlvl
2274 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 1 */
2275 /* WRITERFILTERSTATUS: comment: */
2276 {
2277 StyleSheetPropertyMap* pStyleSheetPropertyMap = NULL;
2278 if ( m_pImpl->IsStyleSheetImport() )
2279 {
2280 pStyleSheetPropertyMap = dynamic_cast< StyleSheetPropertyMap* >( rContext.get() );
2281 }
2282
2283 if ( pStyleSheetPropertyMap != NULL )
2284 {
2285 pStyleSheetPropertyMap->SetListLevel( (sal_Int16)nIntValue );
2286 }
2287 else
2288 {
2289 rContext->Insert( PROP_NUMBERING_LEVEL, true, uno::makeAny( (sal_Int16)nIntValue ));
2290 }
2291 }
2292 break;
2293
2294 case NS_sprm::LN_PIlfo: // sprmPIlfo
2295 /* WRITERFILTERSTATUS: done: 50, planned: 0, spent: 1 */
2296 /* WRITERFILTERSTATUS: comment: */
2297 {
2298 //convert the ListTable entry to a NumberingRules propery and apply it
2299 StyleSheetPropertyMap* pStyleSheetPropertyMap = NULL;
2300 if ( m_pImpl->IsStyleSheetImport() )
2301 {
2302 pStyleSheetPropertyMap = dynamic_cast< StyleSheetPropertyMap* >( rContext.get() );
2303 }
2304
2305 ListsManager::Pointer pListTable = m_pImpl->GetListTable();
2306 ListDef::Pointer pList = pListTable->GetList( nIntValue );
2307 if( pList.get( ) )
2308 {
2309 if ( pStyleSheetPropertyMap != NULL )
2310 {
2311 pStyleSheetPropertyMap->SetListId( nIntValue );
2312 }
2313 else
2314 {
2315 uno::Any aRules = uno::makeAny( pList->GetNumberingRules( ) );
2316 rContext->Insert( PROP_NUMBERING_RULES, true, aRules );
2317 }
2318 }
2319 else
2320 {
2321 if ( pStyleSheetPropertyMap != NULL )
2322 {
2323 // set the number id for AbstractNum references
2324 pStyleSheetPropertyMap->SetNumId( nIntValue );
2325 }
2326 else
2327 {
2328 rtl::OUString sNone;
2329 rContext->Insert( PROP_NUMBERING_STYLE_NAME, true, uno::makeAny( sNone ) );
2330 }
2331 }
2332 }
2333 break;
2334
2335 case NS_sprm::LN_PFNoLineNumb: // sprmPFNoLineNumb
2336 rContext->Insert(PROP_PARA_LINE_NUMBER_COUNT, true, uno::makeAny( nIntValue != 0 ? false : true) );
2337 break;
2338
2339 case NS_sprm::LN_PChgTabsPapx: // sprmPChgTabsPapx
2340 /* WRITERFILTERSTATUS: done: 90, planned: 8, spent: 8 */
2341 /* WRITERFILTERSTATUS: comment: bar tab stops a unavailable */
2342 {
2343 // Initialize tab stop vector from style sheet
2344 uno::Any aValue = m_pImpl->GetPropertyFromStyleSheet(PROP_PARA_TAB_STOPS);
2345 uno::Sequence< style::TabStop > aStyleTabStops;
2346 if(aValue >>= aStyleTabStops)
2347 {
2348 m_pImpl->InitTabStopFromStyle( aStyleTabStops );
2349 }
2350
2351 //create a new tab stop property - this is done with the contained properties
2352 resolveSprmProps(*this, rSprm);
2353 //add this property
2354 rContext->Insert(PROP_PARA_TAB_STOPS, true, uno::makeAny( m_pImpl->GetCurrentTabStopAndClear()));
2355 }
2356 break;
2357 case 0x845d: //right margin Asian - undocumented
2358 case 0x845e: //left margin Asian - undocumented
2359 case 16: // sprmPDxaRight - right margin
2360 case NS_sprm::LN_PDxaRight: // sprmPDxaRight - right margin
2361 case 17:
2362 case NS_sprm::LN_PDxaLeft: // sprmPDxaLeft
2363 /* WRITERFILTERSTATUS: done: 50, planned: 5, spent: 1 */
2364 if( NS_sprm::LN_PDxaLeft == nSprmId || 0x17 == nSprmId|| (bExchangeLeftRight && nSprmId == 0x845d) || ( !bExchangeLeftRight && nSprmId == 0x845e))
2365 rContext->Insert(
2366 eSprmType == SPRM_DEFAULT ? PROP_PARA_LEFT_MARGIN : PROP_LEFT_MARGIN,
2367 true,
2368 uno::makeAny( ConversionHelper::convertTwipToMM100( nIntValue ) ));
2369 else if(eSprmType == SPRM_DEFAULT)
2370 rContext->Insert(
2371 PROP_PARA_RIGHT_MARGIN, true,
2372 uno::makeAny( ConversionHelper::convertTwipToMM100(nIntValue ) ));
2373 //TODO: what happens to the right margins in numberings?
2374 break;
2375 case 18: // sprmPNest
2376 case NS_sprm::LN_PNest: // sprmPNest
2377 //not handled in the old WW8 filter
2378 break;
2379 case NS_sprm::LN_PDxaLeft1: // sprmPDxaLeft1
2380 case 19:
2381 case NS_sprm::LN_PDxaLeft180: // sprmPDxaLeft180
2382 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 1 */
2383 rContext->Insert(
2384 eSprmType == SPRM_DEFAULT ? PROP_PARA_FIRST_LINE_INDENT : PROP_FIRST_LINE_OFFSET,
2385 true,
2386 uno::makeAny( ConversionHelper::convertTwipToMM100(nIntValue ) ));
2387 break;
2388 case 20 : // sprmPDyaLine
2389 case NS_sprm::LN_PDyaLine: // sprmPDyaLine
2390 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 1 */
2391 {
2392 style::LineSpacing aSpacing;
2393 sal_Int16 nDistance = sal_Int16(nIntValue & 0xffff);
2394 if(nIntValue & 0xffff0000)
2395 {
2396 // single line in Writer is 100, in Word it is 240
2397 aSpacing.Mode = style::LineSpacingMode::PROP;
2398 aSpacing.Height = sal_Int16(sal_Int32(nDistance) * 100 /240);
2399 }
2400 else
2401 {
2402 if(nDistance < 0)
2403 {
2404 aSpacing.Mode = style::LineSpacingMode::FIX;
2405 aSpacing.Height = sal_Int16(ConversionHelper::convertTwipToMM100(-nDistance));
2406 }
2407 else if(nDistance >0)
2408 {
2409 aSpacing.Mode = style::LineSpacingMode::MINIMUM;
2410 aSpacing.Height = sal_Int16(ConversionHelper::convertTwipToMM100(nDistance));
2411 }
2412 }
2413 rContext->Insert(PROP_PARA_LINE_SPACING, true, uno::makeAny( aSpacing ));
2414 }
2415 break;
2416 case 21 : // legacy version
2417 case NS_sprm::LN_PDyaBefore: // sprmPDyaBefore
2418 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 1 */
2419 rContext->Insert(PROP_PARA_TOP_MARGIN, true, uno::makeAny( ConversionHelper::convertTwipToMM100( nIntValue ) ));
2420 break;
2421 case 22 :
2422 case NS_sprm::LN_PDyaAfter: // sprmPDyaAfter
2423 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 1 */
2424 rContext->Insert(PROP_PARA_BOTTOM_MARGIN, true, uno::makeAny( ConversionHelper::convertTwipToMM100( nIntValue ) ));
2425 break;
2426
2427 case 23: //sprmPChgTabs
2428 case NS_sprm::LN_PChgTabs: // sprmPChgTabs
2429 /* WRITERFILTERSTATUS: done: 0, planned: 3, spent: 0 */
2430 OSL_ENSURE( false, "unhandled");
2431 //tabs of list level?
2432 break;
2433 case 24: // "sprmPFInTable"
2434 case NS_sprm::LN_PFInTable:
2435 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2436 break; // sprmPFInTable
2437 case NS_sprm::LN_PTableDepth: //sprmPTableDepth
2438 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
2439 //not handled via sprm but via text( 0x07 )
2440 break;
2441 case 25: // "sprmPTtp" pap.fTtp
2442 case NS_sprm::LN_PFTtp: // sprmPFTtp was: Read_TabRowEnd
2443 break;
2444 case 26: // "sprmPDxaAbs
2445 case NS_sprm::LN_PDxaAbs:
2446 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2447 break; // sprmPDxaAbs
2448 case 27: //sprmPDyaAbs
2449 case NS_sprm::LN_PDyaAbs:
2450 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2451 break; // sprmPDyaAbs
2452 case NS_sprm::LN_PDxaWidth:
2453 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2454 break; // sprmPDxaWidth
2455 case NS_sprm::LN_PPc:
2456 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2457 break; // sprmPPc
2458 case NS_sprm::LN_PBrcTop10:
2459 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2460 break; // sprmPBrcTop10
2461 case NS_sprm::LN_PBrcLeft10:
2462 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2463 break; // sprmPBrcLeft10
2464 case NS_sprm::LN_PBrcBottom10:
2465 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2466 break; // sprmPBrcBottom10
2467 case NS_sprm::LN_PBrcRight10:
2468 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2469 break; // sprmPBrcRight10
2470 case NS_sprm::LN_PBrcBetween10:
2471 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2472 break; // sprmPBrcBetween10
2473 case NS_sprm::LN_PBrcBar10:
2474 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2475 break; // sprmPBrcBar10
2476 case NS_sprm::LN_PDxaFromText10:
2477 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2478 break; // sprmPDxaFromText10
2479 case NS_sprm::LN_PWr:
2480 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2481 break; // sprmPWr
2482
2483 case NS_ooxml::LN_CT_PrBase_pBdr: //paragraph border
2484 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
2485 resolveSprmProps(*this, rSprm);
2486 break;
2487 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
2488 case NS_sprm::LN_PBrcTop: // sprmPBrcTop
2489 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
2490 /* WRITERFILTERSTATUS: comment: page borders are no handled yet, conversion incomplete */
2491 case NS_sprm::LN_PBrcLeft: // sprmPBrcLeft
2492 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
2493 /* WRITERFILTERSTATUS: comment: page borders are no handled yet, conversion incomplete */
2494 case NS_sprm::LN_PBrcBottom: // sprmPBrcBottom
2495 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
2496 /* WRITERFILTERSTATUS: comment: page borders are no handled yet, conversion incomplete */
2497 case NS_sprm::LN_PBrcRight: // sprmPBrcRight
2498 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
2499 /* WRITERFILTERSTATUS: comment: page borders are no handled yet, conversion incomplete */
2500 case NS_sprm::LN_PBrcBetween: // sprmPBrcBetween
2501 /* WRITERFILTERSTATUS: done: 0, planned: 8, spent: 0 */
2502 /* WRITERFILTERSTATUS: comment: */
2503 {
2504 //in binary format the borders are directly provided in OOXML they are inside of properties
2505 if( IsOOXMLImport() )
2506 {
2507 writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps();
2508 if( pProperties.get())
2509 {
2510 BorderHandlerPtr pBorderHandler( new BorderHandler( true ) );
2511 pProperties->resolve(*pBorderHandler);
2512 PropertyIds eBorderId = PropertyIds( 0 );
2513 PropertyIds eBorderDistId = PropertyIds( 0 );
2514 switch( nSprmId )
2515 {
2516 case NS_sprm::LN_PBrcTop:
2517 /* WRITERFILTERSTATUS: */
2518 eBorderId = PROP_TOP_BORDER;
2519 eBorderDistId = PROP_TOP_BORDER_DISTANCE;
2520 break;
2521 case NS_sprm::LN_PBrcLeft:
2522 /* WRITERFILTERSTATUS: */
2523 eBorderId = PROP_LEFT_BORDER;
2524 eBorderDistId = PROP_LEFT_BORDER_DISTANCE;
2525 break;
2526 case NS_sprm::LN_PBrcBottom:
2527 /* WRITERFILTERSTATUS: */
2528 eBorderId = PROP_BOTTOM_BORDER ;
2529 eBorderDistId = PROP_BOTTOM_BORDER_DISTANCE;
2530 break;
2531 case NS_sprm::LN_PBrcRight:
2532 /* WRITERFILTERSTATUS: */
2533 eBorderId = PROP_RIGHT_BORDER;
2534 eBorderDistId = PROP_RIGHT_BORDER_DISTANCE ;
2535 break;
2536 case NS_sprm::LN_PBrcBetween:
2537 /* WRITERFILTERSTATUS: */
2538 //not supported
2539 break;
2540 default:;
2541 }
2542 if( eBorderId )
2543 rContext->Insert( eBorderId, true, uno::makeAny( pBorderHandler->getBorderLine()) , true);
2544 if(eBorderDistId)
2545 rContext->Insert(eBorderDistId, true, uno::makeAny( pBorderHandler->getLineDistance()), true);
2546 }
2547 }
2548 else
2549 {
2550 table::BorderLine aBorderLine;
2551 sal_Int32 nLineDistance = ConversionHelper::MakeBorderLine( nIntValue, aBorderLine );
2552 PropertyIds eBorderId = PROP_LEFT_BORDER;
2553 PropertyIds eBorderDistId = PROP_LEFT_BORDER_DISTANCE ;
2554 switch( nSprmId )
2555 {
2556 case NS_sprm::LN_PBrcBetween: // sprmPBrcBetween
2557 /* WRITERFILTERSTATUS: */
2558 OSL_ENSURE( false, "TODO: inner border is not handled");
2559 break;
2560 case NS_sprm::LN_PBrcLeft: // sprmPBrcLeft
2561 /* WRITERFILTERSTATUS: */
2562 eBorderId = PROP_LEFT_BORDER;
2563 eBorderDistId = PROP_LEFT_BORDER_DISTANCE ;
2564 break;
2565 case NS_sprm::LN_PBrcRight: // sprmPBrcRight
2566 /* WRITERFILTERSTATUS: */
2567 eBorderId = PROP_RIGHT_BORDER ;
2568 eBorderDistId = PROP_RIGHT_BORDER_DISTANCE ;
2569 break;
2570 case NS_sprm::LN_PBrcTop: // sprmPBrcTop
2571 /* WRITERFILTERSTATUS: */
2572 eBorderId = PROP_TOP_BORDER ;
2573 eBorderDistId = PROP_TOP_BORDER_DISTANCE;
2574 break;
2575 case NS_sprm::LN_PBrcBottom: // sprmPBrcBottom
2576 /* WRITERFILTERSTATUS: */
2577 default:
2578 eBorderId = PROP_BOTTOM_BORDER ;
2579 eBorderDistId = PROP_BOTTOM_BORDER_DISTANCE;
2580 }
2581 rContext->Insert(eBorderId, true, uno::makeAny( aBorderLine ));
2582 rContext->Insert(eBorderDistId, true, uno::makeAny( nLineDistance ));
2583 }
2584 }
2585 break;
2586 case NS_sprm::LN_PBorderTop:
2587 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2588 /* WRITERFILTERSTATUS: comment: probably _real_ border colors, unhandled */
2589 case NS_sprm::LN_PBorderLeft:
2590 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2591 /* WRITERFILTERSTATUS: comment: probably _real_ border colors, unhandled */
2592 case NS_sprm::LN_PBorderBottom:
2593 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2594 /* WRITERFILTERSTATUS: comment: probably _real_ border colors, unhandled */
2595 case NS_sprm::LN_PBorderRight:
2596 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2597 /* WRITERFILTERSTATUS: comment: probably _real_ border colors, unhandled */
2598 OSL_ENSURE( false, "TODO: border color definition");
2599 break;
2600 case NS_sprm::LN_PBrcBar:
2601 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2602 break; // sprmPBrcBar
2603
2604 case NS_sprm::LN_PFNoAutoHyph: // sprmPFNoAutoHyph
2605 rContext->Insert(PROP_PARA_IS_HYPHENATION, true, uno::makeAny( nIntValue != 0 ? false : true ));
2606 break;
2607
2608 case NS_sprm::LN_PWHeightAbs:
2609 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2610 break; // sprmPWHeightAbs
2611 case NS_sprm::LN_PDcs:
2612 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2613 break; // sprmPDcs
2614
2615 case NS_sprm::LN_PShd: // sprmPShd
2616 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 2 */
2617 {
2618 //contains fore color, back color and shadow percentage, results in a brush
2619 writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps();
2620 if( pProperties.get())
2621 {
2622 CellColorHandlerPtr pCellColorHandler( new CellColorHandler );
2623 pCellColorHandler->setParagraph();
2624 pProperties->resolve(*pCellColorHandler);
2625 rContext->insert( pCellColorHandler->getProperties(), true );
2626 }
2627 }
2628 break;
2629 case NS_sprm::LN_PDyaFromText:
2630 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2631 break; // sprmPDyaFromText
2632 case NS_sprm::LN_PDxaFromText:
2633 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2634 break; // sprmPDxaFromText
2635 case NS_sprm::LN_PFLocked:
2636 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2637 break; // sprmPFLocked
2638
2639 case NS_sprm::LN_PFWidowControl:
2640 case NS_ooxml::LN_CT_PPrBase_widowControl:
2641 {
2642 uno::Any aVal( uno::makeAny( sal_Int8(nIntValue != 0 ? 2 : 0 )));
2643 rContext->Insert( PROP_PARA_WIDOWS, true, aVal );
2644 rContext->Insert( PROP_PARA_ORPHANS, true, aVal );
2645 }
2646 break; // sprmPFWidowControl
2647
2648 case NS_sprm::LN_PRuler:
2649 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2650 break; // sprmPRuler
2651 case NS_sprm::LN_PFKinsoku:
2652 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2653 break; // sprmPFKinsoku
2654 case NS_sprm::LN_PFWordWrap:
2655 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2656 break; // sprmPFWordWrap
2657 case NS_sprm::LN_PFOverflowPunct: ; // sprmPFOverflowPunct - hanging punctuation
2658 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
2659 rContext->Insert(PROP_PARA_IS_HANGING_PUNCTUATION, true, uno::makeAny( nIntValue ? false : true ));
2660 break;
2661 case NS_sprm::LN_PFTopLinePunct:
2662 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2663 break; // sprmPFTopLinePunct
2664 case NS_sprm::LN_PFAutoSpaceDE:
2665 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2666 break; // sprmPFAutoSpaceDE
2667 case NS_sprm::LN_PFAutoSpaceDN:
2668 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2669 break; // sprmPFAutoSpaceDN
2670 case NS_sprm::LN_PWAlignFont:
2671 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2672 break; // sprmPWAlignFont
2673 case NS_sprm::LN_PFrameTextFlow:
2674 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2675 break; // sprmPFrameTextFlow
2676 case NS_sprm::LN_PISnapBaseLine:
2677 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2678 break; // sprmPISnapBaseLine
2679 case NS_sprm::LN_PAnld:
2680 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2681 break; // sprmPAnld
2682 case NS_sprm::LN_PPropRMark:
2683 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2684 break; // sprmPPropRMark
2685
2686 case NS_sprm::LN_POutLvl:
2687 {
2688 // - nIntValue == WW_OUTLINE_MAX --> no outline level
2689 // - WW_OUTLINE_MIN <= nIntValue < WW_OUTLINE_MAX --> outline level = nIntValue+1
2690 // - nIntValue > WW_OUTLINE_MAX are treated as no outline level
2691 const sal_Int16 nOutlineLevel = nIntValue >= WW_OUTLINE_MIN && nIntValue < WW_OUTLINE_MAX
2692 ? static_cast< sal_Int16 >(nIntValue+1)
2693 : 0;
2694 StyleSheetPropertyMap* pStyleSheetPropertyMap = NULL;
2695 if ( m_pImpl->IsStyleSheetImport() )
2696 {
2697 pStyleSheetPropertyMap = dynamic_cast< StyleSheetPropertyMap* >( rContext.get() );
2698 }
2699 if ( pStyleSheetPropertyMap != 0 )
2700 {
2701 pStyleSheetPropertyMap->SetOutlineLevel( nOutlineLevel );
2702 }
2703 else
2704 {
2705 rContext->Insert(PROP_OUTLINE_LEVEL, true, uno::makeAny ( nOutlineLevel ));
2706 }
2707 }
2708 break; // sprmPOutLvl
2709
2710 case NS_sprm::LN_PFBiDi:
2711 if ( nIntValue == 1 )
2712 {
2713 rContext->Insert(PROP_WRITING_MODE, false, uno::makeAny( text::WritingMode2::RL_TB ));
2714 rContext->Insert(PROP_PARA_ADJUST, false, uno::makeAny( style::ParagraphAdjust_RIGHT ));
2715 }
2716 break; // sprmPFBiDi
2717
2718 case NS_ooxml::LN_EG_SectPrContents_bidi:
2719 if ( nIntValue == 1 )
2720 {
2721 if ( pSectionContext != NULL )
2722 pSectionContext->Insert( PROP_WRITING_MODE, false, uno::makeAny( text::WritingMode2::RL_TB ) );
2723 }
2724 break;
2725
2726 case NS_sprm::LN_PFNumRMIns:
2727 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2728 break; // sprmPFNumRMIns
2729 case NS_sprm::LN_PCrLf:
2730 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2731 break; // sprmPCrLf
2732 case NS_sprm::LN_PNumRM:
2733 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2734 break; // sprmPNumRM
2735 case NS_sprm::LN_PHugePapx:
2736 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2737 break; // sprmPHugePapx
2738 case NS_sprm::LN_PFUsePgsuSettings:
2739 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2740 break; // sprmPFUsePgsuSettings
2741 case NS_sprm::LN_PFAdjustRight:
2742 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2743 break; // sprmPFAdjustRight
2744 case NS_sprm::LN_CFRMarkDel:
2745 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2746 break; // sprmCFRMarkDel
2747 case NS_sprm::LN_CFRMark:
2748 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2749 break; // sprmCFRMark
2750 case NS_sprm::LN_CFFldVanish:
2751 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2752 break; // sprmCFFldVanish
2753 case NS_sprm::LN_CFSpec: // sprmCFSpec
2754 break;
2755 case NS_sprm::LN_CPicLocation: // sprmCPicLocation
2756 //is being resolved on the tokenizer side
2757 break;
2758 case NS_sprm::LN_CIbstRMark:
2759 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2760 break; // sprmCIbstRMark
2761 case NS_sprm::LN_CDttmRMark:
2762 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2763 break; // sprmCDttmRMark
2764 case NS_sprm::LN_CFData:
2765 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2766 break; // sprmCFData
2767 case NS_sprm::LN_CIdslRMark:
2768 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2769 break; // sprmCIdslRMark
2770 case NS_sprm::LN_CChs:
2771 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2772 break; // sprmCChs
2773 case NS_sprm::LN_CSymbol: // sprmCSymbol
2774 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2775 resolveSprmProps(*this, rSprm); //resolves LN_FONT and LN_CHAR
2776 break;
2777 case NS_sprm::LN_CFOle2:
2778 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2779 break; // sprmCFOle2
2780 case NS_sprm::LN_CIdCharType:
2781 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2782 break; // sprmCIdCharType
2783 case NS_sprm::LN_CHighlight:
2784 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
2785 {
2786 sal_Int32 nColor = 0;
2787 if(true ==( mbIsHighlightSet = getColorFromIndex(nIntValue, nColor)))
2788 rContext->Insert(PROP_CHAR_BACK_COLOR, true, uno::makeAny( nColor ));
2789 else if (mnBackgroundColor)
2790 rContext->Insert(PROP_CHAR_BACK_COLOR, true, uno::makeAny( mnBackgroundColor ));
2791 }
2792 break; // sprmCHighlight
2793 case NS_sprm::LN_CObjLocation:
2794 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2795 break; // sprmCObjLocation
2796 case NS_sprm::LN_CFFtcAsciSymb:
2797 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2798 break; // sprmCFFtcAsciSymb
2799 case NS_sprm::LN_CIstd:
2800 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2801 break; // sprmCIstd
2802 case NS_sprm::LN_CIstdPermute:
2803 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2804 break; // sprmCIstdPermute
2805 case NS_sprm::LN_CDefault:
2806 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2807 break; // sprmCDefault
2808 case NS_sprm::LN_CPlain:
2809 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2810 break; // sprmCPlain
2811 case NS_sprm::LN_CKcd:
2812 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
2813 rContext->Insert(PROP_CHAR_EMPHASIS, true, uno::makeAny ( getEmphasisValue (nIntValue)));
2814 break; // sprmCKcd
2815
2816 case NS_sprm::LN_CFEmboss:// sprmCFEmboss
2817 case 60:// sprmCFBold
2818 case NS_sprm::LN_CFBoldBi:// sprmCFBoldBi (offset 0x27 to normal bold)
2819 case NS_sprm::LN_CFItalicBi:// sprmCFItalicBi (offset 0x27 to normal italic)
2820 case NS_sprm::LN_CFBold: //sprmCFBold
2821 case 61: /*sprmCFItalic*/
2822 case NS_sprm::LN_CFItalic: //sprmCFItalic
2823 case NS_sprm::LN_CFStrike: //sprmCFStrike
2824 case NS_sprm::LN_CFOutline: //sprmCFOutline
2825 case NS_sprm::LN_CFShadow: //sprmCFShadow
2826 case NS_sprm::LN_CFSmallCaps: //sprmCFSmallCaps
2827 case NS_sprm::LN_CFCaps: //sprmCFCaps
2828 case NS_sprm::LN_CFVanish: //sprmCFVanish
2829 case NS_sprm::LN_CFDStrike: // sprmCFDStrike
2830 {
2831 PropertyIds ePropertyId = PROP_CHAR_WEIGHT; //initialized to prevent warning!
2832 switch( nSprmId )
2833 {
2834 case 60:// sprmCFBold
2835 case NS_sprm::LN_CFBold: /*sprmCFBold*/
2836 ePropertyId = PROP_CHAR_WEIGHT;
2837 break;
2838 case NS_sprm::LN_CFBoldBi: // sprmCFBoldBi
2839 ePropertyId = PROP_CHAR_WEIGHT_COMPLEX;
2840 break;
2841
2842 case 61: /*sprmCFItalic*/
2843 case NS_sprm::LN_CFItalicBi: // sprmCFItalicBi
2844 case NS_sprm::LN_CFItalic: /*sprmCFItalic*/
2845 ePropertyId = nSprmId == 0x836 ? PROP_CHAR_POSTURE : PROP_CHAR_POSTURE_COMPLEX;
2846 break;
2847
2848 case NS_sprm::LN_CFStrike: /*sprmCFStrike*/
2849 case NS_sprm::LN_CFDStrike : /*sprmCFDStrike double strike through*/
2850 ePropertyId = PROP_CHAR_STRIKEOUT;
2851 break;
2852
2853 case NS_sprm::LN_CFOutline: /*sprmCFOutline*/
2854 ePropertyId = PROP_CHAR_CONTOURED;
2855 break;
2856
2857 case NS_sprm::LN_CFShadow: /*sprmCFShadow*/
2858 ePropertyId = PROP_CHAR_SHADOWED;
2859 break;
2860
2861 case NS_sprm::LN_CFSmallCaps: /*sprmCFSmallCaps*/
2862 case NS_sprm::LN_CFCaps: /*sprmCFCaps*/
2863 ePropertyId = PROP_CHAR_CASE_MAP;
2864 break;
2865
2866 case NS_sprm::LN_CFVanish: /*sprmCFVanish*/
2867 ePropertyId = PROP_CHAR_HIDDEN;
2868 break;
2869
2870 case NS_sprm::LN_CFEmboss: /*sprmCFEmboss*/
2871 ePropertyId = PROP_CHAR_RELIEF;
2872 break;
2873 }
2874 //expected: 0,1,128,129
2875 if(nIntValue != 128) //inherited from paragraph - ignore
2876 {
2877 if( nIntValue == 129) //inverted style sheet value
2878 {
2879 //get value from style sheet and invert it
2880 sal_Int16 nStyleValue = 0;
2881 double fDoubleValue = 0;
2882 uno::Any aStyleVal = m_pImpl->GetPropertyFromStyleSheet(ePropertyId);
2883 if( !aStyleVal.hasValue() )
2884 {
2885 nIntValue = 0x83a == nSprmId ?
2886 4 : 1;
2887 }
2888 else if(aStyleVal.getValueTypeClass() == uno::TypeClass_FLOAT )
2889 {
2890 //only in case of awt::FontWeight
2891 aStyleVal >>= fDoubleValue;
2892 nIntValue = fDoubleValue > 100. ? 0 : 1;
2893 }
2894 else if((aStyleVal >>= nStyleValue) ||
2895 (nStyleValue = (sal_Int16)comphelper::getEnumAsINT32(aStyleVal)) >= 0 )
2896 {
2897 nIntValue = 0x83a == nSprmId ?
2898 nStyleValue ? 0 : 4 :
2899 nStyleValue ? 0 : 1;
2900 }
2901 else
2902 {
2903 OSL_ENSURE( false, "what type was it");
2904 }
2905 }
2906
2907 switch( nSprmId )
2908 {
2909 case 60:/*sprmCFBold*/
2910 case NS_sprm::LN_CFBold: /*sprmCFBold*/
2911 case NS_sprm::LN_CFBoldBi: // sprmCFBoldBi
2912 {
2913 uno::Any aBold( uno::makeAny( nIntValue != 0 ? awt::FontWeight::BOLD : awt::FontWeight::NORMAL ) );
2914
2915 rContext->Insert(ePropertyId, true, aBold );
2916 if( nSprmId != NS_sprm::LN_CFBoldBi ) // sprmCFBoldBi
2917 rContext->Insert(PROP_CHAR_WEIGHT_ASIAN, true, aBold );
2918 }
2919 break;
2920
2921 case 61: /*sprmCFItalic*/
2922 case NS_sprm::LN_CFItalic: /*sprmCFItalic*/
2923 case NS_sprm::LN_CFItalicBi: // sprmCFItalicBi
2924 {
2925 uno::Any aPosture( uno::makeAny( nIntValue != 0 ? awt::FontSlant_ITALIC : awt::FontSlant_NONE ) );
2926 rContext->Insert( ePropertyId, true, aPosture );
2927 if( nSprmId != NS_sprm::LN_CFItalicBi ) // sprmCFItalicBi
2928 rContext->Insert(PROP_CHAR_POSTURE_ASIAN, true, aPosture );
2929 }
2930 break;
2931
2932 case NS_sprm::LN_CFStrike: /*sprmCFStrike*/
2933 rContext->Insert(ePropertyId, true,
2934 uno::makeAny( nIntValue != 0 ? awt::FontStrikeout::SINGLE : awt::FontStrikeout::NONE ) );
2935 break;
2936
2937 case NS_sprm::LN_CFDStrike : /*sprmCFDStrike double strike through*/
2938 rContext->Insert(ePropertyId, true,
2939 uno::makeAny( nIntValue != 0 ? awt::FontStrikeout::DOUBLE : awt::FontStrikeout::NONE ) );
2940 break;
2941
2942 case NS_sprm::LN_CFOutline: /*sprmCFOutline*/
2943 case NS_sprm::LN_CFShadow: /*sprmCFShadow*/
2944 case NS_sprm::LN_CFVanish: /*sprmCFVanish*/
2945 rContext->Insert(ePropertyId, true, uno::makeAny( nIntValue != 0 ? true : false ));
2946 break;
2947
2948 case NS_sprm::LN_CFSmallCaps: /*sprmCFSmallCaps*/
2949 rContext->Insert(ePropertyId, true,
2950 uno::makeAny( nIntValue != 0 ? style::CaseMap::SMALLCAPS : style::CaseMap::NONE));
2951 break;
2952
2953 case NS_sprm::LN_CFCaps: /*sprmCFCaps*/
2954 rContext->Insert(ePropertyId, true,
2955 uno::makeAny( nIntValue != 0 ? style::CaseMap::UPPERCASE : style::CaseMap::NONE));
2956 break;
2957
2958 case NS_sprm::LN_CFEmboss: /*sprmCFEmboss*/
2959 rContext->Insert(ePropertyId, true,
2960 uno::makeAny( nIntValue != 0 ? awt::FontRelief::EMBOSSED : awt::FontRelief::NONE ));
2961 break;
2962
2963 }
2964 }
2965 }
2966 break;
2967 case NS_sprm::LN_CFtcDefault:
2968 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2969 break; // sprmCFtcDefault
2970 case NS_sprm::LN_CKul: // sprmCKul
2971 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
2972 {
2973 // Parameter: 0 = none, 1 = single, 2 = by Word,
2974 // 3 = double, 4 = dotted, 5 = hidden
2975 // 6 = thick, 7 = dash, 8 = dot(not used)
2976 // 9 = dotdash 10 = dotdotdash 11 = wave
2977 handleUnderlineType(nIntValue, rContext);
2978 }
2979 break;
2980 case NS_sprm::LN_CSizePos:
2981 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2982 break; // sprmCSizePos
2983 case NS_sprm::LN_CLid:
2984 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2985 break; // sprmCLid
2986 case NS_sprm::LN_CIco:
2987 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
2988 {
2989 sal_Int32 nColor = 0;
2990 if (getColorFromIndex(nIntValue, nColor))
2991 rContext->Insert(PROP_CHAR_COLOR, true, uno::makeAny( nColor ) );
2992 }
2993 break; // sprmCIco
2994 case NS_sprm::LN_CHpsBi: // sprmCHpsBi
2995 case NS_sprm::LN_CHps: // sprmCHps
2996 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
2997 {
2998 //multiples of half points (12pt == 24)
2999 double fVal = double(nIntValue) / 2.;
3000 uno::Any aVal = uno::makeAny( fVal );
3001 if( NS_sprm::LN_CHpsBi == nSprmId )
3002 rContext->Insert( PROP_CHAR_HEIGHT_COMPLEX, true, aVal );
3003 else
3004 {
3005 //Asian get the same value as Western
3006 rContext->Insert( PROP_CHAR_HEIGHT, true, aVal );
3007 rContext->Insert( PROP_CHAR_HEIGHT_ASIAN, true, aVal );
3008 }
3009 }
3010 break;
3011 case NS_sprm::LN_CHpsInc:
3012 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3013 break; // sprmCHpsInc
3014
3015 case NS_sprm::LN_CHpsPos:
3016 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3017 {
3018 // FIXME: ww8 filter in ww8par6.cxx has a Read_SubSuperProp function
3019 // that counts the escapement from this value and font size. So it will be
3020 // on our TODO list
3021 sal_Int16 nEscapement = 0;
3022 sal_Int8 nProp = 100;
3023 if (nIntValue < 0)
3024 nEscapement = -58;
3025 else if (nIntValue > 0)
3026 nEscapement = 58;
3027 else /* (nIntValue == 0) */
3028 nProp = 0;
3029 rContext->Insert(PROP_CHAR_ESCAPEMENT, true, uno::makeAny( nEscapement ) );
3030 rContext->Insert(PROP_CHAR_ESCAPEMENT_HEIGHT, true, uno::makeAny( nProp ) );
3031 }
3032 break; // sprmCHpsPos
3033
3034 case NS_sprm::LN_CHpsPosAdj:
3035 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3036 break; // sprmCHpsPosAdj
3037 case NS_sprm::LN_CMajority:
3038 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3039 break; // sprmCMajority
3040 case NS_sprm::LN_CIss: // sprmCIss
3041 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
3042 {
3043 //sub/super script 1: super, 2: sub, 0: normal
3044 sal_Int16 nEscapement = 0;
3045 sal_Int8 nProp = 58;
3046 switch(nIntValue)
3047 {
3048 case 1: //super
3049 nEscapement = 101;
3050 break;
3051 case 2: //sub
3052 nEscapement = -101;
3053 break;
3054 case 0: nProp = 0;break; //none
3055 }
3056 rContext->Insert(PROP_CHAR_ESCAPEMENT, true, uno::makeAny( nEscapement ) );
3057 rContext->Insert(PROP_CHAR_ESCAPEMENT_HEIGHT, true, uno::makeAny( nProp ) );
3058 }
3059 break;
3060 case NS_sprm::LN_CHpsNew50:
3061 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3062 break; // sprmCHpsNew50
3063 case NS_sprm::LN_CHpsInc1:
3064 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3065 break; // sprmCHpsInc1
3066 case 71 : //"sprmCDxaSpace"
3067 case 96 : //"sprmCDxaSpace"
3068 case NS_sprm::LN_CDxaSpace: // sprmCDxaSpace
3069 {
3070 /* WRITERFILTERSTATUS: done: 50, planned: 2, spent: 0 */
3071 //Kerning half point values
3072 //TODO: there are two kerning values -
3073 // in ww8par6.cxx NS_sprm::LN_CHpsKern is used as boolean AutoKerning
3074 sal_Int16 nResult = static_cast<sal_Int16>(ConversionHelper::convertTwipToMM100(nIntValue));
3075 if (m_pImpl->IsInComments())
3076 {
3077 nResult = static_cast<sal_Int16>(nIntValue);
3078 }
3079 rContext->Insert(PROP_CHAR_CHAR_KERNING, true, uno::makeAny(nResult));
3080 }
3081 break;
3082
3083 case NS_sprm::LN_CHpsKern: // sprmCHpsKern auto kerning is bound to a minimum font size in Word - but not in Writer :-(
3084 rContext->Insert(PROP_CHAR_AUTO_KERNING, true, uno::makeAny( true ) );
3085 break;
3086
3087 case NS_sprm::LN_CMajority50:
3088 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3089 break; // sprmCMajority50
3090 case NS_sprm::LN_CHpsMul:
3091 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3092 break; // sprmCHpsMul
3093 case NS_sprm::LN_CYsri:
3094 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3095 break; // sprmCYsri
3096 case NS_sprm::LN_CRgFtc0: // sprmCRgFtc0 //ascii font index
3097 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
3098 case NS_sprm::LN_CRgFtc1: // sprmCRgFtc1 //Asian font index
3099 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
3100 case NS_sprm::LN_CRgFtc2: // sprmCRgFtc2 //CTL font index
3101 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
3102 case NS_sprm::LN_CFtcBi: // sprmCFtcBi //font index of a CTL font
3103 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
3104 {
3105 FontTablePtr pFontTable = m_pImpl->GetFontTable();
3106 if(nIntValue >= 0 && pFontTable->size() > sal_uInt32(nIntValue))
3107 {
3108 PropertyIds eFontName = PROP_CHAR_FONT_NAME;
3109 PropertyIds eFontStyle = PROP_CHAR_FONT_STYLE;
3110 PropertyIds eFontFamily = PROP_CHAR_FONT_FAMILY;
3111 PropertyIds eFontCharSet = PROP_CHAR_FONT_CHAR_SET;
3112 PropertyIds eFontPitch = PROP_CHAR_FONT_PITCH;
3113 switch(nSprmId)
3114 {
3115 case NS_sprm::LN_CRgFtc0:
3116 //already initialized
3117 break;
3118 case NS_sprm::LN_CRgFtc1:
3119 eFontName = PROP_CHAR_FONT_NAME_ASIAN;
3120 eFontStyle = PROP_CHAR_FONT_STYLE_ASIAN;
3121 eFontFamily = PROP_CHAR_FONT_FAMILY_ASIAN;
3122 eFontCharSet = PROP_CHAR_FONT_CHAR_SET_ASIAN;
3123 eFontPitch = PROP_CHAR_FONT_PITCH_ASIAN;
3124 break;
3125 case NS_sprm::LN_CRgFtc2:
3126 case NS_sprm::LN_CFtcBi:
3127 eFontName = PROP_CHAR_FONT_NAME_COMPLEX;
3128 eFontStyle = PROP_CHAR_FONT_STYLE_COMPLEX;
3129 eFontFamily = PROP_CHAR_FONT_FAMILY_COMPLEX;
3130 eFontCharSet = PROP_CHAR_FONT_CHAR_SET_COMPLEX;
3131 eFontPitch = PROP_CHAR_FONT_PITCH_COMPLEX;
3132 break;
3133 }
3134 const FontEntry::Pointer_t pFontEntry(pFontTable->getFontEntry(sal_uInt32(nIntValue)));
3135 rContext->Insert(eFontName, true, uno::makeAny( pFontEntry->sFontName ));
3136 // rContext->Insert(eFontStyle, uno::makeAny( pFontEntry-> ));
3137 // rContext->Insert(eFontFamily, uno::makeAny( pFontEntry-> ));
3138 rContext->Insert(eFontCharSet, true, uno::makeAny( (sal_Int16)pFontEntry->nTextEncoding ));
3139 rContext->Insert(eFontPitch, true, uno::makeAny( pFontEntry->nPitchRequest ));
3140 }
3141 }
3142 break;
3143
3144 case NS_sprm::LN_CCharScale: // sprmCCharScale
3145 rContext->Insert( PROP_CHAR_SCALE_WIDTH, true, uno::makeAny( sal_Int16(nIntValue) ));
3146 break;
3147
3148 case NS_sprm::LN_CFImprint: // sprmCFImprint 1 or 0
3149 // FontRelief: NONE, EMBOSSED, ENGRAVED
3150 rContext->Insert(PROP_CHAR_RELIEF, true,
3151 uno::makeAny( nIntValue != 0 ? awt::FontRelief::ENGRAVED : awt::FontRelief::NONE ));
3152 break;
3153
3154 case NS_sprm::LN_CFObj:
3155 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3156 break; // sprmCFObj
3157 case NS_sprm::LN_CPropRMark:
3158 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3159 break; // sprmCPropRMark
3160 case NS_sprm::LN_CSfxText:
3161 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
3162 // The file-format has many character animations. We have only
3163 // one, so we use it always. Suboptimal solution though.
3164 if (nIntValue)
3165 rContext->Insert(PROP_CHAR_FLASH, true, uno::makeAny( true ));
3166 else
3167 rContext->Insert(PROP_CHAR_FLASH, true, uno::makeAny( false ));
3168 break; // sprmCSfxText
3169 case NS_sprm::LN_CFBiDi:
3170 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3171 break; // sprmCFBiDi
3172 case NS_sprm::LN_CFDiacColor:
3173 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3174 break; // sprmCFDiacColor
3175 case NS_sprm::LN_CIcoBi:
3176 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3177 break; // sprmCIcoBi
3178 case NS_sprm::LN_CDispFldRMark:
3179 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3180 break; // sprmCDispFldRMark
3181 case NS_sprm::LN_CIbstRMarkDel:
3182 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3183 break; // sprmCIbstRMarkDel
3184 case NS_sprm::LN_CDttmRMarkDel:
3185 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3186 break; // sprmCDttmRMarkDel
3187 case NS_sprm::LN_CBrc:
3188 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3189 break; // sprmCBrc
3190 case NS_sprm::LN_CShd:
3191 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
3192 break; // sprmCShd
3193 case NS_sprm::LN_CIdslRMarkDel:
3194 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3195 break; // sprmCIdslRMarkDel
3196 case NS_sprm::LN_CFUsePgsuSettings:
3197 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3198 break; // sprmCFUsePgsuSettings
3199 case NS_sprm::LN_CCpg:
3200 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3201 break; // sprmCCpg
3202 case NS_sprm::LN_CLidBi: // sprmCLidBi language complex
3203 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
3204 case NS_sprm::LN_CRgLid0_80: //sprmCRgLid0_80
3205 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 1 */
3206 //undocumented but interpreted as western language
3207 case NS_sprm::LN_CRgLid0: // sprmCRgLid0 language Western
3208 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
3209 case NS_sprm::LN_CRgLid1: // sprmCRgLid1 language Asian
3210 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
3211 {
3212 lang::Locale aLocale;
3213 MsLangId::convertLanguageToLocale( (LanguageType)nIntValue, aLocale );
3214 rContext->Insert(NS_sprm::LN_CRgLid0 == nSprmId ? PROP_CHAR_LOCALE :
3215 NS_sprm::LN_CRgLid1 == nSprmId ? PROP_CHAR_LOCALE_ASIAN : PROP_CHAR_LOCALE_COMPLEX,
3216 true,
3217 uno::makeAny( aLocale ) );
3218 }
3219 break;
3220
3221 case NS_sprm::LN_CIdctHint: // sprmCIdctHint
3222 //list table - text offset???
3223 break;
3224 case NS_sprm::LN_PicBrcl:
3225 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3226 break; // sprmPicBrcl
3227 case NS_sprm::LN_PicScale:
3228 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3229 break; // sprmPicScale
3230 case NS_sprm::LN_PicBrcTop:
3231 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3232 break; // sprmPicBrcTop
3233 case NS_sprm::LN_PicBrcLeft:
3234 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3235 break; // sprmPicBrcLeft
3236 case NS_sprm::LN_PicBrcBottom:
3237 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3238 break; // sprmPicBrcBoConversionHelper::convertTwipToMM100ttom
3239 case NS_sprm::LN_PicBrcRight:
3240 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3241 break; // sprmPicBrcRight
3242 case NS_sprm::LN_ScnsPgn:
3243 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3244 break; // sprmScnsPgn
3245 case NS_sprm::LN_SiHeadingPgn:
3246 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3247 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3248 if(pSectionContext)
3249 pSectionContext->SetEvenlySpaced( nIntValue > 0 );
3250
3251 break; // sprmSiHeadingPgn
3252 case NS_sprm::LN_SOlstAnm:
3253 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3254 break; // sprmSOlstAnm
3255 case 136:
3256 case NS_sprm::LN_SDxaColWidth: // sprmSDxaColWidth
3257 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3258 // contains the twip width of the column as 3-byte-code
3259 // the lowet byte contains the index
3260 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3261 if(pSectionContext)
3262 pSectionContext->AppendColumnWidth( ConversionHelper::convertTwipToMM100( (nIntValue & 0xffff00) >> 8 ));
3263 break;
3264 case NS_sprm::LN_SDxaColSpacing: // sprmSDxaColSpacing
3265 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3266 // the lowet byte contains the index
3267 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3268 if(pSectionContext)
3269 pSectionContext->AppendColumnSpacing( ConversionHelper::convertTwipToMM100( (nIntValue & 0xffff00) >> 8 ));
3270 break;
3271 case 138:
3272 case NS_sprm::LN_SFEvenlySpaced:
3273 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3274 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3275 if(pSectionContext)
3276 pSectionContext->SetEvenlySpaced( nIntValue > 0 );
3277 break; // sprmSFEvenlySpaced
3278 case NS_sprm::LN_SFProtected: // sprmSFProtected
3279 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3280 //todo: missing feature - unlocked sections in protected documents
3281 break;
3282 case NS_sprm::LN_SDmBinFirst: // sprmSDmBinFirst
3283 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
3284 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3285 if(pSectionContext)
3286 pSectionContext->SetFirstPaperBin(nIntValue);
3287 break;
3288 case NS_sprm::LN_SDmBinOther: // sprmSDmBinOther
3289 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
3290 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3291 if(pSectionContext)
3292 pSectionContext->SetPaperBin( nIntValue );
3293 break;
3294 case NS_sprm::LN_SBkc: // sprmSBkc
3295 /* WRITERFILTERSTATUS: done: 50, planned: 2, spent: 0 */
3296 /* break type
3297 0 - No break
3298 1 - New Column
3299 2 - New page
3300 3 - Even page
3301 4 - odd page
3302 */
3303 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3304 if(pSectionContext)
3305 pSectionContext->SetBreakType( nIntValue );
3306 break;
3307 case 143:
3308 case NS_sprm::LN_SFTitlePage: // sprmSFTitlePage
3309 case NS_ooxml::LN_EG_SectPrContents_titlePg:
3310 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
3311 {
3312 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3313 if(pSectionContext)
3314 pSectionContext->SetTitlePage( nIntValue > 0 ? true : false );//section has title page
3315 }
3316 break;
3317 case 144:
3318 case NS_sprm::LN_SCcolumns: // sprmSCcolumns
3319 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
3320 //no of columns - 1
3321 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3322 if(pSectionContext)
3323 pSectionContext->SetColumnCount( (sal_Int16) nIntValue );
3324 break;
3325 case 145:
3326 case NS_sprm::LN_SDxaColumns: // sprmSDxaColumns
3327 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
3328 //column distance - default 708 twip
3329 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3330 if(pSectionContext)
3331 pSectionContext->SetColumnDistance( ConversionHelper::convertTwipToMM100( nIntValue ) );
3332 break;
3333 case NS_sprm::LN_SFAutoPgn:
3334 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3335 break; // sprmSFAutoPgn
3336 case 147:
3337 case NS_sprm::LN_SNfcPgn: // sprmSNfcPgn
3338 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
3339 //page numbering 0 - Arab, 1 - ROMAN, 2 - roman, 3 - ABC, 4 abc
3340 sal_Int16 nNumbering;
3341 switch( nIntValue )
3342 {
3343 case 1: nNumbering = style::NumberingType::ROMAN_UPPER;
3344 case 2: nNumbering = style::NumberingType::ROMAN_LOWER;
3345 case 3: nNumbering = style::NumberingType::CHARS_UPPER_LETTER;
3346 case 4: nNumbering = style::NumberingType::CHARS_LOWER_LETTER;
3347 case 0:
3348 default:
3349 nNumbering = style::NumberingType::ARABIC;
3350 }
3351 rContext->Insert( PROP_NUMBERING_TYPE, false, uno::makeAny( nNumbering ) );
3352 break;
3353 case NS_sprm::LN_SDyaPgn:
3354 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3355 break; // sprmSDyaPgn
3356 case NS_sprm::LN_SDxaPgn:
3357 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3358 break; // sprmSDxaPgn
3359 case 150:
3360 case NS_sprm::LN_SFPgnRestart: // sprmSFPgnRestart
3361 {
3362 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
3363 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3364 if(pSectionContext)
3365 pSectionContext->SetPageNoRestart( nIntValue > 0 );
3366 }
3367 break;
3368 case NS_sprm::LN_SFEndnote:
3369 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3370 break; // sprmSFEndnote
3371 case 154:
3372 case NS_sprm::LN_SNLnnMod:// sprmSNLnnMod
3373 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
3374 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3375 if( pSectionContext )
3376 pSectionContext->SetLnnMod( nIntValue );
3377 break;
3378 case 155:
3379 case NS_sprm::LN_SDxaLnn: // sprmSDxaLnn
3380 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3381 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3382 if( pSectionContext )
3383 pSectionContext->SetdxaLnn( nIntValue );
3384 break;
3385 case 152:
3386 case NS_sprm::LN_SLnc:// sprmSLnc
3387 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3388 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3389 if( pSectionContext )
3390 pSectionContext->SetLnc( nIntValue );
3391 break;
3392 case 160:
3393 case NS_sprm::LN_SLnnMin: // sprmSLnnMin
3394 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
3395 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3396 if( pSectionContext )
3397 pSectionContext->SetLnnMin( nIntValue );
3398 break;
3399
3400 case NS_sprm::LN_SGprfIhdt:
3401 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3402 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3403 //flags about header/footer sharing and footnotes?
3404 /* ww8scan.hxx:
3405 * WW8_HEADER_EVEN = 0x01, WW8_HEADER_ODD = 0x02, WW8_FOOTER_EVEN = 0x04,
3406 * WW8_FOOTER_ODD = 0x08, WW8_HEADER_FIRST = 0x10, WW8_FOOTER_FIRST = 0x20
3407 */
3408
3409 // if(pSectionContext)
3410 break; // sprmSGprfIhdt
3411 case NS_sprm::LN_SDyaHdrTop: // sprmSDyaHdrTop
3412 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3413 // default 720 twip
3414 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3415 if(pSectionContext)
3416 pSectionContext->SetHeaderTop( ConversionHelper::convertTwipToMM100( nIntValue ));
3417 break;
3418 case NS_sprm::LN_SDyaHdrBottom: // sprmSDyaHdrBottom
3419 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3420 // default 720 twip
3421 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3422 if(pSectionContext)
3423 pSectionContext->SetHeaderBottom( ConversionHelper::convertTwipToMM100( nIntValue ) );
3424 break;
3425 case 158:
3426 case NS_sprm::LN_SLBetween: // sprmSLBetween
3427 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3428 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3429 if(pSectionContext)
3430 pSectionContext->SetSeparatorLine( nIntValue > 0 );
3431 break;
3432 case NS_sprm::LN_SVjc:
3433 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
3434 break; // sprmSVjc
3435 case 161:
3436 case NS_sprm::LN_SPgnStart: // sprmSPgnStart
3437 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3438 //page number
3439 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3440 if(pSectionContext)
3441 pSectionContext->SetPageNumber( nIntValue );
3442 break;
3443 case 162:
3444 case NS_sprm::LN_SBOrientation:
3445 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3446 //todo: the old filter assumed that a value of 2 points to double-pages layout
3447 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3448 if(pSectionContext)
3449 pSectionContext->SetLandscape( nIntValue > 0 );
3450 rContext->Insert( PROP_IS_LANDSCAPE , false, uno::makeAny( nIntValue > 0 ));
3451 break; // sprmSBOrientation
3452 case NS_sprm::LN_SBCustomize:
3453 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
3454 break; // sprmSBCustomize
3455 case 165:
3456 case NS_sprm::LN_SYaPage: // sprmSYaPage
3457 {
3458 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3459 //page height, rounded to default values, default: 0x3dc0 twip
3460 sal_Int32 nHeight = ConversionHelper::convertTwipToMM100( nIntValue );
3461 rContext->Insert( PROP_HEIGHT, false, uno::makeAny( PaperInfo::sloppyFitPageDimension( nHeight ) ) );
3462 }
3463 break;
3464 case NS_sprm::LN_SXaPage: // sprmSXaPage
3465 {
3466 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3467 //page width, rounded to default values, default 0x2fd0 twip
3468 sal_Int32 nWidth = ConversionHelper::convertTwipToMM100( nIntValue );
3469 rContext->Insert( PROP_WIDTH, false, uno::makeAny( PaperInfo::sloppyFitPageDimension( nWidth ) ) );
3470 }
3471 break;
3472 case 166:
3473 case NS_sprm::LN_SDxaLeft: // sprmSDxaLeft
3474 {
3475 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3476 //left page margin default 0x708 twip
3477 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3478 sal_Int32 nConverted = ConversionHelper::convertTwipToMM100( nIntValue );
3479 if(pSectionContext)
3480 pSectionContext->SetLeftMargin( nConverted );
3481 rContext->Insert( PROP_LEFT_MARGIN, false, uno::makeAny( nConverted ));
3482 }
3483 break;
3484 case 167:
3485 case NS_sprm::LN_SDxaRight: // sprmSDxaRight
3486 {
3487 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3488 //right page margin default 0x708 twip
3489 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3490 sal_Int32 nConverted = ConversionHelper::convertTwipToMM100( nIntValue );
3491 if(pSectionContext)
3492 pSectionContext->SetRightMargin( nConverted );
3493 rContext->Insert( PROP_RIGHT_MARGIN, false, uno::makeAny( nConverted ));
3494 }
3495 break;
3496 case 168:
3497 case NS_sprm::LN_SDyaTop: // sprmSDyaTop
3498 {
3499 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3500 //top page margin default 1440 twip
3501 //todo: check cast of SVBT16
3502 sal_Int32 nConverted = ConversionHelper::convertTwipToMM100( static_cast< sal_Int16 >( nIntValue ) );
3503 rContext->Insert( PROP_TOP_MARGIN, false, uno::makeAny( nConverted ) );
3504 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3505 if(pSectionContext)
3506 pSectionContext->SetTopMargin( nConverted );
3507 }
3508 break;
3509 case 169:
3510 case NS_sprm::LN_SDyaBottom: // sprmSDyaBottom
3511 {
3512 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3513 //bottom page margin default 1440 twip
3514 //todo: check cast of SVBT16
3515 sal_Int32 nConverted = ConversionHelper::convertTwipToMM100( static_cast< sal_Int16 >( nIntValue ) );
3516 rContext->Insert( PROP_BOTTOM_MARGIN, false, uno::makeAny( nConverted) );
3517 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3518 if(pSectionContext)
3519 pSectionContext->SetBottomMargin( nConverted );
3520 }
3521 break;
3522 case 170:
3523 case NS_sprm::LN_SDzaGutter: // sprmSDzaGutter
3524 {
3525 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
3526 // gutter is added to one of the margins of a section depending on RTL, can be placed on top either
3527 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3528 if(pSectionContext)
3529 {
3530 pSectionContext->SetDzaGutter( ConversionHelper::convertTwipToMM100( nIntValue ) );
3531 }
3532 }
3533 break;
3534 case NS_sprm::LN_SDmPaperReq: // sprmSDmPaperReq
3535 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
3536 //paper code - no handled in old filter
3537 break;
3538 case NS_sprm::LN_SPropRMark:
3539 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3540 break; // sprmSPropRMark
3541 case NS_sprm::LN_SFBiDi:// sprmSFBiDi
3542 {
3543 /* WRITERFILTERSTATUS: done: 50, planned: 2, spent: 0 */
3544 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3545 if(pSectionContext)
3546 pSectionContext->SetSFBiDi( nIntValue > 0 );
3547 }
3548 break;
3549 case NS_sprm::LN_SFFacingCol:
3550 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3551 break; // sprmSFFacingCol
3552 case NS_sprm::LN_SFRTLGutter: // sprmSFRTLGutter
3553 {
3554 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3555 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3556 if(pSectionContext)
3557 pSectionContext->SetGutterRTL( nIntValue > 0 );
3558 }
3559 break;
3560 case NS_sprm::LN_SBrcTop: // sprmSBrcTop
3561 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3562 case NS_sprm::LN_SBrcLeft: // sprmSBrcLeft
3563 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3564 case NS_sprm::LN_SBrcBottom: // sprmSBrcBottom
3565 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3566 case NS_sprm::LN_SBrcRight: // sprmSBrcRight
3567 /* WRITERFILTERSTATUS: Sectiondone: 100, planned: 0.5, spent: 0 */
3568 {
3569 table::BorderLine aBorderLine;
3570 sal_Int32 nLineDistance = ConversionHelper::MakeBorderLine( nIntValue, aBorderLine );
3571 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3572 if(pSectionContext)
3573 {
3574 static const BorderPosition aPositions[4] =
3575 {
3576 BORDER_TOP,
3577 BORDER_LEFT,
3578 BORDER_BOTTOM,
3579 BORDER_RIGHT
3580 };
3581 pSectionContext->SetBorder( aPositions[nSprmId - NS_sprm::LN_SBrcTop], nLineDistance, aBorderLine );
3582 }
3583 }
3584 break;
3585
3586 case NS_sprm::LN_SPgbProp: // sprmSPgbProp
3587 {
3588 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3589 if(pSectionContext)
3590 {
3591 pSectionContext->ApplyBorderToPageStyles( m_pImpl->GetPageStyles(), m_pImpl->GetTextFactory(), nIntValue );
3592 }
3593 }
3594 break;
3595 case NS_sprm::LN_SDxtCharSpace:
3596 {
3597 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
3598 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3599 if(pSectionContext)
3600 {
3601 pSectionContext->SetDxtCharSpace( nIntValue );
3602 }
3603 }
3604 break; // sprmSDxtCharSpace
3605 case NS_sprm::LN_SDyaLinePitch: // sprmSDyaLinePitch
3606 {
3607 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3608 //see SwWW8ImplReader::SetDocumentGrid
3609 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3610 if(pSectionContext)
3611 {
3612 pSectionContext->SetGridLinePitch( ConversionHelper::convertTwipToMM100( nIntValue ) );
3613 }
3614 }
3615 break;
3616 case 0x703a: //undocumented, grid related?
3617 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
3618 OSL_ENSURE( false, "TODO: not handled yet"); //nIntValue like 0x008a2373 ?
3619 break;
3620 case NS_sprm::LN_SClm:
3621 {
3622 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
3623 sal_Int16 nGridType = text::TextGridMode::NONE;
3624 switch( nIntValue )
3625 {
3626 case 0:
3627 nGridType = text::TextGridMode::NONE;
3628 break;
3629 case 3:
3630 //Text snaps to char grid, this doesn't make a lot of sense to
3631 //me. This is closer than LINES_CHARS
3632 nGridType = text::TextGridMode::LINES;
3633 break;
3634 case 1:
3635 nGridType = text::TextGridMode::LINES_AND_CHARS;
3636 break;
3637 case 2:
3638 nGridType = text::TextGridMode::LINES;
3639 break;
3640 default:;
3641 }
3642 rContext->Insert( PROP_GRID_MODE, false, uno::makeAny( nGridType ) );
3643
3644 //Seems to force this behaviour in word ?
3645 if(nGridType != text::TextGridMode::NONE)
3646 m_pImpl->SetDocumentSettingsProperty(
3647 PropertyNameSupplier::GetPropertyNameSupplier().GetName( PROP_ADD_EXTERNAL_LEADING ),
3648 uno::makeAny( true ) );
3649 }
3650 break; // sprmSClm
3651 case NS_sprm::LN_STextFlow:
3652 case NS_ooxml::LN_EG_SectPrContents_textDirection:
3653 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
3654 {
3655 /* 0 HoriLR 1 Vert TR 2 Vert TR 3 Vert TT 4 HoriLT
3656 only 0 and 1 can be imported correctly
3657 */
3658 sal_Int16 nDirection = text::WritingMode_LR_TB;
3659 switch( nIntValue )
3660 {
3661 case 0:
3662 case 4:
3663 nDirection = text::WritingMode_LR_TB;
3664 break;
3665 case 1:
3666 case 2:
3667 case 3:
3668 nDirection = text::WritingMode_TB_RL;
3669 break;
3670 default:;
3671 }
3672
3673 PropertyMap * pTargetContext = rContext.get();
3674
3675 if (pSectionContext != NULL &&
3676 nSprmId == NS_ooxml::LN_EG_SectPrContents_textDirection)
3677 {
3678 pTargetContext = pSectionContext;
3679 }
3680
3681 pTargetContext->Insert(PROP_WRITING_MODE, false, uno::makeAny( nDirection ) );
3682 }
3683 break; // sprmSTextFlow
3684 case NS_sprm::LN_TJc: // sprmTJc
3685 case NS_sprm::LN_TDxaLeft:
3686 case NS_sprm::LN_TDxaGapHalf:
3687 case NS_sprm::LN_TFCantSplit:
3688 case NS_sprm::LN_TTableHeader:
3689 case NS_sprm::LN_TTableBorders: // sprmTTableBorders
3690 {
3691 OSL_ENSURE( false, "table propeties should be handled by the table manager");
3692 }
3693 break;
3694 case NS_sprm::LN_TDefTable10:
3695 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3696 break; // sprmTDefTable10
3697 case NS_sprm::LN_TDyaRowHeight:
3698 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3699 break; // sprmTDyaRowHeight
3700 case NS_sprm::LN_TDefTable:
3701 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3702 break; // sprmTDefTable
3703 case NS_sprm::LN_TDefTableShd:
3704 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3705 break; // sprmTDefTableShd
3706 case NS_sprm::LN_TTlp:
3707 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3708 break; // sprmTTlp
3709 case NS_sprm::LN_TFBiDi:
3710 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3711 break; // sprmTFBiDi
3712 case NS_sprm::LN_THTMLProps:
3713 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3714 break; // sprmTHTMLProps
3715 case NS_sprm::LN_TSetBrc:
3716 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3717 break; // sprmTSetBrc
3718 case NS_sprm::LN_TInsert:
3719 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3720 break; // sprmTInsert
3721 case NS_sprm::LN_TDelete:
3722 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3723 break; // sprmTDelete
3724 case NS_sprm::LN_TDxaCol:
3725 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3726 break; // sprmTDxaCol
3727 case NS_sprm::LN_TMerge:
3728 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3729 break; // sprmTMerge
3730 case NS_sprm::LN_TSplit:
3731 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3732 break; // sprmTSplit
3733 case NS_sprm::LN_TSetBrc10:
3734 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3735 break; // sprmTSetBrc10
3736 case 164: // sprmTSetShd
3737 case NS_sprm::LN_TSetShd:
3738 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3739 break; // sprmTSetShd
3740 case NS_sprm::LN_TSetShdOdd:
3741 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3742 break; // sprmTSetShdOdd
3743 case NS_sprm::LN_TTextFlow:
3744 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3745 break; // sprmTTextFlow
3746 case NS_sprm::LN_TDiagLine:
3747 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3748 break; // sprmTDiagLine
3749 case NS_sprm::LN_TVertMerge:
3750 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3751 break; // sprmTVertMerge
3752 case NS_sprm::LN_TVertAlign:
3753 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3754 break; // sprmTVertAlign
3755 // the following are not part of the official documentation
3756 case 0x6870: //TxtForeColor
3757 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3758 {
3759 //contains a color as 0xTTRRGGBB while SO uses 0xTTRRGGBB
3760 sal_Int32 nColor = ConversionHelper::ConvertColor(nIntValue);
3761 rContext->Insert(PROP_CHAR_COLOR, true, uno::makeAny( nColor ) );
3762 }
3763 break;
3764 case 0x4874:
3765 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3766 break; //seems to be a language id for Asian text - undocumented
3767 case 0x6877: //underlining color
3768 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3769 {
3770 sal_Int32 nColor = ConversionHelper::ConvertColor(nIntValue);
3771 rContext->Insert(PROP_CHAR_UNDERLINE_HAS_COLOR, true, uno::makeAny( true ) );
3772 rContext->Insert(PROP_CHAR_UNDERLINE_COLOR, true, uno::makeAny( nColor ) );
3773 }
3774 break;
3775 case 0x6815:
3776 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3777 break; //undocumented
3778 case NS_sprm::LN_CIndrsid:
3779 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3780 break; //undocumented
3781 case 0x6467:
3782 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3783 break; //undocumented
3784 case 0xF617:
3785 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3786 break; //undocumented
3787 case 0xd634: // sprmTNewSpacing - table spacing ( see WW8TabBandDesc::ProcessSpacing() )
3788 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3789 break;
3790 case NS_sprm::LN_TTRLeft:
3791 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
3792 break; //undocumented
3793 case 0x4888:
3794 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
3795 case 0x6887:
3796 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
3797 //properties of list levels - undocumented
3798 break;
3799 case 0xd234:
3800 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
3801 case 0xd235:
3802 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
3803 case 0xd236:
3804 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
3805 case 0xd237:
3806 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
3807 break;//undocumented section properties
3808 case NS_sprm::LN_CEastAsianLayout:
3809 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
3810 resolveSprmProps(*this, rSprm);
3811 break;
3812 case NS_ooxml::LN_CT_Tabs_tab:
3813 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3814 resolveSprmProps(*this, rSprm);
3815 m_pImpl->IncorporateTabStop(m_pImpl->m_aCurrentTabStop);
3816 m_pImpl->m_aCurrentTabStop = DeletableTabStop();
3817 break;
3818 case NS_ooxml::LN_CT_PPrBase_tabs:
3819 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3820 {
3821 // Initialize tab stop vector from style sheet
3822 if( !m_pImpl->IsStyleSheetImport() )
3823 {
3824 uno::Any aValue = m_pImpl->GetPropertyFromStyleSheet(PROP_PARA_TAB_STOPS);
3825 uno::Sequence< style::TabStop > aStyleTabStops;
3826 if(aValue >>= aStyleTabStops)
3827 {
3828 m_pImpl->InitTabStopFromStyle( aStyleTabStops );
3829 }
3830 }
3831 resolveSprmProps(*this, rSprm);
3832 rContext->Insert(PROP_PARA_TAB_STOPS, true, uno::makeAny( m_pImpl->GetCurrentTabStopAndClear()));
3833 }
3834 break;
3835
3836 case NS_ooxml::LN_CT_PPr_sectPr:
3837 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3838 case NS_ooxml::LN_EG_RPrBase_color:
3839 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3840 case NS_ooxml::LN_EG_RPrBase_rFonts:
3841 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3842 case NS_ooxml::LN_EG_RPrBase_bdr:
3843 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3844 case NS_ooxml::LN_EG_RPrBase_eastAsianLayout:
3845 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3846 case NS_ooxml::LN_EG_RPrBase_u:
3847 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3848 case NS_ooxml::LN_EG_RPrBase_lang:
3849 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3850 case NS_ooxml::LN_CT_PPrBase_spacing:
3851 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3852 case NS_ooxml::LN_CT_PPrBase_ind:
3853 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3854 case NS_ooxml::LN_CT_RPrDefault_rPr:
3855 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3856 case NS_ooxml::LN_CT_PPrDefault_pPr:
3857 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3858 case NS_ooxml::LN_CT_DocDefaults_pPrDefault:
3859 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3860 case NS_ooxml::LN_CT_DocDefaults_rPrDefault:
3861 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3862 case NS_ooxml::LN_CT_Style_pPr:
3863 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3864 case NS_ooxml::LN_CT_Style_rPr:
3865 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3866 case NS_ooxml::LN_CT_PPr_rPr:
3867 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3868 case NS_ooxml::LN_CT_PPrBase_numPr:
3869 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3870 resolveSprmProps(*this, rSprm);
3871 break;
3872
3873 case NS_ooxml::LN_EG_SectPrContents_footnotePr:
3874 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3875 case NS_ooxml::LN_EG_SectPrContents_endnotePr:
3876 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3877 m_pImpl->SetInFootnoteProperties( NS_ooxml::LN_EG_SectPrContents_footnotePr == nSprmId );
3878 resolveSprmProps(*this, rSprm);
3879 break;
3880
3881 case NS_ooxml::LN_EG_SectPrContents_lnNumType:
3882 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
3883 {
3884 resolveSprmProps(*this, rSprm);
3885 LineNumberSettings aSettings = m_pImpl->GetLineNumberSettings();
3886 aSettings.bIsOn = true;
3887 m_pImpl->SetLineNumberSettings( aSettings );
3888 //apply settings at XLineNumberingProperties
3889 try
3890 {
3891 uno::Reference< text::XLineNumberingProperties > xLineNumberingProperties( m_pImpl->GetTextDocument(), uno::UNO_QUERY_THROW );
3892 uno::Reference< beans::XPropertySet > xLineNumberingPropSet = xLineNumberingProperties->getLineNumberingProperties();
3893 PropertyNameSupplier& rNameSupplier = PropertyNameSupplier::GetPropertyNameSupplier();
3894 xLineNumberingPropSet->setPropertyValue(rNameSupplier.GetName( PROP_IS_ON ), uno::makeAny(true) );
3895 if( aSettings.nInterval )
3896 xLineNumberingPropSet->setPropertyValue(rNameSupplier.GetName( PROP_INTERVAL ), uno::makeAny((sal_Int16)aSettings.nInterval) );
3897 if( aSettings.nDistance )
3898 xLineNumberingPropSet->setPropertyValue(rNameSupplier.GetName( PROP_DISTANCE ), uno::makeAny(aSettings.nDistance) );
3899 xLineNumberingPropSet->setPropertyValue(rNameSupplier.GetName( PROP_RESTART_AT_EACH_PAGE ), uno::makeAny(aSettings.bRestartAtEachPage) );
3900 }
3901 catch( const uno::Exception& )
3902 {
3903 }
3904
3905 }
3906 break;
3907 case NS_ooxml::LN_CT_PPrBase_framePr:
3908 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3909 {
3910 PropertyMapPtr pContext = m_pImpl->GetTopContextOfType(CONTEXT_PARAGRAPH);
3911 if( pContext.get() )
3912 {
3913 ParagraphPropertyMap* pParaContext = dynamic_cast< ParagraphPropertyMap* >( pContext.get() );
3914 pParaContext->SetFrameMode();
3915
3916 }
3917 else
3918 {
3919 //TODO: What about style sheet import of frame properties
3920 }
3921 resolveSprmProps(*this, rSprm);
3922 }
3923 break;
3924 case NS_ooxml::LN_EG_SectPrContents_pgSz:
3925 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3926 CT_PageSz.code = 0;
3927 {
3928 PaperInfo aLetter(PAPER_LETTER);
3929 CT_PageSz.w = aLetter.getWidth();
3930 CT_PageSz.h = aLetter.getHeight();
3931 }
3932 CT_PageSz.orient = false;
3933 resolveSprmProps(*this, rSprm);
3934 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3935 if(pSectionContext)
3936 {
3937 pSectionContext->Insert( PROP_HEIGHT, false, uno::makeAny( CT_PageSz.h ) );
3938 pSectionContext->Insert( PROP_IS_LANDSCAPE, false, uno::makeAny( CT_PageSz.orient ));
3939 pSectionContext->Insert( PROP_WIDTH, false, uno::makeAny( CT_PageSz.w ) );
3940 pSectionContext->SetLandscape( CT_PageSz.orient );
3941 }
3942 break;
3943
3944 case NS_ooxml::LN_EG_SectPrContents_pgMar:
3945 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3946 m_pImpl->InitPageMargins();
3947 resolveSprmProps(*this, rSprm);
3948 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
3949 if(pSectionContext)
3950 {
3951 const _PageMar& rPageMar = m_pImpl->GetPageMargins();
3952 pSectionContext->SetTopMargin( rPageMar.top );
3953 pSectionContext->SetRightMargin( rPageMar.right );
3954 pSectionContext->SetBottomMargin( rPageMar.bottom );
3955 pSectionContext->SetLeftMargin( rPageMar.left );
3956 pSectionContext->SetHeaderTop( rPageMar.header );
3957 pSectionContext->SetHeaderBottom( rPageMar.footer );
3958 }
3959 break;
3960
3961 case NS_ooxml::LN_EG_SectPrContents_cols:
3962 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
3963 {
3964 writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps();
3965 if( pProperties.get())
3966 {
3967
3968 SectionColumnHandlerPtr pSectHdl( new SectionColumnHandler );
3969 pProperties->resolve(*pSectHdl);
3970 if(pSectionContext)
3971 {
3972 if( pSectHdl->IsEqualWidth() )
3973 {
3974 pSectionContext->SetEvenlySpaced( true );
3975 pSectionContext->SetColumnCount( (sal_Int16) (pSectHdl->GetNum() - 1) );
3976 pSectionContext->SetColumnDistance( pSectHdl->GetSpace() );
3977 pSectionContext->SetSeparatorLine( pSectHdl->IsSeparator() );
3978 }
3979 else if( !pSectHdl->GetColumns().empty() )
3980 {
3981 pSectionContext->SetEvenlySpaced( false );
3982 pSectionContext->SetColumnDistance( pSectHdl->GetSpace() );
3983 pSectionContext->SetColumnCount( (sal_Int16)(pSectHdl->GetColumns().size() -1));
3984 std::vector<_Column>::const_iterator tmpIter = pSectHdl->GetColumns().begin();
3985 for (; tmpIter != pSectHdl->GetColumns().end(); tmpIter++)
3986 {
3987 pSectionContext->AppendColumnWidth( tmpIter->nWidth );
3988 if ((tmpIter != pSectHdl->GetColumns().end() - 1) || (tmpIter->nSpace > 0))
3989 pSectionContext->AppendColumnSpacing( tmpIter->nSpace );
3990 }
3991 pSectionContext->SetSeparatorLine( pSectHdl->IsSeparator() );
3992 }
3993 else if( pSectHdl->GetNum() > 0 )
3994 {
3995 pSectionContext->SetColumnCount( (sal_Int16)pSectHdl->GetNum() - 1 );
3996 pSectionContext->SetColumnDistance( pSectHdl->GetSpace() );
3997 }
3998 }
3999 }
4000 }
4001 break;
4002 case NS_ooxml::LN_EG_SectPrContents_docGrid:
4003 resolveSprmProps(*this, rSprm);
4004 break;
4005 case NS_ooxml::LN_EG_SectPrContents_pgBorders:
4006 {
4007 writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps();
4008 if( pProperties.get( ) && pSectionContext )
4009 {
4010 PageBordersHandlerPtr pHandler( new PageBordersHandler );
4011 pProperties->resolve( *pHandler );
4012
4013 // Set the borders to the context and apply them to the styles
4014 pHandler->SetBorders( pSectionContext );
4015 pSectionContext->SetBorderParams( pHandler->GetDisplayOffset( ) );
4016 }
4017 }
4018 break;
4019
4020 case NS_ooxml::LN_CT_PPrBase_pStyle:
4021 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
4022 {
4023 m_pImpl->SetCurrentParaStyleId( sStringValue );
4024 StyleSheetTablePtr pStyleTable = m_pImpl->GetStyleSheetTable();
4025 const ::rtl::OUString sConvertedStyleName = pStyleTable->ConvertStyleName( sStringValue, true );
4026 if (m_pImpl->GetTopContext() && m_pImpl->GetTopContextType() != CONTEXT_SECTION)
4027 m_pImpl->GetTopContext()->Insert( PROP_PARA_STYLE_NAME, true, uno::makeAny( sConvertedStyleName ));
4028 const StyleSheetEntryPtr pEntry = pStyleTable->FindStyleSheetByISTD(sStringValue);
4029 //apply numbering to paragraph if it was set at the style
4030 OSL_ENSURE( pEntry.get(), "no style sheet found" );
4031 const StyleSheetPropertyMap* pStyleSheetProperties = dynamic_cast<const StyleSheetPropertyMap*>(pEntry ? pEntry->pProperties.get() : 0);
4032
4033 if( pStyleSheetProperties && pStyleSheetProperties->GetListId() >= 0 )
4034 rContext->Insert( PROP_NUMBERING_STYLE_NAME, true, uno::makeAny(
4035 ListDef::GetStyleName( pStyleSheetProperties->GetListId( ) ) ), false);
4036
4037 if( pStyleSheetProperties && pStyleSheetProperties->GetListLevel() >= 0 )
4038 rContext->Insert( PROP_NUMBERING_LEVEL, true, uno::makeAny(pStyleSheetProperties->GetListLevel()), false);
4039 }
4040 break;
4041 case NS_ooxml::LN_EG_RPrBase_rStyle:
4042 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
4043 {
4044 rtl::OUString sConvertedName( m_pImpl->GetStyleSheetTable()->ConvertStyleName( sStringValue, true ) );
4045 // First check if the style exists in the document.
4046 StyleSheetEntryPtr pEntry = m_pImpl->GetStyleSheetTable( )->FindStyleSheetByStyleName( sConvertedName );
4047 bool bExists = pEntry.get( ) && ( pEntry->nStyleTypeCode == STYLE_TYPE_CHAR );
4048
4049 // Add the property if the style exists
4050 if ( bExists && m_pImpl->GetTopContext() )
4051 m_pImpl->GetTopContext()->Insert( PROP_CHAR_STYLE_NAME, true, uno::makeAny( sConvertedName ) );
4052 }
4053 break;
4054 case NS_ooxml::LN_CT_TblPrBase_tblCellMar: //cell margins
4055 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
4056 {
4057 resolveSprmProps(*this, rSprm);//contains LN_CT_TblCellMar_top, LN_CT_TblCellMar_left, LN_CT_TblCellMar_bottom, LN_CT_TblCellMar_right
4058 }
4059 break;
4060 case NS_ooxml::LN_CT_TblCellMar_top:
4061 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
4062 case NS_ooxml::LN_CT_TblCellMar_left:
4063 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
4064 case NS_ooxml::LN_CT_TblCellMar_bottom:
4065 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
4066 case NS_ooxml::LN_CT_TblCellMar_right:
4067 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
4068 {
4069 writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps();
4070 if( pProperties.get())
4071 {
4072 MeasureHandlerPtr pMeasureHandler( new MeasureHandler );
4073 pProperties->resolve(*pMeasureHandler);
4074 sal_Int32 nMeasureValue = pMeasureHandler->getMeasureValue();
4075 PropertyIds eId = META_PROP_CELL_MAR_TOP;
4076 switch(nSprmId)
4077 {
4078 case NS_ooxml::LN_CT_TblCellMar_top:
4079 /* WRITERFILTERSTATUS: */
4080 break;
4081 case NS_ooxml::LN_CT_TblCellMar_left:
4082 /* WRITERFILTERSTATUS: */
4083 eId = META_PROP_CELL_MAR_LEFT;
4084 break;
4085 case NS_ooxml::LN_CT_TblCellMar_bottom:
4086 /* WRITERFILTERSTATUS: */
4087 eId = META_PROP_CELL_MAR_BOTTOM;
4088 break;
4089 case NS_ooxml::LN_CT_TblCellMar_right:
4090 /* WRITERFILTERSTATUS: */
4091 eId = META_PROP_CELL_MAR_RIGHT;
4092 break;
4093 default:;
4094 }
4095 rContext->Insert( eId, false, uno::makeAny(nMeasureValue), false);
4096 }
4097 }
4098 break;
4099 case NS_sprm::LN_CFNoProof: //0x875 no grammar and spell checking, unsupported
4100 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
4101 break;
4102 case NS_ooxml::LN_anchor_anchor: // at_character drawing
4103 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
4104 case NS_ooxml::LN_inline_inline: // as_character drawing
4105 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
4106 {
4107 writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps();
4108 if( pProperties.get())
4109 {
4110 GraphicImportType eGraphicType =
4111 (NS_ooxml::LN_anchor_anchor ==
4112 sal::static_int_cast<Id>(nSprmId)) ?
4113 IMPORT_AS_DETECTED_ANCHOR :
4114 IMPORT_AS_DETECTED_INLINE;
4115 GraphicImportPtr pGraphicImport =
4116 m_pImpl->GetGraphicImport(eGraphicType);
4117 pProperties->resolve(*pGraphicImport);
4118 m_pImpl->ImportGraphic(pProperties, eGraphicType);
4119 if( !pGraphicImport->IsGraphic() )
4120 {
4121 m_pImpl->ResetGraphicImport();
4122 // todo: It's a shape, now start shape import
4123 }
4124 }
4125 }
4126 break;
4127
4128 case NS_ooxml::LN_EG_RPrBase_vertAlign:
4129 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
4130 {
4131 sal_Int16 nEscapement = 0;
4132 sal_Int8 nProp = 58;
4133 if( sStringValue.equalsAscii( "superscript" ))
4134 nEscapement = 101;
4135 else if( sStringValue.equalsAscii( "subscript" ))
4136 nEscapement = -101;
4137 else
4138 nProp = 100;
4139
4140 rContext->Insert(PROP_CHAR_ESCAPEMENT, true, uno::makeAny( nEscapement ) );
4141 rContext->Insert(PROP_CHAR_ESCAPEMENT_HEIGHT, true, uno::makeAny( nProp ) );
4142 }
4143 break;
4144
4145 // case NS_ooxml::LN_CT_FtnEdn_type
4146 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
4147 // case NS_ooxml::LN_CT_FtnEdn_id
4148 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
4149 // case NS_ooxml::LN_EG_FtnEdnNumProps_numRestart
4150 case NS_ooxml::LN_CT_FtnProps_pos:
4151 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
4152 //footnotes in word can be at page end or beneath text - writer supports only the first
4153 //endnotes in word can be at section end or document end - writer supports only the latter
4154 // -> so this property can be ignored
4155 break;
4156 case NS_ooxml::LN_EG_FtnEdnNumProps_numStart:
4157 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
4158 case NS_ooxml::LN_CT_FtnProps_numFmt:
4159 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
4160 case NS_ooxml::LN_CT_EdnProps_numFmt:
4161 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
4162 {
4163 try
4164 {
4165 uno::Reference< beans::XPropertySet > xFtnEdnSettings;
4166 if( m_pImpl->IsInFootnoteProperties() )
4167 {
4168 uno::Reference< text::XFootnotesSupplier> xFootnotesSupplier( m_pImpl->GetTextDocument(), uno::UNO_QUERY );
4169 xFtnEdnSettings = xFootnotesSupplier->getFootnoteSettings();
4170 }
4171 else
4172 {
4173 uno::Reference< text::XEndnotesSupplier> xEndnotesSupplier( m_pImpl->GetTextDocument(), uno::UNO_QUERY );
4174 xFtnEdnSettings = xEndnotesSupplier->getEndnoteSettings();
4175 }
4176 if( NS_ooxml::LN_EG_FtnEdnNumProps_numStart == nSprmId )
4177 {
4178 xFtnEdnSettings->setPropertyValue(
4179 PropertyNameSupplier::GetPropertyNameSupplier().GetName( PROP_START_AT),
4180 uno::makeAny( sal_Int16( nIntValue - 1 )));
4181 }
4182 else
4183 {
4184 sal_Int16 nNumType = ConversionHelper::ConvertNumberingType( nIntValue );
4185 xFtnEdnSettings->setPropertyValue(
4186 PropertyNameSupplier::GetPropertyNameSupplier().GetName( PROP_NUMBERING_TYPE),
4187 uno::makeAny( nNumType ));
4188 }
4189 }
4190 catch( const uno::Exception& )
4191 {
4192 }
4193 }
4194 break;
4195 case NS_ooxml::LN_paratrackchange:
4196 m_pImpl->StartParaChange( );
4197 case NS_ooxml::LN_trackchange:
4198 /* WRITERFILTERSTATUS: done: 100, planned: 5, spent: 0 */
4199 case NS_ooxml::LN_EG_RPrContent_rPrChange:
4200 /* WRITERFILTERSTATUS: done: 100, planned: 5, spent: 0 */
4201 {
4202 m_pImpl->AddNewRedline( );
4203 resolveSprmProps(*this, rSprm );
4204 // now the properties author, date and id should be available
4205 sal_Int32 nToken = m_pImpl->GetCurrentRedlineToken();
4206 switch( nToken & 0xffff )
4207 {
4208 case ooxml::OOXML_mod :
4209 case ooxml::OOXML_ins :
4210 case ooxml::OOXML_del : break;
4211 default: OSL_ENSURE( false, "redline token other than mod, ins or del" );
4212 }
4213 m_pImpl->EndParaChange( );
4214 }
4215 break;
4216 case NS_ooxml::LN_CT_RPrChange_rPr:
4217 /* WRITERFILTERSTATUS: done: 100, planned: 5, spent: 0 */
4218 break;
4219 /* WRITERFILTERSTATUS: done: 0, planned: 4, spent: 0 */
4220 case NS_ooxml::LN_object:
4221 {
4222 writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps();
4223 if( pProperties.get( ) )
4224 {
4225 OLEHandlerPtr pOLEHandler( new OLEHandler );
4226 pProperties->resolve(*pOLEHandler);
4227 if ( pOLEHandler->isOLEObject( ) )
4228 {
4229 ::rtl::OUString sStreamName = pOLEHandler->copyOLEOStream( m_pImpl->GetTextDocument() );
4230 if( sStreamName.getLength() )
4231 {
4232 m_pImpl->appendOLE( sStreamName, pOLEHandler );
4233 }
4234 }
4235 }
4236 }
4237 break;
4238 // case NS_ooxml::LN_CT_EdnProps_pos
4239 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
4240 // case NS_ooxml::LN_CT_EdnProps_numFmt
4241 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
4242 // case NS_ooxml::LN_CT_FtnDocProps_footnote
4243 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
4244 // case NS_ooxml::LN_CT_EdnDocProps_endnote
4245 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
4246 //break;
4247 case NS_ooxml::LN_EG_HdrFtrReferences_headerReference: // header reference - not needed
4248 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
4249 case NS_ooxml::LN_EG_HdrFtrReferences_footerReference: // footer reference - not needed
4250 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
4251 break;
4252 case NS_ooxml::LN_EG_RPrBase_snapToGrid: // "Use document grid settings for inter-paragraph spacing"
4253 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
4254 break;
4255 case NS_sprm::LN_PContextualSpacing:
4256 //TODO: determines whether top/bottom paragraph spacing is added if equal styles are following - unsupported
4257 break;
4258 case NS_ooxml::LN_EG_SectPrContents_formProt: //section protection, only form editing is enabled - unsupported
4259 case NS_ooxml::LN_EG_SectPrContents_vAlign:
4260 case NS_ooxml::LN_EG_RPrBase_fitText:
4261 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
4262 break;
4263 case NS_ooxml::LN_ffdata:
4264 {
4265 writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps();
4266 if (pProperties.get() != NULL)
4267 {
4268 FFDataHandler::Pointer_t pFFDataHandler(new FFDataHandler());
4269
4270 pProperties->resolve(*pFFDataHandler);
4271 m_pImpl->SetFieldFFData(pFFDataHandler);
4272 }
4273 }
4274 break;
4275 default:
4276 {
4277 #ifdef DEBUG_DOMAINMAPPER
4278 dmapper_logger->startElement("unhandled");
4279 dmapper_logger->attribute("id", nSprmId);
4280 dmapper_logger->endElement("unhandled");
4281 #endif
4282 }
4283 }
4284 }
4285 /*-- 09.06.2006 09:52:13---------------------------------------------------
4286
4287 -----------------------------------------------------------------------*/
lcl_entry(int,writerfilter::Reference<Properties>::Pointer_t ref)4288 void DomainMapper::lcl_entry(int /*pos*/,
4289 writerfilter::Reference<Properties>::Pointer_t ref)
4290 {
4291 ref->resolve(*this);
4292 }
4293 /*-- 09.06.2006 09:52:13---------------------------------------------------
4294
4295 -----------------------------------------------------------------------*/
data(const sal_uInt8 *,size_t,writerfilter::Reference<Properties>::Pointer_t)4296 void DomainMapper::data(const sal_uInt8* /*buf*/, size_t /*len*/,
4297 writerfilter::Reference<Properties>::Pointer_t /*ref*/)
4298 {
4299 }
4300 /*-- 09.06.2006 09:52:13---------------------------------------------------
4301
4302 -----------------------------------------------------------------------*/
lcl_startSectionGroup()4303 void DomainMapper::lcl_startSectionGroup()
4304 {
4305 m_pImpl->PushProperties(CONTEXT_SECTION);
4306 }
4307 /*-- 09.06.2006 09:52:13---------------------------------------------------
4308
4309 -----------------------------------------------------------------------*/
lcl_endSectionGroup()4310 void DomainMapper::lcl_endSectionGroup()
4311 {
4312 PropertyMapPtr pContext = m_pImpl->GetTopContextOfType(CONTEXT_SECTION);
4313 SectionPropertyMap* pSectionContext = dynamic_cast< SectionPropertyMap* >( pContext.get() );
4314 OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
4315 if(pSectionContext)
4316 pSectionContext->CloseSectionGroup( *m_pImpl );
4317 m_pImpl->PopProperties(CONTEXT_SECTION);
4318 }
4319 /*-- 09.06.2006 09:52:13---------------------------------------------------
4320
4321 -----------------------------------------------------------------------*/
lcl_startParagraphGroup()4322 void DomainMapper::lcl_startParagraphGroup()
4323 {
4324 m_pImpl->getTableManager().startParagraphGroup();
4325 m_pImpl->PushProperties(CONTEXT_PARAGRAPH);
4326 static ::rtl::OUString sDefault( ::rtl::OUString::createFromAscii("Standard") );
4327 if (m_pImpl->GetTopContext())
4328 {
4329 m_pImpl->GetTopContext()->Insert( PROP_PARA_STYLE_NAME, true, uno::makeAny( sDefault ) );
4330 if (m_pImpl->isBreakDeferred(PAGE_BREAK))
4331 m_pImpl->GetTopContext()->Insert( PROP_BREAK_TYPE, true, uno::makeAny( com::sun::star::style::BreakType_PAGE_BEFORE) );
4332 else if (m_pImpl->isBreakDeferred(COLUMN_BREAK))
4333 m_pImpl->GetTopContext()->Insert( PROP_BREAK_TYPE, true, uno::makeAny( com::sun::star::style::BreakType_COLUMN_BEFORE) );
4334 }
4335 m_pImpl->clearDeferredBreaks();
4336 }
4337 /*-- 09.06.2006 09:52:14---------------------------------------------------
4338
4339 -----------------------------------------------------------------------*/
lcl_endParagraphGroup()4340 void DomainMapper::lcl_endParagraphGroup()
4341 {
4342 m_pImpl->PopProperties(CONTEXT_PARAGRAPH);
4343 m_pImpl->getTableManager().endParagraphGroup();
4344 //frame conversion has to be executed after table conversion
4345 m_pImpl->ExecuteFrameConversion();
4346 }
4347
markLastParagraphInSection()4348 void DomainMapper::markLastParagraphInSection( )
4349 {
4350 m_pImpl->SetIsLastParagraphInSection( true );
4351 }
4352
lcl_startShape(uno::Reference<drawing::XShape> xShape)4353 void DomainMapper::lcl_startShape( uno::Reference< drawing::XShape > xShape )
4354 {
4355 m_pImpl->PushShapeContext( xShape );
4356 }
4357
lcl_endShape()4358 void DomainMapper::lcl_endShape( )
4359 {
4360 m_pImpl->PopShapeContext( );
4361 }
4362
4363 /*-- 13.06.2007 16:15:55---------------------------------------------------
4364
4365 -----------------------------------------------------------------------*/
PushStyleSheetProperties(PropertyMapPtr pStyleProperties,bool bAffectTableMngr)4366 void DomainMapper::PushStyleSheetProperties( PropertyMapPtr pStyleProperties, bool bAffectTableMngr )
4367 {
4368 m_pImpl->PushStyleProperties( pStyleProperties );
4369 if ( bAffectTableMngr )
4370 m_pImpl->getTableManager( ).SetStyleProperties( pStyleProperties );
4371 }
4372 /*-- 13.06.2007 16:15:55---------------------------------------------------
4373
4374 -----------------------------------------------------------------------*/
PopStyleSheetProperties(bool bAffectTableMngr)4375 void DomainMapper::PopStyleSheetProperties( bool bAffectTableMngr )
4376 {
4377 m_pImpl->PopProperties( CONTEXT_STYLESHEET );
4378 if ( bAffectTableMngr )
4379 {
4380 PropertyMapPtr emptyPtr;
4381 m_pImpl->getTableManager( ).SetStyleProperties( emptyPtr );
4382 }
4383 }
4384 /*-- 28.01.2008 14:52:33---------------------------------------------------
4385
4386 -----------------------------------------------------------------------*/
PushListProperties(::boost::shared_ptr<PropertyMap> pListProperties)4387 void DomainMapper::PushListProperties( ::boost::shared_ptr<PropertyMap> pListProperties )
4388 {
4389 m_pImpl->PushListProperties( pListProperties );
4390 }
4391 /*-- 28.01.2008 14:52:33---------------------------------------------------
4392
4393 -----------------------------------------------------------------------*/
PopListProperties()4394 void DomainMapper::PopListProperties()
4395 {
4396 m_pImpl->PopProperties( CONTEXT_LIST );
4397 }
4398 /*-- 09.06.2006 09:52:14---------------------------------------------------
4399
4400 -----------------------------------------------------------------------*/
4401
lcl_startCharacterGroup()4402 void DomainMapper::lcl_startCharacterGroup()
4403 {
4404 m_pImpl->PushProperties(CONTEXT_CHARACTER);
4405 }
4406 /*-- 09.06.2006 09:52:14---------------------------------------------------
4407
4408 -----------------------------------------------------------------------*/
lcl_endCharacterGroup()4409 void DomainMapper::lcl_endCharacterGroup()
4410 {
4411 m_pImpl->PopProperties(CONTEXT_CHARACTER);
4412 }
4413 /*-- 09.06.2006 09:52:14---------------------------------------------------
4414
4415 -----------------------------------------------------------------------*/
lcl_text(const sal_uInt8 * data_,size_t len)4416 void DomainMapper::lcl_text(const sal_uInt8 * data_, size_t len)
4417 {
4418 //TODO: Determine the right text encoding (FIB?)
4419 ::rtl::OUString sText( (const sal_Char*) data_, len, RTL_TEXTENCODING_MS_1252 );
4420 #ifdef DEBUG_DOMAINMAPPER
4421 dmapper_logger->startElement("text");
4422 dmapper_logger->chars(sText);
4423 dmapper_logger->endElement("text");
4424 #endif
4425
4426 try
4427 {
4428 if(len == 1)
4429 {
4430 switch(*data_)
4431 {
4432 case 0x02: return; //footnote character
4433 case 0x0c: //page break
4434 m_pImpl->deferBreak(PAGE_BREAK);
4435 return;
4436 case 0x0e: //column break
4437 m_pImpl->deferBreak(COLUMN_BREAK);
4438 return;
4439 case 0x07:
4440 m_pImpl->getTableManager().text(data_, len);
4441 case 0x0d:
4442 m_pImpl->finishParagraph(m_pImpl->GetTopContextOfType(CONTEXT_PARAGRAPH));
4443 return;
4444 case 0x13:
4445 m_pImpl->PushFieldContext();
4446 return;
4447 case 0x14:
4448 // delimiter not necessarily available
4449 // appears only if field contains further content
4450 m_pImpl->CloseFieldCommand();
4451 return;
4452 case 0x15: /* end of field */
4453 m_pImpl->PopFieldContext();
4454 return;
4455 default:
4456 break;
4457 }
4458 }
4459
4460 PropertyMapPtr pContext = m_pImpl->GetTopContext();
4461 if ( pContext && !pContext->GetFootnote().is() )
4462 {
4463 if (m_pImpl->isBreakDeferred(PAGE_BREAK))
4464 m_pImpl->GetTopContext()->Insert( PROP_BREAK_TYPE, true, uno::makeAny( com::sun::star::style::BreakType_PAGE_BEFORE) );
4465 else if (m_pImpl->isBreakDeferred(COLUMN_BREAK))
4466 m_pImpl->GetTopContext()->Insert( PROP_BREAK_TYPE, true, uno::makeAny( com::sun::star::style::BreakType_COLUMN_BEFORE) );
4467 m_pImpl->clearDeferredBreaks();
4468 }
4469
4470 if( pContext->GetFootnote().is() && m_pImpl->IsCustomFtnMark() )
4471 {
4472 pContext->GetFootnote()->setLabel( sText );
4473 m_pImpl->SetCustomFtnMark( false );
4474 //otherwise ignore sText
4475 }
4476 else if( m_pImpl->IsOpenFieldCommand() )
4477 m_pImpl->AppendFieldCommand(sText);
4478 else if( m_pImpl->IsOpenField() && m_pImpl->IsFieldResultAsString())
4479 /*depending on the success of the field insert operation this result will be
4480 set at the field or directly inserted into the text*/
4481 m_pImpl->SetFieldResult( sText );
4482 else
4483 {
4484 //--> debug
4485 //sal_uInt32 nSize = pContext->size();
4486 //<--
4487
4488 if( !bool(pContext))
4489 pContext.reset(new PropertyMap());
4490
4491 m_pImpl->appendTextPortion( sText, pContext );
4492 }
4493 }
4494 catch( const uno::RuntimeException& )
4495 {
4496 std::clog << __FILE__ << "(l" << __LINE__ << ")" << std::endl;
4497 }
4498 }
4499 /*-- 09.06.2006 09:52:15---------------------------------------------------
4500
4501 -----------------------------------------------------------------------*/
lcl_utext(const sal_uInt8 * data_,size_t len)4502 void DomainMapper::lcl_utext(const sal_uInt8 * data_, size_t len)
4503 {
4504 OUString sText;
4505 OUStringBuffer aBuffer = OUStringBuffer(len);
4506 aBuffer.append( (const sal_Unicode *) data_, len);
4507 sText = aBuffer.makeStringAndClear();
4508
4509 try
4510 {
4511 m_pImpl->getTableManager().utext(data_, len);
4512
4513 if(len == 1 && ((*data_) == 0x0d || (*data_) == 0x07))
4514 m_pImpl->finishParagraph(m_pImpl->GetTopContextOfType(CONTEXT_PARAGRAPH));
4515 else
4516 {
4517
4518 PropertyMapPtr pContext = m_pImpl->GetTopContext();
4519 if ( pContext && !pContext->GetFootnote().is() )
4520 {
4521 if (m_pImpl->isBreakDeferred(PAGE_BREAK))
4522 m_pImpl->GetTopContext()->Insert( PROP_BREAK_TYPE, true, uno::makeAny( com::sun::star::style::BreakType_PAGE_BEFORE) );
4523 else if (m_pImpl->isBreakDeferred(COLUMN_BREAK))
4524 m_pImpl->GetTopContext()->Insert( PROP_BREAK_TYPE, true, uno::makeAny( com::sun::star::style::BreakType_COLUMN_BEFORE) );
4525 m_pImpl->clearDeferredBreaks();
4526 }
4527
4528 /* doesn't seem to be working
4529 if( pContext->GetFootnote().is() )
4530 {
4531 //todo: the check for 0x0a is a hack!
4532 if( *data_ != 0x0a && !pContext->GetFootnoteSymbol() )
4533 pContext->GetFootnote()->setLabel( sText );
4534 //otherwise ignore sText
4535 }
4536 else */
4537 if( pContext && pContext->GetFootnote().is() )
4538 {
4539 if( !pContext->GetFootnoteSymbol() )
4540 pContext->GetFootnote()->setLabel( sText );
4541 //otherwise ignore sText
4542 }
4543 else if( m_pImpl->IsOpenFieldCommand() )
4544 m_pImpl->AppendFieldCommand(sText);
4545 else if( m_pImpl->IsOpenField() && m_pImpl->IsFieldResultAsString())
4546 /*depending on the success of the field insert operation this result will be
4547 set at the field or directly inserted into the text*/
4548 m_pImpl->SetFieldResult( sText );
4549 else
4550 {
4551 if( !bool(pContext))
4552 pContext.reset(new PropertyMap());
4553
4554 m_pImpl->appendTextPortion( sText, pContext );
4555 }
4556
4557 }
4558 }
4559 catch( const uno::RuntimeException& )
4560 {
4561 }
4562 }
4563 /*-- 09.06.2006 09:52:15---------------------------------------------------
4564
4565 -----------------------------------------------------------------------*/
lcl_props(writerfilter::Reference<Properties>::Pointer_t ref)4566 void DomainMapper::lcl_props(writerfilter::Reference<Properties>::Pointer_t ref)
4567 {
4568 string sType = ref->getType();
4569 if( sType == "PICF" )
4570 {
4571 m_pImpl->ImportGraphic(ref, IMPORT_AS_GRAPHIC);
4572 }
4573 else if( sType == "FSPA" )
4574 {
4575 m_pImpl->ImportGraphic(ref, IMPORT_AS_SHAPE);
4576 }
4577 else
4578 ref->resolve(*this);
4579 }
4580 /*-- 09.06.2006 09:52:15---------------------------------------------------
4581
4582 -----------------------------------------------------------------------*/
lcl_table(Id name,writerfilter::Reference<Table>::Pointer_t ref)4583 void DomainMapper::lcl_table(Id name, writerfilter::Reference<Table>::Pointer_t ref)
4584 {
4585 // printf ( "DomainMapper::table(0x%.4x)\n", (unsigned int)name);
4586 m_pImpl->SetAnyTableImport(true);
4587 /* WRITERFILTERSTATUS: table: attributedata */
4588 switch(name)
4589 {
4590 case NS_rtf::LN_FONTTABLE:
4591 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
4592
4593 // create a font table object that listens to the attributes
4594 // each entry call inserts a new font entry
4595 ref->resolve( *m_pImpl->GetFontTable() );
4596 break;
4597 case NS_rtf::LN_STYLESHEET:
4598 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
4599 //same as above to import style sheets
4600 m_pImpl->SetStyleSheetImport( true );
4601 ref->resolve( *m_pImpl->GetStyleSheetTable() );
4602 m_pImpl->GetStyleSheetTable()->ApplyStyleSheets(m_pImpl->GetFontTable());
4603 m_pImpl->SetStyleSheetImport( false );
4604 break;
4605 case NS_ooxml::LN_NUMBERING:
4606 case NS_rtf::LN_LISTTABLE:
4607 {
4608 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
4609
4610 //the same for list tables
4611 ref->resolve( *m_pImpl->GetListTable() );
4612 m_pImpl->GetListTable( )->CreateNumberingRules( );
4613 }
4614 break;
4615 case NS_rtf::LN_LFOTABLE:
4616 {
4617 m_pImpl->GetListTable( )->SetLFOImport( true );
4618 ref->resolve( *m_pImpl->GetListTable() );
4619 m_pImpl->GetListTable( )->CreateNumberingRules( );
4620 m_pImpl->GetListTable( )->SetLFOImport( false );
4621 }
4622 break;
4623 case NS_ooxml::LN_THEMETABLE:
4624 ref->resolve ( *m_pImpl->GetThemeTable() );
4625 break;
4626 case NS_ooxml::LN_settings_settings:
4627 ref->resolve ( *m_pImpl->GetSettingsTable() );
4628 m_pImpl->ApplySettingsTable();
4629 break;
4630 default:
4631 OSL_ENSURE( false, "which table is to be filled here?");
4632 }
4633 m_pImpl->SetAnyTableImport(false);
4634 }
4635 /*-- 09.06.2006 09:52:16---------------------------------------------------
4636
4637 -----------------------------------------------------------------------*/
lcl_substream(Id rName,::writerfilter::Reference<Stream>::Pointer_t ref)4638 void DomainMapper::lcl_substream(Id rName, ::writerfilter::Reference<Stream>::Pointer_t ref)
4639 {
4640 m_pImpl->appendTableManager( );
4641 m_pImpl->getTableManager().startLevel();
4642
4643 //->debug
4644 //string sName = (*QNameToString::Instance())(rName);
4645 //--<debug
4646 //import of page header/footer
4647
4648 /* WRITERFILTERSTATUS: table: attributedata */
4649 switch( rName )
4650 {
4651 case NS_rtf::LN_headerl:
4652 /* WRITERFILTERSTATUS: done: 50, planned: 2, spent: 0 */
4653
4654 m_pImpl->PushPageHeader(SectionPropertyMap::PAGE_LEFT);
4655 break;
4656 case NS_rtf::LN_headerr:
4657 /* WRITERFILTERSTATUS: done: 50, planned: 2, spent: 0 */
4658
4659 m_pImpl->PushPageHeader(SectionPropertyMap::PAGE_RIGHT);
4660 break;
4661 case NS_rtf::LN_headerf:
4662 /* WRITERFILTERSTATUS: done: 50, planned: 2, spent: 0 */
4663
4664 m_pImpl->PushPageHeader(SectionPropertyMap::PAGE_FIRST);
4665 break;
4666 case NS_rtf::LN_footerl:
4667 /* WRITERFILTERSTATUS: done: 50, planned: 2, spent: 0 */
4668
4669 m_pImpl->PushPageFooter(SectionPropertyMap::PAGE_LEFT);
4670 break;
4671 case NS_rtf::LN_footerr:
4672 /* WRITERFILTERSTATUS: done: 50, planned: 2, spent: 0 */
4673
4674 m_pImpl->PushPageFooter(SectionPropertyMap::PAGE_RIGHT);
4675 break;
4676 case NS_rtf::LN_footerf:
4677 /* WRITERFILTERSTATUS: done: 50, planned: 2, spent: 0 */
4678
4679 m_pImpl->PushPageFooter(SectionPropertyMap::PAGE_FIRST);
4680 break;
4681 case NS_rtf::LN_footnote:
4682 case NS_rtf::LN_endnote:
4683 m_pImpl->PushFootOrEndnote( NS_rtf::LN_footnote == rName );
4684 break;
4685 case NS_rtf::LN_annotation :
4686 m_pImpl->PushAnnotation();
4687 break;
4688 }
4689 ref->resolve(*this);
4690 switch( rName )
4691 {
4692 case NS_rtf::LN_headerl:
4693 case NS_rtf::LN_headerr:
4694 case NS_rtf::LN_headerf:
4695 case NS_rtf::LN_footerl:
4696 case NS_rtf::LN_footerr:
4697 case NS_rtf::LN_footerf:
4698 m_pImpl->PopPageHeaderFooter();
4699 break;
4700 case NS_rtf::LN_footnote:
4701 case NS_rtf::LN_endnote:
4702 m_pImpl->PopFootOrEndnote();
4703 break;
4704 case NS_rtf::LN_annotation :
4705 m_pImpl->PopAnnotation();
4706 break;
4707 }
4708
4709 m_pImpl->getTableManager().endLevel();
4710 m_pImpl->popTableManager( );
4711 }
4712 /*-- 09.06.2006 09:52:16---------------------------------------------------
4713
4714 -----------------------------------------------------------------------*/
lcl_info(const string &)4715 void DomainMapper::lcl_info(const string & /*info_*/)
4716 {
4717 }
4718
handleUnderlineType(const sal_Int32 nIntValue,const::boost::shared_ptr<PropertyMap> pContext)4719 void DomainMapper::handleUnderlineType(const sal_Int32 nIntValue, const ::boost::shared_ptr<PropertyMap> pContext)
4720 {
4721 sal_Int16 eUnderline = awt::FontUnderline::NONE;
4722
4723 switch(nIntValue)
4724 {
4725 case 0: eUnderline = awt::FontUnderline::NONE; break;
4726 case 2: pContext->Insert(PROP_CHAR_WORD_MODE, true, uno::makeAny( true ) ); // TODO: how to get rid of it?
4727 case 1: eUnderline = awt::FontUnderline::SINGLE; break;
4728 case 3: eUnderline = awt::FontUnderline::DOUBLE; break;
4729 case 4: eUnderline = awt::FontUnderline::DOTTED; break;
4730 case 7: eUnderline = awt::FontUnderline::DASH; break;
4731 case 9: eUnderline = awt::FontUnderline::DASHDOT; break;
4732 case 10:eUnderline = awt::FontUnderline::DASHDOTDOT; break;
4733 case 6: eUnderline = awt::FontUnderline::BOLD; break;
4734 case 11:eUnderline = awt::FontUnderline::WAVE; break;
4735 case 20:eUnderline = awt::FontUnderline::BOLDDOTTED; break;
4736 case 23:eUnderline = awt::FontUnderline::BOLDDASH; break;
4737 case 39:eUnderline = awt::FontUnderline::LONGDASH; break;
4738 case 55:eUnderline = awt::FontUnderline::BOLDLONGDASH; break;
4739 case 25:eUnderline = awt::FontUnderline::BOLDDASHDOT; break;
4740 case 26:eUnderline = awt::FontUnderline::BOLDDASHDOTDOT;break;
4741 case 27:eUnderline = awt::FontUnderline::BOLDWAVE; break;
4742 case 43:eUnderline = awt::FontUnderline::DOUBLEWAVE; break;
4743 default: ;
4744 }
4745 pContext->Insert(PROP_CHAR_UNDERLINE, true, uno::makeAny( eUnderline ) );
4746 }
4747
handleParaJustification(const sal_Int32 nIntValue,const::boost::shared_ptr<PropertyMap> pContext,const bool bExchangeLeftRight)4748 void DomainMapper::handleParaJustification(const sal_Int32 nIntValue, const ::boost::shared_ptr<PropertyMap> pContext, const bool bExchangeLeftRight)
4749 {
4750 sal_Int16 nAdjust = 0;
4751 sal_Int16 nLastLineAdjust = 0;
4752 switch(nIntValue)
4753 {
4754 case 1:
4755 nAdjust = style::ParagraphAdjust_CENTER;
4756 break;
4757 case 2:
4758 nAdjust = static_cast< sal_Int16 > (bExchangeLeftRight ? style::ParagraphAdjust_LEFT : style::ParagraphAdjust_RIGHT);
4759 break;
4760 case 4:
4761 nLastLineAdjust = style::ParagraphAdjust_BLOCK;
4762 //no break;
4763 case 3:
4764 nAdjust = style::ParagraphAdjust_BLOCK;
4765 break;
4766 case 0:
4767 default:
4768 nAdjust = static_cast< sal_Int16 > (bExchangeLeftRight ? style::ParagraphAdjust_RIGHT : style::ParagraphAdjust_LEFT);
4769 break;
4770 }
4771 pContext->Insert( PROP_PARA_ADJUST, true, uno::makeAny( nAdjust ) );
4772 pContext->Insert( PROP_PARA_LAST_LINE_ADJUST, true, uno::makeAny( nLastLineAdjust ) );
4773 }
4774
getColorFromIndex(const sal_Int32 nIndex,sal_Int32 & nColor)4775 bool DomainMapper::getColorFromIndex(const sal_Int32 nIndex, sal_Int32 &nColor)
4776 {
4777 nColor = 0;
4778 if ((nIndex < 1) || (nIndex > 16))
4779 return false;
4780
4781 switch (nIndex)
4782 {
4783 case 1: nColor=0x000000; break; //black
4784 case 2: nColor=0x0000ff; break; //blue
4785 case 3: nColor=0x00ffff; break; //cyan
4786 case 4: nColor=0x00ff00; break; //green
4787 case 5: nColor=0xff00ff; break; //magenta
4788 case 6: nColor=0xff0000; break; //red
4789 case 7: nColor=0xffff00; break; //yellow
4790 case 8: nColor=0xffffff; break; //white
4791 case 9: nColor=0x000080; break;//dark blue
4792 case 10: nColor=0x008080; break; //dark cyan
4793 case 11: nColor=0x008000; break; //dark green
4794 case 12: nColor=0x800080; break; //dark magenta
4795 case 13: nColor=0x800000; break; //dark red
4796 case 14: nColor=0x808000; break; //dark yellow
4797 case 15: nColor=0x808080; break; //dark gray
4798 case 16: nColor=0xC0C0C0; break; //light gray
4799 default:
4800 return false;
4801 }
4802 return true;
4803 }
4804
getEmphasisValue(const sal_Int32 nIntValue)4805 sal_Int16 DomainMapper::getEmphasisValue(const sal_Int32 nIntValue)
4806 {
4807 switch (nIntValue)
4808 {
4809 case 1:
4810 return com::sun::star::text::FontEmphasis::DOT_ABOVE;
4811 case 2:
4812 return com::sun::star::text::FontEmphasis::ACCENT_ABOVE;
4813 case 3:
4814 return com::sun::star::text::FontEmphasis::CIRCLE_ABOVE;
4815 case 4:
4816 return com::sun::star::text::FontEmphasis::DOT_BELOW;
4817 default:
4818 return com::sun::star::text::FontEmphasis::NONE;
4819 }
4820 }
4821
getBracketStringFromEnum(const sal_Int32 nIntValue,const bool bIsPrefix)4822 rtl::OUString DomainMapper::getBracketStringFromEnum(const sal_Int32 nIntValue, const bool bIsPrefix)
4823 {
4824 switch(nIntValue)
4825 {
4826 case 1:
4827 if (bIsPrefix)
4828 return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( "(" ));
4829 return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( ")" ));
4830
4831 case 2:
4832 if (bIsPrefix)
4833 return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( "[" ));
4834 return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( "]" ));
4835
4836 case 3:
4837 if (bIsPrefix)
4838 return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( "<" ));
4839 return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( ">" ));
4840
4841 case 4:
4842 if (bIsPrefix)
4843 return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( "{" ));
4844 return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( "}" ));
4845
4846 case 0:
4847 default:
4848 return rtl::OUString();
4849 }
4850 }
4851
getTabAlignFromValue(const sal_Int32 nIntValue)4852 com::sun::star::style::TabAlign DomainMapper::getTabAlignFromValue(const sal_Int32 nIntValue)
4853 {
4854 switch (nIntValue)
4855 {
4856 case 0:
4857 case 4: // bar not supported
4858 case 5: // num not supported
4859 return com::sun::star::style::TabAlign_LEFT;
4860 case 1:
4861 return com::sun::star::style::TabAlign_CENTER;
4862 case 2:
4863 return com::sun::star::style::TabAlign_RIGHT;
4864 case 3:
4865 return com::sun::star::style::TabAlign_DECIMAL;
4866 }
4867 return com::sun::star::style::TabAlign_LEFT;
4868 }
4869
getFillCharFromValue(const sal_Int32 nIntValue)4870 sal_Unicode DomainMapper::getFillCharFromValue(const sal_Int32 nIntValue)
4871 {
4872 switch (nIntValue)
4873 {
4874 case 1: // dot
4875 return sal_Unicode(0x002e);
4876 case 2: // hyphen
4877 return sal_Unicode(0x002d);
4878 case 3: // underscore
4879 case 4: // heavy FIXME ???
4880 return sal_Unicode(0x005f);
4881 case NS_ooxml::LN_Value_ST_TabTlc_middleDot: // middleDot
4882 return sal_Unicode(0x00b7);
4883 case 0: // none
4884 default:
4885 return sal_Unicode(0x0020); // blank space
4886 }
4887 }
4888 /*-- 18.07.2007 14:59:00---------------------------------------------------
4889
4890 -----------------------------------------------------------------------*/
IsOOXMLImport() const4891 bool DomainMapper::IsOOXMLImport() const
4892 {
4893 return m_pImpl->IsOOXMLImport();
4894 }
4895 /*-- 18.07.2007 16:03:14---------------------------------------------------
4896
4897 -----------------------------------------------------------------------*/
GetTextFactory() const4898 uno::Reference < lang::XMultiServiceFactory > DomainMapper::GetTextFactory() const
4899 {
4900 return m_pImpl->GetTextFactory();
4901 }
4902 /*-- 12.11.2007 10:41:01---------------------------------------------------
4903
4904 -----------------------------------------------------------------------*/
4905 /*-- 31.01.2008 18:19:44---------------------------------------------------
4906
4907 -----------------------------------------------------------------------*/
GetCurrentTextRange()4908 uno::Reference< text::XTextRange > DomainMapper::GetCurrentTextRange()
4909 {
4910 return m_pImpl->GetTopTextAppend()->getEnd();
4911 }
4912
4913 /*-- 05.02.2008 10:26:26---------------------------------------------------
4914
4915 -----------------------------------------------------------------------*/
getOrCreateCharStyle(PropertyValueVector_t & rCharProperties)4916 ::rtl::OUString DomainMapper::getOrCreateCharStyle( PropertyValueVector_t& rCharProperties )
4917 {
4918 StyleSheetTablePtr pStyleSheets = m_pImpl->GetStyleSheetTable();
4919 return pStyleSheets->getOrCreateCharStyle( rCharProperties );
4920 }
4921
GetListTable()4922 ListsManager::Pointer DomainMapper::GetListTable( )
4923 {
4924 return m_pImpl->GetListTable( );
4925 }
4926
GetStyleSheetTable()4927 StyleSheetTablePtr DomainMapper::GetStyleSheetTable( )
4928 {
4929 return m_pImpl->GetStyleSheetTable( );
4930 }
4931
4932 } //namespace dmapper
4933 } //namespace writerfilter
4934