5680 lines
107 KiB
NASM
5680 lines
107 KiB
NASM
|
;******************************************************
|
|||
|
;***GRAPHICS EDIT ANIMAGE creted by andrew_programmer**
|
|||
|
;******************************************************
|
|||
|
|
|||
|
use32
|
|||
|
org 0x0
|
|||
|
|
|||
|
db 'MENUET01'
|
|||
|
dd 0x1
|
|||
|
dd START
|
|||
|
dd I_END
|
|||
|
dd 0x19000;100 kb
|
|||
|
dd 0x19000;
|
|||
|
dd 0x0
|
|||
|
dd 0x0
|
|||
|
include 'giflib.inc'
|
|||
|
include 'bmplib.inc'
|
|||
|
include 'dialog.inc'
|
|||
|
include 'dialog2.inc'
|
|||
|
include 'design.inc'
|
|||
|
include 'graphlib.inc'
|
|||
|
START:
|
|||
|
|
|||
|
;--------------------------------------------------------
|
|||
|
;---------------set events mask--------------------------
|
|||
|
;--------------------------------------------------------
|
|||
|
mov eax,40
|
|||
|
mov ebx,1100111b
|
|||
|
int 0x40
|
|||
|
|
|||
|
;---------------------------------------------------------
|
|||
|
;--------initializate data and params of program----------
|
|||
|
;---------------------------------------------------------
|
|||
|
mov [Scroll1CoordinatX],8+1
|
|||
|
mov [Scroll2CoordinatY],20+15+1+46+3
|
|||
|
mov [Window_SizeX],640
|
|||
|
mov [Window_SizeY],400
|
|||
|
mov [Window_CordinatX],50
|
|||
|
mov [Window_CordinatY],50
|
|||
|
mov [WorkScreen_SizeX],100
|
|||
|
mov [WorkScreen_SizeY],100
|
|||
|
mov [MaxWorkScreen_SizeX],100
|
|||
|
mov [MaxWorkScreen_SizeY],100
|
|||
|
mov [ScreenPointer],0x19000
|
|||
|
and [PosX],0
|
|||
|
and [PosY],0
|
|||
|
mov [Picture_SizeX],640;400
|
|||
|
mov [Picture_SizeY],400;280
|
|||
|
mov [k],1
|
|||
|
mov [PointerToPicture],0x19000+(1200*1000*3)+30*(20*20*3)+500000
|
|||
|
mov [PointerToCopyPicture],0x19000+(1200*1000*3)+30*(20*20*3)+500000+(640*400*3)
|
|||
|
mov [PointerToCopyPicture2],0x19000+(1200*1000*3)+30*(20*20*3)+500000+(640*400*3)*2
|
|||
|
mov [PointerToEditBufer],0x19000+(1200*1000*3)+30*(20*20*3)+500000+(640*400*3)*3
|
|||
|
mov [PointerToSpriteBufer],0x19000+(1200*1000*3)+30*(20*20*3)+500000+(640*400*3)*4
|
|||
|
mov [PointerToPalette],0x19000+(1200*100*3)+30*(20*20*3)+1
|
|||
|
mov [ReserveArray],0x19000+(1200*1000)*3+30*(20*20*3)+8
|
|||
|
and [save_flag],0
|
|||
|
mov [line_width],1
|
|||
|
mov [lastik_is_active],0
|
|||
|
and [crossing],0
|
|||
|
and [finishing_crossing],0
|
|||
|
and [number_undo],0
|
|||
|
and [instrument_used],0
|
|||
|
and [DrawSprite_flag],0
|
|||
|
and [extended_memory],0
|
|||
|
|
|||
|
finit
|
|||
|
;----------------------------------------------------------
|
|||
|
;--------get memory and draw window of program-------------
|
|||
|
;----------------------------------------------------------
|
|||
|
call GetMemory
|
|||
|
|
|||
|
call cleare_work_arrea
|
|||
|
call load_icons
|
|||
|
call drawwin
|
|||
|
;----------------------------------------------------------
|
|||
|
;---------------------MAIN LOOP----------------------------
|
|||
|
;----------------------------------------------------------
|
|||
|
main_loop:
|
|||
|
still:
|
|||
|
|
|||
|
call event
|
|||
|
|
|||
|
cmp eax,1
|
|||
|
jne no_redraw_window
|
|||
|
call drawwin
|
|||
|
call drawwin
|
|||
|
jmp still
|
|||
|
no_redraw_window:
|
|||
|
cmp eax,3
|
|||
|
je buttons
|
|||
|
cmp eax,6
|
|||
|
je mouse
|
|||
|
cmp eax,2
|
|||
|
je keys
|
|||
|
jmp main_loop
|
|||
|
|
|||
|
;------------------------------------------
|
|||
|
;-------------KEYS-------------------------
|
|||
|
;------------------------------------------
|
|||
|
keys:
|
|||
|
|
|||
|
mov eax,2
|
|||
|
int 0x40
|
|||
|
shr eax,8
|
|||
|
|
|||
|
cmp eax,176
|
|||
|
jne key2
|
|||
|
sub [PosX],20
|
|||
|
jmp change_screen
|
|||
|
key2:
|
|||
|
cmp eax,179
|
|||
|
jne key3
|
|||
|
add [PosX],20
|
|||
|
jmp change_screen
|
|||
|
key3:
|
|||
|
cmp eax,177
|
|||
|
jne key4
|
|||
|
add [PosY],20
|
|||
|
jmp change_screen
|
|||
|
key4:
|
|||
|
cmp eax,178
|
|||
|
jne key5
|
|||
|
sub [PosY],20
|
|||
|
jmp change_screen
|
|||
|
key5:
|
|||
|
cmp eax,49
|
|||
|
jne key6
|
|||
|
mov [k],1
|
|||
|
mov [Scroll1CoordinatX],9
|
|||
|
mov [Scroll2CoordinatY],85
|
|||
|
call drawwin
|
|||
|
jmp change_screen
|
|||
|
key6:
|
|||
|
cmp eax,50
|
|||
|
jne key7
|
|||
|
mov [k],2
|
|||
|
mov [Scroll1CoordinatX],9
|
|||
|
mov [Scroll2CoordinatY],85
|
|||
|
call drawwin
|
|||
|
jmp change_screen
|
|||
|
key7:
|
|||
|
cmp eax,52
|
|||
|
jne key8
|
|||
|
mov [k],4
|
|||
|
mov [Scroll1CoordinatX],9
|
|||
|
mov [Scroll2CoordinatY],85
|
|||
|
call drawwin
|
|||
|
jmp change_screen
|
|||
|
key8:
|
|||
|
cmp eax,56
|
|||
|
jne key9
|
|||
|
mov [k],8
|
|||
|
mov [Scroll1CoordinatX],9
|
|||
|
mov [Scroll2CoordinatY],85
|
|||
|
call drawwin
|
|||
|
jmp change_screen
|
|||
|
key9:
|
|||
|
cmp eax,48
|
|||
|
jne key10
|
|||
|
mov [k],16
|
|||
|
mov [Scroll1CoordinatX],9
|
|||
|
mov [Scroll2CoordinatY],85
|
|||
|
call drawwin
|
|||
|
jmp change_screen
|
|||
|
key10:
|
|||
|
cmp eax,255
|
|||
|
jne key11
|
|||
|
call analizing_picture_to_palette
|
|||
|
call drawwin
|
|||
|
jmp change_screen
|
|||
|
key11:
|
|||
|
cmp eax,27
|
|||
|
jne still
|
|||
|
mov eax,-1
|
|||
|
int 0x40
|
|||
|
jmp still
|
|||
|
|
|||
|
change_screen:
|
|||
|
|
|||
|
call CalculatePositionScreen
|
|||
|
call MovePictureToWorkScreen
|
|||
|
call draw_scrollers
|
|||
|
call PrintMousePos
|
|||
|
|
|||
|
jmp still
|
|||
|
;---------------------------------------------
|
|||
|
;-----------panel BUTTONS---------------------
|
|||
|
;---------------------------------------------
|
|||
|
buttons:
|
|||
|
|
|||
|
cmp [Current_instrument],30
|
|||
|
jne no_finish_instrument_button
|
|||
|
|
|||
|
cmp [instrument_used],1
|
|||
|
jne no_finish_instrument_button
|
|||
|
|
|||
|
cmp [Activate_instrument],0
|
|||
|
jne no_finish_instrument_button
|
|||
|
|
|||
|
cmp [crossing],1
|
|||
|
jne no_finish_instrument_button
|
|||
|
|
|||
|
mov [finishing_crossing],1
|
|||
|
call TakeButtonInstruments
|
|||
|
|
|||
|
no_finish_instrument_button:
|
|||
|
|
|||
|
mov eax,17
|
|||
|
int 0x40
|
|||
|
|
|||
|
shr eax,8
|
|||
|
|
|||
|
cmp eax,1
|
|||
|
jne no_exit
|
|||
|
|
|||
|
mov eax,-1
|
|||
|
int 0x40
|
|||
|
|
|||
|
no_exit:
|
|||
|
|
|||
|
mov [Current_instrument],eax
|
|||
|
|
|||
|
cmp eax,10
|
|||
|
jl still
|
|||
|
|
|||
|
cmp eax,15
|
|||
|
je still
|
|||
|
|
|||
|
cmp eax,17
|
|||
|
je still
|
|||
|
|
|||
|
cmp eax,18
|
|||
|
je still
|
|||
|
|
|||
|
cmp eax,19
|
|||
|
je still
|
|||
|
|
|||
|
cmp eax,20
|
|||
|
je still
|
|||
|
|
|||
|
cmp eax,21
|
|||
|
jne no_palette_
|
|||
|
|
|||
|
call TakeButtonInstruments
|
|||
|
jmp still
|
|||
|
|
|||
|
no_palette_:
|
|||
|
|
|||
|
cmp eax,23
|
|||
|
je still
|
|||
|
|
|||
|
cmp eax,30
|
|||
|
jne no_allocation__
|
|||
|
|
|||
|
and [Activate_instrument],0
|
|||
|
jmp still
|
|||
|
|
|||
|
no_allocation__:
|
|||
|
|
|||
|
cmp eax,38
|
|||
|
jne no_kontur__
|
|||
|
|
|||
|
and [instrument_used],0
|
|||
|
jmp still
|
|||
|
|
|||
|
no_kontur__:
|
|||
|
|
|||
|
call TakeButtonInstruments
|
|||
|
jmp still
|
|||
|
;---------------------------------------------
|
|||
|
;-------------interraction MOUSE--------------
|
|||
|
;---------------------------------------------
|
|||
|
mouse:
|
|||
|
|
|||
|
call GetMouseCoordinats
|
|||
|
|
|||
|
;panel
|
|||
|
mov edx,[Window_SizeX]
|
|||
|
sub edx,5
|
|||
|
|
|||
|
cmp ebx,20
|
|||
|
jle no_panel
|
|||
|
|
|||
|
cmp ebx,20+15
|
|||
|
jae no_panel
|
|||
|
|
|||
|
cmp eax,5
|
|||
|
jle no_panel
|
|||
|
|
|||
|
cmp eax,edx ;585
|
|||
|
jae no_panel
|
|||
|
|
|||
|
call GetMouseCoordinats
|
|||
|
|
|||
|
mov [counter],7
|
|||
|
mov edi,panel_text
|
|||
|
call panel_interraction
|
|||
|
|
|||
|
jmp still
|
|||
|
no_panel:
|
|||
|
|
|||
|
cmp [Panel_flag],0
|
|||
|
jz no_redraw_panel
|
|||
|
|
|||
|
mov [counter],7
|
|||
|
mov edi,panel_text
|
|||
|
call panel_interraction
|
|||
|
|
|||
|
no_redraw_panel:
|
|||
|
|
|||
|
call GetMouseCoordinats
|
|||
|
mov eax,[MouseX]
|
|||
|
mov ebx,[MouseY]
|
|||
|
mov ecx,[WorkScreen_SizeX]
|
|||
|
mov edx,[WorkScreen_SizeY]
|
|||
|
add ecx,9
|
|||
|
add edx,85
|
|||
|
|
|||
|
cmp eax,ecx
|
|||
|
jae mouse_scroll
|
|||
|
|
|||
|
cmp ebx,edx
|
|||
|
jae mouse_scroll
|
|||
|
|
|||
|
jmp no_scrollers
|
|||
|
|
|||
|
mouse_scroll:
|
|||
|
|
|||
|
mov [exit_from_work_arrea],1 ;mouse situated after work arrea
|
|||
|
|
|||
|
;scrollers
|
|||
|
call GetMouseClick
|
|||
|
|
|||
|
cmp eax,1
|
|||
|
jne no_click
|
|||
|
|
|||
|
call GetMouseCoordinats
|
|||
|
;interraction with horizontal scroller
|
|||
|
mov eax,[Scroll1CoordinatX]
|
|||
|
mov ebx,[Scroll1CoordinatY]
|
|||
|
mov ecx,[MouseX]
|
|||
|
mov edx,[MouseY]
|
|||
|
mov esi,[Scroll1MaxSizeX]
|
|||
|
mov edi,[Scroll1MaxSizeY]
|
|||
|
call columnus
|
|||
|
|
|||
|
test eax,eax
|
|||
|
jz no_horizontal
|
|||
|
|
|||
|
|
|||
|
mov eax,9
|
|||
|
mov ebx,[Scroll1CoordinatY]
|
|||
|
mov ecx,[Scroll1MaxSizeX]
|
|||
|
mov edx,14+10
|
|||
|
mov esi,7
|
|||
|
inc ecx
|
|||
|
call draw_volume_rectangle
|
|||
|
|
|||
|
mov eax,[MouseX]
|
|||
|
mov ebx,[Scroll1SizeX]
|
|||
|
shr ebx,1
|
|||
|
sub eax,ebx
|
|||
|
mov ecx,[MouseX]
|
|||
|
add ecx,ebx
|
|||
|
mov edx,8+1
|
|||
|
add edx,[Scroll1MaxSizeX]
|
|||
|
mov [Scroll1CoordinatX],eax
|
|||
|
|
|||
|
sub eax,9
|
|||
|
jns no_min_scroll
|
|||
|
|
|||
|
mov [Scroll1CoordinatX],9
|
|||
|
|
|||
|
no_min_scroll:
|
|||
|
|
|||
|
cmp ecx,edx
|
|||
|
jl no_max_scroll
|
|||
|
|
|||
|
sub edx,ebx
|
|||
|
sub edx,ebx
|
|||
|
mov [Scroll1CoordinatX],edx
|
|||
|
|
|||
|
no_max_scroll:
|
|||
|
;
|
|||
|
mov eax,[Scroll1CoordinatX]
|
|||
|
sub eax,9
|
|||
|
mov ebx,[Picture_SizeX]
|
|||
|
imul eax,ebx
|
|||
|
mov ebx,[Scroll1MaxSizeX]
|
|||
|
cdq
|
|||
|
idiv ebx
|
|||
|
mov [PosX],eax
|
|||
|
|
|||
|
jmp no_vertical
|
|||
|
|
|||
|
no_horizontal:
|
|||
|
|
|||
|
mov eax,[Scroll2CoordinatX]
|
|||
|
mov ebx,[Scroll2CoordinatY]
|
|||
|
mov ecx,[MouseX]
|
|||
|
mov edx,[MouseY]
|
|||
|
mov esi,[Scroll2MaxSizeX]
|
|||
|
mov edi,[Scroll2MaxSizeY]
|
|||
|
call columnus
|
|||
|
|
|||
|
test eax,eax
|
|||
|
jz no_vertical
|
|||
|
|
|||
|
mov eax,[Scroll2CoordinatX]
|
|||
|
mov ebx,85
|
|||
|
mov ecx,14+10
|
|||
|
mov edx,[Scroll2MaxSizeY]
|
|||
|
mov esi,7
|
|||
|
inc edx
|
|||
|
call draw_volume_rectangle
|
|||
|
|
|||
|
mov eax,[MouseY]
|
|||
|
mov ebx,[Scroll2SizeY]
|
|||
|
shr ebx,1
|
|||
|
sub eax,ebx
|
|||
|
mov ecx,[MouseY]
|
|||
|
add ecx,ebx
|
|||
|
mov edx,85
|
|||
|
add edx,[Scroll2MaxSizeY]
|
|||
|
mov [Scroll2CoordinatY],eax
|
|||
|
|
|||
|
sub eax,85
|
|||
|
jns no_min_scroll2
|
|||
|
|
|||
|
mov [Scroll2CoordinatY],85
|
|||
|
|
|||
|
no_min_scroll2:
|
|||
|
|
|||
|
cmp ecx,edx
|
|||
|
jl no_max_scroll2
|
|||
|
|
|||
|
sub edx,ebx
|
|||
|
sub edx,ebx
|
|||
|
mov [Scroll2CoordinatY],edx
|
|||
|
|
|||
|
no_max_scroll2:
|
|||
|
;
|
|||
|
mov eax,[Scroll2CoordinatY]
|
|||
|
sub eax,85
|
|||
|
mov ebx,[Picture_SizeY]
|
|||
|
imul eax,ebx
|
|||
|
mov ebx,[Scroll2MaxSizeY]
|
|||
|
cdq
|
|||
|
idiv ebx
|
|||
|
mov [PosY],eax
|
|||
|
|
|||
|
no_vertical:
|
|||
|
|
|||
|
call CalculatePositionScreen
|
|||
|
|
|||
|
call draw_scrollers
|
|||
|
call MovePictureToWorkScreen
|
|||
|
|
|||
|
no_click:
|
|||
|
|
|||
|
jmp still
|
|||
|
no_scrollers:
|
|||
|
|
|||
|
|
|||
|
mov eax,[MouseX]
|
|||
|
mov ebx,[MouseY]
|
|||
|
mov ecx,[Window_SizeX]
|
|||
|
mov edx,[Window_SizeY]
|
|||
|
sub ecx,36
|
|||
|
sub edx,35
|
|||
|
|
|||
|
cmp eax,9
|
|||
|
jle not_work_arrea
|
|||
|
|
|||
|
cmp eax,ecx
|
|||
|
jae not_work_arrea
|
|||
|
|
|||
|
cmp ebx,20+15+1+46
|
|||
|
jle not_work_arrea
|
|||
|
|
|||
|
cmp ebx,edx
|
|||
|
jae not_work_arrea
|
|||
|
|
|||
|
jmp mouse_in_work_arrea
|
|||
|
|
|||
|
not_work_arrea:
|
|||
|
|
|||
|
mov [exit_from_work_arrea],1
|
|||
|
|
|||
|
jmp still
|
|||
|
|
|||
|
mouse_in_work_arrea:
|
|||
|
|
|||
|
call GetScreenCordinats
|
|||
|
call PrintMousePos
|
|||
|
call GetMouseClick
|
|||
|
|
|||
|
test eax,eax
|
|||
|
jz no_use_instruments
|
|||
|
|
|||
|
cmp [Activate_instrument],0
|
|||
|
|
|||
|
jnz no_undo___
|
|||
|
;------------begin copy for undo-------------
|
|||
|
inc [number_undo]
|
|||
|
|
|||
|
cmp [number_undo],1
|
|||
|
jne no_one__
|
|||
|
|
|||
|
mov edi,[PointerToCopyPicture]
|
|||
|
|
|||
|
no_one__:
|
|||
|
|
|||
|
cmp [number_undo],2
|
|||
|
jne no_two__
|
|||
|
|
|||
|
mov edi,[PointerToCopyPicture2]
|
|||
|
|
|||
|
no_two__:
|
|||
|
|
|||
|
cmp [number_undo],3
|
|||
|
jne no_three__
|
|||
|
|
|||
|
;copy bufer number two to bufer number one
|
|||
|
mov esi,[PointerToCopyPicture2]
|
|||
|
mov edi,[PointerToCopyPicture]
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
imul ecx,[Picture_SizeY]
|
|||
|
lea ecx,[ecx+ecx*2]
|
|||
|
add ecx,4
|
|||
|
shr ecx,2
|
|||
|
inc ecx
|
|||
|
cld
|
|||
|
rep movsd
|
|||
|
;end copy
|
|||
|
dec [number_undo]
|
|||
|
mov edi,[PointerToCopyPicture2]
|
|||
|
|
|||
|
no_three__:
|
|||
|
|
|||
|
mov esi,[PointerToPicture]
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
imul ecx,[Picture_SizeY]
|
|||
|
lea ecx,[ecx+ecx*2]
|
|||
|
add ecx,4
|
|||
|
shr ecx,2
|
|||
|
inc ecx
|
|||
|
cld
|
|||
|
rep movsd
|
|||
|
;--------------end copy for undo-------------
|
|||
|
no_undo___:
|
|||
|
|
|||
|
call TakeButtonInstruments
|
|||
|
no_use_instruments:
|
|||
|
|
|||
|
mov eax,[Current_instrument]
|
|||
|
and [Activate_instrument],0
|
|||
|
|
|||
|
jmp still
|
|||
|
;-----------------------------------------------
|
|||
|
;---------get mouse cordinats-------------------
|
|||
|
;-----------------------------------------------
|
|||
|
GetMouseCoordinats:
|
|||
|
|
|||
|
mov eax,37
|
|||
|
mov ebx,1
|
|||
|
int 0x40
|
|||
|
|
|||
|
mov ebx,eax
|
|||
|
shr eax,16
|
|||
|
and ebx,0xffff
|
|||
|
|
|||
|
mov [MouseX],eax
|
|||
|
mov [MouseY],ebx
|
|||
|
|
|||
|
ret
|
|||
|
;------------------------------------------------
|
|||
|
;-------get mouse attributs----------------------
|
|||
|
;------------------------------------------------
|
|||
|
GetMouseClick:
|
|||
|
mov eax,37
|
|||
|
mov ebx,2
|
|||
|
int 0x40
|
|||
|
|
|||
|
ret
|
|||
|
;-------------------------------------------------
|
|||
|
;-----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]
|
|||
|
add edi,esi
|
|||
|
add edi,3*4
|
|||
|
mov ecx,[MouseX]
|
|||
|
mov edx,[MouseY]
|
|||
|
push edi
|
|||
|
mov edi,13
|
|||
|
mov esi,80
|
|||
|
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
|
|||
|
|
|||
|
call print_panel_menu
|
|||
|
|
|||
|
no_mouse_pressed:
|
|||
|
|
|||
|
no_columnus_text:
|
|||
|
|
|||
|
mov eax,[Icon_text_x]
|
|||
|
mov ebx,[Icon_text_y]
|
|||
|
mov ecx,79
|
|||
|
mov edx,13
|
|||
|
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 icon buttons(some time)
|
|||
|
mov [counter],10
|
|||
|
next_icon_delit:
|
|||
|
mov eax,8
|
|||
|
mov edx,[counter]
|
|||
|
add edx,11100000000000000000000000000000b
|
|||
|
int 0x40
|
|||
|
inc [counter]
|
|||
|
|
|||
|
cmp [counter],30
|
|||
|
jl next_icon_delit
|
|||
|
|
|||
|
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
|
|||
|
;ᣫ<><E1A3AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>樨 >>>>>>>>>>>>>>>>>>
|
|||
|
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,385
|
|||
|
mov ebx,20+15+6
|
|||
|
mov ecx,52
|
|||
|
mov edx,18
|
|||
|
mov esi,4
|
|||
|
call draw_volume_rectangle
|
|||
|
|
|||
|
mov eax,385
|
|||
|
mov ebx,20+15+6+18+1
|
|||
|
mov ecx,52
|
|||
|
mov edx,18
|
|||
|
mov esi,4
|
|||
|
call draw_volume_rectangle
|
|||
|
|
|||
|
mov eax,390
|
|||
|
mov ebx,20+15+6+6
|
|||
|
and ecx,0
|
|||
|
mov edx,mouse_pos_x
|
|||
|
mov esi,2
|
|||
|
call print_text
|
|||
|
|
|||
|
mov eax,390
|
|||
|
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,405*65536+20+15+6+6
|
|||
|
and esi,0
|
|||
|
int 0x40
|
|||
|
|
|||
|
mov eax,47
|
|||
|
mov ebx,4*65536
|
|||
|
mov ecx,[ScreenY]
|
|||
|
add ecx,[PosY]
|
|||
|
mov edx,405*65536+20+15+6+18+1+6
|
|||
|
and esi,0
|
|||
|
int 0x40
|
|||
|
|
|||
|
popad
|
|||
|
ret
|
|||
|
|
|||
|
;---------------------------------------------------------
|
|||
|
;---------- get time in 1/100 secunds---------------------
|
|||
|
;---------------------------------------------------------
|
|||
|
Clock:
|
|||
|
mov eax,26
|
|||
|
mov ebx,9
|
|||
|
int 0x40
|
|||
|
mov [time],eax
|
|||
|
ret
|
|||
|
;----------------------------------------------------------
|
|||
|
;-------------draw window of program-----------------------
|
|||
|
;----------------------------------------------------------
|
|||
|
drawwin:
|
|||
|
|
|||
|
mov eax,12
|
|||
|
mov ebx,1
|
|||
|
int 0x40
|
|||
|
|
|||
|
and eax,0
|
|||
|
mov ebx,[Window_CordinatX]
|
|||
|
mov ecx,[Window_CordinatY]
|
|||
|
shl ebx,16
|
|||
|
shl ecx,16
|
|||
|
add ebx,[Window_SizeX]
|
|||
|
add ecx,[Window_SizeY]
|
|||
|
mov edx,0x03aabbcc
|
|||
|
mov esi,0x805080d0
|
|||
|
mov edi,0x005080d0
|
|||
|
int 0x40
|
|||
|
|
|||
|
call draw_panel
|
|||
|
call PrintMousePos
|
|||
|
|
|||
|
mov [counter],7
|
|||
|
mov edi,panel_text
|
|||
|
call print_panel_text
|
|||
|
|
|||
|
mov eax,10
|
|||
|
mov ebx,5
|
|||
|
mov ecx,0xffffff
|
|||
|
mov edx,name_of_program
|
|||
|
mov esi,34
|
|||
|
call print_text
|
|||
|
|
|||
|
mov eax,13
|
|||
|
mov ebx,447*65536+35
|
|||
|
mov ecx,42*65536+36
|
|||
|
mov edx,[Color]
|
|||
|
int 0x40
|
|||
|
|
|||
|
mov eax,12
|
|||
|
mov ebx,2
|
|||
|
int 0x40
|
|||
|
|
|||
|
mov eax,9
|
|||
|
mov ebx,IPC_table
|
|||
|
or ecx,-1
|
|||
|
int 0x40
|
|||
|
|
|||
|
mov eax,[IPC_table+34]
|
|||
|
mov ebx,[IPC_table+38]
|
|||
|
mov ecx,[IPC_table+42]
|
|||
|
mov edx,[IPC_table+46]
|
|||
|
mov [Window_CordinatX],eax
|
|||
|
mov [Window_CordinatY],ebx
|
|||
|
mov [Window_SizeX],ecx
|
|||
|
mov [Window_SizeY],edx
|
|||
|
|
|||
|
cmp [Window_SizeX],585
|
|||
|
jae no_minimum_size_x
|
|||
|
|
|||
|
mov [Window_SizeX],585
|
|||
|
mov ecx,[Window_SizeX]
|
|||
|
|
|||
|
no_minimum_size_x:
|
|||
|
|
|||
|
cmp [Window_SizeY],320
|
|||
|
jae no_minimum_size_y
|
|||
|
|
|||
|
mov [Window_SizeY],320
|
|||
|
mov edx,[Window_SizeY]
|
|||
|
|
|||
|
no_minimum_size_y:
|
|||
|
|
|||
|
mov [MaxWorkScreen_SizeX],ecx
|
|||
|
mov [MaxWorkScreen_SizeY],edx
|
|||
|
sub [MaxWorkScreen_SizeX],20+10+5+10
|
|||
|
sub [MaxWorkScreen_SizeY],20+10+15+1+45+20+10
|
|||
|
|
|||
|
cmp [MaxWorkScreen_SizeX],0
|
|||
|
jns no_znak1
|
|||
|
|
|||
|
mov [MaxWorkScreen_SizeX],ecx
|
|||
|
|
|||
|
no_znak1:
|
|||
|
cmp [MaxWorkScreen_SizeY],0
|
|||
|
jns no_znak2
|
|||
|
|
|||
|
mov [MaxWorkScreen_SizeY],ecx
|
|||
|
|
|||
|
no_znak2:
|
|||
|
|
|||
|
mov ecx,[k]
|
|||
|
|
|||
|
and [PosX],0
|
|||
|
and [PosY],0
|
|||
|
call MovePictureToWorkScreen
|
|||
|
call draw_scrollers
|
|||
|
call draw_icons
|
|||
|
|
|||
|
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,46
|
|||
|
mov esi,1
|
|||
|
sub ecx,10
|
|||
|
call draw_volume_rectangle
|
|||
|
|
|||
|
mov eax,5
|
|||
|
mov ebx,20+15+1+46+1
|
|||
|
mov ecx,[Window_SizeX]
|
|||
|
mov edx,[Window_SizeY]
|
|||
|
mov esi,1
|
|||
|
sub ecx,10+20
|
|||
|
sub edx,20+15+1+46+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+45+2
|
|||
|
mov ecx,20+10
|
|||
|
mov edx,[Window_SizeY]
|
|||
|
mov esi,3
|
|||
|
sub eax,25+10
|
|||
|
sub edx,20+15+1+45+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
|
|||
|
;----------------------------------------------------------
|
|||
|
;---------------------system events------------------------
|
|||
|
;----------------------------------------------------------
|
|||
|
event:
|
|||
|
mov eax,10
|
|||
|
int 0x40
|
|||
|
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 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
|
|||
|
;----------------------------------------------------------
|
|||
|
;--------Move picture from array to work screeen-----------
|
|||
|
;----------------------------------------------------------
|
|||
|
MovePictureToWorkScreen:
|
|||
|
|
|||
|
call cleare_screen
|
|||
|
|
|||
|
mov eax,[Picture_SizeX]
|
|||
|
mov ebx,[Picture_SizeY]
|
|||
|
mov ecx,[MaxWorkScreen_SizeX]
|
|||
|
mov edx,[MaxWorkScreen_SizeY]
|
|||
|
mov esi,[k]
|
|||
|
imul eax,esi
|
|||
|
imul ebx,esi
|
|||
|
|
|||
|
cmp eax,ecx
|
|||
|
jle lab1
|
|||
|
mov eax,[MaxWorkScreen_SizeX]
|
|||
|
mov [WorkScreen_SizeX],eax
|
|||
|
jmp lab2
|
|||
|
lab1:
|
|||
|
mov [WorkScreen_SizeX],eax
|
|||
|
lab2:
|
|||
|
|
|||
|
cmp ebx,edx
|
|||
|
jle lab3
|
|||
|
mov ebx,[MaxWorkScreen_SizeY]
|
|||
|
mov [WorkScreen_SizeY],ebx
|
|||
|
jmp lab4
|
|||
|
lab3:
|
|||
|
mov [WorkScreen_SizeY],ebx
|
|||
|
lab4:
|
|||
|
|
|||
|
mov eax,[WorkScreen_SizeX]
|
|||
|
mov ebx,[k]
|
|||
|
cdq
|
|||
|
idiv ebx
|
|||
|
mov [CounterX],eax
|
|||
|
mov eax,[WorkScreen_SizeY]
|
|||
|
cdq
|
|||
|
idiv ebx
|
|||
|
mov [CounterY],eax
|
|||
|
|
|||
|
mov eax,[WorkScreen_SizeX]
|
|||
|
mov ecx,eax
|
|||
|
mov ebx,[k]
|
|||
|
cdq
|
|||
|
idiv ebx
|
|||
|
imul eax,ebx
|
|||
|
sub ecx,eax
|
|||
|
lea ecx,[ecx+ecx*2]
|
|||
|
;
|
|||
|
mov eax,[WorkScreen_SizeX]
|
|||
|
mov ebx,[k]
|
|||
|
dec ebx
|
|||
|
imul eax,ebx
|
|||
|
lea eax,[eax+eax*2]
|
|||
|
add eax,ecx
|
|||
|
mov [OffsetYWorkScreen],eax
|
|||
|
|
|||
|
|
|||
|
mov ebx,[Picture_SizeX]
|
|||
|
mov eax,[CounterX]
|
|||
|
sub ebx,eax
|
|||
|
lea ebx,[ebx+ebx*2]
|
|||
|
mov [OffsetYPicture],ebx
|
|||
|
|
|||
|
mov eax,[WorkScreen_SizeX]
|
|||
|
mov ebx,[k]
|
|||
|
sub eax,ebx
|
|||
|
lea eax,[eax+eax*2]
|
|||
|
mov [OffsetYBigPixel],eax
|
|||
|
|
|||
|
mov eax,[PosX]
|
|||
|
mov ebx,[PosY]
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
imul ecx,ebx
|
|||
|
add eax,ecx
|
|||
|
lea eax,[eax+eax*2]
|
|||
|
add eax,[PointerToPicture]
|
|||
|
|
|||
|
|
|||
|
mov ebx,[ScreenPointer]
|
|||
|
|
|||
|
mov edi,[CounterY]
|
|||
|
|
|||
|
;if size of picture natural(mastab is 1) than move picture to work screen
|
|||
|
cmp [k],1
|
|||
|
jne no_zoom_1_
|
|||
|
screen_y_1:
|
|||
|
mov esi,[CounterX]
|
|||
|
screen_x_1:
|
|||
|
mov ecx,[eax]
|
|||
|
and ecx,0xffffff
|
|||
|
mov ebp,ecx
|
|||
|
shr ecx,16
|
|||
|
mov [ebx],bp
|
|||
|
mov [ebx+2],cl
|
|||
|
add ebx,3;
|
|||
|
add eax,3
|
|||
|
dec esi
|
|||
|
jnz screen_x_1
|
|||
|
add eax,[OffsetYPicture]
|
|||
|
add ebx,[OffsetYWorkScreen]
|
|||
|
dec edi
|
|||
|
jnz screen_y_1
|
|||
|
jmp fps
|
|||
|
no_zoom_1_:
|
|||
|
|
|||
|
cmp [k],2
|
|||
|
jne no_zoom_2
|
|||
|
|
|||
|
screen_y_2:
|
|||
|
mov esi,[CounterX]
|
|||
|
screen_x_2:
|
|||
|
mov ecx,[eax]
|
|||
|
and ecx,0xffffff
|
|||
|
mov ebp,ecx
|
|||
|
shr ecx,16
|
|||
|
mov edx,ebx
|
|||
|
mov [edx],bp
|
|||
|
mov [edx+2],cl
|
|||
|
mov [edx+3],bp
|
|||
|
mov [edx+3+2],cl
|
|||
|
add edx,3*2
|
|||
|
add edx,[OffsetYBigPixel]
|
|||
|
mov [edx],bp
|
|||
|
mov [edx+2],cl
|
|||
|
mov [edx+3],bp
|
|||
|
mov [edx+3+2],cl
|
|||
|
add edx,3*2
|
|||
|
add edx,[OffsetYBigPixel]
|
|||
|
add ebx,3*2
|
|||
|
add eax,3
|
|||
|
dec esi
|
|||
|
jnz screen_x_2
|
|||
|
add eax,[OffsetYPicture]
|
|||
|
add ebx,[OffsetYWorkScreen]
|
|||
|
dec edi
|
|||
|
jnz screen_y_2
|
|||
|
jmp fps
|
|||
|
no_zoom_2:
|
|||
|
|
|||
|
cmp [k],4
|
|||
|
jne no_zoom_4
|
|||
|
screen_y_4:
|
|||
|
mov esi,[CounterX]
|
|||
|
screen_x_4:
|
|||
|
mov ecx,[eax]
|
|||
|
and ecx,0xffffff
|
|||
|
mov ebp,ecx
|
|||
|
shr ecx,16
|
|||
|
mov edx,ebx
|
|||
|
mov [edx],bp
|
|||
|
mov [edx+2],cl
|
|||
|
mov [edx+3],bp
|
|||
|
mov [edx+3+2],cl
|
|||
|
mov [edx+6],bp
|
|||
|
mov [edx+6+2],cl
|
|||
|
mov [edx+9],bp
|
|||
|
mov [edx+9+2],cl
|
|||
|
add edx,3*4
|
|||
|
add edx,[OffsetYBigPixel]
|
|||
|
mov [edx],bp
|
|||
|
mov [edx+2],cl
|
|||
|
mov [edx+3],bp
|
|||
|
mov [edx+3+2],cl
|
|||
|
mov [edx+6],bp
|
|||
|
mov [edx+6+2],cl
|
|||
|
mov [edx+9],bp
|
|||
|
mov [edx+9+2],cl
|
|||
|
add edx,3*4
|
|||
|
add edx,[OffsetYBigPixel]
|
|||
|
mov [edx],bp
|
|||
|
mov [edx+2],cl
|
|||
|
mov [edx+3],bp
|
|||
|
mov [edx+3+2],cl
|
|||
|
mov [edx+6],bp
|
|||
|
mov [edx+6+2],cl
|
|||
|
mov [edx+9],bp
|
|||
|
mov [edx+9+2],cl
|
|||
|
add edx,3*4
|
|||
|
add edx,[OffsetYBigPixel]
|
|||
|
mov [edx],bp
|
|||
|
mov [edx+2],cl
|
|||
|
mov [edx+3],bp
|
|||
|
mov [edx+3+2],cl
|
|||
|
mov [edx+6],bp
|
|||
|
mov [edx+6+2],cl
|
|||
|
mov [edx+9],bp
|
|||
|
mov [edx+9+2],cl
|
|||
|
add edx,3*4
|
|||
|
add edx,[OffsetYBigPixel]
|
|||
|
add ebx,4*3
|
|||
|
add eax,3
|
|||
|
dec esi
|
|||
|
jnz screen_x_4
|
|||
|
add eax,[OffsetYPicture]
|
|||
|
add ebx,[OffsetYWorkScreen]
|
|||
|
dec edi
|
|||
|
jnz screen_y_4
|
|||
|
jmp fps
|
|||
|
no_zoom_4:
|
|||
|
;if zoom more than 4
|
|||
|
screen_y:
|
|||
|
mov esi,[CounterX]
|
|||
|
screen_x:
|
|||
|
mov ecx,[eax]
|
|||
|
and ecx,0xffffff
|
|||
|
mov ebp,ecx
|
|||
|
shr ecx,16
|
|||
|
push ebx
|
|||
|
push eax
|
|||
|
mov edx,[k]
|
|||
|
big_pixel_y:
|
|||
|
mov eax,[k]
|
|||
|
big_pixel_x:
|
|||
|
mov [ebx],bp
|
|||
|
mov [ebx+2],cl
|
|||
|
add ebx,3
|
|||
|
dec eax
|
|||
|
jnz big_pixel_x
|
|||
|
add ebx,[OffsetYBigPixel]
|
|||
|
dec edx
|
|||
|
jnz big_pixel_y
|
|||
|
pop eax
|
|||
|
pop ebx
|
|||
|
mov edx,[k]
|
|||
|
lea edx,[edx+edx*2]
|
|||
|
add ebx,edx
|
|||
|
add eax,3
|
|||
|
dec esi
|
|||
|
jnz screen_x
|
|||
|
add eax,[OffsetYPicture]
|
|||
|
add ebx,[OffsetYWorkScreen]
|
|||
|
dec edi
|
|||
|
jnz screen_y
|
|||
|
|
|||
|
fps:
|
|||
|
mov eax,18
|
|||
|
mov ebx,14
|
|||
|
int 0x40
|
|||
|
|
|||
|
mov eax,7
|
|||
|
mov ebx,[ScreenPointer]
|
|||
|
mov ecx,[WorkScreen_SizeX]
|
|||
|
mov edx,[WorkScreen_SizeY]
|
|||
|
shl ecx,16
|
|||
|
add ecx,edx
|
|||
|
mov edx,8*65536+20+15+45+5
|
|||
|
int 0x40
|
|||
|
|
|||
|
ret
|
|||
|
;----------------------------------------------------------
|
|||
|
;--------------------clear screen--------------------------
|
|||
|
;----------------------------------------------------------
|
|||
|
cleare_screen:
|
|||
|
|
|||
|
mov eax,[ScreenPointer]
|
|||
|
mov ebx,[WorkScreen_SizeX]
|
|||
|
imul ebx,[WorkScreen_SizeY]
|
|||
|
lea ebx,[ebx+ebx*2]
|
|||
|
shr ebx,3
|
|||
|
inc ebx
|
|||
|
mov esi,0xffffff
|
|||
|
|
|||
|
clear_screen_loop:
|
|||
|
|
|||
|
mov [eax],esi
|
|||
|
mov [eax+3],esi
|
|||
|
mov [eax+6],si
|
|||
|
add eax,4+4
|
|||
|
|
|||
|
dec ebx
|
|||
|
jnz clear_screen_loop
|
|||
|
ret
|
|||
|
;----------------------------------------------------------
|
|||
|
;-------------cleare work arrea(work screen)---------------
|
|||
|
;----------------------------------------------------------
|
|||
|
cleare_work_arrea:
|
|||
|
|
|||
|
mov eax,[PointerToPicture]
|
|||
|
mov ebx,[Picture_SizeX]
|
|||
|
imul ebx,[Picture_SizeY]
|
|||
|
lea ebx,[ebx+ebx*2]
|
|||
|
shr ebx,3
|
|||
|
inc ebx
|
|||
|
mov esi,0xffffff
|
|||
|
|
|||
|
clear_work_arrea_loop:
|
|||
|
|
|||
|
mov [eax],esi
|
|||
|
mov [eax+3],esi
|
|||
|
mov [eax+6],si
|
|||
|
add eax,4+4
|
|||
|
|
|||
|
dec ebx
|
|||
|
jnz clear_work_arrea_loop
|
|||
|
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+46+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
|
|||
|
;----------------------------------------------------------
|
|||
|
;--------change size of memory which use program-----------
|
|||
|
;----------------------------------------------------------
|
|||
|
GetMemory:
|
|||
|
pushad
|
|||
|
mov eax,64
|
|||
|
mov ebx,1
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
mov edx,[Picture_SizeY]
|
|||
|
imul ecx,edx
|
|||
|
lea ecx,[ecx+ecx*2]
|
|||
|
lea ecx,[ecx+ecx*4] ;(Picture_SizeX*Picture_SizeY*3)*5
|
|||
|
add ecx,[ScreenPointer]
|
|||
|
add ecx,(1200*1000)*3+30*(20*20*3)+500000+16000+0x4000
|
|||
|
add ecx,[extended_memory]
|
|||
|
int 0x40
|
|||
|
|
|||
|
test eax,eax
|
|||
|
jz have_new_memory
|
|||
|
|
|||
|
mov esi,sound_havent_memory
|
|||
|
call sound
|
|||
|
|
|||
|
jmp still
|
|||
|
|
|||
|
have_new_memory:
|
|||
|
popad
|
|||
|
ret
|
|||
|
;-----------------------------------------------------------
|
|||
|
;-----------instruments of menu-----------------------------
|
|||
|
;-----------------------------------------------------------
|
|||
|
TakeInstruments:
|
|||
|
|
|||
|
;|||||||||||||||||||FILE||||||||||||||||||||||
|
|||
|
cmp [number_panel],7
|
|||
|
jne no_file
|
|||
|
|
|||
|
;<<<<<NEW>>>>>>>
|
|||
|
cmp [number_menu],1
|
|||
|
jne no_new
|
|||
|
|
|||
|
mov eax,80
|
|||
|
mov ebx,100
|
|||
|
mov ecx,150
|
|||
|
mov edx,90
|
|||
|
mov esi,1
|
|||
|
call draw_volume_rectangle
|
|||
|
|
|||
|
mov eax,177
|
|||
|
mov ebx,115
|
|||
|
mov ecx,40
|
|||
|
mov edx,14
|
|||
|
mov esi,4
|
|||
|
call draw_volume_rectangle
|
|||
|
|
|||
|
mov eax,177
|
|||
|
mov ebx,115+24
|
|||
|
mov ecx,40
|
|||
|
mov edx,14
|
|||
|
mov esi,4
|
|||
|
call draw_volume_rectangle
|
|||
|
|
|||
|
mov eax,175
|
|||
|
mov ebx,170
|
|||
|
mov ecx,40
|
|||
|
mov edx,15
|
|||
|
mov esi,1
|
|||
|
call draw_volume_rectangle
|
|||
|
|
|||
|
mov eax,90
|
|||
|
mov ebx,118
|
|||
|
mov ecx,0xffffff
|
|||
|
mov edx,new_text1
|
|||
|
mov esi,14
|
|||
|
call print_text
|
|||
|
|
|||
|
mov eax,90
|
|||
|
mov ebx,118+24
|
|||
|
mov ecx,0xffffff
|
|||
|
mov edx,new_text2
|
|||
|
mov esi,14
|
|||
|
call print_text
|
|||
|
|
|||
|
mov eax,185
|
|||
|
mov ebx,175
|
|||
|
mov ecx,0xffffff
|
|||
|
mov edx,ok_text
|
|||
|
mov esi,2
|
|||
|
call print_text
|
|||
|
|
|||
|
mov eax,8
|
|||
|
mov ebx,177*65536+40
|
|||
|
mov ecx,115*65536+14
|
|||
|
mov edx,1000000000000000000000000000000b
|
|||
|
add edx,1000
|
|||
|
int 0x40
|
|||
|
|
|||
|
mov eax,8
|
|||
|
mov ebx,177*65536+40
|
|||
|
mov ecx,139*65536+14
|
|||
|
mov edx,1000000000000000000000000000000b
|
|||
|
add edx,1001
|
|||
|
int 0x40
|
|||
|
|
|||
|
mov eax,8
|
|||
|
mov ebx,175*65536+40
|
|||
|
mov ecx,170*65536+15
|
|||
|
mov edx,1000000000000000000000000000000b
|
|||
|
add edx,1002
|
|||
|
int 0x40
|
|||
|
|
|||
|
no_activate_space:
|
|||
|
|
|||
|
mov eax,10
|
|||
|
int 0x40
|
|||
|
|
|||
|
cmp eax,1
|
|||
|
je exit_new
|
|||
|
|
|||
|
cmp eax,3
|
|||
|
jne no_activate_space
|
|||
|
|
|||
|
mov eax,17
|
|||
|
int 0x40
|
|||
|
shr eax,8
|
|||
|
|
|||
|
cmp eax,1000
|
|||
|
jl no_activate_space
|
|||
|
|
|||
|
cmp eax,1000
|
|||
|
jne no_picture_size_x
|
|||
|
|
|||
|
mov eax,180
|
|||
|
mov ebx,119
|
|||
|
mov ecx,5
|
|||
|
call dialog_line
|
|||
|
|
|||
|
mov eax,string_
|
|||
|
mov ebx,13
|
|||
|
call find_symvol
|
|||
|
|
|||
|
dec eax
|
|||
|
mov [length_number],eax
|
|||
|
mov eax,string_
|
|||
|
call value
|
|||
|
|
|||
|
mov [Picture_SizeX],eax
|
|||
|
|
|||
|
jmp no_activate_space
|
|||
|
|
|||
|
no_picture_size_x:
|
|||
|
|
|||
|
cmp eax,1001
|
|||
|
jne no_picture_size_y
|
|||
|
|
|||
|
mov eax,180
|
|||
|
mov ebx,119+24
|
|||
|
mov ecx,5
|
|||
|
call dialog_line
|
|||
|
|
|||
|
mov eax,string_
|
|||
|
mov ebx,13
|
|||
|
call find_symvol
|
|||
|
|
|||
|
dec eax
|
|||
|
mov [length_number],eax
|
|||
|
mov eax,string_
|
|||
|
call value
|
|||
|
|
|||
|
mov [Picture_SizeY],eax
|
|||
|
|
|||
|
jmp no_activate_space
|
|||
|
|
|||
|
no_picture_size_y:
|
|||
|
|
|||
|
cmp eax,1002
|
|||
|
jne no_activate_space
|
|||
|
|
|||
|
exit_new:
|
|||
|
|
|||
|
mov eax,8
|
|||
|
mov ebx,175*65536+40
|
|||
|
mov ecx,170*65536+15
|
|||
|
mov edx,11100000000000000000000000000000b
|
|||
|
add edx,1002
|
|||
|
int 0x40
|
|||
|
|
|||
|
mov eax,8
|
|||
|
mov ebx,177*65536+40
|
|||
|
mov ecx,139*65536+14
|
|||
|
mov edx,11100000000000000000000000000000b
|
|||
|
add edx,1001
|
|||
|
int 0x40
|
|||
|
|
|||
|
mov eax,8
|
|||
|
mov ebx,177*65536+40
|
|||
|
mov ecx,115*65536+14
|
|||
|
mov edx,11100000000000000000000000000000b
|
|||
|
add edx,1000
|
|||
|
int 0x40
|
|||
|
|
|||
|
;get memory for new picture
|
|||
|
mov eax,[Picture_SizeX]
|
|||
|
mov ebx,[Picture_SizeY]
|
|||
|
|
|||
|
imul eax,ebx
|
|||
|
lea eax,[eax+eax*2]
|
|||
|
|
|||
|
mov ebx,[ScreenPointer]
|
|||
|
add ebx,(1200*1000*3)+30*(20*20*3)+500000
|
|||
|
|
|||
|
mov [PointerToPicture],ebx
|
|||
|
mov [PointerToCopyPicture],ebx
|
|||
|
mov [PointerToCopyPicture2],ebx
|
|||
|
mov [PointerToEditBufer],ebx
|
|||
|
mov [PointerToSpriteBufer],ebx
|
|||
|
|
|||
|
add [PointerToCopyPicture],eax
|
|||
|
|
|||
|
add [PointerToCopyPicture2],eax
|
|||
|
add [PointerToCopyPicture2],eax
|
|||
|
|
|||
|
add [PointerToEditBufer],eax
|
|||
|
add [PointerToEditBufer],eax
|
|||
|
add [PointerToEditBufer],eax
|
|||
|
|
|||
|
add [PointerToSpriteBufer],eax
|
|||
|
add [PointerToSpriteBufer],eax
|
|||
|
add [PointerToSpriteBufer],eax
|
|||
|
add [PointerToSpriteBufer],eax
|
|||
|
|
|||
|
call GetMemory
|
|||
|
|
|||
|
and [save_flag],0
|
|||
|
and [number_panel],0
|
|||
|
and [number_menu],0
|
|||
|
|
|||
|
call cleare_work_arrea
|
|||
|
call drawwin
|
|||
|
|
|||
|
jmp still
|
|||
|
no_new:
|
|||
|
|
|||
|
;<<<<<OPEN>>>>>>>
|
|||
|
cmp [number_menu],2
|
|||
|
jne no_open
|
|||
|
|
|||
|
opendialog drawwin,open_1,open_2,file_path
|
|||
|
open_1:
|
|||
|
|
|||
|
mov eax,40
|
|||
|
mov ebx,100111b
|
|||
|
int 0x40
|
|||
|
|
|||
|
mov eax,[ScreenPointer]
|
|||
|
add eax,0x10000
|
|||
|
mov [file_info],dword 0
|
|||
|
mov [file_info+8],dword 1
|
|||
|
mov [file_info+12],eax
|
|||
|
mov eax,58
|
|||
|
mov ebx,file_info
|
|||
|
int 0x40
|
|||
|
|
|||
|
mov esi,[ScreenPointer]
|
|||
|
add esi,0x10000
|
|||
|
;-------------is this BMP file ?----------------
|
|||
|
xor eax,eax
|
|||
|
mov ax,[esi]
|
|||
|
mov [type],ax
|
|||
|
|
|||
|
cmp [type],word 'BM'
|
|||
|
jne no_bmp_file
|
|||
|
|
|||
|
xor eax,eax
|
|||
|
xor ebx,ebx
|
|||
|
mov eax,[esi+18]
|
|||
|
mov ebx,[esi+22]
|
|||
|
mov [Picture_SizeX],eax
|
|||
|
mov [Picture_SizeY],ebx
|
|||
|
|
|||
|
jmp exit_type
|
|||
|
|
|||
|
no_bmp_file:
|
|||
|
|
|||
|
;-------------is this GIF file ?----------------
|
|||
|
xor eax,eax
|
|||
|
mov ax,[esi]
|
|||
|
mov [type],ax
|
|||
|
|
|||
|
cmp [type],'GI'
|
|||
|
jne no_gif_file
|
|||
|
|
|||
|
add esi,6
|
|||
|
xor eax,eax
|
|||
|
xor ebx,ebx
|
|||
|
mov ax,word[esi]
|
|||
|
mov bx,word[esi+2]
|
|||
|
mov [Picture_SizeX],eax
|
|||
|
mov [Picture_SizeY],ebx
|
|||
|
|
|||
|
jmp exit_type
|
|||
|
|
|||
|
no_gif_file:
|
|||
|
|
|||
|
jmp no_unpakcing_gif_file
|
|||
|
|
|||
|
exit_type:
|
|||
|
;----------------------------------------------------------
|
|||
|
;Get momory for unpacking picture and for picture's bufers
|
|||
|
;----------------------------------------------------------
|
|||
|
mov eax,[Picture_SizeX]
|
|||
|
mov ebx,[Picture_SizeY]
|
|||
|
|
|||
|
imul eax,ebx
|
|||
|
lea eax,[eax+eax*2]
|
|||
|
|
|||
|
mov ebx,[ScreenPointer]
|
|||
|
add ebx,(1200*1000*3)+30*(20*20*3)+500000
|
|||
|
|
|||
|
mov [PointerToPicture],ebx
|
|||
|
mov [PointerToCopyPicture],ebx
|
|||
|
mov [PointerToCopyPicture2],ebx
|
|||
|
mov [PointerToEditBufer],ebx
|
|||
|
mov [PointerToSpriteBufer],ebx
|
|||
|
|
|||
|
add [PointerToCopyPicture],eax
|
|||
|
|
|||
|
add [PointerToCopyPicture2],eax
|
|||
|
add [PointerToCopyPicture2],eax
|
|||
|
|
|||
|
add [PointerToEditBufer],eax
|
|||
|
add [PointerToEditBufer],eax
|
|||
|
add [PointerToEditBufer],eax
|
|||
|
|
|||
|
add [PointerToSpriteBufer],eax
|
|||
|
add [PointerToSpriteBufer],eax
|
|||
|
add [PointerToSpriteBufer],eax
|
|||
|
add [PointerToSpriteBufer],eax
|
|||
|
|
|||
|
call GetMemory
|
|||
|
;----------------------------------------------------------
|
|||
|
;--------------------Load file in memory-------------------
|
|||
|
;----------------------------------------------------------
|
|||
|
|
|||
|
mov eax,[PointerToCopyPicture]
|
|||
|
mov ebx,[ScreenPointer]
|
|||
|
add eax,1000
|
|||
|
mov [file_info],dword 0
|
|||
|
mov [file_info+8],dword 1
|
|||
|
mov [file_info+12],dword eax
|
|||
|
mov [file_info+16],dword ebx
|
|||
|
|
|||
|
call load_file
|
|||
|
|
|||
|
;----------------------------------------------------------
|
|||
|
;-------------------Unpacking picture----------------------
|
|||
|
;----------------------------------------------------------
|
|||
|
mov esi,[PointerToCopyPicture]
|
|||
|
add esi,1000
|
|||
|
mov edi,[PointerToPicture]
|
|||
|
mov eax,[ScreenPointer]
|
|||
|
|
|||
|
cmp [type],'BM'
|
|||
|
jne no_unpakcing_bmp_file
|
|||
|
;BMP DECODER
|
|||
|
call bmptoimg
|
|||
|
|
|||
|
no_unpakcing_bmp_file:
|
|||
|
|
|||
|
|
|||
|
cmp [type],'GI'
|
|||
|
jne no_unpakcing_gif_file
|
|||
|
;GIF DECODER
|
|||
|
sub edi,12
|
|||
|
call ReadGIF
|
|||
|
|
|||
|
no_unpakcing_gif_file:
|
|||
|
|
|||
|
mov [Scroll1CoordinatX],9
|
|||
|
mov [Scroll2CoordinatY],85
|
|||
|
call load_icons
|
|||
|
call drawwin
|
|||
|
and [number_panel],0
|
|||
|
and [number_menu],0
|
|||
|
mov [save_flag],1
|
|||
|
|
|||
|
open_2:
|
|||
|
|
|||
|
jmp still
|
|||
|
|
|||
|
no_open:
|
|||
|
|
|||
|
;<<<<<<<<<<<SAVE>>>>>>>>>>>>
|
|||
|
cmp [number_menu],3
|
|||
|
jne no_save_
|
|||
|
|
|||
|
mov al,[save_flag]
|
|||
|
|
|||
|
test al,al
|
|||
|
jz no_save_file
|
|||
|
|
|||
|
jmp save_enter
|
|||
|
|
|||
|
no_save_file:
|
|||
|
|
|||
|
and [number_panel],0
|
|||
|
and [number_menu],0
|
|||
|
|
|||
|
jmp still
|
|||
|
|
|||
|
no_save_:
|
|||
|
|
|||
|
;<<<<<<<<<SAVE AS>>>>>>>>>>>
|
|||
|
cmp [number_menu],4
|
|||
|
jne no_save
|
|||
|
|
|||
|
savedialog drawwin,save1,save2,file_path
|
|||
|
|
|||
|
save1:
|
|||
|
|
|||
|
save_enter:
|
|||
|
mov eax,40
|
|||
|
mov ebx,100111b
|
|||
|
int 0x40
|
|||
|
|
|||
|
call analizing_picture_to_palette
|
|||
|
;eax => number of colors in picture
|
|||
|
mov ebx,[PointerToPicture]
|
|||
|
mov ecx,[PointerToEditBufer]
|
|||
|
mov edx,[PointerToPalette]
|
|||
|
mov esi,[Picture_SizeX]
|
|||
|
mov edi,[Picture_SizeY]
|
|||
|
|
|||
|
call coding_bmp
|
|||
|
mov edi,[PointerToEditBufer]
|
|||
|
mov [file_info],dword 1
|
|||
|
mov [file_info+8],dword ebx
|
|||
|
mov [file_info+12],edi
|
|||
|
|
|||
|
mov eax,58
|
|||
|
mov ebx,file_info
|
|||
|
int 0x40
|
|||
|
|
|||
|
mov [save_flag],1
|
|||
|
and [number_panel],0
|
|||
|
and [number_menu],0
|
|||
|
call drawwin
|
|||
|
|
|||
|
jmp still
|
|||
|
|
|||
|
save2:
|
|||
|
|
|||
|
and [number_panel],0
|
|||
|
and [number_menu],0
|
|||
|
|
|||
|
jmp still
|
|||
|
no_save:
|
|||
|
|
|||
|
;<<<<<<EXIT>>>>>>>
|
|||
|
cmp [number_menu],5
|
|||
|
jne no_exit_program
|
|||
|
|
|||
|
mov eax,-1
|
|||
|
int 0x40
|
|||
|
|
|||
|
no_exit_program:
|
|||
|
|
|||
|
no_file:
|
|||
|
|
|||
|
;|||||||||||||||||||||||||||||EDIT|||||||||||||||||||||||||
|
|||
|
|
|||
|
;<<<<<<<<<<UNDO>>>>>>>>>>
|
|||
|
cmp [number_panel],6
|
|||
|
jne no_edit
|
|||
|
|
|||
|
cmp [number_menu],1
|
|||
|
jne no_undo
|
|||
|
|
|||
|
cmp [number_undo],1
|
|||
|
jne no_one____
|
|||
|
|
|||
|
mov esi,[PointerToCopyPicture]
|
|||
|
|
|||
|
no_one____:
|
|||
|
|
|||
|
cmp [number_undo],2
|
|||
|
jne no_two____
|
|||
|
|
|||
|
mov esi,[PointerToCopyPicture2]
|
|||
|
|
|||
|
no_two____:
|
|||
|
|
|||
|
mov edi,[PointerToPicture]
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
imul ecx,[Picture_SizeY]
|
|||
|
lea ecx,[ecx+ecx*2]
|
|||
|
add ecx,4
|
|||
|
shr ecx,2
|
|||
|
cld
|
|||
|
rep movsd
|
|||
|
call MovePictureToWorkScreen
|
|||
|
|
|||
|
dec [number_undo]
|
|||
|
jnz no_null_undo
|
|||
|
|
|||
|
mov [number_undo],1
|
|||
|
|
|||
|
no_null_undo:
|
|||
|
|
|||
|
and [number_panel],0
|
|||
|
and [number_menu],0
|
|||
|
jmp still
|
|||
|
no_undo:
|
|||
|
|
|||
|
;<<<<<<<<<<COPY>>>>>>>>>>
|
|||
|
|
|||
|
cmp [number_menu],2
|
|||
|
jne no_copy
|
|||
|
|
|||
|
cmp [instrument_used],1
|
|||
|
jne no_copy
|
|||
|
cmp [Activate_instrument],0
|
|||
|
jne no_copy
|
|||
|
|
|||
|
mov eax,[OldX]
|
|||
|
mov ebx,[OldY]
|
|||
|
|
|||
|
cmp eax,[rectangular_shade_x]
|
|||
|
jl no_remove_x_copy
|
|||
|
|
|||
|
mov ecx,[rectangular_shade_x]
|
|||
|
mov [OldX],ecx ; OldX <-----> rectangulare_shade_x
|
|||
|
mov [rectangular_shade_x],eax
|
|||
|
|
|||
|
no_remove_x_copy:
|
|||
|
|
|||
|
cmp ebx,[rectangular_shade_y]
|
|||
|
jl no_remove_y_copy
|
|||
|
|
|||
|
mov ecx,[rectangular_shade_y]
|
|||
|
mov [OldY],ecx ; OldY <-----> rectangulare_shade_y
|
|||
|
mov [rectangular_shade_y],ebx
|
|||
|
|
|||
|
no_remove_y_copy:
|
|||
|
|
|||
|
mov eax,[OldX]
|
|||
|
mov ebx,[OldY]
|
|||
|
mov ecx,[rectangular_shade_x]
|
|||
|
mov edx,[rectangular_shade_y]
|
|||
|
inc eax
|
|||
|
inc ebx
|
|||
|
dec ecx
|
|||
|
dec edx
|
|||
|
|
|||
|
mov [x],eax
|
|||
|
mov [y],ebx
|
|||
|
mov esi,eax
|
|||
|
mov edi,ebx
|
|||
|
mov [Dx_],1
|
|||
|
mov [Dy_],1
|
|||
|
|
|||
|
sub ecx,eax
|
|||
|
jnz no_signum_fill_r_x_copy
|
|||
|
|
|||
|
mov [Dx_],-1
|
|||
|
|
|||
|
no_signum_fill_r_x_copy:
|
|||
|
|
|||
|
sub edx,ebx
|
|||
|
jnz no_signum_fill_r_y_copy
|
|||
|
|
|||
|
mov [Dy_],-1
|
|||
|
|
|||
|
no_signum_fill_r_y_copy:
|
|||
|
|
|||
|
mov ebx,[rectangular_shade_y]
|
|||
|
sub ebx,edi
|
|||
|
|
|||
|
mov edx,[PointerToEditBufer]
|
|||
|
mov [y],edi
|
|||
|
loop_fill_rectangle_y_copy:
|
|||
|
|
|||
|
mov [x],esi
|
|||
|
loop_fill_rectangle_x_copy:
|
|||
|
|
|||
|
push esi
|
|||
|
push edi
|
|||
|
|
|||
|
mov eax,[PointerToPicture]
|
|||
|
mov ebx,[Picture_SizeX]
|
|||
|
mov esi,[x]
|
|||
|
mov edi,[y]
|
|||
|
call GetColorOfPixel
|
|||
|
|
|||
|
mov [edx],ax
|
|||
|
shr eax,16
|
|||
|
mov [edx+2],al
|
|||
|
|
|||
|
pop edi
|
|||
|
pop esi
|
|||
|
|
|||
|
add edx,3
|
|||
|
|
|||
|
mov eax,[x]
|
|||
|
add eax,[Dx_]
|
|||
|
mov [x],eax
|
|||
|
|
|||
|
cmp eax,[rectangular_shade_x]
|
|||
|
jl loop_fill_rectangle_x_copy
|
|||
|
|
|||
|
mov eax,[y]
|
|||
|
add eax,[Dy_]
|
|||
|
mov [y],eax
|
|||
|
|
|||
|
cmp eax,[rectangular_shade_y]
|
|||
|
jl loop_fill_rectangle_y_copy
|
|||
|
|
|||
|
call MovePictureToWorkScreen
|
|||
|
|
|||
|
and [number_panel],0
|
|||
|
and [number_menu],0
|
|||
|
mov [DrawSprite_flag],1
|
|||
|
|
|||
|
jmp still
|
|||
|
|
|||
|
no_copy:
|
|||
|
|
|||
|
;<<<<<<<<<<PASTE>>>>>>>>
|
|||
|
cmp [number_menu],3
|
|||
|
jne no_paste
|
|||
|
|
|||
|
cmp [instrument_used],1
|
|||
|
jne no_paste
|
|||
|
|
|||
|
cmp [Activate_instrument],0
|
|||
|
jne no_paste
|
|||
|
|
|||
|
mov eax,[OldX]
|
|||
|
mov ebx,[OldY]
|
|||
|
|
|||
|
cmp eax,[rectangular_shade_x]
|
|||
|
jl no_remove_x_paste
|
|||
|
|
|||
|
mov ecx,[rectangular_shade_x]
|
|||
|
mov [OldX],ecx ; OldX <-----> rectangulare_shade_x
|
|||
|
mov [rectangular_shade_x],eax
|
|||
|
|
|||
|
no_remove_x_paste:
|
|||
|
|
|||
|
cmp ebx,[rectangular_shade_y]
|
|||
|
jl no_remove_y_paste
|
|||
|
|
|||
|
mov ecx,[rectangular_shade_y]
|
|||
|
mov [OldY],ecx ; OldY <-----> rectangulare_shade_y
|
|||
|
mov [rectangular_shade_y],ebx
|
|||
|
|
|||
|
no_remove_y_paste:
|
|||
|
|
|||
|
mov eax,[OldX]
|
|||
|
mov ebx,[OldY]
|
|||
|
mov ecx,[rectangular_shade_x]
|
|||
|
mov edx,[rectangular_shade_y]
|
|||
|
inc eax
|
|||
|
inc ebx
|
|||
|
dec ecx
|
|||
|
dec edx
|
|||
|
|
|||
|
mov [x],eax
|
|||
|
mov [y],ebx
|
|||
|
mov esi,eax
|
|||
|
mov edi,ebx
|
|||
|
mov [Dx_],1
|
|||
|
mov [Dy_],1
|
|||
|
|
|||
|
sub ecx,eax
|
|||
|
jnz no_signum_fill_r_x_paste
|
|||
|
|
|||
|
mov [Dx_],-1
|
|||
|
|
|||
|
no_signum_fill_r_x_paste:
|
|||
|
|
|||
|
sub edx,ebx
|
|||
|
jnz no_signum_fill_r_y_paste
|
|||
|
|
|||
|
mov [Dy_],-1
|
|||
|
|
|||
|
no_signum_fill_r_y_paste:
|
|||
|
|
|||
|
mov edx,[PointerToEditBufer]
|
|||
|
mov [y],edi
|
|||
|
|
|||
|
loop_fill_rectangle_y_paste:
|
|||
|
|
|||
|
mov [x],esi
|
|||
|
loop_fill_rectangle_x_paste:
|
|||
|
|
|||
|
push esi
|
|||
|
push edi
|
|||
|
|
|||
|
mov ecx,[edx]
|
|||
|
and ecx,0xffffff ;color
|
|||
|
|
|||
|
mov eax,[PointerToPicture]
|
|||
|
mov ebx,[Picture_SizeX]
|
|||
|
mov esi,[x]
|
|||
|
mov edi,[y]
|
|||
|
call PutPixel
|
|||
|
|
|||
|
pop edi
|
|||
|
pop esi
|
|||
|
|
|||
|
add edx,3
|
|||
|
|
|||
|
mov eax,[x]
|
|||
|
add eax,[Dx_]
|
|||
|
mov [x],eax
|
|||
|
cmp eax,[rectangular_shade_x]
|
|||
|
jl loop_fill_rectangle_x_paste
|
|||
|
|
|||
|
mov eax,[y]
|
|||
|
add eax,[Dy_]
|
|||
|
mov [y],eax
|
|||
|
cmp eax,[rectangular_shade_y]
|
|||
|
|
|||
|
jl loop_fill_rectangle_y_paste
|
|||
|
|
|||
|
call MovePictureToWorkScreen
|
|||
|
and [number_panel],0
|
|||
|
and [number_menu],0
|
|||
|
mov [Paste_flag],1
|
|||
|
|
|||
|
jmp still
|
|||
|
|
|||
|
no_paste:
|
|||
|
|
|||
|
;<<<<<<<<<<CUT>>>>>>>>>>
|
|||
|
cmp [number_menu],4
|
|||
|
jne no_cut
|
|||
|
|
|||
|
cmp [instrument_used],1
|
|||
|
jne no_cut
|
|||
|
|
|||
|
cmp [Activate_instrument],0
|
|||
|
jne no_cut
|
|||
|
|
|||
|
mov eax,[OldX]
|
|||
|
mov ebx,[OldY]
|
|||
|
|
|||
|
cmp eax,[rectangular_shade_x]
|
|||
|
jl no_remove_x_cut
|
|||
|
|
|||
|
mov ecx,[rectangular_shade_x]
|
|||
|
mov [OldX],ecx ; OldX <-----> rectangulare_shade_x
|
|||
|
mov [rectangular_shade_x],eax
|
|||
|
|
|||
|
no_remove_x_cut:
|
|||
|
|
|||
|
cmp ebx,[rectangular_shade_y]
|
|||
|
jl no_remove_y_cut
|
|||
|
|
|||
|
mov ecx,[rectangular_shade_y]
|
|||
|
mov [OldY],ecx ; OldY <-----> rectangulare_shade_y
|
|||
|
mov [rectangular_shade_y],ebx
|
|||
|
|
|||
|
no_remove_y_cut:
|
|||
|
|
|||
|
mov eax,[OldX]
|
|||
|
mov ebx,[OldY]
|
|||
|
mov ecx,[rectangular_shade_x]
|
|||
|
mov edx,[rectangular_shade_y]
|
|||
|
inc eax
|
|||
|
inc ebx
|
|||
|
dec ecx
|
|||
|
dec edx
|
|||
|
|
|||
|
mov [x],eax
|
|||
|
mov [y],ebx
|
|||
|
mov esi,eax
|
|||
|
mov edi,ebx
|
|||
|
mov [Dx_],1
|
|||
|
mov [Dy_],1
|
|||
|
|
|||
|
sub ecx,eax
|
|||
|
jnz no_signum_fill_r_x
|
|||
|
|
|||
|
mov [Dx_],-1
|
|||
|
|
|||
|
no_signum_fill_r_x:
|
|||
|
|
|||
|
sub edx,ebx
|
|||
|
jnz no_signum_fill_r_y
|
|||
|
|
|||
|
mov [Dy_],-1
|
|||
|
|
|||
|
no_signum_fill_r_y:
|
|||
|
|
|||
|
mov [y],edi
|
|||
|
loop_fill_rectangle_y:
|
|||
|
|
|||
|
mov [x],esi
|
|||
|
loop_fill_rectangle_x:
|
|||
|
|
|||
|
push esi
|
|||
|
push edi
|
|||
|
|
|||
|
mov eax,[PointerToPicture]
|
|||
|
mov ebx,[Picture_SizeX]
|
|||
|
mov ecx,dword 0xffffff
|
|||
|
mov esi,[x]
|
|||
|
mov edi,[y]
|
|||
|
call PutPixel
|
|||
|
|
|||
|
pop edi
|
|||
|
pop esi
|
|||
|
|
|||
|
mov eax,[x]
|
|||
|
add eax,[Dx_]
|
|||
|
mov [x],eax
|
|||
|
|
|||
|
cmp eax,[rectangular_shade_x]
|
|||
|
jl loop_fill_rectangle_x
|
|||
|
|
|||
|
mov eax,[y]
|
|||
|
add eax,[Dy_]
|
|||
|
mov [y],eax
|
|||
|
|
|||
|
cmp eax,[rectangular_shade_y]
|
|||
|
jl loop_fill_rectangle_y
|
|||
|
|
|||
|
call MovePictureToWorkScreen
|
|||
|
|
|||
|
and [number_panel],0
|
|||
|
and [number_menu],0
|
|||
|
|
|||
|
jmp still
|
|||
|
no_cut:
|
|||
|
|
|||
|
;<<<<<<CLEARE ALL>>>>>>
|
|||
|
cmp [number_menu],5
|
|||
|
jne no_cleare_all
|
|||
|
|
|||
|
call cleare_work_arrea
|
|||
|
|
|||
|
call MovePictureToWorkScreen
|
|||
|
|
|||
|
and [number_panel],0
|
|||
|
and [number_menu],0
|
|||
|
|
|||
|
jmp still
|
|||
|
no_cleare_all:
|
|||
|
;<<<<<<TO ALLOCATE ALL>>>>>>
|
|||
|
|
|||
|
cmp [number_menu],6
|
|||
|
jne no_to_allocate_all
|
|||
|
|
|||
|
mov [OldX],1
|
|||
|
mov [OldY],1
|
|||
|
mov eax,[Picture_SizeX]
|
|||
|
mov ebx,[Picture_SizeY]
|
|||
|
dec eax
|
|||
|
dec ebx
|
|||
|
mov [rectangular_shade_x],eax
|
|||
|
mov [rectangular_shade_y],ebx
|
|||
|
mov [instrument_used],1
|
|||
|
mov [Activate_instrument],1
|
|||
|
mov [Current_instrument],30
|
|||
|
mov [crossing],0
|
|||
|
and [number_panel],0
|
|||
|
and [number_menu],0
|
|||
|
;call TakeButtonInstruments
|
|||
|
;call MovePictureToWorkScreen
|
|||
|
jmp still
|
|||
|
|
|||
|
no_to_allocate_all:
|
|||
|
|
|||
|
no_edit:
|
|||
|
|
|||
|
|
|||
|
jmp still
|
|||
|
|
|||
|
ret
|
|||
|
;-----------------------------------------------------------
|
|||
|
;-----instruments of panel(icon's instruments)--------------
|
|||
|
;-----------------------------------------------------------
|
|||
|
TakeButtonInstruments:
|
|||
|
|
|||
|
mov eax,[Current_instrument]
|
|||
|
|
|||
|
;*************************brush 1***********************
|
|||
|
cmp eax,10
|
|||
|
jne no_brush1
|
|||
|
|
|||
|
mov [Brush_SizeX],4
|
|||
|
mov [Brush_SizeY],4
|
|||
|
mov [Number_Brush],0
|
|||
|
mov [Current_instrument],18
|
|||
|
|
|||
|
jmp still
|
|||
|
no_brush1:
|
|||
|
|
|||
|
;*************************brush 2***********************
|
|||
|
cmp eax,11
|
|||
|
jne no_brush2
|
|||
|
|
|||
|
mov [Brush_SizeX],6
|
|||
|
mov [Brush_SizeY],4
|
|||
|
mov [Number_Brush],1
|
|||
|
mov [Current_instrument],18
|
|||
|
|
|||
|
jmp still
|
|||
|
no_brush2:
|
|||
|
|
|||
|
;*************************brush 3***********************
|
|||
|
cmp eax,12
|
|||
|
jne no_brush3
|
|||
|
|
|||
|
mov [Brush_SizeX],8
|
|||
|
mov [Brush_SizeY],7
|
|||
|
mov [Number_Brush],2
|
|||
|
mov [Current_instrument],18
|
|||
|
|
|||
|
jmp still
|
|||
|
no_brush3:
|
|||
|
|
|||
|
;************************brush 4************************
|
|||
|
cmp eax,13
|
|||
|
jne no_brush4
|
|||
|
|
|||
|
mov [Brush_SizeX],14
|
|||
|
mov [Brush_SizeY],14
|
|||
|
mov [Number_Brush],3
|
|||
|
mov [Current_instrument],18
|
|||
|
|
|||
|
jmp still
|
|||
|
no_brush4:
|
|||
|
|
|||
|
;************************brush 5************************
|
|||
|
cmp eax,14
|
|||
|
jne no_brush5
|
|||
|
|
|||
|
mov [Brush_SizeX],6
|
|||
|
mov [Brush_SizeY],6
|
|||
|
mov [Number_Brush],4
|
|||
|
mov [Current_instrument],18
|
|||
|
|
|||
|
jmp still
|
|||
|
no_brush5:
|
|||
|
|
|||
|
;*************************pensil************************
|
|||
|
cmp eax,15
|
|||
|
jne no_pensil
|
|||
|
|
|||
|
mov al,[exit_from_work_arrea]
|
|||
|
|
|||
|
test al,al
|
|||
|
jz no_exit_from_work_arrea
|
|||
|
|
|||
|
and [Activate_instrument],0
|
|||
|
and [exit_from_work_arrea],0
|
|||
|
|
|||
|
no_exit_from_work_arrea:
|
|||
|
|
|||
|
mov al,[Activate_instrument]
|
|||
|
|
|||
|
test al,al
|
|||
|
jnz no_activated_later
|
|||
|
|
|||
|
call GetScreenCordinats
|
|||
|
mov eax,[ScreenX]
|
|||
|
mov ebx,[ScreenY]
|
|||
|
add eax,[PosX]
|
|||
|
add ebx,[PosY]
|
|||
|
mov [OldX],eax
|
|||
|
mov [OldY],ebx
|
|||
|
|
|||
|
no_activated_later:
|
|||
|
|
|||
|
mov eax,[MaxWorkScreen_SizeX]
|
|||
|
mov ebx,[MaxWorkScreen_SizeY]
|
|||
|
|
|||
|
mov eax,[PointerToPicture]
|
|||
|
mov ebx,[ReserveArray]
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
mov edx,[OldX]
|
|||
|
shl edx,16
|
|||
|
add edx,[OldY]
|
|||
|
mov esi,[ScreenX]
|
|||
|
mov edi,[ScreenY]
|
|||
|
add esi,[PosX]
|
|||
|
add edi,[PosY]
|
|||
|
call calculate_line
|
|||
|
|
|||
|
mov ecx,eax
|
|||
|
mov edx,[Color]
|
|||
|
mov esi,[Color]
|
|||
|
shr edx,16
|
|||
|
xor ebx,ebx
|
|||
|
mov eax,[ReserveArray]
|
|||
|
|
|||
|
pensil_next_pixel_draw:
|
|||
|
|
|||
|
mov ebx,[eax]
|
|||
|
mov [ebx],si
|
|||
|
mov [ebx+2],dl
|
|||
|
add eax,4
|
|||
|
|
|||
|
dec ecx
|
|||
|
jnz pensil_next_pixel_draw
|
|||
|
|
|||
|
mov eax,[ScreenX]
|
|||
|
mov ebx,[ScreenY]
|
|||
|
add eax,[PosX]
|
|||
|
add ebx,[PosY]
|
|||
|
mov [OldX],eax
|
|||
|
mov [OldY],ebx
|
|||
|
|
|||
|
call MovePictureToWorkScreen
|
|||
|
mov [Activate_instrument],1
|
|||
|
jmp still
|
|||
|
no_pensil:
|
|||
|
|
|||
|
;**********************pipetka**************************
|
|||
|
cmp eax,16
|
|||
|
jne no_pipetka
|
|||
|
mov eax,[ScreenY]
|
|||
|
mov ebx,[Picture_SizeX]
|
|||
|
add eax,[PosY]
|
|||
|
imul eax,ebx
|
|||
|
add eax,[ScreenX]
|
|||
|
add eax,[PosX]
|
|||
|
lea eax,[eax+eax*2]
|
|||
|
add eax,[PointerToPicture]
|
|||
|
mov ebx,[eax]
|
|||
|
and ebx,0xffffff
|
|||
|
mov [Color],ebx
|
|||
|
mov eax,13
|
|||
|
mov ebx,447*65536+35
|
|||
|
mov ecx,42*65536+36
|
|||
|
mov edx,[Color]
|
|||
|
int 0x40
|
|||
|
jmp still
|
|||
|
no_pipetka:
|
|||
|
|
|||
|
;**********************draw brush***********************
|
|||
|
cmp eax,18
|
|||
|
jne no_brush
|
|||
|
|
|||
|
jmp no_lastik_
|
|||
|
|
|||
|
lastik_in:
|
|||
|
mov eax,[Color]
|
|||
|
mov [SColor],eax
|
|||
|
mov [Color],0xffffff
|
|||
|
no_lastik_:
|
|||
|
|
|||
|
mov eax,[ScreenX]
|
|||
|
mov ebx,[ScreenY]
|
|||
|
mov ecx,[Brush_SizeX]
|
|||
|
mov edx,[Brush_SizeY]
|
|||
|
add eax,[PosX]
|
|||
|
add ebx,[PosY]
|
|||
|
add eax,ecx
|
|||
|
add ebx,edx
|
|||
|
|
|||
|
cmp eax,[Picture_SizeX]
|
|||
|
jl no_max_pos_x
|
|||
|
mov eax,[Picture_SizeX]
|
|||
|
no_max_pos_x:
|
|||
|
|
|||
|
cmp ebx,[Picture_SizeY]
|
|||
|
jl no_max_pos_y
|
|||
|
mov ebx,[Picture_SizeY]
|
|||
|
no_max_pos_y:
|
|||
|
|
|||
|
cmp eax,ecx
|
|||
|
ja no_min_pos_x
|
|||
|
mov eax,[Brush_SizeX]
|
|||
|
no_min_pos_x:
|
|||
|
|
|||
|
cmp ebx,edx
|
|||
|
ja no_min_pos_y
|
|||
|
mov ebx,[Brush_SizeY]
|
|||
|
no_min_pos_y:
|
|||
|
|
|||
|
sub eax,[Brush_SizeX]
|
|||
|
sub ebx,[Brush_SizeY]
|
|||
|
|
|||
|
mov [x],eax
|
|||
|
mov [y],ebx
|
|||
|
|
|||
|
mov al,[exit_from_work_arrea]
|
|||
|
test al,al
|
|||
|
jz no_exit_from_work_arrea_brush
|
|||
|
and [Activate_instrument],0
|
|||
|
and [exit_from_work_arrea],0
|
|||
|
no_exit_from_work_arrea_brush:
|
|||
|
|
|||
|
mov al,[Activate_instrument]
|
|||
|
test al,al
|
|||
|
jnz no_new_brush_xy
|
|||
|
mov eax,[x]
|
|||
|
mov ebx,[y]
|
|||
|
mov [OldX],eax
|
|||
|
mov [OldY],ebx
|
|||
|
mov [Activate_instrument],1
|
|||
|
no_new_brush_xy:
|
|||
|
|
|||
|
mov eax,[PointerToPicture]
|
|||
|
mov ebx,[ReserveArray]
|
|||
|
add ebx,4
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
mov edx,[OldX]
|
|||
|
shl edx,16
|
|||
|
add edx,[OldY]
|
|||
|
mov esi,[x]
|
|||
|
mov edi,[y]
|
|||
|
|
|||
|
call calculate_line
|
|||
|
|
|||
|
mov ebx,[ReserveArray]
|
|||
|
mov [ebx],eax
|
|||
|
|
|||
|
;procedure drawing of brush
|
|||
|
mov ebx,[ReserveArray]
|
|||
|
mov ecx,[ebx]
|
|||
|
mov edx,[Color]
|
|||
|
mov esi,[Color]
|
|||
|
shr edx,16
|
|||
|
add ebx,4
|
|||
|
mov edi,[Number_Brush]
|
|||
|
imul edi,20*20
|
|||
|
|
|||
|
next_pixel_put_brush:
|
|||
|
|
|||
|
mov eax,[ebx]
|
|||
|
push eax
|
|||
|
push ecx
|
|||
|
xor ebp,ebp
|
|||
|
and [counter2],0
|
|||
|
|
|||
|
vertical_width_brush:
|
|||
|
and [counter],0
|
|||
|
|
|||
|
horizontal_width_brush:
|
|||
|
xor ecx,ecx
|
|||
|
mov cl,byte[Brush_color+edi+ebp]
|
|||
|
test cl,cl
|
|||
|
jz no_draw_pixel_brush
|
|||
|
mov [eax],si
|
|||
|
mov [eax+2],dl
|
|||
|
no_draw_pixel_brush:
|
|||
|
add eax,3
|
|||
|
inc ebp
|
|||
|
inc [counter]
|
|||
|
cmp [counter],20
|
|||
|
jne horizontal_width_brush
|
|||
|
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
sub ecx,20
|
|||
|
lea ecx,[ecx+ecx*2]
|
|||
|
add eax,ecx
|
|||
|
inc [counter2]
|
|||
|
cmp [counter2],20
|
|||
|
jne vertical_width_brush
|
|||
|
|
|||
|
pop ecx
|
|||
|
pop eax
|
|||
|
add ebx,4
|
|||
|
dec ecx
|
|||
|
jnz next_pixel_put_brush
|
|||
|
|
|||
|
mov eax,[x]
|
|||
|
mov ebx,[y]
|
|||
|
mov [OldX],eax
|
|||
|
mov [OldY],ebx
|
|||
|
|
|||
|
mov al,[lastik_is_active]
|
|||
|
test al,al
|
|||
|
jz no_lastik_active
|
|||
|
|
|||
|
mov eax,[SColor]
|
|||
|
mov [Color],eax
|
|||
|
and [lastik_is_active],0
|
|||
|
no_lastik_active:
|
|||
|
|
|||
|
call MovePictureToWorkScreen
|
|||
|
jmp still
|
|||
|
no_brush:
|
|||
|
|
|||
|
;************************Flood Fill*******************
|
|||
|
cmp eax,17
|
|||
|
jne no_FloodFill
|
|||
|
|
|||
|
mov eax,[PointerToPicture]
|
|||
|
mov ebx,[PointerToEditBufer]
|
|||
|
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
imul ecx,[Picture_SizeY]
|
|||
|
lea ecx,[ecx+ecx*2]
|
|||
|
shl ecx,1
|
|||
|
|
|||
|
cmp ecx,500000
|
|||
|
ja normal_size_of_bufer
|
|||
|
|
|||
|
mov ebx,[ReserveArray]
|
|||
|
|
|||
|
normal_size_of_bufer:
|
|||
|
|
|||
|
add ebx,4
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
mov edx,[ScreenX]
|
|||
|
add edx,[PosX]
|
|||
|
shl edx,16
|
|||
|
add edx,[ScreenY]
|
|||
|
add edx,[PosY]
|
|||
|
mov esi,[Picture_SizeX]
|
|||
|
dec esi
|
|||
|
shl esi,16
|
|||
|
add esi,[Picture_SizeY]
|
|||
|
dec esi
|
|||
|
mov edi,[Color]
|
|||
|
|
|||
|
call flood_fill
|
|||
|
call MovePictureToWorkScreen
|
|||
|
|
|||
|
jmp still
|
|||
|
no_FloodFill:
|
|||
|
|
|||
|
;************************lastik*************************
|
|||
|
cmp eax,19
|
|||
|
jne no_lastik
|
|||
|
|
|||
|
mov [lastik_is_active],1
|
|||
|
jmp lastik_in
|
|||
|
|
|||
|
no_lastik:
|
|||
|
|
|||
|
;******************************************************
|
|||
|
cmp eax,20
|
|||
|
jne no_spray
|
|||
|
|
|||
|
cmp [Activate_instrument],0
|
|||
|
jne no_null_spray
|
|||
|
mov [Activate_instrument],1
|
|||
|
jmp still
|
|||
|
no_null_spray:
|
|||
|
|
|||
|
mov eax,[ScreenX]
|
|||
|
mov ebx,[ScreenY]
|
|||
|
mov ecx,[Brush_SizeX]
|
|||
|
mov edx,[Brush_SizeY]
|
|||
|
add eax,[PosX]
|
|||
|
add ebx,[PosY]
|
|||
|
add eax,ecx
|
|||
|
add ebx,edx
|
|||
|
|
|||
|
cmp eax,[Picture_SizeX]
|
|||
|
jl no_max_pos_x_spray
|
|||
|
mov eax,[Picture_SizeX]
|
|||
|
no_max_pos_x_spray:
|
|||
|
|
|||
|
cmp ebx,[Picture_SizeY]
|
|||
|
jl no_max_pos_y_spray
|
|||
|
mov ebx,[Picture_SizeY]
|
|||
|
no_max_pos_y_spray:
|
|||
|
|
|||
|
cmp eax,ecx
|
|||
|
ja no_min_pos_x_spray
|
|||
|
mov eax,[Brush_SizeX]
|
|||
|
no_min_pos_x_spray:
|
|||
|
|
|||
|
cmp ebx,edx
|
|||
|
ja no_min_pos_y_spray
|
|||
|
mov ebx,[Brush_SizeY]
|
|||
|
no_min_pos_y_spray:
|
|||
|
|
|||
|
sub eax,[Brush_SizeX]
|
|||
|
sub ebx,[Brush_SizeY]
|
|||
|
mov edi,0;[Number_Brush]
|
|||
|
imul edi,20*20
|
|||
|
|
|||
|
mov [x],eax
|
|||
|
mov [y],ebx
|
|||
|
mov ebp,[Picture_SizeX]
|
|||
|
xor edx,edx
|
|||
|
brush_y_spray:
|
|||
|
xor ecx,ecx
|
|||
|
brush_x_spray:
|
|||
|
;calculate position in array of spray
|
|||
|
mov esi,edx
|
|||
|
lea esi,[esi+esi*4] ;esi=esi*5
|
|||
|
shl esi,2 ;esi=(esi*3)*4
|
|||
|
add esi,ecx
|
|||
|
add esi,edi
|
|||
|
;read byte from array
|
|||
|
xor eax,eax
|
|||
|
mov al,[Spray_color+esi]
|
|||
|
test eax,eax
|
|||
|
jz no_color_spray
|
|||
|
mov eax,[x]
|
|||
|
mov ebx,[y]
|
|||
|
add eax,ecx
|
|||
|
add ebx,edx
|
|||
|
imul ebx,ebp; ebp=[Picture_SizeX]
|
|||
|
add eax,ebx
|
|||
|
lea eax,[eax+eax*2]
|
|||
|
add eax,[PointerToPicture]
|
|||
|
mov ebx,[Color]
|
|||
|
mov [eax],bx
|
|||
|
shr ebx,16
|
|||
|
mov [eax+2],bl
|
|||
|
no_color_spray:
|
|||
|
inc ecx
|
|||
|
cmp ecx,20
|
|||
|
jl brush_x_spray
|
|||
|
inc edx
|
|||
|
cmp edx,20
|
|||
|
jl brush_y_spray
|
|||
|
|
|||
|
call MovePictureToWorkScreen
|
|||
|
jmp still
|
|||
|
|
|||
|
no_spray:
|
|||
|
|
|||
|
;***********************palette*************************
|
|||
|
cmp eax,21
|
|||
|
jne no_palette
|
|||
|
|
|||
|
mov eax,20
|
|||
|
mov ebx,100
|
|||
|
mov ecx,32*10+32*5+7
|
|||
|
mov edx,8*10+7*10
|
|||
|
mov esi,1
|
|||
|
call draw_volume_rectangle
|
|||
|
mov [x],20+5
|
|||
|
mov [y],100+10
|
|||
|
mov edi,256
|
|||
|
xor esi,esi
|
|||
|
next_rectangle:
|
|||
|
mov eax,13
|
|||
|
mov ebx,[x]
|
|||
|
mov ecx,[y]
|
|||
|
mov edx,[palitra+esi]
|
|||
|
and edx,0xffffff
|
|||
|
shl ebx,16
|
|||
|
shl ecx,16
|
|||
|
add ebx,13
|
|||
|
add ecx,13
|
|||
|
int 0x40
|
|||
|
add [x],15
|
|||
|
cmp [x],20+15*32
|
|||
|
jl no_new_line
|
|||
|
mov [x],20+5
|
|||
|
add [y],15
|
|||
|
no_new_line:
|
|||
|
add esi,4
|
|||
|
dec edi
|
|||
|
jnz next_rectangle
|
|||
|
|
|||
|
wait_events:
|
|||
|
call event
|
|||
|
|
|||
|
cmp eax,1
|
|||
|
je still
|
|||
|
cmp eax,2
|
|||
|
jne no_keys
|
|||
|
mov eax,2
|
|||
|
int 0x40
|
|||
|
no_keys:
|
|||
|
cmp eax,3
|
|||
|
jne no_buttons
|
|||
|
mov eax,17
|
|||
|
int 0x40
|
|||
|
no_buttons:
|
|||
|
cmp eax,6
|
|||
|
jne wait_events
|
|||
|
|
|||
|
call GetMouseClick
|
|||
|
|
|||
|
test eax,eax
|
|||
|
jz wait_events
|
|||
|
call GetMouseCoordinats
|
|||
|
mov [x],20+5
|
|||
|
mov [y],100+10
|
|||
|
mov [counter],0
|
|||
|
next_rectangle_column:
|
|||
|
mov eax,[x]
|
|||
|
mov ebx,[y]
|
|||
|
mov ecx,[MouseX]
|
|||
|
mov edx,[MouseY]
|
|||
|
mov esi,13
|
|||
|
mov edi,13
|
|||
|
call columnus
|
|||
|
test eax,eax
|
|||
|
jz no_columnus_color
|
|||
|
mov eax,[counter]
|
|||
|
shl eax,2
|
|||
|
mov ebx,[palitra+eax]
|
|||
|
and ebx,0xffffff
|
|||
|
mov [Color],ebx
|
|||
|
no_columnus_color:
|
|||
|
add [x],15
|
|||
|
cmp [x],20+15*32
|
|||
|
jl no_new_line_column
|
|||
|
mov [x],20+5
|
|||
|
add [y],15
|
|||
|
no_new_line_column:
|
|||
|
inc [counter]
|
|||
|
cmp [counter],257
|
|||
|
jne next_rectangle_column
|
|||
|
mov eax,5
|
|||
|
mov ebx,10
|
|||
|
int 0x40
|
|||
|
call drawwin
|
|||
|
and [Current_instrument],0
|
|||
|
jmp still
|
|||
|
no_palette:
|
|||
|
|
|||
|
;************************draw line**********************
|
|||
|
cmp eax,22
|
|||
|
jne no_line
|
|||
|
|
|||
|
mov al,[Activate_instrument]
|
|||
|
test al,al
|
|||
|
jnz no_new_line_xy
|
|||
|
mov eax,[ScreenX]
|
|||
|
mov ebx,[ScreenY]
|
|||
|
add eax,[PosX]
|
|||
|
add ebx,[PosY]
|
|||
|
mov [OldX],eax
|
|||
|
mov [OldY],ebx
|
|||
|
mov [Activate_instrument],1
|
|||
|
mov eax,[ReserveArray]
|
|||
|
mov ecx,60000
|
|||
|
clear_array_line:
|
|||
|
mov [eax],dword 0
|
|||
|
add eax,4
|
|||
|
dec ecx
|
|||
|
jnz clear_array_line
|
|||
|
jmp still
|
|||
|
no_new_line_xy:
|
|||
|
|
|||
|
;put saved pixels
|
|||
|
mov ebx,[ReserveArray]
|
|||
|
mov eax,[ebx]
|
|||
|
test eax,eax
|
|||
|
jz no_put_line_to_screen_line
|
|||
|
mov ecx,[ebx]
|
|||
|
add ebx,4
|
|||
|
xor ebp,ebp
|
|||
|
next_color_put_line:
|
|||
|
;put saved pixels in ReserveArray
|
|||
|
push ecx
|
|||
|
and [counter2],0
|
|||
|
mov edi,[ebx]
|
|||
|
push edi
|
|||
|
vertical_width_put:
|
|||
|
and [counter],0
|
|||
|
|
|||
|
horizontal_width_put:
|
|||
|
mov edx,[ebx+4807*4+ebp]
|
|||
|
and edx,0xffffff
|
|||
|
mov [edi],dx
|
|||
|
shr edx,16
|
|||
|
mov [edi+2],dl
|
|||
|
|
|||
|
add edi,3
|
|||
|
add ebp,4
|
|||
|
inc [counter]
|
|||
|
cmp [counter],5
|
|||
|
jne horizontal_width_put
|
|||
|
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
sub ecx,5
|
|||
|
lea ecx,[ecx+ecx*2]
|
|||
|
add edi,ecx
|
|||
|
inc [counter2]
|
|||
|
cmp [counter2],5
|
|||
|
jne vertical_width_put
|
|||
|
pop edi
|
|||
|
pop ecx
|
|||
|
add ebx,4
|
|||
|
dec ecx
|
|||
|
jnz next_color_put_line
|
|||
|
|
|||
|
no_put_line_to_screen_line:
|
|||
|
|
|||
|
;calculate line
|
|||
|
mov ebx,[ReserveArray]
|
|||
|
add ebx,4
|
|||
|
mov eax,[PointerToPicture]
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
mov edx,[OldX]
|
|||
|
shl edx,16
|
|||
|
add edx,[OldY]
|
|||
|
mov esi,[ScreenX]
|
|||
|
mov edi,[ScreenY]
|
|||
|
add esi,[PosX]
|
|||
|
add edi,[PosY]
|
|||
|
|
|||
|
mov ebp,[Picture_SizeX]
|
|||
|
sub ebp,[line_width]
|
|||
|
cmp esi,ebp
|
|||
|
jl no_minimum_x_line
|
|||
|
mov esi,ebp
|
|||
|
no_minimum_x_line:
|
|||
|
|
|||
|
mov ebp,[Picture_SizeY]
|
|||
|
sub ebp,[line_width]
|
|||
|
cmp edi,ebp
|
|||
|
jl no_minimum_y_line
|
|||
|
mov edi,ebp
|
|||
|
no_minimum_y_line:
|
|||
|
|
|||
|
call calculate_line
|
|||
|
;call calculate_rectangle
|
|||
|
mov [counter],eax
|
|||
|
|
|||
|
;save color pixels in ReserveArray
|
|||
|
mov eax,[counter]
|
|||
|
mov ebx,[ReserveArray]
|
|||
|
mov [ebx],eax
|
|||
|
|
|||
|
mov ecx,[ebx]
|
|||
|
add ebx,4
|
|||
|
|
|||
|
xor ebp,ebp
|
|||
|
next_color_save_line:
|
|||
|
;save color of pixel in ReserveArray
|
|||
|
push ecx
|
|||
|
and [counter2],0
|
|||
|
mov edi,[ebx]
|
|||
|
vertical_width_save:
|
|||
|
and [counter],0
|
|||
|
|
|||
|
horizontal_width_save:
|
|||
|
mov eax,edi
|
|||
|
mov edx,[eax]
|
|||
|
and edx,0xffffff
|
|||
|
mov [ebx+4807*4+ebp],dx
|
|||
|
shr edx,16
|
|||
|
mov [ebx+4807*4+2+ebp],dl
|
|||
|
|
|||
|
add edi,3
|
|||
|
add ebp,4
|
|||
|
inc [counter]
|
|||
|
cmp [counter],5
|
|||
|
jne horizontal_width_save
|
|||
|
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
sub ecx,5
|
|||
|
lea ecx,[ecx+ecx*2]
|
|||
|
add edi,ecx
|
|||
|
inc [counter2]
|
|||
|
cmp [counter2],5
|
|||
|
jne vertical_width_save
|
|||
|
pop ecx
|
|||
|
add ebx,4
|
|||
|
dec ecx
|
|||
|
jnz next_color_save_line
|
|||
|
|
|||
|
;draw calculated pixels on work arrea
|
|||
|
mov ebx,[ReserveArray]
|
|||
|
mov ecx,[ebx]
|
|||
|
mov edx,[Color]
|
|||
|
mov esi,[Color]
|
|||
|
shr edx,16
|
|||
|
add ebx,4
|
|||
|
mov edi,[line_width]
|
|||
|
dec edi
|
|||
|
imul edi,25
|
|||
|
next_pixel_put_line:
|
|||
|
|
|||
|
mov eax,[ebx]
|
|||
|
push eax
|
|||
|
push ecx
|
|||
|
xor ebp,ebp
|
|||
|
and [counter2],0
|
|||
|
|
|||
|
vertical_width:
|
|||
|
and [counter],0
|
|||
|
|
|||
|
horizontal_width:
|
|||
|
xor ecx,ecx
|
|||
|
mov cl,byte[width_pixels+edi+ebp]
|
|||
|
test cl,cl
|
|||
|
jz no_draw_pixel_line
|
|||
|
mov [eax],si
|
|||
|
mov [eax+2],dl
|
|||
|
no_draw_pixel_line:
|
|||
|
add eax,3
|
|||
|
inc ebp
|
|||
|
inc [counter]
|
|||
|
cmp [counter],5
|
|||
|
jne horizontal_width
|
|||
|
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
sub ecx,5
|
|||
|
lea ecx,[ecx+ecx*2]
|
|||
|
add eax,ecx
|
|||
|
inc [counter2]
|
|||
|
cmp [counter2],5
|
|||
|
jne vertical_width
|
|||
|
|
|||
|
pop ecx
|
|||
|
pop eax
|
|||
|
add ebx,4
|
|||
|
dec ecx
|
|||
|
jnz next_pixel_put_line
|
|||
|
|
|||
|
call MovePictureToWorkScreen
|
|||
|
|
|||
|
jmp still
|
|||
|
no_line:
|
|||
|
|
|||
|
;*********************************DRAW RECTANGLE****************************
|
|||
|
cmp eax,23
|
|||
|
jne no_rectangle
|
|||
|
|
|||
|
mov al,[Activate_instrument]
|
|||
|
test al,al
|
|||
|
jnz no_new_rectangle_xy
|
|||
|
mov eax,[ScreenX]
|
|||
|
mov ebx,[ScreenY]
|
|||
|
add eax,[PosX]
|
|||
|
add ebx,[PosY]
|
|||
|
mov [OldX],eax
|
|||
|
mov [OldY],ebx
|
|||
|
mov [Activate_instrument],1
|
|||
|
mov eax,[ReserveArray]
|
|||
|
mov ecx,60000
|
|||
|
clear_array_rectangle:
|
|||
|
mov [eax],dword 0
|
|||
|
add eax,4
|
|||
|
dec ecx
|
|||
|
jnz clear_array_rectangle
|
|||
|
jmp still
|
|||
|
no_new_rectangle_xy:
|
|||
|
|
|||
|
;put saved pixels
|
|||
|
mov ebx,[ReserveArray]
|
|||
|
mov eax,[ebx]
|
|||
|
test eax,eax
|
|||
|
jz no_put_rectangle_to_screen_line
|
|||
|
mov ecx,[ebx]
|
|||
|
add ebx,4
|
|||
|
xor ebp,ebp
|
|||
|
next_color_put_rectangle:
|
|||
|
;put saved pixels in ReserveArray
|
|||
|
push ecx
|
|||
|
and [counter2],0
|
|||
|
mov edi,[ebx]
|
|||
|
push edi
|
|||
|
vertical_width_put_rectangle:
|
|||
|
and [counter],0
|
|||
|
|
|||
|
horizontal_width_put_rectangle:
|
|||
|
mov edx,[ebx+4807*4+ebp]
|
|||
|
and edx,0xffffff
|
|||
|
mov [edi],dx
|
|||
|
shr edx,16
|
|||
|
mov [edi+2],dl
|
|||
|
|
|||
|
add edi,3
|
|||
|
add ebp,4
|
|||
|
inc [counter]
|
|||
|
cmp [counter],5
|
|||
|
jne horizontal_width_put_rectangle
|
|||
|
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
sub ecx,5
|
|||
|
lea ecx,[ecx+ecx*2]
|
|||
|
add edi,ecx
|
|||
|
inc [counter2]
|
|||
|
cmp [counter2],5
|
|||
|
jne vertical_width_put_rectangle
|
|||
|
pop edi
|
|||
|
pop ecx
|
|||
|
add ebx,4
|
|||
|
dec ecx
|
|||
|
jnz next_color_put_rectangle
|
|||
|
|
|||
|
no_put_rectangle_to_screen_line:
|
|||
|
|
|||
|
;calculate line
|
|||
|
mov ebx,[ReserveArray]
|
|||
|
add ebx,4
|
|||
|
mov eax,[PointerToPicture]
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
mov edx,[OldX]
|
|||
|
shl edx,16
|
|||
|
add edx,[OldY]
|
|||
|
mov esi,[ScreenX]
|
|||
|
mov edi,[ScreenY]
|
|||
|
add esi,[PosX]
|
|||
|
add edi,[PosY]
|
|||
|
|
|||
|
mov ebp,[Picture_SizeX]
|
|||
|
sub ebp,[line_width]
|
|||
|
cmp esi,ebp
|
|||
|
jl no_minimum_x_rectangle
|
|||
|
mov esi,ebp
|
|||
|
no_minimum_x_rectangle:
|
|||
|
|
|||
|
mov ebp,[Picture_SizeY]
|
|||
|
sub ebp,[line_width]
|
|||
|
cmp edi,ebp
|
|||
|
jl no_minimum_y_rectangle
|
|||
|
mov edi,ebp
|
|||
|
no_minimum_y_rectangle:
|
|||
|
|
|||
|
call calculate_rectangle
|
|||
|
mov [counter],eax
|
|||
|
|
|||
|
;save color pixels in ReserveArray
|
|||
|
mov eax,[counter]
|
|||
|
mov ebx,[ReserveArray]
|
|||
|
mov [ebx],eax
|
|||
|
|
|||
|
mov ecx,[ebx]
|
|||
|
add ebx,4
|
|||
|
|
|||
|
xor ebp,ebp
|
|||
|
next_color_save_rectangle:
|
|||
|
;save color of pixel in ReserveArray
|
|||
|
push ecx
|
|||
|
and [counter2],0
|
|||
|
mov edi,[ebx]
|
|||
|
vertical_width_save_rectangle:
|
|||
|
and [counter],0
|
|||
|
|
|||
|
horizontal_width_save_rectangle:
|
|||
|
mov eax,edi
|
|||
|
mov edx,[eax]
|
|||
|
and edx,0xffffff
|
|||
|
mov [ebx+4807*4+ebp],dx
|
|||
|
shr edx,16
|
|||
|
mov [ebx+4807*4+2+ebp],dl
|
|||
|
|
|||
|
add edi,3
|
|||
|
add ebp,4
|
|||
|
inc [counter]
|
|||
|
cmp [counter],5
|
|||
|
jne horizontal_width_save_rectangle
|
|||
|
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
sub ecx,5
|
|||
|
lea ecx,[ecx+ecx*2]
|
|||
|
add edi,ecx
|
|||
|
inc [counter2]
|
|||
|
cmp [counter2],5
|
|||
|
jne vertical_width_save_rectangle
|
|||
|
pop ecx
|
|||
|
add ebx,4
|
|||
|
dec ecx
|
|||
|
jnz next_color_save_rectangle
|
|||
|
|
|||
|
;draw calculated pixels on work arrea
|
|||
|
mov ebx,[ReserveArray]
|
|||
|
mov ecx,[ebx]
|
|||
|
mov edx,[Color]
|
|||
|
mov esi,[Color]
|
|||
|
shr edx,16
|
|||
|
add ebx,4
|
|||
|
mov edi,[line_width]
|
|||
|
dec edi
|
|||
|
imul edi,25
|
|||
|
next_pixel_put_rectangle:
|
|||
|
|
|||
|
mov eax,[ebx]
|
|||
|
push eax
|
|||
|
push ecx
|
|||
|
xor ebp,ebp
|
|||
|
and [counter2],0
|
|||
|
|
|||
|
vertical_width_rectangle:
|
|||
|
and [counter],0
|
|||
|
|
|||
|
horizontal_width_rectangle:
|
|||
|
xor ecx,ecx
|
|||
|
mov cl,byte[width_pixels_rectangle+edi+ebp]
|
|||
|
test cl,cl
|
|||
|
jz no_draw_pixel_rectangle
|
|||
|
mov [eax],si
|
|||
|
mov [eax+2],dl
|
|||
|
no_draw_pixel_rectangle:
|
|||
|
add eax,3
|
|||
|
inc ebp
|
|||
|
inc [counter]
|
|||
|
cmp [counter],5
|
|||
|
jne horizontal_width_rectangle
|
|||
|
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
sub ecx,5
|
|||
|
lea ecx,[ecx+ecx*2]
|
|||
|
add eax,ecx
|
|||
|
inc [counter2]
|
|||
|
cmp [counter2],5
|
|||
|
jne vertical_width_rectangle
|
|||
|
|
|||
|
pop ecx
|
|||
|
pop eax
|
|||
|
add ebx,4
|
|||
|
dec ecx
|
|||
|
jnz next_pixel_put_rectangle
|
|||
|
|
|||
|
call MovePictureToWorkScreen
|
|||
|
jmp still
|
|||
|
no_rectangle:
|
|||
|
|
|||
|
;*********************************DRAW CIRCLE****************************
|
|||
|
cmp eax,24
|
|||
|
jne no_circle
|
|||
|
|
|||
|
mov al,[Activate_instrument]
|
|||
|
test al,al
|
|||
|
jnz no_new_circle_xy
|
|||
|
mov eax,[ScreenX]
|
|||
|
mov ebx,[ScreenY]
|
|||
|
add eax,[PosX]
|
|||
|
add ebx,[PosY]
|
|||
|
mov [OldX],eax
|
|||
|
mov [OldY],ebx
|
|||
|
mov [Activate_instrument],1
|
|||
|
mov eax,[ReserveArray]
|
|||
|
mov ecx,60000
|
|||
|
clear_array_circle:
|
|||
|
mov [eax],dword 0
|
|||
|
add eax,4
|
|||
|
dec ecx
|
|||
|
jnz clear_array_circle
|
|||
|
jmp still
|
|||
|
no_new_circle_xy:
|
|||
|
|
|||
|
;put saved pixels
|
|||
|
mov ebx,[ReserveArray]
|
|||
|
mov eax,[ebx]
|
|||
|
test eax,eax
|
|||
|
jz no_put_line_to_screen_circle
|
|||
|
mov ecx,[ebx]
|
|||
|
add ebx,4
|
|||
|
xor ebp,ebp
|
|||
|
next_color_put_circle:
|
|||
|
;put saved pixels in ReserveArray
|
|||
|
push ecx
|
|||
|
and [counter2],0
|
|||
|
mov edi,[ebx]
|
|||
|
push edi
|
|||
|
vertical_width_put_circle:
|
|||
|
and [counter],0
|
|||
|
|
|||
|
horizontal_width_put_circle:
|
|||
|
mov edx,[ebx+4807*4+ebp]
|
|||
|
and edx,0xffffff
|
|||
|
mov [edi],dx
|
|||
|
shr edx,16
|
|||
|
mov [edi+2],dl
|
|||
|
|
|||
|
add edi,3
|
|||
|
add ebp,4
|
|||
|
inc [counter]
|
|||
|
cmp [counter],5
|
|||
|
jne horizontal_width_put_circle
|
|||
|
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
sub ecx,5
|
|||
|
lea ecx,[ecx+ecx*2]
|
|||
|
add edi,ecx
|
|||
|
inc [counter2]
|
|||
|
cmp [counter2],5
|
|||
|
jne vertical_width_put_circle
|
|||
|
pop edi
|
|||
|
pop ecx
|
|||
|
add ebx,4
|
|||
|
dec ecx
|
|||
|
jnz next_color_put_circle
|
|||
|
|
|||
|
no_put_line_to_screen_circle:
|
|||
|
|
|||
|
mov esi,[ScreenX]
|
|||
|
mov edi,[ScreenY]
|
|||
|
add esi,[PosX]
|
|||
|
add edi,[PosY]
|
|||
|
|
|||
|
sub esi,[OldX]
|
|||
|
jns no_sign_x_circle
|
|||
|
neg esi
|
|||
|
shr esi,1
|
|||
|
neg esi
|
|||
|
add esi,[OldX]
|
|||
|
jmp no_plus_sign_x_circle
|
|||
|
no_sign_x_circle:
|
|||
|
|
|||
|
shr esi,1
|
|||
|
add esi,[OldX]
|
|||
|
no_plus_sign_x_circle:
|
|||
|
|
|||
|
sub edi,[OldY]
|
|||
|
jns no_sign_y_circle
|
|||
|
neg edi
|
|||
|
shr edi,1
|
|||
|
neg edi
|
|||
|
add edi,[OldY]
|
|||
|
jmp no_plus_sign_y_circle
|
|||
|
no_sign_y_circle:
|
|||
|
|
|||
|
shr edi,1
|
|||
|
add edi,[OldY]
|
|||
|
no_plus_sign_y_circle:
|
|||
|
|
|||
|
mov [x],esi
|
|||
|
mov [y],edi
|
|||
|
|
|||
|
mov esi,[ScreenX]
|
|||
|
mov edi,[ScreenY]
|
|||
|
add esi,[PosX]
|
|||
|
add edi,[PosY]
|
|||
|
|
|||
|
sub esi,[OldX]
|
|||
|
jns no_sign_x_circle_r
|
|||
|
neg esi
|
|||
|
no_sign_x_circle_r:
|
|||
|
|
|||
|
sub edi,[OldY]
|
|||
|
jns no_sign_y_circle_r
|
|||
|
neg edi
|
|||
|
no_sign_y_circle_r:
|
|||
|
|
|||
|
mov [Dx_],esi
|
|||
|
mov [Dy_],edi
|
|||
|
|
|||
|
;finit
|
|||
|
fild [Dx_]
|
|||
|
fmul st0,st0
|
|||
|
fild [Dy_]
|
|||
|
fmul st0,st0
|
|||
|
fadd st0,st1
|
|||
|
fsqrt
|
|||
|
fistp [Radius]
|
|||
|
fistp [Icon_X]
|
|||
|
mov esi,[Radius]
|
|||
|
shr esi,1
|
|||
|
cmp esi,0
|
|||
|
jne no_null_radius
|
|||
|
mov [Radius],1
|
|||
|
no_null_radius:
|
|||
|
|
|||
|
mov [Radius],esi
|
|||
|
|
|||
|
mov edi,[x]
|
|||
|
mov ebp,[y]
|
|||
|
add edi,esi
|
|||
|
add ebp,esi
|
|||
|
|
|||
|
mov edx,[Picture_SizeX]
|
|||
|
sub edx,[line_width]
|
|||
|
cmp edi,edx
|
|||
|
jl no_limit_x_circle
|
|||
|
sub edi,edx
|
|||
|
sub [Radius],edi
|
|||
|
no_limit_x_circle:
|
|||
|
|
|||
|
mov edx,[Picture_SizeY]
|
|||
|
sub edx,[line_width]
|
|||
|
cmp ebp,edx
|
|||
|
jl no_limit_y_circle
|
|||
|
sub ebp,edx
|
|||
|
sub [Radius],ebp
|
|||
|
no_limit_y_circle:
|
|||
|
|
|||
|
|
|||
|
mov edi,[x]
|
|||
|
mov ebp,[y]
|
|||
|
|
|||
|
sub edi,[Radius]
|
|||
|
jns no_minimum_x_circle
|
|||
|
add [Radius],edi
|
|||
|
no_minimum_x_circle:
|
|||
|
|
|||
|
sub ebp,[Radius]
|
|||
|
jns no_minimum_y_circle
|
|||
|
add [Radius],ebp
|
|||
|
no_minimum_y_circle:
|
|||
|
|
|||
|
;calculate circle
|
|||
|
mov ebx,[ReserveArray]
|
|||
|
add ebx,4
|
|||
|
mov eax,[PointerToPicture]
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
mov edx,[x]
|
|||
|
shl edx,16
|
|||
|
add edx,[y]
|
|||
|
mov esi,[Radius]
|
|||
|
call calculate_circle
|
|||
|
|
|||
|
mov [counter],eax
|
|||
|
|
|||
|
;save color pixels in ReserveArray
|
|||
|
mov eax,[counter]
|
|||
|
mov ebx,[ReserveArray]
|
|||
|
mov [ebx],eax
|
|||
|
|
|||
|
mov ecx,[ebx]
|
|||
|
add ebx,4
|
|||
|
|
|||
|
xor ebp,ebp
|
|||
|
next_color_save_circle:
|
|||
|
;save color of pixel in ReserveArray
|
|||
|
push ecx
|
|||
|
and [counter2],0
|
|||
|
mov edi,[ebx]
|
|||
|
vertical_width_save_circle:
|
|||
|
and [counter],0
|
|||
|
|
|||
|
horizontal_width_save_circle:
|
|||
|
mov eax,edi
|
|||
|
mov edx,[eax]
|
|||
|
and edx,0xffffff
|
|||
|
mov [ebx+4807*4+ebp],dx
|
|||
|
shr edx,16
|
|||
|
mov [ebx+4807*4+2+ebp],dl
|
|||
|
|
|||
|
add edi,3
|
|||
|
add ebp,4
|
|||
|
inc [counter]
|
|||
|
cmp [counter],5
|
|||
|
jne horizontal_width_save_circle
|
|||
|
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
sub ecx,5
|
|||
|
lea ecx,[ecx+ecx*2]
|
|||
|
add edi,ecx
|
|||
|
inc [counter2]
|
|||
|
cmp [counter2],5
|
|||
|
jne vertical_width_save_circle
|
|||
|
pop ecx
|
|||
|
add ebx,4
|
|||
|
dec ecx
|
|||
|
jnz next_color_save_circle
|
|||
|
|
|||
|
;draw calculated pixels on work arrea
|
|||
|
mov ebx,[ReserveArray]
|
|||
|
mov ecx,[ebx]
|
|||
|
mov edx,[Color]
|
|||
|
mov esi,[Color]
|
|||
|
shr edx,16
|
|||
|
add ebx,4
|
|||
|
mov edi,[line_width]
|
|||
|
dec edi
|
|||
|
imul edi,25
|
|||
|
next_pixel_put_circle:
|
|||
|
|
|||
|
mov eax,[ebx]
|
|||
|
push eax
|
|||
|
push ecx
|
|||
|
xor ebp,ebp
|
|||
|
and [counter2],0
|
|||
|
|
|||
|
vertical_width_circle:
|
|||
|
and [counter],0
|
|||
|
|
|||
|
horizontal_width_circle:
|
|||
|
xor ecx,ecx
|
|||
|
mov cl,byte[width_pixels+edi+ebp]
|
|||
|
test cl,cl
|
|||
|
jz no_draw_pixel_circle
|
|||
|
mov [eax],si
|
|||
|
mov [eax+2],dl
|
|||
|
no_draw_pixel_circle:
|
|||
|
add eax,3
|
|||
|
inc ebp
|
|||
|
inc [counter]
|
|||
|
cmp [counter],5
|
|||
|
jne horizontal_width_circle
|
|||
|
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
sub ecx,5
|
|||
|
lea ecx,[ecx+ecx*2]
|
|||
|
add eax,ecx
|
|||
|
inc [counter2]
|
|||
|
cmp [counter2],5
|
|||
|
jne vertical_width_circle
|
|||
|
|
|||
|
pop ecx
|
|||
|
pop eax
|
|||
|
add ebx,4
|
|||
|
dec ecx
|
|||
|
jnz next_pixel_put_circle
|
|||
|
|
|||
|
call MovePictureToWorkScreen
|
|||
|
jmp still
|
|||
|
no_circle:
|
|||
|
|
|||
|
;************************zoom 1*************************
|
|||
|
cmp eax,25
|
|||
|
jne no_1_
|
|||
|
mov [k],1
|
|||
|
mov [Scroll1CoordinatX],9
|
|||
|
mov [Scroll2CoordinatY],85
|
|||
|
and [Current_instrument],0
|
|||
|
call drawwin
|
|||
|
jmp still
|
|||
|
no_1_:
|
|||
|
|
|||
|
;*************************zoom 2************************
|
|||
|
cmp eax,26
|
|||
|
jne no_2_
|
|||
|
mov [k],2
|
|||
|
call drawwin
|
|||
|
mov [Scroll1CoordinatX],9
|
|||
|
mov [Scroll2CoordinatY],85
|
|||
|
and [Current_instrument],0
|
|||
|
jmp still
|
|||
|
no_2_:
|
|||
|
|
|||
|
;*************************zoom 4************************
|
|||
|
cmp eax,27
|
|||
|
jne no_4_
|
|||
|
mov [k],4
|
|||
|
call drawwin
|
|||
|
mov [Scroll1CoordinatX],9
|
|||
|
mov [Scroll2CoordinatY],85
|
|||
|
and [Current_instrument],0
|
|||
|
jmp still
|
|||
|
no_4_:
|
|||
|
|
|||
|
;************************zoom 8*************************
|
|||
|
cmp eax,28
|
|||
|
jne no_8_
|
|||
|
mov [k],8
|
|||
|
call drawwin
|
|||
|
mov [Scroll1CoordinatX],9
|
|||
|
mov [Scroll2CoordinatY],85
|
|||
|
and [Current_instrument],0
|
|||
|
jmp still
|
|||
|
no_8_:
|
|||
|
|
|||
|
;************************zoom 16************************
|
|||
|
cmp eax,29
|
|||
|
jne no_16_
|
|||
|
mov [k],16
|
|||
|
call drawwin
|
|||
|
mov [Scroll1CoordinatX],9
|
|||
|
mov [Scroll2CoordinatY],85
|
|||
|
and [Current_instrument],0
|
|||
|
jmp still
|
|||
|
no_16_:
|
|||
|
|
|||
|
;***************allocation of a countour*********************
|
|||
|
cmp eax,30
|
|||
|
jne no_allocation
|
|||
|
|
|||
|
cmp [instrument_used],0
|
|||
|
jnz instrument_not_finished_work
|
|||
|
|
|||
|
mov al,[Activate_instrument]
|
|||
|
test al,al
|
|||
|
jnz no_new_allocation_xy
|
|||
|
mov eax,[ScreenX]
|
|||
|
mov ebx,[ScreenY]
|
|||
|
add eax,[PosX]
|
|||
|
add ebx,[PosY]
|
|||
|
mov [OldX],eax
|
|||
|
mov [OldY],ebx
|
|||
|
inc eax
|
|||
|
inc ebx
|
|||
|
mov [rectangular_shade_x],eax
|
|||
|
mov [rectangular_shade_y],ebx
|
|||
|
mov [Activate_instrument],1
|
|||
|
mov [instrument_used],1
|
|||
|
and [crossing],0
|
|||
|
and [finishing_crossing],0
|
|||
|
mov eax,[ReserveArray]
|
|||
|
mov ecx,60000
|
|||
|
clear_array_allocation:
|
|||
|
mov [eax],dword 0
|
|||
|
add eax,4
|
|||
|
dec ecx
|
|||
|
jnz clear_array_allocation
|
|||
|
jmp still
|
|||
|
no_new_allocation_xy:
|
|||
|
instrument_not_finished_work:
|
|||
|
|
|||
|
mov al,[instrument_used]
|
|||
|
test al,al
|
|||
|
jz no_change_coordinats
|
|||
|
|
|||
|
cmp [Activate_instrument],0
|
|||
|
jnz no_change_coordinats
|
|||
|
|
|||
|
;save coordinates as old if crossing=0
|
|||
|
cmp [crossing],0
|
|||
|
jnz no_save_coordinate_of_crossing
|
|||
|
|
|||
|
mov eax,[OldX]
|
|||
|
mov ebx,[OldY]
|
|||
|
|
|||
|
cmp eax,[rectangular_shade_x]
|
|||
|
jl no_remove_x
|
|||
|
mov ecx,[rectangular_shade_x]
|
|||
|
mov [OldX],ecx ; OldX <-----> rectangulare_shade_x
|
|||
|
mov [rectangular_shade_x],eax
|
|||
|
no_remove_x:
|
|||
|
|
|||
|
cmp ebx,[rectangular_shade_y]
|
|||
|
jl no_remove_y
|
|||
|
mov ecx,[rectangular_shade_y]
|
|||
|
mov [OldY],ecx ; OldY <-----> rectangulare_shade_y
|
|||
|
mov [rectangular_shade_y],ebx
|
|||
|
no_remove_y:
|
|||
|
|
|||
|
mov eax,[ScreenX]
|
|||
|
mov ebx,[ScreenY]
|
|||
|
add eax,[PosX]
|
|||
|
add ebx,[PosY]
|
|||
|
mov [crossing_old_x],eax
|
|||
|
mov [crossing_old_y],ebx
|
|||
|
mov [crossing],1
|
|||
|
|
|||
|
|
|||
|
mov eax,[OldX]
|
|||
|
mov ebx,[OldY]
|
|||
|
inc eax
|
|||
|
inc ebx
|
|||
|
mov [SpriteCoordinatX],eax
|
|||
|
mov [SpriteCoordinatY],ebx
|
|||
|
mov [SpriteOldCoordinatX],eax
|
|||
|
mov [SpriteOldCoordinatY],ebx
|
|||
|
mov esi,[rectangular_shade_x]
|
|||
|
mov edi,[rectangular_shade_y]
|
|||
|
|
|||
|
sub esi,eax
|
|||
|
jns no_sign_sprite_size_x
|
|||
|
neg esi
|
|||
|
no_sign_sprite_size_x:
|
|||
|
|
|||
|
sub edi,ebx
|
|||
|
jns no_sign_sprite_size_y
|
|||
|
neg edi
|
|||
|
no_sign_sprite_size_y:
|
|||
|
|
|||
|
test esi,esi
|
|||
|
jnz no_null_sprite_x
|
|||
|
mov esi,1
|
|||
|
no_null_sprite_x:
|
|||
|
|
|||
|
test edi,edi
|
|||
|
jnz no_null_sprite_y
|
|||
|
mov edi,1
|
|||
|
no_null_sprite_y:
|
|||
|
|
|||
|
mov [SpriteSizeX],esi
|
|||
|
mov [SpriteSizeY],edi
|
|||
|
|
|||
|
call SaveFonForSprite
|
|||
|
|
|||
|
no_save_coordinate_of_crossing:
|
|||
|
|
|||
|
cmp [crossing],0
|
|||
|
je no_test_crossing_with_work_arrea
|
|||
|
;if mouse situatad after allocation than exit
|
|||
|
push [ScreenX]
|
|||
|
push [ScreenY]
|
|||
|
|
|||
|
call GetScreenCordinats
|
|||
|
|
|||
|
mov eax,[OldX]
|
|||
|
mov ebx,[OldY]
|
|||
|
mov ecx,[ScreenX]
|
|||
|
mov edx,[ScreenY]
|
|||
|
mov esi,[SpriteSizeX]
|
|||
|
mov edi,[SpriteSizeY]
|
|||
|
add ecx,[PosX]
|
|||
|
add edx,[PosY]
|
|||
|
inc esi;eax
|
|||
|
inc edi;ebx
|
|||
|
call columnus
|
|||
|
|
|||
|
test eax,eax
|
|||
|
jnz crossing_with_work_area
|
|||
|
mov [finishing_crossing],1
|
|||
|
mov [register],1
|
|||
|
crossing_with_work_area:
|
|||
|
|
|||
|
pop [ScreenY]
|
|||
|
pop [ScreenX]
|
|||
|
|
|||
|
no_test_crossing_with_work_arrea:
|
|||
|
|
|||
|
mov eax,[ScreenX]
|
|||
|
mov ebx,[ScreenY]
|
|||
|
add eax,[PosX]
|
|||
|
add ebx,[PosY]
|
|||
|
mov ecx,eax
|
|||
|
mov edx,ebx
|
|||
|
sub eax,[crossing_old_x] ;dx=(x-oldx)
|
|||
|
sub ebx,[crossing_old_y] ;dy=(y-oldy)
|
|||
|
mov [crossing_old_x],ecx
|
|||
|
mov [crossing_old_y],edx
|
|||
|
|
|||
|
add [OldX],eax ;x1=x1+dx
|
|||
|
add [OldY],ebx ;y1=y1+dy
|
|||
|
add [rectangular_shade_x],eax ;x2=x2+dx
|
|||
|
add [rectangular_shade_y],ebx ;y2+y2+dy
|
|||
|
|
|||
|
mov eax,[OldX]
|
|||
|
mov ebx,[OldY]
|
|||
|
inc eax
|
|||
|
inc ebx
|
|||
|
mov [SpriteCoordinatX],eax
|
|||
|
mov [SpriteCoordinatY],ebx
|
|||
|
|
|||
|
cmp [SpriteCoordinatX],0
|
|||
|
jns no_null_sprite_coordinat_x
|
|||
|
mov [SpriteCoordinatX],1
|
|||
|
no_null_sprite_coordinat_x:
|
|||
|
|
|||
|
cmp [SpriteCoordinatY],0
|
|||
|
jns no_null_sprite_coordinat_y
|
|||
|
mov [SpriteCoordinatY],1
|
|||
|
no_null_sprite_coordinat_y:
|
|||
|
|
|||
|
mov esi,[rectangular_shade_x]
|
|||
|
mov edi,[rectangular_shade_y]
|
|||
|
|
|||
|
sub esi,[OldX]
|
|||
|
jns no_znak_size_of_rectangulare_crossing_x
|
|||
|
neg esi
|
|||
|
no_znak_size_of_rectangulare_crossing_x:
|
|||
|
|
|||
|
sub edi,[OldY]
|
|||
|
jns no_znak_size_of_rectangulare_crossing_y
|
|||
|
neg edi
|
|||
|
no_znak_size_of_rectangulare_crossing_y:
|
|||
|
|
|||
|
mov ecx,[OldX]
|
|||
|
mov edx,[OldY]
|
|||
|
|
|||
|
sub ecx,[PosX]
|
|||
|
jns no_minimum_x_crossing
|
|||
|
mov ecx,0
|
|||
|
add ecx,[PosX]
|
|||
|
mov [OldX],ecx
|
|||
|
add ecx,esi
|
|||
|
mov [rectangular_shade_x],ecx
|
|||
|
no_minimum_x_crossing:
|
|||
|
|
|||
|
sub edx,[PosY]
|
|||
|
jns no_minimum_y_crossing
|
|||
|
mov edx,0
|
|||
|
add edx,[PosY]
|
|||
|
mov [OldY],edx
|
|||
|
add edx,edi
|
|||
|
mov [rectangular_shade_y],edx
|
|||
|
no_minimum_y_crossing:
|
|||
|
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
sub ecx,esi
|
|||
|
cmp [OldX],ecx
|
|||
|
jl no_maximum_x_crossing
|
|||
|
dec ecx
|
|||
|
mov [OldX],ecx
|
|||
|
add ecx,esi
|
|||
|
mov [rectangular_shade_x],ecx
|
|||
|
no_maximum_x_crossing:
|
|||
|
|
|||
|
mov edx,[Picture_SizeY]
|
|||
|
sub edx,edi
|
|||
|
cmp [OldY],edx
|
|||
|
jl no_maximum_y_crossing
|
|||
|
dec edx
|
|||
|
mov [OldY],edx
|
|||
|
add edx,edi
|
|||
|
mov [rectangular_shade_y],edx
|
|||
|
no_maximum_y_crossing:
|
|||
|
|
|||
|
mov eax,[rectangular_shade_x]
|
|||
|
mov ebx,[rectangular_shade_y]
|
|||
|
sub eax,[PosX]
|
|||
|
sub ebx,[PosY]
|
|||
|
mov [ScreenX],eax
|
|||
|
mov [ScreenY],ebx
|
|||
|
no_change_coordinats:
|
|||
|
|
|||
|
;put saved pixels
|
|||
|
mov ebx,[ReserveArray]
|
|||
|
mov eax,[ebx]
|
|||
|
test eax,eax
|
|||
|
jz no_put_line_to_screen_allocation
|
|||
|
mov ecx,[ebx]
|
|||
|
add ebx,4
|
|||
|
xor ebp,ebp
|
|||
|
next_color_put_allocation:
|
|||
|
;put saved pixels in ReserveArray
|
|||
|
push ecx
|
|||
|
and [counter2],0
|
|||
|
mov edi,[ebx]
|
|||
|
push edi
|
|||
|
vertical_width_put_allocation:
|
|||
|
and [counter],0
|
|||
|
|
|||
|
horizontal_width_put_allocation:
|
|||
|
mov edx,[ebx+4807*4+ebp]
|
|||
|
and edx,0xffffff
|
|||
|
mov [edi],dx
|
|||
|
shr edx,16
|
|||
|
mov [edi+2],dl
|
|||
|
|
|||
|
add edi,3
|
|||
|
add ebp,4
|
|||
|
inc [counter]
|
|||
|
cmp [counter],1;5
|
|||
|
jne horizontal_width_put_allocation
|
|||
|
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
sub ecx,1;5
|
|||
|
lea ecx,[ecx+ecx*2]
|
|||
|
add edi,ecx
|
|||
|
inc [counter2]
|
|||
|
cmp [counter2],1;5
|
|||
|
jne vertical_width_put_allocation
|
|||
|
pop edi
|
|||
|
pop ecx
|
|||
|
add ebx,4
|
|||
|
dec ecx
|
|||
|
jnz next_color_put_allocation
|
|||
|
|
|||
|
no_put_line_to_screen_allocation:
|
|||
|
|
|||
|
cmp [DrawSprite_flag],1
|
|||
|
jne no_activate_put_fon_
|
|||
|
|
|||
|
cmp [Paste_flag],1
|
|||
|
je no_put_fon___
|
|||
|
call PutFonForSprite
|
|||
|
no_put_fon___:
|
|||
|
and [Paste_flag],0
|
|||
|
no_activate_put_fon_:
|
|||
|
|
|||
|
cmp [finishing_crossing],0
|
|||
|
jz not_finish_from_instrument_crossing
|
|||
|
and [Activate_instrument],0
|
|||
|
and [crossing],0
|
|||
|
and [instrument_used],0
|
|||
|
and [DrawSprite_flag],0
|
|||
|
call MovePictureToWorkScreen
|
|||
|
jmp still
|
|||
|
not_finish_from_instrument_crossing:
|
|||
|
|
|||
|
;calculate line
|
|||
|
mov ebx,[ReserveArray]
|
|||
|
add ebx,4
|
|||
|
mov eax,[PointerToPicture]
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
mov edx,[OldX]
|
|||
|
shl edx,16
|
|||
|
add edx,[OldY]
|
|||
|
mov esi,[ScreenX]
|
|||
|
mov edi,[ScreenY]
|
|||
|
add esi,[PosX]
|
|||
|
add edi,[PosY]
|
|||
|
|
|||
|
mov ebp,[Picture_SizeX]
|
|||
|
dec ebp
|
|||
|
cmp esi,ebp
|
|||
|
jl no_minimum_x_allocation
|
|||
|
mov esi,ebp
|
|||
|
no_minimum_x_allocation:
|
|||
|
|
|||
|
mov ebp,[Picture_SizeY]
|
|||
|
dec ebp
|
|||
|
cmp edi,ebp
|
|||
|
jl no_minimum_y_allocation
|
|||
|
mov edi,ebp
|
|||
|
no_minimum_y_allocation:
|
|||
|
|
|||
|
call calculate_rectangle
|
|||
|
mov [counter],eax
|
|||
|
|
|||
|
;save color pixels in ReserveArray
|
|||
|
mov eax,[counter]
|
|||
|
mov ebx,[ReserveArray]
|
|||
|
mov [ebx],eax
|
|||
|
|
|||
|
mov ecx,[ebx]
|
|||
|
add ebx,4
|
|||
|
|
|||
|
xor ebp,ebp
|
|||
|
next_color_save_allocation:
|
|||
|
;save color of pixel in ReserveArray
|
|||
|
push ecx
|
|||
|
and [counter2],0
|
|||
|
mov edi,[ebx]
|
|||
|
vertical_width_save_allocation:
|
|||
|
and [counter],0
|
|||
|
|
|||
|
horizontal_width_save_allocation:
|
|||
|
mov eax,edi
|
|||
|
mov edx,[eax]
|
|||
|
and edx,0xffffff
|
|||
|
mov [ebx+4807*4+ebp],dx
|
|||
|
shr edx,16
|
|||
|
mov [ebx+4807*4+2+ebp],dl
|
|||
|
|
|||
|
add edi,3
|
|||
|
add ebp,4
|
|||
|
inc [counter]
|
|||
|
cmp [counter],1;5
|
|||
|
jne horizontal_width_save_allocation
|
|||
|
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
sub ecx,1;5
|
|||
|
lea ecx,[ecx+ecx*2]
|
|||
|
add edi,ecx
|
|||
|
inc [counter2]
|
|||
|
cmp [counter2],1;5
|
|||
|
jne vertical_width_save_allocation
|
|||
|
pop ecx
|
|||
|
add ebx,4
|
|||
|
dec ecx
|
|||
|
jnz next_color_save_allocation
|
|||
|
|
|||
|
cmp [DrawSprite_flag],1
|
|||
|
jne no_save_fon_for_sprite_
|
|||
|
;save current coordinats as old
|
|||
|
mov eax,[SpriteCoordinatX]
|
|||
|
mov ebx,[SpriteCoordinatY]
|
|||
|
mov [SpriteOldCoordinatX],eax
|
|||
|
mov [SpriteOldCoordinatY],ebx
|
|||
|
|
|||
|
call SaveFonForSprite
|
|||
|
|
|||
|
no_save_fon_for_sprite_:
|
|||
|
|
|||
|
;draw calculated pixels on work arrea
|
|||
|
mov ebx,[ReserveArray]
|
|||
|
mov ecx,[ebx]
|
|||
|
add ebx,4
|
|||
|
next_pixel_put_allocation:
|
|||
|
|
|||
|
mov edx,0x1f3fff
|
|||
|
mov esi,edx
|
|||
|
shr edx,16
|
|||
|
|
|||
|
mov ebp,ecx
|
|||
|
and ebp,8
|
|||
|
cmp ebp,8
|
|||
|
jne black_color
|
|||
|
mov si,0xffff
|
|||
|
mov dl,0xff
|
|||
|
black_color:
|
|||
|
|
|||
|
mov eax,[ebx]
|
|||
|
mov [eax],si
|
|||
|
mov [eax+2],dl
|
|||
|
|
|||
|
add ebx,4
|
|||
|
dec ecx
|
|||
|
jnz next_pixel_put_allocation
|
|||
|
|
|||
|
cmp [DrawSprite_flag],1
|
|||
|
jne no_activate_draw_sprite_
|
|||
|
|
|||
|
call DrawSprite
|
|||
|
|
|||
|
no_activate_draw_sprite_:
|
|||
|
|
|||
|
mov al,[instrument_used]
|
|||
|
test al,al
|
|||
|
jz no_change_coordinats
|
|||
|
cmp [Activate_instrument],0
|
|||
|
jz no_save_shades
|
|||
|
mov eax,[ScreenX]
|
|||
|
mov ebx,[ScreenY]
|
|||
|
add eax,[PosX]
|
|||
|
add ebx,[PosY]
|
|||
|
mov [rectangular_shade_x],eax
|
|||
|
mov [rectangular_shade_y],ebx
|
|||
|
no_save_shades:
|
|||
|
|
|||
|
call MovePictureToWorkScreen
|
|||
|
jmp still
|
|||
|
no_allocation:
|
|||
|
|
|||
|
;*************reflection from left to right******************
|
|||
|
cmp eax,35
|
|||
|
jne no_reflection_from_left_to_right
|
|||
|
|
|||
|
mov ebp,[PointerToPicture]
|
|||
|
mov edx,[ReserveArray]
|
|||
|
mov esi,[Picture_SizeX]
|
|||
|
mov ebx,[Picture_SizeX]
|
|||
|
lea ebx,[ebx+ebx*2]
|
|||
|
shr esi,1
|
|||
|
next_line_reflection_x:
|
|||
|
;copy vertical line to array
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
shr ecx,1
|
|||
|
sub ecx,esi
|
|||
|
lea ecx,[ecx+ecx*2]
|
|||
|
add ecx,[PointerToPicture]
|
|||
|
mov edx,[ReserveArray]
|
|||
|
and edi,0
|
|||
|
copy_to_array_line_reflection_y:
|
|||
|
xor eax,eax
|
|||
|
mov eax,[ecx]
|
|||
|
mov ebp,edi
|
|||
|
lea ebp,[ebp+ebp*2]
|
|||
|
mov [edx+ebp],ax
|
|||
|
shr eax,16
|
|||
|
mov [edx+ebp+2],al
|
|||
|
add ecx,ebx
|
|||
|
inc edi
|
|||
|
cmp edi,[Picture_SizeY]
|
|||
|
jne copy_to_array_line_reflection_y
|
|||
|
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
shr ecx,1
|
|||
|
mov ebp,ecx
|
|||
|
add ecx,esi
|
|||
|
dec ecx
|
|||
|
lea ecx,[ecx+ecx*2]
|
|||
|
add ecx,[PointerToPicture]
|
|||
|
sub ebp,esi
|
|||
|
lea ebp,[ebp+ebp*2]
|
|||
|
add ebp,[PointerToPicture]
|
|||
|
and edi,0
|
|||
|
next_line_reflection_y:
|
|||
|
mov eax,[ecx]
|
|||
|
and eax,0xffffff
|
|||
|
mov [ebp],ax
|
|||
|
shr eax,16
|
|||
|
mov [ebp+2],al
|
|||
|
add ebp,ebx
|
|||
|
add ecx,ebx
|
|||
|
inc edi
|
|||
|
cmp edi,[Picture_SizeY]
|
|||
|
jnz next_line_reflection_y
|
|||
|
|
|||
|
;copy vertical line from array to screen
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
shr ecx,1
|
|||
|
add ecx,esi
|
|||
|
dec ecx
|
|||
|
lea ecx,[ecx+ecx*2]
|
|||
|
add ecx,[PointerToPicture]
|
|||
|
mov edx,[ReserveArray]
|
|||
|
and edi,0
|
|||
|
copy_from_array_to_screen_reflection_y:
|
|||
|
mov ebp,edi
|
|||
|
lea ebp,[ebp+ebp*2]
|
|||
|
xor eax,eax
|
|||
|
mov eax,[edx+ebp]
|
|||
|
mov [ecx],ax
|
|||
|
shr eax,16
|
|||
|
mov [ecx+2],al
|
|||
|
add ecx,ebx
|
|||
|
inc edi
|
|||
|
cmp edi,[Picture_SizeY]
|
|||
|
jne copy_from_array_to_screen_reflection_y
|
|||
|
|
|||
|
dec esi
|
|||
|
jnz next_line_reflection_x
|
|||
|
|
|||
|
call MovePictureToWorkScreen
|
|||
|
jmp still
|
|||
|
no_reflection_from_left_to_right:
|
|||
|
|
|||
|
;*************reflection from up to down******************
|
|||
|
cmp eax,36
|
|||
|
jne no_reflection_from_up_to_down
|
|||
|
mov esi,[Picture_SizeX]
|
|||
|
mov edi,esi
|
|||
|
lea esi,[esi+esi*2]
|
|||
|
lea edi,[edi+edi*2]
|
|||
|
imul edi,[Picture_SizeY]
|
|||
|
mov edx,[ReserveArray]
|
|||
|
mov ecx,[Picture_SizeY]
|
|||
|
shr ecx,1
|
|||
|
add edi,[PointerToPicture]
|
|||
|
sub edi,esi
|
|||
|
mov ebp,[PointerToPicture]
|
|||
|
next_lines_reflection:
|
|||
|
;copy line
|
|||
|
xor ebx,ebx
|
|||
|
copy_line_1:
|
|||
|
xor eax,eax
|
|||
|
mov al,[edi+ebx]
|
|||
|
mov [edx+ebx],al
|
|||
|
inc ebx
|
|||
|
cmp ebx,esi
|
|||
|
jne copy_line_1
|
|||
|
|
|||
|
xor ebx,ebx
|
|||
|
copy_line_2:
|
|||
|
xor eax,eax
|
|||
|
mov al,[ebp+ebx]
|
|||
|
mov [edi+ebx],al
|
|||
|
inc ebx
|
|||
|
cmp ebx,esi
|
|||
|
jne copy_line_2
|
|||
|
|
|||
|
xor ebx,ebx
|
|||
|
copy_line_3:
|
|||
|
xor eax,eax
|
|||
|
mov al,[edx+ebx]
|
|||
|
mov [ebp+ebx],al
|
|||
|
inc ebx
|
|||
|
cmp ebx,esi
|
|||
|
jne copy_line_3
|
|||
|
|
|||
|
add ebp,esi
|
|||
|
sub edi,esi
|
|||
|
dec ecx
|
|||
|
jnz next_lines_reflection
|
|||
|
|
|||
|
call MovePictureToWorkScreen
|
|||
|
jmp still
|
|||
|
no_reflection_from_up_to_down:
|
|||
|
|
|||
|
;*********************draw hard contour*******************
|
|||
|
cmp eax,38
|
|||
|
jne no_kontur_
|
|||
|
|
|||
|
mov al,[Activate_instrument]
|
|||
|
test al,al
|
|||
|
jnz no_new_konture_xy
|
|||
|
|
|||
|
mov al,[instrument_used]
|
|||
|
test al,al
|
|||
|
jz instrument_not_used
|
|||
|
mov eax,[used_OldX]
|
|||
|
mov ebx,[used_OldY]
|
|||
|
mov [OldX],eax
|
|||
|
mov [OldY],ebx
|
|||
|
jmp exit_used_instrument
|
|||
|
instrument_not_used:
|
|||
|
|
|||
|
mov eax,[ScreenX]
|
|||
|
mov ebx,[ScreenY]
|
|||
|
add eax,[PosX]
|
|||
|
add ebx,[PosY]
|
|||
|
mov [OldX],eax
|
|||
|
mov [OldY],ebx
|
|||
|
exit_used_instrument:
|
|||
|
|
|||
|
mov al,[instrument_used]
|
|||
|
test al,al
|
|||
|
jnz instrument_used_true
|
|||
|
mov [instrument_used],byte 1
|
|||
|
instrument_used_true:
|
|||
|
|
|||
|
mov [Activate_instrument],1
|
|||
|
mov eax,[ReserveArray]
|
|||
|
mov ecx,60000
|
|||
|
clear_array_konture:
|
|||
|
mov [eax],dword 0
|
|||
|
add eax,4
|
|||
|
dec ecx
|
|||
|
jnz clear_array_line
|
|||
|
|
|||
|
no_new_konture_xy:
|
|||
|
|
|||
|
;put saved pixels
|
|||
|
mov ebx,[ReserveArray]
|
|||
|
mov eax,[ebx]
|
|||
|
test eax,eax
|
|||
|
jz no_put_line_to_screen_konture
|
|||
|
mov ecx,[ebx]
|
|||
|
add ebx,4
|
|||
|
xor ebp,ebp
|
|||
|
next_color_put_konture:
|
|||
|
;put saved pixels in ReserveArray
|
|||
|
push ecx
|
|||
|
and [counter2],0
|
|||
|
mov edi,[ebx]
|
|||
|
push edi
|
|||
|
vertical_width_put_konture:
|
|||
|
and [counter],0
|
|||
|
|
|||
|
horizontal_width_put_konture:
|
|||
|
mov edx,[ebx+4807*4+ebp]
|
|||
|
and edx,0xffffff
|
|||
|
mov [edi],dx
|
|||
|
shr edx,16
|
|||
|
mov [edi+2],dl
|
|||
|
|
|||
|
add edi,3
|
|||
|
add ebp,4
|
|||
|
inc [counter]
|
|||
|
cmp [counter],5
|
|||
|
jne horizontal_width_put_konture
|
|||
|
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
sub ecx,5
|
|||
|
lea ecx,[ecx+ecx*2]
|
|||
|
add edi,ecx
|
|||
|
inc [counter2]
|
|||
|
cmp [counter2],5
|
|||
|
jne vertical_width_put_konture
|
|||
|
pop edi
|
|||
|
pop ecx
|
|||
|
add ebx,4
|
|||
|
dec ecx
|
|||
|
jnz next_color_put_konture
|
|||
|
|
|||
|
no_put_line_to_screen_konture:
|
|||
|
|
|||
|
;calculate line
|
|||
|
mov ebx,[ReserveArray]
|
|||
|
add ebx,4
|
|||
|
mov eax,[PointerToPicture]
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
mov edx,[OldX]
|
|||
|
shl edx,16
|
|||
|
add edx,[OldY]
|
|||
|
mov esi,[ScreenX]
|
|||
|
mov edi,[ScreenY]
|
|||
|
add esi,[PosX]
|
|||
|
add edi,[PosY]
|
|||
|
|
|||
|
mov ebp,[Picture_SizeX]
|
|||
|
sub ebp,[line_width]
|
|||
|
cmp esi,ebp
|
|||
|
jl no_minimum_x_konture
|
|||
|
mov esi,ebp
|
|||
|
no_minimum_x_konture:
|
|||
|
|
|||
|
mov ebp,[Picture_SizeY]
|
|||
|
sub ebp,[line_width]
|
|||
|
cmp edi,ebp
|
|||
|
jl no_minimum_y_konture
|
|||
|
mov edi,ebp
|
|||
|
no_minimum_y_konture:
|
|||
|
|
|||
|
call calculate_line
|
|||
|
;call calculate_rectangle
|
|||
|
mov [counter],eax
|
|||
|
|
|||
|
;save color pixels in ReserveArray
|
|||
|
mov eax,[counter]
|
|||
|
mov ebx,[ReserveArray]
|
|||
|
mov [ebx],eax
|
|||
|
|
|||
|
mov ecx,[ebx]
|
|||
|
add ebx,4
|
|||
|
|
|||
|
xor ebp,ebp
|
|||
|
next_color_save_konture:
|
|||
|
;save color of pixel in ReserveArray
|
|||
|
push ecx
|
|||
|
and [counter2],0
|
|||
|
mov edi,[ebx]
|
|||
|
vertical_width_save_konture:
|
|||
|
and [counter],0
|
|||
|
|
|||
|
horizontal_width_save_konture:
|
|||
|
mov eax,edi
|
|||
|
mov edx,[eax]
|
|||
|
and edx,0xffffff
|
|||
|
mov [ebx+4807*4+ebp],dx
|
|||
|
shr edx,16
|
|||
|
mov [ebx+4807*4+2+ebp],dl
|
|||
|
|
|||
|
add edi,3
|
|||
|
add ebp,4
|
|||
|
inc [counter]
|
|||
|
cmp [counter],5
|
|||
|
jne horizontal_width_save_konture
|
|||
|
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
sub ecx,5
|
|||
|
lea ecx,[ecx+ecx*2]
|
|||
|
add edi,ecx
|
|||
|
inc [counter2]
|
|||
|
cmp [counter2],5
|
|||
|
jne vertical_width_save_konture
|
|||
|
pop ecx
|
|||
|
add ebx,4
|
|||
|
dec ecx
|
|||
|
jnz next_color_save_konture
|
|||
|
|
|||
|
;draw calculated pixels on work arrea
|
|||
|
mov ebx,[ReserveArray]
|
|||
|
mov ecx,[ebx]
|
|||
|
mov edx,[Color]
|
|||
|
mov esi,[Color]
|
|||
|
shr edx,16
|
|||
|
add ebx,4
|
|||
|
mov edi,[line_width]
|
|||
|
dec edi
|
|||
|
imul edi,25
|
|||
|
next_pixel_put_konture:
|
|||
|
|
|||
|
mov eax,[ebx]
|
|||
|
push eax
|
|||
|
push ecx
|
|||
|
xor ebp,ebp
|
|||
|
and [counter2],0
|
|||
|
|
|||
|
vertical_width_konture:
|
|||
|
and [counter],0
|
|||
|
|
|||
|
horizontal_width_konture:
|
|||
|
xor ecx,ecx
|
|||
|
mov cl,byte[width_pixels+edi+ebp]
|
|||
|
test cl,cl
|
|||
|
jz no_draw_pixel_konture
|
|||
|
mov [eax],si
|
|||
|
mov [eax+2],dl
|
|||
|
no_draw_pixel_konture:
|
|||
|
add eax,3
|
|||
|
inc ebp
|
|||
|
inc [counter]
|
|||
|
cmp [counter],5
|
|||
|
jne horizontal_width_konture
|
|||
|
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
sub ecx,5
|
|||
|
lea ecx,[ecx+ecx*2]
|
|||
|
add eax,ecx
|
|||
|
inc [counter2]
|
|||
|
cmp [counter2],5
|
|||
|
jne vertical_width_konture
|
|||
|
|
|||
|
pop ecx
|
|||
|
pop eax
|
|||
|
add ebx,4
|
|||
|
dec ecx
|
|||
|
jnz next_pixel_put_konture
|
|||
|
|
|||
|
mov eax,[ScreenX]
|
|||
|
mov ebx,[ScreenY]
|
|||
|
add eax,[PosX]
|
|||
|
add ebx,[PosY]
|
|||
|
mov [used_OldX],eax
|
|||
|
mov [used_OldY],ebx
|
|||
|
|
|||
|
call MovePictureToWorkScreen
|
|||
|
|
|||
|
jmp still
|
|||
|
|
|||
|
no_kontur_:
|
|||
|
;************************Draw ellips***********************
|
|||
|
cmp eax,39
|
|||
|
jne no_ellips
|
|||
|
|
|||
|
mov al,[Activate_instrument]
|
|||
|
test al,al
|
|||
|
jnz no_new_ellips_xy
|
|||
|
mov eax,[ScreenX]
|
|||
|
mov ebx,[ScreenY]
|
|||
|
add eax,[PosX]
|
|||
|
add ebx,[PosY]
|
|||
|
mov [OldX],eax
|
|||
|
mov [OldY],ebx
|
|||
|
mov [Activate_instrument],1
|
|||
|
mov eax,[ReserveArray]
|
|||
|
mov ecx,60000
|
|||
|
clear_array_ellips:
|
|||
|
mov [eax],dword 0
|
|||
|
add eax,4
|
|||
|
dec ecx
|
|||
|
jnz clear_array_ellips
|
|||
|
jmp still
|
|||
|
no_new_ellips_xy:
|
|||
|
|
|||
|
;put saved pixels
|
|||
|
mov ebx,[ReserveArray]
|
|||
|
mov eax,[ebx]
|
|||
|
test eax,eax
|
|||
|
jz no_put_line_to_screen_ellips
|
|||
|
mov ecx,[ebx]
|
|||
|
add ebx,4
|
|||
|
xor ebp,ebp
|
|||
|
next_color_put_ellips:
|
|||
|
;put saved pixels in ReserveArray
|
|||
|
push ecx
|
|||
|
and [counter2],0
|
|||
|
mov edi,[ebx]
|
|||
|
push edi
|
|||
|
vertical_width_put_ellips:
|
|||
|
and [counter],0
|
|||
|
|
|||
|
horizontal_width_put_ellips:
|
|||
|
mov edx,[ebx+4807*4+ebp]
|
|||
|
and edx,0xffffff
|
|||
|
mov [edi],dx
|
|||
|
shr edx,16
|
|||
|
mov [edi+2],dl
|
|||
|
|
|||
|
add edi,3
|
|||
|
add ebp,4
|
|||
|
inc [counter]
|
|||
|
cmp [counter],5
|
|||
|
jne horizontal_width_put_ellips
|
|||
|
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
sub ecx,5
|
|||
|
lea ecx,[ecx+ecx*2]
|
|||
|
add edi,ecx
|
|||
|
inc [counter2]
|
|||
|
cmp [counter2],5
|
|||
|
jne vertical_width_put_ellips
|
|||
|
pop edi
|
|||
|
pop ecx
|
|||
|
add ebx,4
|
|||
|
dec ecx
|
|||
|
jnz next_color_put_ellips
|
|||
|
|
|||
|
no_put_line_to_screen_ellips:
|
|||
|
|
|||
|
mov esi,[ScreenX]
|
|||
|
mov edi,[ScreenY]
|
|||
|
add esi,[PosX]
|
|||
|
add edi,[PosY]
|
|||
|
|
|||
|
sub esi,[OldX]
|
|||
|
jns no_sign_x_ellips
|
|||
|
neg esi
|
|||
|
shr esi,1
|
|||
|
neg esi
|
|||
|
add esi,[OldX]
|
|||
|
jmp no_plus_sign_x_ellips
|
|||
|
no_sign_x_ellips:
|
|||
|
|
|||
|
shr esi,1
|
|||
|
add esi,[OldX]
|
|||
|
no_plus_sign_x_ellips:
|
|||
|
|
|||
|
sub edi,[OldY]
|
|||
|
jns no_sign_y_ellips
|
|||
|
neg edi
|
|||
|
shr edi,1
|
|||
|
neg edi
|
|||
|
add edi,[OldY]
|
|||
|
jmp no_plus_sign_y_ellips
|
|||
|
no_sign_y_ellips:
|
|||
|
|
|||
|
shr edi,1
|
|||
|
add edi,[OldY]
|
|||
|
no_plus_sign_y_ellips:
|
|||
|
|
|||
|
mov [x],esi
|
|||
|
mov [y],edi
|
|||
|
|
|||
|
mov esi,[ScreenX]
|
|||
|
mov edi,[ScreenY]
|
|||
|
add esi,[PosX]
|
|||
|
add edi,[PosY]
|
|||
|
|
|||
|
sub esi,[OldX]
|
|||
|
jns no_sign_x_ellips_r
|
|||
|
neg esi
|
|||
|
no_sign_x_ellips_r:
|
|||
|
|
|||
|
sub edi,[OldY]
|
|||
|
jns no_sign_y_ellips_r
|
|||
|
neg edi
|
|||
|
no_sign_y_ellips_r:
|
|||
|
|
|||
|
cmp edi,0
|
|||
|
jnz no_null_a_ellips
|
|||
|
mov edi,1
|
|||
|
no_null_a_ellips:
|
|||
|
|
|||
|
shr esi,1
|
|||
|
shr edi,1
|
|||
|
mov [a_ellips],esi
|
|||
|
mov [b_ellips],edi
|
|||
|
|
|||
|
mov edi,[x]
|
|||
|
mov ebp,[y]
|
|||
|
add edi,esi
|
|||
|
add ebp,esi
|
|||
|
|
|||
|
mov edx,[Picture_SizeX]
|
|||
|
sub edx,[line_width]
|
|||
|
cmp edi,edx
|
|||
|
jl no_limit_x_ellips
|
|||
|
sub edi,edx
|
|||
|
sub [a_ellips],edi
|
|||
|
no_limit_x_ellips:
|
|||
|
|
|||
|
mov edx,[Picture_SizeY]
|
|||
|
sub edx,[line_width]
|
|||
|
cmp ebp,edx
|
|||
|
jl no_limit_y_ellips
|
|||
|
sub ebp,edx
|
|||
|
sub [b_ellips],ebp
|
|||
|
no_limit_y_ellips:
|
|||
|
|
|||
|
|
|||
|
mov edi,[x]
|
|||
|
mov ebp,[y]
|
|||
|
|
|||
|
sub edi,[a_ellips]
|
|||
|
jns no_minimum_x_ellips
|
|||
|
add [a_ellips],edi
|
|||
|
no_minimum_x_ellips:
|
|||
|
|
|||
|
sub ebp,[b_ellips]
|
|||
|
jns no_minimum_y_ellips
|
|||
|
add [b_ellips],ebp
|
|||
|
no_minimum_y_ellips:
|
|||
|
|
|||
|
;calculate circle
|
|||
|
mov ebx,[ReserveArray]
|
|||
|
add ebx,4
|
|||
|
mov eax,[PointerToPicture]
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
mov edx,[x]
|
|||
|
shl edx,16
|
|||
|
add edx,[y]
|
|||
|
mov esi,[a_ellips]
|
|||
|
shl esi,16
|
|||
|
add esi,[b_ellips]
|
|||
|
call calculate_ellips
|
|||
|
|
|||
|
mov [counter],eax
|
|||
|
|
|||
|
;save color pixels in ReserveArray
|
|||
|
mov eax,[counter]
|
|||
|
mov ebx,[ReserveArray]
|
|||
|
mov [ebx],eax
|
|||
|
|
|||
|
mov ecx,[ebx]
|
|||
|
add ebx,4
|
|||
|
|
|||
|
xor ebp,ebp
|
|||
|
next_color_save_ellips:
|
|||
|
;save color of pixel in ReserveArray
|
|||
|
push ecx
|
|||
|
and [counter2],0
|
|||
|
mov edi,[ebx]
|
|||
|
vertical_width_save_ellips:
|
|||
|
and [counter],0
|
|||
|
|
|||
|
horizontal_width_save_ellips:
|
|||
|
mov eax,edi
|
|||
|
mov edx,[eax]
|
|||
|
and edx,0xffffff
|
|||
|
mov [ebx+4807*4+ebp],dx
|
|||
|
shr edx,16
|
|||
|
mov [ebx+4807*4+2+ebp],dl
|
|||
|
|
|||
|
add edi,3
|
|||
|
add ebp,4
|
|||
|
inc [counter]
|
|||
|
cmp [counter],5
|
|||
|
jne horizontal_width_save_ellips
|
|||
|
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
sub ecx,5
|
|||
|
lea ecx,[ecx+ecx*2]
|
|||
|
add edi,ecx
|
|||
|
inc [counter2]
|
|||
|
cmp [counter2],5
|
|||
|
jne vertical_width_save_ellips
|
|||
|
pop ecx
|
|||
|
add ebx,4
|
|||
|
dec ecx
|
|||
|
jnz next_color_save_ellips
|
|||
|
|
|||
|
;draw calculated pixels on work arrea
|
|||
|
mov ebx,[ReserveArray]
|
|||
|
mov ecx,[ebx]
|
|||
|
mov edx,[Color]
|
|||
|
mov esi,[Color]
|
|||
|
shr edx,16
|
|||
|
add ebx,4
|
|||
|
mov edi,[line_width]
|
|||
|
dec edi
|
|||
|
imul edi,25
|
|||
|
next_pixel_put_ellips:
|
|||
|
|
|||
|
mov eax,[ebx]
|
|||
|
push eax
|
|||
|
push ecx
|
|||
|
xor ebp,ebp
|
|||
|
and [counter2],0
|
|||
|
|
|||
|
vertical_width_ellips:
|
|||
|
and [counter],0
|
|||
|
|
|||
|
horizontal_width_ellips:
|
|||
|
xor ecx,ecx
|
|||
|
mov cl,byte[width_pixels+edi+ebp]
|
|||
|
test cl,cl
|
|||
|
jz no_draw_pixel_ellips
|
|||
|
mov [eax],si
|
|||
|
mov [eax+2],dl
|
|||
|
no_draw_pixel_ellips:
|
|||
|
add eax,3
|
|||
|
inc ebp
|
|||
|
inc [counter]
|
|||
|
cmp [counter],5
|
|||
|
jne horizontal_width_ellips
|
|||
|
|
|||
|
mov ecx,[Picture_SizeX]
|
|||
|
sub ecx,5
|
|||
|
lea ecx,[ecx+ecx*2]
|
|||
|
add eax,ecx
|
|||
|
inc [counter2]
|
|||
|
cmp [counter2],5
|
|||
|
jne vertical_width_ellips
|
|||
|
|
|||
|
pop ecx
|
|||
|
pop eax
|
|||
|
add ebx,4
|
|||
|
dec ecx
|
|||
|
jnz next_pixel_put_ellips
|
|||
|
|
|||
|
call MovePictureToWorkScreen
|
|||
|
jmp still
|
|||
|
no_ellips:
|
|||
|
|
|||
|
;*************************Line width 1*********************
|
|||
|
cmp eax,41
|
|||
|
jne no_line_width_1
|
|||
|
mov [line_width],1
|
|||
|
jmp still
|
|||
|
no_line_width_1:
|
|||
|
;*************************Line width 2*********************
|
|||
|
cmp eax,42
|
|||
|
jne no_line_width_2
|
|||
|
mov [line_width],2
|
|||
|
jmp still
|
|||
|
no_line_width_2:
|
|||
|
;*************************Line width 3*********************
|
|||
|
cmp eax,43
|
|||
|
jne no_line_width_3
|
|||
|
mov [line_width],3
|
|||
|
jmp still
|
|||
|
no_line_width_3:
|
|||
|
;*************************Line width 4*********************
|
|||
|
cmp eax,44
|
|||
|
jne no_line_width_4
|
|||
|
mov [line_width],4
|
|||
|
jmp still
|
|||
|
no_line_width_4:
|
|||
|
;*************************Line width 5*********************
|
|||
|
cmp eax,45
|
|||
|
jne no_line_width_5
|
|||
|
mov [line_width],5
|
|||
|
jmp still
|
|||
|
no_line_width_5:
|
|||
|
|
|||
|
jmp still
|
|||
|
ret
|
|||
|
;-----------------------------------------------------------
|
|||
|
;-----------calculate cordinats on work picture--------------
|
|||
|
;-----------------------------------------------------------
|
|||
|
GetScreenCordinats:
|
|||
|
|
|||
|
mov eax,[MouseX]
|
|||
|
mov ebx,[MouseY]
|
|||
|
sub eax,9
|
|||
|
sub ebx,83
|
|||
|
|
|||
|
mov ecx,[k]
|
|||
|
cdq
|
|||
|
idiv ecx
|
|||
|
mov [ScreenX],eax
|
|||
|
mov eax,ebx
|
|||
|
cdq
|
|||
|
idiv ecx
|
|||
|
mov [ScreenY],eax
|
|||
|
|
|||
|
ret
|
|||
|
;-----------------------------------------------------------
|
|||
|
;------------------SaveFonForSprite-------------------------
|
|||
|
;-----------------------------------------------------------
|
|||
|
SaveFonForSprite:
|
|||
|
|
|||
|
mov edi,[PointerToSpriteBufer]
|
|||
|
mov ecx,[SpriteSizeX]
|
|||
|
mov edx,[Picture_SizeX]
|
|||
|
sub edx,[SpriteSizeX]
|
|||
|
mov esi,[SpriteCoordinatY]
|
|||
|
imul esi,[Picture_SizeX]
|
|||
|
add esi,[SpriteCoordinatX]
|
|||
|
lea edx,[edx+edx*2]
|
|||
|
lea esi,[esi+esi*2]
|
|||
|
add esi,[PointerToPicture]
|
|||
|
mov ebx,[SpriteSizeY]
|
|||
|
mov [counter],ecx
|
|||
|
|
|||
|
next_line_sprite_save:
|
|||
|
mov ecx,[counter]
|
|||
|
|
|||
|
next_pixel_sprite_save:
|
|||
|
mov eax,[esi]
|
|||
|
and eax,0xffffff
|
|||
|
mov [edi],ax
|
|||
|
shr eax,16
|
|||
|
mov [edi+2],al
|
|||
|
add esi,3
|
|||
|
add edi,3
|
|||
|
dec ecx
|
|||
|
jnz next_pixel_sprite_save
|
|||
|
|
|||
|
add esi,edx
|
|||
|
dec ebx
|
|||
|
jnz next_line_sprite_save
|
|||
|
|
|||
|
ret
|
|||
|
;-----------------------------------------------------------
|
|||
|
;-------------------PutFonForSprite-------------------------
|
|||
|
;-----------------------------------------------------------
|
|||
|
PutFonForSprite:
|
|||
|
|
|||
|
mov esi,[PointerToSpriteBufer]
|
|||
|
mov ecx,[SpriteSizeX]
|
|||
|
mov edx,[Picture_SizeX]
|
|||
|
sub edx,[SpriteSizeX]
|
|||
|
mov edi,[SpriteOldCoordinatY]
|
|||
|
imul edi,[Picture_SizeX]
|
|||
|
add edi,[SpriteOldCoordinatX]
|
|||
|
lea edx,[edx+edx*2]
|
|||
|
lea edi,[edi+edi*2]
|
|||
|
add edi,[PointerToPicture]
|
|||
|
mov ebx,[SpriteSizeY]
|
|||
|
mov [counter],ecx
|
|||
|
|
|||
|
next_line_sprite_put:
|
|||
|
mov ecx,[counter]
|
|||
|
|
|||
|
next_pixel_sprite_put:
|
|||
|
mov eax,[esi]
|
|||
|
and eax,0xffffff
|
|||
|
mov [edi],ax
|
|||
|
shr eax,16
|
|||
|
mov [edi+2],al
|
|||
|
add esi,3
|
|||
|
add edi,3
|
|||
|
dec ecx
|
|||
|
jnz next_pixel_sprite_put
|
|||
|
|
|||
|
add edi,edx
|
|||
|
dec ebx
|
|||
|
jnz next_line_sprite_put
|
|||
|
|
|||
|
ret
|
|||
|
;-----------------------------------------------------------
|
|||
|
;------------------DrawFonForSprite-------------------------
|
|||
|
;-----------------------------------------------------------
|
|||
|
DrawSprite:
|
|||
|
|
|||
|
mov esi,[PointerToEditBufer]
|
|||
|
mov ecx,[SpriteSizeX]
|
|||
|
mov edx,[Picture_SizeX]
|
|||
|
sub edx,[SpriteSizeX]
|
|||
|
mov edi,[SpriteCoordinatY]
|
|||
|
imul edi,[Picture_SizeX]
|
|||
|
add edi,[SpriteCoordinatX]
|
|||
|
lea edx,[edx+edx*2]
|
|||
|
lea edi,[edi+edi*2]
|
|||
|
add edi,[PointerToPicture]
|
|||
|
mov ebx,[SpriteSizeY]
|
|||
|
mov [counter],ecx
|
|||
|
|
|||
|
next_line_sprite_draw:
|
|||
|
mov ecx,[counter]
|
|||
|
|
|||
|
next_pixel_sprite_draw:
|
|||
|
mov eax,[esi]
|
|||
|
and eax,0xffffff
|
|||
|
mov [edi],ax
|
|||
|
shr eax,16
|
|||
|
mov [edi+2],al
|
|||
|
add esi,3
|
|||
|
add edi,3
|
|||
|
dec ecx
|
|||
|
jnz next_pixel_sprite_draw
|
|||
|
|
|||
|
add edi,edx
|
|||
|
dec ebx
|
|||
|
jnz next_line_sprite_draw
|
|||
|
|
|||
|
ret
|
|||
|
;-----------------------------------------------------------
|
|||
|
;-------find simvole in string------------------------------
|
|||
|
;-----------------------------------------------------------
|
|||
|
find_symvol:
|
|||
|
;eax,string
|
|||
|
;ebx,symvol
|
|||
|
mov esi,eax
|
|||
|
next_symvol:
|
|||
|
xor ecx,ecx
|
|||
|
mov cl,[eax]
|
|||
|
cmp cl,bl
|
|||
|
je symvol_fined
|
|||
|
inc eax
|
|||
|
jmp next_symvol
|
|||
|
|
|||
|
symvol_fined:
|
|||
|
sub eax,esi
|
|||
|
ret
|
|||
|
;-----------------------------------------------------------
|
|||
|
;--------load file in memory--------------------------------
|
|||
|
;-----------------------------------------------------------
|
|||
|
load_file:
|
|||
|
mov eax,58
|
|||
|
mov ebx,file_info
|
|||
|
int 0x40
|
|||
|
test eax,eax
|
|||
|
jnz no_open_
|
|||
|
mov [length_file],ebx
|
|||
|
shr ebx,9
|
|||
|
inc ebx
|
|||
|
mov [file_info+8],ebx
|
|||
|
mov eax,58
|
|||
|
mov ebx,file_info
|
|||
|
int 0x40
|
|||
|
no_open_:
|
|||
|
ret
|
|||
|
;-----------------------------------------------------------
|
|||
|
;---load icons in memory and draw icons on panel-----------
|
|||
|
;-----------------------------------------------------------
|
|||
|
load_icons:
|
|||
|
mov esi,panel_picture
|
|||
|
mov edi,[ScreenPointer]
|
|||
|
mov eax,edi
|
|||
|
add edi,(1200*1000*3)
|
|||
|
call ReadGIF
|
|||
|
|
|||
|
ret
|
|||
|
|
|||
|
draw_icons:
|
|||
|
mov [Icon_X],10
|
|||
|
mov [Icon_Y],20+15+4
|
|||
|
and [counter],0
|
|||
|
next_icon:
|
|||
|
mov eax,8
|
|||
|
mov ebx,[Icon_X]
|
|||
|
mov ecx,[Icon_Y]
|
|||
|
dec ebx
|
|||
|
dec ecx
|
|||
|
shl ebx,16
|
|||
|
shl ecx,16
|
|||
|
add ebx,20
|
|||
|
add ecx,20
|
|||
|
mov edx,[counter]
|
|||
|
add edx,10
|
|||
|
add edx,1000000000000000000000000000000b
|
|||
|
int 0x40
|
|||
|
|
|||
|
|
|||
|
mov edx,[Icon_X]
|
|||
|
shl edx,16
|
|||
|
add edx,[Icon_Y]
|
|||
|
mov ebx,[counter]
|
|||
|
imul ebx,20*20*3
|
|||
|
add ebx,[ScreenPointer]
|
|||
|
add ebx,(1200*1000*3)+12
|
|||
|
mov eax,7
|
|||
|
mov ecx,20*65536+20
|
|||
|
int 0x40
|
|||
|
|
|||
|
add [Icon_X],25
|
|||
|
cmp [Icon_X],10+25*15
|
|||
|
jl no_next_line_icons
|
|||
|
mov [Icon_X],10
|
|||
|
mov [Icon_Y],20+15+4+22
|
|||
|
no_next_line_icons:
|
|||
|
inc [counter]
|
|||
|
cmp [counter],30
|
|||
|
jl next_icon
|
|||
|
|
|||
|
and [counter],0
|
|||
|
mov [Icon_X],475
|
|||
|
mov [Icon_Y],20+15+7
|
|||
|
next_button_line:
|
|||
|
|
|||
|
mov eax,8
|
|||
|
mov ebx,[Icon_X]
|
|||
|
mov ecx,[Icon_Y]
|
|||
|
dec ebx
|
|||
|
dec ecx
|
|||
|
shl ebx,16
|
|||
|
shl ecx,16
|
|||
|
add ebx,10
|
|||
|
add ecx,35
|
|||
|
mov edx,[counter]
|
|||
|
add edx,40
|
|||
|
add edx,1000000000000000000000000000000b
|
|||
|
int 0x40
|
|||
|
|
|||
|
mov eax,13
|
|||
|
mov ebx,[Icon_X]
|
|||
|
mov ecx,[Icon_Y]
|
|||
|
add ebx,4
|
|||
|
shl ebx,16
|
|||
|
shl ecx,16
|
|||
|
add ebx,[counter]
|
|||
|
add ecx,35
|
|||
|
;xor edx,edx
|
|||
|
mov edx,0xb1d8ff
|
|||
|
int 0x40
|
|||
|
|
|||
|
add [Icon_X],15
|
|||
|
inc [counter]
|
|||
|
cmp [counter],5
|
|||
|
jle next_button_line
|
|||
|
ret
|
|||
|
;-----------------------------------------------------------
|
|||
|
;calculate position work screen on a picture
|
|||
|
;-----------------------------------------------------------
|
|||
|
CalculatePositionScreen:
|
|||
|
|
|||
|
mov eax,[Picture_SizeX]
|
|||
|
mov ebx,[Picture_SizeY]
|
|||
|
mov ecx,[CounterX]
|
|||
|
mov edx,[CounterY]
|
|||
|
sub eax,ecx
|
|||
|
sub ebx,edx
|
|||
|
|
|||
|
cmp [PosX],eax
|
|||
|
jle no_limit_screen_x
|
|||
|
mov [PosX],eax
|
|||
|
no_limit_screen_x:
|
|||
|
|
|||
|
cmp [PosY],ebx
|
|||
|
jle no_limit_screen_y
|
|||
|
mov [PosY],ebx
|
|||
|
no_limit_screen_y:
|
|||
|
|
|||
|
cmp [PosX],0
|
|||
|
jns no_minimum_screen_x
|
|||
|
mov [PosX],0
|
|||
|
no_minimum_screen_x:
|
|||
|
|
|||
|
cmp [PosY],0
|
|||
|
jns no_minimum_screen_y
|
|||
|
mov [PosY],0
|
|||
|
no_minimum_screen_y:
|
|||
|
|
|||
|
ret
|
|||
|
;-----------------------------------------------------------
|
|||
|
;-------analizing picture to palette------------------------
|
|||
|
;-----------------------------------------------------------
|
|||
|
analizing_picture_to_palette:
|
|||
|
|
|||
|
mov eax,[Picture_SizeX]
|
|||
|
mov ebx,[Picture_SizeY]
|
|||
|
imul eax,ebx
|
|||
|
mov ecx,eax
|
|||
|
mov edx,[PointerToPicture]
|
|||
|
mov esi,1 ;counter colors in palette
|
|||
|
|
|||
|
;put firs color of picture how one color in palette
|
|||
|
mov ebp,[PointerToPalette]
|
|||
|
mov eax,[edx]
|
|||
|
and eax,0xffffff
|
|||
|
mov [ebp],eax
|
|||
|
|
|||
|
analizing_to_palette:
|
|||
|
mov eax,[edx]
|
|||
|
and eax,0xffffff
|
|||
|
|
|||
|
mov edi,esi
|
|||
|
mov ebp,[PointerToPalette]
|
|||
|
next_color_in_palette:
|
|||
|
mov ebx,[ebp]
|
|||
|
and ebx,0xffffff
|
|||
|
cmp ebx,eax ;this is color have in palette
|
|||
|
je exit_loop_palette
|
|||
|
add ebp,4
|
|||
|
dec edi
|
|||
|
jnz next_color_in_palette
|
|||
|
|
|||
|
inc esi
|
|||
|
cmp esi,256 ;256 colors
|
|||
|
ja more_than_256_colors
|
|||
|
mov ebp,[PointerToPalette]
|
|||
|
mov ebx,esi
|
|||
|
dec ebx
|
|||
|
shl ebx,2
|
|||
|
add ebp,ebx
|
|||
|
mov [ebp],ax
|
|||
|
shr eax,16
|
|||
|
mov [ebp+2],al
|
|||
|
|
|||
|
exit_loop_palette:
|
|||
|
|
|||
|
add edx,3
|
|||
|
dec ecx
|
|||
|
jnz analizing_to_palette
|
|||
|
|
|||
|
|
|||
|
more_than_256_colors:
|
|||
|
mov eax,esi
|
|||
|
ret
|
|||
|
;---------------------------------------------------------
|
|||
|
;---------------SOUND of EVENTS---------------------------
|
|||
|
;---------------------------------------------------------
|
|||
|
sound:
|
|||
|
mov eax,55
|
|||
|
mov ebx,eax
|
|||
|
int 0x40
|
|||
|
ret
|
|||
|
;----------------------------------------------------------
|
|||
|
;-------------file info structure--------------------------
|
|||
|
;----------------------------------------------------------
|
|||
|
file_info:
|
|||
|
dd 0
|
|||
|
dd 0
|
|||
|
dd 1
|
|||
|
dd 0x19000+0x10000
|
|||
|
dd 0x19000
|
|||
|
|
|||
|
file_path:
|
|||
|
times 256 db 0
|
|||
|
;-----------------------------------------------------------
|
|||
|
;------------variables and data of program------------------
|
|||
|
;-----------------------------------------------------------
|
|||
|
length_file dd 0
|
|||
|
|
|||
|
time dd 0
|
|||
|
sound_havent_memory db 150,64,0
|
|||
|
PosX dd 0
|
|||
|
PosY dd 0
|
|||
|
ScreenPointer dd 0
|
|||
|
PointerToPicture dd 0
|
|||
|
PointerToCopyPicture dd 0
|
|||
|
PointerToCopyPicture2 dd 0
|
|||
|
PointerToEditBufer dd 0
|
|||
|
PointerToSpriteBufer dd 0
|
|||
|
PointerToPalette dd 0
|
|||
|
Color dd 0
|
|||
|
Number_Brush dd 0
|
|||
|
Brush_SizeX dd 0
|
|||
|
Brush_SizeY dd 0
|
|||
|
Current_instrument dd 0
|
|||
|
Activate_instrument db 0
|
|||
|
SColor dd 0
|
|||
|
OldX dd 0
|
|||
|
OldY dd 0
|
|||
|
|
|||
|
MouseX dd 0
|
|||
|
MouseY dd 0
|
|||
|
Window_SizeX dd 0
|
|||
|
Window_SizeY dd 0
|
|||
|
Window_CordinatX dd 0
|
|||
|
Window_CordinatY dd 0
|
|||
|
Picture_SizeX dd 0
|
|||
|
Picture_SizeY dd 0
|
|||
|
ScreenX dd 0
|
|||
|
ScreenY dd 0
|
|||
|
WorkScreen_SizeX dd 0
|
|||
|
WorkScreen_SizeY dd 0
|
|||
|
MaxWorkScreen_SizeX dd 0
|
|||
|
MaxWorkScreen_SizeY dd 0
|
|||
|
k dd 0
|
|||
|
IPC_table rd 256
|
|||
|
ReserveArray dd 0
|
|||
|
register dd 0
|
|||
|
CounterX dd 0
|
|||
|
CounterY dd 0
|
|||
|
OffsetYPicture dd 0
|
|||
|
OffsetYWorkScreen dd 0
|
|||
|
OffsetYBigPixel dd 0
|
|||
|
|
|||
|
Icon_X dd 0
|
|||
|
Icon_Y dd 0
|
|||
|
counter dd 0
|
|||
|
counter2 dd 0
|
|||
|
Icon_text_x dd 0
|
|||
|
Icon_text_y dd 0
|
|||
|
Panel_flag db 0
|
|||
|
counter_menu dd 0
|
|||
|
menu_coordinat_x dd 0
|
|||
|
menu_size_x dd 0
|
|||
|
menu_counter dd 0
|
|||
|
counter_11 dd 0
|
|||
|
number_panel dd 0
|
|||
|
number_menu dd 0
|
|||
|
|
|||
|
Scroll1CoordinatX dd 0
|
|||
|
Scroll1CoordinatY dd 0
|
|||
|
Scroll1MaxSizeX dd 0
|
|||
|
Scroll1MaxSizeY dd 0
|
|||
|
Scroll1SizeX dd 0
|
|||
|
Scroll1FreeX dd 0
|
|||
|
|
|||
|
Scroll2CoordinatX dd 0
|
|||
|
Scroll2CoordinatY dd 0
|
|||
|
Scroll2MaxSizeX dd 0
|
|||
|
Scroll2MaxSizeY dd 0
|
|||
|
Scroll2SizeY dd 0
|
|||
|
Scroll2FreeY dd 0
|
|||
|
|
|||
|
extended_memory dd 0
|
|||
|
type dw 0
|
|||
|
x dd 0
|
|||
|
y dd 0
|
|||
|
save_flag db 0
|
|||
|
exit_from_work_arrea db 0
|
|||
|
|
|||
|
Radius dd 0
|
|||
|
Dx_ dd 0
|
|||
|
Dy_ dd 0
|
|||
|
line_width dd 0
|
|||
|
lastik_is_active db 0
|
|||
|
a_ellips dd 0
|
|||
|
b_ellips dd 0
|
|||
|
instrument_used db 0
|
|||
|
used_OldX dd 0
|
|||
|
used_OldY dd 0
|
|||
|
rectangular_shade_x dd 0
|
|||
|
rectangular_shade_y dd 0
|
|||
|
crossing_old_x dd 0
|
|||
|
crossing_old_y dd 0
|
|||
|
crossing dd 0
|
|||
|
finishing_crossing dd 0
|
|||
|
number_undo dd 0
|
|||
|
DrawSprite_flag db 0
|
|||
|
Paste_flag db 0
|
|||
|
SpriteSizeX dd 0
|
|||
|
SpriteSizeY dd 0
|
|||
|
SpriteCoordinatX dd 0
|
|||
|
SpriteCoordinatY dd 0
|
|||
|
SpriteOldCoordinatX dd 0
|
|||
|
SpriteOldCoordinatY dd 0
|
|||
|
;**********************************************************
|
|||
|
;------------------TEXT DATA-------------------------------
|
|||
|
;**********************************************************
|
|||
|
name_of_program db 'Graphics editor <<ANIMAGE>> V1.00 '
|
|||
|
mouse_pos_x db 'X='
|
|||
|
mouse_pos_y db 'Y='
|
|||
|
new_text1 db 'PICTURE SIZE X'
|
|||
|
new_text2 db 'PICTURE SIZE Y'
|
|||
|
ok_text db 'OK'
|
|||
|
|
|||
|
panel_text dd 15,24,4
|
|||
|
db 'FILE'
|
|||
|
dd 95,24,4
|
|||
|
db 'EDIT'
|
|||
|
dd 175,24,11
|
|||
|
db 'INSTRUMENTS'
|
|||
|
dd 255,24,7
|
|||
|
db 'PALETTE'
|
|||
|
dd 335,24,7
|
|||
|
db 'FILTERS'
|
|||
|
dd 415,24,9
|
|||
|
db 'ANIMATION'
|
|||
|
dd 495,24,4
|
|||
|
db 'HELP'
|
|||
|
menu_text_en:
|
|||
|
dd menu_text7
|
|||
|
dd menu_text6
|
|||
|
dd menu_text5
|
|||
|
dd menu_text4
|
|||
|
dd menu_text3
|
|||
|
dd menu_text2
|
|||
|
dd menu_text1
|
|||
|
dd 0,0,0
|
|||
|
|
|||
|
menu_rectangles dd 485,36,100,100
|
|||
|
dd 405,36,100,100
|
|||
|
dd 325,36,100,100
|
|||
|
dd 245,36,100,100
|
|||
|
dd 165,36,100,100
|
|||
|
dd 85,36,100,100;20
|
|||
|
dd 5,36,100,100
|
|||
|
|
|||
|
|
|||
|
menu_text1:
|
|||
|
dd 15,45,3
|
|||
|
db 'NEW'
|
|||
|
dd 15,65,4
|
|||
|
db 'OPEN'
|
|||
|
dd 15,85,4
|
|||
|
db 'SAVE'
|
|||
|
dd 15,105,7
|
|||
|
db 'SAVE AS'
|
|||
|
dd 15,125,4
|
|||
|
db 'EXIT'
|
|||
|
|
|||
|
menu_text2:
|
|||
|
dd 95,45,4
|
|||
|
db 'UNDO'
|
|||
|
dd 95,65,4
|
|||
|
db 'COPY'
|
|||
|
dd 95,85,5
|
|||
|
db 'PASTE'
|
|||
|
dd 95,105,3
|
|||
|
db 'CUT'
|
|||
|
dd 95,125,13
|
|||
|
db 'CLEARE SCREEN'
|
|||
|
;dd 95,145,12
|
|||
|
;db 'ALLOCATE ALL'
|
|||
|
menu_text3:
|
|||
|
dd 175,45,3
|
|||
|
db 0,0,0;'PENCIL'
|
|||
|
dd 175,65,3
|
|||
|
db 0,0,0;'BRUSHES'
|
|||
|
dd 175,85,3
|
|||
|
db 0,0,0;'COLORS'
|
|||
|
dd 175,105,3
|
|||
|
db 0,0,0;'PIPETKA'
|
|||
|
menu_text4:
|
|||
|
dd 255,45,1
|
|||
|
db 0,0,0
|
|||
|
menu_text5:
|
|||
|
dd 335,45,1
|
|||
|
db 0,0,0
|
|||
|
menu_text6:
|
|||
|
dd 415,45,1
|
|||
|
db 0,0,0
|
|||
|
menu_text7:
|
|||
|
dd 495,45,1
|
|||
|
db 0,0,0,0
|
|||
|
|
|||
|
|
|||
|
menu_counters:
|
|||
|
dd 1,1,1,1,1,5,5
|
|||
|
|
|||
|
;----------------------------------------------------------
|
|||
|
palitra: ;three bytes for one color
|
|||
|
db 0,0,0,0,0,0,128,0
|
|||
|
db 0,128,0,0,0,128,128,0
|
|||
|
db 128,0,0,0,128,0,128,0
|
|||
|
db 128,128,0,0,128,128,128,0
|
|||
|
db 192,220,192,0,240,202,166,0
|
|||
|
db 170,63,42,0,255,63,42,0
|
|||
|
db 0,95,42,0,85,95,42,0
|
|||
|
db 170,95,42,0,255,95,42,0
|
|||
|
db 0,127,42,0,85,127,42,0
|
|||
|
db 170,127,42,0,255,127,42,0
|
|||
|
db 0,159,42,0,85,159,42,0
|
|||
|
db 170,159,42,0,255,159,42,0
|
|||
|
db 0,191,42,0,85,191,42,0
|
|||
|
db 170,191,42,0,255,191,42,0
|
|||
|
db 0,223,42,0,85,223,42,0
|
|||
|
db 170,223,42,0,255,223,42,0
|
|||
|
db 0,255,42,0,85,255,42,0
|
|||
|
db 170,255,42,0,255,255,42,0
|
|||
|
db 0,0,85,0,85,0,85,0
|
|||
|
db 170,0,85,0,255,0,85,0
|
|||
|
db 0,31,85,0,85,31,85,0
|
|||
|
db 170,31,85,0,255,31,85,0
|
|||
|
db 0,63,85,0,85,63,85,0
|
|||
|
db 170,63,85,0,255,63,85,0
|
|||
|
db 0,95,85,0,85,95,85,0
|
|||
|
db 170,95,85,0,255,95,85,0
|
|||
|
db 0,127,85,0,85,127,85,0
|
|||
|
db 170,127,85,0,255,127,85,0
|
|||
|
db 0,159,85,0,85,159,85,0
|
|||
|
db 170,159,85,0,255,159,85,0
|
|||
|
db 0,191,85,0,85,191,85,0
|
|||
|
db 170,191,85,0,255,191,85,0
|
|||
|
db 0,223,85,0,85,223,85,0
|
|||
|
db 170,223,85,0,255,223,85,0
|
|||
|
db 0,255,85,0,85,255,85,0
|
|||
|
db 170,255,85,0,255,255,85,0
|
|||
|
db 0,0,127,0,85,0,127,0
|
|||
|
db 170,0,127,0,255,0,127,0
|
|||
|
db 0,31,127,0,85,31,127,0
|
|||
|
db 170,31,127,0,255,31,127,0
|
|||
|
db 0,63,127,0,85,63,127,0
|
|||
|
db 170,63,127,0,255,63,127,0
|
|||
|
db 0,95,127,0,85,95,127,0
|
|||
|
db 170,95,127,0,255,95,127,0
|
|||
|
db 0,127,127,0,85,127,127,0
|
|||
|
db 170,127,127,0,255,127,127,0
|
|||
|
db 0,159,127,0,85,159,127,0
|
|||
|
db 170,159,127,0,255,159,127,0
|
|||
|
db 0,191,127,0,85,191,127,0
|
|||
|
db 170,191,127,0,255,191,127,0
|
|||
|
db 0,223,127,0,85,223,127,0
|
|||
|
db 170,223,127,0,255,223,127,0
|
|||
|
db 0,255,127,0,85,255,127,0
|
|||
|
db 170,255,127,0,255,255,127,0
|
|||
|
db 0,0,170,0,85,0,170,0
|
|||
|
db 170,0,170,0,255,0,170,0
|
|||
|
db 0,31,170,0,85,31,170,0
|
|||
|
db 170,31,170,0,255,31,170,0
|
|||
|
db 0,63,170,0,85,63,170,0
|
|||
|
db 170,63,170,0,255,63,170,0
|
|||
|
db 0,95,170,0,85,95,170,0
|
|||
|
db 170,95,170,0,255,95,170,0
|
|||
|
db 0,127,170,0,85,127,170,0
|
|||
|
db 170,127,170,0,255,127,170,0
|
|||
|
db 0,159,170,0,85,159,170,0
|
|||
|
db 170,159,170,0,255,159,170,0
|
|||
|
db 0,191,170,0,85,191,170,0
|
|||
|
db 170,191,170,0,255,191,170,0
|
|||
|
db 0,223,170,0,85,223,170,0
|
|||
|
db 170,223,170,0,255,223,170,0
|
|||
|
db 0,255,170,0,85,255,170,0
|
|||
|
db 170,255,170,0,255,255,170,0
|
|||
|
db 0,0,212,0,85,0,212,0
|
|||
|
db 170,0,212,0,255,0,212,0
|
|||
|
db 0,31,212,0,85,31,212,0
|
|||
|
db 170,31,212,0,255,31,212,0
|
|||
|
db 0,63,212,0,85,63,212,0
|
|||
|
db 170,63,212,0,255,63,212,0
|
|||
|
db 0,95,212,0,85,95,212,0
|
|||
|
db 170,95,212,0,255,95,212,0
|
|||
|
db 0,127,212,0,85,127,212,0
|
|||
|
db 170,127,212,0,255,127,212,0
|
|||
|
db 0,159,212,0,85,159,212,0
|
|||
|
db 170,159,212,0,255,159,212,0
|
|||
|
db 0,191,212,0,85,191,212,0
|
|||
|
db 170,191,212,0,255,191,212,0
|
|||
|
db 0,223,212,0,85,223,212,0
|
|||
|
db 170,223,212,0,255,223,212,0
|
|||
|
db 0,255,212,0,85,255,212,0
|
|||
|
db 170,255,212,0,255,255,212,0
|
|||
|
db 85,0,255,0,170,0,255,0
|
|||
|
db 0,31,255,0,85,31,255,0
|
|||
|
db 170,31,255,0,255,31,255,0
|
|||
|
db 0,63,255,0,85,63,255,0
|
|||
|
db 170,63,255,0,255,63,255,0
|
|||
|
db 0,95,255,0,85,95,255,0
|
|||
|
db 170,95,255,0,255,95,255,0
|
|||
|
db 0,127,255,0,85,127,255,0
|
|||
|
db 170,127,255,0,255,127,255,0
|
|||
|
db 0,159,255,0,85,159,255,0
|
|||
|
db 170,159,255,0,255,159,255,0
|
|||
|
db 0,191,255,0,85,191,255,0
|
|||
|
db 170,191,255,0,255,191,255,0
|
|||
|
db 0,223,255,0,85,223,255,0
|
|||
|
db 170,223,255,0,255,223,255,0
|
|||
|
db 85,255,255,0,170,255,255,0
|
|||
|
db 255,204,204,0,255,204,255,0
|
|||
|
db 255,255,51,0,255,255,102,0
|
|||
|
db 255,255,153,0,255,255,204,0
|
|||
|
db 0,127,0,0,85,127,0,0
|
|||
|
db 170,127,0,0,255,127,0,0
|
|||
|
db 0,159,0,0,85,159,0,0
|
|||
|
db 170,159,0,0,255,159,0,0
|
|||
|
db 0,191,0,0,85,191,0,0
|
|||
|
db 170,191,0,0,255,191,0,0
|
|||
|
db 0,223,0,0,85,223,0,0
|
|||
|
db 170,223,0,0,255,223,0,0
|
|||
|
db 85,255,0,0,170,255,0,0
|
|||
|
db 0,0,42,0,85,0,42,0
|
|||
|
db 170,0,42,0,255,0,42,0
|
|||
|
db 0,31,42,0,85,31,42,0
|
|||
|
db 170,31,42,0,255,31,42,0
|
|||
|
db 0,63,42,0,170,174,160,0
|
|||
|
db 240,251,255,0,164,160,160,0
|
|||
|
db 128,128,128,0,0,0,255,0
|
|||
|
db 0,255,0,0,0,255,255,0
|
|||
|
db 255,0,0,0,255,0,255,0
|
|||
|
db 255,255,0,0xff,0xff,0xff,0xff
|
|||
|
;----------------------------------------------------------
|
|||
|
;--------------------COLOR BRUSHES-------------------------
|
|||
|
;----------------------------------------------------------
|
|||
|
Brush_color:
|
|||
|
;
|
|||
|
db 0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
|
|||
|
;
|
|||
|
db 0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
|
|||
|
;
|
|||
|
db 0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
|
|||
|
;
|
|||
|
db 0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0
|
|||
|
db 0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0
|
|||
|
db 0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0
|
|||
|
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0
|
|||
|
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0
|
|||
|
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0
|
|||
|
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0
|
|||
|
db 0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0
|
|||
|
db 0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0
|
|||
|
db 0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
|
|||
|
;
|
|||
|
db 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
|
|||
|
;
|
|||
|
db 0
|
|||
|
;------------------------------------------
|
|||
|
Spray_color:
|
|||
|
;
|
|||
|
db 0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
;
|
|||
|
db 0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0
|
|||
|
db 0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0
|
|||
|
db 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0
|
|||
|
db 0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0
|
|||
|
db 0,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0
|
|||
|
db 0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
;
|
|||
|
db 0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0
|
|||
|
db 0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0
|
|||
|
db 0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0
|
|||
|
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0
|
|||
|
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0
|
|||
|
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0
|
|||
|
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0
|
|||
|
db 0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0
|
|||
|
db 0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0
|
|||
|
db 0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|||
|
|
|||
|
;------------------------------------------
|
|||
|
width_pixels:
|
|||
|
|
|||
|
db 1,0,0,0,0
|
|||
|
db 0,0,0,0,0
|
|||
|
db 0,0,0,0,0
|
|||
|
db 0,0,0,0,0
|
|||
|
db 0,0,0,0,0
|
|||
|
;
|
|||
|
db 1,1,0,0,0
|
|||
|
db 1,1,0,0,0
|
|||
|
db 0,0,0,0,0
|
|||
|
db 0,0,0,0,0
|
|||
|
db 0,0,0,0,0
|
|||
|
;
|
|||
|
db 0,1,0,0,0
|
|||
|
db 1,1,1,0,0
|
|||
|
db 0,1,0,0,0
|
|||
|
db 0,0,0,0,0
|
|||
|
db 0,0,0,0,0
|
|||
|
;
|
|||
|
db 0,1,1,0,0
|
|||
|
db 1,1,1,1,0
|
|||
|
db 1,1,1,1,0
|
|||
|
db 0,1,1,0,0
|
|||
|
db 0,0,0,0,0
|
|||
|
;
|
|||
|
db 0,0,1,0,0
|
|||
|
db 0,1,1,1,0
|
|||
|
db 1,1,1,1,1
|
|||
|
db 0,1,1,1,0
|
|||
|
db 0,0,1,0,0
|
|||
|
;-----------------------------------------
|
|||
|
width_pixels_rectangle:
|
|||
|
|
|||
|
db 1,0,0,0,0
|
|||
|
db 0,0,0,0,0
|
|||
|
db 0,0,0,0,0
|
|||
|
db 0,0,0,0,0
|
|||
|
db 0,0,0,0,0
|
|||
|
;
|
|||
|
db 1,1,0,0,0
|
|||
|
db 1,1,0,0,0
|
|||
|
db 0,0,0,0,0
|
|||
|
db 0,0,0,0,0
|
|||
|
db 0,0,0,0,0
|
|||
|
;
|
|||
|
db 1,1,1,0,0
|
|||
|
db 1,1,1,0,0
|
|||
|
db 1,1,1,0,0
|
|||
|
db 0,0,0,0,0
|
|||
|
db 0,0,0,0,0
|
|||
|
;
|
|||
|
db 1,1,1,1,0
|
|||
|
db 1,1,1,1,0
|
|||
|
db 1,1,1,1,0
|
|||
|
db 1,1,1,1,0
|
|||
|
db 0,0,0,0,0
|
|||
|
;
|
|||
|
db 1,1,1,1,1
|
|||
|
db 1,1,1,1,1
|
|||
|
db 1,1,1,1,1
|
|||
|
db 1,1,1,1,1
|
|||
|
db 1,1,1,1,1
|
|||
|
|
|||
|
;----------------------------------------------------------
|
|||
|
;-------------------ICON"S picture-------------------------
|
|||
|
;----------------------------------------------------------
|
|||
|
panel_picture:
|
|||
|
file 'worktab1.gif'
|
|||
|
|
|||
|
;----------------------------------------------------------
|
|||
|
|
|||
|
I_END:
|
|||
|
|
|||
|
|