summaryrefslogtreecommitdiff
path: root/src/lib/elementary/efl_ui_tree_view_seg_array.h
blob: a4169c6481b2efba84ea9ea77b6e2df8b501e88b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#ifndef EFL_UI_TREE_SEG_ARRAY_H
#define EFL_UI_TREE_SEG_ARRAY_H

#include <Elementary.h>

typedef struct _Efl_Ui_Tree_View_Item Efl_Ui_Tree_View_Item;
typedef struct _Efl_Ui_Tree_View_Seg_Array_Node Efl_Ui_Tree_View_Seg_Array_Node;

typedef struct _Efl_Ui_Tree_View_Seg_Array
{
   Efl_Ui_Tree_View_Seg_Array_Node* root;

   int step_size;
   int node_count;
   int count;
} Efl_Ui_Tree_View_Seg_Array;

struct _Efl_Ui_Tree_View_Seg_Array_Node
{
   EINA_RBTREE;

   int length;
   int max;
   int linearized_first_index, shallow_first_index;

   void* layout_data;
   Efl_Ui_Tree_View_Seg_Array* seg_array;
   Efl_Ui_Tree_View_Item* pointers[0];
};


Efl_Ui_Tree_View_Seg_Array* efl_ui_tree_view_seg_array_setup(int size);
void efl_ui_tree_view_seg_array_free(Efl_Ui_Tree_View_Seg_Array *seg_array);
void efl_ui_tree_view_seg_array_flush(Efl_Ui_Tree_View_Seg_Array *seg_array);
int efl_ui_tree_view_seg_array_count(Efl_Ui_Tree_View_Seg_Array *seg_array);

void efl_ui_tree_view_seg_array_insert(Efl_Ui_Tree_View_Seg_Array *seg_array, Efl_Ui_Tree_View_Item *parent, int shallow_index, Efl_Model *model);
Efl_Ui_Tree_View_Item* efl_ui_tree_view_seg_array_remove(Efl_Ui_Tree_View_Seg_Array *seg_array, int index);

Eina_Accessor* efl_ui_tree_view_seg_array_shallow_accessor_get(Efl_Ui_Tree_View_Seg_Array *seg_array);
Eina_Accessor* efl_ui_tree_view_seg_array_linearized_accessor_get(Efl_Ui_Tree_View_Seg_Array *seg_array);
Eina_Accessor* efl_ui_tree_view_seg_array_node_accessor_get(Efl_Ui_Tree_View_Seg_Array *seg_array);

#define EFL_UI_TREE_VIEW_SEG_ARRAY_POS_GET(_item)                      \
  _item->shallow_offset + ((Efl_Ui_Tree_View_Seg_Array_Node*)_item->tree_node)->shallow_first_index

#define EFL_UI_TREE_VIEW_SEG_ARRAY_LINEAR_POS_GET(_item)                      \
  _item->linearized_offset + ((Efl_Ui_Tree_View_Seg_Array_Node*)_item->tree_node)->linearized_first_index

#endif