mirror of
https://github.com/KolibriOS/kolibrios.git
synced 2024-12-25 16:16:50 +03:00
update TreeList:
1) add new function 'tl_get_mem_size' - get size memory block 2) fix functions: 'tl_save_mem', 'tl_load_mem' - calculate size memory block git-svn-id: svn://kolibrios.org@1328 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
28318762d1
commit
639a979c3a
@ -164,6 +164,7 @@ EXPORTS:
|
||||
dd sz_tl_node_poi_get_data, tl_node_poi_get_data
|
||||
dd sz_tl_save_mem, tl_save_mem
|
||||
dd sz_tl_load_mem, tl_load_mem
|
||||
dd sz_tl_get_mem_size,tl_get_mem_size
|
||||
dd sz_tl_version_tree_list, 0x00000001
|
||||
|
||||
dd 0,0
|
||||
@ -230,4 +231,5 @@ szVersion_FileBrowser db 'version_FileBrowser',0
|
||||
sz_tl_node_poi_get_data db 'tl_node_poi_get_data',0
|
||||
sz_tl_save_mem db 'tl_save_mem',0
|
||||
sz_tl_load_mem db 'tl_load_mem',0
|
||||
sz_tl_get_mem_size db 'tl_get_mem_size',0
|
||||
sz_tl_version_tree_list db 'version_tree_list',0
|
@ -1,6 +1,6 @@
|
||||
; ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj
|
||||
; ýëåìåíò TreeList äëÿ Kolibri OS
|
||||
; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 8.12.2009 IgorA
|
||||
; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 23.12.2009 IgorA
|
||||
; íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ
|
||||
|
||||
|
||||
@ -2215,15 +2215,11 @@ tl_save_mem:
|
||||
|
||||
cmp dword[ebp+16],0 ;add mode
|
||||
je @f
|
||||
.beg_cycle:
|
||||
cmp dword[esi],0x65657274 ;0x65657274 = 'tree'
|
||||
jne @f
|
||||
xor ebx,ebx
|
||||
mov bx,word[esi+4]
|
||||
imul ebx,dword[esi+6]
|
||||
add ebx,tl_save_load_heder_size
|
||||
push dword edi
|
||||
push dword esi
|
||||
call tl_get_mem_size ;áåðåì ðàçìåð ðàíåå ñîõðàí¸ííûõ äàííûõ
|
||||
pop ebx
|
||||
add esi,ebx
|
||||
jmp .beg_cycle
|
||||
@@:
|
||||
|
||||
xor ebx,ebx
|
||||
@ -2328,11 +2324,17 @@ tl_load_mem:
|
||||
mov cx,word[ebp+16]
|
||||
cmp cx,0 ;load in array mode
|
||||
je @f
|
||||
; push dword edi
|
||||
; push dword esi
|
||||
; call tl_get_mem_size ;áåðåì ðàçìåð ðàíåå ñîõðàí¸ííûõ äàííûõ
|
||||
; pop ebx
|
||||
; add esi,ebx
|
||||
.beg_cycle:
|
||||
cmp dword[esi],0x65657274 ;0x65657274 = 'tree'
|
||||
jne .no_tree
|
||||
xor ebx,ebx
|
||||
mov bx,word[esi+4]
|
||||
add bx,8
|
||||
imul ebx,dword[esi+6]
|
||||
add ebx,tl_save_load_heder_size
|
||||
add esi,ebx
|
||||
@ -2395,6 +2397,36 @@ add esi,ebx
|
||||
pop ebp
|
||||
ret 12
|
||||
|
||||
;input:
|
||||
;dword[ebp+ 8] - pointer to memory
|
||||
;dword[ebp+12] - pointer to 'TreeList' struct
|
||||
;output:
|
||||
;dword[ebp+ 8] - error code
|
||||
align 4
|
||||
tl_get_mem_size: ;áåðåò ðàçìåð ïàìÿòè çàíÿòîé ôóíêöèåé tl_save_mem ïðè ñîõðàíåíèè ýëåìåíòîâ
|
||||
push ebp
|
||||
mov ebp,esp
|
||||
push ebx edi esi
|
||||
mov esi,dword[ebp+ 8]
|
||||
mov edi,dword[ebp+12]
|
||||
@@:
|
||||
cmp dword[esi],0x65657274 ;0x65657274 = 'tree'
|
||||
jne @f
|
||||
xor ebx,ebx
|
||||
mov bx,word[esi+4]
|
||||
add bx,8 ;ðàçìåð äîïîëíèòåëüíîé èíôîðìàöèè îá óçëå (èíäåêñ çàïèñè; èíäåêñ èêîíêè, óðîâåíü, ...)
|
||||
imul ebx,dword[esi+6]
|
||||
add ebx,tl_save_load_heder_size
|
||||
add esi,ebx
|
||||
jmp @b
|
||||
@@:
|
||||
sub esi,dword[ebp+ 8]
|
||||
mov dword[ebp+12],esi ;âîçâðàùàåì ðàçìåð áëîêà ïàìÿòè
|
||||
pop esi edi edx
|
||||
pop ebp
|
||||
ret 4
|
||||
|
||||
|
||||
;ascii scan key
|
||||
; 13 28 Enter
|
||||
; 32 57 Space
|
||||
|
Binary file not shown.
After Width: | Height: | Size: 9.5 KiB |
@ -57,9 +57,9 @@ table { font-size: 15px; }
|
||||
<li><a href="#fun_undo">tl_info_undo</a></li>
|
||||
<li><a href="#fun_redo">tl_info_redo</a></li>
|
||||
<li><a href="#fun_add">tl_node_add</a></li>
|
||||
<li>tl_node_set_data</li>
|
||||
<li>tl_node_get_data</li>
|
||||
<li>tl_node_delete</li>
|
||||
<li><a href="#fun_set_d">tl_node_set_data</a></li>
|
||||
<li><a href="#fun_get_d">tl_node_get_data</a></li>
|
||||
<li><a href="#fun_delete">tl_node_delete</a></li>
|
||||
<li>tl_cur_beg</li>
|
||||
<li>tl_cur_next</li>
|
||||
<li>tl_cur_perv</li>
|
||||
@ -73,7 +73,8 @@ table { font-size: 15px; }
|
||||
<li>tl_node_poi_get_data</li>
|
||||
<li><a href="#fun_sme">tl_save_mem</a></li>
|
||||
<li><a href="#fun_lme">tl_load_mem</a></li>
|
||||
<li>version_tree_list</li>
|
||||
<li><a href="#fun_gme">tl_get_mem_size</a></li>
|
||||
<li><a href="#version">version_tree_list</a></li>
|
||||
</ul>
|
||||
<p><a href="#struc_tree_list">Структура tree_list</a></p>
|
||||
<p><a href="#tree_list_styles">Стили элемента</a></p>
|
||||
@ -81,6 +82,7 @@ table { font-size: 15px; }
|
||||
<h1><a name="vveden">Введение</a></h1>
|
||||
<p>Внешний вид элемента управления TreeList:</p>
|
||||
<p><img src="window_tree_list.png"></p>
|
||||
<p>Ðèñ. 1. Îêíî ïðîãðàììû ñ ýëåìåíòîì TreeList</p>
|
||||
|
||||
<h1><a name="funct">Функции</a></h1>
|
||||
|
||||
@ -119,12 +121,15 @@ table { font-size: 15px; }
|
||||
<p>где: <b>tree1</b> - структура tree_list;
|
||||
<b>0x10002</b> - параметры узла (старшие байты 0x0001 - индекс иконки, отображаемой возле узла; меньший байт 0x02 - уровень вложености узла); <b>data_buffer</b> - указатель на дынные, добавляемые в узел.</p>
|
||||
|
||||
<h2>tl_node_set_data</h2>
|
||||
<h2><a name="fun_set_d">tl_node_set_data</a></h2>
|
||||
<p>Устанавливает новые данные (пользовательские и подпись) в узел под курсором.</p>
|
||||
<h2>tl_node_get_data</h2>
|
||||
|
||||
<h2><a name="fun_get_d">tl_node_get_data</a></h2>
|
||||
<p>Берет указатель на данные (пользовательские и подпись) из узла под курсором.</p>
|
||||
<h2>tl_node_delete</h2>
|
||||
|
||||
<h2><a name="fun_delete">tl_node_delete</a></h2>
|
||||
<p>Удаляет узел, но не окончательно, при необходимости узел можно вернуть функцией <b>tl_info_undo</b>.</p>
|
||||
|
||||
<h2>tl_cur_beg</h2>
|
||||
<p>Ставит курсор в начало списка, перематывает скроллинг если нужно.</p>
|
||||
<h2>tl_cur_next</h2>
|
||||
@ -194,7 +199,10 @@ table { font-size: 15px; }
|
||||
<b>MEM_SIZE</b> - размер блока памяти для сохранения.
|
||||
В регистр <b>eax</b> пишется значение 0 или записываются коды ошибок считывания.</p>
|
||||
|
||||
<h2>version_tree_list</h2>
|
||||
<h2><a name="fun_gme">tl_get_mem_size</a></h2>
|
||||
<p>Âû÷èñëÿåò ðàçìåð áëîêà ïàìÿòè (â êîòîðûé áûëè ðàíüøå ñîõðàíåíû ýëåìåíòû).</p>
|
||||
|
||||
<h2><a name="version">version_tree_list</a></h2>
|
||||
<p>Версия элемента</p>
|
||||
|
||||
<h1><a name="struc_tree_list">Структура tree_list</a></h1>
|
||||
@ -230,7 +238,7 @@ table { font-size: 15px; }
|
||||
.on_activate dd 0
|
||||
.on_press dd on_press
|
||||
}</pre>
|
||||
<p><b>info_size</b> - количество байт, которое будет выделено для каждого узла. Часть этой памяти пользователь может использовать для своих целей (регулируется через <i>info_capt_offs</i> и <i>info_capt_len</i>) а остальная часть будет использована как подпись узла.</p>
|
||||
<p><b>info_size</b> - êîëè÷åñòâî áàéò, êîòîðîå áóäåò âûäåëåíî äëÿ êàæäîãî óçëà. ×àñòü ýòîé ïàìÿòè ïîëüçîâàòåëü ìîæåò èñïîëüçîâàòü äëÿ ñâîèõ öåëåé (ðåãóëèðóåòñÿ ÷åðåç <i>info_capt_offs</i> è <i>info_capt_len</i> ñì. ðèñ. 2) à îñòàëüíàÿ ÷àñòü áóäåò èñïîëüçîâàíà êàê ïîäïèñü óçëà.</p>
|
||||
<p><b>info_max_count</b> - максимальное количество узлов, которые можно добавить в элемент.</p>
|
||||
<p><b>style</b> - стили элемента.</p>
|
||||
<p><b>data_nodes</b> - указатель на внутренние структуры узлов (<i>TreeList</i>).</p>
|
||||
@ -241,6 +249,9 @@ table { font-size: 15px; }
|
||||
<p><b>p_scrol</b> - указатель на структуру скроллинга, связанного с данным элементом.</p>
|
||||
<p><b>on_press</b> - указатель на функцию, которая будет вызвана при нажитии [<b>Enter</b>]. Если указатель равен 0 то ничего не будет вызыватся.</p>
|
||||
|
||||
<p><img src="info_size.png"></p>
|
||||
<p>Ðèñ. 2. Ïàðàìåòðû <i>info_size</i>, <i>info_capt_offs</i> è <i>info_capt_len</i> â óçëå</p>
|
||||
|
||||
<p>Пример создания структуры:</p>
|
||||
<pre>tree1 tree_list 24,500, tl_draw_par_line+tl_list_box_mode, 16,16,\
|
||||
0x8080ff,0x0000ff,0xffffff, 10,35,200-16,285, 14,4,0,\
|
||||
@ -255,6 +266,6 @@ table { font-size: 15px; }
|
||||
<p>Стиль не отображает уровни (как в ListBox все узлы одного уровня).</p>
|
||||
|
||||
<hr>
|
||||
<p>Документация обновлялась последний раз 5.12.09.</p>
|
||||
<p>Äîêóìåíòàöèÿ îáíîâëÿëàñü ïîñëåäíèé ðàç 23.12.09.</p>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user