home *** CD-ROM | disk | FTP | other *** search
/ Graphics 16,000 / graphics-16000.iso / sgi / editors / kali.lha / kali / symmetry.h < prev    next >
C/C++ Source or Header  |  1992-09-25  |  2KB  |  116 lines

  1. /*                        */
  2. /*** symmetry.h - Nina Amenta, Aug. 1989 ****/
  3. /*                        */
  4. #define NUM_SYM 17
  5.  
  6.  
  7. #define P3    0
  8. #define P2    1
  9. #define P1    2
  10. #define PG    3
  11. #define PGG    4
  12. #define PMG    5
  13. #define PM    6
  14. #define CM    7
  15. #define PMM    8
  16. #define CMM    9
  17. #define P31M    10
  18. #define P3M1    11
  19. #define P4    12
  20. #define P4G    13
  21. #define P4M    14
  22. #define P6    15
  23. #define P6M    16
  24.  
  25. #ifndef FALSE
  26. #define FALSE 0
  27. #endif
  28. #define SX 0
  29. #define SY 1
  30. #define EX 2
  31. #define EY 3
  32. #define GLIDE 1
  33.  
  34.  
  35. #define DRAW 1
  36. #define CUT 2
  37. #define PICK 3
  38. #define TRANSFORM 4
  39. #define MOVE 5
  40. #define ZOOM 6
  41. #define ANGLE 7
  42. #define RATIO 8
  43. #define ROTATE 9
  44. #define DELETE 10
  45.  
  46.  
  47. #define NAMESTACKSIZE 50
  48.  
  49. typedef struct point_t
  50. {
  51.   float x;
  52.   float y;
  53. } POINT;
  54.  
  55.  
  56. typedef struct rectangle_t
  57. {
  58.   float x;
  59.   float y;
  60.   float width;
  61.   float height;
  62. } RECTANGLE;
  63.  
  64. typedef POINT VECTOR;
  65. typedef struct sym_t SYMMETRY;
  66. typedef struct s_line LINE;
  67. typedef float MATRIX[4];
  68. typedef MATRIX XFORM;
  69.  
  70. typedef long WINDOW;
  71. typedef long EVENT;
  72. typedef long MENU;
  73.  
  74. /* Bit flags for dof (degrees of freedom) field of symmetry definition */
  75. #define RAT 1
  76. #define ANG 2
  77.  
  78. struct sym_t
  79. {
  80.   int dof;
  81.   VECTOR v1;
  82.   VECTOR v2;
  83.   int refl;
  84.   VECTOR reflections[2];
  85.   int glide;
  86.   int rot;
  87.   char *label;
  88. };
  89.  
  90.  
  91. struct s_line
  92. {
  93.   MATRIX m;
  94.   short id;
  95.   short obj_pos;
  96.   LINE *next;
  97. };
  98.  
  99. extern SYMMETRY SYMTAB[];
  100. extern POINT ORIGIN;
  101.  
  102. #define RectIncludesPoint(r,p) \
  103.     (((p).x>=(r).x) && \
  104.          ((p).y>=(r).y) && \
  105.      (((p).x<=(r).x+(r).width)) && \
  106.      (((p).y<=(r).y+(r).height)))
  107.  
  108. #define PointRightOfRect(p,r) \
  109.      (((p).x>(r).x+(r).width))
  110.  
  111.  
  112. #define bump(src,dest,scale,vec) \
  113. {  (dest)->x=(scale)*(vec)->x+(src)->x; (dest)->y=(scale)*(vec)->y+(src)->y; }
  114.  
  115.  
  116.