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