aboutsummaryrefslogtreecommitdiff
path: root/src/irrlicht_changes/static_text.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/irrlicht_changes/static_text.h')
-rw-r--r--src/irrlicht_changes/static_text.h315
1 files changed, 161 insertions, 154 deletions
diff --git a/src/irrlicht_changes/static_text.h b/src/irrlicht_changes/static_text.h
index 5c4db3e95..1f111ea56 100644
--- a/src/irrlicht_changes/static_text.h
+++ b/src/irrlicht_changes/static_text.h
@@ -28,202 +28,207 @@ namespace irr
namespace gui
{
-const EGUI_ELEMENT_TYPE EGUIET_ENRICHED_STATIC_TEXT = (EGUI_ELEMENT_TYPE)(0x1000);
+ const EGUI_ELEMENT_TYPE EGUIET_ENRICHED_STATIC_TEXT = (EGUI_ELEMENT_TYPE)(0x1000);
-class StaticText : public IGUIStaticText
-{
-public:
- // StaticText is translated by EnrichedString.
- // No need to use translate_string()
- StaticText(const EnrichedString &text, bool border, IGUIEnvironment *environment,
- IGUIElement *parent, s32 id, const core::rect<s32> &rectangle,
+ class StaticText : public IGUIStaticText
+ {
+ public:
+
+ // StaticText is translated by EnrichedString.
+ // No need to use translate_string()
+ StaticText(const EnrichedString &text, bool border, IGUIEnvironment* environment,
+ IGUIElement* parent, s32 id, const core::rect<s32>& rectangle,
bool background = false);
- //! destructor
- virtual ~StaticText();
+ //! destructor
+ virtual ~StaticText();
+
+ static irr::gui::IGUIStaticText *add(
+ irr::gui::IGUIEnvironment *guienv,
+ const EnrichedString &text,
+ const core::rect< s32 > &rectangle,
+ bool border = false,
+ bool wordWrap = true,
+ irr::gui::IGUIElement *parent = NULL,
+ s32 id = -1,
+ bool fillBackground = false)
+ {
+ if (parent == NULL) {
+ // parent is NULL, so we must find one, or we need not to drop
+ // result, but then there will be a memory leak.
+ //
+ // What Irrlicht does is to use guienv as a parent, but the problem
+ // is that guienv is here only an IGUIEnvironment, while it is a
+ // CGUIEnvironment in Irrlicht, which inherits from both IGUIElement
+ // and IGUIEnvironment.
+ //
+ // A solution would be to dynamic_cast guienv to a
+ // IGUIElement*, but Irrlicht is shipped without rtti support
+ // in some distributions, causing the dymanic_cast to segfault.
+ //
+ // Thus, to find the parent, we create a dummy StaticText and ask
+ // for its parent, and then remove it.
+ irr::gui::IGUIStaticText *dummy_text =
+ guienv->addStaticText(L"", rectangle, border, wordWrap,
+ parent, id, fillBackground);
+ parent = dummy_text->getParent();
+ dummy_text->remove();
+ }
+ irr::gui::IGUIStaticText *result = new irr::gui::StaticText(
+ text, border, guienv, parent,
+ id, rectangle, fillBackground);
+
+ result->setWordWrap(wordWrap);
+ result->drop();
+ return result;
+ }
- static irr::gui::IGUIStaticText *add(irr::gui::IGUIEnvironment *guienv,
- const EnrichedString &text, const core::rect<s32> &rectangle,
- bool border = false, bool wordWrap = true,
- irr::gui::IGUIElement *parent = NULL, s32 id = -1,
+ static irr::gui::IGUIStaticText *add(
+ irr::gui::IGUIEnvironment *guienv,
+ const wchar_t *text,
+ const core::rect< s32 > &rectangle,
+ bool border = false,
+ bool wordWrap = true,
+ irr::gui::IGUIElement *parent = NULL,
+ s32 id = -1,
bool fillBackground = false)
- {
- if (parent == NULL) {
- // parent is NULL, so we must find one, or we need not to drop
- // result, but then there will be a memory leak.
- //
- // What Irrlicht does is to use guienv as a parent, but the
- // problem is that guienv is here only an IGUIEnvironment, while
- // it is a CGUIEnvironment in Irrlicht, which inherits from both
- // IGUIElement and IGUIEnvironment.
- //
- // A solution would be to dynamic_cast guienv to a
- // IGUIElement*, but Irrlicht is shipped without rtti support
- // in some distributions, causing the dymanic_cast to segfault.
- //
- // Thus, to find the parent, we create a dummy StaticText and ask
- // for its parent, and then remove it.
- irr::gui::IGUIStaticText *dummy_text = guienv->addStaticText(L"",
- rectangle, border, wordWrap, parent, id,
- fillBackground);
- parent = dummy_text->getParent();
- dummy_text->remove();
+ {
+ return add(guienv, EnrichedString(text), rectangle, border, wordWrap, parent,
+ id, fillBackground);
}
- irr::gui::IGUIStaticText *result = new irr::gui::StaticText(text, border,
- guienv, parent, id, rectangle, fillBackground);
- result->setWordWrap(wordWrap);
- result->drop();
- return result;
- }
+ //! draws the element and its children
+ virtual void draw();
- static irr::gui::IGUIStaticText *add(irr::gui::IGUIEnvironment *guienv,
- const wchar_t *text, const core::rect<s32> &rectangle,
- bool border = false, bool wordWrap = true,
- irr::gui::IGUIElement *parent = NULL, s32 id = -1,
- bool fillBackground = false)
- {
- return add(guienv, EnrichedString(text), rectangle, border, wordWrap,
- parent, id, fillBackground);
- }
+ //! Sets another skin independent font.
+ virtual void setOverrideFont(IGUIFont* font=0);
- //! draws the element and its children
- virtual void draw();
+ //! Gets the override font (if any)
+ virtual IGUIFont* getOverrideFont() const;
- //! Sets another skin independent font.
- virtual void setOverrideFont(IGUIFont *font = 0);
+ //! Get the font which is used right now for drawing
+ virtual IGUIFont* getActiveFont() const;
- //! Gets the override font (if any)
- virtual IGUIFont *getOverrideFont() const;
+ //! Sets another color for the text.
+ virtual void setOverrideColor(video::SColor color);
- //! Get the font which is used right now for drawing
- virtual IGUIFont *getActiveFont() const;
+ //! Sets another color for the background.
+ virtual void setBackgroundColor(video::SColor color);
- //! Sets another color for the text.
- virtual void setOverrideColor(video::SColor color);
+ //! Sets whether to draw the background
+ virtual void setDrawBackground(bool draw);
- //! Sets another color for the background.
- virtual void setBackgroundColor(video::SColor color);
+ //! Gets the background color
+ virtual video::SColor getBackgroundColor() const;
- //! Sets whether to draw the background
- virtual void setDrawBackground(bool draw);
+ //! Checks if background drawing is enabled
+ virtual bool isDrawBackgroundEnabled() const;
- //! Gets the background color
- virtual video::SColor getBackgroundColor() const;
+ //! Sets whether to draw the border
+ virtual void setDrawBorder(bool draw);
- //! Checks if background drawing is enabled
- virtual bool isDrawBackgroundEnabled() const;
+ //! Checks if border drawing is enabled
+ virtual bool isDrawBorderEnabled() const;
- //! Sets whether to draw the border
- virtual void setDrawBorder(bool draw);
+ //! Sets alignment mode for text
+ virtual void setTextAlignment(EGUI_ALIGNMENT horizontal, EGUI_ALIGNMENT vertical);
- //! Checks if border drawing is enabled
- virtual bool isDrawBorderEnabled() const;
+ //! Gets the override color
+ #if IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR <= 7
+ virtual const video::SColor& getOverrideColor() const;
+ #else
+ virtual video::SColor getOverrideColor() const;
+ #endif
- //! Sets alignment mode for text
- virtual void setTextAlignment(EGUI_ALIGNMENT horizontal, EGUI_ALIGNMENT vertical);
+ //! Sets if the static text should use the overide color or the
+ //! color in the gui skin.
+ virtual void enableOverrideColor(bool enable);
-//! Gets the override color
-#if IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR <= 7
- virtual const video::SColor &getOverrideColor() const;
-#else
- virtual video::SColor getOverrideColor() const;
-#endif
+ //! Checks if an override color is enabled
+ virtual bool isOverrideColorEnabled() const;
- //! Sets if the static text should use the overide color or the
- //! color in the gui skin.
- virtual void enableOverrideColor(bool enable);
+ //! Set whether the text in this label should be clipped if it goes outside bounds
+ virtual void setTextRestrainedInside(bool restrainedInside);
- //! Checks if an override color is enabled
- virtual bool isOverrideColorEnabled() const;
+ //! Checks if the text in this label should be clipped if it goes outside bounds
+ virtual bool isTextRestrainedInside() const;
- //! Set whether the text in this label should be clipped if it goes outside bounds
- virtual void setTextRestrainedInside(bool restrainedInside);
+ //! Enables or disables word wrap for using the static text as
+ //! multiline text control.
+ virtual void setWordWrap(bool enable);
- //! Checks if the text in this label should be clipped if it goes outside bounds
- virtual bool isTextRestrainedInside() const;
+ //! Checks if word wrap is enabled
+ virtual bool isWordWrapEnabled() const;
- //! Enables or disables word wrap for using the static text as
- //! multiline text control.
- virtual void setWordWrap(bool enable);
+ //! Sets the new caption of this element.
+ virtual void setText(const wchar_t* text);
- //! Checks if word wrap is enabled
- virtual bool isWordWrapEnabled() const;
+ //! Returns the height of the text in pixels when it is drawn.
+ virtual s32 getTextHeight() const;
- //! Sets the new caption of this element.
- virtual void setText(const wchar_t *text);
+ //! Returns the width of the current text, in the current font
+ virtual s32 getTextWidth() const;
- //! Returns the height of the text in pixels when it is drawn.
- virtual s32 getTextHeight() const;
+ //! Updates the absolute position, splits text if word wrap is enabled
+ virtual void updateAbsolutePosition();
- //! Returns the width of the current text, in the current font
- virtual s32 getTextWidth() const;
+ //! Set whether the string should be interpreted as right-to-left (RTL) text
+ /** \note This component does not implement the Unicode bidi standard, the
+ text of the component should be already RTL if you call this. The
+ main difference when RTL is enabled is that the linebreaks for multiline
+ elements are performed starting from the end.
+ */
+ virtual void setRightToLeft(bool rtl);
- //! Updates the absolute position, splits text if word wrap is enabled
- virtual void updateAbsolutePosition();
+ //! Checks if the text should be interpreted as right-to-left text
+ virtual bool isRightToLeft() const;
- //! Set whether the string should be interpreted as right-to-left (RTL) text
- /** \note This component does not implement the Unicode bidi standard, the
- text of the component should be already RTL if you call this. The
- main difference when RTL is enabled is that the linebreaks for multiline
- elements are performed starting from the end.
- */
- virtual void setRightToLeft(bool rtl);
+ //! Writes attributes of the element.
+ virtual void serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options) const;
- //! Checks if the text should be interpreted as right-to-left text
- virtual bool isRightToLeft() const;
+ //! Reads attributes of the element
+ virtual void deserializeAttributes(io::IAttributes* in, io::SAttributeReadWriteOptions* options);
- //! Writes attributes of the element.
- virtual void serializeAttributes(io::IAttributes *out,
- io::SAttributeReadWriteOptions *options) const;
+ virtual bool hasType(EGUI_ELEMENT_TYPE t) const {
+ return (t == EGUIET_ENRICHED_STATIC_TEXT) || (t == EGUIET_STATIC_TEXT);
+ };
- //! Reads attributes of the element
- virtual void deserializeAttributes(
- io::IAttributes *in, io::SAttributeReadWriteOptions *options);
+ virtual bool hasType(EGUI_ELEMENT_TYPE t) {
+ return (t == EGUIET_ENRICHED_STATIC_TEXT) || (t == EGUIET_STATIC_TEXT);
+ };
- virtual bool hasType(EGUI_ELEMENT_TYPE t) const
- {
- return (t == EGUIET_ENRICHED_STATIC_TEXT) || (t == EGUIET_STATIC_TEXT);
- };
+ void setText(const EnrichedString &text);
- virtual bool hasType(EGUI_ELEMENT_TYPE t)
- {
- return (t == EGUIET_ENRICHED_STATIC_TEXT) || (t == EGUIET_STATIC_TEXT);
- };
+ private:
- void setText(const EnrichedString &text);
+ //! Breaks the single text line.
+ void updateText();
-private:
- //! Breaks the single text line.
- void updateText();
+ EGUI_ALIGNMENT HAlign, VAlign;
+ bool Border;
+ bool WordWrap;
+ bool Background;
+ bool RestrainTextInside;
+ bool RightToLeft;
- EGUI_ALIGNMENT HAlign, VAlign;
- bool Border;
- bool WordWrap;
- bool Background;
- bool RestrainTextInside;
- bool RightToLeft;
+ gui::IGUIFont* OverrideFont;
+ gui::IGUIFont* LastBreakFont; // stored because: if skin changes, line break must be recalculated.
- gui::IGUIFont *OverrideFont;
- gui::IGUIFont *LastBreakFont; // stored because: if skin changes, line break must
- // be recalculated.
+ EnrichedString ColoredText;
+ std::vector<EnrichedString> BrokenText;
+ };
- EnrichedString ColoredText;
- std::vector<EnrichedString> BrokenText;
-};
} // end namespace gui
} // end namespace irr
-inline void setStaticText(
- irr::gui::IGUIStaticText *static_text, const EnrichedString &text)
+inline void setStaticText(irr::gui::IGUIStaticText *static_text, const EnrichedString &text)
{
// dynamic_cast not possible due to some distributions shipped
// without rtti support in irrlicht
if (static_text->hasType(irr::gui::EGUIET_ENRICHED_STATIC_TEXT)) {
- irr::gui::StaticText *stext =
- static_cast<irr::gui::StaticText *>(static_text);
+ irr::gui::StaticText* stext = static_cast<irr::gui::StaticText*>(static_text);
stext->setText(text);
} else {
static_text->setText(text.c_str());
@@ -240,14 +245,17 @@ namespace gui
class StaticText
{
public:
- static irr::gui::IGUIStaticText *add(irr::gui::IGUIEnvironment *guienv,
- const EnrichedString &text, const core::rect<s32> &rectangle,
- bool border = false, bool wordWrap = true,
- irr::gui::IGUIElement *parent = NULL, s32 id = -1,
- bool fillBackground = false)
+ static irr::gui::IGUIStaticText *add(
+ irr::gui::IGUIEnvironment *guienv,
+ const EnrichedString &text,
+ const core::rect< s32 > &rectangle,
+ bool border = false,
+ bool wordWrap = true,
+ irr::gui::IGUIElement *parent = NULL,
+ s32 id = -1,
+ bool fillBackground = false)
{
- return guienv->addStaticText(text.c_str(), rectangle, border, wordWrap,
- parent, id, fillBackground);
+ return guienv->addStaticText(text.c_str(), rectangle, border, wordWrap, parent, id, fillBackground);
}
};
@@ -255,8 +263,7 @@ public:
} // end namespace irr
-inline void setStaticText(
- irr::gui::IGUIStaticText *static_text, const EnrichedString &text)
+inline void setStaticText(irr::gui::IGUIStaticText *static_text, const EnrichedString &text)
{
static_text->setText(text.c_str());
}