# ipe::Reference Class Reference
[Ipe Objects]

The reference object. More...

`#include <ipereference.h>`

Inherits ipe::Object.

List of all members.

## Public Types

- enum {
  EHasStroke = 0x001, EHasFill = 0x002, EHasPen = 0x004, EHasSize = 0x008,
  EIsMark = 0x010, EIsArrow = 0x020
  }

## Public Member Functions

- Reference (const AllAttributes &attr, Attribute name, Vector pos)
- Reference (const XmlAttributes &attr, String data)
- virtual Object * clone () const
- virtual Reference * asReference ()
- virtual Type type () const
- virtual void accept (Visitor &visitor) const
- virtual void saveAsXml (Stream &stream, String layer) const
- virtual void draw (Painter &painter) const
- virtual void drawSimple (Painter &painter) const
- virtual void addToBBox (Rect &box, const Matrix &m, bool cp) 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 snapBnd (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const
- virtual void checkStyle (const Cascade *sheet, AttributeSeq &seq) const
- void setName (Attribute name)
- Attribute name () const
- void setStroke (Attribute color)
- Attribute stroke () const
- void setFill (Attribute color)
- Attribute fill () const
- Attribute pen () const
- void setPen (Attribute pen)
- void setSize (Attribute size)
- Attribute size () const
- Vector position () const
- virtual bool setAttribute (Property prop, Attribute value, Attribute stroke, Attribute fill)
- virtual Attribute getAttribute (Property prop)
- uint flags () const

## Static Public Member Functions

- static uint flagsFromName (String name)

## Detailed Description

The reference object.

A Reference uses a symbol, that is, an object defined in an Ipe StyleSheet. The object is defined as a named symbol in the style sheet, and can be reused arbitrarily often in the document. This can, for instance, be used for backgrounds on multi-page documents.

It is admissible to refer to an undefined object (that is, the current style sheet cascade does not define a symbol with the given name). Nothing will be drawn in this case.

The Reference has a stroke, fill, and pen attribute. When drawing a symbol, these attributes are made available to the symbol through the names "sym-stroke", "sym-fill", and "sym-pen". These are not defined by the style sheet, but resolved by the Painter when the symbol sets its attributes.

Note that it is not possible to determine whether a symbol is filled from the Reference object.

The size attribute is of type ESymbolSize, and indicates a magnification factor applied to the symbol. This magnification is applied after the untransformation indicated in the Reference and in the Symbol has been performed, so that symbols are magnified even if they specify ETransformationsTranslations.

The size is meant for symbols such as marks, that can be shown in different sizes. Another application of symbols is for backgrounds and logos. Their size should not be changed when the user changes the symbolsize for the entire page. For such symbols, the size attribute of the Reference should be set to the absolute value zero. This means that no magnification is applied to the object, and it also stops setAttribute() from modifying the size. (The size can still be changed using setSize(), but this is not available from Lua.)

## Member Enumeration Documentation

anonymous enum

Enumerator:

  EHasStroke |
  EHasFill |
  EHasPen |
  EHasSize |
  EIsMark |
  EIsArrow |

## Constructor & Destructor Documentation

Reference::Reference | ( | const AllAttributes & | attr,
|  | Attribute | name,
|  | Vector | pos |
| ) |  |  | `[explicit]`

Create a reference to the named object in stylesheet.

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

Create from XML stream.

## Member Function Documentation

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

Clone object.

Implements ipe::Object.

Reference * Reference::asReference | ( |  | ) | `[virtual]`

Return pointer to this object.

Reimplemented from ipe::Object.

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

Implements ipe::Object.

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

Call visitReference of visitor.

Implements ipe::Object.

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

Save in XML format.

Implements ipe::Object.

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

Draw reference.

If the symbolic attribute is not defined in the current style sheet, nothing is drawn at all.

Implements ipe::Object.

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

Draw simple version for selecting and transforming.

Implements ipe::Object.

void Reference::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).

This only adds the position to the box.

Implements ipe::Object.

double Reference::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 Reference::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 Reference::snapBnd | ( | const Vector & | mouse,
|  | const Matrix & | m,
|  | Vector & | pos,
|  | double & | bound |
| ) |  |  | const`[virtual]`

Compute boundary 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.

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

Check all symbolic attributes.

Reimplemented from ipe::Object.

void Reference::setName | ( | Attribute | name | ) |

Set name of symbol referenced.

Attribute ipe::Reference::name | ( |  | ) | const`[inline]`

Return symbolic name.

void Reference::setStroke | ( | Attribute | color | ) |

Set stroke color.

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

Return stroke color.

void Reference::setFill | ( | Attribute | color | ) |

Set fill color.

Attribute ipe::Reference::fill | ( |  | ) | const`[inline]`

Return fill color.

Attribute ipe::Reference::pen | ( |  | ) | const`[inline]`

Return pen.

void Reference::setPen | ( | Attribute | pen | ) |

Set pen.

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

Set size (magnification) of symbol.

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

Return symbol size.

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

Return position of symbol on page.

bool Reference::setAttribute | ( | Property | prop,
|  | Attribute | value,
|  | Attribute | nStroke,
|  | Attribute | nFill |
| ) |  |  | `[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 Reference::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.

uint ipe::Reference::flags | ( |  | ) | const`[inline]`

uint Reference::flagsFromName | ( | String | name | ) | `[static]`

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

- ipereference.h
- ipereference.cpp