xref: /aoo4110/main/xmloff/source/draw/sdxmlexp.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 #include "unointerfacetouniqueidentifiermapper.hxx"
27*b1cdbd2cSJim Jagielski #include <xmloff/nmspmap.hxx>
28*b1cdbd2cSJim Jagielski #include "xmloff/xmlnmspe.hxx"
29*b1cdbd2cSJim Jagielski #include <xmloff/xmluconv.hxx>
30*b1cdbd2cSJim Jagielski #include <xmloff/xmltoken.hxx>
31*b1cdbd2cSJim Jagielski #include <xmloff/xmlmetae.hxx>
32*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/ServiceNotRegisteredException.hpp>
33*b1cdbd2cSJim Jagielski #include <com/sun/star/presentation/XPresentationSupplier.hpp>
34*b1cdbd2cSJim Jagielski #include <com/sun/star/presentation/XCustomPresentationSupplier.hpp>
35*b1cdbd2cSJim Jagielski #include <com/sun/star/geometry/RealPoint2D.hpp>
36*b1cdbd2cSJim Jagielski #include <com/sun/star/task/XStatusIndicatorSupplier.hpp>
37*b1cdbd2cSJim Jagielski #include <com/sun/star/office/XAnnotationAccess.hpp>
38*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/Locale.hpp>
39*b1cdbd2cSJim Jagielski #include <com/sun/star/uno/Any.hxx>
40*b1cdbd2cSJim Jagielski #include "sdxmlexp_impl.hxx"
41*b1cdbd2cSJim Jagielski #include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
42*b1cdbd2cSJim Jagielski #include <com/sun/star/drawing/XMasterPagesSupplier.hpp>
43*b1cdbd2cSJim Jagielski #include <com/sun/star/presentation/XHandoutMasterSupplier.hpp>
44*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XIndexContainer.hpp>
45*b1cdbd2cSJim Jagielski #include <com/sun/star/view/PaperOrientation.hpp>
46*b1cdbd2cSJim Jagielski #include <com/sun/star/style/XStyleFamiliesSupplier.hpp>
47*b1cdbd2cSJim Jagielski #include <com/sun/star/style/XStyle.hpp>
48*b1cdbd2cSJim Jagielski 
49*b1cdbd2cSJim Jagielski #include <com/sun/star/form/XFormsSupplier2.hpp>
50*b1cdbd2cSJim Jagielski #include <com/sun/star/presentation/XPresentationPage.hpp>
51*b1cdbd2cSJim Jagielski #include <com/sun/star/drawing/XMasterPageTarget.hpp>
52*b1cdbd2cSJim Jagielski #include <com/sun/star/text/XText.hpp>
53*b1cdbd2cSJim Jagielski #include <com/sun/star/chart/XChartDocument.hpp>
54*b1cdbd2cSJim Jagielski #include <com/sun/star/animations/XAnimationNodeSupplier.hpp>
55*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XNamed.hpp>
56*b1cdbd2cSJim Jagielski #include <rtl/ustrbuf.hxx>
57*b1cdbd2cSJim Jagielski #include <tools/gen.hxx>
58*b1cdbd2cSJim Jagielski #include <tools/debug.hxx>
59*b1cdbd2cSJim Jagielski #include <xmloff/xmlaustp.hxx>
60*b1cdbd2cSJim Jagielski #include <xmloff/families.hxx>
61*b1cdbd2cSJim Jagielski #include <xmloff/styleexp.hxx>
62*b1cdbd2cSJim Jagielski #include "sdpropls.hxx"
63*b1cdbd2cSJim Jagielski #include <xmloff/xmlexppr.hxx>
64*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/XPropertyState.hpp>
65*b1cdbd2cSJim Jagielski #include "xexptran.hxx"
66*b1cdbd2cSJim Jagielski 
67*b1cdbd2cSJim Jagielski #ifndef _CPPUHELPER_IMPLBASE1_HXX
68*b1cdbd2cSJim Jagielski #include <cppuhelper/implbase1.hxx>
69*b1cdbd2cSJim Jagielski #endif
70*b1cdbd2cSJim Jagielski #include <comphelper/extract.hxx>
71*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XServiceInfo.hpp>
72*b1cdbd2cSJim Jagielski #include "PropertySetMerger.hxx"
73*b1cdbd2cSJim Jagielski #include "layerexp.hxx"
74*b1cdbd2cSJim Jagielski 
75*b1cdbd2cSJim Jagielski 
76*b1cdbd2cSJim Jagielski #include "xmloff/VisAreaExport.hxx"
77*b1cdbd2cSJim Jagielski #include "XMLNumberStylesExport.hxx"
78*b1cdbd2cSJim Jagielski #include <tools/list.hxx>
79*b1cdbd2cSJim Jagielski #include <tools/string.hxx>
80*b1cdbd2cSJim Jagielski 
81*b1cdbd2cSJim Jagielski #include "animationexport.hxx"
82*b1cdbd2cSJim Jagielski 
83*b1cdbd2cSJim Jagielski #include <com/sun/star/document/XDocumentProperties.hpp>
84*b1cdbd2cSJim Jagielski #include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
85*b1cdbd2cSJim Jagielski 
86*b1cdbd2cSJim Jagielski using ::rtl::OUString;
87*b1cdbd2cSJim Jagielski using ::rtl::OUStringBuffer;
88*b1cdbd2cSJim Jagielski 
89*b1cdbd2cSJim Jagielski using namespace ::com::sun::star;
90*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::uno;
91*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::beans;
92*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::util;
93*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::container;
94*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::drawing;
95*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::office;
96*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::presentation;
97*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::geometry;
98*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::text;
99*b1cdbd2cSJim Jagielski using namespace ::xmloff::token;
100*b1cdbd2cSJim Jagielski 
101*b1cdbd2cSJim Jagielski 
102*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
103*b1cdbd2cSJim Jagielski 
104*b1cdbd2cSJim Jagielski class ImpXMLEXPPageMasterInfo
105*b1cdbd2cSJim Jagielski {
106*b1cdbd2cSJim Jagielski 	sal_Int32					mnBorderBottom;
107*b1cdbd2cSJim Jagielski 	sal_Int32					mnBorderLeft;
108*b1cdbd2cSJim Jagielski 	sal_Int32					mnBorderRight;
109*b1cdbd2cSJim Jagielski 	sal_Int32					mnBorderTop;
110*b1cdbd2cSJim Jagielski 	sal_Int32					mnWidth;
111*b1cdbd2cSJim Jagielski 	sal_Int32					mnHeight;
112*b1cdbd2cSJim Jagielski 	view::PaperOrientation		meOrientation;
113*b1cdbd2cSJim Jagielski 	OUString					msName;
114*b1cdbd2cSJim Jagielski 	OUString					msMasterPageName;
115*b1cdbd2cSJim Jagielski 
116*b1cdbd2cSJim Jagielski public:
117*b1cdbd2cSJim Jagielski 	ImpXMLEXPPageMasterInfo(const SdXMLExport& rExp, const Reference<XDrawPage>& xPage);
118*b1cdbd2cSJim Jagielski 	sal_Bool operator==(const ImpXMLEXPPageMasterInfo& rInfo) const;
119*b1cdbd2cSJim Jagielski 	void SetName(const OUString& rStr);
120*b1cdbd2cSJim Jagielski 
GetName() const121*b1cdbd2cSJim Jagielski 	const OUString& GetName() const { return msName; }
GetMasterPageName() const122*b1cdbd2cSJim Jagielski 	const OUString& GetMasterPageName() const { return msMasterPageName; }
123*b1cdbd2cSJim Jagielski 
GetBorderBottom() const124*b1cdbd2cSJim Jagielski 	sal_Int32 GetBorderBottom() const { return mnBorderBottom; }
GetBorderLeft() const125*b1cdbd2cSJim Jagielski 	sal_Int32 GetBorderLeft() const { return mnBorderLeft; }
GetBorderRight() const126*b1cdbd2cSJim Jagielski 	sal_Int32 GetBorderRight() const { return mnBorderRight; }
GetBorderTop() const127*b1cdbd2cSJim Jagielski 	sal_Int32 GetBorderTop() const { return mnBorderTop; }
GetWidth() const128*b1cdbd2cSJim Jagielski 	sal_Int32 GetWidth() const { return mnWidth; }
GetHeight() const129*b1cdbd2cSJim Jagielski 	sal_Int32 GetHeight() const { return mnHeight; }
GetOrientation() const130*b1cdbd2cSJim Jagielski 	view::PaperOrientation GetOrientation() const { return meOrientation; }
131*b1cdbd2cSJim Jagielski };
132*b1cdbd2cSJim Jagielski 
ImpXMLEXPPageMasterInfo(const SdXMLExport & rExp,const Reference<XDrawPage> & xPage)133*b1cdbd2cSJim Jagielski ImpXMLEXPPageMasterInfo::ImpXMLEXPPageMasterInfo(
134*b1cdbd2cSJim Jagielski 	const SdXMLExport& rExp,
135*b1cdbd2cSJim Jagielski 	const Reference<XDrawPage>& xPage)
136*b1cdbd2cSJim Jagielski :	mnBorderBottom(0),
137*b1cdbd2cSJim Jagielski 	mnBorderLeft(0),
138*b1cdbd2cSJim Jagielski 	mnBorderRight(0),
139*b1cdbd2cSJim Jagielski 	mnBorderTop(0),
140*b1cdbd2cSJim Jagielski 	mnWidth(0),
141*b1cdbd2cSJim Jagielski 	mnHeight(0),
142*b1cdbd2cSJim Jagielski 	meOrientation(rExp.IsDraw() ? view::PaperOrientation_PORTRAIT : view::PaperOrientation_LANDSCAPE)
143*b1cdbd2cSJim Jagielski {
144*b1cdbd2cSJim Jagielski 	Reference <beans::XPropertySet> xPropSet(xPage, UNO_QUERY);
145*b1cdbd2cSJim Jagielski 	if(xPropSet.is())
146*b1cdbd2cSJim Jagielski 	{
147*b1cdbd2cSJim Jagielski 		Any aAny;
148*b1cdbd2cSJim Jagielski 
149*b1cdbd2cSJim Jagielski 		Reference< beans::XPropertySetInfo > xPropsInfo( xPropSet->getPropertySetInfo() );
150*b1cdbd2cSJim Jagielski 		if( xPropsInfo.is() && xPropsInfo->hasPropertyByName(OUString(RTL_CONSTASCII_USTRINGPARAM("BorderBottom") )))
151*b1cdbd2cSJim Jagielski 		{
152*b1cdbd2cSJim Jagielski 			aAny = xPropSet->getPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("BorderBottom")));
153*b1cdbd2cSJim Jagielski 			aAny >>= mnBorderBottom;
154*b1cdbd2cSJim Jagielski 
155*b1cdbd2cSJim Jagielski 			aAny = xPropSet->getPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("BorderLeft")));
156*b1cdbd2cSJim Jagielski 			aAny >>= mnBorderLeft;
157*b1cdbd2cSJim Jagielski 
158*b1cdbd2cSJim Jagielski 			aAny = xPropSet->getPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("BorderRight")));
159*b1cdbd2cSJim Jagielski 			aAny >>= mnBorderRight;
160*b1cdbd2cSJim Jagielski 
161*b1cdbd2cSJim Jagielski 			aAny = xPropSet->getPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("BorderTop")));
162*b1cdbd2cSJim Jagielski 			aAny >>= mnBorderTop;
163*b1cdbd2cSJim Jagielski 		}
164*b1cdbd2cSJim Jagielski 
165*b1cdbd2cSJim Jagielski 		if( xPropsInfo.is() && xPropsInfo->hasPropertyByName(OUString(RTL_CONSTASCII_USTRINGPARAM("Width") )))
166*b1cdbd2cSJim Jagielski 		{
167*b1cdbd2cSJim Jagielski 			aAny = xPropSet->getPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("Width")));
168*b1cdbd2cSJim Jagielski 			aAny >>= mnWidth;
169*b1cdbd2cSJim Jagielski 
170*b1cdbd2cSJim Jagielski 			aAny = xPropSet->getPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("Height")));
171*b1cdbd2cSJim Jagielski 			aAny >>= mnHeight;
172*b1cdbd2cSJim Jagielski 		}
173*b1cdbd2cSJim Jagielski 
174*b1cdbd2cSJim Jagielski 		if( xPropsInfo.is() && xPropsInfo->hasPropertyByName(OUString(RTL_CONSTASCII_USTRINGPARAM("Orientation") )))
175*b1cdbd2cSJim Jagielski 		{
176*b1cdbd2cSJim Jagielski 			aAny = xPropSet->getPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("Orientation")));
177*b1cdbd2cSJim Jagielski 			aAny >>= meOrientation;
178*b1cdbd2cSJim Jagielski 		}
179*b1cdbd2cSJim Jagielski 	}
180*b1cdbd2cSJim Jagielski 
181*b1cdbd2cSJim Jagielski 	Reference <container::XNamed> xMasterNamed(xPage, UNO_QUERY);
182*b1cdbd2cSJim Jagielski 	if(xMasterNamed.is())
183*b1cdbd2cSJim Jagielski 	{
184*b1cdbd2cSJim Jagielski 		msMasterPageName = xMasterNamed->getName();
185*b1cdbd2cSJim Jagielski 	}
186*b1cdbd2cSJim Jagielski }
187*b1cdbd2cSJim Jagielski 
operator ==(const ImpXMLEXPPageMasterInfo & rInfo) const188*b1cdbd2cSJim Jagielski sal_Bool ImpXMLEXPPageMasterInfo::operator==(const ImpXMLEXPPageMasterInfo& rInfo) const
189*b1cdbd2cSJim Jagielski {
190*b1cdbd2cSJim Jagielski 	return ((mnBorderBottom == rInfo.mnBorderBottom)
191*b1cdbd2cSJim Jagielski 		&& (mnBorderLeft == rInfo.mnBorderLeft)
192*b1cdbd2cSJim Jagielski 		&& (mnBorderRight == rInfo.mnBorderRight)
193*b1cdbd2cSJim Jagielski 		&& (mnBorderTop == rInfo.mnBorderTop)
194*b1cdbd2cSJim Jagielski 		&& (mnWidth == rInfo.mnWidth)
195*b1cdbd2cSJim Jagielski 		&& (mnHeight == rInfo.mnHeight)
196*b1cdbd2cSJim Jagielski 		&& (meOrientation == rInfo.meOrientation));
197*b1cdbd2cSJim Jagielski }
198*b1cdbd2cSJim Jagielski 
SetName(const OUString & rStr)199*b1cdbd2cSJim Jagielski void ImpXMLEXPPageMasterInfo::SetName(const OUString& rStr)
200*b1cdbd2cSJim Jagielski {
201*b1cdbd2cSJim Jagielski 	msName = rStr;
202*b1cdbd2cSJim Jagielski }
203*b1cdbd2cSJim Jagielski 
204*b1cdbd2cSJim Jagielski DECLARE_LIST(ImpXMLEXPPageMasterList, ImpXMLEXPPageMasterInfo*)
205*b1cdbd2cSJim Jagielski 
206*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
207*b1cdbd2cSJim Jagielski 
208*b1cdbd2cSJim Jagielski #define	IMP_AUTOLAYOUT_INFO_MAX			(35L)
209*b1cdbd2cSJim Jagielski 
210*b1cdbd2cSJim Jagielski class ImpXMLAutoLayoutInfo
211*b1cdbd2cSJim Jagielski {
212*b1cdbd2cSJim Jagielski 	sal_uInt16					mnType;
213*b1cdbd2cSJim Jagielski 	ImpXMLEXPPageMasterInfo*	mpPageMasterInfo;
214*b1cdbd2cSJim Jagielski 	OUString					msLayoutName;
215*b1cdbd2cSJim Jagielski 	Rectangle					maTitleRect;
216*b1cdbd2cSJim Jagielski 	Rectangle					maPresRect;
217*b1cdbd2cSJim Jagielski 	sal_Int32					mnGapX;
218*b1cdbd2cSJim Jagielski 	sal_Int32					mnGapY;
219*b1cdbd2cSJim Jagielski 
220*b1cdbd2cSJim Jagielski public:
221*b1cdbd2cSJim Jagielski 	ImpXMLAutoLayoutInfo(sal_uInt16 nTyp, ImpXMLEXPPageMasterInfo* pInf);
222*b1cdbd2cSJim Jagielski 
223*b1cdbd2cSJim Jagielski 	sal_Bool operator==(const ImpXMLAutoLayoutInfo& rInfo) const;
224*b1cdbd2cSJim Jagielski 
GetLayoutType() const225*b1cdbd2cSJim Jagielski 	sal_uInt16 GetLayoutType() const { return mnType; }
GetGapX() const226*b1cdbd2cSJim Jagielski 	sal_Int32 GetGapX() const { return mnGapX; }
GetGapY() const227*b1cdbd2cSJim Jagielski 	sal_Int32 GetGapY() const { return mnGapY; }
228*b1cdbd2cSJim Jagielski 
GetLayoutName() const229*b1cdbd2cSJim Jagielski 	const OUString& GetLayoutName() const { return msLayoutName; }
SetLayoutName(const OUString & rNew)230*b1cdbd2cSJim Jagielski 	void SetLayoutName(const OUString& rNew) { msLayoutName = rNew; }
231*b1cdbd2cSJim Jagielski 
GetTitleRectangle() const232*b1cdbd2cSJim Jagielski 	const Rectangle& GetTitleRectangle() const { return maTitleRect; }
GetPresRectangle() const233*b1cdbd2cSJim Jagielski 	const Rectangle& GetPresRectangle() const { return maPresRect; }
234*b1cdbd2cSJim Jagielski 
235*b1cdbd2cSJim Jagielski 	static sal_Bool IsCreateNecessary(sal_uInt16 nTyp);
236*b1cdbd2cSJim Jagielski };
237*b1cdbd2cSJim Jagielski 
IsCreateNecessary(sal_uInt16 nTyp)238*b1cdbd2cSJim Jagielski sal_Bool ImpXMLAutoLayoutInfo::IsCreateNecessary(sal_uInt16 nTyp)
239*b1cdbd2cSJim Jagielski {
240*b1cdbd2cSJim Jagielski 	if(nTyp == 5 /* AUTOLAYOUT_ORG */
241*b1cdbd2cSJim Jagielski 		|| nTyp == 20 /* AUTOLAYOUT_NONE */
242*b1cdbd2cSJim Jagielski 		|| nTyp >= IMP_AUTOLAYOUT_INFO_MAX)
243*b1cdbd2cSJim Jagielski 		return sal_False;
244*b1cdbd2cSJim Jagielski 	return sal_True;
245*b1cdbd2cSJim Jagielski }
246*b1cdbd2cSJim Jagielski 
operator ==(const ImpXMLAutoLayoutInfo & rInfo) const247*b1cdbd2cSJim Jagielski sal_Bool ImpXMLAutoLayoutInfo::operator==(const ImpXMLAutoLayoutInfo& rInfo) const
248*b1cdbd2cSJim Jagielski {
249*b1cdbd2cSJim Jagielski 	return ((mnType == rInfo.mnType
250*b1cdbd2cSJim Jagielski 		&& mpPageMasterInfo == rInfo.mpPageMasterInfo));
251*b1cdbd2cSJim Jagielski }
252*b1cdbd2cSJim Jagielski 
ImpXMLAutoLayoutInfo(sal_uInt16 nTyp,ImpXMLEXPPageMasterInfo * pInf)253*b1cdbd2cSJim Jagielski ImpXMLAutoLayoutInfo::ImpXMLAutoLayoutInfo(sal_uInt16 nTyp, ImpXMLEXPPageMasterInfo* pInf)
254*b1cdbd2cSJim Jagielski :	mnType(nTyp),
255*b1cdbd2cSJim Jagielski 	mpPageMasterInfo(pInf)
256*b1cdbd2cSJim Jagielski {
257*b1cdbd2cSJim Jagielski 	// create full info (initialze with typical values)
258*b1cdbd2cSJim Jagielski 	Point aPagePos(0,0);
259*b1cdbd2cSJim Jagielski 	Size aPageSize(28000, 21000);
260*b1cdbd2cSJim Jagielski 	Size aPageInnerSize(28000, 21000);
261*b1cdbd2cSJim Jagielski 
262*b1cdbd2cSJim Jagielski 	if(mpPageMasterInfo)
263*b1cdbd2cSJim Jagielski 	{
264*b1cdbd2cSJim Jagielski 		aPagePos = Point(mpPageMasterInfo->GetBorderLeft(), mpPageMasterInfo->GetBorderTop());
265*b1cdbd2cSJim Jagielski 		aPageSize = Size(mpPageMasterInfo->GetWidth(), mpPageMasterInfo->GetHeight());
266*b1cdbd2cSJim Jagielski 		aPageInnerSize = aPageSize;
267*b1cdbd2cSJim Jagielski 		aPageInnerSize.Width() -= mpPageMasterInfo->GetBorderLeft() + mpPageMasterInfo->GetBorderRight();
268*b1cdbd2cSJim Jagielski 		aPageInnerSize.Height() -= mpPageMasterInfo->GetBorderTop() + mpPageMasterInfo->GetBorderBottom();
269*b1cdbd2cSJim Jagielski 	}
270*b1cdbd2cSJim Jagielski 
271*b1cdbd2cSJim Jagielski 	// title rectangle aligning
272*b1cdbd2cSJim Jagielski 	Point aTitlePos(aPagePos);
273*b1cdbd2cSJim Jagielski 	Size aTitleSize(aPageInnerSize);
274*b1cdbd2cSJim Jagielski 
275*b1cdbd2cSJim Jagielski 	if(mnType == 21 /* AUTOLAYOUT_NOTES */)
276*b1cdbd2cSJim Jagielski 	{
277*b1cdbd2cSJim Jagielski 		aTitleSize.Height() = (long) (aTitleSize.Height() / 2.5);
278*b1cdbd2cSJim Jagielski 		Point aPos = aTitlePos;
279*b1cdbd2cSJim Jagielski 		aPos.Y() += long( aTitleSize.Height() * 0.083 );
280*b1cdbd2cSJim Jagielski 		Size aPartArea = aTitleSize;
281*b1cdbd2cSJim Jagielski 		Size aSize;
282*b1cdbd2cSJim Jagielski 
283*b1cdbd2cSJim Jagielski 		// tatsaechliche Seitengroesse in das Handout-Rechteck skalieren
284*b1cdbd2cSJim Jagielski 		double fH = (double) aPartArea.Width()  / aPageSize.Width();
285*b1cdbd2cSJim Jagielski 		double fV = (double) aPartArea.Height() / aPageSize.Height();
286*b1cdbd2cSJim Jagielski 
287*b1cdbd2cSJim Jagielski 		if ( fH > fV )
288*b1cdbd2cSJim Jagielski 			fH = fV;
289*b1cdbd2cSJim Jagielski 		aSize.Width()  = (long) (fH * aPageSize.Width());
290*b1cdbd2cSJim Jagielski 		aSize.Height() = (long) (fH * aPageSize.Height());
291*b1cdbd2cSJim Jagielski 
292*b1cdbd2cSJim Jagielski 		aPos.X() += (aPartArea.Width() - aSize.Width()) / 2;
293*b1cdbd2cSJim Jagielski 		aPos.Y() += (aPartArea.Height()- aSize.Height())/ 2;
294*b1cdbd2cSJim Jagielski 
295*b1cdbd2cSJim Jagielski 		aTitlePos = aPos;
296*b1cdbd2cSJim Jagielski 		aTitleSize = aSize;
297*b1cdbd2cSJim Jagielski 	}
298*b1cdbd2cSJim Jagielski 	else if(mnType == 27 || mnType == 28)
299*b1cdbd2cSJim Jagielski 	{
300*b1cdbd2cSJim Jagielski 		// AUTOLAYOUT_VERTICAL_TITLE_TEXT_CHART or
301*b1cdbd2cSJim Jagielski 		// AUTOLAYOUT_VERTICAL_TITLE_VERTICAL_OUTLINE
302*b1cdbd2cSJim Jagielski 		Point aClassicTPos(
303*b1cdbd2cSJim Jagielski 			aTitlePos.X() + long( aTitleSize.Width() * 0.0735 ),
304*b1cdbd2cSJim Jagielski 			aTitlePos.Y() + long( aTitleSize.Height() * 0.083 ));
305*b1cdbd2cSJim Jagielski 		Size aClassicTSize(
306*b1cdbd2cSJim Jagielski 			long( aTitleSize.Width() * 0.854 ),
307*b1cdbd2cSJim Jagielski 			long( aTitleSize.Height() * 0.167 ));
308*b1cdbd2cSJim Jagielski 		Point aLPos(aPagePos);
309*b1cdbd2cSJim Jagielski 		Size aLSize(aPageInnerSize);
310*b1cdbd2cSJim Jagielski 		Point aClassicLPos(
311*b1cdbd2cSJim Jagielski 			aLPos.X() + long( aLSize.Width() * 0.0735 ),
312*b1cdbd2cSJim Jagielski 			aLPos.Y() + long( aLSize.Height() * 0.472 ));
313*b1cdbd2cSJim Jagielski 		Size aClassicLSize(
314*b1cdbd2cSJim Jagielski 			long( aLSize.Width() * 0.854 ),
315*b1cdbd2cSJim Jagielski 			long( aLSize.Height() * 0.444 ));
316*b1cdbd2cSJim Jagielski 
317*b1cdbd2cSJim Jagielski 		aTitlePos.X() = (aClassicTPos.X() + aClassicTSize.Width()) - aClassicTSize.Height();
318*b1cdbd2cSJim Jagielski 		aTitlePos.Y() = aClassicTPos.Y();
319*b1cdbd2cSJim Jagielski 		aTitleSize.Width() = aClassicTSize.Height();
320*b1cdbd2cSJim Jagielski 		aTitleSize.Height() = (aClassicLPos.Y() + aClassicLSize.Height()) - aClassicTPos.Y();
321*b1cdbd2cSJim Jagielski 	}
322*b1cdbd2cSJim Jagielski 	else
323*b1cdbd2cSJim Jagielski 	{
324*b1cdbd2cSJim Jagielski 		aTitlePos.X() += long( aTitleSize.Width() * 0.0735 );
325*b1cdbd2cSJim Jagielski 		aTitlePos.Y() += long( aTitleSize.Height() * 0.083 );
326*b1cdbd2cSJim Jagielski 		aTitleSize.Width() = long( aTitleSize.Width() * 0.854 );
327*b1cdbd2cSJim Jagielski 		aTitleSize.Height() = long( aTitleSize.Height() * 0.167 );
328*b1cdbd2cSJim Jagielski 	}
329*b1cdbd2cSJim Jagielski 
330*b1cdbd2cSJim Jagielski 	maTitleRect.SetPos(aTitlePos);
331*b1cdbd2cSJim Jagielski 	maTitleRect.SetSize(aTitleSize);
332*b1cdbd2cSJim Jagielski 
333*b1cdbd2cSJim Jagielski 	// layout rectangle aligning
334*b1cdbd2cSJim Jagielski 	Point aLayoutPos(aPagePos);
335*b1cdbd2cSJim Jagielski 	Size aLayoutSize(aPageInnerSize);
336*b1cdbd2cSJim Jagielski 
337*b1cdbd2cSJim Jagielski 	if(mnType == 21 /* AUTOLAYOUT_NOTES */)
338*b1cdbd2cSJim Jagielski 	{
339*b1cdbd2cSJim Jagielski 		aLayoutPos.X() += long( aLayoutSize.Width() * 0.0735 );
340*b1cdbd2cSJim Jagielski 		aLayoutPos.Y() += long( aLayoutSize.Height() * 0.472 );
341*b1cdbd2cSJim Jagielski 		aLayoutSize.Width() = long( aLayoutSize.Width() * 0.854 );
342*b1cdbd2cSJim Jagielski 		aLayoutSize.Height() = long( aLayoutSize.Height() * 0.444 );
343*b1cdbd2cSJim Jagielski 	}
344*b1cdbd2cSJim Jagielski 	else if((mnType >= 22 && mnType <= 26) || (mnType == 31)) // AUTOLAYOUT_HANDOUT
345*b1cdbd2cSJim Jagielski 	{
346*b1cdbd2cSJim Jagielski 		// keep info for inner area in maPresRect, put info for gap size
347*b1cdbd2cSJim Jagielski 		// to maTitleRect position
348*b1cdbd2cSJim Jagielski 		mnGapX = (aPageSize.Width() - aPageInnerSize.Width()) / 2;
349*b1cdbd2cSJim Jagielski 		mnGapY = (aPageSize.Height() - aPageInnerSize.Height()) / 2;
350*b1cdbd2cSJim Jagielski 
351*b1cdbd2cSJim Jagielski 		if(!mnGapX)
352*b1cdbd2cSJim Jagielski 			mnGapX = aPageSize.Width() / 10;
353*b1cdbd2cSJim Jagielski 
354*b1cdbd2cSJim Jagielski 		if(!mnGapY)
355*b1cdbd2cSJim Jagielski 			mnGapY = aPageSize.Height() / 10;
356*b1cdbd2cSJim Jagielski 
357*b1cdbd2cSJim Jagielski 		if(mnGapX < aPageInnerSize.Width() / 10)
358*b1cdbd2cSJim Jagielski 			mnGapX = aPageInnerSize.Width() / 10;
359*b1cdbd2cSJim Jagielski 
360*b1cdbd2cSJim Jagielski 		if(mnGapY < aPageInnerSize.Height() / 10)
361*b1cdbd2cSJim Jagielski 			mnGapY = aPageInnerSize.Height() / 10;
362*b1cdbd2cSJim Jagielski 	}
363*b1cdbd2cSJim Jagielski 	else if(mnType == 27 || mnType == 28)
364*b1cdbd2cSJim Jagielski 	{
365*b1cdbd2cSJim Jagielski 		// AUTOLAYOUT_VERTICAL_TITLE_TEXT_CHART or
366*b1cdbd2cSJim Jagielski 		// AUTOLAYOUT_VERTICAL_TITLE_VERTICAL_OUTLINE
367*b1cdbd2cSJim Jagielski 		Point aClassicTPos(
368*b1cdbd2cSJim Jagielski 			aTitlePos.X() + long( aTitleSize.Width() * 0.0735 ),
369*b1cdbd2cSJim Jagielski 			aTitlePos.Y() + long( aTitleSize.Height() * 0.083 ));
370*b1cdbd2cSJim Jagielski 		Size aClassicTSize(
371*b1cdbd2cSJim Jagielski 			long( aTitleSize.Width() * 0.854 ),
372*b1cdbd2cSJim Jagielski 			long( aTitleSize.Height() * 0.167 ));
373*b1cdbd2cSJim Jagielski 		Point aClassicLPos(
374*b1cdbd2cSJim Jagielski 			aLayoutPos.X() + long( aLayoutSize.Width() * 0.0735 ),
375*b1cdbd2cSJim Jagielski 			aLayoutPos.Y() + long( aLayoutSize.Height() * 0.472 ));
376*b1cdbd2cSJim Jagielski 		Size aClassicLSize(
377*b1cdbd2cSJim Jagielski 			long( aLayoutSize.Width() * 0.854 ),
378*b1cdbd2cSJim Jagielski 			long( aLayoutSize.Height() * 0.444 ));
379*b1cdbd2cSJim Jagielski 
380*b1cdbd2cSJim Jagielski 		aLayoutPos.X() = aClassicLPos.X();
381*b1cdbd2cSJim Jagielski 		aLayoutPos.Y() = aClassicTPos.Y();
382*b1cdbd2cSJim Jagielski 		aLayoutSize.Width() = (aClassicLPos.X() + aClassicLSize.Width())
383*b1cdbd2cSJim Jagielski 			- (aClassicTSize.Height() + (aClassicLPos.Y() - (aClassicTPos.Y() + aClassicTSize.Height())));
384*b1cdbd2cSJim Jagielski 		aLayoutSize.Height() = (aClassicLPos.Y() + aClassicLSize.Height()) - aClassicTPos.Y();
385*b1cdbd2cSJim Jagielski 	}
386*b1cdbd2cSJim Jagielski     else if( mnType == 32 )
387*b1cdbd2cSJim Jagielski     {
388*b1cdbd2cSJim Jagielski         // AUTOLAYOUT_ONLY_TEXT
389*b1cdbd2cSJim Jagielski         aLayoutPos = aTitlePos;
390*b1cdbd2cSJim Jagielski         aLayoutSize.Width() = aTitleSize.Width();
391*b1cdbd2cSJim Jagielski         aLayoutSize.Height() = long( aLayoutSize.Height() * 0.825 );
392*b1cdbd2cSJim Jagielski     }
393*b1cdbd2cSJim Jagielski 	else
394*b1cdbd2cSJim Jagielski 	{
395*b1cdbd2cSJim Jagielski 		aLayoutPos.X() += long( aLayoutSize.Width() * 0.0735 );
396*b1cdbd2cSJim Jagielski 		aLayoutPos.Y() += long( aLayoutSize.Height() * 0.278 );
397*b1cdbd2cSJim Jagielski 		aLayoutSize.Width() = long( aLayoutSize.Width() * 0.854 );
398*b1cdbd2cSJim Jagielski 		aLayoutSize.Height() = long( aLayoutSize.Height() * 0.630 );
399*b1cdbd2cSJim Jagielski 	}
400*b1cdbd2cSJim Jagielski 
401*b1cdbd2cSJim Jagielski 	maPresRect.SetPos(aLayoutPos);
402*b1cdbd2cSJim Jagielski 	maPresRect.SetSize(aLayoutSize);
403*b1cdbd2cSJim Jagielski }
404*b1cdbd2cSJim Jagielski 
DECLARE_LIST(ImpXMLAutoLayoutInfoList,ImpXMLAutoLayoutInfo *)405*b1cdbd2cSJim Jagielski DECLARE_LIST(ImpXMLAutoLayoutInfoList, ImpXMLAutoLayoutInfo*)
406*b1cdbd2cSJim Jagielski 
407*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
408*b1cdbd2cSJim Jagielski 
409*b1cdbd2cSJim Jagielski // #110680#
410*b1cdbd2cSJim Jagielski SdXMLExport::SdXMLExport(
411*b1cdbd2cSJim Jagielski 	const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xServiceFactory,
412*b1cdbd2cSJim Jagielski 	sal_Bool bIsDraw, sal_uInt16 nExportFlags )
413*b1cdbd2cSJim Jagielski :	SvXMLExport( xServiceFactory, MAP_CM, bIsDraw ? XML_DRAWING : XML_PRESENTATION, nExportFlags ),
414*b1cdbd2cSJim Jagielski 	mnDocMasterPageCount(0L),
415*b1cdbd2cSJim Jagielski 	mnDocDrawPageCount(0L),
416*b1cdbd2cSJim Jagielski 	mnShapeStyleInfoIndex(0L),
417*b1cdbd2cSJim Jagielski 	mnObjectCount(0L),
418*b1cdbd2cSJim Jagielski 	mpPageMasterInfoList(new ImpXMLEXPPageMasterList(1, 4, 4)),
419*b1cdbd2cSJim Jagielski 	mpPageMasterUsageList(new ImpXMLEXPPageMasterList(1, 4, 4)),
420*b1cdbd2cSJim Jagielski 	mpNotesPageMasterUsageList(new ImpXMLEXPPageMasterList(1, 4, 4)),
421*b1cdbd2cSJim Jagielski 	mpHandoutPageMaster(NULL),
422*b1cdbd2cSJim Jagielski 	mpAutoLayoutInfoList(new ImpXMLAutoLayoutInfoList(1, 4, 4)),
423*b1cdbd2cSJim Jagielski 	mpSdPropHdlFactory(0L),
424*b1cdbd2cSJim Jagielski 	mpPropertySetMapper(0L),
425*b1cdbd2cSJim Jagielski 	mpPresPagePropsMapper(0L),
426*b1cdbd2cSJim Jagielski 	mbIsDraw(bIsDraw),
427*b1cdbd2cSJim Jagielski 	mbFamilyGraphicUsed(sal_False),
428*b1cdbd2cSJim Jagielski 	mbFamilyPresentationUsed(sal_False),
429*b1cdbd2cSJim Jagielski 	msZIndex( GetXMLToken(XML_ZINDEX) ),
430*b1cdbd2cSJim Jagielski 	msEmptyPres( RTL_CONSTASCII_USTRINGPARAM("IsEmptyPresentationObject") ),
431*b1cdbd2cSJim Jagielski 	msModel( RTL_CONSTASCII_USTRINGPARAM("Model") ),
432*b1cdbd2cSJim Jagielski 	msStartShape( RTL_CONSTASCII_USTRINGPARAM("StartShape") ),
433*b1cdbd2cSJim Jagielski 	msEndShape( RTL_CONSTASCII_USTRINGPARAM("EndShape") ),
434*b1cdbd2cSJim Jagielski 	msPageLayoutNames( RTL_CONSTASCII_USTRINGPARAM("PageLayoutNames") )
435*b1cdbd2cSJim Jagielski {
436*b1cdbd2cSJim Jagielski 
437*b1cdbd2cSJim Jagielski 
438*b1cdbd2cSJim Jagielski }
439*b1cdbd2cSJim Jagielski 
440*b1cdbd2cSJim Jagielski // XExporter
setSourceDocument(const Reference<lang::XComponent> & xDoc)441*b1cdbd2cSJim Jagielski void SAL_CALL SdXMLExport::setSourceDocument( const Reference< lang::XComponent >& xDoc )
442*b1cdbd2cSJim Jagielski 	throw(lang::IllegalArgumentException, uno::RuntimeException)
443*b1cdbd2cSJim Jagielski {
444*b1cdbd2cSJim Jagielski 	SvXMLExport::setSourceDocument( xDoc );
445*b1cdbd2cSJim Jagielski 
446*b1cdbd2cSJim Jagielski 	const OUString aEmpty;
447*b1cdbd2cSJim Jagielski 
448*b1cdbd2cSJim Jagielski 	// prepare factory parts
449*b1cdbd2cSJim Jagielski 	mpSdPropHdlFactory = new XMLSdPropHdlFactory( GetModel(), *this );
450*b1cdbd2cSJim Jagielski 	if(mpSdPropHdlFactory)
451*b1cdbd2cSJim Jagielski 	{
452*b1cdbd2cSJim Jagielski 		// set lock to avoid deletion
453*b1cdbd2cSJim Jagielski 		mpSdPropHdlFactory->acquire();
454*b1cdbd2cSJim Jagielski 
455*b1cdbd2cSJim Jagielski 		// build one ref
456*b1cdbd2cSJim Jagielski 		const UniReference< XMLPropertyHandlerFactory > aFactoryRef = mpSdPropHdlFactory;
457*b1cdbd2cSJim Jagielski 
458*b1cdbd2cSJim Jagielski 		// construct PropertySetMapper
459*b1cdbd2cSJim Jagielski 		UniReference < XMLPropertySetMapper > xMapper =	new XMLShapePropertySetMapper( aFactoryRef);
460*b1cdbd2cSJim Jagielski 
461*b1cdbd2cSJim Jagielski 		mpPropertySetMapper = new XMLShapeExportPropertyMapper( xMapper, (XMLTextListAutoStylePool*)&GetTextParagraphExport()->GetListAutoStylePool(), *this );
462*b1cdbd2cSJim Jagielski 		// set lock to avoid deletion
463*b1cdbd2cSJim Jagielski 		mpPropertySetMapper->acquire();
464*b1cdbd2cSJim Jagielski 
465*b1cdbd2cSJim Jagielski 		// chain text attributes
466*b1cdbd2cSJim Jagielski 		mpPropertySetMapper->ChainExportMapper(XMLTextParagraphExport::CreateParaExtPropMapper(*this));
467*b1cdbd2cSJim Jagielski 
468*b1cdbd2cSJim Jagielski 		// construct PresPagePropsMapper
469*b1cdbd2cSJim Jagielski 		xMapper = new XMLPropertySetMapper((XMLPropertyMapEntry*)aXMLSDPresPageProps, aFactoryRef);
470*b1cdbd2cSJim Jagielski 
471*b1cdbd2cSJim Jagielski 		mpPresPagePropsMapper = new XMLPageExportPropertyMapper( xMapper, *this  );
472*b1cdbd2cSJim Jagielski 		if(mpPresPagePropsMapper)
473*b1cdbd2cSJim Jagielski 		{
474*b1cdbd2cSJim Jagielski 			// set lock to avoid deletion
475*b1cdbd2cSJim Jagielski 			mpPresPagePropsMapper->acquire();
476*b1cdbd2cSJim Jagielski 		}
477*b1cdbd2cSJim Jagielski 	}
478*b1cdbd2cSJim Jagielski 
479*b1cdbd2cSJim Jagielski 	// add family name
480*b1cdbd2cSJim Jagielski   	GetAutoStylePool()->AddFamily(
481*b1cdbd2cSJim Jagielski 		XML_STYLE_FAMILY_SD_GRAPHICS_ID,
482*b1cdbd2cSJim Jagielski 		OUString(RTL_CONSTASCII_USTRINGPARAM(XML_STYLE_FAMILY_SD_GRAPHICS_NAME)),
483*b1cdbd2cSJim Jagielski   		GetPropertySetMapper(),
484*b1cdbd2cSJim Jagielski   		OUString(RTL_CONSTASCII_USTRINGPARAM(XML_STYLE_FAMILY_SD_GRAPHICS_PREFIX)));
485*b1cdbd2cSJim Jagielski 	GetAutoStylePool()->AddFamily(
486*b1cdbd2cSJim Jagielski 		XML_STYLE_FAMILY_SD_PRESENTATION_ID,
487*b1cdbd2cSJim Jagielski 		OUString(RTL_CONSTASCII_USTRINGPARAM(XML_STYLE_FAMILY_SD_PRESENTATION_NAME)),
488*b1cdbd2cSJim Jagielski   		GetPropertySetMapper(),
489*b1cdbd2cSJim Jagielski   		OUString(RTL_CONSTASCII_USTRINGPARAM(XML_STYLE_FAMILY_SD_PRESENTATION_PREFIX)));
490*b1cdbd2cSJim Jagielski 	GetAutoStylePool()->AddFamily(
491*b1cdbd2cSJim Jagielski 		XML_STYLE_FAMILY_SD_DRAWINGPAGE_ID,
492*b1cdbd2cSJim Jagielski 		OUString(RTL_CONSTASCII_USTRINGPARAM(XML_STYLE_FAMILY_SD_DRAWINGPAGE_NAME)),
493*b1cdbd2cSJim Jagielski   		GetPresPagePropsMapper(),
494*b1cdbd2cSJim Jagielski   		OUString(RTL_CONSTASCII_USTRINGPARAM(XML_STYLE_FAMILY_SD_DRAWINGPAGE_PREFIX)));
495*b1cdbd2cSJim Jagielski 	// prepare access to styles
496*b1cdbd2cSJim Jagielski 	Reference< style::XStyleFamiliesSupplier > xFamSup( GetModel(), UNO_QUERY );
497*b1cdbd2cSJim Jagielski 	if(xFamSup.is())
498*b1cdbd2cSJim Jagielski 	{
499*b1cdbd2cSJim Jagielski 		mxDocStyleFamilies = xFamSup->getStyleFamilies();
500*b1cdbd2cSJim Jagielski 	}
501*b1cdbd2cSJim Jagielski 
502*b1cdbd2cSJim Jagielski 	// prepare access to master pages
503*b1cdbd2cSJim Jagielski 	Reference < drawing::XMasterPagesSupplier > xMasterPagesSupplier(GetModel(), UNO_QUERY);
504*b1cdbd2cSJim Jagielski 	if(xMasterPagesSupplier.is())
505*b1cdbd2cSJim Jagielski 	{
506*b1cdbd2cSJim Jagielski 		mxDocMasterPages = mxDocMasterPages.query( xMasterPagesSupplier->getMasterPages() );
507*b1cdbd2cSJim Jagielski 		if(mxDocMasterPages.is())
508*b1cdbd2cSJim Jagielski 		{
509*b1cdbd2cSJim Jagielski 			mnDocMasterPageCount = mxDocMasterPages->getCount();
510*b1cdbd2cSJim Jagielski 			maMasterPagesStyleNames.insert( maMasterPagesStyleNames.begin(), mnDocMasterPageCount, aEmpty );
511*b1cdbd2cSJim Jagielski 		}
512*b1cdbd2cSJim Jagielski 	}
513*b1cdbd2cSJim Jagielski 
514*b1cdbd2cSJim Jagielski 	// prepare access to draw pages
515*b1cdbd2cSJim Jagielski 	Reference <XDrawPagesSupplier> xDrawPagesSupplier(GetModel(), UNO_QUERY);
516*b1cdbd2cSJim Jagielski 	if(xDrawPagesSupplier.is())
517*b1cdbd2cSJim Jagielski 	{
518*b1cdbd2cSJim Jagielski 		mxDocDrawPages = mxDocDrawPages.query( xDrawPagesSupplier->getDrawPages() );
519*b1cdbd2cSJim Jagielski 		if(mxDocDrawPages.is())
520*b1cdbd2cSJim Jagielski 		{
521*b1cdbd2cSJim Jagielski 			mnDocDrawPageCount = mxDocDrawPages->getCount();
522*b1cdbd2cSJim Jagielski 			maDrawPagesStyleNames.insert( maDrawPagesStyleNames.begin(), mnDocDrawPageCount, aEmpty );
523*b1cdbd2cSJim Jagielski 			maDrawNotesPagesStyleNames.insert( maDrawNotesPagesStyleNames.begin(), mnDocDrawPageCount, aEmpty );
524*b1cdbd2cSJim Jagielski 			if( !mbIsDraw )
525*b1cdbd2cSJim Jagielski 				maDrawPagesAutoLayoutNames.realloc( mnDocDrawPageCount + 1 );
526*b1cdbd2cSJim Jagielski 
527*b1cdbd2cSJim Jagielski 			HeaderFooterPageSettingsImpl aEmptySettings;
528*b1cdbd2cSJim Jagielski 			maDrawPagesHeaderFooterSettings.insert( maDrawPagesHeaderFooterSettings.begin(), mnDocDrawPageCount, aEmptySettings );
529*b1cdbd2cSJim Jagielski 			maDrawNotesPagesHeaderFooterSettings.insert( maDrawNotesPagesHeaderFooterSettings.begin(), mnDocDrawPageCount, aEmptySettings );
530*b1cdbd2cSJim Jagielski 		}
531*b1cdbd2cSJim Jagielski 	}
532*b1cdbd2cSJim Jagielski 
533*b1cdbd2cSJim Jagielski 	// #82003# count all draw objects for use with progress bar.
534*b1cdbd2cSJim Jagielski 	// #88245# init mnObjectCount once, use counter itself as flag. It
535*b1cdbd2cSJim Jagielski 	// is initialized to 0.
536*b1cdbd2cSJim Jagielski 	if(!mnObjectCount)
537*b1cdbd2cSJim Jagielski 	{
538*b1cdbd2cSJim Jagielski 		if( IsImpress() )
539*b1cdbd2cSJim Jagielski 		{
540*b1cdbd2cSJim Jagielski  			// #91587# add handout master count
541*b1cdbd2cSJim Jagielski 			Reference<presentation::XHandoutMasterSupplier> xHandoutSupp(GetModel(), UNO_QUERY);
542*b1cdbd2cSJim Jagielski 			if(xHandoutSupp.is())
543*b1cdbd2cSJim Jagielski 			{
544*b1cdbd2cSJim Jagielski 				Reference<XDrawPage> xHandoutPage(xHandoutSupp->getHandoutMasterPage());
545*b1cdbd2cSJim Jagielski 				if(xHandoutPage.is())
546*b1cdbd2cSJim Jagielski 				{
547*b1cdbd2cSJim Jagielski 					Reference<drawing::XShapes> xShapes(xHandoutPage, UNO_QUERY);
548*b1cdbd2cSJim Jagielski 					if(xShapes.is() && xShapes->getCount())
549*b1cdbd2cSJim Jagielski 					{
550*b1cdbd2cSJim Jagielski 						mnObjectCount += ImpRecursiveObjectCount(xShapes);
551*b1cdbd2cSJim Jagielski 					}
552*b1cdbd2cSJim Jagielski 				}
553*b1cdbd2cSJim Jagielski 			}
554*b1cdbd2cSJim Jagielski 		}
555*b1cdbd2cSJim Jagielski 
556*b1cdbd2cSJim Jagielski 		if(mxDocMasterPages.is())
557*b1cdbd2cSJim Jagielski 		{
558*b1cdbd2cSJim Jagielski 			for(sal_Int32 a(0); a < mnDocMasterPageCount; a++)
559*b1cdbd2cSJim Jagielski 			{
560*b1cdbd2cSJim Jagielski 				Any aAny(mxDocMasterPages->getByIndex(a));
561*b1cdbd2cSJim Jagielski 				Reference< drawing::XShapes > xMasterPage;
562*b1cdbd2cSJim Jagielski 
563*b1cdbd2cSJim Jagielski 				if((aAny >>= xMasterPage) && xMasterPage.is())
564*b1cdbd2cSJim Jagielski 				{
565*b1cdbd2cSJim Jagielski 					mnObjectCount += ImpRecursiveObjectCount(xMasterPage);
566*b1cdbd2cSJim Jagielski 				}
567*b1cdbd2cSJim Jagielski 
568*b1cdbd2cSJim Jagielski 				if( IsImpress() )
569*b1cdbd2cSJim Jagielski 				{
570*b1cdbd2cSJim Jagielski 					// #91587# take notes pages from master pages into account
571*b1cdbd2cSJim Jagielski 					Reference<presentation::XPresentationPage> xPresPage;
572*b1cdbd2cSJim Jagielski 					if((aAny >>= xPresPage) && xPresPage.is())
573*b1cdbd2cSJim Jagielski 					{
574*b1cdbd2cSJim Jagielski 						Reference<XDrawPage> xNotesPage(xPresPage->getNotesPage());
575*b1cdbd2cSJim Jagielski 						if(xNotesPage.is())
576*b1cdbd2cSJim Jagielski 						{
577*b1cdbd2cSJim Jagielski 							Reference<drawing::XShapes> xShapes(xNotesPage, UNO_QUERY);
578*b1cdbd2cSJim Jagielski 							if(xShapes.is() && xShapes->getCount())
579*b1cdbd2cSJim Jagielski 							{
580*b1cdbd2cSJim Jagielski 								mnObjectCount += ImpRecursiveObjectCount(xShapes);
581*b1cdbd2cSJim Jagielski 							}
582*b1cdbd2cSJim Jagielski 						}
583*b1cdbd2cSJim Jagielski 					}
584*b1cdbd2cSJim Jagielski 				}
585*b1cdbd2cSJim Jagielski 			}
586*b1cdbd2cSJim Jagielski 		}
587*b1cdbd2cSJim Jagielski 
588*b1cdbd2cSJim Jagielski 		if(mxDocDrawPages.is())
589*b1cdbd2cSJim Jagielski 		{
590*b1cdbd2cSJim Jagielski 			for(sal_Int32 a(0); a < mnDocDrawPageCount; a++)
591*b1cdbd2cSJim Jagielski 			{
592*b1cdbd2cSJim Jagielski 				Any aAny(mxDocDrawPages->getByIndex(a));
593*b1cdbd2cSJim Jagielski 				Reference< drawing::XShapes > xPage;
594*b1cdbd2cSJim Jagielski 
595*b1cdbd2cSJim Jagielski 				if((aAny >>= xPage) && xPage.is())
596*b1cdbd2cSJim Jagielski 				{
597*b1cdbd2cSJim Jagielski 					mnObjectCount += ImpRecursiveObjectCount(xPage);
598*b1cdbd2cSJim Jagielski 				}
599*b1cdbd2cSJim Jagielski 
600*b1cdbd2cSJim Jagielski 				if( IsImpress() )
601*b1cdbd2cSJim Jagielski 				{
602*b1cdbd2cSJim Jagielski 					// #91587# take notes pages from draw pages into account
603*b1cdbd2cSJim Jagielski 					Reference<presentation::XPresentationPage> xPresPage;
604*b1cdbd2cSJim Jagielski 					if((aAny >>= xPresPage) && xPresPage.is())
605*b1cdbd2cSJim Jagielski 					{
606*b1cdbd2cSJim Jagielski 						Reference<XDrawPage> xNotesPage(xPresPage->getNotesPage());
607*b1cdbd2cSJim Jagielski 						if(xNotesPage.is())
608*b1cdbd2cSJim Jagielski 						{
609*b1cdbd2cSJim Jagielski 							Reference<drawing::XShapes> xShapes(xNotesPage, UNO_QUERY);
610*b1cdbd2cSJim Jagielski 							if(xShapes.is() && xShapes->getCount())
611*b1cdbd2cSJim Jagielski 							{
612*b1cdbd2cSJim Jagielski 								mnObjectCount += ImpRecursiveObjectCount(xShapes);
613*b1cdbd2cSJim Jagielski 							}
614*b1cdbd2cSJim Jagielski 						}
615*b1cdbd2cSJim Jagielski 					}
616*b1cdbd2cSJim Jagielski 				}
617*b1cdbd2cSJim Jagielski 			}
618*b1cdbd2cSJim Jagielski 		}
619*b1cdbd2cSJim Jagielski 
620*b1cdbd2cSJim Jagielski 		// #82003# init progress bar
621*b1cdbd2cSJim Jagielski 		GetProgressBarHelper()->SetReference(mnObjectCount);
622*b1cdbd2cSJim Jagielski 	}
623*b1cdbd2cSJim Jagielski 
624*b1cdbd2cSJim Jagielski 	// add namespaces
625*b1cdbd2cSJim Jagielski 	_GetNamespaceMap().Add(
626*b1cdbd2cSJim Jagielski 		GetXMLToken(XML_NP_PRESENTATION),
627*b1cdbd2cSJim Jagielski         GetXMLToken(XML_N_PRESENTATION),
628*b1cdbd2cSJim Jagielski 		XML_NAMESPACE_PRESENTATION);
629*b1cdbd2cSJim Jagielski 
630*b1cdbd2cSJim Jagielski 	_GetNamespaceMap().Add(
631*b1cdbd2cSJim Jagielski 		GetXMLToken(XML_NP_SMIL),
632*b1cdbd2cSJim Jagielski         GetXMLToken(XML_N_SMIL_COMPAT),
633*b1cdbd2cSJim Jagielski 		XML_NAMESPACE_SMIL);
634*b1cdbd2cSJim Jagielski 
635*b1cdbd2cSJim Jagielski 	_GetNamespaceMap().Add(
636*b1cdbd2cSJim Jagielski 		GetXMLToken(XML_NP_ANIMATION),
637*b1cdbd2cSJim Jagielski         GetXMLToken(XML_N_ANIMATION),
638*b1cdbd2cSJim Jagielski 		XML_NAMESPACE_ANIMATION);
639*b1cdbd2cSJim Jagielski 
640*b1cdbd2cSJim Jagielski     if( getDefaultVersion() > SvtSaveOptions::ODFVER_012 )
641*b1cdbd2cSJim Jagielski     {
642*b1cdbd2cSJim Jagielski 	    _GetNamespaceMap().Add(
643*b1cdbd2cSJim Jagielski 		    GetXMLToken(XML_NP_OFFICE_EXT),
644*b1cdbd2cSJim Jagielski             GetXMLToken(XML_N_OFFICE_EXT),
645*b1cdbd2cSJim Jagielski 		    XML_NAMESPACE_OFFICE_EXT);
646*b1cdbd2cSJim Jagielski 
647*b1cdbd2cSJim Jagielski 	    _GetNamespaceMap().Add(
648*b1cdbd2cSJim Jagielski 		    GetXMLToken(XML_NP_DRAW_EXT),
649*b1cdbd2cSJim Jagielski             GetXMLToken(XML_N_DRAW_EXT),
650*b1cdbd2cSJim Jagielski 		    XML_NAMESPACE_DRAW_EXT);
651*b1cdbd2cSJim Jagielski 	}
652*b1cdbd2cSJim Jagielski 
653*b1cdbd2cSJim Jagielski 	GetShapeExport()->enableLayerExport();
654*b1cdbd2cSJim Jagielski 
655*b1cdbd2cSJim Jagielski 	// #88546# enable progress bar increments
656*b1cdbd2cSJim Jagielski 	GetShapeExport()->enableHandleProgressBar();
657*b1cdbd2cSJim Jagielski }
658*b1cdbd2cSJim Jagielski 
659*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
660*b1cdbd2cSJim Jagielski // #82003# helper function for recursive object count
ImpRecursiveObjectCount(Reference<drawing::XShapes> xShapes)661*b1cdbd2cSJim Jagielski sal_uInt32 SdXMLExport::ImpRecursiveObjectCount(Reference< drawing::XShapes > xShapes)
662*b1cdbd2cSJim Jagielski {
663*b1cdbd2cSJim Jagielski 	sal_uInt32 nRetval(0L);
664*b1cdbd2cSJim Jagielski 
665*b1cdbd2cSJim Jagielski 	if(xShapes.is())
666*b1cdbd2cSJim Jagielski 	{
667*b1cdbd2cSJim Jagielski 		sal_Int32 nCount = xShapes->getCount();
668*b1cdbd2cSJim Jagielski 
669*b1cdbd2cSJim Jagielski 		for(sal_Int32 a(0L); a < nCount; a++)
670*b1cdbd2cSJim Jagielski 		{
671*b1cdbd2cSJim Jagielski 			Any aAny(xShapes->getByIndex(a));
672*b1cdbd2cSJim Jagielski 			Reference< drawing::XShapes > xGroup;
673*b1cdbd2cSJim Jagielski 
674*b1cdbd2cSJim Jagielski 			if((aAny >>= xGroup) && xGroup.is())
675*b1cdbd2cSJim Jagielski 			{
676*b1cdbd2cSJim Jagielski 				// #93180# count group objects, too.
677*b1cdbd2cSJim Jagielski 				nRetval += 1 + ImpRecursiveObjectCount(xGroup);
678*b1cdbd2cSJim Jagielski 			}
679*b1cdbd2cSJim Jagielski 			else
680*b1cdbd2cSJim Jagielski 			{
681*b1cdbd2cSJim Jagielski 				nRetval++;
682*b1cdbd2cSJim Jagielski 			}
683*b1cdbd2cSJim Jagielski 		}
684*b1cdbd2cSJim Jagielski 	}
685*b1cdbd2cSJim Jagielski 
686*b1cdbd2cSJim Jagielski 	return nRetval;
687*b1cdbd2cSJim Jagielski }
688*b1cdbd2cSJim Jagielski 
689*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
690*b1cdbd2cSJim Jagielski 
~SdXMLExport()691*b1cdbd2cSJim Jagielski __EXPORT SdXMLExport::~SdXMLExport()
692*b1cdbd2cSJim Jagielski {
693*b1cdbd2cSJim Jagielski 	// cleanup factory, decrease refcount. Should lead to destruction.
694*b1cdbd2cSJim Jagielski 	if(mpSdPropHdlFactory)
695*b1cdbd2cSJim Jagielski 	{
696*b1cdbd2cSJim Jagielski 		mpSdPropHdlFactory->release();
697*b1cdbd2cSJim Jagielski 		mpSdPropHdlFactory = 0L;
698*b1cdbd2cSJim Jagielski 	}
699*b1cdbd2cSJim Jagielski 
700*b1cdbd2cSJim Jagielski 	// cleanup mapper, decrease refcount. Should lead to destruction.
701*b1cdbd2cSJim Jagielski 	if(mpPropertySetMapper)
702*b1cdbd2cSJim Jagielski 	{
703*b1cdbd2cSJim Jagielski 		mpPropertySetMapper->release();
704*b1cdbd2cSJim Jagielski 		mpPropertySetMapper = 0L;
705*b1cdbd2cSJim Jagielski 	}
706*b1cdbd2cSJim Jagielski 
707*b1cdbd2cSJim Jagielski 	// cleanup presPage mapper, decrease refcount. Should lead to destruction.
708*b1cdbd2cSJim Jagielski 	if(mpPresPagePropsMapper)
709*b1cdbd2cSJim Jagielski 	{
710*b1cdbd2cSJim Jagielski 		mpPresPagePropsMapper->release();
711*b1cdbd2cSJim Jagielski 		mpPresPagePropsMapper = 0L;
712*b1cdbd2cSJim Jagielski 	}
713*b1cdbd2cSJim Jagielski 
714*b1cdbd2cSJim Jagielski 	// clear evtl. temporary page master infos
715*b1cdbd2cSJim Jagielski 	if(mpPageMasterInfoList)
716*b1cdbd2cSJim Jagielski 	{
717*b1cdbd2cSJim Jagielski 		while(mpPageMasterInfoList->Count())
718*b1cdbd2cSJim Jagielski 			delete mpPageMasterInfoList->Remove(mpPageMasterInfoList->Count() - 1L);
719*b1cdbd2cSJim Jagielski 		delete mpPageMasterInfoList;
720*b1cdbd2cSJim Jagielski 		mpPageMasterInfoList = 0L;
721*b1cdbd2cSJim Jagielski 	}
722*b1cdbd2cSJim Jagielski 	if(mpPageMasterUsageList)
723*b1cdbd2cSJim Jagielski 	{
724*b1cdbd2cSJim Jagielski 		delete mpPageMasterUsageList;
725*b1cdbd2cSJim Jagielski 		mpPageMasterUsageList = 0L;
726*b1cdbd2cSJim Jagielski 	}
727*b1cdbd2cSJim Jagielski 	if(mpNotesPageMasterUsageList)
728*b1cdbd2cSJim Jagielski 	{
729*b1cdbd2cSJim Jagielski 		delete mpNotesPageMasterUsageList;
730*b1cdbd2cSJim Jagielski 		mpNotesPageMasterUsageList = 0L;
731*b1cdbd2cSJim Jagielski 	}
732*b1cdbd2cSJim Jagielski 
733*b1cdbd2cSJim Jagielski 	// clear auto-layout infos
734*b1cdbd2cSJim Jagielski 	if(mpAutoLayoutInfoList)
735*b1cdbd2cSJim Jagielski 	{
736*b1cdbd2cSJim Jagielski 		while(mpAutoLayoutInfoList->Count())
737*b1cdbd2cSJim Jagielski 			delete mpAutoLayoutInfoList->Remove(mpAutoLayoutInfoList->Count() - 1L);
738*b1cdbd2cSJim Jagielski 		delete mpAutoLayoutInfoList;
739*b1cdbd2cSJim Jagielski 		mpAutoLayoutInfoList = 0L;
740*b1cdbd2cSJim Jagielski 	}
741*b1cdbd2cSJim Jagielski 
742*b1cdbd2cSJim Jagielski // #82003# status indicator stop is called exclusively
743*b1cdbd2cSJim Jagielski // from SdXMLFilter::Export() now.
744*b1cdbd2cSJim Jagielski //
745*b1cdbd2cSJim Jagielski // stop progress view
746*b1cdbd2cSJim Jagielski //	if(GetStatusIndicator().is())
747*b1cdbd2cSJim Jagielski //	{
748*b1cdbd2cSJim Jagielski //		GetStatusIndicator()->end();
749*b1cdbd2cSJim Jagielski //		GetStatusIndicator()->reset();
750*b1cdbd2cSJim Jagielski //	}
751*b1cdbd2cSJim Jagielski }
752*b1cdbd2cSJim Jagielski 
753*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
754*b1cdbd2cSJim Jagielski // to get default values in XPropertySet use this wrapper class
755*b1cdbd2cSJim Jagielski 
756*b1cdbd2cSJim Jagielski class ImpDefaultMapper : public ::cppu::WeakAggImplHelper1< beans::XPropertySet >
757*b1cdbd2cSJim Jagielski {
758*b1cdbd2cSJim Jagielski 	Reference< beans::XPropertyState >		mxState;
759*b1cdbd2cSJim Jagielski 	Reference< beans::XPropertySet >		mxSet;
760*b1cdbd2cSJim Jagielski 
761*b1cdbd2cSJim Jagielski public:
762*b1cdbd2cSJim Jagielski 	ImpDefaultMapper( Reference< beans::XPropertyState >& rxState );
763*b1cdbd2cSJim Jagielski 
764*b1cdbd2cSJim Jagielski 	// Methods
765*b1cdbd2cSJim Jagielski 	virtual Reference< beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() throw(uno::RuntimeException);
766*b1cdbd2cSJim Jagielski 	virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName, const Any& aValue ) throw(beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException);
767*b1cdbd2cSJim Jagielski 	virtual Any SAL_CALL getPropertyValue( const OUString& PropertyName ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException);
768*b1cdbd2cSJim Jagielski 
769*b1cdbd2cSJim Jagielski 	// empty implementations
770*b1cdbd2cSJim Jagielski 	virtual void SAL_CALL addPropertyChangeListener( const OUString& aPropertyName, const Reference< beans::XPropertyChangeListener >& xListener ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException);
771*b1cdbd2cSJim Jagielski 	virtual void SAL_CALL removePropertyChangeListener( const OUString& aPropertyName, const Reference< beans::XPropertyChangeListener >& aListener ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException);
772*b1cdbd2cSJim Jagielski 	virtual void SAL_CALL addVetoableChangeListener( const OUString& PropertyName, const Reference< beans::XVetoableChangeListener >& aListener ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException);
773*b1cdbd2cSJim Jagielski 	virtual void SAL_CALL removeVetoableChangeListener( const OUString& PropertyName, const Reference< beans::XVetoableChangeListener >& aListener ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException);
774*b1cdbd2cSJim Jagielski };
775*b1cdbd2cSJim Jagielski 
ImpDefaultMapper(Reference<beans::XPropertyState> & rxState)776*b1cdbd2cSJim Jagielski ImpDefaultMapper::ImpDefaultMapper( Reference< beans::XPropertyState >& rxState )
777*b1cdbd2cSJim Jagielski :	mxState( rxState ),
778*b1cdbd2cSJim Jagielski 	mxSet( rxState, UNO_QUERY )
779*b1cdbd2cSJim Jagielski {
780*b1cdbd2cSJim Jagielski }
781*b1cdbd2cSJim Jagielski 
getPropertySetInfo()782*b1cdbd2cSJim Jagielski Reference< beans::XPropertySetInfo > SAL_CALL ImpDefaultMapper::getPropertySetInfo() throw(uno::RuntimeException)
783*b1cdbd2cSJim Jagielski {
784*b1cdbd2cSJim Jagielski 	return mxSet->getPropertySetInfo();
785*b1cdbd2cSJim Jagielski }
786*b1cdbd2cSJim Jagielski 
setPropertyValue(const OUString & aPropertyName,const Any &)787*b1cdbd2cSJim Jagielski void SAL_CALL ImpDefaultMapper::setPropertyValue( const OUString& aPropertyName, const Any& /*aValue*/ ) throw(beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException)
788*b1cdbd2cSJim Jagielski {
789*b1cdbd2cSJim Jagielski 	mxState->setPropertyToDefault( aPropertyName /*, aValue */ );
790*b1cdbd2cSJim Jagielski }
791*b1cdbd2cSJim Jagielski 
getPropertyValue(const OUString & PropertyName)792*b1cdbd2cSJim Jagielski Any SAL_CALL ImpDefaultMapper::getPropertyValue( const OUString& PropertyName ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
793*b1cdbd2cSJim Jagielski {
794*b1cdbd2cSJim Jagielski 	return mxState->getPropertyDefault(  PropertyName  );
795*b1cdbd2cSJim Jagielski }
796*b1cdbd2cSJim Jagielski 
797*b1cdbd2cSJim Jagielski // empty implementations
addPropertyChangeListener(const OUString &,const Reference<beans::XPropertyChangeListener> &)798*b1cdbd2cSJim Jagielski void SAL_CALL ImpDefaultMapper::addPropertyChangeListener( const OUString&, const Reference< beans::XPropertyChangeListener >& ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) {}
removePropertyChangeListener(const OUString &,const Reference<beans::XPropertyChangeListener> &)799*b1cdbd2cSJim Jagielski void SAL_CALL ImpDefaultMapper::removePropertyChangeListener( const OUString&, const Reference< beans::XPropertyChangeListener >& ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) {}
addVetoableChangeListener(const OUString &,const Reference<beans::XVetoableChangeListener> &)800*b1cdbd2cSJim Jagielski void SAL_CALL ImpDefaultMapper::addVetoableChangeListener( const OUString&, const Reference< beans::XVetoableChangeListener >& ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) {}
removeVetoableChangeListener(const OUString &,const Reference<beans::XVetoableChangeListener> &)801*b1cdbd2cSJim Jagielski void SAL_CALL ImpDefaultMapper::removeVetoableChangeListener( const OUString&, const Reference< beans::XVetoableChangeListener >& ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) {}
802*b1cdbd2cSJim Jagielski 
803*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
804*b1cdbd2cSJim Jagielski 
805*b1cdbd2cSJim Jagielski /* moved to shapeexport.cxx
806*b1cdbd2cSJim Jagielski void SdXMLExport::ImpWriteObjGraphicStyleInfos()
807*b1cdbd2cSJim Jagielski {
808*b1cdbd2cSJim Jagielski 	XMLStyleExport aStEx(*this, OUString(), GetAutoStylePool().get());
809*b1cdbd2cSJim Jagielski 	const UniReference< SvXMLExportPropertyMapper > aMapperRef( GetPropertySetMapper() );
810*b1cdbd2cSJim Jagielski 
811*b1cdbd2cSJim Jagielski 	// write graphic family default style
812*b1cdbd2cSJim Jagielski 	Reference< lang::XMultiServiceFactory > xFact( GetModel(), UNO_QUERY );
813*b1cdbd2cSJim Jagielski 	if( xFact.is() )
814*b1cdbd2cSJim Jagielski 	{
815*b1cdbd2cSJim Jagielski 		try
816*b1cdbd2cSJim Jagielski 		{
817*b1cdbd2cSJim Jagielski 			Reference< beans::XPropertySet > xDefaults( xFact->createInstance( OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.Defaults") ) ), UNO_QUERY );
818*b1cdbd2cSJim Jagielski 			if( xDefaults.is() )
819*b1cdbd2cSJim Jagielski 			{
820*b1cdbd2cSJim Jagielski 				aStEx.exportDefaultStyle( xDefaults, OUString(RTL_CONSTASCII_USTRINGPARAM(XML_STYLE_FAMILY_SD_GRAPHICS_NAME)), aMapperRef );
821*b1cdbd2cSJim Jagielski 
822*b1cdbd2cSJim Jagielski 				// write graphic family styles
823*b1cdbd2cSJim Jagielski 				aStEx.exportStyleFamily(XML_STYLE_FAMILY_SD_GRAPHICS_NAME, OUString(RTL_CONSTASCII_USTRINGPARAM(XML_STYLE_FAMILY_SD_GRAPHICS_NAME)), aMapperRef, sal_False, XML_STYLE_FAMILY_SD_GRAPHICS_ID);
824*b1cdbd2cSJim Jagielski 			}
825*b1cdbd2cSJim Jagielski 		}
826*b1cdbd2cSJim Jagielski 		catch( lang::ServiceNotRegisteredException& )
827*b1cdbd2cSJim Jagielski 		{
828*b1cdbd2cSJim Jagielski 		}
829*b1cdbd2cSJim Jagielski 	}
830*b1cdbd2cSJim Jagielski }
831*b1cdbd2cSJim Jagielski */
832*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
833*b1cdbd2cSJim Jagielski 
ImpPrepAutoLayoutInfos()834*b1cdbd2cSJim Jagielski void SdXMLExport::ImpPrepAutoLayoutInfos()
835*b1cdbd2cSJim Jagielski {
836*b1cdbd2cSJim Jagielski 	if(IsImpress())
837*b1cdbd2cSJim Jagielski 	{
838*b1cdbd2cSJim Jagielski 		OUString aStr;
839*b1cdbd2cSJim Jagielski 
840*b1cdbd2cSJim Jagielski 		Reference< presentation::XHandoutMasterSupplier > xHandoutSupp( GetModel(), UNO_QUERY );
841*b1cdbd2cSJim Jagielski 		if( xHandoutSupp.is() )
842*b1cdbd2cSJim Jagielski 		{
843*b1cdbd2cSJim Jagielski 			Reference< XDrawPage > xHandoutPage( xHandoutSupp->getHandoutMasterPage() );
844*b1cdbd2cSJim Jagielski 			if( xHandoutPage.is() )
845*b1cdbd2cSJim Jagielski 			{
846*b1cdbd2cSJim Jagielski 				if(ImpPrepAutoLayoutInfo(xHandoutPage, aStr))
847*b1cdbd2cSJim Jagielski 					maDrawPagesAutoLayoutNames[0] = aStr;
848*b1cdbd2cSJim Jagielski 			}
849*b1cdbd2cSJim Jagielski 		}
850*b1cdbd2cSJim Jagielski 
851*b1cdbd2cSJim Jagielski 		// prepare name creation
852*b1cdbd2cSJim Jagielski         for (sal_Int32 nCnt = 0; nCnt < mnDocDrawPageCount; nCnt++)
853*b1cdbd2cSJim Jagielski 		{
854*b1cdbd2cSJim Jagielski 			Any aAny(mxDocDrawPages->getByIndex(nCnt));
855*b1cdbd2cSJim Jagielski 			Reference<XDrawPage> xDrawPage;
856*b1cdbd2cSJim Jagielski 
857*b1cdbd2cSJim Jagielski 			if((aAny >>= xDrawPage) && xDrawPage.is())
858*b1cdbd2cSJim Jagielski 			{
859*b1cdbd2cSJim Jagielski 				if(ImpPrepAutoLayoutInfo(xDrawPage, aStr))
860*b1cdbd2cSJim Jagielski 					maDrawPagesAutoLayoutNames[nCnt+1] = aStr;
861*b1cdbd2cSJim Jagielski 			}
862*b1cdbd2cSJim Jagielski 		}
863*b1cdbd2cSJim Jagielski 	}
864*b1cdbd2cSJim Jagielski }
865*b1cdbd2cSJim Jagielski 
ImpPrepAutoLayoutInfo(const Reference<XDrawPage> & xPage,OUString & rName)866*b1cdbd2cSJim Jagielski sal_Bool SdXMLExport::ImpPrepAutoLayoutInfo(const Reference<XDrawPage>& xPage, OUString& rName)
867*b1cdbd2cSJim Jagielski {
868*b1cdbd2cSJim Jagielski 	rName = OUString();
869*b1cdbd2cSJim Jagielski 	sal_Bool bRetval(sal_False);
870*b1cdbd2cSJim Jagielski 
871*b1cdbd2cSJim Jagielski 	Reference <beans::XPropertySet> xPropSet(xPage, UNO_QUERY);
872*b1cdbd2cSJim Jagielski 	if(xPropSet.is())
873*b1cdbd2cSJim Jagielski 	{
874*b1cdbd2cSJim Jagielski 		sal_uInt16 nType = sal_uInt16();
875*b1cdbd2cSJim Jagielski 		Any aAny;
876*b1cdbd2cSJim Jagielski 
877*b1cdbd2cSJim Jagielski 		aAny = xPropSet->getPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("Layout")));
878*b1cdbd2cSJim Jagielski 		if(aAny >>= nType)
879*b1cdbd2cSJim Jagielski 		{
880*b1cdbd2cSJim Jagielski 			if(ImpXMLAutoLayoutInfo::IsCreateNecessary(nType))
881*b1cdbd2cSJim Jagielski 			{
882*b1cdbd2cSJim Jagielski 				ImpXMLEXPPageMasterInfo* pInfo = 0L;
883*b1cdbd2cSJim Jagielski 
884*b1cdbd2cSJim Jagielski 				// get master-page info
885*b1cdbd2cSJim Jagielski 				Reference < drawing::XMasterPageTarget > xMasterPageInt(xPage, UNO_QUERY);
886*b1cdbd2cSJim Jagielski 				if(xMasterPageInt.is())
887*b1cdbd2cSJim Jagielski 				{
888*b1cdbd2cSJim Jagielski 					Reference<XDrawPage> xUsedMasterPage(xMasterPageInt->getMasterPage());
889*b1cdbd2cSJim Jagielski 					if(xUsedMasterPage.is())
890*b1cdbd2cSJim Jagielski 					{
891*b1cdbd2cSJim Jagielski 						Reference < container::XNamed > xMasterNamed(xUsedMasterPage, UNO_QUERY);
892*b1cdbd2cSJim Jagielski 						if(xMasterNamed.is())
893*b1cdbd2cSJim Jagielski 						{
894*b1cdbd2cSJim Jagielski 							OUString sMasterPageName = xMasterNamed->getName();
895*b1cdbd2cSJim Jagielski 							pInfo = ImpGetPageMasterInfoByName(sMasterPageName);
896*b1cdbd2cSJim Jagielski 						}
897*b1cdbd2cSJim Jagielski 					}
898*b1cdbd2cSJim Jagielski 				}
899*b1cdbd2cSJim Jagielski 
900*b1cdbd2cSJim Jagielski 				// create entry and look for existance
901*b1cdbd2cSJim Jagielski 				ImpXMLAutoLayoutInfo* pNew = new ImpXMLAutoLayoutInfo(nType, pInfo);
902*b1cdbd2cSJim Jagielski 				sal_Bool bDidExist(sal_False);
903*b1cdbd2cSJim Jagielski 
904*b1cdbd2cSJim Jagielski 				for(sal_uInt32 nCnt = 0L; !bDidExist && nCnt < mpAutoLayoutInfoList->Count(); nCnt++)
905*b1cdbd2cSJim Jagielski 				{
906*b1cdbd2cSJim Jagielski 					if(*mpAutoLayoutInfoList->GetObject(nCnt) == *pNew)
907*b1cdbd2cSJim Jagielski 					{
908*b1cdbd2cSJim Jagielski 						delete pNew;
909*b1cdbd2cSJim Jagielski 						pNew = mpAutoLayoutInfoList->GetObject(nCnt);
910*b1cdbd2cSJim Jagielski 						bDidExist = sal_True;
911*b1cdbd2cSJim Jagielski 					}
912*b1cdbd2cSJim Jagielski 				}
913*b1cdbd2cSJim Jagielski 
914*b1cdbd2cSJim Jagielski 				if(!bDidExist)
915*b1cdbd2cSJim Jagielski 				{
916*b1cdbd2cSJim Jagielski 					mpAutoLayoutInfoList->Insert(pNew, LIST_APPEND);
917*b1cdbd2cSJim Jagielski 					OUString sNewName = OUString(RTL_CONSTASCII_USTRINGPARAM("AL"));
918*b1cdbd2cSJim Jagielski 					sNewName += OUString::valueOf(sal_Int32(mpAutoLayoutInfoList->Count() - 1));
919*b1cdbd2cSJim Jagielski 					sNewName += OUString(RTL_CONSTASCII_USTRINGPARAM("T"));
920*b1cdbd2cSJim Jagielski 					sNewName += OUString::valueOf(sal_Int32(nType));
921*b1cdbd2cSJim Jagielski 					pNew->SetLayoutName(sNewName);
922*b1cdbd2cSJim Jagielski 				}
923*b1cdbd2cSJim Jagielski 
924*b1cdbd2cSJim Jagielski 				rName = pNew->GetLayoutName();
925*b1cdbd2cSJim Jagielski 				bRetval = sal_True;
926*b1cdbd2cSJim Jagielski 			}
927*b1cdbd2cSJim Jagielski 		}
928*b1cdbd2cSJim Jagielski 	}
929*b1cdbd2cSJim Jagielski 
930*b1cdbd2cSJim Jagielski 	return bRetval;
931*b1cdbd2cSJim Jagielski }
932*b1cdbd2cSJim Jagielski 
933*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
934*b1cdbd2cSJim Jagielski 
ImpWriteAutoLayoutInfos()935*b1cdbd2cSJim Jagielski void SdXMLExport::ImpWriteAutoLayoutInfos()
936*b1cdbd2cSJim Jagielski {
937*b1cdbd2cSJim Jagielski 	if(mpAutoLayoutInfoList->Count())
938*b1cdbd2cSJim Jagielski 	{
939*b1cdbd2cSJim Jagielski 		for(sal_uInt32 nCnt = 0L; nCnt < mpAutoLayoutInfoList->Count(); nCnt++)
940*b1cdbd2cSJim Jagielski 		{
941*b1cdbd2cSJim Jagielski 			ImpXMLAutoLayoutInfo* pInfo = mpAutoLayoutInfoList->GetObject(nCnt);
942*b1cdbd2cSJim Jagielski 			if(pInfo)
943*b1cdbd2cSJim Jagielski 			{
944*b1cdbd2cSJim Jagielski 				// prepare presentation-page layout attributes, style-name
945*b1cdbd2cSJim Jagielski 				AddAttribute(XML_NAMESPACE_STYLE, XML_NAME, pInfo->GetLayoutName());
946*b1cdbd2cSJim Jagielski 
947*b1cdbd2cSJim Jagielski 				// write draw-style attributes
948*b1cdbd2cSJim Jagielski 				SvXMLElementExport aDSE(*this, XML_NAMESPACE_STYLE, XML_PRESENTATION_PAGE_LAYOUT, sal_True, sal_True);
949*b1cdbd2cSJim Jagielski 
950*b1cdbd2cSJim Jagielski 				// write presentation placeholders
951*b1cdbd2cSJim Jagielski 				switch(pInfo->GetLayoutType())
952*b1cdbd2cSJim Jagielski 				{
953*b1cdbd2cSJim Jagielski 					case 0 : // AUTOLAYOUT_TITLE
954*b1cdbd2cSJim Jagielski 					{
955*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderTitle, pInfo->GetTitleRectangle());
956*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderSubtitle, pInfo->GetPresRectangle());
957*b1cdbd2cSJim Jagielski 						break;
958*b1cdbd2cSJim Jagielski 					}
959*b1cdbd2cSJim Jagielski 					case 1 : // AUTOLAYOUT_ENUM
960*b1cdbd2cSJim Jagielski 					{
961*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderTitle, pInfo->GetTitleRectangle());
962*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderOutline, pInfo->GetPresRectangle());
963*b1cdbd2cSJim Jagielski 						break;
964*b1cdbd2cSJim Jagielski 					}
965*b1cdbd2cSJim Jagielski 					case 2 : // AUTOLAYOUT_CHART
966*b1cdbd2cSJim Jagielski 					{
967*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderTitle, pInfo->GetTitleRectangle());
968*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderChart, pInfo->GetPresRectangle());
969*b1cdbd2cSJim Jagielski 						break;
970*b1cdbd2cSJim Jagielski 					}
971*b1cdbd2cSJim Jagielski 					case 3 : // AUTOLAYOUT_2TEXT
972*b1cdbd2cSJim Jagielski 					{
973*b1cdbd2cSJim Jagielski 						Rectangle aLeft(pInfo->GetPresRectangle());
974*b1cdbd2cSJim Jagielski 						aLeft.setWidth(long(aLeft.GetWidth() * 0.488));
975*b1cdbd2cSJim Jagielski 						Rectangle aRight(aLeft);
976*b1cdbd2cSJim Jagielski 						aRight.Left() = long(aRight.Left() + aRight.GetWidth() * 1.05);
977*b1cdbd2cSJim Jagielski 
978*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderTitle, pInfo->GetTitleRectangle());
979*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderOutline, aLeft);
980*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderOutline, aRight);
981*b1cdbd2cSJim Jagielski 						break;
982*b1cdbd2cSJim Jagielski 					}
983*b1cdbd2cSJim Jagielski 					case 4 : // AUTOLAYOUT_TEXTCHART
984*b1cdbd2cSJim Jagielski 					{
985*b1cdbd2cSJim Jagielski 						Rectangle aLeft(pInfo->GetPresRectangle());
986*b1cdbd2cSJim Jagielski 						aLeft.setWidth(long(aLeft.GetWidth() * 0.488));
987*b1cdbd2cSJim Jagielski 						Rectangle aRight(aLeft);
988*b1cdbd2cSJim Jagielski 						aRight.Left() = long(aRight.Left() + aRight.GetWidth() * 1.05);
989*b1cdbd2cSJim Jagielski 
990*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderTitle, pInfo->GetTitleRectangle());
991*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderOutline, aLeft);
992*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderChart, aRight);
993*b1cdbd2cSJim Jagielski 						break;
994*b1cdbd2cSJim Jagielski 					}
995*b1cdbd2cSJim Jagielski 					case 6 : // AUTOLAYOUT_TEXTCLIP
996*b1cdbd2cSJim Jagielski 					{
997*b1cdbd2cSJim Jagielski 						Rectangle aLeft(pInfo->GetPresRectangle());
998*b1cdbd2cSJim Jagielski 						aLeft.setWidth(long(aLeft.GetWidth() * 0.488));
999*b1cdbd2cSJim Jagielski 						Rectangle aRight(aLeft);
1000*b1cdbd2cSJim Jagielski 						aRight.Left() = long(aRight.Left() + aRight.GetWidth() * 1.05);
1001*b1cdbd2cSJim Jagielski 
1002*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderTitle, pInfo->GetTitleRectangle());
1003*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderOutline, aLeft);
1004*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderGraphic, aRight);
1005*b1cdbd2cSJim Jagielski 						break;
1006*b1cdbd2cSJim Jagielski 					}
1007*b1cdbd2cSJim Jagielski 					case 7 : // AUTOLAYOUT_CHARTTEXT
1008*b1cdbd2cSJim Jagielski 					{
1009*b1cdbd2cSJim Jagielski 						Rectangle aLeft(pInfo->GetPresRectangle());
1010*b1cdbd2cSJim Jagielski 						aLeft.setWidth(long(aLeft.GetWidth() * 0.488));
1011*b1cdbd2cSJim Jagielski 						Rectangle aRight(aLeft);
1012*b1cdbd2cSJim Jagielski 						aRight.Left() = long(aRight.Left() + aRight.GetWidth() * 1.05);
1013*b1cdbd2cSJim Jagielski 
1014*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderTitle, pInfo->GetTitleRectangle());
1015*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderChart, aLeft);
1016*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderOutline, aRight);
1017*b1cdbd2cSJim Jagielski 						break;
1018*b1cdbd2cSJim Jagielski 					}
1019*b1cdbd2cSJim Jagielski 					case 8 : // AUTOLAYOUT_TAB
1020*b1cdbd2cSJim Jagielski 					{
1021*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderTitle, pInfo->GetTitleRectangle());
1022*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderTable, pInfo->GetPresRectangle());
1023*b1cdbd2cSJim Jagielski 						break;
1024*b1cdbd2cSJim Jagielski 					}
1025*b1cdbd2cSJim Jagielski 					case 9 : // AUTOLAYOUT_CLIPTEXT
1026*b1cdbd2cSJim Jagielski 					{
1027*b1cdbd2cSJim Jagielski 						Rectangle aLeft(pInfo->GetPresRectangle());
1028*b1cdbd2cSJim Jagielski 						aLeft.setWidth(long(aLeft.GetWidth() * 0.488));
1029*b1cdbd2cSJim Jagielski 						Rectangle aRight(aLeft);
1030*b1cdbd2cSJim Jagielski 						aRight.Left() = long(aRight.Left() + aRight.GetWidth() * 1.05);
1031*b1cdbd2cSJim Jagielski 
1032*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderTitle, pInfo->GetTitleRectangle());
1033*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderGraphic, aLeft);
1034*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderOutline, aRight);
1035*b1cdbd2cSJim Jagielski 						break;
1036*b1cdbd2cSJim Jagielski 					}
1037*b1cdbd2cSJim Jagielski 					case 10 : // AUTOLAYOUT_TEXTOBJ
1038*b1cdbd2cSJim Jagielski 					{
1039*b1cdbd2cSJim Jagielski 						Rectangle aLeft(pInfo->GetPresRectangle());
1040*b1cdbd2cSJim Jagielski 						aLeft.setWidth(long(aLeft.GetWidth() * 0.488));
1041*b1cdbd2cSJim Jagielski 						Rectangle aRight(aLeft);
1042*b1cdbd2cSJim Jagielski 						aRight.Left() = long(aRight.Left() + aRight.GetWidth() * 1.05);
1043*b1cdbd2cSJim Jagielski 
1044*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderTitle, pInfo->GetTitleRectangle());
1045*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderOutline, aLeft);
1046*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderObject, aRight);
1047*b1cdbd2cSJim Jagielski 						break;
1048*b1cdbd2cSJim Jagielski 					}
1049*b1cdbd2cSJim Jagielski 					case 11 : // AUTOLAYOUT_OBJ
1050*b1cdbd2cSJim Jagielski 					{
1051*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderTitle, pInfo->GetTitleRectangle());
1052*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderObject, pInfo->GetPresRectangle());
1053*b1cdbd2cSJim Jagielski 						break;
1054*b1cdbd2cSJim Jagielski 					}
1055*b1cdbd2cSJim Jagielski 					case 12 : // AUTOLAYOUT_TEXT2OBJ
1056*b1cdbd2cSJim Jagielski 					{
1057*b1cdbd2cSJim Jagielski 						Rectangle aLeft(pInfo->GetPresRectangle());
1058*b1cdbd2cSJim Jagielski 						aLeft.setWidth(long(aLeft.GetWidth() * 0.488));
1059*b1cdbd2cSJim Jagielski 						Rectangle aRightTop(aLeft);
1060*b1cdbd2cSJim Jagielski 						aRightTop.Left() = long(aRightTop.Left() + aRightTop.GetWidth() * 1.05);
1061*b1cdbd2cSJim Jagielski 						aRightTop.setHeight(long(aRightTop.GetHeight() * 0.477));
1062*b1cdbd2cSJim Jagielski 						Rectangle aRightBottom(aRightTop);
1063*b1cdbd2cSJim Jagielski 						aRightBottom.Top() = long(aRightBottom.Top() + aRightBottom.GetHeight() * 1.095);
1064*b1cdbd2cSJim Jagielski 
1065*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderTitle, pInfo->GetTitleRectangle());
1066*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderOutline, aLeft);
1067*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderObject, aRightTop);
1068*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderObject, aRightBottom);
1069*b1cdbd2cSJim Jagielski 						break;
1070*b1cdbd2cSJim Jagielski 					}
1071*b1cdbd2cSJim Jagielski 					case 13 : // AUTOLAYOUT_OBJTEXT
1072*b1cdbd2cSJim Jagielski 					{
1073*b1cdbd2cSJim Jagielski 						Rectangle aLeft(pInfo->GetPresRectangle());
1074*b1cdbd2cSJim Jagielski 						aLeft.setWidth(long(aLeft.GetWidth() * 0.488));
1075*b1cdbd2cSJim Jagielski 						Rectangle aRight(aLeft);
1076*b1cdbd2cSJim Jagielski 						aRight.Left() = long(aRight.Left() + aRight.GetWidth() * 1.05);
1077*b1cdbd2cSJim Jagielski 
1078*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderTitle, pInfo->GetTitleRectangle());
1079*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderObject, aLeft);
1080*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderOutline, aRight);
1081*b1cdbd2cSJim Jagielski 						break;
1082*b1cdbd2cSJim Jagielski 					}
1083*b1cdbd2cSJim Jagielski 					case 14 : // AUTOLAYOUT_OBJOVERTEXT
1084*b1cdbd2cSJim Jagielski 					{
1085*b1cdbd2cSJim Jagielski 						Rectangle aTop(pInfo->GetPresRectangle());
1086*b1cdbd2cSJim Jagielski 						aTop.setHeight(long(aTop.GetHeight() * 0.477));
1087*b1cdbd2cSJim Jagielski 						Rectangle aBottom(aTop);
1088*b1cdbd2cSJim Jagielski 						aBottom.Top() = long(aBottom.Top() + aBottom.GetHeight() * 1.095);
1089*b1cdbd2cSJim Jagielski 
1090*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderTitle, pInfo->GetTitleRectangle());
1091*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderObject, aTop);
1092*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderOutline, aBottom);
1093*b1cdbd2cSJim Jagielski 						break;
1094*b1cdbd2cSJim Jagielski 					}
1095*b1cdbd2cSJim Jagielski 					case 15 : // AUTOLAYOUT_2OBJTEXT
1096*b1cdbd2cSJim Jagielski 					{
1097*b1cdbd2cSJim Jagielski 						Rectangle aLeftTop(pInfo->GetPresRectangle());
1098*b1cdbd2cSJim Jagielski 						aLeftTop.setWidth(long(aLeftTop.GetWidth() * 0.488));
1099*b1cdbd2cSJim Jagielski 						Rectangle aRight(aLeftTop);
1100*b1cdbd2cSJim Jagielski 						aRight.Left() = long(aRight.Left() + aRight.GetWidth() * 1.05);
1101*b1cdbd2cSJim Jagielski 						aLeftTop.setHeight(long(aLeftTop.GetHeight() * 0.477));
1102*b1cdbd2cSJim Jagielski 						Rectangle aLeftBottom(aLeftTop);
1103*b1cdbd2cSJim Jagielski 						aLeftBottom.Top() = long(aLeftBottom.Top() + aLeftBottom.GetHeight() * 1.095);
1104*b1cdbd2cSJim Jagielski 
1105*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderTitle, pInfo->GetTitleRectangle());
1106*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderObject, aLeftTop);
1107*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderObject, aLeftBottom);
1108*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderOutline, aRight);
1109*b1cdbd2cSJim Jagielski 						break;
1110*b1cdbd2cSJim Jagielski 					}
1111*b1cdbd2cSJim Jagielski 					case 16 : // AUTOLAYOUT_2OBJOVERTEXT
1112*b1cdbd2cSJim Jagielski 					{
1113*b1cdbd2cSJim Jagielski 						Rectangle aTopLeft(pInfo->GetPresRectangle());
1114*b1cdbd2cSJim Jagielski 						aTopLeft.setHeight(long(aTopLeft.GetHeight() * 0.477));
1115*b1cdbd2cSJim Jagielski 						Rectangle aBottom(aTopLeft);
1116*b1cdbd2cSJim Jagielski 						aBottom.Top() = long(aBottom.Top() + aBottom.GetHeight() * 1.095);
1117*b1cdbd2cSJim Jagielski 						aTopLeft.setWidth(long(aTopLeft.GetWidth() * 0.488));
1118*b1cdbd2cSJim Jagielski 						Rectangle aTopRight(aTopLeft);
1119*b1cdbd2cSJim Jagielski 						aTopRight.Left() = long(aTopRight.Left() + aTopRight.GetWidth() * 1.05);
1120*b1cdbd2cSJim Jagielski 
1121*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderTitle, pInfo->GetTitleRectangle());
1122*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderObject, aTopLeft);
1123*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderObject, aTopRight);
1124*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderOutline, aBottom);
1125*b1cdbd2cSJim Jagielski 						break;
1126*b1cdbd2cSJim Jagielski 					}
1127*b1cdbd2cSJim Jagielski 					case 17 : // AUTOLAYOUT_TEXTOVEROBJ
1128*b1cdbd2cSJim Jagielski 					{
1129*b1cdbd2cSJim Jagielski 						Rectangle aTop(pInfo->GetPresRectangle());
1130*b1cdbd2cSJim Jagielski 						aTop.setHeight(long(aTop.GetHeight() * 0.477));
1131*b1cdbd2cSJim Jagielski 						Rectangle aBottom(aTop);
1132*b1cdbd2cSJim Jagielski 						aBottom.Top() = long(aBottom.Top() + aBottom.GetHeight() * 1.095);
1133*b1cdbd2cSJim Jagielski 
1134*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderTitle, pInfo->GetTitleRectangle());
1135*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderOutline, aTop);
1136*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderObject, aBottom);
1137*b1cdbd2cSJim Jagielski 						break;
1138*b1cdbd2cSJim Jagielski 					}
1139*b1cdbd2cSJim Jagielski 					case 18 : // AUTOLAYOUT_4OBJ
1140*b1cdbd2cSJim Jagielski 					{
1141*b1cdbd2cSJim Jagielski 						Rectangle aTopLeft(pInfo->GetPresRectangle());
1142*b1cdbd2cSJim Jagielski 						aTopLeft.setHeight(long(aTopLeft.GetHeight() * 0.477));
1143*b1cdbd2cSJim Jagielski 						aTopLeft.setWidth(long(aTopLeft.GetWidth() * 0.488));
1144*b1cdbd2cSJim Jagielski 						Rectangle aBottomLeft(aTopLeft);
1145*b1cdbd2cSJim Jagielski 						aBottomLeft.Top() = long(aBottomLeft.Top() + aBottomLeft.GetHeight() * 1.095);
1146*b1cdbd2cSJim Jagielski 						Rectangle aTopRight(aTopLeft);
1147*b1cdbd2cSJim Jagielski 						aTopRight.Left() = long(aTopRight.Left() + aTopRight.GetWidth() * 1.05);
1148*b1cdbd2cSJim Jagielski 						Rectangle aBottomRight(aTopRight);
1149*b1cdbd2cSJim Jagielski 						aBottomRight.Top() = long(aBottomRight.Top() + aBottomRight.GetHeight() * 1.095);
1150*b1cdbd2cSJim Jagielski 
1151*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderTitle, pInfo->GetTitleRectangle());
1152*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderObject, aTopLeft);
1153*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderObject, aTopRight);
1154*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderObject, aBottomLeft);
1155*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderObject, aBottomRight);
1156*b1cdbd2cSJim Jagielski 						break;
1157*b1cdbd2cSJim Jagielski 					}
1158*b1cdbd2cSJim Jagielski 					case 19 : // AUTOLAYOUT_ONLY_TITLE
1159*b1cdbd2cSJim Jagielski 					{
1160*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderTitle, pInfo->GetTitleRectangle());
1161*b1cdbd2cSJim Jagielski 						break;
1162*b1cdbd2cSJim Jagielski 					}
1163*b1cdbd2cSJim Jagielski 					case 21 : // AUTOLAYOUT_NOTES
1164*b1cdbd2cSJim Jagielski 					{
1165*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderPage, pInfo->GetTitleRectangle());
1166*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderNotes, pInfo->GetPresRectangle());
1167*b1cdbd2cSJim Jagielski 						break;
1168*b1cdbd2cSJim Jagielski 					}
1169*b1cdbd2cSJim Jagielski 					case 22 : // AUTOLAYOUT_HANDOUT1
1170*b1cdbd2cSJim Jagielski 					case 23 : // AUTOLAYOUT_HANDOUT2
1171*b1cdbd2cSJim Jagielski 					case 24 : // AUTOLAYOUT_HANDOUT3
1172*b1cdbd2cSJim Jagielski 					case 25 : // AUTOLAYOUT_HANDOUT4
1173*b1cdbd2cSJim Jagielski 					case 26 : // AUTOLAYOUT_HANDOUT6
1174*b1cdbd2cSJim Jagielski 					case 31 : // AUTOLAYOUT_HANDOUT9
1175*b1cdbd2cSJim Jagielski 					{
1176*b1cdbd2cSJim Jagielski 						sal_Int32 nColCnt, nRowCnt;
1177*b1cdbd2cSJim Jagielski 						sal_Int32 nGapX = pInfo->GetGapX();
1178*b1cdbd2cSJim Jagielski 						sal_Int32 nGapY = pInfo->GetGapY();
1179*b1cdbd2cSJim Jagielski 
1180*b1cdbd2cSJim Jagielski 						switch(pInfo->GetLayoutType())
1181*b1cdbd2cSJim Jagielski 						{
1182*b1cdbd2cSJim Jagielski 							case 22 : nColCnt = 1; nRowCnt = 1; break;
1183*b1cdbd2cSJim Jagielski 							case 23 : nColCnt = 1; nRowCnt = 2; break;
1184*b1cdbd2cSJim Jagielski 							case 24 : nColCnt = 1; nRowCnt = 3; break;
1185*b1cdbd2cSJim Jagielski 							case 25 : nColCnt = 2; nRowCnt = 2; break;
1186*b1cdbd2cSJim Jagielski 							case 26 : nColCnt = 3; nRowCnt = 2; break;
1187*b1cdbd2cSJim Jagielski 							case 31 : nColCnt = 3; nRowCnt = 3; break;
1188*b1cdbd2cSJim Jagielski 							default:  nColCnt = 0; nRowCnt = 0; break;  // FIXME - What is correct values?
1189*b1cdbd2cSJim Jagielski 						}
1190*b1cdbd2cSJim Jagielski 
1191*b1cdbd2cSJim Jagielski 						Size aPartSize(pInfo->GetTitleRectangle().GetSize());
1192*b1cdbd2cSJim Jagielski 						Point aPartPos(pInfo->GetTitleRectangle().TopLeft());
1193*b1cdbd2cSJim Jagielski 
1194*b1cdbd2cSJim Jagielski 						if(aPartSize.Width() > aPartSize.Height())
1195*b1cdbd2cSJim Jagielski 						{
1196*b1cdbd2cSJim Jagielski 							sal_Int32 nZwi(nColCnt);
1197*b1cdbd2cSJim Jagielski 							nColCnt = nRowCnt;
1198*b1cdbd2cSJim Jagielski 							nRowCnt = nZwi;
1199*b1cdbd2cSJim Jagielski 						}
1200*b1cdbd2cSJim Jagielski 
1201*b1cdbd2cSJim Jagielski 						aPartSize.Width() = (aPartSize.Width() - ((nColCnt - 1) * nGapX)) / nColCnt;
1202*b1cdbd2cSJim Jagielski 						aPartSize.Height() = (aPartSize.Height() - ((nRowCnt - 1) * nGapY)) / nRowCnt;
1203*b1cdbd2cSJim Jagielski 
1204*b1cdbd2cSJim Jagielski 						Point aTmpPos(aPartPos);
1205*b1cdbd2cSJim Jagielski 
1206*b1cdbd2cSJim Jagielski                         for (sal_Int32 a = 0; a < nRowCnt; a++)
1207*b1cdbd2cSJim Jagielski 						{
1208*b1cdbd2cSJim Jagielski 							aTmpPos.X() = aPartPos.X();
1209*b1cdbd2cSJim Jagielski 
1210*b1cdbd2cSJim Jagielski                             for (sal_Int32 b = 0; b < nColCnt; b++)
1211*b1cdbd2cSJim Jagielski 							{
1212*b1cdbd2cSJim Jagielski 								Rectangle aTmpRect(aTmpPos, aPartSize);
1213*b1cdbd2cSJim Jagielski 
1214*b1cdbd2cSJim Jagielski 								ImpWriteAutoLayoutPlaceholder(XmlPlaceholderHandout, aTmpRect);
1215*b1cdbd2cSJim Jagielski 								aTmpPos.X() += aPartSize.Width() + nGapX;
1216*b1cdbd2cSJim Jagielski 							}
1217*b1cdbd2cSJim Jagielski 
1218*b1cdbd2cSJim Jagielski 							aTmpPos.Y() += aPartSize.Height() + nGapY;
1219*b1cdbd2cSJim Jagielski 						}
1220*b1cdbd2cSJim Jagielski 						break;
1221*b1cdbd2cSJim Jagielski 					}
1222*b1cdbd2cSJim Jagielski 					case 27 : // AUTOLAYOUT_VERTICAL_TITLE_TEXT_CHART
1223*b1cdbd2cSJim Jagielski 					{
1224*b1cdbd2cSJim Jagielski 						Rectangle aTop(pInfo->GetPresRectangle());
1225*b1cdbd2cSJim Jagielski 						aTop.setHeight(long(aTop.GetHeight() * 0.488));
1226*b1cdbd2cSJim Jagielski 						Rectangle aBottom(aTop);
1227*b1cdbd2cSJim Jagielski 						aBottom.Top() = long(aBottom.Top() + aBottom.GetHeight() * 1.05);
1228*b1cdbd2cSJim Jagielski 
1229*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderVerticalTitle, pInfo->GetTitleRectangle());
1230*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderVerticalOutline, aTop);
1231*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderChart, aBottom);
1232*b1cdbd2cSJim Jagielski 						break;
1233*b1cdbd2cSJim Jagielski 					}
1234*b1cdbd2cSJim Jagielski 					case 28 : // AUTOLAYOUT_VERTICAL_TITLE_VERTICAL_OUTLINE
1235*b1cdbd2cSJim Jagielski 					{
1236*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderVerticalTitle, pInfo->GetTitleRectangle());
1237*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderVerticalOutline, pInfo->GetPresRectangle());
1238*b1cdbd2cSJim Jagielski 						break;
1239*b1cdbd2cSJim Jagielski 					}
1240*b1cdbd2cSJim Jagielski 					case 29 : // AUTOLAYOUT_TITLE_VERTICAL_OUTLINE
1241*b1cdbd2cSJim Jagielski 					{
1242*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderTitle, pInfo->GetTitleRectangle());
1243*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderVerticalOutline, pInfo->GetPresRectangle());
1244*b1cdbd2cSJim Jagielski 						break;
1245*b1cdbd2cSJim Jagielski 					}
1246*b1cdbd2cSJim Jagielski 					case 30 : // AUTOLAYOUT_TITLE_VERTICAL_OUTLINE_CLIPART
1247*b1cdbd2cSJim Jagielski 					{
1248*b1cdbd2cSJim Jagielski 						Rectangle aLeft(pInfo->GetPresRectangle());
1249*b1cdbd2cSJim Jagielski 						aLeft.setWidth(long(aLeft.GetWidth() * 0.488));
1250*b1cdbd2cSJim Jagielski 						Rectangle aRight(aLeft);
1251*b1cdbd2cSJim Jagielski 						aRight.Left() = long(aRight.Left() + aRight.GetWidth() * 1.05);
1252*b1cdbd2cSJim Jagielski 
1253*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderTitle, pInfo->GetTitleRectangle());
1254*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderGraphic, aLeft);
1255*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderVerticalOutline, aRight);
1256*b1cdbd2cSJim Jagielski 						break;
1257*b1cdbd2cSJim Jagielski 					}
1258*b1cdbd2cSJim Jagielski 					case 32 : // AUTOLAYOUT_TITLE
1259*b1cdbd2cSJim Jagielski 					{
1260*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderSubtitle, pInfo->GetPresRectangle());
1261*b1cdbd2cSJim Jagielski 						break;
1262*b1cdbd2cSJim Jagielski 					}
1263*b1cdbd2cSJim Jagielski 
1264*b1cdbd2cSJim Jagielski                     case 33 : // AUTOLAYOUT_4CLIPART
1265*b1cdbd2cSJim Jagielski 					{
1266*b1cdbd2cSJim Jagielski 						Rectangle aTopLeft(pInfo->GetPresRectangle());
1267*b1cdbd2cSJim Jagielski 						aTopLeft.setHeight(long(aTopLeft.GetHeight() * 0.477));
1268*b1cdbd2cSJim Jagielski 						aTopLeft.setWidth(long(aTopLeft.GetWidth() * 0.488));
1269*b1cdbd2cSJim Jagielski 						Rectangle aBottomLeft(aTopLeft);
1270*b1cdbd2cSJim Jagielski 						aBottomLeft.Top() = long(aBottomLeft.Top() + aBottomLeft.GetHeight() * 1.095);
1271*b1cdbd2cSJim Jagielski 						Rectangle aTopRight(aTopLeft);
1272*b1cdbd2cSJim Jagielski 						aTopRight.Left() = long(aTopRight.Left() + aTopRight.GetWidth() * 1.05);
1273*b1cdbd2cSJim Jagielski 						Rectangle aBottomRight(aTopRight);
1274*b1cdbd2cSJim Jagielski 						aBottomRight.Top() = long(aBottomRight.Top() + aBottomRight.GetHeight() * 1.095);
1275*b1cdbd2cSJim Jagielski 
1276*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderTitle, pInfo->GetTitleRectangle());
1277*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderGraphic, aTopLeft);
1278*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderGraphic, aTopRight);
1279*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderGraphic, aBottomLeft);
1280*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderGraphic, aBottomRight);
1281*b1cdbd2cSJim Jagielski 						break;
1282*b1cdbd2cSJim Jagielski 					}
1283*b1cdbd2cSJim Jagielski 
1284*b1cdbd2cSJim Jagielski                     case 34 : // AUTOLAYOUT_6CLIPART
1285*b1cdbd2cSJim Jagielski 					{
1286*b1cdbd2cSJim Jagielski 						Rectangle aTopLeft(pInfo->GetPresRectangle());
1287*b1cdbd2cSJim Jagielski 						aTopLeft.setHeight(long(aTopLeft.GetHeight() * 0.477));
1288*b1cdbd2cSJim Jagielski 						aTopLeft.setWidth(long(aTopLeft.GetWidth() * 0.322));
1289*b1cdbd2cSJim Jagielski 						Rectangle aTopCenter(aTopLeft);
1290*b1cdbd2cSJim Jagielski 						aTopCenter.Left() = long(aTopCenter.Left() + aTopCenter.GetWidth() * 1.05);
1291*b1cdbd2cSJim Jagielski 						Rectangle aTopRight(aTopLeft);
1292*b1cdbd2cSJim Jagielski 						aTopRight.Left() = long(aTopRight.Left() + aTopRight.GetWidth() * 2 * 1.05);
1293*b1cdbd2cSJim Jagielski 
1294*b1cdbd2cSJim Jagielski 						Rectangle aBottomLeft(aTopLeft);
1295*b1cdbd2cSJim Jagielski 						aBottomLeft.Top() = long(aBottomLeft.Top() + aBottomLeft.GetHeight() * 1.095);
1296*b1cdbd2cSJim Jagielski 						Rectangle aBottomCenter(aTopCenter);
1297*b1cdbd2cSJim Jagielski 						aBottomCenter.Top() = long(aBottomCenter.Top() + aBottomCenter.GetHeight() * 1.095);
1298*b1cdbd2cSJim Jagielski 						Rectangle aBottomRight(aTopRight);
1299*b1cdbd2cSJim Jagielski 						aBottomRight.Top() = long(aBottomRight.Top() + aBottomRight.GetHeight() * 1.095);
1300*b1cdbd2cSJim Jagielski 
1301*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderTitle, pInfo->GetTitleRectangle());
1302*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderGraphic, aTopLeft);
1303*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderGraphic, aTopCenter);
1304*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderGraphic, aTopRight);
1305*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderGraphic, aBottomLeft);
1306*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderGraphic, aBottomCenter);
1307*b1cdbd2cSJim Jagielski 						ImpWriteAutoLayoutPlaceholder(XmlPlaceholderGraphic, aBottomRight);
1308*b1cdbd2cSJim Jagielski 						break;
1309*b1cdbd2cSJim Jagielski 					}
1310*b1cdbd2cSJim Jagielski 					default:
1311*b1cdbd2cSJim Jagielski 					{
1312*b1cdbd2cSJim Jagielski 						DBG_ERROR("XMLEXP: unknown autolayout export");
1313*b1cdbd2cSJim Jagielski 						break;
1314*b1cdbd2cSJim Jagielski 					}
1315*b1cdbd2cSJim Jagielski 				}
1316*b1cdbd2cSJim Jagielski 			}
1317*b1cdbd2cSJim Jagielski 		}
1318*b1cdbd2cSJim Jagielski 	}
1319*b1cdbd2cSJim Jagielski }
1320*b1cdbd2cSJim Jagielski 
1321*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
1322*b1cdbd2cSJim Jagielski 
ImpWriteAutoLayoutPlaceholder(XmlPlaceholder ePl,const Rectangle & rRect)1323*b1cdbd2cSJim Jagielski void SdXMLExport::ImpWriteAutoLayoutPlaceholder(XmlPlaceholder ePl, const Rectangle& rRect)
1324*b1cdbd2cSJim Jagielski {
1325*b1cdbd2cSJim Jagielski 	OUString aStr;
1326*b1cdbd2cSJim Jagielski 	OUStringBuffer sStringBuffer;
1327*b1cdbd2cSJim Jagielski 
1328*b1cdbd2cSJim Jagielski 	// prepare presentation-placeholder attributes, presentation:object
1329*b1cdbd2cSJim Jagielski 	switch(ePl)
1330*b1cdbd2cSJim Jagielski 	{
1331*b1cdbd2cSJim Jagielski 		case XmlPlaceholderTitle: aStr = OUString(RTL_CONSTASCII_USTRINGPARAM("title")); break;
1332*b1cdbd2cSJim Jagielski 		case XmlPlaceholderOutline: aStr = OUString(RTL_CONSTASCII_USTRINGPARAM("outline")); break;
1333*b1cdbd2cSJim Jagielski 		case XmlPlaceholderSubtitle: aStr = OUString(RTL_CONSTASCII_USTRINGPARAM("subtitle")); break;
1334*b1cdbd2cSJim Jagielski 		case XmlPlaceholderText: aStr = OUString(RTL_CONSTASCII_USTRINGPARAM("text")); break;
1335*b1cdbd2cSJim Jagielski 		case XmlPlaceholderGraphic: aStr = OUString(RTL_CONSTASCII_USTRINGPARAM("graphic")); break;
1336*b1cdbd2cSJim Jagielski 		case XmlPlaceholderObject: aStr = OUString(RTL_CONSTASCII_USTRINGPARAM("object")); break;
1337*b1cdbd2cSJim Jagielski 		case XmlPlaceholderChart: aStr = OUString(RTL_CONSTASCII_USTRINGPARAM("chart")); break;
1338*b1cdbd2cSJim Jagielski 		case XmlPlaceholderOrgchart: aStr = OUString(RTL_CONSTASCII_USTRINGPARAM("orgchart")); break;
1339*b1cdbd2cSJim Jagielski 		case XmlPlaceholderTable: aStr = OUString(RTL_CONSTASCII_USTRINGPARAM("table")); break;
1340*b1cdbd2cSJim Jagielski 		case XmlPlaceholderPage: aStr = OUString(RTL_CONSTASCII_USTRINGPARAM("page")); break;
1341*b1cdbd2cSJim Jagielski 		case XmlPlaceholderNotes: aStr = OUString(RTL_CONSTASCII_USTRINGPARAM("notes")); break;
1342*b1cdbd2cSJim Jagielski 		case XmlPlaceholderHandout: aStr = OUString(RTL_CONSTASCII_USTRINGPARAM("handout")); break;
1343*b1cdbd2cSJim Jagielski 		case XmlPlaceholderVerticalTitle: aStr = OUString(RTL_CONSTASCII_USTRINGPARAM("vertical_title")); break;
1344*b1cdbd2cSJim Jagielski 		case XmlPlaceholderVerticalOutline: aStr = OUString(RTL_CONSTASCII_USTRINGPARAM("vertical_outline")); break;
1345*b1cdbd2cSJim Jagielski 	}
1346*b1cdbd2cSJim Jagielski 
1347*b1cdbd2cSJim Jagielski 	AddAttribute(XML_NAMESPACE_PRESENTATION, XML_OBJECT, aStr);
1348*b1cdbd2cSJim Jagielski 
1349*b1cdbd2cSJim Jagielski 	// svg:x,y,width,height
1350*b1cdbd2cSJim Jagielski 	GetMM100UnitConverter().convertMeasure(sStringBuffer, rRect.Left());
1351*b1cdbd2cSJim Jagielski 	aStr = sStringBuffer.makeStringAndClear();
1352*b1cdbd2cSJim Jagielski 	AddAttribute(XML_NAMESPACE_SVG, XML_X, aStr);
1353*b1cdbd2cSJim Jagielski 
1354*b1cdbd2cSJim Jagielski 	GetMM100UnitConverter().convertMeasure(sStringBuffer, rRect.Top());
1355*b1cdbd2cSJim Jagielski 	aStr = sStringBuffer.makeStringAndClear();
1356*b1cdbd2cSJim Jagielski 	AddAttribute(XML_NAMESPACE_SVG, XML_Y, aStr);
1357*b1cdbd2cSJim Jagielski 
1358*b1cdbd2cSJim Jagielski 	GetMM100UnitConverter().convertMeasure(sStringBuffer, rRect.GetWidth());
1359*b1cdbd2cSJim Jagielski 	aStr = sStringBuffer.makeStringAndClear();
1360*b1cdbd2cSJim Jagielski 	AddAttribute(XML_NAMESPACE_SVG, XML_WIDTH, aStr);
1361*b1cdbd2cSJim Jagielski 
1362*b1cdbd2cSJim Jagielski 	GetMM100UnitConverter().convertMeasure(sStringBuffer, rRect.GetHeight());
1363*b1cdbd2cSJim Jagielski 	aStr = sStringBuffer.makeStringAndClear();
1364*b1cdbd2cSJim Jagielski 	AddAttribute(XML_NAMESPACE_SVG, XML_HEIGHT, aStr);
1365*b1cdbd2cSJim Jagielski 
1366*b1cdbd2cSJim Jagielski 	// write presentation-placeholder
1367*b1cdbd2cSJim Jagielski 	SvXMLElementExport aPPL(*this, XML_NAMESPACE_PRESENTATION, XML_PLACEHOLDER, sal_True, sal_True);
1368*b1cdbd2cSJim Jagielski }
1369*b1cdbd2cSJim Jagielski 
1370*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
1371*b1cdbd2cSJim Jagielski 
ImpGetOrCreatePageMasterInfo(Reference<XDrawPage> xMasterPage)1372*b1cdbd2cSJim Jagielski ImpXMLEXPPageMasterInfo* SdXMLExport::ImpGetOrCreatePageMasterInfo( Reference< XDrawPage > xMasterPage )
1373*b1cdbd2cSJim Jagielski {
1374*b1cdbd2cSJim Jagielski 	bool bDoesExist = false;
1375*b1cdbd2cSJim Jagielski 
1376*b1cdbd2cSJim Jagielski 	ImpXMLEXPPageMasterInfo* pNewInfo = new ImpXMLEXPPageMasterInfo(*this, xMasterPage);
1377*b1cdbd2cSJim Jagielski 
1378*b1cdbd2cSJim Jagielski 	// compare with prev page-master infos
1379*b1cdbd2cSJim Jagielski 	for(sal_uInt32 a = 0; !bDoesExist && a < mpPageMasterInfoList->Count(); a++)
1380*b1cdbd2cSJim Jagielski 	{
1381*b1cdbd2cSJim Jagielski 		if(mpPageMasterInfoList->GetObject(a)
1382*b1cdbd2cSJim Jagielski 			&& *mpPageMasterInfoList->GetObject(a) == *pNewInfo)
1383*b1cdbd2cSJim Jagielski 		{
1384*b1cdbd2cSJim Jagielski 			delete pNewInfo;
1385*b1cdbd2cSJim Jagielski 			pNewInfo = mpPageMasterInfoList->GetObject(a);
1386*b1cdbd2cSJim Jagielski 			bDoesExist = true;
1387*b1cdbd2cSJim Jagielski 		}
1388*b1cdbd2cSJim Jagielski 	}
1389*b1cdbd2cSJim Jagielski 	// add entry when not found same page-master infos
1390*b1cdbd2cSJim Jagielski 	if(!bDoesExist)
1391*b1cdbd2cSJim Jagielski 		mpPageMasterInfoList->Insert(pNewInfo, LIST_APPEND);
1392*b1cdbd2cSJim Jagielski 
1393*b1cdbd2cSJim Jagielski 	return pNewInfo;
1394*b1cdbd2cSJim Jagielski }
1395*b1cdbd2cSJim Jagielski 
ImpPrepPageMasterInfos()1396*b1cdbd2cSJim Jagielski void SdXMLExport::ImpPrepPageMasterInfos()
1397*b1cdbd2cSJim Jagielski {
1398*b1cdbd2cSJim Jagielski 	if( IsImpress() )
1399*b1cdbd2cSJim Jagielski 	{
1400*b1cdbd2cSJim Jagielski 		// create page master info for handout master page
1401*b1cdbd2cSJim Jagielski 
1402*b1cdbd2cSJim Jagielski 		Reference< XHandoutMasterSupplier > xHMS( GetModel(), UNO_QUERY );
1403*b1cdbd2cSJim Jagielski 		if( xHMS.is() )
1404*b1cdbd2cSJim Jagielski 		{
1405*b1cdbd2cSJim Jagielski 			Reference< XDrawPage > xMasterPage( xHMS->getHandoutMasterPage() );
1406*b1cdbd2cSJim Jagielski 			if( xMasterPage.is() )
1407*b1cdbd2cSJim Jagielski 				mpHandoutPageMaster = ImpGetOrCreatePageMasterInfo(xMasterPage);
1408*b1cdbd2cSJim Jagielski 		}
1409*b1cdbd2cSJim Jagielski 	}
1410*b1cdbd2cSJim Jagielski 
1411*b1cdbd2cSJim Jagielski 	// create page master infos for master pages
1412*b1cdbd2cSJim Jagielski 	if(mnDocMasterPageCount)
1413*b1cdbd2cSJim Jagielski 	{
1414*b1cdbd2cSJim Jagielski 		// look for needed page-masters, create these
1415*b1cdbd2cSJim Jagielski         for (sal_Int32 nMPageId = 0; nMPageId < mnDocMasterPageCount; nMPageId++)
1416*b1cdbd2cSJim Jagielski 		{
1417*b1cdbd2cSJim Jagielski 			Reference< XDrawPage > xMasterPage( mxDocMasterPages->getByIndex(nMPageId), UNO_QUERY );
1418*b1cdbd2cSJim Jagielski 			ImpXMLEXPPageMasterInfo* pNewInfo = 0L;
1419*b1cdbd2cSJim Jagielski 
1420*b1cdbd2cSJim Jagielski 			if(xMasterPage.is())
1421*b1cdbd2cSJim Jagielski 				pNewInfo = ImpGetOrCreatePageMasterInfo(xMasterPage);
1422*b1cdbd2cSJim Jagielski 
1423*b1cdbd2cSJim Jagielski 			mpPageMasterUsageList->Insert(pNewInfo, LIST_APPEND);
1424*b1cdbd2cSJim Jagielski 
1425*b1cdbd2cSJim Jagielski 			// look for page master of handout page
1426*b1cdbd2cSJim Jagielski 			if(IsImpress())
1427*b1cdbd2cSJim Jagielski 			{
1428*b1cdbd2cSJim Jagielski 				pNewInfo = NULL;
1429*b1cdbd2cSJim Jagielski 				Reference< presentation::XPresentationPage > xPresPage(xMasterPage, UNO_QUERY);
1430*b1cdbd2cSJim Jagielski 				if(xPresPage.is())
1431*b1cdbd2cSJim Jagielski 				{
1432*b1cdbd2cSJim Jagielski 					Reference< XDrawPage > xNotesPage(xPresPage->getNotesPage());
1433*b1cdbd2cSJim Jagielski 					if(xNotesPage.is())
1434*b1cdbd2cSJim Jagielski 					{
1435*b1cdbd2cSJim Jagielski 						pNewInfo = ImpGetOrCreatePageMasterInfo(xNotesPage);
1436*b1cdbd2cSJim Jagielski 					}
1437*b1cdbd2cSJim Jagielski 				}
1438*b1cdbd2cSJim Jagielski 				mpNotesPageMasterUsageList->Insert( pNewInfo, LIST_APPEND );
1439*b1cdbd2cSJim Jagielski 			}
1440*b1cdbd2cSJim Jagielski 		}
1441*b1cdbd2cSJim Jagielski 	}
1442*b1cdbd2cSJim Jagielski }
1443*b1cdbd2cSJim Jagielski 
1444*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
1445*b1cdbd2cSJim Jagielski 
ImpWritePageMasterInfos()1446*b1cdbd2cSJim Jagielski void SdXMLExport::ImpWritePageMasterInfos()
1447*b1cdbd2cSJim Jagielski {
1448*b1cdbd2cSJim Jagielski 	// write created page-masters, create names for these
1449*b1cdbd2cSJim Jagielski 	for(sal_uInt32 nCnt = 0L; nCnt < mpPageMasterInfoList->Count(); nCnt++)
1450*b1cdbd2cSJim Jagielski 	{
1451*b1cdbd2cSJim Jagielski 		ImpXMLEXPPageMasterInfo* pInfo = mpPageMasterInfoList->GetObject(nCnt);
1452*b1cdbd2cSJim Jagielski 		if(pInfo)
1453*b1cdbd2cSJim Jagielski 		{
1454*b1cdbd2cSJim Jagielski 			// create name
1455*b1cdbd2cSJim Jagielski 			OUString sNewName = OUString(RTL_CONSTASCII_USTRINGPARAM("PM"));
1456*b1cdbd2cSJim Jagielski 
1457*b1cdbd2cSJim Jagielski 			sNewName += OUString::valueOf((sal_Int32)nCnt);
1458*b1cdbd2cSJim Jagielski 			pInfo->SetName(sNewName);
1459*b1cdbd2cSJim Jagielski 
1460*b1cdbd2cSJim Jagielski 			// prepare page-master attributes
1461*b1cdbd2cSJim Jagielski 			OUString sString;
1462*b1cdbd2cSJim Jagielski 			OUStringBuffer sStringBuffer;
1463*b1cdbd2cSJim Jagielski 
1464*b1cdbd2cSJim Jagielski 			sString = sNewName;
1465*b1cdbd2cSJim Jagielski 			AddAttribute(XML_NAMESPACE_STYLE, XML_NAME, sString);
1466*b1cdbd2cSJim Jagielski 
1467*b1cdbd2cSJim Jagielski 			// write page-layout
1468*b1cdbd2cSJim Jagielski 			SvXMLElementExport aPME(*this, XML_NAMESPACE_STYLE, XML_PAGE_LAYOUT, sal_True, sal_True);
1469*b1cdbd2cSJim Jagielski 
1470*b1cdbd2cSJim Jagielski 			// prepare style:properties inside page-master
1471*b1cdbd2cSJim Jagielski 			GetMM100UnitConverter().convertMeasure(sStringBuffer, pInfo->GetBorderTop());
1472*b1cdbd2cSJim Jagielski 			sString = sStringBuffer.makeStringAndClear();
1473*b1cdbd2cSJim Jagielski 			AddAttribute(XML_NAMESPACE_FO, XML_MARGIN_TOP, sString);
1474*b1cdbd2cSJim Jagielski 
1475*b1cdbd2cSJim Jagielski 			GetMM100UnitConverter().convertMeasure(sStringBuffer, pInfo->GetBorderBottom());
1476*b1cdbd2cSJim Jagielski 			sString = sStringBuffer.makeStringAndClear();
1477*b1cdbd2cSJim Jagielski 			AddAttribute(XML_NAMESPACE_FO, XML_MARGIN_BOTTOM, sString);
1478*b1cdbd2cSJim Jagielski 
1479*b1cdbd2cSJim Jagielski 			GetMM100UnitConverter().convertMeasure(sStringBuffer, pInfo->GetBorderLeft());
1480*b1cdbd2cSJim Jagielski 			sString = sStringBuffer.makeStringAndClear();
1481*b1cdbd2cSJim Jagielski 			AddAttribute(XML_NAMESPACE_FO, XML_MARGIN_LEFT, sString);
1482*b1cdbd2cSJim Jagielski 
1483*b1cdbd2cSJim Jagielski 			GetMM100UnitConverter().convertMeasure(sStringBuffer, pInfo->GetBorderRight());
1484*b1cdbd2cSJim Jagielski 			sString = sStringBuffer.makeStringAndClear();
1485*b1cdbd2cSJim Jagielski 			AddAttribute(XML_NAMESPACE_FO, XML_MARGIN_RIGHT, sString);
1486*b1cdbd2cSJim Jagielski 
1487*b1cdbd2cSJim Jagielski 			GetMM100UnitConverter().convertMeasure(sStringBuffer, pInfo->GetWidth());
1488*b1cdbd2cSJim Jagielski 			sString = sStringBuffer.makeStringAndClear();
1489*b1cdbd2cSJim Jagielski 			AddAttribute(XML_NAMESPACE_FO, XML_PAGE_WIDTH, sString);
1490*b1cdbd2cSJim Jagielski 
1491*b1cdbd2cSJim Jagielski 			GetMM100UnitConverter().convertMeasure(sStringBuffer, pInfo->GetHeight());
1492*b1cdbd2cSJim Jagielski 			sString = sStringBuffer.makeStringAndClear();
1493*b1cdbd2cSJim Jagielski 			AddAttribute(XML_NAMESPACE_FO, XML_PAGE_HEIGHT, sString);
1494*b1cdbd2cSJim Jagielski 
1495*b1cdbd2cSJim Jagielski 			if(pInfo->GetOrientation() == view::PaperOrientation_PORTRAIT)
1496*b1cdbd2cSJim Jagielski 				AddAttribute(XML_NAMESPACE_STYLE, XML_PRINT_ORIENTATION, XML_PORTRAIT);
1497*b1cdbd2cSJim Jagielski 			else
1498*b1cdbd2cSJim Jagielski 				AddAttribute(XML_NAMESPACE_STYLE, XML_PRINT_ORIENTATION, XML_LANDSCAPE);
1499*b1cdbd2cSJim Jagielski 
1500*b1cdbd2cSJim Jagielski 			// write style:properties
1501*b1cdbd2cSJim Jagielski 			SvXMLElementExport aPMF(*this, XML_NAMESPACE_STYLE, XML_PAGE_LAYOUT_PROPERTIES, sal_True, sal_True);
1502*b1cdbd2cSJim Jagielski 		}
1503*b1cdbd2cSJim Jagielski 	}
1504*b1cdbd2cSJim Jagielski }
1505*b1cdbd2cSJim Jagielski 
1506*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
1507*b1cdbd2cSJim Jagielski 
ImpGetPageMasterInfoByName(const OUString & rName)1508*b1cdbd2cSJim Jagielski ImpXMLEXPPageMasterInfo* SdXMLExport::ImpGetPageMasterInfoByName(const OUString& rName)
1509*b1cdbd2cSJim Jagielski {
1510*b1cdbd2cSJim Jagielski 	if(rName.getLength() && mpPageMasterInfoList->Count())
1511*b1cdbd2cSJim Jagielski 	{
1512*b1cdbd2cSJim Jagielski 		for(sal_uInt32 nCnt = 0L; nCnt < mpPageMasterInfoList->Count(); nCnt++)
1513*b1cdbd2cSJim Jagielski 		{
1514*b1cdbd2cSJim Jagielski 			ImpXMLEXPPageMasterInfo* pInfo = mpPageMasterInfoList->GetObject(nCnt);
1515*b1cdbd2cSJim Jagielski 			if(pInfo)
1516*b1cdbd2cSJim Jagielski 			{
1517*b1cdbd2cSJim Jagielski 				if(pInfo->GetMasterPageName().getLength() && rName.equals(pInfo->GetMasterPageName()))
1518*b1cdbd2cSJim Jagielski 				{
1519*b1cdbd2cSJim Jagielski 					return pInfo;
1520*b1cdbd2cSJim Jagielski 				}
1521*b1cdbd2cSJim Jagielski 			}
1522*b1cdbd2cSJim Jagielski 		}
1523*b1cdbd2cSJim Jagielski 	}
1524*b1cdbd2cSJim Jagielski 	return 0L;
1525*b1cdbd2cSJim Jagielski }
1526*b1cdbd2cSJim Jagielski 
1527*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
1528*b1cdbd2cSJim Jagielski 
ImpPrepDrawPageInfos()1529*b1cdbd2cSJim Jagielski void SdXMLExport::ImpPrepDrawPageInfos()
1530*b1cdbd2cSJim Jagielski {
1531*b1cdbd2cSJim Jagielski 	// create draw:style-name entries for page export
1532*b1cdbd2cSJim Jagielski 	// containing presentation page attributes AND background attributes
1533*b1cdbd2cSJim Jagielski 	// fixed family for page-styles is "drawing-page" (XML_STYLE_FAMILY_SD_DRAWINGPAGE_NAME)
1534*b1cdbd2cSJim Jagielski 
1535*b1cdbd2cSJim Jagielski 	sal_Int32 nCnt;
1536*b1cdbd2cSJim Jagielski 	for(nCnt = 0; nCnt < mnDocDrawPageCount; nCnt++)
1537*b1cdbd2cSJim Jagielski 	{
1538*b1cdbd2cSJim Jagielski 		Reference<XDrawPage> xDrawPage;
1539*b1cdbd2cSJim Jagielski 		mxDocDrawPages->getByIndex(nCnt) >>= xDrawPage;
1540*b1cdbd2cSJim Jagielski 		maDrawPagesStyleNames[nCnt] = ImpCreatePresPageStyleName( xDrawPage );
1541*b1cdbd2cSJim Jagielski 
1542*b1cdbd2cSJim Jagielski 		Reference< presentation::XPresentationPage > xPresPage(xDrawPage, UNO_QUERY);
1543*b1cdbd2cSJim Jagielski 		if(xPresPage.is())
1544*b1cdbd2cSJim Jagielski 		{
1545*b1cdbd2cSJim Jagielski 			maDrawNotesPagesStyleNames[nCnt] = ImpCreatePresPageStyleName( xPresPage->getNotesPage(), false );
1546*b1cdbd2cSJim Jagielski 
1547*b1cdbd2cSJim Jagielski 			maDrawPagesHeaderFooterSettings[nCnt] = ImpPrepDrawPageHeaderFooterDecls( xDrawPage );
1548*b1cdbd2cSJim Jagielski 			maDrawNotesPagesHeaderFooterSettings[nCnt] = ImpPrepDrawPageHeaderFooterDecls( xPresPage->getNotesPage() );
1549*b1cdbd2cSJim Jagielski 		}
1550*b1cdbd2cSJim Jagielski 	}
1551*b1cdbd2cSJim Jagielski }
1552*b1cdbd2cSJim Jagielski 
1553*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
1554*b1cdbd2cSJim Jagielski 
findOrAppendImpl(std::vector<OUString> & rVector,const OUString & rText,const sal_Char * pPrefix)1555*b1cdbd2cSJim Jagielski static OUString findOrAppendImpl( std::vector< OUString >& rVector, const OUString& rText, const sal_Char* pPrefix )
1556*b1cdbd2cSJim Jagielski {
1557*b1cdbd2cSJim Jagielski 	// search rVector if there is already a string that equals rText
1558*b1cdbd2cSJim Jagielski 	std::vector< OUString >::iterator aIter;
1559*b1cdbd2cSJim Jagielski 	sal_Int32 nIndex;
1560*b1cdbd2cSJim Jagielski 	for( nIndex = 1, aIter = rVector.begin(); aIter != rVector.end(); aIter++, nIndex++ )
1561*b1cdbd2cSJim Jagielski 	{
1562*b1cdbd2cSJim Jagielski 		if( (*aIter) == rText )
1563*b1cdbd2cSJim Jagielski 			break;
1564*b1cdbd2cSJim Jagielski 	}
1565*b1cdbd2cSJim Jagielski 
1566*b1cdbd2cSJim Jagielski 	// if nothing is found, append the string at the end of rVector
1567*b1cdbd2cSJim Jagielski 	if( aIter == rVector.end() )
1568*b1cdbd2cSJim Jagielski 		rVector.push_back( rText );
1569*b1cdbd2cSJim Jagielski 
1570*b1cdbd2cSJim Jagielski 	// create a reference string with pPrefix and the index of the
1571*b1cdbd2cSJim Jagielski 	// found or created rText
1572*b1cdbd2cSJim Jagielski 	OUString aStr( OUString::createFromAscii( pPrefix ) );
1573*b1cdbd2cSJim Jagielski 	aStr += OUString::valueOf( nIndex );
1574*b1cdbd2cSJim Jagielski 	return aStr;
1575*b1cdbd2cSJim Jagielski }
1576*b1cdbd2cSJim Jagielski 
findOrAppendImpl(std::vector<DateTimeDeclImpl> & rVector,const OUString & rText,sal_Bool bFixed,sal_Int32 nFormat,const sal_Char * pPrefix)1577*b1cdbd2cSJim Jagielski static OUString findOrAppendImpl( std::vector< DateTimeDeclImpl >& rVector, const OUString& rText, sal_Bool bFixed, sal_Int32 nFormat, const sal_Char* pPrefix )
1578*b1cdbd2cSJim Jagielski {
1579*b1cdbd2cSJim Jagielski 	// search rVector if there is already a DateTimeDeclImpl with rText,bFixed and nFormat
1580*b1cdbd2cSJim Jagielski 	std::vector< DateTimeDeclImpl >::iterator aIter;
1581*b1cdbd2cSJim Jagielski 	sal_Int32 nIndex;
1582*b1cdbd2cSJim Jagielski 	for( nIndex = 1, aIter = rVector.begin(); aIter != rVector.end(); aIter++, nIndex++ )
1583*b1cdbd2cSJim Jagielski 	{
1584*b1cdbd2cSJim Jagielski 		const DateTimeDeclImpl& rDecl = (*aIter);
1585*b1cdbd2cSJim Jagielski 		if( (rDecl.mbFixed == bFixed ) &&
1586*b1cdbd2cSJim Jagielski 			(!bFixed || rDecl.maStrText == rText) &&
1587*b1cdbd2cSJim Jagielski 			(bFixed || (rDecl.mnFormat == nFormat) ) )
1588*b1cdbd2cSJim Jagielski 			break;
1589*b1cdbd2cSJim Jagielski 	}
1590*b1cdbd2cSJim Jagielski 
1591*b1cdbd2cSJim Jagielski 	// if nothing is found, append a new DateTimeDeclImpl
1592*b1cdbd2cSJim Jagielski 	if( aIter == rVector.end() )
1593*b1cdbd2cSJim Jagielski 	{
1594*b1cdbd2cSJim Jagielski 		DateTimeDeclImpl aDecl;
1595*b1cdbd2cSJim Jagielski 		aDecl.maStrText = rText;
1596*b1cdbd2cSJim Jagielski 		aDecl.mbFixed = bFixed;
1597*b1cdbd2cSJim Jagielski 		aDecl.mnFormat = nFormat;
1598*b1cdbd2cSJim Jagielski 		rVector.push_back( aDecl );
1599*b1cdbd2cSJim Jagielski 	}
1600*b1cdbd2cSJim Jagielski 
1601*b1cdbd2cSJim Jagielski 	// create a reference string with pPrefix and the index of the
1602*b1cdbd2cSJim Jagielski 	// found or created DateTimeDeclImpl
1603*b1cdbd2cSJim Jagielski 	OUString aStr( OUString::createFromAscii( pPrefix ) );
1604*b1cdbd2cSJim Jagielski 	aStr += OUString::valueOf( nIndex );
1605*b1cdbd2cSJim Jagielski 	return aStr;
1606*b1cdbd2cSJim Jagielski 
1607*b1cdbd2cSJim Jagielski }
1608*b1cdbd2cSJim Jagielski 
1609*b1cdbd2cSJim Jagielski static const sal_Char* gpStrHeaderTextPrefix = "hdr";
1610*b1cdbd2cSJim Jagielski static const sal_Char* gpStrFooterTextPrefix = "ftr";
1611*b1cdbd2cSJim Jagielski static const sal_Char* gpStrDateTimeTextPrefix = "dtd";
1612*b1cdbd2cSJim Jagielski 
ImpPrepDrawPageHeaderFooterDecls(const Reference<XDrawPage> & xDrawPage)1613*b1cdbd2cSJim Jagielski HeaderFooterPageSettingsImpl SdXMLExport::ImpPrepDrawPageHeaderFooterDecls( const Reference<XDrawPage>& xDrawPage )
1614*b1cdbd2cSJim Jagielski {
1615*b1cdbd2cSJim Jagielski 	HeaderFooterPageSettingsImpl aSettings;
1616*b1cdbd2cSJim Jagielski 
1617*b1cdbd2cSJim Jagielski 	if( xDrawPage.is() ) try
1618*b1cdbd2cSJim Jagielski 	{
1619*b1cdbd2cSJim Jagielski 		Reference< XPropertySet > xSet( xDrawPage, UNO_QUERY_THROW );
1620*b1cdbd2cSJim Jagielski 		Reference< XPropertySetInfo > xInfo( xSet->getPropertySetInfo() );
1621*b1cdbd2cSJim Jagielski 
1622*b1cdbd2cSJim Jagielski 		OUString aStrText;
1623*b1cdbd2cSJim Jagielski 
1624*b1cdbd2cSJim Jagielski 		const OUString aStrHeaderTextProp( RTL_CONSTASCII_USTRINGPARAM( "HeaderText" ) );
1625*b1cdbd2cSJim Jagielski 		if( xInfo->hasPropertyByName( aStrHeaderTextProp ) )
1626*b1cdbd2cSJim Jagielski 		{
1627*b1cdbd2cSJim Jagielski 			xSet->getPropertyValue( aStrHeaderTextProp  ) >>= aStrText;
1628*b1cdbd2cSJim Jagielski 			if( aStrText.getLength() )
1629*b1cdbd2cSJim Jagielski 				aSettings.maStrHeaderDeclName = findOrAppendImpl( maHeaderDeclsVector, aStrText, gpStrHeaderTextPrefix );
1630*b1cdbd2cSJim Jagielski 		}
1631*b1cdbd2cSJim Jagielski 
1632*b1cdbd2cSJim Jagielski 		const OUString aStrFooterTextProp( RTL_CONSTASCII_USTRINGPARAM( "FooterText" ) );
1633*b1cdbd2cSJim Jagielski 		if( xInfo->hasPropertyByName( aStrFooterTextProp ) )
1634*b1cdbd2cSJim Jagielski 		{
1635*b1cdbd2cSJim Jagielski 			xSet->getPropertyValue( aStrFooterTextProp ) >>= aStrText;
1636*b1cdbd2cSJim Jagielski 			if( aStrText.getLength() )
1637*b1cdbd2cSJim Jagielski 				aSettings.maStrFooterDeclName = findOrAppendImpl( maFooterDeclsVector, aStrText, gpStrFooterTextPrefix );
1638*b1cdbd2cSJim Jagielski 		}
1639*b1cdbd2cSJim Jagielski 
1640*b1cdbd2cSJim Jagielski 		const OUString aStrDateTimeTextProp( RTL_CONSTASCII_USTRINGPARAM( "DateTimeText" ) );
1641*b1cdbd2cSJim Jagielski 		if( xInfo->hasPropertyByName( aStrDateTimeTextProp ) )
1642*b1cdbd2cSJim Jagielski 		{
1643*b1cdbd2cSJim Jagielski 			sal_Bool bFixed = false;
1644*b1cdbd2cSJim Jagielski 			sal_Int32 nFormat = 0;
1645*b1cdbd2cSJim Jagielski 			xSet->getPropertyValue( aStrDateTimeTextProp ) >>= aStrText;
1646*b1cdbd2cSJim Jagielski 			xSet->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "IsDateTimeFixed" ) ) ) >>= bFixed;
1647*b1cdbd2cSJim Jagielski 			xSet->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "DateTimeFormat" ) ) ) >>= nFormat;
1648*b1cdbd2cSJim Jagielski 
1649*b1cdbd2cSJim Jagielski 			if( !bFixed || aStrText.getLength() )
1650*b1cdbd2cSJim Jagielski 			{
1651*b1cdbd2cSJim Jagielski 				aSettings.maStrDateTimeDeclName = findOrAppendImpl( maDateTimeDeclsVector, aStrText, bFixed, nFormat, gpStrDateTimeTextPrefix );
1652*b1cdbd2cSJim Jagielski 				if( !bFixed )
1653*b1cdbd2cSJim Jagielski 					addDataStyle( nFormat );
1654*b1cdbd2cSJim Jagielski 			}
1655*b1cdbd2cSJim Jagielski 		}
1656*b1cdbd2cSJim Jagielski 	}
1657*b1cdbd2cSJim Jagielski 	catch( Exception& e )
1658*b1cdbd2cSJim Jagielski 	{
1659*b1cdbd2cSJim Jagielski 		(void)e;
1660*b1cdbd2cSJim Jagielski 		DBG_ERROR( "SdXMLExport::ImpPrepDrawPageHeaderFooterDecls(), unexpected exception cought!" );
1661*b1cdbd2cSJim Jagielski 	}
1662*b1cdbd2cSJim Jagielski 
1663*b1cdbd2cSJim Jagielski 	return aSettings;
1664*b1cdbd2cSJim Jagielski }
1665*b1cdbd2cSJim Jagielski 
1666*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
1667*b1cdbd2cSJim Jagielski 
ImpWriteHeaderFooterDecls()1668*b1cdbd2cSJim Jagielski void SdXMLExport::ImpWriteHeaderFooterDecls()
1669*b1cdbd2cSJim Jagielski {
1670*b1cdbd2cSJim Jagielski 	OUStringBuffer sBuffer;
1671*b1cdbd2cSJim Jagielski 
1672*b1cdbd2cSJim Jagielski 	if( !maHeaderDeclsVector.empty() )
1673*b1cdbd2cSJim Jagielski 	{
1674*b1cdbd2cSJim Jagielski 		// export header decls
1675*b1cdbd2cSJim Jagielski 		const OUString aPrefix( OUString::createFromAscii( gpStrHeaderTextPrefix ) );
1676*b1cdbd2cSJim Jagielski 		std::vector< OUString >::iterator aIter;
1677*b1cdbd2cSJim Jagielski 		sal_Int32 nIndex;
1678*b1cdbd2cSJim Jagielski 		for( nIndex = 1, aIter = maHeaderDeclsVector.begin(); aIter != maHeaderDeclsVector.end(); aIter++, nIndex++ )
1679*b1cdbd2cSJim Jagielski 		{
1680*b1cdbd2cSJim Jagielski 			sBuffer.append( aPrefix );
1681*b1cdbd2cSJim Jagielski 			sBuffer.append( nIndex );
1682*b1cdbd2cSJim Jagielski 			AddAttribute(XML_NAMESPACE_PRESENTATION, XML_NAME, sBuffer.makeStringAndClear());
1683*b1cdbd2cSJim Jagielski 
1684*b1cdbd2cSJim Jagielski 			SvXMLElementExport aElem(*this, XML_NAMESPACE_PRESENTATION, XML_HEADER_DECL, sal_True, sal_True);
1685*b1cdbd2cSJim Jagielski 			Characters((*aIter));
1686*b1cdbd2cSJim Jagielski 		}
1687*b1cdbd2cSJim Jagielski 	}
1688*b1cdbd2cSJim Jagielski 
1689*b1cdbd2cSJim Jagielski 	if( !maFooterDeclsVector.empty() )
1690*b1cdbd2cSJim Jagielski 	{
1691*b1cdbd2cSJim Jagielski 		// export footer decls
1692*b1cdbd2cSJim Jagielski 		const OUString aPrefix( OUString::createFromAscii( gpStrFooterTextPrefix ) );
1693*b1cdbd2cSJim Jagielski 		std::vector< OUString >::iterator aIter;
1694*b1cdbd2cSJim Jagielski 		sal_Int32 nIndex;
1695*b1cdbd2cSJim Jagielski 		for( nIndex = 1, aIter = maFooterDeclsVector.begin(); aIter != maFooterDeclsVector.end(); aIter++, nIndex++ )
1696*b1cdbd2cSJim Jagielski 		{
1697*b1cdbd2cSJim Jagielski 			sBuffer.append( aPrefix );
1698*b1cdbd2cSJim Jagielski 			sBuffer.append( nIndex );
1699*b1cdbd2cSJim Jagielski 			AddAttribute(XML_NAMESPACE_PRESENTATION, XML_NAME, sBuffer.makeStringAndClear());
1700*b1cdbd2cSJim Jagielski 
1701*b1cdbd2cSJim Jagielski 			SvXMLElementExport aElem(*this, XML_NAMESPACE_PRESENTATION, XML_FOOTER_DECL, sal_False, sal_False);
1702*b1cdbd2cSJim Jagielski 			Characters((*aIter));
1703*b1cdbd2cSJim Jagielski 		}
1704*b1cdbd2cSJim Jagielski 	}
1705*b1cdbd2cSJim Jagielski 
1706*b1cdbd2cSJim Jagielski 	if( !maDateTimeDeclsVector.empty() )
1707*b1cdbd2cSJim Jagielski 	{
1708*b1cdbd2cSJim Jagielski 		// export footer decls
1709*b1cdbd2cSJim Jagielski 		const OUString aPrefix( OUString::createFromAscii( gpStrDateTimeTextPrefix ) );
1710*b1cdbd2cSJim Jagielski 		std::vector< DateTimeDeclImpl >::iterator aIter;
1711*b1cdbd2cSJim Jagielski 		sal_Int32 nIndex;
1712*b1cdbd2cSJim Jagielski 		for( nIndex = 1, aIter = maDateTimeDeclsVector.begin(); aIter != maDateTimeDeclsVector.end(); aIter++, nIndex++ )
1713*b1cdbd2cSJim Jagielski 		{
1714*b1cdbd2cSJim Jagielski 			const DateTimeDeclImpl& rDecl = (*aIter);
1715*b1cdbd2cSJim Jagielski 
1716*b1cdbd2cSJim Jagielski 			sBuffer.append( aPrefix );
1717*b1cdbd2cSJim Jagielski 			sBuffer.append( nIndex );
1718*b1cdbd2cSJim Jagielski 			AddAttribute( XML_NAMESPACE_PRESENTATION, XML_NAME, sBuffer.makeStringAndClear());
1719*b1cdbd2cSJim Jagielski 
1720*b1cdbd2cSJim Jagielski 			AddAttribute( XML_NAMESPACE_PRESENTATION, XML_SOURCE, rDecl.mbFixed ? XML_FIXED : XML_CURRENT_DATE );
1721*b1cdbd2cSJim Jagielski 
1722*b1cdbd2cSJim Jagielski 			if( !rDecl.mbFixed )
1723*b1cdbd2cSJim Jagielski 				AddAttribute( XML_NAMESPACE_STYLE, XML_DATA_STYLE_NAME, getDataStyleName( rDecl.mnFormat ) );
1724*b1cdbd2cSJim Jagielski 
1725*b1cdbd2cSJim Jagielski 			SvXMLElementExport aElem(*this, XML_NAMESPACE_PRESENTATION, XML_DATE_TIME_DECL, sal_False, sal_False);
1726*b1cdbd2cSJim Jagielski 			if( rDecl.mbFixed )
1727*b1cdbd2cSJim Jagielski 				Characters(rDecl.maStrText);
1728*b1cdbd2cSJim Jagielski 		}
1729*b1cdbd2cSJim Jagielski 	}
1730*b1cdbd2cSJim Jagielski }
1731*b1cdbd2cSJim Jagielski 
ImplExportHeaderFooterDeclAttributes(const HeaderFooterPageSettingsImpl & aSettings)1732*b1cdbd2cSJim Jagielski void SdXMLExport::ImplExportHeaderFooterDeclAttributes( const HeaderFooterPageSettingsImpl& aSettings )
1733*b1cdbd2cSJim Jagielski {
1734*b1cdbd2cSJim Jagielski 	if( aSettings.maStrHeaderDeclName.getLength() )
1735*b1cdbd2cSJim Jagielski 		AddAttribute( XML_NAMESPACE_PRESENTATION, XML_USE_HEADER_NAME, aSettings.maStrHeaderDeclName );
1736*b1cdbd2cSJim Jagielski 
1737*b1cdbd2cSJim Jagielski 	if( aSettings.maStrFooterDeclName.getLength() )
1738*b1cdbd2cSJim Jagielski 		AddAttribute( XML_NAMESPACE_PRESENTATION, XML_USE_FOOTER_NAME, aSettings.maStrFooterDeclName );
1739*b1cdbd2cSJim Jagielski 
1740*b1cdbd2cSJim Jagielski 	if( aSettings.maStrDateTimeDeclName.getLength() )
1741*b1cdbd2cSJim Jagielski 		AddAttribute( XML_NAMESPACE_PRESENTATION, XML_USE_DATE_TIME_NAME, aSettings.maStrDateTimeDeclName );
1742*b1cdbd2cSJim Jagielski }
1743*b1cdbd2cSJim Jagielski 
1744*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
1745*b1cdbd2cSJim Jagielski 
ImpCreatePresPageStyleName(Reference<XDrawPage> xDrawPage,bool bExportBackground)1746*b1cdbd2cSJim Jagielski OUString SdXMLExport::ImpCreatePresPageStyleName( Reference<XDrawPage> xDrawPage, bool bExportBackground /* = true */ )
1747*b1cdbd2cSJim Jagielski {
1748*b1cdbd2cSJim Jagielski 	// create name
1749*b1cdbd2cSJim Jagielski 	OUString sStyleName;
1750*b1cdbd2cSJim Jagielski 
1751*b1cdbd2cSJim Jagielski 	// create style for this page and add to auto style pool
1752*b1cdbd2cSJim Jagielski 
1753*b1cdbd2cSJim Jagielski 	Reference< beans::XPropertySet > xPropSet1(xDrawPage, UNO_QUERY);
1754*b1cdbd2cSJim Jagielski 	if(xPropSet1.is())
1755*b1cdbd2cSJim Jagielski 	{
1756*b1cdbd2cSJim Jagielski 		Reference< beans::XPropertySet > xPropSet;
1757*b1cdbd2cSJim Jagielski 
1758*b1cdbd2cSJim Jagielski 		if( bExportBackground )
1759*b1cdbd2cSJim Jagielski 		{
1760*b1cdbd2cSJim Jagielski 			// since the background items are in a different propertyset
1761*b1cdbd2cSJim Jagielski 			// which itself is a property of the pages property set
1762*b1cdbd2cSJim Jagielski 			// we now merge these two propertysets if possible to simulate
1763*b1cdbd2cSJim Jagielski 			// a single propertyset with all draw page properties
1764*b1cdbd2cSJim Jagielski 			const OUString aBackground(RTL_CONSTASCII_USTRINGPARAM("Background"));
1765*b1cdbd2cSJim Jagielski 			Reference< beans::XPropertySet > xPropSet2;
1766*b1cdbd2cSJim Jagielski 			Reference< beans::XPropertySetInfo > xInfo( xPropSet1->getPropertySetInfo() );
1767*b1cdbd2cSJim Jagielski 			if( xInfo.is() && xInfo->hasPropertyByName( aBackground ) )
1768*b1cdbd2cSJim Jagielski 			{
1769*b1cdbd2cSJim Jagielski 				Any aAny( xPropSet1->getPropertyValue( aBackground ) );
1770*b1cdbd2cSJim Jagielski 				aAny >>= xPropSet2;
1771*b1cdbd2cSJim Jagielski 			}
1772*b1cdbd2cSJim Jagielski 
1773*b1cdbd2cSJim Jagielski 			if( xPropSet2.is() )
1774*b1cdbd2cSJim Jagielski 				xPropSet = PropertySetMerger_CreateInstance( xPropSet1, xPropSet2 );
1775*b1cdbd2cSJim Jagielski 			else
1776*b1cdbd2cSJim Jagielski 				xPropSet = xPropSet1;
1777*b1cdbd2cSJim Jagielski 		}
1778*b1cdbd2cSJim Jagielski 		else
1779*b1cdbd2cSJim Jagielski 		{
1780*b1cdbd2cSJim Jagielski 			xPropSet = xPropSet1;
1781*b1cdbd2cSJim Jagielski 		}
1782*b1cdbd2cSJim Jagielski 
1783*b1cdbd2cSJim Jagielski 		const UniReference< SvXMLExportPropertyMapper > aMapperRef( GetPresPagePropsMapper() );
1784*b1cdbd2cSJim Jagielski 
1785*b1cdbd2cSJim Jagielski 		std::vector< XMLPropertyState > xPropStates( aMapperRef->Filter( xPropSet ) );
1786*b1cdbd2cSJim Jagielski 
1787*b1cdbd2cSJim Jagielski 		if( !xPropStates.empty() )
1788*b1cdbd2cSJim Jagielski 		{
1789*b1cdbd2cSJim Jagielski 			// there are filtered properties -> hard attributes
1790*b1cdbd2cSJim Jagielski 			// try to find this style in AutoStylePool
1791*b1cdbd2cSJim Jagielski 			sStyleName = GetAutoStylePool()->Find(XML_STYLE_FAMILY_SD_DRAWINGPAGE_ID, sStyleName, xPropStates);
1792*b1cdbd2cSJim Jagielski 
1793*b1cdbd2cSJim Jagielski 			if(!sStyleName.getLength())
1794*b1cdbd2cSJim Jagielski 			{
1795*b1cdbd2cSJim Jagielski 				// Style did not exist, add it to AutoStalePool
1796*b1cdbd2cSJim Jagielski 				sStyleName = GetAutoStylePool()->Add(XML_STYLE_FAMILY_SD_DRAWINGPAGE_ID, sStyleName, xPropStates);
1797*b1cdbd2cSJim Jagielski 			}
1798*b1cdbd2cSJim Jagielski 		}
1799*b1cdbd2cSJim Jagielski 	}
1800*b1cdbd2cSJim Jagielski 
1801*b1cdbd2cSJim Jagielski 	return sStyleName;
1802*b1cdbd2cSJim Jagielski }
1803*b1cdbd2cSJim Jagielski 
1804*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
1805*b1cdbd2cSJim Jagielski 
ImpPrepMasterPageInfos()1806*b1cdbd2cSJim Jagielski void SdXMLExport::ImpPrepMasterPageInfos()
1807*b1cdbd2cSJim Jagielski {
1808*b1cdbd2cSJim Jagielski 	// create draw:style-name entries for master page export
1809*b1cdbd2cSJim Jagielski 	// containing only background attributes
1810*b1cdbd2cSJim Jagielski 	// fixed family for page-styles is "drawing-page" (XML_STYLE_FAMILY_SD_DRAWINGPAGE_NAME)
1811*b1cdbd2cSJim Jagielski 
1812*b1cdbd2cSJim Jagielski 	sal_Int32 nCnt;
1813*b1cdbd2cSJim Jagielski 	for( nCnt = 0; nCnt < mnDocMasterPageCount; nCnt++)
1814*b1cdbd2cSJim Jagielski 	{
1815*b1cdbd2cSJim Jagielski 		Reference<XDrawPage> xDrawPage;
1816*b1cdbd2cSJim Jagielski 		mxDocMasterPages->getByIndex(nCnt) >>= xDrawPage;
1817*b1cdbd2cSJim Jagielski 		maMasterPagesStyleNames[nCnt] = ImpCreatePresPageStyleName( xDrawPage );
1818*b1cdbd2cSJim Jagielski 	}
1819*b1cdbd2cSJim Jagielski 
1820*b1cdbd2cSJim Jagielski 	if( IsImpress() )
1821*b1cdbd2cSJim Jagielski 	{
1822*b1cdbd2cSJim Jagielski 		Reference< presentation::XHandoutMasterSupplier > xHandoutSupp( GetModel(), UNO_QUERY );
1823*b1cdbd2cSJim Jagielski 		if( xHandoutSupp.is() )
1824*b1cdbd2cSJim Jagielski 		{
1825*b1cdbd2cSJim Jagielski 			Reference< XDrawPage > xHandoutPage( xHandoutSupp->getHandoutMasterPage() );
1826*b1cdbd2cSJim Jagielski 			if( xHandoutPage.is() )
1827*b1cdbd2cSJim Jagielski 			{
1828*b1cdbd2cSJim Jagielski 				maHandoutPageHeaderFooterSettings = ImpPrepDrawPageHeaderFooterDecls( xHandoutPage );
1829*b1cdbd2cSJim Jagielski 				maHandoutMasterStyleName = ImpCreatePresPageStyleName( xHandoutPage, false );
1830*b1cdbd2cSJim Jagielski 			}
1831*b1cdbd2cSJim Jagielski 		}
1832*b1cdbd2cSJim Jagielski 	}
1833*b1cdbd2cSJim Jagielski }
1834*b1cdbd2cSJim Jagielski 
1835*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
ImpWritePresentationStyles()1836*b1cdbd2cSJim Jagielski void SdXMLExport::ImpWritePresentationStyles()
1837*b1cdbd2cSJim Jagielski {
1838*b1cdbd2cSJim Jagielski 	if(IsImpress())
1839*b1cdbd2cSJim Jagielski 	{
1840*b1cdbd2cSJim Jagielski         for (sal_Int32 nCnt = 0; nCnt < mnDocMasterPageCount; nCnt++)
1841*b1cdbd2cSJim Jagielski 		{
1842*b1cdbd2cSJim Jagielski 			Any aAny(mxDocMasterPages->getByIndex(nCnt));
1843*b1cdbd2cSJim Jagielski 			Reference<container::XNamed> xNamed;
1844*b1cdbd2cSJim Jagielski 
1845*b1cdbd2cSJim Jagielski 			if(aAny >>= xNamed)
1846*b1cdbd2cSJim Jagielski 			{
1847*b1cdbd2cSJim Jagielski 				// write presentation styles (ONLY if presentation)
1848*b1cdbd2cSJim Jagielski 				if(IsImpress() && mxDocStyleFamilies.is() && xNamed.is())
1849*b1cdbd2cSJim Jagielski 				{
1850*b1cdbd2cSJim Jagielski 					XMLStyleExport aStEx(*this, OUString(), GetAutoStylePool().get());
1851*b1cdbd2cSJim Jagielski 					const UniReference< SvXMLExportPropertyMapper > aMapperRef( GetPropertySetMapper() );
1852*b1cdbd2cSJim Jagielski 
1853*b1cdbd2cSJim Jagielski 					OUString aPrefix( xNamed->getName() );
1854*b1cdbd2cSJim Jagielski 
1855*b1cdbd2cSJim Jagielski 					aPrefix += OUString(RTL_CONSTASCII_USTRINGPARAM("-"));
1856*b1cdbd2cSJim Jagielski 					aStEx.exportStyleFamily(xNamed->getName(),
1857*b1cdbd2cSJim Jagielski 						OUString(RTL_CONSTASCII_USTRINGPARAM(XML_STYLE_FAMILY_SD_PRESENTATION_NAME)),
1858*b1cdbd2cSJim Jagielski                         aMapperRef, sal_False,
1859*b1cdbd2cSJim Jagielski 						XML_STYLE_FAMILY_SD_PRESENTATION_ID, &aPrefix);
1860*b1cdbd2cSJim Jagielski 				}
1861*b1cdbd2cSJim Jagielski 			}
1862*b1cdbd2cSJim Jagielski 		}
1863*b1cdbd2cSJim Jagielski 	}
1864*b1cdbd2cSJim Jagielski }
1865*b1cdbd2cSJim Jagielski 
1866*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
1867*b1cdbd2cSJim Jagielski 
SetProgress(sal_Int32 nProg)1868*b1cdbd2cSJim Jagielski void SdXMLExport::SetProgress(sal_Int32 nProg)
1869*b1cdbd2cSJim Jagielski {
1870*b1cdbd2cSJim Jagielski 	// set progress view
1871*b1cdbd2cSJim Jagielski 	if(GetStatusIndicator().is())
1872*b1cdbd2cSJim Jagielski 		GetStatusIndicator()->setValue(nProg);
1873*b1cdbd2cSJim Jagielski }
1874*b1cdbd2cSJim Jagielski 
1875*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
1876*b1cdbd2cSJim Jagielski // #82003#
1877*b1cdbd2cSJim Jagielski 
_ExportMeta()1878*b1cdbd2cSJim Jagielski void SdXMLExport::_ExportMeta()
1879*b1cdbd2cSJim Jagielski {
1880*b1cdbd2cSJim Jagielski     uno::Sequence<beans::NamedValue> stats(1);
1881*b1cdbd2cSJim Jagielski     stats[0] = beans::NamedValue(::rtl::OUString::createFromAscii("ObjectCount"),
1882*b1cdbd2cSJim Jagielski                 uno::makeAny(mnObjectCount));
1883*b1cdbd2cSJim Jagielski 
1884*b1cdbd2cSJim Jagielski     // update document statistics at the model
1885*b1cdbd2cSJim Jagielski     uno::Reference<document::XDocumentPropertiesSupplier> xPropSup(GetModel(),
1886*b1cdbd2cSJim Jagielski         uno::UNO_QUERY_THROW);
1887*b1cdbd2cSJim Jagielski     uno::Reference<document::XDocumentProperties> xDocProps(
1888*b1cdbd2cSJim Jagielski         xPropSup->getDocumentProperties());
1889*b1cdbd2cSJim Jagielski     if (xDocProps.is()) {
1890*b1cdbd2cSJim Jagielski         xDocProps->setDocumentStatistics(stats);
1891*b1cdbd2cSJim Jagielski     }
1892*b1cdbd2cSJim Jagielski 
1893*b1cdbd2cSJim Jagielski 	// call parent
1894*b1cdbd2cSJim Jagielski 	SvXMLExport::_ExportMeta();
1895*b1cdbd2cSJim Jagielski }
1896*b1cdbd2cSJim Jagielski 
1897*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
1898*b1cdbd2cSJim Jagielski 
_ExportContent()1899*b1cdbd2cSJim Jagielski void SdXMLExport::_ExportContent()
1900*b1cdbd2cSJim Jagielski {
1901*b1cdbd2cSJim Jagielski 	// export <pres:header-decl>, <pres:footer-decl> and <pres:date-time-decl> elements
1902*b1cdbd2cSJim Jagielski 	ImpWriteHeaderFooterDecls();
1903*b1cdbd2cSJim Jagielski 
1904*b1cdbd2cSJim Jagielski 	// page export
1905*b1cdbd2cSJim Jagielski 	for(sal_Int32 nPageInd(0); nPageInd < mnDocDrawPageCount; nPageInd++)
1906*b1cdbd2cSJim Jagielski 	{
1907*b1cdbd2cSJim Jagielski 		uno::Reference<drawing::XDrawPage> xDrawPage( mxDocDrawPages->getByIndex(nPageInd), uno::UNO_QUERY );
1908*b1cdbd2cSJim Jagielski 
1909*b1cdbd2cSJim Jagielski 		SetProgress(((nPageInd + 1) * 100) / mnDocDrawPageCount);
1910*b1cdbd2cSJim Jagielski 
1911*b1cdbd2cSJim Jagielski 		if(xDrawPage.is())
1912*b1cdbd2cSJim Jagielski 		{
1913*b1cdbd2cSJim Jagielski 			// prepare page attributes, name of page
1914*b1cdbd2cSJim Jagielski 			Reference < container::XNamed > xNamed(xDrawPage, UNO_QUERY);
1915*b1cdbd2cSJim Jagielski 			if(xNamed.is())
1916*b1cdbd2cSJim Jagielski 				AddAttribute(XML_NAMESPACE_DRAW, XML_NAME, xNamed->getName());
1917*b1cdbd2cSJim Jagielski 
1918*b1cdbd2cSJim Jagielski 			// draw:style-name (presentation page attributes AND background attributes)
1919*b1cdbd2cSJim Jagielski 			if( maDrawPagesStyleNames[nPageInd].getLength() )
1920*b1cdbd2cSJim Jagielski 				AddAttribute(XML_NAMESPACE_DRAW, XML_STYLE_NAME,
1921*b1cdbd2cSJim Jagielski 						maDrawPagesStyleNames[nPageInd]);
1922*b1cdbd2cSJim Jagielski 
1923*b1cdbd2cSJim Jagielski 			// draw:master-page-name
1924*b1cdbd2cSJim Jagielski 			Reference < drawing::XMasterPageTarget > xMasterPageInt(xDrawPage, UNO_QUERY);
1925*b1cdbd2cSJim Jagielski 			if(xMasterPageInt.is())
1926*b1cdbd2cSJim Jagielski 			{
1927*b1cdbd2cSJim Jagielski 				Reference<XDrawPage> xUsedMasterPage(xMasterPageInt->getMasterPage());
1928*b1cdbd2cSJim Jagielski 				if(xUsedMasterPage.is())
1929*b1cdbd2cSJim Jagielski 				{
1930*b1cdbd2cSJim Jagielski 					Reference < container::XNamed > xMasterNamed(xUsedMasterPage, UNO_QUERY);
1931*b1cdbd2cSJim Jagielski 					if(xMasterNamed.is())
1932*b1cdbd2cSJim Jagielski 					{
1933*b1cdbd2cSJim Jagielski 						AddAttribute(XML_NAMESPACE_DRAW, XML_MASTER_PAGE_NAME,
1934*b1cdbd2cSJim Jagielski 							EncodeStyleName( xMasterNamed->getName()) );
1935*b1cdbd2cSJim Jagielski 					}
1936*b1cdbd2cSJim Jagielski 				}
1937*b1cdbd2cSJim Jagielski 			}
1938*b1cdbd2cSJim Jagielski 
1939*b1cdbd2cSJim Jagielski 			// presentation:page-layout-name
1940*b1cdbd2cSJim Jagielski 			if( IsImpress() && maDrawPagesAutoLayoutNames[nPageInd+1].getLength())
1941*b1cdbd2cSJim Jagielski 			{
1942*b1cdbd2cSJim Jagielski 				AddAttribute(XML_NAMESPACE_PRESENTATION, XML_PRESENTATION_PAGE_LAYOUT_NAME, maDrawPagesAutoLayoutNames[nPageInd+1] );
1943*b1cdbd2cSJim Jagielski 			}
1944*b1cdbd2cSJim Jagielski 
1945*b1cdbd2cSJim Jagielski 			Reference< beans::XPropertySet > xProps( xDrawPage, UNO_QUERY );
1946*b1cdbd2cSJim Jagielski 			if( xProps.is() )
1947*b1cdbd2cSJim Jagielski 			{
1948*b1cdbd2cSJim Jagielski 				try
1949*b1cdbd2cSJim Jagielski 				{
1950*b1cdbd2cSJim Jagielski 					OUString aBookmarkURL;
1951*b1cdbd2cSJim Jagielski 					xProps->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "BookmarkURL" ) ) ) >>= aBookmarkURL;
1952*b1cdbd2cSJim Jagielski 
1953*b1cdbd2cSJim Jagielski 					if( aBookmarkURL.getLength() )
1954*b1cdbd2cSJim Jagielski 					{
1955*b1cdbd2cSJim Jagielski 						sal_Int32 nIndex = aBookmarkURL.lastIndexOf( (sal_Unicode)'#' );
1956*b1cdbd2cSJim Jagielski 						if( nIndex != -1 )
1957*b1cdbd2cSJim Jagielski 						{
1958*b1cdbd2cSJim Jagielski 							OUString aFileName( aBookmarkURL.copy( 0, nIndex ) );
1959*b1cdbd2cSJim Jagielski 							OUString aBookmarkName( aBookmarkURL.copy( nIndex+1 ) );
1960*b1cdbd2cSJim Jagielski 
1961*b1cdbd2cSJim Jagielski 							aBookmarkURL = GetRelativeReference( aFileName );
1962*b1cdbd2cSJim Jagielski 							aBookmarkURL += String( '#' );
1963*b1cdbd2cSJim Jagielski 							aBookmarkURL += aBookmarkName;
1964*b1cdbd2cSJim Jagielski 						}
1965*b1cdbd2cSJim Jagielski 
1966*b1cdbd2cSJim Jagielski 						AddAttribute ( XML_NAMESPACE_XLINK, XML_HREF, aBookmarkURL);
1967*b1cdbd2cSJim Jagielski 						AddAttribute ( XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE );
1968*b1cdbd2cSJim Jagielski 						AddAttribute ( XML_NAMESPACE_XLINK, XML_SHOW, XML_REPLACE );
1969*b1cdbd2cSJim Jagielski 						AddAttribute ( XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONREQUEST );
1970*b1cdbd2cSJim Jagielski 					}
1971*b1cdbd2cSJim Jagielski 				}
1972*b1cdbd2cSJim Jagielski 				catch( Exception& )
1973*b1cdbd2cSJim Jagielski 				{
1974*b1cdbd2cSJim Jagielski 					DBG_ERROR(" no \"BookmarkURL\" property at page?" );
1975*b1cdbd2cSJim Jagielski 				}
1976*b1cdbd2cSJim Jagielski 			}
1977*b1cdbd2cSJim Jagielski 
1978*b1cdbd2cSJim Jagielski 			if( IsImpress() )
1979*b1cdbd2cSJim Jagielski 				ImplExportHeaderFooterDeclAttributes( maDrawPagesHeaderFooterSettings[nPageInd] );
1980*b1cdbd2cSJim Jagielski 
1981*b1cdbd2cSJim Jagielski 
1982*b1cdbd2cSJim Jagielski 			OUString sNavigationOrder( getNavigationOrder( xDrawPage ) );
1983*b1cdbd2cSJim Jagielski 			if( sNavigationOrder.getLength() != 0 )
1984*b1cdbd2cSJim Jagielski 				AddAttribute ( XML_NAMESPACE_DRAW, XML_NAV_ORDER, sNavigationOrder );
1985*b1cdbd2cSJim Jagielski 
1986*b1cdbd2cSJim Jagielski 			UniReference< xmloff::AnimationsExporter >	xAnimationsExporter;
1987*b1cdbd2cSJim Jagielski 			uno::Reference< ::com::sun::star::animations::XAnimationNodeSupplier > xAnimNodeSupplier;
1988*b1cdbd2cSJim Jagielski 
1989*b1cdbd2cSJim Jagielski 			// prepare animation export
1990*b1cdbd2cSJim Jagielski 			if(IsImpress())
1991*b1cdbd2cSJim Jagielski 			{
1992*b1cdbd2cSJim Jagielski 				if( getExportFlags() & EXPORT_OASIS )
1993*b1cdbd2cSJim Jagielski 				{
1994*b1cdbd2cSJim Jagielski 					// export new animations for oasis format
1995*b1cdbd2cSJim Jagielski 					xAnimNodeSupplier.set( xDrawPage, UNO_QUERY );
1996*b1cdbd2cSJim Jagielski 
1997*b1cdbd2cSJim Jagielski 					// prepare animations exporter if impress
1998*b1cdbd2cSJim Jagielski 					if(xAnimNodeSupplier.is())
1999*b1cdbd2cSJim Jagielski 					{
2000*b1cdbd2cSJim Jagielski 						xAnimationsExporter = new xmloff::AnimationsExporter( *this, xProps );
2001*b1cdbd2cSJim Jagielski 						xAnimationsExporter->prepare( xAnimNodeSupplier->getAnimationNode() );
2002*b1cdbd2cSJim Jagielski 					}
2003*b1cdbd2cSJim Jagielski 				}
2004*b1cdbd2cSJim Jagielski 				else
2005*b1cdbd2cSJim Jagielski 				{
2006*b1cdbd2cSJim Jagielski 					// export old animations for ooo format
2007*b1cdbd2cSJim Jagielski 					UniReference< XMLAnimationsExporter > xAnimExport = new XMLAnimationsExporter( GetShapeExport().get() );
2008*b1cdbd2cSJim Jagielski 					GetShapeExport()->setAnimationsExporter( xAnimExport );
2009*b1cdbd2cSJim Jagielski 				}
2010*b1cdbd2cSJim Jagielski 			}
2011*b1cdbd2cSJim Jagielski 
2012*b1cdbd2cSJim Jagielski 			// write draw:id
2013*b1cdbd2cSJim Jagielski 	        const OUString aPageId = getInterfaceToIdentifierMapper().getIdentifier( xDrawPage );
2014*b1cdbd2cSJim Jagielski 			if( aPageId.getLength() != 0 )
2015*b1cdbd2cSJim Jagielski             {
2016*b1cdbd2cSJim Jagielski                 AddAttributeIdLegacy(XML_NAMESPACE_DRAW, aPageId);
2017*b1cdbd2cSJim Jagielski             }
2018*b1cdbd2cSJim Jagielski 
2019*b1cdbd2cSJim Jagielski 			// write page
2020*b1cdbd2cSJim Jagielski 			SvXMLElementExport aDPG(*this, XML_NAMESPACE_DRAW, XML_PAGE, sal_True, sal_True);
2021*b1cdbd2cSJim Jagielski 
2022*b1cdbd2cSJim Jagielski 			// write optional office:forms
2023*b1cdbd2cSJim Jagielski 			exportFormsElement( xDrawPage );
2024*b1cdbd2cSJim Jagielski 
2025*b1cdbd2cSJim Jagielski 			// write graphic objects on this page (if any)
2026*b1cdbd2cSJim Jagielski 			Reference< drawing::XShapes > xExportShapes(xDrawPage, UNO_QUERY);
2027*b1cdbd2cSJim Jagielski 			if(xExportShapes.is() && xExportShapes->getCount())
2028*b1cdbd2cSJim Jagielski 				GetShapeExport()->exportShapes( xExportShapes );
2029*b1cdbd2cSJim Jagielski 
2030*b1cdbd2cSJim Jagielski 			// write animations and presentation notes (ONLY if presentation)
2031*b1cdbd2cSJim Jagielski 			if(IsImpress())
2032*b1cdbd2cSJim Jagielski 			{
2033*b1cdbd2cSJim Jagielski 				if(xAnimNodeSupplier.is())
2034*b1cdbd2cSJim Jagielski 				{
2035*b1cdbd2cSJim Jagielski 					xAnimationsExporter->exportAnimations( xAnimNodeSupplier->getAnimationNode() );
2036*b1cdbd2cSJim Jagielski 				}
2037*b1cdbd2cSJim Jagielski 				else
2038*b1cdbd2cSJim Jagielski 				{
2039*b1cdbd2cSJim Jagielski 					// animations
2040*b1cdbd2cSJim Jagielski 					UniReference< XMLAnimationsExporter > xAnimExport( GetShapeExport()->getAnimationsExporter() );
2041*b1cdbd2cSJim Jagielski 					if( xAnimExport.is() )
2042*b1cdbd2cSJim Jagielski 						xAnimExport->exportAnimations( *this );
2043*b1cdbd2cSJim Jagielski 
2044*b1cdbd2cSJim Jagielski 					xAnimExport = NULL;
2045*b1cdbd2cSJim Jagielski 					GetShapeExport()->setAnimationsExporter( xAnimExport );
2046*b1cdbd2cSJim Jagielski 				}
2047*b1cdbd2cSJim Jagielski 
2048*b1cdbd2cSJim Jagielski 				// presentations
2049*b1cdbd2cSJim Jagielski 				Reference< presentation::XPresentationPage > xPresPage(xDrawPage, UNO_QUERY);
2050*b1cdbd2cSJim Jagielski 				if(xPresPage.is())
2051*b1cdbd2cSJim Jagielski 				{
2052*b1cdbd2cSJim Jagielski 					Reference< XDrawPage > xNotesPage(xPresPage->getNotesPage());
2053*b1cdbd2cSJim Jagielski 					if(xNotesPage.is())
2054*b1cdbd2cSJim Jagielski 					{
2055*b1cdbd2cSJim Jagielski 						Reference< drawing::XShapes > xShapes(xNotesPage, UNO_QUERY);
2056*b1cdbd2cSJim Jagielski 						if(xShapes.is())
2057*b1cdbd2cSJim Jagielski 						{
2058*b1cdbd2cSJim Jagielski 							if( maDrawNotesPagesStyleNames[nPageInd].getLength() )
2059*b1cdbd2cSJim Jagielski 								AddAttribute(XML_NAMESPACE_DRAW, XML_STYLE_NAME, maDrawNotesPagesStyleNames[nPageInd]);
2060*b1cdbd2cSJim Jagielski 
2061*b1cdbd2cSJim Jagielski 							ImplExportHeaderFooterDeclAttributes( maDrawNotesPagesHeaderFooterSettings[nPageInd] );
2062*b1cdbd2cSJim Jagielski 
2063*b1cdbd2cSJim Jagielski 							// write presentation notes
2064*b1cdbd2cSJim Jagielski 							SvXMLElementExport aPSY(*this, XML_NAMESPACE_PRESENTATION, XML_NOTES, sal_True, sal_True);
2065*b1cdbd2cSJim Jagielski 
2066*b1cdbd2cSJim Jagielski 							// write optional office:forms
2067*b1cdbd2cSJim Jagielski 							exportFormsElement( xNotesPage );
2068*b1cdbd2cSJim Jagielski 
2069*b1cdbd2cSJim Jagielski 							// write shapes per se
2070*b1cdbd2cSJim Jagielski 							GetShapeExport()->exportShapes( xShapes );
2071*b1cdbd2cSJim Jagielski 						}
2072*b1cdbd2cSJim Jagielski 					}
2073*b1cdbd2cSJim Jagielski 				}
2074*b1cdbd2cSJim Jagielski 			}
2075*b1cdbd2cSJim Jagielski 
2076*b1cdbd2cSJim Jagielski 			exportAnnotations( xDrawPage );
2077*b1cdbd2cSJim Jagielski 		}
2078*b1cdbd2cSJim Jagielski 	}
2079*b1cdbd2cSJim Jagielski 
2080*b1cdbd2cSJim Jagielski 	if( IsImpress() )
2081*b1cdbd2cSJim Jagielski 		exportPresentationSettings();
2082*b1cdbd2cSJim Jagielski }
2083*b1cdbd2cSJim Jagielski 
2084*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
2085*b1cdbd2cSJim Jagielski 
exportPresentationSettings()2086*b1cdbd2cSJim Jagielski void SdXMLExport::exportPresentationSettings()
2087*b1cdbd2cSJim Jagielski {
2088*b1cdbd2cSJim Jagielski 	try
2089*b1cdbd2cSJim Jagielski 	{
2090*b1cdbd2cSJim Jagielski 		Reference< XPresentationSupplier > xPresSupplier( GetModel(), UNO_QUERY );
2091*b1cdbd2cSJim Jagielski 		if( !xPresSupplier.is() )
2092*b1cdbd2cSJim Jagielski 			return;
2093*b1cdbd2cSJim Jagielski 
2094*b1cdbd2cSJim Jagielski 		Reference< XPropertySet > xPresProps( xPresSupplier->getPresentation(), UNO_QUERY );
2095*b1cdbd2cSJim Jagielski 		if( !xPresProps.is() )
2096*b1cdbd2cSJim Jagielski 			return;
2097*b1cdbd2cSJim Jagielski 
2098*b1cdbd2cSJim Jagielski 		sal_Bool bHasAttr = sal_False;
2099*b1cdbd2cSJim Jagielski 
2100*b1cdbd2cSJim Jagielski 		sal_Bool bTemp = false;
2101*b1cdbd2cSJim Jagielski 
2102*b1cdbd2cSJim Jagielski 		// export range
2103*b1cdbd2cSJim Jagielski 		xPresProps->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "IsShowAll" ) ) ) >>= bTemp;
2104*b1cdbd2cSJim Jagielski 		if( !bTemp )
2105*b1cdbd2cSJim Jagielski 		{
2106*b1cdbd2cSJim Jagielski 			OUString aFirstPage;
2107*b1cdbd2cSJim Jagielski 			xPresProps->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "FirstPage" ) ) ) >>= aFirstPage;
2108*b1cdbd2cSJim Jagielski 			if( aFirstPage.getLength() )
2109*b1cdbd2cSJim Jagielski 			{
2110*b1cdbd2cSJim Jagielski 				AddAttribute(XML_NAMESPACE_PRESENTATION, XML_START_PAGE, aFirstPage );
2111*b1cdbd2cSJim Jagielski 				bHasAttr = sal_True;
2112*b1cdbd2cSJim Jagielski 			}
2113*b1cdbd2cSJim Jagielski 			else
2114*b1cdbd2cSJim Jagielski 			{
2115*b1cdbd2cSJim Jagielski 				OUString aCustomShow;
2116*b1cdbd2cSJim Jagielski 				xPresProps->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "CustomShow" ) ) ) >>= aCustomShow;
2117*b1cdbd2cSJim Jagielski 				if( aCustomShow.getLength() )
2118*b1cdbd2cSJim Jagielski 				{
2119*b1cdbd2cSJim Jagielski 					AddAttribute(XML_NAMESPACE_PRESENTATION, XML_SHOW, aCustomShow );
2120*b1cdbd2cSJim Jagielski 					bHasAttr = sal_True;
2121*b1cdbd2cSJim Jagielski 				}
2122*b1cdbd2cSJim Jagielski 			}
2123*b1cdbd2cSJim Jagielski 		}
2124*b1cdbd2cSJim Jagielski 
2125*b1cdbd2cSJim Jagielski 		xPresProps->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "IsEndless" ) ) ) >>= bTemp;
2126*b1cdbd2cSJim Jagielski 		if( bTemp )
2127*b1cdbd2cSJim Jagielski 		{
2128*b1cdbd2cSJim Jagielski 			AddAttribute(XML_NAMESPACE_PRESENTATION, XML_ENDLESS, XML_TRUE );
2129*b1cdbd2cSJim Jagielski 			bHasAttr = sal_True;
2130*b1cdbd2cSJim Jagielski 
2131*b1cdbd2cSJim Jagielski 			sal_Int32 nPause = 0;
2132*b1cdbd2cSJim Jagielski 			xPresProps->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "Pause" ) ) ) >>= nPause;
2133*b1cdbd2cSJim Jagielski 
2134*b1cdbd2cSJim Jagielski 			util::DateTime aTime( 0, (sal_uInt16)nPause, 0, 0, 0, 0, 0 );
2135*b1cdbd2cSJim Jagielski 
2136*b1cdbd2cSJim Jagielski 			OUStringBuffer aOut;
2137*b1cdbd2cSJim Jagielski 			SvXMLUnitConverter::convertTime( aOut, aTime );
2138*b1cdbd2cSJim Jagielski 			AddAttribute(XML_NAMESPACE_PRESENTATION, XML_PAUSE, aOut.makeStringAndClear() );
2139*b1cdbd2cSJim Jagielski 		}
2140*b1cdbd2cSJim Jagielski 
2141*b1cdbd2cSJim Jagielski 		xPresProps->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "AllowAnimations" ) ) ) >>= bTemp;
2142*b1cdbd2cSJim Jagielski 		if( !bTemp )
2143*b1cdbd2cSJim Jagielski 		{
2144*b1cdbd2cSJim Jagielski 			AddAttribute(XML_NAMESPACE_PRESENTATION, XML_ANIMATIONS, XML_DISABLED );
2145*b1cdbd2cSJim Jagielski 			bHasAttr = sal_True;
2146*b1cdbd2cSJim Jagielski 		}
2147*b1cdbd2cSJim Jagielski 
2148*b1cdbd2cSJim Jagielski 		xPresProps->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "IsAlwaysOnTop" ) ) ) >>= bTemp;
2149*b1cdbd2cSJim Jagielski 		if( bTemp )
2150*b1cdbd2cSJim Jagielski 		{
2151*b1cdbd2cSJim Jagielski 			AddAttribute(XML_NAMESPACE_PRESENTATION, XML_STAY_ON_TOP, XML_TRUE );
2152*b1cdbd2cSJim Jagielski 			bHasAttr = sal_True;
2153*b1cdbd2cSJim Jagielski 		}
2154*b1cdbd2cSJim Jagielski 
2155*b1cdbd2cSJim Jagielski 		xPresProps->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "IsAutomatic" ) ) ) >>= bTemp;
2156*b1cdbd2cSJim Jagielski 		if( bTemp )
2157*b1cdbd2cSJim Jagielski 		{
2158*b1cdbd2cSJim Jagielski 			AddAttribute(XML_NAMESPACE_PRESENTATION, XML_FORCE_MANUAL, XML_TRUE );
2159*b1cdbd2cSJim Jagielski 			bHasAttr = sal_True;
2160*b1cdbd2cSJim Jagielski 		}
2161*b1cdbd2cSJim Jagielski 
2162*b1cdbd2cSJim Jagielski 		xPresProps->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "IsFullScreen" ) ) ) >>= bTemp;
2163*b1cdbd2cSJim Jagielski 		if( !bTemp )
2164*b1cdbd2cSJim Jagielski 		{
2165*b1cdbd2cSJim Jagielski 			AddAttribute(XML_NAMESPACE_PRESENTATION, XML_FULL_SCREEN, XML_FALSE );
2166*b1cdbd2cSJim Jagielski 			bHasAttr = sal_True;
2167*b1cdbd2cSJim Jagielski 		}
2168*b1cdbd2cSJim Jagielski 
2169*b1cdbd2cSJim Jagielski 		xPresProps->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "IsMouseVisible" ) ) ) >>= bTemp;
2170*b1cdbd2cSJim Jagielski 		if( !bTemp )
2171*b1cdbd2cSJim Jagielski 		{
2172*b1cdbd2cSJim Jagielski 			AddAttribute(XML_NAMESPACE_PRESENTATION, XML_MOUSE_VISIBLE, XML_FALSE );
2173*b1cdbd2cSJim Jagielski 			bHasAttr = sal_True;
2174*b1cdbd2cSJim Jagielski 		}
2175*b1cdbd2cSJim Jagielski 
2176*b1cdbd2cSJim Jagielski 		xPresProps->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "StartWithNavigator" ) ) ) >>= bTemp;
2177*b1cdbd2cSJim Jagielski 		if( bTemp )
2178*b1cdbd2cSJim Jagielski 		{
2179*b1cdbd2cSJim Jagielski 			AddAttribute(XML_NAMESPACE_PRESENTATION, XML_START_WITH_NAVIGATOR, XML_TRUE );
2180*b1cdbd2cSJim Jagielski 			bHasAttr = sal_True;
2181*b1cdbd2cSJim Jagielski 		}
2182*b1cdbd2cSJim Jagielski 
2183*b1cdbd2cSJim Jagielski 		xPresProps->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "UsePen" ) ) ) >>= bTemp;
2184*b1cdbd2cSJim Jagielski 		if( bTemp )
2185*b1cdbd2cSJim Jagielski 		{
2186*b1cdbd2cSJim Jagielski 			AddAttribute(XML_NAMESPACE_PRESENTATION, XML_MOUSE_AS_PEN, XML_TRUE );
2187*b1cdbd2cSJim Jagielski 			bHasAttr = sal_True;
2188*b1cdbd2cSJim Jagielski 		}
2189*b1cdbd2cSJim Jagielski 
2190*b1cdbd2cSJim Jagielski 		xPresProps->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "IsTransitionOnClick" ) ) ) >>= bTemp;
2191*b1cdbd2cSJim Jagielski 		if( !bTemp )
2192*b1cdbd2cSJim Jagielski 		{
2193*b1cdbd2cSJim Jagielski 			AddAttribute(XML_NAMESPACE_PRESENTATION, XML_TRANSITION_ON_CLICK, XML_DISABLED );
2194*b1cdbd2cSJim Jagielski 			bHasAttr = sal_True;
2195*b1cdbd2cSJim Jagielski 		}
2196*b1cdbd2cSJim Jagielski 
2197*b1cdbd2cSJim Jagielski 		xPresProps->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "IsShowLogo" ) ) ) >>= bTemp;
2198*b1cdbd2cSJim Jagielski 		if( bTemp )
2199*b1cdbd2cSJim Jagielski 		{
2200*b1cdbd2cSJim Jagielski 			AddAttribute(XML_NAMESPACE_PRESENTATION, XML_SHOW_LOGO, XML_TRUE );
2201*b1cdbd2cSJim Jagielski 			bHasAttr = sal_True;
2202*b1cdbd2cSJim Jagielski 		}
2203*b1cdbd2cSJim Jagielski 
2204*b1cdbd2cSJim Jagielski 		Reference< container::XNameContainer > xShows;
2205*b1cdbd2cSJim Jagielski 		Sequence< OUString > aShowNames;
2206*b1cdbd2cSJim Jagielski 		const OUString* pShowNames = NULL;
2207*b1cdbd2cSJim Jagielski 		sal_Int32 nShowCount = 0;
2208*b1cdbd2cSJim Jagielski 
2209*b1cdbd2cSJim Jagielski 		Reference< XCustomPresentationSupplier > xSup( GetModel(), UNO_QUERY );
2210*b1cdbd2cSJim Jagielski 		if( xSup.is() )
2211*b1cdbd2cSJim Jagielski 		{
2212*b1cdbd2cSJim Jagielski 			xShows = xSup->getCustomPresentations();
2213*b1cdbd2cSJim Jagielski 			if( xShows.is() )
2214*b1cdbd2cSJim Jagielski 			{
2215*b1cdbd2cSJim Jagielski 				aShowNames = xShows->getElementNames();
2216*b1cdbd2cSJim Jagielski 				pShowNames = aShowNames.getArray();
2217*b1cdbd2cSJim Jagielski 				nShowCount = aShowNames.getLength();
2218*b1cdbd2cSJim Jagielski 			}
2219*b1cdbd2cSJim Jagielski 		}
2220*b1cdbd2cSJim Jagielski 
2221*b1cdbd2cSJim Jagielski 		if( bHasAttr || nShowCount != 0 )
2222*b1cdbd2cSJim Jagielski 		{
2223*b1cdbd2cSJim Jagielski 			SvXMLElementExport aSettings(*this, XML_NAMESPACE_PRESENTATION, XML_SETTINGS, sal_True, sal_True);
2224*b1cdbd2cSJim Jagielski 
2225*b1cdbd2cSJim Jagielski 			if( nShowCount == 0 )
2226*b1cdbd2cSJim Jagielski 				return;
2227*b1cdbd2cSJim Jagielski 
2228*b1cdbd2cSJim Jagielski 			Reference< XIndexContainer > xShow;
2229*b1cdbd2cSJim Jagielski 			Reference< XNamed > xPageName;
2230*b1cdbd2cSJim Jagielski 
2231*b1cdbd2cSJim Jagielski 			OUStringBuffer sTmp;
2232*b1cdbd2cSJim Jagielski 
2233*b1cdbd2cSJim Jagielski 			for( sal_Int32 nIndex = 0; nIndex < nShowCount; nIndex++, pShowNames++ )
2234*b1cdbd2cSJim Jagielski 			{
2235*b1cdbd2cSJim Jagielski 				AddAttribute(XML_NAMESPACE_PRESENTATION, XML_NAME, *pShowNames );
2236*b1cdbd2cSJim Jagielski 
2237*b1cdbd2cSJim Jagielski 				xShows->getByName( *pShowNames ) >>= xShow;
2238*b1cdbd2cSJim Jagielski 				DBG_ASSERT( xShow.is(), "invalid custom show!" );
2239*b1cdbd2cSJim Jagielski 				if( !xShow.is() )
2240*b1cdbd2cSJim Jagielski 					continue;
2241*b1cdbd2cSJim Jagielski 
2242*b1cdbd2cSJim Jagielski 				const sal_Int32 nPageCount = xShow->getCount();
2243*b1cdbd2cSJim Jagielski 				for( sal_Int32 nPage = 0; nPage < nPageCount; nPage++ )
2244*b1cdbd2cSJim Jagielski 				{
2245*b1cdbd2cSJim Jagielski 					xShow->getByIndex( nPage ) >>= xPageName;
2246*b1cdbd2cSJim Jagielski 
2247*b1cdbd2cSJim Jagielski 					if( !xPageName.is() )
2248*b1cdbd2cSJim Jagielski 						continue;
2249*b1cdbd2cSJim Jagielski 
2250*b1cdbd2cSJim Jagielski 					if( sTmp.getLength() != 0 )
2251*b1cdbd2cSJim Jagielski 						sTmp.append( sal_Unicode( ',' ) );
2252*b1cdbd2cSJim Jagielski 					sTmp.append( xPageName->getName() );
2253*b1cdbd2cSJim Jagielski 
2254*b1cdbd2cSJim Jagielski 				}
2255*b1cdbd2cSJim Jagielski 
2256*b1cdbd2cSJim Jagielski 				if( sTmp.getLength() )
2257*b1cdbd2cSJim Jagielski 					AddAttribute(XML_NAMESPACE_PRESENTATION, XML_PAGES, sTmp.makeStringAndClear() );
2258*b1cdbd2cSJim Jagielski 
2259*b1cdbd2cSJim Jagielski 				SvXMLElementExport aShows(*this, XML_NAMESPACE_PRESENTATION, XML_SHOW, sal_True, sal_True);
2260*b1cdbd2cSJim Jagielski 			}
2261*b1cdbd2cSJim Jagielski 		}
2262*b1cdbd2cSJim Jagielski 	}
2263*b1cdbd2cSJim Jagielski 	catch( uno::Exception )
2264*b1cdbd2cSJim Jagielski 	{
2265*b1cdbd2cSJim Jagielski 		DBG_ERROR( "uno::Exception while exporting <presentation:settings>" );
2266*b1cdbd2cSJim Jagielski 	}
2267*b1cdbd2cSJim Jagielski }
2268*b1cdbd2cSJim Jagielski 
2269*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
2270*b1cdbd2cSJim Jagielski 
_ExportStyles(sal_Bool bUsed)2271*b1cdbd2cSJim Jagielski void SdXMLExport::_ExportStyles(sal_Bool bUsed)
2272*b1cdbd2cSJim Jagielski {
2273*b1cdbd2cSJim Jagielski 	GetPropertySetMapper()->SetAutoStyles( sal_False );
2274*b1cdbd2cSJim Jagielski 
2275*b1cdbd2cSJim Jagielski 	// export fill styles
2276*b1cdbd2cSJim Jagielski 	SvXMLExport::_ExportStyles( bUsed );
2277*b1cdbd2cSJim Jagielski 
2278*b1cdbd2cSJim Jagielski 	// write draw:style-name for object graphic-styles
2279*b1cdbd2cSJim Jagielski 	GetShapeExport()->ExportGraphicDefaults();
2280*b1cdbd2cSJim Jagielski 
2281*b1cdbd2cSJim Jagielski 	// do not export in ODF 1.1 or older
2282*b1cdbd2cSJim Jagielski 	if( getDefaultVersion() >= SvtSaveOptions::ODFVER_012 )
2283*b1cdbd2cSJim Jagielski 		GetShapeExport()->GetShapeTableExport()->exportTableStyles();
2284*b1cdbd2cSJim Jagielski 
2285*b1cdbd2cSJim Jagielski 	// write presentation styles
2286*b1cdbd2cSJim Jagielski 	ImpWritePresentationStyles();
2287*b1cdbd2cSJim Jagielski 
2288*b1cdbd2cSJim Jagielski 	// prepare draw:auto-layout-name for page export
2289*b1cdbd2cSJim Jagielski 	ImpPrepAutoLayoutInfos();
2290*b1cdbd2cSJim Jagielski 
2291*b1cdbd2cSJim Jagielski 	// write draw:auto-layout-name for page export
2292*b1cdbd2cSJim Jagielski 	ImpWriteAutoLayoutInfos();
2293*b1cdbd2cSJim Jagielski 
2294*b1cdbd2cSJim Jagielski 	Reference< beans::XPropertySet > xInfoSet( getExportInfo() );
2295*b1cdbd2cSJim Jagielski 	if( xInfoSet.is() )
2296*b1cdbd2cSJim Jagielski 	{
2297*b1cdbd2cSJim Jagielski 		Reference< beans::XPropertySetInfo > xInfoSetInfo( xInfoSet->getPropertySetInfo() );
2298*b1cdbd2cSJim Jagielski 
2299*b1cdbd2cSJim Jagielski 		Any aAny;
2300*b1cdbd2cSJim Jagielski 
2301*b1cdbd2cSJim Jagielski 		if( xInfoSetInfo->hasPropertyByName( msPageLayoutNames ) )
2302*b1cdbd2cSJim Jagielski 		{
2303*b1cdbd2cSJim Jagielski 			aAny <<= maDrawPagesAutoLayoutNames;
2304*b1cdbd2cSJim Jagielski 			xInfoSet->setPropertyValue( msPageLayoutNames, aAny );
2305*b1cdbd2cSJim Jagielski 		}
2306*b1cdbd2cSJim Jagielski 	}
2307*b1cdbd2cSJim Jagielski }
2308*b1cdbd2cSJim Jagielski 
2309*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
2310*b1cdbd2cSJim Jagielski 
_ExportAutoStyles()2311*b1cdbd2cSJim Jagielski void SdXMLExport::_ExportAutoStyles()
2312*b1cdbd2cSJim Jagielski {
2313*b1cdbd2cSJim Jagielski 	Reference< beans::XPropertySet > xInfoSet( getExportInfo() );
2314*b1cdbd2cSJim Jagielski 	if( xInfoSet.is() )
2315*b1cdbd2cSJim Jagielski 	{
2316*b1cdbd2cSJim Jagielski 		Reference< beans::XPropertySetInfo > xInfoSetInfo( xInfoSet->getPropertySetInfo() );
2317*b1cdbd2cSJim Jagielski 
2318*b1cdbd2cSJim Jagielski 		if( xInfoSetInfo->hasPropertyByName( msPageLayoutNames ) )
2319*b1cdbd2cSJim Jagielski 		{
2320*b1cdbd2cSJim Jagielski 			xInfoSet->getPropertyValue( msPageLayoutNames ) >>= maDrawPagesAutoLayoutNames;
2321*b1cdbd2cSJim Jagielski 		}
2322*b1cdbd2cSJim Jagielski 	}
2323*b1cdbd2cSJim Jagielski 
2324*b1cdbd2cSJim Jagielski 	GetPropertySetMapper()->SetAutoStyles( sal_True );
2325*b1cdbd2cSJim Jagielski 
2326*b1cdbd2cSJim Jagielski 	if( getExportFlags() & EXPORT_STYLES )
2327*b1cdbd2cSJim Jagielski 	{
2328*b1cdbd2cSJim Jagielski 		// #80012# PageMaster export moved from _ExportStyles
2329*b1cdbd2cSJim Jagielski 		// prepare page-master infos
2330*b1cdbd2cSJim Jagielski 		ImpPrepPageMasterInfos();
2331*b1cdbd2cSJim Jagielski 
2332*b1cdbd2cSJim Jagielski 		// write page-master infos
2333*b1cdbd2cSJim Jagielski 		ImpWritePageMasterInfos();
2334*b1cdbd2cSJim Jagielski 
2335*b1cdbd2cSJim Jagielski 		// prepare draw:style-name for master page export
2336*b1cdbd2cSJim Jagielski 		ImpPrepMasterPageInfos();
2337*b1cdbd2cSJim Jagielski 	}
2338*b1cdbd2cSJim Jagielski 
2339*b1cdbd2cSJim Jagielski 	if( getExportFlags() & EXPORT_CONTENT )
2340*b1cdbd2cSJim Jagielski 	{
2341*b1cdbd2cSJim Jagielski 		// prepare draw:style-name for page export
2342*b1cdbd2cSJim Jagielski 		ImpPrepDrawPageInfos();
2343*b1cdbd2cSJim Jagielski 	}
2344*b1cdbd2cSJim Jagielski 
2345*b1cdbd2cSJim Jagielski 	// export draw-page styles
2346*b1cdbd2cSJim Jagielski 	GetAutoStylePool()->exportXML(
2347*b1cdbd2cSJim Jagielski 		XML_STYLE_FAMILY_SD_DRAWINGPAGE_ID
2348*b1cdbd2cSJim Jagielski 		, GetDocHandler(),
2349*b1cdbd2cSJim Jagielski 		GetMM100UnitConverter(),
2350*b1cdbd2cSJim Jagielski 		GetNamespaceMap()
2351*b1cdbd2cSJim Jagielski         );
2352*b1cdbd2cSJim Jagielski 
2353*b1cdbd2cSJim Jagielski 	if( getExportFlags() & EXPORT_STYLES )
2354*b1cdbd2cSJim Jagielski 	{
2355*b1cdbd2cSJim Jagielski 		// create auto style infos for shapes on master handout page
2356*b1cdbd2cSJim Jagielski 		if( IsImpress() )
2357*b1cdbd2cSJim Jagielski 		{
2358*b1cdbd2cSJim Jagielski 			Reference< presentation::XHandoutMasterSupplier > xHandoutSupp( GetModel(), UNO_QUERY );
2359*b1cdbd2cSJim Jagielski 			if( xHandoutSupp.is() )
2360*b1cdbd2cSJim Jagielski 			{
2361*b1cdbd2cSJim Jagielski 				Reference< XDrawPage > xHandoutPage( xHandoutSupp->getHandoutMasterPage() );
2362*b1cdbd2cSJim Jagielski 				if( xHandoutPage.is() )
2363*b1cdbd2cSJim Jagielski 				{
2364*b1cdbd2cSJim Jagielski 					Reference< drawing::XShapes > xShapes(xHandoutPage, UNO_QUERY);
2365*b1cdbd2cSJim Jagielski 					if(xShapes.is() && xShapes->getCount())
2366*b1cdbd2cSJim Jagielski 						GetShapeExport()->collectShapesAutoStyles( xShapes );
2367*b1cdbd2cSJim Jagielski 				}
2368*b1cdbd2cSJim Jagielski 			}
2369*b1cdbd2cSJim Jagielski 		}
2370*b1cdbd2cSJim Jagielski 
2371*b1cdbd2cSJim Jagielski 		// create auto style infos for objects on master pages
2372*b1cdbd2cSJim Jagielski 		for(sal_Int32 nMPageId(0L); nMPageId < mnDocMasterPageCount; nMPageId++)
2373*b1cdbd2cSJim Jagielski 		{
2374*b1cdbd2cSJim Jagielski 			Reference< XDrawPage > xMasterPage(mxDocMasterPages->getByIndex(nMPageId), UNO_QUERY );
2375*b1cdbd2cSJim Jagielski 
2376*b1cdbd2cSJim Jagielski 			if( xMasterPage.is() )
2377*b1cdbd2cSJim Jagielski 			{
2378*b1cdbd2cSJim Jagielski 				// collect layer information
2379*b1cdbd2cSJim Jagielski 				GetFormExport()->examineForms( xMasterPage );
2380*b1cdbd2cSJim Jagielski 
2381*b1cdbd2cSJim Jagielski 				// get MasterPage Name
2382*b1cdbd2cSJim Jagielski 				OUString aMasterPageNamePrefix;
2383*b1cdbd2cSJim Jagielski 				Reference < container::XNamed > xNamed(xMasterPage, UNO_QUERY);
2384*b1cdbd2cSJim Jagielski 				if(xNamed.is())
2385*b1cdbd2cSJim Jagielski 				{
2386*b1cdbd2cSJim Jagielski 					aMasterPageNamePrefix = xNamed->getName();
2387*b1cdbd2cSJim Jagielski 				}
2388*b1cdbd2cSJim Jagielski 				if(aMasterPageNamePrefix.getLength())
2389*b1cdbd2cSJim Jagielski 				{
2390*b1cdbd2cSJim Jagielski 					aMasterPageNamePrefix += OUString(RTL_CONSTASCII_USTRINGPARAM("-"));
2391*b1cdbd2cSJim Jagielski 				}
2392*b1cdbd2cSJim Jagielski 				GetShapeExport()->setPresentationStylePrefix( aMasterPageNamePrefix );
2393*b1cdbd2cSJim Jagielski 
2394*b1cdbd2cSJim Jagielski 				Reference< drawing::XShapes > xMasterShapes(xMasterPage, UNO_QUERY);
2395*b1cdbd2cSJim Jagielski 				if(xMasterShapes.is() && xMasterShapes->getCount())
2396*b1cdbd2cSJim Jagielski 					GetShapeExport()->collectShapesAutoStyles( xMasterShapes );
2397*b1cdbd2cSJim Jagielski 
2398*b1cdbd2cSJim Jagielski 				if(IsImpress())
2399*b1cdbd2cSJim Jagielski 				{
2400*b1cdbd2cSJim Jagielski 					Reference< presentation::XPresentationPage > xPresPage(xMasterPage, UNO_QUERY);
2401*b1cdbd2cSJim Jagielski 					if(xPresPage.is())
2402*b1cdbd2cSJim Jagielski 					{
2403*b1cdbd2cSJim Jagielski 						Reference< XDrawPage > xNotesPage(xPresPage->getNotesPage());
2404*b1cdbd2cSJim Jagielski 						if(xNotesPage.is())
2405*b1cdbd2cSJim Jagielski 						{
2406*b1cdbd2cSJim Jagielski 							// collect layer information
2407*b1cdbd2cSJim Jagielski 							GetFormExport()->examineForms( xNotesPage );
2408*b1cdbd2cSJim Jagielski 
2409*b1cdbd2cSJim Jagielski 							Reference< drawing::XShapes > xShapes(xNotesPage, UNO_QUERY);
2410*b1cdbd2cSJim Jagielski 							if(xShapes.is() && xShapes->getCount())
2411*b1cdbd2cSJim Jagielski 								GetShapeExport()->collectShapesAutoStyles( xShapes );
2412*b1cdbd2cSJim Jagielski 						}
2413*b1cdbd2cSJim Jagielski 					}
2414*b1cdbd2cSJim Jagielski 				}
2415*b1cdbd2cSJim Jagielski 				collectAnnotationAutoStyles(xMasterPage);
2416*b1cdbd2cSJim Jagielski 			}
2417*b1cdbd2cSJim Jagielski 		}
2418*b1cdbd2cSJim Jagielski 	}
2419*b1cdbd2cSJim Jagielski 
2420*b1cdbd2cSJim Jagielski 	if( getExportFlags() & EXPORT_CONTENT )
2421*b1cdbd2cSJim Jagielski 	{
2422*b1cdbd2cSJim Jagielski 		// prepare animations exporter if impress
2423*b1cdbd2cSJim Jagielski 		if(IsImpress() && ((getExportFlags() & EXPORT_OASIS) == 0) )
2424*b1cdbd2cSJim Jagielski 		{
2425*b1cdbd2cSJim Jagielski 			UniReference< XMLAnimationsExporter > xAnimExport = new XMLAnimationsExporter( GetShapeExport().get() );
2426*b1cdbd2cSJim Jagielski 			GetShapeExport()->setAnimationsExporter( xAnimExport );
2427*b1cdbd2cSJim Jagielski 		}
2428*b1cdbd2cSJim Jagielski 
2429*b1cdbd2cSJim Jagielski 		// create auto style infos for objects on pages
2430*b1cdbd2cSJim Jagielski 		for(sal_Int32 nPageInd(0); nPageInd < mnDocDrawPageCount; nPageInd++)
2431*b1cdbd2cSJim Jagielski 		{
2432*b1cdbd2cSJim Jagielski 			Reference<XDrawPage> xDrawPage( mxDocDrawPages->getByIndex(nPageInd), UNO_QUERY );
2433*b1cdbd2cSJim Jagielski 			if( xDrawPage.is() )
2434*b1cdbd2cSJim Jagielski 			{
2435*b1cdbd2cSJim Jagielski 				// collect layer information
2436*b1cdbd2cSJim Jagielski 				GetFormExport()->examineForms( xDrawPage );
2437*b1cdbd2cSJim Jagielski 
2438*b1cdbd2cSJim Jagielski 				// get MasterPage Name
2439*b1cdbd2cSJim Jagielski 				OUString aMasterPageNamePrefix;
2440*b1cdbd2cSJim Jagielski 				Reference < drawing::XMasterPageTarget > xMasterPageInt(xDrawPage, UNO_QUERY);
2441*b1cdbd2cSJim Jagielski 				if(xMasterPageInt.is())
2442*b1cdbd2cSJim Jagielski 				{
2443*b1cdbd2cSJim Jagielski 					Reference<XDrawPage> xUsedMasterPage(xMasterPageInt->getMasterPage());
2444*b1cdbd2cSJim Jagielski 					if(xUsedMasterPage.is())
2445*b1cdbd2cSJim Jagielski 					{
2446*b1cdbd2cSJim Jagielski 						Reference < container::XNamed > xMasterNamed(xUsedMasterPage, UNO_QUERY);
2447*b1cdbd2cSJim Jagielski 						if(xMasterNamed.is())
2448*b1cdbd2cSJim Jagielski 						{
2449*b1cdbd2cSJim Jagielski 							aMasterPageNamePrefix = xMasterNamed->getName();
2450*b1cdbd2cSJim Jagielski 						}
2451*b1cdbd2cSJim Jagielski 					}
2452*b1cdbd2cSJim Jagielski 				}
2453*b1cdbd2cSJim Jagielski 				if(aMasterPageNamePrefix.getLength())
2454*b1cdbd2cSJim Jagielski 				{
2455*b1cdbd2cSJim Jagielski 					aMasterPageNamePrefix += OUString(RTL_CONSTASCII_USTRINGPARAM("-"));
2456*b1cdbd2cSJim Jagielski 				}
2457*b1cdbd2cSJim Jagielski 
2458*b1cdbd2cSJim Jagielski 				GetShapeExport()->setPresentationStylePrefix( aMasterPageNamePrefix );
2459*b1cdbd2cSJim Jagielski 
2460*b1cdbd2cSJim Jagielski 				// prepare object infos
2461*b1cdbd2cSJim Jagielski 				Reference< drawing::XShapes > xDrawShapes(xDrawPage, UNO_QUERY);
2462*b1cdbd2cSJim Jagielski 				if(xDrawShapes.is() && xDrawShapes->getCount())
2463*b1cdbd2cSJim Jagielski 					GetShapeExport()->collectShapesAutoStyles( xDrawShapes );
2464*b1cdbd2cSJim Jagielski 
2465*b1cdbd2cSJim Jagielski 				// prepare presentation notes page object infos (ONLY if presentation)
2466*b1cdbd2cSJim Jagielski 				if(IsImpress())
2467*b1cdbd2cSJim Jagielski 				{
2468*b1cdbd2cSJim Jagielski 					Reference< presentation::XPresentationPage > xPresPage(xDrawPage, UNO_QUERY);
2469*b1cdbd2cSJim Jagielski 					if(xPresPage.is())
2470*b1cdbd2cSJim Jagielski 					{
2471*b1cdbd2cSJim Jagielski 						Reference< XDrawPage > xNotesPage(xPresPage->getNotesPage());
2472*b1cdbd2cSJim Jagielski 						if(xNotesPage.is())
2473*b1cdbd2cSJim Jagielski 						{
2474*b1cdbd2cSJim Jagielski 							// collect layer information
2475*b1cdbd2cSJim Jagielski 							GetFormExport()->examineForms( xNotesPage );
2476*b1cdbd2cSJim Jagielski 
2477*b1cdbd2cSJim Jagielski 							Reference< drawing::XShapes > xShapes(xNotesPage, UNO_QUERY);
2478*b1cdbd2cSJim Jagielski 							if(xShapes.is() && xShapes->getCount())
2479*b1cdbd2cSJim Jagielski 								GetShapeExport()->collectShapesAutoStyles( xShapes );
2480*b1cdbd2cSJim Jagielski 						}
2481*b1cdbd2cSJim Jagielski 					}
2482*b1cdbd2cSJim Jagielski 				}
2483*b1cdbd2cSJim Jagielski 
2484*b1cdbd2cSJim Jagielski 				collectAnnotationAutoStyles( xDrawPage );
2485*b1cdbd2cSJim Jagielski 			}
2486*b1cdbd2cSJim Jagielski 		}
2487*b1cdbd2cSJim Jagielski 		if(IsImpress())
2488*b1cdbd2cSJim Jagielski 		{
2489*b1cdbd2cSJim Jagielski 			UniReference< XMLAnimationsExporter > xAnimExport;
2490*b1cdbd2cSJim Jagielski 			GetShapeExport()->setAnimationsExporter( xAnimExport );
2491*b1cdbd2cSJim Jagielski 		}
2492*b1cdbd2cSJim Jagielski 	}
2493*b1cdbd2cSJim Jagielski 
2494*b1cdbd2cSJim Jagielski 	exportAutoDataStyles();
2495*b1cdbd2cSJim Jagielski 
2496*b1cdbd2cSJim Jagielski 	GetShapeExport()->exportAutoStyles();
2497*b1cdbd2cSJim Jagielski 
2498*b1cdbd2cSJim Jagielski 	sal_uInt16 nContentAutostyles = EXPORT_CONTENT | EXPORT_AUTOSTYLES;
2499*b1cdbd2cSJim Jagielski 	if ( ( getExportFlags() & nContentAutostyles ) == nContentAutostyles )
2500*b1cdbd2cSJim Jagielski 		GetFormExport()->exportAutoStyles( );
2501*b1cdbd2cSJim Jagielski 
2502*b1cdbd2cSJim Jagielski 	// ...for text
2503*b1cdbd2cSJim Jagielski 	GetTextParagraphExport()->exportTextAutoStyles();
2504*b1cdbd2cSJim Jagielski }
2505*b1cdbd2cSJim Jagielski 
2506*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
2507*b1cdbd2cSJim Jagielski 
_ExportMasterStyles()2508*b1cdbd2cSJim Jagielski void SdXMLExport::_ExportMasterStyles()
2509*b1cdbd2cSJim Jagielski {
2510*b1cdbd2cSJim Jagielski 	// export layer
2511*b1cdbd2cSJim Jagielski 	SdXMLayerExporter::exportLayer( *this );
2512*b1cdbd2cSJim Jagielski 
2513*b1cdbd2cSJim Jagielski 	// export handout master page if impress
2514*b1cdbd2cSJim Jagielski 	if( IsImpress() )
2515*b1cdbd2cSJim Jagielski 	{
2516*b1cdbd2cSJim Jagielski 		Reference< presentation::XHandoutMasterSupplier > xHandoutSupp( GetModel(), UNO_QUERY );
2517*b1cdbd2cSJim Jagielski 		if( xHandoutSupp.is() )
2518*b1cdbd2cSJim Jagielski 		{
2519*b1cdbd2cSJim Jagielski 			Reference< XDrawPage > xHandoutPage( xHandoutSupp->getHandoutMasterPage() );
2520*b1cdbd2cSJim Jagielski 			if( xHandoutPage.is() )
2521*b1cdbd2cSJim Jagielski 			{
2522*b1cdbd2cSJim Jagielski 				// presentation:page-layout-name
2523*b1cdbd2cSJim Jagielski 				if( IsImpress() && maDrawPagesAutoLayoutNames[0].getLength())
2524*b1cdbd2cSJim Jagielski 				{
2525*b1cdbd2cSJim Jagielski 					AddAttribute(XML_NAMESPACE_PRESENTATION, XML_PRESENTATION_PAGE_LAYOUT_NAME, EncodeStyleName( maDrawPagesAutoLayoutNames[0] ));
2526*b1cdbd2cSJim Jagielski 				}
2527*b1cdbd2cSJim Jagielski 
2528*b1cdbd2cSJim Jagielski 				ImpXMLEXPPageMasterInfo* pInfo = mpHandoutPageMaster;
2529*b1cdbd2cSJim Jagielski 				if(pInfo)
2530*b1cdbd2cSJim Jagielski 				{
2531*b1cdbd2cSJim Jagielski 					OUString sString = pInfo->GetName();
2532*b1cdbd2cSJim Jagielski 					AddAttribute(XML_NAMESPACE_STYLE, XML_PAGE_LAYOUT_NAME, sString );
2533*b1cdbd2cSJim Jagielski 				}
2534*b1cdbd2cSJim Jagielski 
2535*b1cdbd2cSJim Jagielski 				// draw:style-name
2536*b1cdbd2cSJim Jagielski 				if( maHandoutMasterStyleName.getLength() )
2537*b1cdbd2cSJim Jagielski 					AddAttribute(XML_NAMESPACE_DRAW, XML_STYLE_NAME, maHandoutMasterStyleName);
2538*b1cdbd2cSJim Jagielski 
2539*b1cdbd2cSJim Jagielski 				ImplExportHeaderFooterDeclAttributes( maHandoutPageHeaderFooterSettings );
2540*b1cdbd2cSJim Jagielski 
2541*b1cdbd2cSJim Jagielski 				// write masterpage
2542*b1cdbd2cSJim Jagielski 				SvXMLElementExport aMPG(*this, XML_NAMESPACE_STYLE, XML_HANDOUT_MASTER, sal_True, sal_True);
2543*b1cdbd2cSJim Jagielski 
2544*b1cdbd2cSJim Jagielski 				// write graphic objects on this master page (if any)
2545*b1cdbd2cSJim Jagielski 				Reference< drawing::XShapes > xShapes(xHandoutPage, UNO_QUERY);
2546*b1cdbd2cSJim Jagielski 				if(xShapes.is() && xShapes->getCount())
2547*b1cdbd2cSJim Jagielski 					GetShapeExport()->exportShapes( xShapes );
2548*b1cdbd2cSJim Jagielski 			}
2549*b1cdbd2cSJim Jagielski 		}
2550*b1cdbd2cSJim Jagielski 	}
2551*b1cdbd2cSJim Jagielski 
2552*b1cdbd2cSJim Jagielski 	// export MasterPages in master-styles section
2553*b1cdbd2cSJim Jagielski     for (sal_Int32 nMPageId = 0; nMPageId < mnDocMasterPageCount; nMPageId++)
2554*b1cdbd2cSJim Jagielski 	{
2555*b1cdbd2cSJim Jagielski 		Reference< XDrawPage > xMasterPage( mxDocMasterPages->getByIndex(nMPageId), UNO_QUERY );
2556*b1cdbd2cSJim Jagielski 		if(xMasterPage.is())
2557*b1cdbd2cSJim Jagielski 		{
2558*b1cdbd2cSJim Jagielski 			// prepare masterpage attributes
2559*b1cdbd2cSJim Jagielski 			OUString sMasterPageName;
2560*b1cdbd2cSJim Jagielski 			Reference < container::XNamed > xNamed(xMasterPage, UNO_QUERY);
2561*b1cdbd2cSJim Jagielski 			if(xNamed.is())
2562*b1cdbd2cSJim Jagielski 			{
2563*b1cdbd2cSJim Jagielski 				sal_Bool bEncoded = sal_False;
2564*b1cdbd2cSJim Jagielski 				sMasterPageName = xNamed->getName();
2565*b1cdbd2cSJim Jagielski 				AddAttribute(XML_NAMESPACE_STYLE, XML_NAME,
2566*b1cdbd2cSJim Jagielski 					EncodeStyleName( sMasterPageName, &bEncoded ));
2567*b1cdbd2cSJim Jagielski 				if( bEncoded )
2568*b1cdbd2cSJim Jagielski                 	AddAttribute(
2569*b1cdbd2cSJim Jagielski 						XML_NAMESPACE_STYLE, XML_DISPLAY_NAME,
2570*b1cdbd2cSJim Jagielski 						sMasterPageName );
2571*b1cdbd2cSJim Jagielski 			}
2572*b1cdbd2cSJim Jagielski 
2573*b1cdbd2cSJim Jagielski 			ImpXMLEXPPageMasterInfo* pInfo = mpPageMasterUsageList->GetObject(nMPageId);
2574*b1cdbd2cSJim Jagielski 			if(pInfo)
2575*b1cdbd2cSJim Jagielski 			{
2576*b1cdbd2cSJim Jagielski 				OUString sString = pInfo->GetName();
2577*b1cdbd2cSJim Jagielski 				AddAttribute(XML_NAMESPACE_STYLE, XML_PAGE_LAYOUT_NAME, sString );
2578*b1cdbd2cSJim Jagielski 			}
2579*b1cdbd2cSJim Jagielski 
2580*b1cdbd2cSJim Jagielski 			// draw:style-name (background attributes)
2581*b1cdbd2cSJim Jagielski 			if( maMasterPagesStyleNames[nMPageId].getLength() )
2582*b1cdbd2cSJim Jagielski 				AddAttribute(XML_NAMESPACE_DRAW, XML_STYLE_NAME,
2583*b1cdbd2cSJim Jagielski 						maMasterPagesStyleNames[nMPageId]);
2584*b1cdbd2cSJim Jagielski 
2585*b1cdbd2cSJim Jagielski 			// write masterpage
2586*b1cdbd2cSJim Jagielski 			SvXMLElementExport aMPG(*this, XML_NAMESPACE_STYLE, XML_MASTER_PAGE, sal_True, sal_True);
2587*b1cdbd2cSJim Jagielski 
2588*b1cdbd2cSJim Jagielski 			// write optional office:forms
2589*b1cdbd2cSJim Jagielski 			exportFormsElement( xMasterPage );
2590*b1cdbd2cSJim Jagielski 
2591*b1cdbd2cSJim Jagielski 			// write graphic objects on this master page (if any)
2592*b1cdbd2cSJim Jagielski 			Reference< drawing::XShapes > xMasterShapes(xMasterPage, UNO_QUERY);
2593*b1cdbd2cSJim Jagielski 			if(xMasterShapes.is() && xMasterShapes->getCount())
2594*b1cdbd2cSJim Jagielski 				GetShapeExport()->exportShapes( xMasterShapes );
2595*b1cdbd2cSJim Jagielski 
2596*b1cdbd2cSJim Jagielski 			// write presentation notes (ONLY if presentation)
2597*b1cdbd2cSJim Jagielski 			if(IsImpress())
2598*b1cdbd2cSJim Jagielski 			{
2599*b1cdbd2cSJim Jagielski 				Reference< presentation::XPresentationPage > xPresPage(xMasterPage, UNO_QUERY);
2600*b1cdbd2cSJim Jagielski 				if(xPresPage.is())
2601*b1cdbd2cSJim Jagielski 				{
2602*b1cdbd2cSJim Jagielski 					Reference< XDrawPage > xNotesPage(xPresPage->getNotesPage());
2603*b1cdbd2cSJim Jagielski 					if(xNotesPage.is())
2604*b1cdbd2cSJim Jagielski 					{
2605*b1cdbd2cSJim Jagielski 						Reference< drawing::XShapes > xShapes(xNotesPage, UNO_QUERY);
2606*b1cdbd2cSJim Jagielski 						if(xShapes.is())
2607*b1cdbd2cSJim Jagielski 						{
2608*b1cdbd2cSJim Jagielski 							ImpXMLEXPPageMasterInfo* pMasterInfo = mpNotesPageMasterUsageList->GetObject(nMPageId);
2609*b1cdbd2cSJim Jagielski 							if(pMasterInfo)
2610*b1cdbd2cSJim Jagielski 							{
2611*b1cdbd2cSJim Jagielski 								OUString sString = pMasterInfo->GetName();
2612*b1cdbd2cSJim Jagielski 								AddAttribute(XML_NAMESPACE_STYLE, XML_PAGE_LAYOUT_NAME, sString);
2613*b1cdbd2cSJim Jagielski 							}
2614*b1cdbd2cSJim Jagielski 
2615*b1cdbd2cSJim Jagielski 							// write presentation notes
2616*b1cdbd2cSJim Jagielski 							SvXMLElementExport aPSY(*this, XML_NAMESPACE_PRESENTATION, XML_NOTES, sal_True, sal_True);
2617*b1cdbd2cSJim Jagielski 
2618*b1cdbd2cSJim Jagielski 							// write optional office:forms
2619*b1cdbd2cSJim Jagielski 							exportFormsElement( xNotesPage );
2620*b1cdbd2cSJim Jagielski 
2621*b1cdbd2cSJim Jagielski 							// write shapes per se
2622*b1cdbd2cSJim Jagielski 							GetShapeExport()->exportShapes( xShapes );
2623*b1cdbd2cSJim Jagielski 						}
2624*b1cdbd2cSJim Jagielski 					}
2625*b1cdbd2cSJim Jagielski 				}
2626*b1cdbd2cSJim Jagielski 			}
2627*b1cdbd2cSJim Jagielski 			exportAnnotations( xMasterPage );
2628*b1cdbd2cSJim Jagielski 		}
2629*b1cdbd2cSJim Jagielski 	}
2630*b1cdbd2cSJim Jagielski }
2631*b1cdbd2cSJim Jagielski 
exportFormsElement(Reference<XDrawPage> xDrawPage)2632*b1cdbd2cSJim Jagielski void SdXMLExport::exportFormsElement( Reference< XDrawPage > xDrawPage )
2633*b1cdbd2cSJim Jagielski {
2634*b1cdbd2cSJim Jagielski 	if( xDrawPage.is() )
2635*b1cdbd2cSJim Jagielski 	{
2636*b1cdbd2cSJim Jagielski 		Reference< form::XFormsSupplier2 > xFormsSupplier( xDrawPage, UNO_QUERY );
2637*b1cdbd2cSJim Jagielski 		if ( xFormsSupplier.is() && xFormsSupplier->hasForms() )
2638*b1cdbd2cSJim Jagielski 		{
2639*b1cdbd2cSJim Jagielski 			// write masterpage
2640*b1cdbd2cSJim Jagielski 			::xmloff::OOfficeFormsExport aForms(*this);
2641*b1cdbd2cSJim Jagielski 			GetFormExport()->exportForms( xDrawPage );
2642*b1cdbd2cSJim Jagielski 		}
2643*b1cdbd2cSJim Jagielski 
2644*b1cdbd2cSJim Jagielski 		if(! GetFormExport()->seekPage( xDrawPage ) )
2645*b1cdbd2cSJim Jagielski 		{
2646*b1cdbd2cSJim Jagielski 			DBG_ERROR( "OFormLayerXMLExport::seekPage failed!" );
2647*b1cdbd2cSJim Jagielski 		}
2648*b1cdbd2cSJim Jagielski 	}
2649*b1cdbd2cSJim Jagielski }
2650*b1cdbd2cSJim Jagielski 
GetViewSettings(uno::Sequence<beans::PropertyValue> & rProps)2651*b1cdbd2cSJim Jagielski void SdXMLExport::GetViewSettings(uno::Sequence<beans::PropertyValue>& rProps)
2652*b1cdbd2cSJim Jagielski {
2653*b1cdbd2cSJim Jagielski 	rProps.realloc(4);
2654*b1cdbd2cSJim Jagielski 	beans::PropertyValue* pProps = rProps.getArray();
2655*b1cdbd2cSJim Jagielski 	if(pProps)
2656*b1cdbd2cSJim Jagielski 	{
2657*b1cdbd2cSJim Jagielski //		SvXMLElementExport aViewSettingsElem(*this, XML_NAMESPACE_DRAW, XML_VIEW_SETTINGS, sal_True, sal_True);
2658*b1cdbd2cSJim Jagielski 
2659*b1cdbd2cSJim Jagielski 		Reference< beans::XPropertySet > xPropSet( GetModel(), UNO_QUERY );
2660*b1cdbd2cSJim Jagielski 		if( !xPropSet.is() )
2661*b1cdbd2cSJim Jagielski 			return;
2662*b1cdbd2cSJim Jagielski 
2663*b1cdbd2cSJim Jagielski 		awt::Rectangle aVisArea;
2664*b1cdbd2cSJim Jagielski 		xPropSet->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "VisibleArea" ) ) ) >>= aVisArea;
2665*b1cdbd2cSJim Jagielski /*
2666*b1cdbd2cSJim Jagielski 		sal_Int16 nMapUnit;
2667*b1cdbd2cSJim Jagielski 		xPropSet->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "MapUnit" ) ) ) >>= nMapUnit;
2668*b1cdbd2cSJim Jagielski */
2669*b1cdbd2cSJim Jagielski 
2670*b1cdbd2cSJim Jagielski 		sal_uInt16 i = 0;
2671*b1cdbd2cSJim Jagielski 		pProps[i].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("VisibleAreaTop"));
2672*b1cdbd2cSJim Jagielski 		pProps[i++].Value <<= aVisArea.Y;
2673*b1cdbd2cSJim Jagielski 		pProps[i].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("VisibleAreaLeft"));
2674*b1cdbd2cSJim Jagielski 		pProps[i++].Value <<= aVisArea.X;
2675*b1cdbd2cSJim Jagielski 		pProps[i].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("VisibleAreaWidth"));
2676*b1cdbd2cSJim Jagielski 		pProps[i++].Value <<= aVisArea.Width;
2677*b1cdbd2cSJim Jagielski 		pProps[i].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("VisibleAreaHeight"));
2678*b1cdbd2cSJim Jagielski 		pProps[i++].Value <<= aVisArea.Height;
2679*b1cdbd2cSJim Jagielski 	}
2680*b1cdbd2cSJim Jagielski }
2681*b1cdbd2cSJim Jagielski 
GetConfigurationSettings(uno::Sequence<beans::PropertyValue> & rProps)2682*b1cdbd2cSJim Jagielski void SdXMLExport::GetConfigurationSettings(uno::Sequence<beans::PropertyValue>& rProps)
2683*b1cdbd2cSJim Jagielski {
2684*b1cdbd2cSJim Jagielski 	Reference< lang::XMultiServiceFactory > xFac( GetModel(), UNO_QUERY );
2685*b1cdbd2cSJim Jagielski 	if( xFac.is() )
2686*b1cdbd2cSJim Jagielski 	{
2687*b1cdbd2cSJim Jagielski 		Reference< beans::XPropertySet > xProps( xFac->createInstance( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.document.Settings" ) ) ), UNO_QUERY );
2688*b1cdbd2cSJim Jagielski 		if( xProps.is() )
2689*b1cdbd2cSJim Jagielski 			SvXMLUnitConverter::convertPropertySet( rProps, xProps );
2690*b1cdbd2cSJim Jagielski 	}
2691*b1cdbd2cSJim Jagielski }
2692*b1cdbd2cSJim Jagielski 
2693*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
2694*b1cdbd2cSJim Jagielski 
addDataStyle(const sal_Int32 nNumberFormat,sal_Bool bTimeFormat)2695*b1cdbd2cSJim Jagielski void SdXMLExport::addDataStyle(const sal_Int32 nNumberFormat, sal_Bool bTimeFormat )
2696*b1cdbd2cSJim Jagielski {
2697*b1cdbd2cSJim Jagielski 	sal_Int32 nFormat = nNumberFormat;
2698*b1cdbd2cSJim Jagielski 	if( (nNumberFormat > 1) && (nNumberFormat <= 0x0f) )
2699*b1cdbd2cSJim Jagielski 		nFormat -= 2;
2700*b1cdbd2cSJim Jagielski 
2701*b1cdbd2cSJim Jagielski 	if( bTimeFormat )
2702*b1cdbd2cSJim Jagielski 	{
2703*b1cdbd2cSJim Jagielski 		if( maUsedTimeStyles.count( nFormat ) == 0 )
2704*b1cdbd2cSJim Jagielski 			maUsedTimeStyles.insert( nFormat );
2705*b1cdbd2cSJim Jagielski 	}
2706*b1cdbd2cSJim Jagielski 	else
2707*b1cdbd2cSJim Jagielski 	{
2708*b1cdbd2cSJim Jagielski 		if( maUsedDateStyles.count( nFormat ) == 0 )
2709*b1cdbd2cSJim Jagielski 			maUsedDateStyles.insert( nFormat );
2710*b1cdbd2cSJim Jagielski 	}
2711*b1cdbd2cSJim Jagielski }
2712*b1cdbd2cSJim Jagielski 
2713*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
2714*b1cdbd2cSJim Jagielski 
exportDataStyles()2715*b1cdbd2cSJim Jagielski void SdXMLExport::exportDataStyles()
2716*b1cdbd2cSJim Jagielski {
2717*b1cdbd2cSJim Jagielski 	// there are no data styles to export in draw/impress yet
2718*b1cdbd2cSJim Jagielski }
2719*b1cdbd2cSJim Jagielski 
2720*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
2721*b1cdbd2cSJim Jagielski 
exportAutoDataStyles()2722*b1cdbd2cSJim Jagielski void SdXMLExport::exportAutoDataStyles()
2723*b1cdbd2cSJim Jagielski {
2724*b1cdbd2cSJim Jagielski 	SdXMLFormatMap::iterator aIter( maUsedDateStyles.begin() );
2725*b1cdbd2cSJim Jagielski 	SdXMLFormatMap::iterator aEnd( maUsedDateStyles.end() );
2726*b1cdbd2cSJim Jagielski 
2727*b1cdbd2cSJim Jagielski 	while( aIter != aEnd )
2728*b1cdbd2cSJim Jagielski 		SdXMLNumberStylesExporter::exportDateStyle( *this, (*aIter++) );
2729*b1cdbd2cSJim Jagielski 
2730*b1cdbd2cSJim Jagielski 	aIter = maUsedTimeStyles.begin();
2731*b1cdbd2cSJim Jagielski 	aEnd = maUsedTimeStyles.end();
2732*b1cdbd2cSJim Jagielski 	while( aIter != aEnd )
2733*b1cdbd2cSJim Jagielski 		SdXMLNumberStylesExporter::exportTimeStyle( *this, (*aIter++) );
2734*b1cdbd2cSJim Jagielski 
2735*b1cdbd2cSJim Jagielski 	if(HasFormExport())
2736*b1cdbd2cSJim Jagielski 		GetFormExport()->exportAutoControlNumberStyles();
2737*b1cdbd2cSJim Jagielski }
2738*b1cdbd2cSJim Jagielski 
2739*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
2740*b1cdbd2cSJim Jagielski 
getDataStyleName(const sal_Int32 nNumberFormat,sal_Bool bTimeFormat) const2741*b1cdbd2cSJim Jagielski OUString SdXMLExport::getDataStyleName(const sal_Int32 nNumberFormat, sal_Bool bTimeFormat ) const
2742*b1cdbd2cSJim Jagielski {
2743*b1cdbd2cSJim Jagielski 	if( bTimeFormat )
2744*b1cdbd2cSJim Jagielski 	{
2745*b1cdbd2cSJim Jagielski 		return SdXMLNumberStylesExporter::getTimeStyleName( nNumberFormat );
2746*b1cdbd2cSJim Jagielski 	}
2747*b1cdbd2cSJim Jagielski 	else
2748*b1cdbd2cSJim Jagielski 	{
2749*b1cdbd2cSJim Jagielski 		return SdXMLNumberStylesExporter::getDateStyleName( nNumberFormat );
2750*b1cdbd2cSJim Jagielski 	}
2751*b1cdbd2cSJim Jagielski }
2752*b1cdbd2cSJim Jagielski 
getNavigationOrder(const Reference<XDrawPage> & xDrawPage)2753*b1cdbd2cSJim Jagielski OUString SdXMLExport::getNavigationOrder( const Reference< XDrawPage >& xDrawPage )
2754*b1cdbd2cSJim Jagielski {
2755*b1cdbd2cSJim Jagielski 	OUStringBuffer sNavOrder;
2756*b1cdbd2cSJim Jagielski 	try
2757*b1cdbd2cSJim Jagielski 	{
2758*b1cdbd2cSJim Jagielski 		Reference< XPropertySet > xSet( xDrawPage, UNO_QUERY_THROW );
2759*b1cdbd2cSJim Jagielski 		Reference< XIndexAccess > xNavOrder( xSet->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "NavigationOrder" ) ) ), UNO_QUERY_THROW );
2760*b1cdbd2cSJim Jagielski 
2761*b1cdbd2cSJim Jagielski 		Reference< XIndexAccess > xZOrderAccess( xDrawPage, UNO_QUERY );
2762*b1cdbd2cSJim Jagielski 
2763*b1cdbd2cSJim Jagielski 		// only export navigation order if it is different from the z-order
2764*b1cdbd2cSJim Jagielski 		if( (xNavOrder.get() != xZOrderAccess.get()) && (xNavOrder->getCount() == xDrawPage->getCount())  )
2765*b1cdbd2cSJim Jagielski 		{
2766*b1cdbd2cSJim Jagielski 			sal_Int32 nIndex;
2767*b1cdbd2cSJim Jagielski 			const sal_Int32 nCount = xNavOrder->getCount();
2768*b1cdbd2cSJim Jagielski 			for( nIndex = 0; nIndex < nCount; ++nIndex )
2769*b1cdbd2cSJim Jagielski 			{
2770*b1cdbd2cSJim Jagielski 				OUString sId( getInterfaceToIdentifierMapper().registerReference( Reference< XInterface >( xNavOrder->getByIndex( nIndex ), UNO_QUERY ) ) );
2771*b1cdbd2cSJim Jagielski 				if( sId.getLength() != 0 )
2772*b1cdbd2cSJim Jagielski 				{
2773*b1cdbd2cSJim Jagielski 					if( sNavOrder.getLength() != 0 )
2774*b1cdbd2cSJim Jagielski 						sNavOrder.append( (sal_Unicode)' ' );
2775*b1cdbd2cSJim Jagielski 					sNavOrder.append( sId );
2776*b1cdbd2cSJim Jagielski 				}
2777*b1cdbd2cSJim Jagielski 			}
2778*b1cdbd2cSJim Jagielski 		}
2779*b1cdbd2cSJim Jagielski 	}
2780*b1cdbd2cSJim Jagielski 	catch( Exception& )
2781*b1cdbd2cSJim Jagielski 	{
2782*b1cdbd2cSJim Jagielski 	}
2783*b1cdbd2cSJim Jagielski 	return sNavOrder.makeStringAndClear();
2784*b1cdbd2cSJim Jagielski }
2785*b1cdbd2cSJim Jagielski 
2786*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
2787*b1cdbd2cSJim Jagielski 
collectAnnotationAutoStyles(const Reference<XDrawPage> & xDrawPage)2788*b1cdbd2cSJim Jagielski void SdXMLExport::collectAnnotationAutoStyles( const Reference<XDrawPage>& xDrawPage )
2789*b1cdbd2cSJim Jagielski {
2790*b1cdbd2cSJim Jagielski     Reference< XAnnotationAccess > xAnnotationAccess( xDrawPage, UNO_QUERY );
2791*b1cdbd2cSJim Jagielski     if( xAnnotationAccess.is() ) try
2792*b1cdbd2cSJim Jagielski     {
2793*b1cdbd2cSJim Jagielski         Reference< XAnnotationEnumeration > xAnnotationEnumeration( xAnnotationAccess->createAnnotationEnumeration() );
2794*b1cdbd2cSJim Jagielski         if( xAnnotationEnumeration.is() )
2795*b1cdbd2cSJim Jagielski         {
2796*b1cdbd2cSJim Jagielski             while( xAnnotationEnumeration->hasMoreElements() )
2797*b1cdbd2cSJim Jagielski             {
2798*b1cdbd2cSJim Jagielski                 Reference< XAnnotation > xAnnotation( xAnnotationEnumeration->nextElement(), UNO_QUERY_THROW );
2799*b1cdbd2cSJim Jagielski                 Reference< XText > xText( xAnnotation->getTextRange() );
2800*b1cdbd2cSJim Jagielski 				if(xText.is() && xText->getString().getLength())
2801*b1cdbd2cSJim Jagielski 					GetTextParagraphExport()->collectTextAutoStyles( xText );
2802*b1cdbd2cSJim Jagielski 			}
2803*b1cdbd2cSJim Jagielski         }
2804*b1cdbd2cSJim Jagielski     }
2805*b1cdbd2cSJim Jagielski     catch( Exception& )
2806*b1cdbd2cSJim Jagielski     {
2807*b1cdbd2cSJim Jagielski         DBG_ERROR("SdXMLExport::collectAnnotationAutoStyles(), exception caught during export of annotation auto styles");
2808*b1cdbd2cSJim Jagielski     }
2809*b1cdbd2cSJim Jagielski }
2810*b1cdbd2cSJim Jagielski 
exportAnnotations(const Reference<XDrawPage> & xDrawPage)2811*b1cdbd2cSJim Jagielski void SdXMLExport::exportAnnotations( const Reference<XDrawPage>& xDrawPage )
2812*b1cdbd2cSJim Jagielski {
2813*b1cdbd2cSJim Jagielski     // do not export in ODF 1.2 or older
2814*b1cdbd2cSJim Jagielski     if( getDefaultVersion() <= SvtSaveOptions::ODFVER_012 )
2815*b1cdbd2cSJim Jagielski         return;
2816*b1cdbd2cSJim Jagielski 
2817*b1cdbd2cSJim Jagielski     Reference< XAnnotationAccess > xAnnotationAccess( xDrawPage, UNO_QUERY );
2818*b1cdbd2cSJim Jagielski     if( xAnnotationAccess.is() ) try
2819*b1cdbd2cSJim Jagielski     {
2820*b1cdbd2cSJim Jagielski         Reference< XAnnotationEnumeration > xAnnotationEnumeration( xAnnotationAccess->createAnnotationEnumeration() );
2821*b1cdbd2cSJim Jagielski         if( xAnnotationEnumeration.is() && xAnnotationEnumeration->hasMoreElements() )
2822*b1cdbd2cSJim Jagielski         {
2823*b1cdbd2cSJim Jagielski             OUStringBuffer sStringBuffer;
2824*b1cdbd2cSJim Jagielski             do
2825*b1cdbd2cSJim Jagielski             {
2826*b1cdbd2cSJim Jagielski                 Reference< XAnnotation > xAnnotation( xAnnotationEnumeration->nextElement(), UNO_QUERY_THROW );
2827*b1cdbd2cSJim Jagielski 
2828*b1cdbd2cSJim Jagielski                 RealPoint2D aPosition( xAnnotation->getPosition() );
2829*b1cdbd2cSJim Jagielski 
2830*b1cdbd2cSJim Jagielski                	GetMM100UnitConverter().convertMeasure(sStringBuffer, static_cast<sal_Int32>( aPosition.X * 100 ) );
2831*b1cdbd2cSJim Jagielski             	AddAttribute(XML_NAMESPACE_SVG, XML_X, sStringBuffer.makeStringAndClear());
2832*b1cdbd2cSJim Jagielski 
2833*b1cdbd2cSJim Jagielski                	GetMM100UnitConverter().convertMeasure(sStringBuffer, static_cast<sal_Int32>( aPosition.Y * 100 ) );
2834*b1cdbd2cSJim Jagielski             	AddAttribute(XML_NAMESPACE_SVG, XML_Y, sStringBuffer.makeStringAndClear());
2835*b1cdbd2cSJim Jagielski 
2836*b1cdbd2cSJim Jagielski                 RealSize2D aSize( xAnnotation->getSize() );
2837*b1cdbd2cSJim Jagielski 
2838*b1cdbd2cSJim Jagielski                 if( aSize.Width || aSize.Height )
2839*b1cdbd2cSJim Jagielski                 {
2840*b1cdbd2cSJim Jagielski                    	GetMM100UnitConverter().convertMeasure(sStringBuffer, static_cast<sal_Int32>( aSize.Width * 100 ) );
2841*b1cdbd2cSJim Jagielski                 	AddAttribute(XML_NAMESPACE_SVG, XML_WIDTH, sStringBuffer.makeStringAndClear());
2842*b1cdbd2cSJim Jagielski                    	GetMM100UnitConverter().convertMeasure(sStringBuffer, static_cast<sal_Int32>( aSize.Height * 100 ) );
2843*b1cdbd2cSJim Jagielski                 	AddAttribute(XML_NAMESPACE_SVG, XML_HEIGHT, sStringBuffer.makeStringAndClear());
2844*b1cdbd2cSJim Jagielski                 }
2845*b1cdbd2cSJim Jagielski 
2846*b1cdbd2cSJim Jagielski                 // annotation element + content
2847*b1cdbd2cSJim Jagielski                 SvXMLElementExport aElem(*this, XML_NAMESPACE_OFFICE_EXT, XML_ANNOTATION, sal_False, sal_True);
2848*b1cdbd2cSJim Jagielski 
2849*b1cdbd2cSJim Jagielski                 // author
2850*b1cdbd2cSJim Jagielski                 OUString aAuthor( xAnnotation->getAuthor() );
2851*b1cdbd2cSJim Jagielski                 if( aAuthor.getLength() )
2852*b1cdbd2cSJim Jagielski                 {
2853*b1cdbd2cSJim Jagielski 	                SvXMLElementExport aCreatorElem( *this, XML_NAMESPACE_DC, XML_CREATOR, sal_True, sal_False );
2854*b1cdbd2cSJim Jagielski 	                this->Characters(aAuthor);
2855*b1cdbd2cSJim Jagielski                 }
2856*b1cdbd2cSJim Jagielski 
2857*b1cdbd2cSJim Jagielski 				{
2858*b1cdbd2cSJim Jagielski 					// date time
2859*b1cdbd2cSJim Jagielski 					DateTime aDate( xAnnotation->getDateTime() );
2860*b1cdbd2cSJim Jagielski 					GetMM100UnitConverter().convertDateTime(sStringBuffer, aDate, sal_True);
2861*b1cdbd2cSJim Jagielski 					SvXMLElementExport aDateElem( *this, XML_NAMESPACE_DC, XML_DATE, sal_True, sal_False );
2862*b1cdbd2cSJim Jagielski 					Characters(sStringBuffer.makeStringAndClear());
2863*b1cdbd2cSJim Jagielski 				}
2864*b1cdbd2cSJim Jagielski 
2865*b1cdbd2cSJim Jagielski                 com::sun::star::uno::Reference < com::sun::star::text::XText > xText( xAnnotation->getTextRange() );
2866*b1cdbd2cSJim Jagielski                 if( xText.is() )
2867*b1cdbd2cSJim Jagielski 	                this->GetTextParagraphExport()->exportText( xText );
2868*b1cdbd2cSJim Jagielski             }
2869*b1cdbd2cSJim Jagielski             while( xAnnotationEnumeration->hasMoreElements() );
2870*b1cdbd2cSJim Jagielski         }
2871*b1cdbd2cSJim Jagielski     }
2872*b1cdbd2cSJim Jagielski     catch( Exception& )
2873*b1cdbd2cSJim Jagielski     {
2874*b1cdbd2cSJim Jagielski         DBG_ERROR("SdXMLExport::exportAnnotations(), exception caught during export of annotations");
2875*b1cdbd2cSJim Jagielski     }
2876*b1cdbd2cSJim Jagielski }
2877*b1cdbd2cSJim Jagielski 
2878*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
2879*b1cdbd2cSJim Jagielski 
2880*b1cdbd2cSJim Jagielski #define SERVICE( classname, servicename, implementationname, draw, flags )\
2881*b1cdbd2cSJim Jagielski uno::Sequence< OUString > SAL_CALL classname##_getSupportedServiceNames() throw()\
2882*b1cdbd2cSJim Jagielski {\
2883*b1cdbd2cSJim Jagielski 	const OUString aServiceName( RTL_CONSTASCII_USTRINGPARAM( servicename ) );\
2884*b1cdbd2cSJim Jagielski 	const uno::Sequence< OUString > aSeq( &aServiceName, 1 );\
2885*b1cdbd2cSJim Jagielski 	return aSeq;\
2886*b1cdbd2cSJim Jagielski }\
2887*b1cdbd2cSJim Jagielski OUString SAL_CALL classname##_getImplementationName() throw()\
2888*b1cdbd2cSJim Jagielski {\
2889*b1cdbd2cSJim Jagielski 	return OUString( RTL_CONSTASCII_USTRINGPARAM( implementationname ) );\
2890*b1cdbd2cSJim Jagielski }\
2891*b1cdbd2cSJim Jagielski uno::Reference< uno::XInterface > SAL_CALL classname##_createInstance(const uno::Reference< lang::XMultiServiceFactory > & rSMgr) throw( uno::Exception )\
2892*b1cdbd2cSJim Jagielski {\
2893*b1cdbd2cSJim Jagielski 	return (cppu::OWeakObject*)new SdXMLExport( rSMgr, draw, flags );\
2894*b1cdbd2cSJim Jagielski }
2895*b1cdbd2cSJim Jagielski 
2896*b1cdbd2cSJim Jagielski SERVICE( XMLImpressExportOasis, "com.sun.star.comp.Impress.XMLOasisExporter", "XMLImpressExportOasis", sal_False, EXPORT_OASIS|EXPORT_META|EXPORT_STYLES|EXPORT_MASTERSTYLES|EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_SCRIPTS|EXPORT_SETTINGS|EXPORT_FONTDECLS|EXPORT_EMBEDDED );
2897*b1cdbd2cSJim Jagielski SERVICE( XMLImpressStylesExportOasis, "com.sun.star.comp.Impress.XMLOasisStylesExporter", "XMLImpressStylesExportOasis", sal_False, EXPORT_OASIS|EXPORT_STYLES|EXPORT_MASTERSTYLES|EXPORT_AUTOSTYLES );
2898*b1cdbd2cSJim Jagielski SERVICE( XMLImpressContentExportOasis, "com.sun.star.comp.Impress.XMLOasisContentExporter", "XMLImpressContentExportOasis", sal_False, EXPORT_OASIS|EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_SCRIPTS|EXPORT_FONTDECLS );
2899*b1cdbd2cSJim Jagielski SERVICE( XMLImpressMetaExportOasis, "com.sun.star.comp.Impress.XMLOasisMetaExporter", "XMLImpressMetaExportOasis", sal_False, EXPORT_OASIS|EXPORT_META );
2900*b1cdbd2cSJim Jagielski SERVICE( XMLImpressSettingsExportOasis, "com.sun.star.comp.Impress.XMLOasisSettingsExporter", "XMLImpressSettingsExportOasis", sal_False, EXPORT_OASIS|EXPORT_SETTINGS );
2901*b1cdbd2cSJim Jagielski 
2902*b1cdbd2cSJim Jagielski SERVICE( XMLImpressExportOOO, "com.sun.star.comp.Impress.XMLExporter", "XMLImpressExportOOO", sal_False, EXPORT_META|EXPORT_STYLES|EXPORT_MASTERSTYLES|EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_SCRIPTS|EXPORT_SETTINGS|EXPORT_FONTDECLS|EXPORT_EMBEDDED );
2903*b1cdbd2cSJim Jagielski SERVICE( XMLImpressStylesExportOOO, "com.sun.star.comp.Impress.XMLStylesExporter", "XMLImpressStylesExportOOO", sal_False, EXPORT_STYLES|EXPORT_MASTERSTYLES|EXPORT_AUTOSTYLES );
2904*b1cdbd2cSJim Jagielski SERVICE( XMLImpressContentExportOOO, "com.sun.star.comp.Impress.XMLContentExporter", "XMLImpressContentExportOOO", sal_False, EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_SCRIPTS|EXPORT_FONTDECLS );
2905*b1cdbd2cSJim Jagielski SERVICE( XMLImpressMetaExportOOO, "com.sun.star.comp.Impress.XMLMetaExporter", "XMLImpressMetaExportOOO", sal_False, EXPORT_META );
2906*b1cdbd2cSJim Jagielski SERVICE( XMLImpressSettingsExportOOO, "com.sun.star.comp.Impress.XMLSettingsExporter", "XMLImpressSettingsExportOOO", sal_False, EXPORT_SETTINGS );
2907*b1cdbd2cSJim Jagielski 
2908*b1cdbd2cSJim Jagielski SERVICE( XMLDrawExportOasis, "com.sun.star.comp.Draw.XMLOasisExporter", "XMLDrawExportOasis", sal_True, EXPORT_OASIS|EXPORT_META|EXPORT_STYLES|EXPORT_MASTERSTYLES|EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_SCRIPTS|EXPORT_SETTINGS|EXPORT_FONTDECLS|EXPORT_EMBEDDED );
2909*b1cdbd2cSJim Jagielski SERVICE( XMLDrawStylesExportOasis, "com.sun.star.comp.Draw.XMLOasisStylesExporter", "XMLDrawStylesExportOasis", sal_True, EXPORT_OASIS|EXPORT_STYLES|EXPORT_MASTERSTYLES|EXPORT_AUTOSTYLES );
2910*b1cdbd2cSJim Jagielski SERVICE( XMLDrawContentExportOasis, "com.sun.star.comp.Draw.XMLOasisContentExporter", "XMLDrawContentExportOasis", sal_True, EXPORT_OASIS|EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_SCRIPTS|EXPORT_FONTDECLS );
2911*b1cdbd2cSJim Jagielski SERVICE( XMLDrawMetaExportOasis, "com.sun.star.comp.Draw.XMLOasisMetaExporter", "XMLDrawMetaExportOasis", sal_True, EXPORT_OASIS|EXPORT_META );
2912*b1cdbd2cSJim Jagielski SERVICE( XMLDrawSettingsExportOasis, "com.sun.star.comp.Draw.XMLOasisSettingsExporter", "XMLDrawSettingsExportOasis", sal_True, EXPORT_OASIS|EXPORT_SETTINGS );
2913*b1cdbd2cSJim Jagielski 
2914*b1cdbd2cSJim Jagielski SERVICE( XMLDrawExportOOO, "com.sun.star.comp.Draw.XMLExporter", "XMLDrawExportOOO", sal_True, EXPORT_META|EXPORT_STYLES|EXPORT_MASTERSTYLES|EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_SCRIPTS|EXPORT_SETTINGS|EXPORT_FONTDECLS|EXPORT_EMBEDDED );
2915*b1cdbd2cSJim Jagielski SERVICE( XMLDrawStylesExportOOO, "com.sun.star.comp.Draw.XMLStylesExporter", "XMLDrawStylesExportOOO", sal_True, EXPORT_STYLES|EXPORT_MASTERSTYLES|EXPORT_AUTOSTYLES );
2916*b1cdbd2cSJim Jagielski SERVICE( XMLDrawContentExportOOO, "com.sun.star.comp.Draw.XMLContentExporter", "XMLDrawContentExportOOO", sal_True, EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_SCRIPTS|EXPORT_FONTDECLS );
2917*b1cdbd2cSJim Jagielski SERVICE( XMLDrawMetaExportOOO, "com.sun.star.comp.Draw.XMLMetaExporter", "XMLDrawMetaExportOOO", sal_True, EXPORT_META );
2918*b1cdbd2cSJim Jagielski SERVICE( XMLDrawSettingsExportOOO, "com.sun.star.comp.Draw.XMLSettingsExporter", "XMLDrawSettingsExportOOO", sal_True, EXPORT_SETTINGS );
2919*b1cdbd2cSJim Jagielski 
2920*b1cdbd2cSJim Jagielski SERVICE( XMLDrawingLayerExport, "com.sun.star.comp.DrawingLayer.XMLExporter", "XMLDrawingLayerExport", sal_True, EXPORT_OASIS|EXPORT_STYLES|EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_FONTDECLS|EXPORT_EMBEDDED );
2921*b1cdbd2cSJim Jagielski SERVICE( XMLImpressClipboardExport, "com.sun.star.comp.Impress.XMLClipboardExporter", "XMLImpressClipboardExport", sal_False, EXPORT_OASIS|EXPORT_STYLES|EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_FONTDECLS|EXPORT_EMBEDDED );
2922*b1cdbd2cSJim Jagielski 
2923*b1cdbd2cSJim Jagielski // XServiceInfo
getImplementationName()2924*b1cdbd2cSJim Jagielski OUString SAL_CALL SdXMLExport::getImplementationName() throw( uno::RuntimeException )
2925*b1cdbd2cSJim Jagielski {
2926*b1cdbd2cSJim Jagielski     if( IsDraw())
2927*b1cdbd2cSJim Jagielski     {
2928*b1cdbd2cSJim Jagielski         // Draw
2929*b1cdbd2cSJim Jagielski 
2930*b1cdbd2cSJim Jagielski         switch( getExportFlags())
2931*b1cdbd2cSJim Jagielski         {
2932*b1cdbd2cSJim Jagielski             case EXPORT_META|EXPORT_STYLES|EXPORT_MASTERSTYLES|EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_SCRIPTS|EXPORT_SETTINGS|EXPORT_FONTDECLS|EXPORT_EMBEDDED:
2933*b1cdbd2cSJim Jagielski                 return XMLDrawExportOOO_getImplementationName();
2934*b1cdbd2cSJim Jagielski             case EXPORT_STYLES|EXPORT_MASTERSTYLES|EXPORT_AUTOSTYLES:
2935*b1cdbd2cSJim Jagielski                 return XMLDrawStylesExportOOO_getImplementationName();
2936*b1cdbd2cSJim Jagielski             case EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_SCRIPTS|EXPORT_FONTDECLS:
2937*b1cdbd2cSJim Jagielski                 return XMLDrawContentExportOOO_getImplementationName();
2938*b1cdbd2cSJim Jagielski             case EXPORT_META:
2939*b1cdbd2cSJim Jagielski                 return XMLDrawMetaExportOOO_getImplementationName();
2940*b1cdbd2cSJim Jagielski             case EXPORT_SETTINGS:
2941*b1cdbd2cSJim Jagielski                 return XMLDrawSettingsExportOOO_getImplementationName();
2942*b1cdbd2cSJim Jagielski 
2943*b1cdbd2cSJim Jagielski 			case EXPORT_OASIS|EXPORT_META|EXPORT_STYLES|EXPORT_MASTERSTYLES|EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_SCRIPTS|EXPORT_SETTINGS|EXPORT_FONTDECLS|EXPORT_EMBEDDED:
2944*b1cdbd2cSJim Jagielski                 return XMLDrawExportOasis_getImplementationName();
2945*b1cdbd2cSJim Jagielski             case EXPORT_OASIS|EXPORT_STYLES|EXPORT_MASTERSTYLES|EXPORT_AUTOSTYLES:
2946*b1cdbd2cSJim Jagielski                 return XMLDrawStylesExportOasis_getImplementationName();
2947*b1cdbd2cSJim Jagielski             case EXPORT_OASIS|EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_SCRIPTS|EXPORT_FONTDECLS:
2948*b1cdbd2cSJim Jagielski                 return XMLDrawContentExportOasis_getImplementationName();
2949*b1cdbd2cSJim Jagielski             case EXPORT_OASIS|EXPORT_META:
2950*b1cdbd2cSJim Jagielski                 return XMLDrawMetaExportOasis_getImplementationName();
2951*b1cdbd2cSJim Jagielski             case EXPORT_OASIS|EXPORT_SETTINGS:
2952*b1cdbd2cSJim Jagielski                 return XMLDrawSettingsExportOasis_getImplementationName();
2953*b1cdbd2cSJim Jagielski 
2954*b1cdbd2cSJim Jagielski 			default:
2955*b1cdbd2cSJim Jagielski                 return XMLDrawExportOOO_getImplementationName();
2956*b1cdbd2cSJim Jagielski         }
2957*b1cdbd2cSJim Jagielski     }
2958*b1cdbd2cSJim Jagielski     else
2959*b1cdbd2cSJim Jagielski     {
2960*b1cdbd2cSJim Jagielski         // Impress
2961*b1cdbd2cSJim Jagielski 
2962*b1cdbd2cSJim Jagielski         switch( getExportFlags())
2963*b1cdbd2cSJim Jagielski         {
2964*b1cdbd2cSJim Jagielski             case EXPORT_META|EXPORT_STYLES|EXPORT_MASTERSTYLES|EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_SCRIPTS|EXPORT_SETTINGS|EXPORT_FONTDECLS|EXPORT_EMBEDDED:
2965*b1cdbd2cSJim Jagielski                 return XMLImpressExportOOO_getImplementationName();
2966*b1cdbd2cSJim Jagielski             case EXPORT_STYLES|EXPORT_MASTERSTYLES|EXPORT_AUTOSTYLES:
2967*b1cdbd2cSJim Jagielski                 return XMLImpressStylesExportOOO_getImplementationName();
2968*b1cdbd2cSJim Jagielski             case EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_SCRIPTS|EXPORT_FONTDECLS:
2969*b1cdbd2cSJim Jagielski                 return XMLImpressContentExportOOO_getImplementationName();
2970*b1cdbd2cSJim Jagielski             case EXPORT_META:
2971*b1cdbd2cSJim Jagielski                 return XMLImpressMetaExportOOO_getImplementationName();
2972*b1cdbd2cSJim Jagielski             case EXPORT_SETTINGS:
2973*b1cdbd2cSJim Jagielski                 return XMLImpressSettingsExportOOO_getImplementationName();
2974*b1cdbd2cSJim Jagielski             case EXPORT_OASIS|EXPORT_META|EXPORT_STYLES|EXPORT_MASTERSTYLES|EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_SCRIPTS|EXPORT_SETTINGS|EXPORT_FONTDECLS|EXPORT_EMBEDDED:
2975*b1cdbd2cSJim Jagielski                 return XMLImpressExportOasis_getImplementationName();
2976*b1cdbd2cSJim Jagielski             case EXPORT_OASIS|EXPORT_STYLES|EXPORT_MASTERSTYLES|EXPORT_AUTOSTYLES:
2977*b1cdbd2cSJim Jagielski                 return XMLImpressStylesExportOasis_getImplementationName();
2978*b1cdbd2cSJim Jagielski             case EXPORT_OASIS|EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_SCRIPTS|EXPORT_FONTDECLS:
2979*b1cdbd2cSJim Jagielski                 return XMLImpressContentExportOasis_getImplementationName();
2980*b1cdbd2cSJim Jagielski             case EXPORT_OASIS|EXPORT_META:
2981*b1cdbd2cSJim Jagielski                 return XMLImpressMetaExportOasis_getImplementationName();
2982*b1cdbd2cSJim Jagielski             case EXPORT_OASIS|EXPORT_SETTINGS:
2983*b1cdbd2cSJim Jagielski                 return XMLImpressSettingsExportOasis_getImplementationName();
2984*b1cdbd2cSJim Jagielski 
2985*b1cdbd2cSJim Jagielski 			default:
2986*b1cdbd2cSJim Jagielski                 return XMLImpressExportOOO_getImplementationName();
2987*b1cdbd2cSJim Jagielski         }
2988*b1cdbd2cSJim Jagielski     }
2989*b1cdbd2cSJim Jagielski }
2990