/programs/develop/info3ds/data.inc |
---|
1,7 → 1,7 |
if lang eq ru |
capt db 'info 3ds ¢¥àá¨ï 30.08.11',0 ;¯®¤¯¨áì ®ª |
capt db 'info 3ds ¢¥àá¨ï 09.09.11',0 ;¯®¤¯¨áì ®ª |
else |
capt db 'info 3ds version 30.08.11',0 ;window caption |
capt db 'info 3ds version 09.09.11',0 ;window caption |
end if |
MAX_FILE_LEVEL equ 20 ;¬ ªá¨¬ «ìë© ã஢¥ì ¢«®¦¥®á⨠¡«®ª®¢ ¤«ï «¨§ |
/programs/develop/info3ds/doc/i3d_110823.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/develop/info3ds/doc/i3d_110909.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/develop/info3ds/doc/readme.htm |
---|
0,0 → 1,55 |
<html> |
<head> |
<title>Info 3ds</title> |
<meta http-equiv="content-type" content="text/html; charset=WINDOWS-1251"> |
<style> |
body |
{ |
font-size: 15px; |
font-family: "Bookman Old Style"; |
color: black; |
text-align: justify; |
width: 750px; |
} |
h1 { |
color: white; |
background-color: 808080; |
font-size: 25px; |
text-align: center; |
} |
h2 { color: green; font-size: 21px; } |
h3 { color: green; font-size: 19px; } |
h4 { color: #803f00; font-size: 17px; } |
i { color: #0099cc; } |
b { color: #0099cc; } |
p { |
text-indent: 2em; |
margin-top: 3px; |
margin-bottom: 2px; |
margin-left: 0px; |
margin-right: 0px; |
} |
ol, ul, dl{ |
margin-top: 3px; |
margin-bottom: 2px; |
} |
</style> |
</head> |
<body> |
<h1>Info 3ds</h1> |
<p><b>Info3ds</b> - ïðîãðàììà ïðîñìîòðà ñòðóêòóðû ôàéëîâ ôîðìàòà <b>*.3ds</b>. Âñå ôàéëû <b>*.3ds</b> ñîñòîÿò èç îïðåäåëåííûõ áëîêîâ, â êîòîðûõ íàõîäèòñÿ èíôîðìàöèÿ î îáúåêòàõ ñöåíû.  ïðîãðàììå ñëåâà â âèäå äåðåâà ïîêàçàíà ñòðóêòóðà áëîêîâ â ôàéëå, à ñïðàâà âûáðàííûé áëîê ïîêàçûâàåòñÿ â øåñòíàäöàòåðè÷íîì âèäå. Äëÿ ïðîñìîòðà ýòèõ ôàéëîâ â 3-õ ìåðíîì âèäå èñïîëüçóéòå ïðîãðàììó <i>View3ds</i>.</p> |
<img src="i3d_110823.png"> |
<p>Ðèñ. 1. Âíåøíèé âèä ïðîãðàììû</p> |
<p>Êîîðäèíàòû âåðøèí îáúåêòà ìîæíî ïðîñìàòðèâàòü â âèäå äðîáíûõ ÷èñåë. Äëÿ ïðîñìîòðà êîîðäèíàò íóæíî (ñì. ðèñ. 2):</p> |
<p>1) âåäåëèòü áëîê ñ êîäîì <b>4110</b> (â ðóññêîé âåðñèè ïîäïèñàí êàê <b>Ñïèñîê âåðøèí</b>),</p> |
<p>2) íàæàòü êíîïêó íà ïàíåëè èíñòðóìåíòîâ.</p> |
<img src="i3d_110909.png"> |
<p>Ðèñ. 2. Ïðîñìîòð êîîðäèíàò âåðøèí îáúåêòà</p> |
<h2>Àâòîð</h2> |
<p>IgorA</p> |
</body> |
</html> |
/programs/develop/info3ds/doc |
---|
Property changes: |
Added: bugtraq:number |
+true |
\ No newline at end of property |
Added: tsvn:logminsize |
+5 |
\ No newline at end of property |
/programs/develop/info3ds/info3ds.asm |
---|
16,6 → 16,7 |
include 'mem.inc' |
include 'dll.inc' |
include 'lang.inc' |
include 'info_fun_float.inc' |
debug equ 0 |
112,6 → 113,7 |
txt_3ds_symb db 0,0 |
;-------------------------------------- |
include 'info_wnd_coords.inc' |
align 4 |
start: |
361,6 → 363,10 |
;mov edx,5 |
;int 0x40 |
mov ebx,(85 shl 16)+20 |
mov ecx,(5 shl 16)+20 |
mov edx,6 ;®ª® á ª®®à¤¨ â ¬¨ |
int 0x40 |
mov eax,7 |
mov ebx,[image_data_toolbar] |
407,6 → 413,10 |
jne @f |
call but_save_file |
@@: |
cmp ah,6 |
jne @f |
call but_wnd_coords |
@@: |
cmp ah,1 |
jne still |
808,6 → 818,15 |
end if |
ret |
align 4 |
but_wnd_coords: |
cmp byte[prop_wnd_run],0 |
jne @f |
pushad |
mcall 51,1,prop_start,thread_coords |
popad |
@@: |
ret |
;input: |
1223,6 → 1242,8 |
i_end: |
rb 1024 |
thread_coords: |
rb 1024 |
stacktop: |
sys_path rb 1024 |
file_name: |
/programs/develop/info3ds/info_fun_float.inc |
---|
0,0 → 1,324 |
; |
; äãªæ¨¨ ¤«ï à ¡®âë á ç¨á« ¬¨ float |
; |
; ®«¨ç¥á⢮ § ª®¢ ç¨á« ¯®á«¥ § ¯ï⮩ (1-17) |
NumberSymbolsAD DW 5 |
; ®áâ âë (10 ¢ á⥯¥¨ N) |
MConst DQ 1.0E1,1.0E2,1.0E3,1.0E4,1.0E5 |
DQ 1.0E6,1.0E7,1.0E8,1.0E9,1.0E10 |
DQ 1.0E11,1.0E12,1.0E13,1.0E14,1.0E15 |
DQ 1.0E16,1.0E17,1.0E18,1.0E19,1.0E20 |
DQ 1.0E21,1.0E22,1.0E23,1.0E24,1.0E25 |
DQ 1.0E26,1.0E27,1.0E28,1.0E29,1.0E30 |
DQ 1.0E31,1.0E32,1.0E33,1.0E34,1.0E35 |
DQ 1.0E36,1.0E37,1.0E38,1.0E39,1.0E40 |
DQ 1.0E41,1.0E42,1.0E43,1.0E44,1.0E45 |
DQ 1.0E46,1.0E47,1.0E48,1.0E49,1.0E50 |
DQ 1.0E51,1.0E52,1.0E53,1.0E54,1.0E55 |
DQ 1.0E56,1.0E57,1.0E58,1.0E59,1.0E60 |
DQ 1.0E61,1.0E62,1.0E63,1.0E64,1.0E65 |
DQ 1.0E66,1.0E67,1.0E68,1.0E69,1.0E70 |
DQ 1.0E71,1.0E72,1.0E73,1.0E74,1.0E75 |
DQ 1.0E76,1.0E77,1.0E78,1.0E79,1.0E80 |
DQ 1.0E81,1.0E82,1.0E83,1.0E84,1.0E85 |
DQ 1.0E86,1.0E87,1.0E88,1.0E89,1.0E90 |
DQ 1.0E91,1.0E92,1.0E93,1.0E94,1.0E95 |
DQ 1.0E96,1.0E97,1.0E98,1.0E99,1.0E100 |
DQ 1.0E101,1.0E102,1.0E103,1.0E104,1.0E105 |
DQ 1.0E106,1.0E107,1.0E108,1.0E109,1.0E110 |
DQ 1.0E111,1.0E112,1.0E113,1.0E114,1.0E115 |
DQ 1.0E116,1.0E117,1.0E118,1.0E119,1.0E120 |
DQ 1.0E121,1.0E122,1.0E123,1.0E124,1.0E125 |
DQ 1.0E126,1.0E127,1.0E128 |
; ¨á«® á ¯« ¢ î饩 § ¯ï⮩ ¤¢®©®© â®ç®á⨠|
Data_Double DQ ? |
; ¨á«® ¢ BCD-ä®à¬ ⥠|
Data_BCD DT ? |
; ᯮ¬®£ ⥫ìë© ä« £ |
Data_Flag DB ? |
; ª १ã«ìâ â (¥á«¨ ¥ 0 - ®âà¨æ ⥫쮥 ç¨á«®) |
Data_Sign DB ? |
db 0 ;㪠§ ⥫ì ᤢ¨£ ¢ ¯ ¬ï⨠|
; âப ¤«ï åà ¥¨ï ç¨á« ¢ ª®¤¥ ASCII |
Data_String DB 32 DUP (?) |
;******************************************************* |
;* * |
;* ¨á«® ¨¬¥¥â ä®à¬ â á 㤢®¥®© â®ç®áâìî, १ã«ìâ â * |
;* ¢ë¤ ¥âáï ¢ ¤¥áïâ¨ç®¬ ª®¤¥, ¢ "¡ë⮢®¬" ä®à¬ ⥠á * |
;* 䨪á¨à®¢ ë¬ ª®«¨ç¥á⢮¬ § ª®¢ ¯®á«¥ § ¯ï⮩. * |
;* å®¤ë¥ ¯ à ¬¥âàë: * |
;* Data_Double - ¯à¥®¡à §ã¥¬®¥ ç¨á«®; * |
;* NumberSymbolsAD - ª®«¨ç¥á⢮ § ª®¢ ¯®á«¥ * |
;* § ¯ï⮩ (0-17). * |
;* ëå®¤ë¥ ¯ à ¬¥âàë: * |
;* Data_String - áâப -१ã«ìâ â. * |
;******************************************************* |
DoubleFloat_to_String: |
pushad |
; ¥§ã«ìâ â § ¯¨áë¢ âì ¢ áâபã Data_String |
mov EDI, Data_String |
; ¤¢¨£ ¥¬ ç¨á«® ¢«¥¢® NumberSymbolsAD |
; ¤¥áïâ¨çëå à §à冷¢ |
fninit ;á¡à®á ᮯà®æ¥áá®à |
fld [Data_Double] ;§ £à㧨âì ç¨á«® |
xor ebx,ebx |
mov BX,[NumberSymbolsAD] |
cmp BX, 0 |
je .NoShifts ;¥â æ¨äà ¯®á«¥ § ¯ï⮩ |
jl .Error ;®è¨¡ª |
dec BX |
shl BX, 3 ;㬮¦ ¥¬ 8 |
add EBX, MConst |
fmul qword [EBX] ;㬮¦¨âì ª®áâ âã |
.NoShifts: |
; §¢«¥çì ç¨á«® ¢ ª®¤¥ BCD |
fbstp [Data_BCD] |
; ஢¥à¨âì १ã«ìâ â ¯¥à¥¯®«¥¨¥ |
mov AX,word [Data_BCD + 8] |
cmp AX,0FFFFh ;"¤¥áïâ¨ç®¥" ¯¥à¥¯®«¥¨¥? |
je .Overflow |
; 뤥«¨âì § ª ç¨á« ¨ § ¯¨á âì ¥£® ¢ ASCII-ª®¤¥ |
mov AL, byte [Data_BCD + 9] |
and AL,AL |
jz .NoSign |
mov AL,'-' |
stosb |
.NoSign: |
; ᯠª®¢ âì ç¨á«® ¢ ª®¤ ASCII |
mov BX,8 ;ᬥ饨¥ ¯®á«¥¤¥© ¯ àë æ¨äà |
mov ecx,9 ;áç¥â稪 ¯ à æ¨äà |
; ¯à¥¤¥«¨âì ¯®§¨æ¨î ¤¥áïâ¨ç®© â®çª¨ ¢ ç¨á«¥ |
mov DX,18 |
sub DX,[NumberSymbolsAD] |
js .Error ;®è¨¡ª , ¥á«¨ ®âà¨æ ⥫ì ï |
jz .Error ;¨«¨ ã«¥¢ ï ¯®§¨æ¨ï |
.NextPair: |
; £à㧨âì ®ç¥à¥¤ãî ¯ àã à §à冷¢ |
mov AL, byte [BX + Data_BCD] |
mov AH,AL |
; 뤥«¨âì, ¯¥à¥¢¥á⨠¢ ASCII ¨ |
; á®åà ¨âì áâ àèãî â¥âà ¤ã |
shr AL,4 |
add AL,'0' |
stosb |
dec DX |
jnz .N0 |
mov AL,'.' |
stosb |
.N0: ; 뤥«¨âì, ¯¥à¥¢¥á⨠¢ ASCII ¨ |
; á®åà ¨âì ¬« ¤èãî â¥âà ¤ã |
mov AL,AH |
and AL,0Fh |
add AL,'0' |
stosb |
dec DX |
jnz .N1 |
mov AL,'.' |
stosb |
.N1: |
dec BX |
loop .NextPair |
mov AL,0 |
stosb |
; ¡à âì ¥§ ç 騥 㫨 á«¥¢ |
mov EDI, Data_String |
mov ESI, Data_String |
; யãáâ¨âì § ª ç¨á« , ¥á«¨ ® ¥áâì |
cmp byte [ESI],'-' |
jne .N2 |
inc ESI |
inc EDI |
.N2: ; £à㧨âì ¢ áç¥â稪 横« ª®«¨ç¥á⢮ à §à冷¢ |
; ç¨á« ¯«îá 1 (¡ ©â ¤¥áïâ¨ç®© â®çª¨) |
mov ecx,18+1+1 |
; யãáâ¨âì ¥§ ç 騥 㫨 |
.N3: |
cmp byte [ESI],'0' |
jne .N4 |
cmp byte [ESI+1],'.' |
je .N4 |
inc ESI |
loop .N3 |
; 訡ª - ¥â § ç é¨å æ¨äà |
jmp .Error |
; ª®¯¨à®¢ âì § ç éãî ç áâì ç¨á« ¢ ç «® áâப¨ |
.N4: rep movsb |
jmp .End |
; 訡ª |
.Error: |
mov AL,'E' |
stosb |
mov AL,'R' |
stosb |
mov AL,'R' |
stosb |
xor AL,AL |
stosb |
jmp .End |
; ¥à¥¯®«¥¨¥ à §à冷© á¥âª¨ |
.Overflow: |
mov AL,'#' |
stosb |
xor AL,AL |
stosb |
; ®¥æ ¯à®æ¥¤ãàë |
.End: |
popad |
ret |
;**************************************************** |
;* * |
;* (ç¨á«® ¨¬¥¥â ®¡ëçë©, "¡ë⮢®©" ä®à¬ â) * |
;* å®¤ë¥ ¯ à ¬¥âàë: * |
;* Data_String - ç¨á«® ¢ ª®¤¥ ASCII. * |
;* ëå®¤ë¥ ¯ à ¬¥âàë: * |
;* Data_Double - ç¨á«® ¢ ¤¢®¨ç®¬ ª®¤¥. * |
;**************************************************** |
String_to_DoubleFloat: |
pushad |
cld |
; ç¨é ¥¬ Data_BCD |
mov dword [Data_BCD],0 |
mov dword [Data_BCD+4],0 |
mov word [Data_BCD+8],0 |
; ç¨é ¥¬ ¡ ©â § ª |
mov [Data_Sign],0 |
; ®á¨¬ ¢ SI 㪠§ ⥫ì áâபã |
mov ESI, Data_String |
; யã᪠¥¬ ¯à®¡¥«ë ¯¥à¥¤ ç¨á«®¬ |
mov ecx,64 ;§ é¨â ®â § 横«¨¢ ¨ï |
.ShiftIgnore: |
lodsb |
cmp AL,' ' |
jne .ShiftIgnoreEnd |
loop .ShiftIgnore |
jmp .Error |
.ShiftIgnoreEnd: |
; ஢¥à塞 § ª ç¨á« |
cmp AL,'-' |
jne .Positive |
mov [Data_Sign],80h |
lodsb |
.Positive: |
mov [Data_Flag],0 ;¯à¨§ ª «¨ç¨ï â®çª¨ |
mov DX,0 ;¯®§¨æ¨ï â®çª¨ |
mov ecx,18 ;¬ ªá. ç¨á«® à §à冷¢ |
.ASCIItoBCDConversion: |
cmp AL,'.' ;â®çª ? |
jne .NotDot |
cmp [Data_Flag],0 ;â®çª ¥ ¢áâà¥ç « áì? |
jne .Error |
mov [Data_Flag],1 |
lodsb |
cmp AL,0 ;ª®¥æ áâப¨? |
jne .NotDot |
jmp .ASCIItoBCDConversionEnd |
.NotDot: |
; ¢¥«¨ç¨âì 1 § 票¥ ¯®§¨æ¨¨ â®çª¨, |
; ¥á«¨ ® ¥é¥ ¥ ¢áâà¥ç « áì |
cmp [Data_Flag],0 |
jnz .Figures |
inc DX |
.Figures: |
; ¨¬¢®«ë ç¨á« ¤®«¦ë ¡ëâì æ¨äà ¬¨ |
cmp AL,'0' |
jb .Error |
cmp AL,'9' |
ja .Error |
; ¨è¥¬ ®ç¥à¥¤ãî æ¨äàã ¢ ¬« ¤èãî â¥âà ¤ã BCD |
and AL,0Fh |
or byte [Data_BCD],AL |
; ஢¥àª ª®¥æ áâப¨ |
cmp byte [ESI],0 |
je .ASCIItoBCDConversionEnd |
; ¤¢¨£ ¥¬ BCD 4 à §àï¤ ¢«¥¢® |
; (ᤢ¨£ ¥¬ áâ à訥 2 ¡ ©â ) |
mov AX,word [Data_BCD+6] |
shld word [Data_BCD+8],AX,4 |
; (ᤢ¨£ ¥¬ á।¨¥ 4 ¡ ©â ) |
mov EAX, dword [Data_BCD] |
shld dword [Data_BCD+4],EAX,4 |
; (ᤢ¨£ ¥¬ ¬« ¤è¨¥ 4 ¡ ©â ) |
shl dword [Data_BCD],4 |
; £à㦠¥¬ á«¥¤ãî騩 ᨬ¢®« ¢ AL |
lodsb |
loop .ASCIItoBCDConversion |
; ᫨ 19-© ᨬ¢®« ¥ 0 ¨ ¥ â®çª , |
; â® ®è¨¡ª ¯¥à¥¯®«¥¨ï |
cmp AL,'.' |
jne .NotDot2 |
inc ecx |
lodsb |
.NotDot2: |
cmp AL,0 |
jne .Error ;¯¥à¥¯®«¥¨¥ à §à冷© á¥âª¨ |
; BCD |
.ASCIItoBCDConversionEnd: |
; ¯¨á âì § ª ¢ áâ à訩 ¡ ©â |
mov AL,[Data_Sign] |
mov byte [Data_BCD+9],AL |
; ¡à®á¨âì ॣ¨áâàë ᮯà®æ¥áá®à |
fninit |
; £à㧨âì ¢ ᮯà®æ¥áá®à ç¨á«® ¢ BCD-ä®à¬ ⥠|
fbld [Data_BCD] |
; ëç¨á«¨âì ®¬¥à ¤¥«¨â¥«ï |
mov EBX,18+1 |
sub BX,CX |
sub BX,DX |
cmp EBX,0 |
je .NoDiv |
dec EBX |
shl EBX,3 ;㬮¦ ¥¬ 8 |
add EBX, MConst |
fdiv qword [EBX] ;à §¤¥«¨âì ª®áâ âã |
.NoDiv:; ë£à㧨âì ç¨á«® ¢ ¤¢®¨ç®¬ ä®à¬ ⥠|
fstp [Data_Double] |
jmp .End |
.Error:; ਠ«î¡®© ®è¨¡ª¥ ®¡ã«¨âì १ã«ìâ â |
fldz ;§ ¥á⨠®«ì á á⥪ ᮯà®æ¥áá®à |
fstp [Data_Double] |
.End: |
popad |
ret |
align 4 |
proc str_cat, str1:dword, str2:dword |
push eax ecx edi esi |
mov esi,dword[str2] |
stdcall str_len,esi |
mov ecx,eax |
inc ecx |
mov edi,dword[str1] |
stdcall str_len,edi |
add edi,eax |
cld |
repne movsb |
pop esi edi ecx eax |
ret |
endp |
;output: |
; eax = strlen |
align 4 |
proc str_len, str1:dword |
mov eax,[str1] |
@@: |
cmp byte[eax],0 |
je @f |
inc eax |
jmp @b |
@@: |
sub eax,[str1] |
ret |
endp |
/programs/develop/info3ds/info_wnd_coords.inc |
---|
0,0 → 1,188 |
; |
; ¢ í⮬ ä ©«¥ ᮡà ë äãªæ¨¨ ã¦ë¥ ¤«ï ᮧ¤ ¨ï ¨ |
; à ¡®âë ®ª á ª®®à¤¨ â ¬¨ |
; |
prop_edits_top equ 25 |
prop_edits_height equ 18 |
prop_wnd_width equ 350 ;è¨à¨ ®ª ᮠ᢮©á⢠¬¨ ®¡ê¥ªâ |
SIZE_ONE_FLOAT equ 14 |
MAX_OBJECT_SIZE equ (4+SIZE_ONE_FLOAT*3+1) |
prop_wnd_run db 0 ;¯¥à¥¬¥ ï á«¥¤ïé ï § ⥬ çâ®-¡ë ¥ § ¯ã᪠âì ¡®«ìè¥ 1-£® ®ª ᮠ᢮©á⢠¬¨ ®¤®¢à¥¬¥® |
txt_space: |
db SIZE_ONE_FLOAT dup(' ') |
.end: |
db 0 |
obj_point: ;¤®¡ ¢«ï¥¬ë© ®¡ê¥ªâ |
dd 0 ;㪠§ ⥫ì |
.text: |
rb MAX_OBJECT_SIZE |
;¤ ®¥ ®ª® (¯à®æ¥áá) ¢ë§ë¢ ¥âìáï äãªæ¨¥© but_wnd_coords |
align 4 |
prop_start: |
pushad |
mcall 40,0x27 ;¬ ᪠®¦¨¤ ¥¬ëå ᮡë⨩ |
inc byte[prop_wnd_run] |
stdcall [tl_node_get_data],tree1 |
pop ebx |
xor edx,edx |
cmp ebx,0 |
je @f |
mov ebx,dword[ebx] ;¯®«ãç ¥¬ § 票¥ ᤢ¨£ ¢ë¡à ®£® ¡«®ª |
add ebx,dword[open_file_lif] |
mov dx,word[ebx+6] ;ª®««¨ç¥á⢮ â®ç¥ª |
@@: |
; áâனª ᯨ᪠®¡ê¥ªâ®¢ |
mov dword[tree3.info_max_count],2 |
add dword[tree3.info_max_count],edx ;áâ ¢¨¬ ç¨á«® 㧫®¢, à ¢®¥ ª®««¨ç¥áâ¢ã â®ç¥ª (+2 ç «® ¨ ª®¥æ ᯨ᪠) |
stdcall dword[tl_data_init], tree3 |
mov eax,dword[icon_tl_sys] |
mov dword[tree3.data_img_sys],eax |
mov eax,dword[icon_toolbar] |
mov dword[tree3.data_img],eax |
cmp ebx,0 |
je .no_object |
cmp word[ebx],CHUNK_VERTLIST |
jne .no_object ;¥á«¨ ¥ â®â ®¡ê¥ªâ |
add ebx,8 |
finit |
.new_point: |
mov dword[obj_point],ebx |
mov dword[obj_point.text],0 |
cld |
mov ecx,3 |
@@: |
fld dword[ebx] |
fstp qword[Data_Double] |
call DoubleFloat_to_String |
add ebx,4 |
stdcall str_len, Data_String |
mov esi,txt_space |
add esi,eax |
cmp esi,txt_space.end |
jl .normal_size |
mov esi,txt_space.end-1 ;¬¨¨¬ã¬ 1 ¯à®¡¥« 㦮 ¤®¡ ¢¨âì, çâ®-¡ë æ¨äàë ¥ ᫨¯ «¨áì |
.normal_size: |
stdcall str_cat, obj_point.text,esi |
stdcall str_cat, obj_point.text,Data_String |
loop @b |
stdcall dword[tl_node_add], obj_point, (ID_ICON_DATA shl 16), tree3 |
stdcall dword[tl_cur_next], tree3 |
dec edx |
cmp edx,0 |
jg .new_point |
stdcall dword[tl_cur_beg], tree3 |
.no_object: |
popad |
align 4 |
prop_red_win: |
pushad |
mcall 12,1 |
xor eax,eax |
mov edi,txt_4110 ;caption |
mov bx,word[procinfo.box.left] |
add bx,word[buf_0.l] |
shl ebx,16 |
mov bx,prop_wnd_width |
mov cx,word[procinfo.box.top] |
shl ecx,16 |
mov cx,250 |
mov edx,0xffffd0 |
or edx,0x33000000 |
int 0x40 |
mov dword[w_scr_t3.all_redraw],1 |
stdcall [scrollbar_ver_draw],dword w_scr_t3 |
stdcall [tl_draw], tree3 |
mcall 12,2 |
popad |
;¥ ®âàë¢ âì íâã äãªæ¨î ®â ¯à¥¤ë¤ã饩 |
align 4 |
prop_still: |
pushad |
mcall 10 |
cmp al,1 ;¨§¬. ¯®«®¦¥¨¥ ®ª |
jz prop_red_win |
cmp al,2 |
jne @f |
call prop_key |
@@: |
cmp al,3 |
jz prop_button |
cmp al,6 |
jne @f |
call prop_mouse |
@@: |
popad |
jmp prop_still |
align 4 |
prop_key: |
push eax |
mcall 2 |
stdcall [tl_key], tree3 |
pop eax |
ret |
align 4 |
prop_mouse: |
;push ecx edi |
stdcall [tl_mouse], tree3 |
;pop edi ecx |
ret |
align 4 |
prop_button: |
mcall 17 ;¯®«ãç¨âì ª®¤ ¦ ⮩ ª®¯ª¨ |
cmp ah,10 |
jne @f |
;;;call but_element_change |
mov ah,1 ;¤«ï § ªàëâ¨ï ®ª |
@@: |
cmp ah,1 |
jne prop_still |
.exit: |
mov dword[tree3.data_img],0 ;ç¨á⨬ 㪠§ ⥫¨ ¨ª®ª¨ çâ®-¡ë ¨å ¥ 㤠«¨« ¤¥áâàãªâ®à |
mov dword[tree3.data_img_sys],0 ;â. ª. ®¨ ¥é¥ ¨á¯®«ì§ãîâìáï ¢ ¤à㣨å í«¥¬¥â å |
stdcall dword[tl_data_clear], tree3 |
mov byte[prop_wnd_run],0 ;®¡ã«ï¥¬ áç¥â稪 ®ª® |
mcall -1 ;¢ë室 ¨§ ¯à®£à ¬¬ë |
;¤¥à¥¢® á ®¡ê¥ªâ ¬¨ ¢ ¯®«ì§®¢ ⥫ì᪮¬ ä ©«¥ |
tree3 tree_list MAX_OBJECT_SIZE,3,\ |
tl_key_no_edit+tl_list_box_mode,\ |
16,16, 0xffffff,0xb0d0ff,0xd000ff, 5,30,300,150, 16, 4,0, el_focus,\ |
w_scr_t3,0 |
align 4 |
w_scr_t3: |
.size_x dw 16 ;+0 |
rb 2+2+2 |
.btn_high dd 15 ;+8 |
.type dd 1 ;+12 |
.max_area dd 100 ;+16 |
rb 4+4 |
.bckg_col dd 0xeeeeee ;+28 |
.frnt_col dd 0xbbddff ;+32 |
.line_col dd 0 ;+36 |
rb 4+2+2 |
.run_x: |
rb 2+2+2+2+4+4+4+4+4+4 |
.all_redraw dd 0 ;+80 |
.ar_offset dd 1 ;+84 |