35 enum ETextLayoutFlags {
36 kTextWholeWords = BIT(0),
37 kTextAtLeastOne = BIT(1),
38 kTextPartialOK = BIT(2),
39 kTextIgnoreTabs = BIT(3),
40 kTextIgnoreNewlines = BIT(4)
44 kFontWeightNormal = 0,
45 kFontWeightMedium = 0,
48 kFontWeightDemibold = 3,
50 kFontWeightUnknown = -1
56 kFontSlantOblique = 2,
57 kFontSlantUnknown = -1
61 struct FontMetrics_t {
70 struct FontAttributes_t {
82 fWeight (kFontWeightNormal),
83 fSlant (kFontSlantRoman),
87 FontAttributes_t(
const FontAttributes_t& f):
89 fPointsize (f.fPointsize),
92 fUnderline (f.fUnderline),
93 fOverstrike(f.fOverstrike) { }
95 FontAttributes_t& operator=(
const FontAttributes_t& f)
99 fPointsize = f.fPointsize;
102 fUnderline = f.fUnderline;
103 fOverstrike = f.fOverstrike;
112 struct LayoutChunk_t;
115 class TGTextLayout :
public TObject {
124 LayoutChunk_t *fChunks;
126 TGTextLayout(
const TGTextLayout &tlayout);
127 void operator=(
const TGTextLayout &tlayout);
130 TGTextLayout(): fFont(NULL), fString(
""), fWidth(0), fNumChunks(0), fChunks(NULL) {}
131 virtual ~TGTextLayout();
133 void DrawText(Drawable_t dst, GContext_t gc, Int_t x, Int_t y,
134 Int_t firstChar, Int_t lastChar)
const;
135 void UnderlineChar(Drawable_t dst, GContext_t gc,
136 Int_t x, Int_t y, Int_t underline)
const;
137 Int_t PointToChar(Int_t x, Int_t y)
const;
138 Int_t CharBbox(Int_t index, Int_t *x, Int_t *y, Int_t *w, Int_t *h)
const;
139 Int_t DistanceToText(Int_t x, Int_t y)
const;
140 Int_t IntersectText(Int_t x, Int_t y, Int_t w, Int_t h)
const;
141 void ToPostscript(TString *dst)
const;
143 ClassDef(TGTextLayout,0)
149 class TGFont :
public TNamed,
public TRefCnt {
151 friend class TGFontPool;
152 friend class TGTextLayout;
155 FontStruct_t fFontStruct;
158 FontAttributes_t fFA;
159 TObjString *fNamedHash;
163 Int_t fUnderlineHeight;
172 TGFont(
const char *name)
173 : TNamed(name,
""), TRefCnt(), fFontStruct(0), fFontH(0), fFM(),
174 fFA(), fNamedHash(0), fTabWidth(0), fUnderlinePos(0), fUnderlineHeight(0), fBarHeight(0)
177 for (Int_t i=0; i<256; i++) {
183 TGFont(
const TGFont &font);
184 void operator=(
const TGFont &font);
186 LayoutChunk_t *NewChunk(TGTextLayout *layout,
int *maxPtr,
187 const char *start,
int numChars,
188 int curX,
int newX,
int y)
const;
192 FontH_t GetFontHandle()
const {
return fFontH; }
193 FontStruct_t GetFontStruct()
const {
return fFontStruct; }
194 FontStruct_t operator()()
const;
195 void GetFontMetrics(FontMetrics_t *m)
const;
196 FontAttributes_t GetFontAttributes()
const {
return fFA; }
198 Int_t PostscriptFontName(TString *dst)
const;
199 Int_t TextWidth(
const char *
string, Int_t numChars = -1)
const;
200 Int_t XTextWidth(
const char *
string, Int_t numChars = -1)
const;
201 Int_t TextHeight()
const {
return fFM.fLinespace; }
202 void UnderlineChars(Drawable_t dst, GContext_t gc,
203 const char *
string, Int_t x, Int_t y,
204 Int_t firstChar, Int_t lastChar)
const;
205 TGTextLayout *ComputeTextLayout(
const char *
string, Int_t numChars,
206 Int_t wrapLength, Int_t justify, Int_t flags,
207 UInt_t *width, UInt_t *height)
const;
208 Int_t MeasureChars(
const char *source, Int_t numChars, Int_t maxLength,
209 Int_t flags, Int_t *length)
const;
210 void DrawCharsExp(Drawable_t dst, GContext_t gc,
const char *source,
211 Int_t numChars, Int_t x, Int_t y)
const;
212 void DrawChars(Drawable_t dst, GContext_t gc,
const char *source,
213 Int_t numChars, Int_t x, Int_t y)
const;
215 void Print(Option_t *option=
"")
const;
216 virtual void SavePrimitive(std::ostream &out, Option_t * =
"");
222 struct FontStateMap_t;
223 struct XLFDAttributes_t;
226 class TGFontPool :
public TGObject {
230 THashTable *fUidTable;
231 THashTable *fNamedTable;
233 TGFontPool(
const TGFontPool& fp);
234 TGFontPool& operator=(
const TGFontPool& fp);
237 const char *GetUid(
const char *
string);
238 Bool_t ParseXLFD(
const char *
string, XLFDAttributes_t *xa);
239 TGFont *GetFontFromAttributes(FontAttributes_t *fa, TGFont *fontPtr);
240 int FindStateNum(
const FontStateMap_t *map,
const char *strKey);
241 const char *FindStateString(
const FontStateMap_t *map,
int numKey);
242 Bool_t FieldSpecified(
const char *field);
243 TGFont *GetNativeFont(
const char *name, Bool_t fixedDefault = kTRUE);
244 TGFont *MakeFont(TGFont *font, FontStruct_t fontStruct,
const char *fontName);
247 TGFontPool(TGClient *client);
248 virtual ~TGFontPool();
250 TGFont *GetFont(
const char *font, Bool_t fixedDefault = kTRUE);
251 TGFont *GetFont(
const TGFont *font);
252 TGFont *GetFont(FontStruct_t font);
253 TGFont *GetFont(
const char *family, Int_t ptsize, Int_t weight, Int_t slant);
255 void FreeFont(
const TGFont *font);
257 TGFont *FindFont(FontStruct_t font)
const;
258 TGFont *FindFontByHandle(FontH_t font)
const;
260 char **GetAttributeInfo(
const FontAttributes_t *fa);
261 void FreeAttributeInfo(
char **info);
262 char **GetFontFamilies();
263 void FreeFontFamilies(
char **f);
264 Bool_t ParseFontName(
const char *
string, FontAttributes_t *fa);
265 const char *NameOfFont(TGFont *font);
267 void Print(Option_t *option=
"")
const;
269 ClassDef(TGFontPool,0)