0,0 → 1,540 |
;------------------------------------------------- |
;-----interraction panel with user---------------- |
;------------------------------------------------- |
panel_interraction: |
;>>>>>>>>>>>>>>>>>>>>>>>>>> |
mov eax,18 |
mov ebx,14 |
;int 0x40 |
|
and [Panel_flag],0 |
;collision with text on panel |
next_columnus_text: |
|
mov eax,[edi] |
mov ebx,[edi+4] |
sub eax,10 |
sub ebx,3 |
mov [Icon_text_x],eax |
mov [Icon_text_y],ebx |
|
mov esi,[edi+8] |
imul esi,10 |
mov [button_menu_size_x],esi |
mov [button_menu_size_y],dword 13 |
|
mov esi,[edi+8] |
add edi,4*3 |
add edi,esi |
|
mov ecx,[MouseX] |
mov edx,[MouseY] |
|
push edi |
mov edi,[button_menu_size_y] |
mov esi,[button_menu_size_x] |
call columnus |
|
pop edi |
mov esi,7 |
|
test eax,eax |
jz no_columnus_text |
|
mov esi,1 |
mov [Panel_flag],1 |
call GetMouseClick |
|
test eax,eax |
jz no_mouse_pressed |
|
mov eax,18 |
mov ebx,14 |
;int 0x40 |
|
call print_panel_menu |
|
no_mouse_pressed: |
|
no_columnus_text: |
|
mov eax,[Icon_text_x] |
mov ebx,[Icon_text_y] |
mov ecx,[button_menu_size_x] ;------------------------- |
mov edx,[button_menu_size_y] |
call draw_volume_rectangle |
|
push [counter] |
push edi |
mov [counter],7 |
mov edi,panel_text |
call print_panel_text |
|
pop edi |
pop [counter] |
dec [counter] |
jnz next_columnus_text |
|
ret |
;--------------------------------------------------------- |
;-----draw panel menu(main engin of panel)---------------- |
;--------------------------------------------------------- |
print_panel_menu: |
|
|
push [counter] |
;delit main buttons(some time) |
|
mov [counter],10 |
|
next_icon_delit1: |
|
mov eax,8 |
mov edx,[counter] |
add edx,11100000000000000000000000000000b |
int 0x40 |
inc [counter] |
|
cmp [counter],30 |
jl next_icon_delit1 |
|
;delit buttons of brushes |
mov [counter],40 |
|
next_icon_delit2: |
|
mov eax,8 |
mov edx,[counter] |
add edx,11100000000000000000000000000000b |
int 0x40 |
inc [counter] |
|
cmp [counter],45 |
jl next_icon_delit2 |
|
;delit buttons of zoom |
mov [counter],45 |
|
next_icon_delit3: |
|
mov eax,8 |
mov edx,[counter] |
add edx,11100000000000000000000000000000b |
int 0x40 |
inc [counter] |
|
cmp [counter],50 |
jl next_icon_delit3 |
|
;delit buttons of palette |
mov eax,8 |
mov edx,51 |
add edx,11100000000000000000000000000000b |
int 0x40 |
|
|
;delit buttons of color |
mov eax,8 |
mov edx,52 |
add edx,11100000000000000000000000000000b |
int 0x40 |
|
pop [counter] |
|
push esi |
mov esi,[counter] |
dec esi |
shl esi,4 |
|
mov eax,[menu_rectangles+esi] |
mov ebx,[menu_rectangles+esi+4] |
mov ecx,[menu_rectangles+esi+8] |
mov edx,[menu_rectangles+esi+12] |
mov esi,1 |
mov [menu_coordinat_x],eax |
mov [menu_size_x],ecx |
call draw_volume_rectangle |
pop esi |
|
calculate_counter_menu: |
|
|
;calculate menu counter |
mov eax,[counter] |
dec eax |
shl eax,2 |
mov ebx,[menu_counters+eax] |
mov [counter_menu],ebx |
|
call GetMouseCoordinats |
|
and [menu_counter],0 |
push esi |
push edi |
;ᣫ ¦¨¢ ¨¥ ¨¬ 樨 >>>>>>>>>>>>>>>>>> |
mov eax,18 |
mov ebx,14 |
;int 0x40 |
|
menu_loop: |
|
mov eax,[menu_coordinat_x] |
mov ebx,36 |
mov ecx,[MouseX] |
mov edx,[MouseY] |
mov esi,[menu_size_x] |
mov edi,18 |
add ebx,[menu_counter] |
add eax,2 |
sub esi,3 |
inc ebx |
call columnus |
mov esi,7 |
|
test eax,eax |
jz no_columnus_menu_text |
|
mov esi,1 |
|
no_columnus_menu_text: |
|
mov eax,[menu_coordinat_x] |
mov ebx,36 |
mov ecx,[menu_size_x] |
mov edx,18 |
add ebx,[menu_counter] |
add eax,2 |
sub ecx,3 |
inc ebx |
call draw_volume_rectangle |
add [menu_counter],20 |
|
|
dec [counter_menu] |
jnz menu_loop |
|
|
;print menu text |
push [counter] |
mov esi,[counter] |
dec esi |
shl esi,2 |
mov edi,[menu_text_en+esi] |
mov eax,[menu_counters+esi] |
mov [counter],eax |
call print_panel_text |
pop [counter] |
pop edi |
pop esi |
|
|
menu_still: |
|
mov eax,10 |
int 0x40 |
mov eax,2 |
int 0x40 |
mov eax,17 |
int 0x40 |
|
call GetMouseClick |
|
test eax,eax |
jz calculate_counter_menu |
|
call GetMouseCoordinats |
|
;calculate menu counter |
mov eax,[counter] |
dec eax |
shl eax,2 |
mov ebx,[menu_counters+eax] |
mov [counter_menu],ebx |
|
and [menu_counter],0 |
and [counter_11],0 |
|
push esi |
push edi |
|
menu_loop2: |
|
|
mov eax,[menu_coordinat_x] |
mov ebx,36 |
mov ecx,[MouseX] |
mov edx,[MouseY] |
mov esi,[menu_size_x] |
mov edi,18 |
add ebx,[menu_counter] |
add eax,2 |
sub esi,3 |
inc ebx |
call columnus |
|
inc [counter_11] |
|
test eax,eax |
jz no_columnus_menu_text2 |
|
mov esi,[counter_11] |
mov [number_menu],esi |
|
no_columnus_menu_text2: |
|
add [menu_counter],20 |
|
dec [counter_menu] |
jnz menu_loop2 |
|
pop edi |
pop esi |
|
mov eax,5 |
mov ebx,15 |
int 0x40 |
|
push [counter] |
pushad |
|
call drawwin |
|
popad |
pop [counter] |
|
mov eax,[counter] |
mov [number_panel],eax |
|
call TakeInstruments |
jmp still |
|
;--------------------------------------------------------- |
;------print mouse position on panel---------------------- |
;--------------------------------------------------------- |
PrintMousePos: |
|
pushad |
|
mov eax,[Window_SizeX] |
sub eax,75 |
mov ebx,20+15+6 |
mov ecx,52 |
mov edx,18 |
mov esi,4 |
call draw_volume_rectangle |
|
mov eax,[Window_SizeX] |
sub eax,75 |
mov ebx,20+15+6+18+2 |
mov ecx,52 |
mov edx,18 |
mov esi,4 |
call draw_volume_rectangle |
|
mov eax,[Window_SizeX] |
sub eax,70 |
mov ebx,20+15+6+6 |
and ecx,0 |
mov edx,mouse_pos_x |
mov esi,2 |
call print_text |
|
mov eax,[Window_SizeX] |
sub eax,70 |
mov ebx,20+15+6+6+18+1 |
and ecx,0 |
mov edx,mouse_pos_y |
mov esi,2 |
call print_text |
|
mov eax,47 |
mov ebx,4*65536 |
mov ecx,[ScreenX] |
add ecx,[PosX] |
mov edx,[Window_SizeX] |
sub edx,55 |
shl edx,16 |
add edx,20+15+6+6 |
and esi,0 |
int 0x40 |
|
mov eax,47 |
mov ebx,4*65536 |
mov ecx,[ScreenY] |
add ecx,[PosY] |
mov edx,[Window_SizeX] |
sub edx,55 |
shl edx,16 |
add edx,20+15+6+18+1+6 |
and esi,0 |
int 0x40 |
|
popad |
ret |
;---------------------------------------------------------- |
;---------------draw panel in window of program------------ |
;---------------------------------------------------------- |
draw_panel: |
|
mov eax,5 |
mov ebx,20 |
mov ecx,[Window_SizeX] |
mov edx,15 |
mov esi,6 |
sub ecx,10 |
call draw_volume_rectangle |
|
;mov eax,5 |
;mov ebx,20 |
;mov ecx,[Window_SizeX] |
;mov edx,15 |
;mov esi,6 |
;sub ecx,10 |
;call draw_volume_rectangle |
|
mov eax,5 |
mov ebx,20+15+1 |
mov ecx,[Window_SizeX] |
mov edx,50 |
mov esi,1 |
sub ecx,10 |
call draw_volume_rectangle |
|
mov eax,5 |
mov ebx,20+15+1+50+1 |
mov ecx,[Window_SizeX] |
mov edx,[Window_SizeY] |
mov esi,1 |
sub ecx,10+20 |
sub edx,20+15+1+50+1+5+20 |
call draw_volume_rectangle |
|
mov eax,5 |
mov ebx,[Window_SizeY] |
mov ecx,[Window_SizeX] |
mov edx,20+10 |
mov esi,3 |
sub ecx,30 |
sub ebx,25+10 |
call draw_volume_rectangle |
|
mov eax,[Window_SizeX] |
mov ebx,20+15+1+49+2 |
mov ecx,20+10 |
mov edx,[Window_SizeY] |
mov esi,3 |
sub eax,25+10 |
sub edx,20+15+1+49+5+20 |
call draw_volume_rectangle |
|
mov eax,[Window_SizeX] |
mov ebx,[Window_SizeY] |
mov ecx,20+10 |
mov edx,20+10 |
mov esi,6 |
sub eax,25+10 |
sub ebx,25+10 |
call draw_volume_rectangle |
|
;mov eax,445 |
;mov ebx,20+15+6 |
;mov ecx,37 |
;mov edx,37 |
;mov esi,4 |
;call draw_volume_rectangle |
|
ret |
|
|
;---------------------------------------------------------- |
;----------print text on the panel and menu---------------- |
;---------------------------------------------------------- |
print_panel_text: |
next_panel_text: |
|
mov eax,[edi] |
mov ebx,[edi+4] |
;xor ecx,ecx |
mov ecx,0x10000000 |
mov edx,edi |
add edx,12 |
mov esi,[edi+8] |
add edi,esi |
add edi,3*4 |
|
push edi |
call print_text |
pop edi |
|
dec [counter] |
jnz next_panel_text |
ret |
;---------------------------------------------------------- |
;------------draw lines of scoll--------------------------- |
;---------------------------------------------------------- |
draw_scrollers: |
|
mov edi,[CounterX] |
mov eax,[Scroll1CoordinatX] |
mov ebx,[Window_SizeY] |
sub ebx,22+10 |
mov ecx,[Window_SizeX] |
sub ecx,10+5+20+10+1 |
mov edx,14+10 |
mov esi,1 |
mov [Scroll1CoordinatX],eax |
mov [Scroll1CoordinatY],ebx |
mov [Scroll1MaxSizeY],edx |
mov [Scroll1MaxSizeX],ecx |
imul ecx,edi |
push eax |
push ebx |
push edx |
mov eax,ecx |
mov ebx,[Picture_SizeX] |
cdq |
idiv ebx |
mov ecx,eax |
pop edx |
pop ebx |
pop eax |
mov [Scroll1SizeX],ecx |
mov edi,[Scroll1MaxSizeX] |
sub edi,ecx |
mov [Scroll1FreeX],edi |
call draw_volume_rectangle |
|
mov eax,[Window_SizeX] |
sub eax,22+10 |
mov ebx,[Scroll2CoordinatY] |
mov ecx,14+10 |
mov edx,[Window_SizeY] |
sub edx,20+15+1+49+10+20+11 |
mov esi,1 |
mov [Scroll2CoordinatX],eax |
mov [Scroll2CoordinatY],ebx |
mov [Scroll2MaxSizeX],ecx |
mov [Scroll2MaxSizeY],edx |
|
imul edx,[CounterY] |
push eax |
push ebx |
mov eax,edx |
mov ebx,[Picture_SizeY] |
cdq |
idiv ebx |
mov edx,eax |
pop ebx |
pop eax |
mov [Scroll2SizeY],edx |
mov edi,[Scroll2MaxSizeY] |
sub edi,edx |
mov [Scroll2FreeY],edi |
|
call draw_volume_rectangle |
|
ret |
ret |
|
button_menu_size_x dd 0 |
button_menu_size_y dd 0 |