diff options
Diffstat (limited to 'sw/source/core/inc/cntfrm.hxx')
-rw-r--r-- | sw/source/core/inc/cntfrm.hxx | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/sw/source/core/inc/cntfrm.hxx b/sw/source/core/inc/cntfrm.hxx new file mode 100644 index 000000000000..6d915bc72a8b --- /dev/null +++ b/sw/source/core/inc/cntfrm.hxx @@ -0,0 +1,147 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef _CNTFRM_HXX +#define _CNTFRM_HXX +#include "frame.hxx" +#include "flowfrm.hxx" +#include "cshtyp.hxx" + +class SwLayoutFrm; +class SwCntntNode; +class SwBorderAttrs; +class SwAttrSetChg; +class SwTxtFrm; + +//Implementiert in cntfrm.cxx, wird von cntfrm.cxx und crsrsh.cxx angezogen +extern BOOL GetFrmInPage( const SwCntntFrm*, SwWhichPage, SwPosPage, SwPaM* ); + +class SwCntntFrm: public SwFrm, public SwFlowFrm +{ + friend void MakeNxt( SwFrm *pFrm, SwFrm *pNxt ); //ruft MakePrtArea + + // --> OD 2007-11-26 #b6614158# + // parameter <bObjsInNewUpper>, indicating that objects are existing in + // remaining area of new upper + BOOL _WouldFit( SwTwips nSpace, + SwLayoutFrm *pNewUpper, + BOOL bTstMove, + const bool bObjsInNewUpper ); + // <-- + virtual void MakeAll(); + + void _UpdateAttr( SfxPoolItem*, SfxPoolItem*, BYTE &, + SwAttrSetChg *pa = 0, SwAttrSetChg *pb = 0 ); + + virtual BOOL ShouldBwdMoved( SwLayoutFrm *pNewUpper, BOOL, BOOL& ); + + const SwCntntFrm* ImplGetNextCntntFrm( bool bFwd ) const; + +protected: + + BOOL MakePrtArea( const SwBorderAttrs & ); + + virtual void Modify( SfxPoolItem*, SfxPoolItem* ); + virtual SwTwips ShrinkFrm( SwTwips, BOOL bTst = FALSE, BOOL bInfo = FALSE ); + virtual SwTwips GrowFrm ( SwTwips, BOOL bTst = FALSE, BOOL bInfo = FALSE ); + + SwCntntFrm( SwCntntNode * const ); + +public: + virtual ~SwCntntFrm(); + TYPEINFO(); //bereits in Basisklassen drin + + virtual void Cut(); + virtual void Paste( SwFrm* pParent, SwFrm* pSibling = 0 ); + + inline SwCntntNode *GetNode(); + inline const SwCntntNode *GetNode() const; + USHORT GetSectionLevel(); + + inline const SwCntntFrm *GetFollow() const; + inline SwCntntFrm *GetFollow(); + SwTxtFrm* FindMaster() const; + + //Layoutabhaengiges Cursortravelling + virtual BOOL LeftMargin( SwPaM * ) const; + virtual BOOL RightMargin( SwPaM *, BOOL bAPI = FALSE ) const; + virtual BOOL UnitUp( SwPaM *, const SwTwips nOffset = 0, + BOOL bSetInReadOnly = FALSE ) const; + virtual BOOL UnitDown( SwPaM *, const SwTwips nOffset = 0, + BOOL bSetInReadOnly = FALSE ) const; + inline BOOL StartNextPage( SwPaM * ) const; + inline BOOL StartPrevPage( SwPaM * ) const; + inline BOOL StartCurrPage( SwPaM * ) const; + inline BOOL EndCurrPage( SwPaM * ) const; + inline BOOL EndNextPage( SwPaM * ) const; + inline BOOL EndPrevPage( SwPaM * ) const; + + // nMaxHeight is the required height + // bSplit indicates, that the paragraph has to be split + // bTst indicates, that we are currently doing a test formatting + virtual sal_Bool WouldFit( SwTwips &nMaxHeight, sal_Bool &bSplit, sal_Bool bTst ); + + BOOL MoveFtnCntFwd( BOOL, SwFtnBossFrm* );//von MoveFwd gerufen bei Ftn-Inhalt + + inline SwCntntFrm* GetNextCntntFrm() const; + inline SwCntntFrm* GetPrevCntntFrm() const; +}; + +inline SwCntntFrm* SwCntntFrm::GetNextCntntFrm() const +{ + if ( GetNext() && GetNext()->IsCntntFrm() ) + return (SwCntntFrm*)GetNext(); + else + return (SwCntntFrm*)ImplGetNextCntntFrm( true ); +} + +inline SwCntntFrm* SwCntntFrm::GetPrevCntntFrm() const +{ + if ( GetPrev() && GetPrev()->IsCntntFrm() ) + return (SwCntntFrm*)GetPrev(); + else + return (SwCntntFrm*)ImplGetNextCntntFrm( false ); +} + +inline SwCntntNode *SwCntntFrm::GetNode() +{ + return (SwCntntNode*)GetDep(); +} +inline const SwCntntNode *SwCntntFrm::GetNode() const +{ + return (SwCntntNode*)GetDep(); +} + +inline const SwCntntFrm *SwCntntFrm::GetFollow() const +{ + return (const SwCntntFrm*)SwFlowFrm::GetFollow(); +} +inline SwCntntFrm *SwCntntFrm::GetFollow() +{ + return (SwCntntFrm*)SwFlowFrm::GetFollow(); +} + +#endif |