forked from KolibriOS/kolibrios
'log_el':
1) new cursors with hot point 2) new list with element types 3) other changes git-svn-id: svn://kolibrios.org@2487 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
b4268eda9f
commit
a40a904d62
Binary file not shown.
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 25 KiB |
@ -48,16 +48,16 @@ table
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>Логические элементы версия от 20.03.2012</h1>
|
||||
<h1>Логические элементы версия от 21.03.2012</h1>
|
||||
<p>Оглавление</p>
|
||||
<ul>
|
||||
<li>О программе</li>
|
||||
<li><a href="#algor">Работа с программой</a></li>
|
||||
<ul>
|
||||
<li>Открытие файлов</li>
|
||||
<li><a href="#open_f">Открытие файлов</a></li>
|
||||
<li>Запуск / Остановка / Управление</li>
|
||||
<li>Редактирование</li>
|
||||
<li>Сохранение</li>
|
||||
<li><a href="#edit_f">Редактирование</a></li>
|
||||
<li><a href="#save_f">Сохранение</a></li>
|
||||
</ul>
|
||||
<li><a href="#exampl">Пример</a></li>
|
||||
<li><a href="#v_obj">Виды объектов</a></li>
|
||||
@ -78,22 +78,22 @@ table
|
||||
<p>Внешний вид программы.</p>
|
||||
|
||||
<h2><a name="algor">Работа с программой</a></h2>
|
||||
<h3>Открытие файлов</h3>
|
||||
<h3><a name="open_f">Открытие файлов</a></h3>
|
||||
<p>Схемы хранятся в текстовом виде, открывать их можно через кнопку <img src="tb_open.png"> с помощью диалогового окна.</p>
|
||||
|
||||
<h3>Запуск / Остановка / Управление</h3>
|
||||
<p>После открытия схемы для просмотра ее работы нужно нажать кнопку запуска <img src="tb_run.png">. Остановка моделирования делается той же самой кнопкой. После запуска схема начинает работать (могут двигаться разные сигналы). Для управления работой схемы предусмотрены объекты надписей. Если надпись создавалась не как информационная то пользователь может выбрать такую надпись в списке и кнопками <img src="tb_0.png"> и <img src="tb_1.png"> определять какой из сигналов подавать (0 или 1) на то место схемы, где находится данная надпись.</p>
|
||||
|
||||
<h3>Редактирование</h3>
|
||||
<h3><a name="edit_f">Редактирование</a></h3>
|
||||
<p>Описание кнопок для редактирования:</p>
|
||||
<p><img src="tb_cursor.png"> - сброс режима рисования проводов</p>
|
||||
<p><img src="tb_cursor.png"> - сброс всех режимов рисования. В данном режиме при нажатии на какой-либо логический элемент произойдет переход курсора в нижнем списке к данному элементу. Если главная иконка в списке закрыта, то курсор не попадет на нажатый элемент.</p>
|
||||
<p><img src="tb_pen_1.png"> - установка режима рисования проводов</p>
|
||||
<p><img src="tb_pen_2.png"> - установка режима рисования точек для проводов без пересечений</p>
|
||||
<p><img src="tb_eraser.png"> - установка режима стирания проводов</p>
|
||||
<p><img src="tb_element.png"> - установка режима рисования логических элементов</p>
|
||||
<p><img src="tb_element.png"> - установка режима рисования логических элементов. Тип рисуемого элемента выбирается в верхнем списке.</p>
|
||||
<p>Редактирование многих объектов еще не сделано :( ... Пока можно редактировать файлы со схемами текстовыми редакторами, но это не удобно. Потому создание новых схем сейчас проблематично.</p>
|
||||
|
||||
<h3>Сохранение</h3>
|
||||
<h3><a name="save_f">Сохранение</a></h3>
|
||||
<p>Для сохранения схемы нажмите на кнопку сохранения <img src="tb_save.png">.</p>
|
||||
|
||||
<h2><a name="exampl">Пример</a></h2>
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.4 KiB |
Binary file not shown.
Before Width: | Height: | Size: 686 B After Width: | Height: | Size: 483 B |
@ -533,11 +533,11 @@ proc el_draw, h_elem:dword
|
||||
add ebx,[Cor_y]
|
||||
movzx esi,byte[esi+8]
|
||||
stdcall move_rotate_n90, 1,0,esi
|
||||
mov edx,el_offs_legs_inp
|
||||
inc edx
|
||||
mov edx,1
|
||||
@@:
|
||||
stdcall [buf2d_set_pixel], buf_0, eax,ebx,dword[edi+el_offs_col]
|
||||
movzx ecx,byte[edi+edx]
|
||||
mov ecx,[edi+el_offs_legs_inp]
|
||||
movzx ecx,byte[ecx+edx]
|
||||
cmp ecx,0
|
||||
je @f
|
||||
stdcall move_rotate_n90, 0,ecx,esi
|
||||
|
@ -29,9 +29,10 @@ el_offs_col equ 16 ;梥
|
||||
el_offs_box_x equ 20 ;è¨à¨ ª®à®¡ª¨ í«¥¬¥â
|
||||
el_offs_box_y equ 21 ;¢ëá®â ª®à®¡ª¨ í«¥¬¥â
|
||||
el_offs_table equ 22 ;㪠§ ⥫ì â ¡«¨æã à ¡®âë í«¥¬¥â
|
||||
el_offs_legs_inp equ 26 ;ᬥ饨¥ ®¯¨á ¨¥ ¢å®¤ëå ®£
|
||||
el_offs_legs_inp equ 26 ;㪠§ ⥫ì â ¡«¨æã ®¯¨á ¨ï ¢å®¤ëå ®£
|
||||
el_offs_legs_out equ 30 ;ᬥ饨¥ ®¯¨á ¨¥ ¢ë室ëå ®£
|
||||
|
||||
sp_offs_el_angle equ 8 ;ᬥ饨¥ ¤«ï 㣫 ¯®¢®à®â í«¥¬¥â ¢ ᯨ᪥
|
||||
sp_offs_el_type equ 9 ;ᬥ饨¥ ¤«ï ⨯ í«¥¬¥â ¢ ᯨ᪥
|
||||
|
||||
points_max equ 1000
|
||||
@ -47,7 +48,7 @@ include 'le_pole.inc'
|
||||
include 'le_signal.inc'
|
||||
|
||||
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
|
||||
caption db '‹®£¨ç¥áª¨¥ í«¥¬¥âë 20.03.12',0 ;¯®¤¯¨áì ®ª
|
||||
caption db '‹®£¨ç¥áª¨¥ í«¥¬¥âë 21.03.12',0 ;¯®¤¯¨áì ®ª
|
||||
|
||||
panel_0_coord_top equ 5 ;¢¥àåïï ª®®à¤¨ â 0-£® àï¤ ¯ ¥«¨ ¨áâà㬥⮢
|
||||
panel_1_coord_top equ 35
|
||||
@ -82,7 +83,7 @@ struct FileInfoBlock
|
||||
FileName dd ?
|
||||
ends
|
||||
|
||||
macro elOpt nam,col,box_x,box_y,table, il0, il1, il2, ol0, ol1, ol2
|
||||
macro elOpt nam,col,box_x,box_y,table, tbl_i_legs, ol0, ol1, ol2
|
||||
{
|
||||
@@: db nam
|
||||
rb @b+16-$
|
||||
@ -90,39 +91,45 @@ macro elOpt nam,col,box_x,box_y,table, il0, il1, il2, ol0, ol1, ol2
|
||||
db box_x
|
||||
db box_y
|
||||
dd table+0 ;+el_offs_table
|
||||
;+26
|
||||
db il0+0 ;0-ï ¢å®¤ ï ®£
|
||||
db il1+0 ;1-ï ¢å®¤ ï ®£
|
||||
db il2+0
|
||||
db 0
|
||||
;+30
|
||||
db ol0+0
|
||||
db ol1+0
|
||||
db ol2+0
|
||||
db 0
|
||||
dd tbl_i_legs+0 ;+26 ¢å®¤ë¥ ®£¨
|
||||
;+30 ¢ëå®¤ë¥ ®£¨
|
||||
db ol0+0, ol1+0, ol2+0, 0
|
||||
}
|
||||
|
||||
align 4
|
||||
el_opt_beg:
|
||||
elOpt 'or[2]', 0xff00ff,5,5,tbl_or, 1,2,, 2
|
||||
elOpt 'or[3]', 0xff00ff,5,7,tbl_or, 1,2,2, 3
|
||||
elOpt 'and[2]',0xffff00,5,5,tbl_and.2, 1,2,, 2
|
||||
elOpt 'and[3]',0xffff00,5,7,tbl_and.3, 1,2,2, 3
|
||||
elOpt 'not', 0xffff,3,3,tbl_not, 1,,, 1
|
||||
elOpt 'xor', 0x8000ff,5,5,tbl_xor, 1,2,, 2
|
||||
elOpt 'sm[1]', 0x8080ff,7,7,tbl_sm, 1,2,2, 1,4
|
||||
elOpt 'or[2]', 0xff00ff,5,5,tbl_or, tbl_il_2, 2
|
||||
elOpt 'or[3]', 0xff00ff,5,7,tbl_or, tbl_il_3, 3
|
||||
elOpt 'or[4]', 0xff00ff,5,9,tbl_or, tbl_il_4, 4
|
||||
elOpt 'and[2]',0xffff00,5,5,tbl_and.2, tbl_il_2, 2
|
||||
elOpt 'and[3]',0xffff00,5,7,tbl_and.3, tbl_il_3, 3
|
||||
elOpt 'and[4]',0xffff00,5,9,tbl_and.4, tbl_il_4, 4
|
||||
elOpt 'not', 0xffff, 3,3,tbl_not, tbl_il_1, 1
|
||||
elOpt 'xor', 0x8000ff,5,5,tbl_xor, tbl_il_2, 2
|
||||
elOpt 'sm[1]', 0x8080ff,7,7,tbl_sm, tbl_il_3, 1,4
|
||||
;elOpt 'cd[8]', 0x8000, 7,17,tbl_cd_8,tbl_il_8, 6,2,2 ;è¨äà â®à 8 ¢å®¤®¢
|
||||
.end:
|
||||
elOpt '???', 0x808080,3,3,tbl_and.3, 1,,, 1 ;¥ ®¯®§ ë© í«¥¬¥â
|
||||
elOpt '???', 0x808080,3,3,tbl_and.3, tbl_il_1, 1 ;¥ ®¯®§ ë© í«¥¬¥â
|
||||
|
||||
;â ¡«¨æë ¯® ª®â®àë¬ § ¤ îâáï ¯à ¢¨« à ¡®âë í«¥¬¥â®¢
|
||||
align 4
|
||||
tbl_or db 0,1,1,1, 1,1,1,1 ;or2, or3
|
||||
db 1,1,1,1,1,1,1,1 ;or4
|
||||
tbl_and:
|
||||
.3: db 0,0,0,0
|
||||
.4: dq 0
|
||||
.3: dd 0
|
||||
.2: db 0,0,0,1
|
||||
tbl_xor db 0,1,1,0
|
||||
tbl_sm db 0,2,2,1, 2,1,1,3
|
||||
tbl_not db 1,0 ;not
|
||||
;tbl_cd_8 db ;256=2^8
|
||||
|
||||
;â ¡«¨æë ¤«ï ¢å®¤ëå ®£
|
||||
tbl_il_1 db 1,0 ;ª®à¯ãá 1 ®£ã
|
||||
tbl_il_2 db 1,2,0 ;ª®à¯ãá 2 ®£¨
|
||||
tbl_il_3 db 1,2,2,0
|
||||
tbl_il_4 db 1,2,2,2,0
|
||||
;tbl_il_8 db 1,2,2,2,2,2,2,2,0
|
||||
|
||||
time dd 0
|
||||
tim_ch db 0
|
||||
@ -224,6 +231,7 @@ start:
|
||||
|
||||
stdcall pole_init, pole
|
||||
stdcall dword[tl_data_init], tree1
|
||||
stdcall dword[tl_data_init], tree2
|
||||
|
||||
;á¨áâ¥¬ë¥ ¨ª®ª¨ 16*16 ¤«ï tree_list
|
||||
load_image_file 'tl_sys_16.png', icon_tl_sys,TREE_ICON_SYS16_BMP_SIZE
|
||||
@ -231,10 +239,12 @@ start:
|
||||
;¥ ¨¨æ¨ «¨§¨à®¢ ë¥ ¤ ë¥, ® ®è¨¡ª¨ ¥ ¡ã¤¥â, â. ª. ¡ãä¥à 㦮£® à §¬¥à
|
||||
mov eax,dword[icon_tl_sys]
|
||||
mov dword[tree1.data_img_sys],eax
|
||||
mov dword[tree2.data_img_sys],eax
|
||||
|
||||
load_image_file 'objects.png', icon_toolbar,TOOLBAR_ICON_BMP_SIZE
|
||||
mov eax,dword[icon_toolbar]
|
||||
mov dword[tree1.data_img],eax
|
||||
mov dword[tree2.data_img],eax
|
||||
|
||||
;*** § £à㧪 èà¨äâ
|
||||
load_image_file 'font6x9.bmp', image_data_gray,IMAGE_FONT_SIZE
|
||||
@ -257,6 +267,15 @@ start:
|
||||
stdcall [buf2d_conv_24_to_32],buf_curs,buf_curs_8 ;¤¥« ¥¬ ¡ãä¥à rgba 32¡¨â
|
||||
|
||||
stdcall sign_init, 3000
|
||||
mov eax,el_opt_beg+el_offs_nam
|
||||
mov ecx,(el_opt_beg.end-el_opt_beg)/size_el_opt ;ª®««¨ç¥á⢮ ⨯®¢ í«¥¬¥â®¢
|
||||
cld
|
||||
@@:
|
||||
stdcall [tl_node_add], eax, el_icon_elems shl 16, tree2
|
||||
stdcall [tl_cur_next], tree2
|
||||
add eax,size_el_opt
|
||||
loop @b
|
||||
stdcall [tl_cur_beg], tree2
|
||||
|
||||
mcall 26,9
|
||||
mov [last_time],eax
|
||||
@ -318,6 +337,7 @@ timer_funct:
|
||||
align 4
|
||||
mouse:
|
||||
stdcall [tl_mouse], tree1
|
||||
stdcall [tl_mouse], tree2
|
||||
|
||||
push eax ebx ecx edx
|
||||
mcall 37,2 ; ¦ âë¥ ª®¯ª¨ ¬ëè¨
|
||||
@ -362,6 +382,31 @@ mouse:
|
||||
cmp ebx,[shem_h]
|
||||
jge .end_buf_wnd
|
||||
|
||||
cmp byte[pen_mode],0
|
||||
jne .end_mode_0
|
||||
;०¨¬ ªãàá®à (¢ë¡®à í«¥¬¥â ¯à¨ ¦ ⨨)
|
||||
stdcall element_is_click,eax,ebx
|
||||
test eax,eax
|
||||
jz .end_buf_wnd ;¯à¨ ¦ ⨨ ¥ ¯®¯ «¨ ¨ ®¤¨ ¨§ í«¥¬¥â®¢
|
||||
stdcall [tl_node_get_data], tree1
|
||||
pop ebx
|
||||
cmp eax,ebx
|
||||
je .end_buf_wnd ;¥á«¨ 㦥 ªãàá®à á⮨â â ¬ £¤¥ 㦮
|
||||
|
||||
stdcall [tl_cur_beg], tree1
|
||||
.cycle0:
|
||||
stdcall [tl_node_get_data], tree1
|
||||
pop ebx
|
||||
test ebx,ebx
|
||||
jz .end_buf_wnd
|
||||
cmp eax,ebx
|
||||
je @f
|
||||
stdcall [tl_cur_next], tree1
|
||||
jmp .cycle0
|
||||
@@:
|
||||
stdcall [tl_draw], tree1
|
||||
jmp .end_buf_wnd
|
||||
.end_mode_0:
|
||||
cmp byte[pen_mode],1
|
||||
jne .end_mode_1
|
||||
;०¨¬ à¨á®¢ ¨ï ¯à®¢®¤
|
||||
@ -437,6 +482,91 @@ mouse:
|
||||
pop edx ecx ebx eax
|
||||
ret
|
||||
|
||||
;output:
|
||||
; eax - pointer to element data
|
||||
align 4
|
||||
proc element_is_click uses ebx ecx edx esi edi, coord_x:dword, coord_y:dword
|
||||
stdcall dword[tl_node_poi_get_info],0,tree1
|
||||
pop esi
|
||||
@@:
|
||||
cmp esi,0
|
||||
je @f
|
||||
cmp word[esi],el_icon_elems ;¯®«ã票¥ ç¥à¥§ esi ⨯ ¨ª®ª¨
|
||||
jne .end_add_p1
|
||||
stdcall [tl_node_poi_get_data], esi, tree1
|
||||
pop ecx
|
||||
|
||||
movzx edx,byte[ecx+sp_offs_el_type]
|
||||
imul edx,size_el_opt
|
||||
add edx,el_opt_beg ; 室¨¬ ®¯æ¨î ᮠ᢮©á⢠¬¨ ¤ ®£® í«¥¬¥â
|
||||
|
||||
mov eax,[ecx] ;element coord x
|
||||
mov ebx,[ecx+4] ;element coord y
|
||||
movzx edi,byte[ecx+sp_offs_el_angle]
|
||||
push edi
|
||||
movzx edi,byte[edx+el_offs_box_y]
|
||||
dec edi
|
||||
push edi
|
||||
movzx edi,byte[edx+el_offs_box_x]
|
||||
dec edi
|
||||
push edi
|
||||
stdcall move_rotate_n90 ;,[edx+el_offs_box_x],[edx+el_offs_box_y],[ecx+sp_offs_el_angle]
|
||||
;Rect(eax,ebx,[ecx],[ecx+4])
|
||||
stdcall point_in_rect, [coord_x],[coord_y], eax,ebx,[ecx],[ecx+4]
|
||||
test eax,eax
|
||||
jz .end_add_p1
|
||||
mov eax,ecx
|
||||
jmp .end_f
|
||||
.end_add_p1:
|
||||
stdcall dword[tl_node_poi_get_next_info],esi,tree1
|
||||
pop esi ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
|
||||
jmp @b
|
||||
@@:
|
||||
xor eax,eax ;¥á«¨ ¥ 諨
|
||||
.end_f:
|
||||
ret
|
||||
endp
|
||||
|
||||
;¯à®¢¥àª ¯®¯ ¤¥¨ï â®çª¨ ¢ ¯àאַ㣮«ì¨ª
|
||||
;१ã«ìâ â:
|
||||
; ¥á«¨ ¥ ¯®¯ ¤ ¥â â® eax=0
|
||||
; ¥á«¨ ¯®¯ ¤ ¥â â® eax=1
|
||||
align 4
|
||||
proc point_in_rect uses ebx ecx, px:dword, py:dword, rx0:dword, ry0:dword, rx1:dword, ry1:dword
|
||||
xor eax,eax
|
||||
|
||||
;¯à®¢¥àª ¯® ®á¨ x
|
||||
mov ebx,[rx0]
|
||||
mov ecx,[rx1]
|
||||
cmp ebx,ecx
|
||||
jle @f
|
||||
xchg ebx,ecx
|
||||
@@:
|
||||
cmp ebx,[px]
|
||||
jg .no_contains
|
||||
cmp ecx,[px]
|
||||
jl .no_contains
|
||||
|
||||
;¯à®¢¥àª ¯® ®á¨ y
|
||||
mov ebx,[ry0]
|
||||
mov ecx,[ry1]
|
||||
cmp ebx,ecx
|
||||
jle @f
|
||||
xchg ebx,ecx
|
||||
@@:
|
||||
cmp ebx,[py]
|
||||
jg .no_contains
|
||||
cmp ecx,[py]
|
||||
jl .no_contains
|
||||
|
||||
;¥á«¨ ¯®¯ «¨ â® eax=1
|
||||
inc eax
|
||||
;stdcall draw_scaled_rect, [rx0],[ry0],[rx1],[ry1], 0xffffff
|
||||
;stdcall [buf2d_draw], buf_0
|
||||
.no_contains:
|
||||
ret
|
||||
endp
|
||||
|
||||
align 4
|
||||
draw_window:
|
||||
pushad
|
||||
@ -541,8 +671,10 @@ pushad
|
||||
|
||||
; *** à¨á®¢ ¨¥ ¡ãä¥à ***
|
||||
stdcall [buf2d_draw], buf_0
|
||||
mov dword[wScrObj.all_redraw],1
|
||||
mov dword[wScr1.all_redraw],1
|
||||
stdcall [tl_draw], tree1
|
||||
mov dword[wScr2.all_redraw],1
|
||||
stdcall [tl_draw], tree2
|
||||
stdcall pole_draw_pok, pole
|
||||
|
||||
; *** ᮧ¤ ¨¥ ª®¯®ª ãáâ ®¢ª¨ ᨣ «®¢ set_0 ¨ set_1 ***
|
||||
@ -663,6 +795,7 @@ align 4
|
||||
key:
|
||||
mcall 2
|
||||
stdcall [tl_key], dword tree1
|
||||
stdcall [tl_key], dword tree2
|
||||
jmp still
|
||||
|
||||
|
||||
@ -743,19 +876,19 @@ button:
|
||||
@@:
|
||||
cmp ah,31
|
||||
jne @f
|
||||
stdcall set_pen_mode,1,0 ;ãáâ ®¢ª ०¨¬ à¨á®¢ ¨ï ¯à®¢®¤
|
||||
stdcall set_pen_mode,1,0,((9 shl 8)+9) shl 16 ;ãáâ ®¢ª ०¨¬ à¨á®¢ ¨ï ¯à®¢®¤
|
||||
@@:
|
||||
cmp ah,32
|
||||
jne @f
|
||||
stdcall set_pen_mode,2,1
|
||||
stdcall set_pen_mode,2,1,((9 shl 8)+9) shl 16
|
||||
@@:
|
||||
cmp ah,33
|
||||
jne @f
|
||||
stdcall set_pen_mode,3,2 ;ãáâ ®¢ª ०¨¬ áâ¨à ¨ï ¯à®¢®¤
|
||||
stdcall set_pen_mode,3,2,((15 shl 8)+9) shl 16 ;ãáâ ®¢ª ०¨¬ áâ¨à ¨ï ¯à®¢®¤
|
||||
@@:
|
||||
cmp ah,34
|
||||
jne @f
|
||||
stdcall set_pen_mode,4,3 ;ãáâ ®¢ª ०¨¬ ᮧ¤ ¨ï í«¥¬¥â®¢
|
||||
stdcall set_pen_mode,4,3,((9 shl 8)+9) shl 16 ;ãáâ ®¢ª ०¨¬ ᮧ¤ ¨ï í«¥¬¥â®¢
|
||||
@@:
|
||||
cmp ah,1
|
||||
jne still
|
||||
@ -767,6 +900,10 @@ button:
|
||||
stdcall pole_delete, pole
|
||||
call sign_delete
|
||||
stdcall [tl_data_clear], tree1
|
||||
;ç¨á⨬ 㪠§ ⥫¨ ¨§®¡à ¦¥¨ï, ª®â®àë¥ ¡ë«¨ ®¡é¨¬¨ ¤«ï «¨á⮢ ¨ 㤠«¥ë «¨á⮬ tree1
|
||||
mov dword[tree2.data_img_sys],0
|
||||
mov dword[tree2.data_img],0
|
||||
stdcall [tl_data_clear], tree2
|
||||
cmp [cursor_pointer],0
|
||||
je @f
|
||||
mcall 37,6,[cursor_pointer]
|
||||
@ -880,7 +1017,7 @@ but_open_file:
|
||||
mov dword[txt_buf+4],eax ;ª®®à¤¨ â y
|
||||
call str_next_val
|
||||
stdcall conv_str_to_int,edi
|
||||
mov byte[txt_buf+8],al ; ¯à ¢«¥¨¥
|
||||
mov byte[txt_buf+sp_offs_el_angle],al ; ¯à ¢«¥¨¥
|
||||
call str_next_val
|
||||
;¯® ¤à¥áã edi §¢ ¨¥ í«¥¬¥â
|
||||
stdcall el_get_name, edi
|
||||
@ -1318,7 +1455,7 @@ pushad
|
||||
|
||||
stdcall str_len,edi
|
||||
add edi,eax
|
||||
movzx eax,byte[ecx+8] ;angle
|
||||
movzx eax,byte[ecx+sp_offs_el_angle] ;angle
|
||||
stdcall convert_int_to_str
|
||||
stdcall str_cat,edi,txt_space
|
||||
|
||||
@ -1570,22 +1707,30 @@ align 4
|
||||
proc shem_element_creat uses eax ebx, coord_x:dword, coord_y:dword
|
||||
mov eax,dword[coord_x]
|
||||
mov dword[txt_buf],eax ;ª®®à¤¨ â x
|
||||
mov eax,dword[coord_y]
|
||||
mov dword[txt_buf+4],eax ;ª®®à¤¨ â y
|
||||
mov ebx,dword[coord_y]
|
||||
|
||||
xor eax,eax
|
||||
mov byte[txt_buf+8],al ; ¯à ¢«¥¨¥
|
||||
;¯® ¤à¥áã edi §¢ ¨¥ í«¥¬¥â
|
||||
;stdcall el_get_name, edi
|
||||
stdcall element_is_click,eax,ebx ;¯à®¢¥à塞 ¥áâì «¨ ¢ ¤ ®© â®çª¥ ¤à㣮© í«¥¬¥â ᮧ¤ ë© à ìè¥
|
||||
test eax,eax
|
||||
jnz .end_f ;¯à¨ ¦ ⨨ ¯®¯ «¨ ®¤¨ ¨§ í«¥¬¥â®¢
|
||||
mov dword[txt_buf+4],ebx ;ª®®à¤¨ â y
|
||||
|
||||
;xor eax,eax
|
||||
mov byte[txt_buf+sp_offs_el_angle],al ; ¯à ¢«¥¨¥
|
||||
|
||||
stdcall [tl_node_get_data], tree2
|
||||
pop ebx
|
||||
test ebx,ebx
|
||||
jnz @f
|
||||
mov ebx,el_opt_beg+el_offs_nam ;¥á«¨ ¥ ¢§ï«®áì ¨¬ï í«¥¬¥â , â® ¯® 㬮«ç ¨î ¡¥à¥¬ 1-© ¨§ ᯨáª
|
||||
@@:
|
||||
stdcall el_get_name, ebx
|
||||
mov byte[txt_buf+sp_offs_el_type],al ;⨯ í«¥¬¥â
|
||||
|
||||
movzx ebx,al
|
||||
imul ebx,size_el_opt
|
||||
add ebx,el_opt_beg+el_offs_nam
|
||||
stdcall make_list_capts,txt_buf,ebx
|
||||
stdcall [tl_node_add], txt_buf,(el_icon_elems shl 16)+1, tree1
|
||||
stdcall [tl_cur_next], tree1
|
||||
stdcall [tl_draw], tree1
|
||||
.end_f:
|
||||
ret
|
||||
endp
|
||||
|
||||
@ -1622,12 +1767,12 @@ proc el_get_leg_coords uses ecx edx edi esi, el_data:dword, l_opt:dword
|
||||
movzx esi,byte[edi+sp_offs_el_type] ;⨯ í«¥¬¥â
|
||||
imul esi,size_el_opt
|
||||
add esi,el_opt_beg
|
||||
;esi+el_offs_legs_inp - 㪠§ â¥«ì ¯ à ¬¥âàë 0-© ¢å®¤®© ®£¨
|
||||
;esi+el_offs_legs_inp - 㪠§ ⥫ì â ¡«¨æã á ¯ à ¬¥âà ¬¨ ¢å®¤ëå ®£
|
||||
|
||||
mov eax,[edi+0]
|
||||
mov ebx,[edi+4]
|
||||
mov edx,[l_opt]
|
||||
movzx edi,byte[edi+8] ;㣮« ¯®¢®à®â / 90 (®â 0-3)
|
||||
movzx edi,byte[edi+sp_offs_el_angle] ;㣮« ¯®¢®à®â / 90 (®â 0-3)
|
||||
|
||||
btr edx,16 ;¢å®¤ ï/¢ë室 ï ®£
|
||||
jc .output_leg
|
||||
@ -1635,7 +1780,7 @@ proc el_get_leg_coords uses ecx edx edi esi, el_data:dword, l_opt:dword
|
||||
;¥á«¨ ®£ ¢å®¤ ï
|
||||
inc edx ;®¬¥à æ¨ï ®£ ç¨ ¥âáï á ã«ï, ¯®â®¬ã ¤®¡ ¢«ï¥¬ 1
|
||||
stdcall move_rotate_x_n90, -2,edi
|
||||
add esi,el_offs_legs_inp
|
||||
mov esi,[esi+el_offs_legs_inp]
|
||||
@@:
|
||||
movzx ecx,byte[esi]
|
||||
cmp ecx,0
|
||||
@ -1980,14 +2125,15 @@ proc but_set_none
|
||||
ret
|
||||
endp
|
||||
|
||||
;hot_p - ª®®à¤¨ âë £®àï祩 â®çª¨ ªãàá®à , ᬥé¥ë¥ ¡¨â 16 ((cx shl 8) + cy) shl 16
|
||||
align 4
|
||||
proc set_pen_mode uses eax ebx ecx edx, mode:dword, icon:dword
|
||||
proc set_pen_mode uses eax ebx ecx edx, mode:dword, icon:dword, hot_p:dword
|
||||
mov eax,[mode]
|
||||
cmp byte[pen_mode],al
|
||||
je @f
|
||||
mov byte[pen_mode],al
|
||||
;mov edx,((cx shl 8) + cy) shl 16
|
||||
mov edx,2 ;LOAD_INDIRECT
|
||||
mov edx,[hot_p]
|
||||
mov dx,2 ;LOAD_INDIRECT
|
||||
mov ecx,[icon]
|
||||
shl ecx,12 ;㬮¦ ¥¬ 4 ª¡
|
||||
add ecx,[buf_curs.data]
|
||||
@ -2094,10 +2240,48 @@ cursor_pointer dd 0 ;㪠
|
||||
|
||||
el_focus dd 0
|
||||
tree1 tree_list 32,points_max+2, tl_key_no_edit, 16,16,\
|
||||
0x8080ff,0x0000ff,0xffffff, 5,panel_3_coord_top,145,250, 0,capt_offs,0,\
|
||||
el_focus, wScrObj,0
|
||||
0x8080ff,0x0000ff,0xffffff, 5,panel_3_coord_top+85,145,170, 0,capt_offs,0,\
|
||||
el_focus, wScr1,0
|
||||
tree2 tree_list el_offs_col-el_offs_nam,100+2, tl_key_no_edit+tl_list_box_mode, 16,16,\
|
||||
0x8080ff,0x0000ff,0xffffff, 5,panel_3_coord_top,145,80, 0,0,0,\
|
||||
el_focus, wScr2,0
|
||||
|
||||
align 4
|
||||
wScrObj:
|
||||
wScr1:
|
||||
.x:
|
||||
.size_x dw 16 ;+0
|
||||
.start_x dw 0 ;+2
|
||||
.y:
|
||||
.size_y dw 150 ;+4
|
||||
.start_y dw 0 ;+6
|
||||
.btn_high dd 15 ;+8
|
||||
.type dd 1 ;+12
|
||||
.max_area dd 100 ;+16
|
||||
.cur_area dd 30 ;+20
|
||||
.position dd 0 ;+24
|
||||
.bckg_col dd 0xeeeeee ;+28
|
||||
.frnt_col dd 0xbbddff ;+32
|
||||
.line_col dd 0 ;+36
|
||||
.redraw dd 0 ;+40
|
||||
.delta dw 0 ;+44
|
||||
.delta2 dw 0 ;+46
|
||||
.run_x:
|
||||
.r_size_x dw 0 ;+48
|
||||
.r_start_x dw 0 ;+50
|
||||
.run_y:
|
||||
.r_size_y dw 0 ;+52
|
||||
.r_start_y dw 0 ;+54
|
||||
.m_pos dd 0 ;+56
|
||||
.m_pos_2 dd 0 ;+60
|
||||
.m_keys dd 0 ;+64
|
||||
.run_size dd 0 ;+68
|
||||
.position2 dd 0 ;+72
|
||||
.work_size dd 0 ;+76
|
||||
.all_redraw dd 0 ;+80
|
||||
.ar_offset dd 1 ;+84
|
||||
|
||||
align 4
|
||||
wScr2:
|
||||
.x:
|
||||
.size_x dw 16 ;+0
|
||||
.start_x dw 0 ;+2
|
||||
|
Loading…
Reference in New Issue
Block a user