FTGL  2.4.0
FTFont.h
Go to the documentation of this file.
1 /*
2  * FTGL - OpenGL font library
3  *
4  * Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
5  * Copyright (c) 2008 Sam Hocevar <sam@hocevar.net>
6  * Copyright (c) 2008 Sean Morrison <learner@brlcad.org>
7  *
8  * Permission is hereby granted, free of charge, to any person obtaining
9  * a copy of this software and associated documentation files (the
10  * "Software"), to deal in the Software without restriction, including
11  * without limitation the rights to use, copy, modify, merge, publish,
12  * distribute, sublicense, and/or sell copies of the Software, and to
13  * permit persons to whom the Software is furnished to do so, subject to
14  * the following conditions:
15  *
16  * The above copyright notice and this permission notice shall be
17  * included in all copies or substantial portions of the Software.
18  *
19  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
20  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
22  * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
23  * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
24  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
25  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26  */
27 
28 #ifndef __ftgl__
29 # warning This header is deprecated. Please use <FTGL/ftgl.h> from now.
30 # include <FTGL/ftgl.h>
31 #endif
32 
33 #ifndef __FTFont__
34 #define __FTFont__
35 
36 #ifdef __cplusplus
37 
38 class FTFontImpl;
39 
57 {
58  protected:
64  FTFont(char const *fontFilePath);
65 
74  FTFont(const unsigned char *pBufferBytes, size_t bufferSizeInBytes);
75 
76  private:
77  /* Allow our internal subclasses to access the private constructor */
78  friend class FTBitmapFont;
79  friend class FTBufferFont;
80  friend class FTExtrudeFont;
81  friend class FTOutlineFont;
82  friend class FTPixmapFont;
83  friend class FTPolygonFont;
84  friend class FTTextureFont;
86 
93  FTFont(FTFontImpl *pImpl);
94 
95  public:
96  virtual ~FTFont();
97 
107  virtual bool Attach(const char* fontFilePath);
108 
119  virtual bool Attach(const unsigned char *pBufferBytes,
120  size_t bufferSizeInBytes);
121 
129  virtual void GlyphLoadFlags(FT_Int flags);
130 
138  virtual bool CharMap(FT_Encoding encoding);
139 
145  virtual unsigned int CharMapCount() const;
146 
152  virtual FT_Encoding* CharMapList();
153 
161  virtual bool FaceSize(const unsigned int size,
162  const unsigned int res = 72);
163 
169  virtual unsigned int FaceSize() const;
170 
177  virtual void Depth(float depth);
178 
185  virtual void Outset(float outset);
186 
194  virtual void Outset(float front, float back);
195 
202  virtual void UseDisplayList(bool useList);
203 
209  virtual float Ascender() const;
210 
216  virtual float Descender() const;
217 
223  virtual float LineHeight() const;
224 
237  virtual FTBBox BBox(const char *string, const int len = -1,
238  FTPoint position = FTPoint(),
239  FTPoint spacing = FTPoint());
240 
252  void BBox(const char* string, float& llx, float& lly, float& llz,
253  float& urx, float& ury, float& urz)
254  {
255  FTBBox b = BBox(string);
256  llx = b.Lower().Xf(); lly = b.Lower().Yf(); llz = b.Lower().Zf();
257  urx = b.Upper().Xf(); ury = b.Upper().Yf(); urz = b.Upper().Zf();
258  }
259 
272  virtual FTBBox BBox(const wchar_t *string, const int len = -1,
273  FTPoint position = FTPoint(),
274  FTPoint spacing = FTPoint());
275 
287  void BBox(const wchar_t* string, float& llx, float& lly, float& llz,
288  float& urx, float& ury, float& urz)
289  {
290  FTBBox b = BBox(string);
291  llx = b.Lower().Xf(); lly = b.Lower().Yf(); llz = b.Lower().Zf();
292  urx = b.Upper().Xf(); ury = b.Upper().Yf(); urz = b.Upper().Zf();
293  }
294 
306  virtual float Advance(const char* string, const int len = -1,
307  FTPoint spacing = FTPoint());
308 
320  virtual float Advance(const wchar_t* string, const int len = -1,
321  FTPoint spacing = FTPoint());
322 
343  virtual FTPoint Render(const char* string, const int len = -1,
344  FTPoint position = FTPoint(),
345  FTPoint spacing = FTPoint(),
346  int renderMode = FTGL::RENDER_ALL);
347 
368  virtual FTPoint Render(const wchar_t *string, const int len = -1,
369  FTPoint position = FTPoint(),
370  FTPoint spacing = FTPoint(),
371  int renderMode = FTGL::RENDER_ALL);
372 
378  virtual FT_Error Error() const;
379 
380  protected:
381  /* Allow impl to access MakeGlyph */
382  friend class FTFontImpl;
383 
393  virtual FTGlyph* MakeGlyph(FT_GlyphSlot slot) = 0;
394 
395  private:
399  FTFontImpl *impl;
400 };
401 
402 #endif //__cplusplus
403 
405 
413 struct _FTGLFont;
414 typedef struct _FTGLfont FTGLfont;
415 
424 FTGL_EXPORT FTGLfont *ftglCreateCustomFont(char const *fontFilePath,
425  void *data,
426  FTGLglyph * (*makeglyphCallback) (FT_GlyphSlot, void *));
427 
437 FTGL_EXPORT FTGLfont *ftglCreateCustomFontFromMem(const unsigned char *bytes,
438  size_t len, void *data,
439  FTGLglyph * (*makeglyphCallback) (FT_GlyphSlot, void *));
440 
447 
457 FTGL_EXPORT int ftglAttachFile(FTGLfont* font, const char* path);
458 
469 FTGL_EXPORT int ftglAttachData(FTGLfont* font, const unsigned char * data,
470  size_t size);
471 
480 FTGL_EXPORT void ftglSetFontGlyphLoadFlags(FTGLfont* font, FT_Int flags);
481 
489 FTGL_EXPORT int ftglSetFontCharMap(FTGLfont* font, FT_Encoding encoding);
490 
497 FTGL_EXPORT unsigned int ftglGetFontCharMapCount(FTGLfont* font);
498 
505 FTGL_EXPORT FT_Encoding* ftglGetFontCharMapList(FTGLfont* font);
506 
516 FTGL_EXPORT int ftglSetFontFaceSize(FTGLfont* font, unsigned int size,
517  unsigned int res);
518 
525 FTGL_EXPORT unsigned int ftglGetFontFaceSize(FTGLfont* font);
526 
534 FTGL_EXPORT void ftglSetFontDepth(FTGLfont* font, float depth);
535 
545 FTGL_EXPORT void ftglSetFontOutset(FTGLfont* font, float front, float back);
546 
554 FTGL_EXPORT void ftglSetFontDisplayList(FTGLfont* font, int useList);
555 
563 
571 
579 
590 FTGL_EXPORT void ftglGetFontBBox(FTGLfont* font, const char *string,
591  int len, float bounds[6]);
592 
600 FTGL_EXPORT float ftglGetFontAdvance(FTGLfont* font, const char *string);
601 
609 FTGL_EXPORT void ftglRenderFont(FTGLfont* font, const char *string, int mode);
610 
617 FTGL_EXPORT FT_Error ftglGetFontError(FTGLfont* font);
618 
620 
621 #endif // __FTFont__
622 
virtual void Depth(float depth)
Set the extrusion distance for the font.
FTGLfont * ftglCreateCustomFont(char const *fontFilePath, void *data, FTGLglyph *(*makeglyphCallback)(FT_GlyphSlot, void *))
Create a custom FTGL font object.
float ftglGetFontLineHeight(FTGLfont *font)
Gets the line spacing for the font.
void ftglSetFontDisplayList(FTGLfont *font, int useList)
Enable or disable the use of Display Lists inside FTGL.
int ftglAttachFile(FTGLfont *font, const char *path)
Attach auxilliary file to font e.g.
FT_Encoding * ftglGetFontCharMapList(FTGLfont *font)
Get a list of character maps in this face.
FTPolygonFont is a specialisation of the FTFont class for handling tesselated Polygon Mesh fonts...
FTGL_FLOAT Yf() const
Definition: FTPoint.h:261
FTGLfont * ftglCreateCustomFontFromMem(const unsigned char *bytes, size_t len, void *data, FTGLglyph *(*makeglyphCallback)(FT_GlyphSlot, void *))
Create a custom FTGL font object from a buffer in memory.
FTFont(char const *fontFilePath)
Open and read a font file.
FTExtrudeFont is a specialisation of the FTFont class for handling extruded Polygon fonts...
Definition: FTGLExtrdFont.h:46
void ftglSetFontOutset(FTGLfont *font, float front, float back)
Set the outset distance for the font.
virtual float Ascender() const
Get the global ascender height for the face.
void BBox(const char *string, float &llx, float &lly, float &llz, float &urx, float &ury, float &urz)
Get the bounding box for a string (deprecated).
Definition: FTFont.h:252
virtual FT_Encoding * CharMapList()
Get a list of character maps in this face.
struct _FTGLfont FTGLfont
Definition: FTFont.h:414
void ftglRenderFont(FTGLfont *font, const char *string, int mode)
Render a string of characters.
virtual float Advance(const char *string, const int len=-1, FTPoint spacing=FTPoint())
Get the advance for a string.
virtual float Descender() const
Gets the global descender height for the face.
FTPixmapFont is a specialisation of the FTFont class for handling Pixmap (Grey Scale) fonts...
FTBBox is a convenience class for handling bounding boxes.
Definition: FTBBox.h:42
virtual unsigned int FaceSize() const
Get the current face size in points (1/72 inch).
void ftglDestroyFont(FTGLfont *font)
Destroy an FTGL font object.
#define FTGL_EXPORT
Definition: ftgl.h:134
void ftglSetFontDepth(FTGLfont *font, float depth)
Set the extrusion distance for the font.
virtual unsigned int CharMapCount() const
Get the number of character maps in this face.
virtual float LineHeight() const
Gets the line spacing for the font.
friend class FTFontImpl
Definition: FTFont.h:382
FTTextureFont is a specialisation of the FTFont class for handling Texture mapped fonts...
virtual void Outset(float outset)
Set the outset distance for the font.
FTPoint class is a basic 3-dimensional point or vector.
Definition: FTPoint.h:42
int ftglSetFontCharMap(FTGLfont *font, FT_Encoding encoding)
Set the character map for the face.
float ftglGetFontAscender(FTGLfont *font)
Get the global ascender height for the face.
FTOutlineFont is a specialisation of the FTFont class for handling Vector Outline fonts...
float ftglGetFontAdvance(FTGLfont *font, const char *string)
Get the advance width for a string.
virtual FTPoint Render(const char *string, const int len=-1, FTPoint position=FTPoint(), FTPoint spacing=FTPoint(), int renderMode=FTGL::RENDER_ALL)
Render a string of characters.
unsigned int ftglGetFontCharMapCount(FTGLfont *font)
Get the number of character maps in this face.
int ftglAttachData(FTGLfont *font, const unsigned char *data, size_t size)
Attach auxilliary data to font, e.g.
FT_Error ftglGetFontError(FTGLfont *font)
Query a font for errors.
float ftglGetFontDescender(FTGLfont *font)
Gets the global descender height for the face.
virtual void UseDisplayList(bool useList)
Enable or disable the use of Display Lists inside FTGL.
void ftglGetFontBBox(FTGLfont *font, const char *string, int len, float bounds[6])
Get the bounding box for a string.
FTBufferFont is a specialisation of the FTFont class for handling memory buffer fonts.
Definition: FTBufferFont.h:43
#define FTGL_END_C_DECLS
Definition: ftgl.h:44
int ftglSetFontFaceSize(FTGLfont *font, unsigned int size, unsigned int res)
Set the char size for the current face.
virtual bool CharMap(FT_Encoding encoding)
Set the character map for the face.
virtual FTBBox BBox(const char *string, const int len=-1, FTPoint position=FTPoint(), FTPoint spacing=FTPoint())
Get the bounding box for a string.
unsigned int ftglGetFontFaceSize(FTGLfont *font)
Get the current face size in points (1/72 inch).
#define FTGL_BEGIN_C_DECLS
Definition: ftgl.h:43
virtual FT_Error Error() const
Queries the Font for errors.
FTPolygonFont is a specialisation of the FTFont class for handling tesselated Polygon Mesh fonts...
virtual void GlyphLoadFlags(FT_Int flags)
Set the glyph loading flags.
void ftglSetFontGlyphLoadFlags(FTGLfont *font, FT_Int flags)
Set the glyph loading flags.
FTFont is the public interface for the FTGL library.
Definition: FTFont.h:56
virtual ~FTFont()
virtual bool Attach(const char *fontFilePath)
Attach auxilliary file to font e.g font metrics.
struct _FTGLglyph FTGLglyph
Definition: FTGlyph.h:134
FTPoint const Lower() const
Definition: FTBBox.h:165
FTPoint const Upper() const
Definition: FTBBox.h:159
FTBitmapFont is a specialisation of the FTFont class for handling Bitmap fonts.
FTGL_FLOAT Xf() const
Definition: FTPoint.h:260
FTGlyph is the base class for FTGL glyphs.
Definition: FTGlyph.h:50
void BBox(const wchar_t *string, float &llx, float &lly, float &llz, float &urx, float &ury, float &urz)
Get the bounding box for a string (deprecated).
Definition: FTFont.h:287
FTGL_FLOAT Zf() const
Definition: FTPoint.h:262