Added support for setting the axis which the text should be aligned along.

This commit is contained in:
Robert Osfield 2002-12-05 12:01:38 +00:00
parent a4404a388d
commit d7692f83d7
2 changed files with 17 additions and 0 deletions

View File

@ -64,6 +64,13 @@ class OSGTEXT_EXPORT Text : public osg::Drawable
DEFAULT = TEXT,
};
enum AxisAlignment
{
XY_PLANE,
XZ_PLANE,
YZ_PLANE
};
Text();
Text(const Text& text,const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY);
Text(Font* font);
@ -93,6 +100,9 @@ class OSGTEXT_EXPORT Text : public osg::Drawable
void setAlignment(int alignment);
int getAlignment() const { return _alignment; }
void setAxisAlignment(AxisAlignment axis) { _axisAlignment = axis; dirtyDisplayList(); }
AxisAlignment getAxisAlignment() const { return _axisAlignment; }
void setFont(Font* font);
Font* getFont() { return _font.get(); }
const Font* getFont() const { return _font.get(); }
@ -137,6 +147,7 @@ class OSGTEXT_EXPORT Text : public osg::Drawable
int _alignment;
int _drawMode;
int _boundingBoxType;
AxisAlignment _axisAlignment;
osg::Vec3 _pos;
osg::Vec3 _alignmentPos;

View File

@ -45,6 +45,7 @@ Text::Text(const Text& text,const osg::CopyOp& copyop):
_alignment(text._alignment),
_drawMode(text._drawMode),
_boundingBoxType(text._boundingBoxType),
_axisAlignment(text._axisAlignment),
_pos(text._pos),
_alignmentPos(text._alignmentPos),
_color(text._color)
@ -122,8 +123,11 @@ setDefaults()
_boundingBoxType=GLYPH;
_boundingBoxType=GEOMETRY;
_axisAlignment = XY_PLANE;
_initAlignment=false;
_useDisplayList=false;
}
@ -209,6 +213,8 @@ void Text::drawImplementation(State& state) const
{
case POLYGON:
glTranslatef(drawPos.x(),drawPos.y(),drawPos.z());
if(_axisAlignment==XZ_PLANE) glRotatef(90.0f,1.0f,0.0f,0.0f);
else if (_axisAlignment==YZ_PLANE) { glRotatef(90.0f,0.0f,0.0f,1.0f); glRotatef(90.0f,1.0f,0.0f,0.0f);}
_font->output(state,_text.c_str());
break;
case OUTLINE: