Logo ROOT   6.16/01
Reference Guide
TGLFontManager.h
Go to the documentation of this file.
1// @(#)root/gl:$Id$
2// Author: Alja Mrak-Tadel 2008
3
4/*************************************************************************
5 * Copyright (C) 1995-2007, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#ifndef ROOT_TGLFontManager
13#define ROOT_TGLFontManager
14
15#include "TObjArray.h"
16#include <list>
17#include <vector>
18#include <map>
19
20class FTFont;
21class TGLFontManager;
22
24{
25public:
26 enum EMode
27 {
28 kUndef = -1,
31 }; // Font-types of FTGL.
32
35
36private:
37 TGLFont& operator=(const TGLFont& o); // Not implemented.
38
39 FTFont *fFont; // FTGL font.
40 TGLFontManager *fManager; // Font manager.
41
42 Float_t fDepth; // depth of extruded fonts, enforced at render time.
43
44 template<class Char>
45 void RenderHelper(const Char *txt, Double_t x, Double_t y, Double_t angle, Double_t /*mgn*/) const;
46
47protected:
48 Int_t fSize; // free-type face size
49 Int_t fFile; // free-type file name
50 EMode fMode; // free-type FTGL class id
51
53public:
54 TGLFont();
55 TGLFont(Int_t size, Int_t font, EMode mode, FTFont *f=0, TGLFontManager *mng=0);
56 TGLFont(const TGLFont& o); // Not implemented.
57 virtual ~TGLFont();
58
59 void CopyAttributes(const TGLFont &o);
60
61 Int_t GetSize() const { return fSize;}
62 Int_t GetFile() const { return fFile;}
63 EMode GetMode() const { return fMode;}
64
65 Int_t GetTrashCount() const { return fTrashCount; }
66 void SetTrashCount(Int_t c) const { fTrashCount = c; }
67 Int_t IncTrashCount() const { return ++fTrashCount; }
68
69 void SetFont(FTFont *f) { fFont =f;}
70 const FTFont* GetFont() const { return fFont; }
71 void SetManager(TGLFontManager *mng) { fManager = mng; }
72 const TGLFontManager* GetManager() const { return fManager; }
73
74 Float_t GetDepth() const { return fDepth; }
75 void SetDepth(Float_t d) { fDepth = d; }
76
77 // FTGL wrapper functions
78 Float_t GetAscent() const;
79 Float_t GetDescent() const;
80 Float_t GetLineHeight() const;
81 void MeasureBaseLineParams(Float_t& ascent, Float_t& descent, Float_t& line_height,
82 const char* txt="Xj") const;
83
84 void BBox(const char* txt,
85 Float_t& llx, Float_t& lly, Float_t& llz,
86 Float_t& urx, Float_t& ury, Float_t& urz) const;
87 void BBox(const wchar_t* txt,
88 Float_t& llx, Float_t& lly, Float_t& llz,
89 Float_t& urx, Float_t& ury, Float_t& urz) const;
90
91 void Render(const char* txt, Double_t x, Double_t y, Double_t angle, Double_t mgn) const;
92 void Render(const wchar_t* txt, Double_t x, Double_t y, Double_t angle, Double_t mgn) const;
93 void Render(const TString &txt) const;
94 void Render(const TString &txt, Float_t x, Float_t y, Float_t z, ETextAlignH_e alignH, ETextAlignV_e alignV) const;
95
96 // helper gl draw functions
97 virtual void PreRender(Bool_t autoLight=kTRUE, Bool_t lightOn=kFALSE) const;
98 virtual void PostRender() const;
99
100 Bool_t operator< (const TGLFont& o) const
101 {
102 if (fSize == o.fSize)
103 {
104 if(fFile == o.fFile)
105 {
106 return fMode < o.fMode;
107 }
108 return fFile < o.fFile;
109 }
110 return fSize < o.fSize;
111 }
112
113 ClassDef(TGLFont, 0); // A wrapper class for FTFont.
114};
115
116/******************************************************************************/
117/******************************************************************************/
118
120{
121public:
122 typedef std::vector<Int_t> FontSizeVec_t;
123
124private:
125 TGLFontManager(const TGLFontManager&); // Not implemented
126 TGLFontManager& operator=(const TGLFontManager&); // Not implemented
127
128protected:
129 typedef std::map<TGLFont, Int_t> FontMap_t;
130 typedef std::map<TGLFont, Int_t>::iterator FontMap_i;
131
132 typedef std::list<const TGLFont*> FontList_t;
133 typedef std::list<const TGLFont*>::iterator FontList_i;
134 typedef std::list<const TGLFont*>::const_iterator FontList_ci;
135
136 FontMap_t fFontMap; // map of created fonts
137 FontList_t fFontTrash; // fonts to purge
138
139 static TObjArray fgFontFileArray; // map font-id to ttf-font-file
140 // Default fonts - for gl/eve, "extended" - for gl-pad
142
143 static FontSizeVec_t fgFontSizeArray; // map of valid font-size
144 static Bool_t fgStaticInitDone; // global initialization flag
145 static void InitStatics();
146
147public:
149 virtual ~TGLFontManager();
150
151 void RegisterFont(Int_t size, Int_t file, TGLFont::EMode mode, TGLFont& out);
152 void RegisterFont(Int_t size, const char* name, TGLFont::EMode mode, TGLFont& out);
153 void ReleaseFont(TGLFont& font);
154
155 static TObjArray* GetFontFileArray();
157
159 static Int_t GetFontSize(Int_t ds);
160 static Int_t GetFontSize(Int_t ds, Int_t min, Int_t max);
161 static const char* GetFontNameFromId(Int_t);
162
163 void ClearFontTrash();
164
165 ClassDef(TGLFontManager, 0); // A FreeType GL font manager.
166};
167
168#endif
169
#define d(i)
Definition: RSha256.hxx:102
#define f(i)
Definition: RSha256.hxx:104
#define c(i)
Definition: RSha256.hxx:101
int Int_t
Definition: RtypesCore.h:41
const Bool_t kFALSE
Definition: RtypesCore.h:88
bool Bool_t
Definition: RtypesCore.h:59
double Double_t
Definition: RtypesCore.h:55
float Float_t
Definition: RtypesCore.h:53
const Bool_t kTRUE
Definition: RtypesCore.h:87
#define ClassDef(name, id)
Definition: Rtypes.h:324
A FreeType GL font manager.
virtual ~TGLFontManager()
Destructor.
std::list< constTGLFont * >::const_iterator FontList_ci
static TObjArray fgFontFileArray
TGLFontManager & operator=(const TGLFontManager &)
FontMap_t fFontMap
void RegisterFont(Int_t size, Int_t file, TGLFont::EMode mode, TGLFont &out)
Provide font with given size, file and FTGL class.
static Int_t GetFontSize(Int_t ds)
Get availabe font size.
static void InitStatics()
Create a list of available font files and allowed font sizes.
static Int_t GetExtendedFontStartIndex()
static Bool_t fgStaticInitDone
static FontSizeVec_t fgFontSizeArray
std::map< TGLFont, Int_t > FontMap_t
TGLFontManager(const TGLFontManager &)
static Int_t fgExtendedFontStart
static FontSizeVec_t * GetFontSizeArray()
Get valid font size vector.
std::list< constTGLFont * >::iterator FontList_i
void ClearFontTrash()
Delete FTFFont objects registered for destruction.
std::map< TGLFont, Int_t >::iterator FontMap_i
std::list< const TGLFont * > FontList_t
std::vector< Int_t > FontSizeVec_t
static const char * GetFontNameFromId(Int_t)
Get font name from TAttAxis font id.
static TObjArray * GetFontFileArray()
Get id to file name map.
void ReleaseFont(TGLFont &font)
Release font with given attributes.
FontList_t fFontTrash
A wrapper class for FTFont.
void MeasureBaseLineParams(Float_t &ascent, Float_t &descent, Float_t &line_height, const char *txt="Xj") const
Measure font's base-line parameters from the passed text.
Float_t GetDescent() const
Get font's descent. The returned value is positive.
virtual ~TGLFont()
Destructor.
Int_t IncTrashCount() const
Float_t GetAscent() const
Get font's ascent.
EMode GetMode() const
void SetManager(TGLFontManager *mng)
void SetFont(FTFont *f)
void SetTrashCount(Int_t c) const
Float_t GetLineHeight() const
Get font's line-height.
EMode fMode
Int_t GetTrashCount() const
Int_t GetSize() const
const FTFont * GetFont() const
TGLFont & operator=(const TGLFont &o)
void RenderHelper(const Char *txt, Double_t x, Double_t y, Double_t angle, Double_t) const
mgn is simply ignored, because ROOT's TVirtualX TGX11 are complete mess with painting attributes.
FTFont * fFont
TGLFontManager * fManager
Int_t GetFile() const
Bool_t operator<(const TGLFont &o) const
void BBox(const char *txt, Float_t &llx, Float_t &lly, Float_t &llz, Float_t &urx, Float_t &ury, Float_t &urz) const
Get bounding box.
Int_t fTrashCount
Float_t fDepth
const TGLFontManager * GetManager() const
void Render(const char *txt, Double_t x, Double_t y, Double_t angle, Double_t mgn) const
virtual void PostRender() const
Reset GL state after FTFont rendering.
void SetDepth(Float_t d)
virtual void PreRender(Bool_t autoLight=kTRUE, Bool_t lightOn=kFALSE) const
Set-up GL state before FTFont rendering.
Int_t fSize
Float_t GetDepth() const
TGLFont()
Constructor.
void CopyAttributes(const TGLFont &o)
Assignment operator.
Int_t fFile
An array of TObjects.
Definition: TObjArray.h:37
Basic string class.
Definition: TString.h:131
Double_t y[n]
Definition: legend1.C:17
Double_t x[n]
Definition: legend1.C:17
Definition: file.py:1
const char * Char