1 // SPDX-FileCopyrightText: 2003 Dominique Devriese <devriese@kde.org>
2 // SPDX-FileCopyrightText: 1999-2003 Ilya Baran <ibaran@mit.edu>
3 // SPDX-License-Identifier: GPL-2.0-or-later
4 
5 
6 // this is a collection of definitions we need from KSeg.  It includes
7 // code from defs.H and G_drawstyle.H.  Thanks to Ilya Baran for
8 // making KSeg GPL, so there are no license probs or whatever..
9 // Send comments and/or bug reports to: ibaran@mit.edu
10 
11 #ifndef DEFS_H
12 #define DEFS_H
13 
14 #include <stdio.h>
15 #include <stdlib.h>
16 #include <qglobal.h>
17 
18 using namespace std;
19 
20 #define DRAW_MAX 5000 // maximum coordinate.  assumes you have a screen resolution less than this.
21 
22 #define BIG (1e+37)
23 #define SMALL (1e-10)
24 
ROUND(double x)25 inline int ROUND(double x) { return ((int)(x + 0.5)); }
SIGN(double x)26 inline int SIGN(double x) { return (x < 0) ? -1 : 1; }
INTRAND(int a,int b)27 inline int INTRAND(int a, int b) { return qMin(a, b) + rand() % abs(a - b); }
28 #define SQR(x) ((x) * (x))
29 #define CUBE(x) ((x) * (x) * (x))
30 #define QUAD(x) (((x) * (x)) * ((x) * (x)))
31 
32 enum G_Type
33 {
34   G_POINT = 1,
35   G_SEGMENT = 2,
36   G_RAY = 4,
37   G_LINE = 8,
38   G_CIRCLE = 16,
39   G_ARC = 32,
40   G_POLYGON = 64,
41   G_CIRCLEINTERIOR = 128,
42   G_ARCSECTOR = 256,
43   G_ARCSEGMENT = 512,
44   //non-primitive geometric types now:
45   G_LOCUS = 1024,
46   G_MEASURE = 2048,
47   G_CALCULATE = 4096,
48   G_ANNOTATION = 8192,
49   //fake type for scripting:
50   G_LOOP = 16384,
51   //compound types now:
52   G_STRAIGHT = G_SEGMENT | G_LINE | G_RAY,
53   G_CURVE = G_STRAIGHT | G_ARC | G_CIRCLE,
54   G_FILLED = G_POLYGON | G_CIRCLEINTERIOR | G_ARCSECTOR | G_ARCSEGMENT,
55   G_GEOMETRIC = G_POINT | G_CURVE | G_FILLED | G_LOCUS,
56   G_VALUE = G_MEASURE | G_CALCULATE,
57   G_TEXT = G_VALUE | G_ANNOTATION,
58   G_ANY = G_GEOMETRIC | G_TEXT | G_LOOP
59 };
60 
61 enum G_AnyType
62 {
63   G_TRANSLATED,
64   G_ROTATED,
65   G_SCALED,
66   G_REFLECTED
67 };
68 
69 #define IS_TRANSFORM(x) ((x) == G_TRANSLATED || (x) == G_ROTATED || (x) == G_SCALED || (x) == G_REFLECTED)
70 
71 enum G_PointType
72 {
73   G_FREE_POINT = G_REFLECTED + 1,
74   G_CONSTRAINED_POINT,
75   G_INTERSECTION_POINT,
76   G_INTERSECTION2_POINT,
77   G_MID_POINT
78 };
79 
80 enum G_SegmentType
81 {
82   G_ENDPOINTS_SEGMENT = G_REFLECTED + 1
83 };
84 
85 enum G_RayType
86 {
87   G_TWOPOINTS_RAY = G_REFLECTED + 1,
88   G_BISECTOR_RAY
89 };
90 
91 enum G_LineType
92 {
93   G_TWOPOINTS_LINE = G_REFLECTED + 1,
94   G_PARALLEL_LINE,
95   G_PERPENDICULAR_LINE
96 };
97 
98 enum G_CircleType
99 {
100   G_CENTERPOINT_CIRCLE = G_REFLECTED + 1,
101   G_CENTERRADIUS_CIRCLE
102 };
103 
104 enum G_ArcType
105 {
106   G_THREEPOINTS_ARC = G_REFLECTED + 1
107 };
108 
109 enum G_FilledType
110 {
111   G_DEFAULT_FILLED = G_REFLECTED + 1
112 };
113 
114 enum G_LocusType
115 {
116   G_OBJECT_LOCUS = G_REFLECTED + 1
117 };
118 
119 enum G_MeasureType
120 {
121   G_DISTANCE_MEASURE,
122   G_LENGTH_MEASURE,
123   G_RADIUS_MEASURE,
124   G_ANGLE_MEASURE,
125   G_RATIO_MEASURE,
126   G_SLOPE_MEASURE,
127   G_AREA_MEASURE
128 };
129 
130 enum G_CalculateType
131 {
132   G_REGULAR_CALCULATE
133 };
134 
135 
136 enum MenuIDs
137 {
138   ID_NEW_SEGMENT = 1,
139   ID_NEW_MIDPOINT,
140   ID_NEW_LINE,
141   ID_NEW_PERPENDICULAR,
142   ID_NEW_RAY,
143   ID_NEW_BISECTOR,
144   ID_NEW_CIRCLE,
145   ID_NEW_INTERSECTION,
146   ID_NEW_ARC,
147   ID_NEW_LOCUS,
148   ID_NEW_ARCSECTOR,
149   ID_NEW_ARCSEGMENT,
150   ID_NEW_CIRCLEINTERIOR,
151   ID_NEW_POLYGON,
152 
153   ID_EDIT_UNDO,
154   ID_EDIT_REDO,
155   ID_EDIT_DELETE,
156   ID_EDIT_TOGGLELABELS,
157   ID_EDIT_SHOWLABELS,
158   ID_EDIT_HIDELABELS,
159   ID_EDIT_CHANGELABEL,
160   ID_EDIT_HIDE,
161   ID_EDIT_SHOWHIDDEN,
162   ID_EDIT_COLOR,
163   ID_EDIT_POINTSTYLE,
164   ID_EDIT_LINESTYLE,
165   ID_EDIT_FONT,
166   ID_EDIT_CHANGE_NUMBER_OF_SAMPLES,
167   ID_EDIT_PREFERENCES,
168 
169   ID_EDIT_COLOR_BLACK,
170   ID_EDIT_COLOR_GRAY,
171   ID_EDIT_COLOR_RED,
172   ID_EDIT_COLOR_GREEN,
173   ID_EDIT_COLOR_BLUE,
174   ID_EDIT_COLOR_YELLOW,
175   ID_EDIT_COLOR_PURPLE,
176   ID_EDIT_COLOR_CYAN,
177   ID_EDIT_COLOR_OTHER,
178 
179   ID_EDIT_POINTSTYLE_LARGECIRCLE,
180   ID_EDIT_POINTSTYLE_MEDIUMCIRCLE,
181   ID_EDIT_POINTSTYLE_SMALLCIRCLE,
182 
183   ID_EDIT_LINESTYLE_SOLID,
184   ID_EDIT_LINESTYLE_DASHED,
185   ID_EDIT_LINESTYLE_DOTTED,
186   ID_EDIT_LINESTYLE_THIN,
187   ID_EDIT_LINESTYLE_NORMAL,
188   ID_EDIT_LINESTYLE_THICK,
189 
190   ID_EDIT_FONT_10,
191   ID_EDIT_FONT_12,
192   ID_EDIT_FONT_14,
193   ID_EDIT_FONT_20,
194   ID_EDIT_FONT_30,
195   ID_EDIT_FONT_FONT,
196 
197   ID_MEASURE_DISTANCE,
198   ID_MEASURE_LENGTH,
199   ID_MEASURE_RADIUS,
200   ID_MEASURE_ANGLE,
201   ID_MEASURE_RATIO,
202   ID_MEASURE_SLOPE,
203   ID_MEASURE_AREA,
204   ID_MEASURE_CALCULATE,
205 
206   ID_TRANSFORM_CHOOSE_VECTOR,
207   ID_TRANSFORM_CHOOSE_MIRROR,
208   ID_TRANSFORM_CHOOSE_CENTER,
209   ID_TRANSFORM_CHOOSE_RATIO,
210   ID_TRANSFORM_CHOOSE_ANGLE,
211   ID_TRANSFORM_CLEAR_CHOSEN,
212   ID_TRANSFORM_TRANSLATE,
213   ID_TRANSFORM_ROTATE,
214   ID_TRANSFORM_REFLECT,
215   ID_TRANSFORM_SCALE,
216 
217   ID_CONSTRUCTION_MAKE_NORMAL,
218   ID_CONSTRUCTION_MAKE_GIVEN,
219   ID_CONSTRUCTION_MAKE_FINAL,
220   ID_CONSTRUCTION_MAKE_INITIAL,
221   ID_CONSTRUCTION_RECURSE,
222 
223   ID_PLAY_QUICKPLAY,
224 
225   ID_QUICKPLAY_SET_DIRECTORY,
226 
227   ID_FILE_RECENTLIST_START //should be the last entry
228 };
229 
230 #endif //DEFS_H
231 
232 
233 /*
234  *  KSeg
235  *  SPDX-FileCopyrightText: 1999-2003 Ilya Baran <ibaran@mit.edu>
236  *
237  *  SPDX-License-Identifier: GPL-2.0-or-later
238  *
239  *  Send comments and/or bug reports to:
240  *                 ibaran@mit.edu
241  */
242 
243 
244 #ifndef G_DRAWSTYLE_H
245 #define G_DRAWSTYLE_H
246 
247 enum PointStyle
248 {
249   ANY = 0,
250   SMALL_CIRCLE,
251   MEDIUM_CIRCLE,
252   LARGE_CIRCLE
253 };
254 
255 #endif //G_DRAWSTYLE_H
256