1) 'buf2d.obj' new function 'buf2d_rect_by_size'

2) 'box_lib.obj' fix function 'tl_node_poi_get_data'

git-svn-id: svn://kolibrios.org@1634 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
IgorA 2010-09-30 21:07:09 +00:00
parent 4ccc803579
commit cf508277c3
4 changed files with 130 additions and 44 deletions

View File

@ -30,9 +30,9 @@
<li><a href="#fun_lev_d">tl_node_lev_dec</a></li>
<li><a href="#fun_mov_u">tl_node_move_up</a></li>
<li><a href="#fun_mov_d">tl_node_move_down</a></li>
<li>tl_node_poi_get_info</li>
<li>tl_node_poi_get_next_info</li>
<li>tl_node_poi_get_data</li>
<li><a href="#fun_poi_gi">tl_node_poi_get_info</a></li>
<li><a href="#fun_poi_gni">tl_node_poi_get_next_info</a></li>
<li><a href="#fun_poi_gd">tl_node_poi_get_data</a></li>
<li><a href="#fun_sme">tl_save_mem</a></li>
<li><a href="#fun_lme">tl_load_mem</a></li>
<li><a href="#fun_gme">tl_get_mem_size</a></li>
@ -76,10 +76,10 @@
<h2><a name="fun_add">tl_node_add</a></h2>
<p>Добавляет узел, в позицию указанную курсором. Пример добавления узла:</p>
<pre> push dword tree1
push dword 0x10002
push dword data_buffer
call dword[tl_node_add]</pre>
<pre> push dword tree1
push dword 0x10002
push dword data_buffer
call dword[tl_node_add]</pre>
<p>где: <b>tree1</b> - структура tree_list;
<b>0x10002</b> - параметры узла (старшие байты 0x0001 - индекс иконки, отображаемой возле узла; меньший байт 0x02 - уровень вложености узла); <b>data_buffer</b> - указатель на дынные, добавляемые в узел.</p>
@ -134,36 +134,57 @@ pop edi esi ecx</pre>
<h2><a name="fun_mov_u">tl_node_move_up</a></h2>
<p>Перемещает вверх узел под курсором. Вместе с узлом двигается также и курсор. Пример использования функции:</p>
<pre> push dword tree1
call dword[tl_node_move_up] ;ïåðåìåñòèòü óçåë</pre>
<pre> push dword tree1
call dword[tl_node_move_up] ;переместить узел</pre>
<p>где: <b>tree1</b> - структура tree_list</p>
<h2><a name="fun_mov_d">tl_node_move_down</a></h2>
<p>Перемещает вниз узел под курсором. Вместе с узлом двигается также и курсор. Пример использования функции:</p>
<pre> push dword tree1
call dword[tl_node_move_down] ;ïåðåìåñòèòü óçåë</pre>
<pre> push dword tree1
call dword[tl_node_move_down] ;переместить узел</pre>
<p>где: <b>tree1</b> - структура tree_list</p>
<h2>tl_node_poi_get_info</h2>
<p>Áåðåò âíóòðåííèé óêàçàòåëü íà ñòðóêòóðó îïèñûâàþùóþ óçåë.</p>
<h2>tl_node_poi_get_next_info</h2>
<p>Áåðåò óêàçàòåëü íà ñëåäóþùèé ýëåìåíò â öåïè, áåç ó÷åòà îòêðûòèÿ/çàêðûòèÿ äî÷åðíèõ óçëîâ.</p>
<h2>tl_node_poi_get_data</h2>
<p>Áåðåò óêàçàòåëü íà äàííûå (ïîëüçîâàòåëüñêèå è ïîäïèñü) èç óçëà óêàçàííîãî â óêàçàòåëå.</p>
<h2><a name="fun_poi_gi">tl_node_poi_get_info</a></h2>
<p>Берет внутренний указатель на структуру описывающую узел. Пример использования функции:</p>
<pre> push dword tree1
push dword 0
call dword[tl_node_poi_get_info]
pop esi</pre>
<p>где: <b>tree1</b> - структура tree_list;
<b>0</b> - позиция узла, с которого берется указатель;
<b>esi</b> - указатель на структуру описывающую узел.</p>
<p>Ôóíêöèÿìè tl_node_poi_get_info, tl_node_poi_get_next_info è tl_node_poi_get_data ìîæíî ñ÷èòûâàòü èíôîðìàöèþ î óçëàõ ýëåìåíòà, ïðè ýòîì íå ìåíÿÿ òåêóùåãî ïîëîæåíèÿ êóðñîðà. Ò. å. ìîæíî îðãàíèçîâàòü äîñòóï ê äàíûì ýëåìåíòà â &quot;ôîíîâîì ðåæèìå&quot;.</p>
<h2><a name="fun_poi_gni">tl_node_poi_get_next_info</a></h2>
<p>Берет указатель на следующий элемент в цепи, без учета открытия/закрытия дочерних узлов. Пример использования функции:</p>
<pre> push tree1
push esi
call dword[tl_node_poi_get_next_info]
pop esi ;переходим к следущему узлу</pre>
<p>где: <b>tree1</b> - структура tree_list;
<b>esi</b> - до вызова функции указатель на структуру описывающую узел, после вызова указатель на структуру описывающую следущий узел в цепи.</p>
<h2><a name="fun_poi_gd">tl_node_poi_get_data</a></h2>
<p>Берет указатель на данные (пользовательские и подпись) из узла указанного в указателе. Пример использования функции:</p>
<pre> push dword tree1
push dword esi
call dword[tl_node_poi_get_data]
pop eax ;получаем данные узла</pre>
<p>где: <b>tree1</b> - структура tree_list;
<b>esi</b> - указатель на структуру описывающую узел;
<b>eax</b> - указатель на данные узла, описааного в esi.</p>
<p>Указатель, возвращаемый функцией <i>tl_node_poi_get_data</i> аналогичен указателю возвращаемому функцией <i>tl_node_get_data</i>. Отличие функций в том, что <i>tl_node_poi_get_data</i> работает без задействования курсора. Функциями <i>tl_node_poi_get_info</i>, <i>tl_node_poi_get_next_info</i> и <i>tl_node_poi_get_data</i> можно считывать информацию о узлах элемента, при этом не меняя текущего положения курсора. Т. е. можно организовать доступ к даным элемента в &quot;фоновом режиме&quot;.</p>
<h2><a name="fun_sme">tl_save_mem</a></h2>
<p>Сохраняет информацию об узлах элемента в память. Пример использования функции:</p>
<pre> MEM_SIZE equ 5000
node_data rb MEM_SIZE
<pre> MEM_SIZE equ 5000
node_data rb MEM_SIZE
.........
push dword tree1
push dword 0
push dword node_data
push dword MEM_SIZE
call dword[tl_save_mem]
pop eax</pre>
push dword tree1
push dword 0
push dword node_data
push dword MEM_SIZE
call dword[tl_save_mem]
pop eax</pre>
<p>где: <b>tree1</b> - структура tree_list;
<b>0</b> - опция сохранения в начало блока памяти (если = 1, то добавляет элемент после других сохраненных ранее);
<b>node_data</b> - указатель на блок памяти;
@ -172,15 +193,15 @@ pop edi esi ecx</pre>
<h2><a name="fun_lme">tl_load_mem</a></h2>
<p>Загружает информацию об узлах элемента из памяти. Пример использования функции:</p>
<pre> MEM_SIZE equ 5000
node_data rb MEM_SIZE
<pre> MEM_SIZE equ 5000
node_data rb MEM_SIZE
.........
push dword tree1
push dword 0
push dword node_data
push dword MEM_SIZE
call dword[tl_load_mem]
pop eax</pre>
push dword tree1
push dword 0
push dword node_data
push dword MEM_SIZE
call dword[tl_load_mem]
pop eax</pre>
<p>где: <b>tree1</b> - структура tree_list;
<b>0</b> - индекс считываемого элемента;
<b>node_data</b> - указатель на блок памяти;
@ -197,8 +218,9 @@ pop edi esi ecx</pre>
<h1><a name="struc_tree_list">Структура tree_list</a></h1>
<pre>struc tree_list info_size,info_max_count,style, img_cx,img_cy,\
col_bkg,col_zag,col_txt, box_l,box_t,box_w,box_h, capt_cy,info_capt_offs,\
info_capt_len,el_focus, p_scrol,on_press {
col_bkg,col_zag,col_txt, box_l,box_t,box_w,box_h, capt_cy,info_capt_offs,\
info_capt_len,el_focus, p_scrol,on_press
{
.data_info dd 0
.info_size dw info_size
.info_max_count dd info_max_count
@ -232,20 +254,25 @@ pop edi esi ecx</pre>
<p><b>info_max_count</b> - максимальное количество узлов, которые можно добавить в элемент.</p>
<p><b>style</b> - стили элемента.</p>
<p><b>data_nodes</b> - указатель на внутренние структуры узлов (<i>TreeList</i>).</p>
<p><b>data_img</b> - óêàçàòåëü íà èçîáðàæåíèÿ ñ èêîíêàìè óçëîâ.</p>
<p><b>data_img_sys</b> - óêàçàòåëü íà ñèñòåìíûå èçîáðàæåíèÿ (êóðñîð, ïëþñèêè, ëèíèè, ... âñå êðîìå èêîíîê óçëîâ).</p>
<p><b>data_img</b> - указатель на изображения с иконками узлов. Формат изображения такой же как и в сист. ф. 7: <i>BBGGRRBBGGRR...</i>.</p>
<p><b>img_cx</b> - ширина одной иконки.</p>
<p><b>img_cy</b> - высота одной иконки.</p>
<p><b>data_img_sys</b> - указатель на системные изображения (курсор, плюсики, линии, ... все кроме иконок узлов). Формат изображения такой же как и в сист. ф. 7: <i>BBGGRRBBGGRR...</i></p>
<p><b>col_bkg</b> - цвет фона.</p>
<p><b>col_zag</b> - цвет строки заголовка (если она задана) и кнопок и ползунка вертикальной полосы прокрутки (если она есть).</p>
<p><b>col_txt</b> - цвет текста.</p>
<p><b>capt_cy</b> - высота строки для подписи вверху элемента, если меньше 9 подпись не выводится.</p>
<p><b>info_capt_len</b> - длинна текста для подписи. Если равно 0, то длинна считается так: <i>info_size - info_capt_offs</i>.</p>
<p><b>p_scrol</b> - указатель на структуру скроллинга, связанного с данным элементом.</p>
<p><b>on_press</b> - óêàçàòåëü íà ôóíêöèþ, êîòîðàÿ áóäåò âûçâàíà ïðè íàæèòèè [<b>Enter</b>]. Åñëè óêàçàòåëü ðàâåí 0 òî íè÷åãî íå áóäåò âûçûâàòñÿ.</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,\
el_focus, wScr,fun_on_enter</pre>
0x8080ff,0x0000ff,0xffffff, 10,35,200-16,285, 14,4,0,\
el_focus, wScr,fun_on_enter</pre>
<h1><a name="tree_list_styles">Стили элемента</a></h1>
<h2>tl_key_no_edit</h2>
@ -256,6 +283,6 @@ pop edi esi ecx</pre>
<p>Стиль не отображает уровни (как в ListBox все узлы одного уровня).</p>
<hr>
<p>Äîêóìåíòàöèÿ îáíîâëÿëàñü ïîñëåäíèé ðàç 08.09.10.</p>
<p>Документация обновлялась последний раз 30.09.10.</p>
</body>
</html>

View File

@ -1535,7 +1535,7 @@ align 4
tl_node_poi_get_data: ;âçÿòü óêàçàòåëü íà äàííûå óçëà
push ebp
mov ebp,esp
push eax ecx edi
push eax ecx edx edi
mov edi,dword[ebp+12]
mov edx,dword[ebp+8]
@ -1549,7 +1549,7 @@ tl_node_poi_get_data: ;
add eax,dword[edi]
mov dword[ebp+12],eax ;return node data pointer
@@:
pop edi ecx eax
pop edi edx ecx eax
pop ebp
ret 4

View File

@ -113,6 +113,11 @@ buf_0:
<pre>stdcall [buf2d_line], buf_0, 30,10, 110,70, 0xffff00 ;ğèñóåì ëèíèş</pre>
<p>ãäå buf_0 - ñòğóêòóğà áóôåğà â êîòîğîì áóäåò ğèñîâàòüñÿ ëèíèÿ; 30, 10, 110, 70 - êîîğäèíàòû ëèíèè; 0xffff00 - öâåò ëèíèè.</p>
<h4>buf2d_rect_by_size</h4>
<p>Рисует прямоугольник, по двум координатам, 2-я координата задана по размеру.</p>
<pre>stdcall [buf2d_rect_by_size], buf_0, 10,10,150,100, 0x8080</pre>
<p>где buf_0 - структура буфера в котором будет рисоваться прямоугольник; 10, 10 - координаты левого верхнего угла; 150, 100 - размер прямоугольника; 0x8080 - цвет линии.</p>
<h4>buf2d_circle</h4>
<p>Ğèñóåò â áóôåğå îêğóæíîñòü ñ çàäàííûì öâåòîì è ğàäèóñîì. Ïğèìåğ èñïîëüçîâàíèÿ:</p>
<pre>stdcall [buf2d_circle], buf_0, 25, 70, 15, 0xff0000</pre>
@ -196,6 +201,7 @@ import_buf2d_lib:
buf2d_draw dd sz_buf2d_draw
buf2d_delete dd sz_buf2d_delete
buf2d_line dd sz_buf2d_line
buf2d_rect_by_size dd sz_buf2d_rect_by_size
buf2d_circle dd sz_buf2d_circle
buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
@ -218,6 +224,7 @@ import_buf2d_lib:
sz_buf2d_draw db 'buf2d_draw',0
sz_buf2d_delete db 'buf2d_delete',0
sz_buf2d_line db 'buf2d_line',0
sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0
sz_buf2d_circle db 'buf2d_circle',0
sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
@ -240,5 +247,6 @@ import_buf2d_lib:
èçìåíåí ôîğìàò áóôåğà - äëÿ øèğèíû è âûñîòû èñïîëüçóşòñÿ 4-õ áàéòíûå ÷èñëà âìåñòî 2-õ áàéòíûõ.</p>
<p>29.07.10 - äîáàâëåíû ôóíêöèè buf2d_crop_color è buf2d_offset_h;
èñïğàâëåíèÿ â ôóíêöèè buf2d_delete.</p>
<p>30.09.10 - добавлена функция buf2d_rect_by_size.</p>
</body>
</html>

View File

@ -998,6 +998,55 @@ endl
ret
endp
;à¨á®¢ ­¨¥ £®à¨§®­â «ì­®© «¨­¨¨, ¯®â®¬ã ­¥â ¯ à ¬¥âà  coord_y0
align 4
proc buf_line_h, buf_struc:dword, coord_x0:dword, coord_y0:dword, coord_x1:dword, color:dword
pushad
mov edx,dword[color]
mov eax,edi
mov edi,[buf_struc]
cmp buf2d_bits,24
jne @f
mov ebx,dword[coord_x0]
mov ecx,dword[coord_y0]
mov esi,dword[coord_x1]
@@: ;for (x=x0 ; x<x1; x++) ;------------------------------------
call draw_pixel
inc ebx
cmp ebx,esi
jge @f
jmp @b
@@:
popad
ret
endp
align 4
proc buf_rect_by_size, buf_struc:dword, coord_x:dword,coord_y:dword,w:dword,h:dword, color:dword
pushad
mov edi,[buf_struc]
cmp buf2d_bits,24
jne .coord_end
mov eax,[coord_x]
mov ebx,[coord_y]
mov ecx,[w]
add ecx,eax
mov edx,[h]
add edx,ebx
mov esi,dword[color]
stdcall buf_line_h, edi, eax, ebx, ecx, esi ;«¨­¨ï -
stdcall buf_line_brs, edi, eax, ebx, eax, edx, esi ;«¨­¨ï |
stdcall buf_line_h, edi, eax, edx, ecx, esi ;«¨­¨ï -
stdcall buf_line_brs, edi, ecx, ebx, ecx, edx, esi ;«¨­¨ï |
.coord_end:
popad
ret
endp
align 4
proc buf_circle, buf_struc:dword, coord_x:dword, coord_y:dword, r:dword, color:dword
locals
@ -2034,6 +2083,7 @@ EXPORTS:
dd sz_buf2d_draw, buf_draw_buf
dd sz_buf2d_delete, buf_delete
dd sz_buf2d_line, buf_line_brs
dd sz_buf2d_rect_by_size, buf_rect_by_size
dd sz_buf2d_circle, buf_circle
dd sz_buf2d_img_hdiv2, buf_img_hdiv2
dd sz_buf2d_img_wdiv2, buf_img_wdiv2
@ -2055,6 +2105,7 @@ EXPORTS:
sz_buf2d_draw db 'buf2d_draw',0
sz_buf2d_delete db 'buf2d_delete',0
sz_buf2d_line db 'buf2d_line',0 ;à¨á®¢ ­¨¥ «¨­¨¨
sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0 ;à¨á®¢ ­¨¥ ¯àאַ㣮«ì­¨ª , 2-ï ª®®à¤¨­ â  § ¤ ­  ¯® à §¬¥àã
sz_buf2d_circle db 'buf2d_circle',0 ;à¨á®¢ ­¨¥ ®ªà㦭®áâ¨
sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0 ;ᦠ⨥ ¨§®¡à ¦¥­¨ï ¯® ¢ëá®â¥ ¢ 2 à §  (à §¬¥à ¡ãä¥à  ­¥ ¬¥­ï¥âáï)
sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0 ;ᦠ⨥ ¨§®¡à ¦¥­¨ï ¯® è¨à¨­¥ ¢ 2 à §  (à §¬¥à ¡ãä¥à  ­¥ ¬¥­ï¥âáï)