'log_el' - add cursors, other small changes
git-svn-id: svn://kolibrios.org@2482 a494cfbc-eb01-0410-851d-a64ba20cac60
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 23 KiB |
@ -48,7 +48,7 @@ table
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>Логические элементы версия от 15.03.2012</h1>
|
||||
<h1>Логические элементы версия от 20.03.2012</h1>
|
||||
<p>Оглавление</p>
|
||||
<ul>
|
||||
<li>О программе</li>
|
||||
@ -90,6 +90,7 @@ table
|
||||
<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>Редактирование многих объектов еще не сделано :( ... Пока можно редактировать файлы со схемами текстовыми редакторами, но это не удобно. Потому создание новых схем сейчас проблематично.</p>
|
||||
|
||||
<h3>Сохранение</h3>
|
||||
@ -101,7 +102,7 @@ table
|
||||
<p>На рисунке число a (a0+a1 = 1+2 = 3) умножается на b (b1+b3 = 2+8 = 10) и на выходе получается c (c1+c2+c3+c4 = 2+4+8+16 = 30).</p>
|
||||
|
||||
<h2><a name="v_obj">Виды объектов</a></h2>
|
||||
<p>В файлах со схемами есть 4 вида объектов.</p>
|
||||
<p>В файлах со схемами есть 4 вида объектов: ключевые точки, провода без пересечений, логические элементы и надписи.</p>
|
||||
|
||||
<h3><a name="obj_poi">Ключевая точка</a></h3>
|
||||
<p>Ключевая точка это промежуточный объект, который служит для создания проводов. Ключевая точка состоит из 2-х координат и переменной направлений. Направлений может быть максимум 4 (<i>вверх</i>, <i>вниз</i>, <i>влево</i>, <i>вправо</i>). Они определяют в какую сторону от даной точки рисовать провод. При встрече другой ключевой точки или достижении конца схемы рисование провода прекращается. Таким образом ключевые точки это векторные объекты на основе которых рисуются провода, что позволяет уменьшить размер файла со схемой.</p>
|
||||
|
BIN
programs/media/log_el/docs/tb_element.png
Normal file
After Width: | Height: | Size: 411 B |
BIN
programs/media/log_el/trunk/cursors.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
programs/media/log_el/trunk/cursors_gr.png
Normal file
After Width: | Height: | Size: 686 B |
@ -47,7 +47,7 @@ include 'le_pole.inc'
|
||||
include 'le_signal.inc'
|
||||
|
||||
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
|
||||
caption db '‹®£¨ç¥áª¨¥ í«¥¬¥âë 15.03.12',0 ;¯®¤¯¨áì ®ª
|
||||
caption db '‹®£¨ç¥áª¨¥ í«¥¬¥âë 20.03.12',0 ;¯®¤¯¨áì ®ª
|
||||
|
||||
panel_0_coord_top equ 5 ;¢¥àåïï ª®®à¤¨ â 0-£® àï¤ ¯ ¥«¨ ¨áâà㬥⮢
|
||||
panel_1_coord_top equ 35
|
||||
@ -127,11 +127,13 @@ tbl_not db 1,0 ;not
|
||||
time dd 0
|
||||
tim_ch db 0
|
||||
pen_mode dd 0 ;०¨¬ à¨á®¢ ¨ï ¯à®¢®¤
|
||||
pen_coord_x dd 0 ;ª®®à¤¨ â x ç «ì®© â®çª¨ à¨á®¢ ¨ï
|
||||
pen_coord_y dd 0
|
||||
|
||||
txt_set_0 db '0',0
|
||||
txt_set_1 db '1',0
|
||||
txt_mov_l db 27,0 ;<-
|
||||
txt_mov_r db 26,0 ;->
|
||||
;txt_mov_l db 27,0 ;<-
|
||||
;txt_mov_r db 26,0 ;->
|
||||
|
||||
txt_size db 'size',0
|
||||
txt_elements db 'elements',0
|
||||
@ -150,7 +152,7 @@ run_file_70 FileInfoBlock
|
||||
image_data dd 0 ;㪠§ â¥«ì ¢à¥¬¥ãî ¯ ¬ïâì. ¤«ï 㦥 ¯à¥®¡à §®¢ ¨ï ¨§®¡à ¦¥¨ï
|
||||
|
||||
IMAGE_TOOLBAR_ICON_SIZE equ 16*16*3
|
||||
IMAGE_TOOLBAR_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*15
|
||||
IMAGE_TOOLBAR_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*20
|
||||
image_data_toolbar dd 0
|
||||
|
||||
TREE_ICON_SYS16_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*11+54 ;à §¬¥à bmp ä ©« á á¨á⥬묨 ¨ª®ª ¬¨
|
||||
@ -161,6 +163,9 @@ icon_toolbar dd 0 ;㪠
|
||||
IMAGE_FONT_SIZE equ 128*144*3
|
||||
image_data_gray dd 0 ;¯ ¬ïâì á ¢à¥¬¥ë¬¨ á¥à묨 ¨§®¡à ¦¥¨ï¬¨ ¢ ä®à¬ ⥠24-bit, ¨§ ª®â®àëå ¡ã¤ãâ ᮧ¤ ¢ âìáï âà ä à¥âë
|
||||
|
||||
cursors_count equ 4
|
||||
IMAGE_CURSORS_SIZE equ 4096*cursors_count ;à §¬¥à ª à⨪¨ á ªãàá®à ¬¨
|
||||
|
||||
macro load_image_file path,buf,size { ;¬ ªà®á ¤«ï § £à㧪¨ ¨§®¡à ¦¥¨©
|
||||
;path - ¬®¦¥â ¡ëâì ¯¥à¥¬¥®© ¨«¨ áâப®¢ë¬ ¯ à ¬¥â஬
|
||||
if path eqtype '' ;¯à®¢¥à塞 § ¤ «¨ áâப®© ¯ à ¬¥âà path
|
||||
@ -231,6 +236,7 @@ start:
|
||||
mov eax,dword[icon_toolbar]
|
||||
mov dword[tree1.data_img],eax
|
||||
|
||||
;*** § £à㧪 èà¨äâ
|
||||
load_image_file 'font6x9.bmp', image_data_gray,IMAGE_FONT_SIZE
|
||||
stdcall [buf2d_create_f_img], buf_font,[image_data_gray] ;ᮧ¤ ¥¬ ¡ãä¥à
|
||||
stdcall mem.Free,[image_data_gray] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì
|
||||
@ -238,6 +244,18 @@ start:
|
||||
stdcall [buf2d_conv_24_to_8], buf_font,1 ;¤¥« ¥¬ ¡ãä¥à ¯à®§à ç®á⨠8 ¡¨â
|
||||
stdcall [buf2d_convert_text_matrix], buf_font
|
||||
|
||||
;*** § £à㧪 ªãàá®à®¢
|
||||
load_image_file 'cursors_gr.png',image_data_gray,IMAGE_CURSORS_SIZE
|
||||
stdcall [buf2d_create_f_img], buf_curs_8,[image_data_gray] ;ᮧ¤ ¥¬ ¡ãä¥à
|
||||
stdcall mem.Free,[image_data_gray] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì
|
||||
|
||||
load_image_file 'cursors.png',image_data_gray, IMAGE_CURSORS_SIZE
|
||||
stdcall [buf2d_create_f_img], buf_curs,[image_data_gray] ;ᮧ¤ ¥¬ ¡ãä¥à
|
||||
stdcall mem.Free,[image_data_gray] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì
|
||||
|
||||
stdcall [buf2d_conv_24_to_8], buf_curs_8,1 ;¤¥« ¥¬ ¡ãä¥à ¯à®§à ç®á⨠8¡¨â
|
||||
stdcall [buf2d_conv_24_to_32],buf_curs,buf_curs_8 ;¤¥« ¥¬ ¡ãä¥à rgba 32¡¨â
|
||||
|
||||
stdcall sign_init, 3000
|
||||
|
||||
mcall 26,9
|
||||
@ -304,7 +322,12 @@ mouse:
|
||||
push eax ebx ecx edx
|
||||
mcall 37,2 ; ¦ âë¥ ª®¯ª¨ ¬ëè¨
|
||||
bt eax,0 ;«¥¢ ï ª®¯ª ¦ â ?
|
||||
jnc .end_buf_wnd
|
||||
jc @f
|
||||
xor eax,eax
|
||||
mov [pen_coord_x],eax
|
||||
mov [pen_coord_y],eax
|
||||
jmp .end_buf_wnd
|
||||
@@:
|
||||
|
||||
mcall 37,1 ;eax = (x shl 16) + y
|
||||
cmp ax,word[buf_0.t]
|
||||
@ -340,15 +363,50 @@ mouse:
|
||||
jge .end_buf_wnd
|
||||
|
||||
cmp byte[pen_mode],1
|
||||
jne @f
|
||||
jne .end_mode_1
|
||||
;०¨¬ à¨á®¢ ¨ï ¯à®¢®¤
|
||||
cmp dword[pen_coord_x],0
|
||||
jne @f
|
||||
cmp dword[pen_coord_y],0
|
||||
jne @f
|
||||
mov [pen_coord_x],eax
|
||||
mov [pen_coord_y],ebx
|
||||
@@:
|
||||
|
||||
cmp dword[pen_coord_x],eax
|
||||
je .beg_draw
|
||||
cmp dword[pen_coord_y],ebx
|
||||
je .beg_draw
|
||||
|
||||
mov ecx,eax
|
||||
sub ecx,[pen_coord_x]
|
||||
bt ecx,31
|
||||
jnc @f
|
||||
neg ecx
|
||||
inc ecx
|
||||
@@:
|
||||
mov edx,ebx
|
||||
sub edx,[pen_coord_y]
|
||||
bt edx,31
|
||||
jnc @f
|
||||
neg edx
|
||||
inc edx
|
||||
@@:
|
||||
cmp ecx,edx
|
||||
jl @f
|
||||
mov ebx,[pen_coord_y] ;¯à¨¢ï§ª ª ª®®à¤¨ ⥠y
|
||||
jmp .beg_draw
|
||||
@@:
|
||||
mov eax,[pen_coord_x] ;¯à¨¢ï§ª ª ª®®à¤¨ ⥠x
|
||||
|
||||
.beg_draw:
|
||||
stdcall pole_cell_creat, pole,eax,ebx,0
|
||||
;¨ç¥£® ¥ ã¡à «®áì redraw_pole ¥ ¯®¤å®¤¨â, â. ª. ç¨áâ¨âì ¯®«¥ ¥ 㦮
|
||||
stdcall pole_paint, pole
|
||||
stdcall [buf2d_draw], buf_0
|
||||
;stdcall but_test_pole, pole
|
||||
jmp .end_buf_wnd
|
||||
@@:
|
||||
.end_mode_1:
|
||||
cmp byte[pen_mode],2
|
||||
jne @f
|
||||
;०¨¬ à¨á®¢ ¨ï ¨§®«ï樨 ¤«ï ¯à®¢®¤
|
||||
@ -366,6 +424,14 @@ mouse:
|
||||
;stdcall but_test_pole, pole
|
||||
jmp .end_buf_wnd
|
||||
@@:
|
||||
cmp byte[pen_mode],4
|
||||
jne @f
|
||||
;०¨¬ ᮧ¤ ¨ï í«¥¬¥â®¢
|
||||
stdcall shem_element_creat, eax,ebx
|
||||
stdcall pole_paint, pole
|
||||
stdcall [buf2d_draw], buf_0
|
||||
jmp .end_buf_wnd
|
||||
@@:
|
||||
|
||||
.end_buf_wnd:
|
||||
pop edx ecx ebx eax
|
||||
@ -519,12 +585,25 @@ pushad
|
||||
mov edx,txt_set_1
|
||||
int 0x40
|
||||
|
||||
add ebx,35 shl 16
|
||||
mov edx,txt_mov_l
|
||||
; *** à¨á®¢ ¨¥ ¨ª®®ª ª®¯ª å ***
|
||||
mov eax,7
|
||||
mov ebx,[image_data_toolbar]
|
||||
mov ecx,(16 shl 16)+16
|
||||
mov edx,(62 shl 16)+panel_1_coord_top+2
|
||||
|
||||
add ebx,IMAGE_TOOLBAR_ICON_SIZE*16
|
||||
int 0x40
|
||||
|
||||
add ebx,25 shl 16
|
||||
mov edx,txt_mov_r
|
||||
add ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
add edx,(25 shl 16)
|
||||
int 0x40
|
||||
|
||||
add ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
add edx,(25 shl 16)
|
||||
int 0x40
|
||||
|
||||
add ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
add edx,(25 shl 16)
|
||||
int 0x40
|
||||
|
||||
; *** ᮧ¤ ¨¥ ª®¯®ª à¨á®¢ ¨ï ¯à®¢®¤ ***
|
||||
@ -547,6 +626,10 @@ pushad
|
||||
mov edx,33
|
||||
int 0x40
|
||||
|
||||
add ebx,25 shl 16
|
||||
mov edx,34
|
||||
int 0x40
|
||||
|
||||
; *** à¨á®¢ ¨¥ ¨ª®®ª ª®¯ª å ***
|
||||
mov eax,7
|
||||
mov ebx,[image_data_toolbar]
|
||||
@ -568,6 +651,10 @@ pushad
|
||||
add edx,(25 shl 16) ;icon pen 3
|
||||
int 0x40
|
||||
|
||||
add ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
add edx,(25 shl 16) ;icon add elemet
|
||||
int 0x40
|
||||
|
||||
mcall 12,2
|
||||
popad
|
||||
ret
|
||||
@ -656,33 +743,49 @@ button:
|
||||
@@:
|
||||
cmp ah,31
|
||||
jne @f
|
||||
call but_set_pen_1
|
||||
stdcall set_pen_mode,1,0 ;ãáâ ®¢ª ०¨¬ à¨á®¢ ¨ï ¯à®¢®¤
|
||||
@@:
|
||||
cmp ah,32
|
||||
jne @f
|
||||
call but_set_pen_2
|
||||
stdcall set_pen_mode,2,1
|
||||
@@:
|
||||
cmp ah,33
|
||||
jne @f
|
||||
call but_set_pen_3
|
||||
stdcall set_pen_mode,3,2 ;ãáâ ®¢ª ०¨¬ áâ¨à ¨ï ¯à®¢®¤
|
||||
@@:
|
||||
cmp ah,34
|
||||
jne @f
|
||||
stdcall set_pen_mode,4,3 ;ãáâ ®¢ª ०¨¬ ᮧ¤ ¨ï í«¥¬¥â®¢
|
||||
@@:
|
||||
cmp ah,1
|
||||
jne still
|
||||
.exit:
|
||||
stdcall [buf2d_delete],buf_0
|
||||
stdcall [buf2d_delete],buf_font
|
||||
stdcall [buf2d_delete],buf_curs
|
||||
stdcall mem.Free,[image_data_toolbar]
|
||||
stdcall pole_delete, pole
|
||||
call sign_delete
|
||||
stdcall [tl_data_clear], tree1
|
||||
cmp [cursor_pointer],0
|
||||
je @f
|
||||
mcall 37,6,[cursor_pointer]
|
||||
@@:
|
||||
mcall -1
|
||||
|
||||
|
||||
;ᮧ¤ ¨¥ ®¢®© á奬ë
|
||||
align 4
|
||||
but_new_file:
|
||||
proc but_new_file uses eax
|
||||
call but_set_none
|
||||
stdcall [tl_info_clear],tree1
|
||||
stdcall [tl_draw],tree1
|
||||
xor eax,eax
|
||||
mov [shem_elems],eax
|
||||
mov [shem_captions],eax
|
||||
stdcall pole_clear, pole
|
||||
call redraw_pole
|
||||
ret
|
||||
endp
|
||||
|
||||
align 4
|
||||
f_size dd 0 ;à §¬¥à ®âªàë¢ ¥¬®£® ä ©«
|
||||
@ -1026,6 +1129,7 @@ but_open_file:
|
||||
|
||||
;---
|
||||
call but_center ;æ¥â஢ª á奬ë á ãç¥â®¬ shem_w ¨ shem_h
|
||||
call but_set_none
|
||||
.end_open_file:
|
||||
popad
|
||||
ret
|
||||
@ -1460,6 +1564,31 @@ proc make_list_capts uses eax ebx ecx edi, buf:dword, txt:dword
|
||||
ret
|
||||
endp
|
||||
|
||||
;¤®¡ ¢«¥¨¥ ®¢®£® í«¥¬¥â ã¯à ¢«¥¨ï á奬ã
|
||||
;¯à¨ ¤®¡ ¢«¥¨¨ ¨á¯®«ì§ãîâáï áâ ¤ àâë¥ áâனª¨
|
||||
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
|
||||
|
||||
xor eax,eax
|
||||
mov byte[txt_buf+8],al ; ¯à ¢«¥¨¥
|
||||
;¯® ¤à¥áã edi §¢ ¨¥ í«¥¬¥â
|
||||
;stdcall el_get_name, edi
|
||||
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
|
||||
ret
|
||||
endp
|
||||
|
||||
;output:
|
||||
; eax - ⨯ í«¥¬¥â
|
||||
align 4
|
||||
@ -1842,27 +1971,33 @@ endp
|
||||
align 4
|
||||
proc but_set_none
|
||||
mov byte[pen_mode],0
|
||||
cmp [cursor_pointer],0
|
||||
je @f
|
||||
push eax ebx ecx
|
||||
mcall 37,6,[cursor_pointer]
|
||||
pop ecx ebx eax
|
||||
@@:
|
||||
ret
|
||||
endp
|
||||
|
||||
;ãáâ ®¢ª ०¨¬ à¨á®¢ ¨ï ¯à®¢®¤
|
||||
align 4
|
||||
proc but_set_pen_1
|
||||
mov byte[pen_mode],1
|
||||
ret
|
||||
endp
|
||||
proc set_pen_mode uses eax ebx ecx edx, mode:dword, icon: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 ecx,[icon]
|
||||
shl ecx,12 ;㬮¦ ¥¬ 4 ª¡
|
||||
add ecx,[buf_curs.data]
|
||||
mcall 37,4
|
||||
|
||||
;
|
||||
align 4
|
||||
proc but_set_pen_2
|
||||
mov byte[pen_mode],2
|
||||
ret
|
||||
endp
|
||||
|
||||
;ãáâ ®¢ª ०¨¬ áâ¨à ¨ï ¯à®¢®¤
|
||||
align 4
|
||||
proc but_set_pen_3
|
||||
mov byte[pen_mode],3
|
||||
cmp eax,0
|
||||
je @f
|
||||
mov [cursor_pointer],eax
|
||||
mcall 37,5,[cursor_pointer]
|
||||
@@:
|
||||
ret
|
||||
endp
|
||||
|
||||
@ -1935,6 +2070,28 @@ buf_font: ;
|
||||
dd 0 ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
align 4
|
||||
buf_curs: ;¡ãä¥à á ªãàá®à ¬¨
|
||||
.data: dd 0 ;㪠§ â¥«ì ¡ãä¥à ¨§®¡à ¦¥¨ï
|
||||
dw 0 ;+4 left
|
||||
dw 0 ;+6 top
|
||||
dd 32 ;+8 w
|
||||
dd 32*cursors_count ;+12 h
|
||||
dd 0 ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
align 4
|
||||
buf_curs_8: ;¡ãä¥à á ªãàá®à ¬¨
|
||||
.data: dd 0 ;㪠§ â¥«ì ¡ãä¥à ¨§®¡à ¦¥¨ï
|
||||
dw 0 ;+4 left
|
||||
dw 0 ;+6 top
|
||||
dd 32 ;+8 w
|
||||
dd 32*cursors_count ;+12 h
|
||||
dd 0 ;+16 color
|
||||
db 24 ;+20 bit in pixel
|
||||
|
||||
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,\
|
||||
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 5.7 KiB |