FTGL  2.1.3~rc5
FTGlyph.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@zoy.org>
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 __FTGlyph__
34 #define __FTGlyph__
35 
36 #ifdef __cplusplus
37 
38 class FTGlyphImpl;
39 
51 {
52  protected:
58  FTGlyph(FT_GlyphSlot glyph);
59 
60  private:
67  FTGlyph(FTGlyphImpl *pImpl);
68 
69  /* Allow our internal subclasses to access the private constructor */
70  friend class FTBitmapGlyph;
71  friend class FTBufferGlyph;
72  friend class FTExtrudeGlyph;
73  friend class FTOutlineGlyph;
74  friend class FTPixmapGlyph;
75  friend class FTPolygonGlyph;
76  friend class FTTextureGlyph;
77 
78  public:
82  virtual ~FTGlyph();
83 
91  virtual const FTPoint& Render(const FTPoint& pen, int renderMode) = 0;
92 
98  virtual float Advance() const;
99 
105  virtual const FTBBox& BBox() const;
106 
112  virtual FT_Error Error() const;
113 
114  private:
118  FTGlyphImpl *impl;
119 };
120 
121 #endif //__cplusplus
122 
124 
132 struct _FTGLGlyph;
133 typedef struct _FTGLglyph FTGLglyph;
134 
146  void (*renderCallback) (FTGLglyph *, void *, FTGL_DOUBLE, FTGL_DOUBLE,
147  int, FTGL_DOUBLE *, FTGL_DOUBLE *),
148  void (*destroyCallback) (FTGLglyph *, void *));
149 
156 
171  FTGL_DOUBLE peny, int renderMode,
172  FTGL_DOUBLE *advancex, FTGL_DOUBLE *advancey);
180 
188 FTGL_EXPORT void ftglGetGlyphBBox(FTGLglyph *glyph, float bounds[6]);
189 
196 FTGL_EXPORT FT_Error ftglGetGlyphError(FTGLglyph* glyph);
197 
199 
200 #endif // __FTGlyph__
201 
virtual const FTBBox & BBox() const
Return the bounding box for this glyph.
FTOutlineGlyph is a specialisation of FTGlyph for creating outlines.
FTPolygonGlyph is a specialisation of FTGlyph for creating tessellated polygon glyphs.
Definition: FTPolyGlyph.h:43
virtual ~FTGlyph()
Destructor.
FT_Error ftglGetGlyphError(FTGLglyph *glyph)
Query a glyph for errors.
FTBitmapGlyph is a specialisation of FTGlyph for creating bitmaps.
Definition: FTBitmapGlyph.h:42
FTBBox is a convenience class for handling bounding boxes.
Definition: FTBBox.h:42
#define FTGL_EXPORT
Definition: ftgl.h:107
void ftglRenderGlyph(FTGLglyph *glyph, FTGL_DOUBLE penx, FTGL_DOUBLE peny, int renderMode, FTGL_DOUBLE *advancex, FTGL_DOUBLE *advancey)
Render a glyph at the current pen position and compute the corresponding advance. ...
void ftglGetGlyphBBox(FTGLglyph *glyph, float bounds[6])
Return the bounding box for a glyph.
FTBufferGlyph is a specialisation of FTGlyph for memory buffer rendering.
Definition: FTBufferGlyph.h:40
void ftglDestroyGlyph(FTGLglyph *glyph)
Destroy an FTGL glyph object.
virtual float Advance() const
Return the advance width for this glyph.
FTPoint class is a basic 3-dimensional point or vector.
Definition: FTPoint.h:42
float ftglGetGlyphAdvance(FTGLglyph *glyph)
Return the advance for a glyph.
FTExtrudeGlyph is a specialisation of FTGlyph for creating tessellated extruded polygon glyphs...
Definition: FTExtrdGlyph.h:43
double FTGL_DOUBLE
Definition: ftgl.h:38
#define FTGL_END_C_DECLS
Definition: ftgl.h:44
#define FTGL_BEGIN_C_DECLS
Definition: ftgl.h:43
virtual FT_Error Error() const
Queries for errors.
struct _FTGLglyph FTGLglyph
Definition: FTGlyph.h:133
FTGLglyph * ftglCreateCustomGlyph(FTGLglyph *base, void *data, void(*renderCallback)(FTGLglyph *, void *, FTGL_DOUBLE, FTGL_DOUBLE, int, FTGL_DOUBLE *, FTGL_DOUBLE *), void(*destroyCallback)(FTGLglyph *, void *))
Create a custom FTGL glyph object.
FTPixmapGlyph is a specialisation of FTGlyph for creating pixmaps.
Definition: FTPixmapGlyph.h:42
virtual const FTPoint & Render(const FTPoint &pen, int renderMode)
Render this glyph at the current pen position.
FTTextureGlyph is a specialisation of FTGlyph for creating texture glyphs.
FTGlyph is the base class for FTGL glyphs.
Definition: FTGlyph.h:50