xref: /trunk/main/sw/source/core/inc/objectformatter.hxx (revision 914d351e5f5b84e4342a86d6ab8d4aca7308b9bd)
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