1*1d2dbeb0SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*1d2dbeb0SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*1d2dbeb0SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*1d2dbeb0SAndrew Rist * distributed with this work for additional information 6*1d2dbeb0SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*1d2dbeb0SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*1d2dbeb0SAndrew Rist * "License"); you may not use this file except in compliance 9*1d2dbeb0SAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 11*1d2dbeb0SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 13*1d2dbeb0SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*1d2dbeb0SAndrew Rist * software distributed under the License is distributed on an 15*1d2dbeb0SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*1d2dbeb0SAndrew Rist * KIND, either express or implied. See the License for the 17*1d2dbeb0SAndrew Rist * specific language governing permissions and limitations 18*1d2dbeb0SAndrew Rist * under the License. 19cdf0e10cSrcweir * 20*1d2dbeb0SAndrew Rist *************************************************************/ 21*1d2dbeb0SAndrew Rist 22*1d2dbeb0SAndrew Rist 23cdf0e10cSrcweir #ifndef _OBJECTFORMATTER_HXX 24cdf0e10cSrcweir #define _OBJECTFORMATTER_HXX 25cdf0e10cSrcweir 26cdf0e10cSrcweir #include <sal/types.h> 27cdf0e10cSrcweir 28cdf0e10cSrcweir class SwFrm; 29cdf0e10cSrcweir // --> OD 2004-10-08 #i26945# 30cdf0e10cSrcweir class SwTxtFrm; 31cdf0e10cSrcweir // <-- 32cdf0e10cSrcweir class SwLayoutFrm; 33cdf0e10cSrcweir class SwPageFrm; 34cdf0e10cSrcweir class SwAnchoredObject; 35cdf0e10cSrcweir class SwLayAction; 36cdf0e10cSrcweir // --> OD 2004-10-04 #i26945# 37cdf0e10cSrcweir class SwPageNumAndTypeOfAnchors; 38cdf0e10cSrcweir // <-- 39cdf0e10cSrcweir 40cdf0e10cSrcweir // ----------------------------------------------------------------------------- 41cdf0e10cSrcweir // OD 2004-06-25 #i28701# 42cdf0e10cSrcweir // Format floating screen objects, which are anchored at the given anchor frame 43cdf0e10cSrcweir // and registered at the given page frame. 44cdf0e10cSrcweir // ----------------------------------------------------------------------------- 45cdf0e10cSrcweir class SwObjectFormatter 46cdf0e10cSrcweir { 47cdf0e10cSrcweir private: 48cdf0e10cSrcweir // page frame, at which the floating screen objects are registered. 49cdf0e10cSrcweir const SwPageFrm& mrPageFrm; 50cdf0e10cSrcweir 51cdf0e10cSrcweir // boolean, indicating that only as-character anchored objects have to 52cdf0e10cSrcweir // be formatted. 53cdf0e10cSrcweir bool mbFormatOnlyAsCharAnchored; 54cdf0e10cSrcweir 55cdf0e10cSrcweir // value of document compatibility option 'Consider wrapping style on 56cdf0e10cSrcweir // object positioning' 57cdf0e10cSrcweir const bool mbConsiderWrapOnObjPos; 58cdf0e10cSrcweir 59cdf0e10cSrcweir // layout action calling the format of the floating screen objects 60cdf0e10cSrcweir SwLayAction* mpLayAction; 61cdf0e10cSrcweir 62cdf0e10cSrcweir // data structure to collect page number of object's 'anchor' 63cdf0e10cSrcweir // --> OD 2004-10-04 #i26945# 64cdf0e10cSrcweir SwPageNumAndTypeOfAnchors* mpPgNumAndTypeOfAnchors; 65cdf0e10cSrcweir // <-- 66cdf0e10cSrcweir 67cdf0e10cSrcweir /** helper method for method <_FormatObj(..)> - performs the intrinsic 68cdf0e10cSrcweir format of the layout of the given layout frame and all its lower 69cdf0e10cSrcweir layout frames. 70cdf0e10cSrcweir 71cdf0e10cSrcweir OD 2004-06-28 #i28701# 72cdf0e10cSrcweir IMPORTANT NOTE: 73cdf0e10cSrcweir Method corresponds to methods <SwLayAction::FormatLayoutFly(..)> and 74cdf0e10cSrcweir <SwLayAction::FormatLayout(..)>. Thus, its code for the formatting have 75cdf0e10cSrcweir to be synchronised. 76cdf0e10cSrcweir 77cdf0e10cSrcweir @author OD 78cdf0e10cSrcweir */ 79cdf0e10cSrcweir void _FormatLayout( SwLayoutFrm& _rLayoutFrm ); 80cdf0e10cSrcweir 81cdf0e10cSrcweir /** helper method for method <_FormatObj(..)> - performs the intrinsic 82cdf0e10cSrcweir format of the content of the given floating screen object. 83cdf0e10cSrcweir 84cdf0e10cSrcweir OD 2004-06-28 #i28701# 85cdf0e10cSrcweir 86cdf0e10cSrcweir @author OD 87cdf0e10cSrcweir */ 88cdf0e10cSrcweir void _FormatObjCntnt( SwAnchoredObject& _rAnchoredObj ); 89cdf0e10cSrcweir 90cdf0e10cSrcweir protected: 91cdf0e10cSrcweir SwObjectFormatter( const SwPageFrm& _rPageFrm, 92cdf0e10cSrcweir SwLayAction* _pLayAction = 0L, 93cdf0e10cSrcweir const bool _bCollectPgNumOfAnchors = false ); 94cdf0e10cSrcweir 95cdf0e10cSrcweir static SwObjectFormatter* CreateObjFormatter( SwFrm& _rAnchorFrm, 96cdf0e10cSrcweir const SwPageFrm& _rPageFrm, 97cdf0e10cSrcweir SwLayAction* _pLayAction ); 98cdf0e10cSrcweir 99cdf0e10cSrcweir virtual SwFrm& GetAnchorFrm() = 0; 100cdf0e10cSrcweir GetPageFrm() const101cdf0e10cSrcweir inline const SwPageFrm& GetPageFrm() const 102cdf0e10cSrcweir { 103cdf0e10cSrcweir return mrPageFrm; 104cdf0e10cSrcweir } 105cdf0e10cSrcweir ConsiderWrapOnObjPos() const106cdf0e10cSrcweir inline bool ConsiderWrapOnObjPos() const 107cdf0e10cSrcweir { 108cdf0e10cSrcweir return mbConsiderWrapOnObjPos; 109cdf0e10cSrcweir } 110cdf0e10cSrcweir GetLayAction()111cdf0e10cSrcweir inline SwLayAction* GetLayAction() 112cdf0e10cSrcweir { 113cdf0e10cSrcweir return mpLayAction; 114cdf0e10cSrcweir } 115cdf0e10cSrcweir 116cdf0e10cSrcweir /** method to restrict the format of floating screen objects to 117cdf0e10cSrcweir as-character anchored ones 118cdf0e10cSrcweir 119cdf0e10cSrcweir @author OD 120cdf0e10cSrcweir */ SetFormatOnlyAsCharAnchored()121cdf0e10cSrcweir inline void SetFormatOnlyAsCharAnchored() 122cdf0e10cSrcweir { 123cdf0e10cSrcweir mbFormatOnlyAsCharAnchored = true; 124cdf0e10cSrcweir } 125cdf0e10cSrcweir FormatOnlyAsCharAnchored() const126cdf0e10cSrcweir inline bool FormatOnlyAsCharAnchored() const 127cdf0e10cSrcweir { 128cdf0e10cSrcweir return mbFormatOnlyAsCharAnchored; 129cdf0e10cSrcweir } 130cdf0e10cSrcweir 131cdf0e10cSrcweir /** performs the intrinsic format of a given floating screen object and its content. 132cdf0e10cSrcweir 133cdf0e10cSrcweir OD 2004-06-28 #i28701# 134cdf0e10cSrcweir 135cdf0e10cSrcweir @author OD 136cdf0e10cSrcweir */ 137cdf0e10cSrcweir void _FormatObj( SwAnchoredObject& _rAnchoredObj ); 138cdf0e10cSrcweir 139cdf0e10cSrcweir /** invokes the intrinsic format method for all floating screen objects, 140cdf0e10cSrcweir anchored at anchor frame on the given page frame 141cdf0e10cSrcweir 142cdf0e10cSrcweir OD 2004-06-28 #i28701# 143cdf0e10cSrcweir OD 2004-10-08 #i26945# - for format of floating screen objects for 144cdf0e10cSrcweir follow text frames, the 'master' text frame is passed to the method. 145cdf0e10cSrcweir Thus, the objects, whose anchor character is inside the follow text 146cdf0e10cSrcweir frame can be formatted. 147cdf0e10cSrcweir 148cdf0e10cSrcweir @author OD 149cdf0e10cSrcweir 150cdf0e10cSrcweir @param _pMasterTxtFrm 151cdf0e10cSrcweir input parameter - pointer to 'master' text frame. default value: NULL 152cdf0e10cSrcweir */ 153cdf0e10cSrcweir bool _FormatObjsAtFrm( SwTxtFrm* _pMasterTxtFrm = 0L ); 154cdf0e10cSrcweir 155cdf0e10cSrcweir /** accessor to collected anchored object 156cdf0e10cSrcweir 157cdf0e10cSrcweir OD 2004-07-05 #i28701# 158cdf0e10cSrcweir 159cdf0e10cSrcweir @author OD 160cdf0e10cSrcweir */ 161cdf0e10cSrcweir SwAnchoredObject* GetCollectedObj( const sal_uInt32 _nIndex ); 162cdf0e10cSrcweir 163cdf0e10cSrcweir /** accessor to 'anchor' page number of collected anchored object 164cdf0e10cSrcweir 165cdf0e10cSrcweir OD 2004-07-05 #i28701# 166cdf0e10cSrcweir 167cdf0e10cSrcweir @author OD 168cdf0e10cSrcweir */ 169cdf0e10cSrcweir sal_uInt32 GetPgNumOfCollected( const sal_uInt32 _nIndex ); 170cdf0e10cSrcweir 171cdf0e10cSrcweir /** accessor to 'anchor' type of collected anchored object 172cdf0e10cSrcweir 173cdf0e10cSrcweir OD 2004-10-04 #i26945# 174cdf0e10cSrcweir 175cdf0e10cSrcweir @author OD 176cdf0e10cSrcweir */ 177cdf0e10cSrcweir bool IsCollectedAnchoredAtMaster( const sal_uInt32 _nIndex ); 178cdf0e10cSrcweir 179cdf0e10cSrcweir /** accessor to total number of collected anchored objects 180cdf0e10cSrcweir 181cdf0e10cSrcweir OD 2004-07-05 #i28701# 182cdf0e10cSrcweir 183cdf0e10cSrcweir @author OD 184cdf0e10cSrcweir */ 185cdf0e10cSrcweir sal_uInt32 CountOfCollected(); 186cdf0e10cSrcweir 187cdf0e10cSrcweir public: 188cdf0e10cSrcweir virtual ~SwObjectFormatter(); 189cdf0e10cSrcweir 190cdf0e10cSrcweir /** intrinsic method to format a certain floating screen object 191cdf0e10cSrcweir 192cdf0e10cSrcweir OD 2005-01-10 #i40147# - add parameter <_bCheckForMovedFwd> 193cdf0e10cSrcweir 194cdf0e10cSrcweir @author OD 195cdf0e10cSrcweir 196cdf0e10cSrcweir @param _rAnchoredObj 197cdf0e10cSrcweir input parameter - anchored object, which have to be formatted. 198cdf0e10cSrcweir 199cdf0e10cSrcweir @param _bCheckForMovedFwd 200cdf0e10cSrcweir input parameter - boolean indicating, that after a successful 201cdf0e10cSrcweir format of the anchored object the anchor frame has to be checked, 202cdf0e10cSrcweir if it would moved forward due to the positioning of the anchored object. 203cdf0e10cSrcweir default value: false 204cdf0e10cSrcweir value only considered, if wrapping style influence has to be 205cdf0e10cSrcweir considered for the positioning of the anchored object. 206cdf0e10cSrcweir */ 207cdf0e10cSrcweir virtual bool DoFormatObj( SwAnchoredObject& _rAnchoredObj, 208cdf0e10cSrcweir const bool _bCheckForMovedFwd = false ) = 0; 209cdf0e10cSrcweir 210cdf0e10cSrcweir /** intrinsic method to format all floating screen objects 211cdf0e10cSrcweir 212cdf0e10cSrcweir @author OD 213cdf0e10cSrcweir */ 214cdf0e10cSrcweir virtual bool DoFormatObjs() = 0; 215cdf0e10cSrcweir 216cdf0e10cSrcweir /** method to format all floating screen objects at the given anchor frame 217cdf0e10cSrcweir 218cdf0e10cSrcweir @author OD 219cdf0e10cSrcweir */ 220cdf0e10cSrcweir static bool FormatObjsAtFrm( SwFrm& _rAnchorFrm, 221cdf0e10cSrcweir const SwPageFrm& _rPageFrm, 222cdf0e10cSrcweir SwLayAction* _pLayAction = 0L ); 223cdf0e10cSrcweir 224cdf0e10cSrcweir /** method to format a given floating screen object 225cdf0e10cSrcweir 226cdf0e10cSrcweir @author OD 227cdf0e10cSrcweir */ 228cdf0e10cSrcweir static bool FormatObj( SwAnchoredObject& _rAnchoredObj, 229cdf0e10cSrcweir SwFrm* _pAnchorFrm = 0L, 230cdf0e10cSrcweir const SwPageFrm* _pPageFrm = 0L, 231cdf0e10cSrcweir SwLayAction* _pLayAction = 0L ); 232cdf0e10cSrcweir }; 233cdf0e10cSrcweir 234cdf0e10cSrcweir #endif 235