12#include "RConfigure.h" 
   23#include "TGLIncludes.h" 
   28# include <FTGL/ftgl.h> 
   31# include "FTGLExtrdFont.h" 
   32# include "FTGLOutlineFont.h" 
   33# include "FTGLPolygonFont.h" 
   34# include "FTGLTextureFont.h" 
   35# include "FTGLPixmapFont.h" 
   36# include "FTGLBitmapFont.h" 
   53   fFont(0), fManager(0), fDepth(0),
 
   63   fFont(
f), fManager(mng), fDepth(0),
 
   73   fFont(0), fManager(0), fDepth(0), fTrashCount(0)
 
  117   return fFont->Ascender();
 
  125   return -
fFont->Descender();
 
  133   return fFont->LineHeight();
 
  142                                    const char* txt)
 const 
  145   const_cast<FTFont*
>(
fFont)->
BBox(txt, dum, lly, dum, dum, ury, dum);
 
  148   line_height =  ury - lly;
 
  159   const_cast<FTFont*
>(
fFont)->
BBox(txt, llx, lly, llz, urx, ury, urz);
 
  170   const_cast<FTFont*
>(
fFont)->
BBox(txt, llx, lly, llz, urx, ury, urz);
 
  184   Float_t llx = 0.f, lly = 0.f, llz = 0.f, urx = 0.f, ury = 0.f, urz = 0.f;
 
  185   BBox(txt, llx, lly, llz, urx, ury, urz);
 
  196   const Double_t dx = urx - llx, dy = ury - lly;
 
  204   if (
gVirtualX->InheritsFrom(
"TGCocoa")) {
 
  263   glTranslated(
x, 
y, 0.);
 
  264   glRotated(
angle, 0., 0., 1.);
 
  265   glTranslated(xc, yc, 0.);
 
  266   glTranslated(-0.5 * dx, -0.5 * dy, 0.);
 
  298      glTranslatef(0.0f, 0.0f, 0.5f*
fDepth * 0.2f*
fSize);
 
  299      glScalef(1.0f, 1.0f, 
fDepth);
 
  318   glTranslatef(
x, 
y, z);
 
  321   Float_t llx, lly, llz, urx, ury, urz;
 
  322   BBox(txt, llx, lly, llz, urx, ury, urz);
 
  352      glBitmap(0, 0, 0, 0, 
x, 
y, 0);
 
  356      glTranslatef(
x, 
y, 0);
 
  371         glPushAttrib(GL_CURRENT_BIT | GL_COLOR_BUFFER_BIT | GL_ENABLE_BIT);
 
  372         glEnable(GL_ALPHA_TEST);
 
  373         glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 
  374         glAlphaFunc(GL_GEQUAL, 0.0625);
 
  377         glPushAttrib(GL_POLYGON_BIT | GL_ENABLE_BIT);
 
  378         glEnable(GL_TEXTURE_2D);
 
  379         glDisable(GL_CULL_FACE);
 
  380         glEnable(GL_ALPHA_TEST);
 
  381         glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 
  382         glAlphaFunc(GL_GEQUAL, 0.0625);
 
  387         glPushAttrib(GL_POLYGON_BIT | GL_ENABLE_BIT);
 
  388         glEnable(GL_NORMALIZE);
 
  389         glDisable(GL_CULL_FACE);
 
  392         Warning(
"TGLFont::PreRender", 
"Font mode undefined.");
 
  393         glPushAttrib(GL_LIGHTING_BIT);
 
  398      glEnable(GL_LIGHTING);
 
  400      glDisable(GL_LIGHTING);
 
  433      delete it->first.GetFont();
 
  468            ftfont = 
new FTGLBitmapFont(
file);
 
  471            ftfont = 
new FTGLPixmapFont(
file);
 
  474            ftfont = 
new FTGLOutlineFont(
file);
 
  477            ftfont = 
new FTGLPolygonFont(
file);
 
  480            ftfont = 
new FTGLExtrdFont(
file);
 
  481            ftfont->Depth(0.2*
size);
 
  484            ftfont = 
new FTGLTextureFont(
file);
 
  487            Error(
"TGLFontManager::RegisterFont", 
"invalid FTGL type");
 
  491      ftfont->FaceSize(
size);
 
  497      if (it->first.GetTrashCount() > 0) {
 
  499         it->first.SetTrashCount(0);
 
  523   if (cnt < farr->GetEntries())
 
  526      Error(
"TGLFontManager::RegisterFont", 
"unknown font name %s", 
name);
 
  542         assert(it->first.GetTrashCount() == 0);
 
  543         it->first.IncTrashCount();
 
  588   if (idx < 0) idx = 0;
 
  597   if (ds < min) ds = min;
 
  598   if (ds > max) ds = max;
 
  609   Int_t fontIndex = 
id / 10;
 
  686   for (
Int_t i = 10; i <= 20; i+=2)
 
  688   for (
Int_t i = 24; i <= 64; i+=4)
 
  690   for (
Int_t i = 72; i <= 128; i+=8)
 
  704      if ((*it)->IncTrashCount() > 10000)
 
  709         delete (*it)->GetFont();
 
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
 
void Error(const char *location, const char *msgfmt,...)
Use this function in case an error occurred.
 
void Warning(const char *location, const char *msgfmt,...)
Use this function in warning situations.
 
Option_t Option_t TPoint TPoint angle
 
Option_t Option_t TPoint TPoint const char mode
 
R__EXTERN TSystem * gSystem
 
virtual Int_t GetValue(const char *name, Int_t dflt) const
Returns the integer value for a resource.
 
A FreeType GL font manager.
 
virtual ~TGLFontManager()
Destructor.
 
static TObjArray fgFontFileArray
 
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
 
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::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.
 
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.
 
Float_t GetAscent() const
Get font's ascent.
 
void SetManager(TGLFontManager *mng)
 
Float_t GetLineHeight() const
Get font's line-height.
 
const FTFont * GetFont() const
 
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.
 
TGLFontManager * fManager
 
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.
 
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.
 
virtual void PreRender(Bool_t autoLight=kTRUE, Bool_t lightOn=kFALSE) const
Set-up GL state before FTFont rendering.
 
void CopyAttributes(const TGLFont &o)
Assignment operator.
 
Int_t GetEntries() const override
Return the number of objects in array (i.e.
 
void Add(TObject *obj) override
 
Collectable string class.
 
static const TString & GetTTFFontDir()
Get the fonts directory in the installation. Static utility function.
 
const char * Data() const
 
virtual char * Which(const char *search, const char *file, EAccessMode mode=kFileExists)
Find location of file in a search path.
 
Int_t CeilNint(Double_t x)
Returns the nearest integer of TMath::Ceil(x).
 
Long64_t BinarySearch(Long64_t n, const T *array, T value)
Binary search in an array of n values to locate value.