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_