4fbf4db42e
Alas changed the indenting to use 4 spaces instead of tabs, this irons out differences when working under Windows and Unix, keeping the identing consistent.
241 lines
5.6 KiB
Plaintext
241 lines
5.6 KiB
Plaintext
//C++ header - Open Scene Graph - Copyright (C) 1998-2001 Robert Osfield
|
|
//Distributed under the terms of the GNU Library General Public License (LGPL)
|
|
//as published by the Free Software Foundation.
|
|
|
|
/* --------------------------------------------------------------------------
|
|
*
|
|
* openscenegraph textLib / FTGL wrapper
|
|
*
|
|
* --------------------------------------------------------------------------
|
|
*
|
|
* prog: max rheiner;mrn@paus.ch
|
|
* date: 4/25/2001 (m/d/y)
|
|
*
|
|
* --------------------------------------------------------------------------
|
|
*
|
|
* --------------------------------------------------------------------------
|
|
*/
|
|
|
|
|
|
#ifndef OSGTEXT_FONT
|
|
#define OSGTEXT_FONT 1
|
|
|
|
#include <osg/Object>
|
|
#include <osg/State>
|
|
|
|
#include <osgText/Export>
|
|
|
|
#include <string>
|
|
|
|
// http://homepages.paradise.net.nz/henryj/code/
|
|
|
|
class FTFont;
|
|
|
|
namespace osgText {
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// Font - FontBaseClass
|
|
class OSGTEXT_EXPORT Font : public osg::Object
|
|
{
|
|
public:
|
|
|
|
Font();
|
|
|
|
|
|
bool open(const char* font);
|
|
bool open(const std::string& font);
|
|
|
|
virtual bool create(osg::State& state,int pointSize, const unsigned int res = 72 );
|
|
virtual bool create(osg::State& state);
|
|
virtual void output(osg::State& state,const char* text);
|
|
|
|
virtual bool isOk(void) const { return _init; }
|
|
virtual bool isCreated(void) const { return isOk() && _created; }
|
|
|
|
virtual float getWidth(const char* text) const;
|
|
virtual int getHeight() const;
|
|
virtual int getDescender() const;
|
|
virtual int getAscender() const;
|
|
|
|
int getPointSize(void) const { return _pointSize; }
|
|
int getTextureSize(void) const { return _textureSize; }
|
|
const std::string& getFontName();
|
|
|
|
FTFont* getFont(void) { return _font; }
|
|
|
|
protected:
|
|
|
|
virtual ~Font();
|
|
|
|
virtual void clear();
|
|
|
|
virtual FTFont* createFontObj(void)=0;
|
|
|
|
bool init(const std::string& font);
|
|
|
|
bool _init;
|
|
bool _created;
|
|
|
|
FTFont* _font;
|
|
std::string _fontName;
|
|
int _pointSize;
|
|
int _res;
|
|
int _textureSize;
|
|
};
|
|
// Font
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// RasterFont
|
|
class OSGTEXT_EXPORT RasterFont:public Font
|
|
{
|
|
public:
|
|
RasterFont():Font(){;}
|
|
RasterFont(const std::string& font):Font(){;}
|
|
|
|
protected:
|
|
|
|
};
|
|
|
|
// RasterFont
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// VectorFont
|
|
class OSGTEXT_EXPORT VectorFont:public Font
|
|
{
|
|
public:
|
|
VectorFont():Font(){;}
|
|
VectorFont(const std::string& font):Font(){;}
|
|
|
|
protected:
|
|
double _precision;
|
|
};
|
|
|
|
// VectorFont
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// BitmapFont
|
|
class OSGTEXT_EXPORT BitmapFont:public RasterFont
|
|
{
|
|
public:
|
|
|
|
|
|
BitmapFont() {;}
|
|
|
|
BitmapFont(const std::string& font,
|
|
int point_size);
|
|
|
|
META_Object(BitmapFont);
|
|
|
|
protected:
|
|
|
|
|
|
virtual FTFont* createFontObj(void);
|
|
};
|
|
|
|
// BitmapFont
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// PixmapFont
|
|
class OSGTEXT_EXPORT PixmapFont:public RasterFont
|
|
{
|
|
public:
|
|
|
|
PixmapFont() {;}
|
|
|
|
PixmapFont(const std::string& font,
|
|
int point_size);
|
|
|
|
META_Object(PixmapFont);
|
|
|
|
protected:
|
|
|
|
virtual FTFont* createFontObj(void);
|
|
|
|
};
|
|
// PixmapFont
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// TextureFont
|
|
|
|
class OSGTEXT_EXPORT TextureFont:public RasterFont
|
|
{
|
|
public:
|
|
|
|
TextureFont() {;}
|
|
|
|
TextureFont(const std::string& font,
|
|
int point_size);
|
|
|
|
TextureFont(const std::string& font,
|
|
int point_size,
|
|
int textureSize );
|
|
|
|
META_Object(TextureFont);
|
|
|
|
protected:
|
|
|
|
virtual FTFont* createFontObj(void);
|
|
|
|
};
|
|
// PixmapFont
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// OutlineFont
|
|
class OSGTEXT_EXPORT OutlineFont:public VectorFont
|
|
{
|
|
public:
|
|
|
|
OutlineFont() {;}
|
|
|
|
OutlineFont(const std::string& font,
|
|
int point_size,
|
|
double precision);
|
|
|
|
META_Object(OutlineFont);
|
|
|
|
protected:
|
|
|
|
virtual FTFont* createFontObj(void);
|
|
|
|
|
|
};
|
|
// OutlineFont
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// PolygonFont
|
|
class OSGTEXT_EXPORT PolygonFont:public VectorFont
|
|
{
|
|
public:
|
|
|
|
PolygonFont() {;}
|
|
|
|
PolygonFont(const std::string& font,
|
|
int point_size,
|
|
double precision);
|
|
|
|
PolygonFont(const char* font,
|
|
int point_size,
|
|
double precision);
|
|
|
|
META_Object(PolygonFont);
|
|
|
|
protected:
|
|
|
|
virtual FTFont* createFontObj(void);
|
|
|
|
};
|
|
// PolygonFont
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
};
|
|
|
|
#endif // OSGTEXT_FONT
|