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 "precompiled_reportdesign.hxx"
24 #include "xmlHelper.hxx"
25 #include <xmloff/xmlnmspe.hxx>
26 #include <xmloff/xmltoken.hxx>
27 #include <xmloff/families.hxx>
28 #include <xmloff/controlpropertyhdl.hxx>
29 #include <connectivity/dbtools.hxx>
30 #include <comphelper/propertysethelper.hxx>
31 #include <comphelper/mediadescriptor.hxx>
32 #include <comphelper/genericpropertyset.hxx>
33 #include <com/sun/star/style/ParagraphAdjust.hpp>
34 #include <com/sun/star/awt/TextAlign.hpp>
35 #include <com/sun/star/beans/PropertyAttribute.hpp>
36 #include <com/sun/star/awt/FontDescriptor.hpp>
37 #include <com/sun/star/awt/TextAlign.hpp>
38 #include <com/sun/star/awt/ImagePosition.hpp>
39 #include <com/sun/star/awt/ImageScaleMode.hpp>
40 #include <xmloff/prstylei.hxx>
41 #include "xmlstrings.hrc"
42 #include "xmlEnums.hxx"
43 #include <xmloff/contextid.hxx>
44 #include <xmloff/txtprmap.hxx>
45 #include <com/sun/star/sdb/XOfficeDatabaseDocument.hpp>
46 #include <com/sun/star/table/BorderLine.hpp>
47 #include <xmloff/XMLConstantsPropertyHandler.hxx>
48 #include <com/sun/star/report/ForceNewPage.hpp>
49 #include <com/sun/star/report/ReportPrintOption.hpp>
50 #include <com/sun/star/report/GroupOn.hpp>
51 #include <com/sun/star/report/KeepTogether.hpp>
52 #include <xmloff/xmlement.hxx>
53 #include <com/sun/star/report/XReportControlFormat.hpp>
54 #include <com/sun/star/form/ListSourceType.hpp>
55 #include <com/sun/star/sdb/CommandType.hpp>
56 #include <com/sun/star/style/VerticalAlignment.hpp>
57 #include <xmloff/EnumPropertyHdl.hxx>
58
59 #define XML_RPT_ALGINMENT (XML_DB_TYPES_START+1)
60 namespace rptxml
61 {
62 using namespace ::xmloff::token;
63 using namespace ::com::sun::star::awt;
64 using namespace ::com::sun::star;
65 using namespace ::com::sun::star::sdb;
66 using namespace ::com::sun::star::form;
67 using namespace ::com::sun::star::beans;
DBG_NAME(rpt_OPropertyHandlerFactory)68 DBG_NAME(rpt_OPropertyHandlerFactory)
69 OPropertyHandlerFactory::OPropertyHandlerFactory()
70 {
71 DBG_CTOR(rpt_OPropertyHandlerFactory,NULL);
72 }
73 // -----------------------------------------------------------------------------
~OPropertyHandlerFactory()74 OPropertyHandlerFactory::~OPropertyHandlerFactory()
75 {
76 DBG_DTOR(rpt_OPropertyHandlerFactory,NULL);
77 }
78 // -----------------------------------------------------------------------------
GetPropertyHandler(sal_Int32 _nType) const79 const XMLPropertyHandler* OPropertyHandlerFactory::GetPropertyHandler(sal_Int32 _nType) const
80 {
81 const XMLPropertyHandler* pHandler = NULL;
82 sal_Int32 nType = _nType;
83 nType &= MID_FLAG_MASK;
84
85 switch(nType)
86 {
87 case XML_RPT_ALGINMENT:
88 {
89 static SvXMLEnumMapEntry __READONLY_DATA pXML_VerticalAlign_Enum[] =
90 {
91 { XML_TOP, style::VerticalAlignment_TOP },
92 { XML_MIDDLE, style::VerticalAlignment_MIDDLE },
93 { XML_BOTTOM, style::VerticalAlignment_BOTTOM },
94 { XML_TOKEN_INVALID, 0 }
95 };
96
97 pHandler = new XMLEnumPropertyHdl( pXML_VerticalAlign_Enum, ::getCppuType((const com::sun::star::style::VerticalAlignment*)0) );
98 }
99 break;
100 case (XML_SD_TYPES_START+34):
101 pHandler = new xmloff::ImageScaleModeHandler();
102 default:
103 ;
104 }
105
106 if ( !pHandler )
107 pHandler = OControlPropertyHandlerFactory::GetPropertyHandler(_nType);
108 else
109 PutHdlCache(nType, pHandler);
110 return pHandler;
111 }
112 // -----------------------------------------------------------------------------
113 #define MAP_CONST( name, prefix, token, type, context ) { name.ascii, name.length, XML_NAMESPACE_##prefix, XML_##token, type|XML_TYPE_PROP_TEXT, context, SvtSaveOptions::ODFVER_010 }
114 #define MAP_CONST_T( name, prefix, token, type, context ) { name.ascii, name.length, XML_NAMESPACE_##prefix, XML_##token, type|XML_TYPE_PROP_TABLE, context, SvtSaveOptions::ODFVER_010 }
115 #define MAP_CONST_ASCII_T( name, prefix, token, type, context ) { name, sizeof(name)-1,XML_NAMESPACE_##prefix, XML_##token, type|XML_TYPE_PROP_TABLE, context, SvtSaveOptions::ODFVER_010 }
116 #define MAP_CONST_P( name, prefix, token, type, context ) { name.ascii, name.length, XML_NAMESPACE_##prefix, XML_##token, type|XML_TYPE_PROP_PARAGRAPH, context, SvtSaveOptions::ODFVER_010 }
117 #define MAP_CONST_S( name, prefix, token, type, context ) { name, sizeof(name)-1, XML_NAMESPACE_##prefix, XML_##token, type|XML_TYPE_PROP_SECTION, context, SvtSaveOptions::ODFVER_010 }
118 #define MAP_CONST_ASCII( name, prefix, token, type, context ) { name, sizeof(name)-1, XML_NAMESPACE_##prefix, XML_##token, type|XML_TYPE_PROP_TEXT, context, SvtSaveOptions::ODFVER_010 }
119 #define GMAP( name, prefix, token, type, context ) { name.ascii, name.length, XML_NAMESPACE_##prefix, XML_##token, type|XML_TYPE_PROP_GRAPHIC, context, SvtSaveOptions::ODFVER_010 }
120 #define MAP_CONST_C_ASCII( name, prefix, token, type, context ) { name, sizeof(name)-1, XML_NAMESPACE_##prefix, XML_##token, type|XML_TYPE_PROP_TABLE_CELL, context, SvtSaveOptions::ODFVER_010 }
121 #define MAP_CONST_C( name, prefix, token, type, context ) { name, name.length, XML_NAMESPACE_##prefix, XML_##token, static_cast<sal_Int32>(type|XML_TYPE_PROP_TABLE_CELL), context, SvtSaveOptions::ODFVER_010 }
122 #define MAP_END() { NULL, 0, 0, XML_TOKEN_INVALID, 0 ,0, SvtSaveOptions::ODFVER_010}
123 // -----------------------------------------------------------------------------
GetCellStylePropertyMap(bool _bOldFormat)124 UniReference < XMLPropertySetMapper > OXMLHelper::GetCellStylePropertyMap(bool _bOldFormat)
125 {
126 if ( _bOldFormat )
127 {
128 static const XMLPropertyMapEntry s_aXMLCellStylesProperties[] =
129 {
130 MAP_CONST_C( PROPERTY_FORMATKEY, STYLE, DATA_STYLE_NAME, XML_TYPE_NUMBER | MID_FLAG_SPECIAL_ITEM, CTF_RPT_NUMBERFORMAT ),
131
132 MAP_CONST_C( PROPERTY_CONTROLBACKGROUND,
133 FO, BACKGROUND_COLOR, XML_TYPE_COLORTRANSPARENT|MID_FLAG_MULTI_PROPERTY, 0 ),
134 MAP_CONST_C( PROPERTY_VERTICALALIGN, STYLE, VERTICAL_ALIGN, XML_RPT_ALGINMENT, 0 ),
135 MAP_CONST_C( PROPERTY_CONTROLBACKGROUNDTRANSPARENT,
136 FO, BACKGROUND_COLOR, XML_TYPE_ISTRANSPARENT|MID_FLAG_MERGE_ATTRIBUTE, 0 ),
137 MAP_CONST_P( PROPERTY_CONTROLBACKGROUND,
138 FO, BACKGROUND_COLOR, XML_TYPE_COLORTRANSPARENT|MID_FLAG_MULTI_PROPERTY, 0 ),
139 MAP_CONST_P( PROPERTY_CONTROLBACKGROUNDTRANSPARENT,
140 FO, BACKGROUND_COLOR, XML_TYPE_ISTRANSPARENT|MID_FLAG_MERGE_ATTRIBUTE, 0 ),
141 MAP_CONST_C_ASCII( "BorderLeft", FO, BORDER_LEFT, XML_TYPE_BORDER, 0 ),
142 MAP_CONST_C_ASCII( "BorderRight", FO, BORDER_RIGHT, XML_TYPE_BORDER, 0 ),
143 MAP_CONST_C_ASCII( "BorderTop", FO, BORDER_TOP, XML_TYPE_BORDER, 0 ),
144 MAP_CONST_C_ASCII( "BorderBottom", FO, BORDER_BOTTOM, XML_TYPE_BORDER, 0 ),
145 MAP_END()
146 };
147 return new XMLPropertySetMapper((XMLPropertyMapEntry*)s_aXMLCellStylesProperties,new OPropertyHandlerFactory());
148 }
149 else
150 {
151 static const XMLPropertyMapEntry s_aXMLCellStylesProperties[] =
152 {
153 MAP_CONST_C( PROPERTY_FORMATKEY, STYLE, DATA_STYLE_NAME, XML_TYPE_NUMBER | MID_FLAG_SPECIAL_ITEM, CTF_RPT_NUMBERFORMAT ),
154
155 MAP_CONST_C( PROPERTY_CONTROLBACKGROUND,
156 FO, BACKGROUND_COLOR, XML_TYPE_COLORTRANSPARENT|MID_FLAG_MULTI_PROPERTY, 0 ),
157 MAP_CONST_C( PROPERTY_CONTROLBACKGROUNDTRANSPARENT,
158 FO, BACKGROUND_COLOR, XML_TYPE_ISTRANSPARENT|MID_FLAG_MERGE_ATTRIBUTE, 0 ),
159 MAP_CONST_C( PROPERTY_VERTICALALIGN,
160 STYLE, VERTICAL_ALIGN, XML_RPT_ALGINMENT, 0 ),
161 MAP_CONST_C_ASCII( "BorderLeft", FO, BORDER_LEFT, XML_TYPE_BORDER, 0 ),
162 MAP_CONST_C_ASCII( "BorderRight", FO, BORDER_RIGHT, XML_TYPE_BORDER, 0 ),
163 MAP_CONST_C_ASCII( "BorderTop", FO, BORDER_TOP, XML_TYPE_BORDER, 0 ),
164 MAP_CONST_C_ASCII( "BorderBottom", FO, BORDER_BOTTOM, XML_TYPE_BORDER, 0 ),
165 MAP_END()
166 };
167 return new XMLPropertySetMapper((XMLPropertyMapEntry*)s_aXMLCellStylesProperties,new OPropertyHandlerFactory());
168 }
169 }
170 // -----------------------------------------------------------------------------
GetTableStyleProps()171 const XMLPropertyMapEntry* OXMLHelper::GetTableStyleProps()
172 {
173 static const XMLPropertyMapEntry aXMLTableStylesProperties[] =
174 {
175 MAP_CONST_T( PROPERTY_BACKCOLOR, FO, BACKGROUND_COLOR, XML_TYPE_COLORTRANSPARENT|MID_FLAG_MULTI_PROPERTY, 0 ),
176 MAP_CONST_T( PROPERTY_BACKTRANSPARENT,FO, BACKGROUND_COLOR, XML_TYPE_ISTRANSPARENT | MID_FLAG_MERGE_ATTRIBUTE, 0 ),
177 // MAP_CONST_T( PROPERTY_KEEPTOGETHER, STYLE, MAY_BREAK_BETWEEN_ROWS, XML_TYPE_BOOL , 0 ),
178 MAP_END()
179 };
180 return aXMLTableStylesProperties;
181 }
182 // -----------------------------------------------------------------------------
GetRowStyleProps()183 const XMLPropertyMapEntry* OXMLHelper::GetRowStyleProps()
184 {
185 static const XMLPropertyMapEntry aXMLStylesProperties[] =
186 {
187 MAP_CONST_S( "Height", STYLE, ROW_HEIGHT, XML_TYPE_PROP_TABLE_ROW|XML_TYPE_MEASURE, 0),
188 MAP_END()
189 };
190 return aXMLStylesProperties;
191 }
192 // -----------------------------------------------------------------------------
GetColumnStyleProps()193 const XMLPropertyMapEntry* OXMLHelper::GetColumnStyleProps()
194 {
195 static const XMLPropertyMapEntry aXMLColumnStylesProperties[] =
196 {
197 //MAP( "IsManualPageBreak", XML_NAMESPACE_FO, XML_BREAK_BEFORE, XML_TYPE_PROP_TABLE_COLUMN|XML_SC_TYPE_BREAKBEFORE, 0),
198 //MAP( "IsVisible", XML_NAMESPACE_TABLE, XML_DISPLAY, XML_TYPE_PROP_TABLE_COLUMN|XML_SC_TYPE_EQUAL|MID_FLAG_SPECIAL_ITEM, CTF_SC_ISVISIBLE ),
199 MAP_CONST_S( "Width", STYLE, COLUMN_WIDTH, XML_TYPE_PROP_TABLE_COLUMN|XML_TYPE_MEASURE, 0 ),
200 // MAP( "OptimalWidth", XML_NAMESPACE_STYLE, XML_USE_OPTIMAL_COLUMN_WIDTH, XML_TYPE_PROP_TABLE_COLUMN|XML_TYPE_BOOL, 0),
201 MAP_END()
202 };
203 return aXMLColumnStylesProperties;
204 }
205 // -----------------------------------------------------------------------------
GetReportPrintOptions()206 const SvXMLEnumMapEntry* OXMLHelper::GetReportPrintOptions()
207 {
208 static SvXMLEnumMapEntry s_aXML_EnumMap[] =
209 {
210 // { XML_ALL_PAGES, report::ReportPrintOption::ALL_PAGES }, // default
211 { XML_NOT_WITH_REPORT_HEADER, report::ReportPrintOption::NOT_WITH_REPORT_HEADER },
212 { XML_NOT_WITH_REPORT_FOOTER, report::ReportPrintOption::NOT_WITH_REPORT_FOOTER },
213 { XML_NOT_WITH_REPORT_HEADER_NOR_FOOTER, report::ReportPrintOption::NOT_WITH_REPORT_HEADER_FOOTER },
214 { XML_TOKEN_INVALID, 0 }
215 };
216 return s_aXML_EnumMap;
217 }
218 // -----------------------------------------------------------------------------
GetForceNewPageOptions()219 const SvXMLEnumMapEntry* OXMLHelper::GetForceNewPageOptions()
220 {
221 static SvXMLEnumMapEntry s_aXML_EnumMap[] =
222 {
223 // { XML_NONE, report::ForceNewPage::NONE }, // default
224 { XML_BEFORE_SECTION, report::ForceNewPage::BEFORE_SECTION },
225 { XML_AFTER_SECTION, report::ForceNewPage::AFTER_SECTION },
226 { XML_BEFORE_AFTER_SECTION, report::ForceNewPage::BEFORE_AFTER_SECTION },
227 { XML_TOKEN_INVALID, 0 }
228 };
229 return s_aXML_EnumMap;
230 }
231 // -----------------------------------------------------------------------------
GetKeepTogetherOptions()232 const SvXMLEnumMapEntry* OXMLHelper::GetKeepTogetherOptions()
233 {
234 static SvXMLEnumMapEntry s_aXML_EnumMap[] =
235 {
236 // { XML_NO, report::KeepTogether::NO }, // default
237 { XML_WHOLE_GROUP, report::KeepTogether::WHOLE_GROUP },
238 { XML_WITH_FIRST_DETAIL, report::KeepTogether::WITH_FIRST_DETAIL },
239 { XML_TOKEN_INVALID, 0 }
240 };
241 return s_aXML_EnumMap;
242 }
243 // -----------------------------------------------------------------------------
GetCommandTypeOptions()244 const SvXMLEnumMapEntry* OXMLHelper::GetCommandTypeOptions()
245 {
246 static SvXMLEnumMapEntry s_aXML_EnumMap[] =
247 {
248 { XML_TABLE, CommandType::TABLE },
249 { XML_QUERY, CommandType::QUERY },
250 // { XML_COMMAND, CommandType::COMMAND }, // default
251 { XML_TOKEN_INVALID, 0 }
252 };
253 return s_aXML_EnumMap;
254 }
255 // -----------------------------------------------------------------------------
256 #define PROPERTY_ID_FONTNAME 1
257 #define PROPERTY_ID_FONTHEIGHT 2
258 #define PROPERTY_ID_FONTWIDTH 3
259 #define PROPERTY_ID_FONTSTYLENAME 4
260 #define PROPERTY_ID_FONTFAMILY 5
261 #define PROPERTY_ID_FONTCHARSET 6
262 #define PROPERTY_ID_FONTPITCH 7
263 #define PROPERTY_ID_FONTCHARWIDTH 8
264 #define PROPERTY_ID_FONTWEIGHT 9
265 #define PROPERTY_ID_FONTSLANT 10
266 #define PROPERTY_ID_FONTUNDERLINE 11
267 #define PROPERTY_ID_FONTSTRIKEOUT 12
268 #define PROPERTY_ID_FONTORIENTATION 13
269 #define PROPERTY_ID_FONTKERNING 14
270 #define PROPERTY_ID_FONTWORDLINEMODE 15
271 #define PROPERTY_ID_FONTTYPE 16
copyStyleElements(const bool _bOld,const::rtl::OUString & _sStyleName,const SvXMLStylesContext * _pAutoStyles,const uno::Reference<beans::XPropertySet> & _xProp)272 void OXMLHelper::copyStyleElements(const bool _bOld,const ::rtl::OUString& _sStyleName,const SvXMLStylesContext* _pAutoStyles,const uno::Reference<beans::XPropertySet>& _xProp)
273 {
274 if ( !_xProp.is() || !_sStyleName.getLength() || !_pAutoStyles )
275 return;
276 XMLPropStyleContext* pAutoStyle = PTR_CAST(XMLPropStyleContext,_pAutoStyles->FindStyleChildContext(XML_STYLE_FAMILY_TABLE_CELL,_sStyleName));
277 if ( pAutoStyle )
278 {
279 ::com::sun::star::awt::FontDescriptor aFont;
280 static comphelper::PropertyMapEntry pMap[] =
281 {
282 {PROPERTY_FONTNAME, static_cast<sal_uInt16>(PROPERTY_FONTNAME.length), PROPERTY_ID_FONTNAME, &::getCppuType(&aFont.Name) ,PropertyAttribute::BOUND,0},
283 {PROPERTY_CHARFONTHEIGHT, static_cast<sal_uInt16>(PROPERTY_CHARFONTHEIGHT.length), PROPERTY_ID_FONTHEIGHT, &::getCppuType(&aFont.Height) ,PropertyAttribute::BOUND,0},
284 {PROPERTY_FONTWIDTH, static_cast<sal_uInt16>(PROPERTY_FONTWIDTH.length), PROPERTY_ID_FONTWIDTH, &::getCppuType(&aFont.Width) ,PropertyAttribute::BOUND,0},
285 {PROPERTY_FONTSTYLENAME, static_cast<sal_uInt16>(PROPERTY_FONTSTYLENAME.length), PROPERTY_ID_FONTSTYLENAME, &::getCppuType(&aFont.StyleName) ,PropertyAttribute::BOUND,0},
286 {PROPERTY_FONTFAMILY, static_cast<sal_uInt16>(PROPERTY_FONTFAMILY.length), PROPERTY_ID_FONTFAMILY, &::getCppuType(&aFont.Family) ,PropertyAttribute::BOUND,0},
287 {PROPERTY_FONTCHARSET, static_cast<sal_uInt16>(PROPERTY_FONTCHARSET.length), PROPERTY_ID_FONTCHARSET, &::getCppuType(&aFont.CharSet) ,PropertyAttribute::BOUND,0},
288 {PROPERTY_FONTPITCH, static_cast<sal_uInt16>(PROPERTY_FONTPITCH.length), PROPERTY_ID_FONTPITCH, &::getCppuType(&aFont.Pitch) ,PropertyAttribute::BOUND,0},
289 {PROPERTY_FONTCHARWIDTH, static_cast<sal_uInt16>(PROPERTY_FONTCHARWIDTH.length), PROPERTY_ID_FONTCHARWIDTH, &::getCppuType(&aFont.CharacterWidth),PropertyAttribute::BOUND,0},
290 {PROPERTY_FONTWEIGHT, static_cast<sal_uInt16>(PROPERTY_FONTWEIGHT.length), PROPERTY_ID_FONTWEIGHT, &::getCppuType(&aFont.Weight) ,PropertyAttribute::BOUND,0},
291 {PROPERTY_CHARPOSTURE, static_cast<sal_uInt16>(PROPERTY_CHARPOSTURE.length), PROPERTY_ID_FONTSLANT, &::getCppuType(&aFont.Slant) ,PropertyAttribute::BOUND,0},
292 {PROPERTY_FONTUNDERLINE, static_cast<sal_uInt16>(PROPERTY_FONTUNDERLINE.length), PROPERTY_ID_FONTUNDERLINE, &::getCppuType(&aFont.Underline) ,PropertyAttribute::BOUND,0},
293 {PROPERTY_CHARSTRIKEOUT, static_cast<sal_uInt16>(PROPERTY_CHARSTRIKEOUT.length), PROPERTY_ID_FONTSTRIKEOUT, &::getCppuType(&aFont.Strikeout) ,PropertyAttribute::BOUND,0},
294 {PROPERTY_FONTORIENTATION, static_cast<sal_uInt16>(PROPERTY_FONTORIENTATION.length), PROPERTY_ID_FONTORIENTATION, &::getCppuType(&aFont.Orientation) ,PropertyAttribute::BOUND,0},
295 {PROPERTY_FONTKERNING, static_cast<sal_uInt16>(PROPERTY_FONTKERNING.length), PROPERTY_ID_FONTKERNING, &::getCppuType(&aFont.Kerning) ,PropertyAttribute::BOUND,0},
296 {PROPERTY_CHARWORDMODE, static_cast<sal_uInt16>(PROPERTY_CHARWORDMODE.length), PROPERTY_ID_FONTWORDLINEMODE, &::getCppuType(&aFont.WordLineMode) ,PropertyAttribute::BOUND,0},
297 {PROPERTY_FONTTYPE, static_cast<sal_uInt16>(PROPERTY_FONTTYPE.length), PROPERTY_ID_FONTTYPE, &::getCppuType(&aFont.Type) ,PropertyAttribute::BOUND,0},
298 //{PROPERTY_BACKGROUNDCOLOR, static_cast<sal_uInt16>(PROPERTY_BACKGROUNDCOLOR.length), PROPERTY_ID_BACKGROUNDCOLOR, &::getCppuType(&nBackgroundColor) ,PropertyAttribute::BOUND,0},,
299 //{PROPERTY_PARAADJUST, static_cast<sal_uInt16>(PROPERTY_PARAADJUST.length), PROPERTY_ID_ALIGN, &::getCppuType(&nAlign) ,PropertyAttribute::BOUND,0},,
300 //{PROPERTY_CONTROLBORDER, static_cast<sal_uInt16>(PROPERTY_CONTROLBORDER.length), PROPERTY_ID_BORDER, &::getCppuType(&aFont.Type) ,PropertyAttribute::BOUND,0},,
301 //{PROPERTY_CONTROLBORDERCOLOR, static_cast<sal_uInt16>(PROPERTY_CONTROLBORDERCOLOR.length), PROPERTY_ID_BORDERCOLOR, &::getCppuType(&aFont.Type) ,PropertyAttribute::BOUND,0},,
302 //{PROPERTY_CHARCOLOR, static_cast<sal_uInt16>(PROPERTY_TEXTCOLOR.length), PROPERTY_ID_TEXTCOLOR, &::getCppuType(&aFont.Type) ,PropertyAttribute::BOUND,0},,
303 //{PROPERTY_FORMATKEY, static_cast<sal_uInt16>(PROPERTY_FORMATKEY.length), PROPERTY_ID_FORMATKEY, &::getCppuType(&aFont.Type) ,PropertyAttribute::BOUND,0},,
304 //{PROPERTY_CHARUNDERLINECOLOR, static_cast<sal_uInt16>(PROPERTY_CHARUNDERLINECOLOR.length), PROPERTY_ID_TEXTLINECOLOR, &::getCppuType(&aFont.Type) ,PropertyAttribute::BOUND,0},,
305 { NULL, 0, 0, NULL, 0, 0 }
306 };
307 try
308 {
309 pAutoStyle->FillPropertySet(_xProp);
310 if ( _bOld && _xProp->getPropertySetInfo()->hasPropertyByName(PROPERTY_CHARHIDDEN) )
311 _xProp->setPropertyValue(PROPERTY_CHARHIDDEN,uno::makeAny(sal_False));
312
313 uno::Reference<beans::XPropertySet> xProp = comphelper::GenericPropertySet_CreateInstance(new comphelper::PropertySetInfo(pMap));
314 pAutoStyle->FillPropertySet(xProp);
315 xProp->getPropertyValue(PROPERTY_FONTNAME) >>= aFont.Name;
316 xProp->getPropertyValue(PROPERTY_CHARFONTHEIGHT) >>= aFont.Height;
317 xProp->getPropertyValue(PROPERTY_FONTWIDTH) >>= aFont.Width;
318 xProp->getPropertyValue(PROPERTY_FONTSTYLENAME) >>= aFont.StyleName;
319 xProp->getPropertyValue(PROPERTY_FONTFAMILY) >>= aFont.Family;
320 xProp->getPropertyValue(PROPERTY_FONTCHARSET) >>= aFont.CharSet;
321 xProp->getPropertyValue(PROPERTY_FONTPITCH) >>= aFont.Pitch;
322 xProp->getPropertyValue(PROPERTY_FONTCHARWIDTH) >>= aFont.CharacterWidth;
323 xProp->getPropertyValue(PROPERTY_FONTWEIGHT) >>= aFont.Weight;
324 xProp->getPropertyValue(PROPERTY_CHARPOSTURE) >>= aFont.Slant;
325 xProp->getPropertyValue(PROPERTY_FONTUNDERLINE) >>= aFont.Underline;
326 xProp->getPropertyValue(PROPERTY_CHARSTRIKEOUT) >>= aFont.Strikeout;
327 xProp->getPropertyValue(PROPERTY_FONTORIENTATION) >>= aFont.Orientation;
328 xProp->getPropertyValue(PROPERTY_FONTKERNING) >>= aFont.Kerning;
329 xProp->getPropertyValue(PROPERTY_CHARWORDMODE) >>= aFont.WordLineMode;
330 xProp->getPropertyValue(PROPERTY_FONTTYPE) >>= aFont.Type;
331 uno::Reference<report::XReportControlFormat> xReportControlModel(_xProp,uno::UNO_QUERY);
332 if ( xReportControlModel.is() && aFont.Name.getLength() )
333 {
334 try
335 {
336 xReportControlModel->setFontDescriptor(aFont);
337 }
338 catch(beans::UnknownPropertyException){}
339 }
340 }
341 catch(uno::Exception&)
342 {
343 OSL_ENSURE(0,"OXMLHelper::copyStyleElements -> exception catched");
344 }
345 }
346 }
347 // -----------------------------------------------------------------------------
createBorderPropertySet()348 uno::Reference<beans::XPropertySet> OXMLHelper::createBorderPropertySet()
349 {
350 static comphelper::PropertyMapEntry pMap[] =
351 {
352 {PROPERTY_BORDERLEFT, static_cast<sal_uInt16>(PROPERTY_BORDERLEFT.length), 0, &::getCppuType((const table::BorderLine*)0) ,PropertyAttribute::BOUND,0},
353 {PROPERTY_BORDERRIGHT, static_cast<sal_uInt16>(PROPERTY_BORDERRIGHT.length), 1, &::getCppuType((const table::BorderLine*)0) ,PropertyAttribute::BOUND,0},
354 {PROPERTY_BORDERTOP, static_cast<sal_uInt16>(PROPERTY_BORDERTOP.length), 2, &::getCppuType((const table::BorderLine*)0) ,PropertyAttribute::BOUND,0},
355 {PROPERTY_BORDERBOTTOM, static_cast<sal_uInt16>(PROPERTY_BORDERBOTTOM.length), 3, &::getCppuType((const table::BorderLine*)0) ,PropertyAttribute::BOUND,0},
356 { NULL, 0, 0, NULL, 0, 0 }
357 };
358 return comphelper::GenericPropertySet_CreateInstance(new comphelper::PropertySetInfo(pMap));
359 }
360 // -----------------------------------------------------------------------------
GetReportElemTokenMap()361 SvXMLTokenMap* OXMLHelper::GetReportElemTokenMap()
362 {
363 static __FAR_DATA SvXMLTokenMapEntry aElemTokenMap[]=
364 {
365 { XML_NAMESPACE_REPORT, XML_REPORT_HEADER, XML_TOK_REPORT_HEADER },
366 { XML_NAMESPACE_REPORT, XML_PAGE_HEADER , XML_TOK_PAGE_HEADER },
367 { XML_NAMESPACE_REPORT, XML_GROUP, XML_TOK_GROUP },
368 { XML_NAMESPACE_REPORT, XML_DETAIL , XML_TOK_DETAIL },
369 { XML_NAMESPACE_REPORT, XML_PAGE_FOOTER , XML_TOK_PAGE_FOOTER },
370 { XML_NAMESPACE_REPORT, XML_REPORT_FOOTER, XML_TOK_REPORT_FOOTER },
371 { XML_NAMESPACE_REPORT, XML_HEADER_ON_NEW_PAGE, XML_TOK_HEADER_ON_NEW_PAGE },
372 { XML_NAMESPACE_REPORT, XML_FOOTER_ON_NEW_PAGE, XML_TOK_FOOTER_ON_NEW_PAGE },
373 { XML_NAMESPACE_REPORT, XML_COMMAND_TYPE, XML_TOK_COMMAND_TYPE },
374 { XML_NAMESPACE_REPORT, XML_COMMAND, XML_TOK_COMMAND },
375 { XML_NAMESPACE_REPORT, XML_FILTER, XML_TOK_FILTER },
376 { XML_NAMESPACE_REPORT, XML_CAPTION, XML_TOK_CAPTION },
377 { XML_NAMESPACE_REPORT, XML_ESCAPE_PROCESSING, XML_TOK_ESCAPE_PROCESSING },
378 { XML_NAMESPACE_REPORT, XML_FUNCTION, XML_TOK_REPORT_FUNCTION },
379 { XML_NAMESPACE_OFFICE, XML_MIMETYPE, XML_TOK_REPORT_MIMETYPE },
380 { XML_NAMESPACE_DRAW, XML_NAME, XML_TOK_REPORT_NAME },
381 { XML_NAMESPACE_REPORT, XML_MASTER_DETAIL_FIELDS, XML_TOK_MASTER_DETAIL_FIELDS },
382 { XML_NAMESPACE_DRAW, XML_FRAME, XML_TOK_SUB_FRAME },
383 XML_TOKEN_MAP_END
384 };
385 return new SvXMLTokenMap( aElemTokenMap );
386 }
387 // -----------------------------------------------------------------------------
GetSubDocumentElemTokenMap()388 SvXMLTokenMap* OXMLHelper::GetSubDocumentElemTokenMap()
389 {
390 static __FAR_DATA SvXMLTokenMapEntry aElemTokenMap[]=
391 {
392 { XML_NAMESPACE_REPORT, XML_MASTER_DETAIL_FIELD, XML_TOK_MASTER_DETAIL_FIELD},
393 { XML_NAMESPACE_REPORT, XML_MASTER, XML_TOK_MASTER},
394 { XML_NAMESPACE_REPORT, XML_DETAIL, XML_TOK_SUB_DETAIL},
395 XML_TOKEN_MAP_END
396 };
397 return new SvXMLTokenMap( aElemTokenMap );
398 }
399 // -----------------------------------------------------------------------------
GetImageScaleOptions()400 const SvXMLEnumMapEntry* OXMLHelper::GetImageScaleOptions()
401 {
402 static SvXMLEnumMapEntry s_aXML_EnumMap[] =
403 {
404 // { XML_NONE, awt::ImageScaleMode::NONE }, // default
405 { XML_ISOTROPIC, awt::ImageScaleMode::ISOTROPIC },
406 { XML_ANISOTROPIC, awt::ImageScaleMode::ANISOTROPIC },
407 { XML_TOKEN_INVALID, 0 }
408 };
409 return s_aXML_EnumMap;
410 }
411 // -----------------------------------------------------------------------------
412 // -----------------------------------------------------------------------------
413 } // rptxml
414 // -----------------------------------------------------------------------------
415