]> git.tdb.fi Git - libs/gltk.git/commitdiff
Update loaders to use ObjectLoader as base class
authorMikko Rasa <tdb@tdb.fi>
Sat, 8 Dec 2012 10:24:27 +0000 (12:24 +0200)
committerMikko Rasa <tdb@tdb.fi>
Sat, 8 Dec 2012 10:24:27 +0000 (12:24 +0200)
source/graphic.cpp
source/graphic.h
source/logic.cpp
source/logic.h
source/style.cpp
source/style.h

index 0b0ba0e6ef055ee23251b3b40338479f34674a65..5fc27ef3d153e5c2061ff5e891bab10a2eea5f0c 100644 (file)
@@ -73,8 +73,7 @@ void Graphic::create_texcoords(float low, float high, float brd1, float brd2, fl
 
 
 Graphic::Loader::Loader(Graphic &g, Resources &r):
-       graph(g),
-       res(r)
+       DataFile::CollectionObjectLoader<Graphic, Resources>(g, &r)
 {
        add("texture", &Loader::texture);
        add("slice",   &Loader::slice);
@@ -85,23 +84,23 @@ Graphic::Loader::Loader(Graphic &g, Resources &r):
 
 void Graphic::Loader::texture(const string &n)
 {
-       graph.texture = &res.get<GL::Texture2D>(n);
-       graph.slice = Geometry(0, 0, graph.texture->get_width(), graph.texture->get_height());
+       obj.texture = &get_collection().get<GL::Texture2D>(n);
+       obj.slice = Geometry(0, 0, obj.texture->get_width(), obj.texture->get_height());
 }
 
 void Graphic::Loader::slice(unsigned x, unsigned y, unsigned w, unsigned h)
 {
-       graph.slice = Geometry(x, y, w, h);
+       obj.slice = Geometry(x, y, w, h);
 }
 
 void Graphic::Loader::border()
 {
-       load_sub(graph.border);
+       load_sub(obj.border);
 }
 
 void Graphic::Loader::shadow()
 {
-       load_sub(graph.shadow);
+       load_sub(obj.shadow);
 }
 
 } // namespace GLtk
index f457d3690b297a91d989dc92ed9ce5fa634268d4..1ae0d5e22d8766a718bbd828329be7bb334663dd 100644 (file)
@@ -3,7 +3,7 @@
 
 #include <msp/gl/primitivebuilder.h>
 #include <msp/gl/texture2d.h>
-#include <msp/datafile/loader.h>
+#include <msp/datafile/objectloader.h>
 #include "geometry.h"
 
 namespace Msp {
@@ -17,17 +17,11 @@ Stores a single graphical element.  Graphics are used as parts of widgets.
 class Graphic
 {
 public:
-       class Loader: public DataFile::Loader
+       class Loader: public DataFile::CollectionObjectLoader<Graphic, Resources>
        {
-       private:
-               Graphic &graph;
-               Resources &res;
-
        public:
-               typedef Resources Collection;
-
                Loader(Graphic &, Resources &);
-               Graphic &get_object() const { return graph; }
+
        private:
                void texture(const std::string &);
                void slice(unsigned, unsigned, unsigned, unsigned);
index db382fe6074f14aebea7293d61808f1ff0e5c100..e9542a6dfb26815f7d4e371911ae65775e991b8b 100644 (file)
@@ -7,7 +7,7 @@ namespace Msp {
 namespace GLtk {
 
 Logic::Loader::Loader(Logic &l, const map<string, Widget *> &w):
-       logic(l),
+       DataFile::ObjectLoader<Logic>(l),
        widgets(w)
 {
        add("bind", &Loader::bind);
@@ -22,7 +22,7 @@ void Logic::Loader::bind(const string &wdg, const string &data)
        act.type = data.substr(0, colon);
        if(colon!=string::npos)
                act.data = data.substr(colon+1);
-       logic.bindings.push_back(act);
+       obj.bindings.push_back(act);
 }
 
 } // namespace GLtk
index cd105782d03cdf8c40947b79d96591faa6fe6462..1d25c6ea44227bdd9c093b299c547e80d4e3ebf2 100644 (file)
@@ -5,7 +5,7 @@
 #include <map>
 #include <string>
 #include <sigc++/slot.h>
-#include <msp/datafile/loader.h>
+#include <msp/datafile/objectloader.h>
 
 namespace Msp {
 namespace GLtk {
@@ -21,10 +21,9 @@ See also class Connector.
 class Logic
 {
 public:
-       class Loader: public DataFile::Loader
+       class Loader: public DataFile::ObjectLoader<Logic>
        {
        private:
-               Logic &logic;
                const std::map<std::string, Widget *> &widgets;
 
        public:
index 44ad4144931daf223fb96e8bca478a35a4b8063a..da772dc8d21051148ff1aa22f372e3a6590812cc 100644 (file)
@@ -29,13 +29,12 @@ const Part *Style::get_part(const string &name) const
 
 
 Style::Loader::Loader(Style &s, Resources &r):
-       style(s),
-       res(r)
+       DataFile::CollectionObjectLoader<Style, Resources>(s, &r)
 {
-       if(!style.font)
+       if(!obj.font)
        {
-               style.font = &r.get_default_font();
-               style.font_size = style.font->get_native_size();
+               obj.font = &get_collection().get_default_font();
+               obj.font_size = obj.font->get_native_size();
        }
 
        add("font",       &Loader::font);
@@ -49,13 +48,13 @@ Style::Loader::Loader(Style &s, Resources &r):
 
 void Style::Loader::font(const string &n)
 {
-       style.font = &res.get<GL::Font>(n);
-       style.font_size = style.font->get_native_size();
+       obj.font = &get_collection().get<GL::Font>(n);
+       obj.font_size = obj.font->get_native_size();
 }
 
 void Style::Loader::font_color(float r, float g, float b)
 {
-       style.font_color = GL::Color(r, g, b);
+       obj.font_color = GL::Color(r, g, b);
 }
 
 void Style::Loader::part()
@@ -66,8 +65,8 @@ void Style::Loader::part()
 void Style::Loader::part(const string &n)
 {
        Part p(n);
-       load_sub(p, res);
-       style.parts.push_back(p);
+       load_sub(p, get_collection());
+       obj.parts.push_back(p);
 }
 
 } // namespace GLtk
index 620aa21245bdf03f2ca0c788ffb9aa9c88dc2b67..08e274c3803755d1ef1432a7bfcc154ff7eb3962 100644 (file)
@@ -3,7 +3,7 @@
 
 #include <msp/gl/color.h>
 #include <msp/gl/font.h>
-#include <msp/datafile/loader.h>
+#include <msp/datafile/objectloader.h>
 #include "part.h"
 
 namespace Msp {
@@ -18,18 +18,11 @@ generic properties.
 class Style
 {
 public:
-       class Loader: public DataFile::Loader
+       class Loader: public DataFile::CollectionObjectLoader<Style, Resources>
        {
-       private:
-               Style &style;
-               Resources &res;
-
        public:
-               typedef Resources Collection;
-
                Loader(Style &, Resources &);
-               Style &get_object() const { return style; }
-               Resources &get_collection() const { return res; }
+
        private:
                void font(const std::string &);
                void font_color(float, float, float);