home *** CD-ROM | disk | FTP | other *** search
/ Borland Programmer's Resource / Borland_Programmers_Resource_CD_1995.iso / code / vlibbc / visualib.h < prev    next >
C/C++ Source or Header  |  1995-05-18  |  11KB  |  261 lines

  1. #define WVBLACK        0
  2. #define WVRED        1
  3. #define WVGREEN        2
  4. #define WVBLUE        3
  5. #define WVBROWN        4
  6. #define WVMAGENTA    5
  7. #define WVCYAN        6
  8. #define WVWHITE        7
  9. #define WVGRAY        8
  10. #define WVLIGHTRED    9
  11. #define WVLIGHTGREEN    10
  12. #define WVLIGHTBLUE    11
  13. #define WVYELLOW    12
  14. #define WVLIGHTMAGENTA    13
  15. #define WVLIGHTCYAN    14
  16. #define WVLIGHTGRAY    15
  17.  
  18. typedef struct {    /* 2D floating point coordinates */
  19.     float    x, y, w;
  20. } POINT2D;
  21.  
  22. typedef struct {    /* 3D floating point coordinates */
  23.     float    x, y, z, w;
  24. } POINT3D;
  25.  
  26. typedef WORD        HVIEW;        /* Handle of viewer */
  27. typedef    float        *Vector;    /* Pointer to vector */
  28. typedef    POINT2D        *LPPOINT2D;    /* Pointer to 2D points */
  29. typedef POINT3D        *LPPOINT3D;    /* Pointer to 3D points */
  30.  
  31. /*****************************************************************************
  32.  
  33.         Misc Functions
  34.  
  35. *****************************************************************************/
  36.  
  37. short    BackfaceCulling (short flag);
  38. short    CountClockwise (short flag);
  39. void    AssignPoint2D (POINT2D p, float x, float y);
  40. void    AssignPoint3D (POINT3D p, float x, float y, float z);
  41. float    DegreeToRadian (float Degree);
  42. float    RadianToDegree (float Radian);
  43. HVIEW    CreateViewer2D (NPSTR Name, int X, int Y, int Width, int Height);
  44. HVIEW    CreateViewer3D (NPSTR Name, int X, int Y, int Width, int Height);
  45.  
  46. /*****************************************************************************
  47.  
  48.         System Configuration Function
  49.  
  50. *****************************************************************************/
  51.  
  52. void    Max2DViewer (short n);
  53. void    Max3DViewer (short n);
  54. void    Max2DMStack (short n);
  55. void    Max3DMStack (short n);
  56.  
  57. short    InitialGraphics2D (short nview, short npoint, short ndepth);
  58. short    InitialGraphics3D (short nview, short npoint, short ndepth);
  59. void    ExitGraphics (void);
  60. HPEN    PenColor (HDC hDC, short color_index);
  61. HBRUSH    BrushColor (HDC hDC, short color_index);
  62.  
  63. /*****************************************************************************
  64.  
  65.         Matrix Stack Operation Function
  66.  
  67. *****************************************************************************/
  68.  
  69. short    PushMatrix2D (void);
  70. short    PushMatrix3D (void);
  71. short    PopMatrix2D (void);
  72. short    PopMatrix3D (void);
  73.  
  74. /*****************************************************************************
  75.  
  76.             Transformtion Function
  77.  
  78. *****************************************************************************/
  79.  
  80. /* Model view transformation matrix */
  81. short    SetView3D (HVIEW hview, float vx, float vy, float vz,
  82.         float rx, float ry, float rz, float twist);
  83. short    SetPolarView3D (HVIEW hview, float cx, float cy, float cz,
  84.         float dist, float azim, float inc, float twist);
  85. short    SetView2D (HVIEW hview,    float x, float y, float angle);
  86. short    SetProjection2D (HVIEW hview, float left, float right,
  87.         float bottom, float top);
  88. short    SetWindow2D (HVIEW hview, float x1, float y1, float x2, float y2);
  89. short    SetPerspective3D (HVIEW hview, float fovy, float aspect,
  90.         float front, float back);
  91. short    SetOrthogonal3D (HVIEW hview, float left, float right,
  92.         float bottom, float top, float front, float back);
  93. short    SetWindow3D (HVIEW hview, float left, float right,
  94.         float top, float bottom, float front, float back);
  95. short    SetViewport2D (HVIEW hview, short x, short y, short w, short h);
  96. short    SetViewport3D (HVIEW hview, short x, short y, short w, short h);
  97. short    SelectViewer3D (HVIEW hview);
  98. short    SelectViewer2D (HVIEW hview);
  99.  
  100. /*****************************************************************************
  101.  
  102.                 View Moving Function
  103.  
  104. *****************************************************************************/
  105.  
  106. short    MoveViewer3D (HVIEW hview, float LR, float UD, float BF);
  107. short    MoveWorld3D (HVIEW hview, float X, float Y, float Z);
  108. short    RotateViewer3D (HVIEW hview, float Yaw, float Pitch, float Twist);
  109. short    RotateWorld3D (HVIEW hview, float X, float Y, float Z);
  110. short    ZoomViewer3D (HVIEW hview, float zoom);
  111. short    MoveViewer2D (HVIEW hview, float LeftRight, float UpDown);
  112. short    RotateViewer2D (HVIEW hview, float Angle);
  113. short    ZoomViewer2D (HVIEW hview, float zoom);
  114.  
  115. short    Num2DViewer (void);
  116. short    Num3DViewer (void);
  117. short    ValidHView2D (HVIEW hview);
  118. short    ValidHView3D (HVIEW hview);
  119. short    DisplayViewerFrame2D (HDC hDC, HVIEW hview, short color);
  120. short    DisplayViewerName2D (HDC hDC, HVIEW hview, short color, short top);
  121. short    DisplayViewerFrame3D (HDC hDC, HVIEW hview, short color);
  122. short    DisplayViewerName3D (HDC hDC, HVIEW hview, short color, short top);
  123. short    ClearViewer3D (HDC hDC, HVIEW hview, short color);
  124. short    ClearViewer2D (HDC hDC, HVIEW hview, short color);
  125. short    ViewerPosition2D (HVIEW hview, float *cx, float *cy, float *angle);
  126. short    ViewerField3D (HVIEW hview, float *left, float *right,
  127.         float *bottom, float *top, float *front, float *back);
  128. short    ViewerField2D (HVIEW hview, float *left, float *right,
  129.         float *top, float *bottom);
  130. short    ViewerMode3D (HVIEW hview);
  131.  
  132. /*****************************************************************************
  133.  
  134.             Transformation Function
  135.  
  136. *****************************************************************************/
  137.  
  138. void    Rotate3D (float angle, char axis);
  139. void    Translate3D (float x, float y, float z);
  140. void    Scale3D (float x, float y, float z);
  141.  
  142. void    Translate2D (float x, float y);
  143. void    Rotate2D (float angle);
  144. void    Scale2D (float x, float y);
  145.  
  146. /*****************************************************************************
  147.  
  148.             Camera Information Functions
  149.  
  150. *****************************************************************************/
  151.  
  152. short    GetViewerName2D (HVIEW hview, NPSTR name);
  153. short    SetViewerName2D (HVIEW hview, NPSTR name);
  154. short    GetViewerName3D (HVIEW hview, NPSTR name);
  155. short    SetViewerName3D (HVIEW hview, NPSTR name);
  156. short    GetViewport2D (HVIEW hview, short *x, short *y, short *w, short *h);
  157. short    GetViewport3D (HVIEW hview, short *x, short *y, short *w, short *h);
  158.  
  159. /*****************************************************************************
  160.  
  161.             Drawing Functions
  162.  
  163. *****************************************************************************/
  164.  
  165. void    MoveTo2D (HDC hDC, float x, float y);
  166. void    LineTo2D (HDC hDC, float x, float y);
  167. void    DrawLine2D (HDC hDC, float x1, float y1, float x2, float y2);
  168. void    Polyline2D (HDC hDC, LPPOINT2D point, short count);
  169. void    Polygon2D (HDC hDC, LPPOINT2D vertex, short count);
  170. void    ResetVertex2D (void);
  171. void    SetVertex2D (float x, float y);
  172. short    RectangleVertex2D (float x1, float y1, float x2, float y2,
  173.         LPPOINT2D vertex);
  174. void    Rectangle2D (HDC hDC, float x1, float y1, float x2, float y2);
  175. short    NgonVertex2D (short n, float x, float y, float r1, float r2,
  176.         LPPOINT2D vertex);
  177. short    ArcVertex2D (float x, float y, float r1, float r2,
  178.         float start, float angle, LPPOINT2D vertex);
  179. void    Ngon2D (HDC hDC, float x, float y, float r1, float r2, short count);
  180. short    NsideBowVertex2D (float x, float y, float r1, float r2,
  181.         float start, float angle, short count, LPPOINT2D vertex);
  182. void    Arc2D (HDC hDC, float x, float y, float r, float start, float angle);
  183. void    EllipseArc2D (HDC hDC, float x, float y, float r1, float r2,
  184.         float start, float angle);
  185. void    Wedge2D (HDC hDC, float x, float y, float r1, float r2,
  186.         float start, float angle);
  187. void    Circle2D (HDC hDC, float x, float y, float r);
  188. void    Ellipse2D (HDC hDC, float x, float y, float r1, float r2);
  189. short    NsideFlowerVertex2D (short n, float x, float y, float r1, float r2,
  190.         float aspect, LPPOINT2D vertex);
  191. short    NsideStarVertex2D (short n, float x, float y, float r, float aspect,
  192.         LPPOINT2D vertex);
  193. void    NsideStar2D (HDC hDC, float x, float y, float radius, short count);
  194. void    NsideFlower2D (HDC hDC, float x, float y, float r1, float r2, short n);
  195. void    MoveTo3D (HDC hDC, float x, float y, float z);
  196. void    LineTo3D (HDC hDC, float x, float y, float z);
  197. void    Line3D (HDC hDC, float x1, float y1, float z1,
  198.             float x2, float y2, float z2);
  199. void    Polyline3D (HDC hDC, LPPOINT3D point, short count);
  200. void    Polygon3D (HDC hDC, LPPOINT3D vertex, short count);
  201. void    MarkPosition3D (HDC hDC, float x, float y, float z, float scale);
  202. void    ResetVertex3D (void);
  203. void    SetVertex3D (float x, float y, float z);
  204. void    Shape3D (HDC hDC, float x, float y, float z,
  205.         LPPOINT2D vertex, short count);
  206. void    Rectangle3D (HDC hDC, float x1, float y1,
  207.         float x2, float y2, float z);
  208. void    Box3D (HDC hDC, float x1, float y1, float z1,
  209.         float x2, float y2, float z2);
  210. void    Cube3D (HDC hDC, float x1, float y1, float z1,
  211.         float x2, float y2, float z2);
  212. void    Sphere3D (HDC hDC, float x, float y, float z, float r,
  213.         short count1, short count2);
  214. void    Ball3D (HDC hDC, float x, float y, float z, float r);
  215. void    Pyramid3D (HDC hDC, float x, float y, float z, float height,
  216.         LPPOINT2D basevertex, short count);
  217. void    Prism3D (HDC hDC, float x, float y, float z, float h,
  218.         LPPOINT2D basevertex, LPPOINT2D headvertex, short count);
  219. void    NsideStar3D (HDC hDC, float x, float y, float z, float h,
  220.         float radius, short count);
  221. void    NsideFlower3D (HDC hDC, float x, float y, float z, float h,
  222.         float r1, float r2, short count);
  223. void    NsidePyramid3D (HDC hDC, float x, float y, float z,
  224.         float r, float height, short count);
  225. void    Cone3D (HDC hDC, float x, float y, float z, float r, float h);
  226. void    NsidePrism3D (HDC hDC, float x, float y, float z,
  227.         float r, float h, short n);
  228. void    Cylinder3D (HDC hDC, float x, float y, float z,    float r, float h);
  229.  
  230. short    BeginDoubleBuffer3D (HDC *hdc, HVIEW hview);
  231. short    BeginDoubleBuffer2D (HDC *hdc, HVIEW hview);
  232. short    EndDoubleBuffer3D (HDC *hdc, HVIEW hview);
  233. short    EndDoubleBuffer2D (HDC *hdc, HVIEW hview);
  234. short    UpdateBuffer3D (HDC hdc, HVIEW hview);
  235. short    UpdateBuffer2D (HDC hdc, HVIEW hview);
  236.  
  237. void    Tetrahedron (HDC hdc, float r);
  238. void    Octahedron (HDC hdc, float r);
  239. void    Dodecahedron (HDC hdc, float r);
  240. void    Icosahedron (HDC hdc, float r);
  241.  
  242. /*****************************************************************
  243.  
  244. Curves and Surfaces
  245.  
  246. *****************************************************************/
  247.  
  248.  
  249. void    BezierCurve2D (HDC hdc, LPPOINT2D CtrlPoly);
  250. void    BezierCurve3D (HDC hdc, LPPOINT3D CtrlPoly);
  251. void    HermitCurve2D (HDC hdc, LPPOINT2D CtrlPoly);
  252. void    HermitCurve3D (HDC hdc, LPPOINT3D CtrlPoly);
  253. void    BSplineCurve2D (HDC hdc, LPPOINT2D CtrlPoly, int count);
  254. void    BSplineCurve3D (HDC hdc, LPPOINT3D CtrlPoly, int count);
  255. void    NURBSCurve2D (HDC hdc, LPPOINT2D CtrlPoly, int count, Vector knot);
  256. void    NURBSCurve3D (HDC hdc, LPPOINT3D CtrlPoly, int count, Vector knot);
  257. void    BezierSurface3D (HDC hdc, LPPOINT3D CtrlPoly, int ns, int nt);
  258. void    NURBSSurface3D (HDC hdc, LPPOINT3D CtrlPoly, int Scount, int Tcount,
  259.         Vector Sknot, Vector Tknot, int ns, int nt);
  260.  
  261.