Moved Font code across to using FontSizePair internally and on Font methods, but

still using original implemetations.
This commit is contained in:
Robert Osfield 2007-12-23 13:45:37 +00:00
parent dea067050c
commit f290b75bc9
10 changed files with 20 additions and 22 deletions

View File

@ -98,7 +98,7 @@ public:
const osg::StateSet* getStateSet() const { return _stateset.get(); }
/** Set the pixel width and height hint.*/
virtual void setFontResolution(unsigned int width, unsigned int height);
virtual void setFontResolution(const FontSizePair& fontSize);
unsigned int getFontWidth() const;
unsigned int getFontHeight() const;
@ -211,7 +211,7 @@ public:
virtual std::string getFileName() const = 0;
/** Set the pixel width and height hint.*/
virtual void setFontResolution(unsigned int width, unsigned int height) = 0;
virtual void setFontResolution(const FontSizePair& fontSize) = 0;
/** Get a Glyph for specified charcode, and the font size nearest to the current font size hint.*/
virtual Glyph* getGlyph(unsigned int charcode) = 0;

View File

@ -41,8 +41,8 @@ public:
* the closest supported font size will be selected.*/
void setFontResolution(unsigned int width, unsigned int height);
unsigned int getFontWidth() const { return _fontWidth; }
unsigned int getFontHeight() const { return _fontHeight; }
unsigned int getFontWidth() const { return _fontSize.first; }
unsigned int getFontHeight() const { return _fontSize.second; }
/** Set the text using a osgText::String.*/
@ -239,8 +239,7 @@ protected:
// members which have public access.
unsigned int _fontWidth;
unsigned int _fontHeight;
FontSizePair _fontSize;
float _characterHeight;
float _characterAspectRatio;
CharacterSizeMode _characterSizeMode;

View File

@ -58,8 +58,10 @@ FreeTypeFont::~FreeTypeFont()
}
}
void FreeTypeFont::setFontResolution(unsigned int width, unsigned int height)
void FreeTypeFont::setFontResolution(const osgText::FontSizePair& fontSize)
{
int width = fontSize.first;
int height = fontSize.second;
int maxAxis = std::max(width, height);
int margin = _facade->getGlyphImageMargin() + (int)((float)maxAxis * _facade->getGlyphImageMarginRatio());

View File

@ -31,7 +31,7 @@ public:
virtual std::string getFileName() const { return _filename; }
virtual void setFontResolution(unsigned int width, unsigned int height);
virtual void setFontResolution(const osgText::FontSizePair& fontSize);
virtual osgText::Font::Glyph* getGlyph(unsigned int charcode);

View File

@ -39,7 +39,7 @@ class ReaderWriterTXF : public osgDB::ReaderWriter
if (fileName.empty()) return ReadResult::FILE_NOT_FOUND;
std::ifstream stream;
stream.open(fileName.c_str(), std::ios::in | std::ios::binary);
stream.open(fileName.c_str(), std::ios::in | std::ios::binary);
if (!stream.is_open()) return ReadResult::FILE_NOT_FOUND;
TXFFont* impl = new TXFFont(fileName);

View File

@ -82,7 +82,7 @@ TXFFont::getFileName() const
}
void
TXFFont::setFontResolution(unsigned int, unsigned int)
TXFFont::setFontResolution(const osgText::FontSizePair&)
{
osg::notify(osg::INFO) << "TXFFont::setFontResolution(,) call is ignored." << std::endl;
}

View File

@ -28,7 +28,7 @@ public:
virtual std::string getFileName() const;
virtual void setFontResolution(unsigned int width, unsigned int height);
virtual void setFontResolution(const osgText::FontSizePair&);
virtual osgText::Font::Glyph* getGlyph(unsigned int charcode);

View File

@ -261,9 +261,9 @@ std::string Font::getFileName() const
return "";
}
void Font::setFontResolution(unsigned int width, unsigned int height)
void Font::setFontResolution(const FontSizePair& fontSize)
{
if (_implementation.valid()) _implementation->setFontResolution(width, height);
if (_implementation.valid()) _implementation->setFontResolution(fontSize);
}
unsigned int Font::getFontWidth() const

View File

@ -279,7 +279,7 @@ void Text::computeGlyphRepresentation()
unsigned int lineNumber = 0;
activefont->setFontResolution(_fontWidth,_fontHeight);
activefont->setFontResolution(_fontSize);
float hr = _characterHeight/(float)activefont->getFontHeight();
float wr = hr/_characterAspectRatio;
@ -696,9 +696,9 @@ void Text::computePositions(unsigned int contextID) const
scale_font_vert=-scale_font_vert;
matrix.postMult(osg::Matrix::scale(scale_font_hori, scale_font_vert,1.0f));
}
else if (pixelSizeVert>_fontHeight)
else if (pixelSizeVert>getFontHeight())
{
float scale_font = _fontHeight/pixelSizeVert;
float scale_font = getFontHeight()/pixelSizeVert;
matrix.postMult(osg::Matrix::scale(scale_font, scale_font,1.0f));
}

View File

@ -32,8 +32,7 @@ using namespace osgText;
//#define TREES_CODE_FOR_MAKING_SPACES_EDITABLE
TextBase::TextBase():
_fontWidth(32),
_fontHeight(32),
_fontSize(32,32),
_characterHeight(32),
_characterAspectRatio(1.0f),
_characterSizeMode(OBJECT_COORDS),
@ -55,8 +54,7 @@ TextBase::TextBase():
TextBase::TextBase(const TextBase& textBase,const osg::CopyOp& copyop):
osg::Drawable(textBase,copyop),
_fontWidth(textBase._fontWidth),
_fontHeight(textBase._fontHeight),
_fontSize(textBase._fontSize),
_characterHeight(textBase._characterHeight),
_characterAspectRatio(textBase._characterAspectRatio),
_characterSizeMode(textBase._characterSizeMode),
@ -82,8 +80,7 @@ TextBase::~TextBase()
void TextBase::setFontResolution(unsigned int width, unsigned int height)
{
_fontWidth = width;
_fontHeight = height;
_fontSize = FontSizePair(width,height);
computeGlyphRepresentation();
}