Wt: Wt::Render::WTextRenderer Class Reference

Wt 3.3.0

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes

- Class List
- Class Hierarchy
- Class Members

Public Member Functions | Protected Member Functions
Wt::Render::WTextRenderer Class Reference
XHTML Rendering (Wt::Render)

An XHTML renderering engine. More...

`#include <Wt/Render/WTextRenderer>`

Inheritance diagram for Wt::Render::WTextRenderer:
[legend]

List of all members.

## Public Member Functions
virtual | ~WTextRenderer ()
| Destructor.
double | render (const WString &text, double y=0)
| Renders an XHTML fragment.
double | textWidth (int page) const
| Returns the page text width.
double | textHeight (int page) const
| Returns the page text height.
void | setFontScale (double scale)
| Sets the scaling factor used for font rendering.
double | fontScale () const
| Returns the font scaling factor.
virtual double | pageWidth (int page) const =0
| Returns the page width.
virtual double | pageHeight (int page) const =0
| Returns the page height.
virtual double | margin (Side side) const =0
| Returns the margin.
virtual WPaintDevice * | startPage (int page)=0
| Returns a paint device to render a given page.
virtual void | endPage (WPaintDevice *device)=0
| Stops painting on the given page.
virtual WPainter * | getPainter (WPaintDevice *device)=0
| Returns a painter for the current page.
## Protected Member Functions
| WTextRenderer ()
| Constructor.

## Detailed Description

An XHTML renderering engine.

This class implements a rendering engine for a (subset of) XHTML. Its intended use is to be able to accurately render the output of the WTextEdit widget (although it handles a more general subset of XHTML than is required to do just that). Its focus is on high-quality rendering of text-like contents.

The following are the main features:

- compliant rendering of inline (text) contents, floats, tables, images, ordered lists, unordered lists, in any arbitrary combination
- support for fonts, font styles, font sizes and text decorations
- support for text alignment options, padding, margins, borders, background color (only on block elements) and text colors
- supports automatic page breaks
- supports font scaling (rendering text at another DPI than the rest)
- can be used in conjunction with other drawing instructions to the same paint device.

Some of the main limitations are:

- there is no CSS style resolution other than inline style definitions: the "class" attribute is ignored entirely.
- only "display: inline" or "display: block" elements are supported. "display: none" and "display: inline-block" are not (yet) recognized.
- only normal positioning is supported (absolute positioning and relative positioning is not supported yet).
- only colors defined in terms of RGB values are supported: CSS named colors (e.g. 'blue') are not allowed.

The basics are solid though and the hardest part has been implemented (notably handling floats and (nested) tables). Anything else could be easily improved, let us known in the bug tracker.

This class is an abstract class. A concrete class implements the pure virtual methods to create an appropriate WPaintDevice for each page and to provide page dimension information. The paint device needs to support font metrics, which currently is only implemented by WPdfImage or WRasterImage.

All coordinates and dimensions used by this class are pixel coordinates.

## Member Function Documentation

double Wt::Render::WTextRenderer::fontScale | ( |  | ) | const

Returns the font scaling factor.

See also:
  setFontScale().

virtual double Wt::Render::WTextRenderer::margin | ( | Side | side | ) | const`[pure virtual]`

Returns the margin.

Returns the margin at given side (in pixel units).

Implemented in Wt::Render::WPdfRenderer.

virtual double Wt::Render::WTextRenderer::pageHeight | ( | int | page | ) | const`[pure virtual]`

Returns the page height.

Returns the total page height (in pixel units), including vertical margins.

Implemented in Wt::Render::WPdfRenderer.

virtual double Wt::Render::WTextRenderer::pageWidth | ( | int | page | ) | const`[pure virtual]`

Returns the page width.

Returns the total page width (in pixel units), including horizontal margins.

Implemented in Wt::Render::WPdfRenderer.

double Wt::Render::WTextRenderer::render | ( | const WString & | text,
|  | double | y = `0`
| ) |  |

Renders an XHTML fragment.

The text is rendered, starting at position `y`, and flowing down the page. New pages are created using `startPage()` to render more contents on a next page. The return value is the position at which rendering stopped on the last page on which was rendered.

This `y` position and returned position are text coordinates, which differ from page coordinates in that they exclude margins.

The function returns the end position. You may call this function multiple times.

Each invocation to render() has the effect of resetting the logical page numbering used by pageWidth(), pageHeight() and startPage() so that the current page is page 0.

void Wt::Render::WTextRenderer::setFontScale | ( | double | scale | ) |

Sets the scaling factor used for font rendering.

A scaling can be set for text. The scaling factor has as effect that text font sizes are modified by the scale. Also CSS length units that are defined in terms of font units ("em" and "ex") are scaled accordingly.

The default value is 1.

virtual WPaintDevice* Wt::Render::WTextRenderer::startPage | ( | int | page | ) | `[pure virtual]`

Returns a paint device to render a given page.

The render() method calls this function once for each page it wants to render.

Implemented in Wt::Render::WPdfRenderer.

double Wt::Render::WTextRenderer::textHeight | ( | int | page | ) | const

Returns the page text height.

This returns the height of the page in which text needs to be rendered, excluding vertical margins, in pixels.

See also:
  textWidth()

double Wt::Render::WTextRenderer::textWidth | ( | int | page | ) | const

Returns the page text width.

This returns the width of the page in which text needs to be rendered, excluding horizontal margins, in pixels.

See also:
  textHeight()

All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator