#include <Mapper.hpp>
Each box is stored in a linear array, as the hierarchical structure is not needed anymore. Each box have a reference on the mapper, so they can obtain the previous and next box without having to deal with the DOM structure directly.
The mapper is able to locate a box from its UID too with a fast lookup
Public Member Functions | |
const bool | areFloatBoxInContainer (Box *container) const |
Are there any float in the container. | |
const uint32 | findBottomChildrenPos (Box *box, bool blockLevelOnly=true, bool setIteration=true) const |
Find the bottom children position. | |
const uint32 | findLeftChildrenPos (Box *box, bool blockLevelOnly=true) const |
Find the left children position. | |
const uint32 | findRightChildrenPos (Box *box, bool blockLevelOnly=true) const |
Find the right children position. | |
const uint32 | findTopChildrenPos (Box *box, bool blockLevelOnly=true, bool setIteration=true) const |
Find the top children position. | |
bool | generateBoxes () |
Generate the boxes, and put them inside the corresponding arrays This method follow http://www.w3.org/TR/REC-CSS2/visuren.html#box-gen. | |
bool | generateBoxHierarchy () |
Generate the boxes hierarchy from the given DOM tree, and put them inside the corresponding arrays This method follow http://www.w3.org/TR/REC-CSS2/visuren.html#box-gen. | |
CSS::Font * | getBolderFont (CSS::Font *font) const |
Get a bolder font than the given font. | |
CSS::Font * | getColouredFont (CSS::Font *font, const CSS::Colour &color) const |
Get an coloured font derived from the given font. | |
const uint32 | getCurrentIteration () const |
Get the current rendering iteration. | |
CSS::Font * | getDefaultFont () const |
Get the default font. | |
CSS::DisplayMode::Type | getDisplayStyleFor (const BoxHierarchy *box) const |
Get the display style for the given box hierarchy. | |
const int32 | getFloatBottom (Box *container) const |
Get the current bottom float position for the given container. | |
const int32 | getFloatLeft (Box *container) const |
Get the current left float position for the given container. | |
const int32 | getFloatRight (Box *container) const |
Get the current right float position for the given container. | |
HTML::Renderer::Allocators::BaseAllocator & | getHierarchyAllocator () |
Return the currently used hierarchy allocator. | |
CSS::Font * | getItalicFont (CSS::Font *font) const |
Get an italic font derived from the given font. | |
uint32 | getMinimumHeightOf (Box *box) const |
Get the minimum width of the given element. | |
uint32 | getMinimumWidthOf (Box *box) const |
Get the minimum width of the given element. | |
CSS::Font * | getMonospaceFont (CSS::Font *font) const |
Get an monospaced font derived from the given font. | |
Box * | getRenderedBox (const uint32 index) |
Get the boxes to render them. | |
uint32 | getRenderedHeightOf (Box *box) const |
Get the rendering height of the given element. | |
uint32 | getRenderedWidthOf (Box *box) const |
Get the rendering width of the given element. | |
const BoxHierarchy * | getRootHierarchy () const |
Get the root box hierarchy. | |
CSS::Font * | getScaledFont (CSS::Font *font, const float scale) const |
Get a scaled font than the given font. | |
uint32 | getSplitLimitsOf (Box *box, const int32 boxLeft, const int32 boxRight, const int32 top, const int32 left, int32 &right, int32 &bottom) const |
Get the split limits of the given element. | |
bool | getStyleFor (const BoxHierarchy *box, CSS::StyleImplement &style) const |
Get the style for the given box hierarchy. | |
TableLayout * | getTableLayout (Box *box) const |
Get the table layout for the given box. | |
Box * | getViewportBox () |
Get the viewport box. | |
const uint32 | getViewportHeight () const |
Get the viewport height. | |
const uint32 | getViewportWidth () const |
Get the viewport width. | |
bool | getWidthsOf (Box *box, int32 &minWidth, int32 &maxWidth) const |
Get the minimum and maximum width for a given box. | |
const bool | hasBlockLevelChildren (const Box *box) const |
Are there any block level children in this container ? | |
bool | isFormBasedElement (const BoxHierarchy *box) const |
Check if the element is a Form based element. | |
bool | isLinkElement (const BoxHierarchy *box) const |
Check if the element is a link. | |
Mapper (const DOM::Node *_root, HTML::Renderer::Allocators::BaseAllocator &allocator, const uint32 viewWidth, const uint32 viewHeight, RequiredRendererImplementation *ri) | |
The only constructor. | |
void | resizedTo (const uint32 width, const uint32 height) |
A viewport resize has been done, so handle it, increment the iteration count. | |
const bool | shouldBeSeenAsBlock (Box *box) const |
Should this box be seen as block ? This is used for non-compliant web page where block level element are included into inline level element (like div in a span) In that case, the renderer will display wrong inline based block. | |
~Mapper () | |
The destructor delete the style objects used inside the boxes. |
HTML::Renderer::Mapper::Mapper | ( | const DOM::Node * | _root, | |
HTML::Renderer::Allocators::BaseAllocator & | allocator, | |||
const uint32 | viewWidth, | |||
const uint32 | viewHeight, | |||
RequiredRendererImplementation * | ri | |||
) | [inline] |
The only constructor.
The renderer must provide callbacks in its own RequiredRendererImplementation overload
root | The root node of the DOM tree | |
allocator | The box hierarchy allocator (used to create/change the box hierarchy) | |
viewWidth | The viewport width | |
viewHeight | The viewport height | |
ri | The required renderer implementation object pointer |
HTML::Renderer::Mapper::~Mapper | ( | ) |
The destructor delete the style objects used inside the boxes.
const bool HTML::Renderer::Mapper::areFloatBoxInContainer | ( | Box * | container | ) | const [inline] |
const uint32 HTML::Renderer::Mapper::findBottomChildrenPos | ( | Box * | box, | |
bool | blockLevelOnly = true , |
|||
bool | setIteration = true | |||
) | const |
Find the bottom children position.
const uint32 HTML::Renderer::Mapper::findLeftChildrenPos | ( | Box * | box, | |
bool | blockLevelOnly = true | |||
) | const |
Find the left children position.
const uint32 HTML::Renderer::Mapper::findRightChildrenPos | ( | Box * | box, | |
bool | blockLevelOnly = true | |||
) | const |
Find the right children position.
const uint32 HTML::Renderer::Mapper::findTopChildrenPos | ( | Box * | box, | |
bool | blockLevelOnly = true , |
|||
bool | setIteration = true | |||
) | const |
Find the top children position.
bool HTML::Renderer::Mapper::generateBoxes | ( | ) |
Generate the boxes, and put them inside the corresponding arrays This method follow http://www.w3.org/TR/REC-CSS2/visuren.html#box-gen.
bool HTML::Renderer::Mapper::generateBoxHierarchy | ( | ) |
Generate the boxes hierarchy from the given DOM tree, and put them inside the corresponding arrays This method follow http://www.w3.org/TR/REC-CSS2/visuren.html#box-gen.
Get a bolder font than the given font.
CSS::Font* HTML::Renderer::Mapper::getColouredFont | ( | CSS::Font * | font, | |
const CSS::Colour & | color | |||
) | const [inline] |
Get an coloured font derived from the given font.
const uint32 HTML::Renderer::Mapper::getCurrentIteration | ( | ) | const [inline] |
Get the current rendering iteration.
CSS::Font* HTML::Renderer::Mapper::getDefaultFont | ( | ) | const [inline] |
Get the default font.
CSS::DisplayMode::Type HTML::Renderer::Mapper::getDisplayStyleFor | ( | const BoxHierarchy * | box | ) | const |
Get the display style for the given box hierarchy.
const int32 HTML::Renderer::Mapper::getFloatBottom | ( | Box * | container | ) | const [inline] |
Get the current bottom float position for the given container.
const int32 HTML::Renderer::Mapper::getFloatLeft | ( | Box * | container | ) | const [inline] |
Get the current left float position for the given container.
const int32 HTML::Renderer::Mapper::getFloatRight | ( | Box * | container | ) | const [inline] |
Get the current right float position for the given container.
HTML::Renderer::Allocators::BaseAllocator& HTML::Renderer::Mapper::getHierarchyAllocator | ( | ) | [inline] |
Return the currently used hierarchy allocator.
Get an italic font derived from the given font.
uint32 HTML::Renderer::Mapper::getMinimumHeightOf | ( | Box * | box | ) | const [inline] |
Get the minimum width of the given element.
uint32 HTML::Renderer::Mapper::getMinimumWidthOf | ( | Box * | box | ) | const [inline] |
Get the minimum width of the given element.
Get an monospaced font derived from the given font.
Box* HTML::Renderer::Mapper::getRenderedBox | ( | const uint32 | index | ) | [inline] |
Get the boxes to render them.
uint32 HTML::Renderer::Mapper::getRenderedHeightOf | ( | Box * | box | ) | const [inline] |
Get the rendering height of the given element.
uint32 HTML::Renderer::Mapper::getRenderedWidthOf | ( | Box * | box | ) | const [inline] |
Get the rendering width of the given element.
const BoxHierarchy* HTML::Renderer::Mapper::getRootHierarchy | ( | ) | const [inline] |
Get the root box hierarchy.
CSS::Font* HTML::Renderer::Mapper::getScaledFont | ( | CSS::Font * | font, | |
const float | scale | |||
) | const [inline] |
Get a scaled font than the given font.
uint32 HTML::Renderer::Mapper::getSplitLimitsOf | ( | Box * | box, | |
const int32 | boxLeft, | |||
const int32 | boxRight, | |||
const int32 | top, | |||
const int32 | left, | |||
int32 & | right, | |||
int32 & | bottom | |||
) | const [inline] |
Get the split limits of the given element.
bool HTML::Renderer::Mapper::getStyleFor | ( | const BoxHierarchy * | box, | |
CSS::StyleImplement & | style | |||
) | const |
Get the style for the given box hierarchy.
TableLayout * HTML::Renderer::Mapper::getTableLayout | ( | Box * | box | ) | const |
Get the table layout for the given box.
Box* HTML::Renderer::Mapper::getViewportBox | ( | ) | [inline] |
Get the viewport box.
const uint32 HTML::Renderer::Mapper::getViewportHeight | ( | ) | const [inline] |
Get the viewport height.
const uint32 HTML::Renderer::Mapper::getViewportWidth | ( | ) | const [inline] |
Get the viewport width.
bool HTML::Renderer::Mapper::getWidthsOf | ( | Box * | box, | |
int32 & | minWidth, | |||
int32 & | maxWidth | |||
) | const [inline] |
Get the minimum and maximum width for a given box.
const bool HTML::Renderer::Mapper::hasBlockLevelChildren | ( | const Box * | box | ) | const |
Are there any block level children in this container ?
bool HTML::Renderer::Mapper::isFormBasedElement | ( | const BoxHierarchy * | box | ) | const [inline] |
Check if the element is a Form based element.
bool HTML::Renderer::Mapper::isLinkElement | ( | const BoxHierarchy * | box | ) | const [inline] |
Check if the element is a link.
void HTML::Renderer::Mapper::resizedTo | ( | const uint32 | width, | |
const uint32 | height | |||
) |
A viewport resize has been done, so handle it, increment the iteration count.
const bool HTML::Renderer::Mapper::shouldBeSeenAsBlock | ( | Box * | box | ) | const |
Should this box be seen as block ? This is used for non-compliant web page where block level element are included into inline level element (like div in a span) In that case, the renderer will display wrong inline based block.