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