26 # include <FTGL/ftgl.h>
29 # include "FTGLExtrdFont.h"
30 # include "FTGLOutlineFont.h"
31 # include "FTGLPolygonFont.h"
32 # include "FTGLTextureFont.h"
33 # include "FTGLPixmapFont.h"
34 # include "FTGLBitmapFont.h"
39 #define FTGL_OUTLINE 2
40 #define FTGL_POLYGON 3
41 #define FTGL_EXTRUDE 4
42 #define FTGL_TEXTURE 5
72 TGLText::TGLText(Double_t x, Double_t y, Double_t z,
const char * )
89 if (fGLTextFont)
delete fGLTextFont;
96 void TGLText::PaintGLText(Double_t x, Double_t y, Double_t z,
const char *text)
98 if (!fGLTextFont)
return;
101 glTranslatef(x, y, z);
103 TGLUtil::Color(GetTextColor());
104 Double_t s = GetTextSize();
108 Float_t llx, lly, llz, urx, ury, urz;
109 fGLTextFont->BBox(text, llx, lly, llz, urx, ury, urz);
110 Short_t halign = fTextAlign/10;
111 Short_t valign = fTextAlign - 10*halign;
112 Float_t dx = 0, dy = 0;
114 case 1 : dx = 0 ;
break;
115 case 2 : dx = -urx/2;
break;
116 case 3 : dx = -urx ;
break;
119 case 1 : dy = 0 ;
break;
120 case 2 : dy = -ury/2;
break;
121 case 3 : dy = -ury ;
break;
123 glTranslatef(dx, dy, 0);
126 glRotatef(fAngle1,1.,0.,0.);
129 glRotatef(fAngle2,0.,1.,0.);
132 glRotatef(fAngle3,0.,0.,1.);
135 fGLTextFont->Render(text);
143 void TGLText::PaintBBox(
const char *text)
145 Float_t llx, lly, llz, urx, ury, urz;
146 fGLTextFont->BBox(text, llx, lly, llz, urx, ury, urz);
148 glVertex3f( 0, 0, 0); glVertex3f( urx, 0, 0);
149 glVertex3f( 0, 0, 0); glVertex3f( 0, ury, 0);
150 glVertex3f( 0, ury, 0); glVertex3f( urx, ury, 0);
151 glVertex3f( urx, ury, 0); glVertex3f( urx, 0, 0);
158 void TGLText::BBox(
const char*
string,
float& llx,
float& lly,
float& llz,
159 float& urx,
float& ury,
float& urz)
161 fGLTextFont->BBox(
string, llx, lly, llz, urx, ury, urz);
167 void TGLText::SetGLTextAngles(Double_t a1, Double_t a2, Double_t a3)
177 void TGLText::SetGLTextFont(Font_t fontnumber)
179 int fontid = fontnumber / 10;
181 const char *fontname=0;
182 if (fontid == 0) fontname =
"arialbd.ttf";
183 if (fontid == 1) fontname =
"timesi.ttf";
184 if (fontid == 2) fontname =
"timesbd.ttf";
185 if (fontid == 3) fontname =
"timesbi.ttf";
186 if (fontid == 4) fontname =
"arial.ttf";
187 if (fontid == 5) fontname =
"ariali.ttf";
188 if (fontid == 6) fontname =
"arialbd.ttf";
189 if (fontid == 7) fontname =
"arialbi.ttf";
190 if (fontid == 8) fontname =
"cour.ttf";
191 if (fontid == 9) fontname =
"couri.ttf";
192 if (fontid == 10) fontname =
"courbd.ttf";
193 if (fontid == 11) fontname =
"courbi.ttf";
194 if (fontid == 12) fontname =
"symbol.ttf";
195 if (fontid == 13) fontname =
"times.ttf";
196 if (fontid == 14) fontname =
"wingding.ttf";
199 const char *ttpath = gEnv->GetValue(
"Root.TTFontPath",
200 TROOT::GetTTFFontDir());
201 char *ttfont = gSystem->Which(ttpath, fontname, kReadPermission);
203 if (fGLTextFont)
delete fGLTextFont;
207 fGLTextFont =
new FTGLPolygonFont(ttfont);
209 if (!fGLTextFont->FaceSize(1))
210 Error(
"SetGLTextFont",
"Cannot set FTGL::FaceSize");