]> git.tdb.fi Git - libs/gltk.git/commitdiff
Make font size a property of Style
authorMikko Rasa <tdb@tdb.fi>
Wed, 28 Nov 2012 18:34:54 +0000 (20:34 +0200)
committerMikko Rasa <tdb@tdb.fi>
Wed, 28 Nov 2012 19:01:35 +0000 (21:01 +0200)
source/dropdown.cpp
source/entry.cpp
source/list.cpp
source/style.cpp
source/style.h
source/table.cpp
source/text.cpp

index 87ea5eece9cc7fcbe8341284a289fce8612ed434..d1a7bd7e1433490e364a8d7cf2ec356c809ce0a7 100644 (file)
@@ -32,7 +32,7 @@ void Dropdown::autosize()
        {
                const Sides &margin = text_part->get_margin();
                const GL::Font *font = style->get_font();
-               float font_size = font->get_default_size();
+               float font_size = style->get_font_size();
                unsigned line_height = static_cast<unsigned>((font->get_ascent()-font->get_descent())*font_size);
                geom.h = max(geom.h, line_height+margin.top+margin.bottom);
        }
index 0e1414ce74339b7fd98e67a9f0354f18df1375a3..261cf8b938dd88f5d0adeb1eb64b682a66458759 100644 (file)
@@ -36,13 +36,13 @@ void Entry::autosize()
        {
                const Sides &margin = text_part->get_margin();
                const GL::Font &font = *style->get_font();
-               unsigned en_width = static_cast<unsigned>(font.get_string_width("n")*font.get_native_size());
+               unsigned en_width = static_cast<unsigned>(font.get_string_width("n")*style->get_font_size());
                geom.w = max(geom.w, 10*en_width+margin.left+margin.right);
 
-               unsigned line_height = static_cast<unsigned>((font.get_ascent()-font.get_descent())*font.get_native_size());
+               unsigned line_height = static_cast<unsigned>((font.get_ascent()-font.get_descent())*style->get_font_size());
                if(multiline)
                {
-                       unsigned line_spacing = font.get_native_size()*6/5;
+                       unsigned line_spacing = style->get_font_size()*6/5;
                        geom.h = max(geom.h, line_height+line_spacing*2+margin.top+margin.bottom);
                }
                else
@@ -245,8 +245,7 @@ void Entry::check_view_range()
        if(!multiline || !text_part)
                return;
 
-       const GL::Font *font = style->get_font();
-       float font_size = font->get_default_size();
+       float font_size = style->get_font_size();
        unsigned line_spacing = static_cast<unsigned>(font_size*6/5);
 
        const Sides &margin = text_part->get_margin();
index a1803694a23633cd0a3911bafeb007e2eef1f141..e1f39b7dc8ecaa67db27c9212ada54ef24199593 100644 (file)
@@ -40,7 +40,7 @@ void List::autosize_rows(unsigned n)
        if(items_part)
        {
                const Sides &margin = items_part->get_margin();
-               float font_size = style->get_font()->get_default_size();
+               float font_size = style->get_font_size();
 
                unsigned max_w = 0;
                for(vector<string>::iterator i=items.begin(); i!=items.end(); ++i)
@@ -223,7 +223,7 @@ void List::on_style_change()
        items_part = style->get_part("items");
 
        const GL::Font &font = *style->get_font();
-       row_height = static_cast<unsigned>((font.get_ascent()-font.get_descent())*font.get_default_size());
+       row_height = static_cast<unsigned>((font.get_ascent()-font.get_descent())*style->get_font_size());
 
        check_view_range();
 }
index 0138ec2af1a20f401b262b2b7d1bffefeac2a6eb..50c2e774d5477201502f77ac2e98ad270793ad85 100644 (file)
@@ -7,7 +7,8 @@ namespace Msp {
 namespace GLtk {
 
 Style::Style(Resources &r):
-       font(&r.get_default_font())
+       font(&r.get_default_font()),
+       font_size(font->get_native_size())
 { }
 
 const Part *Style::get_part(const string &name) const
index 3521031a516fda1263b5aacf77815dfbbe570272..29c5e3430b0fca7a1581312fee3e1a2df5ac999f 100644 (file)
@@ -41,12 +41,14 @@ public:
 
 private:
        const GL::Font *font;
+       unsigned font_size;
        GL::Color font_color;
        PartSeq parts;
 
 public:
        Style(Resources &);
        const GL::Font *get_font() const  { return font; }
+       unsigned get_font_size() const { return font_size; }
        const GL::Color &get_font_color() const { return font_color; }
        const PartSeq &get_parts() const { return parts; }
        const Part *get_part(const std::string &) const;
index 936be5cc61b032bb4c94ca7622a54e138fd5dbbd..67a93bc5bbaf0ccb1466350b90a006006e96c0e6 100644 (file)
@@ -57,7 +57,7 @@ void Table::render_special(const Part &part) const
        if(part.get_name()=="cells")
        {
                const GL::Font *const font = style->get_font();
-               const float font_size = font->get_default_size();
+               float font_size = style->get_font_size();
 
                unsigned free_width = geom.w;
                for(unsigned i=0; i<columns; ++i)
index d80bd177126cbca14752ad65b262d3ac36bc340c..a4ec22668537946a6d72e4ded8c0adbfdaadfb43 100644 (file)
@@ -38,7 +38,7 @@ void Text::set_style(const Style *s)
 
        if(style)
        {
-               float font_size = style->get_font()->get_default_size();
+               float font_size = style->get_font_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);
        }
@@ -58,7 +58,7 @@ unsigned Text::get_height() const
                return lines.size();
 
        const GL::Font *font = style->get_font();
-       float font_size = font->get_default_size();
+       float font_size = style->get_font_size();
        unsigned line_height = static_cast<unsigned>((font->get_ascent()-font->get_descent())*font_size);
        unsigned line_spacing = line_height*6/5;
        return line_height+(lines.size()-1)*line_spacing;
@@ -183,7 +183,7 @@ Text &Text::operator=(const string &t)
 void Text::find_lines()
 {
        lines.clear();
-       float font_size = (style ? style->get_font()->get_default_size() : 1);
+       float font_size = (style ? style->get_font_size() : 1);
        string::size_type start = 0;
        while(1)
        {
@@ -213,7 +213,7 @@ void Text::process_lines(const Part &part, const Geometry &parent, unsigned firs
                return;
 
        const GL::Font *font = style->get_font();
-       float font_size = font->get_default_size();
+       float font_size = style->get_font_size();
        unsigned line_height = static_cast<unsigned>((font->get_ascent()-font->get_descent())*font_size);
        unsigned line_spacing = static_cast<unsigned>(font_size*6/5);
        unsigned height = line_height+(lines.size()-1)*line_spacing;
@@ -244,7 +244,7 @@ void Text::render_line(unsigned i, const Geometry &rgeom, RenderData &data) cons
 
        GL::PushMatrix _pushm;
        GL::translate(rgeom.x, rgeom.y, 0);
-       GL::scale_uniform(font->get_default_size());
+       GL::scale_uniform(style->get_font_size());
 
        font->build_string(text.substr(line.start, line.length), *data.bld);
 }
@@ -257,7 +257,7 @@ void Text::coords_to_geom_line(unsigned i, const Geometry &rgeom, CoordsToGeomDa
                const GL::Font *font = style->get_font();
 
                data.result = rgeom;
-               data.result.x += static_cast<unsigned>(font->get_string_width(text.substr(line.start, data.col))*font->get_default_size());
+               data.result.x += static_cast<unsigned>(font->get_string_width(text.substr(line.start, data.col))*style->get_font_size());
        }
 }