0,0 → 1,181 |
; |
; ¢ í⮬ ä ©«¥ ᮡà ë äãªæ¨¨ ã¦ë¥ ¤«ï ᮧ¤ ¨ï ¨ |
; à ¡®âë ®ª á áâனª ¬¨ |
; |
|
wnd_scale_width equ 320 ;è¨à¨ ®ª á áâனª ¬¨ |
wnd_scale_height equ 150 ;¢ëá®â ®ª á áâனª ¬¨ |
|
align 4 |
wnd_run_scale db 0 ;¯¥à¥¬¥ ï á«¥¤ïé ï § ⥬ çâ®-¡ë ¥ § ¯ã᪠âì ¡®«ìè¥ 1-£® ®ª ᮠ᢮©á⢠¬¨ ®¤®¢à¥¬¥® |
|
;¤ ®¥ ®ª® (¯à®æ¥áá) ¢ë§ë¢ ¥âìáï äãªæ¨¥© but_wnd_coords |
align 4 |
start_scale: |
pushad |
mcall SF_SET_EVENTS_MASK,0x27 ;¬ ᪠®¦¨¤ ¥¬ëå ᮡë⨩ |
inc byte[wnd_run_scale] |
|
edit_boxes_set_sys_color edit3,editboxes_end_sc,sc ;ãáâ ®¢ª á¨á⥬ëå 梥⮢ |
call get_scale |
popad |
call red_win_scale |
|
;¥ ®âàë¢ âì íâã äãªæ¨î ®â ¯à¥¤ë¤ã饩 |
align 4 |
still_scale: |
pushad |
|
mcall SF_WAIT_EVENT_TIMEOUT,10 |
or eax,eax |
jnz @f |
call timer_funct_scale |
jmp .end |
@@: |
|
cmp al,1 ;¨§¬. ¯®«®¦¥¨¥ ®ª |
jne @f |
call red_win_scale |
jmp .end |
@@: |
cmp al,2 |
jne @f |
call key_scale |
jmp .end |
@@: |
cmp al,3 |
jz button_scale |
cmp al,6 |
jne @f |
call mouse_scale |
@@: |
.end: |
popad |
jmp still_scale |
|
align 4 |
red_win_scale: |
pushad |
mcall SF_REDRAW,SSF_BEGIN_DRAW |
|
mcall SF_STYLE_SETTINGS,SSF_GET_SKIN_HEIGHT |
mov edi,capt_opt ;children window caption |
mov bx,word[procinfo.box.left] |
add bx,word[buf_0.l] |
add bx,5 ;è¨à¨ ¡®ª®¢®© à ¬ª¨ |
shl ebx,16 |
mov bx,wnd_scale_width |
mov cx,word[procinfo.box.top] |
add cx,ax ;add skin height |
add cx,word[buf_0.t] |
shl ecx,16 |
mov cx,wnd_scale_height |
mov edx,[sc.work] |
or edx,0x33000000 |
xor eax,eax |
int 0x40 |
|
mov esi,[sc.work_button] |
;ebx = (l<:)+w, ecx = (t<:)+h |
mcall SF_DEFINE_BUTTON, (5 shl 16)+59, (95 shl 16)+20, 3 |
mcall , (75 shl 16)+59, (95 shl 16)+20, 4 |
|
mov ecx,[sc.work_text] |
bts ecx,31 ;à¨á㥬 ï áâப § ª 稢 ¥âáï ã«ñ¬ |
mcall SF_DRAW_TEXT, (5 shl 16)+15,, capt_sc |
|
mov ecx,[sc.work_button_text] |
bts ecx,31 |
mcall , (9 shl 16)+101,, txt_but_cancel |
mov edx,txt_but_apply |
mcall ,(79 shl 16)+101 |
|
stdcall [edit_box_draw], edit3 |
|
mcall SF_REDRAW,SSF_END_DRAW |
popad |
ret |
|
align 4 |
proc key_scale uses eax ebx |
mcall SF_GET_KEY |
|
test word [edit3.flags],10b ;ed_focus |
je @f |
stdcall [edit_box_key], edit3 |
;jmp .end |
@@: |
|
.end: |
ret |
endp |
|
align 4 |
mouse_scale: |
stdcall [edit_box_mouse], edit3 |
ret |
|
align 4 |
button_scale: |
mcall SF_GET_BUTTON |
|
cmp ah,3 |
je .exit |
cmp ah,4 |
jne .end_save |
push eax ecx edi esi |
finit |
|
mov esi,string3 |
mov edi,Data_String |
cld |
mov ecx,8 |
rep movsd |
call String_to_DoubleFloat |
fld qword[Data_Double] ;áç¨âë¢ ¥¬ ª ª double |
fstp qword[Scale1mm] ;á®åà 塞 ª ª double |
|
pop esi edi ecx eax |
jmp .exit |
.end_save: |
|
cmp ah,1 |
jne still_scale.end |
.exit: |
mov byte[wnd_run_scale],0 ;®¡ã«ï¥¬ áç¥â稪 ®ª® |
mcall SF_TERMINATE_PROCESS ;¢ë室 ¨§ ¯à®£à ¬¬ë |
|
align 4 |
get_scale: |
;§ £à㧪 ª®®à¤¨ â ¢ editbox-ë |
push eax |
mov word[NumberSymbolsAD],8 |
finit |
fld qword[Scale1mm] |
fstp qword[Data_Double] |
call DoubleFloat_to_String |
call String_crop_0 |
stdcall [edit_box_set_text], edit3, Data_String |
;stdcall [edit_box_draw], edit3 |
pop eax |
ret |
|
align 4 |
proc timer_funct_scale |
;¯à®á¬ âਢ ¥¬ ¢ë¤¥«¥ãî ª®®à¤¨ âã |
ret |
endp |
|
align 4 |
if lang eq ru |
capt_opt db ' áâனª¨',0 |
capt_sc db ' áèâ ¡:',0 |
else |
capt_opt db 'Options',0 |
capt_sc db 'Scale:',0 |
end if |
|
edit3 edit_box 80, 54, 11, 0xffd0d0, 0xff, 0x80ff, 0, 0x8000, 34, string3, mouse_dd, 0 |
editboxes_end_sc: |
|
string3 rb 34 |