]> git.tdb.fi Git - libs/gltk.git/blobdiff - source/part.h
Rework how widget ownership works in Container
[libs/gltk.git] / source / part.h
index c35969dd4276bd206a88b97f5cb0dfcea4aa2e83..1e79165fd4f02af21af122262de1ac7929cd411a 100644 (file)
@@ -4,27 +4,31 @@
 #include <string>
 #include <msp/datafile/objectloader.h>
 #include "geometry.h"
+#include "mspgltk_api.h"
 #include "state.h"
 
 namespace Msp {
 namespace GLtk {
 
-class CachedPart;
 class Graphic;
+class PartCache;
 class Resources;
 
 /**
 Defines a single graphical element of a widget style.
 */
-class Part
+class MSPGLTK_API Part
 {
 public:
        class Loader: public DataFile::CollectionObjectLoader<Part>
        {
        public:
                Loader(Part &, Resources &);
-               ~Loader();
+
        private:
+               void finish() override;
+
+               void graphic_normal(const std::string &);
                void graphic(State, const std::string &);
                void align(float, float);
                void fill(float, float);
@@ -34,19 +38,20 @@ public:
 
 private:
        std::string name;
-       const Graphic *graphic[N_STATES_];
+       const Graphic *graphic[N_STATES_] = { };
        Geometry geom;
        Sides margin;
        Alignment align;
 
 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, CachedPart &) const;
+       void build(const Geometry &, State, PartCache &) const;
 };
 
 } // namespace GLtk