Ipelib
Classes | Public Types | Public Member Functions | Static Public Member Functions | List of all members
ipe::Text Class Reference

#include <ipetext.h>

Inherits ipe::Object.

Classes

struct  XForm
 

Public Types

enum  TextType { ELabel , EMinipage }
 
- Public Types inherited from ipe::Object
enum  Type {
  EGroup , EPath , EText , EImage ,
  EReference
}
 

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 Objectclone () const
 
virtual TextasText ()
 
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 snapCtl (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)
 
virtual Attribute getAttribute (Property prop) const noexcept
 
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)
 
void setXForm (XForm *xform) const
 
const XFormgetXForm () const
 
- Public Member Functions inherited from ipe::Object
virtual ~Object ()=0
 
virtual GroupasGroup ()
 
virtual const GroupasGroup () const
 
virtual PathasPath ()
 
virtual ImageasImage ()
 
virtual ReferenceasReference ()
 
virtual TPinned pinned () const
 
void setPinned (TPinned pin)
 
TTransformations transformations () const
 
void setTransformations (TTransformations trans)
 
virtual void setMatrix (const Matrix &matrix)
 
const Matrixmatrix () const
 
void setCustom (Attribute value)
 
Attribute getCustom () const noexcept
 
virtual void snapVtx (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const
 
virtual void snapBnd (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) 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)
 

Additional Inherited Members

- Protected Member Functions inherited from ipe::Object
 Object ()
 
 Object (const AllAttributes &attr)
 
 Object (const Object &rhs)
 
 Object (const XmlAttributes &attr)
 
void saveAttributesAsXml (Stream &stream, String layer) const
 
- Static Protected Member Functions inherited from ipe::Object
static void checkSymbol (Kind kind, Attribute attr, const Cascade *sheet, AttributeSeq &seq)
 
- Protected Attributes inherited from ipe::Object
Matrix iMatrix
 
Attribute iCustom
 
TPinned iPinned: 8
 
TTransformations iTransformations: 8
 

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

◆ TextType

Enumerator
ELabel 
EMinipage 

Constructor & Destructor Documentation

◆ Text() [1/4]

Text::Text ( )
explicit

Construct an empty internal text object.

References ipe::Attribute::BLACK(), ipe::EAlignBottom, ipe::EAlignLeft, ipe::Attribute::NORMAL(), ipe::Attribute::OPAQUE(), and ipe::Vector::ZERO.

Referenced by clone().

◆ Text() [2/4]

Text::Text ( const AllAttributes attr,
String  data,
const Vector pos,
TextType  type,
double  width = 10.0 
)
explicit

◆ Text() [3/4]

Text::Text ( const Text rhs)

Copy constructor.

References ipe::Text::XForm::iRefCount.

◆ ~Text()

Text::~Text ( )

Destructor.

References ipe::Text::XForm::iRefCount.

◆ Text() [4/4]

Text::Text ( const XmlAttributes attr,
String  data 
)
explicit

Member Function Documentation

◆ clone()

Object * Text::clone ( ) const
virtual

Clone object.

Implements ipe::Object.

References Text().

◆ asText()

Text * Text::asText ( )
virtual

Return pointer to this object.

Reimplemented from ipe::Object.

◆ type()

Object::Type Text::type ( ) const
virtual

Implements ipe::Object.

References ipe::Object::EText.

Referenced by setTextType(), and Text().

◆ saveAsXml()

void Text::saveAsXml ( Stream stream,
String  layer 
) const
virtual

◆ draw()

void Text::draw ( Painter painter) const
virtual

◆ drawSimple()

void Text::drawSimple ( Painter painter) const
virtual

◆ accept()

void Text::accept ( Visitor visitor) const
virtual

Call visitText of visitor.

Implements ipe::Object.

References ipe::Visitor::visitText().

Referenced by ipe::Latex::scanPage().

◆ addToBBox()

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.

References ipe::Rect::addPoint().

◆ distance()

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.

◆ snapCtl()

void Text::snapCtl ( const Vector mouse,
const Matrix m,
Vector pos,
double &  bound 
) const
virtual

Compute control point snapping position for transformed object.

Looks only for positions closer than bound. If successful, modify pos and bound. The default implementation does nothing.

Reimplemented from ipe::Object.

References ipe::Object::matrix().

◆ checkStyle()

void Text::checkStyle ( const Cascade sheet,
AttributeSeq seq 
) const
virtual

Check symbolic size attribute.

Reimplemented from ipe::Object.

References ipe::Object::checkSymbol(), ipe::EColor, ELabel, ipe::ELabelStyle, ipe::EOpacity, ipe::ETextSize, and ipe::ETextStyle.

◆ setAttribute()

bool Text::setAttribute ( Property  prop,
Attribute  value 
)
virtual

◆ getAttribute()

Attribute Text::getAttribute ( Property  prop) const
virtualnoexcept

◆ align()

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.

References depth(), ipe::EAlignBaseline, ipe::EAlignBottom, ipe::EAlignHCenter, ipe::EAlignLeft, ipe::EAlignRight, ipe::EAlignTop, ipe::EAlignVCenter, horizontalAlignment(), totalHeight(), verticalAlignment(), width(), ipe::Vector::x, and ipe::Vector::y.

Referenced by ipe::CairoPainter::doDrawText(), draw(), drawSimple(), setHorizontalAlignment(), and setVerticalAlignment().

◆ textType()

Text::TextType Text::textType ( ) const

Return type of text object.

References ELabel.

Referenced by setWidth().

◆ position()

Vector ipe::Text::position ( ) const
inline

Return text position.

◆ text()

String ipe::Text::text ( ) const
inline

◆ setStroke()

void Text::setStroke ( Attribute  stroke)

Set stroke color.

References stroke().

Referenced by ipe::Page::applyTitleStyle(), and setAttribute().

◆ setOpacity()

void Text::setOpacity ( Attribute  opaq)

Set opacity of the object.

Referenced by setAttribute().

◆ stroke()

Attribute ipe::Text::stroke ( ) const
inline

Return stroke color.

Referenced by ipe::Latex::createLatexSource(), setAttribute(), and setStroke().

◆ size()

Attribute ipe::Text::size ( ) const
inline

Return font size.

Referenced by ipe::Latex::addPageNumber(), setAttribute(), and setSize().

◆ style()

Attribute ipe::Text::style ( ) const
inline

Return Latex style of text object.

Referenced by ipe::Latex::createLatexSource(), setAttribute(), and setStyle().

◆ opacity()

Attribute ipe::Text::opacity ( ) const
inline

Return opacity of the opject.

Referenced by setAttribute().

◆ isMinipage()

bool ipe::Text::isMinipage ( ) const
inline

Return true if text object is formatted as a minipage.

Equivalent to type being EMinipage.

References EMinipage.

Referenced by ipe::Latex::createLatexSource(), saveAsXml(), setAttribute(), setXForm(), and Text().

◆ setTextType()

void Text::setTextType ( TextType  type)

Change type.

This invalidates (and destroys) the XForm.

References ipe::Attribute::NORMAL(), setXForm(), and type().

◆ horizontalAlignment()

THorizontalAlignment ipe::Text::horizontalAlignment ( ) const
inline

Return horizontal alignment of text object.

Referenced by align(), and setAttribute().

◆ verticalAlignment()

TVerticalAlignment ipe::Text::verticalAlignment ( ) const
inline

Return vertical alignment of text object.

Referenced by align(), and setAttribute().

◆ setHorizontalAlignment()

void Text::setHorizontalAlignment ( THorizontalAlignment  align)

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

References align().

Referenced by ipe::Page::applyTitleStyle().

◆ setVerticalAlignment()

void Text::setVerticalAlignment ( TVerticalAlignment  align)

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

References align().

Referenced by ipe::Page::applyTitleStyle().

◆ makeVAlign()

TVerticalAlignment Text::makeVAlign ( String  str,
TVerticalAlignment  def 
)
static

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

References ipe::EAlignBaseline, ipe::EAlignBottom, ipe::EAlignTop, and ipe::EAlignVCenter.

Referenced by ipe::ImlParser::parseStyle(), and Text().

◆ makeHAlign()

THorizontalAlignment Text::makeHAlign ( String  str,
THorizontalAlignment  def 
)
static

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

References ipe::EAlignHCenter, ipe::EAlignLeft, and ipe::EAlignRight.

Referenced by ipe::ImlParser::parseStyle(), and Text().

◆ saveAlignment()

void Text::saveAlignment ( Stream stream,
THorizontalAlignment  h,
TVerticalAlignment  v 
)
static

◆ width()

double ipe::Text::width ( ) const
inline

◆ height()

double ipe::Text::height ( ) const
inline

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

◆ depth()

double ipe::Text::depth ( ) const
inline

Return depth of text object.

Referenced by align().

◆ totalHeight()

double ipe::Text::totalHeight ( ) const
inline

Return height + depth of text object.

Referenced by align(), ipe::BBoxPainter::doDrawText(), ipe::CairoPainter::doDrawText(), and drawSimple().

◆ setSize()

void Text::setSize ( Attribute  size)

Set font size of text.

This invalidates (and destroys) the XForm.

References setXForm(), and size().

Referenced by ipe::Page::applyTitleStyle(), and setAttribute().

◆ setStyle()

void Text::setStyle ( Attribute  style)

Set Latex style of text.

This invalidates (and destroys) the XForm.

References setXForm(), and style().

Referenced by setAttribute().

◆ setWidth()

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.

References EMinipage, setXForm(), textType(), and width().

Referenced by setAttribute().

◆ setText()

void Text::setText ( String  text)

Sets the text of the text object.

This invalidates (and destroys) the XForm.

References setXForm(), and text().

Referenced by ipe::Page::setTitle().

◆ setXForm()

void Text::setXForm ( XForm xform) const

◆ getXForm()

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.

Referenced by ipe::Latex::createLatexSource(), ipe::PdfPainter::doDrawText(), and ipe::CairoPainter::doDrawText().


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