RigsofRods
Soft-body Physics Simulation
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
MovableText.h
Go to the documentation of this file.
1 /*
2  This source file is part of Rigs of Rods
3  Copyright 2005-2012 Pierre-Michel Ricordel
4  Copyright 2007-2012 Thomas Fischer
5 
6  For more information, see http://www.rigsofrods.org/
7 
8  Rigs of Rods is free software: you can redistribute it and/or modify
9  it under the terms of the GNU General Public License version 3, as
10  published by the Free Software Foundation.
11 
12  Rigs of Rods is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  GNU General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with Rigs of Rods. If not, see <http://www.gnu.org/licenses/>.
19 */
20 
25 
26 #pragma once
27 
28 #include "Application.h"
29 
30 #include <Ogre.h>
31 #include <Overlay/OgreFontManager.h>
32 
33 namespace RoR {
34 
37 
38 class MovableText : public Ogre::MovableObject, public Ogre::Renderable
39 {
40  /******************************** MovableText data ****************************/
41 public:
44 
45 protected:
46  std::string mFontName;
47  std::string mType;
48  Ogre::String mName;
49  std::string mCaption;
52 
53  Ogre::ColourValue mColor;
54  Ogre::RenderOperation mRenderOp;
55  Ogre::AxisAlignedBox mAABB;
56  Ogre::LightList mLList;
57 
58  Ogre::Real mCharHeight;
59  Ogre::Real mSpaceWidth;
60 
63  bool mOnTop;
64 
66  Ogre::Real mRadius;
67  Ogre::Real mAdditionalHeight;
68 
69  Ogre::Camera *mpCam;
70  Ogre::RenderWindow *mpWin;
71  Ogre::Font *mpFont;
72  Ogre::MaterialPtr mpMaterial;
73  Ogre::MaterialPtr mpBackgroundMaterial;
74 
75  /******************************** public methods ******************************/
76 public:
77  MovableText(const std::string &name, const std::string &caption,
78  const std::string &fontName = "highcontrast_black",
79  Ogre::Real charHeight = 1.0, const Ogre::ColourValue &color = Ogre::ColourValue::Black);
80  virtual ~MovableText();
81 
82  // Add to build on Shoggoth:
83  virtual void visitRenderables(Ogre::Renderable::Visitor*, bool) override {};
84 
85  // Set settings
86  void setFontName(const std::string &fontName);
87  void setCaption(const std::string &caption);
88  void setColor(const Ogre::ColourValue &color);
89  void setCharacterHeight(Ogre::Real height);
90  void setSpaceWidth(Ogre::Real width);
91  void setTextAlignment(const HorizontalAlignment& horizontalAlignment, const VerticalAlignment& verticalAlignment);
92  void setAdditionalHeight(Ogre::Real height );
93  void showOnTop(bool show=true);
94 
95  // Get settings
96  const std::string &getFontName() const {return mFontName;}
97  const std::string &getCaption() const {return mCaption;}
98  const Ogre::ColourValue &getColor() const {return mColor;}
99 
100  Ogre::uint getCharacterHeight() const {return (Ogre::uint) mCharHeight;}
101  Ogre::uint getSpaceWidth() const {return (Ogre::uint) mSpaceWidth;}
102  Ogre::Real getAdditionalHeight() const {return mAdditionalHeight;}
103  bool getShowOnTop() const {return mOnTop;}
104  Ogre::AxisAlignedBox GetAABB(void) { return mAABB; }
105 
106  /******************************** protected methods and overload **************/
107 protected:
108 
109  // from MovableText, create the object
110  void _setupGeometry();
111  void _updateColors();
112 
113  // from MovableObject
114  void getWorldTransforms(Ogre::Matrix4 *xform) const;
115  Ogre::Real getBoundingRadius(void) const {return mRadius;};
116  Ogre::Real getSquaredViewDepth(const Ogre::Camera *) const {return 0;};
117  const Ogre::Quaternion &getWorldOrientation(void) const;
118  const Ogre::Vector3 &getWorldPosition(void) const;
119  const Ogre::AxisAlignedBox &getBoundingBox(void) const {return mAABB;};
120  const Ogre::String &getName(void) const {return mName;};
121  const Ogre::String &getMovableType(void) const {static Ogre::String movType = "MovableText"; return movType;};
122 
123  void _notifyCurrentCamera(Ogre::Camera *cam);
124  void _updateRenderQueue(Ogre::RenderQueue* queue);
125 
126  // from renderable
127  void getRenderOperation(Ogre::RenderOperation &op);
128  const Ogre::MaterialPtr &getMaterial(void) const {ROR_ASSERT(mpMaterial);return mpMaterial;};
129  const Ogre::LightList &getLights(void) const {return mLList;};
130 };
131 
133 
134 } // namespace
135 
RoR::MovableText::setTextAlignment
void setTextAlignment(const HorizontalAlignment &horizontalAlignment, const VerticalAlignment &verticalAlignment)
Definition: MovableText.cpp:144
ROR_ASSERT
#define ROR_ASSERT(_EXPR)
Definition: Application.h:40
RoR::MovableText::setColor
void setColor(const Ogre::ColourValue &color)
Definition: MovableText.cpp:117
RoR::MovableText::mpBackgroundMaterial
Ogre::MaterialPtr mpBackgroundMaterial
Definition: MovableText.h:73
RoR::MovableText::mColor
Ogre::ColourValue mColor
Definition: MovableText.h:53
RoR::MovableText::GetAABB
Ogre::AxisAlignedBox GetAABB(void)
Definition: MovableText.h:104
RoR::MovableText::mFontName
std::string mFontName
Definition: MovableText.h:46
RoR::MovableText::H_CENTER
@ H_CENTER
Definition: MovableText.h:42
RoR::MovableText::mSpaceWidth
Ogre::Real mSpaceWidth
Definition: MovableText.h:59
RoR::MovableText::getBoundingBox
const Ogre::AxisAlignedBox & getBoundingBox(void) const
Definition: MovableText.h:119
RoR::MovableText::getSpaceWidth
Ogre::uint getSpaceWidth() const
Definition: MovableText.h:101
RoR::MovableText::showOnTop
void showOnTop(bool show=true)
Definition: MovableText.cpp:167
RoR::MovableText::setSpaceWidth
void setSpaceWidth(Ogre::Real width)
Definition: MovableText.cpp:135
RoR::MovableText::mVerticalAlignment
VerticalAlignment mVerticalAlignment
Definition: MovableText.h:51
AngelOgre::show
void show()
RoR::MovableText::mpCam
Ogre::Camera * mpCam
Definition: MovableText.h:69
RoR::MovableText::getAdditionalHeight
Ogre::Real getAdditionalHeight() const
Definition: MovableText.h:102
RoR::MovableText::MovableText
MovableText(const std::string &name, const std::string &caption, const std::string &fontName="highcontrast_black", Ogre::Real charHeight=1.0, const Ogre::ColourValue &color=Ogre::ColourValue::Black)
Definition: MovableText.cpp:37
RoR::MovableText::getWorldPosition
const Ogre::Vector3 & getWorldPosition(void) const
Definition: MovableText.cpp:495
RoR::MovableText::mCharHeight
Ogre::Real mCharHeight
Definition: MovableText.h:58
RoR::MovableText::mLList
Ogre::LightList mLList
Definition: MovableText.h:56
RoR::MovableText::getLights
const Ogre::LightList & getLights(void) const
Definition: MovableText.h:129
RoR::MovableText::mpWin
Ogre::RenderWindow * mpWin
Definition: MovableText.h:70
RoR::MovableText::mUpdateColors
bool mUpdateColors
Definition: MovableText.h:62
RoR::MovableText::getCaption
const std::string & getCaption() const
Definition: MovableText.h:97
RoR::MovableText::getCharacterHeight
Ogre::uint getCharacterHeight() const
Definition: MovableText.h:100
RoR::MovableText::setFontName
void setFontName(const std::string &fontName)
Definition: MovableText.cpp:73
RoR::MovableText
Definition: MovableText.h:38
RoR::MovableText::getFontName
const std::string & getFontName() const
Definition: MovableText.h:96
RoR::MovableText::getRenderOperation
void getRenderOperation(Ogre::RenderOperation &op)
Definition: MovableText.cpp:524
RoR::MovableText::getWorldOrientation
const Ogre::Quaternion & getWorldOrientation(void) const
Definition: MovableText.cpp:489
RoR::MovableText::mAABB
Ogre::AxisAlignedBox mAABB
Definition: MovableText.h:55
RoR::MovableText::mpMaterial
Ogre::MaterialPtr mpMaterial
Definition: MovableText.h:72
RoR::MovableText::getWorldTransforms
void getWorldTransforms(Ogre::Matrix4 *xform) const
Definition: MovableText.cpp:501
RoR::MovableText::mOnTop
bool mOnTop
Definition: MovableText.h:63
RoR::MovableText::_setupGeometry
void _setupGeometry()
Definition: MovableText.cpp:178
Application.h
Central state/object manager and communications hub.
RoR::MovableText::getMaterial
const Ogre::MaterialPtr & getMaterial(void) const
Definition: MovableText.h:128
RoR::MovableText::getSquaredViewDepth
Ogre::Real getSquaredViewDepth(const Ogre::Camera *) const
Definition: MovableText.h:116
RoR::MovableText::mRenderOp
Ogre::RenderOperation mRenderOp
Definition: MovableText.h:54
RoR::MovableText::V_BELOW
@ V_BELOW
Definition: MovableText.h:43
RoR::MovableText::VerticalAlignment
VerticalAlignment
Definition: MovableText.h:43
RoR::MovableText::mType
std::string mType
Definition: MovableText.h:47
RoR::MovableText::mName
Ogre::String mName
Definition: MovableText.h:48
RoR::MovableText::mpFont
Ogre::Font * mpFont
Definition: MovableText.h:71
RoR::MovableText::getColor
const Ogre::ColourValue & getColor() const
Definition: MovableText.h:98
RoR::MovableText::visitRenderables
virtual void visitRenderables(Ogre::Renderable::Visitor *, bool) override
Definition: MovableText.h:83
RoR::MovableText::H_LEFT
@ H_LEFT
Definition: MovableText.h:42
RoR::MovableText::setCaption
void setCaption(const std::string &caption)
Definition: MovableText.cpp:108
RoR::MovableText::setCharacterHeight
void setCharacterHeight(Ogre::Real height)
Definition: MovableText.cpp:126
RoR::MovableText::_updateColors
void _updateColors()
Definition: MovableText.cpp:462
RoR::MovableText::mCaption
std::string mCaption
Definition: MovableText.h:49
RoR::MovableText::getMovableType
const Ogre::String & getMovableType(void) const
Definition: MovableText.h:121
RoR::MovableText::HorizontalAlignment
HorizontalAlignment
Definition: MovableText.h:42
RoR::MovableText::mNeedUpdate
bool mNeedUpdate
Definition: MovableText.h:61
RoR::MovableText::~MovableText
virtual ~MovableText()
Definition: MovableText.cpp:67
RoR::MovableText::_updateRenderQueue
void _updateRenderQueue(Ogre::RenderQueue *queue)
Definition: MovableText.cpp:541
RoR::MovableText::mHorizontalAlignment
HorizontalAlignment mHorizontalAlignment
Definition: MovableText.h:50
RoR::MovableText::_notifyCurrentCamera
void _notifyCurrentCamera(Ogre::Camera *cam)
Definition: MovableText.cpp:536
RoR::MovableText::setAdditionalHeight
void setAdditionalHeight(Ogre::Real height)
Definition: MovableText.cpp:158
RoR::MovableText::mRadius
Ogre::Real mRadius
Definition: MovableText.h:66
RoR::MovableText::getBoundingRadius
Ogre::Real getBoundingRadius(void) const
Definition: MovableText.h:115
RoR::MovableText::getName
const Ogre::String & getName(void) const
Definition: MovableText.h:120
RoR
Definition: AppContext.h:36
RoR::MovableText::mAdditionalHeight
Ogre::Real mAdditionalHeight
Definition: MovableText.h:67
RoR::MovableText::mTimeUntilNextToggle
Ogre::Real mTimeUntilNextToggle
Definition: MovableText.h:65
RoR::MovableText::getShowOnTop
bool getShowOnTop() const
Definition: MovableText.h:103
RoR::MovableText::V_ABOVE
@ V_ABOVE
Definition: MovableText.h:43