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