vrfileman
annotate src/layout.h @ 6:b041bc1c38ad
layout
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Tue, 03 Feb 2015 15:42:03 +0200 |
parents | |
children |
rev | line source |
---|---|
nuclear@6 | 1 #ifndef LAYOUT_H_ |
nuclear@6 | 2 #define LAYOUT_H_ |
nuclear@6 | 3 |
nuclear@6 | 4 #include <map> |
nuclear@6 | 5 #include <vmath/vmath.h> |
nuclear@6 | 6 #include "fs.h" |
nuclear@6 | 7 |
nuclear@6 | 8 struct LayoutData {}; |
nuclear@6 | 9 |
nuclear@6 | 10 class Layout { |
nuclear@6 | 11 protected: |
nuclear@6 | 12 FSNode *tree; |
nuclear@6 | 13 std::map<FSNode*, LayoutData*> node_data; |
nuclear@6 | 14 |
nuclear@6 | 15 public: |
nuclear@6 | 16 Layout(); |
nuclear@6 | 17 virtual ~Layout(); |
nuclear@6 | 18 |
nuclear@6 | 19 virtual bool init(); |
nuclear@6 | 20 virtual void destroy(); |
nuclear@6 | 21 virtual void clear(); |
nuclear@6 | 22 |
nuclear@6 | 23 virtual void set_root(FSNode *root); |
nuclear@6 | 24 |
nuclear@6 | 25 virtual void layout() = 0; |
nuclear@6 | 26 |
nuclear@6 | 27 virtual Vector3 get_local_pos(const FSNode *node) const; |
nuclear@6 | 28 virtual Vector3 get_world_pos(const FSNode *node) const; |
nuclear@6 | 29 }; |
nuclear@6 | 30 |
nuclear@6 | 31 struct PlanarLayoutData { |
nuclear@6 | 32 Vector2 pos; /* local pos, relative to parent */ |
nuclear@6 | 33 float width, height; |
nuclear@6 | 34 float sub_width, sub_height; |
nuclear@6 | 35 }; |
nuclear@6 | 36 |
nuclear@6 | 37 class PlanarLayout : public Layout { |
nuclear@6 | 38 private: |
nuclear@6 | 39 void layout_tree(FSNode *tree); |
nuclear@6 | 40 |
nuclear@6 | 41 public: |
nuclear@6 | 42 void layout(); |
nuclear@6 | 43 }; |
nuclear@6 | 44 |
nuclear@6 | 45 |
nuclear@6 | 46 #endif // LAYOUT_H_ |