LASi: LASi::PostscriptDocument Class Reference

LASi

Classes | Public Member Functions | Protected Types | Protected Member Functions | Friends | List of all members
LASi::PostscriptDocument Class Reference

Composes Postscript document as three separate and independant streams for header, body and footer. More...

`#include <LASi.h>`

## Classes
class | GlyphId
| For internal use only. More...
class | write_glyph_routine_to_stream
| For internal use only. More...

## Public Member Functions
| PostscriptDocument ()
| ~PostscriptDocument ()
void | setFont (const char *const family="sans", LASi::FontStyle=LASi::NORMAL_STYLE, LASi::FontWeight=LASi::NORMAL_WEIGHT, LASi::FontVariant=LASi::NORMAL_VARIANT, LASi::FontStretch=LASi::NORMAL_STRETCH)
| Sets the font that all subsequent text written to bodyStream() or footerStream() will be rendered with. More...
void | setFontSize (const double size)
| Sets the font size, in points, that all subsequent text written to bodyStream() or footerStream() will be rendered with. More...
std::ostringstream & | osHeader ()
| Returns stream for Postscript header. More...
oPostscriptStream & | osBody ()
| Returns stream for Postscript body. More...
oPostscriptStream & | osFooter ()
| Returns stream for Postscript footer. More...
void | write (std::ostream &os, double llx=0, double lly=0, double urx=0, double ury=0)
| Closes all streams and writes completed Postscript document to os. More...
void | get_dimensions (const char *s, double *lineSpacing, double *xAdvance=NULL, double *yMin=NULL, double *yMax=NULL)
| Return string dimensions: lineSpacing: inter-line spacing xAdvance: width of the string yMin: y-coordinate bounding the lowest descender, Indic under-consonantal vowel, etc. More...
void | get_dimensions (std::string s, double *lineSpacing, double *xAdvance=NULL, double *yMin=NULL, double *yMax=NULL)

## Protected Types
typedef std::map< GlyphId, FreetypeGlyphMgr > | GlyphMap
| Maps glyph routine name to FT_Glyph instance. More...
typedef void(PostscriptDocument::* | GLYPH_FUNC) (const GlyphMap::value_type &, void *contextData)
| Pointer to a function that takes a reference to a glyph and to x and y coordinates. More...

## Protected Member Functions
void | invoke_glyph_routine (const GlyphMap::value_type &, void *contextData)
void | accrue_dimensions (const GlyphMap::value_type &, void *contextData)
FT_Error | PangoItem_do (const char *s, PangoItem *const pItem, const GLYPH_FUNC func, void *contextData, bool applyOffset=false)
| For a decomposed PangoItem (that can be rendered with a single font face) that is generated by for_each_glyph_do, apply GLYPH_FUNC to each glyph in that PangoItem. More...
void | for_each_glyph_do (const std::string &s, const GLYPH_FUNC func, void *contextData, bool applyOffset=false)
| Decomposes string into glyphs and applies GLYPH_FUNC to each glyph. More...
PangoContext * | pangoContext () const
std::string | glyphProcName () const
double | getFontSize ()

## Friends
class | write_glyph_routine_to_stream
class | show

## Detailed Description

Composes Postscript document as three separate and independant streams for header, body and footer.

Body and footer streams respond to LASi::show applicator which generates Postscript commands to display a string by using glyph routines instead of a Postscript font.

## Member Typedef Documentation

## ◆ GLYPH_FUNC

typedef void(PostscriptDocument::* LASi::PostscriptDocument::GLYPH_FUNC) (const GlyphMap::value_type &, void *contextData)
| protected

Pointer to a function that takes a reference to a glyph and to x and y coordinates.

May return new x and y coordinates.

## ◆ GlyphMap

typedef std::map<GlyphId, FreetypeGlyphMgr> LASi::PostscriptDocument::GlyphMap
| protected

Maps glyph routine name to FT_Glyph instance.

## Constructor & Destructor Documentation

## ◆ PostscriptDocument()

LASi::PostscriptDocument::PostscriptDocument | ( |  | ) |

## ◆ ~PostscriptDocument()

LASi::PostscriptDocument::~PostscriptDocument | ( |  | ) |

## Member Function Documentation

## ◆ accrue_dimensions()

void LASi::PostscriptDocument::accrue_dimensions | ( | const GlyphMap::value_type & | ,
|  | void * | contextData
| ) |  |
| protected

## ◆ for_each_glyph_do()

void LASi::PostscriptDocument::for_each_glyph_do | ( | const std::string & | s,
|  | const GLYPH_FUNC | func,
|  | void * | contextData,
|  | bool | applyOffset = `false`
| ) |  |
| protected

Decomposes string into glyphs and applies GLYPH_FUNC to each glyph.

## ◆ get_dimensions() [1/2]

void LASi::PostscriptDocument::get_dimensions | ( | const char * | s,
|  | double * | lineSpacing,
|  | double * | xAdvance = `NULL`,
|  | double * | yMin = `NULL`,
|  | double * | yMax = `NULL`
| ) |  |

Return string dimensions: lineSpacing: inter-line spacing xAdvance: width of the string yMin: y-coordinate bounding the lowest descender, Indic under-consonantal vowel, etc.

yMax: y-coordinate bounding the highest ascender, diacritic, Indic over-letter vowel, etc.

## ◆ get_dimensions() [2/2]

void LASi::PostscriptDocument::get_dimensions | ( | std::string | s,
|  | double * | lineSpacing,
|  | double * | xAdvance = `NULL`,
|  | double * | yMin = `NULL`,
|  | double * | yMax = `NULL`
| ) |  |

## ◆ getFontSize()

double LASi::PostscriptDocument::getFontSize | ( |  | ) |
| inlineprotected

Returns
  font size in points (1/72 in.)

## ◆ glyphProcName()

std::string LASi::PostscriptDocument::glyphProcName | ( |  | ) | const
| protected

Returns
  name of Postscript glyph routine

## ◆ invoke_glyph_routine()

void LASi::PostscriptDocument::invoke_glyph_routine | ( | const GlyphMap::value_type & | ,
|  | void * | contextData
| ) |  |
| protected

## ◆ osBody()

oPostscriptStream& LASi::PostscriptDocument::osBody | ( |  | ) |
| inline

Returns stream for Postscript body.

## ◆ osFooter()

oPostscriptStream& LASi::PostscriptDocument::osFooter | ( |  | ) |
| inline

Returns stream for Postscript footer.

## ◆ osHeader()

std::ostringstream& LASi::PostscriptDocument::osHeader | ( |  | ) |
| inline

Returns stream for Postscript header.

## ◆ pangoContext()

PangoContext* LASi::PostscriptDocument::pangoContext | ( |  | ) | const
| protected

## ◆ PangoItem_do()

FT_Error LASi::PostscriptDocument::PangoItem_do | ( | const char * | s,
|  | PangoItem *const | pItem,
|  | const GLYPH_FUNC | func,
|  | void * | contextData,
|  | bool | applyOffset = `false`
| ) |  |
| protected

For a decomposed PangoItem (that can be rendered with a single font face) that is generated by for_each_glyph_do, apply GLYPH_FUNC to each glyph in that PangoItem.

## ◆ setFont()

void LASi::PostscriptDocument::setFont | ( | const char *const | family = `"sans"`,
|  | LASi::FontStyle | = `LASi::NORMAL_STYLE`,
|  | LASi::FontWeight | = `LASi::NORMAL_WEIGHT`,
|  | LASi::FontVariant | = `LASi::NORMAL_VARIANT`,
|  | LASi::FontStretch | = `LASi::NORMAL_STRETCH`
| ) |  |

Sets the font that all subsequent text written to bodyStream() or footerStream() will be rendered with.

Referenced by LASi::setFont::apply().

## ◆ setFontSize()

void LASi::PostscriptDocument::setFontSize | ( | const double | size | ) |
| inline

Sets the font size, in points, that all subsequent text written to bodyStream() or footerStream() will be rendered with.

Referenced by LASi::setFontSize::apply().

## ◆ write()

void LASi::PostscriptDocument::write | ( | std::ostream & | os,
|  | double | llx = `0`,
|  | double | lly = `0`,
|  | double | urx = `0`,
|  | double | ury = `0`
| ) |  |

Closes all streams and writes completed Postscript document to os.

Header will include glyph routines for all text glyphs in body and footer.

2006.05.01.ET Addendum: To create an EPS document, just include the the four BoundingBox coordinates llx, lly, urx, ury (dimensions in points). These are optional parameters – When not included, you'll get a regular PS document. When included, you'll get an EPS document.

## Friends And Related Function Documentation

## ◆ show

friend class show
| friend

## ◆ write_glyph_routine_to_stream

friend class write_glyph_routine_to_stream
| friend

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

- LASi.h