Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 6358 → Rev 6359

/programs/media/animage/trunk/animage.asm
1,24 → 1,31
;*******************************************************
;**************GRAPHICS EDITOR ANIMAGE *****************
;*******************************************************
; version: 1.5
; last update: 21.03.2016
; changes: Use library 'kmenu.obj'
; autors: IgorA, Veliant
;--------------------------------------------------------
; version: 1.4
; last update: 12/03/2016
; last update: 12.03.2016
; changes: Use library 'libimg.obj'
; autors: IgorA
;--------------------------------------------------------
; version: 1.3
; last update: 05/10/2010
; last update: 05.10.2010
; written by: Marat Zakiyanov aka Mario79, aka Mario
; changes: Fixed window flicker when redrawing,
; Fixed memory leak for stack
;--------------------------------------------------------
; version: 1.2
; last update: 30/09/2010
; last update: 30.09.2010
; written by: Marat Zakiyanov aka Mario79, aka Mario
; changes: Program used function 68 instead 64 is now,
; select path with OpenDialog
;--------------------------------------------------------
; version 1.1 year 9.12.2006
; AUTORS:
; version: 1.1
; last update: 09.12.2006
; autors:
; programming by andrew_programmer
; design by golus
 
48,16 → 55,23
; *** constants for interface ***
 
; ª®à४â¨à®¢ª¨ ­  ᪨­
ci_offs_skin_w equ 0 ; 5 ;ª®à४â¨à®¢ª  ­  è¨à¨­ã à ¬ª¨ ᪨­ 
ci_offs_skin_h equ 0 ;24 ;ª®à४â¨à®¢ª  ­  ¢ëá®âã ᪨­ 
ci_offs_skin_w equ 5 ;ª®à४â¨à®¢ª  ­  è¨à¨­ã à ¬ª¨ ᪨­ 
ci_offs_skin_h equ 24 ;ª®à४â¨à®¢ª  ­  ¢ëá®âã ᪨­ 
 
; £« ¢­®¥ ®ª­®
ci_wnd_min_siz_x equ 585 ;minimum size x
ci_wnd_min_siz_y equ 400 ;minimum size y
 
; ¯ ­¥«ì ¨­áâà㬥­â®¢
ci_panel_x_pos equ 0 ;ª®®à¤¨­ â  x ¤«ï ¯ ­¥«¨
ci_panel_y_pos equ 20 ;ª®®à¤¨­ â  y ¤«ï ¯ ­¥«¨
ci_panel_but_y1 equ ci_panel_y_pos +5 ;ª®®à¤¨­ â  y ¤«ï 1-£® à鸞 ª­®¯®ª
ci_panel_but_y2 equ ci_panel_y_pos+30 ;ª®®à¤¨­ â  y ¤«ï 2-£® à鸞 ª­®¯®ª
ci_palete_y_pos equ ci_panel_y_pos+51 ;ª®®à¤¨­ â  y ¤«ï ¯ «¨âàë 梥⮢
 
; ®ª­® । ªâ®à 
ci_edit_wnd_x_pos equ 5 ;ª®®à¤¨­ â  x ¤«ï ®ª­  । ªâ®à 
ci_edit_wnd_y_pos equ 87 ;ª®®à¤¨­ â  y ¤«ï ®ª­  । ªâ®à 
ci_edit_wnd_x_pos equ 0 ;ª®®à¤¨­ â  x ¤«ï ®ª­  । ªâ®à 
ci_edit_wnd_y_pos equ 71 ;ª®®à¤¨­ â  y ¤«ï ®ª­  । ªâ®à 
ci_edit_wnd_border equ 3 ;à ¬ª  ¢®ªà㣠®ª­  । ªâ®à 
 
; áªà®««¨­£¨
79,6 → 93,7
 
START:
mcall SF_SYS_MISC,SSF_HEAP_INIT
mcall SF_STYLE_SETTINGS, SSF_GET_COLORS, syscolors, syscolors_end-syscolors
load_libraries l_libs_start,end_l_libs
 
97,6 → 112,7
call GetMemory
call cleare_work_arrea
call load_icons
call init_main_menu
 
;load cursors
mov eax,CursorsID
177,6 → 193,7
include 'palette.inc'
include 'files.inc'
include 'time.inc'
include 'menu.inc'
;-----------------------------------------------------------
;------------variables and data of program------------------
;-----------------------------------------------------------
337,6 → 354,9
library_path rb 4096
cur_dir_path rb 4096
procinfo: rb 1024
align 4
syscolors rb 192
syscolors_end:
;---------------------------------------------------------------------
align 4
rb 4096
/programs/media/animage/trunk/design.inc
13,10 → 13,11
cmp esi,1
jne no_volume_light_rectangle
 
mov [color_rectangle],0xc7cbcf
;mov esi,dword[syscolors+20]
mov [color_rectangle],0xc7cbcf ;esi
mov [color_line1],0xaeabae
mov [color_line2],0xffffff
mov [color_line3],0xc7cbcf
mov [color_line3],0xc7cbcf ;esi
jmp exit_colors
;----------------------------------------------------------
no_volume_light_rectangle:
33,7 → 34,8
cmp esi,3
jne no_pressed_panel
 
mov [color_rectangle],0xc7cbcf
mov esi,dword[syscolors+20]
mov [color_rectangle],esi
mov [color_line1],0xaeabae
mov [color_line2],7000
mov [color_line3],0xffffff
63,10 → 65,11
cmp esi,6
jne no_work_rectangle
 
mov [color_rectangle],0xc7cbcf
mov esi,dword[syscolors+20]
mov [color_rectangle],esi
mov [color_line1],0xaeabae
mov [color_line2],0xc7cbcf
mov [color_line3],0xc7cbcf
mov [color_line2],esi
mov [color_line3],esi
jmp exit_colors
;----------------------------------------------------------
no_work_rectangle:
73,10 → 76,11
cmp esi,7
jne no_work_rectangle_2
 
mov [color_rectangle],0xc7cbcf
mov [color_line1],0xc7cbcf
mov [color_line2],0xc7cbcf
mov [color_line3],0xc7cbcf
mov esi,dword[syscolors+20]
mov [color_rectangle],esi
mov [color_line1],esi
mov [color_line2],esi
mov [color_line3],esi
jmp exit_colors
;----------------------------------------------------------
no_work_rectangle_2:
/programs/media/animage/trunk/dialog2.inc
15,10 → 15,21
call print_cursor
 
opros:
mcall SF_SLEEP, 5 ;fix cpu use 100%
mcall SF_WAIT_EVENT
 
cmp eax,1 ;redraw window
je exit_cycle
jne @f
call dialog2_draw
 
mov ebx,[string_x]
shl ebx,16
add ebx,[string_y]
mov edx,string_
mov esi,[MaxSizeString]
mcall SF_DRAW_TEXT,,0
jmp opros
@@:
cmp eax,3 ;press button
je exit_cycle
 
152,9 → 163,13
MaxSizeString dd 0
string_x dd 0
string_y dd 0
;**********************************************************
 
;----------------------------------------------------------
value:
;input:
; eax - pointer to string
;output:
; eax - value
str_to_int:
xor edx,edx
cycle_value_:
xor ebx,ebx
232,5 → 247,58
error:
mov eax,edx
ret
 
;----------------------------------------------------------
align 4
dialog2_draw:
mov eax,80
mov ebx,100
mov ecx,150
mov edx,90
mov esi,1
call draw_volume_rectangle ; dialog 'file new'
 
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,177
mov ebx,170
mov ecx,40
mov edx,15
mov esi,1
call draw_volume_rectangle ; button [Ok]
 
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
ret
 
length_number dd 0
/programs/media/animage/trunk/events_of_buttons.inc
4,40 → 4,30
buttons:
 
cmp [Current_instrument],21
jne no_finish_instrument_button
 
jne @f
cmp [instrument_used],1
jne no_finish_instrument_button
 
jne @f
cmp [Activate_instrument],0
jne no_finish_instrument_button
 
jne @f
cmp [crossing],1
jne no_finish_instrument_button
 
jne @f
mov [finishing_crossing],1
call TakeButtonInstruments
@@:
 
no_finish_instrument_button:
mcall SF_GET_BUTTON
 
mov eax,17
mcall
 
shr eax,8
 
cmp eax,1
jne no_exit
 
mov eax,CursorsID
call delete_cursors
 
or eax,-1
mcall
 
mcall SF_TERMINATE_PROCESS
no_exit:
 
 
mov [Current_instrument],eax
call button_handler_main_menu
 
; set cursor for current instrument
pushad
48,8 → 38,6
call set_cursor
popad
 
 
 
cmp eax,10
jl still
 
/programs/media/animage/trunk/events_of_mouse.inc
2,6 → 2,8
;-------------interraction MOUSE--------------
;---------------------------------------------
mouse:
stdcall [kmainmenu_dispatch_cursorevent], [main_menu]
 
or ecx,-1
mcall SF_THREAD_INFO,procinfo
14,10 → 16,10
mov edx,[Window_SizeX]
sub edx,5
 
cmp ebx,20
jle no_panel
;cmp ebx,0
;jle no_panel
 
cmp ebx,20+15
cmp ebx,ci_panel_y_pos
jae no_panel
 
cmp eax,5
27,8 → 29,6
jae no_panel
 
call GetMouseCoordinats
mov [counter],7
mov edi,panel_text
jmp panel_interraction
 
no_panel:
35,8 → 35,6
cmp [Panel_flag],0
jz no_redraw_panel
 
mov [counter],7
mov edi,panel_text
jmp panel_interraction
 
no_redraw_panel:
/programs/media/animage/trunk/events_of_window.inc
51,7 → 51,7
shl ecx,16
add ebx, [Window_SizeX]
add ecx, [Window_SizeY]
mcall SF_CREATE_WINDOW,,,0x53aabbcc,,name_of_program
mcall SF_CREATE_WINDOW,,,0x73aabbcc,,name_of_program
mov eax,[procinfo+70] ;staus of window
test eax,100b
58,24 → 58,18
jne .end
;------------------------------------------------
mov eax,5
mov ebx,20
mov ecx,[Window_SizeX]
mov edx,15
mov esi,6
sub ecx,10
call draw_volume_rectangle ; top menu - file and etc.
mov ebx,[Window_SizeX]
sub ebx,5+ci_panel_x_pos+ci_offs_skin_w-1
mcall SF_DRAW_RECT,,ci_panel_y_pos,dword[syscolors+20] ; ç¨á⪠ ¯®«®áë ¤«ï ¬¥­î
 
mov [counter],7
mov edi,panel_text
call print_panel_text
call put_main_menu
;------------------------------------------------
mov eax,5
mov ebx,20+15+1
mov eax,ci_panel_x_pos
mov ebx,ci_panel_y_pos
mov ecx,[Window_SizeX]
mov edx,50
mov esi,1
sub ecx,10
sub ecx,5+ci_panel_x_pos+ci_offs_skin_w
call draw_volume_rectangle ; tools panel
call draw_icons
call PrintMousePos
97,7 → 91,7
shl ecx,16
mov cx,dx ;¢ëá®â  ¡®à¤îà 
 
mcall SF_DRAW_RECT,,,0xc7cbcf ;¡®à¤îà á¯à ¢  ®â ®ª­  ¯¥à¥¤ áªà®««¨­£®¬
mcall SF_DRAW_RECT,,,dword[syscolors+20] ;¡®à¤îà á¯à ¢  ®â ®ª­  ¯¥à¥¤ áªà®««¨­£®¬
;------------------------------------------------
mcall ,<ci_edit_wnd_x_pos,ci_edit_wnd_border> ;¡®à¤îà á«¥¢  ®â ®ª­ 
;------------------------------------------------
115,7 → 109,7
shl ecx,16
mov cx,dx ;¢ëá®â  ¡®à¤îà 
 
mcall SF_DRAW_RECT,,,0xc7cbcf ;¡®à¤îà ¯®¤ ®ª­®¬ ¨ ­ ¤ áªà®««¨­£®¬
mcall SF_DRAW_RECT,,,dword[syscolors+20] ;¡®à¤îà ¯®¤ ®ª­®¬ ¨ ­ ¤ áªà®««¨­£®¬
;------------------------------------------------
mcall ,,<ci_edit_wnd_y_pos,ci_edit_wnd_border> ;¡®à¤îà ¯®¤ ¯ ­¥«ìî ¨ ­ ¤ ®ª­®¬
;------------------------------------------------
/programs/media/animage/trunk/icons.inc
11,10 → 11,9
ret
 
draw_icons:
mov [Icon_X],ci_panel_x_pos+2
mov [Icon_Y],ci_panel_y_pos+3
 
mov [Icon_X],7
mov [Icon_Y],20+15+4
 
;draw panel picture
mov edx,[Icon_X]
shl edx,16
28,13 → 27,12
;main buttons of instrumnts
 
and [counter],0
mov [Icon_X],9
mov [Icon_Y],21+15+4+1
mov [Icon_X],ci_panel_x_pos+4
 
main_buttons:
 
mov ebx,[Icon_X]
mov ecx,[Icon_Y]
mov ecx,ci_panel_but_y1
dec ebx
dec ecx
shl ebx,16
57,13 → 55,12
;buttons of brushes(and lines width)
and [counter],0
 
mov [Icon_X],8+1
mov [Icon_Y],20+15+4+25+1
mov [Icon_X],ci_panel_x_pos+4
 
next_button_brush:
 
mov ebx,[Icon_X]
mov ecx,[Icon_Y]
mov ecx,ci_panel_but_y2
dec ebx
dec ecx
shl ebx,16
85,13 → 82,12
;buttons of zoom
and [counter],0
 
mov [Icon_X],8+155+1
mov [Icon_Y],20+15+4+25+1
mov [Icon_X],ci_panel_x_pos+159
 
next_button_zoom:
 
mov ebx,[Icon_X]
mov ecx,[Icon_Y]
mov ecx,ci_panel_but_y2
dec ebx
dec ecx
shl ebx,16
111,11 → 107,10
 
 
; button of palette
mov [Icon_X],7+105+1
mov [Icon_Y],19+15+4+25+1
mov [Icon_X],ci_panel_x_pos+108
 
mov ebx,[Icon_X]
mov ecx,[Icon_Y]
mov ecx,ci_panel_but_y2-1
dec ebx
dec ecx
shl ebx,16
127,11 → 122,10
mcall SF_DEFINE_BUTTON
 
; button of color
mov [Icon_X],7+128+1
mov [Icon_Y],19+15+4+25+1
mov [Icon_X],ci_panel_x_pos+131
 
mov ebx,[Icon_X]
mov ecx,[Icon_Y]
mov ecx,ci_panel_but_y1-1
dec ebx
dec ecx
shl ebx,16
142,6 → 136,7
add edx,1000000000000000000000000000000b
mcall SF_DEFINE_BUTTON
 
mcall SF_DRAW_RECT, 136*65536+19,64*65536+19,[Color]
mcall SF_DRAW_RECT, ((ci_panel_x_pos+130) shl 16)+21,\
((ci_panel_y_pos+28) shl 16)+21, [Color]
 
ret
/programs/media/animage/trunk/icons_instruments.inc
321,7 → 321,8
and ebx,0xffffff
mov [Color],ebx
 
mcall SF_DRAW_RECT, 136*65536+20, 65*65536+21, [Color]
mcall SF_DRAW_RECT, ((ci_panel_x_pos+130) shl 16)+21,\
((ci_panel_y_pos+28) shl 16)+21, [Color]
 
jmp still
no_pipetka:
618,13 → 619,13
jne no_palette
 
mov eax,20
mov ebx,100
mov ebx,ci_palete_y_pos
mov ecx,32*10+32*5+7
mov edx,8*10+7*10
mov edx,140
mov esi,1
call draw_volume_rectangle
mov [x],20+5
mov [y],100+10
mov [y],ci_palete_y_pos+10
mov edi,256
xor esi,esi
next_rectangle:
675,7 → 676,7
jz wait_events
call GetMouseCoordinats
mov [x],20+5
mov [y],100+10
mov [y],ci_palete_y_pos+10
mov [counter],0
next_rectangle_column:
mov eax,[x]
/programs/media/animage/trunk/menu.inc
0,0 → 1,169
KMENUITEM_NORMAL equ 0
KMENUITEM_SUBMENU equ 1
KMENUITEM_SEPARATOR equ 2
 
init_main_menu:
stdcall [kmenu_init], syscolors
stdcall [ksubmenu_new]
mov [main_menu], eax
stdcall [ksubmenu_new]
mov [main_menu_file], eax
stdcall [ksubmenu_new]
mov [main_menu_edit], eax
stdcall [ksubmenu_new]
mov [main_menu_instr], eax
; init 'File' menu
stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_File_New, 0x71
stdcall [ksubmenu_add], [main_menu_file], eax
stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_File_Open, 0x72
stdcall [ksubmenu_add], [main_menu_file], eax
stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_File_Save, 0x73
stdcall [ksubmenu_add], [main_menu_file], eax
stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_File_SaveAs, 0x74
stdcall [ksubmenu_add], [main_menu_file], eax
stdcall [kmenuitem_new], KMENUITEM_SEPARATOR, 0, 0
stdcall [ksubmenu_add], [main_menu_file], eax
stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_File_Exit, 0x75
stdcall [ksubmenu_add], [main_menu_file], eax
; add 'File' menu to main
stdcall [kmenuitem_new], KMENUITEM_SUBMENU, sz_main_menu_File, [main_menu_file]
stdcall [ksubmenu_add], [main_menu], eax
; init 'Edit' menu
stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Edit_Undo, 0x61
stdcall [ksubmenu_add], [main_menu_edit], eax
stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Edit_Redo, 0x62
stdcall [ksubmenu_add], [main_menu_edit], eax
stdcall [kmenuitem_new], KMENUITEM_SEPARATOR, 0, 0
stdcall [ksubmenu_add], [main_menu_edit], eax
stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Edit_Copy, 0x63
stdcall [ksubmenu_add], [main_menu_edit], eax
stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Edit_Paste, 0x64
stdcall [ksubmenu_add], [main_menu_edit], eax
stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Edit_Cut, 0x65
stdcall [ksubmenu_add], [main_menu_edit], eax
stdcall [kmenuitem_new], KMENUITEM_SEPARATOR, 0, 0
stdcall [ksubmenu_add], [main_menu_edit], eax
stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Edit_ClS, 0x66
stdcall [ksubmenu_add], [main_menu_edit], eax
; add 'Edit' menu to main
stdcall [kmenuitem_new], KMENUITEM_SUBMENU, sz_main_menu_Edit, [main_menu_edit]
stdcall [ksubmenu_add], [main_menu], eax
 
; init 'Edit' menu
stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Instr_Pencil, 0x51
stdcall [ksubmenu_add], [main_menu_instr], eax
 
; add 'Instruments' menu to main
stdcall [kmenuitem_new], KMENUITEM_SUBMENU, sz_main_menu_Instr, [main_menu_instr]
stdcall [ksubmenu_add], [main_menu], eax
 
ret
 
put_main_menu:
stdcall [kmainmenu_draw], [main_menu]
ret
 
button_handler_main_menu:
cmp eax, 0x71
jne @f
mov [number_panel], 7
mov [number_menu], 1
jmp TakeInstruments
@@:
cmp eax, 0x72
jne @f
mov [number_panel], 7
mov [number_menu], 2
jmp TakeInstruments
@@:
cmp eax, 0x73
jne @f
mov [number_panel], 7
mov [number_menu], 3
jmp TakeInstruments
@@:
cmp eax, 0x74
jne @f
mov [number_panel], 7
mov [number_menu], 4
jmp TakeInstruments
@@:
cmp eax, 0x75
jne @f
mov [number_panel], 7
mov [number_menu], 5
jmp TakeInstruments
@@:
cmp eax, 0x61
jne @f
mov [number_panel], 6
mov [number_menu], 1
jmp TakeInstruments
@@:
cmp eax, 0x62
jne @f
mov [number_panel], 6
mov [number_menu], 2
jmp TakeInstruments
@@:
cmp eax, 0x63
jne @f
mov [number_panel], 6
mov [number_menu], 3
jmp TakeInstruments
@@:
cmp eax, 0x64
jne @f
mov [number_panel], 6
mov [number_menu], 4
jmp TakeInstruments
@@:
cmp eax, 0x65
jne @f
mov [number_panel], 6
mov [number_menu], 5
jmp TakeInstruments
@@:
cmp eax, 0x66
jne @f
mov [number_panel], 6
mov [number_menu], 6
jmp TakeInstruments
@@:
cmp eax, 0x51
jne @f
mov [number_panel], 5
mov [number_menu], 1
jmp TakeInstruments
@@:
.end_handler:
ret
 
main_menu dd 0
main_menu_file dd 0
main_menu_edit dd 0
main_menu_instr dd 0
 
sz_main_menu_File db 'File', 0
sz_main_menu_File_New db 'New', 0
sz_main_menu_File_Open db 'Open', 0
sz_main_menu_File_Save db 'Save', 0
sz_main_menu_File_SaveAs db 'Save as', 0
sz_main_menu_File_Exit db 'Exit', 0
 
sz_main_menu_Edit db 'Edit', 0
sz_main_menu_Edit_Undo db 'Undo', 0
sz_main_menu_Edit_Redo db 'Redo', 0
sz_main_menu_Edit_Copy db 'Copy', 0
sz_main_menu_Edit_Paste db 'Paste', 0
sz_main_menu_Edit_Cut db 'Cut', 0
sz_main_menu_Edit_ClS db 'Clear screen', 0
 
sz_main_menu_Instr db 'Instruments', 0
sz_main_menu_Instr_Pencil db 'Pencil', 0
/programs/media/animage/trunk/menu_instruments.inc
6,59 → 6,12
cmp [number_panel],7
jne no_file
 
;<<<<<NEW>>>>>>>
; <<< 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
call dialog2_draw
 
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 edx,1000000000000000000000000000000b+1000
mcall SF_DEFINE_BUTTON,<177,40>,<115,14>,
 
66,15 → 19,19
mcall ,,<139,14>,
 
mov edx,1000000000000000000000000000000b+1002
mcall ,<175,40>,<170,15>
mcall ,,<170,15>
 
no_activate_space:
mcall SF_SLEEP, 5 ;fix cpu use 100%
mcall SF_WAIT_EVENT
 
cmp eax,1
je exit_new
cmp eax,1 ;redraw window
jne @f
call dialog2_draw
jmp no_activate_space
@@:
 
cmp eax,3
cmp eax,3 ;press button
jne no_activate_space
 
mcall SF_GET_BUTTON
98,7 → 55,7
dec eax
mov [length_number],eax
mov eax,string_
call value
call str_to_int
 
mov [Picture_SizeX],eax
jmp no_activate_space
119,7 → 76,7
dec eax
mov [length_number],eax
mov eax,string_
call value
call str_to_int
 
mov [Picture_SizeY],eax
jmp no_activate_space
130,10 → 87,10
 
exit_new:
mov edx,11100000000000000000000000000000b+1002
mcall SF_DEFINE_BUTTON,<175,40>,<170,15>
mcall SF_DEFINE_BUTTON,<177,40>,<170,15>
 
mov edx,11100000000000000000000000000000b+1001
mcall ,<177,40>,<139,14>
mcall ,,<139,14>
 
mov edx,11100000000000000000000000000000b+1000
mcall ,,<115,14>
150,7 → 107,7
jmp still
;---------------------------------------------------------------------
no_new:
;<<<<<OPEN>>>>>>>
; <<< Open >>>
cmp [number_menu],2
jne no_open
 
173,7 → 130,7
jmp still
;---------------------------------------------------------------------
no_open:
;<<<<<<<<<<<SAVE>>>>>>>>>>>>
; <<< Save >>>
cmp [number_menu],3
jne no_save_
 
188,7 → 145,7
jmp still
;---------------------------------------------------------------------
no_save_:
;<<<<<<<<<SAVE AS>>>>>>>>>>>
; <<< Save as >>>
cmp [number_menu],4
jne no_save
 
211,10 → 168,8
pop esi eax
;---------------------------------------------------------------------
mov [OpenDialog_data.type],1 ; save
stdcall [OpenDialog_Start],OpenDialog_data
push dword OpenDialog_data
call [OpenDialog_Start]
 
cmp [OpenDialog_data.status],1
jne still
;---------------------------------------------------------------------
251,7 → 206,7
; jmp still
;---------------------------------------------------------------------
no_save:
;<<<<<<EXIT>>>>>>>
; <<< Exit >>>
cmp [number_menu],5
jne no_exit_program
 
260,10 → 215,10
no_exit_program:
no_file:
;|||||||||||||||||||||||||||||EDIT|||||||||||||||||||||||||
;<<<<<<<<<<UNDO>>>>>>>>>>
cmp [number_panel],6
jne still ;no_edit
jne no_edit
 
; <<< Undo >>>
cmp [number_menu],1
jne no_undo
 
285,8 → 240,30
jmp still
;---------------------------------------------------------------------
no_undo:
;<<<<<<<<<<COPY>>>>>>>>>>
; <<< Redo >>>
cmp [number_menu],2
jne no_redo
 
cmp [number_undo],0
je no_redo
 
;rotate bufers +1
dec [number_undo]
mov eax,[PointerToPicture]
mov ebx,[PointerToCopyPicture]
mov ecx,[PointerToCopyPicture2]
mov [PointerToPicture],ecx
mov [PointerToCopyPicture],eax
mov [PointerToCopyPicture2],ebx
 
call MovePictureToWorkScreen
and [number_panel],0
and [number_menu],0
jmp still
;---------------------------------------------------------------------
no_redo:
; <<< Copy >>>
cmp [number_menu],3
jne no_copy
 
cmp [instrument_used],1
385,8 → 362,8
jmp still
;---------------------------------------------------------------------
no_copy:
;<<<<<<<<<<PASTE>>>>>>>>
cmp [number_menu],3
; <<< Paste >>>
cmp [number_menu],4
jne no_paste
 
cmp [instrument_used],1
480,8 → 457,8
jmp still
;---------------------------------------------------------------------
no_paste:
;<<<<<<<<<<CUT>>>>>>>>>>
cmp [number_menu],4
; <<< Cut >>>
cmp [number_menu],5
jne no_cut
 
cmp [instrument_used],1
573,8 → 550,8
jmp still
;---------------------------------------------------------------------
no_cut:
;<<<<<<CLEARE ALL>>>>>>
cmp [number_menu],5
; <<< Cleare all >>>
cmp [number_menu],6
jne no_cleare_all
 
call cleare_work_arrea
585,8 → 562,8
jmp still
;---------------------------------------------------------------------
no_cleare_all:
;<<<<<<TO ALLOCATE ALL>>>>>>
cmp [number_menu],6
; <<< To allocate all >>>
cmp [number_menu],7
jne still ;no_to_allocate_all
 
mov [OldX],1
608,6 → 585,19
jmp still
;---------------------------------------------------------------------
;no_to_allocate_all:
;no_edit:
; jmp still
no_edit:
;|||||||||||||||||||||||||INSTRUMENTS||||||||||||||||||||||
cmp [number_panel],5
jne no_instruments
; <<< Pencil >>>
cmp [number_menu],1
jne no_pencil
 
; ... todo ...
 
and [number_panel],0
and [number_menu],0
no_pencil:
no_instruments:
jmp still
;---------------------------------------------------------------------
/programs/media/animage/trunk/panel_data.inc
1,93 → 1,9
;**********************************************************
;------------------TEXT DATA-------------------------------
;**********************************************************
name_of_program db 'ANIMAGE graphics editor v1.4',0
name_of_program db 'ANIMAGE graphics editor v1.5',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,5
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,43,3
db 'New'
dd 15,63,4
db 'Open'
dd 15,83,4
db 'Save'
dd 15,103,7
db 'Save as'
dd 15,123,4
db 'Exit'
 
menu_text2:
dd 65,43,4
db 'Undo'
dd 65,63,4
db 'Copy'
dd 65,83,5
db 'Paste'
dd 65,103,3
db 'Cut'
dd 65,123,13
db 'Clear screen'
;dd 95,143,12
;db 'Allocate all'
menu_text3:
dd 115,43,3
db 0,0,0;'Pencil'
dd 115,63,3
db 0,0,0;'Brushes'
dd 115,83,3
db 0,0,0;'Colors'
dd 115,103,3
db 0,0,0;'Pipetka'
menu_text4:
dd 235,43,1
db 0,0,0
menu_text5:
dd 315,43,1
db 0,0,0
menu_text6:
dd 395,43,1
db 0,0,0
menu_text7:
dd 495,43,1
db 0,0,0,0
 
 
menu_counters:
dd 1,1,1,1,1,5,5
/programs/media/animage/trunk/panel_engen.inc
2,76 → 2,12
;-----interraction panel with user----------------
;-------------------------------------------------
panel_interraction:
;>>>>>>>>>>>>>>>>>>>>>>>>>>
; mcall 18,14
 
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
 
; mcall 18,14
 
jmp 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
 
jmp still
;---------------------------------------------------------
;-----draw panel menu(main engin of panel)----------------
;---------------------------------------------------------
print_panel_menu:
push [counter]
;delit main buttons(some time)
mov [counter],10
 
115,144 → 51,18
add edx,11100000000000000000000000000000b
mcall SF_DEFINE_BUTTON
 
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 edi
;ᣫ ¦¨¢ ­¨¥  ­¨¬ æ¨¨ >>>>>>>>>>>>>>>>>>
; mcall 18,4
 
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 esi
 
 
menu_still:
mcall SF_WAIT_EVENT
mcall SF_GET_KEY
mcall SF_GET_BUTTON
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 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 esi
 
mcall SF_SLEEP,15
 
push [counter]
pusha
call drawwin
popa
pop [counter]
 
mov eax,[counter]
mov [number_panel],eax
mov [number_panel],0
 
jmp TakeInstruments
 
262,8 → 72,8
PrintMousePos:
pushad
mov eax,[Window_SizeX]
sub eax,75
mov ebx,20+15+6
sub eax,75+ci_offs_skin_w
mov ebx,ci_panel_y_pos+6
mov ecx,52
mov edx,18
mov esi,4
270,8 → 80,8
call draw_volume_rectangle ; border for mouse x pos
 
mov eax,[Window_SizeX]
sub eax,75
mov ebx,20+15+6+18+2
sub eax,75+ci_offs_skin_w
mov ebx,ci_panel_y_pos+6+18+4
mov ecx,52
mov edx,18
mov esi,4
278,8 → 88,8
call draw_volume_rectangle ; border for mouse y pos
 
mov eax,[Window_SizeX]
sub eax,70
mov ebx,20+15+6+6
sub eax,70+ci_offs_skin_w
mov ebx,ci_panel_y_pos+6+6
and ecx,0
mov edx,mouse_pos_x
mov esi,2
286,8 → 96,8
call print_text
 
mov eax,[Window_SizeX]
sub eax,70
mov ebx,20+15+6+6+18+1
sub eax,70+ci_offs_skin_w
mov ebx,ci_panel_y_pos+6+6+18+4
and ecx,0
mov edx,mouse_pos_y
mov esi,2
296,9 → 106,9
mov ecx,[ScreenX]
add ecx,[PosX]
mov edx,[Window_SizeX]
sub edx,55
sub edx,55+ci_offs_skin_w
shl edx,16
add edx,20+15+6+6
add edx,ci_panel_y_pos+6+6
and esi,0
mcall SF_DRAW_NUMBER,<4,0>
 
305,9 → 115,9
mov ecx,[ScreenY]
add ecx,[PosY]
mov edx,[Window_SizeX]
sub edx,55
sub edx,55+ci_offs_skin_w
shl edx,16
add edx,20+15+6+18+1+6
add edx,ci_panel_y_pos+6+18+4+6
mcall
 
popad
314,28 → 124,6
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:
/programs/media/animage/trunk/screen.inc
245,9 → 245,8
fps:
mov ebx,[ScreenPointer]
mov ecx,[WorkScreen_SizeX]
mov edx,[WorkScreen_SizeY]
shl ecx,16
add ecx,edx
add ecx,[WorkScreen_SizeY]
mov edx,((ci_edit_wnd_x_pos+ci_edit_wnd_border) shl 16)\
+ (ci_edit_wnd_y_pos+ci_edit_wnd_border)
mcall SF_PUT_IMAGE
263,6 → 262,7
mov eax,0xffffffff
mov ecx,ebx
shr ecx,2
cld
rep stosd
mov ecx,ebx
and ecx,3
279,6 → 279,7
mov eax,0xffffffff
mov ecx,ebx
shr ecx,2
cld
rep stosd
mov ecx,ebx
and ecx,3