# ipe::Text Class Reference
Ipe Objects

The text object. More...

`#include <ipetext.h>`

Inherits ipe::Object.

List of all members.

## Classes

- struct XForm

## Public Types

- enum TextType { ELabel = 1, EMinipage }

## Public Member Functions

- Text ()
- Text (const AllAttributes &attr, String data, const Vector &pos, TextType type, double width=10.0)
- Text (const Text &rhs)
- ~Text ()
- Text (const XmlAttributes &attr, String data)
- virtual Object * clone () const
- virtual Text * asText ()
- virtual Type type () const
- virtual void saveAsXml (Stream &stream, String layer) const
- virtual void draw (Painter &painter) const
- virtual void drawSimple (Painter &painter) const
- virtual void accept (Visitor &visitor) const
- virtual void addToBBox (Rect &box, const Matrix &m, bool) const
- virtual double distance (const Vector &v, const Matrix &m, double bound) const
- virtual void snapVtx (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const
- virtual void checkStyle (const Cascade *sheet, AttributeSeq &seq) const
- virtual bool setAttribute (Property prop, Attribute value, Attribute stroke, Attribute fill)
- virtual Attribute getAttribute (Property prop)
- Vector align () const
- TextType textType () const
- Vector position () const
- String text () const
- void setStroke (Attribute stroke)
- void setOpacity (Attribute opaq)
- Attribute stroke () const
- Attribute size () const
- Attribute style () const
- Attribute opacity () const
- bool isMinipage () const
- void setTextType (TextType type)
- THorizontalAlignment horizontalAlignment () const
- TVerticalAlignment verticalAlignment () const
- void setHorizontalAlignment (THorizontalAlignment align)
- void setVerticalAlignment (TVerticalAlignment align)
- double width () const
- double height () const
- double depth () const
- double totalHeight () const
- void setSize (Attribute size)
- void setStyle (Attribute style)
- void setWidth (double width)
- void setText (String text)
- bool isInternal () const
- void setXForm (XForm *xform) const
- const XForm * getXForm () const

## Static Public Member Functions

- static TVerticalAlignment makeVAlign (String str, TVerticalAlignment def)
- static THorizontalAlignment makeHAlign (String str, THorizontalAlignment def)
- static void saveAlignment (Stream &stream, THorizontalAlignment h, TVerticalAlignment v)

## Detailed Description

The text object.

The text object stores a Latex source representation, which needs to be translated into PDF by Pdflatex before it can be saved as PDF.

There are two types of text objects: labels and minipages. The textType() method tells you which, or use isMinipage().

The dimensions of a text object are given by width(), height(), and depth(). They are recomputed by Ipe when running LaTeX, with the exception of the width for minipage objects (whose width is fixed). Before Latex has been run, the dimensions are not reliable.

The position of the reference point relative to the text box is given by verticalAlignment() and horizontalAlignment().

The text() must be a legal LaTeX fragment that can be interpreted by LaTeX inside `\hbox`, possibly using the macros or packages defined in the preamble.

## Member Enumeration Documentation

enum ipe::Text::TextType

Enumerator:

  ELabel |
  EMinipage |

## Constructor & Destructor Documentation

Text::Text | ( |  | ) | `[explicit]`

Construct an empty internal text object.

Text::Text | ( | const AllAttributes & | attr,
|  | String | data,
|  | const Vector & | pos,
|  | TextType | type,
|  | double | width = `10.0`
| ) |  | `[explicit]`

Create text object.

Text::Text | ( | const Text & | rhs | ) |

Copy constructor.

Text::~Text | ( |  | ) |

Destructor.

Text::Text | ( | const XmlAttributes & | attr,
|  | String | data
| ) |  | `[explicit]`

Create from XML stream.

## Member Function Documentation

Object * Text::clone | ( |  | ) | const`[virtual]`

Clone object.

Implements ipe::Object.

Text * Text::asText | ( |  | ) | `[virtual]`

Return pointer to this object.

Reimplemented from ipe::Object.

Object::Type Text::type | ( |  | ) | const`[virtual]`

Implements ipe::Object.

void Text::saveAsXml | ( | Stream & | stream,
|  | String | layer
| ) |  | const`[virtual]`

Save object to XML stream.

Implements ipe::Object.

void Text::draw | ( | Painter & | painter | ) | const`[virtual]`

Save text as PDF.

Implements ipe::Object.

void Text::drawSimple | ( | Painter & | painter | ) | const`[virtual]`

Draw simple version for selecting and transforming.

Implements ipe::Object.

void Text::accept | ( | Visitor & | visitor | ) | const`[virtual]`

Call visitText of visitor.

Implements ipe::Object.

void Text::addToBBox | ( | Rect & | box,
|  | const Matrix & | m,
|  | bool | cp
| ) |  | const`[virtual]`

Extend box to include the object transformed by m.

For objects in a page, don't call this directly. The Page caches the bounding box of each object, so it is far more efficient to call Page::bbox.

Control points that lie outside the visual object are included if cp is true.

If called with an empty box and cp == `false`, the result of this function is a tight bounding box for the object, with a little leeway in case the boundary is determined by a spline (it has to be approximated to perform this operation).

Implements ipe::Object.

double Text::distance | ( | const Vector & | v,
|  | const Matrix & | m,
|  | double | bound
| ) |  | const`[virtual]`

Return distance of transformed object to point v. If larger than bound, can just return bound.

Implements ipe::Object.

void Text::snapVtx | ( | const Vector & | mouse,
|  | const Matrix & | m,
|  | Vector & | pos,
|  | double & | bound
| ) |  | const`[virtual]`

Compute possible vertex snapping position for transformed object.

Looks only for positions closer than bound. If successful, modify pos and bound.

Implements ipe::Object.

void Text::checkStyle | ( | const Cascade * | sheet,
|  | AttributeSeq & | seq
| ) |  | const`[virtual]`

Check symbolic size attribute.

Reimplemented from ipe::Object.

bool Text::setAttribute | ( | Property | prop,
|  | Attribute | value,
|  | Attribute | stroke,
|  | Attribute | fill
| ) |  | `[virtual]`

Set an attribute on this object.

Returns true if an attribute was actually changed. The arguments stroke and fill are only used then prop is EPropPathMode, and stroking or filling is added to an object that didn't have it before.

Reimplemented from ipe::Object.

Attribute Text::getAttribute | ( | Property | prop | ) | `[virtual]`

Get setting of an attribute of this object.

If object does not have this attribute, returnes "undefined" attribute.

Reimplemented from ipe::Object.

Vector Text::align | ( |  | ) | const

Return position of reference point in text box coordinate system.

Assume a coordinate system where the text box has corners (0,0) and (Width(), TotalHeight()). This function returns the coordinates of the reference point in this coordinate system.

Text::TextType Text::textType | ( |  | ) | const

Return type of text object.

Vector ipe::Text::position | ( |  | ) | const`[inline]`

Return text position.

String ipe::Text::text | ( |  | ) | const`[inline]`

Return text source.

void Text::setStroke | ( | Attribute | stroke | ) |

Set stroke color.

void Text::setOpacity | ( | Attribute | opaq | ) |

Set opacity of the object.

Attribute ipe::Text::stroke | ( |  | ) | const`[inline]`

Return stroke color.

Attribute ipe::Text::size | ( |  | ) | const`[inline]`

Return font size.

Attribute ipe::Text::style | ( |  | ) | const`[inline]`

Return Latex style of text object.

Attribute ipe::Text::opacity | ( |  | ) | const`[inline]`

Return opacity of the opject.

bool ipe::Text::isMinipage | ( |  | ) | const`[inline]`

Return true if text object is formatted as a minipage.

Equivalent to type being EMinipage.

void Text::setTextType | ( | TextType | type | ) |

Change type.

THorizontalAlignment ipe::Text::horizontalAlignment | ( |  | ) | const`[inline]`

Return horizontal alignment of text object.

TVerticalAlignment ipe::Text::verticalAlignment | ( |  | ) | const`[inline]`

Return vertical alignment of text object.

void Text::setHorizontalAlignment | ( | THorizontalAlignment | align | ) |

Change horizontal alignment (text moves with respect to reference point).

void Text::setVerticalAlignment | ( | TVerticalAlignment | align | ) |

Change vertical alignment (text moves with respect to reference point).

TVerticalAlignment Text::makeVAlign | ( | String | str,
|  | TVerticalAlignment | def
| ) |  | `[static]`

Return vertical alignment indicated by a name, or else default.

THorizontalAlignment Text::makeHAlign | ( | String | str,
|  | THorizontalAlignment | def
| ) |  | `[static]`

Return horizontal alignment indicated by a name, or else default.

void Text::saveAlignment | ( | Stream & | stream,
|  | THorizontalAlignment | h,
|  | TVerticalAlignment | v
| ) |  | `[static]`

double ipe::Text::width | ( |  | ) | const`[inline]`

Return width of text object.

double ipe::Text::height | ( |  | ) | const`[inline]`

Return height of text object (from baseline to top).

double ipe::Text::depth | ( |  | ) | const`[inline]`

Return depth of text object.

double ipe::Text::totalHeight | ( |  | ) | const`[inline]`

Return height + depth of text object.

void Text::setSize | ( | Attribute | size | ) |

Set font size of text.

This invalidates (and destroys) the XForm.

void Text::setStyle | ( | Attribute | style | ) |

Set Latex style of text.

This invalidates (and destroys) the XForm.

void Text::setWidth | ( | double | width | ) |

Set width of paragraph.

This invalidates (and destroys) the XForm. The function panics if object is not a (true) minipage.

void Text::setText | ( | String | text | ) |

Sets the text of the text object.

This invalidates (and destroys) the XForm.

bool ipe::Text::isInternal | ( |  | ) | const`[inline]`

void Text::setXForm | ( | XForm * | xform | ) | const

Update the PDF code for this object.

const Text::XForm * ipe::Text::getXForm | ( |  | ) | const`[inline]`

Return the PDF representation of this text object.

If Pdflatex has not been run yet, returns 0.

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

- ipetext.h
- ipetext.cpp