xref: /aoo4110/main/xmloff/source/draw/ximpstyl.cxx (revision b1cdbd2c)
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 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_xmloff.hxx"
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski 
28*b1cdbd2cSJim Jagielski #include "ximpstyl.hxx"
29*b1cdbd2cSJim Jagielski #include <xmloff/XMLShapeStyleContext.hxx>
30*b1cdbd2cSJim Jagielski #include "xmloff/xmlnmspe.hxx"
31*b1cdbd2cSJim Jagielski #include <xmloff/xmltoken.hxx>
32*b1cdbd2cSJim Jagielski #include <xmloff/xmluconv.hxx>
33*b1cdbd2cSJim Jagielski #include "ximpnote.hxx"
34*b1cdbd2cSJim Jagielski #include <tools/debug.hxx>
35*b1cdbd2cSJim Jagielski 
36*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XMultiServiceFactory.hpp>
37*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XSingleServiceFactory.hpp>
38*b1cdbd2cSJim Jagielski #include <com/sun/star/presentation/XPresentationPage.hpp>
39*b1cdbd2cSJim Jagielski #include <com/sun/star/drawing/XDrawPages.hpp>
40*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XNamed.hpp>
41*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/XPropertySet.hpp>
42*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/XPropertyState.hpp>
43*b1cdbd2cSJim Jagielski #include <com/sun/star/presentation/XHandoutMasterSupplier.hpp>
44*b1cdbd2cSJim Jagielski #include <comphelper/namecontainer.hxx>
45*b1cdbd2cSJim Jagielski #include <xmloff/xmlprcon.hxx>
46*b1cdbd2cSJim Jagielski #include <xmloff/families.hxx>
47*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XNameContainer.hpp>
48*b1cdbd2cSJim Jagielski #include <svl/zforlist.hxx>
49*b1cdbd2cSJim Jagielski #include "PropertySetMerger.hxx"
50*b1cdbd2cSJim Jagielski #include "sdpropls.hxx"
51*b1cdbd2cSJim Jagielski #include "layerimp.hxx"
52*b1cdbd2cSJim Jagielski #include <xmloff/XMLGraphicsDefaultStyle.hxx>
53*b1cdbd2cSJim Jagielski #include "XMLNumberStylesImport.hxx"
54*b1cdbd2cSJim Jagielski #include "xmloff/xmlerror.hxx"
55*b1cdbd2cSJim Jagielski 
56*b1cdbd2cSJim Jagielski using ::rtl::OUString;
57*b1cdbd2cSJim Jagielski using ::rtl::OUStringBuffer;
58*b1cdbd2cSJim Jagielski 
59*b1cdbd2cSJim Jagielski using namespace ::com::sun::star;
60*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::uno;
61*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::xml::sax;
62*b1cdbd2cSJim Jagielski using namespace ::xmloff::token;
63*b1cdbd2cSJim Jagielski 
64*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
65*b1cdbd2cSJim Jagielski 
66*b1cdbd2cSJim Jagielski class SdXMLDrawingPagePropertySetContext : public SvXMLPropertySetContext
67*b1cdbd2cSJim Jagielski {
68*b1cdbd2cSJim Jagielski public:
69*b1cdbd2cSJim Jagielski 
70*b1cdbd2cSJim Jagielski 	TYPEINFO();
71*b1cdbd2cSJim Jagielski 
72*b1cdbd2cSJim Jagielski 	SdXMLDrawingPagePropertySetContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
73*b1cdbd2cSJim Jagielski 				const ::rtl::OUString& rLName,
74*b1cdbd2cSJim Jagielski 				 const ::com::sun::star::uno::Reference<
75*b1cdbd2cSJim Jagielski 				 		::com::sun::star::xml::sax::XAttributeList >& xAttrList,
76*b1cdbd2cSJim Jagielski 				 ::std::vector< XMLPropertyState > &rProps,
77*b1cdbd2cSJim Jagielski 				 const UniReference < SvXMLImportPropertyMapper > &rMap );
78*b1cdbd2cSJim Jagielski 
79*b1cdbd2cSJim Jagielski 	virtual ~SdXMLDrawingPagePropertySetContext();
80*b1cdbd2cSJim Jagielski 
81*b1cdbd2cSJim Jagielski     using SvXMLPropertySetContext::CreateChildContext;
82*b1cdbd2cSJim Jagielski 	virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
83*b1cdbd2cSJim Jagielski 								   const ::rtl::OUString& rLocalName,
84*b1cdbd2cSJim Jagielski 								   const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList,
85*b1cdbd2cSJim Jagielski 								   ::std::vector< XMLPropertyState > &rProperties,
86*b1cdbd2cSJim Jagielski 								   const XMLPropertyState& rProp);
87*b1cdbd2cSJim Jagielski };
88*b1cdbd2cSJim Jagielski 
89*b1cdbd2cSJim Jagielski TYPEINIT1( SdXMLDrawingPagePropertySetContext, SvXMLPropertySetContext );
90*b1cdbd2cSJim Jagielski 
SdXMLDrawingPagePropertySetContext(SvXMLImport & rImport,sal_uInt16 nPrfx,const OUString & rLName,const uno::Reference<xml::sax::XAttributeList> & xAttrList,::std::vector<XMLPropertyState> & rProps,const UniReference<SvXMLImportPropertyMapper> & rMap)91*b1cdbd2cSJim Jagielski SdXMLDrawingPagePropertySetContext::SdXMLDrawingPagePropertySetContext(
92*b1cdbd2cSJim Jagielski 				 SvXMLImport& rImport, sal_uInt16 nPrfx,
93*b1cdbd2cSJim Jagielski 				 const OUString& rLName,
94*b1cdbd2cSJim Jagielski 				 const uno::Reference< xml::sax::XAttributeList > & xAttrList,
95*b1cdbd2cSJim Jagielski 				 ::std::vector< XMLPropertyState > &rProps,
96*b1cdbd2cSJim Jagielski 				 const UniReference < SvXMLImportPropertyMapper > &rMap ) :
97*b1cdbd2cSJim Jagielski 	SvXMLPropertySetContext( rImport, nPrfx, rLName, xAttrList,
98*b1cdbd2cSJim Jagielski 							 XML_TYPE_PROP_DRAWING_PAGE, rProps, rMap )
99*b1cdbd2cSJim Jagielski {
100*b1cdbd2cSJim Jagielski }
101*b1cdbd2cSJim Jagielski 
~SdXMLDrawingPagePropertySetContext()102*b1cdbd2cSJim Jagielski SdXMLDrawingPagePropertySetContext::~SdXMLDrawingPagePropertySetContext()
103*b1cdbd2cSJim Jagielski {
104*b1cdbd2cSJim Jagielski }
105*b1cdbd2cSJim Jagielski 
CreateChildContext(sal_uInt16 p_nPrefix,const OUString & rLocalName,const uno::Reference<xml::sax::XAttributeList> & xAttrList,::std::vector<XMLPropertyState> & rProperties,const XMLPropertyState & rProp)106*b1cdbd2cSJim Jagielski SvXMLImportContext *SdXMLDrawingPagePropertySetContext::CreateChildContext(
107*b1cdbd2cSJim Jagielski 				   sal_uInt16 p_nPrefix,
108*b1cdbd2cSJim Jagielski 				   const OUString& rLocalName,
109*b1cdbd2cSJim Jagielski 				   const uno::Reference< xml::sax::XAttributeList > & xAttrList,
110*b1cdbd2cSJim Jagielski 				   ::std::vector< XMLPropertyState > &rProperties,
111*b1cdbd2cSJim Jagielski 				   const XMLPropertyState& rProp )
112*b1cdbd2cSJim Jagielski {
113*b1cdbd2cSJim Jagielski 	SvXMLImportContext *pContext = 0;
114*b1cdbd2cSJim Jagielski 
115*b1cdbd2cSJim Jagielski 	switch( mxMapper->getPropertySetMapper()->GetEntryContextId( rProp.mnIndex ) )
116*b1cdbd2cSJim Jagielski 	{
117*b1cdbd2cSJim Jagielski 	case CTF_PAGE_SOUND_URL:
118*b1cdbd2cSJim Jagielski 	{
119*b1cdbd2cSJim Jagielski 		const sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
120*b1cdbd2cSJim Jagielski 		for(sal_Int16 i=0; i < nAttrCount; i++)
121*b1cdbd2cSJim Jagielski 		{
122*b1cdbd2cSJim Jagielski 			OUString aLocalName;
123*b1cdbd2cSJim Jagielski 			sal_uInt16 nPrefix = GetImport().GetNamespaceMap().GetKeyByAttrName(xAttrList->getNameByIndex(i), &aLocalName);
124*b1cdbd2cSJim Jagielski 
125*b1cdbd2cSJim Jagielski 			if( (nPrefix == XML_NAMESPACE_XLINK) && IsXMLToken( aLocalName, XML_HREF ) )
126*b1cdbd2cSJim Jagielski 			{
127*b1cdbd2cSJim Jagielski 				uno::Any aAny( GetImport().GetAbsoluteReference( xAttrList->getValueByIndex(i) ) );
128*b1cdbd2cSJim Jagielski 				XMLPropertyState aPropState( rProp.mnIndex, aAny );
129*b1cdbd2cSJim Jagielski 				rProperties.push_back( aPropState );
130*b1cdbd2cSJim Jagielski 			}
131*b1cdbd2cSJim Jagielski 		}
132*b1cdbd2cSJim Jagielski 		break;
133*b1cdbd2cSJim Jagielski 	}
134*b1cdbd2cSJim Jagielski 	}
135*b1cdbd2cSJim Jagielski 
136*b1cdbd2cSJim Jagielski 	if( !pContext )
137*b1cdbd2cSJim Jagielski 		pContext = SvXMLPropertySetContext::CreateChildContext( p_nPrefix, rLocalName,
138*b1cdbd2cSJim Jagielski 															xAttrList,
139*b1cdbd2cSJim Jagielski 															rProperties, rProp );
140*b1cdbd2cSJim Jagielski 
141*b1cdbd2cSJim Jagielski 	return pContext;
142*b1cdbd2cSJim Jagielski }
143*b1cdbd2cSJim Jagielski 
144*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
145*b1cdbd2cSJim Jagielski 
146*b1cdbd2cSJim Jagielski class SdXMLDrawingPageStyleContext : public XMLPropStyleContext
147*b1cdbd2cSJim Jagielski {
148*b1cdbd2cSJim Jagielski public:
149*b1cdbd2cSJim Jagielski 	TYPEINFO();
150*b1cdbd2cSJim Jagielski 
151*b1cdbd2cSJim Jagielski 	SdXMLDrawingPageStyleContext(
152*b1cdbd2cSJim Jagielski 		SvXMLImport& rImport,
153*b1cdbd2cSJim Jagielski 		sal_uInt16 nPrfx,
154*b1cdbd2cSJim Jagielski 		const rtl::OUString& rLName,
155*b1cdbd2cSJim Jagielski 		const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList >& xAttrList,
156*b1cdbd2cSJim Jagielski 		SvXMLStylesContext& rStyles,
157*b1cdbd2cSJim Jagielski 		sal_uInt16 nFamily = XML_STYLE_FAMILY_SD_DRAWINGPAGE_ID);
158*b1cdbd2cSJim Jagielski 	virtual ~SdXMLDrawingPageStyleContext();
159*b1cdbd2cSJim Jagielski 
160*b1cdbd2cSJim Jagielski 	SvXMLImportContext * CreateChildContext(
161*b1cdbd2cSJim Jagielski 		sal_uInt16 nPrefix,
162*b1cdbd2cSJim Jagielski 		const ::rtl::OUString& rLocalName,
163*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList > & xAttrList );
164*b1cdbd2cSJim Jagielski 
165*b1cdbd2cSJim Jagielski 	virtual void Finish( sal_Bool bOverwrite );
166*b1cdbd2cSJim Jagielski 
167*b1cdbd2cSJim Jagielski     // #i35918#
168*b1cdbd2cSJim Jagielski 	virtual void FillPropertySet(
169*b1cdbd2cSJim Jagielski 			const ::com::sun::star::uno::Reference<
170*b1cdbd2cSJim Jagielski 				::com::sun::star::beans::XPropertySet > & rPropSet );
171*b1cdbd2cSJim Jagielski };
172*b1cdbd2cSJim Jagielski 
173*b1cdbd2cSJim Jagielski TYPEINIT1( SdXMLDrawingPageStyleContext, XMLPropStyleContext );
174*b1cdbd2cSJim Jagielski 
SdXMLDrawingPageStyleContext(SvXMLImport & rImport,sal_uInt16 nPrfx,const OUString & rLName,const uno::Reference<xml::sax::XAttributeList> & xAttrList,SvXMLStylesContext & rStyles,sal_uInt16 nFamily)175*b1cdbd2cSJim Jagielski SdXMLDrawingPageStyleContext::SdXMLDrawingPageStyleContext(
176*b1cdbd2cSJim Jagielski 	SvXMLImport& rImport,
177*b1cdbd2cSJim Jagielski 	sal_uInt16 nPrfx,
178*b1cdbd2cSJim Jagielski 	const OUString& rLName,
179*b1cdbd2cSJim Jagielski 	const uno::Reference< xml::sax::XAttributeList >& xAttrList,
180*b1cdbd2cSJim Jagielski 	SvXMLStylesContext& rStyles,
181*b1cdbd2cSJim Jagielski 	sal_uInt16 nFamily)
182*b1cdbd2cSJim Jagielski :	XMLPropStyleContext(rImport, nPrfx, rLName, xAttrList, rStyles, nFamily )
183*b1cdbd2cSJim Jagielski {
184*b1cdbd2cSJim Jagielski }
185*b1cdbd2cSJim Jagielski 
~SdXMLDrawingPageStyleContext()186*b1cdbd2cSJim Jagielski SdXMLDrawingPageStyleContext::~SdXMLDrawingPageStyleContext()
187*b1cdbd2cSJim Jagielski {
188*b1cdbd2cSJim Jagielski }
189*b1cdbd2cSJim Jagielski 
CreateChildContext(sal_uInt16 nPrefix,const OUString & rLocalName,const uno::Reference<xml::sax::XAttributeList> & xAttrList)190*b1cdbd2cSJim Jagielski SvXMLImportContext *SdXMLDrawingPageStyleContext::CreateChildContext(
191*b1cdbd2cSJim Jagielski 		sal_uInt16 nPrefix,
192*b1cdbd2cSJim Jagielski 		const OUString& rLocalName,
193*b1cdbd2cSJim Jagielski 		const uno::Reference< xml::sax::XAttributeList > & xAttrList )
194*b1cdbd2cSJim Jagielski {
195*b1cdbd2cSJim Jagielski 	SvXMLImportContext *pContext = 0;
196*b1cdbd2cSJim Jagielski 
197*b1cdbd2cSJim Jagielski 	if( XML_NAMESPACE_STYLE == nPrefix &&
198*b1cdbd2cSJim Jagielski 		IsXMLToken( rLocalName, XML_DRAWING_PAGE_PROPERTIES ) )
199*b1cdbd2cSJim Jagielski 	{
200*b1cdbd2cSJim Jagielski 		UniReference < SvXMLImportPropertyMapper > xImpPrMap =
201*b1cdbd2cSJim Jagielski 			GetStyles()->GetImportPropertyMapper( GetFamily() );
202*b1cdbd2cSJim Jagielski 		if( xImpPrMap.is() )
203*b1cdbd2cSJim Jagielski 			pContext = new SdXMLDrawingPagePropertySetContext( GetImport(), nPrefix,
204*b1cdbd2cSJim Jagielski 													rLocalName, xAttrList,
205*b1cdbd2cSJim Jagielski 													GetProperties(),
206*b1cdbd2cSJim Jagielski 													xImpPrMap );
207*b1cdbd2cSJim Jagielski 	}
208*b1cdbd2cSJim Jagielski 
209*b1cdbd2cSJim Jagielski 	if( !pContext )
210*b1cdbd2cSJim Jagielski 		pContext = XMLPropStyleContext::CreateChildContext( nPrefix, rLocalName,
211*b1cdbd2cSJim Jagielski 														  xAttrList );
212*b1cdbd2cSJim Jagielski 
213*b1cdbd2cSJim Jagielski 	return pContext;
214*b1cdbd2cSJim Jagielski }
215*b1cdbd2cSJim Jagielski 
Finish(sal_Bool bOverwrite)216*b1cdbd2cSJim Jagielski void SdXMLDrawingPageStyleContext::Finish( sal_Bool bOverwrite )
217*b1cdbd2cSJim Jagielski {
218*b1cdbd2cSJim Jagielski 	XMLPropStyleContext::Finish( bOverwrite );
219*b1cdbd2cSJim Jagielski 
220*b1cdbd2cSJim Jagielski 	::std::vector< XMLPropertyState > &rProperties = GetProperties();
221*b1cdbd2cSJim Jagielski 
222*b1cdbd2cSJim Jagielski 	const UniReference< XMLPropertySetMapper >& rImpPrMap = GetStyles()->GetImportPropertyMapper( GetFamily() )->getPropertySetMapper();
223*b1cdbd2cSJim Jagielski 
224*b1cdbd2cSJim Jagielski 	::std::vector< XMLPropertyState >::iterator property = rProperties.begin();
225*b1cdbd2cSJim Jagielski 	for(; property != rProperties.end(); property++)
226*b1cdbd2cSJim Jagielski 	{
227*b1cdbd2cSJim Jagielski 		if( property->mnIndex == -1 )
228*b1cdbd2cSJim Jagielski 			continue;
229*b1cdbd2cSJim Jagielski 
230*b1cdbd2cSJim Jagielski 		sal_Int16 nContextID = rImpPrMap->GetEntryContextId(property->mnIndex);
231*b1cdbd2cSJim Jagielski 		switch( nContextID )
232*b1cdbd2cSJim Jagielski 		{
233*b1cdbd2cSJim Jagielski 			case CTF_DATE_TIME_FORMAT:
234*b1cdbd2cSJim Jagielski 			{
235*b1cdbd2cSJim Jagielski 				OUString sStyleName;
236*b1cdbd2cSJim Jagielski 				(*property).maValue >>= sStyleName;
237*b1cdbd2cSJim Jagielski 
238*b1cdbd2cSJim Jagielski 				sal_Int32 nStyle = 0;
239*b1cdbd2cSJim Jagielski 
240*b1cdbd2cSJim Jagielski 				SdXMLNumberFormatImportContext* pSdNumStyle =
241*b1cdbd2cSJim Jagielski 					PTR_CAST( SdXMLNumberFormatImportContext,
242*b1cdbd2cSJim Jagielski 						GetStyles()->FindStyleChildContext( XML_STYLE_FAMILY_DATA_STYLE, sStyleName, sal_True ) );
243*b1cdbd2cSJim Jagielski 
244*b1cdbd2cSJim Jagielski 				if( pSdNumStyle )
245*b1cdbd2cSJim Jagielski 					nStyle = pSdNumStyle->GetDrawKey();
246*b1cdbd2cSJim Jagielski 
247*b1cdbd2cSJim Jagielski 				(*property).maValue <<= nStyle;
248*b1cdbd2cSJim Jagielski 			}
249*b1cdbd2cSJim Jagielski 			break;
250*b1cdbd2cSJim Jagielski 		}
251*b1cdbd2cSJim Jagielski 	}
252*b1cdbd2cSJim Jagielski 
253*b1cdbd2cSJim Jagielski }
254*b1cdbd2cSJim Jagielski 
255*b1cdbd2cSJim Jagielski // #i35918#
FillPropertySet(const Reference<beans::XPropertySet> & rPropSet)256*b1cdbd2cSJim Jagielski void SdXMLDrawingPageStyleContext::FillPropertySet(
257*b1cdbd2cSJim Jagielski     const Reference< beans::XPropertySet > & rPropSet )
258*b1cdbd2cSJim Jagielski {
259*b1cdbd2cSJim Jagielski 	const sal_uInt16 MAX_SPECIAL_DRAW_STYLES = 7;
260*b1cdbd2cSJim Jagielski 	struct _ContextID_Index_Pair aContextIDs[MAX_SPECIAL_DRAW_STYLES+1] =
261*b1cdbd2cSJim Jagielski 	{
262*b1cdbd2cSJim Jagielski 		{ CTF_DASHNAME , -1 },
263*b1cdbd2cSJim Jagielski 		{ CTF_LINESTARTNAME , -1 },
264*b1cdbd2cSJim Jagielski 		{ CTF_LINEENDNAME , -1 },
265*b1cdbd2cSJim Jagielski 		{ CTF_FILLGRADIENTNAME, -1 },
266*b1cdbd2cSJim Jagielski 		{ CTF_FILLTRANSNAME , -1 },
267*b1cdbd2cSJim Jagielski 		{ CTF_FILLHATCHNAME , -1 },
268*b1cdbd2cSJim Jagielski 		{ CTF_FILLBITMAPNAME , -1 },
269*b1cdbd2cSJim Jagielski 		{ -1, -1 }
270*b1cdbd2cSJim Jagielski 	};
271*b1cdbd2cSJim Jagielski 	static sal_uInt16 aFamilies[MAX_SPECIAL_DRAW_STYLES] =
272*b1cdbd2cSJim Jagielski 	{
273*b1cdbd2cSJim Jagielski 		XML_STYLE_FAMILY_SD_STROKE_DASH_ID,
274*b1cdbd2cSJim Jagielski 		XML_STYLE_FAMILY_SD_MARKER_ID,
275*b1cdbd2cSJim Jagielski 		XML_STYLE_FAMILY_SD_MARKER_ID,
276*b1cdbd2cSJim Jagielski 		XML_STYLE_FAMILY_SD_GRADIENT_ID,
277*b1cdbd2cSJim Jagielski 		XML_STYLE_FAMILY_SD_GRADIENT_ID,
278*b1cdbd2cSJim Jagielski 		XML_STYLE_FAMILY_SD_HATCH_ID,
279*b1cdbd2cSJim Jagielski 		XML_STYLE_FAMILY_SD_FILL_IMAGE_ID
280*b1cdbd2cSJim Jagielski 	};
281*b1cdbd2cSJim Jagielski 
282*b1cdbd2cSJim Jagielski 	UniReference < SvXMLImportPropertyMapper > xImpPrMap =
283*b1cdbd2cSJim Jagielski 		GetStyles()->GetImportPropertyMapper( GetFamily() );
284*b1cdbd2cSJim Jagielski 	DBG_ASSERT( xImpPrMap.is(), "There is the import prop mapper" );
285*b1cdbd2cSJim Jagielski     if( xImpPrMap.is() )
286*b1cdbd2cSJim Jagielski 		xImpPrMap->FillPropertySet( GetProperties(), rPropSet, aContextIDs );
287*b1cdbd2cSJim Jagielski 
288*b1cdbd2cSJim Jagielski     Reference< beans::XPropertySetInfo > xInfo;
289*b1cdbd2cSJim Jagielski 	for( sal_uInt16 i=0; i<MAX_SPECIAL_DRAW_STYLES; i++ )
290*b1cdbd2cSJim Jagielski 	{
291*b1cdbd2cSJim Jagielski 		sal_Int32 nIndex = aContextIDs[i].nIndex;
292*b1cdbd2cSJim Jagielski 		if( nIndex != -1 )
293*b1cdbd2cSJim Jagielski 		{
294*b1cdbd2cSJim Jagielski 			struct XMLPropertyState& rState = GetProperties()[nIndex];
295*b1cdbd2cSJim Jagielski 			OUString sStyleName;
296*b1cdbd2cSJim Jagielski 			rState.maValue >>= sStyleName;
297*b1cdbd2cSJim Jagielski 			sStyleName = GetImport().GetStyleDisplayName( aFamilies[i],
298*b1cdbd2cSJim Jagielski 														  sStyleName );
299*b1cdbd2cSJim Jagielski 			// get property set mapper
300*b1cdbd2cSJim Jagielski 			UniReference<XMLPropertySetMapper> rPropMapper =
301*b1cdbd2cSJim Jagielski 										xImpPrMap->getPropertySetMapper();
302*b1cdbd2cSJim Jagielski 
303*b1cdbd2cSJim Jagielski 			// set property
304*b1cdbd2cSJim Jagielski 			const OUString& rPropertyName =
305*b1cdbd2cSJim Jagielski 					rPropMapper->GetEntryAPIName(rState.mnIndex);
306*b1cdbd2cSJim Jagielski 			if( !xInfo.is() )
307*b1cdbd2cSJim Jagielski 				xInfo = rPropSet->getPropertySetInfo();
308*b1cdbd2cSJim Jagielski 			if ( xInfo->hasPropertyByName( rPropertyName ) )
309*b1cdbd2cSJim Jagielski 			{
310*b1cdbd2cSJim Jagielski 				rPropSet->setPropertyValue( rPropertyName, Any( sStyleName ) );
311*b1cdbd2cSJim Jagielski 			}
312*b1cdbd2cSJim Jagielski 		}
313*b1cdbd2cSJim Jagielski 	}
314*b1cdbd2cSJim Jagielski }
315*b1cdbd2cSJim Jagielski 
316*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
317*b1cdbd2cSJim Jagielski 
318*b1cdbd2cSJim Jagielski TYPEINIT1( SdXMLPageMasterStyleContext, SvXMLStyleContext );
319*b1cdbd2cSJim Jagielski 
SdXMLPageMasterStyleContext(SdXMLImport & rImport,sal_uInt16 nPrfx,const OUString & rLName,const uno::Reference<xml::sax::XAttributeList> & xAttrList)320*b1cdbd2cSJim Jagielski SdXMLPageMasterStyleContext::SdXMLPageMasterStyleContext(
321*b1cdbd2cSJim Jagielski 	SdXMLImport& rImport,
322*b1cdbd2cSJim Jagielski 	sal_uInt16 nPrfx,
323*b1cdbd2cSJim Jagielski 	const OUString& rLName,
324*b1cdbd2cSJim Jagielski 	const uno::Reference< xml::sax::XAttributeList>& xAttrList)
325*b1cdbd2cSJim Jagielski :	SvXMLStyleContext(rImport, nPrfx, rLName, xAttrList, XML_STYLE_FAMILY_SD_PAGEMASTERSTYLECONEXT_ID),
326*b1cdbd2cSJim Jagielski 	mnBorderBottom( 0L ),
327*b1cdbd2cSJim Jagielski 	mnBorderLeft( 0L ),
328*b1cdbd2cSJim Jagielski 	mnBorderRight( 0L ),
329*b1cdbd2cSJim Jagielski 	mnBorderTop( 0L ),
330*b1cdbd2cSJim Jagielski 	mnWidth( 0L ),
331*b1cdbd2cSJim Jagielski 	mnHeight( 0L ),
332*b1cdbd2cSJim Jagielski 	meOrientation(GetSdImport().IsDraw() ? view::PaperOrientation_PORTRAIT : view::PaperOrientation_LANDSCAPE)
333*b1cdbd2cSJim Jagielski {
334*b1cdbd2cSJim Jagielski 	// set family to something special at SvXMLStyleContext
335*b1cdbd2cSJim Jagielski 	// for differences in search-methods
336*b1cdbd2cSJim Jagielski 
337*b1cdbd2cSJim Jagielski 	sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
338*b1cdbd2cSJim Jagielski 	for(sal_Int16 i=0; i < nAttrCount; i++)
339*b1cdbd2cSJim Jagielski 	{
340*b1cdbd2cSJim Jagielski 		OUString sAttrName = xAttrList->getNameByIndex(i);
341*b1cdbd2cSJim Jagielski 		OUString aLocalName;
342*b1cdbd2cSJim Jagielski 		sal_uInt16 nPrefix = GetSdImport().GetNamespaceMap().GetKeyByAttrName(sAttrName, &aLocalName);
343*b1cdbd2cSJim Jagielski 		OUString sValue = xAttrList->getValueByIndex(i);
344*b1cdbd2cSJim Jagielski 		const SvXMLTokenMap& rAttrTokenMap = GetSdImport().GetPageMasterStyleAttrTokenMap();
345*b1cdbd2cSJim Jagielski 
346*b1cdbd2cSJim Jagielski 		switch(rAttrTokenMap.Get(nPrefix, aLocalName))
347*b1cdbd2cSJim Jagielski 		{
348*b1cdbd2cSJim Jagielski 			case XML_TOK_PAGEMASTERSTYLE_MARGIN_TOP:
349*b1cdbd2cSJim Jagielski 			{
350*b1cdbd2cSJim Jagielski 				GetSdImport().GetMM100UnitConverter().convertMeasure(mnBorderTop, sValue);
351*b1cdbd2cSJim Jagielski 				break;
352*b1cdbd2cSJim Jagielski 			}
353*b1cdbd2cSJim Jagielski 			case XML_TOK_PAGEMASTERSTYLE_MARGIN_BOTTOM:
354*b1cdbd2cSJim Jagielski 			{
355*b1cdbd2cSJim Jagielski 				GetSdImport().GetMM100UnitConverter().convertMeasure(mnBorderBottom, sValue);
356*b1cdbd2cSJim Jagielski 				break;
357*b1cdbd2cSJim Jagielski 			}
358*b1cdbd2cSJim Jagielski 			case XML_TOK_PAGEMASTERSTYLE_MARGIN_LEFT:
359*b1cdbd2cSJim Jagielski 			{
360*b1cdbd2cSJim Jagielski 				GetSdImport().GetMM100UnitConverter().convertMeasure(mnBorderLeft, sValue);
361*b1cdbd2cSJim Jagielski 				break;
362*b1cdbd2cSJim Jagielski 			}
363*b1cdbd2cSJim Jagielski 			case XML_TOK_PAGEMASTERSTYLE_MARGIN_RIGHT:
364*b1cdbd2cSJim Jagielski 			{
365*b1cdbd2cSJim Jagielski 				GetSdImport().GetMM100UnitConverter().convertMeasure(mnBorderRight, sValue);
366*b1cdbd2cSJim Jagielski 				break;
367*b1cdbd2cSJim Jagielski 			}
368*b1cdbd2cSJim Jagielski 			case XML_TOK_PAGEMASTERSTYLE_PAGE_WIDTH:
369*b1cdbd2cSJim Jagielski 			{
370*b1cdbd2cSJim Jagielski 				GetSdImport().GetMM100UnitConverter().convertMeasure(mnWidth, sValue);
371*b1cdbd2cSJim Jagielski 				break;
372*b1cdbd2cSJim Jagielski 			}
373*b1cdbd2cSJim Jagielski 			case XML_TOK_PAGEMASTERSTYLE_PAGE_HEIGHT:
374*b1cdbd2cSJim Jagielski 			{
375*b1cdbd2cSJim Jagielski 				GetSdImport().GetMM100UnitConverter().convertMeasure(mnHeight, sValue);
376*b1cdbd2cSJim Jagielski 				break;
377*b1cdbd2cSJim Jagielski 			}
378*b1cdbd2cSJim Jagielski 			case XML_TOK_PAGEMASTERSTYLE_PAGE_ORIENTATION:
379*b1cdbd2cSJim Jagielski 			{
380*b1cdbd2cSJim Jagielski 				if( IsXMLToken( sValue, XML_PORTRAIT ) )
381*b1cdbd2cSJim Jagielski 					meOrientation = view::PaperOrientation_PORTRAIT;
382*b1cdbd2cSJim Jagielski 				else
383*b1cdbd2cSJim Jagielski 					meOrientation = view::PaperOrientation_LANDSCAPE;
384*b1cdbd2cSJim Jagielski 				break;
385*b1cdbd2cSJim Jagielski 			}
386*b1cdbd2cSJim Jagielski 		}
387*b1cdbd2cSJim Jagielski 	}
388*b1cdbd2cSJim Jagielski }
389*b1cdbd2cSJim Jagielski 
390*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
391*b1cdbd2cSJim Jagielski 
~SdXMLPageMasterStyleContext()392*b1cdbd2cSJim Jagielski SdXMLPageMasterStyleContext::~SdXMLPageMasterStyleContext()
393*b1cdbd2cSJim Jagielski {
394*b1cdbd2cSJim Jagielski }
395*b1cdbd2cSJim Jagielski 
396*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
397*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
398*b1cdbd2cSJim Jagielski 
399*b1cdbd2cSJim Jagielski TYPEINIT1( SdXMLPageMasterContext, SvXMLStyleContext );
400*b1cdbd2cSJim Jagielski 
SdXMLPageMasterContext(SdXMLImport & rImport,sal_uInt16 nPrfx,const OUString & rLName,const uno::Reference<xml::sax::XAttributeList> & xAttrList)401*b1cdbd2cSJim Jagielski SdXMLPageMasterContext::SdXMLPageMasterContext(
402*b1cdbd2cSJim Jagielski 	SdXMLImport& rImport,
403*b1cdbd2cSJim Jagielski 	sal_uInt16 nPrfx,
404*b1cdbd2cSJim Jagielski 	const OUString& rLName,
405*b1cdbd2cSJim Jagielski 	const uno::Reference< xml::sax::XAttributeList>& xAttrList)
406*b1cdbd2cSJim Jagielski :	SvXMLStyleContext(rImport, nPrfx, rLName, xAttrList, XML_STYLE_FAMILY_SD_PAGEMASTERCONEXT_ID),
407*b1cdbd2cSJim Jagielski 	mpPageMasterStyle( 0L )
408*b1cdbd2cSJim Jagielski {
409*b1cdbd2cSJim Jagielski 	// set family to something special at SvXMLStyleContext
410*b1cdbd2cSJim Jagielski 	// for differences in search-methods
411*b1cdbd2cSJim Jagielski 
412*b1cdbd2cSJim Jagielski 	sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
413*b1cdbd2cSJim Jagielski 	for(sal_Int16 i=0; i < nAttrCount; i++)
414*b1cdbd2cSJim Jagielski 	{
415*b1cdbd2cSJim Jagielski 		OUString sAttrName = xAttrList->getNameByIndex(i);
416*b1cdbd2cSJim Jagielski 		OUString aLocalName;
417*b1cdbd2cSJim Jagielski 		sal_uInt16 nPrefix = GetSdImport().GetNamespaceMap().GetKeyByAttrName(sAttrName, &aLocalName);
418*b1cdbd2cSJim Jagielski 		OUString sValue = xAttrList->getValueByIndex(i);
419*b1cdbd2cSJim Jagielski 		const SvXMLTokenMap& rAttrTokenMap = GetSdImport().GetPageMasterAttrTokenMap();
420*b1cdbd2cSJim Jagielski 
421*b1cdbd2cSJim Jagielski 		switch(rAttrTokenMap.Get(nPrefix, aLocalName))
422*b1cdbd2cSJim Jagielski 		{
423*b1cdbd2cSJim Jagielski 			case XML_TOK_PAGEMASTER_NAME:
424*b1cdbd2cSJim Jagielski 			{
425*b1cdbd2cSJim Jagielski 				msName = sValue;
426*b1cdbd2cSJim Jagielski 				break;
427*b1cdbd2cSJim Jagielski 			}
428*b1cdbd2cSJim Jagielski 		}
429*b1cdbd2cSJim Jagielski 	}
430*b1cdbd2cSJim Jagielski }
431*b1cdbd2cSJim Jagielski 
432*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
433*b1cdbd2cSJim Jagielski 
~SdXMLPageMasterContext()434*b1cdbd2cSJim Jagielski SdXMLPageMasterContext::~SdXMLPageMasterContext()
435*b1cdbd2cSJim Jagielski {
436*b1cdbd2cSJim Jagielski 	// release remembered contexts, they are no longer needed
437*b1cdbd2cSJim Jagielski 	if(mpPageMasterStyle)
438*b1cdbd2cSJim Jagielski 	{
439*b1cdbd2cSJim Jagielski 		mpPageMasterStyle->ReleaseRef();
440*b1cdbd2cSJim Jagielski 		mpPageMasterStyle = 0L;
441*b1cdbd2cSJim Jagielski 	}
442*b1cdbd2cSJim Jagielski }
443*b1cdbd2cSJim Jagielski 
444*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
445*b1cdbd2cSJim Jagielski 
CreateChildContext(sal_uInt16 nPrefix,const OUString & rLocalName,const uno::Reference<xml::sax::XAttributeList> & xAttrList)446*b1cdbd2cSJim Jagielski SvXMLImportContext *SdXMLPageMasterContext::CreateChildContext(
447*b1cdbd2cSJim Jagielski 	sal_uInt16 nPrefix,
448*b1cdbd2cSJim Jagielski 	const OUString& rLocalName,
449*b1cdbd2cSJim Jagielski 	const uno::Reference< xml::sax::XAttributeList >& xAttrList )
450*b1cdbd2cSJim Jagielski {
451*b1cdbd2cSJim Jagielski 	SvXMLImportContext* pContext = 0;
452*b1cdbd2cSJim Jagielski 
453*b1cdbd2cSJim Jagielski 	if(nPrefix == XML_NAMESPACE_STYLE && IsXMLToken( rLocalName, XML_PAGE_LAYOUT_PROPERTIES) )
454*b1cdbd2cSJim Jagielski 	{
455*b1cdbd2cSJim Jagielski 		pContext = new SdXMLPageMasterStyleContext(GetSdImport(), nPrefix, rLocalName, xAttrList);
456*b1cdbd2cSJim Jagielski 
457*b1cdbd2cSJim Jagielski 		// remember SdXMLPresentationPlaceholderContext for later evaluation
458*b1cdbd2cSJim Jagielski 		if(pContext)
459*b1cdbd2cSJim Jagielski 		{
460*b1cdbd2cSJim Jagielski 			pContext->AddRef();
461*b1cdbd2cSJim Jagielski 			DBG_ASSERT(!mpPageMasterStyle, "PageMasterStyle is set, there seem to be two of them (!)");
462*b1cdbd2cSJim Jagielski 			mpPageMasterStyle = (SdXMLPageMasterStyleContext*)pContext;
463*b1cdbd2cSJim Jagielski 		}
464*b1cdbd2cSJim Jagielski 	}
465*b1cdbd2cSJim Jagielski 
466*b1cdbd2cSJim Jagielski 	// call base class
467*b1cdbd2cSJim Jagielski 	if(!pContext)
468*b1cdbd2cSJim Jagielski 		pContext = SvXMLStyleContext::CreateChildContext(nPrefix, rLocalName, xAttrList);
469*b1cdbd2cSJim Jagielski 
470*b1cdbd2cSJim Jagielski 	return pContext;
471*b1cdbd2cSJim Jagielski }
472*b1cdbd2cSJim Jagielski 
473*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
474*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
475*b1cdbd2cSJim Jagielski 
476*b1cdbd2cSJim Jagielski TYPEINIT1( SdXMLPresentationPageLayoutContext, SvXMLStyleContext );
477*b1cdbd2cSJim Jagielski 
SdXMLPresentationPageLayoutContext(SdXMLImport & rImport,sal_uInt16 nPrfx,const OUString & rLName,const uno::Reference<xml::sax::XAttributeList> & xAttrList)478*b1cdbd2cSJim Jagielski SdXMLPresentationPageLayoutContext::SdXMLPresentationPageLayoutContext(
479*b1cdbd2cSJim Jagielski 	SdXMLImport& rImport,
480*b1cdbd2cSJim Jagielski 	sal_uInt16 nPrfx,
481*b1cdbd2cSJim Jagielski 	const OUString& rLName,
482*b1cdbd2cSJim Jagielski 	const uno::Reference< xml::sax::XAttributeList >& xAttrList)
483*b1cdbd2cSJim Jagielski :	SvXMLStyleContext(rImport, nPrfx, rLName, xAttrList, XML_STYLE_FAMILY_SD_PRESENTATIONPAGELAYOUT_ID),
484*b1cdbd2cSJim Jagielski 	mnTypeId( 20 ) // AUTOLAYOUT_NONE
485*b1cdbd2cSJim Jagielski {
486*b1cdbd2cSJim Jagielski 	// set family to somethiong special at SvXMLStyleContext
487*b1cdbd2cSJim Jagielski 	// for differences in search-methods
488*b1cdbd2cSJim Jagielski 
489*b1cdbd2cSJim Jagielski 	sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
490*b1cdbd2cSJim Jagielski 	for( sal_Int16 i=0; i < nAttrCount; i++ )
491*b1cdbd2cSJim Jagielski 	{
492*b1cdbd2cSJim Jagielski 		const OUString& rAttrName = xAttrList->getNameByIndex( i );
493*b1cdbd2cSJim Jagielski 		OUString aLocalName;
494*b1cdbd2cSJim Jagielski 		sal_uInt16 nPrefix = GetImport().GetNamespaceMap().GetKeyByAttrName( rAttrName,	&aLocalName );
495*b1cdbd2cSJim Jagielski 
496*b1cdbd2cSJim Jagielski 		if(nPrefix == XML_NAMESPACE_STYLE && IsXMLToken( aLocalName, XML_NAME ) )
497*b1cdbd2cSJim Jagielski 		{
498*b1cdbd2cSJim Jagielski 			msName = xAttrList->getValueByIndex( i );
499*b1cdbd2cSJim Jagielski 		}
500*b1cdbd2cSJim Jagielski 	}
501*b1cdbd2cSJim Jagielski }
502*b1cdbd2cSJim Jagielski 
~SdXMLPresentationPageLayoutContext()503*b1cdbd2cSJim Jagielski SdXMLPresentationPageLayoutContext::~SdXMLPresentationPageLayoutContext()
504*b1cdbd2cSJim Jagielski {
505*b1cdbd2cSJim Jagielski }
506*b1cdbd2cSJim Jagielski 
CreateChildContext(sal_uInt16 nPrefix,const OUString & rLocalName,const uno::Reference<xml::sax::XAttributeList> & xAttrList)507*b1cdbd2cSJim Jagielski SvXMLImportContext *SdXMLPresentationPageLayoutContext::CreateChildContext(
508*b1cdbd2cSJim Jagielski 	sal_uInt16 nPrefix,
509*b1cdbd2cSJim Jagielski 	const OUString& rLocalName,
510*b1cdbd2cSJim Jagielski 	const uno::Reference< xml::sax::XAttributeList >& xAttrList )
511*b1cdbd2cSJim Jagielski {
512*b1cdbd2cSJim Jagielski 	SvXMLImportContext* pContext = 0;
513*b1cdbd2cSJim Jagielski 
514*b1cdbd2cSJim Jagielski 	if(nPrefix == XML_NAMESPACE_PRESENTATION && IsXMLToken( rLocalName, XML_PLACEHOLDER ) )
515*b1cdbd2cSJim Jagielski 	{
516*b1cdbd2cSJim Jagielski 		// presentation:placeholder inside style:presentation-page-layout context
517*b1cdbd2cSJim Jagielski 		pContext = new SdXMLPresentationPlaceholderContext(
518*b1cdbd2cSJim Jagielski 			GetSdImport(), nPrefix, rLocalName, xAttrList);
519*b1cdbd2cSJim Jagielski 
520*b1cdbd2cSJim Jagielski 		// remember SdXMLPresentationPlaceholderContext for later evaluation
521*b1cdbd2cSJim Jagielski 		if(pContext)
522*b1cdbd2cSJim Jagielski 		{
523*b1cdbd2cSJim Jagielski 			pContext->AddRef();
524*b1cdbd2cSJim Jagielski 			maList.Insert((SdXMLPresentationPlaceholderContext*)pContext, LIST_APPEND);
525*b1cdbd2cSJim Jagielski 		}
526*b1cdbd2cSJim Jagielski 	}
527*b1cdbd2cSJim Jagielski 
528*b1cdbd2cSJim Jagielski 	// call base class
529*b1cdbd2cSJim Jagielski 	if(!pContext)
530*b1cdbd2cSJim Jagielski 		pContext = SvXMLStyleContext::CreateChildContext(nPrefix, rLocalName, xAttrList);
531*b1cdbd2cSJim Jagielski 
532*b1cdbd2cSJim Jagielski 	return pContext;
533*b1cdbd2cSJim Jagielski }
534*b1cdbd2cSJim Jagielski 
EndElement()535*b1cdbd2cSJim Jagielski void SdXMLPresentationPageLayoutContext::EndElement()
536*b1cdbd2cSJim Jagielski {
537*b1cdbd2cSJim Jagielski 	// build presentation page layout type here
538*b1cdbd2cSJim Jagielski 	// calc mnTpeId due to content of maList
539*b1cdbd2cSJim Jagielski 	// at the moment only use number of types used there
540*b1cdbd2cSJim Jagielski 	if(maList.Count())
541*b1cdbd2cSJim Jagielski 	{
542*b1cdbd2cSJim Jagielski 		SdXMLPresentationPlaceholderContext* pObj0 = maList.GetObject(0);
543*b1cdbd2cSJim Jagielski 		if(pObj0->GetName().equals(OUString(RTL_CONSTASCII_USTRINGPARAM("handout"))))
544*b1cdbd2cSJim Jagielski 		{
545*b1cdbd2cSJim Jagielski 			switch( maList.Count() )
546*b1cdbd2cSJim Jagielski 			{
547*b1cdbd2cSJim Jagielski 			case 1:
548*b1cdbd2cSJim Jagielski 				mnTypeId = 22; // AUTOLAYOUT_HANDOUT1
549*b1cdbd2cSJim Jagielski 				break;
550*b1cdbd2cSJim Jagielski 			case 2:
551*b1cdbd2cSJim Jagielski 				mnTypeId = 23; // AUTOLAYOUT_HANDOUT2
552*b1cdbd2cSJim Jagielski 				break;
553*b1cdbd2cSJim Jagielski 			case 3:
554*b1cdbd2cSJim Jagielski 				mnTypeId = 24; // AUTOLAYOUT_HANDOUT3
555*b1cdbd2cSJim Jagielski 				break;
556*b1cdbd2cSJim Jagielski 			case 4:
557*b1cdbd2cSJim Jagielski 				mnTypeId = 25; // AUTOLAYOUT_HANDOUT4
558*b1cdbd2cSJim Jagielski 				break;
559*b1cdbd2cSJim Jagielski 			case 9:
560*b1cdbd2cSJim Jagielski 				mnTypeId = 31; // AUTOLAYOUT_HANDOUT9
561*b1cdbd2cSJim Jagielski 				break;
562*b1cdbd2cSJim Jagielski 			default:
563*b1cdbd2cSJim Jagielski 				mnTypeId = 26; // AUTOLAYOUT_HANDOUT6
564*b1cdbd2cSJim Jagielski 			}
565*b1cdbd2cSJim Jagielski 		}
566*b1cdbd2cSJim Jagielski 		else
567*b1cdbd2cSJim Jagielski 		{
568*b1cdbd2cSJim Jagielski 			switch(maList.Count())
569*b1cdbd2cSJim Jagielski 			{
570*b1cdbd2cSJim Jagielski 				case 1:
571*b1cdbd2cSJim Jagielski 				{
572*b1cdbd2cSJim Jagielski                     if(pObj0->GetName().equals(OUString(RTL_CONSTASCII_USTRINGPARAM("title"))))
573*b1cdbd2cSJim Jagielski 					{
574*b1cdbd2cSJim Jagielski     					mnTypeId = 19; // AUTOLAYOUT_ONLY_TITLE
575*b1cdbd2cSJim Jagielski                     }
576*b1cdbd2cSJim Jagielski                     else
577*b1cdbd2cSJim Jagielski                     {
578*b1cdbd2cSJim Jagielski                         mnTypeId = 32; // AUTOLAYOUT_ONLY_TEXT
579*b1cdbd2cSJim Jagielski                     }
580*b1cdbd2cSJim Jagielski 					break;
581*b1cdbd2cSJim Jagielski 				}
582*b1cdbd2cSJim Jagielski 				case 2:
583*b1cdbd2cSJim Jagielski 				{
584*b1cdbd2cSJim Jagielski 					SdXMLPresentationPlaceholderContext* pObj1 = maList.GetObject(1);
585*b1cdbd2cSJim Jagielski 
586*b1cdbd2cSJim Jagielski 					if(pObj1->GetName().equals(
587*b1cdbd2cSJim Jagielski 						OUString(RTL_CONSTASCII_USTRINGPARAM("subtitle"))))
588*b1cdbd2cSJim Jagielski 					{
589*b1cdbd2cSJim Jagielski 						mnTypeId = 0; // AUTOLAYOUT_TITLE
590*b1cdbd2cSJim Jagielski 					}
591*b1cdbd2cSJim Jagielski 					else if(pObj1->GetName().equals(
592*b1cdbd2cSJim Jagielski 						OUString(RTL_CONSTASCII_USTRINGPARAM("outline"))))
593*b1cdbd2cSJim Jagielski 					{
594*b1cdbd2cSJim Jagielski 						mnTypeId = 1; // AUTOLAYOUT_ENUM
595*b1cdbd2cSJim Jagielski 					}
596*b1cdbd2cSJim Jagielski 					else if(pObj1->GetName().equals(
597*b1cdbd2cSJim Jagielski 						OUString(RTL_CONSTASCII_USTRINGPARAM("chart"))))
598*b1cdbd2cSJim Jagielski 					{
599*b1cdbd2cSJim Jagielski 						mnTypeId = 2; // AUTOLAYOUT_CHART
600*b1cdbd2cSJim Jagielski 					}
601*b1cdbd2cSJim Jagielski 					else if(pObj1->GetName().equals(
602*b1cdbd2cSJim Jagielski 						OUString(RTL_CONSTASCII_USTRINGPARAM("table"))))
603*b1cdbd2cSJim Jagielski 					{
604*b1cdbd2cSJim Jagielski 						mnTypeId = 8; // AUTOLAYOUT_TAB
605*b1cdbd2cSJim Jagielski 					}
606*b1cdbd2cSJim Jagielski 					else if(pObj1->GetName().equals(
607*b1cdbd2cSJim Jagielski 						OUString(RTL_CONSTASCII_USTRINGPARAM("object"))))
608*b1cdbd2cSJim Jagielski 					{
609*b1cdbd2cSJim Jagielski 						mnTypeId = 11; // AUTOLAYOUT_OBJ
610*b1cdbd2cSJim Jagielski 					}
611*b1cdbd2cSJim Jagielski 					else if(pObj1->GetName().equals(
612*b1cdbd2cSJim Jagielski 						OUString(RTL_CONSTASCII_USTRINGPARAM("vertical_outline"))))
613*b1cdbd2cSJim Jagielski 					{
614*b1cdbd2cSJim Jagielski 						if(pObj0->GetName().equals(OUString(RTL_CONSTASCII_USTRINGPARAM("vertical_title"))))
615*b1cdbd2cSJim Jagielski 						{
616*b1cdbd2cSJim Jagielski 							// AUTOLAYOUT_VERTICAL_TITLE_VERTICAL_OUTLINE
617*b1cdbd2cSJim Jagielski 							mnTypeId = 28;
618*b1cdbd2cSJim Jagielski 						}
619*b1cdbd2cSJim Jagielski 						else
620*b1cdbd2cSJim Jagielski 						{
621*b1cdbd2cSJim Jagielski 							// AUTOLAYOUT_TITLE_VERTICAL_OUTLINE
622*b1cdbd2cSJim Jagielski 							mnTypeId = 29;
623*b1cdbd2cSJim Jagielski 						}
624*b1cdbd2cSJim Jagielski 					}
625*b1cdbd2cSJim Jagielski 					else
626*b1cdbd2cSJim Jagielski 					{
627*b1cdbd2cSJim Jagielski 						mnTypeId = 21; // AUTOLAYOUT_NOTES
628*b1cdbd2cSJim Jagielski 					}
629*b1cdbd2cSJim Jagielski 					break;
630*b1cdbd2cSJim Jagielski 				}
631*b1cdbd2cSJim Jagielski 				case 3:
632*b1cdbd2cSJim Jagielski 				{
633*b1cdbd2cSJim Jagielski 					SdXMLPresentationPlaceholderContext* pObj1 = maList.GetObject(1);
634*b1cdbd2cSJim Jagielski 					SdXMLPresentationPlaceholderContext* pObj2 = maList.GetObject(2);
635*b1cdbd2cSJim Jagielski 
636*b1cdbd2cSJim Jagielski 					if(pObj1->GetName().equals(
637*b1cdbd2cSJim Jagielski 						OUString(RTL_CONSTASCII_USTRINGPARAM("outline"))))
638*b1cdbd2cSJim Jagielski 					{
639*b1cdbd2cSJim Jagielski 						if(pObj2->GetName().equals(
640*b1cdbd2cSJim Jagielski 							OUString(RTL_CONSTASCII_USTRINGPARAM("outline"))))
641*b1cdbd2cSJim Jagielski 						{
642*b1cdbd2cSJim Jagielski 							mnTypeId = 3; // AUTOLAYOUT_2TEXT
643*b1cdbd2cSJim Jagielski 						}
644*b1cdbd2cSJim Jagielski 						else if(pObj2->GetName().equals(
645*b1cdbd2cSJim Jagielski 							OUString(RTL_CONSTASCII_USTRINGPARAM("chart"))))
646*b1cdbd2cSJim Jagielski 						{
647*b1cdbd2cSJim Jagielski 							mnTypeId = 4; // AUTOLAYOUT_TEXTCHART
648*b1cdbd2cSJim Jagielski 						}
649*b1cdbd2cSJim Jagielski 						else if(pObj2->GetName().equals(
650*b1cdbd2cSJim Jagielski 							OUString(RTL_CONSTASCII_USTRINGPARAM("graphic"))))
651*b1cdbd2cSJim Jagielski 						{
652*b1cdbd2cSJim Jagielski 							mnTypeId = 6; // AUTOLAYOUT_TEXTCLIP
653*b1cdbd2cSJim Jagielski 						}
654*b1cdbd2cSJim Jagielski 						else
655*b1cdbd2cSJim Jagielski 						{
656*b1cdbd2cSJim Jagielski 							if(pObj1->GetX() < pObj2->GetX())
657*b1cdbd2cSJim Jagielski 							{
658*b1cdbd2cSJim Jagielski 								mnTypeId = 10; // AUTOLAYOUT_TEXTOBJ -> outline left, object right
659*b1cdbd2cSJim Jagielski 							}
660*b1cdbd2cSJim Jagielski 							else
661*b1cdbd2cSJim Jagielski 							{
662*b1cdbd2cSJim Jagielski 								mnTypeId = 17; // AUTOLAYOUT_TEXTOVEROBJ -> outline top, object right
663*b1cdbd2cSJim Jagielski 							}
664*b1cdbd2cSJim Jagielski 						}
665*b1cdbd2cSJim Jagielski 					}
666*b1cdbd2cSJim Jagielski 					else if(pObj1->GetName().equals(
667*b1cdbd2cSJim Jagielski 						OUString(RTL_CONSTASCII_USTRINGPARAM("chart"))))
668*b1cdbd2cSJim Jagielski 					{
669*b1cdbd2cSJim Jagielski 						mnTypeId = 7; // AUTOLAYOUT_CHARTTEXT
670*b1cdbd2cSJim Jagielski 					}
671*b1cdbd2cSJim Jagielski 					else if(pObj1->GetName().equals(
672*b1cdbd2cSJim Jagielski 						OUString(RTL_CONSTASCII_USTRINGPARAM("graphic"))))
673*b1cdbd2cSJim Jagielski 					{
674*b1cdbd2cSJim Jagielski 						if(pObj2->GetName().equals(OUString(RTL_CONSTASCII_USTRINGPARAM("vertical_outline"))))
675*b1cdbd2cSJim Jagielski 						{
676*b1cdbd2cSJim Jagielski 							// AUTOLAYOUT_TITLE_VERTICAL_OUTLINE_CLIPART
677*b1cdbd2cSJim Jagielski 							mnTypeId = 30;
678*b1cdbd2cSJim Jagielski 						}
679*b1cdbd2cSJim Jagielski 						else
680*b1cdbd2cSJim Jagielski 						{
681*b1cdbd2cSJim Jagielski 							mnTypeId = 9; // AUTOLAYOUT_CLIPTEXT
682*b1cdbd2cSJim Jagielski 						}
683*b1cdbd2cSJim Jagielski 					}
684*b1cdbd2cSJim Jagielski 					else if(pObj1->GetName().equals(
685*b1cdbd2cSJim Jagielski 						OUString(RTL_CONSTASCII_USTRINGPARAM("vertical_outline"))))
686*b1cdbd2cSJim Jagielski 					{
687*b1cdbd2cSJim Jagielski 						// AUTOLAYOUT_VERTICAL_TITLE_TEXT_CHART
688*b1cdbd2cSJim Jagielski 						mnTypeId = 27;
689*b1cdbd2cSJim Jagielski 					}
690*b1cdbd2cSJim Jagielski 					else
691*b1cdbd2cSJim Jagielski 					{
692*b1cdbd2cSJim Jagielski 						if(pObj1->GetX() < pObj2->GetX())
693*b1cdbd2cSJim Jagielski 						{
694*b1cdbd2cSJim Jagielski 							mnTypeId = 13; // AUTOLAYOUT_OBJTEXT -> left, right
695*b1cdbd2cSJim Jagielski 						}
696*b1cdbd2cSJim Jagielski 						else
697*b1cdbd2cSJim Jagielski 						{
698*b1cdbd2cSJim Jagielski 							mnTypeId = 14; // AUTOLAYOUT_OBJOVERTEXT -> top, bottom
699*b1cdbd2cSJim Jagielski 						}
700*b1cdbd2cSJim Jagielski 					}
701*b1cdbd2cSJim Jagielski 					break;
702*b1cdbd2cSJim Jagielski 				}
703*b1cdbd2cSJim Jagielski 				case 4:
704*b1cdbd2cSJim Jagielski 				{
705*b1cdbd2cSJim Jagielski 					SdXMLPresentationPlaceholderContext* pObj1 = maList.GetObject(1);
706*b1cdbd2cSJim Jagielski 					SdXMLPresentationPlaceholderContext* pObj2 = maList.GetObject(2);
707*b1cdbd2cSJim Jagielski 
708*b1cdbd2cSJim Jagielski 					if(pObj1->GetName().equals(
709*b1cdbd2cSJim Jagielski 						OUString(RTL_CONSTASCII_USTRINGPARAM("object"))))
710*b1cdbd2cSJim Jagielski 					{
711*b1cdbd2cSJim Jagielski 						if(pObj1->GetX() < pObj2->GetX())
712*b1cdbd2cSJim Jagielski 						{
713*b1cdbd2cSJim Jagielski 							mnTypeId = 16; // AUTOLAYOUT_2OBJOVERTEXT
714*b1cdbd2cSJim Jagielski 						}
715*b1cdbd2cSJim Jagielski 						else
716*b1cdbd2cSJim Jagielski 						{
717*b1cdbd2cSJim Jagielski 							mnTypeId = 15; // AUTOLAYOUT_2OBJTEXT
718*b1cdbd2cSJim Jagielski 						}
719*b1cdbd2cSJim Jagielski 					}
720*b1cdbd2cSJim Jagielski 					else
721*b1cdbd2cSJim Jagielski 					{
722*b1cdbd2cSJim Jagielski 						mnTypeId = 12; // AUTOLAYOUT_TEXT2OBJ
723*b1cdbd2cSJim Jagielski 					}
724*b1cdbd2cSJim Jagielski 					break;
725*b1cdbd2cSJim Jagielski 				}
726*b1cdbd2cSJim Jagielski 				case 5:
727*b1cdbd2cSJim Jagielski 				{
728*b1cdbd2cSJim Jagielski 					SdXMLPresentationPlaceholderContext* pObj1 = maList.GetObject(1);
729*b1cdbd2cSJim Jagielski 
730*b1cdbd2cSJim Jagielski 					if(pObj1->GetName().equals(
731*b1cdbd2cSJim Jagielski 						OUString(RTL_CONSTASCII_USTRINGPARAM("object"))))
732*b1cdbd2cSJim Jagielski 					{
733*b1cdbd2cSJim Jagielski 						mnTypeId = 18; // AUTOLAYOUT_4OBJ
734*b1cdbd2cSJim Jagielski 					}
735*b1cdbd2cSJim Jagielski 					else
736*b1cdbd2cSJim Jagielski 					{
737*b1cdbd2cSJim Jagielski 						mnTypeId = 33; // AUTOLAYOUT_4CLIPART
738*b1cdbd2cSJim Jagielski 					}
739*b1cdbd2cSJim Jagielski  					break;
740*b1cdbd2cSJim Jagielski 
741*b1cdbd2cSJim Jagielski 				}
742*b1cdbd2cSJim Jagielski                 case 7:
743*b1cdbd2cSJim Jagielski                 {
744*b1cdbd2cSJim Jagielski                     mnTypeId = 33; // AUTOLAYOUT_6CLIPART
745*b1cdbd2cSJim Jagielski 					break;
746*b1cdbd2cSJim Jagielski                 }
747*b1cdbd2cSJim Jagielski                 default:
748*b1cdbd2cSJim Jagielski                 {
749*b1cdbd2cSJim Jagielski                     mnTypeId = 20; // AUTOLAYOUT_NONE
750*b1cdbd2cSJim Jagielski                     break;
751*b1cdbd2cSJim Jagielski                 }
752*b1cdbd2cSJim Jagielski 			}
753*b1cdbd2cSJim Jagielski 		}
754*b1cdbd2cSJim Jagielski 
755*b1cdbd2cSJim Jagielski 		// release remembered contexts, they are no longer needed
756*b1cdbd2cSJim Jagielski 		while(maList.Count())
757*b1cdbd2cSJim Jagielski 			maList.Remove(maList.Count() - 1)->ReleaseRef();
758*b1cdbd2cSJim Jagielski 	}
759*b1cdbd2cSJim Jagielski }
760*b1cdbd2cSJim Jagielski 
761*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
762*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
763*b1cdbd2cSJim Jagielski 
SdXMLPresentationPlaceholderContext(SdXMLImport & rImport,sal_uInt16 nPrfx,const OUString & rLName,const uno::Reference<xml::sax::XAttributeList> & xAttrList)764*b1cdbd2cSJim Jagielski SdXMLPresentationPlaceholderContext::SdXMLPresentationPlaceholderContext(
765*b1cdbd2cSJim Jagielski 	SdXMLImport& rImport,
766*b1cdbd2cSJim Jagielski 	sal_uInt16 nPrfx, const
767*b1cdbd2cSJim Jagielski 	OUString& rLName,
768*b1cdbd2cSJim Jagielski 	const uno::Reference< xml::sax::XAttributeList>& xAttrList)
769*b1cdbd2cSJim Jagielski :	SvXMLImportContext( rImport, nPrfx, rLName),
770*b1cdbd2cSJim Jagielski 	mnX(0L),
771*b1cdbd2cSJim Jagielski 	mnY(0L),
772*b1cdbd2cSJim Jagielski 	mnWidth(1L),
773*b1cdbd2cSJim Jagielski 	mnHeight(1L)
774*b1cdbd2cSJim Jagielski {
775*b1cdbd2cSJim Jagielski 	sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
776*b1cdbd2cSJim Jagielski 	for(sal_Int16 i=0; i < nAttrCount; i++)
777*b1cdbd2cSJim Jagielski 	{
778*b1cdbd2cSJim Jagielski 		OUString sAttrName = xAttrList->getNameByIndex(i);
779*b1cdbd2cSJim Jagielski 		OUString aLocalName;
780*b1cdbd2cSJim Jagielski 		sal_uInt16 nPrefix = GetSdImport().GetNamespaceMap().GetKeyByAttrName(sAttrName, &aLocalName);
781*b1cdbd2cSJim Jagielski 		OUString sValue = xAttrList->getValueByIndex(i);
782*b1cdbd2cSJim Jagielski 		const SvXMLTokenMap& rAttrTokenMap = GetSdImport().GetPresentationPlaceholderAttrTokenMap();
783*b1cdbd2cSJim Jagielski 
784*b1cdbd2cSJim Jagielski 		switch(rAttrTokenMap.Get(nPrefix, aLocalName))
785*b1cdbd2cSJim Jagielski 		{
786*b1cdbd2cSJim Jagielski 			case XML_TOK_PRESENTATIONPLACEHOLDER_OBJECTNAME:
787*b1cdbd2cSJim Jagielski 			{
788*b1cdbd2cSJim Jagielski 				msName = sValue;
789*b1cdbd2cSJim Jagielski 				break;
790*b1cdbd2cSJim Jagielski 			}
791*b1cdbd2cSJim Jagielski 			case XML_TOK_PRESENTATIONPLACEHOLDER_X:
792*b1cdbd2cSJim Jagielski 			{
793*b1cdbd2cSJim Jagielski 				GetSdImport().GetMM100UnitConverter().convertMeasure(mnX, sValue);
794*b1cdbd2cSJim Jagielski 				break;
795*b1cdbd2cSJim Jagielski 			}
796*b1cdbd2cSJim Jagielski 			case XML_TOK_PRESENTATIONPLACEHOLDER_Y:
797*b1cdbd2cSJim Jagielski 			{
798*b1cdbd2cSJim Jagielski 				GetSdImport().GetMM100UnitConverter().convertMeasure(mnY, sValue);
799*b1cdbd2cSJim Jagielski 				break;
800*b1cdbd2cSJim Jagielski 			}
801*b1cdbd2cSJim Jagielski 			case XML_TOK_PRESENTATIONPLACEHOLDER_WIDTH:
802*b1cdbd2cSJim Jagielski 			{
803*b1cdbd2cSJim Jagielski 				GetSdImport().GetMM100UnitConverter().convertMeasure(mnWidth, sValue);
804*b1cdbd2cSJim Jagielski 				break;
805*b1cdbd2cSJim Jagielski 			}
806*b1cdbd2cSJim Jagielski 			case XML_TOK_PRESENTATIONPLACEHOLDER_HEIGHT:
807*b1cdbd2cSJim Jagielski 			{
808*b1cdbd2cSJim Jagielski 				GetSdImport().GetMM100UnitConverter().convertMeasure(mnHeight, sValue);
809*b1cdbd2cSJim Jagielski 				break;
810*b1cdbd2cSJim Jagielski 			}
811*b1cdbd2cSJim Jagielski 		}
812*b1cdbd2cSJim Jagielski 	}
813*b1cdbd2cSJim Jagielski }
814*b1cdbd2cSJim Jagielski 
815*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
816*b1cdbd2cSJim Jagielski 
~SdXMLPresentationPlaceholderContext()817*b1cdbd2cSJim Jagielski SdXMLPresentationPlaceholderContext::~SdXMLPresentationPlaceholderContext()
818*b1cdbd2cSJim Jagielski {
819*b1cdbd2cSJim Jagielski }
820*b1cdbd2cSJim Jagielski 
821*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
822*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
823*b1cdbd2cSJim Jagielski 
824*b1cdbd2cSJim Jagielski TYPEINIT1( SdXMLMasterPageContext, SdXMLGenericPageContext );
825*b1cdbd2cSJim Jagielski 
SdXMLMasterPageContext(SdXMLImport & rImport,sal_uInt16 nPrfx,const OUString & rLName,const uno::Reference<xml::sax::XAttributeList> & xAttrList,uno::Reference<drawing::XShapes> & rShapes)826*b1cdbd2cSJim Jagielski SdXMLMasterPageContext::SdXMLMasterPageContext(
827*b1cdbd2cSJim Jagielski 	SdXMLImport& rImport,
828*b1cdbd2cSJim Jagielski 	sal_uInt16 nPrfx,
829*b1cdbd2cSJim Jagielski 	const OUString& rLName,
830*b1cdbd2cSJim Jagielski 	const uno::Reference< xml::sax::XAttributeList>& xAttrList,
831*b1cdbd2cSJim Jagielski 	uno::Reference< drawing::XShapes >& rShapes)
832*b1cdbd2cSJim Jagielski :	SdXMLGenericPageContext( rImport, nPrfx, rLName, xAttrList, rShapes )
833*b1cdbd2cSJim Jagielski {
834*b1cdbd2cSJim Jagielski 	const sal_Bool bHandoutMaster = IsXMLToken( rLName, XML_HANDOUT_MASTER );
835*b1cdbd2cSJim Jagielski 
836*b1cdbd2cSJim Jagielski 	const sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
837*b1cdbd2cSJim Jagielski 	for(sal_Int16 i=0; i < nAttrCount; i++)
838*b1cdbd2cSJim Jagielski 	{
839*b1cdbd2cSJim Jagielski 		OUString sAttrName = xAttrList->getNameByIndex( i );
840*b1cdbd2cSJim Jagielski 		OUString aLocalName;
841*b1cdbd2cSJim Jagielski 		sal_uInt16 nPrefix = GetSdImport().GetNamespaceMap().GetKeyByAttrName( sAttrName, &aLocalName );
842*b1cdbd2cSJim Jagielski 		OUString sValue = xAttrList->getValueByIndex( i );
843*b1cdbd2cSJim Jagielski 		const SvXMLTokenMap& rAttrTokenMap = GetSdImport().GetMasterPageAttrTokenMap();
844*b1cdbd2cSJim Jagielski 
845*b1cdbd2cSJim Jagielski 		switch(rAttrTokenMap.Get(nPrefix, aLocalName))
846*b1cdbd2cSJim Jagielski 		{
847*b1cdbd2cSJim Jagielski 			case XML_TOK_MASTERPAGE_NAME:
848*b1cdbd2cSJim Jagielski 			{
849*b1cdbd2cSJim Jagielski 				msName = sValue;
850*b1cdbd2cSJim Jagielski 				break;
851*b1cdbd2cSJim Jagielski 			}
852*b1cdbd2cSJim Jagielski 			case XML_TOK_MASTERPAGE_DISPLAY_NAME:
853*b1cdbd2cSJim Jagielski 			{
854*b1cdbd2cSJim Jagielski 				msDisplayName = sValue;
855*b1cdbd2cSJim Jagielski 				break;
856*b1cdbd2cSJim Jagielski 			}
857*b1cdbd2cSJim Jagielski 			case XML_TOK_MASTERPAGE_PAGE_MASTER_NAME:
858*b1cdbd2cSJim Jagielski 			{
859*b1cdbd2cSJim Jagielski 				msPageMasterName = sValue;
860*b1cdbd2cSJim Jagielski 				break;
861*b1cdbd2cSJim Jagielski 			}
862*b1cdbd2cSJim Jagielski 			case XML_TOK_MASTERPAGE_STYLE_NAME:
863*b1cdbd2cSJim Jagielski 			{
864*b1cdbd2cSJim Jagielski 				msStyleName = sValue;
865*b1cdbd2cSJim Jagielski 				break;
866*b1cdbd2cSJim Jagielski 			}
867*b1cdbd2cSJim Jagielski 			case XML_TOK_MASTERPAGE_PAGE_LAYOUT_NAME:
868*b1cdbd2cSJim Jagielski 			{
869*b1cdbd2cSJim Jagielski 				maPageLayoutName = sValue;
870*b1cdbd2cSJim Jagielski 				break;
871*b1cdbd2cSJim Jagielski 			}
872*b1cdbd2cSJim Jagielski 			case XML_TOK_MASTERPAGE_USE_HEADER_NAME:
873*b1cdbd2cSJim Jagielski 			{
874*b1cdbd2cSJim Jagielski 				maUseHeaderDeclName =  sValue;
875*b1cdbd2cSJim Jagielski 				break;
876*b1cdbd2cSJim Jagielski 			}
877*b1cdbd2cSJim Jagielski 			case XML_TOK_MASTERPAGE_USE_FOOTER_NAME:
878*b1cdbd2cSJim Jagielski 			{
879*b1cdbd2cSJim Jagielski 				maUseFooterDeclName =  sValue;
880*b1cdbd2cSJim Jagielski 				break;
881*b1cdbd2cSJim Jagielski 			}
882*b1cdbd2cSJim Jagielski 			case XML_TOK_MASTERPAGE_USE_DATE_TIME_NAME:
883*b1cdbd2cSJim Jagielski 			{
884*b1cdbd2cSJim Jagielski 				maUseDateTimeDeclName =  sValue;
885*b1cdbd2cSJim Jagielski 				break;
886*b1cdbd2cSJim Jagielski 			}
887*b1cdbd2cSJim Jagielski 		}
888*b1cdbd2cSJim Jagielski 	}
889*b1cdbd2cSJim Jagielski 
890*b1cdbd2cSJim Jagielski 	if( !msDisplayName.getLength() )
891*b1cdbd2cSJim Jagielski 		msDisplayName = msName;
892*b1cdbd2cSJim Jagielski 	else if( msDisplayName != msName )
893*b1cdbd2cSJim Jagielski 		GetImport().AddStyleDisplayName( XML_STYLE_FAMILY_MASTER_PAGE, msName, msDisplayName );
894*b1cdbd2cSJim Jagielski 
895*b1cdbd2cSJim Jagielski 	GetImport().GetShapeImport()->startPage( GetLocalShapesContext() );
896*b1cdbd2cSJim Jagielski 
897*b1cdbd2cSJim Jagielski 	// set page name?
898*b1cdbd2cSJim Jagielski 	if(!bHandoutMaster && msDisplayName.getLength() && GetLocalShapesContext().is())
899*b1cdbd2cSJim Jagielski 	{
900*b1cdbd2cSJim Jagielski 		uno::Reference < container::XNamed > xNamed(GetLocalShapesContext(), uno::UNO_QUERY);
901*b1cdbd2cSJim Jagielski 		if(xNamed.is())
902*b1cdbd2cSJim Jagielski 			xNamed->setName(msDisplayName);
903*b1cdbd2cSJim Jagielski 	}
904*b1cdbd2cSJim Jagielski 
905*b1cdbd2cSJim Jagielski 	// set page-master?
906*b1cdbd2cSJim Jagielski 	if(msPageMasterName.getLength())
907*b1cdbd2cSJim Jagielski 	{
908*b1cdbd2cSJim Jagielski 		SetPageMaster( msPageMasterName );
909*b1cdbd2cSJim Jagielski 	}
910*b1cdbd2cSJim Jagielski 
911*b1cdbd2cSJim Jagielski 	SetStyle( msStyleName );
912*b1cdbd2cSJim Jagielski 
913*b1cdbd2cSJim Jagielski 	SetLayout();
914*b1cdbd2cSJim Jagielski 
915*b1cdbd2cSJim Jagielski 	DeleteAllShapes();
916*b1cdbd2cSJim Jagielski }
917*b1cdbd2cSJim Jagielski 
918*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
919*b1cdbd2cSJim Jagielski 
~SdXMLMasterPageContext()920*b1cdbd2cSJim Jagielski SdXMLMasterPageContext::~SdXMLMasterPageContext()
921*b1cdbd2cSJim Jagielski {
922*b1cdbd2cSJim Jagielski }
923*b1cdbd2cSJim Jagielski 
924*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
925*b1cdbd2cSJim Jagielski 
EndElement()926*b1cdbd2cSJim Jagielski void SdXMLMasterPageContext::EndElement()
927*b1cdbd2cSJim Jagielski {
928*b1cdbd2cSJim Jagielski 	// set styles on master-page
929*b1cdbd2cSJim Jagielski 	if(msName.getLength() && GetSdImport().GetShapeImport()->GetStylesContext())
930*b1cdbd2cSJim Jagielski 	{
931*b1cdbd2cSJim Jagielski 		SvXMLImportContext* pContext = GetSdImport().GetShapeImport()->GetStylesContext();
932*b1cdbd2cSJim Jagielski 		if( pContext && pContext->ISA( SvXMLStyleContext ) )
933*b1cdbd2cSJim Jagielski 			((SdXMLStylesContext*)pContext)->SetMasterPageStyles(*this);
934*b1cdbd2cSJim Jagielski 	}
935*b1cdbd2cSJim Jagielski 
936*b1cdbd2cSJim Jagielski 	SdXMLGenericPageContext::EndElement();
937*b1cdbd2cSJim Jagielski 	GetImport().GetShapeImport()->endPage(GetLocalShapesContext());
938*b1cdbd2cSJim Jagielski }
939*b1cdbd2cSJim Jagielski 
940*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
941*b1cdbd2cSJim Jagielski 
CreateChildContext(sal_uInt16 nPrefix,const OUString & rLocalName,const uno::Reference<xml::sax::XAttributeList> & xAttrList)942*b1cdbd2cSJim Jagielski SvXMLImportContext* SdXMLMasterPageContext::CreateChildContext(
943*b1cdbd2cSJim Jagielski 	sal_uInt16 nPrefix,
944*b1cdbd2cSJim Jagielski 	const OUString& rLocalName,
945*b1cdbd2cSJim Jagielski 	const uno::Reference< xml::sax::XAttributeList>& xAttrList )
946*b1cdbd2cSJim Jagielski {
947*b1cdbd2cSJim Jagielski 	SvXMLImportContext* pContext = 0;
948*b1cdbd2cSJim Jagielski 	const SvXMLTokenMap& rTokenMap = GetSdImport().GetMasterPageElemTokenMap();
949*b1cdbd2cSJim Jagielski 
950*b1cdbd2cSJim Jagielski 	// some special objects inside style:masterpage context
951*b1cdbd2cSJim Jagielski 	switch(rTokenMap.Get(nPrefix, rLocalName))
952*b1cdbd2cSJim Jagielski 	{
953*b1cdbd2cSJim Jagielski 		case XML_TOK_MASTERPAGE_STYLE:
954*b1cdbd2cSJim Jagielski 		{
955*b1cdbd2cSJim Jagielski 			if(GetSdImport().GetShapeImport()->GetStylesContext())
956*b1cdbd2cSJim Jagielski 			{
957*b1cdbd2cSJim Jagielski 				// style:style inside master-page context -> presentation style
958*b1cdbd2cSJim Jagielski 				XMLShapeStyleContext* pNew = new XMLShapeStyleContext(
959*b1cdbd2cSJim Jagielski 					GetSdImport(), nPrefix, rLocalName, xAttrList,
960*b1cdbd2cSJim Jagielski 					*GetSdImport().GetShapeImport()->GetStylesContext(),
961*b1cdbd2cSJim Jagielski 					XML_STYLE_FAMILY_SD_PRESENTATION_ID);
962*b1cdbd2cSJim Jagielski 
963*b1cdbd2cSJim Jagielski 				// add this style to the outer StylesContext class for later processing
964*b1cdbd2cSJim Jagielski 				if(pNew)
965*b1cdbd2cSJim Jagielski 				{
966*b1cdbd2cSJim Jagielski 					pContext = pNew;
967*b1cdbd2cSJim Jagielski 					GetSdImport().GetShapeImport()->GetStylesContext()->AddStyle(*pNew);
968*b1cdbd2cSJim Jagielski 				}
969*b1cdbd2cSJim Jagielski 			}
970*b1cdbd2cSJim Jagielski 			break;
971*b1cdbd2cSJim Jagielski 		}
972*b1cdbd2cSJim Jagielski 		case XML_TOK_MASTERPAGE_NOTES:
973*b1cdbd2cSJim Jagielski 		{
974*b1cdbd2cSJim Jagielski 			if( GetSdImport().IsImpress() )
975*b1cdbd2cSJim Jagielski 			{
976*b1cdbd2cSJim Jagielski 				// get notes page
977*b1cdbd2cSJim Jagielski 				uno::Reference< presentation::XPresentationPage > xPresPage(GetLocalShapesContext(), uno::UNO_QUERY);
978*b1cdbd2cSJim Jagielski 				if(xPresPage.is())
979*b1cdbd2cSJim Jagielski 				{
980*b1cdbd2cSJim Jagielski 					uno::Reference< drawing::XDrawPage > xNotesDrawPage(xPresPage->getNotesPage(), uno::UNO_QUERY);
981*b1cdbd2cSJim Jagielski 					if(xNotesDrawPage.is())
982*b1cdbd2cSJim Jagielski 					{
983*b1cdbd2cSJim Jagielski 						uno::Reference< drawing::XShapes > xNewShapes(xNotesDrawPage, uno::UNO_QUERY);
984*b1cdbd2cSJim Jagielski 						if(xNewShapes.is())
985*b1cdbd2cSJim Jagielski 						{
986*b1cdbd2cSJim Jagielski 							// presentation:notes inside master-page context
987*b1cdbd2cSJim Jagielski 							pContext = new SdXMLNotesContext( GetSdImport(), nPrefix, rLocalName, xAttrList, xNewShapes);
988*b1cdbd2cSJim Jagielski 						}
989*b1cdbd2cSJim Jagielski 					}
990*b1cdbd2cSJim Jagielski 				}
991*b1cdbd2cSJim Jagielski 			}
992*b1cdbd2cSJim Jagielski 		}
993*b1cdbd2cSJim Jagielski 	}
994*b1cdbd2cSJim Jagielski 
995*b1cdbd2cSJim Jagielski 	// call base class
996*b1cdbd2cSJim Jagielski 	if(!pContext)
997*b1cdbd2cSJim Jagielski 		pContext = SdXMLGenericPageContext::CreateChildContext(nPrefix, rLocalName, xAttrList);
998*b1cdbd2cSJim Jagielski 
999*b1cdbd2cSJim Jagielski 	return pContext;
1000*b1cdbd2cSJim Jagielski }
1001*b1cdbd2cSJim Jagielski 
1002*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
1003*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
1004*b1cdbd2cSJim Jagielski 
1005*b1cdbd2cSJim Jagielski TYPEINIT1( SdXMLStylesContext, SvXMLStyleContext );
1006*b1cdbd2cSJim Jagielski 
SdXMLStylesContext(SdXMLImport & rImport,sal_uInt16 nPrfx,const OUString & rLName,const uno::Reference<xml::sax::XAttributeList> & xAttrList,sal_Bool bIsAutoStyle)1007*b1cdbd2cSJim Jagielski SdXMLStylesContext::SdXMLStylesContext(
1008*b1cdbd2cSJim Jagielski 	SdXMLImport& rImport,
1009*b1cdbd2cSJim Jagielski 	sal_uInt16 nPrfx,
1010*b1cdbd2cSJim Jagielski 	const OUString& rLName,
1011*b1cdbd2cSJim Jagielski 	const uno::Reference< xml::sax::XAttributeList >& xAttrList,
1012*b1cdbd2cSJim Jagielski 	sal_Bool bIsAutoStyle)
1013*b1cdbd2cSJim Jagielski :	SvXMLStylesContext(rImport, nPrfx, rLName, xAttrList),
1014*b1cdbd2cSJim Jagielski 	mbIsAutoStyle(bIsAutoStyle)
1015*b1cdbd2cSJim Jagielski {
1016*b1cdbd2cSJim Jagielski 	// #110680#
1017*b1cdbd2cSJim Jagielski 	// Reference< lang::XMultiServiceFactory > xMSF = ::comphelper::getProcessServiceFactory();
1018*b1cdbd2cSJim Jagielski 	Reference< lang::XMultiServiceFactory > xMSF = rImport.getServiceFactory();
1019*b1cdbd2cSJim Jagielski 
1020*b1cdbd2cSJim Jagielski 	mpNumFormatter = new SvNumberFormatter( xMSF, LANGUAGE_SYSTEM );
1021*b1cdbd2cSJim Jagielski 
1022*b1cdbd2cSJim Jagielski 	// #110680#
1023*b1cdbd2cSJim Jagielski 	// mpNumFmtHelper = new SvXMLNumFmtHelper( mpNumFormatter );
1024*b1cdbd2cSJim Jagielski 	mpNumFmtHelper = new SvXMLNumFmtHelper( mpNumFormatter, xMSF );
1025*b1cdbd2cSJim Jagielski }
1026*b1cdbd2cSJim Jagielski 
1027*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
1028*b1cdbd2cSJim Jagielski 
~SdXMLStylesContext()1029*b1cdbd2cSJim Jagielski SdXMLStylesContext::~SdXMLStylesContext()
1030*b1cdbd2cSJim Jagielski {
1031*b1cdbd2cSJim Jagielski 	delete mpNumFmtHelper;
1032*b1cdbd2cSJim Jagielski 	delete mpNumFormatter;
1033*b1cdbd2cSJim Jagielski }
1034*b1cdbd2cSJim Jagielski 
1035*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
1036*b1cdbd2cSJim Jagielski 
CreateStyleChildContext(sal_uInt16 nPrefix,const OUString & rLocalName,const uno::Reference<xml::sax::XAttributeList> & xAttrList)1037*b1cdbd2cSJim Jagielski SvXMLStyleContext* SdXMLStylesContext::CreateStyleChildContext(
1038*b1cdbd2cSJim Jagielski 	sal_uInt16 nPrefix,
1039*b1cdbd2cSJim Jagielski 	const OUString& rLocalName,
1040*b1cdbd2cSJim Jagielski 	const uno::Reference< xml::sax::XAttributeList >& xAttrList)
1041*b1cdbd2cSJim Jagielski {
1042*b1cdbd2cSJim Jagielski 	SvXMLStyleContext* pContext = 0;
1043*b1cdbd2cSJim Jagielski 	const SvXMLTokenMap& rStyleTokenMap = GetSdImport().GetStylesElemTokenMap();
1044*b1cdbd2cSJim Jagielski 
1045*b1cdbd2cSJim Jagielski 	switch(rStyleTokenMap.Get(nPrefix, rLocalName))
1046*b1cdbd2cSJim Jagielski 	{
1047*b1cdbd2cSJim Jagielski 		case XML_TOK_STYLES_PAGE_MASTER:
1048*b1cdbd2cSJim Jagielski 		{
1049*b1cdbd2cSJim Jagielski 			// style:page-master inside office:styles context
1050*b1cdbd2cSJim Jagielski 			pContext = new SdXMLPageMasterContext(GetSdImport(), nPrefix, rLocalName, xAttrList);
1051*b1cdbd2cSJim Jagielski 			break;
1052*b1cdbd2cSJim Jagielski 		}
1053*b1cdbd2cSJim Jagielski 		case XML_TOK_STYLES_PRESENTATION_PAGE_LAYOUT:
1054*b1cdbd2cSJim Jagielski 		{
1055*b1cdbd2cSJim Jagielski 			// style:presentation-page-layout inside office:styles context
1056*b1cdbd2cSJim Jagielski 			pContext = new SdXMLPresentationPageLayoutContext(GetSdImport(), nPrefix, rLocalName, xAttrList);
1057*b1cdbd2cSJim Jagielski 			break;
1058*b1cdbd2cSJim Jagielski 		}
1059*b1cdbd2cSJim Jagielski 	}
1060*b1cdbd2cSJim Jagielski 
1061*b1cdbd2cSJim Jagielski 	if(!pContext)
1062*b1cdbd2cSJim Jagielski 	{
1063*b1cdbd2cSJim Jagielski 		const SvXMLTokenMap& rTokenMap = mpNumFmtHelper->GetStylesElemTokenMap();
1064*b1cdbd2cSJim Jagielski 		sal_uInt16 nToken = rTokenMap.Get( nPrefix, rLocalName );
1065*b1cdbd2cSJim Jagielski 		switch (nToken)
1066*b1cdbd2cSJim Jagielski 		{
1067*b1cdbd2cSJim Jagielski 			case XML_TOK_STYLES_DATE_STYLE:
1068*b1cdbd2cSJim Jagielski 			case XML_TOK_STYLES_TIME_STYLE:
1069*b1cdbd2cSJim Jagielski 				// number:date-style or number:time-style
1070*b1cdbd2cSJim Jagielski 				pContext = new SdXMLNumberFormatImportContext( GetSdImport(), nPrefix, rLocalName, mpNumFmtHelper->getData(), nToken, xAttrList, *this );
1071*b1cdbd2cSJim Jagielski 				break;
1072*b1cdbd2cSJim Jagielski 
1073*b1cdbd2cSJim Jagielski 			case XML_TOK_STYLES_NUMBER_STYLE:
1074*b1cdbd2cSJim Jagielski 			case XML_TOK_STYLES_CURRENCY_STYLE:
1075*b1cdbd2cSJim Jagielski 			case XML_TOK_STYLES_PERCENTAGE_STYLE:
1076*b1cdbd2cSJim Jagielski 			case XML_TOK_STYLES_BOOLEAN_STYLE:
1077*b1cdbd2cSJim Jagielski 			case XML_TOK_STYLES_TEXT_STYLE:
1078*b1cdbd2cSJim Jagielski 				pContext = new SvXMLNumFormatContext( GetSdImport(), nPrefix, rLocalName,
1079*b1cdbd2cSJim Jagielski 														mpNumFmtHelper->getData(), nToken, xAttrList, *this );
1080*b1cdbd2cSJim Jagielski 				break;
1081*b1cdbd2cSJim Jagielski 		}
1082*b1cdbd2cSJim Jagielski 	}
1083*b1cdbd2cSJim Jagielski 
1084*b1cdbd2cSJim Jagielski 	if(!pContext && nPrefix == XML_NAMESPACE_PRESENTATION )
1085*b1cdbd2cSJim Jagielski 	{
1086*b1cdbd2cSJim Jagielski 		if( IsXMLToken( rLocalName, XML_HEADER_DECL ) ||
1087*b1cdbd2cSJim Jagielski 			IsXMLToken( rLocalName, XML_FOOTER_DECL ) ||
1088*b1cdbd2cSJim Jagielski 			IsXMLToken( rLocalName, XML_DATE_TIME_DECL ) )
1089*b1cdbd2cSJim Jagielski 		{
1090*b1cdbd2cSJim Jagielski 			pContext = new SdXMLHeaderFooterDeclContext( GetImport(), nPrefix, rLocalName, xAttrList );
1091*b1cdbd2cSJim Jagielski 		}
1092*b1cdbd2cSJim Jagielski 	}
1093*b1cdbd2cSJim Jagielski 
1094*b1cdbd2cSJim Jagielski 	if(!pContext && (nPrefix == XML_NAMESPACE_TABLE) && IsXMLToken( rLocalName, XML_TABLE_TEMPLATE ) )
1095*b1cdbd2cSJim Jagielski 	{
1096*b1cdbd2cSJim Jagielski 		pContext = GetImport().GetShapeImport()->GetShapeTableImport()->CreateTableTemplateContext(nPrefix, rLocalName, xAttrList );
1097*b1cdbd2cSJim Jagielski 	}
1098*b1cdbd2cSJim Jagielski 
1099*b1cdbd2cSJim Jagielski 	// call base class
1100*b1cdbd2cSJim Jagielski 	if(!pContext)
1101*b1cdbd2cSJim Jagielski 		pContext = SvXMLStylesContext::CreateStyleChildContext(nPrefix, rLocalName, xAttrList);
1102*b1cdbd2cSJim Jagielski 
1103*b1cdbd2cSJim Jagielski 	return pContext;
1104*b1cdbd2cSJim Jagielski }
1105*b1cdbd2cSJim Jagielski 
1106*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
1107*b1cdbd2cSJim Jagielski 
CreateStyleStyleChildContext(sal_uInt16 nFamily,sal_uInt16 nPrefix,const OUString & rLocalName,const uno::Reference<com::sun::star::xml::sax::XAttributeList> & xAttrList)1108*b1cdbd2cSJim Jagielski SvXMLStyleContext* SdXMLStylesContext::CreateStyleStyleChildContext(
1109*b1cdbd2cSJim Jagielski 	sal_uInt16 nFamily,
1110*b1cdbd2cSJim Jagielski 	sal_uInt16 nPrefix,
1111*b1cdbd2cSJim Jagielski 	const OUString& rLocalName,
1112*b1cdbd2cSJim Jagielski 	const uno::Reference< com::sun::star::xml::sax::XAttributeList >& xAttrList)
1113*b1cdbd2cSJim Jagielski {
1114*b1cdbd2cSJim Jagielski 	SvXMLStyleContext* pContext = 0;
1115*b1cdbd2cSJim Jagielski 
1116*b1cdbd2cSJim Jagielski 	switch( nFamily )
1117*b1cdbd2cSJim Jagielski 	{
1118*b1cdbd2cSJim Jagielski 	case XML_STYLE_FAMILY_SD_DRAWINGPAGE_ID:
1119*b1cdbd2cSJim Jagielski 		pContext = new SdXMLDrawingPageStyleContext(GetSdImport(), nPrefix, rLocalName, xAttrList, *this );
1120*b1cdbd2cSJim Jagielski 		break;
1121*b1cdbd2cSJim Jagielski 	case XML_STYLE_FAMILY_TABLE_CELL:
1122*b1cdbd2cSJim Jagielski 	case XML_STYLE_FAMILY_TABLE_COLUMN:
1123*b1cdbd2cSJim Jagielski 	case XML_STYLE_FAMILY_TABLE_ROW:
1124*b1cdbd2cSJim Jagielski 		pContext = new XMLShapeStyleContext( GetSdImport(), nPrefix, rLocalName, xAttrList, *this, nFamily );
1125*b1cdbd2cSJim Jagielski 		break;
1126*b1cdbd2cSJim Jagielski 	}
1127*b1cdbd2cSJim Jagielski 
1128*b1cdbd2cSJim Jagielski 	// call base class
1129*b1cdbd2cSJim Jagielski 	if(!pContext)
1130*b1cdbd2cSJim Jagielski 		pContext = SvXMLStylesContext::CreateStyleStyleChildContext(nFamily, nPrefix, rLocalName, xAttrList);
1131*b1cdbd2cSJim Jagielski 
1132*b1cdbd2cSJim Jagielski 	return pContext;
1133*b1cdbd2cSJim Jagielski }
1134*b1cdbd2cSJim Jagielski 
1135*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
1136*b1cdbd2cSJim Jagielski 
CreateDefaultStyleStyleChildContext(sal_uInt16 nFamily,sal_uInt16 nPrefix,const OUString & rLocalName,const Reference<XAttributeList> & xAttrList)1137*b1cdbd2cSJim Jagielski SvXMLStyleContext* SdXMLStylesContext::CreateDefaultStyleStyleChildContext(
1138*b1cdbd2cSJim Jagielski 	sal_uInt16 nFamily,
1139*b1cdbd2cSJim Jagielski 	sal_uInt16 nPrefix,
1140*b1cdbd2cSJim Jagielski 	const OUString& rLocalName,
1141*b1cdbd2cSJim Jagielski 	const Reference< XAttributeList > & xAttrList )
1142*b1cdbd2cSJim Jagielski {
1143*b1cdbd2cSJim Jagielski 	SvXMLStyleContext* pContext = 0;
1144*b1cdbd2cSJim Jagielski 
1145*b1cdbd2cSJim Jagielski 	switch( nFamily )
1146*b1cdbd2cSJim Jagielski 	{
1147*b1cdbd2cSJim Jagielski 	case XML_STYLE_FAMILY_SD_GRAPHICS_ID:
1148*b1cdbd2cSJim Jagielski 		pContext = new XMLGraphicsDefaultStyle(GetSdImport(), nPrefix, rLocalName, xAttrList, *this );
1149*b1cdbd2cSJim Jagielski 		break;
1150*b1cdbd2cSJim Jagielski 	}
1151*b1cdbd2cSJim Jagielski 
1152*b1cdbd2cSJim Jagielski 	// call base class
1153*b1cdbd2cSJim Jagielski 	if(!pContext)
1154*b1cdbd2cSJim Jagielski 		pContext = SvXMLStylesContext::CreateDefaultStyleStyleChildContext(nFamily, nPrefix, rLocalName, xAttrList);
1155*b1cdbd2cSJim Jagielski 
1156*b1cdbd2cSJim Jagielski 	return pContext;
1157*b1cdbd2cSJim Jagielski }
1158*b1cdbd2cSJim Jagielski 
1159*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
1160*b1cdbd2cSJim Jagielski 
GetFamily(const OUString & rFamily) const1161*b1cdbd2cSJim Jagielski sal_uInt16 SdXMLStylesContext::GetFamily( const OUString& rFamily ) const
1162*b1cdbd2cSJim Jagielski {
1163*b1cdbd2cSJim Jagielski //	if(rFamily.getLength())
1164*b1cdbd2cSJim Jagielski //	{
1165*b1cdbd2cSJim Jagielski //		if(rFamily.equals(OUString(RTL_CONSTASCII_USTRINGPARAM(XML_STYLE_FAMILY_SD_GRAPHICS_NAME))))
1166*b1cdbd2cSJim Jagielski //			return XML_STYLE_FAMILY_SD_GRAPHICS_ID;
1167*b1cdbd2cSJim Jagielski //
1168*b1cdbd2cSJim Jagielski //		if(rFamily.equals(OUString(RTL_CONSTASCII_USTRINGPARAM(XML_STYLE_FAMILY_SD_PRESENTATION_NAME))))
1169*b1cdbd2cSJim Jagielski //			return XML_STYLE_FAMILY_SD_PRESENTATION_ID;
1170*b1cdbd2cSJim Jagielski //
1171*b1cdbd2cSJim Jagielski //		if(rFamily.equals(OUString(RTL_CONSTASCII_USTRINGPARAM(XML_STYLE_FAMILY_SD_POOL_NAME))))
1172*b1cdbd2cSJim Jagielski //			return XML_STYLE_FAMILY_SD_POOL_ID;
1173*b1cdbd2cSJim Jagielski //
1174*b1cdbd2cSJim Jagielski //		if(rFamily.equals(OUString(RTL_CONSTASCII_USTRINGPARAM(XML_STYLE_FAMILY_SD_DRAWINGPAGE_NAME))))
1175*b1cdbd2cSJim Jagielski //			return XML_STYLE_FAMILY_SD_DRAWINGPAGE_ID;
1176*b1cdbd2cSJim Jagielski //	}
1177*b1cdbd2cSJim Jagielski 
1178*b1cdbd2cSJim Jagielski 	// call base class
1179*b1cdbd2cSJim Jagielski 	return SvXMLStylesContext::GetFamily(rFamily);
1180*b1cdbd2cSJim Jagielski }
1181*b1cdbd2cSJim Jagielski 
1182*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
1183*b1cdbd2cSJim Jagielski 
GetImportPropertyMapper(sal_uInt16 nFamily) const1184*b1cdbd2cSJim Jagielski UniReference< SvXMLImportPropertyMapper > SdXMLStylesContext::GetImportPropertyMapper(
1185*b1cdbd2cSJim Jagielski 	sal_uInt16 nFamily) const
1186*b1cdbd2cSJim Jagielski {
1187*b1cdbd2cSJim Jagielski 	UniReference < SvXMLImportPropertyMapper > xMapper;
1188*b1cdbd2cSJim Jagielski 
1189*b1cdbd2cSJim Jagielski //	if(XML_STYLE_FAMILY_SD_GRAPHICS_ID == nFamily
1190*b1cdbd2cSJim Jagielski //		|| XML_STYLE_FAMILY_SD_PRESENTATION_ID == nFamily
1191*b1cdbd2cSJim Jagielski //		|| XML_STYLE_FAMILY_SD_POOL_ID == nFamily)
1192*b1cdbd2cSJim Jagielski //	{
1193*b1cdbd2cSJim Jagielski //		if(!xPropImpPropMapper.is())
1194*b1cdbd2cSJim Jagielski //		{
1195*b1cdbd2cSJim Jagielski //			UniReference< XMLShapeImportHelper > aImpHelper = ((SvXMLImport&)GetImport()).GetShapeImport();
1196*b1cdbd2cSJim Jagielski //			((SdXMLStylesContext*)this)->xPropImpPropMapper =
1197*b1cdbd2cSJim Jagielski //				new SvXMLImportPropertyMapper(aImpHelper->GetPropertySetMapper());
1198*b1cdbd2cSJim Jagielski //		}
1199*b1cdbd2cSJim Jagielski //		xMapper = xPropImpPropMapper;
1200*b1cdbd2cSJim Jagielski //		return xMapper;
1201*b1cdbd2cSJim Jagielski //	}
1202*b1cdbd2cSJim Jagielski 
1203*b1cdbd2cSJim Jagielski 	switch( nFamily )
1204*b1cdbd2cSJim Jagielski 	{
1205*b1cdbd2cSJim Jagielski 	case XML_STYLE_FAMILY_SD_DRAWINGPAGE_ID:
1206*b1cdbd2cSJim Jagielski 	{
1207*b1cdbd2cSJim Jagielski 		if(!xPresImpPropMapper.is())
1208*b1cdbd2cSJim Jagielski 		{
1209*b1cdbd2cSJim Jagielski 			UniReference< XMLShapeImportHelper > aImpHelper = ((SvXMLImport&)GetImport()).GetShapeImport();
1210*b1cdbd2cSJim Jagielski 			((SdXMLStylesContext*)this)->xPresImpPropMapper =
1211*b1cdbd2cSJim Jagielski 				aImpHelper->GetPresPagePropsMapper();
1212*b1cdbd2cSJim Jagielski 		}
1213*b1cdbd2cSJim Jagielski 		xMapper = xPresImpPropMapper;
1214*b1cdbd2cSJim Jagielski 		break;
1215*b1cdbd2cSJim Jagielski 	}
1216*b1cdbd2cSJim Jagielski 
1217*b1cdbd2cSJim Jagielski 	case XML_STYLE_FAMILY_TABLE_COLUMN:
1218*b1cdbd2cSJim Jagielski 	case XML_STYLE_FAMILY_TABLE_ROW:
1219*b1cdbd2cSJim Jagielski 	case XML_STYLE_FAMILY_TABLE_CELL:
1220*b1cdbd2cSJim Jagielski 	{
1221*b1cdbd2cSJim Jagielski 		const rtl::Reference< XMLTableImport >& xTableImport( const_cast< SvXMLImport& >( GetImport() ).GetShapeImport()->GetShapeTableImport() );
1222*b1cdbd2cSJim Jagielski 
1223*b1cdbd2cSJim Jagielski 		switch( nFamily )
1224*b1cdbd2cSJim Jagielski 		{
1225*b1cdbd2cSJim Jagielski 		case XML_STYLE_FAMILY_TABLE_COLUMN: xMapper = xTableImport->GetColumnImportPropertySetMapper().get(); break;
1226*b1cdbd2cSJim Jagielski 		case XML_STYLE_FAMILY_TABLE_ROW: xMapper = xTableImport->GetRowImportPropertySetMapper().get(); break;
1227*b1cdbd2cSJim Jagielski 		case XML_STYLE_FAMILY_TABLE_CELL: xMapper = xTableImport->GetCellImportPropertySetMapper().get(); break;
1228*b1cdbd2cSJim Jagielski 		}
1229*b1cdbd2cSJim Jagielski 		break;
1230*b1cdbd2cSJim Jagielski 	}
1231*b1cdbd2cSJim Jagielski 	}
1232*b1cdbd2cSJim Jagielski 
1233*b1cdbd2cSJim Jagielski 	// call base class
1234*b1cdbd2cSJim Jagielski 	if( !xMapper.is() )
1235*b1cdbd2cSJim Jagielski 		xMapper = SvXMLStylesContext::GetImportPropertyMapper(nFamily);
1236*b1cdbd2cSJim Jagielski 	return xMapper;
1237*b1cdbd2cSJim Jagielski }
1238*b1cdbd2cSJim Jagielski 
1239*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
1240*b1cdbd2cSJim Jagielski // Process all style and object info
1241*b1cdbd2cSJim Jagielski //
EndElement()1242*b1cdbd2cSJim Jagielski void SdXMLStylesContext::EndElement()
1243*b1cdbd2cSJim Jagielski {
1244*b1cdbd2cSJim Jagielski 	if(mbIsAutoStyle)
1245*b1cdbd2cSJim Jagielski 	{
1246*b1cdbd2cSJim Jagielski 		// AutoStyles for text import
1247*b1cdbd2cSJim Jagielski 		GetImport().GetTextImport()->SetAutoStyles( this );
1248*b1cdbd2cSJim Jagielski 
1249*b1cdbd2cSJim Jagielski 		// AutoStyles for chart
1250*b1cdbd2cSJim Jagielski 		GetImport().GetChartImport()->SetAutoStylesContext( this );
1251*b1cdbd2cSJim Jagielski 
1252*b1cdbd2cSJim Jagielski 		// AutoStyles for forms
1253*b1cdbd2cSJim Jagielski 		GetImport().GetFormImport()->setAutoStyleContext( this );
1254*b1cdbd2cSJim Jagielski 
1255*b1cdbd2cSJim Jagielski 		// associate AutoStyles with styles in preparation to setting Styles on shapes
1256*b1cdbd2cSJim Jagielski 		for(sal_uInt32 a(0L); a < GetStyleCount(); a++)
1257*b1cdbd2cSJim Jagielski 		{
1258*b1cdbd2cSJim Jagielski 			const SvXMLStyleContext* pStyle = GetStyle(a);
1259*b1cdbd2cSJim Jagielski 			if(pStyle && pStyle->ISA(XMLShapeStyleContext))
1260*b1cdbd2cSJim Jagielski 			{
1261*b1cdbd2cSJim Jagielski 				XMLShapeStyleContext* pDocStyle = (XMLShapeStyleContext*)pStyle;
1262*b1cdbd2cSJim Jagielski //				pDocStyle->Filter();
1263*b1cdbd2cSJim Jagielski 
1264*b1cdbd2cSJim Jagielski 				SvXMLStylesContext* pStylesContext = GetSdImport().GetShapeImport()->GetStylesContext();
1265*b1cdbd2cSJim Jagielski 				if( pStylesContext )
1266*b1cdbd2cSJim Jagielski 				{
1267*b1cdbd2cSJim Jagielski                     pStyle = pStylesContext->FindStyleChildContext(pStyle->GetFamily(), pStyle->GetParentName());
1268*b1cdbd2cSJim Jagielski 
1269*b1cdbd2cSJim Jagielski 					if(pStyle && pStyle->ISA(XMLShapeStyleContext))
1270*b1cdbd2cSJim Jagielski 					{
1271*b1cdbd2cSJim Jagielski 						XMLShapeStyleContext* pParentStyle = (XMLShapeStyleContext*)pStyle;
1272*b1cdbd2cSJim Jagielski 						if(pParentStyle->GetStyle().is())
1273*b1cdbd2cSJim Jagielski 						{
1274*b1cdbd2cSJim Jagielski 							pDocStyle->SetStyle(pParentStyle->GetStyle());
1275*b1cdbd2cSJim Jagielski 						}
1276*b1cdbd2cSJim Jagielski 					}
1277*b1cdbd2cSJim Jagielski 				}
1278*b1cdbd2cSJim Jagielski 			}
1279*b1cdbd2cSJim Jagielski 		}
1280*b1cdbd2cSJim Jagielski 
1281*b1cdbd2cSJim Jagielski 		FinishStyles( false );
1282*b1cdbd2cSJim Jagielski 	}
1283*b1cdbd2cSJim Jagielski 	else
1284*b1cdbd2cSJim Jagielski 	{
1285*b1cdbd2cSJim Jagielski 		// Process styles list
1286*b1cdbd2cSJim Jagielski 		ImpSetGraphicStyles();
1287*b1cdbd2cSJim Jagielski 		ImpSetCellStyles();
1288*b1cdbd2cSJim Jagielski 		GetImport().GetShapeImport()->GetShapeTableImport()->finishStyles();
1289*b1cdbd2cSJim Jagielski 
1290*b1cdbd2cSJim Jagielski 		// put style infos in the info set for other components ( content import f.e. )
1291*b1cdbd2cSJim Jagielski 		uno::Reference< beans::XPropertySet > xInfoSet( GetImport().getImportInfo() );
1292*b1cdbd2cSJim Jagielski 		if( xInfoSet.is() )
1293*b1cdbd2cSJim Jagielski 		{
1294*b1cdbd2cSJim Jagielski 			uno::Reference< beans::XPropertySetInfo > xInfoSetInfo( xInfoSet->getPropertySetInfo() );
1295*b1cdbd2cSJim Jagielski 
1296*b1cdbd2cSJim Jagielski 			if( xInfoSetInfo->hasPropertyByName( OUString( RTL_CONSTASCII_USTRINGPARAM( "PageLayouts" ) ) ) )
1297*b1cdbd2cSJim Jagielski 				xInfoSet->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "PageLayouts" ) ), uno::makeAny( getPageLayouts() ) );
1298*b1cdbd2cSJim Jagielski 		}
1299*b1cdbd2cSJim Jagielski 
1300*b1cdbd2cSJim Jagielski 	}
1301*b1cdbd2cSJim Jagielski }
1302*b1cdbd2cSJim Jagielski 
1303*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
1304*b1cdbd2cSJim Jagielski // set master-page styles (all with family="presentation" and a special
1305*b1cdbd2cSJim Jagielski // prefix) on given master-page.
1306*b1cdbd2cSJim Jagielski //
SetMasterPageStyles(SdXMLMasterPageContext & rMaster) const1307*b1cdbd2cSJim Jagielski void SdXMLStylesContext::SetMasterPageStyles(SdXMLMasterPageContext& rMaster) const
1308*b1cdbd2cSJim Jagielski {
1309*b1cdbd2cSJim Jagielski 	UniString sPrefix( rMaster.GetDisplayName());
1310*b1cdbd2cSJim Jagielski 	sPrefix += sal_Unicode('-');
1311*b1cdbd2cSJim Jagielski 
1312*b1cdbd2cSJim Jagielski 	if(GetSdImport().GetLocalDocStyleFamilies().is() && GetSdImport().GetLocalDocStyleFamilies()->hasByName(rMaster.GetDisplayName())) try
1313*b1cdbd2cSJim Jagielski 	{
1314*b1cdbd2cSJim Jagielski 		uno::Reference< container::XNameAccess > xMasterPageStyles( GetSdImport().GetLocalDocStyleFamilies()->getByName(rMaster.GetDisplayName()), UNO_QUERY_THROW );
1315*b1cdbd2cSJim Jagielski 		ImpSetGraphicStyles(xMasterPageStyles, XML_STYLE_FAMILY_SD_PRESENTATION_ID, sPrefix);
1316*b1cdbd2cSJim Jagielski 	}
1317*b1cdbd2cSJim Jagielski 	catch( uno::Exception& )
1318*b1cdbd2cSJim Jagielski 	{
1319*b1cdbd2cSJim Jagielski 		DBG_ERROR( "xmloff::SdXMLStylesContext::SetMasterPageStyles(), exception caught!" );
1320*b1cdbd2cSJim Jagielski 	}
1321*b1cdbd2cSJim Jagielski }
1322*b1cdbd2cSJim Jagielski 
1323*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
1324*b1cdbd2cSJim Jagielski // Process styles list:
1325*b1cdbd2cSJim Jagielski // set graphic styles (all with family="graphics"). Remember xStyle at list element.
1326*b1cdbd2cSJim Jagielski //
ImpSetGraphicStyles() const1327*b1cdbd2cSJim Jagielski void SdXMLStylesContext::ImpSetGraphicStyles() const
1328*b1cdbd2cSJim Jagielski {
1329*b1cdbd2cSJim Jagielski 	if(GetSdImport().GetLocalDocStyleFamilies().is()) try
1330*b1cdbd2cSJim Jagielski 	{
1331*b1cdbd2cSJim Jagielski 		const OUString sGraphicStyleName(OUString(RTL_CONSTASCII_USTRINGPARAM("graphics")));
1332*b1cdbd2cSJim Jagielski 		uno::Reference< container::XNameAccess > xGraphicPageStyles( GetSdImport().GetLocalDocStyleFamilies()->getByName(sGraphicStyleName), uno::UNO_QUERY_THROW );
1333*b1cdbd2cSJim Jagielski 
1334*b1cdbd2cSJim Jagielski 		UniString aPrefix;
1335*b1cdbd2cSJim Jagielski 		ImpSetGraphicStyles(xGraphicPageStyles, XML_STYLE_FAMILY_SD_GRAPHICS_ID, aPrefix);
1336*b1cdbd2cSJim Jagielski 	}
1337*b1cdbd2cSJim Jagielski 	catch( uno::Exception& )
1338*b1cdbd2cSJim Jagielski 	{
1339*b1cdbd2cSJim Jagielski 		DBG_ERROR( "xmloff::SdXMLStylesContext::ImpSetGraphicStyles(), exception caught!" );
1340*b1cdbd2cSJim Jagielski 	}
1341*b1cdbd2cSJim Jagielski }
1342*b1cdbd2cSJim Jagielski 
ImpSetCellStyles() const1343*b1cdbd2cSJim Jagielski void SdXMLStylesContext::ImpSetCellStyles() const
1344*b1cdbd2cSJim Jagielski {
1345*b1cdbd2cSJim Jagielski 	if(GetSdImport().GetLocalDocStyleFamilies().is()) try
1346*b1cdbd2cSJim Jagielski 	{
1347*b1cdbd2cSJim Jagielski 		const OUString sCellStyleName(OUString(RTL_CONSTASCII_USTRINGPARAM("cell")));
1348*b1cdbd2cSJim Jagielski 		uno::Reference< container::XNameAccess > xGraphicPageStyles( GetSdImport().GetLocalDocStyleFamilies()->getByName(sCellStyleName), uno::UNO_QUERY_THROW );
1349*b1cdbd2cSJim Jagielski 
1350*b1cdbd2cSJim Jagielski 		UniString aPrefix;
1351*b1cdbd2cSJim Jagielski 		ImpSetGraphicStyles(xGraphicPageStyles, XML_STYLE_FAMILY_TABLE_CELL, aPrefix);
1352*b1cdbd2cSJim Jagielski 	}
1353*b1cdbd2cSJim Jagielski 	catch( uno::Exception& )
1354*b1cdbd2cSJim Jagielski 	{
1355*b1cdbd2cSJim Jagielski 		DBG_ERROR( "xmloff::SdXMLStylesContext::ImpSetCellStyles(), exception caught!" );
1356*b1cdbd2cSJim Jagielski 	}
1357*b1cdbd2cSJim Jagielski }
1358*b1cdbd2cSJim Jagielski 
1359*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
1360*b1cdbd2cSJim Jagielski // help function used by ImpSetGraphicStyles() and ImpSetMasterPageStyles()
1361*b1cdbd2cSJim Jagielski //
ImpSetGraphicStyles(uno::Reference<container::XNameAccess> & xPageStyles,sal_uInt16 nFamily,const UniString & rPrefix) const1362*b1cdbd2cSJim Jagielski void SdXMLStylesContext::ImpSetGraphicStyles( uno::Reference< container::XNameAccess >& xPageStyles,  sal_uInt16 nFamily,  const UniString& rPrefix) const
1363*b1cdbd2cSJim Jagielski {
1364*b1cdbd2cSJim Jagielski 	xub_StrLen nPrefLen(rPrefix.Len());
1365*b1cdbd2cSJim Jagielski 
1366*b1cdbd2cSJim Jagielski 	sal_uInt32 a;
1367*b1cdbd2cSJim Jagielski 
1368*b1cdbd2cSJim Jagielski 	// set defaults
1369*b1cdbd2cSJim Jagielski 	for( a = 0; a < GetStyleCount(); a++)
1370*b1cdbd2cSJim Jagielski 	{
1371*b1cdbd2cSJim Jagielski 		const SvXMLStyleContext* pStyle = GetStyle(a);
1372*b1cdbd2cSJim Jagielski 
1373*b1cdbd2cSJim Jagielski 		if(nFamily == pStyle->GetFamily() && pStyle->IsDefaultStyle())
1374*b1cdbd2cSJim Jagielski 		{
1375*b1cdbd2cSJim Jagielski 			((SvXMLStyleContext*)pStyle)->SetDefaults();
1376*b1cdbd2cSJim Jagielski 		}
1377*b1cdbd2cSJim Jagielski 	}
1378*b1cdbd2cSJim Jagielski 
1379*b1cdbd2cSJim Jagielski 	// create all styles and set properties
1380*b1cdbd2cSJim Jagielski 	for( a = 0; a < GetStyleCount(); a++)
1381*b1cdbd2cSJim Jagielski 	{
1382*b1cdbd2cSJim Jagielski 		try
1383*b1cdbd2cSJim Jagielski 		{
1384*b1cdbd2cSJim Jagielski 			const SvXMLStyleContext* pStyle = GetStyle(a);
1385*b1cdbd2cSJim Jagielski 			if(nFamily == pStyle->GetFamily() && !pStyle->IsDefaultStyle())
1386*b1cdbd2cSJim Jagielski 			{
1387*b1cdbd2cSJim Jagielski 				OUString aStyleName(pStyle->GetDisplayName());
1388*b1cdbd2cSJim Jagielski 				if( nPrefLen )
1389*b1cdbd2cSJim Jagielski 				{
1390*b1cdbd2cSJim Jagielski 					sal_Int32 nStylePrefLen = aStyleName.lastIndexOf( sal_Unicode('-') ) + 1;
1391*b1cdbd2cSJim Jagielski 					if( (nPrefLen != nStylePrefLen) ||  (aStyleName.compareTo( rPrefix, nPrefLen ) != 0) )
1392*b1cdbd2cSJim Jagielski 						continue;
1393*b1cdbd2cSJim Jagielski 
1394*b1cdbd2cSJim Jagielski 					aStyleName = aStyleName.copy( nPrefLen );
1395*b1cdbd2cSJim Jagielski 				}
1396*b1cdbd2cSJim Jagielski 
1397*b1cdbd2cSJim Jagielski 				uno::Reference< style::XStyle > xStyle;
1398*b1cdbd2cSJim Jagielski 				if(xPageStyles->hasByName(aStyleName))
1399*b1cdbd2cSJim Jagielski 				{
1400*b1cdbd2cSJim Jagielski 					xPageStyles->getByName(aStyleName) >>= xStyle;
1401*b1cdbd2cSJim Jagielski 
1402*b1cdbd2cSJim Jagielski 					// set properties of existing styles to default
1403*b1cdbd2cSJim Jagielski 					uno::Reference< beans::XPropertySet > xPropSet( xStyle, uno::UNO_QUERY );
1404*b1cdbd2cSJim Jagielski 					uno::Reference< beans::XPropertySetInfo > xPropSetInfo;
1405*b1cdbd2cSJim Jagielski 					if( xPropSet.is() )
1406*b1cdbd2cSJim Jagielski 						xPropSetInfo = xPropSet->getPropertySetInfo();
1407*b1cdbd2cSJim Jagielski 
1408*b1cdbd2cSJim Jagielski 					uno::Reference< beans::XPropertyState > xPropState( xStyle, uno::UNO_QUERY );
1409*b1cdbd2cSJim Jagielski 
1410*b1cdbd2cSJim Jagielski 					if( xPropState.is() )
1411*b1cdbd2cSJim Jagielski 					{
1412*b1cdbd2cSJim Jagielski 						UniReference < XMLPropertySetMapper > xPrMap;
1413*b1cdbd2cSJim Jagielski 						UniReference < SvXMLImportPropertyMapper > xImpPrMap = GetImportPropertyMapper( nFamily );
1414*b1cdbd2cSJim Jagielski 						DBG_ASSERT( xImpPrMap.is(), "There is the import prop mapper" );
1415*b1cdbd2cSJim Jagielski 						if( xImpPrMap.is() )
1416*b1cdbd2cSJim Jagielski 							xPrMap = xImpPrMap->getPropertySetMapper();
1417*b1cdbd2cSJim Jagielski 						if( xPrMap.is() )
1418*b1cdbd2cSJim Jagielski 						{
1419*b1cdbd2cSJim Jagielski 							const sal_Int32 nCount = xPrMap->GetEntryCount();
1420*b1cdbd2cSJim Jagielski 							for( sal_Int32 i = 0; i < nCount; i++ )
1421*b1cdbd2cSJim Jagielski 							{
1422*b1cdbd2cSJim Jagielski 								const OUString& rName = xPrMap->GetEntryAPIName( i );
1423*b1cdbd2cSJim Jagielski 								if( xPropSetInfo->hasPropertyByName( rName ) && beans::PropertyState_DIRECT_VALUE == xPropState->getPropertyState( rName ) )
1424*b1cdbd2cSJim Jagielski 								{
1425*b1cdbd2cSJim Jagielski 									xPropState->setPropertyToDefault( rName );
1426*b1cdbd2cSJim Jagielski 								}
1427*b1cdbd2cSJim Jagielski 							}
1428*b1cdbd2cSJim Jagielski 						}
1429*b1cdbd2cSJim Jagielski 					}
1430*b1cdbd2cSJim Jagielski 				}
1431*b1cdbd2cSJim Jagielski 				else
1432*b1cdbd2cSJim Jagielski 				{
1433*b1cdbd2cSJim Jagielski 					// graphics style does not exist, create and add it
1434*b1cdbd2cSJim Jagielski 					uno::Reference< lang::XSingleServiceFactory > xServiceFact(xPageStyles, uno::UNO_QUERY);
1435*b1cdbd2cSJim Jagielski 					if(xServiceFact.is())
1436*b1cdbd2cSJim Jagielski 					{
1437*b1cdbd2cSJim Jagielski 						uno::Reference< style::XStyle > xNewStyle( xServiceFact->createInstance(), uno::UNO_QUERY);
1438*b1cdbd2cSJim Jagielski 
1439*b1cdbd2cSJim Jagielski 						if(xNewStyle.is())
1440*b1cdbd2cSJim Jagielski 						{
1441*b1cdbd2cSJim Jagielski 							// remember style
1442*b1cdbd2cSJim Jagielski 							xStyle = xNewStyle;
1443*b1cdbd2cSJim Jagielski 
1444*b1cdbd2cSJim Jagielski 							// add new style to graphics style pool
1445*b1cdbd2cSJim Jagielski 							uno::Reference< container::XNameContainer > xInsertContainer(xPageStyles, uno::UNO_QUERY);
1446*b1cdbd2cSJim Jagielski 							if(xInsertContainer.is())
1447*b1cdbd2cSJim Jagielski 								xInsertContainer->insertByName(aStyleName, uno::Any( xStyle ) );
1448*b1cdbd2cSJim Jagielski 						}
1449*b1cdbd2cSJim Jagielski 					}
1450*b1cdbd2cSJim Jagielski 				}
1451*b1cdbd2cSJim Jagielski 
1452*b1cdbd2cSJim Jagielski 				if(xStyle.is())
1453*b1cdbd2cSJim Jagielski 				{
1454*b1cdbd2cSJim Jagielski 					// set properties at style
1455*b1cdbd2cSJim Jagielski 					XMLPropStyleContext* pPropStyle = dynamic_cast< XMLPropStyleContext* >( const_cast< SvXMLStyleContext* >( pStyle ) );
1456*b1cdbd2cSJim Jagielski 					uno::Reference< beans::XPropertySet > xPropSet(xStyle, uno::UNO_QUERY);
1457*b1cdbd2cSJim Jagielski 
1458*b1cdbd2cSJim Jagielski 					if(xPropSet.is() && pPropStyle)
1459*b1cdbd2cSJim Jagielski 					{
1460*b1cdbd2cSJim Jagielski 						pPropStyle->FillPropertySet(xPropSet);
1461*b1cdbd2cSJim Jagielski 						pPropStyle->SetStyle(xStyle);
1462*b1cdbd2cSJim Jagielski 					}
1463*b1cdbd2cSJim Jagielski 				}
1464*b1cdbd2cSJim Jagielski 			}
1465*b1cdbd2cSJim Jagielski 		}
1466*b1cdbd2cSJim Jagielski 		catch( Exception& e)
1467*b1cdbd2cSJim Jagielski 		{
1468*b1cdbd2cSJim Jagielski 			uno::Sequence<OUString> aSeq(0);
1469*b1cdbd2cSJim Jagielski 			const_cast<SdXMLImport*>(&GetSdImport())->SetError( XMLERROR_FLAG_WARNING | XMLERROR_API, aSeq, e.Message, NULL );
1470*b1cdbd2cSJim Jagielski 		}
1471*b1cdbd2cSJim Jagielski 	}
1472*b1cdbd2cSJim Jagielski 
1473*b1cdbd2cSJim Jagielski 	// now set parents for all styles (when necessary)
1474*b1cdbd2cSJim Jagielski 	for(a = 0L; a < GetStyleCount(); a++)
1475*b1cdbd2cSJim Jagielski 	{
1476*b1cdbd2cSJim Jagielski 		const SvXMLStyleContext* pStyle = GetStyle(a);
1477*b1cdbd2cSJim Jagielski 
1478*b1cdbd2cSJim Jagielski 		if(pStyle && pStyle->GetName().getLength() && (nFamily == pStyle->GetFamily())) try
1479*b1cdbd2cSJim Jagielski 		{
1480*b1cdbd2cSJim Jagielski 			OUString aStyleName(pStyle->GetDisplayName());
1481*b1cdbd2cSJim Jagielski 			if( nPrefLen )
1482*b1cdbd2cSJim Jagielski 			{
1483*b1cdbd2cSJim Jagielski 				sal_Int32 nStylePrefLen = aStyleName.lastIndexOf( sal_Unicode('-') ) + 1;
1484*b1cdbd2cSJim Jagielski 				if( (nPrefLen != nStylePrefLen) ||  (aStyleName.compareTo( rPrefix, nPrefLen ) != 0) )
1485*b1cdbd2cSJim Jagielski 					continue;
1486*b1cdbd2cSJim Jagielski 
1487*b1cdbd2cSJim Jagielski 				aStyleName = aStyleName.copy( nPrefLen );
1488*b1cdbd2cSJim Jagielski 			}
1489*b1cdbd2cSJim Jagielski 
1490*b1cdbd2cSJim Jagielski 			uno::Reference< style::XStyle > xStyle( xPageStyles->getByName(aStyleName), UNO_QUERY );
1491*b1cdbd2cSJim Jagielski 			if(xStyle.is())
1492*b1cdbd2cSJim Jagielski 			{
1493*b1cdbd2cSJim Jagielski 				// set parent style name
1494*b1cdbd2cSJim Jagielski                 ::rtl::OUString sParentStyleDisplayName( const_cast< SvXMLImport& >( GetImport() ).GetStyleDisplayName( pStyle->GetFamily(), pStyle->GetParentName() ) );
1495*b1cdbd2cSJim Jagielski 				if( nPrefLen )
1496*b1cdbd2cSJim Jagielski 				{
1497*b1cdbd2cSJim Jagielski 					sal_Int32 nStylePrefLen = sParentStyleDisplayName.lastIndexOf( sal_Unicode('-') ) + 1;
1498*b1cdbd2cSJim Jagielski 					if( (nPrefLen != nStylePrefLen) || (sParentStyleDisplayName.compareTo( rPrefix, nPrefLen ) != 0) )
1499*b1cdbd2cSJim Jagielski 						continue;
1500*b1cdbd2cSJim Jagielski 
1501*b1cdbd2cSJim Jagielski 					sParentStyleDisplayName = sParentStyleDisplayName.copy( nPrefLen );
1502*b1cdbd2cSJim Jagielski 				}
1503*b1cdbd2cSJim Jagielski 				xStyle->setParentStyle( sParentStyleDisplayName );
1504*b1cdbd2cSJim Jagielski 			}
1505*b1cdbd2cSJim Jagielski 		}
1506*b1cdbd2cSJim Jagielski 		catch( Exception& e )
1507*b1cdbd2cSJim Jagielski 		{
1508*b1cdbd2cSJim Jagielski 			uno::Sequence<OUString> aSeq(0);
1509*b1cdbd2cSJim Jagielski 			const_cast<SdXMLImport*>(&GetSdImport())->SetError( XMLERROR_FLAG_WARNING | XMLERROR_API, aSeq, e.Message, NULL );
1510*b1cdbd2cSJim Jagielski 		}
1511*b1cdbd2cSJim Jagielski 	}
1512*b1cdbd2cSJim Jagielski }
1513*b1cdbd2cSJim Jagielski 
1514*b1cdbd2cSJim Jagielski ////////////////////////////////////////////////////////////////////////////////
1515*b1cdbd2cSJim Jagielski // helper function to create the uno component that hold the mappings from
1516*b1cdbd2cSJim Jagielski // xml auto layout name to internal autolayout id
1517*b1cdbd2cSJim Jagielski 
getPageLayouts() const1518*b1cdbd2cSJim Jagielski uno::Reference< container::XNameAccess > SdXMLStylesContext::getPageLayouts() const
1519*b1cdbd2cSJim Jagielski {
1520*b1cdbd2cSJim Jagielski 	uno::Reference< container::XNameContainer > xLayouts( comphelper::NameContainer_createInstance( ::getCppuType((const sal_Int32*)0)) );
1521*b1cdbd2cSJim Jagielski 
1522*b1cdbd2cSJim Jagielski 	for(sal_uInt32 a(0L); a < GetStyleCount(); a++)
1523*b1cdbd2cSJim Jagielski 	{
1524*b1cdbd2cSJim Jagielski 		const SvXMLStyleContext* pStyle = GetStyle(a);
1525*b1cdbd2cSJim Jagielski 		if(pStyle && pStyle->ISA(SdXMLPresentationPageLayoutContext))
1526*b1cdbd2cSJim Jagielski 		{
1527*b1cdbd2cSJim Jagielski 			xLayouts->insertByName( pStyle->GetName(), uno::makeAny(
1528*b1cdbd2cSJim Jagielski 			(sal_Int32)((SdXMLPresentationPageLayoutContext*)pStyle)->GetTypeId() ) );
1529*b1cdbd2cSJim Jagielski 		}
1530*b1cdbd2cSJim Jagielski 	}
1531*b1cdbd2cSJim Jagielski 
1532*b1cdbd2cSJim Jagielski 	return uno::Reference< container::XNameAccess >::query( xLayouts );
1533*b1cdbd2cSJim Jagielski }
1534*b1cdbd2cSJim Jagielski 
1535*b1cdbd2cSJim Jagielski ////////////////////////////////////////////////////////////////////////////////
1536*b1cdbd2cSJim Jagielski ////////////////////////////////////////////////////////////////////////////////
1537*b1cdbd2cSJim Jagielski //
1538*b1cdbd2cSJim Jagielski TYPEINIT1( SdXMLMasterStylesContext, SvXMLImportContext );
1539*b1cdbd2cSJim Jagielski 
SdXMLMasterStylesContext(SdXMLImport & rImport,sal_uInt16 nPrfx,const rtl::OUString & rLName)1540*b1cdbd2cSJim Jagielski SdXMLMasterStylesContext::SdXMLMasterStylesContext(
1541*b1cdbd2cSJim Jagielski 	SdXMLImport& rImport,
1542*b1cdbd2cSJim Jagielski 	sal_uInt16 nPrfx,
1543*b1cdbd2cSJim Jagielski 	const rtl::OUString& rLName)
1544*b1cdbd2cSJim Jagielski :	SvXMLImportContext( rImport, nPrfx, rLName)
1545*b1cdbd2cSJim Jagielski {
1546*b1cdbd2cSJim Jagielski }
1547*b1cdbd2cSJim Jagielski 
~SdXMLMasterStylesContext()1548*b1cdbd2cSJim Jagielski SdXMLMasterStylesContext::~SdXMLMasterStylesContext()
1549*b1cdbd2cSJim Jagielski {
1550*b1cdbd2cSJim Jagielski 	while(maMasterPageList.Count())
1551*b1cdbd2cSJim Jagielski 		maMasterPageList.Remove(maMasterPageList.Count() - 1)->ReleaseRef();
1552*b1cdbd2cSJim Jagielski }
1553*b1cdbd2cSJim Jagielski 
CreateChildContext(sal_uInt16 nPrefix,const rtl::OUString & rLocalName,const uno::Reference<xml::sax::XAttributeList> & xAttrList)1554*b1cdbd2cSJim Jagielski SvXMLImportContext* SdXMLMasterStylesContext::CreateChildContext(
1555*b1cdbd2cSJim Jagielski 	sal_uInt16 nPrefix,
1556*b1cdbd2cSJim Jagielski 	const rtl::OUString& rLocalName,
1557*b1cdbd2cSJim Jagielski 	const uno::Reference< xml::sax::XAttributeList >& xAttrList)
1558*b1cdbd2cSJim Jagielski {
1559*b1cdbd2cSJim Jagielski 	SvXMLImportContext* pContext = 0;
1560*b1cdbd2cSJim Jagielski 
1561*b1cdbd2cSJim Jagielski 	if(nPrefix == XML_NAMESPACE_STYLE
1562*b1cdbd2cSJim Jagielski        && IsXMLToken( rLocalName, XML_MASTER_PAGE ) )
1563*b1cdbd2cSJim Jagielski 	{
1564*b1cdbd2cSJim Jagielski 		// style:masterpage inside office:styles context
1565*b1cdbd2cSJim Jagielski 		uno::Reference< drawing::XDrawPage > xNewMasterPage;
1566*b1cdbd2cSJim Jagielski 		uno::Reference< drawing::XDrawPages > xMasterPages(GetSdImport().GetLocalMasterPages(), uno::UNO_QUERY);
1567*b1cdbd2cSJim Jagielski 
1568*b1cdbd2cSJim Jagielski 		if( xMasterPages.is() )
1569*b1cdbd2cSJim Jagielski 		{
1570*b1cdbd2cSJim Jagielski 			if(GetSdImport().GetNewMasterPageCount() + 1 > xMasterPages->getCount())
1571*b1cdbd2cSJim Jagielski 			{
1572*b1cdbd2cSJim Jagielski 				// new page, create and insert
1573*b1cdbd2cSJim Jagielski 				xNewMasterPage = xMasterPages->insertNewByIndex(xMasterPages->getCount());
1574*b1cdbd2cSJim Jagielski 			}
1575*b1cdbd2cSJim Jagielski 			else
1576*b1cdbd2cSJim Jagielski 			{
1577*b1cdbd2cSJim Jagielski 				// existing page, use it
1578*b1cdbd2cSJim Jagielski 				xMasterPages->getByIndex(GetSdImport().GetNewMasterPageCount()) >>= xNewMasterPage;
1579*b1cdbd2cSJim Jagielski 			}
1580*b1cdbd2cSJim Jagielski 
1581*b1cdbd2cSJim Jagielski 			// increment global import page counter
1582*b1cdbd2cSJim Jagielski 			GetSdImport().IncrementNewMasterPageCount();
1583*b1cdbd2cSJim Jagielski 
1584*b1cdbd2cSJim Jagielski 			if(xNewMasterPage.is())
1585*b1cdbd2cSJim Jagielski 			{
1586*b1cdbd2cSJim Jagielski 				uno::Reference< drawing::XShapes > xNewShapes(xNewMasterPage, uno::UNO_QUERY);
1587*b1cdbd2cSJim Jagielski 				if(xNewShapes.is() && GetSdImport().GetShapeImport()->GetStylesContext())
1588*b1cdbd2cSJim Jagielski 				{
1589*b1cdbd2cSJim Jagielski 					pContext = new SdXMLMasterPageContext(GetSdImport(),
1590*b1cdbd2cSJim Jagielski 						nPrefix, rLocalName, xAttrList, xNewShapes);
1591*b1cdbd2cSJim Jagielski 
1592*b1cdbd2cSJim Jagielski 					if(pContext)
1593*b1cdbd2cSJim Jagielski 					{
1594*b1cdbd2cSJim Jagielski 						pContext->AddRef();
1595*b1cdbd2cSJim Jagielski 						maMasterPageList.Insert((SdXMLMasterPageContext*)pContext, LIST_APPEND);
1596*b1cdbd2cSJim Jagielski 					}
1597*b1cdbd2cSJim Jagielski 				}
1598*b1cdbd2cSJim Jagielski 			}
1599*b1cdbd2cSJim Jagielski 		}
1600*b1cdbd2cSJim Jagielski 	}
1601*b1cdbd2cSJim Jagielski 	else	if(nPrefix == XML_NAMESPACE_STYLE
1602*b1cdbd2cSJim Jagielski 		&& IsXMLToken( rLocalName, XML_HANDOUT_MASTER ) )
1603*b1cdbd2cSJim Jagielski 	{
1604*b1cdbd2cSJim Jagielski 		uno::Reference< presentation::XHandoutMasterSupplier > xHandoutSupp( GetSdImport().GetModel(), uno::UNO_QUERY );
1605*b1cdbd2cSJim Jagielski 		if( xHandoutSupp.is() )
1606*b1cdbd2cSJim Jagielski 		{
1607*b1cdbd2cSJim Jagielski 			uno::Reference< drawing::XShapes > xHandoutPage( xHandoutSupp->getHandoutMasterPage(), uno::UNO_QUERY );
1608*b1cdbd2cSJim Jagielski 			if(xHandoutPage.is() && GetSdImport().GetShapeImport()->GetStylesContext())
1609*b1cdbd2cSJim Jagielski 			{
1610*b1cdbd2cSJim Jagielski 				pContext = new SdXMLMasterPageContext(GetSdImport(),
1611*b1cdbd2cSJim Jagielski 					nPrefix, rLocalName, xAttrList, xHandoutPage);
1612*b1cdbd2cSJim Jagielski 			}
1613*b1cdbd2cSJim Jagielski 		}
1614*b1cdbd2cSJim Jagielski 	}
1615*b1cdbd2cSJim Jagielski 	else if( (nPrefix == XML_NAMESPACE_DRAW )&& IsXMLToken( rLocalName, XML_LAYER_SET ) )
1616*b1cdbd2cSJim Jagielski 	{
1617*b1cdbd2cSJim Jagielski 		pContext = new SdXMLLayerSetContext( GetImport(), nPrefix, rLocalName, xAttrList );
1618*b1cdbd2cSJim Jagielski 	}
1619*b1cdbd2cSJim Jagielski 
1620*b1cdbd2cSJim Jagielski 	// call base class
1621*b1cdbd2cSJim Jagielski 	if(!pContext)
1622*b1cdbd2cSJim Jagielski 		pContext = SvXMLImportContext::CreateChildContext(nPrefix, rLocalName, xAttrList);
1623*b1cdbd2cSJim Jagielski 
1624*b1cdbd2cSJim Jagielski 	return pContext;
1625*b1cdbd2cSJim Jagielski }
1626*b1cdbd2cSJim Jagielski 
1627*b1cdbd2cSJim Jagielski ///////////////////////////////////////////////////////////////////////
1628*b1cdbd2cSJim Jagielski 
SdXMLHeaderFooterDeclContext(SvXMLImport & rImport,sal_uInt16 nPrfx,const::rtl::OUString & rLName,const::com::sun::star::uno::Reference<::com::sun::star::xml::sax::XAttributeList> & xAttrList)1629*b1cdbd2cSJim Jagielski SdXMLHeaderFooterDeclContext::SdXMLHeaderFooterDeclContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
1630*b1cdbd2cSJim Jagielski 		const ::rtl::OUString& rLName,
1631*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference<	::com::sun::star::xml::sax::XAttributeList >& xAttrList )
1632*b1cdbd2cSJim Jagielski : SvXMLStyleContext( rImport, nPrfx, rLName, xAttrList )
1633*b1cdbd2cSJim Jagielski {
1634*b1cdbd2cSJim Jagielski 	const sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
1635*b1cdbd2cSJim Jagielski 	for(sal_Int16 i=0; i < nAttrCount; i++)
1636*b1cdbd2cSJim Jagielski 	{
1637*b1cdbd2cSJim Jagielski 		OUString aLocalName;
1638*b1cdbd2cSJim Jagielski 		const OUString aValue( xAttrList->getValueByIndex(i) );
1639*b1cdbd2cSJim Jagielski 		sal_uInt16 nPrefix = GetImport().GetNamespaceMap().GetKeyByAttrName(xAttrList->getNameByIndex(i), &aLocalName);
1640*b1cdbd2cSJim Jagielski 
1641*b1cdbd2cSJim Jagielski 		if( nPrefix == XML_NAMESPACE_PRESENTATION )
1642*b1cdbd2cSJim Jagielski 		{
1643*b1cdbd2cSJim Jagielski 			if( IsXMLToken( aLocalName, XML_NAME ) )
1644*b1cdbd2cSJim Jagielski 			{
1645*b1cdbd2cSJim Jagielski 				maStrName = aValue;
1646*b1cdbd2cSJim Jagielski 			}
1647*b1cdbd2cSJim Jagielski 			else if( IsXMLToken( aLocalName, XML_SOURCE ) )
1648*b1cdbd2cSJim Jagielski 			{
1649*b1cdbd2cSJim Jagielski 				mbFixed = IsXMLToken( aValue, XML_FIXED );
1650*b1cdbd2cSJim Jagielski 			}
1651*b1cdbd2cSJim Jagielski 		}
1652*b1cdbd2cSJim Jagielski 		else if( nPrefix == XML_NAMESPACE_STYLE )
1653*b1cdbd2cSJim Jagielski 		{
1654*b1cdbd2cSJim Jagielski 			if( IsXMLToken( aLocalName, XML_DATA_STYLE_NAME ) )
1655*b1cdbd2cSJim Jagielski 			{
1656*b1cdbd2cSJim Jagielski 				maStrDateTimeFormat = aValue;
1657*b1cdbd2cSJim Jagielski 			}
1658*b1cdbd2cSJim Jagielski 		}
1659*b1cdbd2cSJim Jagielski 	}
1660*b1cdbd2cSJim Jagielski }
1661*b1cdbd2cSJim Jagielski 
IsTransient() const1662*b1cdbd2cSJim Jagielski sal_Bool SdXMLHeaderFooterDeclContext::IsTransient() const
1663*b1cdbd2cSJim Jagielski {
1664*b1cdbd2cSJim Jagielski 	return sal_True;
1665*b1cdbd2cSJim Jagielski }
1666*b1cdbd2cSJim Jagielski 
EndElement()1667*b1cdbd2cSJim Jagielski void SdXMLHeaderFooterDeclContext::EndElement()
1668*b1cdbd2cSJim Jagielski {
1669*b1cdbd2cSJim Jagielski 	SdXMLImport& rImport = *dynamic_cast< SdXMLImport* >( &GetImport() );
1670*b1cdbd2cSJim Jagielski 	if( IsXMLToken( GetLocalName(), XML_HEADER_DECL ) )
1671*b1cdbd2cSJim Jagielski 	{
1672*b1cdbd2cSJim Jagielski 		rImport.AddHeaderDecl( maStrName, maStrText );
1673*b1cdbd2cSJim Jagielski 	}
1674*b1cdbd2cSJim Jagielski 	else if( IsXMLToken( GetLocalName(), XML_FOOTER_DECL ) )
1675*b1cdbd2cSJim Jagielski 	{
1676*b1cdbd2cSJim Jagielski 		rImport.AddFooterDecl( maStrName, maStrText );
1677*b1cdbd2cSJim Jagielski 	}
1678*b1cdbd2cSJim Jagielski 	else if( IsXMLToken( GetLocalName(), XML_DATE_TIME_DECL ) )
1679*b1cdbd2cSJim Jagielski 	{
1680*b1cdbd2cSJim Jagielski 		rImport.AddDateTimeDecl( maStrName, maStrText, mbFixed, maStrDateTimeFormat );
1681*b1cdbd2cSJim Jagielski 	}
1682*b1cdbd2cSJim Jagielski }
1683*b1cdbd2cSJim Jagielski 
Characters(const::rtl::OUString & rChars)1684*b1cdbd2cSJim Jagielski void SdXMLHeaderFooterDeclContext::Characters( const ::rtl::OUString& rChars )
1685*b1cdbd2cSJim Jagielski {
1686*b1cdbd2cSJim Jagielski 	maStrText += rChars;
1687*b1cdbd2cSJim Jagielski }
1688*b1cdbd2cSJim Jagielski 
1689