xref: /AOO41X/main/sw/source/core/layout/objectformattertxtfrm.hxx (revision 1d2dbeb0b7301723c6d13094e87a8714ef81a328)
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 _OBJECTFORMATTERTXTFRM_HXX
24cdf0e10cSrcweir #define _OBJECTFORMATTERTXTFRM_HXX
25cdf0e10cSrcweir 
26cdf0e10cSrcweir #include <objectformatter.hxx>
27cdf0e10cSrcweir #include <sal/types.h>
28cdf0e10cSrcweir 
29cdf0e10cSrcweir class SwTxtFrm;
30cdf0e10cSrcweir 
31cdf0e10cSrcweir // -----------------------------------------------------------------------------
32cdf0e10cSrcweir // OD 2004-07-01 #i28701#
33cdf0e10cSrcweir // Format floating screen objects, which are anchored at a given anchor text frame
34cdf0e10cSrcweir // and registered at the given page frame.
35cdf0e10cSrcweir // -----------------------------------------------------------------------------
36cdf0e10cSrcweir class SwObjectFormatterTxtFrm : public SwObjectFormatter
37cdf0e10cSrcweir {
38cdf0e10cSrcweir     private:
39cdf0e10cSrcweir         // anchor text frame
40cdf0e10cSrcweir         SwTxtFrm& mrAnchorTxtFrm;
41cdf0e10cSrcweir 
42cdf0e10cSrcweir         // 'master' anchor text frame
43cdf0e10cSrcweir         SwTxtFrm* mpMasterAnchorTxtFrm;
44cdf0e10cSrcweir 
45cdf0e10cSrcweir         SwObjectFormatterTxtFrm( SwTxtFrm& _rAnchorTxtFrm,
46cdf0e10cSrcweir                                  const SwPageFrm& _rPageFrm,
47cdf0e10cSrcweir                                  SwTxtFrm* _pMasterAnchorTxtFrm,
48cdf0e10cSrcweir                                  SwLayAction* _pLayAction );
49cdf0e10cSrcweir 
50cdf0e10cSrcweir         /* method to invalidate objects, anchored previous to given object at
51cdf0e10cSrcweir            the anchor text frame
52cdf0e10cSrcweir 
53cdf0e10cSrcweir             @param _rAnchoredObj
54cdf0e10cSrcweir             reference to anchored object - objects, anchored previous to
55cdf0e10cSrcweir             this one will be invalidated.
56cdf0e10cSrcweir 
57cdf0e10cSrcweir             @author OD
58cdf0e10cSrcweir         */
59cdf0e10cSrcweir         void _InvalidatePrevObjs( SwAnchoredObject& _rAnchoredObj );
60cdf0e10cSrcweir 
61cdf0e10cSrcweir         /* method to invalidate objects, anchored after the given object at
62cdf0e10cSrcweir            the page frame
63cdf0e10cSrcweir 
64cdf0e10cSrcweir             @param _rAnchoredObj
65cdf0e10cSrcweir             reference to anchored object - objects, anchored after this one will
66cdf0e10cSrcweir             be invalidated.
67cdf0e10cSrcweir 
68cdf0e10cSrcweir             @param _bInclObj
69cdf0e10cSrcweir             boolean indicates, if given anchored object <_rAnchoredObj> also have
70cdf0e10cSrcweir             to be invalidated.
71cdf0e10cSrcweir 
72cdf0e10cSrcweir             @author OD
73cdf0e10cSrcweir         */
74cdf0e10cSrcweir         void _InvalidateFollowObjs( SwAnchoredObject& _rAnchoredObj,
75cdf0e10cSrcweir                                     const bool _bInclObj );
76cdf0e10cSrcweir 
77cdf0e10cSrcweir         /** method to determine first anchored object, whose 'anchor is moved
78cdf0e10cSrcweir             forward'.
79cdf0e10cSrcweir 
80cdf0e10cSrcweir             'anchor (of an object) is moved forward', if the anchor frame
81cdf0e10cSrcweir             respectively the anchor character of the object isn't on the
82cdf0e10cSrcweir             proposed page frame. Instead its on a following page
83cdf0e10cSrcweir             OD 2004-10-04 #i26945# - For at-character anchored objects,
84cdf0e10cSrcweir             it has also to be checked, if the anchor character is in a follow
85cdf0e10cSrcweir             text frame, which would move to the next page.
86cdf0e10cSrcweir             OD 2005-03-30 #i43913# - add output parameter <_boInFollow>
87cdf0e10cSrcweir 
88cdf0e10cSrcweir             @author OD
89cdf0e10cSrcweir 
90cdf0e10cSrcweir             @param _nWrapInfluenceOnPosition
91cdf0e10cSrcweir             input parameter - only object with this given wrapping style
92cdf0e10cSrcweir             influence are investigated.
93cdf0e10cSrcweir 
94cdf0e10cSrcweir             @param _nFromPageNum
95cdf0e10cSrcweir             input parameter - number of page frame, the 'anchor' should be
96cdf0e10cSrcweir 
97cdf0e10cSrcweir             @param _noToPageNum
98cdf0e10cSrcweir             output parameter - number of page frame, the 'anchor' of the returned
99cdf0e10cSrcweir             anchored object is.
100cdf0e10cSrcweir 
101cdf0e10cSrcweir             @param _boInFollow
102cdf0e10cSrcweir             output parameter - boolean, indicating that anchor text frame is
103cdf0e10cSrcweir             currently on the same page, but it's a follow of in a follow row,
104cdf0e10cSrcweir             which will move forward. value only relevant, if method returns
105cdf0e10cSrcweir             an anchored object
106cdf0e10cSrcweir 
107cdf0e10cSrcweir             @return SwAnchoredObject*
108cdf0e10cSrcweir             anchored object with a 'moved forward anchor'. If NULL, no such
109cdf0e10cSrcweir             anchored object is found.
110cdf0e10cSrcweir         */
111cdf0e10cSrcweir         SwAnchoredObject* _GetFirstObjWithMovedFwdAnchor(
112cdf0e10cSrcweir                                     const sal_Int16 _nWrapInfluenceOnPosition,
113cdf0e10cSrcweir                                     sal_uInt32& _noToPageNum,
114cdf0e10cSrcweir                                     bool& _boInFollow );
115cdf0e10cSrcweir 
116cdf0e10cSrcweir         /** method to format the anchor frame for checking of the move forward condition
117cdf0e10cSrcweir 
118cdf0e10cSrcweir             OD 2005-01-11 #i40141#
119cdf0e10cSrcweir 
120cdf0e10cSrcweir             @author OD
121cdf0e10cSrcweir         */
122cdf0e10cSrcweir         void _FormatAnchorFrmForCheckMoveFwd();
123cdf0e10cSrcweir 
124cdf0e10cSrcweir         /** method to determine if at least one anchored object has state
125cdf0e10cSrcweir             <temporarly consider wrapping style influence> set.
126cdf0e10cSrcweir 
127cdf0e10cSrcweir             OD 2006-07-24 #b6449874#
128cdf0e10cSrcweir 
129cdf0e10cSrcweir             @author OD
130cdf0e10cSrcweir         */
131cdf0e10cSrcweir         bool _AtLeastOneObjIsTmpConsiderWrapInfluence();
132cdf0e10cSrcweir 
133cdf0e10cSrcweir     protected:
134cdf0e10cSrcweir 
135cdf0e10cSrcweir         virtual SwFrm& GetAnchorFrm();
136cdf0e10cSrcweir 
137cdf0e10cSrcweir     public:
138cdf0e10cSrcweir         virtual ~SwObjectFormatterTxtFrm();
139cdf0e10cSrcweir 
140cdf0e10cSrcweir         // --> OD 2005-01-10 #i40147# - add parameter <_bCheckForMovedFwd>.
141cdf0e10cSrcweir         virtual bool DoFormatObj( SwAnchoredObject& _rAnchoredObj,
142cdf0e10cSrcweir                                   const bool _bCheckForMovedFwd = false );
143cdf0e10cSrcweir         // <--
144cdf0e10cSrcweir         virtual bool DoFormatObjs();
145cdf0e10cSrcweir 
146cdf0e10cSrcweir         /** method to create an instance of <SwObjectFormatterTxtFrm> is
147cdf0e10cSrcweir             necessary.
148cdf0e10cSrcweir 
149cdf0e10cSrcweir             @author OD
150cdf0e10cSrcweir         */
151cdf0e10cSrcweir         static SwObjectFormatterTxtFrm* CreateObjFormatter(
152cdf0e10cSrcweir                                                 SwTxtFrm& _rAnchorTxtFrm,
153cdf0e10cSrcweir                                                 const SwPageFrm& _rPageFrm,
154cdf0e10cSrcweir                                                 SwLayAction* _pLayAction );
155cdf0e10cSrcweir 
156cdf0e10cSrcweir         /** method to format given anchor text frame and its previous frames
157cdf0e10cSrcweir 
158cdf0e10cSrcweir             OD 2005-11-17 #i56300#
159cdf0e10cSrcweir             Usage: Needed to check, if the anchor text frame is moved forward
160cdf0e10cSrcweir             due to the positioning and wrapping of its anchored objects, and
161cdf0e10cSrcweir             to format the frames, which have become invalid due to the anchored
162cdf0e10cSrcweir             object formatting in the iterative object positioning algorithm
163cdf0e10cSrcweir 
164cdf0e10cSrcweir             @author OD
165cdf0e10cSrcweir 
166cdf0e10cSrcweir             @param _rAnchorTxtFrm
167cdf0e10cSrcweir             input parameter - reference to anchor text frame, which has to be
168cdf0e10cSrcweir             formatted including its previous frames of the page.
169cdf0e10cSrcweir         */
170cdf0e10cSrcweir         static void FormatAnchorFrmAndItsPrevs( SwTxtFrm& _rAnchorTxtFrm );
171cdf0e10cSrcweir 
172cdf0e10cSrcweir         /** method to check the conditions, if 'anchor is moved forward'
173cdf0e10cSrcweir 
174cdf0e10cSrcweir             OD 2004-10-11 #i26945#
175cdf0e10cSrcweir             OD 2005-03-30 #i43913# - add output parameter <_boInFollow>
176cdf0e10cSrcweir             OD 2006-01-27 #i58182# - replace method by a corresponding static
177cdf0e10cSrcweir             method, because it's needed for the iterative positioning algorithm.
178cdf0e10cSrcweir 
179cdf0e10cSrcweir             @author OD
180cdf0e10cSrcweir 
181cdf0e10cSrcweir             @param _rAnchoredObj
182cdf0e10cSrcweir             input parameter - anchored object, for which the condition has to checked.
183cdf0e10cSrcweir 
184cdf0e10cSrcweir             @param _nFromPageNum
185cdf0e10cSrcweir             input parameter - number of the page, on which the check is performed
186cdf0e10cSrcweir 
187cdf0e10cSrcweir             @param _bAnchoredAtMasterBeforeFormatAnchor
188cdf0e10cSrcweir             input parameter - boolean indicating, that the given anchored object
189cdf0e10cSrcweir             was anchored at the master frame before the anchor frame has been
190cdf0e10cSrcweir             formatted.
191cdf0e10cSrcweir 
192cdf0e10cSrcweir             @param _noToPageNum
193cdf0e10cSrcweir             output parameter - number of page frame, the 'anchor' of the returned
194cdf0e10cSrcweir             anchored object is.
195cdf0e10cSrcweir 
196cdf0e10cSrcweir             @param _boInFollow
197cdf0e10cSrcweir             output parameter - boolean, indicating that anchor text frame is
198cdf0e10cSrcweir             currently on the same page, but it's a follow of in a follow row,
199cdf0e10cSrcweir             which will move forward. value only relevant, if method return <true>.
200cdf0e10cSrcweir 
201cdf0e10cSrcweir             @return boolean
202cdf0e10cSrcweir             indicating, if 'anchor is moved forward'
203cdf0e10cSrcweir         */
204cdf0e10cSrcweir         static bool CheckMovedFwdCondition( SwAnchoredObject& _rAnchoredObj,
205cdf0e10cSrcweir                                             const sal_uInt32 _nFromPageNum,
206cdf0e10cSrcweir                                             const bool _bAnchoredAtMasterBeforeFormatAnchor,
207cdf0e10cSrcweir                                             sal_uInt32& _noToPageNum,
208cdf0e10cSrcweir                                             bool& _boInFollow );
209cdf0e10cSrcweir };
210cdf0e10cSrcweir 
211cdf0e10cSrcweir #endif
212