From a7a96e710c4e1d82f133c131d964c4433651e963 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Sat, 20 Dec 2003 14:23:04 +0000 Subject: [PATCH] Added support for REVERESED_XY_PLANE, REVERESED_XZ_PLANE and REVERESED_YZ_PLANE's for the axis alignement to allow the text to be reversed. --- src/osgPlugins/osgText/IO_Text.cpp | 3 +++ src/osgText/Text.cpp | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/osgPlugins/osgText/IO_Text.cpp b/src/osgPlugins/osgText/IO_Text.cpp index 964f38e16..f3fc3bc38 100644 --- a/src/osgPlugins/osgText/IO_Text.cpp +++ b/src/osgPlugins/osgText/IO_Text.cpp @@ -117,8 +117,11 @@ bool Text_readLocalData(osg::Object &obj, osgDB::Input &fr) { std::string str = fr[1].getStr(); if (str=="XY_PLANE") text.setAxisAlignment(osgText::Text::XY_PLANE); + else if (str=="REVERSED_XY_PLANE") text.setAxisAlignment(osgText::Text::REVERSED_XY_PLANE); else if (str=="XZ_PLANE") text.setAxisAlignment(osgText::Text::XZ_PLANE); + else if (str=="REVERSED_XZ_PLANE") text.setAxisAlignment(osgText::Text::REVERSED_XZ_PLANE); else if (str=="YZ_PLANE") text.setAxisAlignment(osgText::Text::YZ_PLANE); + else if (str=="REVERSED_YZ_PLANE") text.setAxisAlignment(osgText::Text::REVERSED_YZ_PLANE); else if (str=="SCREEN") text.setAxisAlignment(osgText::Text::SCREEN); fr += 2; itAdvanced = true; diff --git a/src/osgText/Text.cpp b/src/osgText/Text.cpp index 9a61ebd1e..58c5e9278 100644 --- a/src/osgText/Text.cpp +++ b/src/osgText/Text.cpp @@ -158,13 +158,25 @@ void Text::setAxisAlignment(AxisAlignment axis) case XZ_PLANE: setRotation(osg::Quat(osg::inDegrees(90.0f),osg::Vec3(1.0f,0.0f,0.0f))); break; + case REVERSED_XZ_PLANE: + setRotation(osg::Quat(osg::inDegrees(180.0f),osg::Vec3(0.0f,1.0f,0.0f))* + osg::Quat(osg::inDegrees(90.0f),osg::Vec3(1.0f,0.0f,0.0f))); + break; case YZ_PLANE: setRotation(osg::Quat(osg::inDegrees(90.0f),osg::Vec3(1.0f,0.0f,0.0f))* osg::Quat(osg::inDegrees(90.0f),osg::Vec3(0.0f,0.0f,1.0f))); break; + case REVERSED_YZ_PLANE: + setRotation(osg::Quat(osg::inDegrees(180.0f),osg::Vec3(0.0f,1.0f,0.0f))* + osg::Quat(osg::inDegrees(90.0f),osg::Vec3(1.0f,0.0f,0.0f))* + osg::Quat(osg::inDegrees(90.0f),osg::Vec3(0.0f,0.0f,1.0f))); + break; case XY_PLANE: setRotation(osg::Quat()); // nop - already on XY plane. break; + case REVERSED_XY_PLANE: + setRotation(osg::Quat(osg::inDegrees(180.0f),osg::Vec3(0.0f,1.0f,0.0f))); + break; case SCREEN: setAutoRotateToScreen(true); break;