EMAN2
Classes | Public Types | Public Member Functions | Private Attributes
EMAN::EMFTGL Class Reference

EMFTGL is an interface for rendering fonts in EMAN2 using FTGL. More...

#include <emftgl.h>

Collaboration diagram for EMAN::EMFTGL:
Collaboration graph
[legend]

List of all members.

Classes

class  EMFTGLFontInstance
 A class for encapsulatiing a particular instance of an FTFont (pointer) Each FTFont is characterised by 5 parameters, them being the font mode, the font file name, the face size, whether or not display lists are being used, and depth (which is redundant, except when the font mode is EXTRUDE). More...
class  EMFTGLManager
 A class for managing multiple instances of EMFTGLFontInstances, in particular for caching them, for constructing news ones if they don't exist, and for returning appropriate instances. More...

Public Types

enum  FontMode {
  EXTRUDE, PIXMAP, TEXTURE, BITMAP,
  OUTLINE, POLYGON
}
 FontModes correspond to the different FTFont types - this correspondence is EXTRUDE - FTGLExtrdFont, PIXMAP - FTGLPixmapFont TEXTURE - FTGLTextureFont, BITMAP - FTGLBitmapFont OUTLINE - FTGLOutlineFont, POLYGON - FTGLPolygonFont. More...

Public Member Functions

 EMFTGL ()
 Constructor is OS dependent - it attempts to reference an Operating System specific fonts file by default.
 ~EMFTGL ()
 Destructor.
void render_string (const string &message)
 Render string performs OpenGL rendering of the string using the current state variables of this class.
vector< float > bounding_box (const string &message)
 Obtains the bounding box of the given message, as would be rendered using the current state variables of this class.
void set_font_file_name (const string &file_name)
 Set the font file name - should be a .ttf file.
void set_face_size (const unsigned int size)
 Set the face size of the rendered text.
void set_depth (const unsigned int d)
 Set the depth of the rendered text - only useful if this->mode = EXTRUDE.
void set_using_display_lists (const bool b)
 Set whether or not the font render should be using display lists.
void set_font_mode (const FontMode m)
 Set the font mode.
string get_font_file_name ()
 Get the name of the current font file in use.
unsigned int get_face_size ()
 Get the currently used face size.
unsigned int get_depth ()
 Get the currently used depth.
bool get_using_display_lists ()
 Get whether or not font renderer is currently using display lists.
FontMode get_font_mode ()
 Get the current font mode.

Private Attributes

string font_file_name
 Disallow copy construction.
unsigned int face_size
unsigned int depth
bool use_display_lists
FontMode mode
EMFTGLManager fm

Detailed Description

EMFTGL is an interface for rendering fonts in EMAN2 using FTGL.

The EMFTGL has an instance of an EMFTGLFontManager which caches FTFonts. Internally, everytime the EMFTGL is asked to render or obtain bounding boxes, it asks its EMFTGLFontManager for an FTFont pointer usng the the current state of all member variables. The EMFTGLFontManager may already have the correct FTFont, or it may have to construct it (and store it for later use, if necessary).

The EMFTGL class is defined in terms of 5 things, them being the font size, whether or not display lists are being used (in FTGL), the font file itself (a .ttf file), the mode of font rendering (TEXTURE, BITMAP etc), and the depth (which is only applicable when the font mode is EXTRUDE in terms of FTGL). These five parameter act as an index when asking the EMFTGLFontManager for the FTFont

The EMFTGLFontManager is intentionally not static - this is because in EMAN2 it is possible to be rendering accross multiple OpenGL contexts. When the EMFTGL destructor is called the associated EMFTGLFontsManager is destroyed all with all of its previously stored FTFont pointers.

Author:
David Woolford
Date:
July 2008

Definition at line 81 of file emftgl.h.


Member Enumeration Documentation

FontModes correspond to the different FTFont types - this correspondence is EXTRUDE - FTGLExtrdFont, PIXMAP - FTGLPixmapFont TEXTURE - FTGLTextureFont, BITMAP - FTGLBitmapFont OUTLINE - FTGLOutlineFont, POLYGON - FTGLPolygonFont.

Enumerator:
EXTRUDE 
PIXMAP 
TEXTURE 
BITMAP 
OUTLINE 
POLYGON 

Definition at line 108 of file emftgl.h.


Constructor & Destructor Documentation

EMAN::EMFTGL::EMFTGL ( ) [inline]

Constructor is OS dependent - it attempts to reference an Operating System specific fonts file by default.

Definition at line 93 of file emftgl.h.

: font_file_name("/usr/share/fonts/dejavu/DejaVuSerif.ttf"), face_size(32), depth(32), use_display_lists(true), mode(TEXTURE) {};
EMAN::EMFTGL::~EMFTGL ( ) [inline]

Destructor.

Definition at line 100 of file emftgl.h.

{};

Member Function Documentation

vector<float> EMAN::EMFTGL::bounding_box ( const string &  message)

Obtains the bounding box of the given message, as would be rendered using the current state variables of this class.

Parameters:
messagethe string that will be used to calculate the bounding box
Returns:
a vector of length 6 containing the values [x1,y1,z1,x2,y2,z2] which define the 2 points of the bounding box extremes
unsigned int EMAN::EMFTGL::get_depth ( ) [inline]

Get the currently used depth.

Definition at line 159 of file emftgl.h.

References depth.

{ return depth; }
unsigned int EMAN::EMFTGL::get_face_size ( ) [inline]

Get the currently used face size.

Definition at line 156 of file emftgl.h.

References face_size.

{return face_size; }
string EMAN::EMFTGL::get_font_file_name ( ) [inline]

Get the name of the current font file in use.

Definition at line 153 of file emftgl.h.

References font_file_name.

{ return font_file_name; }
FontMode EMAN::EMFTGL::get_font_mode ( ) [inline]

Get the current font mode.

Definition at line 165 of file emftgl.h.

References mode.

{ return mode; }
bool EMAN::EMFTGL::get_using_display_lists ( ) [inline]

Get whether or not font renderer is currently using display lists.

Definition at line 162 of file emftgl.h.

References use_display_lists.

{ return use_display_lists; }
void EMAN::EMFTGL::render_string ( const string &  message)

Render string performs OpenGL rendering of the string using the current state variables of this class.

Parameters:
messagethe string to render
void EMAN::EMFTGL::set_depth ( const unsigned int  d) [inline]

Set the depth of the rendered text - only useful if this->mode = EXTRUDE.

Definition at line 142 of file emftgl.h.

References depth.

{ depth = d; }
void EMAN::EMFTGL::set_face_size ( const unsigned int  size) [inline]

Set the face size of the rendered text.

Parameters:
sizethe face size of the rendered text

Definition at line 138 of file emftgl.h.

References face_size.

{ face_size = size; }
void EMAN::EMFTGL::set_font_file_name ( const string &  file_name) [inline]

Set the font file name - should be a .ttf file.

Parameters:
file_namethe font file name - should be a .ttf file

Definition at line 133 of file emftgl.h.

References font_file_name.

{ font_file_name = file_name; }
void EMAN::EMFTGL::set_font_mode ( const FontMode  m) [inline]

Set the font mode.

Definition at line 150 of file emftgl.h.

References mode.

{ mode = m; }
void EMAN::EMFTGL::set_using_display_lists ( const bool  b) [inline]

Set whether or not the font render should be using display lists.

Definition at line 146 of file emftgl.h.

References b, and use_display_lists.


Member Data Documentation

unsigned int EMAN::EMFTGL::depth [private]

Definition at line 177 of file emftgl.h.

Referenced by get_depth(), and set_depth().

unsigned int EMAN::EMFTGL::face_size [private]

Definition at line 176 of file emftgl.h.

Referenced by get_face_size(), and set_face_size().

Definition at line 244 of file emftgl.h.

string EMAN::EMFTGL::font_file_name [private]

Disallow copy construction.

Disallow Assignment

Definition at line 175 of file emftgl.h.

Referenced by get_font_file_name(), and set_font_file_name().

Definition at line 180 of file emftgl.h.

Referenced by get_font_mode(), and set_font_mode().

Definition at line 178 of file emftgl.h.

Referenced by get_using_display_lists(), and set_using_display_lists().


The documentation for this class was generated from the following file: