34,7 → 34,6 |
bt word [ch6.flags],1 |
jnc @f |
mov eax,[cur_number] |
;mov ebx,4 |
movsx ebx,byte [sign_n] |
push ebx |
call int_to_str |
45,117 → 44,46 |
jmp .next |
.str_end: |
|
;;;;clean memory |
mcall SF_SYS_MISC, SSF_MEM_FREE, [sf_buf.bmp_header] |
|
mov ecx,dword [sf_buf.bmp_header] |
mov ebx,13 |
mov eax,68 |
mcall |
|
; ëç¨á«ï¥¬, ᪮«ìª® ¡ ©â 㦮 ¯à¨¡ ¢«ïâì ª ª ¦¤®© áâப¥, |
; ç⮡ë á«¥¤ãîé ï ¡ë« ¢ëà ¢¥ 4 ¡ ©â . |
; ¥§ã«ìâ â ¯®¬¥é ¥¬ ¢ edi. |
|
xor edx,edx |
movzx eax,word [scr_buf.width] ; eax = è¨à¨ ª à⨪¨ |
lea eax,[eax*3] ; eax = ¡ ©â áâப㠪 à⨪¨ |
mov ebx,4 ; ebx = 4 |
mov edi,ebx ; edi = 4 |
div ebx ; eax = ¡ ©â áâப㠪 à⨪¨ div 4 edx = ¡ ©â... mod 4 |
sub edi,edx ; edi = ª®«¨ç¥á⢮ ¡ ©â |
test edx,edx |
jnz @f |
xor edi,edi |
@@: |
|
; ¢ë¤¥«ï¥¬ ¯ ¬ïâì |
; mov ecx,[scr_buf.end_ptr] |
; mov [sf_buf.bmp_header],ecx |
|
; add ecx,0x36 |
; mov [sf_buf.bmp_area],ecx |
;create image struct |
movsx ebx,word [scr_buf.width] |
movsx edx,word [scr_buf.height] |
;imul ebx,edx |
lea ebx,[ebx*3] |
add ebx,edi |
imul ebx,edx |
mov ecx,ebx |
stdcall [img_create], ebx, edx, Image.bpp24 |
mov [sf_buf.bmp_area],eax |
test eax,eax |
jz @f |
;copy foto to image buffer |
mov edi,[eax+Image.Data] |
mov esi,[scr_buf.ptr] |
movsx ecx,word[scr_buf.width] |
movsx edx,word[scr_buf.height] |
imul ecx,edx |
imul ecx,3 |
rep movsb |
|
; mov [sf_buf.end],ecx |
add ecx,0x36 |
mov ebx,12 |
mov eax,68 |
mcall |
;encode image |
stdcall [img_encode], eax, LIBIMG_FORMAT_PNG, 0 |
test eax,eax |
jz @f |
|
mov [sf_buf.bmp_header],eax |
add eax,0x36 |
mov [sf_buf.bmp_area],eax |
add eax,ecx |
sub eax,0x36 |
mov [sf_buf.end],eax |
mov [sf_buf.end],ecx |
@@: |
stdcall [img_destroy], [sf_buf.bmp_area] |
|
; push edi |
; § ¯®«ï¥¬ áâàãªâãàã ¤«ï á®åà ¥¨ï ä ©« |
mov ebp,fs_struc |
mov [ebp],dword 2 |
mov [ebp],dword SSF_CREATE_FILE |
|
mov eax,[sf_buf.bmp_header] |
mov ebx,[sf_buf.end] |
sub ebx,eax |
mov [ebp+12],ebx |
mov ecx,[sf_buf.end] |
mov [ebp+12],ecx ;file size |
mov [ebp+16],eax |
mov [ebp+21],dword file_name |
|
; § ¯®«ï¥¬ § £®«®¢®ª bmp |
mov ebp,[sf_buf.bmp_header] |
mov [ebp],word 'BM' |
mov ebx,[sf_buf.end] |
sub ebx,[sf_buf.bmp_area] |
mov [ebp+34],ebx ; à §¬¥à ª à⨪¨ |
mov [ebp+10],dword 0x36 ; à §¬¥à § £®«®¢ª |
add ebx,0x36 |
mov [ebp+2],ebx ; à §¬¥à ä ©« |
mov [ebp+14],dword 0x28 |
movzx eax,word [scr_buf.width] |
mov [ebp+18],eax ; £®à¨§®â «ìë© à §¬¥à |
movzx eax,word [scr_buf.height] |
mov [ebp+22],eax ; ¢¥à⨪«ìë© à §¬¥à |
mov [ebp+26],word 1 |
mov [ebp+28],word 24 |
|
; á®åà 塞 |
mov esi,[scr_buf.ptr] |
mov edi,[sf_buf.end] |
movzx edx,word [scr_buf.height] |
movzx ebx,word [scr_buf.width] |
lea ebx,[ebx*3] |
mov ecx,ebx |
|
test ebx,11b |
jz @f |
shr ebx,2 |
inc ebx |
shl ebx,2 |
@@: |
mov eax,ebx |
sub eax,ecx |
cld |
align 4 |
.next_str: |
sub edi,ebx |
mov ecx,ebx |
shr ecx,2 |
rep movsd |
sub edi,ebx |
sub esi,eax |
dec edx |
jnz .next_str |
|
draw_status saving |
mov eax,70 |
mov ebx,fs_struc |
mcall |
mcall SF_FILE, fs_struc |
|
test eax,eax |
jne save_error |