vrfileman

annotate src/layout.cc @ 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 #include "layout.h"
nuclear@6 2
nuclear@6 3 Layout::Layout()
nuclear@6 4 {
nuclear@6 5 init();
nuclear@6 6 }
nuclear@6 7
nuclear@6 8 Layout::~Layout()
nuclear@6 9 {
nuclear@6 10 destroy();
nuclear@6 11 }
nuclear@6 12
nuclear@6 13 bool Layout::init()
nuclear@6 14 {
nuclear@6 15 tree = 0;
nuclear@6 16 return true;
nuclear@6 17 }
nuclear@6 18
nuclear@6 19 void Layout::destroy()
nuclear@6 20 {
nuclear@6 21 std::map<FSNode*, LayoutData*>::iterator it = node_data.begin();
nuclear@6 22 while(it != node_data.end()) {
nuclear@6 23 delete it->second;
nuclear@6 24 ++it;
nuclear@6 25 }
nuclear@6 26 node_data.clear();
nuclear@6 27 }
nuclear@6 28
nuclear@6 29 void Layout::clear()
nuclear@6 30 {
nuclear@6 31 destroy();
nuclear@6 32 init();
nuclear@6 33 }
nuclear@6 34
nuclear@6 35 void Layout::set_root(FSNode *root)
nuclear@6 36 {
nuclear@6 37 clear();
nuclear@6 38 tree = root;
nuclear@6 39 }
nuclear@6 40
nuclear@6 41 Vector3 Layout::get_local_pos(const FSNode *node) const
nuclear@6 42 {
nuclear@6 43 return Vector3();
nuclear@6 44 }
nuclear@6 45
nuclear@6 46 Vector3 Layout::get_world_pos(const FSNode *node) const
nuclear@6 47 {
nuclear@6 48 Vector3 pos;
nuclear@6 49
nuclear@6 50 while(node) {
nuclear@6 51 pos += get_local_pos(node);
nuclear@6 52 node = node->get_parent();
nuclear@6 53 }
nuclear@6 54 return pos;
nuclear@6 55 }
nuclear@6 56
nuclear@6 57
nuclear@6 58 // ---- PlanarLayout ----
nuclear@6 59
nuclear@6 60 void PlanarLayout::layout()
nuclear@6 61 {
nuclear@6 62 clear();
nuclear@6 63
nuclear@6 64 if(!tree) return;
nuclear@6 65
nuclear@6 66 PlanarLayoutData *root_data = new PlanarLayoutData;
nuclear@6 67 root_data->width = root_data->height = 0;
nuclear@6 68 root_data->sub_width = root_data->sub_width = 0;
nuclear@6 69 node_data[tree] = root_data;
nuclear@6 70
nuclear@6 71 layout_tree(tree);
nuclear@6 72 }
nuclear@6 73
nuclear@6 74 void PlanarLayout::layout_tree(FSNode *tree)
nuclear@6 75 {
nuclear@6 76
nuclear@6 77 }
nuclear@6 78
nuclear@6 79 Vector3 PlanarLayout::get_local_pos(const FSNode *node) const
nuclear@6 80 {
nuclear@6 81 }