/programs/develop/info3ds/build_en.bat |
---|
5,6 → 5,8 |
if not exist bin\tl_sys_16.png @copy tl_sys_16.png bin\tl_sys_16.png |
if not exist bin\toolbar.png @copy toolbar.png bin\toolbar.png |
if not exist bin\font8x9.bmp @copy ..\..\fs\kfar\trunk\font8x9.bmp bin\font8x9.bmp |
@fasm.exe -m 16384 ..\libraries\TinyGL\asm_fork\tinygl.asm bin\tinygl.obj |
@kpack bin\tinygl.obj |
@fasm.exe -m 16384 info3ds.asm bin\info3ds.kex |
@kpack bin\info3ds.kex |
pause |
/programs/develop/info3ds/build_ru.bat |
---|
5,6 → 5,8 |
if not exist bin\tl_sys_16.png @copy tl_sys_16.png bin\tl_sys_16.png |
if not exist bin\toolbar.png @copy toolbar.png bin\toolbar.png |
if not exist bin\font8x9.bmp @copy ..\..\fs\kfar\trunk\font8x9.bmp bin\font8x9.bmp |
@fasm.exe -m 16384 ..\libraries\TinyGL\asm_fork\tinygl.asm bin\tinygl.obj |
@kpack bin\tinygl.obj |
@fasm.exe -m 16384 info3ds.asm bin\info3ds.kex |
@kpack bin\info3ds.kex |
pause |
/programs/develop/info3ds/info3ds.asm |
---|
1,18 → 1,13 |
use32 |
org 0x0 |
db 'MENUET01' ;¨¤¥â¨ä. ¨á¯®«ï¥¬®£® ä ©« ¢á¥£¤ 8 ¡ ©â |
dd 0x1 |
dd start |
dd i_end ;à §¬¥à ¯à¨«®¦¥¨ï |
dd mem |
dd stacktop |
dd 0 |
dd sys_path |
dd 1, start, i_end, mem, stacktop, 0, sys_path |
include '../../macros.inc' |
include '../../proc32.inc' |
include '../../develop/libraries/box_lib/load_lib.mac' |
include '../../develop/libraries/box_lib/trunk/box_lib.mac' |
include '../../develop/libraries/TinyGL/asm_fork/opengl_const.inc' |
include '../../dll.inc' |
include 'lang.inc' |
include 'info_fun_float.inc' |
37,6 → 32,7 |
open_file_size dd 0 ;à §¬¥à ®âªàë⮣® ä ©« |
; |
main_wnd_height equ 460 ;¢ëá®â £« ¢®£® ®ª ¯à®£à ¬¬ë |
fn_toolbar db 'toolbar.png',0 |
IMAGE_TOOLBAR_ICON_SIZE equ 16*16*3 |
IMAGE_TOOLBAR_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*7 |
70,7 → 66,7 |
mov [run_file_70.Position], 0 |
mov [run_file_70.Flags], 0 |
mov [run_file_70.Count], dword size |
m2m [run_file_70.Buffer], eax |
mov [run_file_70.Buffer], eax |
mov byte[run_file_70+20], 0 |
mov [run_file_70.FileName], file_name |
mcall 70,run_file_70 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥¨ï |
120,18 → 116,15 |
start: |
load_libraries l_libs_start,l_libs_end |
;¯à®¢¥àª ᪮«ìª® ã¤ ç® § £ã§¨«¨áì ¡¨¡«¨®â¥ª¨ |
cmp dword [lib_0+ll_struc_size-4],0 |
jnz @f |
cmp dword [lib_1+ll_struc_size-4],0 |
jnz @f |
cmp dword [lib_2+ll_struc_size-4],0 |
jnz @f |
cmp dword [lib_3+ll_struc_size-4],0 |
jnz @f |
jmp .lib |
mov ebp,lib_0 |
.test_lib_open: |
cmp dword [ebp+ll_struc_size-4],0 |
jz @f |
mcall -1 ;exit not correct |
@@: |
mcall -1 ;exit not correct |
.lib: |
add ebp,ll_struc_size |
cmp ebp,l_libs_end |
jl .test_lib_open |
mcall 48,3,sc,sizeof.system_colors |
mcall 40,0x27 |
stdcall [OpenDialog_Init],OpenDialog_data ;¯®¤£®â®¢ª ¤¨ «®£ |
165,8 → 158,14 |
mcall 26,9 |
mov [last_time],eax |
align 4 |
red_win: |
stdcall [kosglMakeCurrent], 5,3,320,240,ctx1 |
stdcall [glEnable], GL_DEPTH_TEST |
stdcall [glEnable], GL_NORMALIZE ;¤¥« ¬ ®à¬ «¨ ®¤¨ ª®¢®© ¢¥«¨ç¨ë ¢® ¨§¡¥¦ ¨¥ àâ¥ä ªâ®¢ |
stdcall [glClearColor], 0.0,0.0,0.0,0.0 |
stdcall [glShadeModel], GL_SMOOTH |
stdcall [gluNewQuadric] |
mov [qObj],eax |
call draw_window |
align 4 |
179,16 → 178,15 |
mov ebx,eax |
@@: |
sub ebx,eax |
;cmp ebx,10 ;§ ¤¥à¦ª |
;ja timer_funct |
;test ebx,ebx |
;jz timer_funct |
mcall 23 |
cmp eax,0 |
je timer_funct |
cmp al,1 |
jz red_win |
jne @f |
call draw_window |
jmp still |
@@: |
cmp al,2 |
jz key |
cmp al,3 |
297,8 → 295,7 |
endp |
align 4 |
proc draw_block_end_line, coord_y:dword |
push eax ebx ecx |
proc draw_block_end_line uses eax ebx ecx, coord_y:dword |
add ebx,20 ;20 = width 2.5 symbols |
mov eax,[coord_y] |
sub eax,2 |
307,7 → 304,6 |
stdcall [buf2d_line], buf_0, 0,ecx,ebx,ecx ,0xff |
stdcall [buf2d_line], buf_0, ebx,ecx,ebx,eax ,0xff |
stdcall [buf2d_line], buf_0, ebx,eax,5+10*24-4,eax ,0xff |
pop ecx ebx eax |
ret |
endp |
316,12 → 312,10 |
pushad |
mcall 12,1 |
xor eax,eax |
mov ebx,(20 shl 16)+560 |
mov ecx,(20 shl 16)+315 |
mov edx,[sc.work] |
or edx,(3 shl 24)+0x10000000+0x20000000 |
or edx,0x33000000 |
mov edi,capt |
int 0x40 |
mcall , (20 shl 16)+560, (20 shl 16)+main_wnd_height |
mcall 9,procinfo,-1 |
mov eax,dword[procinfo.box.height] |
445,6 → 439,7 |
stdcall [buf2d_delete],buf_1 ;㤠«ï¥¬ ¡ãä¥à |
stdcall mem.Free,[image_data_toolbar] |
stdcall mem.Free,[open_file_lif] |
stdcall [gluDeleteQuadric], [qObj] |
mcall -1 |
467,7 → 462,6 |
je .end_open_file |
;ª®¤ ¯à¨ 㤠箬 ®âªàë⨨ ¤¨ «®£ |
mov eax,70 ;70-ï äãªæ¨ï à ¡®â á ä ©« ¬¨ |
mov [run_file_70.Function], 0 |
mov [run_file_70.Position], 0 |
mov [run_file_70.Flags], 0 |
475,8 → 469,7 |
m2m [run_file_70.Buffer], dword[open_file_lif] |
mov byte[run_file_70+20], 0 |
mov dword[run_file_70.FileName], openfile_path |
mov ebx,run_file_70 |
int 0x40 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥¨ï |
mcall 70,run_file_70 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥¨ï |
cmp ebx,0xffffffff |
je .end_open_file |
486,6 → 479,14 |
mov byte[can_save],0 |
call init_tree |
stdcall [buf2d_draw], buf_0 ;®¡®¢«ï¥¬ ¡ãä¥à íªà ¥ |
mov dword[angle_x],0.0 |
mov dword[angle_y],0.0 |
mov dword[angle_z],0.0 |
cmp byte[prop_wnd_run],0 |
je @f |
;ç¨á⨬ ®ª® á ª®®à¤¨ â ¬¨ |
stdcall [tl_info_clear], tree3 |
@@: |
.end_open_file: |
popad |
1050,39 → 1051,66 |
db 0 |
head_f_i: |
head_f_l db '¨á⥬ ï ®è¨¡ª ',0 |
align 4 |
system_dir_0 db '/sys/lib/' |
lib_name_0 db 'proc_lib.obj',0 |
err_message_found_lib_0 db '¥ ©¤¥ ¡¨¡«¨®â¥ª ',39,'proc_lib.obj',39,0 |
err_message_import_0 db '訡ª ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'proc_lib.obj',39,0 |
system_dir_1 db '/sys/lib/' |
lib_name_1 db 'libimg.obj',0 |
err_message_found_lib_1 db '¥ ©¤¥ ¡¨¡«¨®â¥ª ',39,'libimg.obj',39,0 |
err_message_import_1 db '訡ª ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'libimg.obj',39,0 |
system_dir_2 db '/sys/lib/' |
lib_name_2 db 'box_lib.obj',0 |
system_dir_3 db '/sys/lib/' |
lib_name_3 db 'buf2d.obj',0 |
system_dir_4 db '/sys/lib/' |
lib_name_4 db 'kmenu.obj',0 |
system_dir_5 db '/sys/lib/' |
lib_name_5 db 'tinygl.obj',0 |
if lang eq ru |
head_f_i: |
head_f_l db '¨á⥬ ï ®è¨¡ª ',0 |
err_msg_found_lib_0 db '¥ ©¤¥ ¡¨¡«¨®â¥ª ',39,'proc_lib.obj',39,0 |
err_msg_import_0 db '訡ª ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'proc_lib.obj',39,0 |
err_msg_found_lib_1 db '¥ ©¤¥ ¡¨¡«¨®â¥ª ',39,'libimg.obj',39,0 |
err_msg_import_1 db '訡ª ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'libimg.obj',39,0 |
err_msg_found_lib_2 db '¥ ©¤¥ ¡¨¡«¨®â¥ª ',39,'box_lib.obj',39,0 |
err_msg_import_2 db '訡ª ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'box_lib',39,0 |
system_dir_3 db '/sys/lib/' |
lib_name_3 db 'buf2d.obj',0 |
err_msg_found_lib_3 db '¥ ©¤¥ ¡¨¡«¨®â¥ª ',39,'buf2d.obj',39,0 |
err_msg_import_3 db '訡ª ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'buf2d',39,0 |
err_msg_found_lib_4 db '¥ ©¤¥ ¡¨¡«¨®â¥ª ',39,'kmenu.obj',39,0 |
err_msg_import_4 db '訡ª ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'kmenu',39,0 |
err_msg_found_lib_5 db '¥ ©¤¥ ¡¨¡«¨®â¥ª ',39,'tinygl.obj',39,0 |
err_msg_import_5 db '訡ª ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'tinygl',39,0 |
else |
head_f_i: |
head_f_l db 'System error',0 |
err_msg_found_lib_0 db 'Sorry I cannot found library ',39,'proc_lib.obj',39,0 |
err_msg_import_0 db 'Error on load import library ',39,'proc_lib.obj',39,0 |
err_msg_found_lib_1 db 'Sorry I cannot found library ',39,'libimg.obj',39,0 |
err_msg_import_1 db 'Error on load import library ',39,'libimg.obj',39,0 |
err_msg_found_lib_2 db 'Sorry I cannot found library ',39,'box_lib.obj',39,0 |
err_msg_import_2 db 'Error on load import library ',39,'box_lib.obj',39,0 |
err_msg_found_lib_3 db 'Sorry I cannot found library ',39,'buf2d.obj',39,0 |
err_msg_import_3 db 'Error on load import library ',39,'buf2d.obj',39,0 |
err_msg_found_lib_4 db 'Sorry I cannot found library ',39,'kmenu.obj',39,0 |
err_msg_import_4 db 'Error on load import library ',39,'kmenu.obj',39,0 |
err_msg_found_lib_5 db 'Sorry I cannot found library ',39,'tinygl.obj',39,0 |
err_msg_import_5 db 'Error on load import library ',39,'tinygl',39,0 |
end if |
align 4 |
l_libs_start: |
lib_0 l_libs lib_name_0, sys_path, file_name, system_dir_0,\ |
err_message_found_lib_0, head_f_l, proclib_import,err_message_import_0, head_f_i |
err_msg_found_lib_0, head_f_l, proclib_import,err_msg_import_0, head_f_i |
lib_1 l_libs lib_name_1, sys_path, file_name, system_dir_1,\ |
err_message_found_lib_1, head_f_l, import_libimg, err_message_import_1, head_f_i |
err_msg_found_lib_1, head_f_l, import_libimg, err_msg_import_1, head_f_i |
lib_2 l_libs lib_name_2, sys_path, library_path, system_dir_2,\ |
err_msg_found_lib_2,head_f_l,import_box_lib,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_buf2d,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_libkmenu,err_msg_import_4,head_f_i |
lib_5 l_libs lib_name_5, sys_path, library_path, system_dir_5,\ |
err_msg_found_lib_5, head_f_l, import_lib_tinygl,err_msg_import_5,head_f_i |
l_libs_end: |
align 4 |
1265,8 → 1293,45 |
sz_tl_node_poi_get_next_info db 'tl_node_poi_get_next_info',0 |
sz_tl_node_poi_get_data db 'tl_node_poi_get_data',0 |
align 4 |
import_libkmenu: |
kmenu_init dd akmenu_init |
kmainmenu_draw dd akmainmenu_draw |
kmainmenu_dispatch_cursorevent dd akmainmenu_dispatch_cursorevent |
ksubmenu_new dd aksubmenu_new |
ksubmenu_delete dd aksubmenu_delete |
ksubmenu_draw dd aksubmenu_draw |
ksubmenu_add dd aksubmenu_add |
kmenuitem_new dd akmenuitem_new |
kmenuitem_delete dd akmenuitem_delete |
kmenuitem_draw dd akmenuitem_draw |
dd 0,0 |
akmenu_init db 'kmenu_init',0 |
akmainmenu_draw db 'kmainmenu_draw',0 |
akmainmenu_dispatch_cursorevent db 'kmainmenu_dispatch_cursorevent',0 |
aksubmenu_new db 'ksubmenu_new',0 |
aksubmenu_delete db 'ksubmenu_delete',0 |
aksubmenu_draw db 'ksubmenu_draw',0 |
aksubmenu_add db 'ksubmenu_add',0 |
akmenuitem_new db 'kmenuitem_new',0 |
akmenuitem_delete db 'kmenuitem_delete',0 |
akmenuitem_draw db 'kmenuitem_draw',0 |
align 4 |
import_lib_tinygl: |
macro E_LIB n |
{ |
n dd sz_#n |
} |
include '../../develop/libraries/TinyGL/asm_fork/export.inc' |
dd 0,0 |
macro E_LIB n |
{ |
sz_#n db `n,0 |
} |
include '../../develop/libraries/TinyGL/asm_fork/export.inc' |
align 4 |
mouse_dd dd 0x0 |
sc system_colors |
last_time dd 0 |
1276,7 → 1341,7 |
.l: dw 205 ;+4 left |
.t: dw 35 ;+6 top |
.w: dd 340 ;+8 w |
.h: dd 250 ;+12 h |
.h: dd main_wnd_height-65 ;+12 h |
.color: dd 0xffffd0 ;+16 color |
db 24 ;+20 bit in pixel |
1283,33 → 1348,49 |
align 4 |
buf_1: |
dd 0 ;㪠§ â¥«ì ¡ãä¥à ¨§®¡à ¦¥¨ï |
dw 25 ;+4 left |
dw 25 ;+6 top |
dd 128 ;+8 w |
dd 144 ;+12 h |
dd 0 ;+16 color |
db 24 ;+20 bit in pixel |
dw 25,25 ;+4 left,top |
dd 128,144 ;+8 w,h |
dd 0,24 ;+16 color,bit in pixel |
align 4 |
el_focus dd tree1 |
tree1 tree_list size_one_list,300+2, tl_key_no_edit+tl_draw_par_line,\ |
16,16, 0xffffff,0xb0d0ff,0xd000ff, 5,35,195-16,250, 16,list_offs_text,0, el_focus,\ |
16,16, 0xffffff,0xb0d0ff,0x400040, 5,35,195-16,250, 16,list_offs_text,0, el_focus,\ |
w_scr_t1,0 |
align 4 |
w_scr_t1 scrollbar 16,0, 3,0, 15, 100, 0,0, 0xeeeeee, 0xbbddff, 0, 1 |
w_scr_t1 scrollbar 16,0, 3,0, 15, 100, 0,0, 0,0,0, 1 |
align 4 |
ctx1 db 28 dup (0) ;TinyGLContext or KOSGLContext |
;sizeof.TinyGLContext = 28 |
qObj dd 0 |
angle_x dd 0.0 |
angle_y dd 0.0 |
angle_z dd 0.0 |
delt_size dd 3.0 |
light_position dd 0.0, 0.0, 2.0, 1.0 ; ᯮ«®¦¥¨¥ ¨áâ®ç¨ª [0][1][2] |
;[3] = (0.0 - ¡¥áª®¥ç® 㤠«¥ë© ¨áâ®ç¨ª, 1.0 - ¨áâ®ç¨ª ᢥ⠮¯à¥¤¥«¥®¬ à ááâ®ï¨¨) |
light_dir dd 0.0,0.0,0.0 ; ¯à ¢«¥¨¥ « ¬¯ë |
mat_specular dd 0.3, 0.3, 0.3, 1.0 ; ¢¥â ¡«¨ª |
mat_shininess dd 3.0 ; §¬¥à ¡«¨ª (®¡à â ï ¯à®¯®àæ¨ï) |
white_light dd 0.8, 0.8, 0.8, 1.0 ; ¢¥â ¨ ¨â¥á¨¢®áâì ®á¢¥é¥¨ï, £¥¥à¨à㥬®£® ¨áâ®ç¨ª®¬ |
lmodel_ambient dd 0.3, 0.3, 0.3, 1.0 ; à ¬¥âàë ä®®¢®£® ®á¢¥é¥¨ï |
align 16 |
i_end: |
procinfo process_information |
rb 1024 |
rb 2048 |
align 16 |
thread_coords: |
rb 1024 |
rb 2048 |
stacktop: |
sys_path rb 1024 |
file_name: |
rb 4096 |
library_path rb 1024 |
sys_path rb 2048 |
file_name rb 4096 |
library_path rb 2048 |
plugin_path rb 4096 |
openfile_path rb 4096 |
filename_area rb 256 |
/programs/develop/info3ds/info_wnd_coords.inc |
---|
3,7 → 3,8 |
; à ¡®âë ®ª á ª®®à¤¨ â ¬¨ |
; |
prop_wnd_width equ 350 ;è¨à¨ ®ª ᮠ᢮©á⢠¬¨ ®¡ê¥ªâ |
prop_wnd_width equ 340 ;è¨à¨ ®ª ᮠ᢮©á⢠¬¨ ®¡ê¥ªâ |
prop_wnd_height equ 460 |
SIZE_ONE_FLOAT equ 14 |
MAX_OBJECT_SIZE equ (4+SIZE_ONE_FLOAT*3+1) |
15,6 → 16,8 |
.end: |
db 0 |
rad_c dd 150 ;¤«ï ¢ëç¨á«¥¨ï à ¤¨ãá |
obj_point: ;¤®¡ ¢«ï¥¬ë© ®¡ê¥ªâ |
dd 0 ;㪠§ ⥫ì |
.text: |
28,6 → 31,7 |
pushad |
mcall 40,0x27 ;¬ ᪠®¦¨¤ ¥¬ëå ᮡë⨩ |
inc byte[prop_wnd_run] |
mov dword[w_scr_t3.type],1 |
stdcall [tl_node_get_data],tree1 |
xor edx,edx |
100,6 → 104,7 |
jg .new_point |
stdcall dword[tl_cur_beg], tree3 |
.no_object: |
call obj_set_sizes |
edit_boxes_set_sys_color edit1,editboxes_end,sc ;ãáâ ®¢ª á¨á⥬ëå 梥⮢ |
stdcall [edit_box_set_text], edit1, txt_q |
stdcall [edit_box_set_text], edit2, txt_q |
106,7 → 111,35 |
stdcall [edit_box_set_text], edit3, txt_q |
popad |
call prop_red_win |
;¥ ®âàë¢ âì íâã äãªæ¨î ®â ¯à¥¤ë¤ã饩 |
align 4 |
prop_still: |
pushad |
mcall 10 |
cmp al,1 ;¨§¬. ¯®«®¦¥¨¥ ®ª |
jne @f |
call prop_red_win |
jmp .end |
@@: |
cmp al,2 |
jne @f |
call prop_key |
jmp .end |
@@: |
cmp al,3 |
jz prop_button |
cmp al,6 |
jne @f |
call prop_mouse |
@@: |
.end: |
popad |
jmp prop_still |
align 4 |
prop_red_win: |
pushad |
mcall 12,1 |
115,37 → 148,26 |
mov edi,dword[capt_p] ;children window caption |
mov bx,word[procinfo.box.left] |
add bx,word[buf_0.l] |
add bx,5 ;è¨à¨ ¡®ª®¢®© à ¬ª¨ |
shl ebx,16 |
mov bx,prop_wnd_width |
mov cx,word[procinfo.box.top] |
add cx,word[buf_0.t] |
shl ecx,16 |
mov cx,250 |
mov edx,0xffffd0 |
or edx,0x33000000 |
mov cx,prop_wnd_height |
mov edx,0xffffd0+0x33000000 |
int 0x40 |
mov eax,8 |
mov ebx,(5 shl 16)+20 |
mov ecx,(195 shl 16)+20 |
mov edx,3 |
mov esi,[sc.work_button] |
int 0x40 |
mcall 8, (5 shl 16)+20, (246 shl 16)+20, 3 |
mcall , (30 shl 16)+20, (246 shl 16)+20, 4 |
mov ebx,(30 shl 16)+20 |
mov ecx,(195 shl 16)+20 |
mov edx,4 |
int 0x40 |
mov eax,7 |
mov ebx,[image_data_toolbar] |
add ebx,4*IMAGE_TOOLBAR_ICON_SIZE |
mov ecx,(16 shl 16)+16 |
mov edx,(7 shl 16)+197 ;load |
int 0x40 |
mcall 7, , (16 shl 16)+16, (7 shl 16)+247 ;load |
sub ebx,IMAGE_TOOLBAR_ICON_SIZE |
mov edx,(32 shl 16)+197 ;save |
mov edx,(32 shl 16)+247 ;save |
int 0x40 |
mov dword[w_scr_t3.all_redraw],1 |
154,38 → 176,298 |
stdcall [edit_box_draw], edit1 |
stdcall [edit_box_draw], edit2 |
stdcall [edit_box_draw], edit3 |
call draw_3d |
mcall 12,2 |
popad |
ret |
;¥ ®âàë¢ âì íâã äãªæ¨î ®â ¯à¥¤ë¤ã饩 |
align 4 |
prop_still: |
pushad |
mcall 10 |
proc obj_set_sizes uses eax ebx esi |
stdcall dword[tl_node_poi_get_info], tree3,0 |
cmp eax,0 |
je .end |
stdcall [tl_node_poi_get_data], tree3,eax |
finit |
mov eax,[eax] |
mov ebx,dword[eax] |
mov [obj_x_min],ebx |
mov [obj_x_max],ebx |
mov ebx,dword[eax+4] |
mov [obj_y_min],ebx |
mov [obj_y_max],ebx |
mov ebx,dword[eax+8] |
mov [obj_z_min],ebx |
mov [obj_z_max],ebx |
cmp al,1 ;¨§¬. ¯®«®¦¥¨¥ ®ª |
jz prop_red_win |
cmp al,2 |
jne @f |
call prop_key |
stdcall dword[tl_node_poi_get_info], tree3,0 |
align 4 |
.cycle_0: ;à ¡®â á ª®®à¤¨ ⮩ x |
mov esi,eax |
stdcall [tl_node_poi_get_data], tree3,esi |
mov ebx,[eax] |
fld dword[ebx] |
fld dword[obj_x_min] |
fcomp |
fstsw ax |
sahf |
jb @f |
mov eax,[ebx] |
mov [obj_x_min],eax |
ffree st0 |
fincstp |
jmp .next_x |
@@: |
cmp al,3 |
jz prop_button |
cmp al,6 |
jne @f |
call prop_mouse |
fld dword[obj_x_max] |
fcompp |
fstsw ax |
sahf |
ja .next_x |
mov eax,[ebx] |
mov [obj_x_max],eax |
.next_x: |
stdcall dword[tl_node_poi_get_next_info], tree3,esi |
cmp eax,0 |
jne .cycle_0 |
fld1 |
fld dword[obj_x_max] |
fsub dword[obj_x_min] |
fst dword[obj_x_centr] |
fdivp ;1/size.x |
fstp dword[obj_x_scale] |
fld dword[obj_x_centr] |
fld1 |
fld1 |
faddp |
fdivp ;centr.x = size.x/2 |
fadd dword[obj_x_min] |
fchs |
fstp dword[obj_x_centr] |
stdcall dword[tl_node_poi_get_info], tree3,0 |
align 4 |
.cycle_1: ;à ¡®â á ª®®à¤¨ ⮩ y |
mov esi,eax |
stdcall [tl_node_poi_get_data], tree3,esi |
mov ebx,[eax] |
fld dword[ebx+4] |
fld dword[obj_y_min] |
fcomp |
fstsw ax |
sahf |
jb @f |
mov eax,[ebx+4] |
mov [obj_y_min],eax |
ffree st0 |
fincstp |
jmp .next_y |
@@: |
popad |
jmp prop_still |
fld dword[obj_y_max] |
fcompp |
fstsw ax |
sahf |
ja .next_y |
mov eax,[ebx+4] |
mov [obj_y_max],eax |
.next_y: |
stdcall dword[tl_node_poi_get_next_info], tree3,esi |
cmp eax,0 |
jne .cycle_1 |
fld1 |
fld dword[obj_y_max] |
fsub dword[obj_y_min] |
fst dword[obj_y_centr] |
fdivp ;1/size.y |
fstp dword[obj_y_scale] |
fld dword[obj_y_centr] |
fld1 |
fld1 |
faddp |
fdivp ;centr.y = size.y/2 |
fadd dword[obj_y_min] |
fchs |
fstp dword[obj_y_centr] |
stdcall dword[tl_node_poi_get_info], tree3,0 |
align 4 |
.cycle_2: ;à ¡®â á ª®®à¤¨ ⮩ z |
mov esi,eax |
stdcall [tl_node_poi_get_data], tree3,esi |
mov ebx,[eax] |
fld dword[ebx+8] |
fld dword[obj_z_min] |
fcomp |
fstsw ax |
sahf |
jb @f |
mov eax,[ebx+8] |
mov [obj_z_min],eax |
ffree st0 |
fincstp |
jmp .next_z |
@@: |
fld dword[obj_z_max] |
fcompp |
fstsw ax |
sahf |
ja .next_z |
mov eax,[ebx+8] |
mov [obj_z_max],eax |
.next_z: |
stdcall dword[tl_node_poi_get_next_info], tree3,esi |
cmp eax,0 |
jne .cycle_2 |
fld1 |
fld dword[obj_z_max] |
fsub dword[obj_z_min] |
fst dword[obj_z_centr] |
fdivp ;1/size.z |
fstp dword[obj_z_scale] |
fld dword[obj_z_centr] |
fld1 |
fld1 |
faddp |
fdivp ;centr.z = size.z/2 |
fadd dword[obj_z_min] |
fchs |
fstp dword[obj_z_centr] |
; 室¨¬ à ¤¨ãá ¤«ï áä¥àë |
fld dword[obj_x_max] |
fsub dword[obj_x_min] |
fld dword[obj_y_max] |
fsub dword[obj_y_min] |
faddp |
fild dword[rad_c] |
fdivp ;radius=(size.x+size.y)/rad_c |
fstp dword[sph_radius] |
.end: |
ret |
endp |
;à¨á®¢ ¨¥ â®ç¥ª ¢ 3d |
align 4 |
draw_3d: |
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;®ç¨á⨬ ¡ãä¥à 梥⠨ £«ã¡¨ë |
stdcall [glPushMatrix] |
stdcall [glTranslatef], 0.0,0.0,0.5 ;correct for z |
stdcall [glScalef], [obj_x_scale],[obj_y_scale],[obj_z_scale] |
stdcall [glScalef], 1.0,1.0,0.7 ;correct for z |
stdcall [glRotatef], [angle_z],0.0,0.0,1.0 |
stdcall [glRotatef], [angle_y],0.0,1.0,0.0 |
stdcall [glRotatef], [angle_x],1.0,0.0,0.0 |
stdcall [glTranslatef], [obj_x_centr],[obj_y_centr],[obj_z_centr] |
stdcall [glColor3f], 1.0,1.0,1.0 |
stdcall [glBegin],GL_POINTS |
stdcall dword[tl_node_poi_get_info], tree3,0 |
@@: |
cmp eax,0 |
je @f |
mov esi,eax |
stdcall [tl_node_poi_get_data], tree3,esi |
mov eax,[eax] |
stdcall [glVertex3f], [eax],[eax+4],[eax+8] |
stdcall dword[tl_node_poi_get_next_info], tree3,esi |
jmp @b |
@@: |
stdcall [glEnd] |
stdcall [tl_node_get_data],tree3 |
cmp eax,0 |
je @f |
;¢ë¤¥«¥¨¥ ªâ¨¢®© â®çª¨ |
mov eax,[eax] |
stdcall [glBegin],GL_LINES |
stdcall [glColor3f], 1.0, 0.0, 0.0 |
stdcall [glVertex3f], [obj_x_min],[eax+4],[eax+8] |
stdcall [glVertex3f], [obj_x_max],[eax+4],[eax+8] |
stdcall [glColor3f], 0.0, 0.0, 1.0 |
stdcall [glVertex3f], [eax],[obj_y_min],[eax+8] |
stdcall [glVertex3f], [eax],[obj_y_max],[eax+8] |
stdcall [glColor3f], 0.0, 1.0, 0.0 |
stdcall [glVertex3f], [eax],[eax+4],[obj_z_min] |
stdcall [glVertex3f], [eax],[eax+4],[obj_z_max] |
stdcall [glEnd] |
stdcall [glColor3f], 1.0, 1.0, 0.0 |
stdcall [glTranslatef], [eax],[eax+4],[eax+8] |
stdcall [gluSphere], [qObj], [sph_radius], 8,8 |
@@: |
stdcall [glPopMatrix] |
stdcall [kosglSwapBuffers] |
ret |
align 4 |
prop_key: |
push eax |
mcall 2 |
test word [edit1.flags],10b ;ed_focus |
je @f |
stdcall [edit_box_key], edit1 |
jmp .end |
@@: |
test word [edit2.flags],10b |
je @f |
stdcall [edit_box_key], edit2 |
jmp .end |
@@: |
test word [edit3.flags],10b |
je @f |
stdcall [edit_box_key], edit3 |
jmp .end |
@@: |
stdcall [tl_key], tree3 |
cmp ah,178 ;Up |
jne @f |
fld dword[angle_x] |
fadd dword[delt_size] |
fstp dword[angle_x] |
call draw_3d |
jmp .end |
@@: |
cmp ah,177 ;Down |
jne @f |
fld dword[angle_x] |
fsub dword[delt_size] |
fstp dword[angle_x] |
call draw_3d |
jmp .end |
@@: |
cmp ah,176 ;Left |
jne @f |
fld dword[angle_y] |
fadd dword[delt_size] |
fstp dword[angle_y] |
call draw_3d |
jmp .end |
@@: |
cmp ah,179 ;Right |
jne @f |
fld dword[angle_y] |
fsub dword[delt_size] |
fstp dword[angle_y] |
call draw_3d |
;jmp .end |
@@: |
.end: |
pop eax |
ret |
205,32 → 487,9 |
cmp ah,3 |
jne @f |
;§ £à㧪 ª®®à¤¨ â ¢ editbox-ë |
push eax ebx |
stdcall [tl_node_get_data],tree3 |
cmp eax,0 |
je .no_select_0 |
mov ebx,[eax] |
mov word[NumberSymbolsAD],8 |
finit |
fld dword[ebx] |
fstp qword[Data_Double] |
call DoubleFloat_to_String |
stdcall [edit_box_set_text], edit1, Data_String |
fld dword[ebx+4] |
fstp qword[Data_Double] |
call DoubleFloat_to_String |
stdcall [edit_box_set_text], edit2, Data_String |
fld dword[ebx+8] |
fstp qword[Data_Double] |
call DoubleFloat_to_String |
stdcall [edit_box_set_text], edit3, Data_String |
stdcall [edit_box_draw], edit1 |
stdcall [edit_box_draw], edit2 |
stdcall [edit_box_draw], edit3 |
.no_select_0: |
pop ebx eax |
jmp prop_still |
call get_point_coords |
call draw_3d |
jmp prop_still.end |
@@: |
cmp ah,4 |
jne @f |
244,8 → 503,8 |
mov esi,string1 |
mov edi,Data_String |
cld |
mov ecx,32 |
rep movsb |
mov ecx,8 |
rep movsd |
call String_to_DoubleFloat |
fld qword[Data_Double] ;áç¨âë¢ ¥¬ ª ª double |
fstp dword[ebx] ;á®åà 塞 ª ª float |
253,8 → 512,8 |
mov esi,string2 |
mov edi,Data_String |
cld |
mov ecx,32 |
rep movsb |
mov ecx,8 |
rep movsd |
call String_to_DoubleFloat |
fld qword[Data_Double] ;áç¨âë¢ ¥¬ ª ª double |
fstp dword[ebx+4] ;á®åà 塞 ª ª float |
262,8 → 521,8 |
mov esi,string3 |
mov edi,Data_String |
cld |
mov ecx,32 |
rep movsb |
mov ecx,8 |
rep movsd |
call String_to_DoubleFloat |
fld qword[Data_Double] ;áç¨âë¢ ¥¬ ª ª double |
fstp dword[ebx+8] ;á®åà 塞 ª ª float |
293,13 → 552,14 |
stdcall dword[tl_draw], tree3 |
mov byte[can_save],1 ;¤«ï ¯®ª § ª®¯ª¨ '®åà ¨âì' |
mov dword[offs_last_timer],0 ;¤«ï ®¡®¢«¥¨ï ¡«®ª ¢ â ©¬¥à¥ |
call draw_3d |
.no_select_1: |
pop esi edi ecx ebx eax |
jmp prop_still |
jmp prop_still.end |
@@: |
cmp ah,1 |
jne prop_still |
jne prop_still.end |
.exit: |
mov dword[tree3.data_img],0 ;ç¨á⨬ 㪠§ ⥫¨ ¨ª®ª¨ çâ®-¡ë ¨å ¥ 㤠«¨« ¤¥áâàãªâ®à |
mov dword[tree3.data_img_sys],0 ;â. ª. ®¨ ¥é¥ ¨á¯®«ì§ãîâìáï ¢ ¤à㣨å í«¥¬¥â å |
307,17 → 567,60 |
mov byte[prop_wnd_run],0 ;®¡ã«ï¥¬ áç¥â稪 ®ª® |
mcall -1 ;¢ë室 ¨§ ¯à®£à ¬¬ë |
align 4 |
get_point_coords: |
;§ £à㧪 ª®®à¤¨ â ¢ editbox-ë |
push eax ebx |
stdcall [tl_node_get_data],tree3 |
cmp eax,0 |
je @f |
mov ebx,[eax] |
mov word[NumberSymbolsAD],8 |
finit |
fld dword[ebx] |
fstp qword[Data_Double] |
call DoubleFloat_to_String |
stdcall [edit_box_set_text], edit1, Data_String |
fld dword[ebx+4] |
fstp qword[Data_Double] |
call DoubleFloat_to_String |
stdcall [edit_box_set_text], edit2, Data_String |
fld dword[ebx+8] |
fstp qword[Data_Double] |
call DoubleFloat_to_String |
stdcall [edit_box_set_text], edit3, Data_String |
stdcall [edit_box_draw], edit1 |
stdcall [edit_box_draw], edit2 |
stdcall [edit_box_draw], edit3 |
@@: |
pop ebx eax |
ret |
align 4 |
sph_radius dd 0 ;à ¤¨ãá áä¥àë ¤«ï ¢ë¤¥«¥¨ï ªâ¨¢®© â®çª¨ |
obj_x_max dd 0 |
obj_x_min dd 0 |
obj_x_centr dd 0 |
obj_x_scale dd 1.0 |
obj_y_max dd 0 |
obj_y_min dd 0 |
obj_y_centr dd 0 |
obj_y_scale dd 1.0 |
obj_z_max dd 0 |
obj_z_min dd 0 |
obj_z_centr dd 0 |
obj_z_scale dd 1.0 |
capt_p dd 0 |
;¤¥à¥¢® á ®¡ê¥ªâ ¬¨ ¢ ¯®«ì§®¢ ⥫ì᪮¬ ä ©«¥ |
tree3 tree_list MAX_OBJECT_SIZE,3,\ |
tl_key_no_edit+tl_list_box_mode,\ |
16,16, 0xffffff,0xb0d0ff,0xd000ff, 5,30,300,160, 16, 4,0, el_focus,\ |
w_scr_t3,0 |
tree3 tree_list MAX_OBJECT_SIZE,3, tl_key_no_edit+tl_list_box_mode,\ |
16,16, 0xffffff,0xb0d0ff,0x400040, 5,270,303,160, 16, 4,0, el_focus,\ |
w_scr_t3,get_point_coords |
edit1 edit_box 80, 70, 200, 0xffffff, 0xff, 0x80ff, 0, 0x8000, 34, string1, mouse_dd, 0 |
edit2 edit_box 80, 154, 200, 0xffffff, 0xff, 0x80ff, 0, 0x8000, 34, string2, mouse_dd, 0 |
edit3 edit_box 80, 238, 200, 0xffffff, 0xff, 0x80ff, 0, 0x8000, 34, string3, mouse_dd, 0 |
edit1 edit_box 80, 76, 249, 0xffd0d0, 0xff, 0x80ff, 0, 0x8000, 34, string1, mouse_dd, 0 |
edit2 edit_box 80, 160, 249, 0xd0d0ff, 0xff, 0x80ff, 0, 0x8000, 34, string2, mouse_dd, 0 |
edit3 edit_box 80, 244, 249, 0xd0ffd0, 0xff, 0x80ff, 0, 0x8000, 34, string3, mouse_dd, 0 |
editboxes_end: |
string1 rb 34 |
325,19 → 628,4 |
string3 rb 34 |
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 |
w_scr_t3 scrollbar 16, 0,0,0, 15, 100,0,0, 0,0,0, 1 |