topical media & game development

talk show tell print

lib-of-vs-libs-openFrameworks-graphics-ofTrueTypeFont.h / h



  ifndef _OF_TTF_FONT_H_
  define _OF_TTF_FONT_H_
  
  include <ofConstants.h>
  include <ofGraphics.h>
  include <ofUtils.h>
  include <ofTypes.h>
  
  //--------------------------------------------------
  typedef struct {
          int value;
          int height;
          int width;
          int setWidth;
          int topExtent;
          int leftExtent;
          float tTex;
          float vTex;                //0-1 pct of bitmap...
          float xOff;
          float yOff;
  } charProps;
  
  //For drawStringAsShapes and getCharacterAsPoints only
  //Make this number smaller to create TTF shapes with more pts = slower but accurate
  //Make this number larger to create TTF shapes with less pts  = faster but not as accurate
  //Our default is 0.3 which removes segments that are less than 0.3 of a pixel in length
  define TTF_SHAPE_SIMPLIFICATION_AMNT (0.3)
  
  class ofTTFContour{
          public:
                  vector <ofPoint>pts;
  };
  
  class ofTTFCharacter{
          public:
                  vector <ofTTFContour> contours;
  };
  
  //--------------------------------------------------
  define NUM_CHARACTER_TO_START                33                // 0 - 32 are control characters, no graphics needed.
  
  class ofTrueTypeFont{
  
  public:
  
          ofTrueTypeFont();
          virtual ~ofTrueTypeFont();
                  
          //                         -- default, non-full char set, anti aliased:
          void                 loadFont(string filename, int fontsize);
          void                 loadFont(string filename, int fontsize, bool _bAntiAliased, bool _bFullCharacterSet, bool makeContours = false);
  
          bool                bLoadedOk;
          bool                 bAntiAlised;
          bool                 bFullCharacterSet;
  
            float                 getLineHeight();
            void                 setLineHeight(float height);
          float                 stringWidth(string s);
          float                 stringHeight(string s);
          
          ofRectangle    getStringBoundingBox(string s, float x, float y);
          
          void                 drawString(string s, float x, float y);
          void                drawStringAsShapes(string s, float x, float y);
          
          int                 nCharacters;
          
          ofTTFCharacter getCharacterAsPoints(int character);
  
  protected:
          vector <ofTTFCharacter> charOutlines;
  
          float                         lineHeight;
          charProps                 *         cps;                        // properties for each character
          GLuint                        *        texNames;                // textures for each character
          int                                fontSize;
          bool                        bMakeContours;
  
          void                         drawChar(int c, float x, float y);
          void                        drawCharAsShape(int c, float x, float y);
          
          int                         ofNextPow2(int a);
          int                                border, visibleBorder;
  
  };
  
  endif
  
  


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.