]> git.tdb.fi Git - libs/gltk.git/commitdiff
Make the Text class interface more obvious by not using a reference to pointer
authorMikko Rasa <tdb@tdb.fi>
Tue, 20 Apr 2010 07:57:24 +0000 (07:57 +0000)
committerMikko Rasa <tdb@tdb.fi>
Tue, 20 Apr 2010 07:57:24 +0000 (07:57 +0000)
source/button.cpp
source/dropdown.cpp
source/entry.cpp
source/label.cpp
source/text.cpp
source/text.h
source/toggle.cpp

index 292625de9f9e4bba00e6598f1ff1eed0d645c207..e7548386e0467cd6f8caec148973098b2fe7bffa 100644 (file)
@@ -14,7 +14,7 @@ namespace GLtk {
 
 Button::Button(const Resources &r, const std::string &t):
        Widget(r),
-       text(style),
+       text(),
        icon(0),
        pressed(false)
 {
@@ -94,7 +94,7 @@ void Button::render_special(const Part &part) const
 
 void Button::on_style_change()
 {
-       text.update_style();
+       text.set_style(style);
 }
 
 
index e0710a864c085cc52d67b7b4fd8d9cb2c1100078..d7119b7cfb72cec92d54bbf7ed2d1b02ff7b3c71 100644 (file)
@@ -99,7 +99,7 @@ void Dropdown::render_special(const Part &part) const
        if(part.get_name()=="text")
        {
                if(list.get_selected_index()>=0)
-                       Text(style, list.get_selected()).render(part, geom);
+                       Text(*style, list.get_selected()).render(part, geom);
        }
        else if(part.get_name()=="list" && dropped)
                list.render();
index 496a79d0da017421361126742ec9ad76ad6fcae9..28b454d90d10c62ab589ae5e8daca9246bd044f8 100644 (file)
@@ -21,7 +21,7 @@ namespace GLtk {
 
 Entry::Entry(const Resources &r, const string &t):
        Widget(r),
-       text(style),
+       text(),
        edit_pos(0)
 {
        update_style();
@@ -86,7 +86,7 @@ void Entry::render_special(const Part &part) const
 
 void Entry::on_style_change()
 {
-       text.update_style();
+       text.set_style(style);
 }
 
 
index 18bef1a066bb529274644a78cddfd92ec64a1c10..a91f821406292d4672053782b79ce1b3f9b70bae 100644 (file)
@@ -16,7 +16,7 @@ namespace GLtk {
 
 Label::Label(const Resources &r, const string &t):
        Widget(r),
-       text(style)
+       text()
 {
        focusable=false;
        update_style();
@@ -54,7 +54,7 @@ void Label::render_special(const Part &part) const
 
 void Label::on_style_change()
 {
-       text.update_style();
+       text.set_style(style);
 }
 
 
index d48c33f0a3ba1f7ca8350ff2a908c3d76204082c..31db228071943fc55f0f3942b16a32a50dcb3c90 100644 (file)
@@ -8,16 +8,25 @@ using namespace std;
 namespace Msp {
 namespace GLtk {
 
-Text::Text(const Style *const &s):
-       style(s)
+Text::Text():
+       style(0)
 { }
 
-Text::Text(const Style *const &s, const string &t):
-       style(s)
+Text::Text(const Style &s, const string &t):
+       style(&s)
 {
        set(t);
 }
 
+void Text::set_style(const Style *s)
+{
+       style = s;
+
+       float font_size=style->get_font()->get_default_size();
+       for(vector<Line>::iterator i=lines.begin(); i!=lines.end(); ++i)
+               i->width=static_cast<unsigned>(style->get_font()->get_string_width(text.substr(i->start, i->length))*font_size);
+}
+
 unsigned Text::get_width() const
 {
        unsigned width=0;
@@ -77,13 +86,6 @@ void Text::insert(unsigned pos, const string &s)
        }
 }
 
-void Text::update_style()
-{
-       float font_size=style->get_font()->get_default_size();
-       for(vector<Line>::iterator i=lines.begin(); i!=lines.end(); ++i)
-               i->width=static_cast<unsigned>(style->get_font()->get_string_width(text.substr(i->start, i->length))*font_size);
-}
-
 void Text::render(const Part &part, const Geometry &geom) const
 {
        if(lines.empty())
index 7be119216aae4086210e8cfec8133be9b65a2c8d..d964aa19bbf4575ce7d10c9ceea743d38a15017c 100644 (file)
@@ -24,13 +24,15 @@ private:
                unsigned width;
        };
 
-       const Style *const &style;
+       const Style *style;
        std::string text;
        std::vector<Line> lines;
 
 public:
-       Text(const Style *const &);
-       Text(const Style *const &, const std::string &);
+       Text();
+       Text(const Style &, const std::string &);
+
+       void set_style(const Style *);
 
        unsigned get_width() const;
        unsigned get_height() const;
@@ -41,8 +43,6 @@ public:
        const std::string &get() const { return text; }
        unsigned size() const { return text.size(); }
 
-       void update_style();
-
        void render(const Part &, const Geometry &) const;
 
        Text &operator=(const std::string &);
index 62f46eb52ac94b0ac212535c720a82937c45b13c..d31ff9f320faac8b4f081c369366003684c64c25 100644 (file)
@@ -16,7 +16,7 @@ namespace GLtk {
 
 Toggle::Toggle(const Resources &r, const string &t):
        Widget(r),
-       text(style),
+       text(),
        pressed(false),
        value(false),
        exclusive(false)
@@ -87,7 +87,7 @@ void Toggle::exclude_siblings()
 
 void Toggle::on_style_change()
 {
-       text.update_style();
+       text.set_style(style);
 }