/programs/develop/libraries/buf2d/trunk/about.htm |
---|
54,6 → 54,7 |
<ul> |
<li><a href="#f_init">lib_init</a></li> |
<li><a href="#f_b_create">buf2d_create</a></li> |
<li><a href="#f_c_color">buf2d_crop_color</a></li> |
<li><a href="#f_v_brush_c">buf2d_vox_brush_create</a></li> |
</ul> |
</li> |
70,7 → 71,7 |
Åñòü ôóíêöèè ðèñîâàíèÿ ëèíèé, êðèâûõ Áåçüå, ïðÿìîóãîëüíèêîâ, îêðóæíîñòåé. |
Òàêæå åñòü ôóíêöèè äëÿ ðèñîâàíèé âîêñåëüíîé ãðàôèêè.</p> |
<p>Ïîñëåäíåå îáíîâëåíèå áèáëèîòåêè 12.06.12.</p> |
<p>Ïîñëåäíåå îáíîâëåíèå áèáëèîòåêè 21.06.12.</p> |
<h1><a name="format_buf">Ôîðìàòû áóôåðîâ</a></h1> |
<p>Ïîääåðæèâàåòñÿ 3 ôîðìàòà áóôåðîâ. |
203,16 → 204,16 |
<h4>buf2d_draw_text</h4> |
<p>Ðèñóåò òåêñò â áóôåðå, èñïîëüçóÿ ìàòðèöó ñ òåêñòîì ðàçìåðîì 1*256 ñèìâîëîâ. Ïðèìåð:</p> |
<pre>stdcall [buf2d_draw_text], buf_0, buf_1,some_text,20,10,0x4040ff ;ðèñóåì ñòðîêó ñ òåêñòîì</pre> |
<p>ãäå buf_0 - ñòðóêòóðà áóôåðà â êîòîðîì áóäåò ðèñîâàòüñÿ òåêñò; |
buf_1 - ñòðóêòóðà áóôåðà ñ òåêñòîâîé ìàòðèöåé â ôîðìàòå 8 áèò, ðàçìåðîì 1*256 ñèìâîëîâ; |
some_text - òåêñò, êîòîðûé áóäåò âûâåäåí â áóôåð buf_0.</p> |
<p>ãäå buf_0 - ñòðóêòóðà áóôåðà â êîòîðîì áóäåò ðèñîâàòüñÿ òåêñò;</p> |
<p>buf_1 - ñòðóêòóðà áóôåðà ñ òåêñòîâîé ìàòðèöåé â ôîðìàòå 8 áèò, ðàçìåðîì 1*256 ñèìâîëîâ;</p> |
<p>some_text - òåêñò, êîòîðûé áóäåò âûâåäåí â áóôåð buf_0.</p> |
<h4>buf2d_crop_color</h4> |
<h4><a name="f_c_color">buf2d_crop_color</a></h4> |
<p>Îáðåçàíèå áóôåðà, ïî óêàçàííîìó öâåòó. Ôóíêöèÿ èñïîëüçóåòñÿ äëÿ óìåíüøåíèÿ ïàìÿòè, çàíèìàåìîé áóôåðîì. Îòðåçàþòñÿ êðàéíèå ÷àñòè áóôåðà èìåþùèå îäèíàêîâûé öâåò. Ïðèìåð:</p> |
<pre>stdcall [buf2d_crop_color], buf_0,0xffffff,BUF2D_OPT_CROP_TOP+BUF2D_OPT_CROP_BOTTOM</pre> |
<p>ãäå buf_0 - ñòðóêòóðà áóôåðà êîòîðûé áóäåò îáðåçàí; |
0xffffff - öâåò ïî êîòîðîìó áóäåò îáðåçàòüñÿ áóôåð; |
BUF2D_OPT_CROP_TOP è BUF2D_OPT_CROP_BOTTOM - êîíñòàíòû, óêàçûâàþùèå ñ êàêèõ ñòîðîí îáðåçàòü áóôåð.</p> |
<p>ãäå buf_0 - ñòðóêòóðà áóôåðà êîòîðûé áóäåò îáðåçàí;</p> |
<p>0xffffff - öâåò ïî êîòîðîìó áóäåò îáðåçàòüñÿ áóôåð;</p> |
<p>BUF2D_OPT_CROP_TOP è BUF2D_OPT_CROP_BOTTOM - êîíñòàíòû, óêàçûâàþùèå ñ êàêèõ ñòîðîí îáðåçàòü áóôåð.</p> |
<h4>buf2d_offset_h</h4> |
<p>Ñäâèã èçîáðàæåíèÿ â áóôåðå ïî âûñîòå ââåðõ èëè âíèç.</p> |
220,11 → 221,11 |
<h4>buf2d_flood_fill</h4> |
<p>Ôóíêöèÿ äëÿ ðåêóðñèâíîé çàëèâêè âûáðàííûì öâåòîì. Èìååòñÿ äâà âàðèàíòà çàëèâêè. Ïðèìåð:</p> |
<pre>stdcall [buf2d_flood_fill], buf_0, 100,200, 0, 0xff,0xff0000</pre> |
<p>ãäå buf_0 - ñòðóêòóðà áóôåðà; |
100,200 - êîîðäèíàòû òî÷êè, ñ êîòîðîé íà÷íåòñÿ çàëèâêà; |
0 - ïàðàìåòð, îïðåäåëÿåò àëãîðèòì çàëèâêè (ìîæåò áûòü 0 èëè 1); |
0xff - öâåò çàëèâêè;</p> |
0xff0000 - çàâèñèò îò çíà÷åíèÿ 4-ãî ïàðàìåòðà, 1) åñëè 0 - öâåò äî êîòîðîãî áóäåò çàëèâàòüñÿ îáëàñòü; 2) åñëè 1 - öâåò îáëàñòè êîòîðàÿ áóäåò çàëèâàòñÿ;</p> |
<p>ãäå buf_0 - ñòðóêòóðà áóôåðà;</p> |
<p>100,200 - êîîðäèíàòû òî÷êè, ñ êîòîðîé íà÷íåòñÿ çàëèâêà;</p> |
<p>0 - ïàðàìåòð, îïðåäåëÿåò àëãîðèòì çàëèâêè (ìîæåò áûòü 0 èëè 1);</p> |
<p>0xff - öâåò çàëèâêè;</p> |
<p>0xff0000 - çàâèñèò îò çíà÷åíèÿ 4-ãî ïàðàìåòðà, 1) åñëè 0 - öâåò äî êîòîðîãî áóäåò çàëèâàòüñÿ îáëàñòü; 2) åñëè 1 - öâåò îáëàñòè êîòîðàÿ áóäåò çàëèâàòñÿ;</p> |
<h4>buf2d_set_pixel</h4> |
<p>Ôóíêöèÿ ñòàâèò òî÷êó, ïðèíèìàåò êîîðäèíàòû è öâåò.</p> |
246,6 → 247,9 |
<h4>buf2d_vox_brush_delete</h4> |
<p>Óäàëåíèå âîêñåëüíîé êèñòè.</p> |
<h4>buf2d_vox_obj_draw_1g</h4> |
<p>Ðèñîâàíèå âîêñåëüíîãî îáúåêòà ñ 1-é ãðàíüþ.</p> |
<h4>buf2d_vox_obj_get_img_w_3g</h4> |
<p>Âîçâðàøàåò øèðèíó âîêñåëüíîãî èçîáðàæåíèÿ ñ 3-ìÿ ãðàíÿìè (êîòîðîå ðèñóåòñÿ ôóíêöèåé <b>buf2d_vox_obj_draw_3g</b>), ïðèíèìàåò óêàçàòåëü íà êèñòü è ìàñøòàá.</p> |
269,13 → 273,13 |
<h1><a name="const">Êîíñòàíòû</a></h1> |
<h4>BUF2D_OPT_CROP_TOP equ 1</h4> |
<p>Êîíñòàíòà äëÿ ôóíêöèè buf2d_crop_color, îáîçíà÷àåò îáðåçêó áóôåðà ñâåðõó</p> |
<p>Êîíñòàíòà äëÿ ôóíêöèè <a href="#f_c_color">buf2d_crop_color</a>, îáîçíà÷àåò îáðåçêó áóôåðà ñâåðõó</p> |
<h4>BUF2D_OPT_CROP_LEFT equ 2</h4> |
<p>Êîíñòàíòà äëÿ ôóíêöèè buf2d_crop_color, îáîçíà÷àåò îáðåçêó áóôåðà ñëåâà</p> |
<p>Êîíñòàíòà äëÿ ôóíêöèè <a href="#f_c_color">buf2d_crop_color</a>, îáîçíà÷àåò îáðåçêó áóôåðà ñëåâà</p> |
<h4>BUF2D_OPT_CROP_BOTTOM equ 4</h4> |
<p>Êîíñòàíòà äëÿ ôóíêöèè buf2d_crop_color, îáîçíà÷àåò îáðåçêó áóôåðà ñíèçó</p> |
<p>Êîíñòàíòà äëÿ ôóíêöèè <a href="#f_c_color">buf2d_crop_color</a>, îáîçíà÷àåò îáðåçêó áóôåðà ñíèçó</p> |
<h4>BUF2D_OPT_CROP_RIGHT equ 8</h4> |
<p>Êîíñòàíòà äëÿ ôóíêöèè buf2d_crop_color, îáîçíà÷àåò îáðåçêó áóôåðà ñïðàâà</p> |
<p>Êîíñòàíòà äëÿ ôóíêöèè <a href="#f_c_color">buf2d_crop_color</a>, îáîçíà÷àåò îáðåçêó áóôåðà ñïðàâà</p> |
<h1><a name="tabl_e">Òàáëèöà ýêñïîðòà</a></h1> |
<p>Ïðèìåð òàáëèöû ýêñïîðòà, ðàñ÷èòàííîé íà èñïîëüçîâàíèå ìàêðîñà <b>@use_library_mem</b>:</p> |
312,6 → 316,7 |
;âîêñåëüíûå ôóíêöèè: |
buf2d_vox_brush_create dd sz_buf2d_vox_brush_create |
buf2d_vox_brush_delete dd sz_buf2d_vox_brush_delete |
buf2d_vox_obj_draw_1g dd sz_buf2d_vox_obj_draw_1g |
buf2d_vox_obj_get_img_w_3g dd sz_buf2d_vox_obj_get_img_w_3g |
buf2d_vox_obj_get_img_h_3g dd sz_buf2d_vox_obj_get_img_h_3g |
buf2d_vox_obj_draw_3g dd sz_buf2d_vox_obj_draw_3g |
352,6 → 357,7 |
;âîêñåëüíûå ôóíêöèè: |
sz_buf2d_vox_brush_create db 'buf2d_vox_brush_create',0 |
sz_buf2d_vox_brush_delete db 'buf2d_vox_brush_delete',0 |
sz_buf2d_vox_obj_draw_1g db 'buf2d_vox_obj_draw_1g',0 |
sz_buf2d_vox_obj_get_img_w_3g db 'buf2d_vox_obj_get_img_w_3g',0 |
sz_buf2d_vox_obj_get_img_h_3g db 'buf2d_vox_obj_get_img_h_3g',0 |
sz_buf2d_vox_obj_draw_3g db 'buf2d_vox_obj_draw_3g',0 |
/programs/develop/libraries/buf2d/trunk/buf2d.asm |
---|
2986,10 → 2986,172 |
endp |
;description: |
; äãªæ¨ï à¨áãîé ï ¢®ªá¥«ìë© ®¡ê¥ªâ |
; äãªæ¨ï à¨áãîé ï ¢®ªá¥«ìë© ®¡ê¥ªâ (¢¨¤ 1 £à ì) |
;input: |
; buf_i - ¡ãä¥à ¢ ª®â®à®¬ à¨áã¥âáï (24 ¡¨â ) |
; buf_z - ¡ãä¥à £«ã¡¨ë (32 ¡¨â ¯® ç¨á«ã ¯¨ªá¥«¥© ¤®«¦¥ ᮢ¯ ¤ âì á buf_i) |
align 4 |
proc buf_vox_obj_draw_1g, buf_i:dword, buf_z:dword, v_obj:dword, coord_x:dword,\ |
coord_y:dword, k_scale:dword |
cmp [k_scale],0 |
jl .end_f |
pushad |
mov edi,[buf_i] |
cmp buf2d_bits,24 |
jne .error1 |
mov edi,[buf_z] |
cmp buf2d_bits,32 |
jne .error2 |
mov ecx,[k_scale] |
mov ebx,[coord_x] |
mov edx,[coord_y] |
mov edi,[v_obj] |
add edi,vox_offs_data |
xor esi,esi |
stdcall draw_sub_vox_obj_1g, [buf_i],[buf_z],[v_obj] |
jmp .end_0 |
.error1: |
stdcall print_err,sz_buf2d_vox_obj_draw_1g,txt_err_n24b |
jmp .end_0 |
.error2: |
stdcall print_err,sz_buf2d_vox_obj_draw_1g,txt_err_n32b |
.end_0: |
popad |
.end_f: |
ret |
endp |
;input: |
; ebx - coord_x |
; edx - coord_y |
; esi - coord_z |
; ecx - ã஢¥ì ⥪ã襣® 㧫 |
; edi - 㪠§ â¥«ì ¤ ë¥ ¢®ªá¥«ì®£® ®¡ê¥ªâ |
align 4 |
proc draw_sub_vox_obj_1g, buf_i:dword, buf_z:dword, v_obj:dword |
cmp byte[edi+3],0 ;ᬮâਬ ¥áâì «¨ ¯®¤¤¥à¥¢ìï |
je .sub_trees |
;¯à®à¨á®¢ª à ¬ª¨ ¥á«¨ à §¬¥à 㧫 = 1 |
cmp ecx,0 |
jne @f |
;¯à®¢¥àª £«ã¡¨ë esi |
stdcall buf_get_pixel, [buf_z], ebx,edx, esi |
cmp eax,esi |
jge @f |
push ecx |
mov ecx,dword[edi] |
and ecx,0xffffff |
stdcall buf_set_pixel, [buf_i], ebx,edx, ecx |
stdcall buf_set_pixel, [buf_z], ebx,edx, esi |
pop ecx |
@@: |
;४ãàá¨¢ë© ¯¥à¥¡®à ¯®¤¤¥à¥¢ì¥¢ |
push edx |
;¢å®¤ ¢ãâàì 㧫 |
dec ecx |
mov eax,1 |
cmp ecx,1 |
jl @f |
shl eax,cl |
@@: |
add edx,eax ;ª®à¥ªâ¨à®¢ª ¢ëá®âë ¯®¤ ¢®ªá¥«ì ¨¦¥£® ã஢ï |
mov ah,byte[edi+3] |
add edi,4 |
mov al,8 |
.cycle: |
bt ax,8 ;â¥áâ¨à㥬 ⮫쪮 ah |
jnc .c_next |
push eax ebx edx esi |
stdcall vox_corect_coords_pl, [v_obj],1 |
stdcall draw_sub_vox_obj_1g, [buf_i],[buf_z],[v_obj] |
pop esi edx ebx eax |
.c_next: |
shr ah,1 |
dec al |
jnz .cycle |
;¢ë室 ¨§ 㧫 |
inc ecx |
pop edx |
jmp .end_f |
.sub_trees: |
cmp ecx,0 |
jl .end_0 ;¥ à¨á㥬 ®ç¥ì ¬ «¥ìª¨¥ ¢®ªá¥«¨ |
;à¨á㥬 㧥« |
mov eax,[edi] |
and eax,0xffffff |
cmp ecx,1 |
jl @f |
;ª¢ ¤à â ¡®«ìè¥ â¥ªã饣® ¬ áèâ ¡ |
stdcall vox_draw_square_1g, [buf_i],[buf_z],eax |
jmp .end_0 |
@@: |
;ª¢ ¤à â ⥪ã饣® ¬ áèâ ¡ |
push ecx |
mov ecx,eax |
stdcall buf_get_pixel, [buf_z], ebx,edx |
cmp eax,esi |
jge .end_1 |
stdcall buf_set_pixel, [buf_i], ebx,edx,ecx |
stdcall buf_set_pixel, [buf_z], ebx,edx,esi |
.end_1: |
pop ecx |
.end_0: |
add edi,4 |
.end_f: |
ret |
endp |
;output: |
; eax - à §àãè ¥âáï |
align 4 |
proc vox_draw_square_1g uses ecx edx edi, buf_i:dword, buf_z:dword, color:dword |
locals |
img_size dd ? |
coord_y dd ? |
endl |
mov edi,[buf_z] |
xor eax,eax |
inc eax |
shl eax,cl |
mov [img_size],eax |
mov [coord_y],eax |
.cycle_0: |
push ebx |
mov ecx,[img_size] |
cld |
.cycle_1: |
push ecx |
mov ecx,edx |
call get_pixel_32 |
pop ecx |
cmp eax,esi |
jge @f |
stdcall buf_set_pixel, [buf_i], ebx,edx, [color] |
stdcall buf_set_pixel, edi, ebx,edx, esi |
@@: |
inc ebx |
loop .cycle_1 |
pop ebx |
inc edx |
dec dword[coord_y] |
jnz .cycle_0 |
ret |
endp |
;description: |
; äãªæ¨ï à¨áãîé ï ¢®ªá¥«ìë© ®¡ê¥ªâ (¢¨¤® 3 £à ¨) |
;input: |
; buf_i - ¡ãä¥à ¢ ª®â®à®¬ à¨áã¥âáï (24 ¡¨â ) |
; buf_z - ¡ãä¥à £«ã¡¨ë (32 ¡¨â ¯® ç¨á«ã ¯¨ªá¥«¥© ¤®«¦¥ ᮢ¯ ¤ âì á buf_i) |
; h_br - ª¨áâì á ¨§®¡à ¦¥¨ï¬¨ ¢®ªá¥«¥© (32 ¡¨â ) |
; v_obj - ¢®ªá¥«ìë© ®¡ê¥ªâ |
; k_scale - ª®íä. ¤«ï ¬ áèâ ¡¨à®¢ ¨ï ¨§®¡à ¦¥¨ï |
3000,27 → 3162,10 |
mov edi,[v_obj] |
mov ecx,[k_scale] |
mov ebx,[coord_x] |
;--- |
;â¥á⮢ ï à ¬ª |
mov eax,[h_br] |
movzx edx,byte[eax] |
movzx esi,byte[eax+1] |
cmp ecx,1 |
jl .end_c0 |
shl edx,cl |
shl esi,cl |
.end_c0: |
stdcall buf_rect_by_size, [buf_i], ebx,[coord_y],edx,esi, 0xd0d0d0 |
;--- |
mov edx,[coord_y] |
add edi,vox_offs_data |
mov esi,[coord_z] |
stdcall vox_go_in_node, [buf_i], [buf_z], [h_br], [v_obj] |
popad |
ret |
endp |
3425,7 → 3570,7 |
pop ecx |
;eax - à §¬¥à ®¤®£® ª¢ ¤à â |
;edi - 㪠§ ⥫ì à¨áã¥¬ë¥ ¤ ë¥ ¨§ ®¡ê¥ªâ |
;edi - 㪠§ ⥫ì à¨áã¥¬ë¥ ¤ ë¥ ¨§ ®¡ê¥ªâ |
mov ebx,[coord_x] |
mov edx,[coord_y] |
mov edi,[v_obj] |
3432,7 → 3577,10 |
add edi,vox_offs_data |
xor esi,esi |
push eax |
imul eax,[n_plane] |
mov eax,1 |
shl eax,cl |
dec eax |
sub eax,[n_plane] |
stdcall draw_sub_vox_obj_pl, [buf_i],[v_obj], eax |
popad |
.end_f: |
3531,13 → 3679,16 |
mov eax,[v_size] |
;eax - à §¬¥à ®¤®£® ª¢ ¤à â |
;edi - 㪠§ ⥫ì à¨áã¥¬ë¥ ¤ ë¥ ¨§ ®¡ê¥ªâ |
;edi - 㪠§ ⥫ì à¨áã¥¬ë¥ ¤ ë¥ ¨§ ®¡ê¥ªâ |
mov ecx,[k_scale] |
mov ebx,[coord_x] |
mov edx,[coord_y] |
xor esi,esi |
push eax |
imul eax,[n_plane] |
mov eax,1 |
shl eax,cl |
dec eax |
sub eax,[n_plane] |
stdcall draw_sub_vox_obj_pl, [buf_i],[v_obj], eax |
.end_2: |
3652,8 → 3803,8 |
cmp ecx,0 |
jne @f |
;¯à®¢¥àª £«ã¡¨ë esi |
;clip_z=n_plane*v_size |
stdcall vox_is_clip, [clip_z],[v_size] |
;clip_z=n_plane |
stdcall vox_is_clip, [clip_z];,[v_size] |
cmp eax,0 |
je @f |
push ecx |
3665,7 → 3816,6 |
;४ãàá¨¢ë© ¯¥à¥¡®à ¯®¤¤¥à¥¢ì¥¢ |
push edx |
;¢å®¤ ¢ãâàì 㧫 |
dec ecx |
3674,6 → 3824,7 |
jl @f |
shl eax,cl |
@@: |
add edx,eax ;ª®à¥ªâ¨à®¢ª ¢ëá®âë ¯®¤ ¢®ªá¥«ì ¨¦¥£® ã஢ï |
mov ah,byte[edi+3] |
3690,11 → 3841,9 |
shr ah,1 |
dec al |
jnz .cycle |
;¢ë室 ¨§ 㧫 |
inc ecx |
pop edx |
jmp .end_f |
.sub_trees: |
cmp ecx,0 |
3701,8 → 3850,8 |
jl .end_0 ;¥ à¨á㥬 ®ç¥ì ¬ «¥ìª¨¥ ¢®ªá¥«¨ |
;¯à®¢¥àª £«ã¡¨ë esi |
;clip_z=n_plane*v_size |
stdcall vox_is_clip, [clip_z],[v_size] |
;clip_z=n_plane |
stdcall vox_is_clip, [clip_z] |
cmp eax,0 |
je .end_0 |
3732,7 → 3881,6 |
@@: |
;ª¢ ¤à â ⥪ã饣® ¬ áèâ ¡ |
stdcall buf_filled_rect_by_size, [buf_i], ebx,edx, eax,eax |
.end_0: |
add edi,4 |
.end_f: |
3744,14 → 3892,14 |
;input: |
; ecx - ã஢¥ì ⥪ã襣® 㧫 |
; esi - coord z |
; clip_z - n_plane*v_size |
; clip_z - n_plane |
;output: |
; eax - 0 if no draw, 1 if draw |
align 4 |
proc vox_is_clip uses ebx edi, clip_z:dword, v_size:dword |
proc vox_is_clip uses ebx edi, clip_z:dword |
xor eax,eax |
mov ebx,[clip_z] |
mov edi,[v_size] |
mov edi,1 |
cmp ecx,1 |
jl @f |
shl edi,cl |
3758,10 → 3906,10 |
@@: |
;edi = 2^ecx |
add edi,esi |
cmp edi,ebx ;if (esi+2^ecx*v_size <= (n_plane*v_size)) no draw |
cmp edi,ebx ;if (esi+2^ecx <= n_plane) no draw |
jle @f |
add ebx,[v_size] |
cmp esi,ebx ;if (esi >= (n_plane+1)*v_size) no draw |
inc ebx |
cmp esi,ebx ;if (esi >= (n_plane+1)) no draw |
jge @f |
inc eax |
@@: |
3795,9 → 3943,9 |
add edi,8 |
sub edi,eax |
mov eax,[v_size] ;eax - ¢ëá®â ®á®¢ ¨ï ¥¤¨¨ç®£® ¢®ªá¥«ï |
mov eax,[v_size] |
cmp ecx,1 |
jl @f ;¢® ¨§¡¥¦ ¨¥ § 横«¨¢ ¨ï |
jl @f |
shl eax,cl |
@@: |
3805,14 → 3953,19 |
jnc @f |
add ebx,eax |
@@: |
bt word[edi],1 ;test voxel coord y |
jnc @f |
add esi,eax ;¬¥ï¥¬ £«ã¡¨ã ¤«ï ¡ãä¥à z |
@@: |
bt word[edi],2 ;test voxel coord z |
jnc @f |
sub edx,eax |
@@: |
bt word[edi],1 ;test voxel coord y |
jc @f |
mov eax,1 |
cmp ecx,1 |
jl .end_0 |
shl eax,cl |
.end_0: |
add esi,eax ;¬¥ï¥¬ £«ã¡¨ã ¤«ï ¡ãä¥à z |
@@: |
pop edi eax |
.end_f: |
ret |
3933,6 → 4086,7 |
txt_err_n8b db 'need buffer 8 bit',13,10,0 |
txt_err_n24b db 'need buffer 24 bit',13,10,0 |
txt_err_n32b db 'need buffer 32 bit',13,10,0 |
txt_err_n8_24b db 'need buffer 8 or 24 bit',13,10,0 |
align 16 |
3968,6 → 4122,7 |
dd sz_buf2d_vox_brush_delete, vox_brush_delete |
dd sz_buf2d_vox_obj_get_img_w_3g, buf_vox_obj_get_img_w_3g |
dd sz_buf2d_vox_obj_get_img_h_3g, buf_vox_obj_get_img_h_3g |
dd sz_buf2d_vox_obj_draw_1g, buf_vox_obj_draw_1g |
dd sz_buf2d_vox_obj_draw_3g, buf_vox_obj_draw_3g |
dd sz_buf2d_vox_obj_draw_3g_scaled, buf_vox_obj_draw_3g_scaled |
dd sz_buf2d_vox_obj_draw_pl, buf_vox_obj_draw_pl |
4005,6 → 4160,7 |
sz_buf2d_vox_brush_delete db 'buf2d_vox_brush_delete',0 |
sz_buf2d_vox_obj_get_img_w_3g db 'buf2d_vox_obj_get_img_w_3g',0 |
sz_buf2d_vox_obj_get_img_h_3g db 'buf2d_vox_obj_get_img_h_3g',0 |
sz_buf2d_vox_obj_draw_1g db 'buf2d_vox_obj_draw_1g',0 |
sz_buf2d_vox_obj_draw_3g db 'buf2d_vox_obj_draw_3g',0 |
sz_buf2d_vox_obj_draw_3g_scaled db 'buf2d_vox_obj_draw_3g_scaled',0 |
sz_buf2d_vox_obj_draw_pl db 'buf2d_vox_obj_draw_pl',0 |
/programs/develop/libraries/buf2d/trunk/examples/build.bat |
---|
6,6 → 6,7 |
@copy foto.jpg bin\foto.jpg |
@copy img0.png bin\img0.png |
@copy img1.png bin\img1.png |
if not exist bin\vaz2106.vox @copy ..\..\..\..\..\media\voxel_editor\trunk\vaz2106.vox bin\vaz2106.vox |
@fasm.exe -m 16384 e0_dr_lines.asm bin\e0_dr_lines.kex |
@fasm.exe -m 16384 e1_scaling.asm bin\e1_scaling.kex |
13,6 → 14,8 |
@fasm.exe -m 16384 e3_text.asm bin\e3_text.kex |
@fasm.exe -m 16384 e4_graf_ed.asm bin\e4_graf_ed.kex |
@fasm.exe -m 16384 e5_lines_sm.asm bin\e5_lines_sm.kex |
@fasm.exe -m 16384 e6_vox_1g.asm bin\e6_vox_1g.kex |
@fasm.exe -m 16384 e7_vox_3g.asm bin\e7_vox_3g.kex |
@kpack bin\e0_dr_lines.kex |
@kpack bin\e1_scaling.kex |
20,4 → 23,6 |
@kpack bin\e3_text.kex |
@kpack bin\e4_graf_ed.kex |
@kpack bin\e5_lines_sm.kex |
@kpack bin\e6_vox_1g.kex |
@kpack bin\e7_vox_3g.kex |
pause |
/programs/develop/libraries/buf2d/trunk/examples/e6_vox_1g.asm |
---|
0,0 → 1,226 |
use32 |
org 0x0 |
db 'MENUET01' ;¨¤¥â¨ä. ¨á¯®«ï¥¬®£® ä ©« ¢á¥£¤ 8 ¡ ©â |
dd 0x1 |
dd start |
dd i_end ;à §¬¥à ¯à¨«®¦¥¨ï |
dd mem,stacktop |
dd 0,cur_dir_path |
include '../../../../../macros.inc' |
include '../../../../../proc32.inc' |
include '../../../../../develop/libraries/box_lib/load_lib.mac' |
include 'mem.inc' |
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc, 0 ;dll.Load |
struct FileInfoBlock |
Function dd ? |
Position dd ? |
Flags dd ? |
Count dd ? |
Buffer dd ? |
db ? |
FileName dd ? |
ends |
max_open_file_size equ 64*1024 ;64 Kb |
align 4 |
open_file_vox dd 0 ;㪠§ â¥«ì ®¡« áâì ¤«ï ®âªàëâ¨ï ä ©«®¢ |
run_file_70 FileInfoBlock |
f_name db 'vaz2106.vox',0 |
vox_offs_tree_table equ 4 |
;¯®¢®à®â ®¡ê¥ªâ 90 £à ¤ãᮢ |
;x0y0 - x1y0 |
;x1y0 - x1y1 |
;x0y1 - x0y0 |
;x1y1 - x0y1 |
align 4 |
proc vox_obj_rot_z uses eax ebx ecx, v_obj:dword |
mov ebx,[v_obj] |
add ebx,vox_offs_tree_table |
mov ecx,2 |
cld |
@@: |
mov eax,dword[ebx] |
mov byte[ebx+1],al |
mov byte[ebx+3],ah |
shr eax,16 |
mov byte[ebx],al |
mov byte[ebx+2],ah |
add ebx,4 |
loop @b |
ret |
endp |
align 4 |
start: |
load_library vectors_name, cur_dir_path, library_path, system_path, \ |
err_message_found_lib, head_f_l, import_buf2d_lib, err_message_import, head_f_i |
cmp eax,-1 |
jz button.exit |
mcall 40,0x27 |
stdcall [buf2d_create], buf_0 ;ᮧ¤ ¥¬ ¡ãä¥à |
stdcall [buf2d_create], buf_z |
stdcall mem.Alloc,max_open_file_size |
mov dword[open_file_vox],eax |
copy_path f_name,[32],file_name,0x0 |
mov eax,70 ;70-ï äãªæ¨ï à ¡®â á ä ©« ¬¨ |
mov [run_file_70.Function], 0 |
mov [run_file_70.Position], 0 |
mov [run_file_70.Flags], 0 |
mov dword[run_file_70.Count], max_open_file_size |
m2m [run_file_70.Buffer], [open_file_vox] |
mov byte[run_file_70+20], 0 |
mov dword[run_file_70.FileName], file_name |
mov ebx,run_file_70 |
int 0x40 ;§ £à㦠¥¬ ¢®ªá¥«ìë© ®¡ê¥ªâ |
stdcall [buf2d_vox_obj_draw_1g], buf_0, buf_z, [open_file_vox], 0,0, 7 |
stdcall vox_obj_rot_z, [open_file_vox] |
stdcall [buf2d_vox_obj_draw_1g], buf_0, buf_z, [open_file_vox], 128,0, 7 |
stdcall vox_obj_rot_z, [open_file_vox] |
stdcall [buf2d_vox_obj_draw_1g], buf_0, buf_z, [open_file_vox], 0,128, 7 |
stdcall vox_obj_rot_z, [open_file_vox] |
stdcall [buf2d_vox_obj_draw_1g], buf_0, buf_z, [open_file_vox], 128,128, 7 |
align 4 |
red_win: |
call draw_window |
align 4 |
still: |
mcall 10 |
cmp al,1 ;¨§¬¥¨«®áì ¯®«®¦¥¨¥ ®ª |
jz red_win |
cmp al,2 |
jz key |
cmp al,3 |
jz button |
jmp still |
align 4 |
draw_window: |
pushad |
mcall 12,1 |
mov edx,0x33000000 |
mcall 0,(50 shl 16)+330,(30 shl 16)+295,,,caption |
stdcall [buf2d_draw], buf_0 |
mcall 12,2 |
popad |
ret |
align 4 |
key: |
mcall 2 |
cmp ah,27 ;Esc |
je button.exit |
jmp still |
align 4 |
button: |
mcall 17 ;¯®«ãç¨âì ª®¤ ¦ ⮩ ª®¯ª¨ |
cmp ah,1 |
jne still |
.exit: |
stdcall [buf2d_delete],buf_0 ;㤠«ï¥¬ ¡ãä¥à |
stdcall [buf2d_delete],buf_z |
stdcall mem.Free,[open_file_vox] |
mcall -1 ;¢ë室 ¨§ ¯à®£à ¬¬ë |
caption db 'Test buf2d library, [Esc] - exit',0 |
;-------------------------------------------------- |
align 4 |
import_buf2d_lib: |
dd sz_lib_init |
buf2d_create dd sz_buf2d_create |
buf2d_clear dd sz_buf2d_clear |
buf2d_draw dd sz_buf2d_draw |
buf2d_delete dd sz_buf2d_delete |
;¢®ªá¥«ìë¥ äãªæ¨¨: |
;buf2d_vox_brush_create dd sz_buf2d_vox_brush_create |
;buf2d_vox_brush_delete dd sz_buf2d_vox_brush_delete |
buf2d_vox_obj_draw_1g dd sz_buf2d_vox_obj_draw_1g |
;buf2d_vox_obj_get_img_w_3g dd sz_buf2d_vox_obj_get_img_w_3g |
;buf2d_vox_obj_get_img_h_3g dd sz_buf2d_vox_obj_get_img_h_3g |
;buf2d_vox_obj_draw_3g dd sz_buf2d_vox_obj_draw_3g |
;buf2d_vox_obj_draw_3g_scaled dd sz_buf2d_vox_obj_draw_3g_scaled |
;buf2d_vox_obj_draw_3g_shadows dd sz_buf2d_vox_obj_draw_3g_shadows |
;buf2d_vox_obj_draw_pl dd sz_buf2d_vox_obj_draw_pl |
;buf2d_vox_obj_draw_pl_scaled dd sz_buf2d_vox_obj_draw_pl_scaled |
dd 0,0 |
sz_lib_init db 'lib_init',0 |
sz_buf2d_create db 'buf2d_create',0 |
sz_buf2d_clear db 'buf2d_clear',0 |
sz_buf2d_draw db 'buf2d_draw',0 |
sz_buf2d_delete db 'buf2d_delete',0 |
;¢®ªá¥«ìë¥ äãªæ¨¨: |
;sz_buf2d_vox_brush_create db 'buf2d_vox_brush_create',0 |
;sz_buf2d_vox_brush_delete db 'buf2d_vox_brush_delete',0 |
sz_buf2d_vox_obj_draw_1g db 'buf2d_vox_obj_draw_1g',0 |
;sz_buf2d_vox_obj_get_img_w_3g db 'buf2d_vox_obj_get_img_w_3g',0 |
;sz_buf2d_vox_obj_get_img_h_3g db 'buf2d_vox_obj_get_img_h_3g',0 |
;sz_buf2d_vox_obj_draw_3g db 'buf2d_vox_obj_draw_3g',0 |
;sz_buf2d_vox_obj_draw_3g_scaled db 'buf2d_vox_obj_draw_3g_scaled',0 |
;sz_buf2d_vox_obj_draw_3g_shadows db 'buf2d_vox_obj_draw_3g_shadows',0 |
;sz_buf2d_vox_obj_draw_pl db 'buf2d_vox_obj_draw_pl',0 |
;sz_buf2d_vox_obj_draw_pl_scaled db 'buf2d_vox_obj_draw_pl_scaled',0 |
align 4 |
buf_0: |
dd 0 ;㪠§ â¥«ì ¡ãä¥à ¨§®¡à ¦¥¨ï |
dw 20 ;+4 left |
dw 5 ;+6 top |
dd 256 ;+8 w |
dd 256 ;+12 h |
dd 0xffffff ;+16 color |
db 24 ;+20 bit in pixel |
align 4 |
buf_z: |
dd 0 ;㪠§ â¥«ì ¡ãä¥à ¨§®¡à ¦¥¨ï |
dw 20 ;+4 left |
dw 5 ;+6 top |
dd 256 ;+8 w |
dd 256 ;+12 h |
dd 0 ;+16 color |
db 32 ;+20 bit in pixel |
;-------------------------------------------------- |
system_path db '/sys/lib/' |
vectors_name db 'buf2d.obj',0 |
err_message_found_lib db 'Sorry I cannot load library buf2d.obj',0 |
head_f_i: |
head_f_l db 'System error',0 |
err_message_import db 'Error on load import library buf2d.obj',0 |
;-------------------------------------------------- |
i_end: ;ª®¥æ ª®¤ |
rb 1024 |
stacktop: |
file_name: |
rb 4096 |
cur_dir_path: |
rb 4096 |
library_path: |
rb 4096 |
mem: |
/programs/develop/libraries/buf2d/trunk/examples/e7_vox_3g.asm |
---|
0,0 → 1,249 |
use32 |
org 0x0 |
db 'MENUET01' ;¨¤¥â¨ä. ¨á¯®«ï¥¬®£® ä ©« ¢á¥£¤ 8 ¡ ©â |
dd 0x1 |
dd start |
dd i_end ;à §¬¥à ¯à¨«®¦¥¨ï |
dd mem,stacktop |
dd 0,cur_dir_path |
include '../../../../../macros.inc' |
include '../../../../../proc32.inc' |
include '../../../../../develop/libraries/box_lib/load_lib.mac' |
include 'mem.inc' |
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc, 0 ;dll.Load |
struct FileInfoBlock |
Function dd ? |
Position dd ? |
Flags dd ? |
Count dd ? |
Buffer dd ? |
db ? |
FileName dd ? |
ends |
max_open_file_size equ 64*1024 ;64 Kb |
align 4 |
open_file_vox dd 0 ;㪠§ â¥«ì ®¡« áâì ¤«ï ®âªàëâ¨ï ä ©«®¢ |
run_file_70 FileInfoBlock |
f_name db 'vaz2106.vox',0 |
BUF_STRUCT_SIZE equ 21 |
vox_offs_tree_table equ 4 |
;¯®¢®à®â ®¡ê¥ªâ 90 £à ¤ãᮢ |
;x0y0 - x1y0 |
;x1y0 - x1y1 |
;x0y1 - x0y0 |
;x1y1 - x0y1 |
align 4 |
proc vox_obj_rot_z uses eax ebx ecx, v_obj:dword |
mov ebx,[v_obj] |
add ebx,vox_offs_tree_table |
mov ecx,2 |
cld |
@@: |
mov eax,dword[ebx] |
mov byte[ebx+1],al |
mov byte[ebx+3],ah |
shr eax,16 |
mov byte[ebx],al |
mov byte[ebx+2],ah |
add ebx,4 |
loop @b |
ret |
endp |
align 4 |
start: |
load_library vectors_name, cur_dir_path, library_path, system_path, \ |
err_message_found_lib, head_f_l, import_buf2d_lib, err_message_import, head_f_i |
cmp eax,-1 |
jz button.exit |
mcall 40,0x27 |
stdcall [buf2d_create], buf_0 ;ᮧ¤ ¥¬ ¡ãä¥à |
stdcall [buf2d_create], buf_z |
stdcall [buf2d_vox_brush_create], buf_vox, vox_6_7_z ;ᮧ¤ ¥¬ ¢®ªá¥«ìãî ª¨áâì |
stdcall mem.Alloc,max_open_file_size |
mov dword[open_file_vox],eax |
copy_path f_name,[32],file_name,0x0 |
mov eax,70 ;70-ï äãªæ¨ï à ¡®â á ä ©« ¬¨ |
mov [run_file_70.Function], 0 |
mov [run_file_70.Position], 0 |
mov [run_file_70.Flags], 0 |
mov dword[run_file_70.Count], max_open_file_size |
m2m [run_file_70.Buffer], [open_file_vox] |
mov byte[run_file_70+20], 0 |
mov dword[run_file_70.FileName], file_name |
mov ebx,run_file_70 |
int 0x40 ;§ £à㦠¥¬ ¢®ªá¥«ìë© ®¡ê¥ªâ |
stdcall [buf2d_vox_obj_draw_3g], buf_0, buf_z, buf_vox,\ |
[open_file_vox], 0,0, 0, 6 ;à¨á㥬 ¢®ªá¥«ìë© ®¡ê¥ªâ |
stdcall [buf2d_vox_obj_draw_3g_shadows], buf_0, buf_z, buf_vox,\ |
0,0, 0, 6, 3 ;à¨á㥬 ⥨ |
stdcall vox_obj_rot_z, [open_file_vox] ;¯®¢®à 稢 ¥¬ |
stdcall [buf2d_vox_obj_draw_3g], buf_0, buf_z, buf_vox, [open_file_vox], 0,0, 0, 5 |
stdcall vox_obj_rot_z, [open_file_vox] |
stdcall [buf2d_vox_obj_draw_3g], buf_0, buf_z, buf_vox, [open_file_vox], 100,0, 0, 5 |
stdcall vox_obj_rot_z, [open_file_vox] |
stdcall [buf2d_vox_obj_draw_3g], buf_0, buf_z, buf_vox, [open_file_vox], 200,0, 0, 5 |
align 4 |
red_win: |
call draw_window |
align 4 |
still: |
mcall 10 |
cmp al,1 ;¨§¬¥¨«®áì ¯®«®¦¥¨¥ ®ª |
jz red_win |
cmp al,2 |
jz key |
cmp al,3 |
jz button |
jmp still |
align 4 |
draw_window: |
pushad |
mcall 12,1 |
mov edx,0x33000000 |
mcall 0,(50 shl 16)+410,(30 shl 16)+480,,,caption |
stdcall [buf2d_draw], buf_0 |
mcall 12,2 |
popad |
ret |
align 4 |
key: |
mcall 2 |
cmp ah,27 ;Esc |
je button.exit |
jmp still |
align 4 |
button: |
mcall 17 ;¯®«ãç¨âì ª®¤ ¦ ⮩ ª®¯ª¨ |
cmp ah,1 |
jne still |
.exit: |
stdcall [buf2d_delete],buf_0 ;㤠«ï¥¬ ¡ãä¥à |
stdcall [buf2d_delete],buf_z |
stdcall [buf2d_vox_brush_delete],buf_vox |
stdcall mem.Free,[open_file_vox] |
mcall -1 ;¢ë室 ¨§ ¯à®£à ¬¬ë |
caption db 'Test buf2d library, [Esc] - exit',0 |
;-------------------------------------------------- |
align 4 |
import_buf2d_lib: |
dd sz_lib_init |
buf2d_create dd sz_buf2d_create |
buf2d_clear dd sz_buf2d_clear |
buf2d_draw dd sz_buf2d_draw |
buf2d_delete dd sz_buf2d_delete |
;¢®ªá¥«ìë¥ äãªæ¨¨: |
buf2d_vox_brush_create dd sz_buf2d_vox_brush_create |
buf2d_vox_brush_delete dd sz_buf2d_vox_brush_delete |
;buf2d_vox_obj_draw_1g dd sz_buf2d_vox_obj_draw_1g |
;buf2d_vox_obj_get_img_w_3g dd sz_buf2d_vox_obj_get_img_w_3g |
;buf2d_vox_obj_get_img_h_3g dd sz_buf2d_vox_obj_get_img_h_3g |
buf2d_vox_obj_draw_3g dd sz_buf2d_vox_obj_draw_3g |
;buf2d_vox_obj_draw_3g_scaled dd sz_buf2d_vox_obj_draw_3g_scaled |
buf2d_vox_obj_draw_3g_shadows dd sz_buf2d_vox_obj_draw_3g_shadows |
;buf2d_vox_obj_draw_pl dd sz_buf2d_vox_obj_draw_pl |
;buf2d_vox_obj_draw_pl_scaled dd sz_buf2d_vox_obj_draw_pl_scaled |
dd 0,0 |
sz_lib_init db 'lib_init',0 |
sz_buf2d_create db 'buf2d_create',0 |
sz_buf2d_clear db 'buf2d_clear',0 |
sz_buf2d_draw db 'buf2d_draw',0 |
sz_buf2d_delete db 'buf2d_delete',0 |
;¢®ªá¥«ìë¥ äãªæ¨¨: |
sz_buf2d_vox_brush_create db 'buf2d_vox_brush_create',0 |
sz_buf2d_vox_brush_delete db 'buf2d_vox_brush_delete',0 |
;sz_buf2d_vox_obj_draw_1g db 'buf2d_vox_obj_draw_1g',0 |
;sz_buf2d_vox_obj_get_img_w_3g db 'buf2d_vox_obj_get_img_w_3g',0 |
;sz_buf2d_vox_obj_get_img_h_3g db 'buf2d_vox_obj_get_img_h_3g',0 |
sz_buf2d_vox_obj_draw_3g db 'buf2d_vox_obj_draw_3g',0 |
;sz_buf2d_vox_obj_draw_3g_scaled db 'buf2d_vox_obj_draw_3g_scaled',0 |
sz_buf2d_vox_obj_draw_3g_shadows db 'buf2d_vox_obj_draw_3g_shadows',0 |
;sz_buf2d_vox_obj_draw_pl db 'buf2d_vox_obj_draw_pl',0 |
;sz_buf2d_vox_obj_draw_pl_scaled db 'buf2d_vox_obj_draw_pl_scaled',0 |
align 4 |
buf_0: ;¡ãä¥à ®á®¢®£® ¨§®¡à ¦¥¨ï |
dd 0 ;㪠§ â¥«ì ¡ãä¥à ¨§®¡à ¦¥¨ï |
dw 5 ;+4 left |
dw 3 ;+6 top |
dd 6*64 ;+8 w |
dd 7*64 ;+12 h |
dd 0xffffff ;+16 color |
db 24 ;+20 bit in pixel |
align 4 |
buf_z: ;¡ãä¥à £«ã¡¨ë |
dd 0 ;㪠§ â¥«ì ¡ãä¥à ¨§®¡à ¦¥¨ï |
dw 0 ;+4 left |
dw 0 ;+6 top |
dd 6*64 ;+8 w |
dd 7*64 ;+12 h |
dd 0 ;+16 color |
db 32 ;+20 bit in pixel |
;¤ ë¥ ¤«ï ᮧ¤ ¨ï ¬¨¨¬ «ì®£® ¥¤¨¨ç®£® ¢®ªá¥«ï |
align 4 |
vox_6_7_z: |
dd 0,0,1,1,0,0,\ |
0,2,2,2,2,0,\ |
2,2,2,2,2,2,\ |
2,3,2,2,3,2,\ |
2,3,3,3,3,2,\ |
0,3,3,3,3,0,\ |
0,0,3,3,0,0 |
align 4 |
buf_vox: |
db 6,7,4,3 ;w,h,h_osn,n |
rb BUF_STRUCT_SIZE*(2+1) |
;-------------------------------------------------- |
system_path db '/sys/lib/' |
vectors_name db 'buf2d.obj',0 |
err_message_found_lib db 'Sorry I cannot load library buf2d.obj',0 |
head_f_i: |
head_f_l db 'System error',0 |
err_message_import db 'Error on load import library buf2d.obj',0 |
;-------------------------------------------------- |
i_end: ;ª®¥æ ª®¤ |
rb 1024 |
stacktop: |
file_name: |
rb 4096 |
cur_dir_path: |
rb 4096 |
library_path: |
rb 4096 |
mem: |