summaryrefslogtreecommitdiff
path: root/sd/inc/OutlinerIterator.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'sd/inc/OutlinerIterator.hxx')
-rw-r--r--sd/inc/OutlinerIterator.hxx372
1 files changed, 0 insertions, 372 deletions
diff --git a/sd/inc/OutlinerIterator.hxx b/sd/inc/OutlinerIterator.hxx
deleted file mode 100644
index c86ef0f24..000000000
--- a/sd/inc/OutlinerIterator.hxx
+++ /dev/null
@@ -1,372 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef SD_OUTLINER_ITERATOR_HXX
-#define SD_OUTLINER_ITERATOR_HXX
-
-#include <svx/svdobj.hxx>
-
-#include "pres.hxx"
-#include "sal/types.h"
-#include <vector>
-#include <boost/shared_ptr.hpp>
-
-class SdDrawDocument;
-
-namespace sd {
-
-class ViewShell;
-class Outliner;
-class View;
-
-namespace outliner {
-
-class IteratorImplBase;
-class IteratorPosition;
-
-/** Use this enum to specify the initial location of the object pointed to by
- a newly created iterator. The values are
- <ul><li><const>BEGIN</const> for the first object with reference to
- iteration direction.</li>
- <li>END for one past the last valid object or, if the iterator is a
- backward iterator, the object in front of the first valid one.</li>
- <li>CURRENT for the current object. Because there is only a current
- page this usually is taken to be the first/last object on the current
- page.</li></ul>
-*/
-enum IteratorLocation {BEGIN,END,CURRENT};
-
-/** Use this enum to specify the type of iterator when creating a new
- iterator:
- <ul><li>SELECTION for iteration over all objects that belong to the
- current mark list.</li>
- <li>SINGLE_VIEW for iteration over all objects in the current view.</li>
- <li>DOCUMENT for iteratioin over all object in all relevant
- views.</li></ul>
-*/
-enum IteratorType {SELECTION,SINGLE_VIEW,DOCUMENT};
-
-
-/** This iterator can be used to iterate over all <type>SdrObject</type>
- objects of one of three set denoted by the <type>IteratorType</type>:
- <ul><li>All objects of the current mark list (selection)
- (type==SELECTION).</li>
- <li>All objects in the current view (type==SINGLE_VIEW).</li>
- <li>All objects in all views (type=DOCUMENT).</li></ul>
-
- <p>Note that the iterator does not change pages or views. It is the
- task of the user of the iterator to take the information provided by the
- <type>IteratorPosition</type> as returned by the
- <member>operator*()</member> method and set view, visible page, and
- selection/edit mode markers to reflect this position.</p>
-
- <p>A simple forward iteration from the first to the last object would
- instantiate the iterator with
- <code>Iterator(pDocument,pViewShell,true,BEGIN)</code> for some document
- and view shell. This iterator can then be compared against
- <code>Iterator(pDocument,pViewShell,true,END)</code>. On equality the
- iteration should be stoped without evaluating the iterator: The position
- of an end iterator is not valid.</p>
-*/
-class Iterator
-{
-public:
- Iterator (void);
-
- /** The copy constructor creates a new iterator by copying the
- implementation object.
- */
- Iterator (const Iterator& rIterator);
-
- /** Create a new iterator with the implementation object being the
- provided one.
- @param pObject
- A copy of this object will become the implementation object.
- */
- explicit Iterator (IteratorImplBase* pObject);
-
- ~Iterator (void);
-
- /** Assign the iterator from the given one. The implementation object
- of this iterator will be a copy of the given iterator.
- @param rIterator
- The iterator which to assign from.
- */
- Iterator& operator= (const Iterator& rIterator);
- /** Return the current position of the iterator.
- @return
- Returns a reference to the current position. Therefore this
- method is not thread safe. The reason for this behaviour is, of
- course, to ommit the copying of the returned position.
- */
- const IteratorPosition& operator* () const;
- /** The prefix increment operator returns the iterator pointing to the
- next object. When in doubt prefer this operator over the postfix
- increment operator.
- @return
- Returns a reference to this iterator pointing to the next object.
- */
- Iterator& operator++ ();
- /** The postfix increment operator returns the iterator still pointing
- to the current object. Only the next call to
- <member>operator*()</member> will return the next object. When in
- doubt rather use the prefix increment operator.
- @param dummy
- A dummy operator used by the compiler.
- @return
- Returns a copy of the iterator as it where before the operator
- was called.
- */
- Iterator operator++ (int);
- /** Test equality of two iterators. Two iterators are taken to be equal
- when they point are of the same type (their implementation objects
- are instances of the same class) and point to the same object.
- @param rIterator
- The iterator to test equality with.
- @return
- Returns <TRUE/> when both iterators point to the same object.
- */
- bool operator== (const Iterator& rIterator);
- /** Test whether two iterators point to different objects. This is just
- the negation of the result of the equality operator.
- @param rIterator
- The iterator to test inequality with.
- @return
- Returns <TRUE/> when both iterators point to the different objects.
- */
- bool operator!= (const Iterator& rIterator);
- /** Reverse the direction of iteration. The position of the iterator is
- not changed. Thus caling this method twice returns to the old state.
- */
- void Reverse (void);
-
-private:
- /// The implementation object to which most of the methods are forwarded.
- IteratorImplBase* mpIterator;
-};
-
-
-
-
-/** This class wraps the <type>Outliner</type> class and represents it as
- a container of <type>SdrObject</type> objects. Its main purpose is to
- provide iterators for certain sub-sets of those objects. These sub-sets
- are a) the set of the currently selected objects, b) all objects in the
- current view, and c) all objects in all views.
-
- <p>The direction of the returned iterators depends on the underlying
- <type>Outliner</type> object and is usually set in the search
- dialog.</p>
-*/
-class OutlinerContainer
-{
-public:
- /** Create a new wraper object for the given outliner.
- @param pOutliner
- The outliner that is represented by the new object as
- <type>SdrObject</type> container.
- */
- OutlinerContainer (::sd::Outliner* pOutliner);
-
- /** Return an iterator that points to the first object of one of the
- sets described above. This takes also into account the direction of
- iteration.
- @return
- The returned iterator points either to the first (forward
- search) or to the last object (backward search) of the set.
- */
- Iterator begin (void);
-
- /** Return an iterator that marks the end of the iteration. This takes
- also into account the direction of iteration. The object pointed to
- is not valid.
- @return
- The returned iterator points either to that object past the last
- one (forward search) or to the one in front of the first
- (backward search).
- */
- Iterator end (void);
-
- /** Return an iterator that points to the current object of one of the
- sets described above. This takes also into account the direction of
- iteration.
- @return
- The returned iterator points either to the first (forward
- search) or to the last object (backward search) of the set of
- selected objects or of the current page if the search set spans
- more than one page.
- */
- Iterator current (void);
-
-private:
- /// The wrapped outliner that is represented as object container.
- ::sd::Outliner* mpOutliner;
-
- /** Create an iterator. The object pointed to depends on the search
- direction retrieved from the outliner object
- <member>mpOutliner</member> and the given location.
- @param aLocation
- This specifies whether the returned iterator points to the
- first, (one past the) last, or current object.
- @return
- Returns an iterator as constructed by
- <member>CreateSelectionIterator()</member>,
- */
- Iterator CreateIterator (IteratorLocation aLocation);
-
- /** Create an iterator that iterates over all currently selected
- <type>SdrObjects</type> objects of the <member>mpOutliner</member>
- outliner.
- @param rObjectList
- List of currently selected objects. This list is necessary
- so that the selection can be changed without affecting the
- iterator.
- @param pDocument
- The document to which the objects belong.
- @param pViewShell
- The view shell which displays the objects.
- @param bDirectionIsForward
- The direction of iteration. It defaults to forward.
- @param aLocation
- This specifies at which object the iterator points initially.
- */
- Iterator CreateSelectionIterator (
- const ::std::vector<SdrObjectWeakRef>& rObjectList,
- SdDrawDocument* pDocument,
- const ::boost::shared_ptr<ViewShell>& rpViewShell,
- bool bDirectionIsForward=true,
- IteratorLocation aLocation=BEGIN);
-
- /** Create an iterator that iterates over all <type>SdrObjects</type>
- objects of the <member>mpOutliner</member> outliner.
- @param pDocument
- The document to which the objects belong.
- @param pViewShell
- The view shell which displays the objects.
- @param bDirectionIsForward
- The direction of iteration. It defaults to forward.
- @param aLocation
- This specifies at which object the iterator points initially.
- */
- Iterator CreateDocumentIterator (
- SdDrawDocument* pDocument,
- const ::boost::shared_ptr<ViewShell>& rpViewShell,
- bool bDirectionIsForward=true,
- IteratorLocation aLocation=BEGIN);
-
- /** Return the index of a page that contains an object that a new
- iterator shall point to. This page index depends primarily on the
- location, iteration direction, as well as on edit mode and page
- kind.
- @param pDocument
- The document to which the page belongs.
- @param pViewShell
- The view shell which displays the page.
- @param ePageKind
- Specifies the view the page belongs to.
- @param eEditMode
- Specifies whether the page is a master page.
- @param bDirectionIsForward
- The direction of iteration.
- @param aLocation
- This specifies at which object the iterator points initially.
- */
- sal_Int32 GetPageIndex (
- SdDrawDocument* pDocument,
- const ::boost::shared_ptr<ViewShell>& rpViewShell,
- PageKind ePageKind,
- EditMode eEditMode,
- bool bDirectionIsForward,
- IteratorLocation aLocation);
-
- // Do not allow default constructor and copying of outliner containers.
- OutlinerContainer (const OutlinerContainer&) {};
- OutlinerContainer (void) {};
- OutlinerContainer& operator= (const OutlinerContainer&) {return *this;};
-};
-
-
-
-
-/** Data collection specifying a <type>SdrObject</type> and its position in
- a document and view.
-*/
-class IteratorPosition
-{
-public:
- /** Create a new object with all data members set to default values.
- These values should not be accessed. The only use of the object as
- it is is as a marker in comparisons.
- */
- IteratorPosition (void);
- /** Create a new object with all data members set from the given
- position.
- @param aPosition
- The position object from which to take the values that are
- assigned to the data members of this object.
- */
- IteratorPosition (const IteratorPosition& aPosition);
-
- /// The destructor is a no-op at the moment.
- ~IteratorPosition (void);
- /** Assign the content of the given position to this one.
- @param aPosition
- This is the position object from which to take the values of all
- data members.
- @return
- Returns a reference to this object.
- */
- IteratorPosition& operator= (const IteratorPosition& aPosition);
- /** Compare two positions for equality.
- @return
- <TRUE/> is returned only when all data members have the same
- values in both position objects.
- */
- bool operator== (const IteratorPosition& aPosition) const;
-
- /// Pointer to the actual <type>SdrObject</type> object.
- SdrObjectWeakRef mxObject;
-
- /// Number of the actual SdrText from the current <type>SdrObject</type>
- sal_Int32 mnText;
-
- /// The index of a page where the object is located on.
- sal_Int32 mnPageIndex;
- /// Page kind of the view.
- PageKind mePageKind;
- /// Edit mode of the view.
- EditMode meEditMode;
-};
-
-
-} } // end of namespace ::sd::outliner
-
-
-#endif // _SD_OUTLINER_ITERATOR_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */