0,0 → 1,386 |
;--------------------------------------------------------------------- |
k_option: |
test dword [status],64 |
jnz still |
or dword [status],64 |
|
call get_memory_for_tread_stack |
mov [thread_stack_7],eax |
mcall 51,1,thread7 ;,thread_stack_7 |
jmp still |
;--------------------------------------------------------------------- |
get_memory_for_tread_stack: |
mcall 68,12,4096 |
mov edx,eax |
add edx,4096 |
ret |
;--------------------------------------------------------------------- |
thread7: ; start of bgrd thread |
mcall 9, procinfo_threads, -1 |
mov eax,[ebx+30] |
mov [PID7],eax |
mcall 40, 0x27 |
mov eax,[slide_show_delay] |
mov [slide_show_delay_old],eax |
mov eax,[arrows_offset] |
mov [arrows_offset_old],eax |
mov eax,[check1+32] |
mov [show_file_name_old],eax |
mov eax,[check2+32] |
mov [filtering_flag_old],eax |
xor eax,eax |
mov [option_pointer],eax |
call .set_pointers |
.red: |
call .draw_window |
|
.still: |
|
mov eax,10 ; wait here for event |
mcall |
|
cmp eax,1 ; redraw request ? |
je .red |
cmp eax,2 ; key in buffer ? |
je .key |
cmp eax,3 ; button in buffer ? |
je .button |
cmp eax,6 ; mouse in buffer ? |
je .mouse |
jmp .still |
|
.mouse: |
mov ebx,[check1+32] |
and ebx,10b |
push dword check1 |
call [check_box_mouse] |
mov eax,[check1+32] |
and eax,10b |
cmp ebx,eax |
je @f ;.still |
mov [option_pointer],2 |
call .set_pointers |
call .draw_all_options_values |
jmp .still |
@@: |
mov ebx,[check2+32] |
and ebx,10b |
push dword check2 |
call [check_box_mouse] |
mov eax,[check2+32] |
and eax,10b |
cmp ebx,eax |
je .still |
mov [option_pointer],3 |
call .set_pointers |
call .draw_all_options_values |
jmp .still |
;--------------------------------------------------------------------- |
.key: |
mcall |
cmp ah,27 |
je .close |
cmp ah,13 |
je .kok |
cmp ah,32 |
je .select_space |
cmp ah,56 ;plus |
je .select_plus ;.plus_slide_show_delay |
cmp ah,43 ;plus |
je .select_plus ;.plus_slide_show_delay |
cmp ah,61 ;plus |
je .select_plus ;.plus_slide_show_delay |
cmp ah,54 ;minus |
je .select_minus ;.minus_slide_show_delay |
cmp ah,45 ;minus |
je .select_minus ;.minus_slide_show_delay |
cmp ah,95 ;minus |
je .select_minus ;.minus_slide_show_delay |
cmp ah,178 ;up arrow |
je .up_arrow |
cmp ah,177 ;down arrow |
je .down_arrow |
jmp .still |
;--------------------------------------------------------------------- |
.button: ; button |
mov eax,17 ; get id |
mcall |
|
cmp ah,5 |
je .minus_arrows_offset |
|
cmp ah,4 |
je .plus_arrows_offset |
|
cmp ah,3 |
je .minus_slide_show_delay |
|
cmp ah,2 |
je .plus_slide_show_delay |
|
cmp ah,1 ; button id=1 ? |
jne .noclose |
.close: |
mov eax,[slide_show_delay_old] |
mov [slide_show_delay],eax |
mov eax,[arrows_offset_old] |
mov [arrows_offset],eax |
mov eax,[show_file_name_old] |
mov [check1+32],eax |
mov eax,[filtering_flag_old] |
mov [check2+32],eax |
jmp .close_all |
.close_1: |
mov eax,[check2+32] |
test eax,10b |
jz @f |
mov [filtering_flag],1 |
jmp .redraw_flag |
@@: |
mov [filtering_flag],0 |
.redraw_flag: |
mov [redraw_flag],byte 1 |
.close_all: |
xor dword [status],64 |
xor eax,eax |
mov [PID7],eax |
|
mcall 68,13,[thread_stack_7] |
|
mov eax,-1 ; close this program |
mcall |
.noclose: |
|
.kok: |
|
jmp .close_1 |
;--------------------------------------------------------------------- |
.select_plus: |
jmp [plus_pointer] |
;--------------------------------------------------------------------- |
.select_minus: |
jmp [minus_pointer] |
;--------------------------------------------------------------------- |
.select_space: |
jmp [space_pointer] |
;--------------------------------------------------------------------- |
.plus_slide_show_delay: |
cmp [option_pointer],0 |
je @f |
mov [option_pointer],0 |
call .draw_all_options_values |
@@: |
cmp [slide_show_delay],99990 |
je .still |
add [slide_show_delay],10 |
call .draw_slide_show_delay |
jmp .still |
;--------------------------------------------------------------------- |
.minus_slide_show_delay: |
cmp [option_pointer],0 |
je @f |
mov [option_pointer],0 |
call .draw_all_options_values |
@@: |
cmp [slide_show_delay],0 |
je .still |
sub [slide_show_delay],10 |
call .draw_slide_show_delay |
jmp .still |
;--------------------------------------------------------------------- |
.plus_arrows_offset: |
cmp [option_pointer],1 |
je @f |
mov [option_pointer],1 |
call .draw_all_options_values |
@@: |
cmp [arrows_offset],100 |
je .still |
inc [arrows_offset] |
call .draw_arrows_offset |
call calculate_arrows_offset |
jmp .still |
;--------------------------------------------------------------------- |
.minus_arrows_offset: |
cmp [option_pointer],1 |
je @f |
mov [option_pointer],1 |
call .draw_all_options_values |
@@: |
cmp [arrows_offset],1 |
je .still |
dec [arrows_offset] |
call .draw_arrows_offset |
call calculate_arrows_offset |
jmp .still |
;--------------------------------------------------------------------- |
.space_check1: |
test [check1+32],dword 10b |
jnz @f |
or [check1+32],dword 10b |
jmp .space_check1_1 |
@@: |
xor [check1+32],dword 10b |
.space_check1_1: |
call .draw_all_options_values |
jmp .still |
;--------------------------------------------------------------------- |
.space_check2: |
test [check2+32],dword 10b |
jnz @f |
or [check2+32],dword 10b |
jmp .space_check2_1 |
@@: |
xor [check2+32],dword 10b |
.space_check2_1: |
call .draw_all_options_values |
jmp .still |
;--------------------------------------------------------------------- |
.down_arrow: |
cmp [option_pointer],3 |
je .still |
inc [option_pointer] |
.draw_all_points: |
call .set_pointers |
call .draw_all_options_values |
jmp .still |
;--------------------------------------------------------------------- |
.up_arrow: |
cmp [option_pointer],0 |
je .still |
dec [option_pointer] |
jmp .draw_all_points |
;--------------------------------------------------------------------- |
.set_pointers: |
cmp [option_pointer],0 |
jne @f |
mov [plus_pointer],thread7.plus_slide_show_delay |
mov [minus_pointer],thread7.minus_slide_show_delay |
mov [space_pointer],thread7.still |
ret |
@@: |
cmp [option_pointer],1 |
jne @f |
mov [plus_pointer],thread7.plus_arrows_offset |
mov [minus_pointer],thread7.minus_arrows_offset |
mov [space_pointer],thread7.still |
ret |
@@: |
cmp [option_pointer],2 |
jne @f |
mov [plus_pointer],thread7.still |
mov [minus_pointer],thread7.still |
mov [space_pointer],thread7.space_check1 |
ret |
@@: |
mov [plus_pointer],thread7.still |
mov [minus_pointer],thread7.still |
mov [space_pointer],thread7.space_check2 |
ret |
;--------------------------------------------------------------------- |
.draw_all_options_values: |
call .draw_slide_show_delay |
call .draw_arrows_offset |
call .draw_check1 |
call .draw_check2 |
ret |
;--------------------------------------------------------------------- |
; ********************************************* |
; ******* WINDOW DEFINITIONS AND DRAW ******** |
; ********************************************* |
|
|
.draw_window: |
mcall 12,1 |
; DRAW WINDOW |
xor eax,eax ; function 0 : define and draw window |
mov ebx,100*65536+300 ; [x start] *65536 + [x size] |
mov ecx,100*65536+120 ; [y start] *65536 + [y size] |
mov edx,0x03909090 ; color of work area RRGGBB,8->color gl |
mcall |
|
mcall 8,<15,10>,<50,11>,2,0xdddddd |
inc edx |
mcall ,<77,10> |
;--------------------------------- |
inc edx |
mcall ,<15,10>,<90,11> |
inc edx |
mcall ,<77,10> |
;--------------------------------- |
inc edx |
mcall ,<250,40>,<50,20> |
;--------------------------------- |
|
; mcall 13,<50,45>,<25,12>,0xffffff |
; mov ecx,[ch_flag_en] |
; mcall 47,0x800a0000,,<72,27>,0x10000000; 0x40000000,0xffffff |
; WINDOW LABEL |
mcall 71,1, optiontext |
|
; mov eax,4 ; function 4 : write text to window |
; mov ebx,46*65536+28 ; [x start] *65536 + [y start] |
; mov ecx,0xffffff |
; mov edx, sorttext |
; mov esi, sorttext.size |
; mcall |
; mov ebx,135*65536+57 |
; mov edx, ok_btn |
; mov esi, ok_btn.size ;2 |
mcall 4,<10,35>,0x80ffffff,slide_show_delay_title |
mcall ,<17,53>,0x90000000,slide_show_delay_text |
mcall ,<10,75>,0x80ffffff,arrows_offset_title |
mcall ,<17,93>,0x90000000,slide_show_delay_text |
mcall ,<265,57>, ,ok_btn |
|
call .draw_all_options_values |
|
; mcall 47,0x80000,[PID5],<200, 5>,0xffffff |
mcall 12,2 |
|
ret |
;--------------------------------------------------------------------- |
;.draw_opt_boxes: |
; draw_option_boxes option_boxes_sort,option_boxes_sort_end |
; ret |
;--------------------------------------------------------------------- |
.draw_slide_show_delay: |
mov edx,0xffffff |
cmp [option_pointer],0 |
jne @f |
mov edx,0xffff80 |
@@: |
mcall 13,<29,45>,<50,12>, |
mcall 47,0x800a0000,[slide_show_delay],<32,52>,0x10000000; 0x40000000,0xffffff |
ret |
;--------------------------------------------------------------------- |
.draw_arrows_offset: |
mov edx,0xffffff |
cmp [option_pointer],1 |
jne @f |
mov edx,0xffff80 |
@@: |
mcall 13,<29,45>,<90,12>, |
mcall 47,0x800a0000,[arrows_offset],<32,92>,0x10000000; 0x40000000,0xffffff |
ret |
;--------------------------------------------------------------------- |
.draw_check1: |
mov [check1+12],dword 0xffffff |
cmp [option_pointer],2 |
jne @f |
mov [check1+12],dword 0xffff80 |
@@: |
push dword check1 |
call [check_box_draw] |
ret |
;--------------------------------------------------------------------- |
.draw_check2: |
mov [check2+12],dword 0xffffff |
cmp [option_pointer],3 |
jne @f |
mov [check2+12],dword 0xffff80 |
@@: |
push dword check2 |
call [check_box_draw] |
ret |
;--------------------------------------------------------------------- |