diff --git a/programs/media/animage/trunk/animage.asm b/programs/media/animage/trunk/animage.asm index 9dc7314677..2e62862b81 100644 --- a/programs/media/animage/trunk/animage.asm +++ b/programs/media/animage/trunk/animage.asm @@ -43,6 +43,21 @@ include '../../../libio.inc' @use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load +;--------------------------------------------------------- +; *** константы для интерфейса *** + +; окно редактора +ci_edit_wnd_x_pos equ 5 ;координата x для окна редактора +ci_edit_wnd_y_pos equ 87 ;координата y для окна редактора +ci_edit_wnd_border equ 3 ;рамка вокруг окна редактора + +; скроллинги +ci_scrollh_coord_x_min equ (ci_edit_wnd_x_pos+3) ;минимальная позиция ползунка + ;горизонтального скроллинга +ci_scrollv_coord_y_min equ (ci_edit_wnd_y_pos+3) ;минимальная позиция ползунка + ;вертикального скроллинга +;--------------------------------------------------------- + include 'bmplib.inc' include 'dialog2.inc' include 'design.inc' @@ -59,9 +74,7 @@ load_libraries l_libs_start,end_l_libs cmp eax,-1 jz close -;-------------------------------------------------------- -;---------------set events mask-------------------------- -;-------------------------------------------------------- + mcall SF_SET_EVENTS_MASK,0x80000067 ; 1100111b ;--------------------------------------------------------- ;-----------------------init data------------------------- @@ -138,9 +151,6 @@ copy_str_1: jnz @b ret ;--------------------------------------------------------------------- -;--------------------------------------------------------- -;--------------------------------------------------------- -;--------------------------------------------------------- include 'events.inc' include 'events_of_window.inc' include 'events_of_keys.inc' @@ -177,25 +187,18 @@ file 'panel_buttons.png' ;****************cursors****************** brush_cursor: file 'brush.cur' -;---------------------------------------------------------- flood_fill_cursor: file 'flood_fill.cur' -;---------------------------------------------------------- lastik_cursor: file 'lastik.cur' -;---------------------------------------------------------- other_cursor: file 'other.cur' -;---------------------------------------------------------- pencil_cursor: file 'pencil.cur' -;---------------------------------------------------------- pipette_cursor: file 'pipette.cur' -;---------------------------------------------------------- spray_cursor: file 'spray.cur' -;---------------------------------------------------------- zoom_cursor: file 'zoom.cur' ;---------------------------------------------------------- @@ -268,7 +271,7 @@ Scroll1CoordinatX rd 1 ;scroll x screen position Scroll1CoordinatY rd 1 ;scroll y screen position Scroll1MaxSizeX rd 1 Scroll1MaxSizeY rd 1 -Scroll1SizeX rd 1 +Scroll1SizeX rd 1 ;scroll polzunok size Scroll1FreeX rd 1 Scroll2CoordinatX rd 1 diff --git a/programs/media/animage/trunk/design.inc b/programs/media/animage/trunk/design.inc index 26bafcea81..840f0fa2d9 100644 --- a/programs/media/animage/trunk/design.inc +++ b/programs/media/animage/trunk/design.inc @@ -1,4 +1,10 @@ ;---------------------------------------------------------- +;input: +; eax - start X +; ebx - start Y +; ecx - size X +; edx - size Y +; esi - colos styles (1...7) draw_volume_rectangle: mov [line_x],eax mov [line_y],ebx @@ -83,7 +89,7 @@ exit_colors: add ebx,[line_size_x] add ecx,[line_size_y] mov edx,[color_rectangle] - call draw_rectangle + mcall SF_DRAW_RECT ;line 1 mov edx,[color_line1] mov ebx,[line_x] @@ -197,14 +203,13 @@ no_light_rectangle: mov [line_size_x],ecx mov [line_size_y],edx mov edx,esi - mov eax,13 mov ebx,[line_x] mov ecx,[line_y] shl ebx,16 shl ecx,16 add ebx,[line_size_x] add ecx,[line_size_y] - mcall + mcall SF_DRAW_RECT ret ;---------------------------------------------------------- draw_conture: @@ -280,20 +285,14 @@ columnus_true: print_text: mov [text_x],eax mov [text_y],ebx - mov eax,4 mov ebx,[text_x] shl ebx,16 add ebx,[text_y] - mcall + mcall SF_DRAW_TEXT ret ;---------------------------------------------------------- -draw_rectangle: - mcall 13 - ret -;------------------------ draw_line: - mov eax,38 - mcall + mcall SF_DRAW_LINE ret ;---------------------------------------------------------- ;lightlin 12508927 diff --git a/programs/media/animage/trunk/events.inc b/programs/media/animage/trunk/events.inc index afb7d11602..f271d16f67 100644 --- a/programs/media/animage/trunk/events.inc +++ b/programs/media/animage/trunk/events.inc @@ -1,15 +1,29 @@ ;---------------------------------------------------------- ;---------------------system events------------------------ ;---------------------------------------------------------- +align 4 event: - mov eax,10 - mcall + mcall SF_WAIT_EVENT ret -;--------------------------------------------------------- -;---------------SOUND of EVENTS--------------------------- -;--------------------------------------------------------- + +;---------------------------------------------------------- +;---------------------sound of events---------------------- +;---------------------------------------------------------- +align 4 sound: - mov eax,55 - mov ebx,eax - mcall - ret \ No newline at end of file + mcall SF_SPEAKER_PLAY,55 + ret + +;---------------------------------------------------------- +;---------------------user events-------------------------- +;---------------------------------------------------------- + +;description: +; перемещение скроллингов в левый верхний угол (0,0) +align 4 +scrollbar_move_00: + and [PosX],0 + and [PosY],0 + mov [Scroll1CoordinatX],ci_scrollh_coord_x_min + mov [Scroll2CoordinatY],ci_scrollv_coord_y_min + ret \ No newline at end of file diff --git a/programs/media/animage/trunk/events_of_keys.inc b/programs/media/animage/trunk/events_of_keys.inc index 1d8e474150..d15eeecaa2 100644 --- a/programs/media/animage/trunk/events_of_keys.inc +++ b/programs/media/animage/trunk/events_of_keys.inc @@ -1,86 +1,81 @@ ;------------------------------------------ ;-------------KEYS------------------------- ;------------------------------------------ - keys: +align 4 +keys: - mov eax,2 - mcall + mcall SF_GET_KEY shr eax,8 - cmp eax,176 + cmp al,176 jne key2 sub [PosX],20 jmp change_screen key2: - cmp eax,179 + cmp al,179 jne key3 add [PosX],20 jmp change_screen key3: - cmp eax,177 + cmp al,177 jne key4 add [PosY],20 jmp change_screen key4: - cmp eax,178 + cmp al,178 jne key5 sub [PosY],20 jmp change_screen key5: - cmp eax,49 + cmp al,49 ;1 jne key6 mov [k],1 - mov [Scroll1CoordinatX],9 - mov [Scroll2CoordinatY],89 + call scrollbar_move_00 call drawwin jmp change_screen key6: - cmp eax,50 + cmp al,50 ;2 jne key7 mov [k],2 - mov [Scroll1CoordinatX],9 - mov [Scroll2CoordinatY],89 + call scrollbar_move_00 call drawwin jmp change_screen key7: - cmp eax,52 + cmp al,52 ;4 jne key8 mov [k],4 - mov [Scroll1CoordinatX],9 - mov [Scroll2CoordinatY],89 + call scrollbar_move_00 call drawwin jmp change_screen key8: - cmp eax,56 + cmp al,56 ;8 jne key9 mov [k],8 - mov [Scroll1CoordinatX],9 - mov [Scroll2CoordinatY],89 + call scrollbar_move_00 call drawwin jmp change_screen key9: - cmp eax,48 + cmp al,48 ;0 jne key10 mov [k],16 - mov [Scroll1CoordinatX],9 - mov [Scroll2CoordinatY],89 + call scrollbar_move_00 call drawwin jmp change_screen key10: - cmp eax,255 + cmp al,255 jne key11 call analizing_picture_to_palette call drawwin jmp change_screen key11: - cmp eax,27 - jne still + ;cmp al,27 ;Esc + ;jne still + jmp still mov eax,CursorsID call delete_cursors close: - mov eax,-1 - mcall + mcall SF_TERMINATE_PROCESS jmp still diff --git a/programs/media/animage/trunk/events_of_mouse.inc b/programs/media/animage/trunk/events_of_mouse.inc index 4d6d06d56a..ce7a0103c7 100644 --- a/programs/media/animage/trunk/events_of_mouse.inc +++ b/programs/media/animage/trunk/events_of_mouse.inc @@ -45,8 +45,8 @@ no_redraw_panel: mov ebx,[MouseY] mov ecx,[WorkScreen_SizeX] mov edx,[WorkScreen_SizeY] - add ecx,9 - add edx,89 + add ecx,ci_scrollh_coord_x_min + add edx,ci_scrollv_coord_y_min cmp eax,ecx jae mouse_scroll @@ -74,13 +74,13 @@ mouse_scroll: test eax,eax jz no_horizontal - mov eax,9 + mov eax,ci_scrollh_coord_x_min mov ebx,[Scroll1CoordinatY] mov ecx,[Scroll1MaxSizeX] + inc ecx mov edx,14+10 mov esi,7 - inc ecx - call draw_volume_rectangle + call draw_volume_rectangle ; horizontal scrollbar clear mov eax,[MouseX] mov ebx,[Scroll1SizeX] @@ -88,13 +88,13 @@ mouse_scroll: sub eax,ebx mov ecx,[MouseX] add ecx,ebx - mov edx,8+1 + mov edx,ci_scrollh_coord_x_min add edx,[Scroll1MaxSizeX] mov [Scroll1CoordinatX],eax - sub eax,9 + sub eax,ci_scrollh_coord_x_min jns no_min_scroll - mov [Scroll1CoordinatX],9 + mov [Scroll1CoordinatX],ci_scrollh_coord_x_min no_min_scroll: cmp ecx,edx @@ -106,7 +106,7 @@ no_min_scroll: no_max_scroll: mov eax,[Scroll1CoordinatX] - sub eax,9 + sub eax,ci_scrollh_coord_x_min mov ebx,[Picture_SizeX] imul eax,ebx mov ebx,[Scroll1MaxSizeX] @@ -127,12 +127,12 @@ no_horizontal: jz no_vertical mov eax,[Scroll2CoordinatX] - mov ebx,89 + mov ebx,ci_scrollv_coord_y_min mov ecx,14+10 mov edx,[Scroll2MaxSizeY] + inc edx mov esi,7 - inc edx - call draw_volume_rectangle + call draw_volume_rectangle ; vertical scrollbar clear mov eax,[MouseY] mov ebx,[Scroll2SizeY] @@ -140,14 +140,14 @@ no_horizontal: sub eax,ebx mov ecx,[MouseY] add ecx,ebx - mov edx,89 + mov edx,ci_scrollv_coord_y_min add edx,[Scroll2MaxSizeY] mov [Scroll2CoordinatY],eax - sub eax,89 + sub eax,ci_scrollv_coord_y_min jns no_min_scroll2 - mov [Scroll2CoordinatY],89 + mov [Scroll2CoordinatY],ci_scrollv_coord_y_min no_min_scroll2: cmp ecx,edx @@ -159,7 +159,7 @@ no_min_scroll2: no_max_scroll2: mov eax,[Scroll2CoordinatY] - sub eax,89 + sub eax,ci_scrollv_coord_y_min mov ebx,[Picture_SizeY] imul eax,ebx mov ebx,[Scroll2MaxSizeY] @@ -183,13 +183,13 @@ no_scrollers: sub ecx,36 sub edx,35 - cmp eax,9 + cmp eax,ci_scrollh_coord_x_min jle not_work_arrea cmp eax,ecx jae not_work_arrea - cmp ebx,20+15+1+50 + cmp ebx,ci_scrollv_coord_y_min jle not_work_arrea cmp ebx,edx diff --git a/programs/media/animage/trunk/events_of_window.inc b/programs/media/animage/trunk/events_of_window.inc index 3cfc6194ef..d0a38df8b1 100644 --- a/programs/media/animage/trunk/events_of_window.inc +++ b/programs/media/animage/trunk/events_of_window.inc @@ -12,27 +12,22 @@ drawwin: mov edx,[esi+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 ecx,585 + jae @f + mov ecx,585 ;minimum size x + @@: cmp [Window_SizeY],400 - jae no_minimum_size_y + jae @f + mov edx,400 ;minimum size y + @@: + mov [Window_SizeX],ecx + mov [Window_SizeY],edx - 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 + sub [MaxWorkScreen_SizeX],ci_edit_wnd_x_pos+2*ci_edit_wnd_border+34 + sub [MaxWorkScreen_SizeY],ci_edit_wnd_y_pos+2*ci_edit_wnd_border+34 cmp [MaxWorkScreen_SizeX],0 jns no_znak1 @@ -88,71 +83,53 @@ no_znak2: call MovePictureToWorkScreen ;------------------------------------------------ mov ebx,[WorkScreen_SizeX] - add ebx,5+3 - mov edx,[Window_SizeX] - sub edx,ebx - sub edx,25+10-3 + add ebx,ci_edit_wnd_x_pos+ci_edit_wnd_border shl ebx,16 - mov bx,dx + mov bx,ci_edit_wnd_border ;ширина бордюра - mov ecx,20+15+1+49+2 + mov ecx,ci_edit_wnd_y_pos+ci_edit_wnd_border mov edx,[Window_SizeY] - mov eax,[WorkScreen_SizeY] - shr eax,16 - sub edx,eax - sub edx,20+15+1+49+2+25+10 + sub edx,ci_edit_wnd_y_pos+2*ci_edit_wnd_border+34 shl ecx,16 - mov cx,dx + mov cx,dx ;высота бордюра - mcall SF_DRAW_RECT,,,0xc7cbcf + mcall SF_DRAW_RECT,,,0xc7cbcf ;бордюр справа от окна перед скроллингом ;------------------------------------------------ - mcall ,<5,3> + mcall , ;бордюр слева от окна ;------------------------------------------------ - mov ebx,5 + mov ebx,ci_edit_wnd_x_pos mov edx,[Window_SizeX] - mov eax,[WorkScreen_SizeX] - shr eax,16 - sub edx,eax - sub edx,25+10 + sub edx,25+10+ci_edit_wnd_x_pos shl ebx,16 - mov bx,dx + mov bx,dx ;ширина бордюра mov ecx,[WorkScreen_SizeY] - add ecx,20+15+1+49+2+3 - mov edx,[Window_SizeY] - sub edx,ecx - sub edx,25+10-3 + add ecx,ci_edit_wnd_y_pos+ci_edit_wnd_border shl ecx,16 - mov cx,dx + mov cx,ci_edit_wnd_border ;высота бордюра - mcall SF_DRAW_RECT,,,0xc7cbcf + mcall SF_DRAW_RECT,,,0xc7cbcf ;бордюр под окном и над скроллингом ;------------------------------------------------ - mcall ,,<20+15+1+49+2,3> + mcall ,, ;бордюр под панелью и над окном ;------------------------------------------------ -; draw_volume_rectangle -; eax - start X -; ebx - start Y -; ecx - size X -; edx - size Y - - mov eax,5 + mov eax,ci_edit_wnd_x_pos mov ebx,[Window_SizeY] mov ecx,[Window_SizeX] mov edx,20+10 mov esi,3 - sub ecx,30 + sub ecx,35+ci_edit_wnd_x_pos sub ebx,25+10 - call draw_volume_rectangle ; horizontal scrollbar + call draw_volume_rectangle ; horizontal scrollbar border ;------------------------------------------------ mov eax,[Window_SizeX] - mov ebx,20+15+1+49+2 + mov ebx,ci_edit_wnd_y_pos 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 ; vertical scrollbar - call draw_scrollers + sub edx,35+ci_edit_wnd_y_pos + call draw_volume_rectangle ; vertical scrollbar border + call draw_scrollers ;------------------------------------------------ mov eax,[Window_SizeX] mov ebx,[Window_SizeY] @@ -161,7 +138,7 @@ no_znak2: mov esi,6 sub eax,25+10 sub ebx,25+10 - call draw_volume_rectangle ; down and right small area + call draw_volume_rectangle ; down and right small area ;------------------------------------------------ .end: mcall SF_REDRAW,SSF_END_DRAW diff --git a/programs/media/animage/trunk/icons.inc b/programs/media/animage/trunk/icons.inc index a4c4a01f49..bdceea6bd7 100644 --- a/programs/media/animage/trunk/icons.inc +++ b/programs/media/animage/trunk/icons.inc @@ -33,7 +33,6 @@ draw_icons: main_buttons: - mov eax,8 mov ebx,[Icon_X] mov ecx,[Icon_Y] dec ebx @@ -45,7 +44,7 @@ draw_icons: mov edx,[counter] add edx,10 add edx,1000000000000000000000000000000b - mcall + mcall SF_DEFINE_BUTTON add [Icon_X],22 @@ -63,7 +62,6 @@ draw_icons: next_button_brush: - mov eax,8 mov ebx,[Icon_X] mov ecx,[Icon_Y] dec ebx @@ -75,7 +73,7 @@ draw_icons: mov edx,[counter] add edx,40 add edx,1000000000000000000000000000000b - mcall + mcall SF_DEFINE_BUTTON add [Icon_X],19 @@ -92,7 +90,6 @@ draw_icons: next_button_zoom: - mov eax,8 mov ebx,[Icon_X] mov ecx,[Icon_Y] dec ebx @@ -104,7 +101,7 @@ draw_icons: mov edx,[counter] add edx,45 add edx,1000000000000000000000000000000b - mcall + mcall SF_DEFINE_BUTTON add [Icon_X],19 @@ -117,7 +114,6 @@ draw_icons: mov [Icon_X],7+105+1 mov [Icon_Y],19+15+4+25+1 - mov eax,8 mov ebx,[Icon_X] mov ecx,[Icon_Y] dec ebx @@ -128,13 +124,12 @@ draw_icons: add ecx,21 mov edx,51 add edx,1000000000000000000000000000000b - mcall + mcall SF_DEFINE_BUTTON ; button of color mov [Icon_X],7+128+1 mov [Icon_Y],19+15+4+25+1 - mov eax,8 mov ebx,[Icon_X] mov ecx,[Icon_Y] dec ebx @@ -145,12 +140,8 @@ draw_icons: add ecx,20 mov edx,52 add edx,1000000000000000000000000000000b - mcall + mcall SF_DEFINE_BUTTON - mov eax,13 - mov ebx,136*65536+19 - mov ecx,64*65536+19 - mov edx,[Color] - mcall + mcall SF_DRAW_RECT, 136*65536+19,64*65536+19,[Color] ret diff --git a/programs/media/animage/trunk/icons_instruments.inc b/programs/media/animage/trunk/icons_instruments.inc index c24337f146..806ba53407 100644 --- a/programs/media/animage/trunk/icons_instruments.inc +++ b/programs/media/animage/trunk/icons_instruments.inc @@ -1005,8 +1005,7 @@ TakeButtonInstruments: cmp eax,45 jne no_1_ mov [k],1 - mov [Scroll1CoordinatX],9 - mov [Scroll2CoordinatY],89 + call scrollbar_move_00 and [Current_instrument],0 call drawwin jmp still @@ -1017,8 +1016,7 @@ TakeButtonInstruments: jne no_2_ mov [k],2 call drawwin - mov [Scroll1CoordinatX],9 - mov [Scroll2CoordinatY],89 + call scrollbar_move_00 and [Current_instrument],0 jmp still no_2_: @@ -1029,8 +1027,7 @@ TakeButtonInstruments: jne no_3_ mov [k],3 call drawwin - mov [Scroll1CoordinatX],9 - mov [Scroll2CoordinatY],89 + call scrollbar_move_00 and [Current_instrument],0 jmp still no_3_: @@ -1040,8 +1037,7 @@ TakeButtonInstruments: jne no_4_ mov [k],4 call drawwin - mov [Scroll1CoordinatX],9 - mov [Scroll2CoordinatY],89 + call scrollbar_move_00 and [Current_instrument],0 jmp still no_4_: @@ -1051,8 +1047,7 @@ TakeButtonInstruments: jne no_8_ mov [k],8 call drawwin - mov [Scroll1CoordinatX],9 - mov [Scroll2CoordinatY],89 + call scrollbar_move_00 and [Current_instrument],0 jmp still no_8_: @@ -1062,8 +1057,7 @@ TakeButtonInstruments: jne no_16_ mov [k],16 call drawwin - mov [Scroll1CoordinatX],9 - mov [Scroll2CoordinatY],89 + call scrollbar_move_00 and [Current_instrument],0 jmp still no_16_: diff --git a/programs/media/animage/trunk/memory.inc b/programs/media/animage/trunk/memory.inc index 69cdc89786..013fd9a2a5 100644 --- a/programs/media/animage/trunk/memory.inc +++ b/programs/media/animage/trunk/memory.inc @@ -60,10 +60,6 @@ prepare_data_pointers: mov [PointerToPalette],eax mov [ReserveArray],eax - ;обнуление скроллинга - and [PosX],0 - and [PosY],0 - mov [Scroll1CoordinatX],9 ;8+1 - mov [Scroll2CoordinatY],89 ;20+15+1+50+3 + call scrollbar_move_00 ;обнуление скроллинга ret ;--------------------------------------------------------- \ No newline at end of file diff --git a/programs/media/animage/trunk/panel_engen.inc b/programs/media/animage/trunk/panel_engen.inc index 34c2188a5c..4a48ce04b1 100644 --- a/programs/media/animage/trunk/panel_engen.inc +++ b/programs/media/animage/trunk/panel_engen.inc @@ -267,7 +267,7 @@ PrintMousePos: mov ecx,52 mov edx,18 mov esi,4 - call draw_volume_rectangle + call draw_volume_rectangle ; border for mouse x pos mov eax,[Window_SizeX] sub eax,75 @@ -275,7 +275,7 @@ PrintMousePos: mov ecx,52 mov edx,18 mov esi,4 - call draw_volume_rectangle + call draw_volume_rectangle ; border for mouse y pos mov eax,[Window_SizeX] sub eax,70 @@ -344,10 +344,9 @@ draw_scrollers: mov ebx,[Window_SizeY] sub ebx,22+10 mov ecx,[Window_SizeX] - sub ecx,10+5+20+10+1 + sub ecx,39+ci_scrollh_coord_x_min mov edx,14+10 mov esi,1 - mov [Scroll1CoordinatX],eax mov [Scroll1CoordinatY],ebx mov [Scroll1MaxSizeY],edx mov [Scroll1MaxSizeX],ecx @@ -363,17 +362,16 @@ draw_scrollers: mov edi,[Scroll1MaxSizeX] sub edi,ecx mov [Scroll1FreeX],edi - call draw_volume_rectangle + call draw_volume_rectangle ; horizontal scrollbar polzunok 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 + sub edx,39+ci_scrollv_coord_y_min mov esi,1 mov [Scroll2CoordinatX],eax - mov [Scroll2CoordinatY],ebx mov [Scroll2MaxSizeX],ecx mov [Scroll2MaxSizeY],edx @@ -389,8 +387,7 @@ draw_scrollers: mov edi,[Scroll2MaxSizeY] sub edi,edx mov [Scroll2FreeY],edi - - call draw_volume_rectangle + call draw_volume_rectangle ; vertical scrollbar polzunok ret diff --git a/programs/media/animage/trunk/screen.inc b/programs/media/animage/trunk/screen.inc index 68135fa993..1873570b13 100644 --- a/programs/media/animage/trunk/screen.inc +++ b/programs/media/animage/trunk/screen.inc @@ -243,14 +243,13 @@ big_pixel_x: jnz screen_y fps: - ;mcall 18,14 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 - + 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 ret ;---------------------------------------------------------- @@ -289,47 +288,49 @@ cleare_work_arrea: ;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: + mov eax,[Picture_SizeX] + sub eax,[CounterX] + cmp [PosX],eax + jle @f + mov [PosX],eax + @@: + cmp [PosX],0 + jns @f + mov [PosX],0 + @@: + mov ebx,[Picture_SizeY] + sub ebx,[CounterY] + cmp [PosY],ebx + jle @f + mov [PosY],ebx + @@: + cmp [PosY],0 + jns @f + mov [PosY],0 + @@: ret ;----------------------------------------------------------- ;-----------calculate cordinats on work picture-------------- ;----------------------------------------------------------- GetScreenCordinats: - mov eax,[MouseX] - mov ebx,[MouseY] - sub eax,9 - sub ebx,87 - mov ecx,[k] + mov eax,[MouseX] + mov ebx,[MouseY] + sub eax,ci_edit_wnd_x_pos+ci_edit_wnd_border + cmp eax,0 + jge @f + xor eax,eax + @@: + sub ebx,ci_edit_wnd_y_pos+ci_edit_wnd_border + cmp ebx,0 + jge @f + xor ebx,ebx + @@: + mov ecx,[k] cdq - idiv ecx - mov [ScreenX],eax - mov eax,ebx + idiv ecx + mov [ScreenX],eax + mov eax,ebx cdq - idiv ecx - mov [ScreenY],eax + idiv ecx + mov [ScreenY],eax ret \ No newline at end of file