Rev 6615 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6615 | Rev 6690 | ||
---|---|---|---|
1 | #ifndef KOLIBRI_TREELIST_H |
1 | #ifndef KOLIBRI_TREELIST_H |
2 | #define KOLIBRI_TREELIST_H |
2 | #define KOLIBRI_TREELIST_H |
3 | 3 | ||
4 | 4 | ||
5 | /// êîíñòàíòû ñòèëÿ |
5 | /// êîíñòàíòû ñòèëÿ |
6 | enum tl_style { |
6 | enum tl_style { |
7 | TL_KEY_NO_EDIT = 1, // ýëåìåíò íåëüçÿ ðåäàêòèðîâàòü íà êëàâèàòóðå (èçìåíÿòü óðîâíè, óäàëÿòü) |
7 | TL_KEY_NO_EDIT = 1, // ýëåìåíò íåëüçÿ ðåäàêòèðîâàòü íà êëàâèàòóðå (èçìåíÿòü óðîâíè ñòðåëêàìè, óäàëÿòü DEL) |
8 | TL_DRAW_PAR_LINE = 2, // ðèñîâàòü ëèíèè ê ðîäèòåëüñêîìó óçëó |
8 | TL_DRAW_PAR_LINE = 2, // ðèñîâàòü ëèíèè ê ðîäèòåëüñêîìó óçëó |
9 | TL_LISTBOX_MODE = 4 //ñòèëü íå îòîáðàæàåò óðîâíè (êàê â ListBox âñå îäíîãî óðîâíÿ) |
9 | TL_LISTBOX_MODE = 4 //ñòèëü íå îòîáðàæàåò óðîâíè (êàê â ListBox âñå îäíîãî óðîâíÿ) |
10 | }; |
10 | }; |
11 | 11 | ||
12 | /// êîíñòàíòû äëÿ ôóíêöèé |
12 | /// êîíñòàíòû äëÿ ôóíêöèé |
13 | enum tl_err { |
13 | enum tl_err { |
14 | TL_ERR_LOAD_CAPTION = 1, //â ïàìÿòè íåò çàãîëîâêà 'tree' |
14 | TL_ERR_LOAD_CAPTION = 1, //â ïàìÿòè íåò çàãîëîâêà 'tree' |
15 | TL_ERR_SAVE_MEMOTY_SIZE = 2, //íå õâàòàåò ïàìÿòè äëÿ ñîõðàíåíèÿ ýëåìåíòà |
15 | TL_ERR_SAVE_MEMOTY_SIZE = 2, //íå õâàòàåò ïàìÿòè äëÿ ñîõðàíåíèÿ ýëåìåíòà |
16 | TL_ERR_LOAD_INFO_SIZE = 4, //íå ñîâïàäàåò ðàçìåð èíôîðìàöèîííîé ñòðóêòóðû ïðè îòêðûòèè |
16 | TL_ERR_LOAD_INFO_SIZE = 4, //íå ñîâïàäàåò ðàçìåð èíôîðìàöèîííîé ñòðóêòóðû ïðè îòêðûòèè |
17 | }; |
17 | }; |
18 | 18 | ||
19 | typedef struct __attribute__ ((__packed__)) { |
19 | typedef struct __attribute__ ((__packed__)) { |
20 | uint16_t type; //òèï ýëåìåíòà, èëè èíäåêñ èêîíêè äëÿ óçëà |
20 | uint16_t type; //òèï ýëåìåíòà, èëè èíäåêñ èêîíêè äëÿ óçëà |
21 | uint8_t lev; //óðîâåíü ýëåìåíòà |
21 | uint8_t lev; //óðîâåíü ýëåìåíòà |
22 | uint8_t clo; //ôëàã çàêðûòèÿ, èëè îòêðûòèÿ (èìååò ñìûñë äëÿ ðîäèòåëüñêîãî óçëà) |
22 | uint8_t clo; //ôëàã çàêðûòèÿ, èëè îòêðûòèÿ (èìååò ñìûñë äëÿ ðîäèòåëüñêîãî óçëà) |
23 | uint32_t prev; //èíäåêñ ïðåäûäóùåãî ýëåìåíòà |
23 | uint32_t prev; //èíäåêñ ïðåäûäóùåãî ýëåìåíòà |
24 | uint32_t next; //èíäåêñ ïîñëåäóþùåãî ýëåìåíòà |
24 | uint32_t next; //èíäåêñ ïîñëåäóþùåãî ýëåìåíòà |
25 | uint32_t tcreat; //âðåì. ñîçäàíèÿ |
25 | uint32_t tcreat; //âðåì. ñîçäàíèÿ |
26 | uint32_t tdel; //âðåì. óäàëåíèÿ |
26 | uint32_t tdel; //âðåì. óäàëåíèÿ |
27 | } treelist_node; |
27 | } treelist_node; |
28 | 28 | ||
29 | 29 | ||
30 | typedef struct __attribute__ ((__packed__)) { |
30 | typedef struct __attribute__ ((__packed__)) { |
31 | uint32_t left; |
31 | uint32_t left; |
32 | uint32_t top; |
32 | uint32_t top; |
33 | uint32_t width; |
33 | uint32_t width; |
34 | uint32_t height; |
34 | uint32_t height; |
35 | void *data_info; // óêàçàòåëü íà îñíîâíûå äàíûå |
35 | void *data_info; // óêàçàòåëü íà îñíîâíûå äàíûå |
36 | uint16_t info_size; // ðàçìåð äàííûõ âûäåëÿåìûõ äëÿ êàæäîãî óçëà (ïîëüçîâàòåëüñüêèå äàííûå + òåêñò äëÿ ïîäïèñè) |
36 | uint16_t info_size; // ðàçìåð äàííûõ âûäåëÿåìûõ äëÿ êàæäîãî óçëà (ïîëüçîâàòåëüñüêèå äàííûå + òåêñò äëÿ ïîäïèñè) |
37 | uint32_t info_max_count; // ìàêñèìàëüíîå êîëè÷åñòâî óçëîâ, êîòîðûå ìîæíî äîáàâèòü â ýëåìåíò |
37 | uint32_t info_max_count; // ìàêñèìàëüíîå êîëè÷åñòâî óçëîâ, êîòîðûå ìîæíî äîáàâèòü â ýëåìåíò |
38 | uint32_t style; // ñòèëè ýëåìåíòà |
38 | uint32_t style; // ñòèëè ýëåìåíòà |
39 | treelist_node *data_nodes; // óêàçàòåëü íà ñòðóêòóðû óçëîâ |
39 | treelist_node *data_nodes; // óêàçàòåëü íà ñòðóêòóðû óçëîâ |
40 | void *data_img; // óêàçàòåëü íà èçîáðàæåíèÿ ñ èêîíêàìè óçëîâ |
40 | void *data_img; // óêàçàòåëü íà èçîáðàæåíèÿ ñ èêîíêàìè óçëîâ |
41 | uint16_t img_cx; // øèðèíà èêîíîê |
41 | uint16_t img_cx; // øèðèíà èêîíîê |
42 | uint16_t img_cy; // âûñîòà èêîíîê |
42 | uint16_t img_cy; // âûñîòà èêîíîê |
43 | void *data_img_sys;//óêàçàòåëü íà ñèñòåìíûå èçîáðàæåíèÿ (ñòðåëêè, ïëþñèêè) |
43 | void *data_img_sys;//óêàçàòåëü íà ñèñòåìíûå èçîáðàæåíèÿ (ñòðåëêè, ïëþñèêè) |
44 | uint32_t ch_tim; // êîëè÷åñòâî èçìåíåíèé â ôàéëå |
44 | uint32_t ch_tim; // êîëè÷åñòâî èçìåíåíèé â ôàéëå |
45 | uint32_t tim_undo; // êîëè÷åñòâî îòìåíåííûõ äåéñòâèé |
45 | uint32_t tim_undo; // êîëè÷åñòâî îòìåíåííûõ äåéñòâèé |
46 | uint32_t cur_pos; // ïîçèöèÿ êóðñîðà |
46 | uint32_t cur_pos; // ïîçèöèÿ êóðñîðà |
47 | color_t col_bkg; // öâåò ôîíà |
47 | color_t col_bkg; // öâåò ôîíà |
48 | color_t col_zag; // öâåò çàãîëîâêà |
48 | color_t col_zag; // öâåò çàãîëîâêà |
49 | color_t col_txt; // öâåò òåêñòà |
49 | color_t col_txt; // öâåò òåêñòà |
50 | uint16_t capt_cy; // âûñîòà ïîäïèñè |
50 | uint16_t capt_cy; // âûñîòà ïîäïèñè |
51 | uint16_t info_capt_offs;//ñäâèã äëÿ íà÷àëà òåêñòà (ïîäïèñè óçëà) |
51 | uint16_t info_capt_offs;//ñäâèã äëÿ íà÷àëà òåêñòà (ïîäïèñè óçëà) |
52 | uint16_t info_capt_len;//äëèíà òåêñòà ïîäïèñè óçëà (åñëè = 0 òî äî êîíöà ñòðóêòóðû) |
52 | uint16_t info_capt_len;//äëèíà òåêñòà ïîäïèñè óçëà (åñëè = 0 òî äî êîíöà ñòðóêòóðû) |
53 | void *el_focus; // óêàçàòåëü íà ñòðóêòóðó ýëåìåíòà â ôîêóñå |
53 | void *el_focus; // óêàçàòåëü íà ñòðóêòóðó ýëåìåíòà â ôîêóñå |
54 | scrollbar *p_scroll; // óêàçàòåëü íà ñòðóêòóðó ñêðîëëèíãà |
54 | scrollbar *p_scroll; // óêàçàòåëü íà ñòðóêòóðó ñêðîëëèíãà |
55 | void *on_press; // +84 óêàçàòåëü íà ôóíêöèþ, êîòîðàÿ âûçûâàåòñÿ ïðè íàæàòèè Enter |
55 | void *on_press; // +84 óêàçàòåëü íà ôóíêöèþ, êîòîðàÿ âûçûâàåòñÿ ïðè íàæàòèè Enter |
56 | } treelist; |
56 | } treelist; |
- | 57 | ||
- | 58 | // capt_cy may be 0 = no caption |
|
57 | 59 | // if icon_size is 16x16, and data_img id NULL, no icons - useful in list mode |
|
58 | static inline treelist* kolibri_new_treelist( uint32_t x_w, uint32_t y_h, uint16_t capt_cy, uint32_t icon_size_xy, uint16_t info_size, uint32_t info_max_count, |
60 | static inline treelist* kolibri_new_treelist( uint32_t x_w, uint32_t y_h, uint16_t capt_cy, uint32_t icon_size_xy, uint16_t info_size, uint32_t info_max_count, |
59 | uint16_t info_capt_len, uint16_t info_capt_offs, enum tl_style style, void *el_focus, color_t back, color_t title, color_t txt) |
61 | uint16_t info_capt_len, uint16_t info_capt_offs, enum tl_style style, void *el_focus, color_t back, color_t title, color_t txt) |
60 | { |
62 | { |
61 | treelist *tl = (treelist *)calloc(1, sizeof(treelist)); |
63 | treelist *tl = (treelist *)calloc(1, sizeof(treelist)); |
62 | tl->left= x_w >> 16; |
64 | tl->left= x_w >> 16; |
63 | tl->width = x_w & 0xFFFF; |
65 | tl->width = x_w & 0xFFFF; |
64 | tl->top = y_h >> 16; |
66 | tl->top = y_h >> 16; |
65 | tl->height = y_h & 0xFFFF; |
67 | tl->height = y_h & 0xFFFF; |
66 | tl->info_size = info_size; |
68 | tl->info_size = info_size; |
67 | tl->info_max_count = info_max_count; |
69 | tl->info_max_count = info_max_count; |
68 | tl->style = style; |
70 | tl->style = style; |
69 | tl->img_cx = icon_size_xy >> 16; |
71 | tl->img_cx = icon_size_xy >> 16; |
70 | tl->img_cy = icon_size_xy & 0xFFFF; |
72 | tl->img_cy = icon_size_xy & 0xFFFF; |
71 | tl->col_bkg = back; |
73 | tl->col_bkg = back; |
72 | tl->col_zag = title; |
74 | tl->col_zag = title; |
73 | tl->col_txt = txt; |
75 | tl->col_txt = txt; |
74 | tl->info_capt_len = info_capt_len; |
76 | tl->info_capt_len = info_capt_len; |
75 | tl->info_capt_offs = info_capt_offs; |
77 | tl->info_capt_offs = info_capt_offs; |
76 | tl->el_focus = el_focus; |
78 | tl->el_focus = el_focus; |
- | 79 | tl->capt_cy = capt_cy; |
|
77 | tl->p_scroll = kolibri_new_scrollbar_def(X_Y(0, 16), X_Y(0, 0), 100, 30, 0); |
80 | tl->p_scroll = kolibri_new_scrollbar_def(X_Y(0, 16), X_Y(0, 0), 100, 30, 0); |
78 | return tl; |
81 | return tl; |
79 | } |
82 | } |
80 | 83 | ||
81 | static inline void gui_add_treelist(kolibri_window *wnd, treelist* tl) |
84 | static inline void gui_add_treelist(kolibri_window *wnd, treelist* tl) |
82 | { |
85 | { |
83 | kolibri_window_add_element(wnd, KOLIBRI_TREELIST, tl); |
86 | kolibri_window_add_element(wnd, KOLIBRI_TREELIST, tl); |
84 | } |
87 | } |
85 | 88 | ||
86 | 89 | ||
87 | ///ðåàêöèÿ íà ìûøü |
90 | ///ðåàêöèÿ íà ìûøü |
88 | extern void (*tl_mouse)(treelist *) __attribute__((__stdcall__)); |
91 | extern void (*tl_mouse)(treelist *) __attribute__((__stdcall__)); |
89 | 92 | ||
90 | ///âûâîä ñïèñêà íà ýêðàí |
93 | ///âûâîä ñïèñêà íà ýêðàí |
91 | extern void (*tl_draw)(treelist *) __attribute__((__stdcall__)); |
94 | extern void (*tl_draw)(treelist *) __attribute__((__stdcall__)); |
92 | __attribute__((__stdcall__)) static inline void treelist_draw(treelist *tl) |
95 | __attribute__((__stdcall__)) static inline void treelist_draw(treelist *tl) |
93 | { |
96 | { |
94 | tl->p_scroll->all_redraw = 1; |
97 | tl->p_scroll->all_redraw = 1; |
95 | (*tl_draw)(tl); |
98 | (*tl_draw)(tl); |
96 | } |
99 | } |
97 | 100 | ||
98 | 101 | ||
99 | ///ïåðåìåùàåì óçåë ââåðõ |
102 | ///ïåðåìåùàåì óçåë ââåðõ |
100 | extern void (*tl_node_move_up)(treelist *) __attribute__((__stdcall__)); |
103 | extern void (*tl_node_move_up)(treelist *) __attribute__((__stdcall__)); |
101 | 104 | ||
102 | ///ïåðåìåùàåì óçåë âíèç |
105 | ///ïåðåìåùàåì óçåë âíèç |
103 | extern void (*tl_node_move_down)(treelist *) __attribute__((__stdcall__)); |
106 | extern void (*tl_node_move_down)(treelist *) __attribute__((__stdcall__)); |
104 | 107 | ||
105 | ///âûäåëåíèå ïàìÿòè äëÿ ñòðóêòóð ñïèñêà è îñíîâíîé èíôîðìàöèè (êîíñòðóêòîð) |
108 | ///âûäåëåíèå ïàìÿòè äëÿ ñòðóêòóð ñïèñêà è îñíîâíîé èíôîðìàöèè (êîíñòðóêòîð) |
106 | extern void (*tl_data_init)(treelist *) __attribute__((__stdcall__)); |
109 | extern void (*tl_data_init)(treelist *) __attribute__((__stdcall__)); |
107 | 110 | ||
108 | 111 | ||
109 | ///î÷èñòêà ïàìÿòè ýëåìåíòà (äåñòðóêòîð) |
112 | ///î÷èñòêà ïàìÿòè ýëåìåíòà (äåñòðóêòîð) |
110 | extern void (*tl_data_clear)(treelist *) __attribute__((__stdcall__)); |
113 | extern void (*tl_data_clear)(treelist *) __attribute__((__stdcall__)); |
111 | static inline void treelist_data_clear(treelist *tl) |
114 | static inline void treelist_data_clear(treelist *tl) |
112 | { |
115 | { |
113 | (*tl_data_clear)(tl); |
116 | (*tl_data_clear)(tl); |
114 | free(tl->p_scroll); |
117 | free(tl->p_scroll); |
115 | } |
118 | } |
116 | 119 | ||
117 | ///î÷èñòêà ñïèñêà (èíôîðìàöèè) |
120 | ///î÷èñòêà ñïèñêà (èíôîðìàöèè) |
118 | extern void (*tl_info_clear)(treelist *) __attribute__((__stdcall__)); |
121 | extern void (*tl_info_clear)(treelist *) __attribute__((__stdcall__)); |
119 | 122 | ||
120 | extern void (*tl_key_asm)(treelist *) __attribute__((__stdcall__)); |
123 | extern void (*tl_key_asm)(treelist *) __attribute__((__stdcall__)); |
121 | ///ðåàêöèÿ íà êëàâèàòóðó |
124 | ///ðåàêöèÿ íà êëàâèàòóðó |
122 | __attribute__((__stdcall__)) static inline void treelist_key(treelist *tl, oskey_t code) |
125 | __attribute__((__stdcall__)) static inline void treelist_key(treelist *tl, oskey_t code) |
123 | { |
126 | { |
124 | __asm__ __volatile__ ( |
127 | __asm__ __volatile__ ( |
125 | "push %2\n\t" |
128 | "push %2\n\t" |
126 | "call *%1 \n\t"::"a"(code.val), "m"(tl_key_asm), "m"(tl):); // indirect call with asterisk * |
129 | "call *%1 \n\t"::"a"(code.val), "m"(tl_key_asm), "m"(tl):); // indirect call with asterisk * |
127 | 130 | ||
128 | // (*tl_key_asm)(tl); |
131 | // (*tl_key_asm)(tl); |
129 | } |
132 | } |
130 | 133 | ||
131 | ///îòìåíà äåéñòâèÿ |
134 | ///îòìåíà äåéñòâèÿ |
132 | extern void (*tl_info_undo)(treelist *) __attribute__((__stdcall__)); |
135 | extern void (*tl_info_undo)(treelist *) __attribute__((__stdcall__)); |
133 | 136 | ||
134 | ///ïîâòîð äåéñòâèÿ |
137 | ///ïîâòîð äåéñòâèÿ |
135 | extern void (*tl_info_redo)(treelist *) __attribute__((__stdcall__)); |
138 | extern void (*tl_info_redo)(treelist *) __attribute__((__stdcall__)); |
136 | 139 | ||
137 | extern void (*tl_node_add)(treelist *, uint32_t n_opt, void *n_info) __attribute__((__stdcall__)); |
140 | extern void (*tl_node_add)(treelist *, uint32_t n_opt, void *n_info) __attribute__((__stdcall__)); |
138 | ///äîáàâèòü óçåë |
141 | ///äîáàâèòü óçåë |
139 | ///input: |
142 | ///input: |
140 | /// tlist - óêàçàòåëü íà ñòðóêòóðó ëèñòà |
143 | /// tlist - óêàçàòåëü íà ñòðóêòóðó ëèñòà |
141 | /// n_opt - îïöèè äîáàâëåíèÿ |
144 | /// n_opt - îïöèè äîáàâëåíèÿ |
142 | /// n_info - óêàçàòåëü íà äîáàâëÿåìûå äàííûå |
145 | /// n_info - óêàçàòåëü íà äîáàâëÿåìûå äàííûå |
143 | static inline void treelist_node_add(treelist *tl, void *n_info, uint16_t type, uint8_t clos, uint8_t lev) |
146 | static inline void treelist_node_add(treelist *tl, void *n_info, uint16_t type, uint8_t clos, uint8_t lev) |
144 | { |
147 | { |
145 | uint32_t n_opt = (type << 16) | (clos << 8) | lev; |
148 | uint32_t n_opt = (type << 16) | (clos << 8) | lev; |
146 | (*tl_node_add)(tl, n_opt, n_info); |
149 | (*tl_node_add)(tl, n_opt, n_info); |
147 | } |
150 | } |
148 | 151 | ||
149 | ///çàïèñàòü â òåêóùèé óçåë |
152 | ///çàïèñàòü â òåêóùèé óçåë |
150 | ///input: |
153 | ///input: |
151 | /// tlist - óêàçàòåëü íà ñòðóêòóðó ëèñòà |
154 | /// tlist - óêàçàòåëü íà ñòðóêòóðó ëèñòà |
152 | /// n_info - óêàçàòåëü íà äàííûå |
155 | /// n_info - óêàçàòåëü íà äàííûå |
153 | extern void (*tl_node_set_data)(treelist *, void *n_info) __attribute__((__stdcall__)); |
156 | extern void (*tl_node_set_data)(treelist *, void *n_info) __attribute__((__stdcall__)); |
154 | 157 | ||
155 | ///âçÿòü óêàçàòåëü íà äàííûå óçëà ïîä êóðñîðîì |
158 | ///âçÿòü óêàçàòåëü íà äàííûå óçëà ïîä êóðñîðîì |
156 | extern void* (*tl_node_get_data)(treelist *) __attribute__((__stdcall__)); |
159 | extern void* (*tl_node_get_data)(treelist *) __attribute__((__stdcall__)); |
157 | 160 | ||
158 | ///óäàëèòü óçåë ïîä êóðñîðîì |
161 | ///óäàëèòü óçåë ïîä êóðñîðîì |
159 | extern void (*tl_node_delete)(treelist *) __attribute__((__stdcall__)); |
162 | extern void (*tl_node_delete)(treelist *) __attribute__((__stdcall__)); |
160 | 163 | ||
161 | ///ïîñòàâèòü êóðñîð íà ïåðâûé óçåë |
164 | ///ïîñòàâèòü êóðñîð íà ïåðâûé óçåë |
162 | extern void (*tl_cur_beg)(treelist *) __attribute__((__stdcall__)); |
165 | extern void (*tl_cur_beg)(treelist *) __attribute__((__stdcall__)); |
163 | 166 | ||
164 | ///ïåðåíåñòè êóðñîð íà 1 ïîçèöèþ íèæå |
167 | ///ïåðåíåñòè êóðñîð íà 1 ïîçèöèþ íèæå |
165 | extern void (*tl_cur_next)(treelist *) __attribute__((__stdcall__)); |
168 | extern void (*tl_cur_next)(treelist *) __attribute__((__stdcall__)); |
166 | 169 | ||
167 | ///ïåðåíåñòè êóðñîð íà 1 ïîçèöèþ âûøå |
170 | ///ïåðåíåñòè êóðñîð íà 1 ïîçèöèþ âûøå |
168 | extern void (*tl_cur_perv)(treelist *) __attribute__((__stdcall__)); |
171 | extern void (*tl_cur_perv)(treelist *) __attribute__((__stdcall__)); |
169 | 172 | ||
170 | ///îòêðûòü/çàêðûòü óçåë (ðàáîòàåò ñ óçëàìè êîòîðûå èìåþò äî÷åðíèå óçëû) |
173 | ///îòêðûòü/çàêðûòü óçåë (ðàáîòàåò ñ óçëàìè êîòîðûå èìåþò äî÷åðíèå óçëû) |
171 | extern void (*tl_node_close_open)(treelist *) __attribute__((__stdcall__)); |
174 | extern void (*tl_node_close_open)(treelist *) __attribute__((__stdcall__)); |
172 | 175 | ||
173 | ///óâåëè÷èòü óðîâåíü |
176 | ///óâåëè÷èòü óðîâåíü |
174 | extern void (*tl_node_lev_inc)(treelist *) __attribute__((__stdcall__)); |
177 | extern void (*tl_node_lev_inc)(treelist *) __attribute__((__stdcall__)); |
175 | 178 | ||
176 | ///óìåíüøèòü óðîâåíü |
179 | ///óìåíüøèòü óðîâåíü |
177 | extern void (*tl_node_lev_dec)(treelist *) __attribute__((__stdcall__)); |
180 | extern void (*tl_node_lev_dec)(treelist *) __attribute__((__stdcall__)); |
178 | 181 | ||
179 | ///âçÿòü óêàçàòåëü íà ñòðóêòóðó óçëà â óêàçàííîé ïîçèöèè |
182 | ///âçÿòü óêàçàòåëü íà ñòðóêòóðó óçëà â óêàçàííîé ïîçèöèè |
180 | ///input: |
183 | ///input: |
181 | /// tlist - pointer to 'TreeList' struct |
184 | /// tlist - pointer to 'TreeList' struct |
182 | /// node_ind - node index |
185 | /// node_ind - node index |
183 | ///output - pointer to node info or NULL |
186 | ///output - pointer to node info or NULL |
184 | extern treelist_node* (*tl_node_poi_get_info)(treelist *, int node_ind) __attribute__((__stdcall__)); |
187 | extern treelist_node* (*tl_node_poi_get_info)(treelist *, int node_ind) __attribute__((__stdcall__)); |
185 | 188 | ||
186 | ///âçÿòü óêàçàòåëü íà ñëåäóùóþ ñòðóêòóðó óçëà |
189 | ///âçÿòü óêàçàòåëü íà ñëåäóùóþ ñòðóêòóðó óçëà |
187 | ///input: |
190 | ///input: |
188 | /// tlist - pointer to 'TreeList' struct |
191 | /// tlist - pointer to 'TreeList' struct |
189 | /// node_p - node param struct |
192 | /// node_p - node param struct |
190 | ///output - pointer to next node struct or NULL |
193 | ///output - pointer to next node struct or NULL |
191 | extern treelist_node* (*tl_node_poi_get_next_info)(treelist *, treelist_node*) __attribute__((__stdcall__)); |
194 | extern treelist_node* (*tl_node_poi_get_next_info)(treelist *, treelist_node*) __attribute__((__stdcall__)); |
192 | 195 | ||
193 | ///;âçÿòü óêàçàòåëü íà äàííûå óçëà |
196 | ///;âçÿòü óêàçàòåëü íà äàííûå óçëà |
194 | ///input: |
197 | ///input: |
195 | /// tlist - pointer to 'TreeList' struct |
198 | /// tlist - pointer to 'TreeList' struct |
196 | /// node_p - node param struct |
199 | /// node_p - node param struct |
197 | ///output - pointer |
200 | ///output - pointer |
198 | extern void* (*_tl_node_poi_get_data)(treelist *, treelist_node*) __attribute__((__stdcall__)); |
201 | extern void* (*_tl_node_poi_get_data)(treelist *, treelist_node*) __attribute__((__stdcall__)); |
199 | 202 | ||
200 | /// tlist - pointer to 'TreeList' struct |
203 | /// tlist - pointer to 'TreeList' struct |
201 | /// opt - options: 0 - first element, 1 - add next element |
204 | /// opt - options: 0 - first element, 1 - add next element |
202 | /// h_mem - pointer to memory |
205 | /// h_mem - pointer to memory |
203 | /// mem_size - memory size |
206 | /// mem_size - memory size |
204 | ///output - error code |
207 | ///output - error code |
205 | extern int (*tl_save_mem)(treelist *, int opt, void *h_mem, int mem_size) __attribute__((__stdcall__)); |
208 | extern int (*tl_save_mem)(treelist *, int opt, void *h_mem, int mem_size) __attribute__((__stdcall__)); |
206 | 209 | ||
207 | /**input: |
210 | /**input: |
208 | ; tlist - pointer to 'TreeList' struct |
211 | ; tlist - pointer to 'TreeList' struct |
209 | ; opt - options: element index + (2*(add mode)+(init mode)) shl 16, tl_load_mode_add equ 0x20000 ;îïöèÿ ñ÷èòûâàíèÿ â ðåæèìå äîáàâëåíèÿ èíôîðìàöèè |
212 | ; opt - options: element index + (2*(add mode)+(init mode)) shl 16, tl_load_mode_add equ 0x20000 ;îïöèÿ ñ÷èòûâàíèÿ â ðåæèìå äîáàâëåíèÿ èíôîðìàöèè |
210 | ; h_mem - pointer to memory |
213 | ; h_mem - pointer to memory |
211 | ; mem_size - memory size |
214 | ; mem_size - memory size |
212 | ; ðàçìåð ïàìÿòè, ïîêà íå èñïîëüçóåòñÿ (íàçíà÷àëñÿ äëÿ êîíòðîëÿ) |
215 | ; ðàçìåð ïàìÿòè, ïîêà íå èñïîëüçóåòñÿ (íàçíà÷àëñÿ äëÿ êîíòðîëÿ) |
213 | ; äëÿ åãî èñïîëüçîâàíèÿ íóæíî äîðàáîòàòü ôóíêöèþ |
216 | ; äëÿ åãî èñïîëüçîâàíèÿ íóæíî äîðàáîòàòü ôóíêöèþ |
214 | ;output: |
217 | ;output: |
215 | ; eax - error code |
218 | ; eax - error code |
216 | ;memory header format: |
219 | ;memory header format: |
217 | ; +0 - (4) 'tree' |
220 | ; +0 - (4) 'tree' |
218 | ; +4 - (2) info size |
221 | ; +4 - (2) info size |
219 | ; +6 - (4) count nodes |
222 | ; +6 - (4) count nodes |
220 | ; +10 - (4) tlist style |
223 | ; +10 - (4) tlist style |
221 | ; +14 - (4) cursor pos |
224 | ; +14 - (4) cursor pos |
222 | ; +18 - (2) info capt offs |
225 | ; +18 - (2) info capt offs |
223 | ; +20 - (2) info capt len |
226 | ; +20 - (2) info capt len |
224 | ; +22 - (4) scroll pos |
227 | ; +22 - (4) scroll pos |
225 | ;memory data format: |
228 | ;memory data format: |
226 | ; +26 - (info size + 8) * count nodes */ |
229 | ; +26 - (info size + 8) * count nodes */ |
227 | extern int (*_tl_load_mem)(treelist *, int opt, void *h_mem, int mem_size) __attribute__((__stdcall__)); |
230 | extern int (*_tl_load_mem)(treelist *, int opt, void *h_mem, int mem_size) __attribute__((__stdcall__)); |
228 | 231 | ||
229 | /// ;áåðåò ðàçìåð ïàìÿòè çàíÿòîé ôóíêöèåé tl_save_mem ïðè ñîõðàíåíèè ýëåìåíòîâ |
232 | /// ;áåðåò ðàçìåð ïàìÿòè çàíÿòîé ôóíêöèåé tl_save_mem ïðè ñîõðàíåíèè ýëåìåíòîâ |
230 | /// tlist - pointer to 'TreeList' struct |
233 | /// tlist - pointer to 'TreeList' struct |
231 | /// h_mem - pointer to saved memory |
234 | /// h_mem - pointer to saved memory |
232 | extern int (*tl_get_mem_size)(treelist *, void *h_mem) __attribute__((__stdcall__)); |
235 | extern int (*tl_get_mem_size)(treelist *, void *h_mem) __attribute__((__stdcall__)); |
233 | 236 | ||
234 | #endif //KOLIBRI_TREELIST_H><>><> |
237 | #endif //KOLIBRI_TREELIST_H><>><> |