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 } |