dw::core::DeepIterator Class Reference

A stack of iterators, to iterate recursively through a widget tree. More...

#include <iterator.hh>

List of all members.

Classes

class  Stack

Public Member Functions

 DeepIterator (Iterator *it)
 Create a new deep iterator from an existing dw::core::Iterator.
 ~DeepIterator ()
lout::object::Objectclone ()
 Return an exact copy of the object.
DeepIteratorcreateVariant (Iterator *it)
IteratorgetTopIterator ()
ContentgetContent ()
bool isEmpty ()
bool next ()
 Move iterator forward and store content it.
bool prev ()
 Move iterator backward and store content it.
DeepIteratorcloneDeepIterator ()
int compareTo (lout::misc::Comparable *other)
 Compare two objects c1 and c2.
void highlight (int start, int end, HighlightLayer layer)
 Highlight a part of the current content.
void getAllocation (int start, int end, Allocation *allocation)
 Return the shape, which a part of the item, the iterator points on, allocates.
void unhighlight (int direction, HighlightLayer layer)

Static Public Member Functions

static void scrollTo (DeepIterator *it1, DeepIterator *it2, int start, int end, HPosition hpos, VPosition vpos)

Private Member Functions

 DeepIterator ()

Static Private Member Functions

static IteratorsearchDownward (Iterator *it, Content::Type mask, bool fromEnd)
static IteratorsearchSideward (Iterator *it, Content::Type mask, bool fromEnd)

Private Attributes

Stack stack
Content::Type mask
Content content
bool hasContents


Detailed Description

A stack of iterators, to iterate recursively through a widget tree.

This class is similar to dw::core::Iterator, but not created by a widget, but explicitly from another iterator. Deep iterators do not have the limitation, that iteration is only done within a widget, instead, child widgets are iterated through recursively.


Constructor & Destructor Documentation

dw::core::DeepIterator::DeepIterator (  )  [inline, private]

Referenced by clone(), and createVariant().

dw::core::DeepIterator::DeepIterator ( Iterator it  ) 

Create a new deep iterator from an existing dw::core::Iterator.

The content of the return value will be the content of it. If within the widget tree, there is no non-widget content, the resulting deep iterator is empty (denoted by dw::core::DeepIterator::stack == NULL).

Notes:

  1. The mask of i" must include DW_CONTENT_WIDGET, but dw::core::DeepIterator::next will never return widgets.

References dw::core::Iterator::cloneIterator(), content, dw::core::Iterator::getContent(), dw::core::Widget::getLevel(), dw::core::Iterator::getMask(), dw::core::Widget::getParent(), dw::core::Iterator::getWidget(), hasContents, dw::core::Widget::iterator(), mask, dw::core::Iterator::next(), lout::container::typed::Vector< T >::put(), searchDownward(), searchSideward(), stack, dw::core::Content::type, dw::core::Iterator::unref(), dw::core::Content::widget, and dw::core::Content::WIDGET.

dw::core::DeepIterator::~DeepIterator (  ) 


Member Function Documentation

object::Object * dw::core::DeepIterator::clone (  )  [virtual]

DeepIterator* dw::core::DeepIterator::cloneDeepIterator (  )  [inline]

int dw::core::DeepIterator::compareTo ( lout::misc::Comparable other  )  [virtual]

Compare two objects c1 and c2.

return a value < 0, when c1 is less than c2, a value > 0, when c1 is greater than c2, or 0, when c1 and c2 are equal.

If also object::Object is implemented, and if c1.equals(c2), c1.compareTo(c2) must be 0, but, unlike you may expect, the reversed is not necessarily true. This method returns 0, if, according to the rules for sorting, there is no difference, but there may still be differences (not relevant for sorting), which "equals" will care about.

Implements lout::misc::Comparable.

References lout::misc::Comparable::compareTo(), lout::container::typed::Vector< T >::get(), dw::core::Iterator::getWidget(), lout::container::typed::Vector< T >::size(), and stack.

Referenced by dw::core::SelectionState::adjustSelection(), dw::core::SelectionState::buttonRelease(), dw::core::CharIterator::compareTo(), dw::core::SelectionState::copy(), dw::core::CharIterator::highlight(), dw::core::SelectionState::highlight0(), dw::core::Iterator::scrollTo(), and dw::core::CharIterator::unhighlight().

DeepIterator * dw::core::DeepIterator::createVariant ( Iterator it  ) 

Todo:
Not yet implemented, and actually not yet needed very much.

References DeepIterator().

Referenced by dw::core::SelectionState::adjustSelection(), and dw::core::SelectionState::switchLinkToSelection().

void dw::core::DeepIterator::getAllocation ( int  start,
int  end,
Allocation allocation 
) [inline]

Return the shape, which a part of the item, the iterator points on, allocates.

The parameters start and end have the same meaning as in DwIterator::highlight().

References dw::core::Iterator::getAllocation(), dw::core::DeepIterator::Stack::getTop(), and stack.

Referenced by dw::core::Iterator::scrollTo().

Content* dw::core::DeepIterator::getContent (  )  [inline]

Iterator* dw::core::DeepIterator::getTopIterator (  )  [inline]

void dw::core::DeepIterator::highlight ( int  start,
int  end,
HighlightLayer  layer 
) [inline]

Highlight a part of the current content.

Unhighlight the current content by passing -1 as start (see also (dw::core::Iterator::unhighlight). For text, start and end define the characters, otherwise, the shape is defined as [0, 1], i.e. for highlighting a whole dw::core::Content, pass 0 and >= 1.

References dw::core::DeepIterator::Stack::getTop(), dw::core::Iterator::highlight(), and stack.

Referenced by dw::core::SelectionState::adjustSelection(), dw::core::CharIterator::highlight(), and dw::core::SelectionState::highlight0().

bool dw::core::DeepIterator::isEmpty (  ) 

bool dw::core::DeepIterator::next (  ) 

bool dw::core::DeepIterator::prev (  ) 

static void dw::core::DeepIterator::scrollTo ( DeepIterator it1,
DeepIterator it2,
int  start,
int  end,
HPosition  hpos,
VPosition  vpos 
) [inline, static]

Iterator * dw::core::DeepIterator::searchDownward ( Iterator it,
Content::Type  mask,
bool  fromEnd 
) [static, private]

Iterator * dw::core::DeepIterator::searchSideward ( Iterator it,
Content::Type  mask,
bool  fromEnd 
) [static, private]

void dw::core::DeepIterator::unhighlight ( int  direction,
HighlightLayer  layer 
) [inline]


Member Data Documentation

Referenced by clone(), DeepIterator(), and isEmpty().

Referenced by clone(), DeepIterator(), next(), and prev().


The documentation for this class was generated from the following files:

Generated on Wed Sep 7 02:00:37 2011 for Dillo by  doxygen 1.5.9