19,6 → 19,8 |
|
include '../../develop/libraries/box_lib/load_lib.mac' |
include '../../develop/libraries/box_lib/trunk/box_lib.mac' |
include '../../develop/libraries/box_lib/asm/trunk/opendial.mac' |
use_OpenDialog |
|
min_window_w equ 485 ;¬¨¨¬ «ì ï è¨à¨ ®ª |
min_window_h equ 325 ;¬¨¨¬ «ì ï ¢ëá®â ®ª |
109,19 → 111,16 |
stdcall dword[tl_node_add], txt_tile_type_0, 0, tree1 |
|
; init bmp file |
push dword RGB_TILE_SIZE+300 ;300 - § ¯ áë¥ ¡ ©âë á ãç¥â®¬ § £®«®¢ª bmp ä ©« |
call mem.Alloc |
stdcall mem.Alloc, dword RGB_TILE_SIZE+300 ;300 - § ¯ áë¥ ¡ ©âë á ãç¥â®¬ § £®«®¢ª bmp ä ©« |
mov [bmp_icon],eax |
|
stdcall array_tile_function, tile_00,max_tiles_count,tile_init |
stdcall tiles_init_grid, tile_00,max_tiles_count,max_tiles_cols |
|
push dword TREE_ICON_SYS16_BMP_SIZE |
call mem.Alloc |
stdcall mem.Alloc, dword TREE_ICON_SYS16_BMP_SIZE |
mov [tree_sys_icon],eax |
|
push dword TREE_ICON_NOD16_BMP_SIZE |
call mem.Alloc |
stdcall mem.Alloc, dword TREE_ICON_NOD16_BMP_SIZE |
mov [tree_nod_icon],eax |
|
copy_path fn_icon1,sys_path,file_name,0x0 |
173,10 → 172,15 |
|
mov byte[file_name],0 |
|
; OpenDialog initialisation |
init_OpenDialog OpenDialog_data |
|
align 4 |
red_win: |
call draw_win |
call draw_window |
call but_MetLoad |
|
align 4 |
still: |
mov eax,10 |
mcall |
201,6 → 205,7 |
|
jmp still |
|
align 4 |
key: |
push eax ebx |
mcall 2 |
212,13 → 217,13 |
push dword tree2 |
call [tl_key] |
|
mov ebx,dword[el_focus] ;÷òî-áû êàðòà íå äâèãàëàñü åñëè îêíà treelist â ôîêóñå |
mov ebx,dword[el_focus] ;çâ®-¡ë ª àâ ¥ ¤¢¨£ « áì ¥á«¨ ®ª treelist ¢ 䮪ãᥠ|
cmp ebx, dword tree1 |
je .end_f |
cmp ebx, dword tree2 |
je .end_f |
|
;÷òî-áû êàðòà íå äâèãàëàñü åñëè òåêñòîâûå ïîëÿ â ôîêóñå |
;çâ®-¡ë ª àâ ¥ ¤¢¨£ « áì ¥á«¨ ⥪áâ®¢ë¥ ¯®«ï ¢ 䮪ãᥠ|
test word[edit1.flags],10b ;ed_focus |
jne .end_f |
test word[edit2.flags],10b ;ed_focus |
266,7 → 271,7 |
|
|
align 4 |
draw_win: |
draw_window: |
pushad |
mcall 12,1 |
|
301,8 → 306,7 |
stdcall dword[tl_draw],dword tree1 |
stdcall dword[tl_draw],dword tree2 |
mov dword[wScrMetki.all_redraw],1 |
push dword wScrMetki |
call [scrollbar_ver_draw] |
stdcall [scrollbar_ver_draw], dword wScrMetki |
|
mov eax,8 ;ª®¯ª |
mov ebx,145*65536+20 |
316,6 → 320,11 |
mov edx,5 |
int 0x40 |
|
mov ebx,170*65536+40 ;ª®¯ª ¢ë§®¢ ¤¨ «®£ OpenDial |
;mov ecx,5*65536+25 |
mov edx,13 |
int 0x40 |
|
mov bx,di |
shl ebx,16 |
mov bx,100 |
351,7 → 360,7 |
shl ebx,16 |
mov bx,30 |
;mov ebx,405*65536+30 |
mov ecx,265*65536+25 |
;mov ecx,265*65536+25 |
mov edx,11 |
int 0x40 |
|
360,7 → 369,7 |
shl ebx,16 |
mov bx,30 |
;mov ebx,370*65536+30 |
mov ecx,265*65536+25 |
;mov ecx,265*65536+25 |
mov edx,10 |
int 0x40 |
|
446,11 → 455,8 |
|
call draw_tiles |
|
push dword ch2 |
call [check_box_draw] |
push dword ch1 |
call [check_box_draw] |
|
stdcall [check_box_draw], dword ch1 |
stdcall [check_box_draw], dword ch2 |
stdcall [edit_box_draw], edit1 |
stdcall [edit_box_draw], edit2 |
|
522,6 → 528,10 |
jne @f |
call fun_goto_met |
@@: |
cmp ah,13 ;¤¨ «®£ OpenDialog ¤«ï ¯®¨áª ¯ ¯ª¨ |
jne @f |
call fun_opn_dlg |
@@: |
cmp ah,1 |
jne still |
|
531,10 → 541,10 |
stdcall array_tile_function, tile_00,max_tiles_count,tile_destroy |
|
stdcall dword[tl_data_clear], tree1 |
mov dword[tree2.data_img_sys],0 ;÷èñòèì óêàçàòåëü íà ñèñòåìíûå èêîíêè, |
;ò. ê. îíè áûëè óäàëåíû âåðõíåé ôóíêöèåé tl_data_clear |
;ïîâòîðíûé âûçîâ tl_data_clear áåç ÷èñòêè óêàçàòåëÿ âûçâåò îøèáêó |
mov dword[tree2.data_img],0 ;÷èñòèì óêàçàòåëü íà èêîíêè óçëîâ |
mov dword[tree2.data_img_sys],0 ;ç¨á⨬ 㪠§ ⥫ì á¨áâ¥¬ë¥ ¨ª®ª¨, |
;â. ª. ®¨ ¡ë«¨ 㤠«¥ë ¢¥à奩 äãªæ¨¥© tl_data_clear |
;¯®¢â®àë© ¢ë§®¢ tl_data_clear ¡¥§ ç¨á⪨ 㪠§ â¥«ï ¢ë§¢¥â ®è¨¡ªã |
mov dword[tree2.data_img],0 ;ç¨á⨬ 㪠§ â¥«ì ¨ª®ª¨ 㧫®¢ |
stdcall dword[tl_data_clear], tree2 |
|
; stdcall dword[img_destroy], dword[data_icon] |
550,7 → 560,7 |
mov eax,dword[data_rgb] |
mov ecx,dword[size] ;ecx = size |
imul ecx,3 |
@@: ;çàòåìíåíèå öâåòà ïèêñåëåé |
@@: ;§ ⥬¥¨¥ 梥⠯¨ªá¥«¥© |
shr byte[eax],1 |
and byte[eax],0x7f |
inc eax |
559,8 → 569,8 |
mov eax,dword[data_rgb] |
mov ecx,dword[size] ;ecx = size |
shr ecx,1 |
@@: ;ñëîæåíèå öâåòîâ ïèêñåëåé |
mov ebx,dword[eax+3] ;êîïèðóåì öâåò ñîñåäíåãî ïèêñåëÿ |
@@: ;á«®¦¥¨¥ 梥⮢ ¯¨ªá¥«¥© |
mov ebx,dword[eax+3] ;ª®¯¨à㥬 梥â á®á¥¤¥£® ¯¨ªá¥«ï |
add word[eax],bx |
shr ebx,16 |
add byte[eax+2],bl |
574,8 → 584,8 |
add ebx,3 |
mov ecx,dword[size] ;ecx = size |
shr ecx,1 |
dec ecx ;ëèøíèé ïèêñåëü |
@@: ;ïîäæàòèå ïèêñåëåé |
dec ecx ;«¨è¨© ¯¨ªá¥«ì |
@@: ;¯®¤¦ ⨥ ¯¨ªá¥«¥© |
mov edx,dword[ebx] |
mov word[eax],dx |
shr edx,16 |
600,7 → 610,7 |
mov eax,dword[data_rgb] ;eax = |
mov ecx,dword[size] ;ecx = size |
imul ecx,3 |
@@: ;çàòåìíåíèå öâåòà ïèêñåëåé |
@@: ;§ ⥬¥¨¥ 梥⠯¨ªá¥«¥© |
shr byte[eax],1 |
and byte[eax],0x7f |
inc eax |
614,8 → 624,8 |
mov ecx,dword[size] ;ecx = size |
shr ecx,1 |
xor edi,edi |
@@: ;ñëîæåíèå öâåòîâ ïèêñåëåé |
mov edx,dword[ebx] ;êîïèðóåì öâåò íèæíåãî ïèêñåëÿ |
@@: ;á«®¦¥¨¥ 梥⮢ ¯¨ªá¥«¥© |
mov edx,dword[ebx] ;ª®¯¨à㥬 梥⠨¦¥£® ¯¨ªá¥«ï |
add word[eax],dx |
shr edx,16 |
add byte[eax+2],dl |
638,10 → 648,10 |
add ebx,eax |
mov ecx,dword[size] ;ecx = size |
shr ecx,1 |
sub ecx,dword[size_w] ;ëèøíÿÿ ñòðîêà ïèêñåëåé |
sub ecx,dword[size_w] ;«¨èïï áâப ¯¨ªá¥«¥© |
xor edi,edi |
@@: ;ïîäæàòèå ïèêñåëåé |
mov edx,dword[ebx] ;êîïèðóåì öâåò íèæíåãî ïèêñåëÿ |
@@: ;¯®¤¦ ⨥ ¯¨ªá¥«¥© |
mov edx,dword[ebx] ;ª®¯¨à㥬 梥⠨¦¥£® ¯¨ªá¥«ï |
mov word[eax],dx |
shr edx,16 |
mov byte[eax+2],dl |
835,6 → 845,24 |
ret |
endp |
|
align 4 |
fun_opn_dlg: ;äãªæ¨ï ¤«ï ¢ë§®¢ OpenFile ¤¨ «®£ |
pushad |
copy_path open_dialog_name,sys_path,file_name,0 |
mov [OpenDialog_data.type],2 |
mov dword[plugin_path],0 ;çâ®-¡ë ¯à¨ ®âªàë⨨ ¤¨ «®£®¢®£® ®ª ¯ãâì ¢á¥£¤ ¡à «áï ¨§ OpenDialog_data.dir_default_path |
start_OpenDialog OpenDialog_data |
cmp [OpenDialog_data.status],2 |
je @f |
mov esi,[OpenDialog_data.openfile_path] |
stdcall [str_len],dword[edit1.text],dword[edit1.max] |
mov [edit1.size],eax |
mov [edit1.pos],eax |
stdcall [edit_box_draw], edit1 |
@@: |
popad |
ret |
|
txt_met_up db 24,0 |
txt_met_dn db 25,0 |
txt_met_sh db '*',0 |
855,7 → 883,7 |
ch_text1 db '¡à âì ᢥàåã' |
ch_text2 db '¡à âì ᨧã' |
|
edit1 edit_box 190, 215, 10, 0xd0ffff, 0xff, 0x80ff, 0, 0xa000, 500, ed_buffer.1, mouse_dd, 0 |
edit1 edit_box 190, 215, 10, 0xd0ffff, 0xff, 0x80ff, 0, 0xa000, 4090, openfile_path, mouse_dd, 0 |
edit2 edit_box 100, 370, 240, 0xd0ffff, 0xff, 0x80ff, 0, 0xa000, 30, ed_buffer.2, mouse_dd, 0 |
editboxes_end: |
|
901,7 → 929,6 |
.ar_offset dd 1 ;+84 |
|
ed_buffer: ;òåêñò äëÿ edit |
.1: rb 502 |
.2: rb 32 |
|
el_focus dd tree1 |
917,20 → 944,50 |
|
txt_tile_path db 'tile path',0 |
rb 300 |
txt_tile_type dd txt_tile_type_0 ;óêàçàòåëü íà âûáðàííûé òèï ôàéëîâ |
txt_tile_type dd txt_tile_type_0 ;㪠§ â¥«ì ¢ë¡à ë© â¨¯ ä ©«®¢ |
txt_tile_type_0 db 0 |
rb 10 |
|
;--------------------------------------------------------------------- |
align 4 |
map: ;êîîðäèíàòû êàðòû |
.coord_x dd 0 ;êîîðäèíàòà x |
.coord_y dd 0 ;êîîðäèíàòà y |
.zoom db 1 ;ìàñøòàá |
OpenDialog_data: |
.type dd 2 |
.procinfo dd procinfo ;+4 |
.com_area_name dd communication_area_name ;+8 |
.com_area dd 0 ;+12 |
.opendir_path dd plugin_path ;+16 |
.dir_default_path dd openfile_path ;+20 |
.start_path dd file_name ;+24 ¯ãâì ª ¤¨ «®£ã ®âªàëâ¨ï ä ©«®¢ |
.draw_window dd draw_window ;+28 |
.status dd 0 ;+32 |
.openfile_path dd openfile_path ;+36 ¯ãâì ª ®âªàë¢ ¥¬®¬ã ä ©«ã |
.filename_area dd filename_area ;+40 |
.filter_area dd Filter |
|
communication_area_name: |
db 'FFFFFFFF_open_dialog',0 |
open_dialog_name: |
db 'opendial',0 |
communication_area_default_path: |
db '/rd/1',0 |
|
Filter: |
dd Filter.end - Filter.1 |
.1: |
db 'TXT',0 |
.end: |
db 0 |
|
align 4 |
map: ;ª®®à¤¨ âë ª àâë |
.coord_x dd 0 ;ª®®à¤¨ â x |
.coord_y dd 0 ;ª®®à¤¨ â y |
.zoom db 1 ;¬ áèâ ¡ |
|
align 4 |
tile_00 rb size_tile_struc * max_tiles_count |
|
;ýòîò êîä íå ìîé, îí ïðåîáðàçóåò ÷èñëî â ñòðîêó |
;íâ®â ª®¤ ¥ ¬®©, ® ¯à¥®¡à §ã¥â ç¨á«® ¢ áâபã |
;input: |
; eax = value |
; edi = string buffer |
946,32 → 1003,39 |
|
align 4 |
.str: |
mov ecx,0x0a ;çàäàåòñÿ ñèñòåìà ñ÷èñëåíèÿ èçìåíÿþòñÿ ðåãèñòðû ebx,eax,ecx,edx âõîäíûå ïàðàìåòðû eax - ÷èñëî |
;ïðåðåâîä ÷èñëà â ASCII ñòðîêó âçîäíûå äàííûå ecx=ñèñòåìà ñ÷èñëåíÿ edi àäðåñ êóäà çàïèñûâàòü, áóäåì ñòðîêó, ïðè÷åì êîíåö ïåðåìåííîé |
cmp eax,ecx ;ñðàâíèòü åñëè â eax ìåíüøå ÷åì â ecx òî ïåðåéòè íà @@-1 ò.å. íà pop eax |
mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬ áç¨á«¥¨ï ¨§¬¥ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤ë¥ ¯ à ¬¥âàë eax - ç¨á«® |
;¯à¥à¥¢®¤ ç¨á« ¢ ASCII áâப㠢§®¤ë¥ ¤ ë¥ ecx=á¨á⥬ áç¨á«¥ï edi ¤à¥á ªã¤ § ¯¨áë¢ âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®¥æ ¯¥à¥¬¥®© |
cmp eax,ecx ;áà ¢¨âì ¥á«¨ ¢ eax ¬¥ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ @@-1 â.¥. pop eax |
jb @f |
xor edx,edx ;î÷èñòèòü edx |
div ecx ;ðàçäåëèòü - îñòàòîê â edx |
push edx ;ïîëîæèòü â ñòåê |
;dec edi ;ñìåùåíèå íåîáõîäèìîå äëÿ çàïèñè ñ êîíöà ñòðîêè |
call .str;ïåðåéòè íà ñàìó ñåáÿ ò.å. âûçâàòü ñàìó ñåáÿ è òàê äî òîãî ìîìåíòà ïîêà â eax íå ñòàíåò ìåíüøå ÷åì â ecx |
xor edx,edx ;®ç¨áâ¨âì edx |
div ecx ;à §¤¥«¨âì - ®áâ ⮪ ¢ edx |
push edx ;¯®«®¦¨âì ¢ á⥪ |
;dec edi ;ᬥ饨¥ ¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®æ áâப¨ |
call .str;¯¥à¥©â¨ á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥â ¯®ª ¢ eax ¥ á⠥⠬¥ìè¥ ç¥¬ ¢ ecx |
pop eax |
@@: ;cmp al,10 ;ïðîâåðèòü íå ìåíüøå ëè çíà÷åíèå â al ÷åì 10 (äëÿ ñèñòåìû ñ÷èñëåíÿ 10 äàííàÿ êîìàíäà - ëèøíàÿ)) |
or al,0x30 ;äàííàÿ êîìàíäà êîðî÷å ÷åì äâå âûøå |
stosb ;çàïèñàòü ýëåìåíò èç ðåãèñòðà al â ÿ÷åêó ïàìÿòè es:edi |
ret ;âåðíóòüñÿ ÷åíü èíòåðåñíûé õîä ò.ê. ïîêà â ñòåêå õðàíèòüñÿ êîë-âî âûçîâîâ òî ñòîëüêî ðàç ìû è áóäåì âûçûâàòüñÿ |
@@: ;cmp al,10 ;¯à®¢¥à¨âì ¥ ¬¥ìè¥ «¨ § 票¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥ï 10 ¤ ï ª®¬ ¤ - «¨è ï)) |
or al,0x30 ;¤ ï ª®¬ ¤ ª®à®ç¥ 祬 ¤¢¥ ¢ëè¥ |
stosb ;§ ¯¨á âì í«¥¬¥â ¨§ ॣ¨áâà al ¢ ï祪㠯 ¬ï⨠es:edi |
ret ;¢¥àãâìáï ç¥ì ¨â¥à¥áë© å®¤ â.ª. ¯®ª ¢ á⥪¥ åà ¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï |
|
|
hed db 'Planet viewer 26.03.10',0 ;¯®¤¯¨áì ®ª |
hed db 'Planet viewer 27.05.10',0 ;¯®¤¯¨áì ®ª |
|
sc system_colors ;á¨áâ¥¬ë¥ æ¢¥â |
mouse_dd dd 0 ;㦮 ¤«ï Shift- ¢ editbox |
i_end: |
rb 1024 |
align 16 |
procinfo process_information |
stacktop: |
sys_path rb 4096 |
file_name: |
rb 4096 |
i_end: |
procinfo process_information |
rb 1024 |
stacktop: |
plugin_path: |
rb 4096 |
openfile_path: |
rb 4096 |
filename_area: |
rb 256 |
mem: |
|