From f290b75bc994d9eb506ecd7917de70ab24aea0c0 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Sun, 23 Dec 2007 13:45:37 +0000 Subject: [PATCH] Moved Font code across to using FontSizePair internally and on Font methods, but still using original implemetations. --- include/osgText/Font | 4 ++-- include/osgText/TextBase | 7 +++---- src/osgPlugins/freetype/FreeTypeFont.cpp | 4 +++- src/osgPlugins/freetype/FreeTypeFont.h | 2 +- src/osgPlugins/txf/ReaderWriterTXF.cpp | 2 +- src/osgPlugins/txf/TXFFont.cpp | 2 +- src/osgPlugins/txf/TXFFont.h | 2 +- src/osgText/Font.cpp | 4 ++-- src/osgText/Text.cpp | 6 +++--- src/osgText/TextBase.cpp | 9 +++------ 10 files changed, 20 insertions(+), 22 deletions(-) diff --git a/include/osgText/Font b/include/osgText/Font index ac7af3718..c4388a2f9 100644 --- a/include/osgText/Font +++ b/include/osgText/Font @@ -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; diff --git a/include/osgText/TextBase b/include/osgText/TextBase index 1d9062359..836c7054e 100644 --- a/include/osgText/TextBase +++ b/include/osgText/TextBase @@ -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; diff --git a/src/osgPlugins/freetype/FreeTypeFont.cpp b/src/osgPlugins/freetype/FreeTypeFont.cpp index 25219e858..d0b1f9222 100644 --- a/src/osgPlugins/freetype/FreeTypeFont.cpp +++ b/src/osgPlugins/freetype/FreeTypeFont.cpp @@ -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()); diff --git a/src/osgPlugins/freetype/FreeTypeFont.h b/src/osgPlugins/freetype/FreeTypeFont.h index fef2f3dac..8a62508af 100644 --- a/src/osgPlugins/freetype/FreeTypeFont.h +++ b/src/osgPlugins/freetype/FreeTypeFont.h @@ -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); diff --git a/src/osgPlugins/txf/ReaderWriterTXF.cpp b/src/osgPlugins/txf/ReaderWriterTXF.cpp index df61ad8b6..5f0438c46 100644 --- a/src/osgPlugins/txf/ReaderWriterTXF.cpp +++ b/src/osgPlugins/txf/ReaderWriterTXF.cpp @@ -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); diff --git a/src/osgPlugins/txf/TXFFont.cpp b/src/osgPlugins/txf/TXFFont.cpp index b33963014..c79bbf15c 100644 --- a/src/osgPlugins/txf/TXFFont.cpp +++ b/src/osgPlugins/txf/TXFFont.cpp @@ -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; } diff --git a/src/osgPlugins/txf/TXFFont.h b/src/osgPlugins/txf/TXFFont.h index a48d2b400..73384d5f8 100644 --- a/src/osgPlugins/txf/TXFFont.h +++ b/src/osgPlugins/txf/TXFFont.h @@ -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); diff --git a/src/osgText/Font.cpp b/src/osgText/Font.cpp index 4a489d286..751a30203 100644 --- a/src/osgText/Font.cpp +++ b/src/osgText/Font.cpp @@ -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 diff --git a/src/osgText/Text.cpp b/src/osgText/Text.cpp index 186b6a61c..6d944fcf5 100644 --- a/src/osgText/Text.cpp +++ b/src/osgText/Text.cpp @@ -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)); } diff --git a/src/osgText/TextBase.cpp b/src/osgText/TextBase.cpp index 682774f20..c9d00ea0e 100644 --- a/src/osgText/TextBase.cpp +++ b/src/osgText/TextBase.cpp @@ -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(); }