]> git.llucax.com Git - z.facultad/75.52/treemulator.git/blob - viewer/view_btree.cpp
582b776a95d3eea51ccdb902976e163bae67e1ff
[z.facultad/75.52/treemulator.git] / viewer / view_btree.cpp
1
2 #include "view_btree.h"
3 #include "view_btree_data.h"
4
5 ViewBTree::ViewBTree (Canvas::Group *parent, std::string filename):Canvas::Group (*parent, 0, 0),
6         BTree (filename, 64)
7 {
8         /* TODO : hace que el arbol se abra de un archivo ya creado o que se
9          * cree afuera
10          */
11         for (int i=0; i<=64; i++) {
12                 ClaveFija c(i);
13
14                 AddKey (c);
15         }
16
17         /* Muestro la raiz */
18         uchar *node = ReadBlock (0);
19         BTreeNodeHeader node_h;
20         ReadNodoHeader (node, &node_h);
21         std::list<BTreeData *> keys = ReadKeys (node, node_h);
22
23         Canvas::Rect *rect = new Canvas::Rect (*this, 0, 0, NODE_WIDTH, NODE_HEIGHT);
24         rect->property_fill_color() = "gray";
25
26         int byte_to_pixels  = NODE_WIDTH/64; // TODO : 64 == BlockSize
27
28         /* Ahora pongo el lugar que opcupa el header */
29         double header_w = byte_to_pixels * sizeof (BTreeNodeHeader);
30         double x = 0;
31
32         Canvas::Rect *view_header = new Canvas::Rect (*this, x, 0, x+header_w, NODE_HEIGHT);
33         x += header_w;
34
35         std::list<BTreeData *>::iterator it = keys.begin ();
36         while (it != keys.end ()) {
37                 BTreeData *data = (*it);
38                 double w = byte_to_pixels * data->Size ();
39
40                 ViewBTreeData::Create (data, this, x, 0, w+x, NODE_HEIGHT);
41
42                 x += w;
43                 it++;
44         }
45
46 }
47