Logo ROOT  
Reference Guide
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
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 *************************************************************************/
13#ifndef ROOT_TTF
14#define ROOT_TTF
17#include "Rtypes.h"
19/// @cond DOXYGEN_IGNORE
20// Forward declare for the headers:
21// # include <ft2build.h>
22// # include FT_FREETYPE_H
23// # include FT_GLYPH_H
24extern "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;
45/// @endcond
48class TGX11TTF;
49class TGWin32;
53class TTF {
55friend class TGX11TTF;
56friend class TGWin32;
57friend class TMathTextRenderer;
61/** \class TTGlyph
62TTF helper class containing glyphs description.
65 class TTGlyph {
66 public:
67 UInt_t fIndex{0}; ///< glyph index in face
68 FT_Vector fPos; ///< position of glyph origin
69 FT_Glyph fImage{nullptr}; ///< glyph image
70 };
73 enum { kTTMaxFonts = 32, kMaxGlyphs = 1024 };
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 fgSymbItaFontIdx; ///< Symbol italic font index
80 static Int_t fgFontCount; ///< number of fonts loaded
81 static char *fgFontName[kTTMaxFonts]; ///< font name
82 static FT_Face fgFace[kTTMaxFonts]; ///< font face
83 static TTF::TTGlyph fgGlyphs[kMaxGlyphs]; ///< glyphs
84 static Bool_t fgHinting; ///< use hinting (true by default)
85 static Bool_t fgInit; ///< true if the Init has been called
86 static Bool_t fgKerning; ///< use kerning (true by default)
87 static FT_Library fgLibrary; ///< FreeType font library
88 static Int_t fgNumGlyphs; ///< number of glyphs in the string
89 static FT_Matrix *fgRotMatrix; ///< rotation matrix
90 static Bool_t fgSmoothing; ///< use anti-aliasing (true when >8 planes, false otherwise)
91 static Int_t fgTBlankW; ///< trailing blanks width
92 static Int_t fgWidth; ///< string width, used to compute X alignment
95 static Short_t CharToUnicode(UInt_t code);
96 static void LayoutGlyphs();
97 static void PrepareString(const char *string);
98 static void PrepareString(const wchar_t *string);
99 static void SetRotationMatrix(Float_t angle);
102 TTF() { }
103 virtual ~TTF();
105 static void Init();
106 static void Cleanup();
107 static Int_t GetAscent();
108 static const FT_BBox &GetBox();
109 static TTGlyph *GetGlyphs();
110 static Bool_t GetHinting();
111 static Bool_t GetKerning();
112 static Int_t GetNumGlyphs();
113 static FT_Matrix *GetRotMatrix();
114 static Bool_t GetSmoothing();
115 static Int_t GetWidth();
116 static void SetHinting(Bool_t state);
117 static void SetKerning(Bool_t state);
118 static void SetSmoothing(Bool_t state);
119 static void GetTextExtent(UInt_t &w, UInt_t &h, char *text);
120 static void GetTextExtent(UInt_t &w, UInt_t &h, wchar_t *text);
121 static void GetTextAdvance(UInt_t &a, char *text);
122 static void SetTextFont(Font_t fontnumber);
123 static Int_t SetTextFont(const char *fontname, Int_t italic=0);
124 static void SetTextSize(Float_t textsize);
125 static Bool_t IsInitialized();
126 static void Version(Int_t &major, Int_t &minor, Int_t &patch);
128 ClassDef(TTF,0) //Interface to TTF font handling
#define h(i)
Definition: RSha256.hxx:106
int Int_t
Definition: RtypesCore.h:45
unsigned int UInt_t
Definition: RtypesCore.h:46
bool Bool_t
Definition: RtypesCore.h:63
short Font_t
Definition: RtypesCore.h:88
short Short_t
Definition: RtypesCore.h:39
float Float_t
Definition: RtypesCore.h:57
#define ClassDef(name, id)
Definition: Rtypes.h:325
This class is the basic interface to the Win32 graphics system.
Definition: TGWin32.h:64
Interface to low level X11 (Xlib).
Definition: TGX11TTF.h:27
TTF helper class containing glyphs description.
Definition: TTF.h:65
FT_Vector fPos
position of glyph origin
Definition: TTF.h:68
FT_Glyph fImage
glyph image
Definition: TTF.h:69
UInt_t fIndex
glyph index in face
Definition: TTF.h:67
Interface to the freetype 2 library.
Definition: TTF.h:53
static void SetKerning(Bool_t state)
Set kerning flag.
Definition: TTF.cxx:334
static Bool_t fgHinting
use hinting (true by default)
Definition: TTF.h:84
static Bool_t IsInitialized()
Definition: TTF.cxx:608
static void GetTextAdvance(UInt_t &a, char *text)
Get advance (a) when text is horizontal.
Definition: TTF.cxx:148
static void PrepareString(const char *string)
Put the characters in "string" in the "glyphs" array.
Definition: TTF.cxx:250
static TTF::TTGlyph fgGlyphs[kMaxGlyphs]
Definition: TTF.h:83
static Bool_t GetKerning()
Definition: TTF.cxx:594
static Bool_t fgSmoothing
use anti-aliasing (true when >8 planes, false otherwise)
Definition: TTF.h:90
static void Version(Int_t &major, Int_t &minor, Int_t &patch)
Definition: TTF.cxx:580
static void SetHinting(Bool_t state)
Set hinting flag.
Definition: TTF.cxx:326
@ kMaxGlyphs
Definition: TTF.h:73
@ kTTMaxFonts
Definition: TTF.h:73
static void Init()
Initialise the TrueType fonts interface.
Definition: TTF.cxx:65
static FT_Face fgFace[kTTMaxFonts]
font face
Definition: TTF.h:82
static FT_CharMap fgCharMap[kTTMaxFonts]
font character map
Definition: TTF.h:77
static void LayoutGlyphs()
Compute the glyphs positions, fgAscent and fgWidth (needed for alignment).
Definition: TTF.cxx:181
static void SetSmoothing(Bool_t state)
Set smoothing (anti-aliasing) flag.
Definition: TTF.cxx:365
static void SetRotationMatrix(Float_t angle)
Set the rotation matrix used to rotate the font outlines.
Definition: TTF.cxx:342
static void SetTextFont(Font_t fontnumber)
Set specified font.
Definition: TTF.cxx:491
Definition: TTF.h:102
static Short_t CharToUnicode(UInt_t code)
Map char to unicode. Returns 0 in case no mapping exists.
Definition: TTF.cxx:99
static Int_t GetAscent()
Definition: TTF.cxx:622
static void GetTextExtent(UInt_t &w, UInt_t &h, char *text)
Get width (w) and height (h) when text is horizontal.
Definition: TTF.cxx:132
static TTGlyph * GetGlyphs()
Definition: TTF.cxx:650
static Int_t GetNumGlyphs()
Definition: TTF.cxx:629
static Int_t fgAscent
string ascent, used to compute Y alignment
Definition: TTF.h:75
static Int_t fgWidth
string width, used to compute X alignment
Definition: TTF.h:92
static Bool_t fgInit
true if the Init has been called
Definition: TTF.h:85
static Int_t fgCurFontIdx
current font index
Definition: TTF.h:78
static Int_t fgSymbItaFontIdx
Symbol italic font index.
Definition: TTF.h:79
static void Cleanup()
Cleanup. Is called by the gCleanupTTF destructor.
Definition: TTF.cxx:82
virtual ~TTF()
Cleanup TTF environment.
Definition: TTF.cxx:57
static Int_t GetWidth()
Definition: TTF.cxx:615
static const FT_BBox & GetBox()
Definition: TTF.cxx:643
static char * fgFontName[kTTMaxFonts]
font name
Definition: TTF.h:81
static FT_Library fgLibrary
FreeType font library.
Definition: TTF.h:87
static Int_t fgNumGlyphs
number of glyphs in the string
Definition: TTF.h:88
static FT_Matrix * fgRotMatrix
rotation matrix
Definition: TTF.h:89
static Bool_t fgKerning
use kerning (true by default)
Definition: TTF.h:86
static Int_t fgTBlankW
trailing blanks width
Definition: TTF.h:91
static Bool_t GetHinting()
Definition: TTF.cxx:587
static Bool_t GetSmoothing()
Definition: TTF.cxx:601
static Int_t fgFontCount
number of fonts loaded
Definition: TTF.h:80
static void SetTextSize(Float_t textsize)
Set current text size.
Definition: TTF.cxx:562
static FT_Matrix * GetRotMatrix()
Definition: TTF.cxx:636
static FT_BBox fgCBox
string control box
Definition: TTF.h:76
TText * text
Double_t y[n]
Definition: legend1.C:17
Double_t x[n]
Definition: legend1.C:17
auto * a
Definition: textangle.C:12