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>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<h1>Логические элементы версия от 20.03.2012</h1>
|
<h1>Логические элементы версия от 21.03.2012</h1>
|
||||||
<p>Оглавление</p>
|
<p>Оглавление</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>О программе</li>
|
<li>О программе</li>
|
||||||
<li><a href="#algor">Работа с программой</a></li>
|
<li><a href="#algor">Работа с программой</a></li>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Открытие файлов</li>
|
<li><a href="#open_f">Открытие файлов</a></li>
|
||||||
<li>Запуск / Остановка / Управление</li>
|
<li>Запуск / Остановка / Управление</li>
|
||||||
<li>Редактирование</li>
|
<li><a href="#edit_f">Редактирование</a></li>
|
||||||
<li>Сохранение</li>
|
<li><a href="#save_f">Сохранение</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<li><a href="#exampl">Пример</a></li>
|
<li><a href="#exampl">Пример</a></li>
|
||||||
<li><a href="#v_obj">Виды объектов</a></li>
|
<li><a href="#v_obj">Виды объектов</a></li>
|
||||||
@ -78,22 +78,22 @@ table
|
|||||||
<p>Внешний вид программы.</p>
|
<p>Внешний вид программы.</p>
|
||||||
|
|
||||||
<h2><a name="algor">Работа с программой</a></h2>
|
<h2><a name="algor">Работа с программой</a></h2>
|
||||||
<h3>Открытие файлов</h3>
|
<h3><a name="open_f">Открытие файлов</a></h3>
|
||||||
<p>Схемы хранятся в текстовом виде, открывать их можно через кнопку <img src="tb_open.png"> с помощью диалогового окна.</p>
|
<p>Схемы хранятся в текстовом виде, открывать их можно через кнопку <img src="tb_open.png"> с помощью диалогового окна.</p>
|
||||||
|
|
||||||
<h3>Запуск / Остановка / Управление</h3>
|
<h3>Запуск / Остановка / Управление</h3>
|
||||||
<p>После открытия схемы для просмотра ее работы нужно нажать кнопку запуска <img src="tb_run.png">. Остановка моделирования делается той же самой кнопкой. После запуска схема начинает работать (могут двигаться разные сигналы). Для управления работой схемы предусмотрены объекты надписей. Если надпись создавалась не как информационная то пользователь может выбрать такую надпись в списке и кнопками <img src="tb_0.png"> и <img src="tb_1.png"> определять какой из сигналов подавать (0 или 1) на то место схемы, где находится данная надпись.</p>
|
<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>Описание кнопок для редактирования:</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_1.png"> - установка режима рисования проводов</p>
|
||||||
<p><img src="tb_pen_2.png"> - установка режима рисования точек для проводов без пересечений</p>
|
<p><img src="tb_pen_2.png"> - установка режима рисования точек для проводов без пересечений</p>
|
||||||
<p><img src="tb_eraser.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>
|
<p>Редактирование многих объектов еще не сделано :( ... Пока можно редактировать файлы со схемами текстовыми редакторами, но это не удобно. Потому создание новых схем сейчас проблематично.</p>
|
||||||
|
|
||||||
<h3>Сохранение</h3>
|
<h3><a name="save_f">Сохранение</a></h3>
|
||||||
<p>Для сохранения схемы нажмите на кнопку сохранения <img src="tb_save.png">.</p>
|
<p>Для сохранения схемы нажмите на кнопку сохранения <img src="tb_save.png">.</p>
|
||||||
|
|
||||||
<h2><a name="exampl">Пример</a></h2>
|
<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]
|
add ebx,[Cor_y]
|
||||||
movzx esi,byte[esi+8]
|
movzx esi,byte[esi+8]
|
||||||
stdcall move_rotate_n90, 1,0,esi
|
stdcall move_rotate_n90, 1,0,esi
|
||||||
mov edx,el_offs_legs_inp
|
mov edx,1
|
||||||
inc edx
|
|
||||||
@@:
|
@@:
|
||||||
stdcall [buf2d_set_pixel], buf_0, eax,ebx,dword[edi+el_offs_col]
|
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
|
cmp ecx,0
|
||||||
je @f
|
je @f
|
||||||
stdcall move_rotate_n90, 0,ecx,esi
|
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_x equ 20 ;è¨à¨ ª®à®¡ª¨ í«¥¬¥â
|
||||||
el_offs_box_y equ 21 ;¢ëá®â ª®à®¡ª¨ í«¥¬¥â
|
el_offs_box_y equ 21 ;¢ëá®â ª®à®¡ª¨ í«¥¬¥â
|
||||||
el_offs_table equ 22 ;㪠§ ⥫ì â ¡«¨æã à ¡®âë í«¥¬¥â
|
el_offs_table equ 22 ;㪠§ ⥫ì â ¡«¨æã à ¡®âë í«¥¬¥â
|
||||||
el_offs_legs_inp equ 26 ;ᬥ饨¥ ®¯¨á ¨¥ ¢å®¤ëå ®£
|
el_offs_legs_inp equ 26 ;㪠§ ⥫ì â ¡«¨æã ®¯¨á ¨ï ¢å®¤ëå ®£
|
||||||
el_offs_legs_out equ 30 ;ᬥ饨¥ ®¯¨á ¨¥ ¢ë室ëå ®£
|
el_offs_legs_out equ 30 ;ᬥ饨¥ ®¯¨á ¨¥ ¢ë室ëå ®£
|
||||||
|
|
||||||
|
sp_offs_el_angle equ 8 ;ᬥ饨¥ ¤«ï 㣫 ¯®¢®à®â í«¥¬¥â ¢ ᯨ᪥
|
||||||
sp_offs_el_type equ 9 ;ᬥ饨¥ ¤«ï ⨯ í«¥¬¥â ¢ ᯨ᪥
|
sp_offs_el_type equ 9 ;ᬥ饨¥ ¤«ï ⨯ í«¥¬¥â ¢ ᯨ᪥
|
||||||
|
|
||||||
points_max equ 1000
|
points_max equ 1000
|
||||||
@ -47,7 +48,7 @@ include 'le_pole.inc'
|
|||||||
include 'le_signal.inc'
|
include 'le_signal.inc'
|
||||||
|
|
||||||
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
|
@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_0_coord_top equ 5 ;¢¥àåïï ª®®à¤¨ â 0-£® àï¤ ¯ ¥«¨ ¨áâà㬥⮢
|
||||||
panel_1_coord_top equ 35
|
panel_1_coord_top equ 35
|
||||||
@ -82,7 +83,7 @@ struct FileInfoBlock
|
|||||||
FileName dd ?
|
FileName dd ?
|
||||||
ends
|
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
|
@@: db nam
|
||||||
rb @b+16-$
|
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_x
|
||||||
db box_y
|
db box_y
|
||||||
dd table+0 ;+el_offs_table
|
dd table+0 ;+el_offs_table
|
||||||
;+26
|
dd tbl_i_legs+0 ;+26 ¢å®¤ë¥ ®£¨
|
||||||
db il0+0 ;0-ï ¢å®¤ ï ®£
|
;+30 ¢ëå®¤ë¥ ®£¨
|
||||||
db il1+0 ;1-ï ¢å®¤ ï ®£
|
db ol0+0, ol1+0, ol2+0, 0
|
||||||
db il2+0
|
|
||||||
db 0
|
|
||||||
;+30
|
|
||||||
db ol0+0
|
|
||||||
db ol1+0
|
|
||||||
db ol2+0
|
|
||||||
db 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
el_opt_beg:
|
el_opt_beg:
|
||||||
elOpt 'or[2]', 0xff00ff,5,5,tbl_or, 1,2,, 2
|
elOpt 'or[2]', 0xff00ff,5,5,tbl_or, tbl_il_2, 2
|
||||||
elOpt 'or[3]', 0xff00ff,5,7,tbl_or, 1,2,2, 3
|
elOpt 'or[3]', 0xff00ff,5,7,tbl_or, tbl_il_3, 3
|
||||||
elOpt 'and[2]',0xffff00,5,5,tbl_and.2, 1,2,, 2
|
elOpt 'or[4]', 0xff00ff,5,9,tbl_or, tbl_il_4, 4
|
||||||
elOpt 'and[3]',0xffff00,5,7,tbl_and.3, 1,2,2, 3
|
elOpt 'and[2]',0xffff00,5,5,tbl_and.2, tbl_il_2, 2
|
||||||
elOpt 'not', 0xffff,3,3,tbl_not, 1,,, 1
|
elOpt 'and[3]',0xffff00,5,7,tbl_and.3, tbl_il_3, 3
|
||||||
elOpt 'xor', 0x8000ff,5,5,tbl_xor, 1,2,, 2
|
elOpt 'and[4]',0xffff00,5,9,tbl_and.4, tbl_il_4, 4
|
||||||
elOpt 'sm[1]', 0x8080ff,7,7,tbl_sm, 1,2,2, 1,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:
|
.end:
|
||||||
elOpt '???', 0x808080,3,3,tbl_and.3, 1,,, 1 ;¥ ®¯®§ ë© í«¥¬¥â
|
elOpt '???', 0x808080,3,3,tbl_and.3, tbl_il_1, 1 ;¥ ®¯®§ ë© í«¥¬¥â
|
||||||
|
|
||||||
;â ¡«¨æë ¯® ª®â®àë¬ § ¤ îâáï ¯à ¢¨« à ¡®âë í«¥¬¥â®¢
|
;â ¡«¨æë ¯® ª®â®àë¬ § ¤ îâáï ¯à ¢¨« à ¡®âë í«¥¬¥â®¢
|
||||||
align 4
|
align 4
|
||||||
tbl_or db 0,1,1,1, 1,1,1,1 ;or2, or3
|
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:
|
tbl_and:
|
||||||
.3: db 0,0,0,0
|
.4: dq 0
|
||||||
|
.3: dd 0
|
||||||
.2: db 0,0,0,1
|
.2: db 0,0,0,1
|
||||||
tbl_xor db 0,1,1,0
|
tbl_xor db 0,1,1,0
|
||||||
tbl_sm db 0,2,2,1, 2,1,1,3
|
tbl_sm db 0,2,2,1, 2,1,1,3
|
||||||
tbl_not db 1,0 ;not
|
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
|
time dd 0
|
||||||
tim_ch db 0
|
tim_ch db 0
|
||||||
@ -224,6 +231,7 @@ start:
|
|||||||
|
|
||||||
stdcall pole_init, pole
|
stdcall pole_init, pole
|
||||||
stdcall dword[tl_data_init], tree1
|
stdcall dword[tl_data_init], tree1
|
||||||
|
stdcall dword[tl_data_init], tree2
|
||||||
|
|
||||||
;á¨áâ¥¬ë¥ ¨ª®ª¨ 16*16 ¤«ï tree_list
|
;á¨áâ¥¬ë¥ ¨ª®ª¨ 16*16 ¤«ï tree_list
|
||||||
load_image_file 'tl_sys_16.png', icon_tl_sys,TREE_ICON_SYS16_BMP_SIZE
|
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 eax,dword[icon_tl_sys]
|
||||||
mov dword[tree1.data_img_sys],eax
|
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
|
load_image_file 'objects.png', icon_toolbar,TOOLBAR_ICON_BMP_SIZE
|
||||||
mov eax,dword[icon_toolbar]
|
mov eax,dword[icon_toolbar]
|
||||||
mov dword[tree1.data_img],eax
|
mov dword[tree1.data_img],eax
|
||||||
|
mov dword[tree2.data_img],eax
|
||||||
|
|
||||||
;*** § £à㧪 èà¨äâ
|
;*** § £à㧪 èà¨äâ
|
||||||
load_image_file 'font6x9.bmp', image_data_gray,IMAGE_FONT_SIZE
|
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 [buf2d_conv_24_to_32],buf_curs,buf_curs_8 ;¤¥« ¥¬ ¡ãä¥à rgba 32¡¨â
|
||||||
|
|
||||||
stdcall sign_init, 3000
|
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
|
mcall 26,9
|
||||||
mov [last_time],eax
|
mov [last_time],eax
|
||||||
@ -318,6 +337,7 @@ timer_funct:
|
|||||||
align 4
|
align 4
|
||||||
mouse:
|
mouse:
|
||||||
stdcall [tl_mouse], tree1
|
stdcall [tl_mouse], tree1
|
||||||
|
stdcall [tl_mouse], tree2
|
||||||
|
|
||||||
push eax ebx ecx edx
|
push eax ebx ecx edx
|
||||||
mcall 37,2 ; ¦ âë¥ ª®¯ª¨ ¬ëè¨
|
mcall 37,2 ; ¦ âë¥ ª®¯ª¨ ¬ëè¨
|
||||||
@ -362,6 +382,31 @@ mouse:
|
|||||||
cmp ebx,[shem_h]
|
cmp ebx,[shem_h]
|
||||||
jge .end_buf_wnd
|
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
|
cmp byte[pen_mode],1
|
||||||
jne .end_mode_1
|
jne .end_mode_1
|
||||||
;०¨¬ à¨á®¢ ¨ï ¯à®¢®¤
|
;०¨¬ à¨á®¢ ¨ï ¯à®¢®¤
|
||||||
@ -437,6 +482,91 @@ mouse:
|
|||||||
pop edx ecx ebx eax
|
pop edx ecx ebx eax
|
||||||
ret
|
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
|
align 4
|
||||||
draw_window:
|
draw_window:
|
||||||
pushad
|
pushad
|
||||||
@ -541,8 +671,10 @@ pushad
|
|||||||
|
|
||||||
; *** à¨á®¢ ¨¥ ¡ãä¥à ***
|
; *** à¨á®¢ ¨¥ ¡ãä¥à ***
|
||||||
stdcall [buf2d_draw], buf_0
|
stdcall [buf2d_draw], buf_0
|
||||||
mov dword[wScrObj.all_redraw],1
|
mov dword[wScr1.all_redraw],1
|
||||||
stdcall [tl_draw], tree1
|
stdcall [tl_draw], tree1
|
||||||
|
mov dword[wScr2.all_redraw],1
|
||||||
|
stdcall [tl_draw], tree2
|
||||||
stdcall pole_draw_pok, pole
|
stdcall pole_draw_pok, pole
|
||||||
|
|
||||||
; *** ᮧ¤ ¨¥ ª®¯®ª ãáâ ®¢ª¨ ᨣ «®¢ set_0 ¨ set_1 ***
|
; *** ᮧ¤ ¨¥ ª®¯®ª ãáâ ®¢ª¨ ᨣ «®¢ set_0 ¨ set_1 ***
|
||||||
@ -663,6 +795,7 @@ align 4
|
|||||||
key:
|
key:
|
||||||
mcall 2
|
mcall 2
|
||||||
stdcall [tl_key], dword tree1
|
stdcall [tl_key], dword tree1
|
||||||
|
stdcall [tl_key], dword tree2
|
||||||
jmp still
|
jmp still
|
||||||
|
|
||||||
|
|
||||||
@ -743,19 +876,19 @@ button:
|
|||||||
@@:
|
@@:
|
||||||
cmp ah,31
|
cmp ah,31
|
||||||
jne @f
|
jne @f
|
||||||
stdcall set_pen_mode,1,0 ;ãáâ ®¢ª ०¨¬ à¨á®¢ ¨ï ¯à®¢®¤
|
stdcall set_pen_mode,1,0,((9 shl 8)+9) shl 16 ;ãáâ ®¢ª ०¨¬ à¨á®¢ ¨ï ¯à®¢®¤
|
||||||
@@:
|
@@:
|
||||||
cmp ah,32
|
cmp ah,32
|
||||||
jne @f
|
jne @f
|
||||||
stdcall set_pen_mode,2,1
|
stdcall set_pen_mode,2,1,((9 shl 8)+9) shl 16
|
||||||
@@:
|
@@:
|
||||||
cmp ah,33
|
cmp ah,33
|
||||||
jne @f
|
jne @f
|
||||||
stdcall set_pen_mode,3,2 ;ãáâ ®¢ª ०¨¬ áâ¨à ¨ï ¯à®¢®¤
|
stdcall set_pen_mode,3,2,((15 shl 8)+9) shl 16 ;ãáâ ®¢ª ०¨¬ áâ¨à ¨ï ¯à®¢®¤
|
||||||
@@:
|
@@:
|
||||||
cmp ah,34
|
cmp ah,34
|
||||||
jne @f
|
jne @f
|
||||||
stdcall set_pen_mode,4,3 ;ãáâ ®¢ª ०¨¬ ᮧ¤ ¨ï í«¥¬¥â®¢
|
stdcall set_pen_mode,4,3,((9 shl 8)+9) shl 16 ;ãáâ ®¢ª ०¨¬ ᮧ¤ ¨ï í«¥¬¥â®¢
|
||||||
@@:
|
@@:
|
||||||
cmp ah,1
|
cmp ah,1
|
||||||
jne still
|
jne still
|
||||||
@ -767,6 +900,10 @@ button:
|
|||||||
stdcall pole_delete, pole
|
stdcall pole_delete, pole
|
||||||
call sign_delete
|
call sign_delete
|
||||||
stdcall [tl_data_clear], tree1
|
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
|
cmp [cursor_pointer],0
|
||||||
je @f
|
je @f
|
||||||
mcall 37,6,[cursor_pointer]
|
mcall 37,6,[cursor_pointer]
|
||||||
@ -880,7 +1017,7 @@ but_open_file:
|
|||||||
mov dword[txt_buf+4],eax ;ª®®à¤¨ â y
|
mov dword[txt_buf+4],eax ;ª®®à¤¨ â y
|
||||||
call str_next_val
|
call str_next_val
|
||||||
stdcall conv_str_to_int,edi
|
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
|
call str_next_val
|
||||||
;¯® ¤à¥áã edi §¢ ¨¥ í«¥¬¥â
|
;¯® ¤à¥áã edi §¢ ¨¥ í«¥¬¥â
|
||||||
stdcall el_get_name, edi
|
stdcall el_get_name, edi
|
||||||
@ -1318,7 +1455,7 @@ pushad
|
|||||||
|
|
||||||
stdcall str_len,edi
|
stdcall str_len,edi
|
||||||
add edi,eax
|
add edi,eax
|
||||||
movzx eax,byte[ecx+8] ;angle
|
movzx eax,byte[ecx+sp_offs_el_angle] ;angle
|
||||||
stdcall convert_int_to_str
|
stdcall convert_int_to_str
|
||||||
stdcall str_cat,edi,txt_space
|
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
|
proc shem_element_creat uses eax ebx, coord_x:dword, coord_y:dword
|
||||||
mov eax,dword[coord_x]
|
mov eax,dword[coord_x]
|
||||||
mov dword[txt_buf],eax ;ª®®à¤¨ â x
|
mov dword[txt_buf],eax ;ª®®à¤¨ â x
|
||||||
mov eax,dword[coord_y]
|
mov ebx,dword[coord_y]
|
||||||
mov dword[txt_buf+4],eax ;ª®®à¤¨ â y
|
|
||||||
|
|
||||||
xor eax,eax
|
stdcall element_is_click,eax,ebx ;¯à®¢¥à塞 ¥áâì «¨ ¢ ¤ ®© â®çª¥ ¤à㣮© í«¥¬¥â ᮧ¤ ë© à ìè¥
|
||||||
mov byte[txt_buf+8],al ; ¯à ¢«¥¨¥
|
test eax,eax
|
||||||
;¯® ¤à¥áã edi §¢ ¨¥ í«¥¬¥â
|
jnz .end_f ;¯à¨ ¦ ⨨ ¯®¯ «¨ ®¤¨ ¨§ í«¥¬¥â®¢
|
||||||
;stdcall el_get_name, edi
|
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 ;⨯ í«¥¬¥â
|
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 make_list_capts,txt_buf,ebx
|
||||||
stdcall [tl_node_add], txt_buf,(el_icon_elems shl 16)+1, tree1
|
stdcall [tl_node_add], txt_buf,(el_icon_elems shl 16)+1, tree1
|
||||||
stdcall [tl_cur_next], tree1
|
stdcall [tl_cur_next], tree1
|
||||||
stdcall [tl_draw], tree1
|
stdcall [tl_draw], tree1
|
||||||
|
.end_f:
|
||||||
ret
|
ret
|
||||||
endp
|
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] ;⨯ í«¥¬¥â
|
movzx esi,byte[edi+sp_offs_el_type] ;⨯ í«¥¬¥â
|
||||||
imul esi,size_el_opt
|
imul esi,size_el_opt
|
||||||
add esi,el_opt_beg
|
add esi,el_opt_beg
|
||||||
;esi+el_offs_legs_inp - 㪠§ â¥«ì ¯ à ¬¥âàë 0-© ¢å®¤®© ®£¨
|
;esi+el_offs_legs_inp - 㪠§ ⥫ì â ¡«¨æã á ¯ à ¬¥âà ¬¨ ¢å®¤ëå ®£
|
||||||
|
|
||||||
mov eax,[edi+0]
|
mov eax,[edi+0]
|
||||||
mov ebx,[edi+4]
|
mov ebx,[edi+4]
|
||||||
mov edx,[l_opt]
|
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 ;¢å®¤ ï/¢ë室 ï ®£
|
btr edx,16 ;¢å®¤ ï/¢ë室 ï ®£
|
||||||
jc .output_leg
|
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
|
inc edx ;®¬¥à æ¨ï ®£ ç¨ ¥âáï á ã«ï, ¯®â®¬ã ¤®¡ ¢«ï¥¬ 1
|
||||||
stdcall move_rotate_x_n90, -2,edi
|
stdcall move_rotate_x_n90, -2,edi
|
||||||
add esi,el_offs_legs_inp
|
mov esi,[esi+el_offs_legs_inp]
|
||||||
@@:
|
@@:
|
||||||
movzx ecx,byte[esi]
|
movzx ecx,byte[esi]
|
||||||
cmp ecx,0
|
cmp ecx,0
|
||||||
@ -1980,14 +2125,15 @@ proc but_set_none
|
|||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
|
|
||||||
|
;hot_p - ª®®à¤¨ âë £®àï祩 â®çª¨ ªãàá®à , ᬥé¥ë¥ ¡¨â 16 ((cx shl 8) + cy) shl 16
|
||||||
align 4
|
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]
|
mov eax,[mode]
|
||||||
cmp byte[pen_mode],al
|
cmp byte[pen_mode],al
|
||||||
je @f
|
je @f
|
||||||
mov byte[pen_mode],al
|
mov byte[pen_mode],al
|
||||||
;mov edx,((cx shl 8) + cy) shl 16
|
mov edx,[hot_p]
|
||||||
mov edx,2 ;LOAD_INDIRECT
|
mov dx,2 ;LOAD_INDIRECT
|
||||||
mov ecx,[icon]
|
mov ecx,[icon]
|
||||||
shl ecx,12 ;㬮¦ ¥¬ 4 ª¡
|
shl ecx,12 ;㬮¦ ¥¬ 4 ª¡
|
||||||
add ecx,[buf_curs.data]
|
add ecx,[buf_curs.data]
|
||||||
@ -2094,10 +2240,48 @@ cursor_pointer dd 0 ;㪠
|
|||||||
|
|
||||||
el_focus dd 0
|
el_focus dd 0
|
||||||
tree1 tree_list 32,points_max+2, tl_key_no_edit, 16,16,\
|
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,\
|
0x8080ff,0x0000ff,0xffffff, 5,panel_3_coord_top+85,145,170, 0,capt_offs,0,\
|
||||||
el_focus, wScrObj,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
|
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:
|
.x:
|
||||||
.size_x dw 16 ;+0
|
.size_x dw 16 ;+0
|
||||||
.start_x dw 0 ;+2
|
.start_x dw 0 ;+2
|
||||||
|
Loading…
Reference in New Issue
Block a user