bump product version to 5.0.4.1
[LibreOffice.git] / xmloff / source / style / PageMasterExportPropMapper.cxx
blobfa9375738ff5a18b1bd66e4d76a96b593559b765
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #include "PageMasterExportPropMapper.hxx"
21 #include <xmloff/xmltoken.hxx>
22 #include <comphelper/types.hxx>
23 #include <com/sun/star/table/BorderLine2.hpp>
24 #include <xmloff/PageMasterStyleMap.hxx>
25 #include <rtl/ustrbuf.hxx>
26 #include <comphelper/extract.hxx>
28 //UUUU
29 #include <xmloff/txtprmap.hxx>
31 using namespace ::com::sun::star;
32 using namespace ::com::sun::star::uno;
33 using namespace ::com::sun::star::beans;
34 using namespace ::comphelper;
35 using namespace ::xmloff::token;
37 static inline bool lcl_HasSameLineWidth( const table::BorderLine2& rLine1, const table::BorderLine2& rLine2 )
39 return (rLine1.InnerLineWidth == rLine2.InnerLineWidth) &&
40 (rLine1.OuterLineWidth == rLine2.OuterLineWidth) &&
41 (rLine1.LineDistance == rLine2.LineDistance) &&
42 (rLine1.LineWidth == rLine2.LineWidth);
45 inline bool operator==( const table::BorderLine2& rLine1, const table::BorderLine2& rLine2 )
47 return (rLine1.Color == rLine2.Color) &&
48 lcl_HasSameLineWidth( rLine1, rLine2 ) &&
49 ( rLine1.LineStyle == rLine2.LineStyle );
52 static inline void lcl_RemoveState( XMLPropertyState* pState )
54 pState->mnIndex = -1;
55 pState->maValue.clear();
58 static void lcl_RemoveStateIfZero16( XMLPropertyState* pState )
60 sal_Int16 nValue = sal_Int16();
61 if( (pState->maValue >>= nValue) && !nValue )
62 lcl_RemoveState( pState );
65 static void lcl_AddState(::std::vector< XMLPropertyState >& rPropState, sal_Int32 nIndex, const OUString& rProperty, uno::Reference< beans::XPropertySet >& xProps)
67 if(::cppu::any2bool(xProps->getPropertyValue(rProperty)))
68 rPropState.push_back(XMLPropertyState (nIndex, css::uno::Any(true)));
71 // helper struct to handle equal XMLPropertyState's for page, header and footer
73 struct XMLPropertyStateBuffer
75 XMLPropertyState* pPMMarginAll;
76 XMLPropertyState* pPMMarginTop;
77 XMLPropertyState* pPMMarginBottom;
78 XMLPropertyState* pPMMarginLeft;
79 XMLPropertyState* pPMMarginRight;
81 XMLPropertyState* pPMBorderAll;
82 XMLPropertyState* pPMBorderTop;
83 XMLPropertyState* pPMBorderBottom;
84 XMLPropertyState* pPMBorderLeft;
85 XMLPropertyState* pPMBorderRight;
87 XMLPropertyState* pPMBorderWidthAll;
88 XMLPropertyState* pPMBorderWidthTop;
89 XMLPropertyState* pPMBorderWidthBottom;
90 XMLPropertyState* pPMBorderWidthLeft;
91 XMLPropertyState* pPMBorderWidthRight;
93 XMLPropertyState* pPMPaddingAll;
94 XMLPropertyState* pPMPaddingTop;
95 XMLPropertyState* pPMPaddingBottom;
96 XMLPropertyState* pPMPaddingLeft;
97 XMLPropertyState* pPMPaddingRight;
99 XMLPropertyStateBuffer();
100 void ContextFilter( ::std::vector< XMLPropertyState >& rPropState );
103 XMLPropertyStateBuffer::XMLPropertyStateBuffer()
104 : pPMMarginAll( NULL )
105 , pPMMarginTop( NULL )
106 , pPMMarginBottom( NULL )
107 , pPMMarginLeft( NULL )
108 , pPMMarginRight( NULL )
110 pPMBorderAll( NULL ),
111 pPMBorderTop( NULL ),
112 pPMBorderBottom( NULL ),
113 pPMBorderLeft( NULL ),
114 pPMBorderRight( NULL ),
116 pPMBorderWidthAll( NULL ),
117 pPMBorderWidthTop( NULL ),
118 pPMBorderWidthBottom( NULL ),
119 pPMBorderWidthLeft( NULL ),
120 pPMBorderWidthRight( NULL ),
122 pPMPaddingAll( NULL ),
123 pPMPaddingTop( NULL ),
124 pPMPaddingBottom( NULL ),
125 pPMPaddingLeft( NULL ),
126 pPMPaddingRight( NULL )
130 void XMLPropertyStateBuffer::ContextFilter( ::std::vector< XMLPropertyState >& )
132 if (pPMMarginAll)
134 lcl_RemoveState(pPMMarginAll); // #i117696# do not write fo:margin
137 if( pPMBorderAll )
139 if( pPMBorderTop && pPMBorderBottom && pPMBorderLeft && pPMBorderRight )
141 table::BorderLine2 aLineTop, aLineBottom, aLineLeft, aLineRight;
143 pPMBorderTop->maValue >>= aLineTop;
144 pPMBorderBottom->maValue >>= aLineBottom;
145 pPMBorderLeft->maValue >>= aLineLeft;
146 pPMBorderRight->maValue >>= aLineRight;
148 if( (aLineTop == aLineBottom) && (aLineBottom == aLineLeft) && (aLineLeft == aLineRight) )
150 lcl_RemoveState( pPMBorderTop );
151 lcl_RemoveState( pPMBorderBottom );
152 lcl_RemoveState( pPMBorderLeft );
153 lcl_RemoveState( pPMBorderRight );
155 else
156 lcl_RemoveState( pPMBorderAll );
158 else
159 lcl_RemoveState( pPMBorderAll );
162 if( pPMBorderWidthAll )
164 if( pPMBorderWidthTop && pPMBorderWidthBottom && pPMBorderWidthLeft && pPMBorderWidthRight )
166 table::BorderLine2 aLineTop, aLineBottom, aLineLeft, aLineRight;
168 pPMBorderWidthTop->maValue >>= aLineTop;
169 pPMBorderWidthBottom->maValue >>= aLineBottom;
170 pPMBorderWidthLeft->maValue >>= aLineLeft;
171 pPMBorderWidthRight->maValue >>= aLineRight;
173 if( lcl_HasSameLineWidth( aLineTop, aLineBottom ) &&
174 lcl_HasSameLineWidth( aLineBottom, aLineLeft ) &&
175 lcl_HasSameLineWidth( aLineLeft, aLineRight ) )
177 lcl_RemoveState( pPMBorderWidthTop );
178 lcl_RemoveState( pPMBorderWidthBottom );
179 lcl_RemoveState( pPMBorderWidthLeft );
180 lcl_RemoveState( pPMBorderWidthRight );
182 else
183 lcl_RemoveState( pPMBorderWidthAll );
185 else
186 lcl_RemoveState( pPMBorderWidthAll );
189 if( pPMPaddingAll )
191 if( pPMPaddingTop && pPMPaddingBottom && pPMPaddingLeft && pPMPaddingRight )
193 sal_Int32 nTop = 0, nBottom = 0, nLeft = 0, nRight = 0;
195 pPMPaddingTop->maValue >>= nTop;
196 pPMPaddingBottom->maValue >>= nBottom;
197 pPMPaddingLeft->maValue >>= nLeft;
198 pPMPaddingRight->maValue >>= nRight;
200 if( (nTop == nBottom) && (nBottom == nLeft) && (nLeft == nRight) )
202 lcl_RemoveState( pPMPaddingTop );
203 lcl_RemoveState( pPMPaddingBottom );
204 lcl_RemoveState( pPMPaddingLeft );
205 lcl_RemoveState( pPMPaddingRight );
207 else
208 lcl_RemoveState( pPMPaddingAll );
210 else
211 lcl_RemoveState( pPMPaddingAll );
215 XMLPageMasterExportPropMapper::XMLPageMasterExportPropMapper(
216 const rtl::Reference< XMLPropertySetMapper >& rMapper,
217 SvXMLExport& rExport ) :
218 SvXMLExportPropertyMapper( rMapper ),
219 aBackgroundImageExport( rExport ),
220 aTextColumnsExport( rExport ),
221 aFootnoteSeparatorExport( rExport )
225 XMLPageMasterExportPropMapper::~XMLPageMasterExportPropMapper()
229 void XMLPageMasterExportPropMapper::handleElementItem(
230 SvXMLExport&,
231 const XMLPropertyState& rProperty,
232 SvXmlExportFlags /*nFlags*/,
233 const ::std::vector< XMLPropertyState >* pProperties,
234 sal_uInt32 nIdx ) const
236 XMLPageMasterExportPropMapper* pThis = const_cast<XMLPageMasterExportPropMapper*>(this);
238 sal_uInt32 nContextId = getPropertySetMapper()->GetEntryContextId( rProperty.mnIndex );
239 switch( nContextId )
241 case CTF_PM_GRAPHICURL:
242 case CTF_PM_HEADERGRAPHICURL:
243 case CTF_PM_FOOTERGRAPHICURL:
245 assert(pProperties);
246 assert(nIdx >= 2 && "horrible array ordering borked again");
247 sal_Int32 nPos(-1);
248 sal_Int32 nFilter(-1);
249 switch( nContextId )
251 case CTF_PM_GRAPHICURL:
252 nPos = CTF_PM_GRAPHICPOSITION;
253 nFilter = CTF_PM_GRAPHICFILTER;
254 break;
255 case CTF_PM_HEADERGRAPHICURL:
256 nPos = CTF_PM_HEADERGRAPHICPOSITION;
257 nFilter = CTF_PM_HEADERGRAPHICFILTER;
258 break;
259 case CTF_PM_FOOTERGRAPHICURL:
260 nPos = CTF_PM_FOOTERGRAPHICPOSITION;
261 nFilter = CTF_PM_FOOTERGRAPHICFILTER;
262 break;
263 default:
264 assert(false);
266 const Any* pPos = NULL;
267 const Any* pFilter = NULL;
268 sal_uInt32 nIndex(nIdx - 1);
269 const XMLPropertyState& rFilter = (*pProperties)[nIndex];
270 if (getPropertySetMapper()->GetEntryContextId(rFilter.mnIndex) == nFilter)
272 pFilter = &rFilter.maValue;
273 --nIndex;
275 const XMLPropertyState& rPos = (*pProperties)[nIndex];
276 if (getPropertySetMapper()->GetEntryContextId(rPos.mnIndex) == nPos)
278 pPos = &rPos.maValue;
279 --nIndex;
281 sal_uInt32 nPropIndex = rProperty.mnIndex;
282 pThis->aBackgroundImageExport.exportXML( rProperty.maValue, pPos, pFilter, NULL,
283 getPropertySetMapper()->GetEntryNameSpace( nPropIndex ),
284 getPropertySetMapper()->GetEntryXMLName( nPropIndex ) );
286 break;
287 case CTF_PM_TEXTCOLUMNS:
288 pThis->aTextColumnsExport.exportXML( rProperty.maValue );
289 break;
290 case CTF_PM_FTN_LINE_WEIGHT:
291 pThis->aFootnoteSeparatorExport.exportXML( pProperties, nIdx,
292 getPropertySetMapper());
293 break;
297 void XMLPageMasterExportPropMapper::handleSpecialItem(
298 SvXMLAttributeList&,
299 const XMLPropertyState&,
300 const SvXMLUnitConverter&,
301 const SvXMLNamespaceMap&,
302 const ::std::vector< XMLPropertyState >*,
303 sal_uInt32 /*nIdx*/) const
307 void XMLPageMasterExportPropMapper::ContextFilter(
308 bool bEnableFoFontFamily,
309 ::std::vector< XMLPropertyState >& rPropState,
310 Reference< XPropertySet > rPropSet ) const
312 XMLPropertyStateBuffer aPageBuffer;
313 XMLPropertyStateBuffer aHeaderBuffer;
314 XMLPropertyStateBuffer aFooterBuffer;
316 XMLPropertyState* pPMHeaderHeight = NULL;
317 XMLPropertyState* pPMHeaderMinHeight = NULL;
318 XMLPropertyState* pPMHeaderDynamic = NULL;
320 XMLPropertyState* pPMFooterHeight = NULL;
321 XMLPropertyState* pPMFooterMinHeight = NULL;
322 XMLPropertyState* pPMFooterDynamic = NULL;
324 XMLPropertyState* pPMScaleTo = NULL;
325 XMLPropertyState* pPMScaleToPages = NULL;
326 XMLPropertyState* pPMScaleToX = NULL;
327 XMLPropertyState* pPMScaleToY = NULL;
328 XMLPropertyState* pPMStandardMode = NULL;
329 XMLPropertyState* pPMGridBaseWidth = NULL;
330 // same as pPMGridSnapTo but for backward compatibility only
331 XMLPropertyState* pPMGridSnapToChars = NULL;
332 XMLPropertyState* pPMGridSnapTo = NULL;
334 XMLPropertyState* pPrint = NULL;
336 //UUUU
337 XMLPropertyState* pRepeatOffsetX = NULL;
338 XMLPropertyState* pRepeatOffsetY = NULL;
339 XMLPropertyState* pHeaderRepeatOffsetX = NULL;
340 XMLPropertyState* pHeaderRepeatOffsetY = NULL;
341 XMLPropertyState* pFooterRepeatOffsetX = NULL;
342 XMLPropertyState* pFooterRepeatOffsetY = NULL;
344 rtl::Reference < XMLPropertySetMapper > aPropMapper(getPropertySetMapper());
346 for( ::std::vector< XMLPropertyState >::iterator aIter = rPropState.begin(); aIter != rPropState.end(); ++aIter )
348 XMLPropertyState *pProp = &(*aIter);
349 sal_Int16 nContextId = aPropMapper->GetEntryContextId( pProp->mnIndex );
350 sal_Int16 nFlag = nContextId & CTF_PM_FLAGMASK;
351 sal_Int16 nSimpleId = nContextId & (~CTF_PM_FLAGMASK | XML_PM_CTF_START);
352 sal_Int16 nPrintId = nContextId & CTF_PM_PRINTMASK;
354 XMLPropertyStateBuffer* pBuffer;
355 switch( nFlag )
357 case CTF_PM_HEADERFLAG: pBuffer = &aHeaderBuffer; break;
358 case CTF_PM_FOOTERFLAG: pBuffer = &aFooterBuffer; break;
359 default: pBuffer = &aPageBuffer; break;
362 switch( nSimpleId )
364 case CTF_PM_MARGINALL: pBuffer->pPMMarginAll = pProp; break;
365 case CTF_PM_MARGINTOP: pBuffer->pPMMarginTop = pProp; break;
366 case CTF_PM_MARGINBOTTOM: pBuffer->pPMMarginBottom = pProp; break;
367 case CTF_PM_MARGINLEFT: pBuffer->pPMMarginLeft = pProp; break;
368 case CTF_PM_MARGINRIGHT: pBuffer->pPMMarginRight = pProp; break;
369 case CTF_PM_BORDERALL: pBuffer->pPMBorderAll = pProp; break;
370 case CTF_PM_BORDERTOP: pBuffer->pPMBorderTop = pProp; break;
371 case CTF_PM_BORDERBOTTOM: pBuffer->pPMBorderBottom = pProp; break;
372 case CTF_PM_BORDERLEFT: pBuffer->pPMBorderLeft = pProp; break;
373 case CTF_PM_BORDERRIGHT: pBuffer->pPMBorderRight = pProp; break;
374 case CTF_PM_BORDERWIDTHALL: pBuffer->pPMBorderWidthAll = pProp; break;
375 case CTF_PM_BORDERWIDTHTOP: pBuffer->pPMBorderWidthTop = pProp; break;
376 case CTF_PM_BORDERWIDTHBOTTOM: pBuffer->pPMBorderWidthBottom = pProp; break;
377 case CTF_PM_BORDERWIDTHLEFT: pBuffer->pPMBorderWidthLeft = pProp; break;
378 case CTF_PM_BORDERWIDTHRIGHT: pBuffer->pPMBorderWidthRight = pProp; break;
379 case CTF_PM_PADDINGALL: pBuffer->pPMPaddingAll = pProp; break;
380 case CTF_PM_PADDINGTOP: pBuffer->pPMPaddingTop = pProp; break;
381 case CTF_PM_PADDINGBOTTOM: pBuffer->pPMPaddingBottom = pProp; break;
382 case CTF_PM_PADDINGLEFT: pBuffer->pPMPaddingLeft = pProp; break;
383 case CTF_PM_PADDINGRIGHT: pBuffer->pPMPaddingRight = pProp; break;
386 switch( nContextId )
388 case CTF_PM_HEADERHEIGHT: pPMHeaderHeight = pProp; break;
389 case CTF_PM_HEADERMINHEIGHT: pPMHeaderMinHeight = pProp; break;
390 case CTF_PM_HEADERDYNAMIC: pPMHeaderDynamic = pProp; break;
391 case CTF_PM_FOOTERHEIGHT: pPMFooterHeight = pProp; break;
392 case CTF_PM_FOOTERMINHEIGHT: pPMFooterMinHeight = pProp; break;
393 case CTF_PM_FOOTERDYNAMIC: pPMFooterDynamic = pProp; break;
394 case CTF_PM_SCALETO: pPMScaleTo = pProp; break;
395 case CTF_PM_SCALETOPAGES: pPMScaleToPages = pProp; break;
396 case CTF_PM_SCALETOX: pPMScaleToX = pProp; break;
397 case CTF_PM_SCALETOY: pPMScaleToY = pProp; break;
398 case CTF_PM_STANDARD_MODE: pPMStandardMode = pProp; break;
399 case CTP_PM_GRID_BASE_WIDTH: pPMGridBaseWidth = pProp; break;
400 case CTP_PM_GRID_SNAP_TO_CHARS: pPMGridSnapToChars = pProp; break;
401 case CTP_PM_GRID_SNAP_TO: pPMGridSnapTo = pProp; break;
403 //UUUU
404 case CTF_PM_REPEAT_OFFSET_X:
405 pRepeatOffsetX = pProp;
406 break;
408 //UUUU
409 case CTF_PM_REPEAT_OFFSET_Y:
410 pRepeatOffsetY = pProp;
411 break;
413 //UUUU
414 case CTF_PM_HEADERREPEAT_OFFSET_X:
415 pHeaderRepeatOffsetX = pProp;
416 break;
418 //UUUU
419 case CTF_PM_HEADERREPEAT_OFFSET_Y:
420 pHeaderRepeatOffsetY = pProp;
421 break;
423 //UUUU
424 case CTF_PM_FOOTERREPEAT_OFFSET_X:
425 pFooterRepeatOffsetX = pProp;
426 break;
428 //UUUU
429 case CTF_PM_FOOTERREPEAT_OFFSET_Y:
430 pFooterRepeatOffsetY = pProp;
431 break;
433 //UUUU Sort out empty entries
434 case CTF_PM_FILLGRADIENTNAME:
435 case CTF_PM_FILLHATCHNAME:
436 case CTF_PM_FILLBITMAPNAME:
437 case CTF_PM_FILLTRANSNAME:
439 case CTF_PM_HEADERFILLGRADIENTNAME:
440 case CTF_PM_HEADERFILLHATCHNAME:
441 case CTF_PM_HEADERFILLBITMAPNAME:
442 case CTF_PM_HEADERFILLTRANSNAME:
444 case CTF_PM_FOOTERFILLGRADIENTNAME:
445 case CTF_PM_FOOTERFILLHATCHNAME:
446 case CTF_PM_FOOTERFILLBITMAPNAME:
447 case CTF_PM_FOOTERFILLTRANSNAME:
449 rtl::OUString aStr;
451 if( (pProp->maValue >>= aStr) && 0 == aStr.getLength() )
453 pProp->mnIndex = -1;
456 break;
460 if (nPrintId == CTF_PM_PRINTMASK)
462 pPrint = pProp;
463 lcl_RemoveState(pPrint);
467 //UUUU These entries need to be reduced to a single one for XML export.
468 // Both would be exported as 'draw:tile-repeat-offset' following a percent
469 // value and a 'vertical' or 'horizontal' tag as mark. If both would be active
470 // and both would be exported this would create an XML error (same property twice)
471 if(pRepeatOffsetX && pRepeatOffsetY)
473 sal_Int32 nOffset(0);
475 if((pRepeatOffsetX->maValue >>= nOffset) && (!nOffset))
477 pRepeatOffsetX->mnIndex = -1;
479 else
481 pRepeatOffsetY->mnIndex = -1;
485 //UUUU Same as above for Header
486 if(pHeaderRepeatOffsetX && pHeaderRepeatOffsetY)
488 sal_Int32 nOffset(0);
490 if((pHeaderRepeatOffsetX->maValue >>= nOffset) && (!nOffset))
492 pHeaderRepeatOffsetX->mnIndex = -1;
494 else
496 pHeaderRepeatOffsetY->mnIndex = -1;
500 //UUUU Same as above for Footer
501 if(pFooterRepeatOffsetX && pFooterRepeatOffsetY)
503 sal_Int32 nOffset(0);
505 if((pFooterRepeatOffsetX->maValue >>= nOffset) && (!nOffset))
507 pFooterRepeatOffsetX->mnIndex = -1;
509 else
511 pFooterRepeatOffsetY->mnIndex = -1;
515 if( pPMStandardMode && !getBOOL(pPMStandardMode->maValue) )
517 lcl_RemoveState(pPMStandardMode);
518 if( pPMGridBaseWidth )
519 lcl_RemoveState(pPMGridBaseWidth);
520 if( pPMGridSnapToChars )
521 lcl_RemoveState(pPMGridSnapToChars);
522 if (pPMGridSnapTo)
524 lcl_RemoveState(pPMGridSnapTo);
528 if( pPMGridBaseWidth && pPMStandardMode )
529 lcl_RemoveState(pPMStandardMode);
531 aPageBuffer.ContextFilter( rPropState );
532 aHeaderBuffer.ContextFilter( rPropState );
533 aFooterBuffer.ContextFilter( rPropState );
535 if( pPMHeaderHeight && (!pPMHeaderDynamic || (pPMHeaderDynamic && getBOOL( pPMHeaderDynamic->maValue ))) )
536 lcl_RemoveState( pPMHeaderHeight );
537 if( pPMHeaderMinHeight && pPMHeaderDynamic && !getBOOL( pPMHeaderDynamic->maValue ) )
538 lcl_RemoveState( pPMHeaderMinHeight );
539 if( pPMHeaderDynamic )
540 lcl_RemoveState( pPMHeaderDynamic );
542 if( pPMFooterHeight && (!pPMFooterDynamic || (pPMFooterDynamic && getBOOL( pPMFooterDynamic->maValue ))) )
543 lcl_RemoveState( pPMFooterHeight );
544 if( pPMFooterMinHeight && pPMFooterDynamic && !getBOOL( pPMFooterDynamic->maValue ) )
545 lcl_RemoveState( pPMFooterMinHeight );
546 if( pPMFooterDynamic )
547 lcl_RemoveState( pPMFooterDynamic );
549 if( pPMScaleTo )
550 lcl_RemoveStateIfZero16( pPMScaleTo );
551 if( pPMScaleToPages )
552 lcl_RemoveStateIfZero16( pPMScaleToPages );
553 if( pPMScaleToX )
554 lcl_RemoveStateIfZero16( pPMScaleToX );
555 if( pPMScaleToY )
556 lcl_RemoveStateIfZero16( pPMScaleToY );
558 if (pPrint)
560 lcl_AddState(rPropState, aPropMapper->FindEntryIndex(CTF_PM_PRINT_ANNOTATIONS), "PrintAnnotations", rPropSet);
561 lcl_AddState(rPropState, aPropMapper->FindEntryIndex(CTF_PM_PRINT_CHARTS), "PrintCharts", rPropSet);
562 lcl_AddState(rPropState, aPropMapper->FindEntryIndex(CTF_PM_PRINT_DRAWING), "PrintDrawing", rPropSet);
563 lcl_AddState(rPropState, aPropMapper->FindEntryIndex(CTF_PM_PRINT_FORMULAS), "PrintFormulas", rPropSet);
564 lcl_AddState(rPropState, aPropMapper->FindEntryIndex(CTF_PM_PRINT_GRID), "PrintGrid", rPropSet);
565 lcl_AddState(rPropState, aPropMapper->FindEntryIndex(CTF_PM_PRINT_HEADERS), "PrintHeaders", rPropSet);
566 lcl_AddState(rPropState, aPropMapper->FindEntryIndex(CTF_PM_PRINT_OBJECTS), "PrintObjects", rPropSet);
567 lcl_AddState(rPropState, aPropMapper->FindEntryIndex(CTF_PM_PRINT_ZEROVALUES), "PrintZeroValues", rPropSet);
570 SvXMLExportPropertyMapper::ContextFilter(bEnableFoFontFamily, rPropState, rPropSet);
573 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */