jpegview: background definition is faster

git-svn-id: svn://kolibrios.org@547 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Evgeny Grechnikov (Diamond) 2007-06-18 16:41:01 +00:00
parent 925adfd15a
commit 251b27b263

View File

@ -27,13 +27,15 @@
; 3) use COL0 - COL9 boot parameter ; 3) use COL0 - COL9 boot parameter
; 0=black,1=white,2=green,3=lilas,4=grey ; 0=black,1=white,2=green,3=lilas,4=grey
; 5=light-blue,6=blue,7=salad,8=pink,9=yellow ; 5=light-blue,6=blue,7=salad,8=pink,9=yellow
; version 0.17 17th June 2007
; diamond (background definition now uses shared memory)
memsize=20000h memsize=20000h
org 0 org 0
PARAMS = memsize - 1024 PARAMS = memsize - 1024
appname equ 'Jpegview ' appname equ 'Jpegview '
version equ '0.16' version equ '0.17'
use32 use32
@ -50,6 +52,7 @@ stack_size=4096 + 1024
include '..\..\..\macros.inc' include '..\..\..\macros.inc'
START: ; start of execution START: ; start of execution
mcall 68,11 ; initialize heap
cmp [PARAMS], byte 0 cmp [PARAMS], byte 0
jne check_parameters jne check_parameters
@ -233,9 +236,20 @@ set_as_bgr2:
mov edx, [ebp + y_size] mov edx, [ebp + y_size]
mcall mcall
mov dword [ebp+draw_ptr],put_chunk_to_bgr mov ebx, 6
mcall
test eax, eax
jz .end
mov [ipc_mem_out], eax
mov dword [ebp+draw_ptr],put_chunk_to_mem
call jpeg_display call jpeg_display
mov eax, 15
mov ebx, 7
mov ecx, [ipc_mem_out]
mcall
; Stretch the image to fit ; Stretch the image to fit
mov eax, 15 mov eax, 15
mov ebx, 4 mov ebx, 4
@ -253,7 +267,6 @@ set_as_bgr2:
;****************************************************************************** ;******************************************************************************
ipc_service: ipc_service:
mcall 68, 11
mov esi, PARAMS+1 mov esi, PARAMS+1
xor eax, eax xor eax, eax
xor ecx, ecx xor ecx, ecx
@ -310,11 +323,12 @@ ipc_service:
mcall 68, 12 mcall 68, 12
test eax, eax test eax, eax
jz .end jz .end
add eax, 8
mov [ipc_mem_out], eax mov [ipc_mem_out], eax
mov ebx, [ebp + x_size] mov ebx, [ebp + x_size]
mov [eax], ebx mov [eax-8], ebx
mov ebx, [ebp + y_size] mov ebx, [ebp + y_size]
mov [eax+4], ebx mov [eax-4], ebx
mov dword [ebp+draw_ptr],put_chunk_to_mem mov dword [ebp+draw_ptr],put_chunk_to_mem
call jpeg_display call jpeg_display
@ -324,6 +338,7 @@ ipc_service:
imul esi, [ebp + y_size] imul esi, [ebp + y_size]
lea esi, [esi*3+8] lea esi, [esi*3+8]
mov edx, [ipc_mem_out] mov edx, [ipc_mem_out]
sub edx, 8
.response: .response:
mov ecx, [ipc_mem] mov ecx, [ipc_mem]
mov ecx, [ecx+8] mov ecx, [ecx+8]
@ -356,41 +371,6 @@ read_from_mem:
;****************************************************************************** ;******************************************************************************
put_chunk_to_bgr:
pushad
mov [x_pointer], edi
mov esi, ecx
imul esi, 3
mov [x_numofbytes], esi
mov ecx, [ebp + x_size]
imul ecx, ebx
add ecx, eax
imul ecx, 3
mov [x_offset], ecx
mov [x_counter], edx
mov eax, [ebp + x_size]
imul eax, 3
mov [x_numofb2], eax
.new_string:
mov eax, 15
mov ebx, 5
mov ecx, [x_pointer]
mov edx, [x_offset]
mov esi, [x_numofbytes]
mcall
mov eax, [x_numofbytes]
add [x_pointer], eax
mov eax, [x_numofb2]
add [x_offset], eax
dec [x_counter]
jnz .new_string
popad
ret
;******************************************************************************
put_chunk_to_mem: put_chunk_to_mem:
; in: (eax,ebx) = start coordinates of chunk ; in: (eax,ebx) = start coordinates of chunk
; (ecx,edx) = sizes of chunk ; (ecx,edx) = sizes of chunk
@ -400,7 +380,7 @@ put_chunk_to_mem:
mov edi, ebx mov edi, ebx
imul edi, [ebp + x_size] imul edi, [ebp + x_size]
add edi, eax add edi, eax
lea edi, [edi*3+8] lea edi, [edi*3]
add edi, [ipc_mem_out] add edi, [ipc_mem_out]
@@: @@:
push ecx edi push ecx edi