forked from KolibriOS/kolibrios
kiv:
add basic slide show mode toggle toolbar tweak layout engine git-svn-id: svn://kolibrios.org@3116 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
595e11fbff
commit
cbee725189
@ -1,99 +0,0 @@
|
|||||||
|
|
||||||
proc dll.Load, import_table:dword
|
|
||||||
mov esi,[import_table]
|
|
||||||
.next_lib: mov edx,[esi]
|
|
||||||
or edx,edx
|
|
||||||
jz .exit
|
|
||||||
push esi
|
|
||||||
mov esi,[esi+4]
|
|
||||||
mov edi,s_libdir.fname
|
|
||||||
@@: lodsb
|
|
||||||
stosb
|
|
||||||
or al,al
|
|
||||||
jnz @b
|
|
||||||
mcall 68,19,s_libdir
|
|
||||||
or eax,eax
|
|
||||||
jz .fail
|
|
||||||
stdcall dll.Link,eax,edx
|
|
||||||
push eax
|
|
||||||
mov eax, [eax]
|
|
||||||
cmp dword [eax], 'lib_'
|
|
||||||
pop eax
|
|
||||||
jnz @f
|
|
||||||
stdcall dll.Init,[eax+4]
|
|
||||||
@@:
|
|
||||||
pop esi
|
|
||||||
add esi,8
|
|
||||||
jmp .next_lib
|
|
||||||
.exit: xor eax,eax
|
|
||||||
ret
|
|
||||||
.fail: add esp,4
|
|
||||||
xor eax,eax
|
|
||||||
inc eax
|
|
||||||
ret
|
|
||||||
endp
|
|
||||||
|
|
||||||
proc dll.Link, exp:dword,imp:dword
|
|
||||||
push eax
|
|
||||||
mov esi,[imp]
|
|
||||||
test esi,esi
|
|
||||||
jz .done
|
|
||||||
.next: lodsd
|
|
||||||
test eax,eax
|
|
||||||
jz .done
|
|
||||||
stdcall dll.GetProcAddress,[exp],eax
|
|
||||||
or eax,eax
|
|
||||||
jz @f
|
|
||||||
mov [esi-4],eax
|
|
||||||
jmp .next
|
|
||||||
@@: mov dword[esp],0
|
|
||||||
.done: pop eax
|
|
||||||
ret
|
|
||||||
endp
|
|
||||||
|
|
||||||
proc dll.Init, dllentry:dword
|
|
||||||
pushad
|
|
||||||
mov eax,mem.Alloc
|
|
||||||
mov ebx,mem.Free
|
|
||||||
mov ecx,mem.ReAlloc
|
|
||||||
mov edx,dll.Load
|
|
||||||
stdcall [dllentry]
|
|
||||||
popad
|
|
||||||
ret
|
|
||||||
endp
|
|
||||||
|
|
||||||
proc dll.GetProcAddress, exp:dword,sz_name:dword
|
|
||||||
mov edx,[exp]
|
|
||||||
xor eax,eax
|
|
||||||
.next: or edx,edx
|
|
||||||
jz .end
|
|
||||||
cmp dword[edx],0
|
|
||||||
jz .end
|
|
||||||
stdcall strcmp,[edx],[sz_name]
|
|
||||||
test eax,eax
|
|
||||||
jz .ok
|
|
||||||
add edx,8
|
|
||||||
jmp .next
|
|
||||||
.ok: mov eax,[edx+4]
|
|
||||||
.end: ret
|
|
||||||
endp
|
|
||||||
|
|
||||||
proc strcmp, str1:dword,str2:dword
|
|
||||||
push esi edi
|
|
||||||
mov esi,[str1]
|
|
||||||
mov edi,[str2]
|
|
||||||
xor eax,eax
|
|
||||||
@@: lodsb
|
|
||||||
scasb
|
|
||||||
jne .fail
|
|
||||||
or al,al
|
|
||||||
jnz @b
|
|
||||||
jmp .ok
|
|
||||||
.fail: or eax,-1
|
|
||||||
.ok: pop edi esi
|
|
||||||
ret
|
|
||||||
endp
|
|
||||||
|
|
||||||
s_libdir:
|
|
||||||
db '/sys/lib/'
|
|
||||||
.fname rb 32
|
|
@ -6,12 +6,11 @@ dd 0x01, START, I_END, F_END, stacktop, @PARAMS, 0x0
|
|||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
|
|
||||||
FALSE = 0
|
include '../../../config.inc'
|
||||||
TRUE = 1
|
|
||||||
include '../../../config.inc' ;for nightbuild
|
|
||||||
include '../../../proc32.inc'
|
include '../../../proc32.inc'
|
||||||
include '../../../macros.inc'
|
include '../../../macros.inc'
|
||||||
include 'dll.inc'
|
include '../../../dll.inc'
|
||||||
|
;include '../../../debug.inc'
|
||||||
|
|
||||||
include '../../../develop/libraries/libs-dev/libio/libio.inc'
|
include '../../../develop/libraries/libs-dev/libio/libio.inc'
|
||||||
include '../../../develop/libraries/libs-dev/libimg/libimg.inc'
|
include '../../../develop/libraries/libs-dev/libimg/libimg.inc'
|
||||||
@ -53,6 +52,10 @@ START:
|
|||||||
mov [next_key], eax
|
mov [next_key], eax
|
||||||
invoke ini_get_shortcut, inifilename, aShortcuts, aPrev, -1, prev_mod
|
invoke ini_get_shortcut, inifilename, aShortcuts, aPrev, -1, prev_mod
|
||||||
mov [prev_key], eax
|
mov [prev_key], eax
|
||||||
|
invoke ini_get_shortcut, inifilename, aShortcuts, aSlide, -1, slide_mod
|
||||||
|
mov [slide_key], eax
|
||||||
|
invoke ini_get_shortcut, inifilename, aShortcuts, aTglbar, -1, tglbar_mod
|
||||||
|
mov [tglbar_key], eax
|
||||||
mcall 66, 1, 1 ; set kbd mode to scancodes
|
mcall 66, 1, 1 ; set kbd mode to scancodes
|
||||||
|
|
||||||
cmp byte [@PARAMS], 0
|
cmp byte [@PARAMS], 0
|
||||||
@ -140,7 +143,30 @@ keyloop:
|
|||||||
jz .next
|
jz .next
|
||||||
add edx, prev_mod - next_mod
|
add edx, prev_mod - next_mod
|
||||||
call check_shortcut
|
call check_shortcut
|
||||||
jnz keyloop
|
jz .prev
|
||||||
|
add edx, slide_mod - prev_mod
|
||||||
|
call check_shortcut
|
||||||
|
jz .slide
|
||||||
|
add edx, tglbar_mod - slide_mod
|
||||||
|
call check_shortcut
|
||||||
|
jz .tglbar
|
||||||
|
cmp cl, 1 ; Esc
|
||||||
|
jz .esc
|
||||||
|
jmp keyloop
|
||||||
|
.esc:
|
||||||
|
test byte [bSlideShow], 1
|
||||||
|
jnz .slide
|
||||||
|
jmp keyloop
|
||||||
|
.tglbar:
|
||||||
|
mov byte [bTglbar], 1
|
||||||
|
test byte[bSlideShow], 1
|
||||||
|
jnz @f
|
||||||
|
xor [toolbar_height], 31
|
||||||
|
@@:
|
||||||
|
jmp keyloop
|
||||||
|
.slide:
|
||||||
|
call slide_show
|
||||||
|
jmp keyloop
|
||||||
.prev:
|
.prev:
|
||||||
dec esi
|
dec esi
|
||||||
jmp keyloop
|
jmp keyloop
|
||||||
@ -148,8 +174,13 @@ keyloop:
|
|||||||
inc esi
|
inc esi
|
||||||
jmp keyloop
|
jmp keyloop
|
||||||
keyloopdone:
|
keyloopdone:
|
||||||
test esi, esi
|
test esi, esi
|
||||||
jz still
|
jnz next_or_prev_handler
|
||||||
|
test byte [bSlideShow], 2
|
||||||
|
jnz red
|
||||||
|
test byte [bTglbar], 1
|
||||||
|
jnz red
|
||||||
|
jmp still
|
||||||
next_or_prev_handler:
|
next_or_prev_handler:
|
||||||
call next_or_prev_image
|
call next_or_prev_image
|
||||||
jmp red
|
jmp red
|
||||||
@ -257,6 +288,13 @@ button:
|
|||||||
call set_as_bgr
|
call set_as_bgr
|
||||||
jmp still
|
jmp still
|
||||||
|
|
||||||
|
@@:
|
||||||
|
cmp eax, 'sld'
|
||||||
|
jne @f
|
||||||
|
|
||||||
|
call slide_show
|
||||||
|
jmp red
|
||||||
|
|
||||||
@@:
|
@@:
|
||||||
|
|
||||||
or esi, -1
|
or esi, -1
|
||||||
@ -296,10 +334,6 @@ load_image:
|
|||||||
inc eax
|
inc eax
|
||||||
jz .error
|
jz .error
|
||||||
|
|
||||||
; img.decode checks for img.is_img
|
|
||||||
; invoke img.is_img, [img_data], [img_data_len]
|
|
||||||
; or eax, eax
|
|
||||||
; jz exit
|
|
||||||
invoke img.decode, [img_data], [img_data_len], 0
|
invoke img.decode, [img_data], [img_data_len], 0
|
||||||
or eax, eax
|
or eax, eax
|
||||||
jz .error
|
jz .error
|
||||||
@ -351,10 +385,11 @@ update_image_sizes:
|
|||||||
.not_in_row:
|
.not_in_row:
|
||||||
mov [draw_width], edx
|
mov [draw_width], edx
|
||||||
add edx, 19
|
add edx, 19
|
||||||
cmp edx, 40 + 25*9
|
cmp edx, 50 + 25*numimages
|
||||||
jae @f
|
jae @f
|
||||||
mov edx, 40 + 25*9
|
mov edx, 50 + 25*numimages
|
||||||
@@:
|
@@:
|
||||||
|
; dec edx
|
||||||
mov [wnd_width], edx
|
mov [wnd_width], edx
|
||||||
mov esi, [eax + Image.Height]
|
mov esi, [eax + Image.Height]
|
||||||
test [eax + Image.Flags], Image.IsAnimated
|
test [eax + Image.Flags], Image.IsAnimated
|
||||||
@ -370,10 +405,16 @@ update_image_sizes:
|
|||||||
@@: pop eax
|
@@: pop eax
|
||||||
.max_equals_first:
|
.max_equals_first:
|
||||||
mov [draw_height], esi
|
mov [draw_height], esi
|
||||||
add esi, 44
|
add esi, [toolbar_height]
|
||||||
|
add esi, [image_padding]
|
||||||
|
add esi, [image_padding]
|
||||||
|
add esi, 5 ; window bottom frame height
|
||||||
|
dec esi
|
||||||
mov [wnd_height], esi
|
mov [wnd_height], esi
|
||||||
popf
|
popf
|
||||||
jz .no_resize
|
jz .no_resize
|
||||||
|
test [wnd_style], 1 SHL 25
|
||||||
|
jz .no_resize
|
||||||
mcall 48, 4
|
mcall 48, 4
|
||||||
add esi, eax
|
add esi, eax
|
||||||
mcall 67,-1,-1
|
mcall 67,-1,-1
|
||||||
@ -399,6 +440,23 @@ set_as_bgr:
|
|||||||
mcall 15, 3
|
mcall 15, 3
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
slide_show:
|
||||||
|
or byte [bSlideShow], 2
|
||||||
|
xor byte [bSlideShow], 1
|
||||||
|
btc dword [wnd_style], 25
|
||||||
|
jc @f
|
||||||
|
mov eax, [toolbar_height_old]
|
||||||
|
mov [toolbar_height], eax
|
||||||
|
mov [image_padding], 5
|
||||||
|
jmp .toolbar_height_done
|
||||||
|
@@:
|
||||||
|
mov eax, [toolbar_height]
|
||||||
|
mov [toolbar_height_old], eax
|
||||||
|
mov [toolbar_height], 0
|
||||||
|
mov [image_padding], 0
|
||||||
|
.toolbar_height_done:
|
||||||
|
ret
|
||||||
|
|
||||||
; seek to ESI image files
|
; seek to ESI image files
|
||||||
; esi>0 means next file, esi<0 - prev file
|
; esi>0 means next file, esi<0 - prev file
|
||||||
next_or_prev_image:
|
next_or_prev_image:
|
||||||
@ -574,7 +632,8 @@ load_directory:
|
|||||||
jz .copy
|
jz .copy
|
||||||
cmp ecx, 'cur'
|
cmp ecx, 'cur'
|
||||||
jz .copy
|
jz .copy
|
||||||
; dunkaist [
|
cmp ecx, 'tga'
|
||||||
|
jz .copy
|
||||||
cmp ecx, 'pcx'
|
cmp ecx, 'pcx'
|
||||||
jz .copy
|
jz .copy
|
||||||
cmp ecx, 'xcf'
|
cmp ecx, 'xcf'
|
||||||
@ -591,7 +650,6 @@ load_directory:
|
|||||||
jz @f
|
jz @f
|
||||||
cmp ecx, 'wbmp'
|
cmp ecx, 'wbmp'
|
||||||
jz @f
|
jz @f
|
||||||
; dunkaist ]
|
|
||||||
cmp ecx, 'jpeg'
|
cmp ecx, 'jpeg'
|
||||||
jz @f
|
jz @f
|
||||||
cmp ecx, 'jpeG'
|
cmp ecx, 'jpeG'
|
||||||
@ -678,21 +736,57 @@ init_frame:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
draw_window:
|
draw_window:
|
||||||
|
btr word [bSlideShow], 1 ; mode changed
|
||||||
|
jc .mode_changed
|
||||||
|
test byte [bTglbar], 1
|
||||||
|
jz .mode_not_changed
|
||||||
|
.mode_changed:
|
||||||
|
test [wnd_style], 1 SHL 25
|
||||||
|
jz .mode_slide
|
||||||
|
mov [bg_color], 0x00ffffff
|
||||||
|
mov eax, [image]
|
||||||
|
cmp eax, eax
|
||||||
|
call update_image_sizes
|
||||||
|
mcall 48, 4
|
||||||
|
mov esi, [wnd_height]
|
||||||
|
add esi, eax
|
||||||
|
test byte [bTglbar], 1
|
||||||
|
jz @f
|
||||||
|
mcall 67, -1, -1, [wnd_width],
|
||||||
|
jmp .mode_not_changed
|
||||||
|
@@:
|
||||||
|
mcall 67, [wnd_x], [wnd_y], [wnd_width],
|
||||||
|
jmp .mode_not_changed
|
||||||
|
.mode_slide:
|
||||||
|
mov [bg_color], 0x00000000
|
||||||
|
mov eax, [procinfo.box.left]
|
||||||
|
mov [wnd_x], eax
|
||||||
|
mov eax, [procinfo.box.top]
|
||||||
|
mov [wnd_y], eax
|
||||||
|
mcall 14
|
||||||
|
mov edx, eax
|
||||||
|
shr edx, 16
|
||||||
|
movzx eax, ax
|
||||||
|
mov esi, eax
|
||||||
|
mcall 67, 0, 0, ,
|
||||||
|
jmp .posok.slide_show
|
||||||
|
|
||||||
|
.mode_not_changed:
|
||||||
cmp [bFirstDraw], 0
|
cmp [bFirstDraw], 0
|
||||||
jz .posok
|
jz .posok
|
||||||
or ecx, -1
|
or ecx, -1
|
||||||
mcall 9, procinfo
|
mcall 9, procinfo
|
||||||
|
|
||||||
cmp dword [ebx + 66], 0
|
test byte [procinfo.wnd_state], 0x04
|
||||||
jle .posok
|
jnz .posok
|
||||||
|
|
||||||
mov edx, ecx
|
mov edx, ecx
|
||||||
mov esi, ecx
|
mov esi, ecx
|
||||||
cmp dword [ebx + 42], 40 + 25 * 9
|
cmp dword [procinfo.box.width], 50 + 25 * numimages
|
||||||
jae @f
|
jae @f
|
||||||
mov edx, 40 + 25 * 9
|
mov edx, 50 + 25 * numimages
|
||||||
@@:
|
@@:
|
||||||
cmp dword [ebx + 46], 70
|
cmp dword [procinfo.box.height], 70
|
||||||
jae @f
|
jae @f
|
||||||
mov esi, 70
|
mov esi, 70
|
||||||
@@:
|
@@:
|
||||||
@ -705,28 +799,66 @@ draw_window:
|
|||||||
@@:
|
@@:
|
||||||
|
|
||||||
.posok:
|
.posok:
|
||||||
|
test [wnd_style], 1 SHL 25
|
||||||
|
jz .posok.slide_show
|
||||||
mcall 12, 1
|
mcall 12, 1
|
||||||
mcall 48, 4
|
mcall 48, 4
|
||||||
mov ebp, eax ; save skin height
|
mov ebp, eax ; save skin height
|
||||||
add eax, [wnd_height]
|
add eax, [wnd_height]
|
||||||
__mov ebx, 100, 0
|
mov ebx, [wnd_x]
|
||||||
|
shl ebx, 16
|
||||||
add ebx, [wnd_width]
|
add ebx, [wnd_width]
|
||||||
lea ecx, [100*65536 + eax]
|
mov ecx, [wnd_y]
|
||||||
mcall 0, , , 0x73FFFFFF, 0, real_header
|
shl ecx, 16
|
||||||
|
add ecx, eax
|
||||||
|
mcall 0, , , [wnd_style], 0, real_header
|
||||||
|
jmp .posok.common
|
||||||
|
.posok.slide_show:
|
||||||
|
mcall 12, 1
|
||||||
|
mcall 14
|
||||||
|
mov ebx, eax
|
||||||
|
shr ebx, 16
|
||||||
|
movzx eax, ax
|
||||||
|
mov ecx, eax
|
||||||
|
mcall 0, , , [wnd_style], 0, real_header
|
||||||
|
.posok.common:
|
||||||
mcall 9, procinfo, -1
|
mcall 9, procinfo, -1
|
||||||
|
mov eax, [procinfo.client_box.width]
|
||||||
|
sub eax, [image_padding]
|
||||||
|
sub eax, [image_padding]
|
||||||
|
sub eax, [draw_width]
|
||||||
|
sar eax, 1
|
||||||
|
test eax, eax
|
||||||
|
jns @f
|
||||||
|
mov eax, 0
|
||||||
|
@@:
|
||||||
|
add eax, [image_padding]
|
||||||
|
mov [draw_x], eax
|
||||||
|
mov eax, [procinfo.client_box.height]
|
||||||
|
sub eax, [toolbar_height]
|
||||||
|
sub eax, [image_padding]
|
||||||
|
sub eax, [image_padding]
|
||||||
|
sub eax, [draw_height]
|
||||||
|
sar eax, 1
|
||||||
|
test eax, eax
|
||||||
|
jns @f
|
||||||
|
mov eax, 0
|
||||||
|
@@:
|
||||||
|
add eax, [toolbar_height]
|
||||||
|
add eax, [image_padding]
|
||||||
|
mov [draw_y], eax
|
||||||
mov [bFirstDraw], 1
|
mov [bFirstDraw], 1
|
||||||
cmp dword [ebx + 66], 0
|
cmp dword [procinfo.client_box.height], 0
|
||||||
jle .nodraw
|
jle .nodraw
|
||||||
mov ebx, [ebx + 62]
|
mov ebx, [procinfo.client_box.width]
|
||||||
inc ebx
|
inc ebx
|
||||||
mcall 13, , <0, 35>, 0xFFFFFF
|
mov ecx, [draw_y]
|
||||||
mov ecx, [procinfo + 66]
|
mcall 13, , , [bg_color]
|
||||||
|
mov ecx, [procinfo.client_box.height]
|
||||||
inc ecx
|
inc ecx
|
||||||
; mov esi, [draw_height] ; we can not use [draw_height] here because for *.ico files containing several frames
|
mov esi, [cur_frame]
|
||||||
mov esi, [image] ; with different size window height should depend on maximum frame height, not the first one
|
mov esi, [esi + Image.Height]
|
||||||
mov esi, [esi+Image.Height] ;
|
add esi, [draw_y]
|
||||||
add esi, 35
|
|
||||||
sub ecx, esi
|
sub ecx, esi
|
||||||
jbe @f
|
jbe @f
|
||||||
push esi
|
push esi
|
||||||
@ -737,14 +869,16 @@ draw_window:
|
|||||||
xor ecx, ecx
|
xor ecx, ecx
|
||||||
@@:
|
@@:
|
||||||
add ecx, esi
|
add ecx, esi
|
||||||
add ecx, 35*10000h - 35
|
mov ebx, [draw_y]
|
||||||
__mov ebx, 0, 5
|
sub ecx, ebx
|
||||||
|
shl ebx, 16
|
||||||
|
add ecx, ebx
|
||||||
|
mov ebx, [draw_x]
|
||||||
mcall
|
mcall
|
||||||
; mov esi, [draw_width] ; we can not use [draw_width] here because for *.ico files containing several frames
|
mov esi, [cur_frame]
|
||||||
mov esi, [image] ; with different size window width should depend on the sum of width of all frames
|
mov esi, [esi + Image.Width]
|
||||||
mov esi, [esi + Image.Width] ;
|
|
||||||
add esi, ebx
|
add esi, ebx
|
||||||
mov ebx, [procinfo+62]
|
mov ebx, [procinfo.client_box.width]
|
||||||
inc ebx
|
inc ebx
|
||||||
sub ebx, esi
|
sub ebx, esi
|
||||||
jbe @f
|
jbe @f
|
||||||
@ -753,14 +887,19 @@ draw_window:
|
|||||||
mcall
|
mcall
|
||||||
@@:
|
@@:
|
||||||
|
|
||||||
mov ebx, [procinfo + 62]
|
test [wnd_style], 1 SHL 25
|
||||||
|
jz .slide_show_mode
|
||||||
|
mov byte [bTglbar], 0
|
||||||
|
cmp byte [toolbar_height], 0
|
||||||
|
je .decorations_done
|
||||||
|
mov ebx, [procinfo.client_box.width]
|
||||||
push ebx
|
push ebx
|
||||||
mcall 38, , <30, 30>, 0x007F7F7F
|
mcall 38, , <30, 30>, 0x007F7F7F
|
||||||
mcall , <5 + 25 * 1, 5 + 25 * 1>, <0, 30>
|
mcall , <5 + 25 * 1, 5 + 25 * 1>, <0, 30>
|
||||||
mcall , <10 + 25 * 3, 10 + 25 * 3>
|
mcall , <10 + 25 * 3, 10 + 25 * 3>
|
||||||
mcall , <15 + 25 * 4, 15 + 25 * 4>
|
mcall , <15 + 25 * 5, 15 + 25 * 5>
|
||||||
pop ebx
|
pop ebx
|
||||||
sub ebx, 25 * 5 + 10
|
sub ebx, 25 * 5 + 10
|
||||||
push ebx
|
push ebx
|
||||||
imul ebx, 10001h
|
imul ebx, 10001h
|
||||||
mcall
|
mcall
|
||||||
@ -769,6 +908,7 @@ draw_window:
|
|||||||
mcall , <10 + 25 * 1, 20>, , 'bck'+40000000h
|
mcall , <10 + 25 * 1, 20>, , 'bck'+40000000h
|
||||||
mcall , <10 + 25 * 2, 20>, , 'fwd'+40000000h
|
mcall , <10 + 25 * 2, 20>, , 'fwd'+40000000h
|
||||||
mcall , <15 + 25 * 3, 20>, , 'bgr'+40000000h
|
mcall , <15 + 25 * 3, 20>, , 'bgr'+40000000h
|
||||||
|
mcall , <15 + 25 * 4, 20>, , 'sld'+40000000h
|
||||||
pop ebx
|
pop ebx
|
||||||
add ebx, 5
|
add ebx, 5
|
||||||
shl ebx, 16
|
shl ebx, 16
|
||||||
@ -786,10 +926,11 @@ draw_window:
|
|||||||
mov ebp, (numimages-1)*20
|
mov ebp, (numimages-1)*20
|
||||||
|
|
||||||
mcall 65, buttons+openbtn*20, <20, 20>, <5 + 25 * 0, 5>, 8, palette
|
mcall 65, buttons+openbtn*20, <20, 20>, <5 + 25 * 0, 5>, 8, palette
|
||||||
mcall , buttons+backbtn*20, , <10 + 25 * 1, 5>
|
mcall , buttons+backbtn*20, , <10 + 25 * 1, 5>
|
||||||
mcall , buttons+forwardbtn*20, , <10 + 25 * 2, 5>
|
mcall , buttons+forwardbtn*20, , <10 + 25 * 2, 5>
|
||||||
mcall , buttons+bgrbtn*20, , <15 + 25 * 3, 5>
|
mcall , buttons+bgrbtn*20, , <15 + 25 * 3, 5>
|
||||||
mov edx, [procinfo + 62]
|
mcall , buttons+slidebtn*20, , <15 + 25 * 4, 5>
|
||||||
|
mov edx, [procinfo.client_box.width]
|
||||||
sub edx, 25 * 5 + 4
|
sub edx, 25 * 5 + 4
|
||||||
shl edx, 16
|
shl edx, 16
|
||||||
mov dl, 5
|
mov dl, 5
|
||||||
@ -802,7 +943,11 @@ draw_window:
|
|||||||
mcall , buttons+rotccwbtn*20
|
mcall , buttons+rotccwbtn*20
|
||||||
add edx, 25 * 65536
|
add edx, 25 * 65536
|
||||||
mcall , buttons+rot180btn*20
|
mcall , buttons+rot180btn*20
|
||||||
|
jmp .decorations_done
|
||||||
|
|
||||||
|
.slide_show_mode:
|
||||||
|
|
||||||
|
.decorations_done:
|
||||||
call draw_cur_frame
|
call draw_cur_frame
|
||||||
|
|
||||||
.nodraw:
|
.nodraw:
|
||||||
@ -813,14 +958,17 @@ draw_window:
|
|||||||
draw_cur_frame:
|
draw_cur_frame:
|
||||||
push 0 ; ypos
|
push 0 ; ypos
|
||||||
push 0 ; xpos
|
push 0 ; xpos
|
||||||
mov eax, [procinfo+66]
|
mov eax, [procinfo.client_box.height]
|
||||||
sub eax, 34
|
sub eax, [toolbar_height]
|
||||||
|
sub eax, [image_padding]
|
||||||
|
inc eax
|
||||||
push eax ; max height
|
push eax ; max height
|
||||||
mov eax, [procinfo+62]
|
mov eax, [procinfo.client_box.width]
|
||||||
sub eax, 4
|
sub eax, [image_padding]
|
||||||
|
inc eax
|
||||||
push eax ; max width
|
push eax ; max width
|
||||||
push 35 ; y
|
push [draw_y]
|
||||||
push 5 ; x
|
push [draw_x]
|
||||||
push [cur_frame]
|
push [cur_frame]
|
||||||
call [img.draw]
|
call [img.draw]
|
||||||
mov eax, [image]
|
mov eax, [image]
|
||||||
@ -831,11 +979,11 @@ draw_cur_frame:
|
|||||||
.done:
|
.done:
|
||||||
ret
|
ret
|
||||||
.additional_frames:
|
.additional_frames:
|
||||||
mov ebx, [procinfo+62]
|
mov ebx, [procinfo.client_box.width]
|
||||||
sub ebx, 4
|
sub ebx, [image_padding]
|
||||||
|
inc ebx
|
||||||
jbe .done
|
jbe .done
|
||||||
push 5
|
mov esi, [draw_x]
|
||||||
pop esi
|
|
||||||
.afloop:
|
.afloop:
|
||||||
sub ebx, [eax + Image.Width]
|
sub ebx, [eax + Image.Width]
|
||||||
jbe .done
|
jbe .done
|
||||||
@ -847,11 +995,14 @@ draw_cur_frame:
|
|||||||
inc esi
|
inc esi
|
||||||
push 0 ; ypos
|
push 0 ; ypos
|
||||||
push 0 ; xpos
|
push 0 ; xpos
|
||||||
mov ecx, [procinfo+66]
|
mov ecx, [procinfo.client_box.height]
|
||||||
sub ecx, 34
|
sub ecx, [toolbar_height]
|
||||||
|
sub ecx, [image_padding]
|
||||||
|
inc ecx
|
||||||
|
; inc ebx
|
||||||
push ecx ; max height
|
push ecx ; max height
|
||||||
push ebx ; max width
|
push ebx ; max width
|
||||||
push 35 ; y
|
push [draw_y] ; y
|
||||||
push esi ; x
|
push esi ; x
|
||||||
push eax ; image
|
push eax ; image
|
||||||
call [img.draw]
|
call [img.draw]
|
||||||
@ -860,30 +1011,6 @@ draw_cur_frame:
|
|||||||
jnz .afloop
|
jnz .afloop
|
||||||
ret
|
ret
|
||||||
|
|
||||||
; void* __stdcall mem.Alloc(unsigned size);
|
|
||||||
mem.Alloc:
|
|
||||||
push ebx ecx
|
|
||||||
mov ecx, [esp+12]
|
|
||||||
mcall 68, 12
|
|
||||||
pop ecx ebx
|
|
||||||
ret 4
|
|
||||||
|
|
||||||
; void* __stdcall mem.ReAlloc(void* mptr, unsigned size);
|
|
||||||
mem.ReAlloc:
|
|
||||||
push ebx ecx edx
|
|
||||||
mov edx, [esp+16]
|
|
||||||
mov ecx, [esp+20]
|
|
||||||
mcall 68, 20
|
|
||||||
pop edx ecx ebx
|
|
||||||
ret 8
|
|
||||||
|
|
||||||
; void __stdcall mem.Free(void* mptr);
|
|
||||||
mem.Free:
|
|
||||||
push ebx ecx
|
|
||||||
mov ecx, [esp+12]
|
|
||||||
mcall 68, 13
|
|
||||||
pop ecx ebx
|
|
||||||
ret 4
|
|
||||||
|
|
||||||
check_shortcut:
|
check_shortcut:
|
||||||
; in: cl = scancode (from sysfn 2),
|
; in: cl = scancode (from sysfn 2),
|
||||||
@ -973,6 +1100,12 @@ generate_header:
|
|||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
|
|
||||||
s_header db ' - Kolibri Image Viewer', 0
|
s_header db ' - Kolibri Image Viewer', 0
|
||||||
|
wnd_style dd 0x73FFFFFF
|
||||||
|
wnd_x dd 100
|
||||||
|
wnd_y dd 100
|
||||||
|
image_padding dd 5
|
||||||
|
toolbar_height dd 31
|
||||||
|
bg_color dd 0x00ffffff
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
@ -1023,13 +1156,15 @@ import proc_lib, \
|
|||||||
OpenDialog_Start,'OpenDialog_start'
|
OpenDialog_Start,'OpenDialog_start'
|
||||||
|
|
||||||
bFirstDraw db 0
|
bFirstDraw db 0
|
||||||
|
bSlideShow db 0
|
||||||
|
bTglbar db 0
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
|
|
||||||
virtual at 0
|
virtual at 0
|
||||||
file 'kivicons.bmp':0xA,4
|
file 'kivicons.bmp':0xA,4
|
||||||
load offbits dword from 0
|
load offbits dword from 0
|
||||||
end virtual
|
end virtual
|
||||||
numimages = 9
|
numimages = 10
|
||||||
openbtn = 0
|
openbtn = 0
|
||||||
backbtn = 1
|
backbtn = 1
|
||||||
forwardbtn = 2
|
forwardbtn = 2
|
||||||
@ -1039,6 +1174,7 @@ flipvertbtn = 5
|
|||||||
rotcwbtn = 6
|
rotcwbtn = 6
|
||||||
rotccwbtn = 7
|
rotccwbtn = 7
|
||||||
rot180btn = 8
|
rot180btn = 8
|
||||||
|
slidebtn = 9
|
||||||
|
|
||||||
palette:
|
palette:
|
||||||
file 'kivicons.bmp':0x36,offbits-0x36
|
file 'kivicons.bmp':0x36,offbits-0x36
|
||||||
@ -1059,6 +1195,8 @@ inifilename db '/sys/media/kiv.ini',0
|
|||||||
aShortcuts db 'Shortcuts',0
|
aShortcuts db 'Shortcuts',0
|
||||||
aNext db 'Next',0
|
aNext db 'Next',0
|
||||||
aPrev db 'Prev',0
|
aPrev db 'Prev',0
|
||||||
|
aSlide db 'SlideShow',0
|
||||||
|
aTglbar db 'ToggleBar',0
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
check_modifier_table:
|
check_modifier_table:
|
||||||
@ -1113,7 +1251,7 @@ db 'JPE',0
|
|||||||
db 'PNG',0
|
db 'PNG',0
|
||||||
db 'ICO',0
|
db 'ICO',0
|
||||||
db 'CUR',0
|
db 'CUR',0
|
||||||
; dunkaist [
|
db 'TGA',0
|
||||||
db 'PCX',0
|
db 'PCX',0
|
||||||
db 'XCF',0
|
db 'XCF',0
|
||||||
db 'PBM',0
|
db 'PBM',0
|
||||||
@ -1122,7 +1260,6 @@ db 'PNM',0
|
|||||||
db 'TIF',0
|
db 'TIF',0
|
||||||
db 'TIFF',0
|
db 'TIFF',0
|
||||||
db 'WBMP',0
|
db 'WBMP',0
|
||||||
; dunkaist ]
|
|
||||||
.end:
|
.end:
|
||||||
db 0
|
db 0
|
||||||
|
|
||||||
@ -1144,8 +1281,10 @@ img_data dd ?
|
|||||||
img_data_len dd ?
|
img_data_len dd ?
|
||||||
fh dd ?
|
fh dd ?
|
||||||
image dd ?
|
image dd ?
|
||||||
wnd_width dd ?
|
wnd_width dd 100
|
||||||
wnd_height dd ?
|
wnd_height dd 100
|
||||||
|
draw_x dd ?
|
||||||
|
draw_y dd ?
|
||||||
draw_width dd ?
|
draw_width dd ?
|
||||||
draw_height dd ?
|
draw_height dd ?
|
||||||
last_name_component dd ?
|
last_name_component dd ?
|
||||||
@ -1157,8 +1296,14 @@ next_mod dd ?
|
|||||||
next_key dd ?
|
next_key dd ?
|
||||||
prev_mod dd ?
|
prev_mod dd ?
|
||||||
prev_key dd ?
|
prev_key dd ?
|
||||||
|
slide_mod dd ?
|
||||||
|
slide_key dd ?
|
||||||
|
tglbar_mod dd ?
|
||||||
|
tglbar_key dd ?
|
||||||
|
|
||||||
procinfo: rb 1024
|
toolbar_height_old rd 1
|
||||||
|
|
||||||
|
procinfo process_information
|
||||||
path: rb 4096 ;1024+16
|
path: rb 4096 ;1024+16
|
||||||
real_header rb 256
|
real_header rb 256
|
||||||
@PARAMS rb 4096 ;512
|
@PARAMS rb 4096 ;512
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
[Shortcuts]
|
[Shortcuts]
|
||||||
Next=PgDn
|
Next=PgDn
|
||||||
Prev=PgUp
|
Prev=PgUp
|
||||||
|
SlideShow=f
|
||||||
|
ToggleBar=Tab
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 4.2 KiB |
Loading…
Reference in New Issue
Block a user