forked from KolibriOS/kolibrios
fix compress size
git-svn-id: svn://kolibrios.org@6780 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
cdfe44d0b7
commit
9a564b1fbf
@ -743,40 +743,7 @@ PNG_ALL_MNG_FEATURES equ 0x05
|
|||||||
; full explanation, see example.c for the summary. This just provides
|
; full explanation, see example.c for the summary. This just provides
|
||||||
; a simple one line description of the use of each function.
|
; a simple one line description of the use of each function.
|
||||||
|
|
||||||
; The PNG_EXPORT() and PNG_EXPORTA() macros used below are defined in
|
|
||||||
; pngconf.h and in the *.dfn files in the scripts directory.
|
|
||||||
|
|
||||||
; PNG_EXPORT(ordinal, type, name, (args));
|
|
||||||
|
|
||||||
; ordinal: ordinal that is used while building
|
|
||||||
; *.def files. The ordinal value is only
|
|
||||||
; relevant when preprocessing png.h with
|
|
||||||
; the *.dfn files for building symbol table
|
|
||||||
; entries, and are removed by pngconf.h.
|
|
||||||
; type: return type of the function
|
|
||||||
; name: function name
|
|
||||||
; args: function arguments, with types
|
|
||||||
|
|
||||||
; When we wish to append attributes to a function prototype we use
|
|
||||||
; the PNG_EXPORTA() macro instead.
|
|
||||||
|
|
||||||
; PNG_EXPORTA(ordinal, type, name, (args), attributes);
|
|
||||||
|
|
||||||
; ordinal, type, name, and args: same as in PNG_EXPORT().
|
|
||||||
; attributes: function attributes
|
|
||||||
|
|
||||||
macro PNG_EXPORT ordinal, typ, nam, arg
|
|
||||||
{
|
|
||||||
align 4
|
|
||||||
nam:
|
|
||||||
local .end_t
|
|
||||||
local .m_txt
|
|
||||||
jmp .end_t
|
|
||||||
.m_txt db `nam,13,10,0
|
|
||||||
.end_t:
|
|
||||||
stdcall dbg_print,txt_zv,.m_txt
|
|
||||||
ret
|
|
||||||
}
|
|
||||||
|
|
||||||
; Simple signature checking function. This is the same as calling
|
; Simple signature checking function. This is the same as calling
|
||||||
; png_check_sig(sig, n) := !png_sig_cmp(sig, 0, n).
|
; png_check_sig(sig, n) := !png_sig_cmp(sig, 0, n).
|
||||||
@ -943,23 +910,6 @@ PNG_FILTER_HEURISTIC_UNWEIGHTED equ 1 ;Used by libpng < 0.95
|
|||||||
PNG_FILTER_HEURISTIC_WEIGHTED equ 2 ;Experimental feature
|
PNG_FILTER_HEURISTIC_WEIGHTED equ 2 ;Experimental feature
|
||||||
PNG_FILTER_HEURISTIC_LAST equ 3 ;Not a valid value
|
PNG_FILTER_HEURISTIC_LAST equ 3 ;Not a valid value
|
||||||
|
|
||||||
; These next functions are called for input/output, memory, and error
|
|
||||||
; handling. They are in the file pngrio.c, pngwio.c, and pngerror.c,
|
|
||||||
; and call standard C I/O routines such as fread(), fwrite(), and
|
|
||||||
; fprintf(). These functions can be made to use other I/O routines
|
|
||||||
; at run time for those applications that need to handle I/O in a
|
|
||||||
; different manner by calling png_set_???_fn(). See libpng-manual.txt for
|
|
||||||
; more information.
|
|
||||||
|
|
||||||
|
|
||||||
; Replace the default data input function with a user supplied one.
|
|
||||||
PNG_EXPORT 78, void, png_set_read_fn, '(png_structrp png_ptr, voidp io_ptr, png_rw_ptr read_data_fn)'
|
|
||||||
|
|
||||||
|
|
||||||
; Reassign responsibility for freeing existing data, whether allocated
|
|
||||||
; by libpng or by the application; this works on the png_info structure passed
|
|
||||||
; in, it does not change the state for other png_info structures.
|
|
||||||
|
|
||||||
; It is unlikely that this function works correctly as of 1.6.0 and using it
|
; It is unlikely that this function works correctly as of 1.6.0 and using it
|
||||||
; may result either in memory leaks or double free of allocated data.
|
; may result either in memory leaks or double free of allocated data.
|
||||||
|
|
||||||
@ -985,29 +935,16 @@ PNG_FREE_ALL equ 0x7fff
|
|||||||
PNG_FREE_MUL equ 0x4220 ;PNG_FREE_SPLT|PNG_FREE_TEXT|PNG_FREE_UNKN
|
PNG_FREE_MUL equ 0x4220 ;PNG_FREE_SPLT|PNG_FREE_TEXT|PNG_FREE_UNKN
|
||||||
|
|
||||||
;if PNG_ERROR_TEXT_SUPPORTED
|
;if PNG_ERROR_TEXT_SUPPORTED
|
||||||
; The same, but the chunk name is prepended to the error string.
|
|
||||||
;PNG_EXPORTA(103, void, png_chunk_error, (png_const_structrp png_ptr,
|
|
||||||
; charp error_message), PNG_NORETURN);
|
|
||||||
|
|
||||||
;#else
|
;#else
|
||||||
; Fatal error in PNG image of libpng - can't continue
|
|
||||||
;PNG_EXPORTA(104, void, png_err, (png_const_structrp png_ptr), PNG_NORETURN);
|
|
||||||
;# define png_chunk_error(s1,s2) png_err(s1)
|
;# define png_chunk_error(s1,s2) png_err(s1)
|
||||||
;end if
|
;end if
|
||||||
|
|
||||||
; Non-fatal error in libpng, chunk name is prepended to message.
|
|
||||||
PNG_EXPORT 106, void, png_chunk_warning, '(png_const_structrp png_ptr, charp warning_message)'
|
|
||||||
;#else
|
;#else
|
||||||
;# define png_warning(s1,s2) ((void)(s1))
|
;# define png_warning(s1,s2) ((void)(s1))
|
||||||
;# define png_chunk_warning(s1,s2) ((void)(s1))
|
;# define png_chunk_warning(s1,s2) ((void)(s1))
|
||||||
|
|
||||||
; Benign error in libpng. Can continue, but may have a problem.
|
|
||||||
; User can choose whether to handle as a fatal error or as a warning.
|
|
||||||
PNG_EXPORT 107, void, png_benign_error, '(png_const_structrp png_ptr, charp warning_message)'
|
|
||||||
|
|
||||||
;if PNG_READ_SUPPORTED
|
;if PNG_READ_SUPPORTED
|
||||||
; Same, chunk name is prepended to message (only during read)
|
|
||||||
PNG_EXPORT 108, void, png_chunk_benign_error, '(png_const_structrp png_ptr, charp warning_message)'
|
|
||||||
|
|
||||||
;#else
|
;#else
|
||||||
;# ifdef PNG_ALLOW_BENIGN_ERRORS
|
;# ifdef PNG_ALLOW_BENIGN_ERRORS
|
||||||
|
@ -2946,7 +2946,8 @@ align 4
|
|||||||
je .end1
|
je .end1
|
||||||
|
|
||||||
add ecx,16*1024
|
add ecx,16*1024
|
||||||
sub cx,[edi+png_struct.zstream.avail_out]
|
movzx eax,word[edi+png_struct.zstream.avail_out]
|
||||||
|
sub ecx,eax
|
||||||
cmp word[edi+png_struct.zstream.avail_out],0
|
cmp word[edi+png_struct.zstream.avail_out],0
|
||||||
je .cycle4 ;while (strm.avail_out == 0)
|
je .cycle4 ;while (strm.avail_out == 0)
|
||||||
if 0
|
if 0
|
||||||
@ -2967,7 +2968,6 @@ if PNG_WRITE_OPTIMIZE_CMF_SUPPORTED eq 1
|
|||||||
stdcall optimize_cmf, [m1], eax
|
stdcall optimize_cmf, [m1], eax
|
||||||
@@:
|
@@:
|
||||||
end if
|
end if
|
||||||
|
|
||||||
stdcall png_write_complete_chunk, edi, png_IDAT, [m1], ecx
|
stdcall png_write_complete_chunk, edi, png_IDAT, [m1], ecx
|
||||||
or dword[edi+png_struct.mode],PNG_HAVE_IDAT
|
or dword[edi+png_struct.mode],PNG_HAVE_IDAT
|
||||||
|
|
||||||
|
@ -410,8 +410,7 @@ end if
|
|||||||
jne .end1 ;if (..==..)
|
jne .end1 ;if (..==..)
|
||||||
mov eax,[edi+png_struct.flags]
|
mov eax,[edi+png_struct.flags]
|
||||||
and eax,PNG_FLAG_ZLIB_CUSTOM_STRATEGY
|
and eax,PNG_FLAG_ZLIB_CUSTOM_STRATEGY
|
||||||
cmp eax,0
|
jz @f ;if (..!=0)
|
||||||
je @f ;if (..!=0)
|
|
||||||
mov eax,[edi+png_struct.zlib_strategy]
|
mov eax,[edi+png_struct.zlib_strategy]
|
||||||
mov dword[strategy],eax
|
mov dword[strategy],eax
|
||||||
jmp .end2
|
jmp .end2
|
||||||
@ -477,8 +476,7 @@ end if
|
|||||||
; Check against the previous initialized values, if any.
|
; Check against the previous initialized values, if any.
|
||||||
mov eax,[edi+png_struct.flags]
|
mov eax,[edi+png_struct.flags]
|
||||||
and eax,PNG_FLAG_ZSTREAM_INITIALIZED
|
and eax,PNG_FLAG_ZSTREAM_INITIALIZED
|
||||||
cmp eax,0
|
jz .end4
|
||||||
je .end4
|
|
||||||
mov eax,[level]
|
mov eax,[level]
|
||||||
cmp [edi+png_struct.zlib_set_level],eax
|
cmp [edi+png_struct.zlib_set_level],eax
|
||||||
jne @f
|
jne @f
|
||||||
@ -520,8 +518,7 @@ end if
|
|||||||
add ecx,png_struct.zstream
|
add ecx,png_struct.zstream
|
||||||
mov eax,[edi+png_struct.flags]
|
mov eax,[edi+png_struct.flags]
|
||||||
and eax,PNG_FLAG_ZSTREAM_INITIALIZED
|
and eax,PNG_FLAG_ZSTREAM_INITIALIZED
|
||||||
cmp eax,0
|
jz @f ;if (..!=0)
|
||||||
je @f ;if (..!=0)
|
|
||||||
stdcall [deflateReset], ecx
|
stdcall [deflateReset], ecx
|
||||||
jmp .end5
|
jmp .end5
|
||||||
@@: ;else
|
@@: ;else
|
||||||
@ -1100,8 +1097,7 @@ if PNG_MNG_FEATURES_SUPPORTED eq 1
|
|||||||
jg @f
|
jg @f
|
||||||
mov eax,[edi+png_struct.mng_features_permitted]
|
mov eax,[edi+png_struct.mng_features_permitted]
|
||||||
and eax,PNG_FLAG_MNG_EMPTY_PLTE
|
and eax,PNG_FLAG_MNG_EMPTY_PLTE
|
||||||
cmp eax,0
|
jnz .end1
|
||||||
jne .end1
|
|
||||||
cmp [num_pal],0
|
cmp [num_pal],0
|
||||||
jne .end1
|
jne .end1
|
||||||
@@:
|
@@:
|
||||||
@ -1118,8 +1114,7 @@ end if
|
|||||||
|
|
||||||
movzx eax,byte[edi+png_struct.color_type]
|
movzx eax,byte[edi+png_struct.color_type]
|
||||||
and eax,PNG_COLOR_MASK_COLOR
|
and eax,PNG_COLOR_MASK_COLOR
|
||||||
cmp eax,0
|
jnz @f ;if (..==0)
|
||||||
jne @f ;if (..==0)
|
|
||||||
png_warning edi, 'Ignoring request to write a PLTE chunk in grayscale PNG'
|
png_warning edi, 'Ignoring request to write a PLTE chunk in grayscale PNG'
|
||||||
jmp .end_f
|
jmp .end_f
|
||||||
@@:
|
@@:
|
||||||
@ -1276,8 +1271,7 @@ align 4
|
|||||||
if PNG_WRITE_OPTIMIZE_CMF_SUPPORTED eq 1
|
if PNG_WRITE_OPTIMIZE_CMF_SUPPORTED eq 1
|
||||||
mov eax,[edi+png_struct.mode]
|
mov eax,[edi+png_struct.mode]
|
||||||
and eax,PNG_HAVE_IDAT
|
and eax,PNG_HAVE_IDAT
|
||||||
cmp eax,0
|
jnz @f
|
||||||
jne @f
|
|
||||||
cmp byte[edi+png_struct.compression_type],PNG_COMPRESSION_TYPE_BASE
|
cmp byte[edi+png_struct.compression_type],PNG_COMPRESSION_TYPE_BASE
|
||||||
jne @f ;if (..==0 && ..==..)
|
jne @f ;if (..==0 && ..==..)
|
||||||
stdcall png_image_size, edi
|
stdcall png_image_size, edi
|
||||||
@ -1327,15 +1321,15 @@ end if
|
|||||||
mov edx,[edi+png_struct.zbuffer_list]
|
mov edx,[edi+png_struct.zbuffer_list]
|
||||||
add edx,png_compression_buffer.output
|
add edx,png_compression_buffer.output
|
||||||
mov ecx,[edi+png_struct.zbuffer_size]
|
mov ecx,[edi+png_struct.zbuffer_size]
|
||||||
sub cx,[edi+png_struct.zstream.avail_out]
|
movzx eax,word[edi+png_struct.zstream.avail_out]
|
||||||
|
sub ecx,eax
|
||||||
;edx = data
|
;edx = data
|
||||||
;ecx = size
|
;ecx = size
|
||||||
|
|
||||||
if PNG_WRITE_OPTIMIZE_CMF_SUPPORTED eq 1
|
if PNG_WRITE_OPTIMIZE_CMF_SUPPORTED eq 1
|
||||||
mov eax,[edi+png_struct.mode]
|
mov eax,[edi+png_struct.mode]
|
||||||
and eax,PNG_HAVE_IDAT
|
and eax,PNG_HAVE_IDAT
|
||||||
cmp eax,0
|
jnz @f
|
||||||
jne @f
|
|
||||||
cmp byte[edi+png_struct.compression_type],PNG_COMPRESSION_TYPE_BASE
|
cmp byte[edi+png_struct.compression_type],PNG_COMPRESSION_TYPE_BASE
|
||||||
jne @f ;if (..==0 && ..==..)
|
jne @f ;if (..==0 && ..==..)
|
||||||
stdcall png_image_size, edi
|
stdcall png_image_size, edi
|
||||||
@ -2423,8 +2417,7 @@ if PNG_WRITE_INTERLACING_SUPPORTED eq 1
|
|||||||
je @f
|
je @f
|
||||||
mov eax,[edi+png_struct.transformations]
|
mov eax,[edi+png_struct.transformations]
|
||||||
and eax,PNG_INTERLACE
|
and eax,PNG_INTERLACE
|
||||||
cmp eax,0
|
jnz @f ;if(..!=0 && ..==0)
|
||||||
jne @f ;if(..!=0 && ..==0)
|
|
||||||
movzx ecx,byte[png_pass_yinc]
|
movzx ecx,byte[png_pass_yinc]
|
||||||
mov eax,[edi+png_struct.height]
|
mov eax,[edi+png_struct.height]
|
||||||
add eax,ecx
|
add eax,ecx
|
||||||
@ -2479,8 +2472,7 @@ if PNG_WRITE_INTERLACING_SUPPORTED eq 1
|
|||||||
mov dword[edi+png_struct.row_number],0
|
mov dword[edi+png_struct.row_number],0
|
||||||
mov eax,[edi+png_struct.transformations]
|
mov eax,[edi+png_struct.transformations]
|
||||||
and eax,PNG_INTERLACE
|
and eax,PNG_INTERLACE
|
||||||
cmp eax,0
|
jz @f ;if (..!=0)
|
||||||
je @f ;if (..!=0)
|
|
||||||
inc byte[edi+png_struct.pass]
|
inc byte[edi+png_struct.pass]
|
||||||
jmp .end1
|
jmp .end1
|
||||||
@@: ;else
|
@@: ;else
|
||||||
@ -2520,8 +2512,7 @@ if PNG_WRITE_INTERLACING_SUPPORTED eq 1
|
|||||||
|
|
||||||
mov eax,[edi+png_struct.transformations]
|
mov eax,[edi+png_struct.transformations]
|
||||||
and eax,PNG_INTERLACE
|
and eax,PNG_INTERLACE
|
||||||
cmp eax,0
|
jnz .cycle0end ;if(..!=0) break
|
||||||
jne .cycle0end ;if(..!=0) break
|
|
||||||
|
|
||||||
cmp dword[edi+png_struct.usr_width],0
|
cmp dword[edi+png_struct.usr_width],0
|
||||||
je .cycle0
|
je .cycle0
|
||||||
@ -2876,7 +2867,7 @@ endl
|
|||||||
shr ah,1
|
shr ah,1
|
||||||
sub al,ah
|
sub al,ah
|
||||||
stosb
|
stosb
|
||||||
png_setup_abs [sum]
|
png_setup_abs dword[sum]
|
||||||
inc ebx
|
inc ebx
|
||||||
loop .cycle0
|
loop .cycle0
|
||||||
|
|
||||||
@ -2897,7 +2888,7 @@ endl
|
|||||||
rol eax,8
|
rol eax,8
|
||||||
sub al,ah
|
sub al,ah
|
||||||
stosb
|
stosb
|
||||||
png_setup_abs [sum]
|
png_setup_abs dword[sum]
|
||||||
mov eax,[sum]
|
mov eax,[sum]
|
||||||
cmp eax,[lmins]
|
cmp eax,[lmins]
|
||||||
jg .cycle1end ;if (..>..) ;We are already worse, don't continue.
|
jg .cycle1end ;if (..>..) ;We are already worse, don't continue.
|
||||||
@ -3140,8 +3131,7 @@ else
|
|||||||
@@:
|
@@:
|
||||||
mov eax,[filter_to_do]
|
mov eax,[filter_to_do]
|
||||||
and eax,PNG_FILTER_NONE
|
and eax,PNG_FILTER_NONE
|
||||||
cmp eax,0
|
jz .end0
|
||||||
je .end0
|
|
||||||
cmp dword[filter_to_do],PNG_FILTER_NONE
|
cmp dword[filter_to_do],PNG_FILTER_NONE
|
||||||
je .end0 ;else if (..!=0 && ..!=..)
|
je .end0 ;else if (..!=0 && ..!=..)
|
||||||
; Overflow not possible and multiple filters in the list, including the
|
; Overflow not possible and multiple filters in the list, including the
|
||||||
@ -3171,8 +3161,7 @@ else
|
|||||||
jmp .end1
|
jmp .end1
|
||||||
@@:
|
@@:
|
||||||
and eax,PNG_FILTER_SUB
|
and eax,PNG_FILTER_SUB
|
||||||
cmp eax,0
|
jz .end1 ;else if (..!=0)
|
||||||
je .end1 ;else if (..!=0)
|
|
||||||
stdcall png_setup_sub_row, edi, [bpp], [row_bytes], [mins]
|
stdcall png_setup_sub_row, edi, [bpp], [row_bytes], [mins]
|
||||||
cmp eax,[mins]
|
cmp eax,[mins]
|
||||||
jge .end1 ;if (..<..)
|
jge .end1 ;if (..<..)
|
||||||
@ -3198,8 +3187,7 @@ else
|
|||||||
jmp .end2
|
jmp .end2
|
||||||
@@:
|
@@:
|
||||||
and eax,PNG_FILTER_UP
|
and eax,PNG_FILTER_UP
|
||||||
cmp eax,0
|
jz .end2 ;else if (..!=0)
|
||||||
je .end2 ;else if (..!=0)
|
|
||||||
stdcall png_setup_up_row, edi, [row_bytes], [mins]
|
stdcall png_setup_up_row, edi, [row_bytes], [mins]
|
||||||
cmp eax,[mins]
|
cmp eax,[mins]
|
||||||
jge .end2 ;if (..<..)
|
jge .end2 ;if (..<..)
|
||||||
@ -3225,8 +3213,7 @@ else
|
|||||||
jmp .end3
|
jmp .end3
|
||||||
@@:
|
@@:
|
||||||
and eax,PNG_FILTER_AVG
|
and eax,PNG_FILTER_AVG
|
||||||
cmp eax,0
|
jz .end3 ;else if (..!=0)
|
||||||
je .end3 ;else if (..!=0)
|
|
||||||
stdcall png_setup_avg_row, edi, [bpp], [row_bytes], [mins]
|
stdcall png_setup_avg_row, edi, [bpp], [row_bytes], [mins]
|
||||||
cmp eax,[mins]
|
cmp eax,[mins]
|
||||||
jge .end3 ;if (..<..)
|
jge .end3 ;if (..<..)
|
||||||
@ -3252,8 +3239,7 @@ else
|
|||||||
jmp .end4
|
jmp .end4
|
||||||
@@:
|
@@:
|
||||||
and eax,PNG_FILTER_PAETH
|
and eax,PNG_FILTER_PAETH
|
||||||
cmp eax,0
|
jz .end4 ;else if (..!=0)
|
||||||
je .end4 ;else if (..!=0)
|
|
||||||
stdcall png_setup_paeth_row, edi, [bpp], [row_bytes], [mins]
|
stdcall png_setup_paeth_row, edi, [bpp], [row_bytes], [mins]
|
||||||
cmp eax,[mins]
|
cmp eax,[mins]
|
||||||
jge .end4 ;if (..<..)
|
jge .end4 ;if (..<..)
|
||||||
|
@ -893,7 +893,8 @@ proc flush_pending uses eax ebx ecx edx, strm:dword
|
|||||||
|
|
||||||
stdcall _tr_flush_bits, edx
|
stdcall _tr_flush_bits, edx
|
||||||
mov ecx,[edx+deflate_state.pending]
|
mov ecx,[edx+deflate_state.pending]
|
||||||
cmp cx,[ebx+z_stream.avail_out]
|
movzx eax,word[ebx+z_stream.avail_out]
|
||||||
|
cmp ecx,eax
|
||||||
jle @f ;if (..>..)
|
jle @f ;if (..>..)
|
||||||
movzx ecx,word[ebx+z_stream.avail_out]
|
movzx ecx,word[ebx+z_stream.avail_out]
|
||||||
@@:
|
@@:
|
||||||
|
Loading…
Reference in New Issue
Block a user