13 #include <pango/pango.h> 17 class FreetypeGlyphMgr;
28 #if defined ( __VISUALC__ ) || defined ( _MSC_VER ) || defined ( __BORLANDC__ ) || defined ( __GNUC__ ) || defined ( __WATCOMC__ ) 29 #define LASIDLLEXPORT __declspec( dllexport ) 30 #define LASIDLLIMPORT __declspec( dllimport ) 35 #elif defined ( __CYGWIN__ ) 36 #define LASIDLLEXPORT __declspec( dllexport ) 37 #define LASIDLLIMPORT __declspec( dllimport ) 38 #elif defined ( __GNUC__ ) && __GNUC__ > 3 42 #define LASIDLLEXPORT __attribute__ ( ( visibility( "default" ) ) ) 52 #if defined(LASi_EXPORTS) 53 #define LASIDLLIMPEXP LASIDLLEXPORT 54 #define LASIDLLIMPEXP_DATA(type) LASIDLLEXPORT type 55 #elif defined(LASi_DLL) 56 #define LASIDLLIMPEXP LASIDLLIMPORT 57 #define LASIDLLIMPEXP_DATA(type) LASIDLLIMPORT type 60 #define LASIDLLIMPEXP_DATA(type) type 98 class write_glyph_routine_to_stream;
121 static_cast<std::ostream&
>(os) << t;
142 const char*
const family =
"sans",
175 void write(std::ostream& os,
double llx=0,
double lly=0,
double urx=0,
double ury=0);
183 void get_dimensions(
const char* s,
double *lineSpacing,
double *xAdvance=NULL,
double *yMin=NULL,
double *yMax=NULL);
184 void get_dimensions(std::string s,
double *lineSpacing,
double *xAdvance=NULL,
double *yMin=NULL,
double *yMax=NULL);
194 return id1._str == id2._str;
198 return id1._str < id2._str;
202 GlyphId(FT_Face,
const FT_UInt, uint32_t unichar);
205 std::string
str()
const {
return _str;}
214 typedef std::map<GlyphId, FreetypeGlyphMgr>
GlyphMap;
221 const GlyphMap::value_type&,
void* contextData);
223 void invoke_glyph_routine(
const GlyphMap::value_type&,
void* contextData);
225 void accrue_dimensions(
const GlyphMap::value_type&,
void* contextData);
231 FT_Error PangoItem_do(
const char* s, PangoItem*
const pItem,
232 const GLYPH_FUNC func,
void* contextData,
233 bool applyOffset =
false);
237 void for_each_glyph_do(
const std::string& s,
const GLYPH_FUNC func,
void* contextData,
238 bool applyOffset =
false);
240 PangoContext* pangoContext()
const;
244 std::string glyphProcName()
const;
255 PangoContext* pangoCtx;
259 : os(os), pangoCtx(pangoCtx) {}
260 void operator()(PostscriptDocument::GlyphMap::value_type v);
266 static const unsigned int DRAWING_SCALE;
270 ContextMgr* _pContextMgr;
272 std::ostringstream _osHeader;
292 const char*
const family =
"sans",
297 : _family(family), _style(style), _weight(weight), _variant(variant), _stretch(stretch)
302 os.
doc().
setFont(_family, _style,_weight, _variant, _stretch);
306 const char*
const _family;
354 show(
const char* c_str ) : _str(c_str ) {}
355 show(std::string stl_str ) : _str(stl_str) {}
friend oPostscriptStream & operator<<(oPostscriptStream &os, const setFontSize &x)
Stream inserter for 'setFontSize' stream manipulator.
Definition: LASi.h:320
friend oPostscriptStream & operator<<(oPostscriptStream &os, const show &x)
stream inserter for 'show' stream applicator
Definition: LASi.h:346
FontWeight
Definition: LASi.h:71
stream applicator applied to oPostscriptStream.
Definition: LASi.h:342
friend bool operator==(const GlyphId id1, const GlyphId id2)
Definition: LASi.h:193
double getFontSize()
Definition: LASi.h:248
stream manipulator applied to oPostscriptStream.
Definition: LASi.h:279
std::string str() const
Definition: LASi.h:205
friend bool operator<(const GlyphId id1, const GlyphId id2)
Definition: LASi.h:197
stream manipulator applied to oPostscriptStream.
Definition: LASi.h:316
Just like any ordinary ostringstream, but maintains a reference to the PostscriptDocument.
Definition: LASi.h:103
void apply(oPostscriptStream &os) const
Definition: LASi.h:301
oPostscriptStream(PostscriptDocument &psDoc)
Definition: LASi.h:110
FontStretch
Definition: LASi.h:85
For internal use only.
Definition: LASi.h:252
show(const char *c_str)
Usage: os << show("some UTF-8 text") << ...
Definition: LASi.h:354
GlyphId()
Definition: LASi.h:201
setFont(const char *const family="sans", const LASi::FontStyle style=LASi::NORMAL_STYLE, const LASi::FontWeight weight=LASi::NORMAL_WEIGHT, const LASi::FontVariant variant=LASi::NORMAL_VARIANT, const LASi::FontStretch stretch=LASi::NORMAL_STRETCH)
Usage: os << setFont("Vera Sans",LASi::ITALIC,LASi::BOLD) << ...
Definition: LASi.h:291
void apply(oPostscriptStream &os) const
Definition: LASi.h:332
#define LASIDLLIMPEXP
Definition: LASi.h:59
oPostscriptStream & osBody()
Returns stream for Postscript body.
Definition: LASi.h:160
PostscriptDocument & doc()
Definition: LASi.h:113
FontStyle
Definition: LASi.h:65
void setFontSize(const double size)
Sets the font size, in points, that all subsequent text written to bodyStream() or footerStream() wil...
Definition: LASi.h:152
Composes Postscript document as three separate and independant streams for header, body and footer.
Definition: LASi.h:130
For internal use only.
Definition: LASi.h:191
FontVariant
Definition: LASi.h:80
void apply(oPostscriptStream &os) const
oPostscriptStream & operator<<(oPostscriptStream &os, T t)
Definition: LASi.h:120
std::ostringstream & osHeader()
Returns stream for Postscript header.
Definition: LASi.h:156
friend oPostscriptStream & operator<<(oPostscriptStream &os, const setFont &x)
Stream inserter for 'setFont' stream manipulator.
Definition: LASi.h:283
show(std::string stl_str)
Definition: LASi.h:355
std::map< GlyphId, FreetypeGlyphMgr > GlyphMap
Maps glyph routine name to FT_Glyph instance.
Definition: LASi.h:214
setFontSize(double size)
Usage: os << setFontSize(12) << ...
Definition: LASi.h:329
oPostscriptStream & osFooter()
Returns stream for Postscript footer.
Definition: LASi.h:164
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 wit...
write_glyph_routine_to_stream(std::ostream &os, PangoContext *pangoCtx)
Definition: LASi.h:258