Logo ROOT   6.10/00
Reference Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
TTF.h
Go to the documentation of this file.
1 // @(#)root/graf:$Id$
2 // Author: Olivier Couet 01/10/02
3 // Author: Fons Rademakers 21/11/98
4 
5 /*************************************************************************
6  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
7  * All rights reserved. *
8  * *
9  * For the licensing terms see $ROOTSYS/LICENSE. *
10  * For the list of contributors see $ROOTSYS/README/CREDITS. *
11  *************************************************************************/
12 
13 #ifndef ROOT_TTF
14 #define ROOT_TTF
15 
16 
17 #include "Rtypes.h"
18 
19 /// @cond DOXYGEN_IGNORE
20 // Forward declare for the headers:
21 // # include <ft2build.h>
22 // # include FT_FREETYPE_H
23 // # include FT_GLYPH_H
24 extern "C" {
25  struct FT_LibraryRec_;
26  struct FT_FaceRec_;
27  struct FT_CharMapRec_;
28  struct FT_GlyphRec_;
29  struct FT_Matrix_;
30  struct FT_Bitmap_;
31  typedef struct FT_LibraryRec_* FT_Library;
32  typedef struct FT_FaceRec_* FT_Face;
33  typedef struct FT_CharMapRec_* FT_CharMap;
34  typedef struct FT_GlyphRec_* FT_Glyph;
35  typedef struct FT_Matrix_ FT_Matrix;
36  typedef struct FT_Bitmap_ FT_Bitmap; // Forward declared for TGX11TTF.h's benefit
37  typedef signed long FT_Pos;
38  #ifndef FT_FREETYPE_H
39  struct FT_Vector_ { FT_Pos x, y; };
40  struct FT_BBox_ { FT_Pos xMin, yMin, xMax, yMax; };
41  #endif
42  typedef struct FT_Vector_ FT_Vector;
43  typedef struct FT_BBox_ FT_BBox;
44 }
45 /// @endcond
46 
47 
48 class TGX11TTF;
49 class TGWin32;
50 class TMathTextRenderer;
51 
52 
53 class TTF {
54 
55 friend class TGX11TTF;
56 friend class TGWin32;
57 friend class TMathTextRenderer;
58 
59 public:
60 
61 /** \class TTGlyph
62 TTF helper class containing glyphs description.
63 */
64 
65  class TTGlyph {
66  public:
67  UInt_t fIndex; ///< glyph index in face
68  FT_Vector fPos; ///< position of glyph origin
69  FT_Glyph fImage; ///< glyph image
70  };
71 
72 protected:
73  enum { kTTMaxFonts = 32, kMaxGlyphs = 1024 };
74 
75  static Int_t fgAscent; ///< string ascent, used to compute Y alignment
76  static FT_BBox fgCBox; ///< string control box
77  static FT_CharMap fgCharMap[kTTMaxFonts]; ///< font character map
78  static Int_t fgCurFontIdx; ///< current font index
79  static Int_t fgFontCount; ///< number of fonts loaded
80  static Int_t fgFontID[kTTMaxFonts]; ///< font ID
81  static FT_Face fgFace[kTTMaxFonts]; ///< font face
82  static TTF::TTGlyph fgGlyphs[kMaxGlyphs]; ///< glyphs
83  static Bool_t fgHinting; ///< use hinting (true by default)
84  static Bool_t fgInit; ///< true if the Init has been called
85  static Bool_t fgKerning; ///< use kerning (true by default)
86  static FT_Library fgLibrary; ///< FreeType font library
87  static Int_t fgNumGlyphs; ///< number of glyphs in the string
88  static FT_Matrix *fgRotMatrix; ///< rotation matrix
89  static Bool_t fgSmoothing; ///< use anti-aliasing (true when >8 planes, false otherwise)
90  static Int_t fgTBlankW; ///< trailing blanks width
91  static Int_t fgWidth; ///< string width, used to compute X alignment
92 
93 public:
94  static Short_t CharToUnicode(UInt_t code);
95  static void LayoutGlyphs();
96  static void PrepareString(const char *string);
97  static void PrepareString(const wchar_t *string);
98  static void SetRotationMatrix(Float_t angle);
99 
100 public:
101  TTF() { }
102  virtual ~TTF();
103 
104  static void Init();
105  static void Cleanup();
106  static Int_t GetAscent();
107  static const FT_BBox &GetBox();
108  static TTGlyph *GetGlyphs();
109  static Bool_t GetHinting();
110  static Bool_t GetKerning();
111  static Int_t GetNumGlyphs();
112  static FT_Matrix *GetRotMatrix();
113  static Bool_t GetSmoothing();
114  static Int_t GetWidth();
115  static void SetHinting(Bool_t state);
116  static void SetKerning(Bool_t state);
117  static void SetSmoothing(Bool_t state);
118  static void GetTextExtent(UInt_t &w, UInt_t &h, char *text);
119  static void GetTextExtent(UInt_t &w, UInt_t &h, wchar_t *text);
120  static void GetTextAdvance(UInt_t &a, char *text);
121  static void SetTextFont(Font_t fontnumber);
122  static Int_t SetTextFont(const char *fontname, Int_t italic=0);
123  static void SetTextSize(Float_t textsize);
124  static Bool_t IsInitialized();
125  static void Version(Int_t &major, Int_t &minor, Int_t &patch);
126 
127  ClassDef(TTF,0) //Interface to TTF font handling
128 };
129 
130 #endif
virtual ~TTF()
Cleanup TTF environment.
Definition: TTF.cxx:58
static void Init()
Initialise the TrueType fonts interface.
Definition: TTF.cxx:66
FT_Vector fPos
position of glyph origin
Definition: TTF.h:68
static FT_Matrix * fgRotMatrix
rotation matrix
Definition: TTF.h:88
float Float_t
Definition: RtypesCore.h:53
static Int_t fgFontCount
number of fonts loaded
Definition: TTF.h:79
static Bool_t IsInitialized()
Definition: TTF.cxx:801
FT_Glyph fImage
glyph image
Definition: TTF.h:69
TH1 * h
Definition: legend2.C:5
static void Cleanup()
Cleanup. Is called by the gCleanupTTF destructor.
Definition: TTF.cxx:88
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
Interface to the freetype 2 library.
Definition: TTF.h:53
TArc * a
Definition: textangle.C:12
This class is the basic interface to the Win32 graphics system.
Definition: TGWin32.h:67
static void Version(Int_t &major, Int_t &minor, Int_t &patch)
Definition: TTF.cxx:773
UInt_t fIndex
glyph index in face
Definition: TTF.h:67
short Font_t
Definition: RtypesCore.h:75
Interface to low level X11 (Xlib).
Definition: TGX11TTF.h:27
static FT_CharMap fgCharMap[kTTMaxFonts]
font character map
Definition: TTF.h:77
static Int_t fgAscent
string ascent, used to compute Y alignment
Definition: TTF.h:75
static TTF::TTGlyph fgGlyphs[kMaxGlyphs]
glyphs
Definition: TTF.h:82
Double_t x[n]
Definition: legend1.C:17
static void LayoutGlyphs()
Compute the glyphs positions, fgAscent and fgWidth (needed for alignment).
Definition: TTF.cxx:193
#define ClassDef(name, id)
Definition: Rtypes.h:297
static Bool_t GetHinting()
Definition: TTF.cxx:780
static void SetTextFont(Font_t fontnumber)
Definition: TTF.cxx:513
static void GetTextExtent(UInt_t &w, UInt_t &h, char *text)
Get width (w) and height (h) when text is horizontal.
Definition: TTF.cxx:144
static void PrepareString(const char *string)
Put the characters in &quot;string&quot; in the &quot;glyphs&quot; array.
Definition: TTF.cxx:259
TTF()
Definition: TTF.h:101
static FT_BBox fgCBox
string control box
Definition: TTF.h:76
static void GetTextAdvance(UInt_t &a, char *text)
Get advance (a) when text is horizontal.
Definition: TTF.cxx:160
static TTGlyph * GetGlyphs()
Definition: TTF.cxx:843
static Int_t fgTBlankW
trailing blanks width
Definition: TTF.h:90
static void SetSmoothing(Bool_t state)
Set smoothing (anti-aliasing) flag.
Definition: TTF.cxx:374
static Int_t fgCurFontIdx
current font index
Definition: TTF.h:78
static Int_t GetWidth()
Definition: TTF.cxx:808
static FT_Library fgLibrary
FreeType font library.
Definition: TTF.h:86
static Bool_t GetKerning()
Definition: TTF.cxx:787
static Int_t fgFontID[kTTMaxFonts]
font ID
Definition: TTF.h:80
static Bool_t fgKerning
use kerning (true by default)
Definition: TTF.h:85
static Bool_t fgInit
true if the Init has been called
Definition: TTF.h:84
static FT_Matrix * GetRotMatrix()
Definition: TTF.cxx:829
unsigned int UInt_t
Definition: RtypesCore.h:42
TTF helper class containing glyphs description.
Definition: TTF.h:65
short Short_t
Definition: RtypesCore.h:35
static void SetHinting(Bool_t state)
Set hinting flag.
Definition: TTF.cxx:335
static void SetKerning(Bool_t state)
Set kerning flag.
Definition: TTF.cxx:343
friend class TMathTextRenderer
Definition: TTF.h:57
static Bool_t fgHinting
use hinting (true by default)
Definition: TTF.h:83
static Int_t GetAscent()
Definition: TTF.cxx:815
TText * text
Double_t y[n]
Definition: legend1.C:17
static Bool_t fgSmoothing
use anti-aliasing (true when &gt;8 planes, false otherwise)
Definition: TTF.h:89
static void SetRotationMatrix(Float_t angle)
Set the rotation matrix used to rotate the font outlines.
Definition: TTF.cxx:351
static FT_Face fgFace[kTTMaxFonts]
font face
Definition: TTF.h:81
static Int_t fgNumGlyphs
number of glyphs in the string
Definition: TTF.h:87
static void SetTextSize(Float_t textsize)
Set current text size.
Definition: TTF.cxx:755
static Short_t CharToUnicode(UInt_t code)
Map char to unicode. Returns 0 in case no mapping exists.
Definition: TTF.cxx:104
static Int_t GetNumGlyphs()
Definition: TTF.cxx:822
static Int_t fgWidth
string width, used to compute X alignment
Definition: TTF.h:91
static const FT_BBox & GetBox()
Definition: TTF.cxx:836
static Bool_t GetSmoothing()
Definition: TTF.cxx:794