home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d1xx / d170 / surf.lha / Surf / src / bezpt.h < prev    next >
C/C++ Source or Header  |  1988-11-22  |  2KB  |  60 lines

  1. #include "fasttrig.h"
  2. /*
  3.  * structures and such for manipulating bezier curves
  4.  */
  5.  
  6. #define MaxSegs  50  /* max number of bezier segments */
  7.  
  8. typedef struct {
  9.     int prev2;  /* second control point of segment n-1 */
  10.     int cur0;   /* begin of segment n, end of segment n-1 */
  11.     int cur1;   /* first control point of segment n */
  12. } BezVal;
  13.  
  14.  
  15. typedef struct {
  16.     BezVal  x, y;
  17. } BezCoord;
  18.  
  19. #define DefBezMeshVal 10
  20.  
  21. extern BezCoord Bezpt[MaxSegs+1];
  22. extern void SetBezMesh( /* Panel_item, int, struct input_event */);
  23. extern int BezMesh;
  24. extern float BezStepSize;
  25.  
  26. extern void InitCalcBez( /* void */ );
  27. extern void CalcBezPt(/* float, float *, float * */);
  28. extern void XdrawAllBezSegs(/* void */);
  29. extern void XdrawBezSeg(/* void */);
  30. extern void InitBezPt( /* int, int */);
  31. extern void EditBezPt( /* int, int */);
  32. extern void ResetCurve( /* void */ );
  33.  
  34. extern int NumBezPts;
  35. extern int ActSeg;
  36.  
  37. #define GetNumSegs()    (NumBezPts-1)
  38. #define ResetActSeg()   { ActSeg = 0; }
  39. #define GetCurSeg()     (ActSeg)
  40. #define NextSeg()       { ActSeg = (ActSeg +1) %(NumBezPts -1); }
  41.  
  42. #define StartPtX(XSegNo) Bezpt[XSegNo].x.cur0
  43. #define StartPtY(XSegNo) Bezpt[XSegNo].y.cur0
  44.  
  45. #define Cntrl1X(XSegNo) Bezpt[XSegNo].x.cur1
  46. #define Cntrl1Y(XSegNo) Bezpt[XSegNo].y.cur1
  47.  
  48. #define Cntrl2X(XSegNo) Bezpt[XSegNo+1].x.prev2
  49. #define Cntrl2Y(XSegNo) Bezpt[XSegNo+1].y.prev2
  50.  
  51. #define EndPtX(XSegNo) Bezpt[XSegNo+1].x.cur0
  52. #define EndPtY(XSegNo) Bezpt[XSegNo+1].y.cur0
  53.  
  54. #define DrawControl0() DrawSqr( Bezpt[ActSeg].x.cur1,\
  55.                                 Bezpt[ActSeg].y.cur1, XOR )
  56.  
  57. #define DrawControl1() DrawSqr( Bezpt[ActSeg+1].x.prev2,\
  58.                                 Bezpt[ActSeg+1].y.prev2, XOR )
  59.  
  60.