0,0 → 1,596 |
;--------------------------------------------------------------------- |
mouse: |
mcall 18,7 |
cmp [active_process],eax |
jne still |
|
mcall 37,7 |
mov [mouse_scroll_data],eax |
|
mov eax,[mouse_position] |
mov [mouse_position_old],eax |
mcall 37,1 |
mov [mouse_position],eax |
|
mov eax,[mouse_keys] |
mov [mouse_keys_old],eax |
mcall 37,2 |
mov [mouse_keys],eax |
|
cmp [soi],dword 0 |
je .menu_bar |
cmp [scaling_mode],dword 0 |
je .menu_bar |
|
cmp [capture_image_area_flag],1 |
je capture_image_area |
;----------------------------------------------------- |
cmp [scroll_bar_data_vertical.delta2],0 |
jne .vertical |
.horizontal: |
mov eax,[scroll_bar_data_horizontal.max_area] |
cmp eax,[scroll_bar_data_horizontal.cur_area] |
jbe .vertical |
|
push dword scroll_bar_data_horizontal |
call [scrollbar_hor_mouse] |
|
; mouse_scroll_bar_horizontal scroll_bar_data_horizontal |
cmp [scroll_bar_data_horizontal.redraw],0 |
je @f |
|
mov [scroll_bar_data_horizontal.redraw],0 |
jmp .draw |
@@: |
cmp [scroll_bar_data_horizontal.delta2],0 |
jne still |
;----------------------------------------------------- |
.vertical: |
mov eax,[scroll_bar_data_vertical.max_area] |
cmp eax,[scroll_bar_data_vertical.cur_area] |
jbe .menu_bar |
|
push dword scroll_bar_data_vertical |
call [scrollbar_ver_mouse] |
|
; mouse_scroll_bar_vertical scroll_bar_data_vertical |
cmp [scroll_bar_data_vertical.redraw],0 |
je .menu_bar ;still |
mov [scroll_bar_data_vertical.redraw],0 |
.draw: |
call drawimage |
jmp still |
;--------------------------------------------------- |
.clear_mouse_keys_old: |
xor eax,eax |
mov [mouse_keys],eax |
mov [mouse_keys_old],eax |
ret |
;--------------------------------------------------- |
.menu_bar: |
cmp [scroll_bar_data_vertical.delta2],0 |
jne still |
cmp [scroll_bar_data_horizontal.delta2],0 |
jne still |
; xor eax,eax |
; mov [menu_data_1.get_mouse_flag],eax |
; mov [menu_data_2.get_mouse_flag],eax |
; mov [menu_data_3.get_mouse_flag],eax |
; mov [menu_data_4.get_mouse_flag],eax |
; mov [menu_data_5.get_mouse_flag],eax |
; mov [menu_data_6.get_mouse_flag],eax |
|
.menu_bar_1: |
call .set_mouse_flag |
@@: |
push dword menu_data_1 |
call [menu_bar_mouse] |
; mouse_menubar menu_data_1 |
cmp [menu_data_1.click],dword 1 |
jne .menu_bar_2 |
call .clear_mouse_keys_old |
cmp [menu_data_1.cursor_out],dword 0 |
jne analyse_out_menu_1 |
jmp .menu_bar_1 |
;-------------------------------------------- |
.menu_bar_2: |
; Edit |
push dword menu_data_2 |
call [menu_bar_mouse] |
; mouse_menubar menu_data_2 |
cmp [menu_data_2.click],dword 1 |
jne .menu_bar_3 |
call .clear_mouse_keys_old |
cmp [menu_data_2.cursor_out],dword 0 |
jne analyse_out_menu_2 |
jmp .menu_bar_1 |
;-------------------------------------------- |
.menu_bar_3: |
; View |
push dword menu_data_3 |
call [menu_bar_mouse] |
; mouse_menubar menu_data_3 |
cmp [menu_data_3.click],dword 1 |
jne .menu_bar_4 |
call .clear_mouse_keys_old |
cmp [menu_data_3.cursor_out],dword 0 |
jne analyse_out_menu_3 ;still |
jmp .menu_bar_1 |
;-------------------------------------------- |
.menu_bar_4: |
; Zoom |
push dword menu_data_4 |
call [menu_bar_mouse] |
; mouse_menubar menu_data_4 |
cmp [menu_data_4.click],dword 1 |
jne .menu_bar_5 |
call .clear_mouse_keys_old |
cmp [menu_data_4.cursor_out],dword 0 |
jne analyse_out_menu_4 |
jmp .menu_bar_1 |
;-------------------------------------------- |
.menu_bar_5: |
; Tools |
push dword menu_data_5 |
call [menu_bar_mouse] |
; mouse_menubar menu_data_5 |
cmp [menu_data_5.click],dword 1 |
jne .menu_bar_6 |
call .clear_mouse_keys_old |
cmp [menu_data_5.cursor_out],dword 0 |
jne analyse_out_menu_5 |
jmp .menu_bar_1 |
;-------------------------------------------- |
.menu_bar_6: |
; Help |
push dword menu_data_6 |
call [menu_bar_mouse] |
; mouse_menubar menu_data_6 |
cmp [menu_data_6.click],dword 1 |
jne .mouse_dinamic_button |
call .clear_mouse_keys_old |
cmp [menu_data_6.cursor_out],dword 0 |
jne analyse_out_menu_6 |
jmp .menu_bar_1 |
;--------------------------------------------------- |
.mouse_dinamic_button: |
; open file |
push dword dinamic_button_data_1 |
call [dinamic_button_mouse] |
; mouse_dinamic_button dinamic_button_data_1 |
mov eax,dinamic_button_data_1.click |
cmp [eax],dword 1 |
jne @f |
mov [eax],dword 0 |
jmp kfile |
;------------------------------------------------- |
@@: |
; reload file |
push dword dinamic_button_data_2 |
call [dinamic_button_mouse] |
; mouse_dinamic_button dinamic_button_data_2 |
mov eax,dinamic_button_data_2.click |
cmp [eax],dword 1 |
jne @f |
mov [eax],dword 0 |
jmp kopen |
;------------------------------------------------- |
@@: |
; left limit |
push dword dinamic_button_data_3 |
call [dinamic_button_mouse] |
; mouse_dinamic_button dinamic_button_data_3 |
mov eax,dinamic_button_data_3.click |
cmp [eax],dword 1 |
jne @f |
mov [eax],dword 0 |
jmp left_limit |
;------------------------------------------------- |
@@: |
; left arrow |
push dword dinamic_button_data_4 |
call [dinamic_button_mouse] |
; mouse_dinamic_button dinamic_button_data_4 |
mov eax,dinamic_button_data_4.click |
cmp [eax],dword 1 |
jne @f |
mov [eax],dword 0 |
jmp move_to_left |
;------------------------------------------------- |
@@: |
; slide show |
push dword dinamic_button_data_5 |
call [dinamic_button_mouse] |
; mouse_dinamic_button dinamic_button_data_5 |
mov eax,dinamic_button_data_5.click |
cmp [eax],dword 1 |
jne @f |
mov [eax],dword 0 |
jmp slide_show.3 |
;------------------------------------------------- |
@@: |
; right arrow |
push dword dinamic_button_data_6 |
call [dinamic_button_mouse] |
; mouse_dinamic_button dinamic_button_data_6 |
mov eax,dinamic_button_data_6.click |
cmp [eax],dword 1 |
jne @f |
mov [eax],dword 0 |
jmp move_to_right |
;------------------------------------------------- |
@@: |
; right limit |
push dword dinamic_button_data_7 |
call [dinamic_button_mouse] |
; mouse_dinamic_button dinamic_button_data_7 |
mov eax,dinamic_button_data_7.click |
cmp [eax],dword 1 |
jne @f |
mov [eax],dword 0 |
jmp right_limit |
;------------------------------------------------- |
@@: |
; zoom + |
push dword dinamic_button_data_8 |
call [dinamic_button_mouse] |
; mouse_dinamic_button dinamic_button_data_8 |
mov eax,dinamic_button_data_8.click |
cmp [eax],dword 1 |
jne @f |
mov [eax],dword 0 |
jmp zoom_plus ;still |
;------------------------------------------------- |
@@: |
; zoom - |
push dword dinamic_button_data_9 |
call [dinamic_button_mouse] |
; mouse_dinamic_button dinamic_button_data_9 |
mov eax,dinamic_button_data_9.click |
cmp [eax],dword 1 |
jne @f |
mov [eax],dword 0 |
jmp zoom_minus ;still |
;------------------------------------------------- |
@@: |
; zoom 100% |
push dword dinamic_button_data_10 |
call [dinamic_button_mouse] |
; mouse_dinamic_button dinamic_button_data_10 |
mov eax,dinamic_button_data_10.click |
cmp [eax],dword 1 |
jne @f |
mov [eax],dword 0 |
jmp no_scaling ;still |
;------------------------------------------------- |
@@: |
; rotate clockwise |
push dword dinamic_button_data_11 |
call [dinamic_button_mouse] |
; mouse_dinamic_button dinamic_button_data_11 |
mov eax,dinamic_button_data_11.click |
cmp [eax],dword 1 |
jne @f |
mov [eax],dword 0 |
jmp rotate_clockwise |
;------------------------------------------------- |
@@: |
; rotate counter-clockwise |
push dword dinamic_button_data_12 |
call [dinamic_button_mouse] |
; mouse_dinamic_button dinamic_button_data_12 |
mov eax,dinamic_button_data_12.click |
cmp [eax],dword 1 |
jne @f |
mov [eax],dword 0 |
jmp rotate_counter_clockwise |
;------------------------------------------------- |
@@: |
; file information |
push dword dinamic_button_data_13 |
call [dinamic_button_mouse] |
; mouse_dinamic_button dinamic_button_data_13 |
mov eax,dinamic_button_data_13.click |
cmp [eax],dword 1 |
jne @f |
mov [eax],dword 0 |
jmp kinfo |
;------------------------------------------------- |
@@: |
; wallpaper |
push dword dinamic_button_data_14 |
call [dinamic_button_mouse] |
; mouse_dinamic_button dinamic_button_data_14 |
mov eax,dinamic_button_data_14.click |
cmp [eax],dword 1 |
jne @f |
mov [eax],dword 0 |
jmp k_background |
;------------------------------------------------- |
@@: |
; settings |
push dword dinamic_button_data_15 |
call [dinamic_button_mouse] |
; mouse_dinamic_button dinamic_button_data_15 |
mov eax,dinamic_button_data_15.click |
cmp [eax],dword 1 |
jne @f |
mov [eax],dword 0 |
jmp k_option ;still |
;------------------------------------------------- |
@@: |
jmp check_scroll_event |
; jmp still |
;--------------------------------------------------------------------- |
.set_mouse_flag: |
xor eax,eax |
inc eax |
mov [menu_data_1.get_mouse_flag],eax |
mov [menu_data_2.get_mouse_flag],eax |
mov [menu_data_3.get_mouse_flag],eax |
mov [menu_data_4.get_mouse_flag],eax |
mov [menu_data_5.get_mouse_flag],eax |
mov [menu_data_6.get_mouse_flag],eax |
ret |
;--------------------------------------------------------------------- |
analyse_out_menu_1: |
; File |
mov eax,[menu_data_1.cursor_out] |
cmp eax,dword 1 |
je kfile |
cmp eax,dword 2 |
je kinfo |
cmp eax,dword 3 |
je START.exit |
jmp still |
;--------------------------------------------------------------------- |
analyse_out_menu_2: |
; Edit |
mov eax,[menu_data_2.cursor_out] |
cmp eax,dword 1 |
je rotate_clockwise |
cmp eax,dword 2 |
je rotate_counter_clockwise |
cmp eax,dword 3 |
je invert_left_to_right |
cmp eax,dword 4 |
je invert_up_to_down |
jmp still |
;--------------------------------------------------------------------- |
analyse_out_menu_3: |
; View |
mov eax,[menu_data_3.cursor_out] |
cmp eax,dword 1 |
je k_sort_directory |
cmp eax,dword 2 |
je full_screen |
cmp eax,dword 3 |
je kopen |
jmp still |
;--------------------------------------------------------------------- |
analyse_out_menu_4: |
; Zoom |
mov eax,[menu_data_4.cursor_out] |
cmp eax,dword 1 |
je no_scaling |
cmp eax,dword 2 |
je zoom_plus |
cmp eax,dword 3 |
je zoom_minus |
cmp eax,dword 4 |
je scaling |
jmp still |
;--------------------------------------------------------------------- |
analyse_out_menu_5: |
; Tools |
mov eax,[menu_data_5.cursor_out] |
cmp eax,dword 1 |
je image_editor |
cmp eax,dword 2 |
je k_background |
cmp eax,dword 3 |
je slide_show.3 |
cmp eax,dword 4 |
je k_option |
jmp still |
;--------------------------------------------------------------------- |
analyse_out_menu_6: |
; Help |
cmp [menu_data_6.cursor_out],dword 1 |
je open_help |
cmp [menu_data_6.cursor_out],dword 2 |
je kabout |
jmp still |
;--------------------------------------------------------------------- |
check_scroll_event: |
; jmp capture_image_area |
mov eax,[mouse_scroll_data] |
test eax,eax |
jz capture_image_area ;still |
test ax,0x8000 |
jnz .decr |
shr eax,16 |
test ax,0x8000 |
jnz .decr_1 |
pusha |
mov eax,[scaling_mode] |
test eax,eax |
jnz .continue_1 |
call calculation_next_value_minus |
mov [calc_next_value_minus],1 |
.continue_1: |
popa |
mov eax,zoom_factors |
cmp [eax],dword zoom_factors.min |
jbe still |
xor ecx,ecx |
mov cx,[mouse_scroll_data.vertical] |
test ecx,ecx |
jnz @f |
mov cx,[mouse_scroll_data.horizontal] |
test ecx,ecx |
jz still |
@@: |
;---------------------------------------- |
cmp [calc_next_value_minus],1 |
jne @f |
mov [calc_next_value_minus],0 |
dec ecx |
jz zoom_plus.1 |
@@: |
mov ebx,4 |
@@: |
cmp [eax],dword zoom_factors.min |
jbe @f |
sub [eax],ebx |
dec ecx |
jnz @r |
jmp zoom_plus.1 |
@@: |
mov [eax],dword zoom_factors.min |
jmp zoom_plus.1 |
;---------------------------------------- |
.decr: |
xor ebx,ebx |
mov bx,[mouse_scroll_data.vertical] |
jmp @f |
.decr_1: |
xor ebx,ebx |
mov bx,[mouse_scroll_data.horizontal] |
@@: |
pusha |
mov eax,[scaling_mode] |
test eax,eax |
jnz .continue_2 |
call calculation_next_value_plus |
mov [calc_next_value_plus],1 |
.continue_2: |
popa |
mov eax,zoom_factors |
cmp [eax],dword zoom_factors.max |
jae still |
mov ecx,0xffff |
sub ecx,ebx |
inc ecx |
;--------------------------------------- |
cmp [calc_next_value_plus],1 |
jne @f |
mov [calc_next_value_plus],0 |
dec ecx |
jz zoom_plus.1 |
@@: |
mov ebx,4 |
@@: |
cmp [eax],dword zoom_factors.max |
jae @f |
add [eax],ebx |
dec ecx |
jnz @r |
jmp zoom_plus.1 |
@@: |
mov [eax],dword zoom_factors.max |
jmp zoom_plus.1 |
;--------------------------------------------------------------------- |
capture_image_area: |
cmp [scroll_bar_data_vertical.delta2],0 |
jne .no_capture |
cmp [scroll_bar_data_horizontal.delta2],0 |
jne .no_capture |
xor eax,eax |
mov [draw_scrollbar_counter],eax |
mov eax,[scroll_bar_data_vertical.max_area] |
cmp eax,[scroll_bar_data_vertical.cur_area] |
jbe @f |
inc [draw_scrollbar_counter] |
@@: |
mov eax,[scroll_bar_data_horizontal.max_area] |
cmp eax,[scroll_bar_data_horizontal.cur_area] |
jbe @f |
inc [draw_scrollbar_counter] |
@@: |
cmp [draw_scrollbar_counter],0 |
je still |
|
mov eax,[mouse_position] |
xor ebx,ebx |
mov bx,ax ; EBX mouse y |
shr eax,16 ; EAX mouse x |
|
mov ecx,[image_start_coordinates] |
xor edx,edx |
mov dx,cx ; EDX start y |
shr ecx,16 ; ECX start x |
|
cmp ax,cx |
jb still ; min x |
|
cmp bx,dx |
jb still ; min y |
|
add cx,[wa_width_2] |
cmp ax,cx |
ja still ; max x |
|
add dx,[wa_high_2] |
cmp bx,dx |
ja still ; max y |
|
mov ecx,[mouse_keys] |
test ecx,1b ; left button |
jz .no_capture ;still |
|
mov ecx,[mouse_keys_old] |
test ecx,1b ; left button old |
jz .no_capture ;still |
|
mov [capture_image_area_flag],1 |
|
mov ecx,[mouse_position_old] |
xor edx,edx |
mov dx,cx ; EDX mouse y old |
shr ecx,16 ; ECX mouse x old |
|
cmp eax,ecx |
je .y |
ja @f |
sub ecx,eax |
add [scroll_bar_data_horizontal.position],ecx |
jmp .y |
@@: |
sub eax,ecx |
cmp eax,[scroll_bar_data_horizontal.position] |
jb @f |
xor eax,eax |
mov [scroll_bar_data_horizontal.position],eax |
jmp .y |
@@: |
sub [scroll_bar_data_horizontal.position],eax |
|
.y: |
cmp ebx,edx |
je .draw |
ja @f |
sub edx,ebx |
add [scroll_bar_data_vertical.position],edx |
jmp .draw |
@@: |
sub ebx,edx |
|
cmp ebx,[scroll_bar_data_vertical.position] |
jb @f |
xor eax,eax |
mov [scroll_bar_data_vertical.position],eax |
jmp .draw |
@@: |
sub [scroll_bar_data_vertical.position],ebx |
|
.draw: |
call drawimage |
call draw_scrollbars |
jmp still |
|
.no_capture: |
mov [capture_image_area_flag],0 |
.end: |
jmp still |
;--------------------------------------------------------------------- |