Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 522 → Rev 523

/kernel/trunk/gui/skincode.inc
10,31 → 10,36
 
;skin_data = 0x00778000
 
load_skin_file:
; eax = filename
; edx = destination
mov ebx,1
or ecx,-1
mov esi,12
pushad
push eax
mov [skin_to_load.adr],edx
read_skin_file:
stdcall load_file, ebx
test eax, eax
jz .notfound
cmp dword [eax], 'SKIN'
jnz .noskin
cmp ebx, 32*1024
jb @f
mov ebx, 32*1024
@@:
lea ecx, [ebx+3]
shr ecx, 2
mov esi, eax
mov edi, skin_data
rep movsd
stdcall kernel_free, eax
 
mov [skin_to_load.stradr],_skin_file_default
mov eax,skin_to_load
call file_system_lfn
call parse_skin_data
xor eax, eax
ret
.notfound:
xor eax, eax
inc eax
ret
.noskin:
stdcall kernel_free, eax
push 2
pop eax
popad
ret
 
skin_to_load:
dd 0,0,0
dd 64*1024
.adr dd 0
db 0
.stradr dd 0
 
 
struct SKIN_HEADER
.ident dd ?
.version dd ?
75,20 → 80,10
.data dd ?
ends
 
load_skin:
pushad
load_default_skin:
mov [_skinh],22
mov eax,_skin_file
mov edx,skin_data
mov [edx+SKIN_HEADER.ident],'????'
call load_skin_file
cmp eax,ERROR_SUCCESS
je @f
cmp eax,ERROR_END_OF_FILE
jne .exit
@@: call parse_skin_data
.exit:
popad
mov ebx,_skin_file_default
call read_skin_file
ret
 
parse_skin_data: