update ColorDialog

git-svn-id: svn://kolibrios.org@8288 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
IgorA 2020-12-01 09:58:10 +00:00
parent 02503d625c
commit e34d1445df
8 changed files with 412 additions and 382 deletions

View File

@ -814,9 +814,9 @@ tree3 tree_list MAX_OBJECT_SIZE,3, tl_key_no_edit+tl_list_box_mode,\
16,16, 0xffffff,0xb0d0ff,0x400040, 5,290,303,140, 16, 4,0, el_focus,\ 16,16, 0xffffff,0xb0d0ff,0x400040, 5,290,303,140, 16, 4,0, el_focus,\
w_scr_t3,get_point_coords w_scr_t3,get_point_coords
edit1 edit_box 80, 76, 269, 0xffd0d0, 0xff, 0x80ff, 0, 0x8000, 34, string1, mouse_dd, 0 edit1 edit_box 80, 76, 269, 0xffd0d0, 0xff, 0x80ff, 0, 0x8000, 32, string1, mouse_dd, 0
edit2 edit_box 80, 160, 269, 0xd0d0ff, 0xff, 0x80ff, 0, 0x8000, 34, string2, mouse_dd, 0 edit2 edit_box 80, 160, 269, 0xd0d0ff, 0xff, 0x80ff, 0, 0x8000, 32, string2, mouse_dd, 0
edit3 edit_box 80, 244, 269, 0xd0ffd0, 0xff, 0x80ff, 0, 0x8000, 34, string3, mouse_dd, 0 edit3 edit_box 80, 244, 269, 0xd0ffd0, 0xff, 0x80ff, 0, 0x8000, 32, string3, mouse_dd, 0
editboxes_end: editboxes_end:
string1 rb 34 string1 rb 34

View File

@ -1,21 +1,16 @@
use32 use32
org 0x0 org 0
db 'MENUET01' ;¨¤¥­â¨ä. ¨á¯®«­ï¥¬®£® ä ©«  ¢á¥£¤  8 ¡ ©â db 'MENUET01' ;¨¤¥­â¨ä. ¨á¯®«­ï¥¬®£® ä ©«  ¢á¥£¤  8 ¡ ©â
dd 0x1 dd 1, start, i_end, mem, stacktop, 0, sys_path
dd start
dd i_end ;à §¬¥à ¯à¨«®¦¥­¨ï
dd mem
dd stacktop
dd 0
dd sys_path
include '../../../../macros.inc' include '../../../../macros.inc'
include '../../../../proc32.inc' include '../../../../proc32.inc'
include '../../../../develop/libraries/box_lib/load_lib.mac' include '../../../../KOSfuncs.inc'
include '../../../../load_lib.mac'
include '../../../../develop/libraries/box_lib/trunk/box_lib.mac' include '../../../../develop/libraries/box_lib/trunk/box_lib.mac'
include '../../../../dll.inc' include '../../../../dll.inc'
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load @use_library mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
caption db '˜¨ä஢ ­¨¥  «£®à¨â¬®¬ DES 05.03.13',0 ;¯®¤¯¨áì ®ª­  caption db '˜¨ä஢ ­¨¥  «£®à¨â¬®¬ DES 05.03.13',0 ;¯®¤¯¨áì ®ª­ 
struct FileInfoBlock struct FileInfoBlock
@ -57,8 +52,8 @@ macro load_image_file path,buf,size { ;
stdcall mem.Alloc, dword size ;¢ë¤¥«ï¥¬ ¯ ¬ïâì ¤«ï ¨§®¡à ¦¥­¨ï stdcall mem.Alloc, dword size ;¢ë¤¥«ï¥¬ ¯ ¬ïâì ¤«ï ¨§®¡à ¦¥­¨ï
mov [buf],eax mov [buf],eax
mov eax,70 ;70-ï äã­ªæ¨ï à ¡®â  á ä ©« ¬¨ mov eax,SF_FILE
mov [run_file_70.Function], 0 mov [run_file_70.Function], SSF_READ_FILE
mov [run_file_70.Position], 0 mov [run_file_70.Position], 0
mov [run_file_70.Flags], 0 mov [run_file_70.Flags], 0
mov [run_file_70.Count], dword size mov [run_file_70.Count], dword size
@ -70,12 +65,12 @@ macro load_image_file path,buf,size { ;
cmp ebx,0xffffffff cmp ebx,0xffffffff
je @f je @f
;®¯à¥¤¥«ï¥¬ ¢¨¤ ¨§®¡à ¦¥­¨ï ¨ ¯¥à¥¢®¤¨¬ ¥£® ¢® ¢à¥¬¥­­ë© ¡ãä¥à image_data ;®¯à¥¤¥«ï¥¬ ¢¨¤ ¨§®¡à ¦¥­¨ï ¨ ¯¥à¥¢®¤¨¬ ¥£® ¢® ¢à¥¬¥­­ë© ¡ãä¥à image_data
stdcall dword[img_decode], dword[buf],ebx,0 stdcall [img_decode], [buf],ebx,0
mov dword[image_data],eax mov [image_data],eax
;¯à¥®¡à §ã¥¬ ¨§®¡à ¦¥­¨¥ ª ä®à¬ âã rgb ;¯à¥®¡à §ã¥¬ ¨§®¡à ¦¥­¨¥ ª ä®à¬ âã rgb
stdcall dword[img_to_rgb2], dword[image_data],dword[buf] stdcall [img_to_rgb2], [image_data],[buf]
;㤠«ï¥¬ ¢à¥¬¥­­ë© ¡ãä¥à image_data ;㤠«ï¥¬ ¢à¥¬¥­­ë© ¡ãä¥à image_data
stdcall dword[img_destroy], dword[image_data] stdcall [img_destroy], [image_data]
@@: @@:
} }
@ -88,10 +83,10 @@ start:
mov ebp,lib_0 mov ebp,lib_0
cmp dword [ebp+ll_struc_size-4],0 cmp dword [ebp+ll_struc_size-4],0
jz @f jz @f
mcall -1 ;exit not correct mcall SF_TERMINATE_PROCESS
@@: @@:
mcall 48,3,sc,sizeof.system_colors mcall SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sizeof.system_colors
mcall 40,0xC0000027 mcall SF_SET_EVENTS_MASK,0xC0000027
stdcall [OpenDialog_Init],OpenDialog_data ;¯®¤£®â®¢ª  ¤¨ «®£  stdcall [OpenDialog_Init],OpenDialog_data ;¯®¤£®â®¢ª  ¤¨ «®£ 
stdcall [buf2d_create], buf_0 ;ᮧ¤ ­¨¥ ¡ãä¥à  stdcall [buf2d_create], buf_0 ;ᮧ¤ ­¨¥ ¡ãä¥à 
@ -115,7 +110,7 @@ red_win:
align 4 align 4
still: still:
mcall 10 mcall SF_WAIT_EVENT
cmp al,1 cmp al,1
jz red_win jz red_win
@ -132,47 +127,24 @@ still:
align 4 align 4
draw_window: draw_window:
pushad pushad
mcall 12,1 mcall SF_REDRAW,SSF_BEGIN_DRAW
; *** à¨á®¢ ­¨¥ £« ¢­®£® ®ª­  (¢ë¯®«­ï¥âáï 1 à § ¯à¨ § ¯ã᪥) *** ; *** à¨á®¢ ­¨¥ £« ¢­®£® ®ª­  (¢ë¯®«­ï¥âáï 1 à § ¯à¨ § ¯ã᪥) ***
xor eax,eax
mov ebx,(20 shl 16)+480
mov ecx,(20 shl 16)+410
mov edx,[sc.work] mov edx,[sc.work]
or edx,(3 shl 24)+0x10000000+0x20000000 or edx,(3 shl 24)+0x10000000+0x20000000
mov edi,caption mov edi,caption
int 0x40 mcall SF_CREATE_WINDOW, (20 shl 16)+480, (20 shl 16)+410
; *** ᮧ¤ ­¨¥ ª­®¯®ª ­  ¯ ­¥«ì *** ; *** ᮧ¤ ­¨¥ ª­®¯®ª ­  ¯ ­¥«ì ***
mov eax,8
mov ebx,(5 shl 16)+20
mov ecx,(5 shl 16)+20
mov edx,3
mov esi,[sc.work_button] mov esi,[sc.work_button]
int 0x40 mcall SF_DEFINE_BUTTON, (5 shl 16)+20, (5 shl 16)+20, 3
mcall ,(30 shl 16)+20,,4
mov ebx,(30 shl 16)+20 mcall ,(55 shl 16)+20,,5
mov edx,4 mcall ,(85 shl 16)+20,,6
int 0x40 mcall ,(110 shl 16)+20,,7
mov ebx,(55 shl 16)+20
mov edx,5
int 0x40
mov ebx,(85 shl 16)+20
mov edx,6
int 0x40
mov ebx,(110 shl 16)+20
mov edx,7
int 0x40
; *** à¨á®¢ ­¨¥ ¨ª®­®ª ­  ª­®¯ª å *** ; *** à¨á®¢ ­¨¥ ¨ª®­®ª ­  ª­®¯ª å ***
mov eax,7 mcall SF_PUT_IMAGE, [image_data_toolbar], (16 shl 16)+16, (7 shl 16)+7 ;icon new
mov ebx,[image_data_toolbar]
mov ecx,(16 shl 16)+16
mov edx,(7 shl 16)+7 ;icon new
int 0x40
add ebx,IMAGE_TOOLBAR_ICON_SIZE add ebx,IMAGE_TOOLBAR_ICON_SIZE
add edx,(25 shl 16) ;icon open add edx,(25 shl 16) ;icon open
@ -193,13 +165,13 @@ pushad
; *** à¨á®¢ ­¨¥ ¡ãä¥à  *** ; *** à¨á®¢ ­¨¥ ¡ãä¥à  ***
stdcall [buf2d_draw], buf_0 stdcall [buf2d_draw], buf_0
mcall 12,2 mcall SF_REDRAW,SSF_END_DRAW
popad popad
ret ret
align 4 align 4
key: key:
mcall 2 mcall SF_GET_KEY
stdcall [edit_box_key], dword edit1 stdcall [edit_box_key], dword edit1
jmp still jmp still
@ -210,7 +182,7 @@ mouse:
align 4 align 4
button: button:
mcall 17 mcall SF_GET_BUTTON
cmp ah,3 cmp ah,3
jne @f jne @f
call but_new_file call but_new_file
@ -238,7 +210,7 @@ button:
stdcall [buf2d_delete],buf_1 ;㤠«ï¥¬ ¡ãä¥à stdcall [buf2d_delete],buf_1 ;㤠«ï¥¬ ¡ãä¥à
stdcall mem.Free,[image_data_toolbar] stdcall mem.Free,[image_data_toolbar]
stdcall mem.Free,[open_file] stdcall mem.Free,[open_file]
mcall -1 mcall SF_TERMINATE_PROCESS
align 4 align 4
@ -261,8 +233,8 @@ but_open_file:
je .end_open_file je .end_open_file
;ª®¤ ¯à¨ 㤠筮¬ ®âªàë⨨ ¤¨ «®£  ;ª®¤ ¯à¨ 㤠筮¬ ®âªàë⨨ ¤¨ «®£ 
mov eax,70 ;70-ï äã­ªæ¨ï à ¡®â  á ä ©« ¬¨ mov eax,SF_FILE
mov [run_file_70.Function], 0 mov [run_file_70.Function], SSF_READ_FILE
mov [run_file_70.Position], 0 mov [run_file_70.Position], 0
mov [run_file_70.Flags], 0 mov [run_file_70.Flags], 0
mov dword[run_file_70.Count], max_open_file_size mov dword[run_file_70.Count], max_open_file_size
@ -275,9 +247,9 @@ but_open_file:
je .end_open_file je .end_open_file
mov [open_file_size],ebx mov [open_file_size],ebx
add ebx,dword[open_file] add ebx,[open_file]
mov byte[ebx],0 ;­  á«ãç © ¥á«¨ à ­¥¥ ¡ë« ®âªàëâ ä ©« ¡®«ì襣® à §¬¥à  ç¨á⨬ ª®­¥æ ¡ãä¥à  á ä ©«®¬ mov byte[ebx],0 ;­  á«ãç © ¥á«¨ à ­¥¥ ¡ë« ®âªàëâ ä ©« ¡®«ì襣® à §¬¥à  ç¨á⨬ ª®­¥æ ¡ãä¥à  á ä ©«®¬
mcall 71,1,openfile_path mcall SF_SET_CAPTION,1,openfile_path
call draw_file call draw_file
.end_open_file: .end_open_file:
@ -292,7 +264,7 @@ pushad
je .open_file je .open_file
mov eax,[open_file] mov eax,[open_file]
mov ebx,3 mov ebx,3
mov edx,dword[open_file_size] mov edx,[open_file_size]
.cycle_0: .cycle_0:
mov edi,txt_buf mov edi,txt_buf
mov esi,eax mov esi,eax
@ -319,7 +291,7 @@ pushad
jl @f jl @f
add eax,56 add eax,56
add ebx,10 add ebx,10
cmp ebx,dword[buf_0.h] cmp ebx,[buf_0.h]
jl .cycle_0 jl .cycle_0
jmp @f jmp @f
.open_file: .open_file:
@ -339,8 +311,8 @@ but_save_file:
je .end_save_file je .end_save_file
;ª®¤ ¯à¨ 㤠筮¬ ®âªàë⨨ ¤¨ «®£  ;ª®¤ ¯à¨ 㤠筮¬ ®âªàë⨨ ¤¨ «®£ 
mov eax,70 ;70-ï äã­ªæ¨ï à ¡®â  á ä ©« ¬¨ mov eax,SF_FILE
mov [run_file_70.Function], 2 mov [run_file_70.Function], SSF_CREATE_FILE
mov [run_file_70.Position], 0 mov [run_file_70.Position], 0
mov [run_file_70.Flags], 0 mov [run_file_70.Flags], 0
mov ebx, dword[open_file] mov ebx, dword[open_file]
@ -419,46 +391,23 @@ db 'ASM',0
db 0 db 0
head_f_i:
head_f_l db '‘¨á⥬­ ï ®è¨¡ª ',0
system_dir_0 db '/sys/lib/' system_dir_0 db '/sys/lib/'
lib_name_0 db 'proc_lib.obj',0 lib_name_0 db 'proc_lib.obj',0
err_message_found_lib_0 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'proc_lib.obj',39,0
err_message_import_0 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'proc_lib.obj',39,0
system_dir_1 db '/sys/lib/' system_dir_1 db '/sys/lib/'
lib_name_1 db 'libimg.obj',0 lib_name_1 db 'libimg.obj',0
err_message_found_lib_1 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'libimg.obj',39,0
err_message_import_1 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'libimg.obj',39,0
system_dir_2 db '/sys/lib/' system_dir_2 db '/sys/lib/'
lib_name_2 db 'buf2d.obj',0 lib_name_2 db 'buf2d.obj',0
err_msg_found_lib_2 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'buf2d.obj',39,0
err_msg_import_2 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'buf2d',39,0
system_dir_3 db '/sys/lib/' system_dir_3 db '/sys/lib/'
lib_name_3 db 'crypt_des.obj',0 lib_name_3 db 'crypt_des.obj',0
err_msg_found_lib_3 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'crypt_des.obj',39,0
err_msg_import_3 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'crypt_des',39,0
system_dir_4 db '/sys/lib/' system_dir_4 db '/sys/lib/'
lib_name_4 db 'box_lib.obj',0 lib_name_4 db 'box_lib.obj',0
err_msg_found_lib_4 db '<27>¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'box_lib.obj',39,0
err_msg_import_4 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'box_lib',39,0
l_libs_start: l_libs_start:
lib_0 l_libs lib_name_0, sys_path, file_name, system_dir_0,\ lib_0 l_libs lib_name_0, file_name, system_dir_0, import_proclib
err_message_found_lib_0, head_f_l, proclib_import,err_message_import_0, head_f_i lib_1 l_libs lib_name_1, file_name, system_dir_1, import_libimg
lib_1 l_libs lib_name_1, sys_path, file_name, system_dir_1,\ lib_2 l_libs lib_name_2, library_path, system_dir_2, import_buf2d
err_message_found_lib_1, head_f_l, import_libimg, err_message_import_1, head_f_i lib_3 l_libs lib_name_3, library_path, system_dir_3, import_des
lib_2 l_libs lib_name_2, sys_path, library_path, system_dir_2,\ lib_4 l_libs lib_name_4, library_path, system_dir_4, import_box_lib
err_msg_found_lib_2,head_f_l,import_buf2d,err_msg_import_2,head_f_i
lib_3 l_libs lib_name_3, sys_path, library_path, system_dir_3,\
err_msg_found_lib_3,head_f_l,import_des,err_msg_import_3,head_f_i
lib_4 l_libs lib_name_4, sys_path, library_path, system_dir_4,\
err_msg_found_lib_4,head_f_l,import_box_lib,err_msg_import_4,head_f_i
l_libs_end: l_libs_end:
align 4 align 4
@ -509,7 +458,7 @@ import_libimg:
aimg_draw db 'img_draw',0 aimg_draw db 'img_draw',0
align 4 align 4
proclib_import: ;®¯¨á ­¨¥ íªá¯®àâ¨à㥬ëå ä㭪権 import_proclib: ;®¯¨á ­¨¥ íªá¯®àâ¨à㥬ëå ä㭪権
OpenDialog_Init dd aOpenDialog_Init OpenDialog_Init dd aOpenDialog_Init
OpenDialog_Start dd aOpenDialog_Start OpenDialog_Start dd aOpenDialog_Start
dd 0,0 dd 0,0
@ -592,10 +541,6 @@ import_box_lib:
;sz_edit_box_set_text db 'edit_box_set_text',0 ;sz_edit_box_set_text db 'edit_box_set_text',0
mouse_dd dd 0x0 mouse_dd dd 0x0
sc system_colors
align 16
procinfo process_information
align 4 align 4
buf_0: dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï buf_0: dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
@ -623,12 +568,14 @@ txt_buf rb 80
txt_key db 'des_0123',0 txt_key db 'des_0123',0
mem_key rb 120 mem_key rb 120
align 16
i_end: i_end:
procinfo process_information
sc system_colors
rb 2048 rb 2048
stacktop: stacktop:
sys_path rb 1024 sys_path rb 1024
file_name: file_name rb 1024 ;4096
rb 1024 ;4096
library_path rb 1024 library_path rb 1024
plugin_path rb 4096 plugin_path rb 4096
openfile_path rb 4096 openfile_path rb 4096

View File

@ -37,8 +37,9 @@ use32 ;
dd 0x0 ; 㪠§ â¥«ì ­  áâபã á ¯ à ¬¥âà ¬¨. dd 0x0 ; 㪠§ â¥«ì ­  áâபã á ¯ à ¬¥âà ¬¨.
dd way_of_ini dd way_of_ini
include '../../../../macros.inc' include '../../../../macros.inc'
include '../../../../KOSfuncs.inc'
include '../../../../load_lib.mac'
include '../../box_lib/trunk/box_lib.mac' include '../../box_lib/trunk/box_lib.mac'
include '../../box_lib/load_lib.mac'
@use_library ;use load lib macros @use_library ;use load lib macros
start: start:
;universal load library/librarys ;universal load library/librarys
@ -136,10 +137,8 @@ draw_window: ;
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;DATA ¤ ­­ë¥ ;DATA ¤ ­­ë¥
l_libs_start: l_libs_start:
library01 l_libs library_name, way_of_ini, library_path, system_path, err_message_found_lib, head_f_l, font_import, err_message_import, head_f_i library01 l_libs library_name, library_path, system_path, font_import
library02 l_libs library_name1, library_path, system_path1, import_box_lib
library02 l_libs library_name1, way_of_ini, library_path, system_path1, err_message_found_lib1, head_f_l, import_box_lib, err_message_import1, head_f_i
end_l_libs: end_l_libs:
; ;
@ -149,14 +148,6 @@ library_name db 'fonts_lib.obj',0
system_path1 db '/sys/lib/' system_path1 db '/sys/lib/'
library_name1 db 'box_lib.obj',0 library_name1 db 'box_lib.obj',0
err_message_found_lib db 'Sorry I cannot load library fonts_lib.obj',0
err_message_found_lib1 db 'Sorry I cannot load library box_lib.obj',0
head_f_i:
head_f_l db 'System error',0
err_message_import db 'Error on load import library fonts_lib.obj',0
err_message_import1 db 'Error on load import library box_lib.obj',0
align 4 align 4
import_box_lib: import_box_lib:

View File

@ -4,6 +4,4 @@ if not exist bin\font8x9.bmp @copy ..\..\..\fs\kfar\trunk\font8x9.bmp bin\font
@copy *.ini bin\*.ini @copy *.ini bin\*.ini
@fasm.exe -m 16384 nu_pogod.asm bin\nu_pogod.kex @fasm.exe -m 16384 nu_pogod.asm bin\nu_pogod.kex
@kpack bin\nu_pogod.kex @kpack bin\nu_pogod.kex
if not exist bin\buf2d.obj @fasm.exe -m 16384 ..\..\..\develop\libraries\buf2d\trunk\buf2d.asm bin\buf2d.obj
@kpack bin\buf2d.obj
pause pause

View File

@ -1,21 +1,16 @@
use32 use32
org 0x0 org 0
db 'MENUET01' ;¨¤¥­â¨ä. ¨á¯®«­ï¥¬®£® ä ©«  ¢á¥£¤  8 ¡ ©â db 'MENUET01' ;¨¤¥­â¨ä. ¨á¯®«­ï¥¬®£® ä ©«  ¢á¥£¤  8 ¡ ©â
dd 0x1 dd 1, start, i_end, mem, stacktop, 0, sys_path
dd start
dd i_end ;à §¬¥à ¯à¨«®¦¥­¨ï
dd mem
dd stacktop
dd 0x0
dd sys_path
include '../../../macros.inc' include '../../../macros.inc'
include '../../../proc32.inc' include '../../../proc32.inc'
include '../../../develop/libraries/box_lib/load_lib.mac' include '../../../KOSfuncs.inc'
include '../../../load_lib.mac'
include '../../../develop/libraries/box_lib/trunk/box_lib.mac' ;¬ ªà®áë ¤«ï § ¤ ­¨ï í«¥¬¥­â®¢ box_lib include '../../../develop/libraries/box_lib/trunk/box_lib.mac' ;¬ ªà®áë ¤«ï § ¤ ­¨ï í«¥¬¥­â®¢ box_lib
include '../../../dll.inc' include '../../../dll.inc'
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc, dll.Load @use_library mem.Alloc,mem.Free,mem.ReAlloc, dll.Load
;ä« £¨, ¤«ï ä㭪樨 ®¡à¥§ ­¨ï ¡ãä¥à  ;ä« £¨, ¤«ï ä㭪樨 ®¡à¥§ ­¨ï ¡ãä¥à 
BUF2D_OPT_CROP_TOP equ 1 ;®¡à¥§ª  ᢥàåã BUF2D_OPT_CROP_TOP equ 1 ;®¡à¥§ª  ᢥàåã
@ -129,16 +124,16 @@ macro load_image_file path,buf,size { ;
db 0 db 0
@@: @@:
;32 - áâ ­¤ àâ­ë©  ¤à¥á ¯® ª®â®à®¬ã ¤®«¦¥­ ¡ëâì ¡ãä¥à á á¨á⥬­ë¬ ¯ã⥬ ;32 - áâ ­¤ àâ­ë©  ¤à¥á ¯® ª®â®à®¬ã ¤®«¦¥­ ¡ëâì ¡ãä¥à á á¨á⥬­ë¬ ¯ã⥬
copy_path .path_str,[32],file_name,0x0 copy_path .path_str,[32],file_name,0
else else
copy_path path,[32],file_name,0x0 ;ä®à¬¨à㥬 ¯®«­ë© ¯ãâì ª ä ©«ã ¨§®¡à ¦¥­¨ï, ¯®¤à §ã¬¥¢ ¥¬ çâ® ®­ ¢ ®¤­®© ¯ ¯ª¥ á ¯à®£à ¬¬®© copy_path path,[32],file_name,0 ;ä®à¬¨à㥬 ¯®«­ë© ¯ãâì ª ä ©«ã ¨§®¡à ¦¥­¨ï, ¯®¤à §ã¬¥¢ ¥¬ çâ® ®­ ¢ ®¤­®© ¯ ¯ª¥ á ¯à®£à ¬¬®©
end if end if
stdcall mem.Alloc, dword size ;¢ë¤¥«ï¥¬ ¯ ¬ïâì ¤«ï ¨§®¡à ¦¥­¨ï stdcall mem.Alloc, dword size ;¢ë¤¥«ï¥¬ ¯ ¬ïâì ¤«ï ¨§®¡à ¦¥­¨ï
mov [buf],eax mov [buf],eax
mov eax,70 ;70-ï äã­ªæ¨ï à ¡®â  á ä ©« ¬¨ mov eax,SF_FILE
mov [run_file_70.Function], 0 mov [run_file_70.Function], SSF_READ_FILE
mov [run_file_70.Position], 0 mov [run_file_70.Position], 0
mov [run_file_70.Flags], 0 mov [run_file_70.Flags], 0
mov [run_file_70.Count], dword size mov [run_file_70.Count], dword size
@ -150,12 +145,12 @@ macro load_image_file path,buf,size { ;
cmp ebx,0xffffffff cmp ebx,0xffffffff
je @f je @f
;®¯à¥¤¥«ï¥¬ ¢¨¤ ¨§®¡à ¦¥­¨ï ¨ ¯¥à¥¢®¤¨¬ ¥£® ¢® ¢à¥¬¥­­ë© ¡ãä¥à image_data ;®¯à¥¤¥«ï¥¬ ¢¨¤ ¨§®¡à ¦¥­¨ï ¨ ¯¥à¥¢®¤¨¬ ¥£® ¢® ¢à¥¬¥­­ë© ¡ãä¥à image_data
stdcall dword[img_decode], dword[buf],ebx,0 stdcall [img_decode], [buf],ebx,0
mov dword[image_data],eax mov [image_data],eax
;¯à¥®¡à §ã¥¬ ¨§®¡à ¦¥­¨¥ ª ä®à¬ âã rgb ;¯à¥®¡à §ã¥¬ ¨§®¡à ¦¥­¨¥ ª ä®à¬ âã rgb
stdcall dword[img_to_rgb2], dword[image_data],dword[buf] stdcall [img_to_rgb2], [image_data],[buf]
;㤠«ï¥¬ ¢à¥¬¥­­ë© ¡ãä¥à image_data ;㤠«ï¥¬ ¢à¥¬¥­­ë© ¡ãä¥à image_data
stdcall dword[img_destroy], dword[image_data] stdcall [img_destroy], [image_data]
@@: @@:
} }
@ -205,10 +200,10 @@ rand_next:
;x(k+1) = (a*x(k)+c) mod m ;x(k+1) = (a*x(k)+c) mod m
; a=22695477, c=1, m=2^32 ; a=22695477, c=1, m=2^32
push eax push eax
mov eax,dword[rand_x] mov eax,[rand_x]
imul eax,22695477 imul eax,22695477
inc eax inc eax
mov dword[rand_x],eax mov [rand_x],eax
pop eax pop eax
ret ret
@ -218,13 +213,13 @@ pop eax
;¯® ä®­®¢®¬ã 梥âã ¨ âà ä à¥â ¡ã¤¥â § ­¨¬ â 쬭®£® ¬¥áâ  ¢ ¯ ¬ï⨠;¯® ä®­®¢®¬ã 梥âã ¨ âà ä à¥â ¡ã¤¥â § ­¨¬ â 쬭®£® ¬¥áâ  ¢ ¯ ¬ïâ¨
align 4 align 4
proc CreateTrapharetBuffer uses eax edi, buf:dword, img_data:dword proc CreateTrapharetBuffer uses eax edi, buf:dword, img_data:dword
mov edi,dword[buf] mov edi,[buf]
;§ ¯®«­¥­¨¥ ¤ ­­ëå ¡ãä¥à  ;§ ¯®«­¥­¨¥ ¤ ­­ëå ¡ãä¥à 
mov buf2d_size_lt,0 mov buf2d_size_lt,0
mov eax,dword[displ_w] mov eax,[displ_w]
mov buf2d_w,eax mov buf2d_w,eax
mov eax,dword[displ_h] mov eax,[displ_h]
mov buf2d_h,eax mov buf2d_h,eax
mov buf2d_color,0xffffff mov buf2d_color,0xffffff
mov buf2d_bits,24 mov buf2d_bits,24
@ -438,7 +433,7 @@ CountEggsInc: ;㢥
and ax,0xf ;ç¥à¥§ ª ¦¤ë¥ 16 ï¨æ 㬥­ìè ¥¬ ¢à¥¬ï and ax,0xf ;ç¥à¥§ ª ¦¤ë¥ 16 ï¨æ 㬥­ìè ¥¬ ¢à¥¬ï
cmp ax,0 cmp ax,0
jne @f jne @f
mov edi,dword[game_delay_min] ;¬¨­¨¬ «ì­ ï § ¤¥à¦ª  mov edi,[game_delay_min] ;¬¨­¨¬ «ì­ ï § ¤¥à¦ª 
cmp dword[game_spd],edi cmp dword[game_spd],edi
jle @f jle @f
dec dword[game_spd] dec dword[game_spd]
@ -600,8 +595,8 @@ proc InitGame, b:dword ;
mov dword[game_spd],eax ;§ ¤¥à¦ª  ¨£àë mov dword[game_spd],eax ;§ ¤¥à¦ª  ¨£àë
.end_init: .end_init:
mcall 26,9 mcall SF_SYSTEM_GET,SSF_TIME_COUNT
mov dword[rand_x],eax ;§ ¯®«­ï¥¬ 1-¥ á«ãç ©­®¥ ç¨á«® mov [rand_x],eax ;§ ¯®«­ï¥¬ 1-¥ á«ãç ©­®¥ ç¨á«®
pop ebx eax pop ebx eax
ret ret
@ -610,15 +605,15 @@ endp
align 4 align 4
proc LoadArrayBuffer, f_name:dword, buf_start:dword, count:dword proc LoadArrayBuffer, f_name:dword, buf_start:dword, count:dword
pushad pushad
mov edx,dword[displ_bytes] mov edx,[displ_bytes]
mov ecx,edx mov ecx,edx
imul ecx,dword[count] imul ecx,[count]
mov eax,dword[f_name] mov eax,[f_name]
load_image_file eax,image_data_gray,ecx load_image_file eax,image_data_gray,ecx
mov edx,dword[displ_bytes] mov edx,[displ_bytes]
mov eax,[image_data_gray] mov eax,[image_data_gray]
mov edi,dword[buf_start] mov edi,[buf_start]
mov ecx,dword[count] mov ecx,[count]
cld cld
@@: ;áç¨â뢠¥¬ 3 ¡ãä¥à  á ¤¥ª®à æ¨ï¬¨ @@: ;áç¨â뢠¥¬ 3 ¡ãä¥à  á ¤¥ª®à æ¨ï¬¨
stdcall CreateTrapharetBuffer,edi,eax stdcall CreateTrapharetBuffer,edi,eax
@ -636,8 +631,8 @@ align 4
user_is_select: user_is_select:
push eax ecx esi edi push eax ecx esi edi
stdcall [tl_node_get_data], tree1 stdcall [tl_node_get_data], tree1
cmp eax,0 ;¥á«¨ ¨¬ï ¨£àë ¯ãá⮥ or eax,eax ;¥á«¨ ¨¬ï ¨£àë ¯ãá⮥
je @f jz @f
mov esi,eax mov esi,eax
mov edi,ini_name mov edi,ini_name
mov ecx,FILE_NAME_MAX mov ecx,FILE_NAME_MAX
@ -659,39 +654,39 @@ align 4
InitAll: InitAll:
pushad pushad
;à ¡®â  á ä ©«®¬ ­ áâ஥ª ;à ¡®â  á ä ©«®¬ ­ áâ஥ª
copy_path ini_name,sys_path,file_name,0x0 copy_path ini_name,sys_path,file_name,0
stdcall dword[ini_get_int],file_name,ini_sec_files,key_displ_w,210 stdcall [ini_get_int],file_name,ini_sec_files,key_displ_w,210
mov dword[displ_w],eax mov [displ_w],eax
stdcall dword[ini_get_int],file_name,ini_sec_files,key_displ_h,140 stdcall [ini_get_int],file_name,ini_sec_files,key_displ_h,140
mov dword[displ_h],eax mov [displ_h],eax
stdcall dword[ini_get_str],file_name,ini_sec_files,key_file_decorat,fn_icon0,FILE_NAME_MAX,ini_def_decorat_file stdcall [ini_get_str],file_name,ini_sec_files,key_file_decorat,fn_icon0,FILE_NAME_MAX,ini_def_decorat_file
stdcall dword[ini_get_str],file_name,ini_sec_files,key_file_unit,fn_icon1,FILE_NAME_MAX,ini_def_unit_file stdcall [ini_get_str],file_name,ini_sec_files,key_file_unit,fn_icon1,FILE_NAME_MAX,ini_def_unit_file
stdcall dword[ini_get_str],file_name,ini_sec_files,key_file_objects,fn_icon2,FILE_NAME_MAX,ini_def_objects_file stdcall [ini_get_str],file_name,ini_sec_files,key_file_objects,fn_icon2,FILE_NAME_MAX,ini_def_objects_file
stdcall dword[ini_get_str],file_name,ini_sec_files,key_file_lost,fn_icon3,FILE_NAME_MAX,ini_def_lost_file stdcall [ini_get_str],file_name,ini_sec_files,key_file_lost,fn_icon3,FILE_NAME_MAX,ini_def_lost_file
stdcall dword[ini_get_int],file_name,ini_sec_files,key_shadow_x,2 stdcall [ini_get_int],file_name,ini_sec_files,key_shadow_x,2
mov dword[offs_shadow_x],eax mov [offs_shadow_x],eax
stdcall dword[ini_get_int],file_name,ini_sec_files,key_shadow_y,2 stdcall [ini_get_int],file_name,ini_sec_files,key_shadow_y,2
mov dword[offs_shadow_y],eax mov [offs_shadow_y],eax
;áç¨â뢠­¨¥ ­ áâ஥ª ¢«¨ïîé¨å ­  ᪮àáâì ¨£àë ;áç¨â뢠­¨¥ ­ áâ஥ª ¢«¨ïîé¨å ­  ᪮àáâì ¨£àë
stdcall dword[ini_get_int],file_name,ini_sec_game,key_delay_a,65 stdcall [ini_get_int],file_name,ini_sec_game,key_delay_a,65
mov dword[game_delay_a],eax mov [game_delay_a],eax
stdcall dword[ini_get_int],file_name,ini_sec_game,key_delay_b,35 stdcall [ini_get_int],file_name,ini_sec_game,key_delay_b,35
mov dword[game_delay_b],eax mov [game_delay_b],eax
stdcall dword[ini_get_int],file_name,ini_sec_game,key_delay_min,15 stdcall [ini_get_int],file_name,ini_sec_game,key_delay_min,15
mov dword[game_delay_min],eax mov [game_delay_min],eax
stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_fon,0xffffff stdcall [ini_get_color],file_name,ini_sec_color,key_color_fon,0xffffff
mov dword[color_fon],eax mov [color_fon],eax
stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_shadows,0xd0d0d0 stdcall [ini_get_color],file_name,ini_sec_color,key_color_shadows,0xd0d0d0
mov dword[color_shadows],eax mov [color_shadows],eax
stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_unit,0 stdcall [ini_get_color],file_name,ini_sec_color,key_color_unit,0
mov dword[color_wolf],eax mov [color_wolf],eax
stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_egg,0x404080 stdcall [ini_get_color],file_name,ini_sec_color,key_color_egg,0x404080
mov dword[color_egg],eax mov [color_egg],eax
stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_chick,0x00d0d0 stdcall [ini_get_color],file_name,ini_sec_color,key_color_chick,0x00d0d0
mov dword[color_chick],eax mov [color_chick],eax
mov ebx,color_decorat mov ebx,color_decorat
mov byte[key_color_decorat.ind],'0' mov byte[key_color_decorat.ind],'0'
@ -699,17 +694,17 @@ InitAll:
cld cld
@@: @@:
push ecx ;äã­ªæ¨ï ini_get_color ¨¬¥¥â ¯à ¢® ¬ ­ïâì ॣ¨áâà ecx push ecx ;äã­ªæ¨ï ini_get_color ¨¬¥¥â ¯à ¢® ¬ ­ïâì ॣ¨áâà ecx
stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_decorat,0x000080 stdcall [ini_get_color],file_name,ini_sec_color,key_color_decorat,0x000080
pop ecx pop ecx
mov dword[ebx],eax mov [ebx],eax
add ebx,4 add ebx,4
inc byte[key_color_decorat.ind] inc byte[key_color_decorat.ind]
loop @b loop @b
mov edx,dword[displ_w] mov edx,[displ_w]
imul edx,dword[displ_h] imul edx,[displ_h]
lea edx,[edx+edx*2] lea edx,[edx+edx*2]
mov dword[displ_bytes],edx ;¢ëç¨á«ï¥¬ à §¬¥à ¨£à®¢®£® ¯®«ï mov [displ_bytes],edx ;¢ëç¨á«ï¥¬ à §¬¥à ¨£à®¢®£® ¯®«ï
stdcall LoadArrayBuffer, fn_icon0, buf_decor,3 ;áç¨â뢠¥¬ 3 ¡ãä¥à  á ¤¥ª®à æ¨ï¬¨ stdcall LoadArrayBuffer, fn_icon0, buf_decor,3 ;áç¨â뢠¥¬ 3 ¡ãä¥à  á ¤¥ª®à æ¨ï¬¨
stdcall LoadArrayBuffer, fn_icon1, buf_wolf,9 ;áç¨â뢠¥¬ 9 ¡ãä¥à®¢ á ¢®«ª®¬ ¨ § ©æ¥¬ stdcall LoadArrayBuffer, fn_icon1, buf_wolf,9 ;áç¨â뢠¥¬ 9 ¡ãä¥à®¢ á ¢®«ª®¬ ¨ § ©æ¥¬
@ -761,11 +756,11 @@ start:
jnz @f jnz @f
jmp .lib jmp .lib
@@: @@:
mcall -1 ;exit not correct mcall SF_TERMINATE_PROCESS
.lib: .lib:
mcall 40,0x27 mcall SF_SET_EVENTS_MASK,0x27
mcall 48,3,sc,sizeof.system_colors ;¯®«ãç ¥¬ á¨á⥬­ë¥ æ¢¥â  mcall SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sizeof.system_colors
;****************************************************************************** ;******************************************************************************
; ¯®¤£®â®¢ª  ᯨ᪠ ¨£à ; ¯®¤£®â®¢ª  ᯨ᪠ ¨£à
@ -780,9 +775,9 @@ start:
m2m dword[tree1.data_img_sys],buf2d_data m2m dword[tree1.data_img_sys],buf2d_data
;à ¡®â  á £« ¢­ë¬ ä ©«®¬ ­ áâ஥ª ;à ¡®â  á £« ¢­ë¬ ä ©«®¬ ­ áâ஥ª
copy_path ini_m_name,sys_path,file_name,0x0 copy_path ini_m_name,sys_path,file_name,0
stdcall dword[ini_get_int],file_name,ini_sec_files,key_count,1 stdcall [ini_get_int],file_name,ini_sec_files,key_count,1
mov ecx,eax mov ecx,eax
mov dl,'0' mov dl,'0'
cld cld
@ -790,14 +785,14 @@ start:
mov byte[key_game_ind],dl mov byte[key_game_ind],dl
inc dl inc dl
push ecx edx push ecx edx
stdcall dword[ini_get_str],file_name,ini_sec_files,key_game,txt_tile_type_0,FILE_NAME_MAX,ini_def_decorat_file stdcall [ini_get_str],file_name,ini_sec_files,key_game,txt_tile_type_0,FILE_NAME_MAX,ini_def_decorat_file
stdcall dword[tl_node_add], tree1, 0, txt_tile_type_0 ;¤®¡ ¢«ï¥¬ ­ §¢ ­¨¥ ¨£àë stdcall [tl_node_add], tree1, 0, txt_tile_type_0 ;¤®¡ ¢«ï¥¬ ­ §¢ ­¨¥ ¨£àë
stdcall dword[tl_cur_next], tree1 ;¯¥à¥­®á¨¬ ªãàá®à ¢­¨§, çâ®-¡ë ­¥ ¯®¬¥­ï«áï ¯®à冷ª ¨£à stdcall [tl_cur_next], tree1 ;¯¥à¥­®á¨¬ ªãàá®à ¢­¨§, çâ®-¡ë ­¥ ¯®¬¥­ï«áï ¯®à冷ª ¨£à
pop edx ecx pop edx ecx
loop @b loop @b
stdcall dword[tl_cur_beg], tree1 ;¯¥à¥­®á¨¬ ªãàá®à ¢¢¥àå stdcall [tl_cur_beg], tree1 ;¯¥à¥­®á¨¬ ªãàá®à ¢¢¥àå
mcall 26,9 mcall SF_SYSTEM_GET,SSF_TIME_COUNT
mov [last_time],eax mov [last_time],eax
@ -812,21 +807,21 @@ still: ;
cmp byte[game_select_mode],0 cmp byte[game_select_mode],0
jne .select_mode jne .select_mode
mcall 26,9 ;¡¥à¥¬ á¨á⥬­®¥ ¢à¥¬ï mcall SF_SYSTEM_GET,SSF_TIME_COUNT
mov ebx,[last_time] mov ebx,[last_time]
add ebx,dword[game_spd] ;delay add ebx,[game_spd] ;delay
sub ebx,eax sub ebx,eax
cmp ebx,dword[game_spd] ;delay cmp ebx,[game_spd] ;delay
ja it_is_time_now ja it_is_time_now
test ebx,ebx test ebx,ebx
jz it_is_time_now jz it_is_time_now
mcall 23 mcall SF_WAIT_EVENT_TIMEOUT
cmp eax,0 or eax,eax
je it_is_time_now jz it_is_time_now
jmp @f jmp @f
.select_mode: .select_mode:
mcall 10 mcall SF_WAIT_EVENT
@@: @@:
cmp al,1 ;¨§¬¥­¨«®áì ¯®«®¦¥­¨¥ ®ª­  cmp al,1 ;¨§¬¥­¨«®áì ¯®«®¦¥­¨¥ ®ª­ 
@ -850,7 +845,7 @@ mouse:
align 4 align 4
it_is_time_now: it_is_time_now:
mcall 26,9 mcall SF_SYSTEM_GET,SSF_TIME_COUNT
mov [last_time],eax mov [last_time],eax
;cmp byte[game_select_mode],0 ;cmp byte[game_select_mode],0
@ -864,7 +859,7 @@ it_is_time_now:
align 4 align 4
key: key:
push eax ebx push eax ebx
mcall 2 mcall SF_GET_KEY
cmp byte[game_select_mode],0 cmp byte[game_select_mode],0
je @f je @f
@ -914,7 +909,7 @@ key:
align 4 align 4
draw_window: draw_window:
pushad pushad
mcall 12,1 mcall SF_REDRAW,SSF_BEGIN_DRAW
xor eax,eax xor eax,eax
mov ebx,20*65536+480 mov ebx,20*65536+480
@ -924,28 +919,28 @@ draw_window:
or edx,0x73000000 or edx,0x73000000
mov edi,hed mov edi,hed
mcall ;ᮧ¤ ­¨¥ ®ª­  mcall ;ᮧ¤ ­¨¥ ®ª­ 
mcall 9,procinfo,-1 mcall SF_THREAD_INFO,procinfo,-1
cmp byte[game_select_mode],0 cmp byte[game_select_mode],0
jne .select_mode jne .select_mode
mov edi,buf_displ mov edi,buf_displ
mov eax,dword[procinfo.client_box.width] mov eax,[procinfo.client_box.width]
cmp eax,dword[displ_w] cmp eax,[displ_w]
jle @f jle @f
sub eax,dword[displ_w] sub eax,[displ_w]
shr eax,1 shr eax,1
mov buf2d_l,ax ;¢ë¯à ¢­¨¢ ¥¬ ¡ãä¥à ¯® 業âàã ®ª­  mov buf2d_l,ax ;¢ë¯à ¢­¨¢ ¥¬ ¡ãä¥à ¯® 業âàã ®ª­ 
@@: @@:
call draw_display call draw_display
mov eax,13 ;à¨á®¢ ­¨¥ ¯àאַ㣮«ì­¨ª  mov eax,SF_DRAW_RECT
mov edx,[sc.work] mov edx,[sc.work]
xor esi,esi xor esi,esi
mov si,buf2d_l mov si,buf2d_l
add esi,dword[displ_w] add esi,[displ_w]
mov ebx,dword[procinfo.client_box.width] mov ebx,[procinfo.client_box.width]
inc ebx inc ebx
cmp esi,ebx cmp esi,ebx
jge @f jge @f
@ -953,41 +948,37 @@ draw_window:
rol ebx,16 rol ebx,16
mov bx,si mov bx,si
rol ebx,16 rol ebx,16
mov ecx,dword[procinfo.client_box.height] mov ecx,[procinfo.client_box.height]
inc ecx inc ecx
int 0x40 ;à¨á®¢ ­¨¥ ¯à ¢®£® ¡®ª®¢®£® ¯®«ï int 0x40 ;à¨á®¢ ­¨¥ ¯à ¢®£® ¡®ª®¢®£® ¯®«ï
jmp .draw_s jmp .draw_s
@@: @@:
mov esi,dword[procinfo.client_box.width] ;ª®£¤  ¯® è¨à¨­¥ ­¥ ¢« §¨â mov esi,[procinfo.client_box.width] ;ª®£¤  ¯® è¨à¨­¥ ­¥ ¢« §¨â
inc esi inc esi
.draw_s: .draw_s:
; *** à¨á®¢ ­¨¥ ª­®¯®ª *** ; *** à¨á®¢ ­¨¥ ª­®¯®ª ***
push esi push esi
mov eax,8 movzx ebx,buf2d_l
xor ebx,ebx
mov bx,buf2d_l
add ebx,buf2d_w add ebx,buf2d_w
add ebx,BUT1_L add ebx,BUT1_L
shl ebx,16 shl ebx,16
mov bx,BUT1_W mov bx,BUT1_W
mov ecx,BUT1_T*65536+BUT1_H mov ecx,BUT1_T*65536+BUT1_H
mov edx,5 mov esi,[color_but_sm]
;or edx,0x40000000 mcall SF_DEFINE_BUTTON,,,5
mov esi,dword[color_but_sm]
int 0x40
inc edx inc edx
add ecx,BUT1_NEXT_TOP add ecx,BUT1_NEXT_TOP
int 0x40 int 0x40
pop esi pop esi
mov bx,BUT1_H mov bx,BUT1_H-4
add ebx,3*65536;+3 add ebx,8 shl 16
mov ecx,dword[color_but_te] mov ecx,[color_but_te]
or ecx,0x80000000 or ecx,0x80000000
mov edx,txt_game_a mov edx,txt_game_a
mcall 4 mcall SF_DRAW_TEXT
ror ebx,16 ror ebx,16
add ebx,BUT1_NEXT_TOP add ebx,BUT1_NEXT_TOP
@ -996,13 +987,13 @@ pop esi
int 0x40 int 0x40
; *** ¢®ááâ ­®¢«¥­¨¥ ¯ à ¬¥â஢ *** ; *** ¢®ááâ ­®¢«¥­¨¥ ¯ à ¬¥â஢ ***
mov eax,13 ;à¨á®¢ ­¨¥ ¯àאַ㣮«ì­¨ª  mov eax,SF_DRAW_RECT
mov edx,[sc.work] mov edx,[sc.work]
mov ebx,esi mov ebx,esi
mov ecx,dword[procinfo.client_box.height] mov ecx,[procinfo.client_box.height]
inc ecx inc ecx
mov esi,dword[displ_h] mov esi,[displ_h]
cmp esi,ebx cmp esi,ebx
jge @f jge @f
sub ecx,esi sub ecx,esi
@ -1014,18 +1005,18 @@ pop esi
xor ebx,ebx xor ebx,ebx
mov bx,buf2d_l mov bx,buf2d_l
mov ecx,dword[displ_h] mov ecx,[displ_h]
int 0x40 ;à¨á®¢ ­¨¥ «¥¢®£® ¡®ª®¢®£® ¯®«ï int 0x40 ;à¨á®¢ ­¨¥ «¥¢®£® ¡®ª®¢®£® ¯®«ï
jmp @f jmp @f
.select_mode: .select_mode:
stdcall dword[tl_draw],dword tree1 stdcall [tl_draw], tree1
mov edi,tree1 mov edi,tree1
add edi,tl_offs_box add edi,tl_offs_box
stdcall draw_rect_border, procinfo.client_box, edi stdcall draw_rect_border, procinfo.client_box, edi
@@: @@:
mcall 12,2 mcall SF_REDRAW,SSF_END_DRAW
popad popad
ret ret
@ -1035,15 +1026,15 @@ pop esi
align 4 align 4
proc draw_rect_border, client_rect:dword, user_box:dword proc draw_rect_border, client_rect:dword, user_box:dword
pushad pushad
mov esi,dword[user_box] mov esi,[user_box]
cmp esi,0 cmp esi,0
je @f je @f
mov edi,dword[client_rect] mov edi,[client_rect]
mov ebx,dword[edi+8] ;+8 = width mov ebx,dword[edi+8] ;+8 = width
inc bx inc bx
mov ecx,dword[esi+4] ;+4 = top mov ecx,dword[esi+4] ;+4 = top
mov edx,[sc.work] mov edx,[sc.work]
mcall 13 ;top mcall SF_DRAW_RECT ;top
mov eax,dword[esi+4] ;+4 = top mov eax,dword[esi+4] ;+4 = top
add eax,dword[esi+12] ;+12 = height add eax,dword[esi+12] ;+12 = height
@ -1054,7 +1045,7 @@ proc draw_rect_border, client_rect:dword, user_box:dword
mov cx,word[edi+12] ;+12 = bottom mov cx,word[edi+12] ;+12 = bottom
inc cx inc cx
sub cx,ax sub cx,ax
mcall 13 ;bottom mcall SF_DRAW_RECT ;bottom
.no_bottom: .no_bottom:
mov ebx,dword[esi] ;+0 left mov ebx,dword[esi] ;+0 left
@ -1062,7 +1053,7 @@ proc draw_rect_border, client_rect:dword, user_box:dword
shl ecx,16 shl ecx,16
mov cx,word[esi+12] ;+12 = height mov cx,word[esi+12] ;+12 = height
inc cx inc cx
mcall 13 ;left mcall SF_DRAW_RECT ;left
mov eax,dword[esi] ;+0 left mov eax,dword[esi] ;+0 left
add eax,dword[esi+8] ;+8 = width add eax,dword[esi+8] ;+8 = width
@ -1071,7 +1062,7 @@ proc draw_rect_border, client_rect:dword, user_box:dword
mov bx,word[edi+8] ;+8 = right mov bx,word[edi+8] ;+8 = right
sub bx,ax sub bx,ax
inc bx inc bx
mcall 13 ;right mcall SF_DRAW_RECT ;right
@@: @@:
popad popad
ret ret
@ -1080,13 +1071,13 @@ endp
align 4 align 4
draw_display: draw_display:
stdcall mem_copy, dword[buf_fon],dword[buf_displ],dword[displ_bytes] ;ª®¯¨à®¢ ­¨¥ ¨§®¡à ¦¥­¨ï ¨§ ä®­®¢®£® ¡ãä¥à  stdcall mem_copy, [buf_fon],[buf_displ],[displ_bytes] ;ª®¯¨à®¢ ­¨¥ ¨§®¡à ¦¥­¨ï ¨§ ä®­®¢®£® ¡ãä¥à 
call DrawZaac ;à¨á㥬 § ©æ  call DrawZaac ;à¨á㥬 § ©æ 
call DrawWolf ;à¨á㥬 ¢®«ª  call DrawWolf ;à¨á㥬 ¢®«ª 
call DrawEggs ;à¨á㥬 ï©æ  call DrawEggs ;à¨á㥬 ï©æ 
push eax push eax
mov eax,dword[displ_w] mov eax,[displ_w]
shr eax,1 shr eax,1
stdcall [buf2d_draw_text], buf_displ, buf_font,game_text,eax,[offs_shadow_x],[color_wolf] ;à¨á㥬 áâபã á ⥪á⮬ stdcall [buf2d_draw_text], buf_displ, buf_font,game_text,eax,[offs_shadow_x],[color_wolf] ;à¨á㥬 áâபã á ⥪á⮬
pop eax pop eax
@ -1095,7 +1086,7 @@ pop eax
align 4 align 4
button: button:
mcall 17 ;¯®«ãç¨âì ª®¤ ­ ¦ â®© ª­®¯ª¨ mcall SF_GET_BUTTON
cmp ah,5 cmp ah,5
jne @f jne @f
@ -1142,73 +1133,65 @@ button:
mov dword[tree1.data_img_sys],0 ;ç¨á⨬ 㪠§ â¥«ì ­  ¨§®¡à ¦¥­¨¥ mov dword[tree1.data_img_sys],0 ;ç¨á⨬ 㪠§ â¥«ì ­  ¨§®¡à ¦¥­¨¥
stdcall dword[tl_data_clear], tree1 stdcall dword[tl_data_clear], tree1
mcall -1 ;¢ë室 ¨§ ¯à®£à ¬¬ë mcall SF_TERMINATE_PROCESS
head_f_i:
head_f_l db '‘¨á⥬­ ï ®è¨¡ª ',0
system_dir0 db '/sys/lib/' system_dir0 db '/sys/lib/'
lib0_name db 'buf2d.obj',0 lib0_name db 'buf2d.obj',0
err_message_found_lib0 db '<27>¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã buf2d.obj',0
err_message_import0 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ buf2d.obj',0
system_dir1 db '/sys/lib/' system_dir1 db '/sys/lib/'
lib1_name db 'libimg.obj',0 lib1_name db 'libimg.obj',0
err_message_found_lib1 db '<27>¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã libimg.obj',0
err_message_import1 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ libimg.obj',0
system_dir2 db '/sys/lib/' system_dir2 db '/sys/lib/'
lib2_name db 'libini.obj',0 lib2_name db 'libini.obj',0
err_message_found_lib2 db '<27>¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã libini.obj',0
err_message_import2 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ libini.obj',0
system_dir3 db '/sys/lib/' system_dir3 db '/sys/lib/'
lib3_name db 'box_lib.obj',0 lib3_name db 'box_lib.obj',0
err_message_found_lib3 db '<27>¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã box_lib.obj',0
err_message_import3 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ box_lib.obj',0
;library structures ;library structures
l_libs_start: l_libs_start:
lib0 l_libs lib0_name, sys_path, file_name, system_dir0, err_message_found_lib0, head_f_l, import_buf2d_lib, err_message_import0, head_f_i lib0 l_libs lib0_name, file_name, system_dir0, import_buf2d_lib
lib1 l_libs lib1_name, sys_path, file_name, system_dir1, err_message_found_lib1, head_f_l, import_libimg, err_message_import1, head_f_i lib1 l_libs lib1_name, file_name, system_dir1, import_libimg
lib2 l_libs lib2_name, sys_path, file_name, system_dir2, err_message_found_lib2, head_f_l, import_libini, err_message_import2, head_f_i lib2 l_libs lib2_name, file_name, system_dir2, import_libini
lib3 l_libs lib3_name, sys_path, file_name, system_dir3, err_message_found_lib3, head_f_l, import_box_lib, err_message_import3, head_f_i lib3 l_libs lib3_name, file_name, system_dir3, import_box_lib
load_lib_end: load_lib_end:
align 4 align 4
proc mem_copy uses ecx esi edi, source:dword, destination:dword, len:dword proc mem_copy uses ecx esi edi, source:dword, destination:dword, len:dword
cld cld
mov esi, dword[source] mov esi, [source]
mov edi, dword[destination] mov edi, [destination]
mov ecx, dword[len] mov ecx, [len]
rep movsb rep movsb
ret ret
endp endp
;input:
; eax - ç¨á«®
; edi - ¡ãä¥à ¤«ï áâப¨
align 4 align 4
convert_to_str: convert_to_str:
pushad pushad
mov dword[edi+1],0 lea esi,[edi+8] ;8 - ¤«¨­­  ¡ãä¥à  -1
cld
call .str call .str
popad popad
ret ret
align 4 align 4
.str: .str:
mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬  áç¨á«¥­¨ï ¨§¬¥­ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤­ë¥ ¯ à ¬¥âàë eax - ç¨á«® mov ecx,10
;¯à¥à¥¢®¤ ç¨á«  ¢ ASCII áâப㠢§®¤­ë¥ ¤ ­­ë¥ ecx=á¨á⥬  áç¨á«¥­ï edi  ¤à¥á ªã¤  § ¯¨á뢠âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®­¥æ ¯¥à¥¬¥­­®© cmp eax,ecx
cmp eax,ecx ;áà ¢­¨âì ¥á«¨ ¢ eax ¬¥­ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ ­  @@-1 â.¥. ­  pop eax jb @f
jb @f xor edx,edx
xor edx,edx ;®ç¨áâ¨âì edx div ecx
div ecx ;à §¤¥«¨âì - ®áâ â®ª ¢ edx push edx
push edx ;¯®«®¦¨âì ¢ á⥪ ;dec edi ;ᬥ饭¨¥ ­¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®­æ  áâப¨
call .str;¯¥à¥©â¨ ­  á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥­â  ¯®ª  ¢ eax ­¥ áâ ­¥â ¬¥­ìè¥ ç¥¬ ¢ ecx call .str
pop eax pop eax
@@: ;cmp al,10 ;¯à®¢¥à¨âì ­¥ ¬¥­ìè¥ «¨ §­ ç¥­¨¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥­ï 10 ¤ ­­ ï ª®¬ ­¤  - «¨è­ ï)) @@:
or al,0x30 ;¤ ­­ ï ª®¬ ­¤  ª®à®ç¥ 祬 ¤¢¥ ¢ëè¥ cmp edi,esi
stosb ;§ ¯¨á âì í«¥¬¥­â ¨§ ॣ¨áâà  al ¢ ï祪㠯 ¬ï⨠es:edi jge @f
ret ;¢¥à­ãâìáï ®ç¥­ì ¨­â¥à¥á­ë© 室 â.ª. ¯®ª  ¢ á⥪¥ åà ­¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï or al,0x30
stosb
mov byte[edi],0 ;¢ ª®­¥æ áâப¨ áâ ¢¨¬ 0, çâ®-¡ë ­¥ ¢ë« §¨« ¬ãá®à
@@:
ret
last_time dd 0 last_time dd 0
@ -1216,7 +1199,7 @@ image_data dd 0 ;
image_data_gray dd 0 ;¯ ¬ïâì á ¢à¥¬¥­­ë¬¨ á¥à묨 ¨§®¡à ¦¥­¨ï¬¨ ¢ ä®à¬ â¥ 24-bit, ¨§ ª®â®àëå ¡ã¤ãâ ᮧ¤ ¢ âìáï âà ä à¥âë image_data_gray dd 0 ;¯ ¬ïâì á ¢à¥¬¥­­ë¬¨ á¥à묨 ¨§®¡à ¦¥­¨ï¬¨ ¢ ä®à¬ â¥ 24-bit, ¨§ ª®â®àëå ¡ã¤ãâ ᮧ¤ ¢ âìáï âà ä à¥âë
run_file_70 FileInfoBlock run_file_70 FileInfoBlock
hed db 'Nu pogodi 10.11.15',0 ;¯®¤¯¨áì ®ª­  hed db 'Nu pogodi 10.12.20',0 ;¯®¤¯¨áì ®ª­ 
sc system_colors ;á¨á⥬­ë¥ æ¢¥â  sc system_colors ;á¨á⥬­ë¥ 梥â 
count_of_dir_list_files equ 10 count_of_dir_list_files equ 10

View File

@ -68,18 +68,12 @@
; Free area ; +68 ; Free area ; +68
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
use32 use32
org 0x0 org 0
db 'MENUET01' db 'MENUET01'
dd 0x01 dd 1, START, IM_END, I_END, stacktop, param, path
dd START
dd IM_END
dd I_END
dd stacktop
dd param
dd path
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
include '../../macros.inc' include '../../macros.inc'
include '../../proc32.inc'
include '../../KOSfuncs.inc' include '../../KOSfuncs.inc'
include '../../load_lib.mac' include '../../load_lib.mac'
include '../../develop/libraries/box_lib/trunk/box_lib.mac' include '../../develop/libraries/box_lib/trunk/box_lib.mac'
@ -105,25 +99,25 @@ w_size_y = 350
c_start_x = t_start_x + p_size_y + 10 c_start_x = t_start_x + p_size_y + 10
c_start_y = 10 c_start_y = 10
c_size_x = 40 c_size_x = 27
c_size_y = 20 c_size_y = 20
ed_size_x = 53
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
x_minimal_size equ 350 x_minimal_size equ 350
y_minimal_size equ 250 y_minimal_size equ 250
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
START: START:
mcall 68,11 mcall SF_SYS_MISC,SSF_HEAP_INIT
mcall 66,1,1 ;mcall SF_KEYBOARD,SSF_SET_INPUT_MODE,1
mcall 40,0x27 mcall SF_SET_EVENTS_MASK,0x27
; mcall 40,0x7
call get_communication_area
call get_active_pocess
call clear_colors_history
;-------------------------------------- ;--------------------------------------
load_libraries l_libs_start,end_l_libs load_libraries l_libs_start,end_l_libs
test eax,eax test eax,eax
jnz button.exit_2 jnz button.exit_2
;-------------------------------------- ;--------------------------------------
call get_communication_area
call get_active_pocess
call clear_colors_history
xor eax,eax xor eax,eax
mov al,p_size_x mov al,p_size_x
mov [palette_SIZE_X],eax mov [palette_SIZE_X],eax
@ -140,7 +134,7 @@ load_libraries l_libs_start,end_l_libs
imul ecx,[palette_SIZE_X] imul ecx,[palette_SIZE_X]
lea ecx,[ecx*3] lea ecx,[ecx*3]
inc ecx ;reserve for stosd inc ecx ;reserve for stosd
mcall 68,12 mcall SF_SYS_MISC,SSF_MEM_ALLOC
mov [palette_area],eax mov [palette_area],eax
;-------------------------------------- ;--------------------------------------
call create_palette call create_palette
@ -149,7 +143,7 @@ load_libraries l_libs_start,end_l_libs
imul ecx,[tone_SIZE_X] imul ecx,[tone_SIZE_X]
lea ecx,[ecx*3] lea ecx,[ecx*3]
inc ecx ;reserve for stosd inc ecx ;reserve for stosd
mcall 68,12 mcall SF_SYS_MISC,SSF_MEM_ALLOC
mov [tone_area],eax mov [tone_area],eax
;-------------------------------------- ;--------------------------------------
call create_tone call create_tone
@ -160,7 +154,7 @@ red:
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
align 4 align 4
still: still:
mcall 10 mcall SF_WAIT_EVENT
cmp eax,1 cmp eax,1
je red je red
@ -178,7 +172,7 @@ still:
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
align 4 align 4
button: button:
mcall 17 mcall SF_GET_BUTTON
cmp ah, 2 cmp ah, 2
je palette_button je palette_button
@ -236,40 +230,39 @@ align 4
mov ebx,[communication_area] mov ebx,[communication_area]
mov ecx,procinfo mov ecx,procinfo
; mov eax,[window_x] ; mov eax,[window_x]
mov eax,[ecx+34] mov eax,[ecx+process_information.box.left]
shl eax,16 shl eax,16
add eax,[ecx+42] add eax,[ecx+process_information.box.width]
mov [ebx+4],eax mov [ebx+4],eax
; mov eax,[window_y] ; mov eax,[window_y]
mov eax,[ecx+38] mov eax,[ecx+process_information.box.top]
shl eax,16 shl eax,16
add eax,[ecx+46] add eax,[ecx+process_information.box.height]
mov [ebx+8],eax mov [ebx+8],eax
;-------------------------------------- ;--------------------------------------
align 4 align 4
.exit_2: .exit_2:
mcall -1 mcall SF_TERMINATE_PROCESS
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
align 4 align 4
get_window_param: get_window_param:
mcall 9,procinfo,-1 mcall SF_THREAD_INFO,procinfo,-1
mov eax,[ebx+66] mov eax,[ebx+process_information.client_box.height]
inc eax inc eax
; mov [window_high],eax ; mov [window_high],eax
mov eax,[ebx+62] mov eax,[ebx+process_information.client_box.width]
inc eax inc eax
; mov [window_width],eax ; mov [window_width],eax
mov eax,[ebx+70] mov eax,dword[ebx+process_information.wnd_state]
; mov [window_status],eax ; mov [window_status],eax
ret ret
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
align 4 align 4
get_communication_area: get_communication_area:
xor eax,eax movzx eax,byte[param]
mov al,[param]
test eax,eax test eax,eax
jz @f jz @f
mcall 68,22,param,,0x01 mcall SF_SYS_MISC,SSF_MEM_OPEN,param,,0x01
mov [communication_area],eax mov [communication_area],eax
; movzx ebx,word [eax+2] ; movzx ebx,word [eax+2]
; mov [color_dialog_type],ebx ; mov [color_dialog_type],ebx
@ -289,9 +282,9 @@ get_communication_area:
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
align 4 align 4
get_active_pocess: get_active_pocess:
mcall 9,procinfo,-1 mcall SF_THREAD_INFO,procinfo,-1
mov ecx,[ebx+30] ; PID mov ecx,[ebx+process_information.PID]
mcall 18,21 mcall SF_SYSTEM,SSF_GET_THREAD_SLOT
mov [active_process],eax ; WINDOW SLOT mov [active_process],eax ; WINDOW SLOT
mov ebx,[communication_area] mov ebx,[communication_area]
test ebx,ebx test ebx,ebx
@ -334,7 +327,7 @@ scroll_colors_history:
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
align 4 align 4
palette_button: palette_button:
mcall 37,1 mcall SF_MOUSE_GET,SSF_WINDOW_POSITION
and eax,0xffff and eax,0xffff
sub eax,p_start_y sub eax,p_start_y
imul eax,p_size_x imul eax,p_size_x
@ -351,7 +344,7 @@ palette_button:
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
align 4 align 4
tone_button: tone_button:
mcall 37,1 mcall SF_MOUSE_GET,SSF_WINDOW_POSITION
mov ebx,eax mov ebx,eax
and eax,0xffff and eax,0xffff
shr ebx,16 shr ebx,16
@ -382,12 +375,18 @@ align 4
prepare_scrollbars_position_from_color: prepare_scrollbars_position_from_color:
; in: eax = selected color ; in: eax = selected color
movzx ebx,al movzx ebx,al
inc bl
neg bl
mov [scroll_bar_data_blue.position],ebx mov [scroll_bar_data_blue.position],ebx
shr eax,8 shr eax,8
mov bl,al mov bl,al
inc bl
neg bl
mov [scroll_bar_data_green.position],ebx mov [scroll_bar_data_green.position],ebx
shr eax,8 shr eax,8
mov bl,al mov bl,al
inc bl
neg bl
mov [scroll_bar_data_red.position],ebx mov [scroll_bar_data_red.position],ebx
ret ret
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
@ -395,18 +394,35 @@ align 4
prepare_color_from_scrollbars_position: prepare_color_from_scrollbars_position:
; out: ebx = selected color ; out: ebx = selected color
mov eax,[scroll_bar_data_red.position] mov eax,[scroll_bar_data_red.position]
inc al
neg al
movzx ebx,al movzx ebx,al
shl ebx,8 shl ebx,8
mov eax,[scroll_bar_data_green.position] mov eax,[scroll_bar_data_green.position]
inc al
neg al
mov bl,al mov bl,al
shl ebx,8 shl ebx,8
mov eax,[scroll_bar_data_blue.position] mov eax,[scroll_bar_data_blue.position]
inc al
neg al
mov bl,al mov bl,al
ret ret
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
align 4 align 4
key: key:
mcall 2 mcall SF_GET_KEY
test word[edit1.flags],10b ;ed_focus
je still
stdcall [edit_box_key], edit1
stdcall conv_str_to_int, [edit1.text]
cmp [selected_color],eax
je still
mov [selected_color],eax
call prepare_scrollbars_position_from_color
;call draw_selected_color
mcall SF_DRAW_RECT,<c_start_x,c_size_x>,<c_start_y,c_size_y>,[selected_color]
call draw_scrollbars
jmp still jmp still
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
align 4 align 4
@ -420,27 +436,25 @@ mouse:
;-------------------------------------- ;--------------------------------------
align 4 align 4
.red: .red:
push dword scroll_bar_data_red stdcall [scrollbar_ver_mouse], scroll_bar_data_red
call [scrollbar_ver_mouse]
cmp [scroll_bar_data_red.delta2],0 cmp [scroll_bar_data_red.delta2],0
jne @f jne @f
;-------------------------------------- ;--------------------------------------
align 4 align 4
.green: .green:
push dword scroll_bar_data_green stdcall [scrollbar_ver_mouse], scroll_bar_data_green
call [scrollbar_ver_mouse]
cmp [scroll_bar_data_green.delta2],0 cmp [scroll_bar_data_green.delta2],0
jne @f jne @f
;-------------------------------------- ;--------------------------------------
align 4 align 4
.blue: .blue:
push dword scroll_bar_data_blue stdcall [scrollbar_ver_mouse], scroll_bar_data_blue
call [scrollbar_ver_mouse] cmp [scroll_bar_data_blue.delta2],0
; cmp [scroll_bar_data_blue.delta2],0 jne @f
; jne @f
;-------------------------------------- ;--------------------------------------
align 4 align 4
@@: @@:
stdcall [edit_box_mouse], edit1
call prepare_color_from_scrollbars_position call prepare_color_from_scrollbars_position
cmp [selected_color],ebx cmp [selected_color],ebx
je still je still
@ -450,11 +464,11 @@ align 4
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
align 4 align 4
draw_selected_color: draw_selected_color:
mcall 13,<c_start_x,c_size_x>,<c_start_y,c_size_y>,[selected_color] mcall SF_DRAW_RECT,<c_start_x,c_size_x>,<c_start_y,c_size_y>,[selected_color]
mcall 13,<c_start_x+c_size_x+10,c_size_x>,<c_start_y,c_size_y>,0xffffff stdcall hex_in_str, sz_0x+2,[selected_color],6
mov ecx,[selected_color] mov byte[sz_0x+8],0
and ecx,0xffffff stdcall [edit_box_set_text],edit1,sz_0x
mcall 47,0x00060100,,<c_start_x+c_size_x+13,c_start_y+(c_size_y-6)/2>,0 stdcall [edit_box_draw],edit1
ret ret
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
align 4 align 4
@ -465,37 +479,34 @@ create_and_draw_tone:
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
align 4 align 4
draw_tone: draw_tone:
mcall 65,[tone_area],<[tone_SIZE_X],[tone_SIZE_Y]>,<t_start_x,t_start_y>,24 mcall SF_PUT_IMAGE_EXT,[tone_area],<[tone_SIZE_X],[tone_SIZE_Y]>,<t_start_x,t_start_y>,24
ret ret
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
align 4
draw_scrollbars: draw_scrollbars:
push dword scroll_bar_data_red stdcall [scrollbar_ver_draw], scroll_bar_data_red
call [scrollbar_ver_draw] stdcall [scrollbar_ver_draw], scroll_bar_data_green
push dword scroll_bar_data_green stdcall [scrollbar_ver_draw], scroll_bar_data_blue
call [scrollbar_ver_draw]
push dword scroll_bar_data_blue
call [scrollbar_ver_draw]
ret ret
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
align 4 align 4
draw_history_frame: draw_history_frame:
mov [frame_data.x],dword (c_start_x+c_size_x*2+10*2)*65536+80 mov [frame_data.x],dword (c_start_x+c_size_x+ed_size_x+10*2)*65536+80
mov [frame_data.y],dword (p_start_y+5)*65536+(p_size_y-5) mov [frame_data.y],dword (p_start_y+5)*65536+(p_size_y-5)
mov [frame_data.draw_text_flag],dword 1 mov [frame_data.draw_text_flag],dword 1
mov [frame_data.text_pointer],dword history_text mov [frame_data.text_pointer],dword history_text
push dword frame_data stdcall [Frame_draw], frame_data
call [Frame_draw]
ret ret
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
align 4 align 4
draw_button_row: draw_button_row:
mov edx,0x60000000 + 30 ; BUTTON ROW mov edx,0x60000000 + 30 ; BUTTON ROW
; mov ebx,220*65536+14 ; mov ebx,220*65536+14
mov ebx,(c_start_x+c_size_x*2+10*3)*65536+14 mov ebx,(c_start_x+c_size_x+ed_size_x+10*3)*65536+14
mov ecx,25*65536+14 mov ecx,25*65536+14
mov eax,8 mov eax,SF_DEFINE_BUTTON
;----------------------------------- ;-----------------------------------
align 4 align 4
.newb: .newb:
@ -508,10 +519,12 @@ align 4
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
align 4 align 4
draw_color_value: draw_color_value:
mov ebx,(c_start_x+c_size_x*3+10)*65536+(c_size_x-1) movzx ebx,word[frame_data.x_start]
shl ebx,16
add ebx,(22 shl 16)+39
mov ecx,28*65536+11 mov ecx,28*65536+11
mov edx,0xffffff mov edx,0xffffff
mov eax,13 mov eax,SF_DRAW_RECT
mov edi,10 mov edi,10
mov esi,[communication_area] mov esi,[communication_area]
add esi,28 add esi,28
@ -520,14 +533,13 @@ align 4
@@: @@:
mcall mcall
pusha pusha
mov edx,ebx lea edx,[ebx+(2 shl 16)]
add edx,2 shl 16
shr ecx,16 shr ecx,16
mov dx,cx mov dx,cx
add dx,2 add dx,2
mov ecx,[esi] mov ecx,[esi]
and ecx,0xffffff and ecx,0xffffff
mcall 47,0x00060100,,,0 mcall SF_DRAW_NUMBER,0x00060100,,,0
popa popa
add ecx,24*65536 add ecx,24*65536
@ -543,9 +555,9 @@ draw_colours:
mov esi,[communication_area] mov esi,[communication_area]
add esi,28 add esi,28
; mov ebx,220*65536+14 ; mov ebx,220*65536+14
mov ebx,(c_start_x+c_size_x*2+10*3)*65536+14 mov ebx,(c_start_x+c_size_x+ed_size_x+10*3)*65536+14
mov ecx,27*65536+14 mov ecx,27*65536+14
mov eax,13 mov eax,SF_DRAW_RECT
mov [frame_data.draw_text_flag],dword 0 mov [frame_data.draw_text_flag],dword 0
;-------------------------------------- ;--------------------------------------
align 4 align 4
@ -563,8 +575,7 @@ newcol:
mov [frame_data.x],ebx mov [frame_data.x],ebx
mov [frame_data.y],ecx mov [frame_data.y],ecx
push dword frame_data stdcall [Frame_draw], frame_data
call [Frame_draw]
pop ecx ebx pop ecx ebx
@ -578,18 +589,18 @@ newcol:
;---------------------------------------------------------------------- ;----------------------------------------------------------------------
align 4 align 4
draw_window: draw_window:
mcall 12,1 mcall SF_REDRAW,SSF_BEGIN_DRAW
; mcall 0, <w_start_x,w_size_x>, <w_start_y,w_size_y>, 0x33AABBCC,,title ; mcall SF_CREATE_WINDOW, <w_start_x,w_size_x>, <w_start_y,w_size_y>, 0x33AABBCC,,title
xor esi,esi xor esi,esi
mcall 0,[window_x],[window_y], 0x34EEEeee,,title mcall SF_CREATE_WINDOW,[window_x],[window_y], 0x34EEEeee,,title
mcall 8,<p_start_x,[palette_SIZE_X]>,<p_start_y,[palette_SIZE_Y]>,0x60000002 mcall SF_DEFINE_BUTTON,<p_start_x,[palette_SIZE_X]>,<p_start_y,[palette_SIZE_Y]>,0x60000002
mcall ,<t_start_x,[tone_SIZE_X]>,<t_start_y,[tone_SIZE_Y]>,0x60000003 mcall ,<t_start_x,[tone_SIZE_X]>,<t_start_y,[tone_SIZE_Y]>,0x60000003
mcall ,<296,80>,<280,22>,4,0x37A4D4 mcall ,<296,80>,<280,22>,4,0x37A4D4
mcall ,<402,80>, ,1 mcall ,<402,80>, ,1
mcall 4,<332,289>,0x802C7B9E,OK_Cancel mcall SF_DRAW_TEXT,<332,289>,0x802C7B9E,OK_Cancel
mcall ,<331,288>,0x80FFFfff mcall ,<331,288>,0x80FFFfff
xor ebp,ebp xor ebp,ebp
mcall 65,[palette_area],<[palette_SIZE_X],[palette_SIZE_Y]>,<p_start_x,p_start_y>,24 mcall SF_PUT_IMAGE_EXT,[palette_area],<[palette_SIZE_X],[palette_SIZE_Y]>,<p_start_x,p_start_y>,24
call draw_tone call draw_tone
call draw_selected_color call draw_selected_color
xor eax,eax xor eax,eax
@ -602,9 +613,114 @@ draw_window:
call draw_button_row call draw_button_row
call draw_colours call draw_colours
call draw_color_value call draw_color_value
mcall 12,2 mcall SF_REDRAW,SSF_END_DRAW
ret ret
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
align 4
proc hex_in_str, buf:dword,val:dword,zif:dword
pushad
mov edi,[buf]
mov ecx,[zif]
add edi,ecx
dec edi
mov ebx,[val]
.cycle:
mov al,bl
and al,0xf
cmp al,10
jl @f
add al,'A'-'0'-10
@@:
add al,'0'
mov byte[edi],al
dec edi
shr ebx,4
loop .cycle
popad
ret
endp
;---------------------------------------------------------------------
;input:
; buf - указатель на строку, число должно быть в 10 или 16 ричном виде
;output:
; eax - число
align 4
proc conv_str_to_int uses ebx ecx esi, buf:dword
xor eax,eax
xor ebx,ebx
mov esi,[buf]
;на случай если перед числом находятся пробелы
@@:
cmp byte[esi],' '
jne @f
inc esi
jmp @b
@@:
;определение отрицательных чисел
xor ecx,ecx
inc ecx
cmp byte[esi],'-'
jne @f
dec ecx
inc esi
@@:
cmp word[esi],'0x'
je .load_digit_16
.load_digit_10: ;считывание 10-тичных цифр
mov bl,byte[esi]
cmp bl,'0'
jl @f
cmp bl,'9'
jg @f
sub bl,'0'
imul eax,10
add eax,ebx
inc esi
jmp .load_digit_10
jmp @f
.load_digit_16: ;считывание 16-ричных цифр
add esi,2
.cycle_16:
mov bl,byte[esi]
cmp bl,'0'
jl @f
cmp bl,'f'
jg @f
cmp bl,'9'
jle .us1
cmp bl,'A'
jl @f ;отсеиваем символы >'9' и <'A'
.us1: ;составное условие
cmp bl,'F'
jle .us2
cmp bl,'a'
jl @f ;отсеиваем символы >'F' и <'a'
sub bl,32 ;переводим символы в верхний регистр, для упрощения их последущей обработки
.us2: ;составное условие
sub bl,'0'
cmp bl,9
jle .cor1
sub bl,7 ;convert 'A' to '10'
.cor1:
shl eax,4
add eax,ebx
inc esi
jmp .cycle_16
@@:
cmp ecx,0 ;если число отрицательное
jne @f
sub ecx,eax
mov eax,ecx
@@:
ret
endp
;---------------------------------------------------------------------
include 'palette.inc' include 'palette.inc'
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
include 'tone.inc' include 'tone.inc'

View File

@ -4,7 +4,8 @@ title:
history_text: history_text:
db ' History: ',0 db ' History: ',0
communication_area dd param
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
align 4 align 4
window_x: window_x:
@ -32,10 +33,10 @@ Box_lib_import:
;init_lib dd a_init ;init_lib dd a_init
;version_lib dd a_version ;version_lib dd a_version
edit_box_draw dd aEdit_box_draw
;edit_box_draw dd aEdit_box_draw edit_box_key dd aEdit_box_key
;edit_box_key dd aEdit_box_key edit_box_mouse dd aEdit_box_mouse
;edit_box_mouse dd aEdit_box_mouse edit_box_set_text dd aEdit_box_set_text
;version_ed dd aVersion_ed ;version_ed dd aVersion_ed
;check_box_draw dd aCheck_box_draw ;check_box_draw dd aCheck_box_draw
@ -73,15 +74,15 @@ scrollbar_ver_mouse dd aScrollbar_ver_mouse
Frame_draw dd sz_Frame_draw Frame_draw dd sz_Frame_draw
;Version_frame dd szVersion_frame ;Version_frame dd szVersion_frame
dd 0 dd 0,0
dd 0
;a_init db 'lib_init',0 ;a_init db 'lib_init',0
;a_version db 'version',0 ;a_version db 'version',0
;aEdit_box_draw db 'edit_box',0 aEdit_box_draw db 'edit_box',0
;aEdit_box_key db 'edit_box_key',0 aEdit_box_key db 'edit_box_key',0
;aEdit_box_mouse db 'edit_box_mouse',0 aEdit_box_mouse db 'edit_box_mouse',0
aEdit_box_set_text db 'edit_box_set_text',0
;aVersion_ed db 'version_ed',0 ;aVersion_ed db 'version_ed',0
;aCheck_box_draw db 'check_box_draw',0 ;aCheck_box_draw db 'check_box_draw',0
@ -239,4 +240,9 @@ frame_data:
.font_color dd 0x0 ;+40 .font_color dd 0x0 ;+40
.font_backgr_color dd 0xEEEeee ;+44 .font_backgr_color dd 0xEEEeee ;+44
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
mouse_dd dd edit1
edit1 edit_box ed_size_x, c_start_x+c_size_x+10, c_start_y, 0xffffff, 0xa0a0a0, 0xff, 0, 0, 8, string1, mouse_dd, 0
sz_0x db '0x______',0,0
string1 rb 10
;---------------------------------------------------------------------
OK_Cancel db 'OK Cancel',0 OK_Cancel db 'OK Cancel',0

View File

@ -5,7 +5,6 @@ tone_area rd 1
part_of_size_y rd 1 part_of_size_y rd 1
active_process rd 1 active_process rd 1
;color_dialog_type rd 1 ;color_dialog_type rd 1
communication_area rd 1
;-------------------------------------- ;--------------------------------------
offset_y: offset_y:
.red rd 1 .red rd 1
@ -36,20 +35,10 @@ tone_SIZE_Y rd 1
tone_SIZE_X rd 1 tone_SIZE_X rd 1
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
align 4 align 4
procinfo: procinfo rb 1024
rb 1024 param rb 256
;--------------------------------------------------------------------- path rb 4096
align 4 file_name rb 4096
param:
rb 256
;---------------------------------------------------------------------
align 4
path:
rb 4096
;---------------------------------------------------------------------
align 4
file_name:
rb 4096
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
align 4 align 4
rb 4096 rb 4096