khtml::LinearDocument Class Reference
Represents the whole document in terms of lines. More...
#include <khtml_caret_p.h>
Public Types | |
typedef LineIterator | Iterator |
Public Member Functions | |
LinearDocument (KHTMLPart *part, DOM::NodeImpl *node, long offset, CaretAdvancePolicy advancePolicy, DOM::ElementImpl *baseElem) | |
bool | isValid () const |
int | count () const |
Iterator | current () |
const Iterator & | end () const |
Iterator | preEnd () |
Iterator | begin () |
const Iterator & | preBegin () const |
CaretAdvancePolicy | advancePolicy () const |
RenderObject * | baseObject () const |
Protected Member Functions | |
void | initPreBeginIterator () |
void | initEndIterator () |
Protected Attributes | |
CaretBoxLineDeleter | cblDeleter |
DOM::NodeImpl * | node |
long | offset |
Iterator | _preBegin |
Iterator | _end |
KHTMLPart * | m_part |
CaretAdvancePolicy | advPol |
RenderObject * | base |
Detailed Description
Represents the whole document in terms of lines.SGML documents are trees. But for navigation, this representation is not practical. Therefore this class serves as a helper to represent the document as a linear list of lines. Its usage somewhat resembles STL semantics like begin and end as well as iterators.
The lines itself are represented as caret line boxes.
LinearDocument instances are not meant to be kept over the lifetime of their associated document, but constructed from (node, offset) pairs whenever line traversal is needed. This is because the underlying InlineFlowBox objects may be destroyed and recreated (e. g. by resizing the window, adding/removing elements).
- Author:
- Leo Savernik
- Since:
- 3.2
Definition at line 633 of file khtml_caret_p.h.
Constructor & Destructor Documentation
|
Creates a new instance, and initializes it to the line specified by the parameters below.
Creation will fail if
|
Member Function Documentation
|
Tells whether this list contains any lines.
|
|
Returns the count of lines. Warning: This function is expensive. Call it once and cache the value. FIXME: It's not implemented yet (and maybe never will) Definition at line 1261 of file khtml_caret.cpp. |
|
Returns a line iterator containing the current position as its starting value. Definition at line 1267 of file khtml_caret.cpp. |
|
Returns a line iterator pointing right after the end of the document. Definition at line 687 of file khtml_caret_p.h. Referenced by begin(), khtml::EditableCharacterIterator::EditableCharacterIterator(), khtml::ErgonomicEditableLineIterator::operator++(), khtml::EditableCharacterIterator::operator++(), and khtml::ErgonomicEditableLineIterator::operator--(). |
|
Returns a line iterator pointing to the very last line of the document. Definition at line 1286 of file khtml_caret.cpp. References preBegin(). |
|
Returns a line iterator pointing to the very first line of the document. Definition at line 1272 of file khtml_caret.cpp. References end(). |
|
Returns a line iterator pointing just before the very first line of the document (this is somewhat an emulation of reverse iterators). Definition at line 703 of file khtml_caret_p.h. Referenced by khtml::ErgonomicEditableLineIterator::operator++(), khtml::ErgonomicEditableLineIterator::operator--(), khtml::EditableCharacterIterator::operator--(), and preEnd(). |
|
Returns the current caret advance policy. Definition at line 708 of file khtml_caret_p.h. Referenced by khtml::EditableLineIterator::advance(), and khtml::ErgonomicEditableLineIterator::determineTopologicalElement(). |
|
Returns the base render object which the caret must not advance beyond. Note that HTML documents are usually restricted to the body element.
Referenced by khtml::ErgonomicEditableLineIterator::determineTopologicalElement(), khtml::LineIterator::LineIterator(), khtml::LineIterator::nextBlock(), and khtml::LineIterator::prevBlock(). |
The documentation for this class was generated from the following files: