/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 |