Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 5937 → Rev 5938

/programs/develop/info3ds/info_wnd_coords.inc
4,7 → 4,11
;
 
prop_wnd_width equ 340 ;è¨à¨­  ®ª­  ᮠ᢮©á⢠¬¨ ®¡ê¥ªâ 
prop_wnd_height equ 460
prop_wnd_height equ 460 ;¢ëá®â  ®ª­  ᮠ᢮©á⢠¬¨ ®¡ê¥ªâ 
3d_wnd_l equ 5 ;®âáâ㯠¤«ï tinygl ¡ãä¥à  á«¥¢ 
3d_wnd_t equ 23 ;®âáâ㯠¤«ï tinygl ¡ãä¥à  ᢥàåã
3d_wnd_w equ 320
3d_wnd_h equ 240
SIZE_ONE_FLOAT equ 14
MAX_OBJECT_SIZE equ (4+SIZE_ONE_FLOAT*3+1)
 
12,8 → 16,20
bit_faces equ 1
bit_faces_fill equ 2
bit_light equ 3
def_dr_mode equ 0x1111b
 
ini_name db 'info3ds.ini',0
ini_sec_w3d db 'Window 3d',0
key_dv db 'draw_vertices',0
key_df db 'draw_faces',0
key_dff db 'draw_faces_fill',0
key_dl db 'draw_light',0
key_ox db 'col_ox',0
key_oy db 'col_oy',0
key_oz db 'col_oz',0
key_bk db 'col_bkgnd',0
key_vert db 'col_vertices',0
key_face db 'col_faces',0
 
prop_wnd_run db 0 ;¯¥à¥¬¥­­ ï á«¥¤ïé ï §  ⥬ çâ®-¡ë ­¥ § ¯ã᪠âì ¡®«ìè¥ 1-£® ®ª­  ᮠ᢮©á⢠¬¨ ®¤­®¢à¥¬¥­­®
 
txt_q db '?',0
46,29 → 62,68
cmp eax,0
je .no_points
mov ebx,[eax] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ë¡à ­­®£® ¡«®ª 
add ebx,[open_file_lif]
add ebx,[open_file_data]
 
cmp word[ebx],CHUNK_OBJBLOCK
jne .end_oblo
mov dword[capt_p],txt_4000
call found_block_data
cmp eax,0
je .no_points
mov esi,eax
movzx ecx,byte[esi+2] ;cl - ã஢¥­ì ¢ë¡à ­­®£® 㧫 
.cycle_0:
stdcall [tl_node_poi_get_next_info], tree1,esi
cmp eax,0
je .no_points
cmp byte[eax+2],cl
jle .no_points
mov esi,eax
stdcall [tl_node_poi_get_data], tree1,esi
mov ebx,[eax]
add ebx,[open_file_data]
cmp word[ebx],CHUNK_VERTLIST
je .ini_vlist
jmp .cycle_0
jmp .no_points
.end_oblo:
cmp word[ebx],CHUNK_TRIMESH
jne .end_trim
mov dword[capt_p],txt_4100
call found_block_data
cmp eax,0
je .no_points
mov esi,eax
movzx ecx,byte[esi+2] ;cl - ã஢¥­ì ¢ë¡à ­­®£® 㧫 
.cycle_1:
stdcall [tl_node_poi_get_next_info], tree1,esi
cmp eax,0
je .no_points
cmp byte[eax+2],cl
jle .no_points
mov esi,eax
stdcall [tl_node_poi_get_data], tree1,esi
mov ebx,[eax]
add ebx,[open_file_data]
cmp word[ebx],CHUNK_VERTLIST
je .ini_vlist
jmp .cycle_1
jmp .no_points
.end_trim:
cmp word[ebx],CHUNK_VERTLIST
jne .end_vlist
mov dword[capt_p],txt_4110
.ini_vlist:
movzx edx,word[ebx+6] ;ª®««¨ç¥á⢮ â®ç¥ª
add ebx,8
mov dword[capt_p],txt_4110
;¯®¨áª ¤ ­­ëå ¤«ï âà¥ã£®«ìª®¢
mov ecx,eax
stdcall [tl_node_poi_get_info], tree1,0
@@:
call found_block_data
cmp eax,0
je .set_points
mov esi,eax
stdcall [tl_node_poi_get_data], tree1,esi
cmp eax,ecx
je @f ;¥á«¨ ¯®¯ «¨ ­  ¢ë¡à ­­ë© 㧥«
stdcall [tl_node_poi_get_next_info], tree1,esi
cmp eax,0
jne @b
jmp .set_points
@@:
;¥á«¨ ­ è«¨ ¢ë¡à ­­ë© 㧥«, â® ¤ «¥¥ ¯ëâ ¥¬áï ­ ©â¨ 㧥« á âà¥ã£®«ì­¨ª ¬¨
movzx ecx,byte[esi+2] ;cl - ã஢¥­ì ¢ë¡à ­­®£® 㧫 
.cycle_0:
.cycle_2:
stdcall [tl_node_poi_get_next_info], tree1,esi
cmp eax,0
je .set_points
77,14 → 132,14
cmp byte[esi+2],cl
jl .set_points
je .found
jmp .cycle_0
jmp .cycle_2
.found: ;¥á«¨ ­ è«¨ 㧥« ⮣®¦¥ ã஢­ï çâ® ¨ ¢ë¡à ­­ë© 㧥«
cmp eax,0
je .set_points
mov eax,[eax]
add eax,[open_file_lif]
add eax,[open_file_data]
cmp word[eax],CHUNK_FACELIST
jne .cycle_0
jne .cycle_2
movzx ecx,word[eax+6]
mov [obj_tri_count],ecx
add eax,8 ;2+4+2 (chunk+size+count)
155,6 → 210,24
stdcall [edit_box_set_text], edit1, txt_q
stdcall [edit_box_set_text], edit2, txt_q
stdcall [edit_box_set_text], edit3, txt_q
mov eax,0xc0c0c0
mov ebx,[color_ox]
shr ebx,2
and ebx,0x3f3f3f
add eax,ebx
mov [edit1.color],eax
mov eax,0xc0c0c0
mov ebx,[color_oy]
shr ebx,2
and ebx,0x3f3f3f
add eax,ebx
mov [edit2.color],eax
mov eax,0xc0c0c0
mov ebx,[color_oz]
shr ebx,2
and ebx,0x3f3f3f
add eax,ebx
mov [edit3.color],eax
popad
 
call prop_red_win
207,7 → 280,8
add cx,word[buf_0.t]
shl ecx,16
mov cx,prop_wnd_height
mov edx,0xffffd0+0x33000000
mov edx,[sc.work]
or edx,0x33000000
int 0x40
 
mov esi,[sc.work_button]
215,7 → 289,7
mcall , (30 shl 16)+20, (266 shl 16)+20, 4
 
mov ebx,[image_data_toolbar]
add ebx,4*IMAGE_TOOLBAR_ICON_SIZE
add ebx,3*IMAGE_TOOLBAR_ICON_SIZE
mcall 7, , (16 shl 16)+16, (7 shl 16)+268 ;load
 
sub ebx,IMAGE_TOOLBAR_ICON_SIZE
238,16 → 312,41
;ãáâ ­®¢ª  ¢á¥å ®á­®¢­ëå ¯¥à¥¬¥­­ëå ¯® 㬮«ç ­¨î
align 4
prop_wnd_clear_param:
mov dword[angle_x],0.0
mov dword[angle_y],0.0
mov dword[angle_z],0.0
;ãáâ ­®¢ª  ¯ à ¬¥â஢ ®â®¡à ¦¥­¨ï
call mnu_reset_settings
 
;®¡­ã«¥­¨¥ 㪠§ â¥«¥© ­  ¤ ­­ë¥ ®¡ê¥ªâ®¢
mov dword[obj_poi_data],0
mov dword[obj_poi_count],0
mov dword[obj_tri_data],0
mov dword[obj_tri_count],0
mov dword[draw_mode],def_dr_mode
ret
 
;¯®¨áª ¤ ­­ëå
;input:
;eax - ⥪ã騩 㧥«
;output:
;eax - áâàãªâãà  â¥ªã饣® 㧫  (¨«¨ 0 ¯à¨ ­¥ã¤ ç¥)
align 4
found_block_data:
push ebx ecx
mov ecx,eax
stdcall [tl_node_poi_get_info], tree1,0
@@:
mov ebx,eax
stdcall [tl_node_poi_get_data], tree1,ebx
cmp eax,ecx
je @f ;¥á«¨ ¯®¯ «¨ ­  ¢ë¡à ­­ë© 㧥«
stdcall [tl_node_poi_get_next_info], tree1,ebx
cmp eax,0
jne @b
jmp .end
@@:
mov eax,ebx
.end:
pop ecx ebx
ret
 
;ãáâ ­®¢ª  à §¬¥à®¢ ®¡ê¥ªâ 
align 4
proc obj_set_sizes uses eax ebx esi
418,7 → 517,6
draw_3d:
cmp dword[obj_poi_count],2
jl .end_f
 
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;®ç¨á⨬ ¡ãä¥à æ¢¥â  ¨ £«ã¡¨­ë
stdcall [glPushMatrix]
bt dword[draw_mode],bit_light
439,7 → 537,7
;à¨á®¢ ­¨¥ â®ç¥ª
bt dword[draw_mode],bit_vertexes
jnc .end_points
stdcall [glColor3f], 1.0,1.0,1.0
stdcall [glColor3ub],[color_vert+2],[color_vert+1],[color_vert]
stdcall [glBegin],GL_POINTS
mov eax,[obj_poi_data]
mov ebx,[obj_poi_count]
459,13 → 557,13
mov eax,[eax]
 
stdcall [glBegin],GL_LINES
stdcall [glColor3f], 1.0, 0.0, 0.0
stdcall [glColor3ub],[color_ox+2],[color_ox+1],[color_ox]
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 [glColor3ub],[color_oy+2],[color_oy+1],[color_oy]
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 [glColor3ub],[color_oz+2],[color_oz+1],[color_oz]
stdcall [glVertex3f], [eax],[eax+4],[obj_z_min]
stdcall [glVertex3f], [eax],[eax+4],[obj_z_max]
stdcall [glEnd]
484,10 → 582,15
je .end_triangles
cmp dword[obj_poi_count],0
je .end_triangles
stdcall [glColor3f], 0.5,0.5,0.5
;bt dword[draw_mode],bit_faces_fill
;jnc @f
;@@:
bt dword[draw_mode],bit_faces_fill
jc @f
push GL_LINE
jmp .end_0
@@:
push GL_FILL
.end_0:
stdcall [glPolygonMode], GL_FRONT_AND_BACK ;mode - 㦥 ¢ á⥪¥
stdcall [glColor3ub],[color_face+2],[color_face+1],[color_face]
stdcall [glBegin],GL_TRIANGLES
mov eax,[obj_tri_data]
mov ecx,[obj_tri_count]
596,13 → 699,87
 
align 4
prop_mouse:
;push ecx edi
push eax ebx
mcall 37,3
bt eax,0
jnc .end_m
;mouse l. but. move
cmp dword[mouse_drag],1
jne .end_m
mcall 37,1 ;get mouse coords
mov ebx,eax
shr ebx,16 ;mouse.x
cmp ebx,3d_wnd_l
jg @f
mov ebx,3d_wnd_l
@@:
sub ebx,3d_wnd_l
cmp ebx,3d_wnd_w
jle @f
mov ebx,3d_wnd_w
@@:
and eax,0xffff ;mouse.y
cmp eax,3d_wnd_t
jg @f
mov eax,3d_wnd_t
@@:
sub eax,3d_wnd_t
cmp eax,3d_wnd_h
jle @f
mov eax,3d_wnd_h
@@:
finit
fild dword[mouse_y]
mov [mouse_y],eax
fisub dword[mouse_y]
fdiv dword[angle_dxm] ;¥á«¨ ªãàá®à ¤¢¨¦¥âáï ¯® ®á¨ y (¢¢¥àå ¨«¨ ¢­¨§) â® ¯®¢®à®â ¤¥« ¥¬ ¢®ªà㣠®á¨ x
fadd dword[angle_x]
fstp dword[angle_x]
 
fild dword[mouse_x]
mov [mouse_x],ebx
fisub dword[mouse_x]
fdiv dword[angle_dym] ;¥á«¨ ªãàá®à ¤¢¨¦¥âáï ¯® ®á¨ x (¢¢¥àå ¨«¨ ¢­¨§) â® ¯®¢®à®â ¤¥« ¥¬ ¢®ªà㣠®á¨ y
fadd dword[angle_y]
fstp dword[angle_y]
 
call draw_3d
jmp .end_d
.end_m:
bt eax,16
jnc @f
;mouse l. but. up
mov dword[mouse_drag],0
jmp .end_d
@@:
bt eax,8
jnc .end_d
;mouse l. but. press
mcall 37,1 ;get mouse coords
mov ebx,eax
shr ebx,16 ;mouse.x
cmp ebx,3d_wnd_l
jl .end_d
sub ebx,3d_wnd_l
cmp ebx,3d_wnd_w
jg .end_d
and eax,0xffff ;mouse.y
cmp eax,3d_wnd_t
jl .end_d
sub eax,3d_wnd_t
cmp eax,3d_wnd_h
jg .end_d
mov dword[mouse_drag],1
mov dword[mouse_x],ebx
mov dword[mouse_y],eax
.end_d:
 
stdcall [kmainmenu_dispatch_cursorevent], [main_menu]
stdcall [tl_mouse], tree3
stdcall [edit_box_mouse], edit1
stdcall [edit_box_mouse], edit2
stdcall [edit_box_mouse], edit3
;pop edi ecx
pop ebx eax
ret
 
align 4
693,9 → 870,19
@@:
cmp ah,7
jne @f
call mnu_faces_fill_on_off
jmp prop_still.end
@@:
cmp ah,8
jne @f
call mnu_light_on_off
jmp prop_still.end
@@:
cmp ah,9
jne @f
call mnu_reset_settings
jmp prop_still.end
@@:
 
cmp ah,1
jne prop_still.end
747,23 → 934,49
ret
endp
 
;¨§¬¥­ï¥¬ ०¨¬ à¨á®¢ ­¨ï ¢¥à設
align 4
mnu_vertexes_on_off:
xor dword[draw_mode], 1 shl bit_vertexes
ret
 
;¨§¬¥­ï¥¬ ०¨¬ à¨á®¢ ­¨ï £à ­¥©
align 4
mnu_faces_on_off:
xor dword[draw_mode], 1 shl bit_faces
ret
 
;¨§¬¥­ï¥¬ ª àª á­ë¥ ¨«¨ ᯫ®è­ë¥ £à ­¨
align 4
mnu_faces_fill_on_off:
xor dword[draw_mode], 1 shl bit_faces_fill
or dword[draw_mode], 1 shl bit_faces ;¢ª«îç ¥¬ ०¨¬ à¨á®¢ ­¨ï £à ­¥© (¥á«¨ ¢¤à㣠¡ë« ®âª«î祭)
ret
 
;¢ª«îç ¥¬ ¨«¨ ®âª«îç ¥¬ ®á¢¥é¥­¨¥
align 4
mnu_light_on_off:
xor dword[draw_mode], 1 shl bit_light
ret
 
align 4
draw_mode dd 0
mnu_reset_settings:
mov dword[angle_x],0.0
mov dword[angle_y],0.0
mov dword[angle_z],0.0
m2m dword[draw_mode],dword[def_dr_mode]
ret
 
align 4
def_dr_mode dd 0 ;०¨¬ à¨á®¢ ­¨ï ¯® 㬮«ç ­¨î
delt_size dd 3.0 ;¨§¬¥­¥­¨¥ 㣫®¢ ¯à¨ ¯®¢®à®â å á ª«¨¢¨ âãàë
mouse_drag dd 0 ;०¨¬ ¯®¢®à®â  áæ¥­ë ®â ¯¥à¥¬¥é¥­¨¨ ªãàá®à  ¬ëè¨
mouse_x dd 0
mouse_y dd 0
angle_dxm dd 1.7775 ;~ 3d_wnd_w/180 - ¯à¨¡ ¢«¥­¨¥ 㣫®¢ ¯®¢®à®â  áæ¥­ë ¯à¨ ¢à é¥­¨¨ ¬ë襩
angle_dym dd 1.3335 ;~ 3d_wnd_h/180
;angle_dzm dd ?
draw_mode dd 0 ;०¨¬ à¨á®¢ ­¨ï ®¡ê¥ªâ 
obj_poi_data dd 0 ;㪠§ â¥«ì ­  ª®®à¤¨­ âë ¢¥à設
obj_poi_count dd 0 ;ª®««¨ç¥á⢮ ¢¥à設
obj_tri_data dd 0 ;㪠§ â¥«ì ­  ¤ ­­ë¥ âà¥ã£®«ì­¨ª®¢