Subversion Repositories Kolibri OS

Compare Revisions

No changes between revisions

Regard whitespace Rev 1015 → Rev 1016

/programs/media/kiv/trunk/rotccw.bmp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/programs/media/kiv/trunk/rotcw.bmp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/programs/media/kiv/trunk/open.bmp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/programs/media/kiv/trunk/rot180.bmp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/programs/media/kiv/trunk/flipvert.bmp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/programs/media/kiv/trunk/fliphorz.bmp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/programs/media/kiv/trunk/dll.inc
15,7 → 15,13
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
/programs/media/kiv/trunk/kiv.asm
25,6 → 25,8
or eax, eax
jnz exit
 
invoke sort.START, 1
 
mov ecx, 1 ; for 15.4: 1 = tile
cmp word [@PARAMS], '\T'
jz set_bgr
48,24 → 50,9
mcall 15, 4
mov eax, @PARAMS + 4
call load_image
jc exit_bgr
jc exit
 
mov esi, [image]
mov ecx, [esi + Image.Width]
mov edx, [esi + Image.Height]
mcall 15, 1
 
mcall 15, 6
test eax, eax
jz exit_bgr
 
push eax
invoke img.to_rgb2, esi, eax
pop ecx
mcall 15, 7
 
exit_bgr:
mcall 15, 3
call set_as_bgr
jmp exit
 
params_given:
148,14 → 135,36
mov edi, @PARAMS
mov ecx, 512/4
rep movsd
mov byte [edi-1], 0
invoke img.destroy
mov byte [edi-1], 0
call free_directory
jmp red
.restore_old:
pop [image]
jmp still
 
@@: cmp eax, 1
; set background
@@:
cmp eax, 'bgr'
jne @f
 
call set_as_bgr
jmp still
 
@@:
 
cmp eax, 'bck'
jnz @f
call prev_image
jmp still
@@:
cmp eax, 'fwd'
jnz @f
call next_image
jmp still
@@:
 
cmp eax, 1
jne still
 
exit:
225,9 → 234,9
pushf
mov edx, [eax + Image.Width]
add edx, 19
cmp edx, 50 + 25*5
cmp edx, 40 + 25*9
jae @f
mov edx, 50 + 25*5
mov edx, 40 + 25*9
@@:
mov [wnd_width], edx
mov esi, [eax + Image.Height]
241,10 → 250,268
.no_resize:
ret
 
set_as_bgr:
mov esi, [image]
mov ecx, [esi + Image.Width]
mov edx, [esi + Image.Height]
mcall 15, 1
 
mcall 15, 6
test eax, eax
jz @f
 
push eax
invoke img.to_rgb2, esi, eax
pop ecx
mcall 15, 7
 
@@:
mcall 15, 3
ret
 
prev_image:
call load_directory
cmp [directory_ptr], 0
jz .ret
mov ebx, [directory_ptr]
mov eax, [cur_file_idx]
cmp eax, -1
jnz @f
mov eax, [ebx+4]
@@:
push [image]
.scanloop:
dec eax
jns @f
mov eax, [ebx+4]
dec eax
cmp [cur_file_idx], -1
jz .notfound
@@:
cmp eax, [cur_file_idx]
jz .notfound
push eax
imul esi, eax, 304
add esi, [directory_ptr]
add esi, 32 + 40
mov edi, curdir
@@:
inc edi
cmp byte [edi-1], 0
jnz @b
mov byte [edi-1], '/'
@@:
lodsb
stosb
test al, al
jnz @b
mov eax, curdir
call load_image
pop eax
jc .scanloop
mov [cur_file_idx], eax
invoke img.destroy
mov esi, curdir
mov edi, @PARAMS
mov ecx, 512/4
rep movsd
mov byte [edi-1], 0
.ret:
ret
.notfound:
pop [image]
ret
 
next_image:
call load_directory
cmp [directory_ptr], 0
jz .ret
mov ebx, [directory_ptr]
mov eax, [cur_file_idx]
push [image]
.scanloop:
inc eax
cmp eax, [ebx+4]
jb @f
xor eax, eax
cmp [cur_file_idx], -1
jz .notfound
@@:
cmp eax, [cur_file_idx]
jz .notfound
push eax ebx
imul esi, eax, 304
add esi, [directory_ptr]
add esi, 32 + 40
mov edi, curdir
@@:
inc edi
cmp byte [edi-1], 0
jnz @b
mov byte [edi-1], '/'
@@:
lodsb
stosb
test al, al
jnz @b
mov eax, curdir
call load_image
pop ebx eax
jc .scanloop
mov [cur_file_idx], eax
invoke img.destroy
mov esi, curdir
push esi
mov edi, @PARAMS
mov ecx, 512/4
rep movsd
mov byte [edi-1], 0
pop esi
@@:
lodsb
test al, al
jnz @b
@@:
dec esi
cmp byte [esi], '/'
jnz @b
mov byte [esi], 0
.ret:
ret
.notfound:
pop [image]
ret
 
load_directory:
cmp [directory_ptr], 0
jnz .ret
mov esi, @PARAMS
mov ecx, esi
@@:
lodsb
test al, al
jnz @b
@@:
dec esi
cmp byte [esi], '/'
jnz @b
mov [last_name_component], esi
sub esi, ecx
xchg ecx, esi
mov edi, curdir
rep movsb
mov byte [edi], 0
mcall 68, 12, 0x1000
test eax, eax
jz .ret
mov ebx, readdir_fileinfo
mov dword [ebx+12], (0x1000 - 32) / 304
mov dword [ebx+16], eax
mcall 70
cmp eax, 6
jz .dirok
test eax, eax
jnz free_directory
mov edx, [directory_ptr]
mov ecx, [edx+8]
mov [readblocks], ecx
imul ecx, 304
add ecx, 32
mcall 68, 20
test eax, eax
jz free_directory
mov [directory_ptr], eax
mcall 70, readdir_fileinfo
.dirok:
cmp ebx, 0
jle free_directory
mov eax, [directory_ptr]
add eax, 32
mov edi, eax
push 0
.dirskip:
push eax
test byte [eax], 18h
jnz .nocopy
lea esi, [eax+40]
mov ecx, esi
@@:
lodsb
test al, al
jnz @b
@@:
dec esi
cmp esi, ecx
jb .noext
cmp byte [esi], '.'
jnz @b
inc esi
mov ecx, [esi]
or ecx, 0x202020
cmp ecx, 'jpg'
jz .copy
cmp ecx, 'bmp'
jz .copy
cmp ecx, 'gif'
jz .copy
cmp ecx, 'png'
jz .copy
cmp ecx, 'jpe'
jz .copy
cmp ecx, 'jpeg'
jz @f
cmp ecx, 'jpeG'
jnz .nocopy
@@:
cmp byte [esi+4], 0
jnz .nocopy
.copy:
mov esi, [esp]
mov ecx, 304 / 4
rep movsd
inc dword [esp+4]
.nocopy:
.noext:
pop eax
add eax, 304
dec ebx
jnz .dirskip
mov eax, [directory_ptr]
pop ebx
mov [eax+4], ebx
test ebx, ebx
jz free_directory
push 0 ; sort mode
push ebx
add eax, 32
push eax
call [SortDir]
xor eax, eax
mov edi, [directory_ptr]
add edi, 32 + 40
.scan:
mov esi, [last_name_component]
inc esi
push edi
invoke strcmpi
pop edi
jz .found
inc eax
add edi, 304
dec ebx
jnz .scan
or eax, -1
.found:
mov [cur_file_idx], eax
.ret:
ret
 
free_directory:
mcall 68, 13, [directory_ptr]
and [directory_ptr], 0
ret
 
draw_window:
invoke gfx.open, TRUE
mov [ctx], eax
 
mcall 48, 4
mov ebp, eax ; save skin height
add eax, [wnd_height]
255,12 → 522,11
 
mcall 9, procinfo, -1
 
mov ebx, [procinfo + 42]
sub ebx, 9
mov ebx, [procinfo + 62]
inc ebx
mcall 13, , <0, 35>, 0xFFFFFF
mov ecx, [procinfo + 46]
sub ecx, ebp
sub ecx, 9
mov ecx, [procinfo + 66]
sub ecx, 4
shl ecx, 16
mov cl, 5
mcall
284,32 → 550,56
add ebx, esi
mcall
 
invoke gfx.pen.color, [ctx], 0x007F7F7F
mov eax, [procinfo + 42]
sub eax, 10
invoke gfx.line, [ctx], 0, 30, eax, 30
mov ebx, [procinfo + 62]
push ebx
mcall 38, , <30, 30>, 0x007F7F7F
mcall , <5 + 25 * 1, 5 + 25 * 1>, <0, 30>
mcall , <10 + 25 * 3, 10 + 25 * 3>
mcall , <15 + 25 * 4, 15 + 25 * 4>
pop ebx
sub ebx, 25 * 5 + 10
push ebx
imul ebx, 10001h
mcall
 
xor ebp, ebp
 
mcall 8, <5 + 25 * 0, 20>, <5, 20>, 'opn'+40000000h
mcall 65, openbtn, <20, 20>, <5 + 25 * 0, 5>, 4, palette
mcall , <10 + 25 * 1, 20>, , 'bck'+40000000h
mcall , <10 + 25 * 2, 20>, , 'fwd'+40000000h
mcall , <15 + 25 * 3, 20>, , 'bgr'+40000000h
pop ebx
add ebx, 5
shl ebx, 16
mov bl, 20
mcall , , , 'flh'+40000000h
add ebx, 25 * 65536
mcall , , , 'flv'+40000000h
add ebx, 30 * 65536
mcall , , , 'rtr'+40000000h
add ebx, 25 * 65536
mcall , , , 'rtl'+40000000h
add ebx, 25 * 65536
mcall , , , 'flb'+40000000h
 
invoke gfx.line, [ctx], 5 + 25 * 1, 0, 5 + 25 * 1, 30
mov ebp, (numimages-1)*20
 
mcall 8, <10 + 25 * 1, 20>, <5, 20>, 'flh'+40000000h
mcall 65, fliphorzbtn, <20, 20>, <10 + 25 * 1, 5>, 4, palette
mcall 8, <10 + 25 * 2, 20>, <5, 20>, 'flv'+40000000h
mcall 65, flipvertbtn, <20, 20>, <10 + 25 * 2, 5>, 4, palette
mcall 65, buttons+openbtn*20, <20, 20>, <5 + 25 * 0, 5>, 8, palette
mcall , buttons+backbtn*20, , <10 + 25 * 1, 5>
mcall , buttons+forwardbtn*20, , <10 + 25 * 2, 5>
mcall , buttons+bgrbtn*20, , <15 + 25 * 3, 5>
mov edx, [procinfo + 62]
sub edx, 25 * 5 + 4
shl edx, 16
mov dl, 5
mcall , buttons+fliphorzbtn*20
add edx, 25 * 65536
mcall , buttons+flipvertbtn*20
add edx, 30 * 65536
mcall , buttons+rotcwbtn*20
add edx, 25 * 65536
mcall , buttons+rotccwbtn*20
add edx, 25 * 65536
mcall , buttons+rot180btn*20
 
invoke gfx.line, [ctx], 10 + 25 * 3, 0, 10 + 25 * 3, 30
 
mcall 8, <15 + 25 * 3, 20>, <5, 20>, 'rtr'+40000000h
mcall 65, rotcwbtn, <20, 20>, <15 + 25 * 3, 5>, 4, palette
mcall 8, <15 + 25 * 4, 20>, <5, 20>, 'rtl'+40000000h
mcall 65, rotccwbtn, <20, 20>, <15 + 25 * 4, 5>, 4, palette
mcall 8, <15 + 25 * 5, 20>, <5, 20>, 'flb'+40000000h
mcall 65, rot180btn, <20, 20>, <15 + 25 * 5, 5>, 4, palette
 
mov ebx, [image]
mov ecx, [ebx + Image.Width]
shl ecx, 16
328,7 → 618,6
xor ebp, ebp
mcall 65
 
invoke gfx.close, [ctx]
ret
 
; void* __stdcall mem.Alloc(unsigned size);
563,7 → 852,8
library \
libio , 'libio.obj' , \
libgfx , 'libgfx.obj' , \
libimg , 'libimg.obj'
libimg , 'libimg.obj' , \
sort , 'sort.obj'
 
import libio , \
libio.init , 'lib_init' , \
588,44 → 878,40
img.rotate , 'img.rotate' , \
img.destroy , 'img.destroy'
 
import sort, sort.START, 'START', SortDir, 'SortDir', strcmpi, 'strcmpi'
 
;-----------------------------------------------------------------------------
 
virtual at 0
file 'kivicons.bmp':0xA,4
load offbits dword from 0
end virtual
numimages = 9
openbtn = 0
backbtn = 1
forwardbtn = 2
bgrbtn = 3
fliphorzbtn = 4
flipvertbtn = 5
rotcwbtn = 6
rotccwbtn = 7
rot180btn = 8
 
palette:
dd 0x000000, 0x800000, 0x008000, 0x808000
dd 0x000080, 0x800080, 0x008080, 0x808080
dd 0xC0C0C0, 0xFF0000, 0x00FF00, 0xFFFF00
dd 0x0000FF, 0xFF00FF, 0x00FFFF, 0xFFFFFF
 
macro loadbtn filename
{
repeat 20
file filename:76h+(%-1)*12,10
end repeat
file 'kivicons.bmp':0x36,offbits-0x36
buttons:
file 'kivicons.bmp':offbits
repeat 10
y = % - 1
z = 20 - %
repeat 10
load a byte from $ - 20*10 + y*10 + (%-1)
load b byte from $ - 20*10 + z*10 + (%-1)
store byte a at $ - 20*10 + z*10 + (%-1)
store byte b at $ - 20*10 + y*10 + (%-1)
repeat numimages*5
load a dword from $ - numimages*20*20 + numimages*20*y + (%-1)*4
load b dword from $ - numimages*20*20 + numimages*20*z + (%-1)*4
store dword a at $ - numimages*20*20 + numimages*20*z + (%-1)*4
store dword b at $ - numimages*20*20 + numimages*20*y + (%-1)*4
end repeat
end repeat
}
 
openbtn:
loadbtn 'open.bmp'
fliphorzbtn:
loadbtn 'fliphorz.bmp'
flipvertbtn:
loadbtn 'flipvert.bmp'
rotcwbtn:
loadbtn 'rotcw.bmp'
rotccwbtn:
loadbtn 'rotccw.bmp'
rot180btn:
loadbtn 'rot180.bmp'
 
; DATA AREA
get_loops dd 0
dlg_pid_get dd 0
644,10 → 930,20
;run_filepath
db '/sys/SYSXTREE',0
 
readdir_fileinfo:
dd 1
dd 0
dd 0
readblocks dd 0
directory_ptr dd 0
 
;-----------------------------------------------------------------------------
 
I_END:
 
curdir rb 1024
 
align 4
img_data dd ?
img_data_len dd ?
fh dd ?
654,6 → 950,8
image dd ?
wnd_width dd ?
wnd_height dd ?
last_name_component dd ?
cur_file_idx dd ?
 
ctx dd ?
 
/programs/media/kiv/trunk/kivicons.bmp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property