xref: /trunk/main/reportdesign/source/filter/xml/xmlHelper.cxx (revision cf6516809c57e1bb0a940545cca99cdad54d4ce2)
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_rptxml.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