movable_text.h
Go to the documentation of this file.
00001 /*
00002  * Copyright (c) 2008, Willow Garage, Inc.
00003  * All rights reserved.
00004  *
00005  * Redistribution and use in source and binary forms, with or without
00006  * modification, are permitted provided that the following conditions are met:
00007  *
00008  *     * Redistributions of source code must retain the above copyright
00009  *       notice, this list of conditions and the following disclaimer.
00010  *     * Redistributions in binary form must reproduce the above copyright
00011  *       notice, this list of conditions and the following disclaimer in the
00012  *       documentation and/or other materials provided with the distribution.
00013  *     * Neither the name of the Willow Garage, Inc. nor the names of its
00014  *       contributors may be used to endorse or promote products derived from
00015  *       this software without specific prior written permission.
00016  *
00017  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00018  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00020  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
00021  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
00022  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
00023  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00024  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
00025  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00026  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00027  * POSSIBILITY OF SUCH DAMAGE.
00028  */
00029 
00030 // Adapted from: http://www.ogre3d.org/wiki/index.php/MovableText
00031 //          now: http://www.ogre3d.org/tikiwiki/tiki-index.php?page=MovableText
00032 // Original authors:
00033 /*
00034  * File: MovableText.h
00035  *
00036  * description: This create create a billboarding object that display a text.
00037  *
00038  * @author  2003 by cTh see gavocanov@rambler.ru
00039  * @update  2006 by barraq see nospam@barraquand.com
00040  */
00041 
00042 #ifndef OGRE_TOOLS_MOVABLE_TEXT_H
00043 #define OGRE_TOOLS_MOVABLE_TEXT_H
00044 
00045 #include <OgreMovableObject.h>
00046 #include <OgreRenderable.h>
00047 #include <OgreVector3.h>
00048 #include <OgreQuaternion.h>
00049 #include <OgreSharedPtr.h>
00050 
00051 
00052 namespace Ogre
00053 {
00054 class RenderQueue;
00055 class Camera;
00056 class Font;
00057 }
00058 
00059 namespace rviz
00060 {
00061 
00062 class MovableText : public Ogre::MovableObject, public Ogre::Renderable
00063 {
00064   /******************************** MovableText data ****************************/
00065 public:
00066   enum HorizontalAlignment
00067   {
00068     H_LEFT, H_CENTER
00069   };
00070   enum VerticalAlignment
00071   {
00072     V_BELOW, V_ABOVE, V_CENTER
00073   };
00074 
00075 protected:
00076   Ogre::String mFontName;
00077   Ogre::String mType;
00078   Ogre::String mName;
00079   Ogre::String mCaption;
00080   HorizontalAlignment mHorizontalAlignment;
00081   VerticalAlignment mVerticalAlignment;
00082 
00083   Ogre::ColourValue mColor;
00084   Ogre::RenderOperation mRenderOp;
00085   Ogre::AxisAlignedBox mAABB;
00086   Ogre::LightList mLList;
00087 
00088   Ogre::Real mCharHeight;
00089   Ogre::Real mLineSpacing;
00090   Ogre::Real mSpaceWidth;
00091 
00092   bool mNeedUpdate;
00093   bool mUpdateColors;
00094   bool mOnTop;
00095 
00096   Ogre::Real mTimeUntilNextToggle;
00097   Ogre::Real mRadius;
00098 
00099   Ogre::Vector3 mGlobalTranslation;
00100   Ogre::Vector3 mLocalTranslation;
00101 
00102   Ogre::Camera *mpCam;
00103   Ogre::RenderWindow *mpWin;
00104   Ogre::Font *mpFont;
00105   Ogre::MaterialPtr mpMaterial;
00106   Ogre::MaterialPtr mpBackgroundMaterial;
00107 
00108   /******************************** public methods ******************************/
00109 public:
00110   MovableText(
00111     const Ogre::String &caption,
00112     const Ogre::String &fontName = "Liberation Sans",
00113     Ogre::Real charHeight = 1.0,
00114     const Ogre::ColourValue &color = Ogre::ColourValue::White);
00115   virtual ~MovableText();
00116 
00117 #if (OGRE_VERSION_MAJOR >= 1 && OGRE_VERSION_MINOR >= 6)
00118   virtual void visitRenderables(Ogre::Renderable::Visitor* visitor, bool debugRenderables = false);
00119 #endif
00120 
00121   // Set settings
00122   void setFontName(const Ogre::String &fontName);
00123   void setCaption(const Ogre::String &caption);
00124   void setColor(const Ogre::ColourValue &color);
00125   void setCharacterHeight(Ogre::Real height);
00126   void setLineSpacing(Ogre::Real height);
00127   void setSpaceWidth(Ogre::Real width);
00128   void setTextAlignment(const HorizontalAlignment& horizontalAlignment,
00129       const VerticalAlignment& verticalAlignment);
00130   void setGlobalTranslation(Ogre::Vector3 trans);
00131   void setLocalTranslation(Ogre::Vector3 trans);
00132   void showOnTop(bool show = true);
00133 
00134   // Get settings
00135   const Ogre::String &getFontName() const
00136   {
00137     return mFontName;
00138   }
00139   const Ogre::String &getCaption() const
00140   {
00141     return mCaption;
00142   }
00143   const Ogre::ColourValue &getColor() const
00144   {
00145     return mColor;
00146   }
00147 
00148   Ogre::Real getCharacterHeight() const
00149   {
00150     return mCharHeight;
00151   }
00152   Ogre::Real getSpaceWidth() const
00153   {
00154     return mSpaceWidth;
00155   }
00156   Ogre::Vector3 getGlobalTranslation() const
00157   {
00158     return mGlobalTranslation;
00159   }
00160   Ogre::Vector3 getLocalTranslation() const
00161   {
00162     return mLocalTranslation;
00163   }
00164   bool getShowOnTop() const
00165   {
00166     return mOnTop;
00167   }
00168   Ogre::AxisAlignedBox GetAABB(void)
00169   {
00170     return mAABB;
00171   }
00172 
00173   const Ogre::MaterialPtr &getMaterial(void) const
00174   {
00175     assert(!mpMaterial.isNull());
00176     return mpMaterial;
00177   }
00178   ;
00179 
00180 
00181   /******************************** protected methods and overload **************/
00182 protected:
00183 
00184   // from MovableText, create the object
00185   void _setupGeometry();
00186   void _updateColors();
00187 
00188   // from Ogre::MovableObject
00189   void getWorldTransforms(Ogre::Matrix4 *xform) const;
00190   Ogre::Real getBoundingRadius(void) const
00191   {
00192     return mRadius;
00193   }
00194   ;
00195   Ogre::Real getSquaredViewDepth(const Ogre::Camera *cam) const
00196   {
00197     return 0;
00198   }
00199   ;
00200   const Ogre::Quaternion &getWorldOrientation(void) const;
00201   const Ogre::Vector3 &getWorldPosition(void) const;
00202   const Ogre::AxisAlignedBox &getBoundingBox(void) const
00203   {
00204     return mAABB;
00205   }
00206   ;
00207   const Ogre::String &getName(void) const
00208   {
00209     return mName;
00210   }
00211   ;
00212   const Ogre::String &getMovableType(void) const
00213   {
00214     static Ogre::String movType = "MovableText";
00215     return movType;
00216   }
00217   ;
00218 
00219   void _notifyCurrentCamera(Ogre::Camera *cam);
00220   void _updateRenderQueue(Ogre::RenderQueue* queue);
00221 
00222   // from renderable
00223   void getRenderOperation(Ogre::RenderOperation &op);
00224   const Ogre::LightList &getLights(void) const
00225   {
00226     return mLList;
00227   }
00228   ;
00229 };
00230 
00231 }
00232 
00233 #endif


rviz
Author(s): Dave Hershberger, David Gossow, Josh Faust
autogenerated on Thu Jun 6 2019 18:02:15