xref: /aoo4110/main/sd/inc/OutlinerIterator.hxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski #ifndef SD_OUTLINER_ITERATOR_HXX
25*b1cdbd2cSJim Jagielski #define SD_OUTLINER_ITERATOR_HXX
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #include <svx/svdobj.hxx>
28*b1cdbd2cSJim Jagielski 
29*b1cdbd2cSJim Jagielski #include "pres.hxx"
30*b1cdbd2cSJim Jagielski #include "sal/types.h"
31*b1cdbd2cSJim Jagielski #include <vector>
32*b1cdbd2cSJim Jagielski #include <boost/shared_ptr.hpp>
33*b1cdbd2cSJim Jagielski 
34*b1cdbd2cSJim Jagielski class SdDrawDocument;
35*b1cdbd2cSJim Jagielski 
36*b1cdbd2cSJim Jagielski namespace sd {
37*b1cdbd2cSJim Jagielski 
38*b1cdbd2cSJim Jagielski class ViewShell;
39*b1cdbd2cSJim Jagielski class Outliner;
40*b1cdbd2cSJim Jagielski class View;
41*b1cdbd2cSJim Jagielski 
42*b1cdbd2cSJim Jagielski namespace outliner {
43*b1cdbd2cSJim Jagielski 
44*b1cdbd2cSJim Jagielski class IteratorImplBase;
45*b1cdbd2cSJim Jagielski class IteratorPosition;
46*b1cdbd2cSJim Jagielski 
47*b1cdbd2cSJim Jagielski /** Use this enum to specify the initial location of the object pointed to by
48*b1cdbd2cSJim Jagielski     a newly created iterator.  The values are
49*b1cdbd2cSJim Jagielski     <ul><li><const>BEGIN</const> for the first object with reference to
50*b1cdbd2cSJim Jagielski     iteration direction.</li>
51*b1cdbd2cSJim Jagielski     <li>END for one past the last valid object or, if the iterator is a
52*b1cdbd2cSJim Jagielski     backward iterator, the object in front of the first valid one.</li>
53*b1cdbd2cSJim Jagielski     <li>CURRENT for the current object.  Because there is only a current
54*b1cdbd2cSJim Jagielski     page this usually is taken to be the first/last object on the current
55*b1cdbd2cSJim Jagielski     page.</li></ul>
56*b1cdbd2cSJim Jagielski */
57*b1cdbd2cSJim Jagielski enum IteratorLocation {BEGIN,END,CURRENT};
58*b1cdbd2cSJim Jagielski 
59*b1cdbd2cSJim Jagielski /** Use this enum to specify the type of iterator when creating a new
60*b1cdbd2cSJim Jagielski     iterator:
61*b1cdbd2cSJim Jagielski     <ul><li>SELECTION for iteration over all objects that belong to the
62*b1cdbd2cSJim Jagielski     current mark list.</li>
63*b1cdbd2cSJim Jagielski     <li>SINGLE_VIEW for iteration over all objects in the current view.</li>
64*b1cdbd2cSJim Jagielski     <li>DOCUMENT for iteratioin over all object in all relevant
65*b1cdbd2cSJim Jagielski     views.</li></ul>
66*b1cdbd2cSJim Jagielski */
67*b1cdbd2cSJim Jagielski enum IteratorType {SELECTION,SINGLE_VIEW,DOCUMENT};
68*b1cdbd2cSJim Jagielski 
69*b1cdbd2cSJim Jagielski 
70*b1cdbd2cSJim Jagielski /** This iterator can be used to iterate over all <type>SdrObject</type>
71*b1cdbd2cSJim Jagielski     objects of one of three set denoted by the <type>IteratorType</type>:
72*b1cdbd2cSJim Jagielski     <ul><li>All objects of the current mark list (selection)
73*b1cdbd2cSJim Jagielski     (type==SELECTION).</li>
74*b1cdbd2cSJim Jagielski     <li>All objects in the current view (type==SINGLE_VIEW).</li>
75*b1cdbd2cSJim Jagielski     <li>All objects in all views (type=DOCUMENT).</li></ul>
76*b1cdbd2cSJim Jagielski 
77*b1cdbd2cSJim Jagielski     <p>Note that the iterator does not change pages or views.  It is the
78*b1cdbd2cSJim Jagielski     task of the user of the iterator to take the information provided by the
79*b1cdbd2cSJim Jagielski     <type>IteratorPosition</type> as returned by the
80*b1cdbd2cSJim Jagielski     <member>operator*()</member> method and set view, visible page, and
81*b1cdbd2cSJim Jagielski     selection/edit mode markers to reflect this position.</p>
82*b1cdbd2cSJim Jagielski 
83*b1cdbd2cSJim Jagielski     <p>A simple forward iteration from the first to the last object would
84*b1cdbd2cSJim Jagielski     instantiate the iterator with
85*b1cdbd2cSJim Jagielski     <code>Iterator(pDocument,pViewShell,true,BEGIN)</code> for some document
86*b1cdbd2cSJim Jagielski     and view shell.  This iterator can then be compared against
87*b1cdbd2cSJim Jagielski     <code>Iterator(pDocument,pViewShell,true,END)</code>.  On equality the
88*b1cdbd2cSJim Jagielski     iteration should be stoped without evaluating the iterator: The position
89*b1cdbd2cSJim Jagielski     of an end iterator is not valid.</p>
90*b1cdbd2cSJim Jagielski */
91*b1cdbd2cSJim Jagielski class Iterator
92*b1cdbd2cSJim Jagielski {
93*b1cdbd2cSJim Jagielski public:
94*b1cdbd2cSJim Jagielski     Iterator (void);
95*b1cdbd2cSJim Jagielski 
96*b1cdbd2cSJim Jagielski     /** The copy constructor creates a new iterator by copying the
97*b1cdbd2cSJim Jagielski         implementation object.
98*b1cdbd2cSJim Jagielski     */
99*b1cdbd2cSJim Jagielski     Iterator (const Iterator& rIterator);
100*b1cdbd2cSJim Jagielski 
101*b1cdbd2cSJim Jagielski     /** Create a new iterator with the implementation object being the
102*b1cdbd2cSJim Jagielski         provided one.
103*b1cdbd2cSJim Jagielski         @param pObject
104*b1cdbd2cSJim Jagielski             A copy of this object will become the implementation object.
105*b1cdbd2cSJim Jagielski     */
106*b1cdbd2cSJim Jagielski     explicit Iterator (IteratorImplBase* pObject);
107*b1cdbd2cSJim Jagielski 
108*b1cdbd2cSJim Jagielski     ~Iterator (void);
109*b1cdbd2cSJim Jagielski 
110*b1cdbd2cSJim Jagielski     /** Assign the iterator from the given one.  The implementation object
111*b1cdbd2cSJim Jagielski         of this iterator will be a copy of the given iterator.
112*b1cdbd2cSJim Jagielski         @param rIterator
113*b1cdbd2cSJim Jagielski             The iterator which to assign from.
114*b1cdbd2cSJim Jagielski     */
115*b1cdbd2cSJim Jagielski     Iterator& operator= (const Iterator& rIterator);
116*b1cdbd2cSJim Jagielski     /** Return the current position of the iterator.
117*b1cdbd2cSJim Jagielski         @return
118*b1cdbd2cSJim Jagielski             Returns a reference to the current position.  Therefore this
119*b1cdbd2cSJim Jagielski             method is not thread safe.  The reason for this behaviour is, of
120*b1cdbd2cSJim Jagielski             course, to ommit the copying of the returned position.
121*b1cdbd2cSJim Jagielski     */
122*b1cdbd2cSJim Jagielski     const IteratorPosition& operator* () const;
123*b1cdbd2cSJim Jagielski     /** The prefix increment operator returns the iterator pointing to the
124*b1cdbd2cSJim Jagielski         next object.  When in doubt prefer this operator over the postfix
125*b1cdbd2cSJim Jagielski         increment operator.
126*b1cdbd2cSJim Jagielski         @return
127*b1cdbd2cSJim Jagielski             Returns a reference to this iterator pointing to the next object.
128*b1cdbd2cSJim Jagielski     */
129*b1cdbd2cSJim Jagielski     Iterator& operator++ ();
130*b1cdbd2cSJim Jagielski     /** The postfix increment operator returns the iterator still pointing
131*b1cdbd2cSJim Jagielski         to the current object.  Only the next call to
132*b1cdbd2cSJim Jagielski         <member>operator*()</member> will return the next object.  When in
133*b1cdbd2cSJim Jagielski         doubt rather use the prefix increment operator.
134*b1cdbd2cSJim Jagielski         @param dummy
135*b1cdbd2cSJim Jagielski             A dummy operator used by the compiler.
136*b1cdbd2cSJim Jagielski         @return
137*b1cdbd2cSJim Jagielski             Returns a copy of the iterator as it where before the operator
138*b1cdbd2cSJim Jagielski             was called.
139*b1cdbd2cSJim Jagielski     */
140*b1cdbd2cSJim Jagielski     Iterator operator++ (int);
141*b1cdbd2cSJim Jagielski     /** Test equality of two iterators.  Two iterators are taken to be equal
142*b1cdbd2cSJim Jagielski         when they point are of the same type (their implementation objects
143*b1cdbd2cSJim Jagielski         are instances of the same class) and point to the same object.
144*b1cdbd2cSJim Jagielski         @param rIterator
145*b1cdbd2cSJim Jagielski             The iterator to test equality with.
146*b1cdbd2cSJim Jagielski         @return
147*b1cdbd2cSJim Jagielski             Returns <TRUE/> when both iterators point to the same object.
148*b1cdbd2cSJim Jagielski     */
149*b1cdbd2cSJim Jagielski     bool operator== (const Iterator& rIterator);
150*b1cdbd2cSJim Jagielski     /** Test whether two iterators point to different objects.  This is just
151*b1cdbd2cSJim Jagielski         the negation of the result of the equality operator.
152*b1cdbd2cSJim Jagielski         @param rIterator
153*b1cdbd2cSJim Jagielski             The iterator to test inequality with.
154*b1cdbd2cSJim Jagielski         @return
155*b1cdbd2cSJim Jagielski             Returns <TRUE/> when both iterators point to the different objects.
156*b1cdbd2cSJim Jagielski     */
157*b1cdbd2cSJim Jagielski     bool operator!= (const Iterator& rIterator);
158*b1cdbd2cSJim Jagielski     /** Reverse the direction of iteration.  The position of the iterator is
159*b1cdbd2cSJim Jagielski         not changed.  Thus caling this method twice returns to the old state.
160*b1cdbd2cSJim Jagielski     */
161*b1cdbd2cSJim Jagielski     void Reverse (void);
162*b1cdbd2cSJim Jagielski 
163*b1cdbd2cSJim Jagielski private:
164*b1cdbd2cSJim Jagielski     /// The implementation object to which most of the methods are forwarded.
165*b1cdbd2cSJim Jagielski     IteratorImplBase* mpIterator;
166*b1cdbd2cSJim Jagielski };
167*b1cdbd2cSJim Jagielski 
168*b1cdbd2cSJim Jagielski 
169*b1cdbd2cSJim Jagielski 
170*b1cdbd2cSJim Jagielski 
171*b1cdbd2cSJim Jagielski /** This class wraps the <type>Outliner</type> class and represents it as
172*b1cdbd2cSJim Jagielski     a container of <type>SdrObject</type> objects.  Its main purpose is to
173*b1cdbd2cSJim Jagielski     provide iterators for certain sub-sets of those objects.  These sub-sets
174*b1cdbd2cSJim Jagielski     are a) the set of the currently selected objects, b) all objects in the
175*b1cdbd2cSJim Jagielski     current view, and c) all objects in all views.
176*b1cdbd2cSJim Jagielski 
177*b1cdbd2cSJim Jagielski     <p>The direction of the returned iterators depends on the underlying
178*b1cdbd2cSJim Jagielski     <type>Outliner</type> object and is usually set in the search
179*b1cdbd2cSJim Jagielski     dialog.</p>
180*b1cdbd2cSJim Jagielski */
181*b1cdbd2cSJim Jagielski class OutlinerContainer
182*b1cdbd2cSJim Jagielski {
183*b1cdbd2cSJim Jagielski public:
184*b1cdbd2cSJim Jagielski     /** Create a new wraper object for the given outliner.
185*b1cdbd2cSJim Jagielski         @param pOutliner
186*b1cdbd2cSJim Jagielski             The outliner that is represented by the new object as
187*b1cdbd2cSJim Jagielski             <type>SdrObject</type> container.
188*b1cdbd2cSJim Jagielski     */
189*b1cdbd2cSJim Jagielski     OutlinerContainer (::sd::Outliner* pOutliner);
190*b1cdbd2cSJim Jagielski 
191*b1cdbd2cSJim Jagielski     /** Return an iterator that points to the first object of one of the
192*b1cdbd2cSJim Jagielski         sets described above.  This takes also into account the direction of
193*b1cdbd2cSJim Jagielski         iteration.
194*b1cdbd2cSJim Jagielski         @return
195*b1cdbd2cSJim Jagielski             The returned iterator points either to the first (forward
196*b1cdbd2cSJim Jagielski             search) or to the last object (backward search) of the set.
197*b1cdbd2cSJim Jagielski     */
198*b1cdbd2cSJim Jagielski     Iterator begin (void);
199*b1cdbd2cSJim Jagielski 
200*b1cdbd2cSJim Jagielski     /** Return an iterator that marks the end of the iteration.  This takes
201*b1cdbd2cSJim Jagielski         also into account the direction of iteration. The object pointed to
202*b1cdbd2cSJim Jagielski         is not valid.
203*b1cdbd2cSJim Jagielski         @return
204*b1cdbd2cSJim Jagielski             The returned iterator points either to that object past the last
205*b1cdbd2cSJim Jagielski             one (forward search) or to the one in front of the first
206*b1cdbd2cSJim Jagielski             (backward search).
207*b1cdbd2cSJim Jagielski     */
208*b1cdbd2cSJim Jagielski     Iterator end (void);
209*b1cdbd2cSJim Jagielski 
210*b1cdbd2cSJim Jagielski     /** Return an iterator that points to the current object of one of the
211*b1cdbd2cSJim Jagielski         sets described above.  This takes also into account the direction of
212*b1cdbd2cSJim Jagielski         iteration.
213*b1cdbd2cSJim Jagielski         @return
214*b1cdbd2cSJim Jagielski             The returned iterator points either to the first (forward
215*b1cdbd2cSJim Jagielski             search) or to the last object (backward search) of the set of
216*b1cdbd2cSJim Jagielski             selected objects or of the current page if the search set spans
217*b1cdbd2cSJim Jagielski             more than one page.
218*b1cdbd2cSJim Jagielski     */
219*b1cdbd2cSJim Jagielski     Iterator current (void);
220*b1cdbd2cSJim Jagielski 
221*b1cdbd2cSJim Jagielski private:
222*b1cdbd2cSJim Jagielski     /// The wrapped outliner that is represented as object container.
223*b1cdbd2cSJim Jagielski     ::sd::Outliner* mpOutliner;
224*b1cdbd2cSJim Jagielski 
225*b1cdbd2cSJim Jagielski     /** Create an iterator.  The object pointed to depends on the search
226*b1cdbd2cSJim Jagielski         direction retrieved from the outliner object
227*b1cdbd2cSJim Jagielski         <member>mpOutliner</member> and the given location.
228*b1cdbd2cSJim Jagielski         @param aLocation
229*b1cdbd2cSJim Jagielski             This specifies whether the returned iterator points to the
230*b1cdbd2cSJim Jagielski             first, (one past the) last, or current object.
231*b1cdbd2cSJim Jagielski         @return
232*b1cdbd2cSJim Jagielski             Returns an iterator as constructed by
233*b1cdbd2cSJim Jagielski             <member>CreateSelectionIterator()</member>,
234*b1cdbd2cSJim Jagielski      */
235*b1cdbd2cSJim Jagielski     Iterator CreateIterator (IteratorLocation aLocation);
236*b1cdbd2cSJim Jagielski 
237*b1cdbd2cSJim Jagielski     /** Create an iterator that iterates over all currently selected
238*b1cdbd2cSJim Jagielski         <type>SdrObjects</type> objects of the <member>mpOutliner</member>
239*b1cdbd2cSJim Jagielski         outliner.
240*b1cdbd2cSJim Jagielski         @param rObjectList
241*b1cdbd2cSJim Jagielski             List of currently selected objects.  This list is necessary
242*b1cdbd2cSJim Jagielski             so that the selection can be changed without affecting the
243*b1cdbd2cSJim Jagielski             iterator.
244*b1cdbd2cSJim Jagielski         @param pDocument
245*b1cdbd2cSJim Jagielski             The document to which the objects belong.
246*b1cdbd2cSJim Jagielski         @param pViewShell
247*b1cdbd2cSJim Jagielski             The view shell which displays the objects.
248*b1cdbd2cSJim Jagielski         @param bDirectionIsForward
249*b1cdbd2cSJim Jagielski             The direction of iteration.  It defaults to forward.
250*b1cdbd2cSJim Jagielski         @param aLocation
251*b1cdbd2cSJim Jagielski             This specifies at which object the iterator points initially.
252*b1cdbd2cSJim Jagielski     */
253*b1cdbd2cSJim Jagielski     Iterator CreateSelectionIterator (
254*b1cdbd2cSJim Jagielski         const ::std::vector<SdrObjectWeakRef>& rObjectList,
255*b1cdbd2cSJim Jagielski         SdDrawDocument* pDocument,
256*b1cdbd2cSJim Jagielski         const ::boost::shared_ptr<ViewShell>& rpViewShell,
257*b1cdbd2cSJim Jagielski         bool bDirectionIsForward=true,
258*b1cdbd2cSJim Jagielski         IteratorLocation aLocation=BEGIN);
259*b1cdbd2cSJim Jagielski 
260*b1cdbd2cSJim Jagielski     /** Create an iterator that iterates over all <type>SdrObjects</type>
261*b1cdbd2cSJim Jagielski         objects of the <member>mpOutliner</member> outliner.
262*b1cdbd2cSJim Jagielski         @param pDocument
263*b1cdbd2cSJim Jagielski             The document to which the objects belong.
264*b1cdbd2cSJim Jagielski         @param pViewShell
265*b1cdbd2cSJim Jagielski             The view shell which displays the objects.
266*b1cdbd2cSJim Jagielski         @param bDirectionIsForward
267*b1cdbd2cSJim Jagielski             The direction of iteration.  It defaults to forward.
268*b1cdbd2cSJim Jagielski         @param aLocation
269*b1cdbd2cSJim Jagielski             This specifies at which object the iterator points initially.
270*b1cdbd2cSJim Jagielski     */
271*b1cdbd2cSJim Jagielski     Iterator CreateDocumentIterator (
272*b1cdbd2cSJim Jagielski         SdDrawDocument* pDocument,
273*b1cdbd2cSJim Jagielski         const ::boost::shared_ptr<ViewShell>& rpViewShell,
274*b1cdbd2cSJim Jagielski         bool bDirectionIsForward=true,
275*b1cdbd2cSJim Jagielski         IteratorLocation aLocation=BEGIN);
276*b1cdbd2cSJim Jagielski 
277*b1cdbd2cSJim Jagielski     /** Return the index of a page that contains an object that a new
278*b1cdbd2cSJim Jagielski         iterator shall point to.  This page index depends primarily on the
279*b1cdbd2cSJim Jagielski         location, iteration direction, as well as on edit mode and page
280*b1cdbd2cSJim Jagielski         kind.
281*b1cdbd2cSJim Jagielski         @param pDocument
282*b1cdbd2cSJim Jagielski             The document to which the page belongs.
283*b1cdbd2cSJim Jagielski         @param pViewShell
284*b1cdbd2cSJim Jagielski             The view shell which displays the page.
285*b1cdbd2cSJim Jagielski         @param ePageKind
286*b1cdbd2cSJim Jagielski             Specifies the view the page belongs to.
287*b1cdbd2cSJim Jagielski         @param eEditMode
288*b1cdbd2cSJim Jagielski             Specifies whether the page is a master page.
289*b1cdbd2cSJim Jagielski         @param bDirectionIsForward
290*b1cdbd2cSJim Jagielski             The direction of iteration.
291*b1cdbd2cSJim Jagielski         @param aLocation
292*b1cdbd2cSJim Jagielski             This specifies at which object the iterator points initially.
293*b1cdbd2cSJim Jagielski     */
294*b1cdbd2cSJim Jagielski     sal_Int32 GetPageIndex (
295*b1cdbd2cSJim Jagielski         SdDrawDocument* pDocument,
296*b1cdbd2cSJim Jagielski         const ::boost::shared_ptr<ViewShell>& rpViewShell,
297*b1cdbd2cSJim Jagielski         PageKind ePageKind,
298*b1cdbd2cSJim Jagielski         EditMode eEditMode,
299*b1cdbd2cSJim Jagielski         bool bDirectionIsForward,
300*b1cdbd2cSJim Jagielski         IteratorLocation aLocation);
301*b1cdbd2cSJim Jagielski 
302*b1cdbd2cSJim Jagielski     // Do not allow default constructor and copying of outliner containers.
OutlinerContainer(const OutlinerContainer &)303*b1cdbd2cSJim Jagielski     OutlinerContainer (const OutlinerContainer&) {};
OutlinerContainer(void)304*b1cdbd2cSJim Jagielski     OutlinerContainer (void) {};
operator =(const OutlinerContainer &)305*b1cdbd2cSJim Jagielski     OutlinerContainer& operator= (const OutlinerContainer&) {return *this;};
306*b1cdbd2cSJim Jagielski };
307*b1cdbd2cSJim Jagielski 
308*b1cdbd2cSJim Jagielski 
309*b1cdbd2cSJim Jagielski 
310*b1cdbd2cSJim Jagielski 
311*b1cdbd2cSJim Jagielski /** Data collection specifying a <type>SdrObject</type> and its position in
312*b1cdbd2cSJim Jagielski     a document and view.
313*b1cdbd2cSJim Jagielski */
314*b1cdbd2cSJim Jagielski class IteratorPosition
315*b1cdbd2cSJim Jagielski {
316*b1cdbd2cSJim Jagielski public:
317*b1cdbd2cSJim Jagielski     /** Create a new object with all data members set to default values.
318*b1cdbd2cSJim Jagielski         These values should not be accessed.  The only use of the object as
319*b1cdbd2cSJim Jagielski         it is is as a marker in comparisons.
320*b1cdbd2cSJim Jagielski     */
321*b1cdbd2cSJim Jagielski     IteratorPosition (void);
322*b1cdbd2cSJim Jagielski     /** Create a new object with all data members set from the given
323*b1cdbd2cSJim Jagielski         position.
324*b1cdbd2cSJim Jagielski         @param aPosition
325*b1cdbd2cSJim Jagielski             The position object from which to take the values that are
326*b1cdbd2cSJim Jagielski             assigned to the data members of this object.
327*b1cdbd2cSJim Jagielski     */
328*b1cdbd2cSJim Jagielski     IteratorPosition (const IteratorPosition& aPosition);
329*b1cdbd2cSJim Jagielski 
330*b1cdbd2cSJim Jagielski 	/// The destructor is a no-op at the moment.
331*b1cdbd2cSJim Jagielski     ~IteratorPosition (void);
332*b1cdbd2cSJim Jagielski     /** Assign the content of the given position to this one.
333*b1cdbd2cSJim Jagielski         @param aPosition
334*b1cdbd2cSJim Jagielski             This is the position object from which to take the values of all
335*b1cdbd2cSJim Jagielski             data members.
336*b1cdbd2cSJim Jagielski         @return
337*b1cdbd2cSJim Jagielski             Returns a reference to this object.
338*b1cdbd2cSJim Jagielski     */
339*b1cdbd2cSJim Jagielski     IteratorPosition& operator= (const IteratorPosition& aPosition);
340*b1cdbd2cSJim Jagielski     /** Compare two positions for equality.
341*b1cdbd2cSJim Jagielski         @return
342*b1cdbd2cSJim Jagielski             <TRUE/> is returned only when all data members have the same
343*b1cdbd2cSJim Jagielski             values in both position objects.
344*b1cdbd2cSJim Jagielski     */
345*b1cdbd2cSJim Jagielski     bool operator== (const IteratorPosition& aPosition) const;
346*b1cdbd2cSJim Jagielski 
347*b1cdbd2cSJim Jagielski     /// Pointer to the actual <type>SdrObject</type> object.
348*b1cdbd2cSJim Jagielski     SdrObjectWeakRef mxObject;
349*b1cdbd2cSJim Jagielski 
350*b1cdbd2cSJim Jagielski 	/// Number of the actual SdrText from the current <type>SdrObject</type>
351*b1cdbd2cSJim Jagielski 	sal_Int32 mnText;
352*b1cdbd2cSJim Jagielski 
353*b1cdbd2cSJim Jagielski     /// The index of a page where the object is located on.
354*b1cdbd2cSJim Jagielski     sal_Int32 mnPageIndex;
355*b1cdbd2cSJim Jagielski     /// Page kind of the view.
356*b1cdbd2cSJim Jagielski 	PageKind mePageKind;
357*b1cdbd2cSJim Jagielski     /// Edit mode of the view.
358*b1cdbd2cSJim Jagielski 	EditMode meEditMode;
359*b1cdbd2cSJim Jagielski };
360*b1cdbd2cSJim Jagielski 
361*b1cdbd2cSJim Jagielski 
362*b1cdbd2cSJim Jagielski } } // end of namespace ::sd::outliner
363*b1cdbd2cSJim Jagielski 
364*b1cdbd2cSJim Jagielski 
365*b1cdbd2cSJim Jagielski #endif // _SD_OUTLINER_ITERATOR_HXX
366*b1cdbd2cSJim Jagielski 
367