Subversion Repositories Kolibri OS

Compare Revisions

No changes between revisions

Regard whitespace Rev 3000 → Rev 3001

/programs/develop/libraries/vector/trunk/example_logo.asm
0,0 → 1,313
use32
org 0x0
db 'MENUET01' ;èäåíòèô. èñïîëíÿåìîãî ôàéëà âñåãäà 8 áàéò
dd 0x1
dd start
dd i_end ; ðàçìåð ïðèëîæåíèÿ
dd mem
dd stacktop
dd 0x0
dd cur_dir_path
 
include 'macros.inc'
include 'vectors.inc' ;vectors functions constant
include 'load_lib.mac'
 
@use_library
 
delt_angl dd 0.15708 ;óãîë ïîâîðîòà ïðè íàæàòèè êóðñîðîâ
delt_size dd 0.05 ;øàã èçìåíåíèÿ ìàñøòàáà
scale_min dd 0.05 ;ìèíèìàëüíûé ìàñøòàá
delt_x dd 10.0 ;ïåðåäâèæåíèå ïî îñè x
delt_y equ delt_x
 
arr0c:
.x dd 200.0
.y dd 150.0
.a dd 0.0 ;angle
.s dd 0.35 ;scale
arr1v:
dw 12+VECT_PARAM_PROP_L+VECT_PARAM_COLOR ;òóëîâèùå
dd 0xffd040
dd VECT_CONT_BEZIER
dd 6.0,128.0, 41.0,113.0, 175.0,94.0, 211.0,78.0
dd 263.0,48.0, 300.0,29.0, 345.0,30.0, 383.0,52.0
dd 415.0,85.0, 443.0,100.0, 476.0,112.0, 519.0,135.0
dw 32+VECT_PARAM_PROP_L
dd VECT_CONT_BEZIER
dd 6.0,128.0, 48.0,127.0, 119.0,116.0, 202.0,114.0
dd 233.0,127.0, 274.0,185.0, 300.0,211.0, 351.0,243.0
dd 386.0,271.0, 398.0,292.0, 429.0,328.0, 507.0,384.0
dd 517.0,401.0, 534.0,402.0, 545.0,388.0, 568.0,386.0
dd 587.0,370.0, 612.0,393.0, 660.0,409.0, 712.0,447.0
dd 711.0,422.0, 764.0,438.0, 837.0,481.0, 853.0,480.0
dd 838.0,470.0, 860.0,466.0, 836.0,451.0, 851.0,447.0
dd 796.0,412.0, 743.0,361.0, 719.0,335.0, 677.0,290.0
 
dw 23+VECT_PARAM_PROP_L ;êðûëüÿ
dd VECT_CONT_BEZIER
dd 437.0,130.0, 519.0,135.0, 591.0,139.0, 616.0,150.0
dd 697.0,163.0, 776.0,183.0, 849.0,230.0, 811.0,245.0
dd 808.0,265.0, 771.0,258.0, 769.0,281.0, 729.0,277.0
dd 718.0,296.0, 679.0,284.0, 665.0,294.0, 642.0,290.0
dd 636.0,304.0, 609.0,296.0, 596.0,306.0, 574.0,301.0
dd 541.0,299.0, 514.0,302.0, 495.0,299.0
dw 16+VECT_PARAM_PROP_L
dd VECT_CONT_BEZIER
dd 484.0,116.0, 514.0,110.0, 564.0,82.0, 618.0,63.0
dd 712.0,25.0, 774.0,25.0, 796.0,39.0, 778.0,51.0
dd 779.0,64.0, 754.0,78.0, 745.0,97.0, 720.0,113.0
dd 713.0,132.0, 688.0,146.0, 683.0,153.0, 668.0,158.0
 
dw 7+VECT_PARAM_PROP_L+VECT_PARAM_COLOR ;ãëàç
dd 0x0
dd VECT_CONT_BEZIER
dd 292.0,88.0, 278.0,78.0, 262.0,86.0, 261.0,101.0
dd 274.0,110.0, 291.0,105.0, 292.0,88.0, 778.0,51.0
dw 0
 
align 4
start:
mov ecx,sc
mov edx,sizeof.system_colors
mcall 48,3
mcall 40,0x27
 
sys_load_library vectors_name, cur_dir_path, library_path, system_path, \
err_message_found_lib, head_f_l, vectors_lib_import, err_message_import, head_f_i
 
push 5*65536+40
push 500*65536+350
push 0xffffd0 ;öâåò ôîíà
push word 24*256+1
call [vect_buf_create]
 
push word 1
call [vect_buf_set_active] ;óñòàíàâëèâàåì ðåæèì ðèñîâàíèÿ â 1-é áóôåð
 
red_win:
call draw_window
 
still:
mcall 10
 
cmp al,0x1 ;èçì. ïîëîæåíèå îêíà
jz red_win
cmp al,0x2
jz key
cmp al,0x3
jz button
jmp still
 
draw_window:
mcall 12,1
 
xor eax,eax
mov ebx,10*65536+520
mov ecx,10*65536+430
mov edx,0xffffff;[sc.work]
or edx,0x33000000
mov edi,hed
mcall
 
mov eax,4
mov ebx,5*65536+5
mov ecx,0x808000
or ecx,0x80000000
mov edx,txtInfo1
int 0x40
mov ebx,5*65536+20
mov edx,txtInfo2
int 0x40
 
call draw_vect_image
 
mcall 12,2
ret
 
draw_vect_image:
push word 1
call [vect_buf_clear] ;÷èñòèì 1-é áóôåð
 
push dword 0x808000
push dword arr1v
push dword arr0c
call [vect_draw_cont]
 
push word 1
call [vect_buf_draw] ;âûâîäèì 1-é áóôåð íà ýêðàí
ret
 
button:
; mcall 17 ;ïîëó÷èòü êîä íàæàòîé êíîïêè
; cmp ah,1
; jne still
.exit:
push word 1
call [vect_buf_delete] ;óäàëÿåì 1-é áóôåð
mcall -1 ;âûõîä èç ïðîãðàììû
 
key:
mcall 2
 
cmp ah,27 ;Esc
je button.exit
 
cmp ah,176 ;Left
jne @f
call Image_RotLeft
call draw_vect_image
@@:
cmp ah,179 ;Right
jne @f
call Image_RotRight
call draw_vect_image
@@:
cmp ah,178 ;Up
jne @f
fld dword[arr0c.s]
fadd dword[delt_size]
fstp dword[arr0c.s]
call draw_vect_image
@@:
cmp ah,177 ;Down
jne @f
call ScaleDec
call draw_vect_image
@@:
cmp ah,119 ;w
jne @f
call Image_MoveUp
call draw_vect_image
@@:
cmp ah,115 ;s
jne @f
call Image_MoveDown
call draw_vect_image
@@:
cmp ah,100 ;d
jne @f
call Image_MoveRight
call draw_vect_image
@@:
cmp ah,97 ;a
jne @f
call Image_MoveLeft
call draw_vect_image
@@:
 
jmp still
 
;d
Image_MoveRight:
fld dword[arr0c.x]
fadd dword[delt_x]
fstp dword[arr0c.x]
ret
 
;a
Image_MoveLeft:
fld dword[arr0c.x]
fsub dword[delt_x]
fstp dword[arr0c.x]
ret
 
;w
Image_MoveUp:
fld dword[arr0c.y]
fsub dword[delt_y]
fstp dword[arr0c.y]
ret
 
;s
Image_MoveDown:
fld dword[arr0c.y]
fadd dword[delt_y]
fstp dword[arr0c.y]
ret
 
Image_RotLeft:
mov bl,1
fld dword[arr0c.a]
fsub dword[delt_angl]
fstp dword[arr0c.a]
ret
 
Image_RotRight:
mov bl,1
fld dword[arr0c.a]
fadd dword[delt_angl]
fstp dword[arr0c.a]
ret
 
ScaleDec:
push ax
finit
fld dword[arr0c.s]
fsub dword[delt_size]
 
fcom dword[scale_min]
fstsw ax
sahf
jbe @f
fstp dword[arr0c.s]
@@:
pop ax
ret
 
o_dan dd ?
hed db 'Drawing vector image',0
txtInfo1 db 'Šãàá®àë: [',27,'], [',26,'] - ¯®¢®à®â; [',24,'], [',25,'] - à §¬¥à',0
txtInfo2 db 'Š­®¯ª¨: [a], [d] - ¢«¥¢®, ¢¯à ¢®; [w], [s] - ¢¢¥àå, ¢­¨§',0
sc system_colors
 
;--------------------------------------------------
align 4
vectors_lib_import:
vect_buf_create dd av_buf_create
vect_buf_set_active dd av_buf_set_active
vect_buf_clear dd av_buf_clear
vect_buf_draw dd av_draw_buf
vect_buf_delete dd av_buf_delete
vect_line dd av_line
vect_c_bezier dd av_c_bezier
vect_conv_cont dd av_conv_cont
vect_draw_cont dd av_draw_cont
vect_opred2i dd av_opred2i
vect_line_len4i dd av_line_len4i
vect_o_len dd av_o_len
vect_o_ang dd av_o_ang
 
dd 0,0
av_buf_create db 'vect_buf_create',0
av_buf_set_active db 'vect_buf_set_active',0
av_buf_clear db 'vect_buf_clear',0
av_draw_buf db 'vect_buf_draw',0
av_buf_delete db 'vect_buf_delete',0
av_line db 'vect_line',0
av_c_bezier db 'vect_c_bezier',0
av_conv_cont db 'vect_conv_cont',0
av_draw_cont db 'vect_draw_cont',0
av_opred2i db 'vect_opred2i',0
av_line_len4i db 'vect_line_len4i',0
av_o_len db 'vect_o_len',0
av_o_ang db 'vect_o_ang',0
 
;--------------------------------------------------
system_path db '/sys/lib/'
vectors_name db 'vectors.obj',0
err_message_found_lib db 'Sorry I cannot load library vectors.obj',0
head_f_i:
head_f_l db 'System error',0
err_message_import db 'Error on load import library vectors.obj',0
;--------------------------------------------------
 
i_end: ;êîíåö êîäà
rb 1024
stacktop:
cur_dir_path:
rb 4096
library_path:
rb 4096
mem:
 
/programs/develop/libraries/vector/trunk/vectors.asm
0,0 → 1,1251
format MS COFF
public EXPORTS
section '.flat' code readable align 16
 
include 'vectors.inc' ;vectors functions constant
 
macro swap v1, v2 {
push v1
push v2
pop v1
pop v2
}
 
BUF_STRUCT_SIZE equ 17 ;ðàçìåð ñòðóêòóðû, îïèñûâàþùåé áóôåð
BUF_MAX_COUNT equ 8 ;ìàêñèìàëüíîå ÷èñëî áóôåðîâ
 
fun_draw_pixel dd drawpixel_scrn ;óêàçàòåëü íà ôóíêöèþ ðèñîâàíèÿ òî÷êè
active_buffer: ;íà÷àëî ñòðóêòóðû àêòèâíîãî áóôåðà (áóôåðà â êîòîðûé äåëàåòñÿ ðèñîâàíèå ôèãóð èëè òåêñòà)
dd 0 ;óêàçàòåëü íà áóôåð èçîáðàæåíèÿ
dw 0 ; +4 left
dw 0 ; +6 top
dw 0 ; +8 w øèðèíà áóôåðà
dw 0 ;+10 h âûñîòà áóôåðà
dd 0 ;+12 color öâåò ôîíà
db 24 ;+16 bit in pixel ãëóáèíà öâåòà (â äàííîé âåðñèè åùå íå èñïîëüçóåòñÿ)
rb BUF_STRUCT_SIZE * BUF_MAX_COUNT ;ðåçåðâèðóåì ìåñòî äëÿ ñòðóêòóð, îïèñûâàþùèõ áóôåðà
;â àêòèâíîì áóôåðå áóäåò ñîäåðæàòüñÿ òî÷íàÿ êîïèÿ îäíîé èç ýòèõ ñòðóêòóð
 
 
active_buffer_left equ active_buffer+ 4
active_buffer_top equ active_buffer+ 6
active_buffer_w equ active_buffer+ 8
active_buffer_h equ active_buffer+10
active_buffer_color equ active_buffer+12
 
 
;-----------------------------------------------------------------------------
;ôóíêöèÿ äëÿ âûäåëåíèÿ ïàìÿòè
;input:
; ecx = size data
;otput:
; eax = pointer to memory
mem_Alloc:
push ebx
mov eax,68
mov ebx,12
int 0x40
pop ebx
ret
;-----------------------------------------------------------------------------
;ôóíêöèÿ äëÿ îñâîáîæäåíèÿ ïàìÿòè
;input:
; ecx = pointer to memory
mem_Free:
push eax ebx
cmp ecx,0
jz @f
mov eax,68
mov ebx,13
int 0x40
@@:
pop ebx eax
ret
 
;ôóíêöèÿ ðèñóþùàÿ òî÷êó ñðàçó íà ýêðàí (áåç ó÷àñòèÿ áóôåðà)
align 4
drawpixel_scrn:
bt bx,15
jc @f
bt cx,15
jc @f
; cmp bx,300
; jge @f
; cmp cx,300
; jge @f
int 0x40
@@:
ret
 
;ôóíêöèÿ ðèñóþùàÿ òî÷êó â àêòèâíîì áóôåðå
align 4
drawpixel_buf:
bt bx,15 ;ïðîâåðÿåì çíàê ÷èñëà, åñëè êîîðäèíàòà ìåíüøå 0
jc @f ;òîãäà òî÷êà â ýêðàí íå ïîïàëà, êîíåö ôóíêöèè
bt cx,15
jc @f
cmp bx,word[active_buffer_w] ;ïðîâåðÿåì êîîðäèíàòó òî÷êè, åñëè áîëüøå øèðèíû áóôåðà
jge @f ;òîãäà òî÷êà â ýêðàí íå ïîïàëà, êîíåö ôóíêöèè
cmp cx,word[active_buffer_h]
jge @f
 
push esi
xor esi,esi ;òóò áóäåò óêàçàòåëü íà ïèêñåëü èç àêòèâíîãî áóôåðà
mov si,word[active_buffer_w] ;øèðèíà áóôåðà ïî îñè x
imul esi,ecx ;size_x*y
add esi,ebx ;size_x*y+x
lea esi,[esi+esi*2] ;(size_x*y+x)*3
add esi,dword[active_buffer] ;ptr+(size_x*y+x)*3
 
mov word[esi],dx ;êîïèðóåì çåëåíûé è ñèíèé ñïåêòð
ror edx,16 ;êðóòèì öâåò íà 2 áàéòà
mov byte[esi+2],dl ;êîïèðóåì êðàñíûé ñïåêòð
ror edx,16 ;êðóòèì öâåò íàçàä
pop esi
@@:
ret
 
;ôóíêöèÿ ñîçäàþùàÿ íîâûé áóôåð, ïðèíèìàåò ïàðàìåòðû íóæíûå äëÿ ñòðóêòóðû
;input:
; [esp+8] = bit on pixel, index created buffer
; [esp+10] = color
; [esp+14] = size: w,h
; [esp+18] = size: l,t
align 4
buf_create:
push ebp
mov ebp,esp
cmp byte[ebp+8],1 ;ïðîâåðêà ïðàâèëüíîñòè èíäåêñà ñîçäàâàåìîãî áóôåðà
jl .error_ind ;ïîëüçîâàòåëü óêàçàë èíäåêñ ìåíüøå 1-öû, ... error :(
cmp byte[ebp+8],BUF_MAX_COUNT ;ïðîâåðêà ïðàâèëüíîñòè èíäåêñà ñîçäàâàåìîãî áóôåðà
jg .error_ind ;ïîëüçîâàòåëü óêàçàë èíäåêñ áîëüøå ìàêñèìàëüíî âîçìîæíîãî, ... error :(
push eax ecx edi esi
mov eax,dword[ebp+14] ;áåðåì øèðèíó è âûñîòó áóôåðà
ror eax,16 ;ìåíÿåì ìåñòàìè øèðèíó è âûñîòó, òàê áóäåò óäîáíåå ïðè âûâîäå äëÿ ôóíêöèè 7
mov dword[active_buffer_w],eax ;ïîìåùàåì çíà÷åíèÿ â ñòðóêòóðó àêòèâíîãî áóôåðà
 
xor ecx,ecx ;òóò âû÷èñëÿåì ñêîëüêî ïàìÿòè íóæíî äëÿ ýòîãî áóôåðà
mov cx,ax ;áåðåì íèæíèé ðàçìåð áóôåðà
shr eax,16 ;çàòèðàåì íèæíèé ðàçìåð, â eax òåïåðü òîëüêî âåðõíèé ðàçìåð, íà ìåñòå íèæíåãî
imul ecx,eax ;óìíîæàåì âûñîòó íà øèðèíó (ìîæåò è íàîáîðîò øèðèíó íà âûñîòó)
imul ecx,3 ; 24 bit = 3, 32 bit = 4 ... work if only 24
call mem_Alloc ;ïðîñèì ïàìÿòü èç ñèñòåìû
mov dword[active_buffer],eax ;êîïèðóåì óêàçàòåëü íà ïîëó÷åíóþ ïàìÿòü â ñòðóêòóðó àêòèâíîãî áóôåðà
 
mov eax,dword[ebp+18] ;áåðåì îòñòóïû ñëåâà è ñïðàâà
ror eax,16
mov dword[active_buffer_left],eax
 
mov eax,dword[ebp+10] ;get color - áåðåì öâåò äëÿ ôîíà
mov dword[active_buffer_color],eax
 
;êîïèðóåì âñþ ñòðóêòóðó àêòèâíîãî áóôåðà, â ïàìÿòü îòâåäåííóþ äëÿ áóôåðîâ
;èíà÷å åñëè ïîÿâèòñÿ íîâûé áóôåð, òî îí çàòðåò ñîáîé àêòèâíóþ ñòðóêòóðó
;ïîòîìó íóæíî äóáëèðîâàòü ýòó èíôîðìàöèþ
mov di,word[ebp+8] ;copy buffer struct
and edi,0xff ;index <= 255
mov ecx,BUF_STRUCT_SIZE ;â ecx ðàçìåð êîïèðóåìûõ äàííûõ
imul edi,ecx
mov esi,active_buffer
add edi,esi
rep movsb ;ïîâòîðÿåì êîïèðîâàíèå ïî áàéòó, ïîêà ecx ñòàíåò íå ðàâíî 0
 
push word[ebp+8] ;ïðè ñîçäàíèè áóôåðà, â íåì ìîæåò áûòü ìóñîð,
call buf_clear ;ïîòîìó ÷èñòèì åãî ôîíîâûì öâåòîì
pop esi edi ecx eax
.error_ind:
pop ebp
ret 14
 
;ôóíêöèÿ óñòàíîâêè àêòèâíîãî áóôåðà, åñëè íà âõîäå 0 - òî âêëþ÷àåòñÿ ðåæèì ðèñîâàíèÿ íà ýêðàí áåç áóôåðà
;input:
; [esp+8] = index buffer (0-screen)
align 4
set_active_buf:
push ebp
mov ebp,esp
 
cmp word[ebp+8],0
jne @f
.to_scrn:
mov dword[fun_draw_pixel],drawpixel_scrn ;ðèñîâàíèå â ýêðàí
jmp .end_fun
@@:
cmp byte[ebp+8],BUF_MAX_COUNT ;if buffer index out of range
jg .to_scrn
mov dword[fun_draw_pixel],drawpixel_buf ;ðèñîâàíèå â áóôåð
push ecx esi edi
mov si,word[ebp+8] ;copy buffer struct
and esi,0xff ;index <= 255
mov ecx,BUF_STRUCT_SIZE
imul esi,ecx
mov edi,active_buffer
add esi,edi
rep movsb
pop edi esi ecx
cmp dword[active_buffer],0 ;if buffer is empty
je .to_scrn
.end_fun:
pop ebp
ret 2
 
;ôóíêöèÿ î÷èñòêè áóôåðà ôîíîâûì öâåòîì
;input:
; [esp+8] = index buffer (0-screen)
align 4
buf_clear:
push ebp
mov ebp,esp
push eax ebx ecx edi
 
mov di,word[ebp+8] ;get pointer to buffer struct
and edi,0xff ;index <= 255
imul edi,BUF_STRUCT_SIZE
add edi,active_buffer ;edi = pointer to buffer struct
 
cmp dword[edi],0 ;ïðîâåðÿåì ïóñòîé óêàçàòåëü íà áóôåð èëè íåò
je .no_draw ;åñëè ïóñòîé, òî âûõîä
xor ecx,ecx ;òóò áóäåò ðàçìåð áóôåðà â ïèêñåëÿõ
mov cx,word[edi+8] ;active_buffer_w]
xor eax,eax
mov ax,word[edi+10] ;active_buffer_h]
imul ecx,eax ;ecx=x*y
mov ebx,dword[edi+12] ;active_buffer_color]
mov ax,bx
shr ebx,16
;imul ecx,3
;rep stosb
push dword[edi] ;save value in pointer
pop edi ;get value in pointer
@@:
mov word[edi],ax
add edi,2
mov byte[edi],bl
inc edi
loop @b
.no_draw:
pop edi ecx ebx eax
pop ebp
ret 2
 
;ôóíêöèÿ ðèñóþùàÿ ñîäåðæèìîå áóôåðà íà ýêðàíå, èñïîëüçóåò ÊÎÑ ôóíêöèþ íîìåð 7
;input:
; [esp+8] = index buffer (0-screen)
align 4
draw_buf:
push ebp
mov ebp,esp
 
mov di,word[ebp+8] ;get pointer to buffer struct
and edi,0xff ;index <= 255
imul edi,BUF_STRUCT_SIZE
add edi,active_buffer ;edi = pointer to buffer struct
 
mov eax,7
mov ebx,dword[edi] ;active_buffer]
mov ecx,dword[edi+8] ;active_buffer_w] ;ecx = w*0xffff+h
ror ecx,16
 
;push word[edi+4] ;active_buffer_left] ;çàãðóçêà òî÷êè ëåâîãî âåðõíåãî óãëà
;pop dx
mov dx,word[edi+4]
shl edx,16
;push word[edi+6] ;active_buffer_top] ;çàãðóçêà òî÷êè ëåâîãî âåðõíåãî óãëà
;pop dx
mov dx,word[edi+6]
int 0x40
 
pop ebp
ret 2
 
;ôóíêöèÿ î÷èùàþùàÿ ïàìÿòü, çàíèìàåìóþ áóôåðîì
;input:
; [esp+8] = index buffer (0-screen)
align 4
buf_delete:
push ebp
mov ebp,esp
 
mov cx,word[ebp+8] ;get pointer to buffer struct
and ecx,0xff ;index <= 255
imul ecx,BUF_STRUCT_SIZE
add ecx,active_buffer ;edi = pointer to buffer struct
 
push dword[ecx] ;save value in pointer
pop ecx ;get value in pointer
call mem_Free
 
pop ebp
ret 2
 
 
;ôóíêöèÿ ðèñóþùàÿ ëèíèþ
;input:
; [esp+8] = p0
; [esp+12] = p1
; [esp+16] = color
loc_0 equ byte[ebp-4]
loc_1 equ word[ebp-6]
loc_2 equ word[ebp-8]
align 4
line_brs:
push ebp
mov ebp,esp
sub esp,6 ;=1+2*2
pushad ;eax ebx ecx edx si di
mov edx,dword[ebp+16]
;---
mov ax,word[ebp+14] ;y1
; cmp ax,0 ;if y1<0 return
; jl .coord_end
; cmp word[ebp+10],0 ;if y0<0 return
; jl .coord_end
sub ax,word[ebp+10] ;y1-y0
bt ax,15
jae @f
neg ax
inc ax
@@:
mov bx,word[ebp+12] ;x1
; cmp bx,0 ;if x1<0 return
; jl .coord_end
; cmp word[ebp+8],0 ;if x0<0 return
; jl .coord_end
sub bx,word[ebp+8] ;x1-x0
bt bx,15
jae @f
neg bx
inc bx
@@:
 
mov byte[ebp-4],byte 0 ;bool steep=false
cmp ax,bx
jle @f
mov byte[ebp-4],byte 1 ;bool steep=true
swap word[ebp+8],word[ebp+10] ;swap(x0, y0);
swap word[ebp+12],word[ebp+14] ;swap(x1, y1);
@@:
mov ax,word[ebp+8] ;x0
cmp ax,word[ebp+12] ;if(x0>x1)
jle @f
swap word[ebp+8],word[ebp+12] ;swap(x0, x1);
swap word[ebp+10],word[ebp+14] ;swap(y0, y1);
@@:
 
; int deltax si
; int deltay di
; int error ebp-6
; int ystep ebp-8
 
mov ax,word[ebp+8] ;x=x0
mov si,word[ebp+12] ;x1
sub si,ax ;deltax = x1-x0
mov bx,si
shr bx,1
mov loc_1,bx ;error = deltax/2
 
mov ax,word[ebp+10] ;y=y0
mov di,word[ebp+14] ;y1
mov loc_2,word -1 ;ystep = -1
cmp ax,di ;if (y0<y1) ystep = 1;
jge @f
mov loc_2,word 1 ;ystep = 1
@@:
sub di,ax ;y1-y0
 
bts di,15
jae @f
neg di
inc di
@@:
and di,0x7fff ;deltay = abs(y1-y0)
 
mov eax,1 ;function, draw point
xor ebx,ebx
xor ecx,ecx
 
cmp byte[ebp-4],0
jne .coord_yx
mov bx,word[ebp+10] ;y0
mov cx,word[ebp+8] ;x0
 
@@: ;for (x=x0 ; x<x1; x++) ;------------------------------------
cmp cx,word[ebp+12]
jg @f ;jge ???
call dword[fun_draw_pixel]
 
sub loc_1,di ;error -= deltay
cmp loc_1,0 ;if(error<0)
jge .if0
add bx,loc_2 ;y += ystep
add loc_1,si ;error += deltax
.if0:
inc cx
jmp @b
@@:
 
jmp .coord_end
.coord_yx:
mov bx,word[ebp+8] ;x0
mov cx,word[ebp+10] ;y0
 
@@: ;for (x=x0 ; x<x1; x++) ;------------------------------------
cmp bx,word[ebp+12]
jg @f ;jge ???
call dword[fun_draw_pixel]
 
sub loc_1,di ;error -= deltay
cmp loc_1,0 ;if(error<0)
jge .if1
add cx,loc_2 ;y += ystep
add loc_1,si ;error += deltax
.if1:
inc bx
jmp @b
@@:
 
.coord_end:
;---
popad
mov esp,ebp ; âîññòàíàâëèâàåì ñòåê
pop ebp
ret 12
 
 
;input:
; [esp+8] = p0
; [esp+12] = p1
; [esp+16] = p2
; [esp+20] = color
align 4
cruve_bezier:
push ebp
mov ebp,esp
 
pushad
 
;float t, xt,yt;
;for(t=.0;t<1.;t+=.005){
; xt=pow(1.-t,2)*x0+2*t*(1.-t)*x1+pow(t,2)*x2;
; yt=pow(1.-t,2)*y0+2*t*(1.-t)*y1+pow(t,2)*y2;
; dc.SetPixel(xt,yt,255L);
;}
.beg_fun: ;äëÿ âõîäà èç äðóãîé ôóíêöèè
 
 
mov edx,dword[ebp+20] ;set cruve color
xor ebx,ebx
xor ecx,ecx
 
finit
 
; calculate delta t - âû÷èñëåíèå øàãà èçìåíåíèÿ ïàðàìåòðà t äëÿ ðèñîâàíèÿ êðèâîé Áåçüå
push dword[ebp+8]
push dword[ebp+12]
call line_len4i ;îïðåäåëÿåì äëèíó îòðåçêà p0p1
fld dword[o_len]
push dword[ebp+12]
push dword[ebp+16]
call line_len4i ;îïðåäåëÿåì äëèíó îòðåçêà p1p2
fadd dword[o_len] ;íàõîäèì ñóìàðíóþ äëèíó (p0p1 + p1p2)
fadd st0,st0 ; óìíîæàåì äëèííó (p0p1 + p1p2) íà 2
ftst
fstsw ax
 
fld1
sahf
jle @f ;èçáåãàåì äåëåíèÿ íà 0
fdiv st0,st1 ;íàõîäèì øàã äëÿ èçìåíåíèÿ ïàðàìåòðà t ïî ôîðìóëå 1 / (2 * (p0p1 + p1p2))
; ò.ê. ïðÿìàÿ â íåêîòîðûõ ñëó÷àÿõ "ðâåòñÿ", òî ÿ äóìàþ ÷òî äàííàÿ ôîðìóëà íå îïòèìàëüíà,
; íî íè÷åãî ëó÷øåãî ÿ ïîêà íå ïðèäóìàë, ... :(
@@:
fstp dword[delt_t]
 
finit
 
;fild word[ebp+18] ;y2
fild word[ebp+14] ;y1
fild word[ebp+10] ;y0
fild word[ebp+16] ;x2
fild word[ebp+12] ;x1
fild word[ebp+8] ;x0
fld dword[delt_t]
fldz ;t=.0
 
@@:
fld1
fsub st0,st1 ;1.-t
fmul st0,st0 ;pow(1.-t,2)
fmul st0,st3 ;...*x0
fstp dword[opr_param]
 
fld1
fsub st0,st1 ;1.-t
fmul st0,st1 ;(1.-t)*t
fadd st0,st0
fmul st0,st4 ;...*x1
mov edi,dword[opr_param]
fstp dword[opr_param]
 
fldz
fadd st0,st1 ;0+t
fmul st0,st0 ;t*t
fmul st0,st5 ;...*x2
 
fadd dword[opr_param]
mov dword[opr_param],edi
fadd dword[opr_param]
fistp word[v_poi_0] ;x
 
fld1
fsub st0,st1 ;1.-t
fmul st0,st0 ;pow(1.-t,2)
fmul st0,st6 ;...*y0
fstp dword[opr_param]
 
fld1
fsub st0,st1 ;1.-t
fmul st0,st1 ;(1.-t)*t
fadd st0,st0
fmul st0,st7 ;...*y1
mov edi,dword[opr_param]
fstp dword[opr_param]
 
fldz
fadd st0,st1 ;0+t
fmul st0,st0 ;t*t
fimul word[ebp+18] ;...*y2
 
fadd dword[opr_param]
mov dword[opr_param],edi
fadd dword[opr_param]
fistp word[v_poi_0+2] ;y
 
mov eax,1
mov bx,word[v_poi_0+2]
mov cx,word[v_poi_0]
call dword[fun_draw_pixel]
 
fadd st0,st1 ;t+dt
 
fld1
fcomp
fstsw ax
sahf
jae @b
 
.end_draw:
; btr word[opt_bez],0 ;ñíèìàåì ôëàã ðèñîâàíèÿ ïðÿìîé ëèíèè ñ êðèâîé Áåçüå
; btr word[opt_bez],1
;and word[opt_bez],0xfffc
popad
 
mov esp,ebp
pop ebp
ret 16
 
delt_t dd 0.05 ;øàã äëÿ ïàðàìåòðà t èç êðèâîé Áåçüå
 
;ôóíêöèÿ ðèñóþùàÿ ñåãìåíò êðèâóé Áåçüå ïî 3-ì òî÷êàì, ïðè ýòîì êîîðäèíàòû
; 1-é è 3-é òî÷êè ñìåùàþòñÿ êî 2-é òî÷êå, ïîçâîëÿÿ ðèñîâàòü äëèííóþ êðèâóþ èç íåñêîëüêèõ êóñêîâ
;input:
; [esp+8] = p0
; [esp+12] = p1
; [esp+16] = p2
; [esp+20] = color
align 4
cruve_bezier_del2:
; btr word[opt_bez],1 ;test
; ret 16 ;test
push ebp
mov ebp,esp
 
pushad
;jmp cruve_bezier.end_draw
 
bt word[opt_bez],1 ;ïðîâåðÿåì ôëàã ðèñîâàíèÿ îòðåçêà äëÿ 3-é òî÷êè (p2)
jae @f
push dword[ebp+20] ;line color
push dword[ebp+8]
@@:
 
;********* âûñ÷èòûâàíèå óñðåäíåííûõ êîîðäèíàò *********
mov ax,word[ebp+8] ;x0
add ax,word[ebp+12]
shr ax,1
bt ax,14
jae @f
or ax,0x8000
@@:
mov word[ebp+8],ax
 
mov ax,word[ebp+10] ;y0
add ax,word[ebp+14]
shr ax,1
bt ax,14
jae @f
or ax,0x8000
@@:
mov word[ebp+10],ax
 
btr word[opt_bez],1 ;ïðîâåðÿåì ôëàã ðèñîâàíèÿ îòðåçêà äëÿ 3-é òî÷êè (p2)
jae @f
push dword[ebp+8]
call line_brs ;ðèñóåì ïðÿìîé îòðåçîê
@@:
bt word[opt_bez],0 ;ïðîâåðÿåì ôëàã ðèñîâàíèÿ îòðåçêà äëÿ 1-é òî÷êè (p0)
jae @f
push dword[ebp+20] ;line color
push dword[ebp+16]
@@:
 
mov ax,word[ebp+16] ;x2
add ax,word[ebp+12]
shr ax,1
bt ax,14
jae @f
or ax,0x8000
@@:
mov word[ebp+16],ax
 
mov ax,word[ebp+18] ;y2
add ax,word[ebp+14]
shr ax,1
bt ax,14
jae @f
or ax,0x8000
@@:
mov word[ebp+18],ax
 
btr word[opt_bez],0 ;ïðîâåðÿåì ôëàã ðèñîâàíèÿ îòðåçêà äëÿ 1-é òî÷êè (p0)
jae @f
push dword[ebp+16]
call line_brs ;ðèñóåì ïðÿìîé îòðåçîê
@@:
 
;jmp cruve_bezier.end_draw
;********* ïåðåõîä íà îñíîâíóþ ôóíêöèþ *********
jmp cruve_bezier.beg_fun
 
 
;ôóíêöèÿ ðèñóþùàÿ òåêñò
;input:
; dword[ebp+8] = pointer to vector font data
; dword[ebp+12] = pointer to text param struct (color, x,y, angle, scale, ...)
; dword[ebp+16] = text string (0 - end string)
align 4
draw_text:
push ebp
mov ebp,esp
pushad
mov eax,dword[ebp+8]
mov ebx,dword[ebp+12]
mov edx,dword[ebp+16]
 
mov esi,ebx
add esi,4 ;skeep color
mov edi,text_point
mov ecx,12 ;(x+y+a)*3
rep movsb ;copy base point
 
finit
fild word[ebx+12+4]
fdiv dword[eax+4] ;sumbol height
fstp dword[text_point.s]
 
mov edi,dword[ebx];get color
xor esi,esi ;line number
;------------------------
@@:
cmp byte[edx],0
je @f
xor ecx,ecx
mov cl,byte[edx]
shl cx,2 ;cx*=4
add cx,32
add ecx,eax
 
;mov ecx,eax
;add ecx,32+256*4+4
 
push edi ;color
push dword[ecx] ;copy sumbol pointer
pop ecx
add ecx,eax ;äîáàâëÿåì ê ññûëêå íà ñèìâîë ñìåùåíèå íà÷àëà ñàìîãî øðèôòà
push dword ecx
push dword text_point ;output point
call draw_poly_line
 
cmp byte[edx],13
je .new_line
finit
fld dword[eax] ;sumbol width
fmul dword[text_point.s]
 
fld dword[text_point.a]
fcos
fmul st0,st1
fadd dword[text_point.x]
fstp dword[text_point.x]
 
fld dword[text_point.a]
fsin
fmul st0,st1
fadd dword[text_point.y]
fstp dword[text_point.y]
inc edx ;move next sumbol
jmp @b
.new_line:
push edi esi
mov esi,dword[ebp+12]
add esi,4 ;skeep color
mov edi,text_point
mov ecx,8 ;(x+y)*4
rep movsb ;restore base point
pop esi edi
 
inc esi
mov dword[opr_param],esi
 
finit
fld dword[eax+4] ;sumbol height
fmul dword[text_point.s]
fimul dword[opr_param]
 
fld1
fld1
fadd st0,st1
fldpi
fdiv st0,st1
fadd dword[text_point.a]
fcos
; fld dword[eax+4] ;sumbol height
; fmul dword[text_point.s]
fmul st0,st3
fadd dword[text_point.x]
fstp dword[text_point.x]
 
fld1
fld1
fadd st0,st1
fldpi
fdiv st0,st1
fadd dword[text_point.a]
fsin
; fld dword[eax+4] ;sumbol height
; fmul dword[text_point.s]
fmul st0,st5
fadd dword[text_point.y]
fstp dword[text_point.y]
inc edx ;move next sumbol
jmp @b
@@:
popad
pop ebp
ret 12
 
text_point: ;òî÷êà äëÿ âûâîäà òåêñòà
.x dd 0.0
.y dd 0.0
.a dd 0.0 ;angle
.s dd 1.0 ;scale
 
 
;ôóíêöèÿ äëÿ êîíâåðòèðîâàíèÿ êîîðäèíàò èç äåêàðòîâîé ñèñòåìû êîîðäèíàò â ïîëÿðíóþ
;input:
; dword[ebp+8] = pointer to contur
align 4
convert_contur:
push ebp
mov ebp,esp
 
push eax ebx ecx
mov ebx,dword[ebp+8]
finit
.new_contur:
mov cx,word[ebx]
or word[ebx],VECT_POINTS_IS_POLAR
 
add ebx,2
btr cx,15 ;VECT_PARAM_COLOR
jae @f
add ebx,4
@@:
btr cx,14 ;VECT_PARAM_PROP_L
jae @f
add ebx,4
@@:
btr cx,12 ;ïðîâåðêà êîíâåðòèðîâàííûõ
jae @f
and ecx,0xfff
cmp cx,0
je .end_contur
shl ecx,3
add ebx,ecx
jmp .new_contur
@@:
and cx,0xfff
cmp cx,0
je .end_contur
mov eax,opr_param
 
@@:
cmp cx,0
je .new_contur
dec cx
fld dword[ebx]
fistp word[eax]
fld dword[ebx+4]
fistp word[eax+2]
 
push dword[eax]
call opred2i
push dword[o_ang]
pop dword[ebx] ;x(n)
push dword[o_len]
pop dword[ebx+4] ;y(n)
 
add ebx,8 ;move next coord
jmp @b
.end_contur:
pop ecx ebx eax ebp
ret 4
 
;ôóíêöèÿ äëÿ ðèñîâàíèÿ êîíòóðîâ, ñîñòîÿùèõ èç ðàçíûõ íàáîðîâ òî÷åê (ïðÿìûå, Áåçüå)
;input:
; [esp+8] = x0,y0,a0,s0 - ïàðàìåòðû öåíòðàëüíîé òî÷êè: êîîðäèíàòû, óãîë ïîâîðîòà, ìàñøòàá
; [esp+12] = contur - êîíòóð, çàäàííûé êîîðäèíàòàìè òî÷åê
; [esp+16] = color - ïåðâîíà÷àëüíûé öâåò
align 4
draw_poly_line:
push ebp
mov ebp,esp
pushad
mov eax,dword[ebp+8]
mov ebx,dword[ebp+12]
mov edx,dword[ebp+16]
 
bt word[ebx],12 ;VECT_POINTS_IS_POLAR
jc @f
push dword ebx
call convert_contur
@@:
 
mov word[opt_bez],0 ;clear draw options
 
finit
fld dword[eax] ;x0 (st4)
fld dword[eax+4];y0 (st3)
fld dword[eax+8];a0 (st2)
fld dword[eax+12];s0(st1)
 
mov si,0 ;ñïëîøíàÿ ëèíèÿ, áåç ïðåðûâàíèé
 
.new_contur:
 
mov cx,word[ebx]
mov edi,ebx ;ðåçåðâíîå ñîõðàíåíèå íà÷àëà êîíòóðà
 
add ebx,2
btr cx,15 ;VECT_PARAM_COLOR
jae @f
mov edx,dword[ebx]
add ebx,4
@@:
btr cx,14 ;VECT_PARAM_PROP_L
jae @f
mov esi,dword[ebx] ;ïîëó÷àåì íîâûå ïàðàìåòðû ëèíèè
add ebx,4
btr si,9 ;VECT_CONT_BEZIER = 0x200
jc .BezB ;äàëüøå êîíòóð Áåçüå, íå ëèíåéíûé
and si,0xff
@@:
 
jmp .BezE
.BezB: ;ïðîïóñê âñåõ òî÷åê Áåçüå
bt word[opt_bez],2
jc .after_bez_draw
or word[opt_bez],4
 
push edx
push edi ;íà÷àëî êîíòóðà - ebx
push dword[ebp+8] ;eax
call draw_poly_bezier
.after_bez_draw:
and ecx,0xfff
cmp ecx,0
je .end_contur
 
shl ecx,3
add ebx,ecx
jmp .new_contur
.BezE:
 
and cx,0xfff
cmp cx,0
je .end_contur
 
mov di,cx
sub di,si
 
fld dword[ebx] ;st0=a(n)
fadd st0,st2
fcos
fmul dword[ebx+4] ;l(n)
fmul st0,st1 ;*=scale
fadd st0,st4
fistp word[v_poi_1+2] ;x(n)
 
fld dword[ebx] ;st0=a(n)
fadd st0,st2
fsin
fmul dword[ebx+4] ;l(n)
fmul st0,st1 ;*=scale
fadd st0,st3
fistp word[v_poi_1] ;y(n)
dec cx
add ebx,8 ;move next coord
 
@@: ;---------------------------------------------------------------
push dword[v_poi_1]
pop dword[v_poi_0]
; call draw_vect_point
 
cmp cx,0
je .new_contur ;âî èçáåæàíèå çàöèêëèâàíèÿ
 
fld dword[ebx] ;st0=a(n)
fadd st0,st2
fcos
fmul dword[ebx+4] ;l(n)
fmul st0,st1 ;*=scale
fadd st0,st4
fistp word[v_poi_1+2] ;x(n)
 
fld dword[ebx] ;st0=a(n)
fadd st0,st2
fsin
fmul dword[ebx+4] ;l(n)
fmul st0,st1 ;*=scale
fadd st0,st3
fistp word[v_poi_1] ;y(n)
add ebx,8 ;move next coord
 
cmp cx,di
je .end_draw_line
 
push dword edx ;line color
push dword[v_poi_0]
push dword[v_poi_1]
call line_brs
 
loop @b
jmp .new_contur
 
.end_draw_line: ;-------------------------------------------------------------
sub di,si
loop @b
jmp .new_contur
 
.end_contur:
popad
pop ebp
ret 12
 
;ôóíêöèÿ ðèñóþùàÿ ïîëèãîíû ñîñòîÿùèå èç êðèâûõ Áåçüå
;input:
; [esp+8] = x0,y0,a0,...
; [esp+12] = contur
; [esp+16] = color
align 4
draw_poly_bezier:
push ebp
mov ebp,esp
pushad
mov eax,dword[ebp+8]
mov ebx,dword[ebp+12]
mov edx,dword[ebp+16]
finit
fld dword[eax] ;x0 (st4)
fld dword[eax+4];y0 (st3)
fld dword[eax+8];a0 (st2)
fld dword[eax+12];s0(st1)
 
mov si,0 ;ñïëîøíàÿ ëèíèÿ, áåç ïðåðûâàíèé
 
.new_contur:
 
mov cx,word[ebx]
add ebx,2
btr cx,15
jae @f
mov edx,dword[ebx]
add ebx,4
@@:
btr cx,14 ;VECT_PARAM_PROP_L
jae @f
mov esi,dword[ebx] ;ïîëó÷àåì íîâûå ïàðàìåòðû ëèíèè
btr si,8 ;VECT_CONT_LINE = 0x100
;jc .end_contur ;äàëüøå êîíòóð ëèíåéíûé, íå Áåçüå
jae .skip
and ecx,0xfff
cmp ecx,0
je .end_contur
add ebx,4
shl ecx,3
add ebx,ecx
jmp .new_contur
.skip:
and si,0xff
add ebx,4
@@:
and ecx,0xfff
cmp ecx,0
je .end_contur
 
cmp si,1 ;ïðîâåðêà êîíòóðà íà 3 òî÷êè
je @f
cmp si,2
je @f
jmp .3pt
shl ecx,3
add ebx,ecx
 
jmp .new_contur
.3pt: ;òóò êîíòóðû ìèíèìóì ñ 3-ìÿ òî÷êàìè
 
mov di,si
 
fld dword[ebx] ;st0=a(n)
fadd st0,st2
fcos
fmul dword[ebx+4] ;l(n)
fmul st0,st1 ;*=scale
fadd st0,st4
fistp word[v_poi_1+2] ;x(n)
 
fld dword[ebx] ;st0=a(n)
fadd st0,st2
fsin
fmul dword[ebx+4] ;l(n)
fmul st0,st1 ;*=scale
fadd st0,st3
fistp word[v_poi_1] ;y(n)
dec cx
add ebx,8 ;move next coord
cmp cx,0
je .new_contur ;âî èçáåæàíèå çàöèêëèâàíèÿ
 
fld dword[ebx] ;st0=a(n)
fadd st0,st2
fcos
fmul dword[ebx+4] ;l(n)
fmul st0,st1 ;*=scale
fadd st0,st4
fistp word[v_poi_2+2] ;x(n)
 
fld dword[ebx] ;st0=a(n)
fadd st0,st2
fsin
fmul dword[ebx+4] ;l(n)
fmul st0,st1 ;*=scale
fadd st0,st3
fistp word[v_poi_2] ;y(n)
dec cx
add ebx,8 ;move next coord
 
or word[opt_bez],1 ;begin line
.bez_cycl: ;---------------------------------------------------------
 
dec di
push dword[v_poi_1]
pop dword[v_poi_0]
push dword[v_poi_2]
pop dword[v_poi_1]
 
cmp cx,0
je .new_contur ;âî èçáåæàíèå çàöèêëèâàíèÿ
 
fld dword[ebx] ;st0=a(n)
fadd st0,st2
fcos
fmul dword[ebx+4] ;l(n)
fmul st0,st1 ;*=scale
fadd st0,st4
fistp word[v_poi_2+2] ;x(n)
 
fld dword[ebx] ;st0=a(n)
fadd st0,st2
fsin
fmul dword[ebx+4] ;l(n)
fmul st0,st1 ;*=scale
fadd st0,st3
fistp word[v_poi_2] ;y(n)
add ebx,8 ;move next coord
 
cmp di,2
jne @f
or word[opt_bez],2 ;end line
@@:
cmp cx,1
jne @f
or word[opt_bez],2 ;end line
@@:
dec si
cmp di,si
jne @f
or word[opt_bez],1 ;begin line
@@:
inc si
cmp di,si
je @f
cmp di,1
je .end_draw_line
push dword edx ;line color
push dword[v_poi_0]
push dword[v_poi_1]
push dword[v_poi_2]
call cruve_bezier_del2
finit
fld dword[eax] ;x0 (st4)
fld dword[eax+4];y0 (st3)
fld dword[eax+8];a0 (st2)
fld dword[eax+12];s0(st1)
 
jmp @f
.end_draw_line: ;-------------------------------------------------------------
mov di,si
inc di
@@:
 
;loop .bez_cycl ;@b
dec cx
cmp cx,0
jg .bez_cycl
 
jmp .new_contur
.end_contur:
popad
pop ebp
ret 12
 
 
;ôóíêöèÿ ïðèíèìàåò êîîðäèíàòû òî÷êè x,y è îïðåäåëÿåò óãîë è äëèíó
;input:
; ebp+8 = adress int coord x
; ebp+10 = adress int coord y
align 4
opred2i:
push ebp
mov ebp,esp
finit
fild word [ebp+8]
fmul st0,st0 ;st0=x^2
fild word [ebp+10]
fmul st0,st0 ;st0=y^2
fadd st0,st1
fsqrt
fst dword [o_len]
cmp dword [o_len],0
jne @f
mov dword [o_ang],0
jmp .retf
@@:
fild word [ebp+8]
fdiv dword [o_len]
call acos
 
cmp word [ebp+10],0
jl @f
fst [o_ang] ;a=acos(x/l);
jmp .retf
@@:
 
fldpi
fadd st0,st0 ;st0=2*pi
fsub st0,st1 ;st0=2*pi-aac
fst [o_ang] ;a=st0;
.retf:
pop ebp
ret 4
 
;ôóíêöèÿ îïðåäåëÿþùàÿ ðàññòîÿíèå ìåæäó òî÷êàìè, ðåçóëüòàò ïîïàäàåò â o_len
;input:
; ebp+8 = p0
; ebp+12 = p1
align 4
line_len4i:
push ebp
mov ebp,esp
 
finit
fild word [ebp+8]
fisub word [ebp+12]
fmul st0,st0 ;st0=x^2
fild word [ebp+10]
fisub word [ebp+14]
fmul st0,st0 ;st0=y^2
fadd st0,st1
fsqrt
fstp dword [o_len]
 
pop ebp
ret 8
 
;ôóíêöèÿ äëÿ íàõîæäåíèÿ àðêêîñèíóñà
;input:
; st0 = float value
align 4
acos:
fld1
fadd st, st1
fld1
fsub st, st2
fmulp st1, st
fsqrt
fxch st1
fpatan
ret
 
o_len dd ? ;äëèíà
o_ang dd ? ;óãîë ïîðîòà â ðàäèàíàõ
opr_param dd ?
v_poi_0 dd ?
v_poi_1 dd ?
v_poi_2 dd ?
opt_bez dw ? ;îïöèè ðèñîâàíèÿ êóñêîâ äëÿ êðèâîé Áåçüå
 
align 16
EXPORTS:
dd sz_buf_create, buf_create
dd sz_set_active_buf, set_active_buf
dd sz_buf_clear, buf_clear
dd sz_draw_buf, draw_buf
dd sz_buf_delete, buf_delete
 
dd sz_line, line_brs
dd sz_cruve_bezier, cruve_bezier
dd sz_conv, convert_contur
dd sz_draw, draw_poly_line
dd sz_opred2i, opred2i
dd sz_line_len4i, line_len4i
dd sz_draw_text, draw_text
dd sz_o_len, o_len
dd sz_o_ang, o_ang
dd 0,0
sz_buf_create db 'vect_buf_create',0
sz_set_active_buf db 'vect_buf_set_active',0
sz_buf_clear db 'vect_buf_clear',0
sz_draw_buf db 'vect_buf_draw',0
sz_buf_delete db 'vect_buf_delete',0
 
sz_line db 'vect_line',0
sz_cruve_bezier db 'vect_c_bezier',0
sz_conv db 'vect_conv_cont',0
sz_draw db 'vect_draw_cont',0
sz_opred2i db 'vect_opred2i',0
sz_line_len4i db 'vect_line_len4i',0
sz_draw_text db 'vect_draw_text',0
sz_o_len db 'vect_o_len',0
sz_o_ang db 'vect_o_ang',0
 
/programs/develop/libraries/vector/trunk
Property changes:
Added: tsvn:logminsize
+5
\ No newline at end of property
/programs/develop/libraries/vector
Property changes:
Added: tsvn:logminsize
+5
\ No newline at end of property