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