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