|  | /************************************************************** | 
|  | * | 
|  | * Licensed to the Apache Software Foundation (ASF) under one | 
|  | * or more contributor license agreements.  See the NOTICE file | 
|  | * distributed with this work for additional information | 
|  | * regarding copyright ownership.  The ASF licenses this file | 
|  | * to you under the Apache License, Version 2.0 (the | 
|  | * "License"); you may not use this file except in compliance | 
|  | * with the License.  You may obtain a copy of the License at | 
|  | * | 
|  | *   http://www.apache.org/licenses/LICENSE-2.0 | 
|  | * | 
|  | * Unless required by applicable law or agreed to in writing, | 
|  | * software distributed under the License is distributed on an | 
|  | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | 
|  | * KIND, either express or implied.  See the License for the | 
|  | * specific language governing permissions and limitations | 
|  | * under the License. | 
|  | * | 
|  | *************************************************************/ | 
|  |  | 
|  |  | 
|  | #ifndef SW_LAYFRM_HXX | 
|  | #define SW_LAYFRM_HXX | 
|  |  | 
|  | #include "frame.hxx" | 
|  |  | 
|  | class SwCntntFrm; | 
|  | class SwFlowFrm; | 
|  | class SwFmtCol; | 
|  | struct SwCrsrMoveState; | 
|  | class SwFrmFmt; | 
|  | class SwBorderAttrs; | 
|  | class SwFmtFrmSize; | 
|  | class SwCellFrm; | 
|  |  | 
|  | class SwLayoutFrm: public SwFrm | 
|  | { | 
|  | //Der verkappte SwFrm | 
|  | friend class SwFlowFrm; | 
|  | friend class SwFrm; | 
|  |  | 
|  | //Hebt die Lower waehrend eines Spaltenumbaus auf. | 
|  | friend SwFrm* SaveCntnt( SwLayoutFrm *, SwFrm * ); | 
|  | friend void   RestoreCntnt( SwFrm *, SwLayoutFrm *, SwFrm *pSibling, bool bGrow ); | 
|  |  | 
|  | #if OSL_DEBUG_LEVEL > 1 | 
|  | //entfernt leere SwSectionFrms aus einer Kette | 
|  | friend SwFrm* SwClearDummies( SwFrm* pFrm ); | 
|  | #endif | 
|  |  | 
|  | void CopySubtree( const SwLayoutFrm *pDest ); | 
|  | protected: | 
|  | virtual void Format( const SwBorderAttrs *pAttrs = 0 ); | 
|  | virtual void MakeAll(); | 
|  |  | 
|  | SwFrm			*pLower; | 
|  |  | 
|  | virtual SwTwips ShrinkFrm( SwTwips, sal_Bool bTst = sal_False, sal_Bool bInfo = sal_False ); | 
|  | virtual SwTwips GrowFrm  ( SwTwips, sal_Bool bTst = sal_False, sal_Bool bInfo = sal_False ); | 
|  |  | 
|  | long CalcRel( const SwFmtFrmSize &rSz, sal_Bool bWidth ) const; | 
|  |  | 
|  | public: | 
|  | // --> OD 2004-06-29 #i28701# | 
|  | TYPEINFO(); | 
|  |  | 
|  | void PaintSubsidiaryLines( const SwPageFrm*, const SwRect& ) const; | 
|  | void RefreshLaySubsidiary( const SwPageFrm*, const SwRect& ) const; | 
|  | void RefreshExtraData( const SwRect & ) const; | 
|  |  | 
|  | //Proportionale Groessenanpassung der untergeordneten. | 
|  | void ChgLowersProp( const Size& rOldSize ); | 
|  |  | 
|  | void AdjustColumns( const SwFmtCol *pCol, sal_Bool bAdjustAttributes ); | 
|  |  | 
|  | void ChgColumns( const SwFmtCol &rOld, const SwFmtCol &rNew, | 
|  | const sal_Bool bChgFtn = sal_False ); | 
|  |  | 
|  |  | 
|  | //Painted die Column-Trennlinien fuer die innenliegenden Columns. | 
|  | void PaintColLines( const SwRect &, const SwFmtCol &, | 
|  | const SwPageFrm * ) const; | 
|  |  | 
|  | virtual bool    FillSelection( SwSelectionList& rList, const SwRect& rRect ) const; | 
|  |  | 
|  | virtual sal_Bool  GetCrsrOfst( SwPosition *, Point&, | 
|  | SwCrsrMoveState* = 0 ) const; | 
|  |  | 
|  | virtual void Cut(); | 
|  | virtual void Paste( SwFrm* pParent, SwFrm* pSibling = 0 ); | 
|  |  | 
|  | //sucht den dichtesten Cntnt zum SPoint, wird bei Seiten, Flys und Cells | 
|  | //benutzt wenn GetCrsrOfst versagt hat. | 
|  | const SwCntntFrm* GetCntntPos( Point &rPoint, const sal_Bool bDontLeave, | 
|  | const sal_Bool bBodyOnly = sal_False, | 
|  | const sal_Bool bCalc = sal_False, | 
|  | const SwCrsrMoveState *pCMS = 0, | 
|  | const sal_Bool bDefaultExpand = sal_True ) const; | 
|  |  | 
|  | SwLayoutFrm( SwFrmFmt*, SwFrm* ); | 
|  | ~SwLayoutFrm(); | 
|  |  | 
|  | virtual void Paint( SwRect const&, | 
|  | SwPrintData const*const pPrintData = NULL ) const; | 
|  | const SwFrm *Lower() const { return pLower; } | 
|  | SwFrm *Lower()       { return pLower; } | 
|  | const SwCntntFrm *ContainsCntnt() const; | 
|  | inline SwCntntFrm *ContainsCntnt(); | 
|  | const SwCellFrm *FirstCell() const; | 
|  | inline SwCellFrm *FirstCell(); | 
|  | // --> OD 2006-02-01 #130797# | 
|  | // Method <ContainsAny()> doesn't investigate content of footnotes by default. | 
|  | // But under certain circumstances this investigation is intended. | 
|  | // Thus, introduce new optional parameter <_bInvestigateFtnForSections>. | 
|  | // It's default is <false>, still indicating that content of footnotes isn't | 
|  | // investigated for sections. | 
|  | const SwFrm *ContainsAny( const bool _bInvestigateFtnForSections = false ) const; | 
|  | inline SwFrm *ContainsAny( const bool _bInvestigateFtnForSections = false ); | 
|  | // <-- | 
|  | sal_Bool IsAnLower( const SwFrm * ) const; | 
|  |  | 
|  | virtual const SwFrmFmt *GetFmt() const; | 
|  | virtual       SwFrmFmt *GetFmt(); | 
|  | void        SetFrmFmt( SwFrmFmt* ); | 
|  |  | 
|  | //Verschieben der Ftns aller Lower - ab dem StartCntnt. | 
|  | //sal_True wenn mindestens eine Ftn verschoben wurde. | 
|  | //Ruft das Update der Seitennummer wenn bFtnNums gesetzt ist. | 
|  | sal_Bool MoveLowerFtns( SwCntntFrm *pStart, SwFtnBossFrm *pOldBoss, | 
|  | SwFtnBossFrm *pNewBoss, const sal_Bool bFtnNums ); | 
|  |  | 
|  | // --> OD 2004-07-01 #i28701# - change purpose of method and its name | 
|  | // --> OD 2005-03-11 #i44016# - add parameter <_bUnlockPosOfObjs> to | 
|  | // force an unlockposition call for the lower objects. | 
|  | void NotifyLowerObjs( const bool _bUnlockPosOfObjs = false ); | 
|  | // <-- | 
|  |  | 
|  | //Invalidiert diejenigen innenliegenden Frames, deren Breite und/oder | 
|  | //Hoehe Prozentual berechnet werden. Auch Rahmen, die an this oder an | 
|  | //innenliegenden verankert sind werden ggf. invalidiert. | 
|  | void InvaPercentLowers( SwTwips nDiff = 0 ); | 
|  |  | 
|  | //Gerufen von Format fuer Rahmen und Bereichen mit Spalten. | 
|  | void FormatWidthCols( const SwBorderAttrs &, const SwTwips nBorder, | 
|  | const SwTwips nMinHeight ); | 
|  |  | 
|  | // InnerHeight returns the height of the content and may be bigger or | 
|  | // less than the PrtArea-Height of the layoutframe himself | 
|  | SwTwips InnerHeight() const; | 
|  |  | 
|  | /** method to check relative position of layout frame to | 
|  | a given layout frame. | 
|  |  | 
|  | OD 08.11.2002 - refactoring of pseudo-local method <lcl_Apres(..)> in | 
|  | <txtftn.cxx> for #104840#. | 
|  |  | 
|  | @param _aCheckRefLayFrm | 
|  | constant reference of an instance of class <SwLayoutFrm> which | 
|  | is used as the reference for the relative position check. | 
|  |  | 
|  | @author OD | 
|  |  | 
|  | @return true, if <this> is positioned before the layout frame <p> | 
|  | */ | 
|  | bool IsBefore( const SwLayoutFrm* _pCheckRefLayFrm ) const; | 
|  |  | 
|  | const SwFrm* GetLastLower() const; | 
|  | inline SwFrm* GetLastLower(); | 
|  | }; | 
|  |  | 
|  | //Um doppelte Implementierung zu sparen wird hier ein bischen gecasted | 
|  | inline SwCntntFrm* SwLayoutFrm::ContainsCntnt() | 
|  | { | 
|  | return (SwCntntFrm*)(((const SwLayoutFrm*)this)->ContainsCntnt()); | 
|  | } | 
|  |  | 
|  | inline SwCellFrm* SwLayoutFrm::FirstCell() | 
|  | { | 
|  | return (SwCellFrm*)(((const SwLayoutFrm*)this)->FirstCell()); | 
|  | } | 
|  |  | 
|  | // --> OD 2006-02-01 #130797# | 
|  | inline SwFrm* SwLayoutFrm::ContainsAny( const bool _bInvestigateFtnForSections ) | 
|  | { | 
|  | return (SwFrm*)(((const SwLayoutFrm*)this)->ContainsAny( _bInvestigateFtnForSections )); | 
|  | } | 
|  | // <-- | 
|  |  | 
|  | // Diese SwFrm-inlines sind hier, damit frame.hxx nicht layfrm.hxx includen muss | 
|  | inline sal_Bool SwFrm::IsColBodyFrm() const | 
|  | { | 
|  | return nType == FRMC_BODY && GetUpper()->IsColumnFrm(); | 
|  | } | 
|  |  | 
|  | inline sal_Bool SwFrm::IsPageBodyFrm() const | 
|  | { | 
|  | return nType == FRMC_BODY && GetUpper()->IsPageFrm(); | 
|  | } | 
|  |  | 
|  | inline SwFrm* SwLayoutFrm::GetLastLower() | 
|  | { | 
|  | return const_cast<SwFrm*>(static_cast<const SwLayoutFrm*>(this)->GetLastLower()); | 
|  | } | 
|  |  | 
|  | #endif  // SW_LAYFRM_HXX |