forked from KolibriOS/kolibrios
optimize 'libimg.obj',
fix in 'zlib.obj', animage can save '*.png' files git-svn-id: svn://kolibrios.org@6741 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
40e48bd347
commit
e73f2a8659
@ -112,7 +112,7 @@ PNG_SIMPLIFIED_WRITE_STDIO_SUPPORTED equ 0 ;1
|
||||
PNG_SIMPLIFIED_WRITE_SUPPORTED equ 1
|
||||
PNG_STDIO_SUPPORTED equ 1
|
||||
PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED equ 1
|
||||
PNG_TEXT_SUPPORTED equ 1
|
||||
PNG_TEXT_SUPPORTED equ 0
|
||||
PNG_TIME_RFC1123_SUPPORTED equ 1
|
||||
PNG_UNKNOWN_CHUNKS_SUPPORTED equ 1
|
||||
PNG_USER_CHUNKS_SUPPORTED equ 1
|
||||
@ -120,19 +120,19 @@ PNG_USER_LIMITS_SUPPORTED equ 1
|
||||
PNG_USER_MEM_SUPPORTED equ 1
|
||||
PNG_USER_TRANSFORM_INFO_SUPPORTED equ 1
|
||||
PNG_USER_TRANSFORM_PTR_SUPPORTED equ 1
|
||||
PNG_WARNINGS_SUPPORTED equ 1
|
||||
PNG_WARNINGS_SUPPORTED equ 0
|
||||
PNG_WRITE_16BIT_SUPPORTED equ 1
|
||||
PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED equ 1
|
||||
PNG_WRITE_BGR_SUPPORTED equ 1
|
||||
PNG_WRITE_CHECK_FOR_INVALID_INDEX_SUPPORTED equ 1
|
||||
PNG_WRITE_COMPRESSED_TEXT_SUPPORTED equ 1
|
||||
PNG_WRITE_CUSTOMIZE_COMPRESSION_SUPPORTED equ 1
|
||||
PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED equ 1
|
||||
PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED equ 0
|
||||
PNG_WRITE_FILLER_SUPPORTED equ 1
|
||||
PNG_WRITE_FILTER_SUPPORTED equ 1
|
||||
PNG_WRITE_FLUSH_SUPPORTED equ 1
|
||||
PNG_WRITE_GET_PALETTE_MAX_SUPPORTED equ 1
|
||||
PNG_WRITE_INTERLACING_SUPPORTED equ 1
|
||||
PNG_WRITE_INTERLACING_SUPPORTED equ 0
|
||||
PNG_WRITE_INT_FUNCTIONS_SUPPORTED equ 1
|
||||
PNG_WRITE_INVERT_ALPHA_SUPPORTED equ 1
|
||||
PNG_WRITE_INVERT_SUPPORTED equ 1
|
||||
@ -143,45 +143,45 @@ PNG_WRITE_SHIFT_SUPPORTED equ 1
|
||||
PNG_WRITE_SUPPORTED equ 1
|
||||
PNG_WRITE_SWAP_ALPHA_SUPPORTED equ 1
|
||||
PNG_WRITE_SWAP_SUPPORTED equ 1
|
||||
PNG_WRITE_TEXT_SUPPORTED equ 1
|
||||
PNG_WRITE_TRANSFORMS_SUPPORTED equ 1
|
||||
PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED equ 1
|
||||
PNG_WRITE_TEXT_SUPPORTED equ 0
|
||||
PNG_WRITE_TRANSFORMS_SUPPORTED equ 0
|
||||
PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED equ 0
|
||||
PNG_WRITE_USER_TRANSFORM_SUPPORTED equ 1
|
||||
PNG_WRITE_WEIGHTED_FILTER_SUPPORTED equ 1
|
||||
PNG_WRITE_bKGD_SUPPORTED equ 1
|
||||
PNG_WRITE_cHRM_SUPPORTED equ 1
|
||||
PNG_WRITE_gAMA_SUPPORTED equ 1
|
||||
PNG_WRITE_hIST_SUPPORTED equ 1
|
||||
PNG_WRITE_iCCP_SUPPORTED equ 1
|
||||
PNG_WRITE_iTXt_SUPPORTED equ 1
|
||||
PNG_WRITE_oFFs_SUPPORTED equ 1
|
||||
PNG_WRITE_pCAL_SUPPORTED equ 1
|
||||
PNG_WRITE_pHYs_SUPPORTED equ 1
|
||||
PNG_WRITE_sBIT_SUPPORTED equ 1
|
||||
PNG_WRITE_sCAL_SUPPORTED equ 1
|
||||
PNG_WRITE_sPLT_SUPPORTED equ 1
|
||||
PNG_WRITE_sRGB_SUPPORTED equ 1
|
||||
PNG_WRITE_tEXt_SUPPORTED equ 1
|
||||
PNG_WRITE_tIME_SUPPORTED equ 1
|
||||
PNG_WRITE_tRNS_SUPPORTED equ 1
|
||||
PNG_WRITE_zTXt_SUPPORTED equ 1
|
||||
PNG_bKGD_SUPPORTED equ 1
|
||||
PNG_cHRM_SUPPORTED equ 1
|
||||
PNG_gAMA_SUPPORTED equ 1
|
||||
PNG_hIST_SUPPORTED equ 1
|
||||
PNG_iCCP_SUPPORTED equ 1
|
||||
PNG_iTXt_SUPPORTED equ 1
|
||||
PNG_oFFs_SUPPORTED equ 1
|
||||
PNG_pCAL_SUPPORTED equ 1
|
||||
PNG_pHYs_SUPPORTED equ 1
|
||||
PNG_sBIT_SUPPORTED equ 1
|
||||
PNG_sCAL_SUPPORTED equ 1
|
||||
PNG_sPLT_SUPPORTED equ 1
|
||||
PNG_sRGB_SUPPORTED equ 1
|
||||
PNG_tEXt_SUPPORTED equ 1
|
||||
PNG_tIME_SUPPORTED equ 1
|
||||
PNG_tRNS_SUPPORTED equ 1
|
||||
PNG_zTXt_SUPPORTED equ 1
|
||||
PNG_WRITE_bKGD_SUPPORTED equ 0
|
||||
PNG_WRITE_cHRM_SUPPORTED equ 0
|
||||
PNG_WRITE_gAMA_SUPPORTED equ 0
|
||||
PNG_WRITE_hIST_SUPPORTED equ 0
|
||||
PNG_WRITE_iCCP_SUPPORTED equ 0
|
||||
PNG_WRITE_iTXt_SUPPORTED equ 0
|
||||
PNG_WRITE_oFFs_SUPPORTED equ 0
|
||||
PNG_WRITE_pCAL_SUPPORTED equ 0
|
||||
PNG_WRITE_pHYs_SUPPORTED equ 0
|
||||
PNG_WRITE_sBIT_SUPPORTED equ 0
|
||||
PNG_WRITE_sCAL_SUPPORTED equ 0
|
||||
PNG_WRITE_sPLT_SUPPORTED equ 0
|
||||
PNG_WRITE_sRGB_SUPPORTED equ 0
|
||||
PNG_WRITE_tEXt_SUPPORTED equ 0
|
||||
PNG_WRITE_tIME_SUPPORTED equ 0
|
||||
PNG_WRITE_tRNS_SUPPORTED equ 0
|
||||
PNG_WRITE_zTXt_SUPPORTED equ 0
|
||||
PNG_bKGD_SUPPORTED equ 0
|
||||
PNG_cHRM_SUPPORTED equ 0
|
||||
PNG_gAMA_SUPPORTED equ 0
|
||||
PNG_hIST_SUPPORTED equ 0
|
||||
PNG_iCCP_SUPPORTED equ 0
|
||||
PNG_iTXt_SUPPORTED equ 0
|
||||
PNG_oFFs_SUPPORTED equ 0
|
||||
PNG_pCAL_SUPPORTED equ 0
|
||||
PNG_pHYs_SUPPORTED equ 0
|
||||
PNG_sBIT_SUPPORTED equ 0
|
||||
PNG_sCAL_SUPPORTED equ 0
|
||||
PNG_sPLT_SUPPORTED equ 0
|
||||
PNG_sRGB_SUPPORTED equ 0
|
||||
PNG_tEXt_SUPPORTED equ 0
|
||||
PNG_tIME_SUPPORTED equ 0
|
||||
PNG_tRNS_SUPPORTED equ 0
|
||||
PNG_zTXt_SUPPORTED equ 0
|
||||
; end of options
|
||||
; settings
|
||||
PNG_API_RULE equ 0
|
||||
|
@ -123,7 +123,7 @@ dd deflate_state.status,4,ta2
|
||||
dd deflate_state.pending_buf,4,ta3
|
||||
dd deflate_state.pending_buf_size,4,ta4
|
||||
dd deflate_state.pending_out,4,ta5
|
||||
dd deflate_state.pending,2,ta6
|
||||
dd deflate_state.pending,4,ta6
|
||||
dd deflate_state.wrap,4,ta7
|
||||
dd deflate_state.gzhead,4,ta8
|
||||
dd deflate_state.gzindex,4,ta9
|
||||
|
@ -544,7 +544,7 @@ proc deflateResetKeep uses ebx edi, strm:dword
|
||||
mov dword[ebx+z_stream.msg],Z_NULL ;use zfree if we ever allocate msg dynamically
|
||||
mov word[ebx+z_stream.data_type],Z_UNKNOWN
|
||||
|
||||
mov word[edi+deflate_state.pending],0
|
||||
mov dword[edi+deflate_state.pending],0
|
||||
mov eax,[edi+deflate_state.pending_buf]
|
||||
mov [edi+deflate_state.pending_out],eax
|
||||
|
||||
@ -639,7 +639,7 @@ proc deflatePending uses ebx edi, strm:dword, pending:dword, bits:dword
|
||||
cmp dword[pending],Z_NULL
|
||||
je @f ;if (..!=..)
|
||||
mov eax,[pending]
|
||||
movzx ebx,word[edi+deflate_state.pending]
|
||||
mov ebx,[edi+deflate_state.pending]
|
||||
mov [eax],ebx
|
||||
@@:
|
||||
cmp dword[bits],Z_NULL
|
||||
@ -892,7 +892,7 @@ proc flush_pending uses eax ebx ecx edx, strm:dword
|
||||
mov edx,[ebx+z_stream.state]
|
||||
|
||||
stdcall _tr_flush_bits, edx
|
||||
movzx ecx,word[edx+deflate_state.pending]
|
||||
mov ecx,[edx+deflate_state.pending]
|
||||
cmp cx,[ebx+z_stream.avail_out]
|
||||
jle @f ;if (..>..)
|
||||
movzx ecx,word[ebx+z_stream.avail_out]
|
||||
@ -905,8 +905,8 @@ proc flush_pending uses eax ebx ecx edx, strm:dword
|
||||
add [edx+deflate_state.pending_out],ecx
|
||||
add [ebx+z_stream.total_out],ecx
|
||||
sub [ebx+z_stream.avail_out],cx
|
||||
sub [edx+deflate_state.pending],cx
|
||||
cmp word[edx+deflate_state.pending],0
|
||||
sub [edx+deflate_state.pending],ecx
|
||||
cmp dword[edx+deflate_state.pending],0
|
||||
jne @f ;if (..==0)
|
||||
mov eax,[edx+deflate_state.pending_buf]
|
||||
mov [edx+deflate_state.pending_out],eax
|
||||
@ -1048,9 +1048,8 @@ if GZIP eq 1
|
||||
@@:
|
||||
cmp dword[edx+gz_header.hcrc],0
|
||||
je @f ;if (..)
|
||||
movzx eax,word[edi+deflate_state.pending]
|
||||
stdcall calc_crc32, [ebx+z_stream.adler],\
|
||||
[edi+deflate_state.pending_buf], eax
|
||||
[edi+deflate_state.pending_buf], [edi+deflate_state.pending]
|
||||
mov [ebx+z_stream.adler],eax
|
||||
@@:
|
||||
mov dword[edi+deflate_state.gzindex],0
|
||||
@ -1116,21 +1115,21 @@ if GZIP eq 1
|
||||
jne .end5 ;if (..==..)
|
||||
cmp dword[edx+gz_header.extra],Z_NULL
|
||||
je .end21 ;if (..!=..)
|
||||
movzx esi,word[edi+deflate_state.pending]
|
||||
mov esi,[edi+deflate_state.pending]
|
||||
;esi = beg ;start of bytes to update crc
|
||||
|
||||
movzx ecx,word[edx+gz_header.extra_len]
|
||||
.cycle0: ;while (..<..)
|
||||
cmp dword[edi+deflate_state.gzindex],ecx
|
||||
jge .cycle0end
|
||||
movzx eax,word[edi+deflate_state.pending]
|
||||
mov eax,[edi+deflate_state.pending]
|
||||
cmp eax,[edi+deflate_state.pending_buf_size]
|
||||
jne .end24 ;if (..==..)
|
||||
mov dword[edx+gz_header.hcrc],0
|
||||
je @f
|
||||
cmp [edi+deflate_state.pending],si
|
||||
cmp [edi+deflate_state.pending],esi
|
||||
jle @f ;if (.. && ..>..)
|
||||
movzx ecx,word[edi+deflate_state.pending]
|
||||
mov ecx,[edi+deflate_state.pending]
|
||||
sub ecx,esi
|
||||
mov eax,[edi+deflate_state.pending_buf]
|
||||
add eax,esi
|
||||
@ -1138,7 +1137,7 @@ if GZIP eq 1
|
||||
mov [ebx+z_stream.adler],eax
|
||||
@@:
|
||||
stdcall flush_pending, ebx
|
||||
movzx esi,word[edi+deflate_state.pending]
|
||||
mov esi,[edi+deflate_state.pending]
|
||||
cmp esi,[edi+deflate_state.pending_buf_size]
|
||||
je .cycle0end ;if (..==..) break
|
||||
.end24:
|
||||
@ -1153,9 +1152,9 @@ if GZIP eq 1
|
||||
.cycle0end:
|
||||
mov dword[edx+gz_header.hcrc],0
|
||||
je @f
|
||||
cmp [edi+deflate_state.pending],si
|
||||
cmp [edi+deflate_state.pending],esi
|
||||
jle @f ;if (.. && ..>..)
|
||||
movzx ecx,word[edi+deflate_state.pending]
|
||||
mov ecx,[edi+deflate_state.pending]
|
||||
sub ecx,esi
|
||||
mov eax,[edi+deflate_state.pending_buf]
|
||||
add eax,esi
|
||||
@ -1175,18 +1174,18 @@ if GZIP eq 1
|
||||
jne .end6 ;if (..==..)
|
||||
cmp dword[edx+gz_header.name],Z_NULL
|
||||
je .end22 ;if (..!=..)
|
||||
movzx esi,word[edi+deflate_state.pending]
|
||||
mov esi,[edi+deflate_state.pending]
|
||||
;esi = beg ;start of bytes to update crc
|
||||
|
||||
.cycle1: ;do
|
||||
movzx eax,word[edi+deflate_state.pending]
|
||||
mov eax,[edi+deflate_state.pending]
|
||||
cmp eax,[edi+deflate_state.pending_buf_size]
|
||||
jne .end25 ;if (..==..)
|
||||
mov dword[edx+gz_header.hcrc],0
|
||||
je @f
|
||||
cmp [edi+deflate_state.pending],si
|
||||
cmp [edi+deflate_state.pending],esi
|
||||
jle @f ;if (.. && ..>..)
|
||||
movzx ecx,word[edi+deflate_state.pending]
|
||||
mov ecx,[edi+deflate_state.pending]
|
||||
sub ecx,esi
|
||||
mov eax,[edi+deflate_state.pending_buf]
|
||||
add eax,esi
|
||||
@ -1194,9 +1193,8 @@ if GZIP eq 1
|
||||
mov [ebx+z_stream.adler],eax
|
||||
@@:
|
||||
stdcall flush_pending, ebx
|
||||
movzx esi,word[edi+deflate_state.pending]
|
||||
movzx eax,word[edi+deflate_state.pending]
|
||||
cmp eax,[edi+deflate_state.pending_buf_size]
|
||||
mov esi,[edi+deflate_state.pending]
|
||||
cmp esi,[edi+deflate_state.pending_buf_size]
|
||||
jne .end25 ;if (..==..)
|
||||
mov dword[val],1
|
||||
jmp .cycle1end
|
||||
@ -1214,9 +1212,9 @@ if GZIP eq 1
|
||||
.cycle1end:
|
||||
mov dword[edx+gz_header.hcrc],0
|
||||
je @f
|
||||
cmp [edi+deflate_state.pending],si
|
||||
cmp [edi+deflate_state.pending],esi
|
||||
jle @f ;if (.. && ..>..)
|
||||
movzx ecx,word[edi+deflate_state.pending]
|
||||
mov ecx,[edi+deflate_state.pending]
|
||||
sub ecx,esi
|
||||
mov eax,[edi+deflate_state.pending_buf]
|
||||
add eax,esi
|
||||
@ -1235,18 +1233,18 @@ if GZIP eq 1
|
||||
jne .end7 ;if (..==..)
|
||||
cmp dword[edx+gz_header.comment],Z_NULL
|
||||
je .end23 ;if (..!=..)
|
||||
movzx esi,word[edi+deflate_state.pending]
|
||||
mov esi,[edi+deflate_state.pending]
|
||||
;esi = beg ;start of bytes to update crc
|
||||
|
||||
.cycle2: ;do
|
||||
movzx eax,word[edi+deflate_state.pending]
|
||||
mov eax,[edi+deflate_state.pending]
|
||||
cmp eax,[edi+deflate_state.pending_buf_size]
|
||||
jne .end26 ;if (..==..)
|
||||
mov dword[edx+gz_header.hcrc],0
|
||||
je @f
|
||||
cmp [edi+deflate_state.pending],si
|
||||
cmp [edi+deflate_state.pending],esi
|
||||
jle @f ;if (.. && ..>..)
|
||||
movzx ecx,word[edi+deflate_state.pending]
|
||||
mov ecx,[edi+deflate_state.pending]
|
||||
sub ecx,esi
|
||||
mov eax,[edi+deflate_state.pending_buf]
|
||||
add eax,esi
|
||||
@ -1254,9 +1252,8 @@ if GZIP eq 1
|
||||
mov [ebx+z_stream.adler],eax
|
||||
@@:
|
||||
stdcall flush_pending, ebx
|
||||
movzx esi,word[edi+deflate_state.pending]
|
||||
movzx eax,word[edi+deflate_state.pending]
|
||||
cmp eax,[edi+deflate_state.pending_buf_size]
|
||||
mov esi,[edi+deflate_state.pending]
|
||||
cmp esi,[edi+deflate_state.pending_buf_size]
|
||||
jne .end26 ;if (..==..)
|
||||
mov dword[val],1
|
||||
jmp .cycle2end
|
||||
@ -1274,9 +1271,9 @@ if GZIP eq 1
|
||||
.cycle2end:
|
||||
mov dword[edx+gz_header.hcrc],0
|
||||
je @f
|
||||
cmp [edi+deflate_state.pending],si
|
||||
cmp [edi+deflate_state.pending],esi
|
||||
jle @f ;if (.. && ..>..)
|
||||
movzx ecx,word[edi+deflate_state.pending]
|
||||
mov ecx,[edi+deflate_state.pending]
|
||||
sub ecx,esi
|
||||
mov eax,[edi+deflate_state.pending_buf]
|
||||
add eax,esi
|
||||
@ -1294,13 +1291,13 @@ if GZIP eq 1
|
||||
jne .end8 ;if (..==..)
|
||||
cmp dword[edx+gz_header.hcrc],0
|
||||
je .end9 ;if (..)
|
||||
movzx ecx,word[edi+deflate_state.pending]
|
||||
mov ecx,[edi+deflate_state.pending]
|
||||
add ecx,2
|
||||
cmp ecx,[edi+deflate_state.pending_buf_size]
|
||||
jle @f ;if (..>..)
|
||||
stdcall flush_pending, ebx
|
||||
@@:
|
||||
movzx ecx,word[edi+deflate_state.pending]
|
||||
mov ecx,[edi+deflate_state.pending]
|
||||
add ecx,2
|
||||
cmp ecx,[edi+deflate_state.pending_buf_size]
|
||||
jg @f ;if (..<=..)
|
||||
@ -1318,7 +1315,7 @@ if GZIP eq 1
|
||||
end if
|
||||
|
||||
; Flush as much pending output as possible
|
||||
cmp word[edi+deflate_state.pending],0
|
||||
cmp dword[edi+deflate_state.pending],0
|
||||
je .end13 ;if (..!=0)
|
||||
stdcall flush_pending, ebx
|
||||
cmp word[ebx+z_stream.avail_out],0
|
||||
@ -1478,13 +1475,13 @@ end if
|
||||
; If avail_out is zero, the application will call deflate again
|
||||
; to flush the rest.
|
||||
|
||||
cmp word[edi+deflate_state.pending],0
|
||||
cmp dword[edi+deflate_state.pending],0
|
||||
jle @f ;if (..>0) ;write the trailer only once!
|
||||
neg word[edi+deflate_state.pending]
|
||||
inc word[edi+deflate_state.pending]
|
||||
neg dword[edi+deflate_state.pending]
|
||||
inc dword[edi+deflate_state.pending]
|
||||
@@:
|
||||
mov eax,Z_OK
|
||||
cmp word[edi+deflate_state.pending],0
|
||||
cmp dword[edi+deflate_state.pending],0
|
||||
je .end_f
|
||||
mov eax,Z_STREAM_END
|
||||
.end_f:
|
||||
|
@ -75,7 +75,7 @@ struct deflate_state ;internal_state
|
||||
pending_buf dd ? ;Bytef *;output still pending
|
||||
pending_buf_size dd ? ;ulg ;size of pending_buf
|
||||
pending_out dd ? ;Bytef * ;next pending byte to output to the stream
|
||||
pending dw ? ;uInt ;nb of bytes in the pending buffer
|
||||
pending dd ? ;uInt ;nb of bytes in the pending buffer
|
||||
wrap dd ? ;int ;bit 0 true for zlib, bit 1 true for gzip
|
||||
gzhead dd ? ;gz_headerp ;gzip header information to write
|
||||
gzindex dd ? ;uInt ;where in extra, name, or comment
|
||||
|
@ -155,10 +155,10 @@ pop ebx eax
|
||||
|
||||
macro put_short s, w
|
||||
{
|
||||
movzx eax,word[s+deflate_state.pending]
|
||||
mov eax,[s+deflate_state.pending]
|
||||
add eax,[s+deflate_state.pending_buf]
|
||||
mov word[eax],w
|
||||
add word[s+deflate_state.pending],2
|
||||
add dword[s+deflate_state.pending],2
|
||||
}
|
||||
|
||||
; ===========================================================================
|
||||
@ -1875,7 +1875,7 @@ endl
|
||||
mov eax,[lx]
|
||||
shl eax,1
|
||||
add eax,[edi+deflate_state.lit_bufsize]
|
||||
cmp word[edi+deflate_state.pending],ax
|
||||
cmp [edi+deflate_state.pending],eax
|
||||
jl @f
|
||||
zlib_assert 'pendingBuf overflow' ;Assert(..<..)
|
||||
@@:
|
||||
|
@ -1,6 +1,11 @@
|
||||
;*******************************************************
|
||||
;**************GRAPHICS EDITOR ANIMAGE *****************
|
||||
;*******************************************************
|
||||
; version: 1.52
|
||||
; last update: 23.11.2016
|
||||
; changes: Can save *.png files
|
||||
; autors: IgorA
|
||||
;--------------------------------------------------------
|
||||
; version: 1.51
|
||||
; last update: 23.03.2016
|
||||
; changes: Use library 'kmenu.obj', update GUI
|
||||
@ -42,7 +47,7 @@ include '../../../KOSfuncs.inc'
|
||||
include '../../../develop/libraries/box_lib/load_lib.mac'
|
||||
include '../../../dll.inc'
|
||||
include '../../../libio.inc'
|
||||
;include '../../../develop/libraries/libs-dev/libimg/libimg.inc'
|
||||
include '../../../develop/libraries/libs-dev/libimg/libimg.inc'
|
||||
;include '../../../debug.inc'
|
||||
|
||||
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
|
||||
|
@ -153,7 +153,7 @@ no_save_:
|
||||
|
||||
; savedialog drawwin,save1,save2,file_path
|
||||
;---------------------------------------------------------------------
|
||||
; replace extension to '.bmp'
|
||||
; replace extension to '.png'
|
||||
push eax esi
|
||||
mov esi,[OpenDialog_data.filename_area]
|
||||
xor eax,eax
|
||||
@ -165,7 +165,7 @@ no_save_:
|
||||
sub esi,5
|
||||
cmp [esi],byte '.'
|
||||
jne @f
|
||||
mov [esi],dword '.bmp'
|
||||
mov [esi],dword '.png'
|
||||
@@:
|
||||
pop esi eax
|
||||
;---------------------------------------------------------------------
|
||||
@ -179,6 +179,42 @@ save1:
|
||||
save_enter:
|
||||
mcall SF_SET_EVENTS_MASK,0x80000027 ;100111b
|
||||
|
||||
xor al,al
|
||||
mov edi,file_path
|
||||
repne scasb
|
||||
mov eax,[edi-5]
|
||||
or eax,0x20202000 ;down register
|
||||
cmp eax,'.png'
|
||||
jne .end0
|
||||
;create image struct
|
||||
stdcall [img_create], [Picture_SizeX], [Picture_SizeY], Image.bpp24
|
||||
test eax,eax
|
||||
jz @f
|
||||
;copy image
|
||||
mov edi,[eax+Image.Data]
|
||||
mov esi,[PointerToPicture]
|
||||
mov ecx,[Picture_SizeX]
|
||||
imul ecx,[Picture_SizeY]
|
||||
imul ecx,3
|
||||
rep movsb
|
||||
|
||||
;encode image
|
||||
stdcall [img_encode], eax, LIBIMG_FORMAT_PNG, 0
|
||||
test eax,eax
|
||||
jz @f
|
||||
|
||||
;copy output image
|
||||
mov edi,[PointerToEditBufer]
|
||||
mov esi,eax
|
||||
mov eax,ecx
|
||||
rep movsb
|
||||
@@:
|
||||
mov ecx,eax
|
||||
mov eax,file_path
|
||||
mov ebx,[PointerToEditBufer]
|
||||
jmp .end1
|
||||
.end0:
|
||||
|
||||
call analizing_picture_to_palette
|
||||
|
||||
;eax => number of colors in picture
|
||||
@ -194,6 +230,7 @@ save_enter:
|
||||
mov ecx,ebx
|
||||
mov ebx,[PointerToEditBufer]
|
||||
|
||||
.end1:
|
||||
call save_file
|
||||
|
||||
mov [save_flag],1
|
||||
|
@ -1,7 +1,7 @@
|
||||
;**********************************************************
|
||||
;------------------TEXT DATA-------------------------------
|
||||
;**********************************************************
|
||||
name_of_program db 'ANIMAGE graphics editor v1.51',0
|
||||
name_of_program db 'ANIMAGE graphics editor v1.52',0
|
||||
mouse_pos_x db 'X='
|
||||
mouse_pos_y db 'Y='
|
||||
new_text1 db 'PICTURE SIZE X'
|
||||
|
@ -821,9 +821,9 @@ f1: db 0
|
||||
.373:db 'á¡à®á ¯à¨§ ª ¯à ¢«¥¨ï df=0',0
|
||||
.374:db 'á¡à®á ¯à¨§ ª à §à¥è¥¨ï ¯à¥àë¢ ¨ï if=0',0
|
||||
.376:db 'áà ¢¥¨¥ ®¯¥à ¤®¢ ¨ ¯® १ã«ìâ â ¬ áà ¢¥¨ï ãáâ ¢«¨¢ ¥â ä« £¨ (af, cf, of, pf, sf ¨ zf)',0
|
||||
.378:db 'ср ЂЅЈЅ 1-Ў Ё ЉтЎЂых стрЎЊ',0
|
||||
.379:db 'ср ЂЅЈЅ 4-х Ё ЉтЎЂых стрЎЊ',0
|
||||
.381:db 'ср ЂЅЈЅ 2-х Ё ЉтЎЂых стрЎЊ',0
|
||||
.378:db '‘à ¢¥¨¥ 1-® ¡ ©â®¢ëå áâப. ‘âப ¨§ esi áà ¢¨¢ ¥âáï á® áâப®© edi.',0
|
||||
.379:db '‘à ¢¥¨¥ 4-å ¡ ©â®¢ëå áâப. ‘âப ¨§ esi áà ¢¨¢ ¥âáï á® áâப®© edi.',0
|
||||
.381:db '‘à ¢¥¨¥ 2-å ¡ ©â®¢ëå áâப. ‘âப ¨§ esi áà ¢¨¢ ¥âáï á® áâப®© edi.',0
|
||||
.383:db '¬®£®áâà®çë© ª®¬¬¥â ਩',0
|
||||
.389:db 'ᥣ¬¥âë© à¥£¨áâà - ᥣ¬¥â ª®¤ ',0
|
||||
.390:db '¯à¥®¡à §®¢ ¨¥ á«®¢ ¢ ¤¢®©®¥ á«®¢®. ”« £¨ ¥ ¬¥ïîâáï.',0
|
||||
|
Loading…
Reference in New Issue
Block a user