xref: /AOO41X/main/sw/inc/pagedesc.hxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir #ifndef _PAGEDESC_HXX
28*cdf0e10cSrcweir #define _PAGEDESC_HXX
29*cdf0e10cSrcweir 
30*cdf0e10cSrcweir #include <tools/fract.hxx>
31*cdf0e10cSrcweir #include <tools/color.hxx>
32*cdf0e10cSrcweir #include <tools/string.hxx>
33*cdf0e10cSrcweir #include "swdllapi.h"
34*cdf0e10cSrcweir #include <swtypes.hxx>	//fuer SwTwips
35*cdf0e10cSrcweir #include <frmfmt.hxx>
36*cdf0e10cSrcweir //#ifndef _NUMRULE_HXX
37*cdf0e10cSrcweir //#include <numrule.hxx>
38*cdf0e10cSrcweir //#endif
39*cdf0e10cSrcweir #include <editeng/numitem.hxx>
40*cdf0e10cSrcweir 
41*cdf0e10cSrcweir class SfxPoolItem;
42*cdf0e10cSrcweir class SwTxtFmtColl;
43*cdf0e10cSrcweir class SwNode;
44*cdf0e10cSrcweir 
45*cdf0e10cSrcweir //Separator line adjustment
46*cdf0e10cSrcweir enum SwFtnAdj
47*cdf0e10cSrcweir {
48*cdf0e10cSrcweir 	FTNADJ_LEFT,
49*cdf0e10cSrcweir 	FTNADJ_CENTER,
50*cdf0e10cSrcweir 	FTNADJ_RIGHT
51*cdf0e10cSrcweir };
52*cdf0e10cSrcweir 
53*cdf0e10cSrcweir //footnote information
54*cdf0e10cSrcweir class SW_DLLPUBLIC SwPageFtnInfo
55*cdf0e10cSrcweir {
56*cdf0e10cSrcweir 	SwTwips 	nMaxHeight;		//maximum height of the footnote area.
57*cdf0e10cSrcweir 	sal_uLong		nLineWidth;		//width of separator line
58*cdf0e10cSrcweir 	Color		aLineColor;		//color of the separator line
59*cdf0e10cSrcweir 	Fraction    aWidth;			//percentage width of the separator line.
60*cdf0e10cSrcweir 	SwFtnAdj	eAdj;			//line adjustment.
61*cdf0e10cSrcweir 	SwTwips		nTopDist;		//distance between body and separator.
62*cdf0e10cSrcweir 	SwTwips		nBottomDist;	//distance between separator and first footnote
63*cdf0e10cSrcweir 
64*cdf0e10cSrcweir public:
65*cdf0e10cSrcweir 	SwTwips   	GetHeight() const 		{ return nMaxHeight; }
66*cdf0e10cSrcweir 	sal_uLong 			GetLineWidth() const { return nLineWidth; }
67*cdf0e10cSrcweir 	const Color& 	GetLineColor() const { return aLineColor;}
68*cdf0e10cSrcweir 	const Fraction&	GetWidth() const 	{ return aWidth; }
69*cdf0e10cSrcweir 	SwFtnAdj	GetAdj()	const 		{ return eAdj; }
70*cdf0e10cSrcweir 	SwTwips		GetTopDist()const 		{ return nTopDist; }
71*cdf0e10cSrcweir 	SwTwips		GetBottomDist() const 	{ return nBottomDist; }
72*cdf0e10cSrcweir 
73*cdf0e10cSrcweir 	void SetHeight( SwTwips  nNew ) 	{ nMaxHeight = nNew; }
74*cdf0e10cSrcweir 	void SetLineWidth(sal_uLong nSet  ) 	{ nLineWidth = nSet; }
75*cdf0e10cSrcweir 	void SetLineColor(const Color& rCol )  { aLineColor = rCol;}
76*cdf0e10cSrcweir 	void SetWidth( const Fraction &rNew){ aWidth = rNew; }
77*cdf0e10cSrcweir 	void SetAdj   ( SwFtnAdj eNew ) 	{ eAdj = eNew; }
78*cdf0e10cSrcweir 	void SetTopDist   ( SwTwips nNew ) 	{ nTopDist = nNew; }
79*cdf0e10cSrcweir 	void SetBottomDist( SwTwips nNew ) 	{ nBottomDist = nNew; }
80*cdf0e10cSrcweir 
81*cdf0e10cSrcweir 	SwPageFtnInfo();
82*cdf0e10cSrcweir 	SwPageFtnInfo( const SwPageFtnInfo& );
83*cdf0e10cSrcweir 	SwPageFtnInfo& operator=( const SwPageFtnInfo& );
84*cdf0e10cSrcweir 
85*cdf0e10cSrcweir 	sal_Bool operator ==( const SwPageFtnInfo& ) const;
86*cdf0e10cSrcweir };
87*cdf0e10cSrcweir 
88*cdf0e10cSrcweir /*
89*cdf0e10cSrcweir  * Verwendung des UseOnPage (eUse) und der FrmFmt'e
90*cdf0e10cSrcweir  *
91*cdf0e10cSrcweir  *	RIGHT	- aMaster nur fuer rechte Seiten, linke  Seiten immer leer.
92*cdf0e10cSrcweir  *	LEFT	- aLeft fuer linke  Seiten, rechte Seiten immer leer.
93*cdf0e10cSrcweir  *			  aLeft ist eine Kopie des Master.
94*cdf0e10cSrcweir  *  ALL		- aMaster fuer rechte Seiten, aLeft fuer Linke Seiten.
95*cdf0e10cSrcweir  *			  aLeft ist eine Kopie des Master.
96*cdf0e10cSrcweir  *	MIRROR	- aMaster fuer rechte Seiten, aLeft fuer linke Seiten.
97*cdf0e10cSrcweir  *			  aLeft ist eine Kopie des Master, Raender sind gespiegelt.
98*cdf0e10cSrcweir  *
99*cdf0e10cSrcweir  * UI dreht auschliesslich am Master! aLeft wird beim Chg am Dokument
100*cdf0e10cSrcweir  * enstprechend dem eUse eingestellt.
101*cdf0e10cSrcweir  *
102*cdf0e10cSrcweir  * Damit es die Filter etwas einfacher haben werden weitere Werte im
103*cdf0e10cSrcweir  * eUse untergebracht:
104*cdf0e10cSrcweir  *
105*cdf0e10cSrcweir  * HEADERSHARE - Headerinhalt auf beiden Seiten gleich
106*cdf0e10cSrcweir  * FOOTERSHARE - Footerinhalt auf beiden Seiten gleich
107*cdf0e10cSrcweir  *
108*cdf0e10cSrcweir  * Die Werte werden bei den entsprechenden Get-/Set-Methden ausmaskiert.
109*cdf0e10cSrcweir  * Zugriff auf das volle eUse inclusive der Header-Footer information
110*cdf0e10cSrcweir  * per ReadUseOn(), WriteUseOn() (fuer Filter und CopyCTor)!
111*cdf0e10cSrcweir  *
112*cdf0e10cSrcweir  * Die FrmFormate fuer Header/Footer werden anhand der Attribute fuer
113*cdf0e10cSrcweir  * Header/Footer vom UI am Master eingestellt (Hoehe, Raender, Hintergrund...);
114*cdf0e10cSrcweir  * Header/Footer fuer die Linke Seite werden entsprechen kopiert bzw.
115*cdf0e10cSrcweir  * gespielt (Chg am Dokument).
116*cdf0e10cSrcweir  * Das jew. Attribut fuer den Inhalt wird automatisch beim Chg am
117*cdf0e10cSrcweir  * Dokument versorgt (entsprechen den SHARE-informationen werden Inhalte
118*cdf0e10cSrcweir  * erzeugt bzw. entfernt).
119*cdf0e10cSrcweir  *
120*cdf0e10cSrcweir  */
121*cdf0e10cSrcweir 
122*cdf0e10cSrcweir typedef sal_uInt16 UseOnPage;
123*cdf0e10cSrcweir namespace nsUseOnPage
124*cdf0e10cSrcweir {
125*cdf0e10cSrcweir     const UseOnPage PD_NONE           = 0x0000; //for internal use only.
126*cdf0e10cSrcweir     const UseOnPage PD_LEFT           = 0x0001;
127*cdf0e10cSrcweir     const UseOnPage PD_RIGHT          = 0x0002;
128*cdf0e10cSrcweir     const UseOnPage PD_ALL            = 0x0003;
129*cdf0e10cSrcweir     const UseOnPage PD_MIRROR         = 0x0007;
130*cdf0e10cSrcweir     const UseOnPage PD_HEADERSHARE    = 0x0040;
131*cdf0e10cSrcweir     const UseOnPage PD_FOOTERSHARE    = 0x0080;
132*cdf0e10cSrcweir     const UseOnPage PD_NOHEADERSHARE  = 0x00BF; //for internal use only
133*cdf0e10cSrcweir     const UseOnPage PD_NOFOOTERSHARE  = 0x007F; //for internal use only
134*cdf0e10cSrcweir }
135*cdf0e10cSrcweir 
136*cdf0e10cSrcweir class SW_DLLPUBLIC SwPageDesc : public SwModify
137*cdf0e10cSrcweir {
138*cdf0e10cSrcweir 	friend class SwDoc;
139*cdf0e10cSrcweir     friend class SwUndoPageDescExt;
140*cdf0e10cSrcweir 
141*cdf0e10cSrcweir 	String		aDescName;
142*cdf0e10cSrcweir 	SvxNumberType	aNumType;
143*cdf0e10cSrcweir 	SwFrmFmt	aMaster;
144*cdf0e10cSrcweir 	SwFrmFmt	aLeft;
145*cdf0e10cSrcweir 	SwDepend	aDepend;	// wg. Registerhaltigkeit
146*cdf0e10cSrcweir 	SwPageDesc *pFollow;
147*cdf0e10cSrcweir 	sal_uInt16		nRegHeight;	// Zeilenabstand und Fontascent der Vorlage
148*cdf0e10cSrcweir 	sal_uInt16		nRegAscent; // fuer die Registerhaltigkeit
149*cdf0e10cSrcweir 	UseOnPage	eUse;
150*cdf0e10cSrcweir 	sal_Bool		bLandscape;
151*cdf0e10cSrcweir 
152*cdf0e10cSrcweir 	//Fussnoteninformationen
153*cdf0e10cSrcweir 	SwPageFtnInfo aFtnInfo;
154*cdf0e10cSrcweir 
155*cdf0e10cSrcweir 	//Wird zum Spiegeln vom Chg (Doc) gerufen.
156*cdf0e10cSrcweir 	//Kein Abgleich an anderer Stelle.
157*cdf0e10cSrcweir 	SW_DLLPRIVATE void Mirror();
158*cdf0e10cSrcweir 
159*cdf0e10cSrcweir 	SW_DLLPRIVATE void ResetAllAttr( sal_Bool bLeft );
160*cdf0e10cSrcweir 
161*cdf0e10cSrcweir 	SW_DLLPRIVATE SwPageDesc(const String&, SwFrmFmt*, SwDoc *pDc );
162*cdf0e10cSrcweir 
163*cdf0e10cSrcweir protected:
164*cdf0e10cSrcweir    virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNewValue );
165*cdf0e10cSrcweir 
166*cdf0e10cSrcweir public:
167*cdf0e10cSrcweir 	const String &GetName() const { return aDescName; }
168*cdf0e10cSrcweir 		  void 	  SetName( const String& rNewName ) { aDescName = rNewName; }
169*cdf0e10cSrcweir 
170*cdf0e10cSrcweir 	sal_Bool GetLandscape() const { return bLandscape; }
171*cdf0e10cSrcweir 	void SetLandscape( sal_Bool bNew ) { bLandscape = bNew; }
172*cdf0e10cSrcweir 
173*cdf0e10cSrcweir 	const SvxNumberType &GetNumType() const { return aNumType; }
174*cdf0e10cSrcweir 		  void		 	SetNumType( const SvxNumberType& rNew ) { aNumType = rNew; }
175*cdf0e10cSrcweir 
176*cdf0e10cSrcweir 	const SwPageFtnInfo &GetFtnInfo() const { return aFtnInfo; }
177*cdf0e10cSrcweir 		  SwPageFtnInfo &GetFtnInfo()		{ return aFtnInfo; }
178*cdf0e10cSrcweir 	void  SetFtnInfo( const SwPageFtnInfo &rNew ) { aFtnInfo = rNew; }
179*cdf0e10cSrcweir 
180*cdf0e10cSrcweir 	inline sal_Bool IsHeaderShared() const;
181*cdf0e10cSrcweir 	inline sal_Bool IsFooterShared() const;
182*cdf0e10cSrcweir 	inline void ChgHeaderShare( sal_Bool bNew );
183*cdf0e10cSrcweir 	inline void ChgFooterShare( sal_Bool bNew );
184*cdf0e10cSrcweir 
185*cdf0e10cSrcweir 	inline void		 SetUseOn( UseOnPage eNew );
186*cdf0e10cSrcweir 	inline UseOnPage GetUseOn() const;
187*cdf0e10cSrcweir 
188*cdf0e10cSrcweir 	void	  WriteUseOn( UseOnPage eNew ) { eUse = eNew; }
189*cdf0e10cSrcweir 	UseOnPage ReadUseOn () const { return eUse; }
190*cdf0e10cSrcweir 
191*cdf0e10cSrcweir 		  SwFrmFmt &GetMaster() { return aMaster; }
192*cdf0e10cSrcweir 		  SwFrmFmt &GetLeft()   { return aLeft; }
193*cdf0e10cSrcweir 	const SwFrmFmt &GetMaster() const { return aMaster; }
194*cdf0e10cSrcweir 	const SwFrmFmt &GetLeft()   const { return aLeft; }
195*cdf0e10cSrcweir 
196*cdf0e10cSrcweir 	// Reset all attrs of the format but keep the ones a pagedesc
197*cdf0e10cSrcweir 	// cannot live without.
198*cdf0e10cSrcweir 	inline void ResetAllMasterAttr();
199*cdf0e10cSrcweir 	inline void ResetAllLeftAttr();
200*cdf0e10cSrcweir 
201*cdf0e10cSrcweir 	//Mit den folgenden Methoden besorgt sich das Layout ein Format
202*cdf0e10cSrcweir 	//um eine Seite erzeugen zu koennen
203*cdf0e10cSrcweir 	inline SwFrmFmt *GetRightFmt();
204*cdf0e10cSrcweir 	inline const SwFrmFmt *GetRightFmt() const;
205*cdf0e10cSrcweir 	inline SwFrmFmt *GetLeftFmt();
206*cdf0e10cSrcweir 	inline const SwFrmFmt *GetLeftFmt() const;
207*cdf0e10cSrcweir 
208*cdf0e10cSrcweir 	sal_uInt16 GetRegHeight() const { return nRegHeight; }
209*cdf0e10cSrcweir 	sal_uInt16 GetRegAscent() const { return nRegAscent; }
210*cdf0e10cSrcweir 	void SetRegHeight( sal_uInt16 nNew ){ nRegHeight = nNew; }
211*cdf0e10cSrcweir 	void SetRegAscent( sal_uInt16 nNew ){ nRegAscent = nNew; }
212*cdf0e10cSrcweir 
213*cdf0e10cSrcweir 	inline void SetFollow( const SwPageDesc* pNew );
214*cdf0e10cSrcweir 	const SwPageDesc* GetFollow() const { return pFollow; }
215*cdf0e10cSrcweir 		  SwPageDesc* GetFollow() { return pFollow; }
216*cdf0e10cSrcweir 
217*cdf0e10cSrcweir 	void SetRegisterFmtColl( const SwTxtFmtColl* rFmt );
218*cdf0e10cSrcweir 	const SwTxtFmtColl* GetRegisterFmtColl() const;
219*cdf0e10cSrcweir 	void RegisterChange();
220*cdf0e10cSrcweir 
221*cdf0e10cSrcweir 	// erfragen und setzen der PoolFormat-Id
222*cdf0e10cSrcweir 	sal_uInt16 GetPoolFmtId() const 		{ return aMaster.GetPoolFmtId(); }
223*cdf0e10cSrcweir 	void SetPoolFmtId( sal_uInt16 nId ) 	{ aMaster.SetPoolFmtId( nId ); }
224*cdf0e10cSrcweir 	sal_uInt16 GetPoolHelpId() const 		{ return aMaster.GetPoolHelpId(); }
225*cdf0e10cSrcweir 	void SetPoolHelpId( sal_uInt16 nId ) 	{ aMaster.SetPoolHelpId( nId ); }
226*cdf0e10cSrcweir 	sal_uInt8 GetPoolHlpFileId() const 		{ return aMaster.GetPoolHlpFileId(); }
227*cdf0e10cSrcweir 	void SetPoolHlpFileId( sal_uInt8 nId )	{ aMaster.SetPoolHlpFileId( nId ); }
228*cdf0e10cSrcweir 
229*cdf0e10cSrcweir 		// erfrage vom Client Informationen
230*cdf0e10cSrcweir 	virtual sal_Bool GetInfo( SfxPoolItem& ) const;
231*cdf0e10cSrcweir 
232*cdf0e10cSrcweir 	const SwFrmFmt* GetPageFmtOfNode( const SwNode& rNd,
233*cdf0e10cSrcweir 									sal_Bool bCheckForThisPgDc = sal_True ) const;
234*cdf0e10cSrcweir 	sal_Bool IsFollowNextPageOfNode( const SwNode& rNd ) const;
235*cdf0e10cSrcweir 
236*cdf0e10cSrcweir 	//Given a SwNode return the pagedesc in use at that location.
237*cdf0e10cSrcweir 	static const SwPageDesc* GetPageDescOfNode(const SwNode& rNd);
238*cdf0e10cSrcweir 
239*cdf0e10cSrcweir 	SwPageDesc& operator=( const SwPageDesc& );
240*cdf0e10cSrcweir 
241*cdf0e10cSrcweir 	SwPageDesc( const SwPageDesc& );
242*cdf0e10cSrcweir 	~SwPageDesc();
243*cdf0e10cSrcweir };
244*cdf0e10cSrcweir 
245*cdf0e10cSrcweir inline void SwPageDesc::SetFollow( const SwPageDesc* pNew )
246*cdf0e10cSrcweir {
247*cdf0e10cSrcweir 	pFollow = pNew ? (SwPageDesc*)pNew : this;
248*cdf0e10cSrcweir }
249*cdf0e10cSrcweir 
250*cdf0e10cSrcweir inline sal_Bool SwPageDesc::IsHeaderShared() const
251*cdf0e10cSrcweir {
252*cdf0e10cSrcweir 	return eUse & nsUseOnPage::PD_HEADERSHARE ? sal_True : sal_False;
253*cdf0e10cSrcweir }
254*cdf0e10cSrcweir inline sal_Bool SwPageDesc::IsFooterShared() const
255*cdf0e10cSrcweir {
256*cdf0e10cSrcweir 	return eUse & nsUseOnPage::PD_FOOTERSHARE ? sal_True : sal_False;
257*cdf0e10cSrcweir }
258*cdf0e10cSrcweir inline void SwPageDesc::ChgHeaderShare( sal_Bool bNew )
259*cdf0e10cSrcweir {
260*cdf0e10cSrcweir 	if ( bNew )
261*cdf0e10cSrcweir 		eUse = (UseOnPage) (eUse | nsUseOnPage::PD_HEADERSHARE);
262*cdf0e10cSrcweir 		// (sal_uInt16&)eUse |= (sal_uInt16)nsUseOnPage::PD_HEADERSHARE;
263*cdf0e10cSrcweir 	else
264*cdf0e10cSrcweir 		eUse = (UseOnPage) (eUse & nsUseOnPage::PD_NOHEADERSHARE);
265*cdf0e10cSrcweir 		// (sal_uInt16&)eUse &= (sal_uInt16)nsUseOnPage::PD_NOHEADERSHARE;
266*cdf0e10cSrcweir }
267*cdf0e10cSrcweir inline void SwPageDesc::ChgFooterShare( sal_Bool bNew )
268*cdf0e10cSrcweir {
269*cdf0e10cSrcweir 	if ( bNew )
270*cdf0e10cSrcweir 		eUse = (UseOnPage) (eUse | nsUseOnPage::PD_FOOTERSHARE);
271*cdf0e10cSrcweir 		// (sal_uInt16&)eUse |= (sal_uInt16)nsUseOnPage::PD_FOOTERSHARE;
272*cdf0e10cSrcweir 	else
273*cdf0e10cSrcweir 		eUse = (UseOnPage) (eUse & nsUseOnPage::PD_NOFOOTERSHARE);
274*cdf0e10cSrcweir 		// (sal_uInt16&)eUse &= (sal_uInt16)nsUseOnPage::PD_NOFOOTERSHARE;
275*cdf0e10cSrcweir }
276*cdf0e10cSrcweir inline void	SwPageDesc::SetUseOn( UseOnPage eNew )
277*cdf0e10cSrcweir {
278*cdf0e10cSrcweir 	UseOnPage eTmp = nsUseOnPage::PD_NONE;
279*cdf0e10cSrcweir 	if ( eUse & nsUseOnPage::PD_HEADERSHARE )
280*cdf0e10cSrcweir 		eTmp = nsUseOnPage::PD_HEADERSHARE;
281*cdf0e10cSrcweir 		// (sal_uInt16&)eTmp |= (sal_uInt16)nsUseOnPage::PD_HEADERSHARE;
282*cdf0e10cSrcweir 	if ( eUse & nsUseOnPage::PD_FOOTERSHARE )
283*cdf0e10cSrcweir 		eTmp = (UseOnPage) (eTmp | nsUseOnPage::PD_FOOTERSHARE);
284*cdf0e10cSrcweir 		// (sal_uInt16&)eTmp |= (sal_uInt16)nsUseOnPage::PD_FOOTERSHARE;
285*cdf0e10cSrcweir 	eUse = (UseOnPage) (eTmp | eNew);
286*cdf0e10cSrcweir 	// (sal_uInt16&)eUse = eTmp | eNew;
287*cdf0e10cSrcweir }
288*cdf0e10cSrcweir inline UseOnPage SwPageDesc::GetUseOn() const
289*cdf0e10cSrcweir {
290*cdf0e10cSrcweir 	UseOnPage eRet = eUse;
291*cdf0e10cSrcweir 	eRet = (UseOnPage) (eRet & nsUseOnPage::PD_NOHEADERSHARE);
292*cdf0e10cSrcweir 	// (sal_uInt16&)eRet &= (sal_uInt16)nsUseOnPage::PD_NOHEADERSHARE;
293*cdf0e10cSrcweir 	eRet = (UseOnPage) (eRet & nsUseOnPage::PD_NOFOOTERSHARE);
294*cdf0e10cSrcweir 	// (sal_uInt16&)eRet &= (sal_uInt16)nsUseOnPage::PD_NOFOOTERSHARE;
295*cdf0e10cSrcweir 	return eRet;
296*cdf0e10cSrcweir }
297*cdf0e10cSrcweir 
298*cdf0e10cSrcweir inline void SwPageDesc::ResetAllMasterAttr()
299*cdf0e10cSrcweir {
300*cdf0e10cSrcweir 	ResetAllAttr( sal_False );
301*cdf0e10cSrcweir }
302*cdf0e10cSrcweir 
303*cdf0e10cSrcweir inline void SwPageDesc::ResetAllLeftAttr()
304*cdf0e10cSrcweir {
305*cdf0e10cSrcweir 	ResetAllAttr( sal_True );
306*cdf0e10cSrcweir }
307*cdf0e10cSrcweir 
308*cdf0e10cSrcweir inline SwFrmFmt *SwPageDesc::GetRightFmt()
309*cdf0e10cSrcweir {
310*cdf0e10cSrcweir 	return nsUseOnPage::PD_RIGHT & eUse ? &aMaster : 0;
311*cdf0e10cSrcweir }
312*cdf0e10cSrcweir inline const SwFrmFmt *SwPageDesc::GetRightFmt() const
313*cdf0e10cSrcweir {
314*cdf0e10cSrcweir 	return nsUseOnPage::PD_RIGHT & eUse ? &aMaster : 0;
315*cdf0e10cSrcweir }
316*cdf0e10cSrcweir inline SwFrmFmt *SwPageDesc::GetLeftFmt()
317*cdf0e10cSrcweir {
318*cdf0e10cSrcweir 	return nsUseOnPage::PD_LEFT & eUse ? &aLeft : 0;
319*cdf0e10cSrcweir }
320*cdf0e10cSrcweir inline const SwFrmFmt *SwPageDesc::GetLeftFmt() const
321*cdf0e10cSrcweir {
322*cdf0e10cSrcweir 	return nsUseOnPage::PD_LEFT & eUse ? &aLeft : 0;
323*cdf0e10cSrcweir }
324*cdf0e10cSrcweir 
325*cdf0e10cSrcweir class SwPageDescExt
326*cdf0e10cSrcweir {
327*cdf0e10cSrcweir     SwPageDesc aPageDesc;
328*cdf0e10cSrcweir     SwDoc * pDoc;
329*cdf0e10cSrcweir     String sFollow;
330*cdf0e10cSrcweir 
331*cdf0e10cSrcweir     void SetPageDesc(const SwPageDesc & aPageDesc);
332*cdf0e10cSrcweir 
333*cdf0e10cSrcweir public:
334*cdf0e10cSrcweir     SwPageDescExt(const SwPageDesc & rPageDesc, SwDoc * pDoc);
335*cdf0e10cSrcweir     SwPageDescExt(const SwPageDescExt & rSrc);
336*cdf0e10cSrcweir     ~SwPageDescExt();
337*cdf0e10cSrcweir 
338*cdf0e10cSrcweir     SwPageDescExt & operator = (const SwPageDescExt & rSrc);
339*cdf0e10cSrcweir     SwPageDescExt & operator = (const SwPageDesc & rSrc);
340*cdf0e10cSrcweir 
341*cdf0e10cSrcweir     const String & GetName() const;
342*cdf0e10cSrcweir 
343*cdf0e10cSrcweir     operator SwPageDesc() const; // #i7983#
344*cdf0e10cSrcweir };
345*cdf0e10cSrcweir 
346*cdf0e10cSrcweir 
347*cdf0e10cSrcweir SwPageDesc* GetPageDescByName_Impl(SwDoc& rDoc, const String& rName);
348*cdf0e10cSrcweir 
349*cdf0e10cSrcweir #endif	//_PAGEDESC_HXX
350