Subversion Repositories Kolibri OS

Compare Revisions

No changes between revisions

Regard whitespace Rev 254 → Rev 255

/programs/media/animage/trunk/readme_k.inc
File deleted
/programs/media/animage/trunk/worktab1.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/programs/media/animage/trunk/animage.asm
1,7 → 1,14
;******************************************************
;***GRAPHICS EDIT ANIMAGE creted by andrew_programmer**
;******************************************************
;*******************************************************
;**************GRAPHICS EDITOR ANIMAGE *****************
;*******************************************************
 
 
; version 1.1 year 9.12.2006
 
; AUTORS:
; programming by andrew_programmer
; design by golus
 
use32
org 0x0
 
11,8 → 18,9
dd I_END
dd 0x19000;100 kb
dd 0x19000;
dd 0x0
dd 0x0
dd parameters,0x0
 
 
include 'giflib.inc'
include 'bmplib.inc'
include 'dialog.inc'
19,6 → 27,11
include 'dialog2.inc'
include 'design.inc'
include 'graphlib.inc'
 
include 'cursors.inc'
 
include 'load_from_parameters.inc'
 
START:
 
;--------------------------------------------------------
27,5071 → 40,93
mov eax,40
mov ebx,1100111b
int 0x40
 
;---------------------------------------------------------
;--------initializate data and params of program----------
;-----------------------init data-------------------------
;---------------------------------------------------------
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
include 'init_data.inc'
;----------------------------------------------------------
;--------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
;load cursors
mov eax,CursorsID
call load_cursors
 
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)----------------
;---------Check loading of file from psrsmeters-----------
;---------------------------------------------------------
print_panel_menu:
 
mov eax,parameters
mov ebx,file_path
call check_loading_from_parameters
 
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
;ᣫ ¦¨¢ ­¨¥  ­¨¬ æ¨¨ >>>>>>>>>>>>>>>>>>
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-----------------------
;---------------------MAIN LOOP----------------------------
;----------------------------------------------------------
drawwin:
 
mov eax,12
mov ebx,1
int 0x40
still:
 
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 event
 
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
jne no_redraw_window
 
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
no_redraw_window:
 
opendialog drawwin,open_1,open_2,file_path
open_1:
cmp eax,2
je keys
 
mov eax,40
mov ebx,100111b
int 0x40
cmp eax,3
je buttons
 
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
je mouse
 
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
include 'events.inc'
include 'events_of_window.inc'
include 'events_of_keys.inc'
include 'events_of_buttons.inc'
include 'events_of_mouse.inc'
include 'panel_engen.inc'
include 'screen.inc'
include 'menu_instruments.inc'
include 'icons_instruments.inc'
include 'icons.inc'
include 'sprites.inc'
include 'string.inc'
include 'palette.inc'
include 'files.inc'
include 'time.inc'
include 'memory.inc'
 
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--------------
;------------variables and data of program------------------
;-----------------------------------------------------------
GetScreenCordinats:
 
mov eax,[MouseX]
mov ebx,[MouseY]
sub eax,9
sub ebx,83
CursorsID rd 10
 
mov ecx,[k]
cdq
idiv ecx
mov [ScreenX],eax
mov eax,ebx
cdq
idiv ecx
mov [ScreenY],eax
parameters rb 257
 
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
times 1024+16 db 0
 
time dd 0
sound_havent_memory db 150,64,0
PosX dd 0
PosY dd 0
PointerToIcons dd 0
ScreenPointer dd 0
PointerToPicture dd 0
PointerToCopyPicture dd 0
5104,6 → 139,7
Brush_SizeX dd 0
Brush_SizeY dd 0
Current_instrument dd 0
Last_instrument dd 0
Activate_instrument db 0
SColor dd 0
OldX dd 0
5194,483 → 230,44
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
 
include 'panel_data.inc'
include 'palitra256.inc'
include 'brushes.inc'
include 'spray.inc'
include 'width_lines.inc'
;----------------------------------------------------------
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
;-------------------ICON"S picture-------------------------
;----------------------------------------------------------
;--------------------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
dd 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
panel_picture:
file 'panel_buttons.gif'
 
;
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
;****************cursors******************
brush_cursor:
file 'brush.cur'
 
;
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
flood_fill_cursor:
file 'flood_fill.cur'
 
;
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
lastik_cursor:
file 'lastik.cur'
 
;
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
other_cursor:
file 'other.cur'
 
;------------------------------------------
width_pixels:
pencil_cursor:
file 'pencil.cur'
 
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:
pipette_cursor:
file 'pipette.cur'
 
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
spray_cursor:
file 'spray.cur'
 
;----------------------------------------------------------
;-------------------ICON"S picture-------------------------
;----------------------------------------------------------
panel_picture:
file 'worktab1.gif'
zoom_cursor:
file 'zoom.cur'
 
;----------------------------------------------------------
 
/programs/media/animage/trunk/brush.cur
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/programs/media/animage/trunk/brushes.inc
0,0 → 1,117
;----------------------------------------------------------
;--------------------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
/programs/media/animage/trunk/build_en.bat
1,3 → 1,2
@fasm animage.asm animage
@mtappack animage
@pause
/programs/media/animage/trunk/cursors.inc
0,0 → 1,324
;load cursors from memory
;IN
; eax- pointer to memory for ID of cursors
;OUT
; not returned value
 
load_cursors:
 
mov [PointerToCursorsID],eax
 
mov eax, 37
mov ebx, 4
mov ecx,brush_cursor
mov edx,1
int 0x40
 
mov ebx,[PointerToCursorsID]
mov [ebx],eax
add [PointerToCursorsID],4
 
mov eax, 37
mov ebx, 4
mov ecx,flood_fill_cursor
mov edx,1
int 0x40
 
mov ebx,[PointerToCursorsID]
mov [ebx],eax
add [PointerToCursorsID],4
 
mov eax, 37
mov ebx, 4
mov ecx,lastik_cursor
mov edx,1
int 0x40
 
mov ebx,[PointerToCursorsID]
mov [ebx],eax
add [PointerToCursorsID],4
 
 
mov eax, 37
mov ebx, 4
mov ecx,other_cursor
mov edx,1
int 0x40
 
 
mov ebx,[PointerToCursorsID]
mov [ebx],eax
add [PointerToCursorsID],4
 
mov eax, 37
mov ebx, 4
mov ecx,pencil_cursor
mov edx,1
int 0x40
 
 
mov ebx,[PointerToCursorsID]
mov [ebx],eax
add [PointerToCursorsID],4
 
mov eax, 37
mov ebx, 4
mov ecx,pipette_cursor
mov edx,1
int 0x40
 
mov ebx,[PointerToCursorsID]
mov [ebx],eax
add [PointerToCursorsID],4
 
mov eax, 37
mov ebx, 4
mov ecx,spray_cursor
mov edx,1
int 0x40
 
mov ebx,[PointerToCursorsID]
mov [ebx],eax
add [PointerToCursorsID],4
 
mov eax, 37
mov ebx, 4
mov ecx,zoom_cursor
mov edx,1
int 0x40
 
mov ebx,[PointerToCursorsID]
mov [ebx],eax
add [PointerToCursorsID],4
 
ret
 
;set cirsor
;IN
;eax- pointer to IDs of cursors
;ebx- number(ID) of current instrument
 
set_cursor:
 
mov [PointerToCursorsID],eax
 
cmp ebx,10
jne no_1_l
mov eax,5
jmp che
no_1_l:
 
cmp ebx,11
jne no_2_l
mov eax,1
jmp che
no_2_l:
 
cmp ebx,12
jne no_3_l
mov eax,7
jmp che
no_3_l:
 
cmp ebx,13
jne no_4_l
mov eax,3
jmp che
no_4_l:
 
cmp ebx,14
jne no_5_l
mov eax,2
jmp che
no_5_l:
 
cmp ebx,15
jne no_6_l
mov eax,6
jmp che
no_6_l:
 
cmp ebx,16
jne no_7_l
mov eax,4
jmp che
no_7_l:
 
cmp ebx,17
jne no_8_l
mov eax,4
jmp che
no_8_l:
 
cmp ebx,18
jne no_9_l
mov eax,4
jmp che
no_9_l:
 
cmp ebx,19
jne no_10_l
mov eax,4
jmp che
no_10_l:
 
cmp ebx,20
jne no_11_l
mov eax,4
jmp che
no_11_l:
 
cmp ebx,21
jne no_12_l
mov eax,4
jmp che
no_12_l:
 
cmp ebx,22
jne no_13_l
mov eax,4
jmp che
no_13_l:
 
cmp ebx,23
jne no_14_l
mov eax,4
jmp che
no_14_l:
 
cmp ebx,24
jne no_15_l
mov eax,4
jmp che
no_15_l:
 
cmp ebx,25
jne no_16_l
mov eax,4
jmp che
no_16_l:
 
cmp ebx,26
jne no_17_l
mov eax,4
jmp che
no_17_l:
 
cmp ebx,27
jne no_18_l
mov eax,4
jmp che
no_18_l:
 
cmp ebx,28
jne no_19_l
mov eax,4
jmp che
no_19_l:
 
 
cmp ebx,45
jne no_25_l
mov eax,8
jmp che
no_25_l:
 
cmp ebx,46
jne no_26_l
mov eax,8
jmp che
no_26_l:
 
cmp ebx,47
jne no_27_l
mov eax,8
jmp che
no_27_l:
 
cmp ebx,48
jne no_28_l
mov eax,8
jmp che
no_28_l:
 
cmp ebx,49
jne no_29_l
mov eax,8
jmp che
no_29_l:
 
 
cmp ebx,50
jne no_30_l
mov eax,8
jmp che
no_30_l:
 
cmp ebx,40
je no_change_cursor
 
cmp ebx,41
je no_change_cursor
 
cmp ebx,42
je no_change_cursor
 
cmp ebx,43
je no_change_cursor
 
cmp ebx,44
je no_change_cursor
 
cmp ebx,52
je no_change_cursor
 
cmp ebx,51
je no_change_cursor
 
cmp ebx,52
je no_change_cursor
 
che:
 
dec eax
shl eax,2
mov ebx,[PointerToCursorsID]
add eax,ebx
mov ecx,[eax]
 
mov eax, 37
mov ebx, 5
int 0x40
 
no_change_cursor:
 
ret
 
;delete cursors
;IN
;eax- pointer to IDs of cursors
;OUT
;not returned value
 
delete_cursors:
 
mov [PointerToCursorsID],eax
mov edx,8
 
next_cursor_delete:
 
mov eax,[PointerToCursorsID]
mov ecx,[eax]
 
mov eax,37
mov ebx,6
int 0x40
 
add [PointerToCursorsID],4
 
dec edx
jnz next_cursor_delete
 
ret
 
PointerToCursorsID dd 0
/programs/media/animage/trunk/design.inc
9,10 → 9,10
cmp esi,1
jne no_volume_light_rectangle
 
mov [color_rectangle],9350878
mov [color_line1],5669590
mov [color_line2],12508927
mov [color_line3],9350878
mov [color_rectangle],0xc7cbcf
mov [color_line1],0xaeabae
mov [color_line2],0xffffff
mov [color_line3],0xc7cbcf
jmp exit_colors
 
no_volume_light_rectangle:
20,10 → 20,10
cmp esi,2
jne no_pressed_rectangle
 
mov [color_rectangle],9089258
mov [color_line1],5669590
mov [color_line2],9089258
mov [color_line3],9089258
mov [color_rectangle],0x666666
mov [color_line1],0xaeabae
mov [color_line2],0x666666
mov [color_line3],0x666666
 
jmp exit_colors
 
32,10 → 32,10
cmp esi,3
jne no_pressed_panel
 
mov [color_rectangle],9350878
mov [color_line1],5669590
mov [color_rectangle],0xc7cbcf
mov [color_line1],0xaeabae
mov [color_line2],7000
mov [color_line3],12508927
mov [color_line3],0xffffff
jmp exit_colors
 
no_pressed_panel:
44,9 → 44,9
jne no_pressed_light_panel
 
mov [color_rectangle],0xffffff
mov [color_line1],5669590
mov [color_line1],0xaeabae
mov [color_line2],7000
mov [color_line3],12508927
mov [color_line3],0xffffff
jmp exit_colors
 
no_pressed_light_panel:
54,10 → 54,10
cmp esi,5
jne no_light_pressed_rectangle
 
mov [color_rectangle],9089258
mov [color_line1],5669590
mov [color_line2],9089258
mov [color_line3],9089258
mov [color_rectangle],0x666666
mov [color_line1],0xaeabae
mov [color_line2],0x666666
mov [color_line3],0x666666
 
jmp exit_colors
 
66,10 → 66,10
cmp esi,6
jne no_work_rectangle
 
mov [color_rectangle],9350878
mov [color_line1],5669590
mov [color_line2],9350878
mov [color_line3],9350878
mov [color_rectangle],0xc7cbcf
mov [color_line1],0xaeabae
mov [color_line2],0xc7cbcf
mov [color_line3],0xc7cbcf
jmp exit_colors
 
no_work_rectangle:
77,10 → 77,10
cmp esi,7
jne no_work_rectangle_2
 
mov [color_rectangle],9350878
mov [color_line1],9350878
mov [color_line2],9350878
mov [color_line3],9350878
mov [color_rectangle],0xc7cbcf
mov [color_line1],0xc7cbcf
mov [color_line2],0xc7cbcf
mov [color_line3],0xc7cbcf
jmp exit_colors
 
no_work_rectangle_2:
227,8 → 227,9
mov [line_size_x],ecx
mov [line_size_y],edx
 
mov [color_line1],5669590
mov [color_line1],0xaeabae
 
 
;line 1
mov edx,[color_line1]
mov ebx,[line_x]
317,7 → 318,7
;----------------------------------------------------------
;lightlin 12508927
;lines 5669590
;workpan 9350878
;workpan 9350879
;btnpress 9089258
line_x dd 0
line_y dd 0
/programs/media/animage/trunk/dialog.inc
12,9 → 12,9
cld
;; mov esi,path
mov edi,path
mov eax,0
mov ecx,200
rep stosb
xor eax,eax
mov ecx,(1024+16)/4
rep stosd
 
;mov [get_loops],0
mov [dlg_pid_get],0
56,7 → 56,7
mov eax,60
mov ebx,1 ; define IPC
mov ecx,path ; offset of area
mov edx,150 ; size 150 bytes
mov edx,1024+16 ; size
int 0x40
 
; change wanted events list 7-bit IPC event
68,7 → 68,7
; STEP 3 run SYSTEM XTREE with parameters
;
 
mov eax,58
mov eax,70
mov ebx,run_fileinfo
int 0x40
 
79,16 → 79,15
mov eax,23
mov ebx,50 ;0.5 sec
int 0x40
dec eax
jz mred
dec eax
jz mkey
dec eax
jz mbutton
cmp al, 7-3
jz mgetmes
 
cmp eax,1
je mred
cmp eax,2
je mkey
cmp eax,3
je mbutton
cmp eax,7
je mgetmes
 
; Get number of procces
mov ebx,procinfo
mov ecx,-1
180,8 → 179,8
cld
mov esi,path+16
mov edi,path
mov ecx,200
rep movsb
mov ecx,1024/4
rep movsd
mov [edi],byte 0
 
jmp openoff
197,11 → 196,11
dd 0,0 ; Type of dialog
 
run_fileinfo:
dd 16
dd 7
dd 0
dd param
dd 0
dd procinfo ; 0x10000
dd 0
;run_filepath
db '/RD/1/SYSXTREE',0
 
224,8 → 223,8
cld
;; mov esi,path
mov edi,path
mov eax,0
mov ecx,200
xor eax,eax
mov ecx,(1024+16)/4
rep stosb
 
;mov [get_loops],0
268,7 → 267,7
mov eax,60
mov ebx,1 ; define IPC
mov ecx,path ; offset of area
mov edx,150 ; size 150 bytes
mov edx,1024+16 ; size
int 0x40
 
; change wanted events list 7-bit IPC event
280,7 → 279,7
; STEP 3 run SYSTEM XTREE with parameters
;
 
mov eax,58
mov eax,70
mov ebx,run_fileinfo
int 0x40
 
291,16 → 290,15
mov eax,23
mov ebx,50 ;0.5 sec
int 0x40
dec eax
jz mred
dec eax
jz mkey
dec eax
jz mbutton
cmp al, 7-3
jz mgetmes
 
cmp eax,1
je mred
cmp eax,2
je mkey
cmp eax,3
je mbutton
cmp eax,7
je mgetmes
 
; Get number of procces
mov ebx,procinfo
mov ecx,-1
392,8 → 390,8
cld
mov esi,path+16
mov edi,path
mov ecx,200
rep movsb
mov ecx,1024/4
rep movsd
mov [edi],byte 0
 
jmp openoff
409,11 → 407,11
dd 0,0 ; Type of dialog
 
run_fileinfo:
dd 16
dd 7
dd 0
dd param
dd 0
dd procinfo
dd 0
;run_filepath:
db '/RD/1/SYSXTREE',0
 
/programs/media/animage/trunk/events.inc
0,0 → 1,15
;----------------------------------------------------------
;---------------------system events------------------------
;----------------------------------------------------------
event:
mov eax,10
int 0x40
ret
;---------------------------------------------------------
;---------------SOUND of EVENTS---------------------------
;---------------------------------------------------------
sound:
mov eax,55
mov ebx,eax
int 0x40
ret
/programs/media/animage/trunk/events_of_buttons.inc
0,0 → 1,108
;---------------------------------------------
;-----------panel BUTTONS---------------------
;---------------------------------------------
buttons:
 
cmp [Current_instrument],21
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,CursorsID
call delete_cursors
 
mov eax,-1
int 0x40
 
no_exit:
 
 
mov [Current_instrument],eax
 
; set cursor for current instrument
pushad
 
mov eax,CursorsID
mov ebx,[Current_instrument]
 
call set_cursor
popad
 
 
 
cmp eax,10
jl still
 
;save instrumnets 10-40
cmp eax,40
jae no_save_last_instrument
 
mov [Last_instrument],eax
 
no_save_last_instrument:
 
cmp eax,10
je still
 
cmp eax,14
je still
 
cmp eax,11
je still
 
cmp eax,13
je still
 
cmp eax,12
je still
 
cmp eax,51
jne no_palette_
 
call TakeButtonInstruments
jmp still
 
no_palette_:
 
cmp eax,17
je still
 
cmp eax,21
jne no_allocation__
 
and [Activate_instrument],0
jmp still
 
no_allocation__:
 
cmp eax,20
jne no_kontur__
 
and [instrument_used],0
jmp still
 
no_kontur__:
 
call TakeButtonInstruments
 
jmp still
/programs/media/animage/trunk/events_of_keys.inc
0,0 → 1,94
;------------------------------------------
;-------------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],89
call drawwin
jmp change_screen
key6:
cmp eax,50
jne key7
mov [k],2
mov [Scroll1CoordinatX],9
mov [Scroll2CoordinatY],89
call drawwin
jmp change_screen
key7:
cmp eax,52
jne key8
mov [k],4
mov [Scroll1CoordinatX],9
mov [Scroll2CoordinatY],89
call drawwin
jmp change_screen
key8:
cmp eax,56
jne key9
mov [k],8
mov [Scroll1CoordinatX],9
mov [Scroll2CoordinatY],89
call drawwin
jmp change_screen
key9:
cmp eax,48
jne key10
mov [k],16
mov [Scroll1CoordinatX],9
mov [Scroll2CoordinatY],89
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,CursorsID
call delete_cursors
 
mov eax,-1
int 0x40
 
jmp still
 
change_screen:
 
call CalculatePositionScreen
call MovePictureToWorkScreen
call draw_scrollers
call PrintMousePos
 
jmp still
/programs/media/animage/trunk/events_of_mouse.inc
0,0 → 1,318
;---------------------------------------------
;-------------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,89
 
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,89
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,89
add edx,[Scroll2MaxSizeY]
mov [Scroll2CoordinatY],eax
 
sub eax,89
jns no_min_scroll2
 
mov [Scroll2CoordinatY],89
 
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,89
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+50
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
/programs/media/animage/trunk/events_of_window.inc
0,0 → 1,97
;----------------------------------------------------------
;-------------draw window of program-----------------------
;----------------------------------------------------------
drawwin:
 
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],400
jae no_minimum_size_y
 
mov [Window_SizeY],400
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+49+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],edx
 
no_znak2:
 
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,12
mov ebx,2
int 0x40
 
mov ecx,[k]
 
and [PosX],0
and [PosY],0
call MovePictureToWorkScreen
call draw_scrollers
call draw_icons
 
ret
/programs/media/animage/trunk/files.inc
0,0 → 1,135
;-----------------------------------------------------------
;-----------load heading of file in memory------------------
;-----------------------------------------------------------
 
load_heading_of_file:
 
mov [where_load_file],ebx
mov [full_file_path],eax
 
mov esi,[full_file_path]
mov edi,filepath
mov ecx,256
rep movsd
 
xor eax,eax
mov ecx,[where_load_file]
mov edx,filepath
 
mov [file_information],eax
mov [file_information+4],eax
mov [file_information+8],eax
mov [file_information+12],dword 512
mov [file_information+16],ecx
mov [file_information+20],al
mov [file_information+21],edx
 
mov eax,70
mov ebx,file_information
int 0x40
 
ret
;-----------------------------------------------------------
;--------load file in memory--------------------------------
;-----------------------------------------------------------
load_file:
mov [where_load_file],ebx
mov [full_file_path],eax
 
mov esi,[full_file_path]
mov edi,filepath
mov ecx,256
rep movsd
 
xor eax,eax
mov ebx,bufer_for_info
mov ecx,filepath
 
mov [file_information],dword 5
mov [file_information+4],eax
mov [file_information+8],eax
mov [file_information+12],eax
mov [file_information+16],ebx
mov [file_information+20],al
mov [file_information+21],ecx
 
mov eax,70
mov ebx,file_information
int 0x40
test eax,eax
jnz error_load_file
 
xor eax,eax
mov ebx,[bufer_for_info+32]
mov ecx,[where_load_file]
mov edx,filepath
 
mov [file_information],eax
mov [file_information+4],eax
mov [file_information+8],eax
mov [file_information+12],ebx
mov [file_information+16],ecx
mov [file_information+20],al
mov [file_information+21],edx
 
mov eax,70
mov ebx,file_information
int 0x40
 
error_load_file:
 
ret
;-----------------------------------------------------------
;---------------save in file from memory--------------------
;-----------------------------------------------------------
save_file:
mov [size_to_save],ecx
mov [pointer_to_data],ebx
mov [full_file_path],eax
 
mov esi,[full_file_path]
mov edi,filepath
mov ecx,256
rep movsd
 
xor eax,eax
mov ebx,[size_to_save]
mov ecx,[pointer_to_data]
mov edx,filepath
 
mov [file_information],dword 2
mov [file_information+4],eax
mov [file_information+8],eax
mov [file_information+12],ebx
mov [file_information+16],ecx
mov [file_information+20],al
mov [file_information+21],edx
 
mov eax,70
mov ebx,file_information
int 0x40
 
ret
 
;----------------------------------------------------------
;-------------file information structure-------------------
;----------------------------------------------------------
 
file_information:
dd 5
dd 0
dd 0
dd 0
dd bufer_for_info
dd 0
dd filepath
 
filepath rb 1040
 
bufer_for_info rd 10
full_file_path dd 0
where_load_file dd 0
size_to_save dd 0
pointer_to_data dd 0
/programs/media/animage/trunk/flood_fill.cur
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/programs/media/animage/trunk/icons.inc
0,0 → 1,158
;-----------------------------------------------------------
;---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)
;mov edi,[PointerToIcons]
call ReadGIF
 
ret
 
draw_icons:
 
mov [Icon_X],7
mov [Icon_Y],20+15+4
 
;draw panel picture
mov edx,[Icon_X]
shl edx,16
add edx,[Icon_Y]
mov ebx,[ScreenPointer]
add ebx,(1200*1000*3)+12
mov eax,7
mov ecx,417*65536+46
int 0x40
 
 
;main buttons of instrumnts
 
and [counter],0
mov [Icon_X],8
mov [Icon_Y],20+15+4+1
 
main_buttons:
 
mov eax,8
mov ebx,[Icon_X]
mov ecx,[Icon_Y]
dec ebx
dec ecx
shl ebx,16
shl ecx,16
add ebx,19
add ecx,20
mov edx,[counter]
add edx,10
add edx,1000000000000000000000000000000b
int 0x40
 
 
add [Icon_X],22
 
inc [counter]
cmp [counter],19
jne main_buttons
 
 
;buttons of brushes(and lines width)
and [counter],0
 
mov [Icon_X],7+1
mov [Icon_Y],20+15+4+25+1
 
next_button_brush:
 
mov eax,8
mov ebx,[Icon_X]
mov ecx,[Icon_Y]
dec ebx
dec ecx
shl ebx,16
shl ecx,16
add ebx,19
add ecx,20
mov edx,[counter]
add edx,40
add edx,1000000000000000000000000000000b
int 0x40
 
add [Icon_X],19
 
inc [counter]
cmp [counter],5
jne next_button_brush
 
 
;buttons of zoom
and [counter],0
 
mov [Icon_X],7+155+1
mov [Icon_Y],20+15+4+25+1
 
next_button_zoom:
 
mov eax,8
mov ebx,[Icon_X]
mov ecx,[Icon_Y]
dec ebx
dec ecx
shl ebx,16
shl ecx,16
add ebx,19
add ecx,20
mov edx,[counter]
add edx,45
add edx,1000000000000000000000000000000b
int 0x40
 
add [Icon_X],19
 
inc [counter]
cmp [counter],6
jne next_button_zoom
 
 
; button of palette
mov [Icon_X],7+105+1
mov [Icon_Y],20+15+4+25+1
 
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,21
mov edx,51
add edx,1000000000000000000000000000000b
int 0x40
 
; button of color
mov [Icon_X],7+128+1
mov [Icon_Y],20+15+4+25+1
 
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,21
mov edx,52
add edx,1000000000000000000000000000000b
int 0x40
 
mov eax,13
mov ebx,136*65536+20
mov ecx,65*65536+20
mov edx,[Color]
int 0x40
 
ret
/programs/media/animage/trunk/icons_instruments.inc
0,0 → 1,2402
;-----------------------------------------------------------
;-----instruments of panel(icon's instruments)--------------
;-----------------------------------------------------------
TakeButtonInstruments:
 
mov eax,[Current_instrument]
 
;*************************brush 1***********************
cmp eax,40
jne no_brush1
 
mov [Brush_SizeX],4
mov [Brush_SizeY],4
mov [Number_Brush],0
mov ebx,[Last_instrument]
mov [Current_instrument],ebx
 
mov [line_width],1
 
jmp still
no_brush1:
 
;*************************brush 2***********************
cmp eax,41
jne no_brush2
 
mov [Brush_SizeX],6
mov [Brush_SizeY],4
mov [Number_Brush],1
mov ebx,[Last_instrument]
mov [Current_instrument],ebx
 
mov [line_width],2
 
jmp still
no_brush2:
 
;*************************brush 3***********************
cmp eax,42
jne no_brush3
 
mov [Brush_SizeX],8
mov [Brush_SizeY],7
mov [Number_Brush],2
mov ebx,[Last_instrument]
mov [Current_instrument],ebx
 
mov [line_width],3
 
jmp still
no_brush3:
 
;************************brush 4************************
cmp eax,43
jne no_brush4
 
mov [Brush_SizeX],14
mov [Brush_SizeY],14
mov [Number_Brush],3
mov ebx,[Last_instrument]
mov [Current_instrument],ebx
 
mov [line_width],4
 
jmp still
no_brush4:
 
;************************brush 5************************
cmp eax,44
jne no_brush5
 
mov [Brush_SizeX],6
mov [Brush_SizeY],6
mov [Number_Brush],4
mov ebx,[Last_instrument]
mov [Current_instrument],ebx
 
mov [line_width],5
 
jmp still
no_brush5:
 
;*************************pensil************************
cmp eax,10
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,15
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,136*65536+20
mov ecx,65*65536+21
mov edx,[Color]
int 0x40
 
jmp still
no_pipetka:
 
;**********************draw brush***********************
cmp eax,11
jne no_brush
 
mov [Last_instrument],eax
 
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
mov eax,[Current_instrument]
mov [Last_instrument],eax
 
jmp still
no_brush:
 
;************************Flood Fill*******************
cmp eax,14
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,13
jne no_lastik
 
mov [Last_instrument],eax
mov [lastik_is_active],1
jmp lastik_in
 
no_lastik:
 
;******************************************************
cmp eax,12
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,51
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
 
mov eax,[Last_instrument]
mov [Current_instrument],eax
 
jmp still
no_palette:
 
;************************draw line**********************
cmp eax,16
jne no_line
 
mov [Last_instrument],eax
 
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,17
jne no_rectangle
 
mov [Last_instrument],eax
 
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,18
jne no_circle
 
mov [Last_instrument],eax
 
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,45
jne no_1_
mov [k],1
mov [Scroll1CoordinatX],9
mov [Scroll2CoordinatY],89
and [Current_instrument],0
call drawwin
jmp still
no_1_:
 
;*************************zoom 2************************
cmp eax,46
jne no_2_
mov [k],2
call drawwin
mov [Scroll1CoordinatX],9
mov [Scroll2CoordinatY],89
and [Current_instrument],0
jmp still
no_2_:
 
 
;*************************zoom 3************************
cmp eax,47
jne no_3_
mov [k],3
call drawwin
mov [Scroll1CoordinatX],9
mov [Scroll2CoordinatY],89
and [Current_instrument],0
jmp still
no_3_:
 
;*************************zoom 4************************
cmp eax,48
jne no_4_
mov [k],4
call drawwin
mov [Scroll1CoordinatX],9
mov [Scroll2CoordinatY],89
and [Current_instrument],0
jmp still
no_4_:
 
;************************zoom 8*************************
cmp eax,49
jne no_8_
mov [k],8
call drawwin
mov [Scroll1CoordinatX],9
mov [Scroll2CoordinatY],89
and [Current_instrument],0
jmp still
no_8_:
 
;************************zoom 16************************
cmp eax,50
jne no_16_
mov [k],16
call drawwin
mov [Scroll1CoordinatX],9
mov [Scroll2CoordinatY],89
and [Current_instrument],0
jmp still
no_16_:
 
;***************allocation of a countour*********************
cmp eax,21
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,23
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,24
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,20
jne no_kontur_
 
mov [Last_instrument],eax
 
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,19
jne no_ellips
 
mov [Last_instrument],eax
 
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:
 
 
jmp still
ret
/programs/media/animage/trunk/init_data.inc
0,0 → 1,48
;---------------------------------------------------------
;--------initializate data and params of program----------
;---------------------------------------------------------
mov [Scroll1CoordinatX],8+1
mov [Scroll2CoordinatY],20+15+1+50+3
mov [Window_SizeX],640
mov [Window_SizeY],220
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)+50*(20*20*3)+500000
mov [PointerToCopyPicture],0x19000+(1200*1000*3)+50*(20*20*3)+500000+(640*400*3)
mov [PointerToCopyPicture2],0x19000+(1200*1000*3)+50*(20*20*3)+500000+(640*400*3)*2
mov [PointerToEditBufer],0x19000+(1200*1000*3)+50*(20*20*3)+500000+(640*400*3)*3
mov [PointerToSpriteBufer],0x19000+(1200*1000*3)+50*(20*20*3)+500000+(640*400*3)*4
mov [PointerToPalette],0x19000+(1200*100*3)+50*(20*20*3)+1
mov [ReserveArray],0x19000+(1200*1000)*3+50*(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
 
;mov eax,68
;mov ebx,11
;int 0x40
 
;mov eax,68
;mov ebx,12
;mov ecx,60000
;int 0x40
 
;mov [PointerToIcons],eax
 
finit
/programs/media/animage/trunk/lastik.cur
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/programs/media/animage/trunk/load_dlls.inc
0,0 → 1,15
; load dll from file to memory
; IN
; eax - pointer to full dll path(path to dll +name_of_dll)
; OUT
; eax- handle to table of export of dll
 
load_dll:
 
mov ecx,eax
mov eax,68
mov ebx,19
int 0x40
 
ret
 
/programs/media/animage/trunk/load_from_parameters.inc
0,0 → 1,154
;loading file from parameters if parametrs <> 0
;IN
; eax- pointer to parameters
; ebx- pointer to path of file
;OUT
;value not returned
 
check_loading_from_parameters:
 
cmp [eax],byte 0
jz no_parameters
 
;copy file name
mov esi,eax
mov edi,ebx
mov ecx,256
rep movsb
 
;load file in memory
call load_picture
 
no_parameters:
ret
 
 
; load picture from file to memory
 
load_picture:
 
mov eax,file_path
mov ebx,[ScreenPointer]
add ebx,0x10000
 
call load_heading_of_file
 
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_1
 
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_1
 
no_bmp_file_1:
 
;-------------is this GIF file ?----------------
xor eax,eax
mov ax,[esi]
mov [type],ax
 
cmp [type],'GI'
jne no_gif_file_1
 
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_1
 
no_gif_file_1:
 
jmp no_unpakcing_file_1
 
exit_type_1:
 
;----------------------------------------------------------
;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)+50*(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,file_path
mov ebx,[PointerToCopyPicture]
add ebx,1000
 
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_1
;BMP DECODER
call bmptoimg
mov [save_flag],1
no_unpakcing_bmp_file_1:
 
 
cmp [type],'GI'
jne no_unpakcing_file_1
;GIF DECODER
sub edi,12
call ReadGIF
mov [save_flag],1
no_unpakcing_file_1:
 
call MovePictureToWorkScreen
 
mov [Scroll1CoordinatX],9
mov [Scroll2CoordinatY],89
ret
/programs/media/animage/trunk/memory.inc
0,0 → 1,28
;----------------------------------------------------------
;--------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+50*(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
/programs/media/animage/trunk/menu_instruments.inc
0,0 → 1,848
;-----------------------------------------------------------
;-----------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)+50*(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,file_path
mov ebx,[ScreenPointer]
add ebx,0x10000
 
call load_heading_of_file
 
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_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)+50*(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,file_path
mov ebx,[PointerToCopyPicture]
add ebx,1000
 
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
mov [save_flag],1
no_unpakcing_bmp_file:
 
 
cmp [type],'GI'
jne no_unpakcing_file
;GIF DECODER
sub edi,12
call ReadGIF
mov [save_flag],1
no_unpakcing_file:
 
call load_icons
call drawwin
 
open_2:
 
mov [Scroll1CoordinatX],9
mov [Scroll2CoordinatY],89
and [number_panel],0
and [number_menu],0
 
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 eax,file_path
mov ecx,ebx
mov ebx,[PointerToEditBufer]
push eax
push ebx
push ecx
 
call save_file
 
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
/programs/media/animage/trunk/other.cur
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/programs/media/animage/trunk/palette.inc
0,0 → 1,56
;-----------------------------------------------------------
;-------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
/programs/media/animage/trunk/palitra256.inc
0,0 → 1,133
;------------------------------------------------
;--------Palette with 256 colors-----------------
;------------------------------------------------
;three bytes for one color
palitra:
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
/programs/media/animage/trunk/panel_buttons.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/programs/media/animage/trunk/panel_data.inc
0,0 → 1,93
;**********************************************************
;------------------TEXT DATA-------------------------------
;**********************************************************
name_of_program db 'Graphics editor <<ANIMAGE>> V 1.1',0
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 65,24,4
db 'EDIT'
dd 115,24,11
db 'INSTRUMENTS'
dd 235,24,7
db 'PALETTE'
dd 315,24,7
db 'FILTERS'
dd 395,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,120,100
dd 385,36,120,100
dd 295,36,120,100
dd 225,36,120,100
dd 105,36,120,100
dd 55,36,120,100;20
dd 5,36,120,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 65,45,4
db 'UNDO'
dd 65,65,4
db 'COPY'
dd 65,85,5
db 'PASTE'
dd 65,105,3
db 'CUT'
dd 65,125,13
db 'CLEARE SCREEN'
;dd 95,145,12
;db 'ALLOCATE ALL'
menu_text3:
dd 115,45,3
db 0,0,0;'PENCIL'
dd 115,65,3
db 0,0,0;'BRUSHES'
dd 115,85,3
db 0,0,0;'COLORS'
dd 115,105,3
db 0,0,0;'PIPETKA'
menu_text4:
dd 235,45,1
db 0,0,0
menu_text5:
dd 315,45,1
db 0,0,0
menu_text6:
dd 395,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
/programs/media/animage/trunk/panel_engen.inc
0,0 → 1,540
;-------------------------------------------------
;-----interraction panel with user----------------
;-------------------------------------------------
panel_interraction:
;>>>>>>>>>>>>>>>>>>>>>>>>>>
mov eax,18
mov ebx,14
;int 0x40
 
and [Panel_flag],0
;collision with text on panel
next_columnus_text:
 
mov eax,[edi]
mov ebx,[edi+4]
sub eax,10
sub ebx,3
mov [Icon_text_x],eax
mov [Icon_text_y],ebx
 
mov esi,[edi+8]
imul esi,10
mov [button_menu_size_x],esi
mov [button_menu_size_y],dword 13
 
mov esi,[edi+8]
add edi,4*3
add edi,esi
 
mov ecx,[MouseX]
mov edx,[MouseY]
 
push edi
mov edi,[button_menu_size_y]
mov esi,[button_menu_size_x]
call columnus
 
pop edi
mov esi,7
 
test eax,eax
jz no_columnus_text
 
mov esi,1
mov [Panel_flag],1
call GetMouseClick
 
test eax,eax
jz no_mouse_pressed
 
mov eax,18
mov ebx,14
;int 0x40
 
call print_panel_menu
 
no_mouse_pressed:
 
no_columnus_text:
 
mov eax,[Icon_text_x]
mov ebx,[Icon_text_y]
mov ecx,[button_menu_size_x] ;-------------------------
mov edx,[button_menu_size_y]
call draw_volume_rectangle
 
push [counter]
push edi
mov [counter],7
mov edi,panel_text
call print_panel_text
 
pop edi
pop [counter]
dec [counter]
jnz next_columnus_text
 
ret
;---------------------------------------------------------
;-----draw panel menu(main engin of panel)----------------
;---------------------------------------------------------
print_panel_menu:
 
 
push [counter]
;delit main buttons(some time)
 
mov [counter],10
 
next_icon_delit1:
 
mov eax,8
mov edx,[counter]
add edx,11100000000000000000000000000000b
int 0x40
inc [counter]
 
cmp [counter],30
jl next_icon_delit1
 
;delit buttons of brushes
mov [counter],40
 
next_icon_delit2:
 
mov eax,8
mov edx,[counter]
add edx,11100000000000000000000000000000b
int 0x40
inc [counter]
 
cmp [counter],45
jl next_icon_delit2
 
;delit buttons of zoom
mov [counter],45
 
next_icon_delit3:
 
mov eax,8
mov edx,[counter]
add edx,11100000000000000000000000000000b
int 0x40
inc [counter]
 
cmp [counter],50
jl next_icon_delit3
 
;delit buttons of palette
mov eax,8
mov edx,51
add edx,11100000000000000000000000000000b
int 0x40
 
 
;delit buttons of color
mov eax,8
mov edx,52
add edx,11100000000000000000000000000000b
int 0x40
 
pop [counter]
 
push esi
mov esi,[counter]
dec esi
shl esi,4
 
mov eax,[menu_rectangles+esi]
mov ebx,[menu_rectangles+esi+4]
mov ecx,[menu_rectangles+esi+8]
mov edx,[menu_rectangles+esi+12]
mov esi,1
mov [menu_coordinat_x],eax
mov [menu_size_x],ecx
call draw_volume_rectangle
pop esi
 
calculate_counter_menu:
 
 
;calculate menu counter
mov eax,[counter]
dec eax
shl eax,2
mov ebx,[menu_counters+eax]
mov [counter_menu],ebx
 
call GetMouseCoordinats
 
and [menu_counter],0
push esi
push edi
;ᣫ ¦¨¢ ­¨¥  ­¨¬ æ¨¨ >>>>>>>>>>>>>>>>>>
mov eax,18
mov ebx,14
;int 0x40
 
menu_loop:
 
mov eax,[menu_coordinat_x]
mov ebx,36
mov ecx,[MouseX]
mov edx,[MouseY]
mov esi,[menu_size_x]
mov edi,18
add ebx,[menu_counter]
add eax,2
sub esi,3
inc ebx
call columnus
mov esi,7
 
test eax,eax
jz no_columnus_menu_text
 
mov esi,1
 
no_columnus_menu_text:
 
mov eax,[menu_coordinat_x]
mov ebx,36
mov ecx,[menu_size_x]
mov edx,18
add ebx,[menu_counter]
add eax,2
sub ecx,3
inc ebx
call draw_volume_rectangle
add [menu_counter],20
 
 
dec [counter_menu]
jnz menu_loop
 
 
;print menu text
push [counter]
mov esi,[counter]
dec esi
shl esi,2
mov edi,[menu_text_en+esi]
mov eax,[menu_counters+esi]
mov [counter],eax
call print_panel_text
pop [counter]
pop edi
pop esi
 
 
menu_still:
 
mov eax,10
int 0x40
mov eax,2
int 0x40
mov eax,17
int 0x40
 
call GetMouseClick
 
test eax,eax
jz calculate_counter_menu
 
call GetMouseCoordinats
 
;calculate menu counter
mov eax,[counter]
dec eax
shl eax,2
mov ebx,[menu_counters+eax]
mov [counter_menu],ebx
 
and [menu_counter],0
and [counter_11],0
 
push esi
push edi
 
menu_loop2:
 
 
mov eax,[menu_coordinat_x]
mov ebx,36
mov ecx,[MouseX]
mov edx,[MouseY]
mov esi,[menu_size_x]
mov edi,18
add ebx,[menu_counter]
add eax,2
sub esi,3
inc ebx
call columnus
 
inc [counter_11]
 
test eax,eax
jz no_columnus_menu_text2
 
mov esi,[counter_11]
mov [number_menu],esi
 
no_columnus_menu_text2:
 
add [menu_counter],20
 
dec [counter_menu]
jnz menu_loop2
 
pop edi
pop esi
 
mov eax,5
mov ebx,15
int 0x40
 
push [counter]
pushad
 
call drawwin
 
popad
pop [counter]
 
mov eax,[counter]
mov [number_panel],eax
 
call TakeInstruments
jmp still
 
;---------------------------------------------------------
;------print mouse position on panel----------------------
;---------------------------------------------------------
PrintMousePos:
 
pushad
 
mov eax,[Window_SizeX]
sub eax,75
mov ebx,20+15+6
mov ecx,52
mov edx,18
mov esi,4
call draw_volume_rectangle
 
mov eax,[Window_SizeX]
sub eax,75
mov ebx,20+15+6+18+2
mov ecx,52
mov edx,18
mov esi,4
call draw_volume_rectangle
 
mov eax,[Window_SizeX]
sub eax,70
mov ebx,20+15+6+6
and ecx,0
mov edx,mouse_pos_x
mov esi,2
call print_text
 
mov eax,[Window_SizeX]
sub eax,70
mov ebx,20+15+6+6+18+1
and ecx,0
mov edx,mouse_pos_y
mov esi,2
call print_text
 
mov eax,47
mov ebx,4*65536
mov ecx,[ScreenX]
add ecx,[PosX]
mov edx,[Window_SizeX]
sub edx,55
shl edx,16
add edx,20+15+6+6
and esi,0
int 0x40
 
mov eax,47
mov ebx,4*65536
mov ecx,[ScreenY]
add ecx,[PosY]
mov edx,[Window_SizeX]
sub edx,55
shl edx,16
add edx,20+15+6+18+1+6
and esi,0
int 0x40
 
popad
ret
;----------------------------------------------------------
;---------------draw panel in window of program------------
;----------------------------------------------------------
draw_panel:
 
mov eax,5
mov ebx,20
mov ecx,[Window_SizeX]
mov edx,15
mov esi,6
sub ecx,10
call draw_volume_rectangle
 
;mov eax,5
;mov ebx,20
;mov ecx,[Window_SizeX]
;mov edx,15
;mov esi,6
;sub ecx,10
;call draw_volume_rectangle
 
mov eax,5
mov ebx,20+15+1
mov ecx,[Window_SizeX]
mov edx,50
mov esi,1
sub ecx,10
call draw_volume_rectangle
 
mov eax,5
mov ebx,20+15+1+50+1
mov ecx,[Window_SizeX]
mov edx,[Window_SizeY]
mov esi,1
sub ecx,10+20
sub edx,20+15+1+50+1+5+20
call draw_volume_rectangle
 
mov eax,5
mov ebx,[Window_SizeY]
mov ecx,[Window_SizeX]
mov edx,20+10
mov esi,3
sub ecx,30
sub ebx,25+10
call draw_volume_rectangle
 
mov eax,[Window_SizeX]
mov ebx,20+15+1+49+2
mov ecx,20+10
mov edx,[Window_SizeY]
mov esi,3
sub eax,25+10
sub edx,20+15+1+49+5+20
call draw_volume_rectangle
 
mov eax,[Window_SizeX]
mov ebx,[Window_SizeY]
mov ecx,20+10
mov edx,20+10
mov esi,6
sub eax,25+10
sub ebx,25+10
call draw_volume_rectangle
 
;mov eax,445
;mov ebx,20+15+6
;mov ecx,37
;mov edx,37
;mov esi,4
;call draw_volume_rectangle
 
ret
 
 
;----------------------------------------------------------
;----------print text on the panel and menu----------------
;----------------------------------------------------------
print_panel_text:
next_panel_text:
 
mov eax,[edi]
mov ebx,[edi+4]
;xor ecx,ecx
mov ecx,0x10000000
mov edx,edi
add edx,12
mov esi,[edi+8]
add edi,esi
add edi,3*4
 
push edi
call print_text
pop edi
 
dec [counter]
jnz next_panel_text
ret
;----------------------------------------------------------
;------------draw lines of scoll---------------------------
;----------------------------------------------------------
draw_scrollers:
 
mov edi,[CounterX]
mov eax,[Scroll1CoordinatX]
mov ebx,[Window_SizeY]
sub ebx,22+10
mov ecx,[Window_SizeX]
sub ecx,10+5+20+10+1
mov edx,14+10
mov esi,1
mov [Scroll1CoordinatX],eax
mov [Scroll1CoordinatY],ebx
mov [Scroll1MaxSizeY],edx
mov [Scroll1MaxSizeX],ecx
imul ecx,edi
push eax
push ebx
push edx
mov eax,ecx
mov ebx,[Picture_SizeX]
cdq
idiv ebx
mov ecx,eax
pop edx
pop ebx
pop eax
mov [Scroll1SizeX],ecx
mov edi,[Scroll1MaxSizeX]
sub edi,ecx
mov [Scroll1FreeX],edi
call draw_volume_rectangle
 
mov eax,[Window_SizeX]
sub eax,22+10
mov ebx,[Scroll2CoordinatY]
mov ecx,14+10
mov edx,[Window_SizeY]
sub edx,20+15+1+49+10+20+11
mov esi,1
mov [Scroll2CoordinatX],eax
mov [Scroll2CoordinatY],ebx
mov [Scroll2MaxSizeX],ecx
mov [Scroll2MaxSizeY],edx
 
imul edx,[CounterY]
push eax
push ebx
mov eax,edx
mov ebx,[Picture_SizeY]
cdq
idiv ebx
mov edx,eax
pop ebx
pop eax
mov [Scroll2SizeY],edx
mov edi,[Scroll2MaxSizeY]
sub edi,edx
mov [Scroll2FreeY],edi
 
call draw_volume_rectangle
 
ret
ret
 
button_menu_size_x dd 0
button_menu_size_y dd 0
/programs/media/animage/trunk/pencil.cur
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/programs/media/animage/trunk/pipette.cur
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/programs/media/animage/trunk/screen.inc
0,0 → 1,352
;----------------------------------------------------------
;--------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+49+5+1
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
;-----------------------------------------------------------
;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
;-----------------------------------------------------------
;-----------calculate cordinats on work picture--------------
;-----------------------------------------------------------
GetScreenCordinats:
 
mov eax,[MouseX]
mov ebx,[MouseY]
sub eax,9
sub ebx,87
 
mov ecx,[k]
cdq
idiv ecx
mov [ScreenX],eax
mov eax,ebx
cdq
idiv ecx
mov [ScreenY],eax
 
ret
/programs/media/animage/trunk/spray.cur
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/programs/media/animage/trunk/spray.inc
0,0 → 1,68
;------------------------------------------
;-----------------Sprays-------------------
;------------------------------------------
 
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
/programs/media/animage/trunk/sprites.inc
0,0 → 1,111
;-----------------------------------------------------------
;------------------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
/programs/media/animage/trunk/string.inc
0,0 → 1,19
;-----------------------------------------------------------
;-------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
/programs/media/animage/trunk/time.inc
0,0 → 1,11
;---------------------------------------------------------
;---------- get time in 1/100 secunds---------------------
;---------------------------------------------------------
Clock:
mov eax,26
mov ebx,9
int 0x40
mov [time],eax
 
ret
 
/programs/media/animage/trunk/width_lines.inc
0,0 → 1,64
;-----------------------------------------
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
/programs/media/animage/trunk/zoom.cur
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property