convert line ends
[canaan.git] / prj / tech / libsrc / r3d / xform.h
blob5906a5d6dacbf7d22ad850ba484c990130e6a728
1 // $Header: x:/prj/tech/libsrc/r3d/RCS/xform.h 1.9 1998/06/18 11:27:29 JAEMZ Exp $
2 // Transform and projection definitions
4 #ifndef __XFORM_H
5 #define __XFORM_H
7 #include <ctxts.h>
10 // define to dereference global f pointer
11 #define R3_XFORM(x) (*((r3d_glob.xform_tab).x))
13 // The basic set of transformers and projectors are as follows. The
14 // project class of functions just projects, stuffing the sx,sy, and w
15 // values into the 2d part of the point. The rotate class of functions
16 // just
18 // some of these will be function pointers
19 EXTERN void r3_transform_block(int n,r3s_point dst[],mxs_vector src[]);
20 #define r3_rotate_block(n,dst,src) (R3_XFORM(rotate_block)((n),(dst),(src)))
21 #define r3_project_block(n,p) (R3_XFORM(project_block)((n),(p)))
22 #define r3_transform_block_func R3_XFORM(transform_block)
24 EXTERN void r3_transform_list(int n,r3s_phandle dst[],mxs_vector *src[]);
25 EXTERN void r3_rotate_list(int n,r3s_phandle dst[],mxs_vector *src[]);
26 EXTERN void r3_project_list(int n,r3s_phandle p[]);
28 #define r3_transform_point(dst,src) r3_transform_block(1,(dst),(src))
29 #define r3_rotate_point(dst,src) (R3_XFORM(rotate_block)(1,(dst),(src)))
30 #define r3_project_point(p) (R3_XFORM(project_block)(1,(p)))
32 // This is the preferred model, especially since every tile renderer is
33 // fixed anyway it gets you the delta to add to your transformed points.
34 // It stuffs the delta into dst.
36 EXTERN void r3_get_delta(mxs_vector *dst,mxs_vector *src);
37 EXTERN void r3_copy_add_delta(r3s_point *dst,r3s_point *src,mxs_vector *delta);
41 #endif // XFORM