]> git.tdb.fi Git - libs/gltk.git/blobdiff - source/part.h
Add a shortcut for defining normal graphic
[libs/gltk.git] / source / part.h
index b8761e6a8436e9cd9b5ab830cba49129c98c9228..252d5a3cbecad1d2fafe1eec17edbced1a592fdf 100644 (file)
@@ -1,49 +1,54 @@
 #ifndef MSP_GLTK_PART_H_
 #define MSP_GLTK_PART_H_
 
-#include <map>
 #include <string>
-#include <msp/parser/loader.h>
-#include "alignment.h"
+#include <msp/datafile/objectloader.h>
+#include "geometry.h"
 #include "state.h"
 
 namespace Msp {
 namespace GLtk {
 
 class Graphic;
+class PartCache;
 class Resources;
 
+/**
+Defines a single graphical element of a widget style.
+*/
 class Part
 {
 public:
-       class Loader: public Parser::Loader
+       class Loader: public DataFile::CollectionObjectLoader<Part>
        {
        public:
-               Loader(Part &);
+               Loader(Part &, Resources &);
+               ~Loader();
        private:
-               Part &part;
-
+               void graphic_normal(const std::string &);
                void graphic(State, const std::string &);
-               void align(int, int);
-               void fill(bool, bool);
+               void align(float, float);
+               void fill(float, float);
+               void margin();
+               void size(unsigned, unsigned);
        };
 
-       Part(const Resources &, const std::string &);
-       const std::string &get_name() const { return name; }
-       const Graphic *get_graphic(State) const;
-       const Alignment &get_alignment() const { return align; }
-       bool get_fill_x() const { return fill_x; }
-       bool get_fill_y() const { return fill_y; }
-       void render(const Geometry &, State) const;
 private:
-       const Resources &res;
        std::string name;
        const Graphic *graphic[N_STATES_];
+       Geometry geom;
+       Sides margin;
        Alignment align;
-       bool fill_x;
-       bool fill_y;
+
+public:
+       Part(const std::string &);
+       const std::string &get_name() const { return name; }
+       const Graphic *get_graphic(State) const;
+       const Geometry &get_geometry() const { return geom; }
+       const Sides &get_margin() const { return margin; }
+       const Alignment &get_alignment() const { return align; }
+       void build(const Geometry &, State, PartCache &) const;
 };
-typedef std::list<Part> PartSeq;
 
 } // namespace GLtk
 } // namespace Msp