Back to index

extremetuxracer  0.5beta
FTBBox.h
Go to the documentation of this file.
00001 #ifndef     __FTBBox__
00002 #define     __FTBBox__
00003 
00004 #include <ft2build.h>
00005 #include FT_FREETYPE_H
00006 //#include FT_GLYPH_H
00007 #include FT_OUTLINE_H
00008 
00009 #include "FTGL.h"
00010 #include "FTPoint.h"
00011 
00012 
00016 class FTGL_EXPORT FTBBox
00017 {
00018     public:
00022         FTBBox()
00023         :   lowerX(0.0f),
00024             lowerY(0.0f),
00025             lowerZ(0.0f),
00026             upperX(0.0f),
00027             upperY(0.0f),
00028             upperZ(0.0f)
00029         {}
00030         
00034         FTBBox( float lx, float ly, float lz, float ux, float uy, float uz)
00035         :   lowerX(lx),
00036             lowerY(ly),
00037             lowerZ(lz),
00038             upperX(ux),
00039             upperY(uy),
00040             upperZ(uz)
00041         {}
00042         
00049         FTBBox( FT_GlyphSlot glyph)
00050         :   lowerX(0.0f),
00051             lowerY(0.0f),
00052             lowerZ(0.0f),
00053             upperX(0.0f),
00054             upperY(0.0f),
00055             upperZ(0.0f)
00056         {
00057             FT_BBox bbox;
00058             FT_Outline_Get_CBox( &(glyph->outline), &bbox);
00059 
00060             lowerX = static_cast<float>( bbox.xMin) / 64.0f;
00061             lowerY = static_cast<float>( bbox.yMin) / 64.0f;
00062             lowerZ = 0.0f;
00063             upperX = static_cast<float>( bbox.xMax) / 64.0f;
00064             upperY = static_cast<float>( bbox.yMax) / 64.0f;
00065             upperZ = 0.0f;
00066             
00067         }       
00068 
00072         ~FTBBox()
00073         {}
00074         
00075 
00081         FTBBox& Move( FTPoint distance)
00082         {
00083             lowerX += distance.X();
00084             lowerY += distance.Y();
00085             lowerZ += distance.Z();
00086             upperX += distance.X();
00087             upperY += distance.Y();
00088             upperZ += distance.Z();
00089             return *this;
00090         }
00091 
00092         FTBBox& operator += ( const FTBBox& bbox) 
00093         {
00094             lowerX = bbox.lowerX < lowerX? bbox.lowerX: lowerX; 
00095             lowerY = bbox.lowerY < lowerY? bbox.lowerY: lowerY;
00096             lowerZ = bbox.lowerZ < lowerZ? bbox.lowerZ: lowerZ; 
00097             upperX = bbox.upperX > upperX? bbox.upperX: upperX; 
00098             upperY = bbox.upperY > upperY? bbox.upperY: upperY; 
00099             upperZ = bbox.upperZ > upperZ? bbox.upperZ: upperZ; 
00100             
00101             return *this;
00102         }
00103         
00104         void SetDepth( float depth)
00105         {
00106             upperZ = lowerZ + depth;
00107         }
00108         
00109         
00113         // Make these ftPoints & private
00114         float lowerX, lowerY, lowerZ, upperX, upperY, upperZ;
00115     protected:
00116     
00117     
00118     private:
00119 
00120 };
00121 
00122 
00123 #endif  //  __FTBBox__
00124