]> git.tdb.fi Git - libs/gltk.git/blobdiff - source/part.h
Initial revision
[libs/gltk.git] / source / part.h
diff --git a/source/part.h b/source/part.h
new file mode 100644 (file)
index 0000000..b8761e6
--- /dev/null
@@ -0,0 +1,51 @@
+#ifndef MSP_GLTK_PART_H_
+#define MSP_GLTK_PART_H_
+
+#include <map>
+#include <string>
+#include <msp/parser/loader.h>
+#include "alignment.h"
+#include "state.h"
+
+namespace Msp {
+namespace GLtk {
+
+class Graphic;
+class Resources;
+
+class Part
+{
+public:
+       class Loader: public Parser::Loader
+       {
+       public:
+               Loader(Part &);
+       private:
+               Part &part;
+
+               void graphic(State, const std::string &);
+               void align(int, int);
+               void fill(bool, bool);
+       };
+
+       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_];
+       Alignment align;
+       bool fill_x;
+       bool fill_y;
+};
+typedef std::list<Part> PartSeq;
+
+} // namespace GLtk
+} // namespace Msp
+
+#endif