1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /*
3 * This file is part of the libmspub project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 */
9
10 #include "PolygonUtils.h"
11
12 #include <algorithm>
13 #include <math.h>
14
15 #include <librevenge/librevenge.h>
16
17 #include "ColorReference.h"
18 #include "Line.h"
19 #include "MSPUBCollector.h"
20 #include "ShapeType.h"
21 #include "VectorTransformation2D.h"
22 #include "libmspub_utils.h"
23
24 #define CALCULATED_VALUE(val) (int(unsigned(val) | 0x80000000))
25
26 namespace libmspub
27 {
28
29 const Vertex LINE_VERTICES[] =
30 {
31 {0, 0}, {21600, 21600}
32 };
33
34 const CustomShape CS_LINE(
35 LINE_VERTICES, sizeof(LINE_VERTICES) / sizeof(Vertex),
36 nullptr, 0,
37 nullptr, 0,
38 nullptr, 0,
39 nullptr, 0,
40 21600, 21600,
41 nullptr, 0);
42
43 const Vertex WAVE_VERTICES[] =
44 {
45 {CALCULATED_VALUE(7), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(15), CALCULATED_VALUE(9)}, {CALCULATED_VALUE(16), CALCULATED_VALUE(10)}, {CALCULATED_VALUE(12), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(24), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(25), CALCULATED_VALUE(26)}, {CALCULATED_VALUE(27), CALCULATED_VALUE(28)}, {CALCULATED_VALUE(29), CALCULATED_VALUE(1)}
46 };
47
48 const unsigned short WAVE_SEGMENTS[] =
49 {
50 0x4000, 0x2001, 0x0001, 0x2001, 0x6000, 0x8000
51 };
52
53 const Calculation WAVE_CALC[] =
54 {
55 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x8000, 21600, 0, 0x400}, {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x2000, 0x402, 0, 10800}, {0x2001, 0x403, 2, 1}, {0x2003, 0x404, 0, 0}, {0x8000, 4320, 0, 0x405}, {0xa006, 0x403, 0, 0x405}, {0x4001, 15800, 0x400, 4460}, {0xa000, 0x400, 0, 0x408}, {0x6000, 0x400, 0x408, 0}, {0x8000, 21600, 0, 0x404}, {0x6006, 0x403, 0x40b, 21600}, {0xa000, 0x40c, 0, 0x407}, {0x2001, 0x405, 1, 2}, {0xa000, 0x407, 7200, 0x40e}, {0x6000, 0x40c, 0x40e, 7200}, {0x2001, 0x40d, 1, 2}, {0x6000, 0x407, 0x411, 0}, {0x8000, 21600, 0, 0x412}, {0x2001, 0x405, 1, 2}, {0x8000, 21600, 0, 0x414}, {0x2001, 0x400, 2, 1}, {0x8000, 21600, 0, 0x416}, {0x8000, 21600, 0, 0x407}, {0x8000, 21600, 0, 0x40f}, {0x6000, 0x401, 0x408, 0}, {0x8000, 21600, 0, 0x410}, {0xa000, 0x401, 0, 0x408}, {0x8000, 21600, 0, 0x40c}
56 };
57
58 const TextRectangle WAVE_TRS[] =
59 {
60 { {CALCULATED_VALUE(5), CALCULATED_VALUE(22)}, {CALCULATED_VALUE(11), CALCULATED_VALUE(23)} }
61 };
62
63 const int WAVE_DEFAULT_ADJUST[] =
64 {
65 1400, 10800
66 };
67
68 const Vertex WAVE_GLUE_POINTS[] =
69 {
70 {CALCULATED_VALUE(0x12), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(0x14), 10800}, {CALCULATED_VALUE(0x13), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(0x15), 10800}
71 };
72
73 const CustomShape CS_WAVE(
74 WAVE_VERTICES, sizeof(WAVE_VERTICES) / sizeof(Vertex),
75 WAVE_SEGMENTS, sizeof(WAVE_SEGMENTS) / sizeof(unsigned short),
76 WAVE_CALC, sizeof(WAVE_CALC) / sizeof(Calculation),
77 WAVE_DEFAULT_ADJUST, sizeof(WAVE_DEFAULT_ADJUST) / sizeof(int),
78 WAVE_TRS, sizeof(WAVE_TRS) / sizeof(TextRectangle),
79 21600, 21600,
80 WAVE_GLUE_POINTS, sizeof(WAVE_GLUE_POINTS) / sizeof(Vertex));
81
82 const Vertex FOLDED_CORNER_VERTICES[] =
83 {
84 {0, 0}, {21600, 0}, {21600, CALCULATED_VALUE(0)}, {CALCULATED_VALUE(0), 21600}, {0, 21600}, {CALCULATED_VALUE(0), 21600}, {CALCULATED_VALUE(3), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(8), CALCULATED_VALUE(9)}, {CALCULATED_VALUE(10), CALCULATED_VALUE(11)}, {21600, CALCULATED_VALUE(0)}
85 };
86
87 const unsigned short FOLDED_CORNER_SEGMENTS[] =
88 {
89 0x4000, 0x0004, 0x6001, 0x8000, 0x4000, 0x0001, 0x2001, 0x6001, 0x8000
90 };
91
92 const Calculation FOLDED_CORNER_CALC[] =
93 {
94 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x8000, 21600, 0, 0x400}, {0x2001, 0x0401, 8000, 10800}, {0x8000, 21600, 0, 0x0402}, {0x2001, 0x0401, 1, 2}, {0x2001, 0x0401, 1, 4}, {0x2001, 0x0401, 1, 7}, {0x2001, 0x0401, 1, 16}, {0x6000, 0x0403, 0x405, 0}, {0x6000, 0x0400, 0x406, 0}, {0x8000, 21600, 0, 0x404}, {0x6000, 0x400, 0x407, 0}
95 };
96
97 const TextRectangle FOLDED_CORNER_TRS[] =
98 {
99 { {0, 0}, {21600, CALCULATED_VALUE(11)} }
100 };
101
102 const int FOLDED_CORNER_DEFAULT_ADJUST[] =
103 {
104 18900
105 };
106
107 const Vertex FOLDED_CORNER_GLUE_POINTS[] =
108 {
109 {10800, 0}, {0, 10800}, {10800, 21600}, {21600, 10800}
110 };
111
112 const CustomShape CS_FOLDED_CORNER(
113 FOLDED_CORNER_VERTICES, sizeof(FOLDED_CORNER_VERTICES) / sizeof(Vertex),
114 FOLDED_CORNER_SEGMENTS, sizeof(FOLDED_CORNER_SEGMENTS) / sizeof(unsigned short),
115 FOLDED_CORNER_CALC, sizeof(FOLDED_CORNER_CALC) / sizeof(Calculation),
116 FOLDED_CORNER_DEFAULT_ADJUST, sizeof(FOLDED_CORNER_DEFAULT_ADJUST) / sizeof(int),
117 FOLDED_CORNER_TRS, sizeof(FOLDED_CORNER_TRS) / sizeof(TextRectangle),
118 21600, 21600,
119 FOLDED_CORNER_GLUE_POINTS, sizeof(FOLDED_CORNER_GLUE_POINTS) / sizeof(Vertex));
120
121
122 const Vertex LEFT_ARROW_VERTICES[] =
123 {
124 {21600, CALCULATED_VALUE(0)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(1), 0}, {0, 10800}, {CALCULATED_VALUE(1), 21600}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {21600, CALCULATED_VALUE(2)}
125 };
126
127 const unsigned short LEFT_ARROW_SEGMENTS[] =
128 {
129 0x4000, 0x0006, 0x6001, 0x8000
130 };
131
132 const Calculation LEFT_ARROW_CALC[] =
133 {
134 {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST + 1}, {0x8000, 21600, 0, 0x401}, {0x6001, 0x403, 0x400, 10800}, {0x6000, 0x401, 0x404, 0}, {0x6001, 0x401, 0x400, 10800}, {0xa000, 0x401, 0, 0x406}
135 };
136
137 const TextRectangle LEFT_ARROW_TRS[] =
138 {
139 { {CALCULATED_VALUE(7), CALCULATED_VALUE(0)}, {21600, CALCULATED_VALUE(2)} }
140 };
141
142 const int LEFT_ARROW_DEFAULT_ADJUST[] =
143 {
144 5400, 5400
145 };
146
147 const CustomShape CS_LEFT_ARROW(
148 LEFT_ARROW_VERTICES, sizeof(LEFT_ARROW_VERTICES) / sizeof(Vertex),
149 LEFT_ARROW_SEGMENTS, sizeof(LEFT_ARROW_SEGMENTS) / sizeof(unsigned short),
150 LEFT_ARROW_CALC, sizeof(LEFT_ARROW_CALC) / sizeof(Calculation),
151 LEFT_ARROW_DEFAULT_ADJUST, sizeof(LEFT_ARROW_DEFAULT_ADJUST) / sizeof(int),
152 LEFT_ARROW_TRS, sizeof(LEFT_ARROW_TRS) / sizeof(TextRectangle),
153 21600, 21600,
154 nullptr, 0);
155
156 const Vertex UP_DOWN_ARROW_VERTICES[] =
157 {
158 {0, CALCULATED_VALUE(1)}, {10800, 0}, {21600, CALCULATED_VALUE(1)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(3)}, {21600, CALCULATED_VALUE(3)}, {10800, 21600}, {0, CALCULATED_VALUE(3)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(3)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(1)}
159 };
160
161 const unsigned short UP_DOWN_ARROW_SEGMENTS[] =
162 {
163 0x4000, 0x0009, 0x6001, 0x8000
164 };
165
166 const Calculation UP_DOWN_ARROW_CALC[] =
167 {
168 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST + 1}, {0x8000, 10800, 0, PROP_ADJUST_VAL_FIRST + 1}, {0x6001, PROP_ADJUST_VAL_FIRST, 0x404, 10800}, {0x8000, 21600, 0, 0x405}, {0x8000, 10800, 0, PROP_ADJUST_VAL_FIRST}, {0x6001, PROP_ADJUST_VAL_FIRST + 1, 0x407, 10800}, {0x8000, 21600, 0, 0x408}
169 };
170
171 const TextRectangle UP_DOWN_ARROW_TRS[] =
172 {
173 { {CALCULATED_VALUE(0), CALCULATED_VALUE(8)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(9)} }
174 };
175
176 const int UP_DOWN_ARROW_DEFAULT_ADJUST[] =
177 {
178 5400, 4300
179 };
180
181 const CustomShape CS_UP_DOWN_ARROW(
182 UP_DOWN_ARROW_VERTICES, sizeof(UP_DOWN_ARROW_VERTICES) / sizeof(Vertex),
183 UP_DOWN_ARROW_SEGMENTS, sizeof(UP_DOWN_ARROW_SEGMENTS) / sizeof(unsigned short),
184 UP_DOWN_ARROW_CALC, sizeof(UP_DOWN_ARROW_CALC) / sizeof(Calculation),
185 UP_DOWN_ARROW_DEFAULT_ADJUST, sizeof(UP_DOWN_ARROW_DEFAULT_ADJUST) / sizeof(int),
186 UP_DOWN_ARROW_TRS, sizeof(UP_DOWN_ARROW_TRS) / sizeof(TextRectangle),
187 21600, 21600,
188 nullptr, 0);
189
190 const Vertex IRREGULAR_SEAL_1_VERTICES[] =
191 {
192 {10901, 5905}, {8458, 2399}, {7417, 6425}, {476, 2399}, {4732, 7722}, {106, 8718}, {3828, 11880}, {243, 14689}, {5772, 14041}, {4868, 17719}, {7819, 15730}, {8590, 21600}, {10637, 15038}, {13349, 19840}, {14125, 14561}, {18248, 18195}, {16938, 13044}, {21600, 13393}, {17710, 10579}, {21198, 8242}, {16806, 7417}, {18482, 4560}, {14257, 5429}, {14623, 106}, {10901, 5905}
193 };
194
195 const TextRectangle IRREGULAR_SEAL_1_TRS[] =
196 {
197 { {5400, 6570}, {14160, 15290} }
198 };
199
200 const Vertex IRREGULAR_SEAL_1_GLUE_POINTS[] =
201 {
202 {9722, 1887}, {0, 12875}, {11614, 18844}, {21600, 6646}
203 };
204
205 const CustomShape CS_IRREGULAR_SEAL_1(
206 IRREGULAR_SEAL_1_VERTICES, sizeof(IRREGULAR_SEAL_1_VERTICES) / sizeof(Vertex),
207 nullptr, 0,
208 nullptr, 0,
209 nullptr, 0,
210 IRREGULAR_SEAL_1_TRS, sizeof(IRREGULAR_SEAL_1_TRS) / sizeof(TextRectangle),
211 21600, 21600,
212 IRREGULAR_SEAL_1_GLUE_POINTS, sizeof(IRREGULAR_SEAL_1_GLUE_POINTS) / sizeof(Vertex));
213
214 const Vertex LIGHTNING_BOLT_VERTICES[] =
215 {
216 {8458, 0}, {0, 3923}, {7564, 8416}, {4993, 9720}, {12197, 13904}, {9987, 14934}, {21600, 21600}, {14768, 12911}, {16558, 12016}, {11030, 6840}, {12831, 6120}, {8458, 0}
217 };
218
219 const TextRectangle LIGHTNING_BOLT_TRS[] =
220 {
221 { {8680, 7410}, {13970, 14190} }
222 };
223
224 const Vertex LIGHTNING_BOLT_GLUE_POINTS[] =
225 {
226 {8458, 0}, {0, 3923}, {4993, 9720}, {9987, 14934}, {21600, 21600}, {16558, 12016}, {12831, 6120}
227 };
228
229 const CustomShape CS_LIGHTNING_BOLT(
230 LIGHTNING_BOLT_VERTICES, sizeof(LIGHTNING_BOLT_VERTICES) / sizeof(Vertex),
231 nullptr, 0,
232 nullptr, 0,
233 nullptr, 0,
234 LIGHTNING_BOLT_TRS, sizeof(LIGHTNING_BOLT_TRS) / sizeof(TextRectangle),
235 21600, 21600,
236 LIGHTNING_BOLT_GLUE_POINTS, sizeof(LIGHTNING_BOLT_GLUE_POINTS) / sizeof(Vertex));
237
238 const Vertex IRREGULAR_SEAL_2_VERTICES[] =
239 {
240 {11464, 4340}, {9722, 1887}, {8548, 6383}, {4503, 3626}, {5373, 7816}, {1174, 8270}, {3934, 11592}, {0, 12875}, {3329, 15372}, {1283, 17824}, {4804, 18239}, {4918, 21600}, {7525, 18125}, {8698, 19712}, {9871, 17371}, {11614, 18844}, {12178, 15937}, {14943, 17371}, {14640, 14348}, {18878, 15632}, {16382, 12311}, {18270, 11292}, {16986, 9404}, {21600, 6646}, {16382, 6533}, {18005, 3172}, {14524, 5778}, {14789, 0}, {11464, 4340}
241 };
242
243 const TextRectangle IRREGULAR_SEAL_2_TRS[] =
244 {
245 { {5400, 6570}, {14160, 15290} }
246 };
247
248 const Vertex IRREGULAR_SEAL_2_GLUE_POINTS[] =
249 {
250 {9722, 1887}, {0, 12875}, {11614, 18844}, {21600, 6646}
251 };
252
253 const CustomShape CS_IRREGULAR_SEAL_2(
254 IRREGULAR_SEAL_2_VERTICES, sizeof(IRREGULAR_SEAL_2_VERTICES) / sizeof(Vertex),
255 nullptr, 0,
256 nullptr, 0,
257 nullptr, 0,
258 IRREGULAR_SEAL_2_TRS, sizeof(IRREGULAR_SEAL_2_TRS) / sizeof(TextRectangle),
259 21600, 21600,
260 IRREGULAR_SEAL_2_GLUE_POINTS, sizeof(IRREGULAR_SEAL_2_GLUE_POINTS) / sizeof(Vertex));
261
262
263 const Vertex HEART_VERTICES[] =
264 {
265 {10800, 21599}, {321, 6886}, {70, 6036}, {-9, 5766}, {-1, 5474}, {2, 5192}, {6, 4918}, {43, 4641}, {101, 4370}, {159, 4103}, {245, 3837}, {353, 3582}, {460, 3326}, {591, 3077}, {741, 2839}, {892, 2598}, {1066, 2369}, {1253, 2155}, {1443, 1938}, {1651, 1732}, {1874, 1543}, {2097, 1351}, {2337, 1174}, {2587, 1014}, {2839, 854}, {3106, 708}, {3380, 584}, {3656, 459}, {3945, 350}, {4237, 264}, {4533, 176}, {4838, 108}, {5144, 66}, {5454, 22}, {5771, 1}, {6086, 3}, {6407, 7}, {6731, 35}, {7048, 89}, {7374, 144}, {7700, 226}, {8015, 335}, {8344, 447}, {8667, 590}, {8972, 756}, {9297, 932}, {9613, 1135}, {9907, 1363}, {10224, 1609}, {10504, 1900}, {10802, 2169}, {11697, 1363}, {11971, 1116}, {12304, 934}, {12630, 756}, {12935, 590}, {13528, 450}, {13589, 335}, {13901, 226}, {14227, 144}, {14556, 89}, {14872, 35}, {15195, 7}, {15517, 3}, {15830, 0}, {16147, 22}, {16458, 66}, {16764, 109}, {17068, 177}, {17365, 264}, {17658, 349}, {17946, 458}, {18222, 584}, {18496, 708}, {18762, 854}, {19015, 1014}, {19264, 1172}, {19504, 1349}, {19730, 1543}, {19950, 1731}, {20158, 1937}, {20350, 2155}, {20536, 2369}, {20710, 2598}, {20861, 2839}, {21010, 3074}, {21143, 3323}, {21251, 3582}, {21357, 3835}, {21443, 4099}, {21502, 4370}, {21561, 4639}, {21595, 4916}, {21600, 5192}, {21606, 5474}, {21584, 5760}, {21532, 6036}, {21478, 6326}, {21366, 6603}, {21282, 6887}, {10802, 21602}
266 };
267
268 const unsigned short HEART_SEGMENTS[] =
269 {
270 0x4000, 0x0002, 0x2010, 0x0001, 0x2010, 0x0001, 0x6001, 0x8000
271 };
272
273 const TextRectangle HEART_TRS[] =
274 {
275 { {5080, 2540}, {16520, 13550} }
276 };
277
278 const Vertex HEART_GLUE_POINTS[] =
279 {
280 {10800, 2180}, {3090, 10800}, {10800, 21600}, {18490, 10800}
281 };
282
283 const CustomShape CS_HEART(
284 HEART_VERTICES, sizeof(HEART_VERTICES) / sizeof(Vertex),
285 HEART_SEGMENTS, sizeof(HEART_SEGMENTS) / sizeof(unsigned short),
286 nullptr, 0,
287 nullptr, 0,
288 HEART_TRS, sizeof(HEART_TRS) / sizeof(TextRectangle),
289 21600, 21600,
290 HEART_GLUE_POINTS, sizeof(HEART_GLUE_POINTS) / sizeof(Vertex));
291
292 const Vertex QUAD_ARROW_VERTICES[] =
293 {
294 {0, 10800}, {CALCULATED_VALUE(0), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(0)}, {10800, 0}, {CALCULATED_VALUE(3), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(4), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(4), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(5), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(5), CALCULATED_VALUE(1)}, {21600, 10800}, {CALCULATED_VALUE(5), CALCULATED_VALUE(3)}, {CALCULATED_VALUE(5), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(4), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(4), CALCULATED_VALUE(5)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(5)}, {10800, 21600}, {CALCULATED_VALUE(1), CALCULATED_VALUE(5)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(5)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(3)}
295 };
296
297 const unsigned short QUAD_ARROW_SEGMENTS[] =
298 {
299 0x4000, 0x0017, 0x6001, 0x8000
300 };
301
302 const Calculation QUAD_ARROW_CALC[] =
303 {
304 {0x2000, PROP_ADJUST_VAL_FIRST + 2, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST + 1}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST + 2}
305 };
306
307 const TextRectangle QUAD_ARROW_TRS[] =
308 {
309 { {0, 0}, {21600, 21600} }
310 };
311
312 const int QUAD_ARROW_DEFAULT_ADJUST[] =
313 {
314 6500, 8600, 4300
315 };
316
317 const CustomShape CS_QUAD_ARROW(
318 QUAD_ARROW_VERTICES, sizeof(QUAD_ARROW_VERTICES) / sizeof(Vertex),
319 QUAD_ARROW_SEGMENTS, sizeof(QUAD_ARROW_SEGMENTS) / sizeof(unsigned short),
320 QUAD_ARROW_CALC, sizeof(QUAD_ARROW_CALC) / sizeof(Calculation),
321 QUAD_ARROW_DEFAULT_ADJUST, sizeof(QUAD_ARROW_DEFAULT_ADJUST) / sizeof(int),
322 QUAD_ARROW_TRS, sizeof(QUAD_ARROW_TRS) / sizeof(TextRectangle),
323 21600, 21600,
324 nullptr, 0);
325
326 const Vertex BEVEL_VERTICES[] =
327 {
328 {0, 0}, {21600, 0}, {21600, 21600}, {0, 21600}, {0, 0}, {21600, 0}, {CALCULATED_VALUE(1), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(0)}, {21600, 0}, {21600, 21600}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(0)}, {21600, 21600}, {0, 21600}, {CALCULATED_VALUE(0), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {0, 21600}, {0, 0}, {CALCULATED_VALUE(0), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(2)}
329 };
330
331 const unsigned short BEVEL_SEGMENTS[] =
332 {
333 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000
334 };
335
336 const Calculation BEVEL_CALC[] =
337 {
338 {0x2001, PROP_ADJUST_VAL_FIRST, 21599, 21600}, {0xa000, PROP_GEO_RIGHT, 0, 0x400}, {0xa000, PROP_GEO_BOTTOM, 0, 0x400}
339 };
340
341 const TextRectangle BEVEL_TRS[] =
342 {
343 { {CALCULATED_VALUE(0), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)} }
344 };
345
346 const int BEVEL_DEFAULT_ADJUST[] =
347 {
348 2700
349 };
350
351 const CustomShape CS_BEVEL(
352 BEVEL_VERTICES, sizeof(BEVEL_VERTICES) / sizeof(Vertex),
353 BEVEL_SEGMENTS, sizeof(BEVEL_SEGMENTS) / sizeof(unsigned short),
354 BEVEL_CALC, sizeof(BEVEL_CALC) / sizeof(Calculation),
355 BEVEL_DEFAULT_ADJUST, sizeof(BEVEL_DEFAULT_ADJUST) / sizeof(int),
356 BEVEL_TRS, sizeof(BEVEL_TRS) / sizeof(TextRectangle),
357 21600, 21600,
358 nullptr, 0);
359
360 const Vertex LEFT_BRACKET_VERTICES[] =
361 {
362 {21600, 0}, {10800, 0}, {0, CALCULATED_VALUE(3)}, {0, CALCULATED_VALUE(1)}, {0, CALCULATED_VALUE(2)}, {0, CALCULATED_VALUE(4)}, {10800, 21600}, {21600, 21600}
363 };
364
365 const unsigned short LEFT_BRACKET_SEGMENTS[] =
366 {
367 0x4000, 0x2001, 0x0001, 0x2001, 0x8000
368 };
369
370 const Calculation LEFT_BRACKET_CALC[] =
371 {
372 {0x2001, PROP_ADJUST_VAL_FIRST, 1, 2}, {0x6000, PROP_GEO_TOP, PROP_ADJUST_VAL_FIRST, 0}, {0xa000, PROP_GEO_BOTTOM, 0, PROP_ADJUST_VAL_FIRST}, {0x6000, PROP_GEO_TOP, 0x400, 0}, {0xa000, PROP_GEO_BOTTOM, 0, 0x400}
373 };
374
375 const TextRectangle LEFT_BRACKET_TRS[] =
376 {
377 { {6350, CALCULATED_VALUE(3)}, {21600, CALCULATED_VALUE(4)} }
378 };
379
380 const int LEFT_BRACKET_DEFAULT_ADJUST[] =
381 {
382 1800
383 };
384
385 const Vertex LEFT_BRACKET_GLUE_POINTS[] =
386 {
387 {21600, 0}, {0, 10800}, {21600, 21600}
388 };
389
390 const CustomShape CS_LEFT_BRACKET(
391 LEFT_BRACKET_VERTICES, sizeof(LEFT_BRACKET_VERTICES) / sizeof(Vertex),
392 LEFT_BRACKET_SEGMENTS, sizeof(LEFT_BRACKET_SEGMENTS) / sizeof(unsigned short),
393 LEFT_BRACKET_CALC, sizeof(LEFT_BRACKET_CALC) / sizeof(Calculation),
394 LEFT_BRACKET_DEFAULT_ADJUST, sizeof(LEFT_BRACKET_DEFAULT_ADJUST) / sizeof(int),
395 LEFT_BRACKET_TRS, sizeof(LEFT_BRACKET_TRS) / sizeof(TextRectangle),
396 21600, 21600,
397 LEFT_BRACKET_GLUE_POINTS, sizeof(LEFT_BRACKET_GLUE_POINTS) / sizeof(Vertex));
398
399 const Vertex RIGHT_BRACKET_VERTICES[] =
400 {
401 {0, 0}, {10800, 0}, {21600, CALCULATED_VALUE(3)}, {21600, CALCULATED_VALUE(1)}, {21600, CALCULATED_VALUE(2)}, {21600, CALCULATED_VALUE(4)}, {10800, 21600}, {0, 21600}
402 };
403
404 const unsigned short RIGHT_BRACKET_SEGMENTS[] =
405 {
406 0x4000, 0x2001, 0x0001, 0x2001, 0x8000
407 };
408
409 const Calculation RIGHT_BRACKET_CALC[] =
410 {
411 {0x2001, PROP_ADJUST_VAL_FIRST, 1, 2}, {0x6000, PROP_GEO_TOP, PROP_ADJUST_VAL_FIRST, 0}, {0xa000, PROP_GEO_BOTTOM, 0, PROP_ADJUST_VAL_FIRST}, {0x6000, PROP_GEO_TOP, 0x400, 0}, {0xa000, PROP_GEO_BOTTOM, 0, 0x400}
412 };
413
414 const TextRectangle RIGHT_BRACKET_TRS[] =
415 {
416 { {0, CALCULATED_VALUE(3)}, {15150, CALCULATED_VALUE(4)} }
417 };
418
419 const int RIGHT_BRACKET_DEFAULT_ADJUST[] =
420 {
421 1800
422 };
423
424 const Vertex RIGHT_BRACKET_GLUE_POINTS[] =
425 {
426 {0, 0}, {0, 21600}, {21600, 10800}
427 };
428
429 const CustomShape CS_RIGHT_BRACKET(
430 RIGHT_BRACKET_VERTICES, sizeof(RIGHT_BRACKET_VERTICES) / sizeof(Vertex),
431 RIGHT_BRACKET_SEGMENTS, sizeof(RIGHT_BRACKET_SEGMENTS) / sizeof(unsigned short),
432 RIGHT_BRACKET_CALC, sizeof(RIGHT_BRACKET_CALC) / sizeof(Calculation),
433 RIGHT_BRACKET_DEFAULT_ADJUST, sizeof(RIGHT_BRACKET_DEFAULT_ADJUST) / sizeof(int),
434 RIGHT_BRACKET_TRS, sizeof(RIGHT_BRACKET_TRS) / sizeof(TextRectangle),
435 21600, 21600,
436 RIGHT_BRACKET_GLUE_POINTS, sizeof(RIGHT_BRACKET_GLUE_POINTS) / sizeof(Vertex));
437
438 const Vertex LEFT_BRACE_VERTICES[] =
439 {
440 {21600, 0}, {16200, 0}, {10800, CALCULATED_VALUE(0)}, {10800, CALCULATED_VALUE(1)}, {10800, CALCULATED_VALUE(2)}, {10800, CALCULATED_VALUE(3)}, {5400, CALCULATED_VALUE(4)}, {0, CALCULATED_VALUE(4)}, {5400, CALCULATED_VALUE(4)}, {10800, CALCULATED_VALUE(5)}, {10800, CALCULATED_VALUE(6)}, {10800, CALCULATED_VALUE(7)}, {10800, CALCULATED_VALUE(8)}, {16200, 21600}, {21600, 21600}
441 };
442
443 const unsigned short LEFT_BRACE_SEGMENTS[] =
444 {
445 0x4000, 0x2001, 0x0001, 0x2002, 0x0001, 0x2001, 0x8000
446 };
447
448 const Calculation LEFT_BRACE_CALC[] =
449 {
450 {0x2001, PROP_ADJUST_VAL_FIRST, 1, 2}, {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0xa000, 0x404, 0, PROP_ADJUST_VAL_FIRST}, {0xa000, 0x404, 0, 0x400}, {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x6000, 0x404, 0x400, 0}, {0x6000, 0x404, PROP_ADJUST_VAL_FIRST, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST}, {0x8000, 21600, 0, 0x400}, {0x2001, PROP_ADJUST_VAL_FIRST, 10000, 31953}, {0x8000, 21600, 0, 0x409}
451 };
452
453 const TextRectangle LEFT_BRACE_TRS[] =
454 {
455 { {13800, CALCULATED_VALUE(9)}, {21600, CALCULATED_VALUE(10)} }
456 };
457
458 const int LEFT_BRACE_DEFAULT_ADJUST[] =
459 {
460 1800, 10800
461 };
462
463 const Vertex LEFT_BRACE_GLUE_POINTS[] =
464 {
465 {21600, 0}, {0, 10800}, {21600, 21600}
466 };
467
468 const CustomShape CS_LEFT_BRACE(
469 LEFT_BRACE_VERTICES, sizeof(LEFT_BRACE_VERTICES) / sizeof(Vertex),
470 LEFT_BRACE_SEGMENTS, sizeof(LEFT_BRACE_SEGMENTS) / sizeof(unsigned short),
471 LEFT_BRACE_CALC, sizeof(LEFT_BRACE_CALC) / sizeof(Calculation),
472 LEFT_BRACE_DEFAULT_ADJUST, sizeof(LEFT_BRACE_DEFAULT_ADJUST) / sizeof(int),
473 LEFT_BRACE_TRS, sizeof(LEFT_BRACE_TRS) / sizeof(TextRectangle),
474 21600, 21600,
475 LEFT_BRACE_GLUE_POINTS, sizeof(LEFT_BRACE_GLUE_POINTS) / sizeof(Vertex));
476
477 const Vertex RIGHT_BRACE_VERTICES[] =
478 {
479 {0, 0}, {5400, 0}, {10800, CALCULATED_VALUE(0)}, {10800, CALCULATED_VALUE(1)}, {10800, CALCULATED_VALUE(2)}, {10800, CALCULATED_VALUE(3)}, {16200, CALCULATED_VALUE(4)}, {21600, CALCULATED_VALUE(4)}, {16200, CALCULATED_VALUE(4)}, {10800, CALCULATED_VALUE(5)}, {10800, CALCULATED_VALUE(6)}, {10800, CALCULATED_VALUE(7)}, {10800, CALCULATED_VALUE(8)}, {5400, 21600}, {0, 21600}
480 };
481
482 const unsigned short RIGHT_BRACE_SEGMENTS[] =
483 {
484 0x4000, 0x2001, 0x0001, 0x2002, 0x0001, 0x2001, 0x8000
485 };
486
487 const Calculation RIGHT_BRACE_CALC[] =
488 {
489 {0x2001, PROP_ADJUST_VAL_FIRST, 1, 2}, {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0xa000, 0x404, 0, PROP_ADJUST_VAL_FIRST}, {0xa000, 0x404, 0, 0x400}, {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x6000, 0x404, 0x400, 0}, {0x6000, 0x404, PROP_ADJUST_VAL_FIRST, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST}, {0x8000, 21600, 0, 0x400}, {0x2001, PROP_ADJUST_VAL_FIRST, 10000, 31953}, {0x8000, 21600, 0, 0x409}
490 };
491
492 const TextRectangle RIGHT_BRACE_TRS[] =
493 {
494 { {0, CALCULATED_VALUE(9)}, {7800, CALCULATED_VALUE(10)} }
495 };
496
497 const int RIGHT_BRACE_DEFAULT_ADJUST[] =
498 {
499 1800, 10800
500 };
501
502 const Vertex RIGHT_BRACE_GLUE_POINTS[] =
503 {
504 {0, 0}, {0, 21600}, {21600, 10800}
505 };
506
507 const CustomShape CS_RIGHT_BRACE(
508 RIGHT_BRACE_VERTICES, sizeof(RIGHT_BRACE_VERTICES) / sizeof(Vertex),
509 RIGHT_BRACE_SEGMENTS, sizeof(RIGHT_BRACE_SEGMENTS) / sizeof(unsigned short),
510 RIGHT_BRACE_CALC, sizeof(RIGHT_BRACE_CALC) / sizeof(Calculation),
511 RIGHT_BRACE_DEFAULT_ADJUST, sizeof(RIGHT_BRACE_DEFAULT_ADJUST) / sizeof(int),
512 RIGHT_BRACE_TRS, sizeof(RIGHT_BRACE_TRS) / sizeof(TextRectangle),
513 21600, 21600,
514 RIGHT_BRACE_GLUE_POINTS, sizeof(RIGHT_BRACE_GLUE_POINTS) / sizeof(Vertex));
515
516 const Vertex LEFT_UP_ARROW_VERTICES[] =
517 {
518 {0, CALCULATED_VALUE(5)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(7)}, {CALCULATED_VALUE(7), CALCULATED_VALUE(7)}, {CALCULATED_VALUE(7), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(5), 0}, {21600, CALCULATED_VALUE(2)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(2), 21600}
519 };
520
521 const unsigned short LEFT_UP_ARROW_SEGMENTS[] =
522 {
523 0x4000, 0x000b, 0x6001, 0x8000
524 };
525
526 const Calculation LEFT_UP_ARROW_CALC[] =
527 {
528 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 2, 0, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST}, {0x2001, 0x0403, 1, 2}, {0x6000, PROP_ADJUST_VAL_FIRST, 0x0404, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST + 1}, {0x6000, PROP_ADJUST_VAL_FIRST, 0x0406, 0}, {0x8000, 21600, 0, 0x406}, {0xa000, 0x408, 0, 0x406}
529 };
530
531 const TextRectangle LEFT_UP_ARROW_TRS[] =
532 {
533 { {CALCULATED_VALUE(2), CALCULATED_VALUE(7)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(1)} }, { {CALCULATED_VALUE(7), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(1)} }
534 };
535
536 const int LEFT_UP_ARROW_DEFAULT_ADJUST[] =
537 {
538 9340, 18500, 6200
539 };
540
541 const CustomShape CS_LEFT_UP_ARROW(
542 LEFT_UP_ARROW_VERTICES, sizeof(LEFT_UP_ARROW_VERTICES) / sizeof(Vertex),
543 LEFT_UP_ARROW_SEGMENTS, sizeof(LEFT_UP_ARROW_SEGMENTS) / sizeof(unsigned short),
544 LEFT_UP_ARROW_CALC, sizeof(LEFT_UP_ARROW_CALC) / sizeof(Calculation),
545 LEFT_UP_ARROW_DEFAULT_ADJUST, sizeof(LEFT_UP_ARROW_DEFAULT_ADJUST) / sizeof(int),
546 LEFT_UP_ARROW_TRS, sizeof(LEFT_UP_ARROW_TRS) / sizeof(TextRectangle),
547 21600, 21600,
548 nullptr, 0);
549
550 const Vertex SMILEY_FACE_VERTICES[] =
551 {
552 {10800, 10800}, {10800, 10800}, {0, 360}, {7305, 7515}, {1165, 1165}, {0, 360}, {14295, 7515}, {1165, 1165}, {0, 360}, {4870, CALCULATED_VALUE(1)}, {8680, CALCULATED_VALUE(2)}, {12920, CALCULATED_VALUE(2)}, {16730, CALCULATED_VALUE(1)}
553 };
554
555 const unsigned short SMILEY_FACE_SEGMENTS[] =
556 {
557 0xa203, 0x6000, 0x8000, 0xa203, 0x6000, 0x8000, 0xa203, 0x6000, 0x8000, 0x4000, 0x2001, 0xaa00, 0x8000
558 };
559
560 const Calculation SMILEY_FACE_CALC[] =
561 {
562 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 15510}, {0x8000, 17520, 0, 0x400}, {0x4000, 15510, 0x400, 0}
563 };
564
565 const TextRectangle SMILEY_FACE_TRS[] =
566 {
567 { {3163, 3163}, {18437, 18437} }
568 };
569
570 const int SMILEY_FACE_DEFAULT_ADJUST[] =
571 {
572 17520
573 };
574
575 const Vertex SMILEY_FACE_GLUE_POINTS[] =
576 {
577 {10800, 0}, {3163, 3163}, {0, 10800}, {3163, 18437}, {10800, 21600}, {18437, 18437}, {21600, 10800}, {18437, 3163}
578 };
579
580 const Vertex VERTICAL_SCROLL_VERTICES[] =
581 {
582 {CALCULATED_VALUE(1), 21600}, {0, CALCULATED_VALUE(11)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(12)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(12)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(4), 0}, {CALCULATED_VALUE(2), 0}, {21600, CALCULATED_VALUE(1)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(11)}, {CALCULATED_VALUE(5), 21600}, {CALCULATED_VALUE(6), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(4), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(8), CALCULATED_VALUE(9)}, {CALCULATED_VALUE(4), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(11)}, {CALCULATED_VALUE(1), 21600}, {0, CALCULATED_VALUE(11)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(12)}, {CALCULATED_VALUE(9), CALCULATED_VALUE(10)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(11)}, {CALCULATED_VALUE(4), 0}, {CALCULATED_VALUE(6), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(12)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(11)}, {CALCULATED_VALUE(4), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(0)}
583 };
584
585 const unsigned short VERTICAL_SCROLL_SEGMENTS[] =
586 {
587 0x4000, 0xa702, 0x0002, 0xa801, 0x0001, 0xa702, 0x0002, 0xa801, 0x6001, 0x8000, 0x4000, 0xa801, 0xa702, 0x6000, 0x8000, 0x4000, 0xa803, 0xa702, 0x6001, 0x8000, 0x4000, 0xa701, 0x8000, 0x4000, 0x0001, 0x8000, 0x4000, 0x0001, 0x8000
588 };
589
590 const Calculation VERTICAL_SCROLL_CALC[] =
591 {
592 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2001, 0x400, 1, 2}, {0xa000, PROP_GEO_RIGHT, 0, 0x401}, {0xa000, PROP_GEO_RIGHT, 0, 0x400}, {0x6000, 0x400, 0x401, 0}, {0xa000, PROP_GEO_RIGHT, 0, 0x404}, {0x2001, 0x400, 2, 1}, {0x2001, 0x401, 1, 2}, {0x6000, 0x400, 0x407, 0}, {0x6000, 0x401, 0x407, 0}, {0xa000, PROP_GEO_BOTTOM, 0, 0x409}, {0xa000, PROP_GEO_BOTTOM, 0, 0x401}, {0xa000, PROP_GEO_BOTTOM, 0, 0x400}, {0xa000, PROP_GEO_BOTTOM, 0, 0x404}
593 };
594
595 const TextRectangle VERTICAL_SCROLL_TRS[] =
596 {
597 { {CALCULATED_VALUE(0), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(12)} }
598 };
599
600 const int VERTICAL_SCROLL_DEFAULT_ADJUST[] =
601 {
602 2700
603 };
604
605 const Vertex HORIZONTAL_SCROLL_VERTICES[] =
606 {
607 {0, CALCULATED_VALUE(4)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(2), 0}, {21600, CALCULATED_VALUE(1)}, {21600, CALCULATED_VALUE(13)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(12)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(12)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(11)}, {CALCULATED_VALUE(1), 21600}, {0, CALCULATED_VALUE(11)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(9), CALCULATED_VALUE(8)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(6)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(9)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(2), 0}, {21600, CALCULATED_VALUE(1)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(6)}, {0, CALCULATED_VALUE(4)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(11)}
608 };
609
610 const unsigned short HORIZONTAL_SCROLL_SEGMENTS[] =
611 {
612 0x4000, 0xa801, 0x0002, 0xa802, 0x0001, 0xa801, 0x0002, 0xa802, 0x6001, 0x8000, 0x4000, 0xa803, 0x6000, 0x8000, 0x4000, 0xa803, 0xa702, 0x6000, 0x8000, 0x4000, 0xa701, 0x8000, 0x4000, 0x0001, 0x8000, 0x4000, 0x0001, 0x8000
613 };
614
615 const Calculation HORIZONTAL_SCROLL_CALC[] =
616 {
617 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2001, 0x400, 1, 2}, {0xa000, PROP_GEO_RIGHT, 0, 0x401}, {0xa000, PROP_GEO_RIGHT, 0, 0x400}, {0x6000, 0x400, 0x401, 0}, {0xa000, PROP_GEO_RIGHT, 0, 0x404}, {0x2001, 0x400, 2, 1}, {0x2001, 0x401, 1, 2}, {0x6000, 0x400, 0x407, 0}, {0x6000, 0x401, 0x407, 0}, {0xa000, PROP_GEO_BOTTOM, 0, 0x409}, {0xa000, PROP_GEO_BOTTOM, 0, 0x401}, {0xa000, PROP_GEO_BOTTOM, 0, 0x400}, {0xa000, PROP_GEO_BOTTOM, 0, 0x404}
618 };
619
620 const TextRectangle HORIZONTAL_SCROLL_TRS[] =
621 {
622 { {CALCULATED_VALUE(0), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(12)} }
623 };
624
625 const int HORIZONTAL_SCROLL_DEFAULT_ADJUST[] =
626 {
627 2700
628 };
629
630 const Vertex CIRCULAR_ARROW_VERTICES[] =
631 {
632 {CALCULATED_VALUE(0x03), CALCULATED_VALUE(0x03)}, {CALCULATED_VALUE(0x14), CALCULATED_VALUE(0x14)}, {CALCULATED_VALUE(0x13), CALCULATED_VALUE(0x12)}, {CALCULATED_VALUE(0x11), CALCULATED_VALUE(0x10)}, {0, 0}, {21600, 21600}, {CALCULATED_VALUE(0x09), CALCULATED_VALUE(0x08)}, {CALCULATED_VALUE(0x0B), CALCULATED_VALUE(0x0A)}, {CALCULATED_VALUE(0x18), CALCULATED_VALUE(0x17)}, {CALCULATED_VALUE(0x2F), CALCULATED_VALUE(0x2E)}, {CALCULATED_VALUE(0x1D), CALCULATED_VALUE(0x1C)}
633 };
634
635 const unsigned short CIRCULAR_ARROW_SEGMENTS[] =
636 {
637 0xa404, 0xa504, 0x0003, 0x6001, 0x8000
638 };
639
640 const Calculation CIRCULAR_ARROW_CALC[] =
641 {
642 {0x2000, 0x0147, 0x0000, 0x0000}, {0x2000, 0x0148, 0x0000, 0x0000}, {0x2000, 0x0149, 0x0000, 0x0000}, {0x4000, 0x2A30, 0x0149, 0x0000}, {0x4009, 0x2A30, 0x0147, 0x0000}, {0x400A, 0x2A30, 0x0147, 0x0000}, {0x4009, 0x2A30, 0x0148, 0x0000}, {0x400A, 0x2A30, 0x0148, 0x0000}, {0x2000, 0x0404, 0x2A30, 0x0000}, {0x2000, 0x0405, 0x2A30, 0x0000}, {0x2000, 0x0406, 0x2A30, 0x0000}, {0x2000, 0x0407, 0x2A30, 0x0000}, {0x6009, 0x0403, 0x0147, 0x0000}, {0x600A, 0x0403, 0x0147, 0x0000}, {0x6009, 0x0403, 0x0148, 0x0000}, {0x600A, 0x0403, 0x0148, 0x0000}, {0x2000, 0x040C, 0x2A30, 0x0000}, {0x2000, 0x040D, 0x2A30, 0x0000}, {0x2000, 0x040E, 0x2A30, 0x0000}, {0x2000, 0x040F, 0x2A30, 0x0000}, {0x8000, 0x5460, 0x0000, 0x0403}, {0x4009, 0x34BC, 0x0148, 0x0000}, {0x400A, 0x34BC, 0x0148, 0x0000}, {0x2000, 0x0415, 0x2A30, 0x0000}, {0x2000, 0x0416, 0x2A30, 0x0000}, {0x2000, 0x0149, 0x0000, 0x0A8C}, {0x6009, 0x0419, 0x0148, 0x0000}, {0x600A, 0x0419, 0x0148, 0x0000}, {0x2000, 0x041A, 0x2A30, 0x0000}, {0x2000, 0x041B, 0x2A30, 0x0000}, {0xA000, 0x041D, 0x0000, 0x0418}, {0xA000, 0x041D, 0x0000, 0x0418}, {0x6001, 0x041E, 0x041F, 0x0001}, {0xA000, 0x041C, 0x0000, 0x0417}, {0xA000, 0x041C, 0x0000, 0x0417}, {0x6001, 0x0421, 0x0422, 0x0001}, {0x6000, 0x0420, 0x0423, 0x0000}, {0x200D, 0x0424, 0x0000, 0x0000}, {0x200E, 0x0148, 0x002D, 0x0000}, {0x6009, 0x0425, 0x0426, 0x0000}, {0x200E, 0x0148, 0x002D, 0x0000}, {0x600A, 0x0425, 0x0428, 0x0000}, {0x000E, 0x0000, 0x002D, 0x0000}, {0x6009, 0x0427, 0x042A, 0x0000}, {0x000E, 0x0000, 0x002D, 0x0000}, {0x6009, 0x0429, 0x042C, 0x0000}, {0x6000, 0x041C, 0x042B, 0x0000}, {0x6000, 0x041D, 0x042D, 0x0000}
643 };
644
645 const TextRectangle CIRCULAR_ARROW_TRS[] =
646 {
647 { {0, 0}, {21600, 21600} }
648 };
649
650 const int CIRCULAR_ARROW_DEFAULT_ADJUST[] =
651 {
652 180 << 16, 0, 5550
653 };
654
655 const CustomShape CS_CIRCULAR_ARROW(
656 CIRCULAR_ARROW_VERTICES, sizeof(CIRCULAR_ARROW_VERTICES) / sizeof(Vertex),
657 CIRCULAR_ARROW_SEGMENTS, sizeof(CIRCULAR_ARROW_SEGMENTS) / sizeof(unsigned short),
658 CIRCULAR_ARROW_CALC, sizeof(CIRCULAR_ARROW_CALC) / sizeof(Calculation),
659 CIRCULAR_ARROW_DEFAULT_ADJUST, sizeof(CIRCULAR_ARROW_DEFAULT_ADJUST) / sizeof(int),
660 CIRCULAR_ARROW_TRS, sizeof(CIRCULAR_ARROW_TRS) / sizeof(TextRectangle),
661 21600, 21600,
662 nullptr, 0, 1 | 2);
663
664 const Vertex U_TURN_ARROW_VERTICES[] =
665 {
666 {0, 21600}, {0, 8550}, {0, 3540}, {4370, 0}, {9270, 0}, {13890, 0}, {18570, 3230}, {18600, 8300}, {21600, 8300}, {15680, 14260}, {9700, 8300}, {12500, 8300}, {12320, 6380}, {10870, 5850}, {9320, 5850}, {7770, 5850}, {6040, 6410}, {6110, 8520}, {6110, 21600}
667 };
668
669 const unsigned short U_TURN_ARROW_SEGMENTS[] =
670 {
671 0x4000, 0x0001, 0x2002, 0x0004, 0x2002, 0x0001, 0x6000, 0x8000
672 };
673
674 const TextRectangle U_TURN_ARROW_TRS[] =
675 {
676 { {0, 8280}, {6110, 21600} }
677 };
678
679 const CustomShape CS_U_TURN_ARROW(
680 U_TURN_ARROW_VERTICES, sizeof(U_TURN_ARROW_VERTICES) / sizeof(Vertex),
681 U_TURN_ARROW_SEGMENTS, sizeof(U_TURN_ARROW_SEGMENTS) / sizeof(unsigned short),
682 nullptr, 0,
683 nullptr, 0,
684 U_TURN_ARROW_TRS, sizeof(U_TURN_ARROW_TRS) / sizeof(TextRectangle),
685 21600, 21600,
686 nullptr, 0);
687
688 const Vertex CURVED_RIGHT_ARROW_VERTICES[] =
689 {
690 {0, 0}, {CALCULATED_VALUE(23), CALCULATED_VALUE(3)}, {CALCULATED_VALUE(22), 0}, {0, CALCULATED_VALUE(4)}, {0, CALCULATED_VALUE(15)}, {CALCULATED_VALUE(23), CALCULATED_VALUE(1)}, {0, CALCULATED_VALUE(7)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(13)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(14)}, {CALCULATED_VALUE(22), CALCULATED_VALUE(8)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(12)}, {0, 0}, {CALCULATED_VALUE(23), CALCULATED_VALUE(3)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(11)}, {CALCULATED_VALUE(26), CALCULATED_VALUE(17)}, {0, CALCULATED_VALUE(15)}, {CALCULATED_VALUE(23), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(26), CALCULATED_VALUE(17)}, {CALCULATED_VALUE(22), CALCULATED_VALUE(15)}, {0, 0}, {CALCULATED_VALUE(23), CALCULATED_VALUE(3)}, {CALCULATED_VALUE(22), 0}, {0, CALCULATED_VALUE(4)}, {0, 0}, {CALCULATED_VALUE(23), CALCULATED_VALUE(3)}, {0, CALCULATED_VALUE(4)}, {CALCULATED_VALUE(26), CALCULATED_VALUE(17)}, {0, CALCULATED_VALUE(15)}, {CALCULATED_VALUE(23), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(26), CALCULATED_VALUE(17)}, {CALCULATED_VALUE(22), CALCULATED_VALUE(15)}
691 };
692
693 const unsigned short CURVED_RIGHT_ARROW_SEGMENTS[] =
694 {
695 0xa404, 0xA304, 0x0003, 0xa508, 0x6000, 0x8000, 0xa404, 0xa304, 0xa504, 0x6000, 0x8000
696 };
697
698 const Calculation CURVED_RIGHT_ARROW_CALC[] =
699 {
700 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 2, 0, 0}, {0xa000, PROP_ADJUST_VAL_FIRST, 21600, PROP_ADJUST_VAL_FIRST + 1}, {0x2001, 0x403, 1, 2}, {0x6000, PROP_ADJUST_VAL_FIRST + 1, PROP_ADJUST_VAL_FIRST + 1, 21600}, {0xe000, 0x405, PROP_ADJUST_VAL_FIRST + 1, PROP_ADJUST_VAL_FIRST}, {0x2001, 0x406, 1, 2}, {0x4002, 21600, PROP_ADJUST_VAL_FIRST, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST + 2}, {0xa00f, 0x409, 21600, 0x404}, {0x6000, 0x404, 0x40a, 0}, {0x6000, 0x40b, PROP_ADJUST_VAL_FIRST + 1, 21600}, {0x6000, 0x407, 0x40a, 0}, {0xa000, 0x40c, 21600, PROP_ADJUST_VAL_FIRST}, {0xa000, 0x405, 0, PROP_ADJUST_VAL_FIRST}, {0x2001, 0x40f, 1, 2}, {0x6002, 0x404, 0x407, 0}, {0x6000, PROP_ADJUST_VAL_FIRST, PROP_ADJUST_VAL_FIRST + 1, 21600}, {0x2001, 0x412, 1, 2}, {0xa000, 0x411, 0, 0x413}, {0x0000, 21600, 0, 0}, {0x0000, 21600, 0, 0}, {0x0001, 21600, 2, 1}, {0xa000, 0x411, 0, 0x404}, {0x600f, 0x418, 0x404, 21600}, {0x8000, 21600, 0, 0x419}, {0x2000, 0x408, 128, 0}, {0x2001, 0x405, 1, 2}, {0x2000, 0x405, 0, 128}, {0xe000, PROP_ADJUST_VAL_FIRST, 0x411, 0x40c}, {0x600f, 0x414, 0x404, 21600}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST}, {0x2001, 0x420, 1, 2}, {0x0001, 21600, 21600, 1}, {0x6001, 0x409, 0x409, 1}, {0xa000, 0x422, 0, 0x423}, {0x200d, 0x424, 0, 0}, {0x2000, 0x425, 21600, 0}, {0x8001, 21600, 21600, 0x426}, {0x2000, 0x427, 64, 0}, {0x2001, PROP_ADJUST_VAL_FIRST, 1, 2}, {0x600f, 0x421, 0x429, 21600}, {0x8000, 21600, 0, 0x42a}, {0x2000, 0x42b, 64, 0}, {0x2001, 0x404, 1, 2}, {0xa000, PROP_ADJUST_VAL_FIRST + 1, 0, 0x42d}, {0x0001, 21600, 2195, 16384}, {0x0001, 21600, 14189, 16384}
701 };
702
703 const TextRectangle CURVED_RIGHT_ARROW_TRS[] =
704 {
705 { {CALCULATED_VALUE(47), CALCULATED_VALUE(45)}, {CALCULATED_VALUE(48), CALCULATED_VALUE(46)} }
706 };
707
708 const int CURVED_RIGHT_ARROW_DEFAULT_ADJUST[] =
709 {
710 12960, 19440, 14400
711 };
712
713 const Vertex CURVED_RIGHT_ARROW_GLUE_POINTS[] =
714 {
715 {0, CALCULATED_VALUE(17)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(14)}, {CALCULATED_VALUE(22), CALCULATED_VALUE(8)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(12)}, {CALCULATED_VALUE(22), CALCULATED_VALUE(16)}
716 };
717
718 const CustomShape CS_CURVED_RIGHT_ARROW(
719 CURVED_RIGHT_ARROW_VERTICES, sizeof(CURVED_RIGHT_ARROW_VERTICES) / sizeof(Vertex),
720 CURVED_RIGHT_ARROW_SEGMENTS, sizeof(CURVED_RIGHT_ARROW_SEGMENTS) / sizeof(unsigned short),
721 CURVED_RIGHT_ARROW_CALC, sizeof(CURVED_RIGHT_ARROW_CALC) / sizeof(Calculation),
722 CURVED_RIGHT_ARROW_DEFAULT_ADJUST, sizeof(CURVED_RIGHT_ARROW_DEFAULT_ADJUST) / sizeof(int),
723 CURVED_RIGHT_ARROW_TRS, sizeof(CURVED_RIGHT_ARROW_TRS) / sizeof(TextRectangle),
724 21600, 21600,
725 CURVED_RIGHT_ARROW_GLUE_POINTS, sizeof(CURVED_RIGHT_ARROW_GLUE_POINTS) / sizeof(Vertex));
726
727 const Vertex CURVED_LEFT_ARROW_VERTICES[] =
728 {
729 {CALCULATED_VALUE(22), 0}, {CALCULATED_VALUE(21), CALCULATED_VALUE(3)}, {0, 0}, {CALCULATED_VALUE(21), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(22), CALCULATED_VALUE(14)}, {CALCULATED_VALUE(21), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(21), CALCULATED_VALUE(7)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(12)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(13)}, {0, CALCULATED_VALUE(8)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(11)}, {CALCULATED_VALUE(22), 0}, {CALCULATED_VALUE(21), CALCULATED_VALUE(3)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(10)}, {CALCULATED_VALUE(24), CALCULATED_VALUE(16)}, {CALCULATED_VALUE(22), CALCULATED_VALUE(14)}, {CALCULATED_VALUE(21), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(24), CALCULATED_VALUE(16)}, {0, CALCULATED_VALUE(14)}, {CALCULATED_VALUE(22), 0}, {CALCULATED_VALUE(21), CALCULATED_VALUE(3)}, {0, 0}, {CALCULATED_VALUE(21), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(22), CALCULATED_VALUE(14)}, {CALCULATED_VALUE(21), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(21), CALCULATED_VALUE(7)}, {CALCULATED_VALUE(24), CALCULATED_VALUE(16)}, {CALCULATED_VALUE(22), CALCULATED_VALUE(14)}, {CALCULATED_VALUE(21), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(24), CALCULATED_VALUE(16)}, {0, CALCULATED_VALUE(14)}
730 };
731
732 const unsigned short CURVED_LEFT_ARROW_SEGMENTS[] =
733 {
734 0xa608, 0x0003, 0xa308, 0x6000, 0x8000, 0xa604, 0xa308, 0x6000, 0x8000
735 };
736
737 const Calculation CURVED_LEFT_ARROW_CALC[] =
738 {
739 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 2, 0, 0}, {0xa000, PROP_ADJUST_VAL_FIRST, 21600, PROP_ADJUST_VAL_FIRST + 1}, {0x2001, 0x403, 1, 2}, {0x6000, PROP_ADJUST_VAL_FIRST + 1, PROP_ADJUST_VAL_FIRST + 1, 21600}, {0xe000, 0x405, PROP_ADJUST_VAL_FIRST + 1, PROP_ADJUST_VAL_FIRST}, {0x2001, 0x406, 1, 2}, {0x4002, 21600, PROP_ADJUST_VAL_FIRST, 0}, {0xa00f, PROP_ADJUST_VAL_FIRST + 2, 21600, 0x404}, {0x6000, 0x404, 0x409, 0}, {0x6000, 0x40a, PROP_ADJUST_VAL_FIRST + 1, 21600}, {0x6000, 0x407, 0x409, 0}, {0xa000, 0x40b, 21600, PROP_ADJUST_VAL_FIRST}, {0xa000, 0x405, 0, PROP_ADJUST_VAL_FIRST}, {0x2001, 0x40e, 1, 2}, {0x6002, 0x404, 0x407, 0}, {0x6000, PROP_ADJUST_VAL_FIRST, PROP_ADJUST_VAL_FIRST + 1, 21600}, {0x2001, 0x411, 1, 2}, {0xa000, 0x410, 0, 0x412}, {0x0000, 21600, 0, 0}, {0x0000, 21600, 0, 0}, {0x0000, 0, 0, 21600}, {0xa000, 0x410, 0, 0x404}, {0x600f, 0x417, 0x404, 21600}, {0x2000, 0x408, 128, 0}, {0x2001, 0x405, 1, 2}, {0x2000, 0x405, 0, 128}, {0xe000, PROP_ADJUST_VAL_FIRST, 0x410, 0x40b}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST}, {0x2001, 0x41d, 1, 2}, {0x0001, 21600, 21600, 1}, {0x6001, PROP_ADJUST_VAL_FIRST + 2, PROP_ADJUST_VAL_FIRST + 2, 1}, {0xa000, 0x41f, 0, 0x420}, {0x200d, 0x421, 0, 0}, {0x2000, 0x422, 21600, 0}, {0x8001, 21600, 21600, 0x423}, {0x2000, 0x424, 64, 0}, {0x2001, PROP_ADJUST_VAL_FIRST, 1, 2}, {0x600f, 0x41e, 0x426, 21600}, {0x2000, 0x427, 0, 64}, {0x2001, 0x404, 1, 2}, {0xa000, PROP_ADJUST_VAL_FIRST + 1, 0, 0x429}, {0x0001, 21600, 2195, 16384}, {0x0001, 21600, 14189, 16384}
740 };
741
742 const TextRectangle CURVED_LEFT_ARROW_TRS[] =
743 {
744 { {CALCULATED_VALUE(43), CALCULATED_VALUE(41)}, {CALCULATED_VALUE(44), CALCULATED_VALUE(42)} }
745 };
746
747 const int CURVED_LEFT_ARROW_DEFAULT_ADJUST[] =
748 {
749 12960, 19440, 7200
750 };
751
752 const Vertex CURVED_LEFT_ARROW_GLUE_POINTS[] =
753 {
754 {0, CALCULATED_VALUE(15)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(11)}, {0, CALCULATED_VALUE(8)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(13)}, {CALCULATED_VALUE(21), CALCULATED_VALUE(16)}
755 };
756
757
758 const Vertex CURVED_DOWN_ARROW_VERTICES[] =
759 {
760 {0, 0}, {CALCULATED_VALUE(3), CALCULATED_VALUE(23)}, {0, CALCULATED_VALUE(22)}, {CALCULATED_VALUE(4), 0}, {CALCULATED_VALUE(15), 0}, {CALCULATED_VALUE(1), CALCULATED_VALUE(23)}, {CALCULATED_VALUE(7), 0}, {CALCULATED_VALUE(13), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(14), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(8), CALCULATED_VALUE(22)}, {CALCULATED_VALUE(12), CALCULATED_VALUE(2)}, {0, 0}, {CALCULATED_VALUE(3), CALCULATED_VALUE(23)}, {CALCULATED_VALUE(11), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(17), CALCULATED_VALUE(26)}, {CALCULATED_VALUE(15), 0}, {CALCULATED_VALUE(1), CALCULATED_VALUE(23)}, {CALCULATED_VALUE(17), CALCULATED_VALUE(26)}, {CALCULATED_VALUE(15), CALCULATED_VALUE(22)}, {0, 0}, {CALCULATED_VALUE(3), CALCULATED_VALUE(23)}, {0, CALCULATED_VALUE(22)}, {CALCULATED_VALUE(4), 0}, {0, 0}, {CALCULATED_VALUE(3), CALCULATED_VALUE(23)}, {CALCULATED_VALUE(4), 0}, {CALCULATED_VALUE(17), CALCULATED_VALUE(26)}, {CALCULATED_VALUE(15), 0}, {CALCULATED_VALUE(1), CALCULATED_VALUE(23)}, {CALCULATED_VALUE(17), CALCULATED_VALUE(26)}, {CALCULATED_VALUE(15), CALCULATED_VALUE(22)}
761 };
762
763 const unsigned short CURVED_DOWN_ARROW_SEGMENTS[] =
764 {
765 0xa604, 0xa504, 0x0003, 0xa308, 0x6000, 0x8000, 0xa604, 0xa504, 0xa304, 0x6000, 0x8000
766 };
767
768 const Calculation CURVED_DOWN_ARROW_CALC[] =
769 {
770 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 2, 0, 0}, {0xa000, PROP_ADJUST_VAL_FIRST, 21600, PROP_ADJUST_VAL_FIRST + 1}, {0x2001, 0x403, 1, 2}, {0x6000, PROP_ADJUST_VAL_FIRST + 1, PROP_ADJUST_VAL_FIRST + 1, 21600}, {0xe000, 0x405, PROP_ADJUST_VAL_FIRST + 1, PROP_ADJUST_VAL_FIRST}, {0x2001, 0x406, 1, 2}, {0x4002, 21600, PROP_ADJUST_VAL_FIRST, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST + 2}, {0xa00f, 0x409, 21600, 0x404}, {0x6000, 0x404, 0x40a, 0}, {0x6000, 0x40b, PROP_ADJUST_VAL_FIRST + 1, 21600}, {0x6000, 0x407, 0x40a, 0}, {0xa000, 0x40c, 21600, PROP_ADJUST_VAL_FIRST}, {0xa000, 0x405, 0, PROP_ADJUST_VAL_FIRST}, {0x2001, 0x40f, 1, 2}, {0x6002, 0x404, 0x407, 0}, {0x6000, PROP_ADJUST_VAL_FIRST, PROP_ADJUST_VAL_FIRST + 1, 21600}, {0x2001, 0x412, 1, 2}, {0xa000, 0x411, 0, 0x413}, {0x0000, 21600, 0, 0}, {0x0000, 21600, 0, 0}, {0x0001, 21600, 2, 1}, {0xa000, 0x411, 0, 0x404}, {0x600f, 0x418, 0x404, 21600}, {0x8000, 21600, 0, 0x419}, {0x2000, 0x408, 128, 0}, {0x2001, 0x405, 1, 2}, {0x2000, 0x405, 0, 128}, {0xe000, PROP_ADJUST_VAL_FIRST, 0x411, 0x40c}, {0x600f, 0x414, 0x404, 21600}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST}, {0x2001, 0x420, 1, 2}, {0x0001, 21600, 21600, 1}, {0x6001, 0x409, 0x409, 1}, {0xa000, 0x422, 0, 0x423}, {0x200d, 0x424, 0, 0}, {0x2000, 0x425, 21600, 0}, {0x8001, 21600, 21600, 0x426}, {0x2000, 0x427, 64, 0}, {0x2001, PROP_ADJUST_VAL_FIRST, 1, 2}, {0x600f, 0x421, 0x429, 21600}, {0x8000, 21600, 0, 0x42a}, {0x2000, 0x42b, 64, 0}, {0x2001, 0x404, 1, 2}, {0xa000, PROP_ADJUST_VAL_FIRST + 1, 0, 0x42d}, {0x0001, 21600, 2195, 16384}, {0x0001, 21600, 14189, 16384}
771 };
772
773 const TextRectangle CURVED_DOWN_ARROW_TRS[] =
774 {
775 { {CALCULATED_VALUE(45), CALCULATED_VALUE(47)}, {CALCULATED_VALUE(46), CALCULATED_VALUE(48)} }
776 };
777
778 const int CURVED_DOWN_ARROW_DEFAULT_ADJUST[] =
779 {
780 12960, 19440, 14400
781 };
782
783 const Vertex CURVED_DOWN_ARROW_GLUE_POINTS[] =
784 {
785 {CALCULATED_VALUE(17), 0}, {CALCULATED_VALUE(16), CALCULATED_VALUE(22)}, {CALCULATED_VALUE(12), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(8), CALCULATED_VALUE(22)}, {CALCULATED_VALUE(14), CALCULATED_VALUE(2)}
786 };
787
788 const CustomShape CS_CURVED_DOWN_ARROW(
789 CURVED_DOWN_ARROW_VERTICES, sizeof(CURVED_DOWN_ARROW_VERTICES) / sizeof(Vertex),
790 CURVED_DOWN_ARROW_SEGMENTS, sizeof(CURVED_DOWN_ARROW_SEGMENTS) / sizeof(unsigned short),
791 CURVED_DOWN_ARROW_CALC, sizeof(CURVED_DOWN_ARROW_CALC) / sizeof(Calculation),
792 CURVED_DOWN_ARROW_DEFAULT_ADJUST, sizeof(CURVED_DOWN_ARROW_DEFAULT_ADJUST) / sizeof(int),
793 CURVED_DOWN_ARROW_TRS, sizeof(CURVED_DOWN_ARROW_TRS) / sizeof(TextRectangle),
794 21600, 21600,
795 CURVED_DOWN_ARROW_GLUE_POINTS, sizeof(CURVED_DOWN_ARROW_GLUE_POINTS) / sizeof(Vertex));
796
797 const Vertex FLOW_CHART_PREDEFINED_PROCESS_VERTICES[] =
798 {
799 {0, 0}, {21600, 0}, {21600, 21600}, {0, 21600}, {2540, 0}, {2540, 21600}, {21600 - 2540, 0}, {21600 - 2540, 21600}
800 };
801
802 const unsigned short FLOW_CHART_PREDEFINED_PROCESS_SEGMENTS[] =
803 {
804 0x4000, 0x0003, 0x6000, 0x8000, 0x4000, 0x0001, 0x8000, 0x4000, 0x0001, 0x8000
805 };
806
807 const TextRectangle FLOW_CHART_PREDEFINED_PROCESS_TRS[] =
808 {
809 { {2540, 0}, {21600 - 2540, 21600} }
810 };
811
812 const Vertex FLOW_CHART_INTERNAL_STORAGE_VERTICES[] =
813 {
814 {0, 0}, {21600, 0}, {21600, 21600}, {0, 21600}, {4230, 0}, {4230, 21600}, {0, 4230}, {21600, 4230}
815 };
816
817 const unsigned short FLOW_CHART_INTERNAL_STORAGE_SEGMENTS[] =
818 {
819 0x4000, 0x0003, 0x6000, 0x8000, 0x4000, 0x0001, 0x8000, 0x4000, 0x0001, 0x8000
820 };
821
822 const TextRectangle FLOW_CHART_INTERNAL_STORAGE_TRS[] =
823 {
824 { {4230, 4230}, {21600, 21600} }
825 };
826
827 const CustomShape CS_FLOW_CHART_INTERNAL_STORAGE(
828 FLOW_CHART_INTERNAL_STORAGE_VERTICES, sizeof(FLOW_CHART_INTERNAL_STORAGE_VERTICES) / sizeof(Vertex),
829 FLOW_CHART_INTERNAL_STORAGE_SEGMENTS, sizeof(FLOW_CHART_INTERNAL_STORAGE_SEGMENTS) / sizeof(unsigned short),
830 nullptr, 0,
831 nullptr, 0,
832 FLOW_CHART_INTERNAL_STORAGE_TRS, sizeof(FLOW_CHART_INTERNAL_STORAGE_TRS) / sizeof(TextRectangle),
833 21600, 21600,
834 nullptr, 0);
835
836 const Vertex FLOW_CHART_DOCUMENT_VERTICES[] =
837 {
838 {0, 0}, {21600, 0}, {21600, 17360}, {13050, 17220}, {13340, 20770}, {5620, 21600}, {2860, 21100}, {1850, 20700}, {0, 20120}
839 };
840
841 const unsigned short FLOW_CHART_DOCUMENT_SEGMENTS[] =
842 {
843 0x4000, 0x0002, 0x2002, 0x6000, 0x8000
844 };
845
846 const TextRectangle FLOW_CHART_DOCUMENT_TRS[] =
847 {
848 { {0, 0}, {21600, 17360} }
849 };
850
851 const Vertex FLOW_CHART_DOCUMENT_GLUE_POINTS[] =
852 {
853 {10800, 0}, {0, 10800}, {10800, 20320}, {21600, 10800}
854 };
855
856 const CustomShape CS_FLOW_CHART_DOCUMENT(
857 FLOW_CHART_DOCUMENT_VERTICES, sizeof(FLOW_CHART_DOCUMENT_VERTICES) / sizeof(Vertex),
858 FLOW_CHART_DOCUMENT_SEGMENTS, sizeof(FLOW_CHART_DOCUMENT_SEGMENTS) / sizeof(unsigned short),
859 nullptr, 0,
860 nullptr, 0,
861 FLOW_CHART_DOCUMENT_TRS, sizeof(FLOW_CHART_DOCUMENT_TRS) / sizeof(TextRectangle),
862 21600, 21600,
863 FLOW_CHART_DOCUMENT_GLUE_POINTS, sizeof(FLOW_CHART_DOCUMENT_GLUE_POINTS) / sizeof(Vertex));
864
865 const Vertex FLOW_CHART_MULTI_DOCUMENT_VERTICES[] =
866 {
867 {0, 3600}, {1500, 3600}, {1500, 1800}, {3000, 1800}, {3000, 0}, {21600, 0}, {21600, 14409}, {21600 - 1500, 14409}, {21600 - 1500, 14409 + 1800}, {21600 - 3000, 14409 + 1800}, {21600 - 3000, 14409 + 3600}, {11610, 14293 + 3600}, {11472, 17239 + 3600}, {4833, 17928 + 3600}, {2450, 17513 + 3600}, {1591, 17181 + 3600}, {0, 16700 + 3600}, {1500, 3600}, {21600 - 3000, 3600}, {21600 - 3000, 14409 + 1800}, {3000, 1800}, {21600 - 1500, 1800}, {21600 - 1500, 14409}
868 };
869
870 const unsigned short FLOW_CHART_MULTI_DOCUMENT_SEGMENTS[] =
871 {
872 0x4000, 0x000a, 0x2002, 0x6000, 0x8000, 0x4000, 0xaa00, 0x0002, 0x8000, 0x4000, 0xaa00, 0x0002, 0x8000
873 };
874
875 const TextRectangle FLOW_CHART_MULTI_DOCUMENT_TRS[] =
876 {
877 { {0, 3600}, {21600 - 3600, 14409 + 3600} }
878 };
879
880 const Vertex FLOW_CHART_MULTI_DOCUMENT_GLUE_POINTS[] =
881 {
882 {10800, 0}, {0, 10800}, {10800, 19890}, {21600, 10800}
883 };
884
885 const CustomShape CS_FLOW_CHART_MULTI_DOCUMENT(
886 FLOW_CHART_MULTI_DOCUMENT_VERTICES, sizeof(FLOW_CHART_MULTI_DOCUMENT_VERTICES) / sizeof(Vertex),
887 FLOW_CHART_MULTI_DOCUMENT_SEGMENTS, sizeof(FLOW_CHART_MULTI_DOCUMENT_SEGMENTS) / sizeof(unsigned short),
888 nullptr, 0,
889 nullptr, 0,
890 FLOW_CHART_MULTI_DOCUMENT_TRS, sizeof(FLOW_CHART_MULTI_DOCUMENT_TRS) / sizeof(TextRectangle),
891 21600, 21600,
892 FLOW_CHART_MULTI_DOCUMENT_GLUE_POINTS, sizeof(FLOW_CHART_MULTI_DOCUMENT_GLUE_POINTS) / sizeof(Vertex));
893
894 const Vertex FLOW_CHART_TERMINATOR_VERTICES[] =
895 {
896 {3470, 21600}, {0, 10800}, {3470, 0}, {18130, 0}, {21600, 10800}, {18130, 21600}
897 };
898
899 const unsigned short FLOW_CHART_TERMINATOR_SEGMENTS[] =
900 {
901 0x4000, 0xa702, 0x0001, 0xa702, 0x6000, 0x8000
902 };
903
904 const TextRectangle FLOW_CHART_TERMINATOR_TRS[] =
905 {
906 { {1060, 3180}, {20540, 18420} }
907 };
908
909 const Vertex FLOW_CHART_TERMINATOR_GLUE_POINTS[] =
910 {
911 {10800, 0}, {0, 10800}, {10800, 21600}, {21600, 10800}
912 };
913
914 const CustomShape CS_FLOW_CHART_TERMINATOR(
915 FLOW_CHART_TERMINATOR_VERTICES, sizeof(FLOW_CHART_TERMINATOR_VERTICES) / sizeof(Vertex),
916 FLOW_CHART_TERMINATOR_SEGMENTS, sizeof(FLOW_CHART_TERMINATOR_SEGMENTS) / sizeof(unsigned short),
917 nullptr, 0,
918 nullptr, 0,
919 FLOW_CHART_TERMINATOR_TRS, sizeof(FLOW_CHART_TERMINATOR_TRS) / sizeof(TextRectangle),
920 21600, 21600,
921 FLOW_CHART_TERMINATOR_GLUE_POINTS, sizeof(FLOW_CHART_TERMINATOR_GLUE_POINTS) / sizeof(Vertex));
922
923 const CustomShape CS_FLOW_CHART_PREDEFINED_PROCESS(
924 FLOW_CHART_PREDEFINED_PROCESS_VERTICES, sizeof(FLOW_CHART_PREDEFINED_PROCESS_VERTICES) / sizeof(Vertex),
925 FLOW_CHART_PREDEFINED_PROCESS_SEGMENTS, sizeof(FLOW_CHART_PREDEFINED_PROCESS_SEGMENTS) / sizeof(unsigned short),
926 nullptr, 0,
927 nullptr, 0,
928 FLOW_CHART_PREDEFINED_PROCESS_TRS, sizeof(FLOW_CHART_PREDEFINED_PROCESS_TRS) / sizeof(TextRectangle),
929 21600, 21600,
930 nullptr, 0);
931
932 const Vertex FLOW_CHART_IO_VERTICES[] =
933 {
934 {4230, 0}, {21600, 0}, {17370, 21600}, {0, 21600}, {4230, 0}
935 };
936
937 const TextRectangle FLOW_CHART_IO_TRS[] =
938 {
939 { {4230, 0}, {17370, 21600} }
940 };
941
942 const Vertex FLOW_CHART_IO_GLUE_POINTS[] =
943 {
944 {12960, 0}, {10800, 0}, {2160, 10800}, {8600, 21600}, {10800, 21600}, {19400, 10800}
945 };
946
947 const CustomShape CS_FLOW_CHART_IO(
948 FLOW_CHART_IO_VERTICES, sizeof(FLOW_CHART_IO_VERTICES) / sizeof(Vertex),
949 nullptr, 0,
950 nullptr, 0,
951 nullptr, 0,
952 FLOW_CHART_IO_TRS, sizeof(FLOW_CHART_IO_TRS) / sizeof(TextRectangle),
953 21600, 21600,
954 FLOW_CHART_IO_GLUE_POINTS, sizeof(FLOW_CHART_IO_GLUE_POINTS) / sizeof(Vertex));
955
956 const Vertex FLOW_CHART_PROCESS_VERTICES[] =
957 {
958 {0, 0}, {21600, 0}, {21600, 21600}, {0, 21600}, {0, 0}
959 };
960
961 const Vertex FLOW_CHART_PROCESS_GLUE_POINTS[] =
962 {
963 {10800, 0}, {0, 10800}, {10800, 21600}, {21600, 10800}
964 };
965
966 const Vertex FLOW_CHART_DECISION_VERTICES[] =
967 {
968 {0, 10800}, {10800, 0}, {21600, 10800}, {10800, 21600}, {0, 10800}
969 };
970
971 const TextRectangle FLOW_CHART_DECISION_TRS[] =
972 {
973 { {5400, 5400}, {16200, 16200} }
974 };
975
976 const Vertex FLOW_CHART_DECISION_GLUE_POINTS[] =
977 {
978 {10800, 0}, {0, 10800}, {10800, 21600}, {21600, 10800}
979 };
980
981 const CustomShape CS_FLOW_CHART_DECISION(
982 FLOW_CHART_DECISION_VERTICES, sizeof(FLOW_CHART_DECISION_VERTICES) / sizeof(Vertex),
983 nullptr, 0,
984 nullptr, 0,
985 nullptr, 0,
986 FLOW_CHART_DECISION_TRS, sizeof(FLOW_CHART_DECISION_TRS) / sizeof(TextRectangle),
987 21600, 21600,
988 FLOW_CHART_DECISION_GLUE_POINTS, sizeof(FLOW_CHART_DECISION_GLUE_POINTS) / sizeof(Vertex));
989
990 const CustomShape CS_FLOW_CHART_PROCESS(
991 FLOW_CHART_PROCESS_VERTICES, sizeof(FLOW_CHART_PROCESS_VERTICES) / sizeof(Vertex),
992 nullptr, 0,
993 nullptr, 0,
994 nullptr, 0,
995 nullptr, 0,
996 21600, 21600,
997 FLOW_CHART_PROCESS_GLUE_POINTS, sizeof(FLOW_CHART_PROCESS_GLUE_POINTS) / sizeof(Vertex));
998
999 const Vertex CURVED_UP_ARROW_VERTICES[] =
1000 {
1001 {0, CALCULATED_VALUE(22)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(21)}, {0, 0}, {CALCULATED_VALUE(4), CALCULATED_VALUE(21)}, {CALCULATED_VALUE(14), CALCULATED_VALUE(22)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(21)}, {CALCULATED_VALUE(7), CALCULATED_VALUE(21)}, {CALCULATED_VALUE(12), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(13), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(8), 0}, {CALCULATED_VALUE(11), CALCULATED_VALUE(2)}, {0, CALCULATED_VALUE(22)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(21)}, {CALCULATED_VALUE(10), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(16), CALCULATED_VALUE(24)}, {CALCULATED_VALUE(14), CALCULATED_VALUE(22)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(21)}, {CALCULATED_VALUE(16), CALCULATED_VALUE(24)}, {CALCULATED_VALUE(14), 0}, {0, CALCULATED_VALUE(22)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(21)}, {0, 0}, {CALCULATED_VALUE(4), CALCULATED_VALUE(21)}, {CALCULATED_VALUE(14), CALCULATED_VALUE(22)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(21)}, {CALCULATED_VALUE(7), CALCULATED_VALUE(21)}, {CALCULATED_VALUE(16), CALCULATED_VALUE(24)}, {CALCULATED_VALUE(14), CALCULATED_VALUE(22)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(21)}, {CALCULATED_VALUE(16), CALCULATED_VALUE(24)}, {CALCULATED_VALUE(14), 0}
1002 };
1003
1004 const unsigned short CURVED_UP_ARROW_SEGMENTS[] =
1005 {
1006 0xa408, 0x0003, 0xa508, 0x6000, 0x8000, 0xa404, 0xa508, 0xa504, 0x6000, 0x8000
1007 };
1008
1009 const Calculation CURVED_UP_ARROW_CALC[] =
1010 {
1011 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 2, 0, 0}, {0xa000, PROP_ADJUST_VAL_FIRST, 21600, PROP_ADJUST_VAL_FIRST + 1}, {0x2001, 0x403, 1, 2}, {0x6000, PROP_ADJUST_VAL_FIRST + 1, PROP_ADJUST_VAL_FIRST + 1, 21600}, {0xe000, 0x405, PROP_ADJUST_VAL_FIRST + 1, PROP_ADJUST_VAL_FIRST}, {0x2001, 0x406, 1, 2}, {0x4002, 21600, PROP_ADJUST_VAL_FIRST, 0}, {0xa00f, PROP_ADJUST_VAL_FIRST + 2, 21600, 0x404}, {0x6000, 0x404, 0x409, 0}, {0x6000, 0x40a, PROP_ADJUST_VAL_FIRST + 1, 21600}, {0x6000, 0x407, 0x409, 0}, {0xa000, 0x40b, 21600, PROP_ADJUST_VAL_FIRST}, {0xa000, 0x405, 0, PROP_ADJUST_VAL_FIRST}, {0x2001, 0x40e, 1, 2}, {0x6002, 0x404, 0x407, 0}, {0x6000, PROP_ADJUST_VAL_FIRST, PROP_ADJUST_VAL_FIRST + 1, 21600}, {0x2001, 0x411, 1, 2}, {0xa000, 0x410, 0, 0x412}, {0x0000, 21600, 0, 0}, {0x0000, 21600, 0, 0}, {0x0000, 0, 0, 21600}, {0xa000, 0x410, 0, 0x404}, {0x600f, 0x417, 0x404, 21600}, {0x2000, 0x408, 128, 0}, {0x2001, 0x405, 1, 2}, {0x2000, 0x405, 0, 128}, {0xe000, PROP_ADJUST_VAL_FIRST, 0x410, 0x40b}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST}, {0x2001, 0x41d, 1, 2}, {0x0001, 21600, 21600, 1}, {0x6001, PROP_ADJUST_VAL_FIRST + 2, PROP_ADJUST_VAL_FIRST + 2, 1}, {0xa000, 0x41f, 0, 0x420}, {0x200d, 0x421, 0, 0}, {0x2000, 0x422, 21600, 0}, {0x8001, 21600, 21600, 0x423}, {0x2000, 0x424, 64, 0}, {0x2001, PROP_ADJUST_VAL_FIRST, 1, 2}, {0x600f, 0x41e, 0x426, 21600}, {0x2000, 0x427, 0, 64}, {0x2001, 0x404, 1, 2}, {0xa000, PROP_ADJUST_VAL_FIRST + 1, 0, 0x429}, {0x0001, 21600, 2195, 16384}, {0x0001, 21600, 14189, 16384}
1012 };
1013
1014 const TextRectangle CURVED_UP_ARROW_TRS[] =
1015 {
1016 { {CALCULATED_VALUE(41), CALCULATED_VALUE(43)}, {CALCULATED_VALUE(42), CALCULATED_VALUE(44)} }
1017 };
1018
1019 const int CURVED_UP_ARROW_DEFAULT_ADJUST[] =
1020 {
1021 12960, 19440, 7200
1022 };
1023
1024 const Vertex CURVED_UP_ARROW_GLUE_POINTS[] =
1025 {
1026 {CALCULATED_VALUE(8), 0}, {CALCULATED_VALUE(11), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(15), 0}, {CALCULATED_VALUE(16), CALCULATED_VALUE(21)}, {CALCULATED_VALUE(13), CALCULATED_VALUE(2)}
1027 };
1028
1029 const CustomShape CS_CURVED_UP_ARROW(
1030 CURVED_UP_ARROW_VERTICES, sizeof(CURVED_UP_ARROW_VERTICES) / sizeof(Vertex),
1031 CURVED_UP_ARROW_SEGMENTS, sizeof(CURVED_UP_ARROW_SEGMENTS) / sizeof(unsigned short),
1032 CURVED_UP_ARROW_CALC, sizeof(CURVED_UP_ARROW_CALC) / sizeof(Calculation),
1033 CURVED_UP_ARROW_DEFAULT_ADJUST, sizeof(CURVED_UP_ARROW_DEFAULT_ADJUST) / sizeof(int),
1034 CURVED_UP_ARROW_TRS, sizeof(CURVED_UP_ARROW_TRS) / sizeof(TextRectangle),
1035 21600, 21600,
1036 CURVED_UP_ARROW_GLUE_POINTS, sizeof(CURVED_UP_ARROW_GLUE_POINTS) / sizeof(Vertex));
1037
1038 const CustomShape CS_CURVED_LEFT_ARROW(
1039 CURVED_LEFT_ARROW_VERTICES, sizeof(CURVED_LEFT_ARROW_VERTICES) / sizeof(Vertex),
1040 CURVED_LEFT_ARROW_SEGMENTS, sizeof(CURVED_LEFT_ARROW_SEGMENTS) / sizeof(unsigned short),
1041 CURVED_LEFT_ARROW_CALC, sizeof(CURVED_LEFT_ARROW_CALC) / sizeof(Calculation),
1042 CURVED_LEFT_ARROW_DEFAULT_ADJUST, sizeof(CURVED_LEFT_ARROW_DEFAULT_ADJUST) / sizeof(int),
1043 CURVED_LEFT_ARROW_TRS, sizeof(CURVED_LEFT_ARROW_TRS) / sizeof(TextRectangle),
1044 21600, 21600,
1045 CURVED_LEFT_ARROW_GLUE_POINTS, sizeof(CURVED_LEFT_ARROW_GLUE_POINTS) / sizeof(Vertex));
1046
1047 const CustomShape CS_HORIZONTAL_SCROLL(
1048 HORIZONTAL_SCROLL_VERTICES, sizeof(HORIZONTAL_SCROLL_VERTICES) / sizeof(Vertex),
1049 HORIZONTAL_SCROLL_SEGMENTS, sizeof(HORIZONTAL_SCROLL_SEGMENTS) / sizeof(unsigned short),
1050 HORIZONTAL_SCROLL_CALC, sizeof(HORIZONTAL_SCROLL_CALC) / sizeof(Calculation),
1051 HORIZONTAL_SCROLL_DEFAULT_ADJUST, sizeof(HORIZONTAL_SCROLL_DEFAULT_ADJUST) / sizeof(int),
1052 HORIZONTAL_SCROLL_TRS, sizeof(HORIZONTAL_SCROLL_TRS) / sizeof(TextRectangle),
1053 21600, 21600,
1054 nullptr, 0);
1055
1056 const CustomShape CS_VERTICAL_SCROLL(
1057 VERTICAL_SCROLL_VERTICES, sizeof(VERTICAL_SCROLL_VERTICES) / sizeof(Vertex),
1058 VERTICAL_SCROLL_SEGMENTS, sizeof(VERTICAL_SCROLL_SEGMENTS) / sizeof(unsigned short),
1059 VERTICAL_SCROLL_CALC, sizeof(VERTICAL_SCROLL_CALC) / sizeof(Calculation),
1060 VERTICAL_SCROLL_DEFAULT_ADJUST, sizeof(VERTICAL_SCROLL_DEFAULT_ADJUST) / sizeof(int),
1061 VERTICAL_SCROLL_TRS, sizeof(VERTICAL_SCROLL_TRS) / sizeof(TextRectangle),
1062 21600, 21600,
1063 nullptr, 0);
1064
1065 const CustomShape CS_SMILEY_FACE(
1066 SMILEY_FACE_VERTICES, sizeof(SMILEY_FACE_VERTICES) / sizeof(Vertex),
1067 SMILEY_FACE_SEGMENTS, sizeof(SMILEY_FACE_SEGMENTS) / sizeof(unsigned short),
1068 SMILEY_FACE_CALC, sizeof(SMILEY_FACE_CALC) / sizeof(Calculation),
1069 SMILEY_FACE_DEFAULT_ADJUST, sizeof(SMILEY_FACE_DEFAULT_ADJUST) / sizeof(int),
1070 SMILEY_FACE_TRS, sizeof(SMILEY_FACE_TRS) / sizeof(TextRectangle),
1071 21600, 21600,
1072 SMILEY_FACE_GLUE_POINTS, sizeof(SMILEY_FACE_GLUE_POINTS) / sizeof(Vertex));
1073
1074 const Vertex BLOCK_ARC_VERTICES[] =
1075 {
1076 {0, 0}, {21600, 21600}, {CALCULATED_VALUE(4), CALCULATED_VALUE(3)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(3)}, {CALCULATED_VALUE(5), CALCULATED_VALUE(5)}, {CALCULATED_VALUE(6), CALCULATED_VALUE(6)}, {CALCULATED_VALUE(9), CALCULATED_VALUE(10)}, {CALCULATED_VALUE(11), CALCULATED_VALUE(10)}
1077 };
1078
1079 const unsigned short BLOCK_ARC_SEGMENTS[] =
1080 {
1081 0xA404, 0xa504, 0x6001, 0x8000
1082 };
1083
1084 const Calculation BLOCK_ARC_CALC[] =
1085 {
1086 {0x400a, 10800, PROP_ADJUST_VAL_FIRST, 0}, {0x4009, 10800, PROP_ADJUST_VAL_FIRST, 0},
1087 {0x2000, 0x400, 10800, 0},
1088 {0x2000, 0x401, 10800, 0}, {0x8000, 21600, 0, 0x402},
1089 {0x8000, 10800, 0, PROP_ADJUST_VAL_FIRST + 1},
1090 {0x4000, 10800, PROP_ADJUST_VAL_FIRST + 1, 0},
1091 {0x600a, PROP_ADJUST_VAL_FIRST + 1, PROP_ADJUST_VAL_FIRST, 0},
1092 {0x6009, PROP_ADJUST_VAL_FIRST + 1, PROP_ADJUST_VAL_FIRST, 0},
1093 {0x4000, 10800, 0x407, 0}, {0x4000, 10800, 0x408, 0}, {0x8000, 10800,0, 0x407}
1094 };
1095
1096 const int BLOCK_ARC_DEFAULT_ADJUST[] =
1097 {
1098 180 << 16, 5400
1099 };
1100
1101 const CustomShape CS_BLOCK_ARC(
1102 BLOCK_ARC_VERTICES, sizeof(BLOCK_ARC_VERTICES) / sizeof(Vertex),
1103 BLOCK_ARC_SEGMENTS, sizeof(BLOCK_ARC_SEGMENTS) / sizeof(unsigned short),
1104 BLOCK_ARC_CALC, sizeof(BLOCK_ARC_CALC) / sizeof(Calculation),
1105 BLOCK_ARC_DEFAULT_ADJUST, sizeof(BLOCK_ARC_DEFAULT_ADJUST) / sizeof(int),
1106 nullptr, 0,
1107 21600, 21600,
1108 nullptr, 0, 0x1);
1109
1110 const Vertex NOTCHED_RIGHT_ARROW_VERTICES[] =
1111 {
1112 {0, CALCULATED_VALUE(1)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(0), 0}, {21600, 10800}, {CALCULATED_VALUE(0), 21600}, {CALCULATED_VALUE(0), CALCULATED_VALUE(2)}, {0, CALCULATED_VALUE(2)}, {CALCULATED_VALUE(5), 10800}, {0, CALCULATED_VALUE(1)}
1113 };
1114
1115 const Calculation NOTCHED_RIGHT_ARROW_CALC[] =
1116 {
1117 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST + 1}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST}, {0x8000, 10800, 0, PROP_ADJUST_VAL_FIRST + 1}, {0x6001, 0x403, 0x404, 10800}
1118 };
1119
1120 const TextRectangle NOTCHED_RIGHT_ARROW_TRS[] =
1121 {
1122 { {0, 0}, {21600, 21600} }
1123 };
1124
1125 const int NOTCHED_RIGHT_ARROW_DEFAULT_ADJUST[] =
1126 {
1127 16200, 5400
1128 };
1129
1130 const CustomShape CS_NOTCHED_RIGHT_ARROW(
1131 NOTCHED_RIGHT_ARROW_VERTICES, sizeof(NOTCHED_RIGHT_ARROW_VERTICES) / sizeof(Vertex),
1132 nullptr, 0,
1133 NOTCHED_RIGHT_ARROW_CALC, sizeof(NOTCHED_RIGHT_ARROW_CALC) / sizeof(Calculation),
1134 NOTCHED_RIGHT_ARROW_DEFAULT_ADJUST, sizeof(NOTCHED_RIGHT_ARROW_DEFAULT_ADJUST) / sizeof(int),
1135 NOTCHED_RIGHT_ARROW_TRS, sizeof(NOTCHED_RIGHT_ARROW_TRS) / sizeof(TextRectangle),
1136 21600, 21600,
1137 nullptr, 0);
1138
1139 const Vertex STRIPED_RIGHT_ARROW_VERTICES[] =
1140 {
1141 {3375, CALCULATED_VALUE(0)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(1), 0}, {21600, 10800}, {CALCULATED_VALUE(1), 21600}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {3375, CALCULATED_VALUE(2)}, {0, CALCULATED_VALUE(0)}, {675, CALCULATED_VALUE(0)}, {675, CALCULATED_VALUE(2)}, {0, CALCULATED_VALUE(2)}, {1350, CALCULATED_VALUE(0)}, {2700, CALCULATED_VALUE(0)}, {2700, CALCULATED_VALUE(2)}, {1350, CALCULATED_VALUE(2)}
1142 };
1143
1144 const unsigned short STRIPED_RIGHT_ARROW_SEGMENTS[] =
1145 {
1146 0x4000, 0x0006, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000
1147 };
1148
1149 const Calculation STRIPED_RIGHT_ARROW_CALC[] =
1150 {
1151 {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST + 1}, {0x8000, 21600, 0, 0x401}, {0x6001, 0x403, 0x400, 10800}, {0x6000, 0x401, 0x404, 0}
1152 };
1153
1154 const TextRectangle STRIPED_RIGHT_ARROW_TRS[] =
1155 {
1156 { {3375, CALCULATED_VALUE(0)}, {CALCULATED_VALUE(5), CALCULATED_VALUE(2)} }
1157 };
1158
1159 const int STRIPED_RIGHT_ARROW_DEFAULT_ADJUST[] =
1160 {
1161 16200, 5400
1162 };
1163
1164 const CustomShape CS_STRIPED_RIGHT_ARROW(
1165 STRIPED_RIGHT_ARROW_VERTICES, sizeof(STRIPED_RIGHT_ARROW_VERTICES) / sizeof(Vertex),
1166 STRIPED_RIGHT_ARROW_SEGMENTS, sizeof(STRIPED_RIGHT_ARROW_SEGMENTS) / sizeof(unsigned short),
1167 STRIPED_RIGHT_ARROW_CALC, sizeof(STRIPED_RIGHT_ARROW_CALC) / sizeof(Calculation),
1168 STRIPED_RIGHT_ARROW_DEFAULT_ADJUST, sizeof(STRIPED_RIGHT_ARROW_DEFAULT_ADJUST) / sizeof(int),
1169 STRIPED_RIGHT_ARROW_TRS, sizeof(STRIPED_RIGHT_ARROW_TRS) / sizeof(TextRectangle),
1170 21600, 21600,
1171 nullptr, 0);
1172
1173 const Vertex SEAL_24_VERTICES[] =
1174 {
1175 {CALCULATED_VALUE(0x05), CALCULATED_VALUE(0x06)}, {CALCULATED_VALUE(0x07), CALCULATED_VALUE(0x08)}, {CALCULATED_VALUE(0x09), CALCULATED_VALUE(0x0a)}, {CALCULATED_VALUE(0x0b), CALCULATED_VALUE(0x0c)}, {CALCULATED_VALUE(0x0d), CALCULATED_VALUE(0x0e)}, {CALCULATED_VALUE(0x0f), CALCULATED_VALUE(0x10)}, {CALCULATED_VALUE(0x11), CALCULATED_VALUE(0x12)}, {CALCULATED_VALUE(0x13), CALCULATED_VALUE(0x14)}, {CALCULATED_VALUE(0x15), CALCULATED_VALUE(0x16)}, {CALCULATED_VALUE(0x17), CALCULATED_VALUE(0x18)}, {CALCULATED_VALUE(0x19), CALCULATED_VALUE(0x1a)}, {CALCULATED_VALUE(0x1b), CALCULATED_VALUE(0x1c)}, {CALCULATED_VALUE(0x1d), CALCULATED_VALUE(0x1e)}, {CALCULATED_VALUE(0x1f), CALCULATED_VALUE(0x20)}, {CALCULATED_VALUE(0x21), CALCULATED_VALUE(0x22)}, {CALCULATED_VALUE(0x23), CALCULATED_VALUE(0x24)}, {CALCULATED_VALUE(0x25), CALCULATED_VALUE(0x26)}, {CALCULATED_VALUE(0x27), CALCULATED_VALUE(0x28)}, {CALCULATED_VALUE(0x29), CALCULATED_VALUE(0x2a)}, {CALCULATED_VALUE(0x2b), CALCULATED_VALUE(0x2c)}, {CALCULATED_VALUE(0x2d), CALCULATED_VALUE(0x2e)}, {CALCULATED_VALUE(0x2f), CALCULATED_VALUE(0x30)}, {CALCULATED_VALUE(0x31), CALCULATED_VALUE(0x32)}, {CALCULATED_VALUE(0x33), CALCULATED_VALUE(0x34)}, {CALCULATED_VALUE(0x35), CALCULATED_VALUE(0x36)}, {CALCULATED_VALUE(0x37), CALCULATED_VALUE(0x38)}, {CALCULATED_VALUE(0x39), CALCULATED_VALUE(0x3a)}, {CALCULATED_VALUE(0x3b), CALCULATED_VALUE(0x3c)}, {CALCULATED_VALUE(0x3d), CALCULATED_VALUE(0x3e)}, {CALCULATED_VALUE(0x3f), CALCULATED_VALUE(0x40)}, {CALCULATED_VALUE(0x41), CALCULATED_VALUE(0x42)}, {CALCULATED_VALUE(0x43), CALCULATED_VALUE(0x44)}, {CALCULATED_VALUE(0x45), CALCULATED_VALUE(0x46)}, {CALCULATED_VALUE(0x47), CALCULATED_VALUE(0x48)}, {CALCULATED_VALUE(0x49), CALCULATED_VALUE(0x4a)}, {CALCULATED_VALUE(0x4b), CALCULATED_VALUE(0x4c)}, {CALCULATED_VALUE(0x4d), CALCULATED_VALUE(0x4e)}, {CALCULATED_VALUE(0x4f), CALCULATED_VALUE(0x50)}, {CALCULATED_VALUE(0x51), CALCULATED_VALUE(0x52)}, {CALCULATED_VALUE(0x53), CALCULATED_VALUE(0x54)}, {CALCULATED_VALUE(0x55), CALCULATED_VALUE(0x56)}, {CALCULATED_VALUE(0x57), CALCULATED_VALUE(0x58)}, {CALCULATED_VALUE(0x59), CALCULATED_VALUE(0x5a)}, {CALCULATED_VALUE(0x5b), CALCULATED_VALUE(0x5c)}, {CALCULATED_VALUE(0x5d), CALCULATED_VALUE(0x5e)}, {CALCULATED_VALUE(0x5f), CALCULATED_VALUE(0x60)}, {CALCULATED_VALUE(0x61), CALCULATED_VALUE(0x62)}, {CALCULATED_VALUE(0x63), CALCULATED_VALUE(0x64)}, {CALCULATED_VALUE(0x05), CALCULATED_VALUE(0x06)}
1176 };
1177
1178 const Calculation SEAL_24_CALC[] =
1179 {
1180 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2081, 0x400, 10800, 315}, {0x2082, 0x400, 10800, 315}, {0x2081, 0x400, 10800, 135}, {0x2082, 0x400, 10800, 135}, {0x0081, 0, 10800, 0}, {0x0082, 0, 10800, 0}, {0x2081, 0x400, 10800, 7}, {0x2082, 0x400, 10800, 7}, {0x0081, 0, 10800, 15}, {0x0082, 0, 10800, 15}, {0x2081, 0x400, 10800, 22}, {0x2082, 0x400, 10800, 22}, {0x0081, 0, 10800, 30}, {0x0082, 0, 10800, 30}, {0x2081, 0x400, 10800, 37}, {0x2082, 0x400, 10800, 37}, {0x0081, 0, 10800, 45}, {0x0082, 0, 10800, 45}, {0x2081, 0x400, 10800, 52}, {0x2082, 0x400, 10800, 52}, {0x0081, 0, 10800, 60}, {0x0082, 0, 10800, 60}, {0x2081, 0x400, 10800, 67}, {0x2082, 0x400, 10800, 67}, {0x0081, 0, 10800, 75}, {0x0082, 0, 10800, 75}, {0x2081, 0x400, 10800, 82}, {0x2082, 0x400, 10800, 82}, {0x0081, 0, 10800, 90}, {0x0082, 0, 10800, 90}, {0x2081, 0x400, 10800, 97}, {0x2082, 0x400, 10800, 97}, {0x0081, 0, 10800, 105}, {0x0082, 0, 10800, 105}, {0x2081, 0x400, 10800, 112}, {0x2082, 0x400, 10800, 112}, {0x0081, 0, 10800, 120}, {0x0082, 0, 10800, 120}, {0x2081, 0x400, 10800, 127}, {0x2082, 0x400, 10800, 127}, {0x0081, 0, 10800, 135}, {0x0082, 0, 10800, 135}, {0x2081, 0x400, 10800, 142}, {0x2082, 0x400, 10800, 142}, {0x0081, 0, 10800, 150}, {0x0082, 0, 10800, 150}, {0x2081, 0x400, 10800, 157}, {0x2082, 0x400, 10800, 157}, {0x0081, 0, 10800, 165}, {0x0082, 0, 10800, 165}, {0x2081, 0x400, 10800, 172}, {0x2082, 0x400, 10800, 172}, {0x0081, 0, 10800, 180}, {0x0082, 0, 10800, 180}, {0x2081, 0x400, 10800, 187}, {0x2082, 0x400, 10800, 187}, {0x0081, 0, 10800, 195}, {0x0082, 0, 10800, 195}, {0x2081, 0x400, 10800, 202}, {0x2082, 0x400, 10800, 202}, {0x0081, 0, 10800, 210}, {0x0082, 0, 10800, 210}, {0x2081, 0x400, 10800, 217}, {0x2082, 0x400, 10800, 217}, {0x0081, 0, 10800, 225}, {0x0082, 0, 10800, 225}, {0x2081, 0x400, 10800, 232}, {0x2082, 0x400, 10800, 232}, {0x0081, 0, 10800, 240}, {0x0082, 0, 10800, 240}, {0x2081, 0x400, 10800, 247}, {0x2082, 0x400, 10800, 247}, {0x0081, 0, 10800, 255}, {0x0082, 0, 10800, 255}, {0x2081, 0x400, 10800, 262}, {0x2082, 0x400, 10800, 262}, {0x0081, 0, 10800, 270}, {0x0082, 0, 10800, 270}, {0x2081, 0x400, 10800, 277}, {0x2082, 0x400, 10800, 277}, {0x0081, 0, 10800, 285}, {0x0082, 0, 10800, 285}, {0x2081, 0x400, 10800, 292}, {0x2082, 0x400, 10800, 292}, {0x0081, 0, 10800, 300}, {0x0082, 0, 10800, 300}, {0x2081, 0x400, 10800, 307}, {0x2082, 0x400, 10800, 307}, {0x0081, 0, 10800, 315}, {0x0082, 0, 10800, 315}, {0x2081, 0x400, 10800, 322}, {0x2082, 0x400, 10800, 322}, {0x0081, 0, 10800, 330}, {0x0082, 0, 10800, 330}, {0x2081, 0x400, 10800, 337}, {0x2082, 0x400, 10800, 337}, {0x0081, 0, 10800, 345}, {0x0082, 0, 10800, 345}, {0x2081, 0x400, 10800, 352}, {0x2082, 0x400, 10800, 352}
1181 };
1182
1183 const TextRectangle SEAL_24_TRS[] =
1184 {
1185 { {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)} }
1186 };
1187
1188 const int SEAL_24_DEFAULT_ADJUST[] =
1189 {
1190 2500
1191 };
1192
1193 const CustomShape CS_SEAL_24(
1194 SEAL_24_VERTICES, sizeof(SEAL_24_VERTICES) / sizeof(Vertex),
1195 nullptr, 0,
1196 SEAL_24_CALC, sizeof(SEAL_24_CALC) / sizeof(Calculation),
1197 SEAL_24_DEFAULT_ADJUST, sizeof(SEAL_24_DEFAULT_ADJUST) / sizeof(int),
1198 SEAL_24_TRS, sizeof(SEAL_24_TRS) / sizeof(TextRectangle),
1199 21600, 21600,
1200 nullptr, 0);
1201
1202 const Vertex BENT_ARROW_VERTICES[] =
1203 {
1204 {0, 21600}, {0, 12160}, {12427, CALCULATED_VALUE(1)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(0), 0}, {21600, 6079}, {CALCULATED_VALUE(0), 12158}, {CALCULATED_VALUE(0), CALCULATED_VALUE(2)}, {12427, CALCULATED_VALUE(2)}, {CALCULATED_VALUE(4), 12160}, {CALCULATED_VALUE(4), 21600}
1205 };
1206
1207 const unsigned short BENT_ARROW_SEGMENTS[] =
1208 {
1209 0x4000, 0x0001, 0xa801, 0x0006, 0xa701, 0x0001, 0x6001, 0x8000
1210 };
1211
1212 const Calculation BENT_ARROW_CALC[] =
1213 {
1214 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x8000, 12158, 0, PROP_ADJUST_VAL_FIRST + 1}, {0x8000, 6079, 0, PROP_ADJUST_VAL_FIRST + 1}, {0x2001, 0x0403, 2, 1}
1215 };
1216
1217 const TextRectangle BENT_ARROW_TRS[] =
1218 {
1219 { {0, 0}, {21600, 21600} }
1220 };
1221
1222 const int BENT_ARROW_DEFAULT_ADJUST[] =
1223 {
1224 15100, 2900
1225 };
1226
1227 const CustomShape CS_BENT_ARROW(
1228 BENT_ARROW_VERTICES, sizeof(BENT_ARROW_VERTICES) / sizeof(Vertex),
1229 BENT_ARROW_SEGMENTS, sizeof(BENT_ARROW_SEGMENTS) / sizeof(unsigned short),
1230 BENT_ARROW_CALC, sizeof(BENT_ARROW_CALC) / sizeof(Calculation),
1231 BENT_ARROW_DEFAULT_ADJUST, sizeof(BENT_ARROW_DEFAULT_ADJUST) / sizeof(int),
1232 BENT_ARROW_TRS, sizeof(BENT_ARROW_TRS) / sizeof(TextRectangle),
1233 21600, 21600,
1234 nullptr, 0);
1235
1236 const Vertex BENT_UP_ARROW_VERTICES[] =
1237 {
1238 {0, CALCULATED_VALUE(8)}, {CALCULATED_VALUE(7), CALCULATED_VALUE(8)}, {CALCULATED_VALUE(7), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(5), 0}, {21600, CALCULATED_VALUE(2)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(1), 21600}, {0, 21600}
1239 };
1240
1241 const unsigned short BENT_UP_ARROW_SEGMENTS[] =
1242 {
1243 0x4000, 0x0008, 0x6001, 0x8000
1244 };
1245
1246 const Calculation BENT_UP_ARROW_CALC[] =
1247 {
1248 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 2, 0, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST}, {0x2001, 0x0403, 1, 2}, {0x6000, PROP_ADJUST_VAL_FIRST, 0x0404, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST + 1}, {0x6000, PROP_ADJUST_VAL_FIRST, 0x0406, 0}, {0x6000, 0x0407, 0x0406, 0}, {0x8000, 21600, 0, 0x406}, {0xa000, 0x409, 0, 0x406}
1249 };
1250
1251 const TextRectangle BENT_UP_ARROW_TRS[] =
1252 {
1253 { {CALCULATED_VALUE(2), CALCULATED_VALUE(7)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(1)} }, { {CALCULATED_VALUE(7), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(1)} }
1254 };
1255
1256 const int BENT_UP_ARROW_DEFAULT_ADJUST[] =
1257 {
1258 9340, 18500, 7200
1259 };
1260
1261 const CustomShape CS_BENT_UP_ARROW(
1262 BENT_UP_ARROW_VERTICES, sizeof(BENT_UP_ARROW_VERTICES) / sizeof(Vertex),
1263 BENT_UP_ARROW_SEGMENTS, sizeof(BENT_UP_ARROW_SEGMENTS) / sizeof(unsigned short),
1264 BENT_UP_ARROW_CALC, sizeof(BENT_UP_ARROW_CALC) / sizeof(Calculation),
1265 BENT_UP_ARROW_DEFAULT_ADJUST, sizeof(BENT_UP_ARROW_DEFAULT_ADJUST) / sizeof(int),
1266 BENT_UP_ARROW_TRS, sizeof(BENT_UP_ARROW_TRS) / sizeof(TextRectangle),
1267 21600, 21600,
1268 nullptr, 0);
1269
1270 const Vertex DOWN_ARROW_VERTICES[] =
1271 {
1272 {CALCULATED_VALUE(0), 0}, {CALCULATED_VALUE(0), CALCULATED_VALUE(1)}, {0, CALCULATED_VALUE(1)}, {10800, 21600}, {21600, CALCULATED_VALUE(1)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(2), 0}
1273 };
1274
1275 const unsigned short DOWN_ARROW_SEGMENTS[] =
1276 {
1277 0x4000, 0x0006, 0x6001, 0x8000
1278 };
1279
1280 const Calculation DOWN_ARROW_CALC[] =
1281 {
1282 {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST + 1}, {0x8000, 21600, 0, 0x401}, {0x6001, 0x403, 0x400, 10800}, {0x6000, 0x401, 0x404, 0}, {0x6001, 0x401, 0x400, 10800}, {0xa000, 0x401, 0, 0x406}
1283 };
1284
1285 const TextRectangle DOWN_ARROW_TRS[] =
1286 {
1287 { {CALCULATED_VALUE(0), 0}, {CALCULATED_VALUE(2), CALCULATED_VALUE(5)} }
1288 };
1289
1290 const int DOWN_ARROW_DEFAULT_ADJUST[] =
1291 {
1292 16200, 5400
1293 };
1294
1295 const CustomShape CS_DOWN_ARROW(
1296 DOWN_ARROW_VERTICES, sizeof(DOWN_ARROW_VERTICES) / sizeof(Vertex),
1297 DOWN_ARROW_SEGMENTS, sizeof(DOWN_ARROW_SEGMENTS) / sizeof(unsigned short),
1298 DOWN_ARROW_CALC, sizeof(DOWN_ARROW_CALC) / sizeof(Calculation),
1299 DOWN_ARROW_DEFAULT_ADJUST, sizeof(DOWN_ARROW_DEFAULT_ADJUST) / sizeof(int),
1300 DOWN_ARROW_TRS, sizeof(DOWN_ARROW_TRS) / sizeof(TextRectangle),
1301 21600, 21600,
1302 nullptr, 0);
1303
1304 const Vertex UP_ARROW_VERTICES[] =
1305 {
1306 {CALCULATED_VALUE(0), 21600}, {CALCULATED_VALUE(0), CALCULATED_VALUE(1)}, {0, CALCULATED_VALUE(1)}, {10800, 0}, {21600, CALCULATED_VALUE(1)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(2), 21600}
1307 };
1308
1309 const unsigned short UP_ARROW_SEGMENTS[] =
1310 {
1311 0x4000, 0x0006, 0x6001, 0x8000
1312 };
1313
1314 const Calculation UP_ARROW_CALC[] =
1315 {
1316 {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST + 1}, {0x8000, 21600, 0, 0x401}, {0x6001, 0x403, 0x400, 10800}, {0x6000, 0x401, 0x404, 0}, {0x6001, 0x401, 0x400, 10800}, {0xa000, 0x401, 0, 0x406}
1317 };
1318
1319 const TextRectangle UP_ARROW_TRS[] =
1320 {
1321 { {CALCULATED_VALUE(0), CALCULATED_VALUE(7)}, {CALCULATED_VALUE(2), 21600} }
1322 };
1323
1324 const int UP_ARROW_DEFAULT_ADJUST[] =
1325 {
1326 5400, 5400
1327 };
1328
1329 const CustomShape CS_UP_ARROW(
1330 UP_ARROW_VERTICES, sizeof(UP_ARROW_VERTICES) / sizeof(Vertex),
1331 UP_ARROW_SEGMENTS, sizeof(UP_ARROW_SEGMENTS) / sizeof(unsigned short),
1332 UP_ARROW_CALC, sizeof(UP_ARROW_CALC) / sizeof(Calculation),
1333 UP_ARROW_DEFAULT_ADJUST, sizeof(UP_ARROW_DEFAULT_ADJUST) / sizeof(int),
1334 UP_ARROW_TRS, sizeof(UP_ARROW_TRS) / sizeof(TextRectangle),
1335 21600, 21600,
1336 nullptr, 0);
1337
1338 const Vertex LEFT_RIGHT_ARROW_VERTICES[] =
1339 {
1340 {0, 10800}, {CALCULATED_VALUE(0), 0}, {CALCULATED_VALUE(0), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(2), 0}, {21600, 10800}, {CALCULATED_VALUE(2), 21600}, {CALCULATED_VALUE(2), CALCULATED_VALUE(3)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(3)}, {CALCULATED_VALUE(0), 21600}
1341 };
1342
1343 const unsigned short LEFT_RIGHT_ARROW_SEGMENTS[] =
1344 {
1345 0x4000, 0x0009, 0x6001, 0x8000
1346 };
1347
1348 const Calculation LEFT_RIGHT_ARROW_CALC[] =
1349 {
1350 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST + 1}, {0x8000, 10800, 0, PROP_ADJUST_VAL_FIRST + 1}, {0x6001, PROP_ADJUST_VAL_FIRST, 0x404, 10800}, {0x8000, 21600, 0, 0x405}, {0x8000, 10800, 0, PROP_ADJUST_VAL_FIRST}, {0x6001, PROP_ADJUST_VAL_FIRST + 1, 0x407, 10800}, {0x8000, 21600, 0, 0x408}
1351 };
1352
1353 const TextRectangle LEFT_RIGHT_ARROW_TRS[] =
1354 {
1355 { {CALCULATED_VALUE(5), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(6), CALCULATED_VALUE(3)} }
1356 };
1357
1358 const int LEFT_RIGHT_ARROW_DEFAULT_ADJUST[] =
1359 {
1360 4300, 5400
1361 };
1362
1363 const CustomShape CS_LEFT_RIGHT_ARROW(
1364 LEFT_RIGHT_ARROW_VERTICES, sizeof(LEFT_RIGHT_ARROW_VERTICES) / sizeof(Vertex),
1365 LEFT_RIGHT_ARROW_SEGMENTS, sizeof(LEFT_RIGHT_ARROW_SEGMENTS) / sizeof(unsigned short),
1366 LEFT_RIGHT_ARROW_CALC, sizeof(LEFT_RIGHT_ARROW_CALC) / sizeof(Calculation),
1367 LEFT_RIGHT_ARROW_DEFAULT_ADJUST, sizeof(LEFT_RIGHT_ARROW_DEFAULT_ADJUST) / sizeof(int),
1368 LEFT_RIGHT_ARROW_TRS, sizeof(LEFT_RIGHT_ARROW_TRS) / sizeof(TextRectangle),
1369 21600, 21600,
1370 nullptr, 0);
1371
1372 const Vertex SEAL_32_VERTICES[] =
1373 {
1374 {CALCULATED_VALUE(0x05), CALCULATED_VALUE(0x06)}, {CALCULATED_VALUE(0x07), CALCULATED_VALUE(0x08)}, {CALCULATED_VALUE(0x09), CALCULATED_VALUE(0x0a)}, {CALCULATED_VALUE(0x0b), CALCULATED_VALUE(0x0c)}, {CALCULATED_VALUE(0x0d), CALCULATED_VALUE(0x0e)}, {CALCULATED_VALUE(0x0f), CALCULATED_VALUE(0x10)}, {CALCULATED_VALUE(0x11), CALCULATED_VALUE(0x12)}, {CALCULATED_VALUE(0x13), CALCULATED_VALUE(0x14)}, {CALCULATED_VALUE(0x15), CALCULATED_VALUE(0x16)}, {CALCULATED_VALUE(0x17), CALCULATED_VALUE(0x18)}, {CALCULATED_VALUE(0x19), CALCULATED_VALUE(0x1a)}, {CALCULATED_VALUE(0x1b), CALCULATED_VALUE(0x1c)}, {CALCULATED_VALUE(0x1d), CALCULATED_VALUE(0x1e)}, {CALCULATED_VALUE(0x1f), CALCULATED_VALUE(0x20)}, {CALCULATED_VALUE(0x21), CALCULATED_VALUE(0x22)}, {CALCULATED_VALUE(0x23), CALCULATED_VALUE(0x24)}, {CALCULATED_VALUE(0x25), CALCULATED_VALUE(0x26)}, {CALCULATED_VALUE(0x27), CALCULATED_VALUE(0x28)}, {CALCULATED_VALUE(0x29), CALCULATED_VALUE(0x2a)}, {CALCULATED_VALUE(0x2b), CALCULATED_VALUE(0x2c)}, {CALCULATED_VALUE(0x2d), CALCULATED_VALUE(0x2e)}, {CALCULATED_VALUE(0x2f), CALCULATED_VALUE(0x30)}, {CALCULATED_VALUE(0x31), CALCULATED_VALUE(0x32)}, {CALCULATED_VALUE(0x33), CALCULATED_VALUE(0x34)}, {CALCULATED_VALUE(0x35), CALCULATED_VALUE(0x36)}, {CALCULATED_VALUE(0x37), CALCULATED_VALUE(0x38)}, {CALCULATED_VALUE(0x39), CALCULATED_VALUE(0x3a)}, {CALCULATED_VALUE(0x3b), CALCULATED_VALUE(0x3c)}, {CALCULATED_VALUE(0x3d), CALCULATED_VALUE(0x3e)}, {CALCULATED_VALUE(0x3f), CALCULATED_VALUE(0x40)}, {CALCULATED_VALUE(0x41), CALCULATED_VALUE(0x42)}, {CALCULATED_VALUE(0x43), CALCULATED_VALUE(0x44)}, {CALCULATED_VALUE(0x45), CALCULATED_VALUE(0x46)}, {CALCULATED_VALUE(0x47), CALCULATED_VALUE(0x48)}, {CALCULATED_VALUE(0x49), CALCULATED_VALUE(0x4a)}, {CALCULATED_VALUE(0x4b), CALCULATED_VALUE(0x4c)}, {CALCULATED_VALUE(0x4d), CALCULATED_VALUE(0x4e)}, {CALCULATED_VALUE(0x4f), CALCULATED_VALUE(0x50)}, {CALCULATED_VALUE(0x51), CALCULATED_VALUE(0x52)}, {CALCULATED_VALUE(0x53), CALCULATED_VALUE(0x54)}, {CALCULATED_VALUE(0x55), CALCULATED_VALUE(0x56)}, {CALCULATED_VALUE(0x57), CALCULATED_VALUE(0x58)}, {CALCULATED_VALUE(0x59), CALCULATED_VALUE(0x5a)}, {CALCULATED_VALUE(0x5b), CALCULATED_VALUE(0x5c)}, {CALCULATED_VALUE(0x5d), CALCULATED_VALUE(0x5e)}, {CALCULATED_VALUE(0x5f), CALCULATED_VALUE(0x60)}, {CALCULATED_VALUE(0x61), CALCULATED_VALUE(0x62)}, {CALCULATED_VALUE(0x63), CALCULATED_VALUE(0x64)}, {CALCULATED_VALUE(0x65), CALCULATED_VALUE(0x66)}, {CALCULATED_VALUE(0x67), CALCULATED_VALUE(0x68)}, {CALCULATED_VALUE(0x69), CALCULATED_VALUE(0x6a)}, {CALCULATED_VALUE(0x6b), CALCULATED_VALUE(0x6c)}, {CALCULATED_VALUE(0x6d), CALCULATED_VALUE(0x6e)}, {CALCULATED_VALUE(0x6f), CALCULATED_VALUE(0x70)}, {CALCULATED_VALUE(0x71), CALCULATED_VALUE(0x72)}, {CALCULATED_VALUE(0x73), CALCULATED_VALUE(0x74)}, {CALCULATED_VALUE(0x75), CALCULATED_VALUE(0x76)}, {CALCULATED_VALUE(0x77), CALCULATED_VALUE(0x78)}, {CALCULATED_VALUE(0x79), CALCULATED_VALUE(0x7a)}, {CALCULATED_VALUE(0x7b), CALCULATED_VALUE(0x7c)}, {CALCULATED_VALUE(0x7d), CALCULATED_VALUE(0x7e)}, {CALCULATED_VALUE(0x7f), CALCULATED_VALUE(0x80)}, {CALCULATED_VALUE(0x81), CALCULATED_VALUE(0x82)}, {CALCULATED_VALUE(0x83), CALCULATED_VALUE(0x84)}, {CALCULATED_VALUE(0x05), CALCULATED_VALUE(0x06)}
1375 };
1376
1377 const Calculation SEAL_32_CALC[] =
1378 {
1379 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2081, 0x400, 10800, 315}, {0x2082, 0x400, 10800, 315}, {0x2081, 0x400, 10800, 135}, {0x2082, 0x400, 10800, 135}, {0x0081, 0, 10800, 0}, {0x0082, 0, 10800, 0}, {0x2081, 0x400, 10800, 5}, {0x2082, 0x400, 10800, 5}, {0x0081, 0, 10800, 11}, {0x0082, 0, 10800, 11}, {0x2081, 0x400, 10800, 16}, {0x2082, 0x400, 10800, 16}, {0x0081, 0, 10800, 22}, {0x0082, 0, 10800, 22}, {0x2081, 0x400, 10800, 28}, {0x2082, 0x400, 10800, 28}, {0x0081, 0, 10800, 33}, {0x0082, 0, 10800, 33}, {0x2081, 0x400, 10800, 39}, {0x2082, 0x400, 10800, 39}, {0x0081, 0, 10800, 45}, {0x0082, 0, 10800, 45}, {0x2081, 0x400, 10800, 50}, {0x2082, 0x400, 10800, 50}, {0x0081, 0, 10800, 56}, {0x0082, 0, 10800, 56}, {0x2081, 0x400, 10800, 61}, {0x2082, 0x400, 10800, 61}, {0x0081, 0, 10800, 67}, {0x0082, 0, 10800, 67}, {0x2081, 0x400, 10800, 73}, {0x2082, 0x400, 10800, 73}, {0x0081, 0, 10800, 78}, {0x0082, 0, 10800, 78}, {0x2081, 0x400, 10800, 84}, {0x2082, 0x400, 10800, 84}, {0x0081, 0, 10800, 90}, {0x0082, 0, 10800, 90}, {0x2081, 0x400, 10800, 95}, {0x2082, 0x400, 10800, 95}, {0x0081, 0, 10800, 101}, {0x0082, 0, 10800, 101}, {0x2081, 0x400, 10800, 106}, {0x2082, 0x400, 10800, 106}, {0x0081, 0, 10800, 112}, {0x0082, 0, 10800, 112}, {0x2081, 0x400, 10800, 118}, {0x2082, 0x400, 10800, 118}, {0x0081, 0, 10800, 123}, {0x0082, 0, 10800, 123}, {0x2081, 0x400, 10800, 129}, {0x2082, 0x400, 10800, 129}, {0x0081, 0, 10800, 135}, {0x0082, 0, 10800, 135}, {0x2081, 0x400, 10800, 140}, {0x2082, 0x400, 10800, 140}, {0x0081, 0, 10800, 146}, {0x0082, 0, 10800, 146}, {0x2081, 0x400, 10800, 151}, {0x2082, 0x400, 10800, 151}, {0x0081, 0, 10800, 157}, {0x0082, 0, 10800, 157}, {0x2081, 0x400, 10800, 163}, {0x2082, 0x400, 10800, 163}, {0x0081, 0, 10800, 168}, {0x0082, 0, 10800, 168}, {0x2081, 0x400, 10800, 174}, {0x2082, 0x400, 10800, 174}, {0x0081, 0, 10800, 180}, {0x0082, 0, 10800, 180}, {0x2081, 0x400, 10800, 185}, {0x2082, 0x400, 10800, 185}, {0x0081, 0, 10800, 191}, {0x0082, 0, 10800, 191}, {0x2081, 0x400, 10800, 196}, {0x2082, 0x400, 10800, 196}, {0x0081, 0, 10800, 202}, {0x0082, 0, 10800, 202}, {0x2081, 0x400, 10800, 208}, {0x2082, 0x400, 10800, 208}, {0x0081, 0, 10800, 213}, {0x0082, 0, 10800, 213}, {0x2081, 0x400, 10800, 219}, {0x2082, 0x400, 10800, 219}, {0x0081, 0, 10800, 225}, {0x0082, 0, 10800, 225}, {0x2081, 0x400, 10800, 230}, {0x2082, 0x400, 10800, 230}, {0x0081, 0, 10800, 236}, {0x0082, 0, 10800, 236}, {0x2081, 0x400, 10800, 241}, {0x2082, 0x400, 10800, 241}, {0x0081, 0, 10800, 247}, {0x0082, 0, 10800, 247}, {0x2081, 0x400, 10800, 253}, {0x2082, 0x400, 10800, 253}, {0x0081, 0, 10800, 258}, {0x0082, 0, 10800, 258}, {0x2081, 0x400, 10800, 264}, {0x2082, 0x400, 10800, 264}, {0x0081, 0, 10800, 270}, {0x0082, 0, 10800, 270}, {0x2081, 0x400, 10800, 275}, {0x2082, 0x400, 10800, 275}, {0x0081, 0, 10800, 281}, {0x0082, 0, 10800, 281}, {0x2081, 0x400, 10800, 286}, {0x2082, 0x400, 10800, 286}, {0x0081, 0, 10800, 292}, {0x0082, 0, 10800, 292}, {0x2081, 0x400, 10800, 298}, {0x2082, 0x400, 10800, 298}, {0x0081, 0, 10800, 303}, {0x0082, 0, 10800, 303}, {0x2081, 0x400, 10800, 309}, {0x2082, 0x400, 10800, 309}, {0x0081, 0, 10800, 315}, {0x0082, 0, 10800, 315}, {0x2081, 0x400, 10800, 320}, {0x2082, 0x400, 10800, 320}, {0x0081, 0, 10800, 326}, {0x0082, 0, 10800, 326}, {0x2081, 0x400, 10800, 331}, {0x2082, 0x400, 10800, 331}, {0x0081, 0, 10800, 337}, {0x0082, 0, 10800, 337}, {0x2081, 0x400, 10800, 343}, {0x2082, 0x400, 10800, 343}, {0x0081, 0, 10800, 348}, {0x0082, 0, 10800, 348}, {0x2081, 0x400, 10800, 354}, {0x2082, 0x400, 10800, 354}
1380 };
1381
1382 const TextRectangle SEAL_32_TRS[] =
1383 {
1384 { {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)} }
1385 };
1386
1387 const int SEAL_32_DEFAULT_ADJUST[] =
1388 {
1389 2500
1390 };
1391
1392 const CustomShape CS_SEAL_32(
1393 SEAL_32_VERTICES, sizeof(SEAL_32_VERTICES) / sizeof(Vertex),
1394 nullptr, 0,
1395 SEAL_32_CALC, sizeof(SEAL_32_CALC) / sizeof(Calculation),
1396 SEAL_32_DEFAULT_ADJUST, sizeof(SEAL_32_DEFAULT_ADJUST) / sizeof(int),
1397 SEAL_32_TRS, sizeof(SEAL_32_TRS) / sizeof(TextRectangle),
1398 21600, 21600,
1399 nullptr, 0);
1400
1401 const Vertex SEAL_16_VERTICES[] =
1402 {
1403 {CALCULATED_VALUE(0x05), CALCULATED_VALUE(0x06)}, {CALCULATED_VALUE(0x07), CALCULATED_VALUE(0x08)}, {CALCULATED_VALUE(0x09), CALCULATED_VALUE(0x0a)}, {CALCULATED_VALUE(0x0b), CALCULATED_VALUE(0x0c)}, {CALCULATED_VALUE(0x0d), CALCULATED_VALUE(0x0e)}, {CALCULATED_VALUE(0x0f), CALCULATED_VALUE(0x10)}, {CALCULATED_VALUE(0x11), CALCULATED_VALUE(0x12)}, {CALCULATED_VALUE(0x13), CALCULATED_VALUE(0x14)}, {CALCULATED_VALUE(0x15), CALCULATED_VALUE(0x16)}, {CALCULATED_VALUE(0x17), CALCULATED_VALUE(0x18)}, {CALCULATED_VALUE(0x19), CALCULATED_VALUE(0x1a)}, {CALCULATED_VALUE(0x1b), CALCULATED_VALUE(0x1c)}, {CALCULATED_VALUE(0x1d), CALCULATED_VALUE(0x1e)}, {CALCULATED_VALUE(0x1f), CALCULATED_VALUE(0x20)}, {CALCULATED_VALUE(0x21), CALCULATED_VALUE(0x22)}, {CALCULATED_VALUE(0x23), CALCULATED_VALUE(0x24)}, {CALCULATED_VALUE(0x25), CALCULATED_VALUE(0x26)}, {CALCULATED_VALUE(0x27), CALCULATED_VALUE(0x28)}, {CALCULATED_VALUE(0x29), CALCULATED_VALUE(0x2a)}, {CALCULATED_VALUE(0x2b), CALCULATED_VALUE(0x2c)}, {CALCULATED_VALUE(0x2d), CALCULATED_VALUE(0x2e)}, {CALCULATED_VALUE(0x2f), CALCULATED_VALUE(0x30)}, {CALCULATED_VALUE(0x31), CALCULATED_VALUE(0x32)}, {CALCULATED_VALUE(0x33), CALCULATED_VALUE(0x34)}, {CALCULATED_VALUE(0x35), CALCULATED_VALUE(0x36)}, {CALCULATED_VALUE(0x37), CALCULATED_VALUE(0x38)}, {CALCULATED_VALUE(0x39), CALCULATED_VALUE(0x3a)}, {CALCULATED_VALUE(0x3b), CALCULATED_VALUE(0x3c)}, {CALCULATED_VALUE(0x3d), CALCULATED_VALUE(0x3e)}, {CALCULATED_VALUE(0x3f), CALCULATED_VALUE(0x40)}, {CALCULATED_VALUE(0x41), CALCULATED_VALUE(0x42)}, {CALCULATED_VALUE(0x43), CALCULATED_VALUE(0x44)}, {CALCULATED_VALUE(0x05), CALCULATED_VALUE(0x06)}
1404 };
1405
1406 const Calculation SEAL_16_CALC[] =
1407 {
1408 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2081, 0x400, 10800, 315}, {0x2082, 0x400, 10800, 315}, {0x2081, 0x400, 10800, 135}, {0x2082, 0x400, 10800, 135}, {0x0081, 0, 10800, 0}, {0x0082, 0, 10800, 0}, {0x2081, 0x400, 10800, 11}, {0x2082, 0x400, 10800, 11}, {0x0081, 0, 10800, 22}, {0x0082, 0, 10800, 22}, {0x2081, 0x400, 10800, 33}, {0x2082, 0x400, 10800, 33}, {0x0081, 0, 10800, 45}, {0x0082, 0, 10800, 45}, {0x2081, 0x400, 10800, 56}, {0x2082, 0x400, 10800, 56}, {0x0081, 0, 10800, 67}, {0x0082, 0, 10800, 67}, {0x2081, 0x400, 10800, 78}, {0x2082, 0x400, 10800, 78}, {0x0081, 0, 10800, 90}, {0x0082, 0, 10800, 90}, {0x2081, 0x400, 10800, 101}, {0x2082, 0x400, 10800, 101}, {0x0081, 0, 10800, 112}, {0x0082, 0, 10800, 112}, {0x2081, 0x400, 10800, 123}, {0x2082, 0x400, 10800, 123}, {0x0081, 0, 10800, 135}, {0x0082, 0, 10800, 135}, {0x2081, 0x400, 10800, 146}, {0x2082, 0x400, 10800, 146}, {0x0081, 0, 10800, 157}, {0x0082, 0, 10800, 157}, {0x2081, 0x400, 10800, 168}, {0x2082, 0x400, 10800, 168}, {0x0081, 0, 10800, 180}, {0x0082, 0, 10800, 180}, {0x2081, 0x400, 10800, 191}, {0x2082, 0x400, 10800, 191}, {0x0081, 0, 10800, 202}, {0x0082, 0, 10800, 202}, {0x2081, 0x400, 10800, 213}, {0x2082, 0x400, 10800, 213}, {0x0081, 0, 10800, 225}, {0x0082, 0, 10800, 225}, {0x2081, 0x400, 10800, 236}, {0x2082, 0x400, 10800, 236}, {0x0081, 0, 10800, 247}, {0x0082, 0, 10800, 247}, {0x2081, 0x400, 10800, 258}, {0x2082, 0x400, 10800, 258}, {0x0081, 0, 10800, 270}, {0x0082, 0, 10800, 270}, {0x2081, 0x400, 10800, 281}, {0x2082, 0x400, 10800, 281}, {0x0081, 0, 10800, 292}, {0x0082, 0, 10800, 292}, {0x2081, 0x400, 10800, 303}, {0x2082, 0x400, 10800, 303}, {0x0081, 0, 10800, 315}, {0x0082, 0, 10800, 315}, {0x2081, 0x400, 10800, 326}, {0x2082, 0x400, 10800, 326}, {0x0081, 0, 10800, 337}, {0x0082, 0, 10800, 337}, {0x2081, 0x400, 10800, 348}, {0x2082, 0x400, 10800, 348}
1409 };
1410
1411 const TextRectangle SEAL_16_TRS[] =
1412 {
1413 { {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)} }
1414 };
1415
1416 const int SEAL_16_DEFAULT_ADJUST[] =
1417 {
1418 2500
1419 };
1420
1421 const CustomShape CS_SEAL_16(
1422 SEAL_16_VERTICES, sizeof(SEAL_16_VERTICES) / sizeof(Vertex),
1423 nullptr, 0,
1424 SEAL_16_CALC, sizeof(SEAL_16_CALC) / sizeof(Calculation),
1425 SEAL_16_DEFAULT_ADJUST, sizeof(SEAL_16_DEFAULT_ADJUST) / sizeof(int),
1426 SEAL_16_TRS, sizeof(SEAL_16_TRS) / sizeof(TextRectangle),
1427 21600, 21600,
1428 nullptr, 0);
1429
1430 const Vertex NO_SMOKING_VERTICES[] =
1431 {
1432 {10800, 10800}, {10800, 10800}, {0, 360}, {CALCULATED_VALUE(0), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(9), CALCULATED_VALUE(0xa)}, {CALCULATED_VALUE(0xb), CALCULATED_VALUE(0xc)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(0xd), CALCULATED_VALUE(0xe)}, {CALCULATED_VALUE(0xf), CALCULATED_VALUE(0x10)}
1433 };
1434
1435 const unsigned short NO_SMOKING_SEGMENTS[] =
1436 {
1437 0xa203, 0x6000, 0xa404, 0x6000, 0xa404, 0x6000, 0x8000
1438 };
1439
1440 const Calculation NO_SMOKING_CALC[] =
1441 {
1442 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST}, {0x8000, 10800, 0, PROP_ADJUST_VAL_FIRST}, {0x2001, PROP_ADJUST_VAL_FIRST, 1, 2}, {0xa080, 0x403, 0, 0x402}, {0x8000, 10800, 0, 0x403}, {0x4000, 10800, 0x403, 0}, {0x8000, 10800, 0, 0x404}, {0x4000, 10800, 0x404, 0}, {0x6081, 0x405, 0x407, 45}, {0x6082, 0x405, 0x407, 45}, {0x6081, 0x405, 0x408, 45}, {0x6082, 0x405, 0x408, 45}, {0x6081, 0x406, 0x408, 45}, {0x6082, 0x406, 0x408, 45}, {0x6081, 0x406, 0x407, 45}, {0x6082, 0x406, 0x407, 45}
1443 };
1444
1445 const TextRectangle NO_SMOKING_TRS[] =
1446 {
1447 { {3163, 3163}, {18437, 18437} }
1448 };
1449
1450 const int NO_SMOKING_DEFAULT_ADJUST[] =
1451 {
1452 2700
1453 };
1454
1455 const Vertex NO_SMOKING_GLUE_POINTS[] =
1456 {
1457 {10800, 0}, {3163, 3163}, {0, 10800}, {3163, 18437}, {10800, 21600}, {18437, 18437}, {21600, 10800}, {18437, 3163}
1458 };
1459
1460 const CustomShape CS_NO_SMOKING(
1461 NO_SMOKING_VERTICES, sizeof(NO_SMOKING_VERTICES) / sizeof(Vertex),
1462 NO_SMOKING_SEGMENTS, sizeof(NO_SMOKING_SEGMENTS) / sizeof(unsigned short),
1463 NO_SMOKING_CALC, sizeof(NO_SMOKING_CALC) / sizeof(Calculation),
1464 NO_SMOKING_DEFAULT_ADJUST, sizeof(NO_SMOKING_DEFAULT_ADJUST) / sizeof(int),
1465 NO_SMOKING_TRS, sizeof(NO_SMOKING_TRS) / sizeof(TextRectangle),
1466 21600, 21600,
1467 NO_SMOKING_GLUE_POINTS, sizeof(NO_SMOKING_GLUE_POINTS) / sizeof(Vertex));
1468
1469 const Vertex SEAL_8_VERTICES[] =
1470 {
1471 {CALCULATED_VALUE(5), CALCULATED_VALUE(6)}, {CALCULATED_VALUE(11), CALCULATED_VALUE(12)}, {CALCULATED_VALUE(17), CALCULATED_VALUE(18)}, {CALCULATED_VALUE(23), CALCULATED_VALUE(24)}, {CALCULATED_VALUE(29), CALCULATED_VALUE(30)}, {CALCULATED_VALUE(35), CALCULATED_VALUE(36)}, {CALCULATED_VALUE(41), CALCULATED_VALUE(42)}, {CALCULATED_VALUE(47), CALCULATED_VALUE(48)}, {CALCULATED_VALUE(53), CALCULATED_VALUE(54)}, {CALCULATED_VALUE(59), CALCULATED_VALUE(60)}, {CALCULATED_VALUE(65), CALCULATED_VALUE(66)}, {CALCULATED_VALUE(71), CALCULATED_VALUE(72)}, {CALCULATED_VALUE(77), CALCULATED_VALUE(78)}, {CALCULATED_VALUE(83), CALCULATED_VALUE(84)}, {CALCULATED_VALUE(89), CALCULATED_VALUE(90)}, {CALCULATED_VALUE(95), CALCULATED_VALUE(96)}, {CALCULATED_VALUE(5), CALCULATED_VALUE(6)}
1472 };
1473
1474 const Calculation SEAL_8_CALC[] =
1475 {
1476 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2081, 0x400, 10800, 315}, {0x2082, 0x400, 10800, 315}, {0x2081, 0x400, 10800, 135}, {0x2082, 0x400, 10800, 135}, {0x0081, 0, 10800, 0}, {0x0082, 0, 10800, 0}, {0x2081, 0x400, 10800, 7}, {0x2082, 0x400, 10800, 7}, {0x0081, 0, 10800, 15}, {0x0082, 0, 10800, 15}, {0x2081, 0x400, 10800, 22}, {0x2082, 0x400, 10800, 22}, {0x0081, 0, 10800, 30}, {0x0082, 0, 10800, 30}, {0x2081, 0x400, 10800, 37}, {0x2082, 0x400, 10800, 37}, {0x0081, 0, 10800, 45}, {0x0082, 0, 10800, 45}, {0x2081, 0x400, 10800, 52}, {0x2082, 0x400, 10800, 52}, {0x0081, 0, 10800, 60}, {0x0082, 0, 10800, 60}, {0x2081, 0x400, 10800, 67}, {0x2082, 0x400, 10800, 67}, {0x0081, 0, 10800, 75}, {0x0082, 0, 10800, 75}, {0x2081, 0x400, 10800, 82}, {0x2082, 0x400, 10800, 82}, {0x0081, 0, 10800, 90}, {0x0082, 0, 10800, 90}, {0x2081, 0x400, 10800, 97}, {0x2082, 0x400, 10800, 97}, {0x0081, 0, 10800, 105}, {0x0082, 0, 10800, 105}, {0x2081, 0x400, 10800, 112}, {0x2082, 0x400, 10800, 112}, {0x0081, 0, 10800, 120}, {0x0082, 0, 10800, 120}, {0x2081, 0x400, 10800, 127}, {0x2082, 0x400, 10800, 127}, {0x0081, 0, 10800, 135}, {0x0082, 0, 10800, 135}, {0x2081, 0x400, 10800, 142}, {0x2082, 0x400, 10800, 142}, {0x0081, 0, 10800, 150}, {0x0082, 0, 10800, 150}, {0x2081, 0x400, 10800, 157}, {0x2082, 0x400, 10800, 157}, {0x0081, 0, 10800, 165}, {0x0082, 0, 10800, 165}, {0x2081, 0x400, 10800, 172}, {0x2082, 0x400, 10800, 172}, {0x0081, 0, 10800, 180}, {0x0082, 0, 10800, 180}, {0x2081, 0x400, 10800, 187}, {0x2082, 0x400, 10800, 187}, {0x0081, 0, 10800, 195}, {0x0082, 0, 10800, 195}, {0x2081, 0x400, 10800, 202}, {0x2082, 0x400, 10800, 202}, {0x0081, 0, 10800, 210}, {0x0082, 0, 10800, 210}, {0x2081, 0x400, 10800, 217}, {0x2082, 0x400, 10800, 217}, {0x0081, 0, 10800, 225}, {0x0082, 0, 10800, 225}, {0x2081, 0x400, 10800, 232}, {0x2082, 0x400, 10800, 232}, {0x0081, 0, 10800, 240}, {0x0082, 0, 10800, 240}, {0x2081, 0x400, 10800, 247}, {0x2082, 0x400, 10800, 247}, {0x0081, 0, 10800, 255}, {0x0082, 0, 10800, 255}, {0x2081, 0x400, 10800, 262}, {0x2082, 0x400, 10800, 262}, {0x0081, 0, 10800, 270}, {0x0082, 0, 10800, 270}, {0x2081, 0x400, 10800, 277}, {0x2082, 0x400, 10800, 277}, {0x0081, 0, 10800, 285}, {0x0082, 0, 10800, 285}, {0x2081, 0x400, 10800, 292}, {0x2082, 0x400, 10800, 292}, {0x0081, 0, 10800, 300}, {0x0082, 0, 10800, 300}, {0x2081, 0x400, 10800, 307}, {0x2082, 0x400, 10800, 307}, {0x0081, 0, 10800, 315}, {0x0082, 0, 10800, 315}, {0x2081, 0x400, 10800, 322}, {0x2082, 0x400, 10800, 322}, {0x0081, 0, 10800, 330}, {0x0082, 0, 10800, 330}, {0x2081, 0x400, 10800, 337}, {0x2082, 0x400, 10800, 337}, {0x0081, 0, 10800, 345}, {0x0082, 0, 10800, 345}, {0x2081, 0x400, 10800, 352}, {0x2082, 0x400, 10800, 352}
1477 };
1478
1479 const TextRectangle SEAL_8_TRS[] =
1480 {
1481 { {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)} }
1482 };
1483
1484 const int SEAL_8_DEFAULT_ADJUST[] =
1485 {
1486 2500
1487 };
1488
1489 const CustomShape CS_SEAL_8(
1490 SEAL_8_VERTICES, sizeof(SEAL_8_VERTICES) / sizeof(Vertex),
1491 nullptr, 0,
1492 SEAL_8_CALC, sizeof(SEAL_8_CALC) / sizeof(Calculation),
1493 SEAL_8_DEFAULT_ADJUST, sizeof(SEAL_8_DEFAULT_ADJUST) / sizeof(int),
1494 SEAL_8_TRS, sizeof(SEAL_8_TRS) / sizeof(TextRectangle),
1495 21600, 21600,
1496 nullptr, 0);
1497
1498 const Vertex RIBBON_2_VERTICES[] =
1499 {
1500 {CALCULATED_VALUE(12), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(12), CALCULATED_VALUE(13)}, {CALCULATED_VALUE(12), CALCULATED_VALUE(14)}, {CALCULATED_VALUE(15), 21600}, {CALCULATED_VALUE(16), 21600}, {0, 21600}, {2750, CALCULATED_VALUE(7)}, {0, CALCULATED_VALUE(2)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(5)}, {CALCULATED_VALUE(10), 0}, {CALCULATED_VALUE(11), 0}, {CALCULATED_VALUE(17), 0}, {CALCULATED_VALUE(18), 0}, {CALCULATED_VALUE(19), CALCULATED_VALUE(5)}, {CALCULATED_VALUE(19), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(19), CALCULATED_VALUE(2)}, {21600, CALCULATED_VALUE(2)}, {18850, CALCULATED_VALUE(7)}, {21600, 21600}, {CALCULATED_VALUE(20), 21600}, {CALCULATED_VALUE(21), 21600}, {CALCULATED_VALUE(22), CALCULATED_VALUE(14)}, {CALCULATED_VALUE(22), CALCULATED_VALUE(13)}, {CALCULATED_VALUE(22), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(12), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(12), CALCULATED_VALUE(13)}, {CALCULATED_VALUE(12), CALCULATED_VALUE(23)}, {CALCULATED_VALUE(15), CALCULATED_VALUE(24)}, {CALCULATED_VALUE(16), CALCULATED_VALUE(24)}, {CALCULATED_VALUE(11), CALCULATED_VALUE(24)}, {CALCULATED_VALUE(10), CALCULATED_VALUE(24)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(26)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(25)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(27)}, {CALCULATED_VALUE(10), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(11), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(22), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(22), CALCULATED_VALUE(13)}, {CALCULATED_VALUE(22), CALCULATED_VALUE(23)}, {CALCULATED_VALUE(21), CALCULATED_VALUE(24)}, {CALCULATED_VALUE(20), CALCULATED_VALUE(24)}, {CALCULATED_VALUE(17), CALCULATED_VALUE(24)}, {CALCULATED_VALUE(18), CALCULATED_VALUE(24)}, {CALCULATED_VALUE(19), CALCULATED_VALUE(26)}, {CALCULATED_VALUE(19), CALCULATED_VALUE(25)}, {CALCULATED_VALUE(19), CALCULATED_VALUE(27)}, {CALCULATED_VALUE(18), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(17), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(25)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(19), CALCULATED_VALUE(25)}, {CALCULATED_VALUE(19), CALCULATED_VALUE(2)}
1501 };
1502
1503 const unsigned short RIBBON_2_SEGMENTS[] =
1504 {
1505 0x4000, 0x0001, 0x2001, 0x0005, 0x2001, 0x0001, 0x2001, 0x0005, 0x2001, 0x0001, 0x6001, 0x8000, 0x4000, 0x0001, 0x2001, 0x0001, 0x2002, 0x6001, 0x8000, 0x4000, 0x0001, 0x2001, 0x0001, 0x2002, 0x6001, 0x8000, 0x4000, 0x0001, 0x8000, 0x4000, 0x0001, 0x8000
1506 };
1507
1508 const Calculation RIBBON_2_CALC[] =
1509 {
1510 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x8000, 21600, 0, 0x401}, {0x2001, 0x402, 1, 2}, {0x2001, 0x403, 1, 2}, {0x2001, 0x404, 1, 2}, {0x2001, 0x401, 1, 2}, {0x8000, 21600, 0, 0x406}, {0x0000, 420, 0, 0}, {0x2001, 0x408, 2, 1}, {0x6000, 0x400, 0x408, 0}, {0x6000, 0x400, 0x409, 0}, {0x2000, 0x400, 2700, 0}, {0x8000, 21600, 0, 0x404}, {0x8000, 21600, 0, 0x405}, {0xa000, 0x40c, 0, 0x408}, {0xa000, 0x40c, 0, 0x409}, {0x8000, 21600, 0, 0x40b}, {0x8000, 21600, 0, 0x40a}, {0x8000, 21600, 0, 0x400}, {0x8000, 21600, 0, 0x410}, {0x8000, 21600, 0, 0x40f}, {0x8000, 21600, 0, 0x40c}, {0xa000, 0x40d, 0, 0x405}, {0x6000, 0x401, 0x403, 0}, {0x6000, 0x401, 0x404, 0}, {0x6000, 0x419, 0x405, 0}, {0xa000, 0x419, 0, 0x405}
1511 };
1512
1513 const TextRectangle RIBBON_2_TRS[] =
1514 {
1515 { {CALCULATED_VALUE(0), 0}, {CALCULATED_VALUE(19), CALCULATED_VALUE(1)} }
1516 };
1517
1518 const int RIBBON_2_DEFAULT_ADJUST[] =
1519 {
1520 5400, 18900
1521 };
1522
1523 const CustomShape CS_RIBBON_2(
1524 RIBBON_2_VERTICES, sizeof(RIBBON_2_VERTICES) / sizeof(Vertex),
1525 RIBBON_2_SEGMENTS, sizeof(RIBBON_2_SEGMENTS) / sizeof(unsigned short),
1526 RIBBON_2_CALC, sizeof(RIBBON_2_CALC) / sizeof(Calculation),
1527 RIBBON_2_DEFAULT_ADJUST, sizeof(RIBBON_2_DEFAULT_ADJUST) / sizeof(int),
1528 RIBBON_2_TRS, sizeof(RIBBON_2_TRS) / sizeof(TextRectangle),
1529 21600, 21600,
1530 nullptr, 0);
1531
1532 const Vertex CHEVRON_VERTICES[] =
1533 {
1534 {0, 0}, {CALCULATED_VALUE(0), 0}, {21600, 10800}, {CALCULATED_VALUE(0), 21600}, {0, 21600}, {CALCULATED_VALUE(1), 10800}
1535 };
1536
1537 const unsigned short CHEVRON_SEGMENTS[] =
1538 {
1539 0x4000, 0x0005, 0x6001, 0x8000
1540 };
1541
1542 const Calculation CHEVRON_CALC[] =
1543 {
1544 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x8000, 21600, 0, 0x0400}
1545 };
1546
1547 const TextRectangle CHEVRON_TRS[] =
1548 {
1549 { {0, 0}, {21600, 21600} }
1550 };
1551
1552 const int CHEVRON_DEFAULT_ADJUST[] =
1553 {
1554 16200
1555 };
1556
1557 const CustomShape CS_CHEVRON(
1558 CHEVRON_VERTICES, sizeof(CHEVRON_VERTICES) / sizeof(Vertex),
1559 CHEVRON_SEGMENTS, sizeof(CHEVRON_SEGMENTS) / sizeof(unsigned short),
1560 CHEVRON_CALC, sizeof(CHEVRON_CALC) / sizeof(Calculation),
1561 CHEVRON_DEFAULT_ADJUST, sizeof(CHEVRON_DEFAULT_ADJUST) / sizeof(int),
1562 CHEVRON_TRS, sizeof(CHEVRON_TRS) / sizeof(TextRectangle),
1563 21600, 21600,
1564 nullptr, 0);
1565
1566 const Vertex PENTAGON_VERTICES[] =
1567 {
1568 {10800, 0}, {0, 8260}, {4230, 21600}, {17370, 21600}, {21600, 8260}, {10800, 0}
1569 };
1570
1571 const TextRectangle PENTAGON_TRS[] =
1572 {
1573 { {4230, 5080}, {17370, 21600} }
1574 };
1575
1576 const Vertex PENTAGON_GLUE_POINTS[] =
1577 {
1578 {10800, 0}, {0, 8260}, {4230, 21600}, {10800, 21600}, {17370, 21600}, {21600, 8260}
1579 };
1580
1581 const CustomShape CS_PENTAGON(
1582 PENTAGON_VERTICES, sizeof(PENTAGON_VERTICES) / sizeof(Vertex),
1583 nullptr, 0,
1584 nullptr, 0,
1585 nullptr, 0,
1586 PENTAGON_TRS, sizeof(PENTAGON_TRS) / sizeof(TextRectangle),
1587 21600, 21600,
1588 PENTAGON_GLUE_POINTS, sizeof(PENTAGON_GLUE_POINTS) / sizeof(Vertex));
1589
1590 const Vertex RIBBON_VERTICES[] =
1591 {
1592 {0, 0}, {CALCULATED_VALUE(3), 0}, {CALCULATED_VALUE(4), CALCULATED_VALUE(11)}, {CALCULATED_VALUE(4), CALCULATED_VALUE(10)}, {CALCULATED_VALUE(5), CALCULATED_VALUE(10)}, {CALCULATED_VALUE(5), CALCULATED_VALUE(11)}, {CALCULATED_VALUE(6), 0}, {21600, 0}, {CALCULATED_VALUE(18), CALCULATED_VALUE(14)}, {21600, CALCULATED_VALUE(15)}, {CALCULATED_VALUE(9), CALCULATED_VALUE(15)}, {CALCULATED_VALUE(9), CALCULATED_VALUE(16)}, {CALCULATED_VALUE(8), 21600}, {CALCULATED_VALUE(1), 21600}, {CALCULATED_VALUE(0), CALCULATED_VALUE(16)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(15)}, {0, CALCULATED_VALUE(15)}, {2700, CALCULATED_VALUE(14)}, {CALCULATED_VALUE(4), CALCULATED_VALUE(11)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(12)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(12)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(13)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(10)}, {CALCULATED_VALUE(4), CALCULATED_VALUE(10)}, {CALCULATED_VALUE(5), CALCULATED_VALUE(11)}, {CALCULATED_VALUE(6), CALCULATED_VALUE(12)}, {CALCULATED_VALUE(8), CALCULATED_VALUE(12)}, {CALCULATED_VALUE(9), CALCULATED_VALUE(13)}, {CALCULATED_VALUE(8), CALCULATED_VALUE(10)}, {CALCULATED_VALUE(5), CALCULATED_VALUE(10)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(13)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(15)}, {CALCULATED_VALUE(9), CALCULATED_VALUE(13)}, {CALCULATED_VALUE(9), CALCULATED_VALUE(15)}
1593 };
1594
1595 const unsigned short RIBBON_SEGMENTS[] =
1596 {
1597 0x4000, 0x0001, 0xa701, 0x0003, 0xa801, 0x0005, 0xa801, 0x0001, 0xa701, 0x0003, 0x6000, 0x8000, 0x4000, 0xaa00, 0xa801, 0x0001, 0xa702, 0x0001, 0x8000, 0x4000, 0xaa00, 0xa801, 0x0001, 0xa702, 0x0001, 0x8000, 0x4000, 0xaa00, 0x0001, 0x8000, 0x4000, 0xaa00, 0x0001, 0x8000
1598 };
1599
1600 const Calculation RIBBON_CALC[] =
1601 {
1602 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2000, 0x400, 675, 0}, {0x2000, 0x401, 675, 0}, {0x2000, 0x402, 675, 0}, {0x2000, 0x403, 675, 0}, {0x8000, 21600, 0, 0x404}, {0x8000, 21600, 0, 0x403}, {0x8000, 21600, 0, 0x402}, {0x8000, 21600, 0, 0x401}, {0x8000, 21600, 0, 0x400}, {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x2001, 0x40a, 1, 4}, {0x2001, 0x40b, 2, 1}, {0x2001, 0x40b, 3, 1}, {0x8000, 10800, 0, 0x40c}, {0x8000, 21600, 0, 0x40a}, {0x8000, 21600, 0, 0x40b}, {0x0001, 21600, 1, 2}, {0x0000, 21600, 0, 2700}, {0x2000, 0x411, 0, 2700}
1603 };
1604
1605 const TextRectangle RIBBON_TRS[] =
1606 {
1607 { {CALCULATED_VALUE(0), CALCULATED_VALUE(10)}, {CALCULATED_VALUE(9), 21600} }
1608 };
1609
1610 const int RIBBON_DEFAULT_ADJUST[] =
1611 {
1612 5400, 2700
1613 };
1614
1615 const Vertex RIBBON_GLUE_POINTS[] =
1616 {
1617 {CALCULATED_VALUE(17), CALCULATED_VALUE(10)}, {2700, CALCULATED_VALUE(14)}, {CALCULATED_VALUE(17), 21600}, {CALCULATED_VALUE(18), CALCULATED_VALUE(14)}
1618 };
1619
1620 const CustomShape CS_RIBBON(
1621 RIBBON_VERTICES, sizeof(RIBBON_VERTICES) / sizeof(Vertex),
1622 RIBBON_SEGMENTS, sizeof(RIBBON_SEGMENTS) / sizeof(unsigned short),
1623 RIBBON_CALC, sizeof(RIBBON_CALC) / sizeof(Calculation),
1624 RIBBON_DEFAULT_ADJUST, sizeof(RIBBON_DEFAULT_ADJUST) / sizeof(int),
1625 RIBBON_TRS, sizeof(RIBBON_TRS) / sizeof(TextRectangle),
1626 21600, 21600,
1627 RIBBON_GLUE_POINTS, sizeof(RIBBON_GLUE_POINTS) / sizeof(Vertex));
1628
1629 const Vertex CALLOUT_2_VERTICES[] =
1630 {
1631 {0, 0}, {21600, 0}, {21600, 21600}, {0, 21600}, {CALCULATED_VALUE(0), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(3)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(3)}, {CALCULATED_VALUE(4), CALCULATED_VALUE(5)}
1632 };
1633
1634 const unsigned short CALLOUT_2_SEGMENTS[] =
1635 {
1636 0x4000, 0xab00, 0x0003, 0x6000, 0x8000, // NO STROKE
1637 0x4000, 0x0001, 0x8000, 0x4000, 0x0001, 0x8000, 0x4000, 0x0001, 0x8000
1638 };
1639
1640 const Calculation CALLOUT_2_CALC[] =
1641 {
1642 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 2, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 3, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 4, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 5, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 6, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 7, 0, 0}
1643 };
1644
1645 const int CALLOUT_2_DEFAULT_ADJUST[] =
1646 {
1647 -10000, 24500, -3600, 4000, -1800, 4000
1648 };
1649
1650 const CustomShape CS_CALLOUT_2(
1651 CALLOUT_2_VERTICES, sizeof(CALLOUT_2_VERTICES) / sizeof(Vertex),
1652 CALLOUT_2_SEGMENTS, sizeof(CALLOUT_2_SEGMENTS) / sizeof(unsigned short),
1653 CALLOUT_2_CALC, sizeof(CALLOUT_2_CALC) / sizeof(Calculation),
1654 CALLOUT_2_DEFAULT_ADJUST, sizeof(CALLOUT_2_DEFAULT_ADJUST) / sizeof(int),
1655 nullptr, 0,
1656 21600, 21600,
1657 nullptr, 0);
1658
1659 const Vertex CALLOUT_3_VERTICES[] =
1660 {
1661 {0, 0}, {21600, 0}, {21600, 21600}, {0, 21600}, {CALCULATED_VALUE(6), CALCULATED_VALUE(7)}, {CALCULATED_VALUE(4), CALCULATED_VALUE(5)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(3)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(1)}
1662 };
1663
1664 const unsigned short CALLOUT_3_SEGMENTS[] =
1665 {
1666 0x4000, 0xab00, 0x0003, 0x6000, 0x8000, // NO STROKE
1667 0x4000, 0xaa00, 0x0003, 0x8000 // NO FILL
1668 };
1669
1670 const Calculation CALLOUT_3_CALC[] =
1671 {
1672 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 2, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 3, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 4, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 5, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 6, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 7, 0, 0}
1673 };
1674
1675 const int CALLOUT_3_DEFAULT_ADJUST[] =
1676 {
1677 23400, 24500, 25200, 21600, 25200, 4000, 23400, 4000
1678 };
1679
1680 const CustomShape CS_CALLOUT_3(
1681 CALLOUT_3_VERTICES, sizeof(CALLOUT_3_VERTICES) / sizeof(Vertex),
1682 CALLOUT_3_SEGMENTS, sizeof(CALLOUT_3_SEGMENTS) / sizeof(unsigned short),
1683 CALLOUT_3_CALC, sizeof(CALLOUT_3_CALC) / sizeof(Calculation),
1684 CALLOUT_3_DEFAULT_ADJUST, sizeof(CALLOUT_3_DEFAULT_ADJUST) / sizeof(int),
1685 nullptr, 0,
1686 21600, 21600,
1687 nullptr, 0);
1688
1689 const Vertex CALLOUT_1_VERTICES[] =
1690 {
1691 {0, 0}, {21600, 0}, {21600, 21600}, {0, 21600}, {CALCULATED_VALUE(0), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(3)}
1692 };
1693
1694 const unsigned short CALLOUT_1_SEGMENTS[] =
1695 {
1696 0x4000, 0xab00, 0x0003, 0x6000, 0x8000, // NO STROKE
1697 0x4000, 0x0001, 0x8000
1698 };
1699
1700 const Calculation CALLOUT_1_CALC[] =
1701 {
1702 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 2, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 3, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 4, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 5, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 6, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 7, 0, 0}
1703 };
1704
1705 const int CALLOUT_1_DEFAULT_ADJUST[] =
1706 {
1707 -8300, 24500, -1800, 4000
1708 };
1709
1710 const CustomShape CS_CALLOUT_1(
1711 CALLOUT_1_VERTICES, sizeof(CALLOUT_1_VERTICES) / sizeof(Vertex),
1712 CALLOUT_1_SEGMENTS, sizeof(CALLOUT_1_SEGMENTS) / sizeof(unsigned short),
1713 CALLOUT_1_CALC, sizeof(CALLOUT_1_CALC) / sizeof(Calculation),
1714 CALLOUT_1_DEFAULT_ADJUST, sizeof(CALLOUT_1_DEFAULT_ADJUST) / sizeof(int),
1715 nullptr, 0,
1716 21600, 21600,
1717 nullptr, 0);
1718
1719 const Vertex CURVED_CONNECTOR_5_VERTICES[] =
1720 {
1721 {0, 0}, {CALCULATED_VALUE(21), 0}, {CALCULATED_VALUE(0), CALCULATED_VALUE(12)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(11)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(14)}, {CALCULATED_VALUE(6), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(8), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(18)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(16)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(20)}, {CALCULATED_VALUE(10), 21600}, {21600, 21600}
1722 };
1723
1724 const unsigned short CURVED_CONNECTOR_5_SEGMENTS[] =
1725 {
1726 0x4000, 0x2004, 0x8000
1727 };
1728
1729 const Calculation CURVED_CONNECTOR_5_CALC[] =
1730 {
1731 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 2, 0, 0}, {0x6000, 0x400, 0x401, 0}, {0x2001, 0x402, 1, 2}, {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x6000, 0x400, 0x403, 0}, {0x2001, 0x405, 1, 2}, {0x6000, 0x401, 0x403, 0}, {0x2001, 0x407, 1, 2}, {0x2000, 0x401, 21600, 0}, {0x2001, 0x409, 1, 2}, {0x2001, 0x404, 1, 2}, {0x2001, 0x40b, 1, 2}, {0x6000, 0x404, 0x40b, 0}, {0x2001, 0x40d, 1, 2}, {0x2000, 0x404, 21600, 0}, {0x2001, 0x40f, 1, 2}, {0x6000, 0x404, 0x410, 0}, {0x2001, 0x411, 1, 2}, {0x2000, 0x410, 21600, 0}, {0x2001, 0x413, 1, 2}, {0x2001, 0x400, 1, 2}
1732 };
1733
1734 const int CURVED_CONNECTOR_5_DEFAULT_ADJUST[] =
1735 {
1736 10800, 10800, 10800
1737 };
1738
1739 const CustomShape CS_CURVED_CONNECTOR_5(
1740 CURVED_CONNECTOR_5_VERTICES, sizeof(CURVED_CONNECTOR_5_VERTICES) / sizeof(Vertex),
1741 CURVED_CONNECTOR_5_SEGMENTS, sizeof(CURVED_CONNECTOR_5_SEGMENTS) / sizeof(unsigned short),
1742 CURVED_CONNECTOR_5_CALC, sizeof(CURVED_CONNECTOR_5_CALC) / sizeof(Calculation),
1743 CURVED_CONNECTOR_5_DEFAULT_ADJUST, sizeof(CURVED_CONNECTOR_5_DEFAULT_ADJUST) / sizeof(int),
1744 nullptr, 0,
1745 21600, 21600,
1746 nullptr, 0);
1747
1748 const Vertex CURVED_CONNECTOR_4_VERTICES[] =
1749 {
1750 {0, 0}, {CALCULATED_VALUE(1), 0}, {CALCULATED_VALUE(0), CALCULATED_VALUE(10)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(9)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(12)}, {CALCULATED_VALUE(5), CALCULATED_VALUE(8)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(8)}, {CALCULATED_VALUE(7), CALCULATED_VALUE(8)}, {21600, CALCULATED_VALUE(14)}, {21600, 21600}
1751 };
1752
1753 const unsigned short CURVED_CONNECTOR_4_SEGMENTS[] =
1754 {
1755 0x4000, 0x2003, 0x8000
1756 };
1757
1758 const Calculation CURVED_CONNECTOR_4_CALC[] =
1759 {
1760 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2001, 0x400, 1, 2}, {0x4000, 21600, 0x400, 0}, {0x2001, 0x402, 1, 2}, {0x6000, 0x400, 0x403, 0}, {0x2001, 0x404, 1, 2}, {0x2000, 0x403, 21600, 0}, {0x2001, 0x406, 1, 2}, {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x2001, PROP_ADJUST_VAL_FIRST + 1, 1, 2}, {0x2001, PROP_ADJUST_VAL_FIRST + 1, 1, 4}, {0x6000, 0x408, 0x409, 0}, {0x2001, 0x40b, 1, 2}, {0x2000, 0x408, 21600, 0}, {0x2001, 0x40d, 1, 2}
1761 };
1762
1763 const int CURVED_CONNECTOR_4_DEFAULT_ADJUST[] =
1764 {
1765 10800, 10800
1766 };
1767
1768 const CustomShape CS_CURVED_CONNECTOR_4(
1769 CURVED_CONNECTOR_4_VERTICES, sizeof(CURVED_CONNECTOR_4_VERTICES) / sizeof(Vertex),
1770 CURVED_CONNECTOR_4_SEGMENTS, sizeof(CURVED_CONNECTOR_4_SEGMENTS) / sizeof(unsigned short),
1771 CURVED_CONNECTOR_4_CALC, sizeof(CURVED_CONNECTOR_4_CALC) / sizeof(Calculation),
1772 CURVED_CONNECTOR_4_DEFAULT_ADJUST, sizeof(CURVED_CONNECTOR_4_DEFAULT_ADJUST) / sizeof(int),
1773 nullptr, 0,
1774 21600, 21600,
1775 nullptr, 0);
1776
1777 const Vertex CURVED_CONNECTOR_3_VERTICES[] =
1778 {
1779 {0, 0}, {CALCULATED_VALUE(1), 0}, {CALCULATED_VALUE(0), 5400}, {CALCULATED_VALUE(0), 10800}, {CALCULATED_VALUE(0), 16200}, {CALCULATED_VALUE(3), 21600}, {21600, 21600}
1780 };
1781
1782 const unsigned short CURVED_CONNECTOR_3_SEGMENTS[] =
1783 {
1784 0x4000, 0x2002, 0x8000
1785 };
1786
1787 const Calculation CURVED_CONNECTOR_3_CALC[] =
1788 {
1789 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2001, 0x400, 1, 2}, {0x2000, 0x400, 21600, 0}, {0x2001, 0x402, 1, 2}
1790 };
1791
1792 const int CURVED_CONNECTOR_3_DEFAULT_ADJUST[] =
1793 {
1794 10800
1795 };
1796
1797 const CustomShape CS_CURVED_CONNECTOR_3(
1798 CURVED_CONNECTOR_3_VERTICES, sizeof(CURVED_CONNECTOR_3_VERTICES) / sizeof(Vertex),
1799 CURVED_CONNECTOR_3_SEGMENTS, sizeof(CURVED_CONNECTOR_3_SEGMENTS) / sizeof(unsigned short),
1800 CURVED_CONNECTOR_3_CALC, sizeof(CURVED_CONNECTOR_3_CALC) / sizeof(Calculation),
1801 CURVED_CONNECTOR_3_DEFAULT_ADJUST, sizeof(CURVED_CONNECTOR_3_DEFAULT_ADJUST) / sizeof(int),
1802 nullptr, 0,
1803 21600, 21600,
1804 nullptr, 0);
1805
1806
1807 const Vertex BENT_CONNECTOR_5_VERTICES[] =
1808 {
1809 {0, 0}, {CALCULATED_VALUE(0), 0}, {CALCULATED_VALUE(0), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(1), 21600}, {21600, 21600}
1810 };
1811
1812 const unsigned short BENT_CONNECTOR_5_SEGMENTS[] =
1813 {
1814 0x4000, 0x0005, 0x8000
1815 };
1816
1817 const Calculation BENT_CONNECTOR_5_CALC[] =
1818 {
1819 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 2, 0, 0}, {0x6000, 0x400, 0x401, 0}, {0x2001, 0x402, 1, 2}, {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x2001, 0x404, 1, 2}, {0x4000, 21600, 0x404, 0}, {0x2001, 0x406, 1, 2}
1820 };
1821
1822 const int BENT_CONNECTOR_5_DEFAULT_ADJUST[] =
1823 {
1824 10800, 10800, 10800
1825 };
1826
1827 const CustomShape CS_BENT_CONNECTOR_5(
1828 BENT_CONNECTOR_5_VERTICES, sizeof(BENT_CONNECTOR_5_VERTICES) / sizeof(Vertex),
1829 BENT_CONNECTOR_5_SEGMENTS, sizeof(BENT_CONNECTOR_5_SEGMENTS) / sizeof(unsigned short),
1830 BENT_CONNECTOR_5_CALC, sizeof(BENT_CONNECTOR_5_CALC) / sizeof(Calculation),
1831 BENT_CONNECTOR_5_DEFAULT_ADJUST, sizeof(BENT_CONNECTOR_5_DEFAULT_ADJUST) / sizeof(int),
1832 nullptr, 0,
1833 21600, 21600,
1834 nullptr, 0);
1835
1836 const Vertex CURVED_CONNECTOR_2_VERTICES[] =
1837 {
1838 {0, 0}, {10800, 0}, {21600, 10800}, {21600, 21600}
1839 };
1840
1841 const unsigned short CURVED_CONNECTOR_2_SEGMENTS[] =
1842 {
1843 0x4000, 0x2001, 0x8000
1844 };
1845
1846 const CustomShape CS_CURVED_CONNECTOR_2(
1847 CURVED_CONNECTOR_2_VERTICES, sizeof(CURVED_CONNECTOR_2_VERTICES) / sizeof(Vertex),
1848 CURVED_CONNECTOR_2_SEGMENTS, sizeof(CURVED_CONNECTOR_2_SEGMENTS) / sizeof(unsigned short),
1849 nullptr, 0,
1850 nullptr, 0,
1851 nullptr, 0,
1852 21600, 21600,
1853 nullptr, 0);
1854
1855 const Vertex BENT_CONNECTOR_4_VERTICES[] =
1856 {
1857 {0, 0}, {CALCULATED_VALUE(0), 0}, {CALCULATED_VALUE(0), CALCULATED_VALUE(1)}, {21600, CALCULATED_VALUE(1)}, {21600, 21600}
1858 };
1859
1860 const unsigned short BENT_CONNECTOR_4_SEGMENTS[] =
1861 {
1862 0x4000, 0x0004, 0x8000
1863 };
1864
1865 const Calculation BENT_CONNECTOR_4_CALC[] =
1866 {
1867 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x2000, 0x400, 21600, 0}, {0x2001, 0x402, 1, 2}, {0x2001, 0x401, 1, 2}
1868 };
1869
1870 const int BENT_CONNECTOR_4_DEFAULT_ADJUST[] =
1871 {
1872 10800, 10800
1873 };
1874
1875 const CustomShape CS_BENT_CONNECTOR_4(
1876 BENT_CONNECTOR_4_VERTICES, sizeof(BENT_CONNECTOR_4_VERTICES) / sizeof(Vertex),
1877 BENT_CONNECTOR_4_SEGMENTS, sizeof(BENT_CONNECTOR_4_SEGMENTS) / sizeof(unsigned short),
1878 BENT_CONNECTOR_4_CALC, sizeof(BENT_CONNECTOR_4_CALC) / sizeof(Calculation),
1879 BENT_CONNECTOR_4_DEFAULT_ADJUST, sizeof(BENT_CONNECTOR_4_DEFAULT_ADJUST) / sizeof(int),
1880 nullptr, 0,
1881 21600, 21600,
1882 nullptr, 0);
1883
1884 const Vertex BENT_CONNECTOR_3_VERTICES[] =
1885 {
1886 {0, 0}, {CALCULATED_VALUE(0), 0}, {CALCULATED_VALUE(0), 21600}, {21600, 21600}
1887 };
1888
1889 const unsigned short BENT_CONNECTOR_3_SEGMENTS[] =
1890 {
1891 0x4000, 0x0003, 0x8000
1892 };
1893
1894 const Calculation BENT_CONNECTOR_3_CALC[] =
1895 {
1896 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}
1897 };
1898
1899 const int BENT_CONNECTOR_3_DEFAULT_ADJUST[] =
1900 {
1901 10800
1902 };
1903
1904 const CustomShape CS_BENT_CONNECTOR_3(
1905 BENT_CONNECTOR_3_VERTICES, sizeof(BENT_CONNECTOR_3_VERTICES) / sizeof(Vertex),
1906 BENT_CONNECTOR_3_SEGMENTS, sizeof(BENT_CONNECTOR_3_SEGMENTS) / sizeof(unsigned short),
1907 BENT_CONNECTOR_3_CALC, sizeof(BENT_CONNECTOR_3_CALC) / sizeof(Calculation),
1908 BENT_CONNECTOR_3_DEFAULT_ADJUST, sizeof(BENT_CONNECTOR_3_DEFAULT_ADJUST) / sizeof(int),
1909 nullptr, 0,
1910 21600, 21600,
1911 nullptr, 0);
1912
1913 const Vertex BENT_CONNECTOR_2_VERTICES[] =
1914 {
1915 {0, 0}, {21600, 0}, {21600, 21600}
1916 };
1917
1918 const unsigned short BENT_CONNECTOR_2_SEGMENTS[] =
1919 {
1920 0x4000, 0x0002, 0x8000
1921 };
1922
1923 const CustomShape CS_BENT_CONNECTOR_2(
1924 BENT_CONNECTOR_2_VERTICES, sizeof(BENT_CONNECTOR_2_VERTICES) / sizeof(Vertex),
1925 BENT_CONNECTOR_2_SEGMENTS, sizeof(BENT_CONNECTOR_2_SEGMENTS) / sizeof(unsigned short),
1926 nullptr, 0,
1927 nullptr, 0,
1928 nullptr, 0,
1929 21600, 21600,
1930 nullptr, 0);
1931
1932 const Vertex STRAIGHT_CONNECTOR_1_VERTICES[] =
1933 {
1934 {0, 0}, {21600, 21600}
1935 };
1936
1937 const unsigned short STRAIGHT_CONNECTOR_1_SEGMENTS[] =
1938 {
1939 0x4000, 0x0001, 0x8000
1940 };
1941
1942 const CustomShape CS_STRAIGHT_CONNECTOR_1(
1943 STRAIGHT_CONNECTOR_1_VERTICES, sizeof(STRAIGHT_CONNECTOR_1_VERTICES) / sizeof(Vertex),
1944 STRAIGHT_CONNECTOR_1_SEGMENTS, sizeof(STRAIGHT_CONNECTOR_1_SEGMENTS) / sizeof(unsigned short),
1945 nullptr, 0,
1946 nullptr, 0,
1947 nullptr, 0,
1948 21600, 21600,
1949 nullptr, 0);
1950
1951 const Vertex TEXT_SIMPLE_VERTICES[] =
1952 {
1953 {0, 0}, {21600, 0}, {21600, 21600}, {0, 21600}, {0, 0}
1954 };
1955
1956 const CustomShape CS_TEXT_SIMPLE(
1957 TEXT_SIMPLE_VERTICES, sizeof(TEXT_SIMPLE_VERTICES) / sizeof(Vertex),
1958 nullptr, 0,
1959 nullptr, 0,
1960 nullptr, 0,
1961 nullptr, 0,
1962 21600, 21600,
1963 nullptr, 0);
1964
1965 const Vertex DONUT_VERTICES[] =
1966 {
1967 {10800, 10800}, {10800, 10800}, {0, 360}, {10800, 10800}, {CALCULATED_VALUE(1), CALCULATED_VALUE(1)}, {0, 360}
1968 };
1969
1970 const unsigned short DONUT_SEGMENTS[] =
1971 {
1972 0xa203, 0x6000, 0xa203, 0x8000
1973 };
1974
1975 const Calculation DONUT_CALC[] =
1976 {
1977 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x8000, 10800, 0, PROP_ADJUST_VAL_FIRST}
1978 };
1979
1980 const TextRectangle DONUT_TRS[] =
1981 {
1982 { {3163, 3163}, {18437, 18437} }
1983 };
1984
1985 const int DONUT_DEFAULT_ADJUST[] =
1986 {
1987 5400
1988 };
1989
1990 const Vertex DONUT_GLUE_POINTS[] =
1991 {
1992 {10800, 0}, {3163, 3163}, {0, 10800}, {3163, 18437}, {10800, 21600}, {18437, 18437}, {21600, 10800}, {18437, 3163}
1993 };
1994
1995 const CustomShape CS_DONUT(
1996 DONUT_VERTICES, sizeof(DONUT_VERTICES) / sizeof(Vertex),
1997 DONUT_SEGMENTS, sizeof(DONUT_SEGMENTS) / sizeof(unsigned short),
1998 DONUT_CALC, sizeof(DONUT_CALC) / sizeof(Calculation),
1999 DONUT_DEFAULT_ADJUST, sizeof(DONUT_DEFAULT_ADJUST) / sizeof(int),
2000 DONUT_TRS, sizeof(DONUT_TRS) / sizeof(TextRectangle),
2001 21600, 21600,
2002 DONUT_GLUE_POINTS, sizeof(DONUT_GLUE_POINTS) / sizeof(Vertex));
2003
2004 const Vertex CAN_VERTICES[] =
2005 {
2006 {44, 0}, {20, 0}, {0, CALCULATED_VALUE(2)}, {0, CALCULATED_VALUE(0)}, {0, CALCULATED_VALUE(3)}, {0, CALCULATED_VALUE(4)}, {20, 21600}, {44, 21600}, {68, 21600}, {88, CALCULATED_VALUE(4)}, {88, CALCULATED_VALUE(3)}, {88, CALCULATED_VALUE(0)}, {88, CALCULATED_VALUE(2)}, {68, 0}, {44, 0}, {44, 0}, {20, 0}, {0, CALCULATED_VALUE(2)}, {0, CALCULATED_VALUE(0)}, {0, CALCULATED_VALUE(5)}, {20, CALCULATED_VALUE(6)}, {44, CALCULATED_VALUE(6)}, {68, CALCULATED_VALUE(6)}, {88, CALCULATED_VALUE(5)}, {88, CALCULATED_VALUE(0)}, {88, CALCULATED_VALUE(2)}, {68, 0}, {44, 0}
2007 };
2008
2009 const unsigned short CAN_SEGMENTS[] =
2010 {
2011 0x4000, 0x2001, 0x0001, 0x2002, 0x0001, 0x2001, 0x6001, 0x8000, 0x4000, 0x2004, 0x6001, 0x8000
2012 };
2013
2014 const Calculation CAN_CALC[] =
2015 {
2016 {0x2001, PROP_ADJUST_VAL_FIRST, 2, 4}, {0x2001, OTHER_CALC_VAL, 6, 11}, {0xA000, OTHER_CALC_VAL, 0, OTHER_CALC_VAL | 0x1}, {0x8000, 21600, 0, OTHER_CALC_VAL}, {0x6000, OTHER_CALC_VAL | 0x3, OTHER_CALC_VAL | 0x1, 0}, {0x6000, OTHER_CALC_VAL, OTHER_CALC_VAL | 0x1, 0}, {0x2001, PROP_ADJUST_VAL_FIRST, 2, 2}, {0x0000, 44, 0, 0}
2017 };
2018
2019 const TextRectangle CAN_TRS[] =
2020 {
2021 { {0, CALCULATED_VALUE(6)}, {88, CALCULATED_VALUE(3)} }
2022 };
2023
2024 const int CAN_DEFAULT_ADJUST[] =
2025 {
2026 5400
2027 };
2028
2029 const Vertex CAN_GLUE_POINTS[] =
2030 {
2031 {44, CALCULATED_VALUE(6)}, {44, 0}, {0, 10800}, {44, 21600}, {88, 10800}
2032 };
2033
2034 const CustomShape CS_CAN(
2035 CAN_VERTICES, sizeof(CAN_VERTICES) / sizeof(Vertex),
2036 CAN_SEGMENTS, sizeof(CAN_SEGMENTS) / sizeof(unsigned short),
2037 CAN_CALC, sizeof(CAN_CALC) / sizeof(Calculation),
2038 CAN_DEFAULT_ADJUST, sizeof(CAN_DEFAULT_ADJUST) / sizeof(int),
2039 CAN_TRS, sizeof(CAN_TRS) / sizeof(TextRectangle),
2040 88, 21600,
2041 CAN_GLUE_POINTS, sizeof(CAN_GLUE_POINTS) / sizeof(Vertex));
2042
2043 const Vertex PLAQUE_VERTICES[] =
2044 {
2045 {CALCULATED_VALUE(0), 0}, {0, CALCULATED_VALUE(1)}, {0, CALCULATED_VALUE(2)}, {CALCULATED_VALUE(0), 21600}, {CALCULATED_VALUE(3), 21600}, {21600, CALCULATED_VALUE(2)}, {21600, CALCULATED_VALUE(1)}, {CALCULATED_VALUE(3), 0}
2046 };
2047
2048 const unsigned short PLAQUE_SEGMENTS[] =
2049 {
2050 0x4000, 0xA801, 0x0001, 0xA701, 0x0001, 0xA801, 0x0001, 0xA701, 0x6000, 0x8000
2051 };
2052
2053 const Calculation PLAQUE_CALC[] =
2054 {
2055 {0x6000, PROP_GEO_LEFT, PROP_ADJUST_VAL_FIRST, 0}, {0x6000, PROP_GEO_TOP, PROP_ADJUST_VAL_FIRST, 0}, {0xA000, PROP_GEO_BOTTOM, 0, PROP_ADJUST_VAL_FIRST}, {0xA000, PROP_GEO_RIGHT, 0, PROP_ADJUST_VAL_FIRST}, {0x2082, PROP_ADJUST_VAL_FIRST, 0, 45}, {0x2000, OTHER_CALC_VAL | 0x4, 0, 10800}, {0x8000, 0, 0, PROP_ADJUST_VAL_FIRST}, {0xA000, OTHER_CALC_VAL | 0x6, 0, OTHER_CALC_VAL | 0x5}, {0xA000, PROP_GEO_LEFT, 0, OTHER_CALC_VAL | 0x7}, {0xA000, PROP_GEO_TOP, 0, OTHER_CALC_VAL | 0x7}, {0x6000, PROP_GEO_RIGHT, OTHER_CALC_VAL | 0x7, 0}, {0x6000, PROP_GEO_BOTTOM, OTHER_CALC_VAL | 0x7, 0}, {0xA000, PROP_GEO_LEFT, 0, OTHER_CALC_VAL | 0x5}, {0xA000, PROP_GEO_TOP, 0, OTHER_CALC_VAL | 0x5}, {0x6000, PROP_GEO_RIGHT, OTHER_CALC_VAL | 0x5, 0}, {0x6000, PROP_GEO_BOTTOM, OTHER_CALC_VAL | 0x5, 0}
2056 };
2057
2058 const TextRectangle PLAQUE_TRS[] =
2059 {
2060 { {CALCULATED_VALUE(0xC), CALCULATED_VALUE(0xD)}, {CALCULATED_VALUE(0xE), CALCULATED_VALUE(0xF)} }
2061 };
2062
2063 const int PLAQUE_DEFAULT_ADJUST[] =
2064 {
2065 3600
2066 };
2067
2068 const Vertex PLAQUE_GLUE_POINTS[] =
2069 {
2070 {10800, 0}, {0, 10800}, {10800, 21600}, {21600, 10800}
2071 };
2072
2073 const CustomShape CS_PLAQUE(
2074 PLAQUE_VERTICES, sizeof(PLAQUE_VERTICES) / sizeof(Vertex),
2075 PLAQUE_SEGMENTS, sizeof(PLAQUE_SEGMENTS) / sizeof(unsigned short),
2076 PLAQUE_CALC, sizeof(PLAQUE_CALC) / sizeof(Calculation),
2077 PLAQUE_DEFAULT_ADJUST, sizeof(PLAQUE_DEFAULT_ADJUST) / sizeof(int),
2078 PLAQUE_TRS, sizeof(PLAQUE_TRS) / sizeof(TextRectangle),
2079 21600, 21600,
2080 PLAQUE_GLUE_POINTS, sizeof(PLAQUE_GLUE_POINTS) / sizeof(Vertex));
2081
2082
2083 const Vertex BALLOON_VERTICES[] =
2084 {
2085 {3590, 0}, {0, 3590}, {0, 14460}, {3590, 18050}, {CALCULATED_VALUE(40), 21600}, {5420, 18050}, {18010, 18050}, {21600, 14460}, {21600, 3590}, {18010, 0}
2086 };
2087
2088 const unsigned short BALLOON_SEGMENTS[] =
2089 {
2090 0x4000, 0xA701, 0x0001, 0xA801, 0x0003, 0xA701, 0x0001, 0xA801, 0x6001, 0x8000
2091 };
2092
2093 const Calculation BALLOON_CALC[] =
2094 {
2095 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 10800}, {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 10800}, {0x6006, OTHER_CALC_VAL | 0x12, PROP_ADJUST_VAL_FIRST, 0}, {0x6006, OTHER_CALC_VAL | 0x12, PROP_ADJUST_VAL_FIRST + 1, 6280}, {OTHER_CALC_VAL | 0x17, PROP_ADJUST_VAL_FIRST, 0, 0x6006}, {0x6006, OTHER_CALC_VAL | 0x17, PROP_ADJUST_VAL_FIRST + 1, 15320}, {0x6006, OTHER_CALC_VAL | 0x1A, PROP_ADJUST_VAL_FIRST, 6280}, {0x6006, OTHER_CALC_VAL | 0x1A, PROP_ADJUST_VAL_FIRST + 1, 21600}, {0x6006, OTHER_CALC_VAL | 0x1D, PROP_ADJUST_VAL_FIRST, 15320}, {0x6006, OTHER_CALC_VAL | 0x1D, PROP_ADJUST_VAL_FIRST + 1, 21600}, {0x6006, OTHER_CALC_VAL | 0x20, PROP_ADJUST_VAL_FIRST, 21600}, {0x6006, OTHER_CALC_VAL | 0x20, PROP_ADJUST_VAL_FIRST + 1, 15320}, {0x6006, OTHER_CALC_VAL | 0x22, PROP_ADJUST_VAL_FIRST, 21600}, {0x6006, OTHER_CALC_VAL | 0x22, PROP_ADJUST_VAL_FIRST + 1, 6280}, {0x6006, OTHER_CALC_VAL | 0x24, PROP_ADJUST_VAL_FIRST, 15320}, {0x6006, OTHER_CALC_VAL | 0x24, PROP_ADJUST_VAL_FIRST + 1, 0}, {0x6006, OTHER_CALC_VAL | 0x26, PROP_ADJUST_VAL_FIRST, 6280}, {0x6006, OTHER_CALC_VAL | 0x26, PROP_ADJUST_VAL_FIRST + 1, 0}, {0xA006, PROP_ADJUST_VAL_FIRST, -1, OTHER_CALC_VAL | 0x13}, {0xA006, OTHER_CALC_VAL | 0x1, -1, OTHER_CALC_VAL | 0x16}, {0x2003, OTHER_CALC_VAL, 0, 0}, {0x2003, OTHER_CALC_VAL | 0x1, 0, 0}, {0xA000, OTHER_CALC_VAL | 0x14, 0, OTHER_CALC_VAL | 0x15}, {0xA006, PROP_ADJUST_VAL_FIRST, -1, OTHER_CALC_VAL | 0x18}, {0x6006, OTHER_CALC_VAL | 0x1, OTHER_CALC_VAL | 0x16, -1}, {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 21600}, {0x6006, OTHER_CALC_VAL | 0x19, OTHER_CALC_VAL | 0x1B, -1}, {0xA006, OTHER_CALC_VAL, -1, OTHER_CALC_VAL | 0x1C}, {0xA000, OTHER_CALC_VAL | 0x15, 0, OTHER_CALC_VAL | 0x14}, {0x6006, OTHER_CALC_VAL | 0x19, OTHER_CALC_VAL | 0x1E, -1}, {0x6006, OTHER_CALC_VAL, OTHER_CALC_VAL | 0x1C, -1}, {0x2000, PROP_ADJUST_VAL_FIRST, 0, 21600}, {0x6006, OTHER_CALC_VAL | 0x1F, OTHER_CALC_VAL | 0x21, -1}, {0x6006, OTHER_CALC_VAL | 0x1, OTHER_CALC_VAL | 0x16, -1}, {0x6006, OTHER_CALC_VAL | 0x1F, OTHER_CALC_VAL | 0x23, -1}, {0xA006, OTHER_CALC_VAL | 0x1, -1, OTHER_CALC_VAL | 0x16}, {0xA006, PROP_ADJUST_VAL_FIRST + 1, -1, OTHER_CALC_VAL | 0x25}, {0x6006, OTHER_CALC_VAL, OTHER_CALC_VAL | 0x1C, -1}, {0xA006, PROP_ADJUST_VAL_FIRST + 1, -1, OTHER_CALC_VAL | 0x27}, {0xA006, OTHER_CALC_VAL, -1, OTHER_CALC_VAL | 0x1C}, {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}
2096 };
2097
2098 const TextRectangle BALLOON_TRS[] =
2099 {
2100 { {800, 800}, {20800, 17250} }
2101 };
2102
2103 const int BALLOON_DEFAULT_ADJUST[] =
2104 {
2105 1400, 25920
2106 };
2107
2108 const Vertex ARC_VERTICES[] =
2109 {
2110 {0, 0}, {21600, 21600}, {CALCULATED_VALUE(3), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(7), CALCULATED_VALUE(5)}, {10800, 10800}, {0, 0}, {21600, 21600}, {CALCULATED_VALUE(3), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(7), CALCULATED_VALUE(5)}
2111 };
2112
2113 const unsigned short ARC_SEGMENTS[] =
2114 {
2115 0xa504, 0xab00, 0x0001, 0x6001, 0x8000, 0xa504, 0xaa00, 0x8000
2116 };
2117
2118 const Calculation ARC_CALC[] =
2119 {
2120 {0x4009, 10800, PROP_ADJUST_VAL_FIRST, 0}, {0x2000, 0x400, 10800, 0}, {0x400a, 10800, PROP_ADJUST_VAL_FIRST, 0}, {0x2000, 0x402, 10800, 0}, {0x4009, 10800, PROP_ADJUST_VAL_FIRST + 1, 0}, {0x2000, 0x404, 10800, 0}, {0x400a, 10800, PROP_ADJUST_VAL_FIRST + 1, 0}, {0x2000, 0x406, 10800, 0}
2121 };
2122
2123 const int ARC_DEFAULT_ADJUST[] =
2124 {
2125 270 << 16, 0
2126 };
2127
2128 const Vertex ARC_GLUE_POINTS[] =
2129 {
2130 {10800, 0}, {0, 10800}, {10800, 21600}, {21600, 10800}
2131 };
2132
2133 const CustomShape CS_ARC(
2134 ARC_VERTICES, sizeof(ARC_VERTICES) / sizeof(Vertex),
2135 ARC_SEGMENTS, sizeof(ARC_SEGMENTS) / sizeof(unsigned short),
2136 ARC_CALC, sizeof(ARC_CALC) / sizeof(Calculation),
2137 ARC_DEFAULT_ADJUST, sizeof(ARC_DEFAULT_ADJUST) / sizeof(int),
2138 nullptr, 0,
2139 21600, 21600,
2140 ARC_GLUE_POINTS, sizeof(ARC_GLUE_POINTS) / sizeof(Vertex), 2 | 1);
2141
2142 const CustomShape CS_BALLOON(
2143 BALLOON_VERTICES, sizeof(BALLOON_VERTICES) / sizeof(Vertex),
2144 BALLOON_SEGMENTS, sizeof(BALLOON_SEGMENTS) / sizeof(unsigned short),
2145 BALLOON_CALC, sizeof(BALLOON_CALC) / sizeof(Calculation),
2146 BALLOON_DEFAULT_ADJUST, sizeof(BALLOON_DEFAULT_ADJUST) / sizeof(int),
2147 BALLOON_TRS, sizeof(BALLOON_TRS) / sizeof(TextRectangle),
2148 21600, 21600,
2149 nullptr, 0);
2150
2151 const Vertex CUBE_VERTICES[] =
2152 {
2153 {0, CALCULATED_VALUE(12)}, {0, CALCULATED_VALUE(1)}, {CALCULATED_VALUE(2), 0}, {CALCULATED_VALUE(11), 0}, {CALCULATED_VALUE(11), CALCULATED_VALUE(3)}, {CALCULATED_VALUE(4), CALCULATED_VALUE(12)}, {0, CALCULATED_VALUE(1)}, {CALCULATED_VALUE(2), 0}, {CALCULATED_VALUE(11), 0}, {CALCULATED_VALUE(4), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(4), CALCULATED_VALUE(12)}, {CALCULATED_VALUE(4), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(11), 0}, {CALCULATED_VALUE(11), CALCULATED_VALUE(3)}
2154 };
2155
2156 const unsigned short CUBE_SEGMENTS[] =
2157 {
2158 0x4000, 0x0005, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000
2159 };
2160
2161 const Calculation CUBE_CALC[] =
2162 {
2163 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x6000, PROP_GEO_TOP, OTHER_CALC_VAL, 0}, {0x6000, PROP_GEO_LEFT, OTHER_CALC_VAL, 0}, {0xA000, PROP_GEO_BOTTOM, 0, OTHER_CALC_VAL}, {0xA000, PROP_GEO_RIGHT, 0, OTHER_CALC_VAL}, {0xA000, PROP_GEO_RIGHT, 0, OTHER_CALC_VAL | 2}, {0x2001, OTHER_CALC_VAL | 5, 1, 2}, {0x6000, OTHER_CALC_VAL | 2, OTHER_CALC_VAL | 6, 0}, {0xA000, PROP_GEO_BOTTOM, 0, OTHER_CALC_VAL | 1}, {0x2001, OTHER_CALC_VAL | 8, 1, 2}, {0x6000, OTHER_CALC_VAL | 1, OTHER_CALC_VAL | 9, 0}, {0x2000, PROP_GEO_RIGHT, 0, 0}, {0x2000, PROP_GEO_BOTTOM, 0, 0}
2164 };
2165
2166 const TextRectangle CUBE_TRS[] =
2167 {
2168 { {0, CALCULATED_VALUE(1)}, {CALCULATED_VALUE(4), CALCULATED_VALUE(12)} }
2169 };
2170
2171 const int CUBE_DEFAULT_ADJUST[] =
2172 {
2173 5400
2174 };
2175
2176 const Vertex CUBE_GLUE_POINTS[] =
2177 {
2178 {CALCULATED_VALUE(7), 0}, {CALCULATED_VALUE(6), CALCULATED_VALUE(1)}, {0, CALCULATED_VALUE(10)}, {CALCULATED_VALUE(6), 21600}, {CALCULATED_VALUE(4), CALCULATED_VALUE(10)}, {21600, CALCULATED_VALUE(9)}
2179 };
2180
2181 const CustomShape CS_CUBE(
2182 CUBE_VERTICES, sizeof(CUBE_VERTICES) / sizeof(Vertex),
2183 CUBE_SEGMENTS, sizeof(CUBE_SEGMENTS) / sizeof(unsigned short),
2184 CUBE_CALC, sizeof(CUBE_CALC) / sizeof(Calculation),
2185 CUBE_DEFAULT_ADJUST, sizeof(CUBE_DEFAULT_ADJUST) / sizeof(int),
2186 CUBE_TRS, sizeof(CUBE_TRS) / sizeof(TextRectangle),
2187 21600, 21600,
2188 CUBE_GLUE_POINTS, sizeof(CUBE_GLUE_POINTS) / sizeof(Vertex));
2189
2190 const Vertex HOME_PLATE_VERTICES[] =
2191 {
2192 {0, 0}, {CALCULATED_VALUE(0), 0}, {21600, 10800}, {CALCULATED_VALUE(0), 21600}, {0, 21600}
2193 };
2194
2195 const unsigned short HOME_PLATE_SEGMENTS[] =
2196 {
2197 0x4000, 0x0004, 0x6001, 0x8000
2198 };
2199
2200 const Calculation HOME_PLATE_CALC[] =
2201 {
2202 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}
2203 };
2204
2205 const TextRectangle HOME_PLATE_TRS[] =
2206 {
2207 { {0, 0}, {21600, 21600} }
2208 };
2209
2210 const int HOME_PLATE_DEFAULT_ADJUST[] =
2211 {
2212 16200
2213 };
2214
2215 const CustomShape CS_HOME_PLATE(
2216 HOME_PLATE_VERTICES, sizeof(HOME_PLATE_VERTICES) / sizeof(Vertex),
2217 HOME_PLATE_SEGMENTS, sizeof(HOME_PLATE_SEGMENTS) / sizeof(unsigned short),
2218 HOME_PLATE_CALC, sizeof(HOME_PLATE_CALC) / sizeof(Calculation),
2219 HOME_PLATE_DEFAULT_ADJUST, sizeof(HOME_PLATE_DEFAULT_ADJUST) / sizeof(int),
2220 HOME_PLATE_TRS, sizeof(HOME_PLATE_TRS) / sizeof(TextRectangle),
2221 21600, 21600,
2222 nullptr, 0);
2223
2224 const Vertex ARROW_VERTICES[] =
2225 {
2226 {0, CALCULATED_VALUE(0)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(0) }, {CALCULATED_VALUE(1), 0}, {21600, 10800}, {CALCULATED_VALUE(1), 21600}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2) }, {0, CALCULATED_VALUE(2) }
2227 };
2228
2229 const unsigned short ARROW_SEGMENTS[] =
2230 {
2231 0x4000, 0x0006, 0x6001, 0x8000
2232 };
2233
2234 const Calculation ARROW_CALC[] =
2235 {
2236 {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST + 1}, {0x8000, 21600, 0, OTHER_CALC_VAL | 1}, {0x6001, OTHER_CALC_VAL | 3, OTHER_CALC_VAL, 10800}, {0x6000, OTHER_CALC_VAL | 1, OTHER_CALC_VAL | 4, 0}, {0x6001, OTHER_CALC_VAL | 1, OTHER_CALC_VAL, 10800}, {0xA000, OTHER_CALC_VAL | 1, 0, OTHER_CALC_VAL | 6}
2237 };
2238
2239 const TextRectangle ARROW_TRS[] =
2240 {
2241 { {0, CALCULATED_VALUE(0)}, {CALCULATED_VALUE(5), CALCULATED_VALUE(2)} }
2242 };
2243
2244 const int ARROW_DEFAULT_ADJUST[] =
2245 {
2246 16200, 5400
2247 };
2248
2249 const CustomShape CS_ARROW(
2250 ARROW_VERTICES, sizeof(ARROW_VERTICES) / sizeof(Vertex),
2251 ARROW_SEGMENTS, sizeof(ARROW_SEGMENTS) / sizeof(unsigned short),
2252 ARROW_CALC, sizeof(ARROW_CALC) / sizeof(Calculation),
2253 ARROW_DEFAULT_ADJUST, sizeof(ARROW_DEFAULT_ADJUST) / sizeof(int),
2254 ARROW_TRS, sizeof(ARROW_TRS) / sizeof(TextRectangle),
2255 21600, 21600,
2256 nullptr, 0);
2257
2258 const Vertex OCTAGON_VERTICES[] =
2259 {
2260 {CALCULATED_VALUE(0), 0}, {CALCULATED_VALUE(2), 0}, {21600, CALCULATED_VALUE(1)}, {21600, CALCULATED_VALUE(3)}, {CALCULATED_VALUE(2), 21600}, {CALCULATED_VALUE(0), 21600}, {0, CALCULATED_VALUE(3)}, {0, CALCULATED_VALUE(1)}
2261 };
2262
2263 const unsigned short OCTAGON_SEGMENTS[] =
2264 {
2265 0x4000, 0x0007, 0x6001, 0x8000
2266 };
2267
2268 const Calculation OCTAGON_CALC[] =
2269 {
2270 {0x6000, PROP_GEO_LEFT, PROP_ADJUST_VAL_FIRST, 0}, {0x6000, PROP_GEO_TOP, PROP_ADJUST_VAL_FIRST, 0}, {0xA000, PROP_GEO_RIGHT, 0, PROP_ADJUST_VAL_FIRST}, {0xA000, PROP_GEO_BOTTOM, 0, PROP_ADJUST_VAL_FIRST}, {0x2001, PROP_ADJUST_VAL_FIRST, 1, 2}, {0x6000, PROP_GEO_LEFT, OTHER_CALC_VAL | 4, 0}, {0x6000, PROP_GEO_TOP, OTHER_CALC_VAL | 4, 0}, {0xA000, PROP_GEO_RIGHT, 0, OTHER_CALC_VAL | 4}, {0xA000, PROP_GEO_BOTTOM, 0, OTHER_CALC_VAL | 4}
2271 };
2272
2273 const TextRectangle OCTAGON_TRS[] =
2274 {
2275 { {CALCULATED_VALUE(5), CALCULATED_VALUE(6)}, {CALCULATED_VALUE(7), CALCULATED_VALUE(8)} }
2276 };
2277
2278 const int OCTAGON_DEFAULT_ADJUST[] =
2279 {
2280 5000
2281 };
2282
2283 const Vertex OCTAGON_GLUE_POINTS[] =
2284 {
2285 {10800, 0}, {0, 10800}, {10800, 21600}, {21600, 10800}
2286 };
2287
2288 const CustomShape CS_OCTAGON(
2289 OCTAGON_VERTICES, sizeof(OCTAGON_VERTICES) / sizeof(Vertex),
2290 OCTAGON_SEGMENTS, sizeof(OCTAGON_SEGMENTS) / sizeof(unsigned short),
2291 OCTAGON_CALC, sizeof(OCTAGON_CALC) / sizeof(Calculation),
2292 OCTAGON_DEFAULT_ADJUST, sizeof(OCTAGON_DEFAULT_ADJUST) / sizeof(int),
2293 OCTAGON_TRS, sizeof(OCTAGON_TRS) / sizeof(TextRectangle),
2294 21600, 21600,
2295 OCTAGON_GLUE_POINTS, sizeof(OCTAGON_GLUE_POINTS) / sizeof(Vertex));
2296
2297 const Vertex ROUND_RECTANGLE_VERTICES[] =
2298 {
2299 {CALCULATED_VALUE(7), 0},
2300 {0, CALCULATED_VALUE(8)},
2301 {0, CALCULATED_VALUE(9)},
2302 {CALCULATED_VALUE(7), 21600},
2303 {CALCULATED_VALUE(10), 21600},
2304 {21600, CALCULATED_VALUE(9)},
2305 {21600, CALCULATED_VALUE(8)},
2306 {CALCULATED_VALUE(10), 0}
2307 };
2308
2309 const unsigned short ROUND_RECTANGLE_SEGMENTS[] =
2310 {
2311 0x4000, 0xA701, 0x0001, 0xA801, 0x0001, 0xA701, 0x0001, 0xA801, 0x6000, 0x8000
2312 };
2313
2314 const Calculation ROUND_RECTANGLE_CALC[] =
2315 {
2316 {0x000E, 0, 45, 0}, // 0
2317 {0x6009, PROP_ADJUST_VAL_FIRST, OTHER_CALC_VAL, 0}, // 1
2318 {0x2001, OTHER_CALC_VAL | 1, 3163, 7636}, // 2
2319 {0x6000, PROP_GEO_LEFT, OTHER_CALC_VAL | 2, 0}, // 3
2320 {0x6000, PROP_GEO_TOP, OTHER_CALC_VAL | 2, 0}, // 4
2321 {0xA000, PROP_GEO_RIGHT, 0, OTHER_CALC_VAL | 2}, // 5
2322 {0xA000, PROP_GEO_BOTTOM, 0, OTHER_CALC_VAL | 2}, // 6
2323 {0x6000, PROP_GEO_LEFT, OTHER_CALC_VAL | 13, 0}, // 7
2324 {0x6000, PROP_GEO_TOP, OTHER_CALC_VAL | 14, 0}, // 8
2325 {0xA000, PROP_GEO_BOTTOM, 0, OTHER_CALC_VAL | 14}, // 9
2326 {0xA000, PROP_GEO_RIGHT, 0, OTHER_CALC_VAL | 13}, // 10
2327 {0x2005, ASPECT_RATIO, 1, 0}, // 11
2328 {0x2004, ASPECT_RATIO, 1, 0}, // 12
2329 {0xA001, PROP_ADJUST_VAL_FIRST, 1, OTHER_CALC_VAL | 11}, // 13
2330 {0x6001, PROP_ADJUST_VAL_FIRST, OTHER_CALC_VAL | 12, 1} // 14
2331 };
2332
2333 const TextRectangle ROUND_RECTANGLE_TRS[] =
2334 {
2335 { {CALCULATED_VALUE(3), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(5), CALCULATED_VALUE(6)} }
2336 };
2337
2338 const int ROUND_RECTANGLE_DEFAULT_ADJUST[] =
2339 {
2340 3600
2341 };
2342
2343 const CustomShape CS_ROUND_RECTANGLE(
2344 ROUND_RECTANGLE_VERTICES, sizeof(ROUND_RECTANGLE_VERTICES) / sizeof(Vertex),
2345 ROUND_RECTANGLE_SEGMENTS, sizeof(ROUND_RECTANGLE_SEGMENTS) / sizeof(unsigned short),
2346 ROUND_RECTANGLE_CALC, sizeof(ROUND_RECTANGLE_CALC) / sizeof(Calculation),
2347 ROUND_RECTANGLE_DEFAULT_ADJUST, sizeof(ROUND_RECTANGLE_DEFAULT_ADJUST) / sizeof(int),
2348 ROUND_RECTANGLE_TRS, sizeof(ROUND_RECTANGLE_TRS) / sizeof(TextRectangle),
2349 21600, 21600,
2350 nullptr, 0);
2351
2352 const Vertex STAR_VERTICES[] =
2353 {
2354 {10797, 0}, {8278, 8256}, {0, 8256}, {6722, 13405}, {4198, 21600}, {10797, 16580}, {17401, 21600}, {14878, 13405}, {21600, 8256}, {13321, 8256}, {10797, 0}
2355 };
2356
2357 const TextRectangle STAR_TRS[] =
2358 {
2359 { {6722, 8256}, {14878, 15460} }
2360 };
2361
2362 const CustomShape CS_STAR(
2363 STAR_VERTICES, sizeof(STAR_VERTICES) / sizeof(Vertex),
2364 nullptr, 0,
2365 nullptr, 0,
2366 nullptr, 0,
2367 STAR_TRS, sizeof(STAR_TRS) / sizeof(TextRectangle),
2368 21600, 21600,
2369 nullptr, 0);
2370
2371 const Vertex PLUS_VERTICES[] =
2372 {
2373 {CALCULATED_VALUE(1), 0}, {CALCULATED_VALUE(2), 0}, {CALCULATED_VALUE(2), CALCULATED_VALUE(1)}, {21600, CALCULATED_VALUE(1)}, {21600, CALCULATED_VALUE(3)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(3)}, {CALCULATED_VALUE(2), 21600}, {CALCULATED_VALUE(1), 21600}, {CALCULATED_VALUE(1), CALCULATED_VALUE(3)}, {0, CALCULATED_VALUE(3)}, {0, CALCULATED_VALUE(1)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(1), 0}
2374 };
2375
2376 const Calculation PLUS_CALC[] =
2377 {
2378 {0x2001, PROP_ADJUST_VAL_FIRST, 10799, 10800}, {0x2000, OTHER_CALC_VAL, 0, 0}, {0xA000, PROP_GEO_RIGHT, 0, OTHER_CALC_VAL}, {0xA000, PROP_GEO_BOTTOM, 0, OTHER_CALC_VAL}
2379 };
2380
2381 const TextRectangle PLUS_TRS[] =
2382 {
2383 { {CALCULATED_VALUE(1), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(3)} }
2384 };
2385
2386 const int PLUS_DEFAULT_ADJUST[] =
2387 {
2388 5400
2389 };
2390
2391 const Vertex PLUS_GLUE_POINTS[] =
2392 {
2393 {10800, 0}, {0, 10800}, {10800, 21600}, {21600, 10800}
2394 };
2395
2396 const CustomShape CS_PLUS(
2397 PLUS_VERTICES, sizeof(PLUS_VERTICES) / sizeof(Vertex),
2398 nullptr, 0,
2399 PLUS_CALC, sizeof(PLUS_CALC) / sizeof(Calculation),
2400 PLUS_DEFAULT_ADJUST, sizeof(PLUS_DEFAULT_ADJUST) / sizeof(int),
2401 PLUS_TRS, sizeof(PLUS_TRS) / sizeof(TextRectangle),
2402 21600, 21600,
2403 PLUS_GLUE_POINTS, sizeof(PLUS_GLUE_POINTS) / sizeof(Vertex));
2404
2405
2406 const Vertex TRAPEZOID_VERTICES[] =
2407 {
2408 {0, 0}, {21600, 0}, {CALCULATED_VALUE(0), 21600}, {CALCULATED_VALUE(1), 21600}
2409 };
2410
2411 const unsigned short TRAPEZOID_SEGMENTS[] =
2412 {
2413 0x4000, 0x0003, 0x6001, 0x8000
2414 };
2415
2416 const Calculation TRAPEZOID_CALC[] =
2417 {
2418 {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST}, {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2001, PROP_ADJUST_VAL_FIRST, 10, 18}, {0x2000, OTHER_CALC_VAL | 2, 1750, 0}, {0x8000, 21600, 0, OTHER_CALC_VAL | 3}, {0x2001, PROP_ADJUST_VAL_FIRST, 1, 2}, {0x8000, 21600, 0, OTHER_CALC_VAL | 5}
2419 };
2420
2421 const TextRectangle TRAPEZOID_TRS[] =
2422 {
2423 { {CALCULATED_VALUE(3), CALCULATED_VALUE(3)}, {CALCULATED_VALUE(4), CALCULATED_VALUE(4)} }
2424 };
2425
2426 const int TRAPEZOID_DEFAULT_ADJUST[] =
2427 {
2428 5400
2429 };
2430
2431 const Vertex TRAPEZOID_GLUE_POINTS[] =
2432 {
2433 {CALCULATED_VALUE(6), 10800}, {10800, 21600}, {CALCULATED_VALUE(5), 10800}, {10800, 0}
2434 };
2435
2436 const CustomShape CS_TRAPEZOID(
2437 TRAPEZOID_VERTICES, sizeof(TRAPEZOID_VERTICES) / sizeof(Vertex),
2438 TRAPEZOID_SEGMENTS, sizeof(TRAPEZOID_SEGMENTS) / sizeof(unsigned short),
2439 TRAPEZOID_CALC, sizeof(TRAPEZOID_CALC) / sizeof(Calculation),
2440 TRAPEZOID_DEFAULT_ADJUST, sizeof(TRAPEZOID_DEFAULT_ADJUST) / sizeof(int),
2441 TRAPEZOID_TRS, sizeof(TRAPEZOID_TRS) / sizeof(TextRectangle),
2442 21600, 21600,
2443 TRAPEZOID_GLUE_POINTS, sizeof(TRAPEZOID_GLUE_POINTS) / sizeof(Vertex));
2444
2445 const Vertex DIAMOND_VERTICES[] =
2446 {
2447 {10800, 0}, {21600, 10800}, {10800, 21600}, {0, 10800}, {10800, 0}
2448 };
2449
2450 const TextRectangle DIAMOND_TRS[] =
2451 {
2452 { {5400, 5400}, {16200, 16200} }
2453 };
2454
2455 const Vertex DIAMOND_GLUE_POINTS[] =
2456 {
2457 {10800, 0}, {0, 10800}, {10800, 21600}, {21600, 10800}
2458 };
2459
2460 const CustomShape CS_DIAMOND(
2461 DIAMOND_VERTICES, sizeof(DIAMOND_VERTICES) / sizeof(Vertex),
2462 nullptr, 0,
2463 nullptr, 0,
2464 nullptr, 0,
2465 DIAMOND_TRS, sizeof(DIAMOND_TRS) / sizeof(TextRectangle),
2466 21600, 21600,
2467 DIAMOND_GLUE_POINTS, sizeof(DIAMOND_GLUE_POINTS) / sizeof(Vertex));
2468
2469 const Vertex RIGHT_TRIANGLE_VERTICES[] =
2470 {
2471 {0, 0}, {21600, 21600}, {0, 21600}, {0, 0}
2472 };
2473
2474 const TextRectangle RIGHT_TRIANGLE_TRS[] =
2475 {
2476 { {1900, 12700}, {12700, 19700} }
2477 };
2478
2479 const Vertex RIGHT_TRIANGLE_GLUE_POINTS[] =
2480 {
2481 {10800, 0}, {5400, 10800}, {0, 21600}, {10800, 21600}, {21600, 21600}, {16200, 10800}
2482 };
2483
2484 const CustomShape CS_RIGHT_TRIANGLE(
2485 RIGHT_TRIANGLE_VERTICES, sizeof(RIGHT_TRIANGLE_VERTICES) / sizeof(Vertex),
2486 nullptr, 0,
2487 nullptr, 0,
2488 nullptr, 0,
2489 RIGHT_TRIANGLE_TRS, sizeof(RIGHT_TRIANGLE_TRS) / sizeof(TextRectangle),
2490 21600, 21600,
2491 RIGHT_TRIANGLE_GLUE_POINTS, sizeof(RIGHT_TRIANGLE_GLUE_POINTS) / sizeof(Vertex));
2492
2493
2494 const Vertex RECTANGLE_VERTICES[] =
2495 {
2496 {0, 0}, {21600, 0}, {21600, 21600}, {0, 21600}, {0, 0}
2497 };
2498
2499 const CustomShape CS_RECTANGLE(
2500 RECTANGLE_VERTICES, sizeof(RECTANGLE_VERTICES) / sizeof(Vertex),
2501 nullptr, 0,
2502 nullptr, 0,
2503 nullptr, 0,
2504 nullptr, 0,
2505 21600, 21600,
2506 nullptr, 0);
2507
2508 const Vertex ELLIPSE_VERTICES[] =
2509 {
2510 {10800, 10800}, {10800, 10800}, {0, 360}
2511 };
2512
2513 const unsigned short ELLIPSE_SEGMENTS[] =
2514 {
2515 0xA203, 0x6000, 0x8000
2516 };
2517
2518 const TextRectangle ELLIPSE_TRS[] =
2519 {
2520 { {3163, 3163}, {18437, 18437} }
2521 };
2522
2523 const Vertex ELLIPSE_GLUE_PTS[] =
2524 {
2525 {10800, 0}, {3163, 3163}, {0, 10800}, {3163, 18437}, {10800, 21600},
2526 {18437, 18437}, {21600, 10800}, {18437, 3163}
2527 };
2528
2529 const CustomShape CS_ELLIPSE(
2530 ELLIPSE_VERTICES, sizeof(ELLIPSE_VERTICES) / sizeof(Vertex),
2531 ELLIPSE_SEGMENTS, sizeof(ELLIPSE_SEGMENTS) / sizeof(unsigned short),
2532 nullptr, 0,
2533 nullptr, 0,
2534 ELLIPSE_TRS, sizeof(ELLIPSE_TRS) / sizeof(TextRectangle),
2535 21600, 21600,
2536 ELLIPSE_GLUE_PTS, sizeof(ELLIPSE_GLUE_PTS) / sizeof(Vertex));
2537
2538 const Vertex SEAL_4_VERTICES[] =
2539 {
2540 {0, 10800}, {CALCULATED_VALUE(4), CALCULATED_VALUE(4)},
2541 {10800, 0}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)},
2542 {21600, 10800}, {CALCULATED_VALUE(3), CALCULATED_VALUE(3)},
2543 {10800, 21600}, {CALCULATED_VALUE(4), CALCULATED_VALUE(3)},
2544 {0, 10800}
2545 };
2546
2547 const Calculation SEAL_4_CALC[] =
2548 {
2549 {0x0000, 7600, 0, 0},
2550 {0x6001, OTHER_CALC_VAL, PROP_ADJUST_VAL_FIRST, 10800},
2551 {0xA000, OTHER_CALC_VAL, 0, OTHER_CALC_VAL | 1},
2552 {0x4000, 10800, OTHER_CALC_VAL | 2, 0},
2553 {0x8000, 10800, 0, OTHER_CALC_VAL | 2}
2554 };
2555
2556 const TextRectangle SEAL_4_TRS[] =
2557 {
2558 { {CALCULATED_VALUE(4), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(3)} }
2559 };
2560
2561 const int SEAL_4_DEFAULT_ADJUST[] =
2562 {
2563 8100
2564 };
2565
2566 const CustomShape CS_SEAL_4(
2567 SEAL_4_VERTICES, sizeof(SEAL_4_VERTICES) / sizeof(Vertex),
2568 nullptr, 0,
2569 SEAL_4_CALC, sizeof(SEAL_4_CALC) / sizeof(Calculation),
2570 SEAL_4_DEFAULT_ADJUST, sizeof(SEAL_4_DEFAULT_ADJUST) / sizeof(int),
2571 SEAL_4_TRS, sizeof(SEAL_4_TRS) / sizeof(TextRectangle),
2572 21600, 21600,
2573 nullptr, 0);
2574
2575 const Vertex ISOCELES_TRIANGLE_VERTICES[] =
2576 {
2577 {CALCULATED_VALUE(0), 0}, {21600, 21600}, {0, 21600}
2578 };
2579
2580 const unsigned short ISOCELES_TRIANGLE_SEGMENTS[] =
2581 {
2582 0x4000, 0x0002, 0x6001, 0x8000
2583 };
2584
2585 const Calculation ISOCELES_TRIANGLE_CALC[] =
2586 {
2587 {0x4000, 0, PROP_ADJUST_VAL_FIRST, 0},
2588 {0x2001, PROP_ADJUST_VAL_FIRST, 1, 2},
2589 {0x2000, OTHER_CALC_VAL | 1, 10800, 0},
2590 {0x2001, PROP_ADJUST_VAL_FIRST, 2, 3},
2591 {0x2000, OTHER_CALC_VAL | 3, 7200, 0},
2592 {0x8000, 21600, 0, OTHER_CALC_VAL},
2593 {0x2001, OTHER_CALC_VAL | 5, 1, 2},
2594 {0x8000, 21600, 0, OTHER_CALC_VAL | 6}
2595 };
2596
2597 const TextRectangle ISOCELES_TRIANGLE_TRS[] =
2598 {
2599 { {CALCULATED_VALUE(1), 10800}, {CALCULATED_VALUE(2), 18000} },
2600 { {CALCULATED_VALUE(3), 7200}, {CALCULATED_VALUE(4), 21600} }
2601 };
2602
2603 const Vertex ISOCELES_TRIANGLE_GLUE_POINTS[] =
2604 {
2605 {10800, 0}, {CALCULATED_VALUE(1), 10800},
2606 {0, 21600}, {10800, 21600},
2607 {21600, 21600}, {CALCULATED_VALUE(7), 10800}
2608 };
2609
2610 const int ISOCELES_TRIANGLE_DEFAULT_ADJUST[] =
2611 {
2612 10800
2613 };
2614
2615 const CustomShape CS_ISOCELES_TRIANGLE(
2616 ISOCELES_TRIANGLE_VERTICES, sizeof(ISOCELES_TRIANGLE_VERTICES) / sizeof(Vertex),
2617 ISOCELES_TRIANGLE_SEGMENTS, sizeof(ISOCELES_TRIANGLE_SEGMENTS) / sizeof(unsigned short),
2618 ISOCELES_TRIANGLE_CALC, sizeof(ISOCELES_TRIANGLE_CALC) / sizeof(Calculation),
2619 ISOCELES_TRIANGLE_DEFAULT_ADJUST, sizeof(ISOCELES_TRIANGLE_DEFAULT_ADJUST) / sizeof(int),
2620 ISOCELES_TRIANGLE_TRS, sizeof(ISOCELES_TRIANGLE_TRS) / sizeof(TextRectangle),
2621 21600, 21600,
2622 ISOCELES_TRIANGLE_GLUE_POINTS, sizeof(ISOCELES_TRIANGLE_GLUE_POINTS) / sizeof(Vertex));
2623
2624 const Vertex PARALLELOGRAM_VERTICES[] =
2625 {
2626 {CALCULATED_VALUE(0), 0}, {21600, 0}, {CALCULATED_VALUE(1), 21600}, {0, 21600}
2627 };
2628
2629 const unsigned short PARALLELOGRAM_SEGMENTS[] =
2630 {
2631 0x4000, 0x003, 0x6001, 0x8000
2632 };
2633
2634 const Calculation PARALLELOGRAM_CALC[] =
2635 {
2636 {0x4000, 0, PROP_ADJUST_VAL_FIRST, 0}, {0x8000, 0, 21600, PROP_ADJUST_VAL_FIRST}, {0x2001, PROP_ADJUST_VAL_FIRST, 10, 24}, {0x2000, OTHER_CALC_VAL | 2, 1750, 0}, {0x8000, 21600, 0, OTHER_CALC_VAL | 3}, {0x2001, OTHER_CALC_VAL, 1, 2}, {0x4000, 10800, OTHER_CALC_VAL | 5, 0}, {0x2000, OTHER_CALC_VAL, 0, 10800}, {0x6006, OTHER_CALC_VAL | 7, OTHER_CALC_VAL | 0xC, 21600}, {0x8000, 21600, 0, OTHER_CALC_VAL | 5}, {0x8001, 21600, 10800, OTHER_CALC_VAL}, {0x8000, 21600, 0, OTHER_CALC_VAL | 0xC}
2637 };
2638
2639 const TextRectangle PARALLELOGRAM_TRS[] =
2640 {
2641 { {CALCULATED_VALUE(3), CALCULATED_VALUE(3)}, {CALCULATED_VALUE(4), CALCULATED_VALUE(4)} }
2642 };
2643
2644 const int PARALLELOGRAM_DEFAULT_ADJUST[] =
2645 {
2646 5400
2647 };
2648
2649 const Vertex PARALLELOGRAM_GLUE_POINTS[] =
2650 {
2651 {CALCULATED_VALUE(6), 0}, {10800, CALCULATED_VALUE(8)}, {CALCULATED_VALUE(11), 10800}, {CALCULATED_VALUE(9), 21600}, {10800, CALCULATED_VALUE(10)}, {CALCULATED_VALUE(5), 10800}
2652 };
2653
2654 const CustomShape CS_PARALLELOGRAM(
2655 PARALLELOGRAM_VERTICES, sizeof(PARALLELOGRAM_VERTICES) / sizeof(Vertex),
2656 PARALLELOGRAM_SEGMENTS, sizeof(PARALLELOGRAM_SEGMENTS) / sizeof(unsigned short),
2657 PARALLELOGRAM_CALC, sizeof(PARALLELOGRAM_CALC) / sizeof(Calculation),
2658 PARALLELOGRAM_DEFAULT_ADJUST, sizeof(PARALLELOGRAM_DEFAULT_ADJUST) / sizeof(int),
2659 PARALLELOGRAM_TRS, sizeof(PARALLELOGRAM_TRS) / sizeof(TextRectangle),
2660 21600, 21600,
2661 PARALLELOGRAM_GLUE_POINTS, sizeof(PARALLELOGRAM_GLUE_POINTS) / sizeof(Vertex));
2662
2663 const Vertex HEXAGON_VERTICES[] =
2664 {
2665 {CALCULATED_VALUE(0), 0}, {CALCULATED_VALUE(1), 0}, {21600, 10800}, {CALCULATED_VALUE(1), 21600}, {CALCULATED_VALUE(0), 21600}, {0, 10800}
2666 };
2667
2668 const unsigned short HEXAGON_SEGMENTS[] =
2669 {
2670 0x4000, 0x0005, 0x6001, 0x8000
2671 };
2672
2673 const Calculation HEXAGON_CALC[] =
2674 {
2675 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST}, {0x2001, PROP_ADJUST_VAL_FIRST, 100, 234}, {0x2000, OTHER_CALC_VAL | 2, 1700, 0}, {0x8000, 21600, 0, OTHER_CALC_VAL | 3}
2676 };
2677
2678 const TextRectangle HEXAGON_TRS[] =
2679 {
2680 { {CALCULATED_VALUE(3), CALCULATED_VALUE(3)}, {CALCULATED_VALUE(4), CALCULATED_VALUE(4)} }
2681 };
2682
2683 const int HEXAGON_DEFAULT_ADJUST[] =
2684 {
2685 5400
2686 };
2687
2688 const Vertex HEXAGON_GLUE_POINTS[] =
2689 {
2690 {10800, 0}, {0, 10800}, {10800, 21600}, {21600, 10800}
2691 };
2692
2693 const CustomShape CS_HEXAGON(
2694 HEXAGON_VERTICES, sizeof(HEXAGON_VERTICES) / sizeof(Vertex),
2695 HEXAGON_SEGMENTS, sizeof(HEXAGON_SEGMENTS) / sizeof(unsigned short),
2696 HEXAGON_CALC, sizeof(HEXAGON_CALC) / sizeof(Calculation),
2697 HEXAGON_DEFAULT_ADJUST, sizeof(HEXAGON_DEFAULT_ADJUST) / sizeof(int),
2698 HEXAGON_TRS, sizeof(HEXAGON_TRS) / sizeof(TextRectangle),
2699 21600, 21600,
2700 HEXAGON_GLUE_POINTS, sizeof(HEXAGON_GLUE_POINTS) / sizeof(Vertex));
2701
2702 const Vertex FLOW_CHART_SUMMING_JUNCTION_VERTICES[] =
2703 {
2704 {10800, 10800}, {10800, 10800}, {0, 360}, {3100, 3100}, {18500, 18500}, {3100, 18500}, {18500, 3100}
2705 };
2706
2707 const unsigned short FLOW_CHART_SUMMING_JUNCTION_SEGMENTS[] =
2708 {
2709 0xa203, 0x6000, 0x8000, 0x4000, 0x0001, 0x8000, 0x4000, 0x0001, 0x8000
2710 };
2711
2712 const TextRectangle FLOW_CHART_SUMMING_JUNCTION_TRS[] =
2713 {
2714 { {3100, 3100}, {18500, 18500} }
2715 };
2716
2717 const Vertex FLOW_CHART_SUMMING_JUNCTION_GLUE_POINTS[] =
2718 {
2719 {10800, 0}, {3163, 3163}, {0, 10800}, {3163, 18437}, {10800, 21600}, {18437, 18437}, {21600, 10800}, {18437, 3163}
2720 };
2721
2722 const CustomShape CS_FLOW_CHART_SUMMING_JUNCTION(
2723 FLOW_CHART_SUMMING_JUNCTION_VERTICES, sizeof(FLOW_CHART_SUMMING_JUNCTION_VERTICES) / sizeof(Vertex),
2724 FLOW_CHART_SUMMING_JUNCTION_SEGMENTS, sizeof(FLOW_CHART_SUMMING_JUNCTION_SEGMENTS) / sizeof(unsigned short),
2725 nullptr, 0,
2726 nullptr, 0,
2727 FLOW_CHART_SUMMING_JUNCTION_TRS, sizeof(FLOW_CHART_SUMMING_JUNCTION_TRS) / sizeof(TextRectangle),
2728 21600, 21600,
2729 FLOW_CHART_SUMMING_JUNCTION_GLUE_POINTS, sizeof(FLOW_CHART_SUMMING_JUNCTION_GLUE_POINTS) / sizeof(Vertex));
2730
2731 const Vertex FLOW_CHART_PREPARATION_VERTICES[] =
2732 {
2733 {4350, 0}, {17250, 0}, {21600, 10800}, {17250, 21600}, {4350, 21600}, {0, 10800}, {4350, 0}
2734 };
2735
2736 const TextRectangle FLOW_CHART_PREPARATION_TRS[] =
2737 {
2738 { {4350, 0}, {17250, 21600} }
2739 };
2740
2741 const Vertex FLOW_CHART_PREPARATION_GLUE_POINTS[] =
2742 {
2743 {10800, 0}, {0, 10800}, {10800, 21600}, {21600, 10800}
2744 };
2745
2746 const CustomShape CS_FLOW_CHART_PREPARATION(
2747 FLOW_CHART_PREPARATION_VERTICES, sizeof(FLOW_CHART_PREPARATION_VERTICES) / sizeof(Vertex),
2748 nullptr, 0,
2749 nullptr, 0,
2750 nullptr, 0,
2751 FLOW_CHART_PREPARATION_TRS, sizeof(FLOW_CHART_PREPARATION_TRS) / sizeof(TextRectangle),
2752 21600, 21600,
2753 FLOW_CHART_PREPARATION_GLUE_POINTS, sizeof(FLOW_CHART_PREPARATION_GLUE_POINTS) / sizeof(Vertex));
2754
2755 const Vertex FLOW_CHART_PUNCHED_TAPE_VERTICES[] =
2756 {
2757 {0, 2230}, {820, 3990}, {3410, 3980}, {5370, 4360}, {7430, 4030}, {10110, 3890}, {10690, 2270}, {11440, 300}, {14200, 160}, {16150, 0}, {18670, 170}, {20690, 390}, {21600, 2230}, {21600, 19420}, {20640, 17510}, {18320, 17490}, {16140, 17240}, {14710, 17370}, {11310, 17510}, {10770, 19430}, {10150, 21150}, {7380, 21290}, {5290, 21600}, {3220, 21250}, {610, 21130}, {0, 19420}
2758 };
2759
2760 const unsigned short FLOW_CHART_PUNCHED_TAPE_SEGMENTS[] =
2761 {
2762 0x4000, 0x2004, 0x0001, 0x2004, 0x6000, 0x8000
2763 };
2764
2765 const TextRectangle FLOW_CHART_PUNCHED_TAPE_TRS[] =
2766 {
2767 { {0, 4360}, {21600, 17240} }
2768 };
2769
2770 const Vertex FLOW_CHART_PUNCHED_TAPE_GLUE_POINTS[] =
2771 {
2772 {10800, 2020}, {0, 10800}, {10800, 19320}, {21600, 10800}
2773 };
2774
2775 const CustomShape CS_FLOW_CHART_PUNCHED_TAPE(
2776 FLOW_CHART_PUNCHED_TAPE_VERTICES, sizeof(FLOW_CHART_PUNCHED_TAPE_VERTICES) / sizeof(Vertex),
2777 FLOW_CHART_PUNCHED_TAPE_SEGMENTS, sizeof(FLOW_CHART_PUNCHED_TAPE_SEGMENTS) / sizeof(unsigned short),
2778 nullptr, 0,
2779 nullptr, 0,
2780 FLOW_CHART_PUNCHED_TAPE_TRS, sizeof(FLOW_CHART_PUNCHED_TAPE_TRS) / sizeof(TextRectangle),
2781 21600, 21600,
2782 FLOW_CHART_PUNCHED_TAPE_GLUE_POINTS, sizeof(FLOW_CHART_PUNCHED_TAPE_GLUE_POINTS) / sizeof(Vertex));
2783
2784 const Vertex FLOW_CHART_PUNCHED_CARD_VERTICES[] =
2785 {
2786 {4300, 0}, {21600, 0}, {21600, 21600}, {0, 21600}, {0, 4300}, {4300, 0}
2787 };
2788
2789 const TextRectangle FLOW_CHART_PUNCHED_CARD_TRS[] =
2790 {
2791 { {0, 4300}, {21600, 21600} }
2792 };
2793
2794 const Vertex FLOW_CHART_PUNCHED_CARD_GLUE_POINTS[] =
2795 {
2796 {10800, 0}, {0, 10800}, {10800, 21600}, {21600, 10800}
2797 };
2798
2799 const CustomShape CS_FLOW_CHART_PUNCHED_CARD(
2800 FLOW_CHART_PUNCHED_CARD_VERTICES, sizeof(FLOW_CHART_PUNCHED_CARD_VERTICES) / sizeof(Vertex),
2801 nullptr, 0,
2802 nullptr, 0,
2803 nullptr, 0,
2804 FLOW_CHART_PUNCHED_CARD_TRS, sizeof(FLOW_CHART_PUNCHED_CARD_TRS) / sizeof(TextRectangle),
2805 21600, 21600,
2806 FLOW_CHART_PUNCHED_CARD_GLUE_POINTS, sizeof(FLOW_CHART_PUNCHED_CARD_GLUE_POINTS) / sizeof(Vertex));
2807
2808 const Vertex FLOW_CHART_CONNECTOR_VERTICES[] =
2809 {
2810 {10800, 10800}, {10800, 10800}, {0, 360}
2811 };
2812
2813 const unsigned short FLOW_CHART_CONNECTOR_SEGMENTS[] =
2814 {
2815 0xa203, 0x6000, 0x8000
2816 };
2817
2818 const TextRectangle FLOW_CHART_CONNECTOR_TRS[] =
2819 {
2820 { {3180, 3180}, {18420, 18420} }
2821 };
2822
2823 const Vertex FLOW_CHART_CONNECTOR_GLUE_POINTS[] =
2824 {
2825 {10800, 0}, {3163, 3163}, {0, 10800}, {3163, 18437}, {10800, 21600}, {18437, 18437}, {21600, 10800}, {18437, 3163}
2826 };
2827
2828 const CustomShape CS_FLOW_CHART_CONNECTOR(
2829 FLOW_CHART_CONNECTOR_VERTICES, sizeof(FLOW_CHART_CONNECTOR_VERTICES) / sizeof(Vertex),
2830 FLOW_CHART_CONNECTOR_SEGMENTS, sizeof(FLOW_CHART_CONNECTOR_SEGMENTS) / sizeof(unsigned short),
2831 nullptr, 0,
2832 nullptr, 0,
2833 FLOW_CHART_CONNECTOR_TRS, sizeof(FLOW_CHART_CONNECTOR_TRS) / sizeof(TextRectangle),
2834 21600, 21600,
2835 FLOW_CHART_CONNECTOR_GLUE_POINTS, sizeof(FLOW_CHART_CONNECTOR_GLUE_POINTS) / sizeof(Vertex));
2836
2837 const Vertex FLOW_CHART_MANUAL_OPERATION_VERTICES[] =
2838 {
2839 {0, 0}, {21600, 0}, {17250, 21600}, {4350, 21600}, {0, 0}
2840 };
2841
2842 const TextRectangle FLOW_CHART_MANUAL_OPERATION_TRS[] =
2843 {
2844 { {4350, 0}, {17250, 21600} }
2845 };
2846
2847 const Vertex FLOW_CHART_MANUAL_OPERATION_GLUE_POINTS[] =
2848 {
2849 {10800, 0}, {2160, 10800}, {10800, 21600}, {19440, 10800}
2850 };
2851
2852 const CustomShape CS_FLOW_CHART_MANUAL_OPERATION(
2853 FLOW_CHART_MANUAL_OPERATION_VERTICES, sizeof(FLOW_CHART_MANUAL_OPERATION_VERTICES) / sizeof(Vertex),
2854 nullptr, 0,
2855 nullptr, 0,
2856 nullptr, 0,
2857 FLOW_CHART_MANUAL_OPERATION_TRS, sizeof(FLOW_CHART_MANUAL_OPERATION_TRS) / sizeof(TextRectangle),
2858 21600, 21600,
2859 FLOW_CHART_MANUAL_OPERATION_GLUE_POINTS, sizeof(FLOW_CHART_MANUAL_OPERATION_GLUE_POINTS) / sizeof(Vertex));
2860
2861 const Vertex FLOW_CHART_MANUAL_INPUT_VERTICES[] =
2862 {
2863 {0, 4300}, {21600, 0}, {21600, 21600}, {0, 21600}, {0, 4300}
2864 };
2865
2866 const TextRectangle FLOW_CHART_MANUAL_INPUT_TRS[] =
2867 {
2868 { {0, 4300}, {21600, 21600} }
2869 };
2870
2871 const Vertex FLOW_CHART_MANUAL_INPUT_GLUE_POINTS[] =
2872 {
2873 {10800, 2150}, {0, 10800}, {10800, 19890}, {21600, 10800}
2874 };
2875
2876 const CustomShape CS_FLOW_CHART_MANUAL_INPUT(
2877 FLOW_CHART_MANUAL_INPUT_VERTICES, sizeof(FLOW_CHART_MANUAL_INPUT_VERTICES) / sizeof(Vertex),
2878 nullptr, 0,
2879 nullptr, 0,
2880 nullptr, 0,
2881 FLOW_CHART_MANUAL_INPUT_TRS, sizeof(FLOW_CHART_MANUAL_INPUT_TRS) / sizeof(TextRectangle),
2882 21600, 21600,
2883 FLOW_CHART_MANUAL_INPUT_GLUE_POINTS, sizeof(FLOW_CHART_MANUAL_INPUT_GLUE_POINTS) / sizeof(Vertex));
2884
2885
2886 const Vertex FLOW_CHART_OR_VERTICES[] =
2887 {
2888 {10800, 10800}, {10800, 10800}, {0, 360}, {0, 10800}, {21600, 10800}, {10800, 0}, {10800, 21600}
2889 };
2890
2891 const unsigned short FLOW_CHART_OR_SEGMENTS[] =
2892 {
2893 0xa203, 0x6000, 0x8000, 0x4000, 0x0001, 0x8000, 0x4000, 0x0001, 0x8000
2894 };
2895
2896 const TextRectangle FLOW_CHART_OR_TRS[] =
2897 {
2898 { {3100, 3100}, {18500, 18500} }
2899 };
2900
2901 const Vertex FLOW_CHART_OR_GLUE_POINTS[] =
2902 {
2903 {10800, 0}, {3163, 3163}, {0, 10800}, {3163, 18437}, {10800, 21600}, {18437, 18437}, {21600, 10800}, {18437, 3163}
2904 };
2905
2906 const CustomShape CS_FLOW_CHART_OR(
2907 FLOW_CHART_OR_VERTICES, sizeof(FLOW_CHART_OR_VERTICES) / sizeof(Vertex),
2908 FLOW_CHART_OR_SEGMENTS, sizeof(FLOW_CHART_OR_SEGMENTS) / sizeof(unsigned short),
2909 nullptr, 0,
2910 nullptr, 0,
2911 FLOW_CHART_OR_TRS, sizeof(FLOW_CHART_OR_TRS) / sizeof(TextRectangle),
2912 21600, 21600,
2913 FLOW_CHART_OR_GLUE_POINTS, sizeof(FLOW_CHART_OR_GLUE_POINTS) / sizeof(Vertex));
2914
2915 const Vertex FLOW_CHART_COLLATE_VERTICES[] =
2916 {
2917 {0, 0}, {21600, 21600}, {0, 21600}, {21600, 0}, {0, 0}
2918 };
2919
2920 const TextRectangle FLOW_CHART_COLLATE_TRS[] =
2921 {
2922 { {5400, 5400}, {16200, 16200} }
2923 };
2924
2925 const Vertex FLOW_CHART_COLLATE_GLUE_POINTS[] =
2926 {
2927 {10800, 0}, {10800, 10800}, {10800, 21600}
2928 };
2929
2930 const CustomShape CS_FLOW_CHART_COLLATE(
2931 FLOW_CHART_COLLATE_VERTICES, sizeof(FLOW_CHART_COLLATE_VERTICES) / sizeof(Vertex),
2932 nullptr, 0,
2933 nullptr, 0,
2934 nullptr, 0,
2935 FLOW_CHART_COLLATE_TRS, sizeof(FLOW_CHART_COLLATE_TRS) / sizeof(TextRectangle),
2936 21600, 21600,
2937 FLOW_CHART_COLLATE_GLUE_POINTS, sizeof(FLOW_CHART_COLLATE_GLUE_POINTS) / sizeof(Vertex));
2938
2939 const Vertex FLOW_CHART_SORT_VERTICES[] =
2940 {
2941 {0, 10800}, {10800, 0}, {21600, 10800}, {10800, 21600}, {0, 10800}, {21600, 10800}
2942 };
2943
2944 const unsigned short FLOW_CHART_SORT_SEGMENTS[] =
2945 {
2946 0x4000, 0x0003, 0x6000, 0x8000, 0x4000, 0x0001, 0x8000
2947 };
2948
2949 const TextRectangle FLOW_CHART_SORT_TRS[] =
2950 {
2951 { {5400, 5400}, {16200, 16200} }
2952 };
2953
2954 const CustomShape CS_FLOW_CHART_SORT(
2955 FLOW_CHART_SORT_VERTICES, sizeof(FLOW_CHART_SORT_VERTICES) / sizeof(Vertex),
2956 FLOW_CHART_SORT_SEGMENTS, sizeof(FLOW_CHART_SORT_SEGMENTS) / sizeof(unsigned short),
2957 nullptr, 0,
2958 nullptr, 0,
2959 FLOW_CHART_SORT_TRS, sizeof(FLOW_CHART_SORT_TRS) / sizeof(TextRectangle),
2960 21600, 21600,
2961 nullptr, 0);
2962
2963 const Vertex FLOW_CHART_EXTRACT_VERTICES[] =
2964 {
2965 {10800, 0}, {21600, 21600}, {0, 21600}, {10800, 0}
2966 };
2967
2968 const TextRectangle FLOW_CHART_EXTRACT_TRS[] =
2969 {
2970 { {5400, 10800}, {16200, 21600} }
2971 };
2972
2973 const Vertex FLOW_CHART_EXTRACT_GLUE_POINTS[] =
2974 {
2975 {10800, 0}, {5400, 10800}, {10800, 21600}, {16200, 10800}
2976 };
2977
2978 const CustomShape CS_FLOW_CHART_EXTRACT(
2979 FLOW_CHART_EXTRACT_VERTICES, sizeof(FLOW_CHART_EXTRACT_VERTICES) / sizeof(Vertex),
2980 nullptr, 0,
2981 nullptr, 0,
2982 nullptr, 0,
2983 FLOW_CHART_EXTRACT_TRS, sizeof(FLOW_CHART_EXTRACT_TRS) / sizeof(TextRectangle),
2984 21600, 21600,
2985 FLOW_CHART_EXTRACT_GLUE_POINTS, sizeof(FLOW_CHART_EXTRACT_GLUE_POINTS) / sizeof(Vertex));
2986
2987 const Vertex FLOW_CHART_MERGE_VERTICES[] =
2988 {
2989 {0, 0}, {21600, 0}, {10800, 21600}, {0, 0}
2990 };
2991
2992 const TextRectangle FLOW_CHART_MERGE_TRS[] =
2993 {
2994 { {5400, 0}, {16200, 10800} }
2995 };
2996
2997 const Vertex FLOW_CHART_MERGE_GLUE_POINTS[] =
2998 {
2999 {10800, 0}, {5400, 10800}, {10800, 21600}, {16200, 10800}
3000 };
3001
3002 const CustomShape CS_FLOW_CHART_MERGE(
3003 FLOW_CHART_MERGE_VERTICES, sizeof(FLOW_CHART_MERGE_VERTICES) / sizeof(Vertex),
3004 nullptr, 0,
3005 nullptr, 0,
3006 nullptr, 0,
3007 FLOW_CHART_MERGE_TRS, sizeof(FLOW_CHART_MERGE_TRS) / sizeof(TextRectangle),
3008 21600, 21600,
3009 FLOW_CHART_MERGE_GLUE_POINTS, sizeof(FLOW_CHART_MERGE_GLUE_POINTS) / sizeof(Vertex));
3010
3011 const Vertex FLOW_CHART_ONLINE_STORAGE_VERTICES[] =
3012 {
3013 {3600, 21600}, {0, 10800}, {3600, 0}, {21600, 0}, {18000, 10800}, {21600, 21600}
3014 };
3015
3016 const unsigned short FLOW_CHART_ONLINE_STORAGE_SEGMENTS[] =
3017 {
3018 0x4000, 0xa702, 0x0001, 0xa702, 0x6000, 0x8000
3019 };
3020
3021 const TextRectangle FLOW_CHART_ONLINE_STORAGE_TRS[] =
3022 {
3023 { {3600, 0}, {18000, 21600} }
3024 };
3025
3026 const Vertex FLOW_CHART_ONLINE_STORAGE_GLUE_POINTS[] =
3027 {
3028 {10800, 0}, {0, 10800}, {10800, 21600}, {18000, 10800}
3029 };
3030
3031 const CustomShape CS_FLOW_CHART_ONLINE_STORAGE(
3032 FLOW_CHART_ONLINE_STORAGE_VERTICES, sizeof(FLOW_CHART_ONLINE_STORAGE_VERTICES) / sizeof(Vertex),
3033 FLOW_CHART_ONLINE_STORAGE_SEGMENTS, sizeof(FLOW_CHART_ONLINE_STORAGE_SEGMENTS) / sizeof(unsigned short),
3034 nullptr, 0,
3035 nullptr, 0,
3036 FLOW_CHART_ONLINE_STORAGE_TRS, sizeof(FLOW_CHART_ONLINE_STORAGE_TRS) / sizeof(TextRectangle),
3037 21600, 21600,
3038 FLOW_CHART_ONLINE_STORAGE_GLUE_POINTS, sizeof(FLOW_CHART_ONLINE_STORAGE_GLUE_POINTS) / sizeof(Vertex));
3039
3040 const Vertex FLOW_CHART_MAGNETIC_TAPE_VERTICES[] =
3041 {
3042 {20980, 18150}, {20980, 21600}, {10670, 21600}, {4770, 21540}, {0, 16720}, {0, 10800}, {0, 4840}, {4840, 0}, {10800, 0}, {16740, 0}, {21600, 4840}, {21600, 10800}, {21600, 13520}, {20550, 16160}, {18670, 18170}
3043 };
3044
3045 const unsigned short FLOW_CHART_MAGNETIC_TAPE_SEGMENTS[] =
3046 {
3047 0x4000, 0x0002, 0x2004, 0x6000, 0x8000
3048 };
3049
3050 const TextRectangle FLOW_CHART_MAGNETIC_TAPE_TRS[] =
3051 {
3052 { {3100, 3100}, {18500, 18500} }
3053 };
3054
3055 const Vertex FLOW_CHART_MAGNETIC_TAPE_GLUE_POINTS[] =
3056 {
3057 {10800, 0}, {0, 10800}, {10800, 21600}, {21600, 10800}
3058 };
3059
3060 const CustomShape CS_FLOW_CHART_MAGNETIC_TAPE(
3061 FLOW_CHART_MAGNETIC_TAPE_VERTICES, sizeof(FLOW_CHART_MAGNETIC_TAPE_VERTICES) / sizeof(Vertex),
3062 FLOW_CHART_MAGNETIC_TAPE_SEGMENTS, sizeof(FLOW_CHART_MAGNETIC_TAPE_SEGMENTS) / sizeof(unsigned short),
3063 nullptr, 0,
3064 nullptr, 0,
3065 FLOW_CHART_MAGNETIC_TAPE_TRS, sizeof(FLOW_CHART_MAGNETIC_TAPE_TRS) / sizeof(TextRectangle),
3066 21600, 21600,
3067 FLOW_CHART_MAGNETIC_TAPE_GLUE_POINTS, sizeof(FLOW_CHART_MAGNETIC_TAPE_GLUE_POINTS) / sizeof(Vertex));
3068
3069 const Vertex FLOW_CHART_MAGNETIC_DISK_VERTICES[] =
3070 {
3071 {0, 3400}, {10800, 0}, {21600, 3400}, {21600, 18200}, {10800, 21600}, {0, 18200}, {0, 3400}, {10800, 6800}, {21600, 3400}
3072 };
3073
3074 const unsigned short FLOW_CHART_MAGNETIC_DISK_SEGMENTS[] =
3075 {
3076 0x4000, 0xa802, 0x0001, 0xa802, 0x6000, 0x8000, 0x4000, 0xa802, 0x8000
3077 };
3078
3079 const TextRectangle FLOW_CHART_MAGNETIC_DISK_TRS[] =
3080 {
3081 { {0, 6800}, {21600, 18200} }
3082 };
3083
3084 const Vertex FLOW_CHART_MAGNETIC_DISK_GLUE_POINTS[] =
3085 {
3086 {10800, 6800}, {10800, 0}, {0, 10800}, {10800, 21600}, {21600, 10800}
3087 };
3088
3089 const CustomShape CS_FLOW_CHART_MAGNETIC_DISK(
3090 FLOW_CHART_MAGNETIC_DISK_VERTICES, sizeof(FLOW_CHART_MAGNETIC_DISK_VERTICES) / sizeof(Vertex),
3091 FLOW_CHART_MAGNETIC_DISK_SEGMENTS, sizeof(FLOW_CHART_MAGNETIC_DISK_SEGMENTS) / sizeof(unsigned short),
3092 nullptr, 0,
3093 nullptr, 0,
3094 FLOW_CHART_MAGNETIC_DISK_TRS, sizeof(FLOW_CHART_MAGNETIC_DISK_TRS) / sizeof(TextRectangle),
3095 21600, 21600,
3096 FLOW_CHART_MAGNETIC_DISK_GLUE_POINTS, sizeof(FLOW_CHART_MAGNETIC_DISK_GLUE_POINTS) / sizeof(Vertex));
3097
3098 const Vertex FLOW_CHART_MAGNETIC_DRUM_VERTICES[] =
3099 {
3100 {18200, 0}, {21600, 10800}, {18200, 21600}, {3400, 21600}, {0, 10800}, {3400, 0}, {18200, 0}, {14800, 10800}, {18200, 21600}
3101 };
3102
3103 const unsigned short FLOW_CHART_MAGNETIC_DRUM_SEGMENTS[] =
3104 {
3105 0x4000, 0xa702, 0x0001, 0xa702, 0x6000, 0x8000, 0x4000, 0xa702, 0x8000
3106 };
3107
3108 const TextRectangle FLOW_CHART_MAGNETIC_DRUM_TRS[] =
3109 {
3110 { {3400, 0}, {14800, 21600} }
3111 };
3112
3113 const Vertex FLOW_CHART_MAGNETIC_DRUM_GLUE_POINTS[] =
3114 {
3115 {10800, 0}, {0, 10800}, {10800, 21600}, {14800, 10800}, {21600, 10800}
3116 };
3117
3118 const CustomShape CS_FLOW_CHART_MAGNETIC_DRUM(
3119 FLOW_CHART_MAGNETIC_DRUM_VERTICES, sizeof(FLOW_CHART_MAGNETIC_DRUM_VERTICES) / sizeof(Vertex),
3120 FLOW_CHART_MAGNETIC_DRUM_SEGMENTS, sizeof(FLOW_CHART_MAGNETIC_DRUM_SEGMENTS) / sizeof(unsigned short),
3121 nullptr, 0,
3122 nullptr, 0,
3123 FLOW_CHART_MAGNETIC_DRUM_TRS, sizeof(FLOW_CHART_MAGNETIC_DRUM_TRS) / sizeof(TextRectangle),
3124 21600, 21600,
3125 FLOW_CHART_MAGNETIC_DRUM_GLUE_POINTS, sizeof(FLOW_CHART_MAGNETIC_DRUM_GLUE_POINTS) / sizeof(Vertex));
3126
3127 const Vertex FLOW_CHART_DIPSLAY_VERTICES[] =
3128 {
3129 {3600, 0}, {17800, 0}, {21600, 10800}, {17800, 21600}, {3600, 21600}, {0, 10800}
3130 };
3131
3132 const unsigned short FLOW_CHART_DIPSLAY_SEGMENTS[] =
3133 {
3134 0x4000, 0x0001, 0xa702, 0x0002, 0x6000, 0x8000
3135 };
3136
3137 const TextRectangle FLOW_CHART_DIPSLAY_TRS[] =
3138 {
3139 { {3600, 0}, {17800, 21600} }
3140 };
3141
3142 const Vertex FLOW_CHART_DIPSLAY_GLUE_POINTS[] =
3143 {
3144 {10800, 0}, {0, 10800}, {10800, 21600}, {21600, 10800}
3145 };
3146
3147 const CustomShape CS_FLOW_CHART_DIPSLAY(
3148 FLOW_CHART_DIPSLAY_VERTICES, sizeof(FLOW_CHART_DIPSLAY_VERTICES) / sizeof(Vertex),
3149 FLOW_CHART_DIPSLAY_SEGMENTS, sizeof(FLOW_CHART_DIPSLAY_SEGMENTS) / sizeof(unsigned short),
3150 nullptr, 0,
3151 nullptr, 0,
3152 FLOW_CHART_DIPSLAY_TRS, sizeof(FLOW_CHART_DIPSLAY_TRS) / sizeof(TextRectangle),
3153 21600, 21600,
3154 FLOW_CHART_DIPSLAY_GLUE_POINTS, sizeof(FLOW_CHART_DIPSLAY_GLUE_POINTS) / sizeof(Vertex));
3155
3156 const Vertex FLOW_CHART_DELAY_VERTICES[] =
3157 {
3158 {10800, 0}, {21600, 10800}, {10800, 21600}, {0, 21600}, {0, 0}
3159 };
3160
3161 const unsigned short FLOW_CHART_DELAY_SEGMENTS[] =
3162 {
3163 0x4000, 0xa702, 0x0002, 0x6000, 0x8000
3164 };
3165
3166 const TextRectangle FLOW_CHART_DELAY_TRS[] =
3167 {
3168 { {0, 3100}, {18500, 18500} }
3169 };
3170
3171 const Vertex FLOW_CHART_DELAY_GLUE_POINTS[] =
3172 {
3173 {10800, 0}, {0, 10800}, {10800, 21600}, {21600, 10800}
3174 };
3175
3176 const CustomShape CS_FLOW_CHART_DELAY(
3177 FLOW_CHART_DELAY_VERTICES, sizeof(FLOW_CHART_DELAY_VERTICES) / sizeof(Vertex),
3178 FLOW_CHART_DELAY_SEGMENTS, sizeof(FLOW_CHART_DELAY_SEGMENTS) / sizeof(unsigned short),
3179 nullptr, 0,
3180 nullptr, 0,
3181 FLOW_CHART_DELAY_TRS, sizeof(FLOW_CHART_DELAY_TRS) / sizeof(TextRectangle),
3182 21600, 21600,
3183 FLOW_CHART_DELAY_GLUE_POINTS, sizeof(FLOW_CHART_DELAY_GLUE_POINTS) / sizeof(Vertex));
3184
3185 const Vertex TEXT_PLAIN_TEXT_VERTICES[] =
3186 {
3187 {CALCULATED_VALUE(3), 0}, {CALCULATED_VALUE(5), 0}, {CALCULATED_VALUE(6), 21600}, {CALCULATED_VALUE(7), 21600}
3188 };
3189
3190 const unsigned short TEXT_PLAIN_TEXT_SEGMENTS[] =
3191 {
3192 0x4000, 0x0001, 0x8000, 0x4000, 0x0001, 0x8000
3193 };
3194
3195 const Calculation TEXT_PLAIN_TEXT_CALC[] =
3196 {
3197 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 10800}, {0x2001, 0x400, 2, 1}, {0x2003, 0x401, 0, 0}, {0xa006, 0x401, 0, 0x402}, {0x8000, 21600, 0, 0x402}, {0x6006, 0x401, 0x404, 21600}, {0x6006, 0x401, 0x402, 0}, {0xa006, 0x401, 21600, 0x404}
3198 };
3199
3200 const TextRectangle TEXT_PLAIN_TEXT_TRS[] =
3201 {
3202 { {0, 0}, {21600, 21600} }
3203 };
3204
3205 const int TEXT_PLAIN_TEXT_DEFAULT_ADJUST[] =
3206 {
3207 10800
3208 };
3209
3210 const CustomShape CS_TEXT_PLAIN_TEXT(
3211 TEXT_PLAIN_TEXT_VERTICES, sizeof(TEXT_PLAIN_TEXT_VERTICES) / sizeof(Vertex),
3212 TEXT_PLAIN_TEXT_SEGMENTS, sizeof(TEXT_PLAIN_TEXT_SEGMENTS) / sizeof(unsigned short),
3213 TEXT_PLAIN_TEXT_CALC, sizeof(TEXT_PLAIN_TEXT_CALC) / sizeof(Calculation),
3214 TEXT_PLAIN_TEXT_DEFAULT_ADJUST, sizeof(TEXT_PLAIN_TEXT_DEFAULT_ADJUST) / sizeof(int),
3215 TEXT_PLAIN_TEXT_TRS, sizeof(TEXT_PLAIN_TEXT_TRS) / sizeof(TextRectangle),
3216 21600, 21600,
3217 nullptr, 0);
3218
3219 const Vertex TEXT_STOP_VERTICES[] =
3220 {
3221 {0, CALCULATED_VALUE(0)}, {7200, 0}, {14400, 0}, {21600, CALCULATED_VALUE(0)}, {0, CALCULATED_VALUE(1)}, {7200, 21600}, {14400, 21600}, {21600, CALCULATED_VALUE(1)}
3222 };
3223
3224 const unsigned short TEXT_STOP_SEGMENTS[] =
3225 {
3226 0x4000, 0x0003, 0x8000, 0x4000, 0x0003, 0x8000
3227 };
3228
3229 const Calculation TEXT_STOP_CALC[] =
3230 {
3231 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST}
3232 };
3233
3234 const TextRectangle TEXT_STOP_TRS[] =
3235 {
3236 { {0, 0}, {21600, 21600} }
3237 };
3238
3239 const int TEXT_STOP_DEFAULT_ADJUST[] =
3240 {
3241 2700
3242 };
3243
3244 const CustomShape CS_TEXT_STOP(
3245 TEXT_STOP_VERTICES, sizeof(TEXT_STOP_VERTICES) / sizeof(Vertex),
3246 TEXT_STOP_SEGMENTS, sizeof(TEXT_STOP_SEGMENTS) / sizeof(unsigned short),
3247 TEXT_STOP_CALC, sizeof(TEXT_STOP_CALC) / sizeof(Calculation),
3248 TEXT_STOP_DEFAULT_ADJUST, sizeof(TEXT_STOP_DEFAULT_ADJUST) / sizeof(int),
3249 TEXT_STOP_TRS, sizeof(TEXT_STOP_TRS) / sizeof(TextRectangle),
3250 21600, 21600,
3251 nullptr, 0);
3252
3253 const Vertex TEXT_TRIANGLE_VERTICES[] =
3254 {
3255 {0, CALCULATED_VALUE(0)}, {10800, 0}, {21600, CALCULATED_VALUE(0)}, {0, 21600}, {21600, 21600}
3256 };
3257
3258 const unsigned short TEXT_TRIANGLE_SEGMENTS[] =
3259 {
3260 0x4000, 0x0002, 0x8000, 0x4000, 0x0001, 0x8000
3261 };
3262
3263 const Calculation TEXT_TRIANGLE_CALC[] =
3264 {
3265 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}
3266 };
3267
3268 const TextRectangle TEXT_TRIANGLE_TRS[] =
3269 {
3270 { {0, 0}, {21600, 21600} }
3271 };
3272
3273 const int TEXT_TRIANGLE_DEFAULT_ADJUST[] =
3274 {
3275 10800
3276 };
3277
3278 const CustomShape CS_TEXT_TRIANGLE(
3279 TEXT_TRIANGLE_VERTICES, sizeof(TEXT_TRIANGLE_VERTICES) / sizeof(Vertex),
3280 TEXT_TRIANGLE_SEGMENTS, sizeof(TEXT_TRIANGLE_SEGMENTS) / sizeof(unsigned short),
3281 TEXT_TRIANGLE_CALC, sizeof(TEXT_TRIANGLE_CALC) / sizeof(Calculation),
3282 TEXT_TRIANGLE_DEFAULT_ADJUST, sizeof(TEXT_TRIANGLE_DEFAULT_ADJUST) / sizeof(int),
3283 TEXT_TRIANGLE_TRS, sizeof(TEXT_TRIANGLE_TRS) / sizeof(TextRectangle),
3284 21600, 21600,
3285 nullptr, 0);
3286
3287 const Vertex TEXT_TRIANGLE_INVERTED_VERTICES[] =
3288 {
3289 {0, 0}, {21600, 0}, {0, CALCULATED_VALUE(0)}, {10800, 21600}, {21600, CALCULATED_VALUE(0)}
3290 };
3291
3292 const unsigned short TEXT_TRIANGLE_INVERTED_SEGMENTS[] =
3293 {
3294 0x4000, 0x0001, 0x8000, 0x4000, 0x0002, 0x8000
3295 };
3296
3297 const Calculation TEXT_TRIANGLE_INVERTED_CALC[] =
3298 {
3299 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}
3300 };
3301
3302 const TextRectangle TEXT_TRIANGLE_INVERTED_TRS[] =
3303 {
3304 { {0, 0}, {21600, 21600} }
3305 };
3306
3307 const int TEXT_TRIANGLE_INVERTED_DEFAULT_ADJUST[] =
3308 {
3309 10800
3310 };
3311
3312 const CustomShape CS_TEXT_TRIANGLE_INVERTED(
3313 TEXT_TRIANGLE_INVERTED_VERTICES, sizeof(TEXT_TRIANGLE_INVERTED_VERTICES) / sizeof(Vertex),
3314 TEXT_TRIANGLE_INVERTED_SEGMENTS, sizeof(TEXT_TRIANGLE_INVERTED_SEGMENTS) / sizeof(unsigned short),
3315 TEXT_TRIANGLE_INVERTED_CALC, sizeof(TEXT_TRIANGLE_INVERTED_CALC) / sizeof(Calculation),
3316 TEXT_TRIANGLE_INVERTED_DEFAULT_ADJUST, sizeof(TEXT_TRIANGLE_INVERTED_DEFAULT_ADJUST) / sizeof(int),
3317 TEXT_TRIANGLE_INVERTED_TRS, sizeof(TEXT_TRIANGLE_INVERTED_TRS) / sizeof(TextRectangle),
3318 21600, 21600,
3319 nullptr, 0);
3320
3321 const Vertex FLOW_CHART_DISPLAY_VERTICES[] =
3322 {
3323 {3600, 0}, {17800, 0}, {21600, 10800}, {17800, 21600}, {3600, 21600}, {0, 10800}
3324 };
3325
3326 const unsigned short FLOW_CHART_DISPLAY_SEGMENTS[] =
3327 {
3328 0x4000, 0x0001, 0xa702, 0x0002, 0x6000, 0x8000
3329 };
3330
3331 const TextRectangle FLOW_CHART_DISPLAY_TRS[] =
3332 {
3333 { {3600, 0}, {17800, 21600} }
3334 };
3335
3336 const Vertex FLOW_CHART_DISPLAY_GLUE_POINTS[] =
3337 {
3338 {10800, 0}, {0, 10800}, {10800, 21600}, {21600, 10800}
3339 };
3340
3341 const CustomShape CS_FLOW_CHART_DISPLAY(
3342 FLOW_CHART_DISPLAY_VERTICES, sizeof(FLOW_CHART_DISPLAY_VERTICES) / sizeof(Vertex),
3343 FLOW_CHART_DISPLAY_SEGMENTS, sizeof(FLOW_CHART_DISPLAY_SEGMENTS) / sizeof(unsigned short),
3344 nullptr, 0,
3345 nullptr, 0,
3346 FLOW_CHART_DISPLAY_TRS, sizeof(FLOW_CHART_DISPLAY_TRS) / sizeof(TextRectangle),
3347 21600, 21600,
3348 FLOW_CHART_DISPLAY_GLUE_POINTS, sizeof(FLOW_CHART_DISPLAY_GLUE_POINTS) / sizeof(Vertex));
3349
3350 const Vertex TEXT_CHEVRON_VERTICES[] =
3351 {
3352 {0, CALCULATED_VALUE(0)}, {10800, 0}, {21600, CALCULATED_VALUE(0)}, {0, 21600}, {10800, CALCULATED_VALUE(1)}, {21600, 21600}
3353 };
3354
3355 const unsigned short TEXT_CHEVRON_SEGMENTS[] =
3356 {
3357 0x4000, 0x0002, 0x8000, 0x4000, 0x0002, 0x8000
3358 };
3359
3360 const Calculation TEXT_CHEVRON_CALC[] =
3361 {
3362 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST}
3363 };
3364
3365 const TextRectangle TEXT_CHEVRON_TRS[] =
3366 {
3367 { {0, 0}, {21600, 21600} }
3368 };
3369
3370 const int TEXT_CHEVRON_DEFAULT_ADJUST[] =
3371 {
3372 5400
3373 };
3374
3375 const CustomShape CS_TEXT_CHEVRON(
3376 TEXT_CHEVRON_VERTICES, sizeof(TEXT_CHEVRON_VERTICES) / sizeof(Vertex),
3377 TEXT_CHEVRON_SEGMENTS, sizeof(TEXT_CHEVRON_SEGMENTS) / sizeof(unsigned short),
3378 TEXT_CHEVRON_CALC, sizeof(TEXT_CHEVRON_CALC) / sizeof(Calculation),
3379 TEXT_CHEVRON_DEFAULT_ADJUST, sizeof(TEXT_CHEVRON_DEFAULT_ADJUST) / sizeof(int),
3380 TEXT_CHEVRON_TRS, sizeof(TEXT_CHEVRON_TRS) / sizeof(TextRectangle),
3381 21600, 21600,
3382 nullptr, 0);
3383
3384 const Vertex TEXT_CHEVRON_INVERTED_VERTICES[] =
3385 {
3386 {0, 0}, {10800, CALCULATED_VALUE(1)}, {21600, 0}, {0, CALCULATED_VALUE(0)}, {10800, 21600}, {21600, CALCULATED_VALUE(0)}
3387 };
3388
3389 const unsigned short TEXT_CHEVRON_INVERTED_SEGMENTS[] =
3390 {
3391 0x4000, 0x0002, 0x8000, 0x4000, 0x0002, 0x8000
3392 };
3393
3394 const Calculation TEXT_CHEVRON_INVERTED_CALC[] =
3395 {
3396 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST}
3397 };
3398
3399 const TextRectangle TEXT_CHEVRON_INVERTED_TRS[] =
3400 {
3401 { {0, 0}, {21600, 21600} }
3402 };
3403
3404 const int TEXT_CHEVRON_INVERTED_DEFAULT_ADJUST[] =
3405 {
3406 16200
3407 };
3408
3409 const Vertex TEXT_CHEVRON_INVERTED_GLUE_POINTS[] =
3410 {
3411 {0, 0}, {21600, 21600}
3412 };
3413
3414 const CustomShape CS_TEXT_CHEVRON_INVERTED(
3415 TEXT_CHEVRON_INVERTED_VERTICES, sizeof(TEXT_CHEVRON_INVERTED_VERTICES) / sizeof(Vertex),
3416 TEXT_CHEVRON_INVERTED_SEGMENTS, sizeof(TEXT_CHEVRON_INVERTED_SEGMENTS) / sizeof(unsigned short),
3417 TEXT_CHEVRON_INVERTED_CALC, sizeof(TEXT_CHEVRON_INVERTED_CALC) / sizeof(Calculation),
3418 TEXT_CHEVRON_INVERTED_DEFAULT_ADJUST, sizeof(TEXT_CHEVRON_INVERTED_DEFAULT_ADJUST) / sizeof(int),
3419 TEXT_CHEVRON_INVERTED_TRS, sizeof(TEXT_CHEVRON_INVERTED_TRS) / sizeof(TextRectangle),
3420 21600, 21600,
3421 TEXT_CHEVRON_INVERTED_GLUE_POINTS, sizeof(TEXT_CHEVRON_INVERTED_GLUE_POINTS) / sizeof(Vertex));
3422
3423 const Vertex TEXT_RING_OUTSIDE_VERTICES[] =
3424 {
3425 {10800, CALCULATED_VALUE(0)}, {10800, CALCULATED_VALUE(0)}, {180, 359}, {10800, CALCULATED_VALUE(1)}, {10800, CALCULATED_VALUE(0)}, {180, 359}
3426 };
3427
3428 const unsigned short TEXT_RING_OUTSIDE_SEGMENTS[] =
3429 {
3430 0xA203, 0x8000, 0xA203, 0x8000
3431 };
3432
3433 const Calculation TEXT_RING_OUTSIDE_CALC[] =
3434 {
3435 {0x2001, PROP_ADJUST_VAL_FIRST, 1, 2}, {0x8000, 21600, 0, 0x400}
3436 };
3437
3438 const TextRectangle TEXT_RING_OUTSIDE_TRS[] =
3439 {
3440 { {0, 0}, {21600, 21600} }
3441 };
3442
3443 const int TEXT_RING_OUTSIDE_DEFAULT_ADJUST[] =
3444 {
3445 16200
3446 };
3447
3448 const CustomShape CS_TEXT_RING_OUTSIDE(
3449 TEXT_RING_OUTSIDE_VERTICES, sizeof(TEXT_RING_OUTSIDE_VERTICES) / sizeof(Vertex),
3450 TEXT_RING_OUTSIDE_SEGMENTS, sizeof(TEXT_RING_OUTSIDE_SEGMENTS) / sizeof(unsigned short),
3451 TEXT_RING_OUTSIDE_CALC, sizeof(TEXT_RING_OUTSIDE_CALC) / sizeof(Calculation),
3452 TEXT_RING_OUTSIDE_DEFAULT_ADJUST, sizeof(TEXT_RING_OUTSIDE_DEFAULT_ADJUST) / sizeof(int),
3453 TEXT_RING_OUTSIDE_TRS, sizeof(TEXT_RING_OUTSIDE_TRS) / sizeof(TextRectangle),
3454 21600, 21600,
3455 nullptr, 0);
3456
3457 const Vertex TEXT_ARCH_UP_CURVE_VERTICES[] =
3458 {
3459 {0, 0}, {21600, 21600}, {CALCULATED_VALUE(2), CALCULATED_VALUE(3)}, {CALCULATED_VALUE(4), CALCULATED_VALUE(3)}
3460 };
3461
3462 const unsigned short TEXT_ARCH_UP_CURVE_SEGMENTS[] =
3463 {
3464 0xA504, 0x8000
3465 };
3466
3467 const Calculation TEXT_ARCH_UP_CURVE_CALC[] =
3468 {
3469 {0x400a, 10800, PROP_ADJUST_VAL_FIRST, 0}, {0x4009, 10800, PROP_ADJUST_VAL_FIRST, 0}, {0x2000, 0x400, 10800, 0}, {0x2000, 0x401, 10800, 0}, {0x8000, 21600, 0, 0x402}
3470 };
3471
3472 const TextRectangle TEXT_ARCH_UP_CURVE_TRS[] =
3473 {
3474 { {0, 0}, {21600, 21600} }
3475 };
3476
3477 const int TEXT_ARCH_UP_CURVE_DEFAULT_ADJUST[] =
3478 {
3479 180
3480 };
3481
3482 const CustomShape CS_TEXT_ARCH_UP_CURVE(
3483 TEXT_ARCH_UP_CURVE_VERTICES, sizeof(TEXT_ARCH_UP_CURVE_VERTICES) / sizeof(Vertex),
3484 TEXT_ARCH_UP_CURVE_SEGMENTS, sizeof(TEXT_ARCH_UP_CURVE_SEGMENTS) / sizeof(unsigned short),
3485 TEXT_ARCH_UP_CURVE_CALC, sizeof(TEXT_ARCH_UP_CURVE_CALC) / sizeof(Calculation),
3486 TEXT_ARCH_UP_CURVE_DEFAULT_ADJUST, sizeof(TEXT_ARCH_UP_CURVE_DEFAULT_ADJUST) / sizeof(int),
3487 TEXT_ARCH_UP_CURVE_TRS, sizeof(TEXT_ARCH_UP_CURVE_TRS) / sizeof(TextRectangle),
3488 21600, 21600,
3489 nullptr, 0);
3490
3491 const Vertex TEXT_ARCH_UP_POUR_VERTICES[] =
3492 {
3493 {0, 0}, {21600, 21600}, {CALCULATED_VALUE(2), CALCULATED_VALUE(3)}, {CALCULATED_VALUE(4), CALCULATED_VALUE(3)}, {CALCULATED_VALUE(5), CALCULATED_VALUE(5)}, {CALCULATED_VALUE(11), CALCULATED_VALUE(11)}, {CALCULATED_VALUE(8), CALCULATED_VALUE(9)}, {CALCULATED_VALUE(0xa), CALCULATED_VALUE(9)}
3494 };
3495
3496 const unsigned short TEXT_ARCH_UP_POUR_SEGMENTS[] =
3497 {
3498 0xA504, 0x8000, 0xA504, 0x8000
3499 };
3500
3501 const Calculation TEXT_ARCH_UP_POUR_CALC[] =
3502 {
3503 {0x400a, 10800, PROP_ADJUST_VAL_FIRST, 0}, {0x4009, 10800, PROP_ADJUST_VAL_FIRST, 0}, {0x2000, 0x400, 10800, 0}, {0x2000, 0x401, 10800, 0}, {0x8000, 21600, 0, 0x402}, {0x8000, 10800, 0, PROP_ADJUST_VAL_FIRST + 1}, {0x600a, 0x405, PROP_ADJUST_VAL_FIRST, 0}, {0x6009, 0x405, PROP_ADJUST_VAL_FIRST, 0}, {0x2000, 0x406, 10800, 0}, {0x2000, 0x407, 10800, 0}, {0x8000, 21600, 0, 0x408}, {0x8000, 21600, 0, 0x405}
3504 };
3505
3506 const TextRectangle TEXT_ARCH_UP_POUR_TRS[] =
3507 {
3508 { {0, 0}, {21600, 21600} }
3509 };
3510
3511 const int TEXT_ARCH_UP_POUR_DEFAULT_ADJUST[] =
3512 {
3513 180, 5400
3514 };
3515
3516 const CustomShape CS_TEXT_ARCH_UP_POUR(
3517 TEXT_ARCH_UP_POUR_VERTICES, sizeof(TEXT_ARCH_UP_POUR_VERTICES) / sizeof(Vertex),
3518 TEXT_ARCH_UP_POUR_SEGMENTS, sizeof(TEXT_ARCH_UP_POUR_SEGMENTS) / sizeof(unsigned short),
3519 TEXT_ARCH_UP_POUR_CALC, sizeof(TEXT_ARCH_UP_POUR_CALC) / sizeof(Calculation),
3520 TEXT_ARCH_UP_POUR_DEFAULT_ADJUST, sizeof(TEXT_ARCH_UP_POUR_DEFAULT_ADJUST) / sizeof(int),
3521 TEXT_ARCH_UP_POUR_TRS, sizeof(TEXT_ARCH_UP_POUR_TRS) / sizeof(TextRectangle),
3522 21600, 21600,
3523 nullptr, 0);
3524
3525 const Vertex TEXT_ARCH_DOWN_CURVE_VERTICES[] =
3526 {
3527 {0, 0}, {21600, 21600}, {CALCULATED_VALUE(4), CALCULATED_VALUE(3)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(3)}
3528 };
3529
3530 const unsigned short TEXT_ARCH_DOWN_CURVE_SEGMENTS[] =
3531 {
3532 0xA304, 0x8000
3533 };
3534
3535 const Calculation TEXT_ARCH_DOWN_CURVE_CALC[] =
3536 {
3537 {0x400a, 10800, PROP_ADJUST_VAL_FIRST, 0}, {0x4009, 10800, PROP_ADJUST_VAL_FIRST, 0}, {0x2000, 0x400, 10800, 0}, {0x2000, 0x401, 10800, 0}, {0x8000, 21600, 0, 0x402}
3538 };
3539
3540 const TextRectangle TEXT_ARCH_DOWN_CURVE_TRS[] =
3541 {
3542 { {0, 0}, {21600, 21600} }
3543 };
3544
3545 const int TEXT_ARCH_DOWN_CURVE_DEFAULT_ADJUST[] =
3546 {
3547 0
3548 };
3549
3550 const CustomShape CS_TEXT_ARCH_DOWN_CURVE(
3551 TEXT_ARCH_DOWN_CURVE_VERTICES, sizeof(TEXT_ARCH_DOWN_CURVE_VERTICES) / sizeof(Vertex),
3552 TEXT_ARCH_DOWN_CURVE_SEGMENTS, sizeof(TEXT_ARCH_DOWN_CURVE_SEGMENTS) / sizeof(unsigned short),
3553 TEXT_ARCH_DOWN_CURVE_CALC, sizeof(TEXT_ARCH_DOWN_CURVE_CALC) / sizeof(Calculation),
3554 TEXT_ARCH_DOWN_CURVE_DEFAULT_ADJUST, sizeof(TEXT_ARCH_DOWN_CURVE_DEFAULT_ADJUST) / sizeof(int),
3555 TEXT_ARCH_DOWN_CURVE_TRS, sizeof(TEXT_ARCH_DOWN_CURVE_TRS) / sizeof(TextRectangle),
3556 21600, 21600,
3557 nullptr, 0);
3558
3559 const Vertex TEXT_CIRCLE_CURVE_VERTICES[] =
3560 {
3561 {0, 0}, {21600, 21600}, {CALCULATED_VALUE(2), CALCULATED_VALUE(3)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(4)}
3562 };
3563
3564 const unsigned short TEXT_CIRCLE_CURVE_SEGMENTS[] =
3565 {
3566 0xA504, 0x8000
3567 };
3568
3569 const Calculation TEXT_CIRCLE_CURVE_CALC[] =
3570 {
3571 {0x400a, 10800, PROP_ADJUST_VAL_FIRST, 0}, {0x4009, 10800, PROP_ADJUST_VAL_FIRST, 0}, {0x2000, 0x400, 10800, 0}, {0x2000, 0x401, 10800, 0}, {0x8000, 21600, 0, 0x403}
3572 };
3573
3574 const TextRectangle TEXT_CIRCLE_CURVE_TRS[] =
3575 {
3576 { {0, 0}, {21600, 21600} }
3577 };
3578
3579 const int TEXT_CIRCLE_CURVE_DEFAULT_ADJUST[] =
3580 {
3581 -179
3582 };
3583
3584 const CustomShape CS_TEXT_CIRCLE_CURVE(
3585 TEXT_CIRCLE_CURVE_VERTICES, sizeof(TEXT_CIRCLE_CURVE_VERTICES) / sizeof(Vertex),
3586 TEXT_CIRCLE_CURVE_SEGMENTS, sizeof(TEXT_CIRCLE_CURVE_SEGMENTS) / sizeof(unsigned short),
3587 TEXT_CIRCLE_CURVE_CALC, sizeof(TEXT_CIRCLE_CURVE_CALC) / sizeof(Calculation),
3588 TEXT_CIRCLE_CURVE_DEFAULT_ADJUST, sizeof(TEXT_CIRCLE_CURVE_DEFAULT_ADJUST) / sizeof(int),
3589 TEXT_CIRCLE_CURVE_TRS, sizeof(TEXT_CIRCLE_CURVE_TRS) / sizeof(TextRectangle),
3590 21600, 21600,
3591 nullptr, 0);
3592
3593 const Vertex TEXT_BUTTON_CURVE_VERTICES[] =
3594 {
3595 {0, 0}, {21600, 21600}, {CALCULATED_VALUE(2), CALCULATED_VALUE(3)}, {CALCULATED_VALUE(4), CALCULATED_VALUE(3)}, {0, 10800}, {21600, 10800}, {0, 0}, {21600, 21600}, {CALCULATED_VALUE(2), CALCULATED_VALUE(5)}, {CALCULATED_VALUE(4), CALCULATED_VALUE(5)}
3596 };
3597
3598 const unsigned short TEXT_BUTTON_CURVE_SEGMENTS[] =
3599 {
3600 0xA504, 0x8000, 0x4000, 0x0001, 0x8000, 0xA304, 0x8000
3601 };
3602
3603 const Calculation TEXT_BUTTON_CURVE_CALC[] =
3604 {
3605 {0x400a, 10800, PROP_ADJUST_VAL_FIRST, 0}, {0x4009, 10800, PROP_ADJUST_VAL_FIRST, 0}, {0x2000, 0x400, 10800, 0}, {0x2000, 0x401, 10800, 0}, {0x8000, 21600, 0, 0x402}, {0x8000, 21600, 0, 0x403}
3606 };
3607
3608 const TextRectangle TEXT_BUTTON_CURVE_TRS[] =
3609 {
3610 { {0, 0}, {21600, 21600} }
3611 };
3612
3613 const int TEXT_BUTTON_CURVE_DEFAULT_ADJUST[] =
3614 {
3615 180
3616 };
3617
3618 const CustomShape CS_TEXT_BUTTON_CURVE(
3619 TEXT_BUTTON_CURVE_VERTICES, sizeof(TEXT_BUTTON_CURVE_VERTICES) / sizeof(Vertex),
3620 TEXT_BUTTON_CURVE_SEGMENTS, sizeof(TEXT_BUTTON_CURVE_SEGMENTS) / sizeof(unsigned short),
3621 TEXT_BUTTON_CURVE_CALC, sizeof(TEXT_BUTTON_CURVE_CALC) / sizeof(Calculation),
3622 TEXT_BUTTON_CURVE_DEFAULT_ADJUST, sizeof(TEXT_BUTTON_CURVE_DEFAULT_ADJUST) / sizeof(int),
3623 TEXT_BUTTON_CURVE_TRS, sizeof(TEXT_BUTTON_CURVE_TRS) / sizeof(TextRectangle),
3624 21600, 21600,
3625 nullptr, 0);
3626
3627 const Vertex TEXT_ARCH_DOWN_POUR_VERTICES[] =
3628 {
3629 {CALCULATED_VALUE(5), CALCULATED_VALUE(5)}, {CALCULATED_VALUE(11), CALCULATED_VALUE(11)}, {CALCULATED_VALUE(0xa), CALCULATED_VALUE(9)}, {CALCULATED_VALUE(8), CALCULATED_VALUE(9)}, {0, 0}, {21600, 21600}, {CALCULATED_VALUE(4), CALCULATED_VALUE(3)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(3)}
3630 };
3631
3632 const unsigned short TEXT_ARCH_DOWN_POUR_SEGMENTS[] =
3633 {
3634 0xA304, 0x8000, 0xA304, 0x8000
3635 };
3636
3637 const Calculation TEXT_ARCH_DOWN_POUR_CALC[] =
3638 {
3639 {0x400a, 10800, PROP_ADJUST_VAL_FIRST, 0}, {0x4009, 10800, PROP_ADJUST_VAL_FIRST, 0}, {0x2000, 0x400, 10800, 0}, {0x2000, 0x401, 10800, 0}, {0x8000, 21600, 0, 0x402}, {0x8000, 10800, 0, PROP_ADJUST_VAL_FIRST + 1}, {0x600a, 0x405, PROP_ADJUST_VAL_FIRST, 0}, {0x6009, 0x405, PROP_ADJUST_VAL_FIRST, 0}, {0x2000, 0x406, 10800, 0}, {0x2000, 0x407, 10800, 0}, {0x8000, 21600, 0, 0x408}, {0x8000, 21600, 0, 0x405}
3640 };
3641
3642 const TextRectangle TEXT_ARCH_DOWN_POUR_TRS[] =
3643 {
3644 { {0, 0}, {21600, 21600} }
3645 };
3646
3647 const int TEXT_ARCH_DOWN_POUR_DEFAULT_ADJUST[] =
3648 {
3649 0, 5400
3650 };
3651
3652 const CustomShape CS_TEXT_ARCH_DOWN_POUR(
3653 TEXT_ARCH_DOWN_POUR_VERTICES, sizeof(TEXT_ARCH_DOWN_POUR_VERTICES) / sizeof(Vertex),
3654 TEXT_ARCH_DOWN_POUR_SEGMENTS, sizeof(TEXT_ARCH_DOWN_POUR_SEGMENTS) / sizeof(unsigned short),
3655 TEXT_ARCH_DOWN_POUR_CALC, sizeof(TEXT_ARCH_DOWN_POUR_CALC) / sizeof(Calculation),
3656 TEXT_ARCH_DOWN_POUR_DEFAULT_ADJUST, sizeof(TEXT_ARCH_DOWN_POUR_DEFAULT_ADJUST) / sizeof(int),
3657 TEXT_ARCH_DOWN_POUR_TRS, sizeof(TEXT_ARCH_DOWN_POUR_TRS) / sizeof(TextRectangle),
3658 21600, 21600,
3659 nullptr, 0);
3660
3661 const Vertex TEXT_CIRCLE_POUR_VERTICES[] =
3662 {
3663 {0, 0}, {21600, 21600}, {CALCULATED_VALUE(2), CALCULATED_VALUE(3)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(5), CALCULATED_VALUE(5)}, {CALCULATED_VALUE(11), CALCULATED_VALUE(11)}, {CALCULATED_VALUE(8), CALCULATED_VALUE(9)}, {CALCULATED_VALUE(8), CALCULATED_VALUE(0xa)}
3664 };
3665
3666 const unsigned short TEXT_CIRCLE_POUR_SEGMENTS[] =
3667 {
3668 0xA504, 0x8000, 0xA504, 0x8000
3669 };
3670
3671 const Calculation TEXT_CIRCLE_POUR_CALC[] =
3672 {
3673 {0x400a, 10800, PROP_ADJUST_VAL_FIRST, 0}, {0x4009, 10800, PROP_ADJUST_VAL_FIRST, 0}, {0x2000, 0x400, 10800, 0}, {0x2000, 0x401, 10800, 0}, {0x8000, 21600, 0, 0x403}, {0x8000, 10800, 0, PROP_ADJUST_VAL_FIRST + 1}, {0x600a, 0x405, PROP_ADJUST_VAL_FIRST, 0}, {0x6009, 0x405, PROP_ADJUST_VAL_FIRST, 0}, {0x2000, 0x406, 10800, 0}, {0x2000, 0x407, 10800, 0}, {0x8000, 21600, 0, 0x409}, {0x8000, 21600, 0, 0x405}, {0x000, 21600, 0, 0}
3674 };
3675
3676 const TextRectangle TEXT_CIRCLE_POUR_TRS[] =
3677 {
3678 { {0, 0}, {21600, 21600} }
3679 };
3680
3681 const int TEXT_CIRCLE_POUR_DEFAULT_ADJUST[] =
3682 {
3683 -179, 5400
3684 };
3685
3686 const CustomShape CS_TEXT_CIRCLE_POUR(
3687 TEXT_CIRCLE_POUR_VERTICES, sizeof(TEXT_CIRCLE_POUR_VERTICES) / sizeof(Vertex),
3688 TEXT_CIRCLE_POUR_SEGMENTS, sizeof(TEXT_CIRCLE_POUR_SEGMENTS) / sizeof(unsigned short),
3689 TEXT_CIRCLE_POUR_CALC, sizeof(TEXT_CIRCLE_POUR_CALC) / sizeof(Calculation),
3690 TEXT_CIRCLE_POUR_DEFAULT_ADJUST, sizeof(TEXT_CIRCLE_POUR_DEFAULT_ADJUST) / sizeof(int),
3691 TEXT_CIRCLE_POUR_TRS, sizeof(TEXT_CIRCLE_POUR_TRS) / sizeof(TextRectangle),
3692 21600, 21600,
3693 nullptr, 0);
3694
3695 const Vertex TEXT_BUTTON_POUR_VERTICES[] =
3696 {
3697 {0, 0}, {21600, 21600}, {CALCULATED_VALUE(2), CALCULATED_VALUE(3)}, {CALCULATED_VALUE(4), CALCULATED_VALUE(3)}, {CALCULATED_VALUE(6), CALCULATED_VALUE(6)}, {CALCULATED_VALUE(7), CALCULATED_VALUE(7)}, {CALCULATED_VALUE(10), CALCULATED_VALUE(11)}, {CALCULATED_VALUE(12), CALCULATED_VALUE(11)}, {CALCULATED_VALUE(0x16), CALCULATED_VALUE(16)}, {CALCULATED_VALUE(0x15), CALCULATED_VALUE(16)}, {CALCULATED_VALUE(0x16), CALCULATED_VALUE(15)}, {CALCULATED_VALUE(0x15), CALCULATED_VALUE(15)}, {CALCULATED_VALUE(6), CALCULATED_VALUE(6)}, {CALCULATED_VALUE(7), CALCULATED_VALUE(7)}, {CALCULATED_VALUE(10), CALCULATED_VALUE(13)}, {CALCULATED_VALUE(12), CALCULATED_VALUE(13)}, {0, 0}, {21600, 21600}, {CALCULATED_VALUE(2), CALCULATED_VALUE(5)}, {CALCULATED_VALUE(4), CALCULATED_VALUE(5)}
3698 };
3699
3700 const unsigned short TEXT_BUTTON_POUR_SEGMENTS[] =
3701 {
3702 0xA504, 0x8000, 0xA504, 0x8000, 0x4000, 0x0001, 0x8000, 0x4000, 0x0001, 0x8000, 0xA304, 0x8000, 0xA304, 0x8000
3703 };
3704
3705 const Calculation TEXT_BUTTON_POUR_CALC[] =
3706 {
3707 {0x400a, 10800, PROP_ADJUST_VAL_FIRST, 0}, {0x4009, 10800, PROP_ADJUST_VAL_FIRST, 0}, {0x2000, 0x400, 10800, 0}, {0x2000, 0x401, 10800, 0}, {0x8000, 21600, 0, 0x402}, {0x8000, 21600, 0, 0x403}, {0x8000, 10800, 0, PROP_ADJUST_VAL_FIRST + 1}, {0x8000, 21600, 0, 0x406}, {0x600a, PROP_ADJUST_VAL_FIRST + 1, PROP_ADJUST_VAL_FIRST, 0}, {0x6009, PROP_ADJUST_VAL_FIRST + 1, PROP_ADJUST_VAL_FIRST, 0}, {0x2000, 0x408, 10800, 0}, {0x2000, 0x409, 10800, 0}, {0x8000, 21600, 0, 0x40a}, {0x8000, 21600, 0, 0x40b}, {0x2001, 0x406, 1, 2}, {0x4000, 10800, 0x40e, 0}, {0x8000, 10800, 0, 0x40e}, {0x6001, 0x40e, 0x40e, 1}, {0x6001, PROP_ADJUST_VAL_FIRST + 1, PROP_ADJUST_VAL_FIRST + 1, 1}, {0xA000, 0x412, 0, 0x411}, {0x200d, 0x413, 0, 0}, {0x4000, 10800, 0x414, 0}, {0x8000, 10800, 0, 0x414}
3708 };
3709
3710 const TextRectangle TEXT_BUTTON_POUR_TRS[] =
3711 {
3712 { {0, 0}, {21600, 21600} }
3713 };
3714
3715 const int TEXT_BUTTON_POUR_DEFAULT_ADJUST[] =
3716 {
3717 180, 5400
3718 };
3719
3720 const CustomShape CS_TEXT_BUTTON_POUR(
3721 TEXT_BUTTON_POUR_VERTICES, sizeof(TEXT_BUTTON_POUR_VERTICES) / sizeof(Vertex),
3722 TEXT_BUTTON_POUR_SEGMENTS, sizeof(TEXT_BUTTON_POUR_SEGMENTS) / sizeof(unsigned short),
3723 TEXT_BUTTON_POUR_CALC, sizeof(TEXT_BUTTON_POUR_CALC) / sizeof(Calculation),
3724 TEXT_BUTTON_POUR_DEFAULT_ADJUST, sizeof(TEXT_BUTTON_POUR_DEFAULT_ADJUST) / sizeof(int),
3725 TEXT_BUTTON_POUR_TRS, sizeof(TEXT_BUTTON_POUR_TRS) / sizeof(TextRectangle),
3726 21600, 21600,
3727 nullptr, 0);
3728
3729 const Vertex TEXT_CURVE_UP_VERTICES[] =
3730 {
3731 {0, CALCULATED_VALUE(0)}, {4900, CALCULATED_VALUE(1) /*12170->0 14250 ->0*/}, {11640, CALCULATED_VALUE(2) /*12170->0 12800 ->0*/}, {21600, 0}, {0, CALCULATED_VALUE(4) /*12170->0 17220 ->21600*/}, {3700, 21600}, {8500, 21600}, {10100, 21600}, {14110, 21600}, {15910, 21600}, {21600, CALCULATED_VALUE(4) /*12170->0 17220 ->21600*/}
3732 };
3733
3734 const unsigned short TEXT_CURVE_UP_SEGMENTS[] =
3735 {
3736 0x4000, 0x2001, 0x8000, 0x4000, 0x2002, 0x8000
3737 };
3738
3739 const Calculation TEXT_CURVE_UP_CALC[] =
3740 {
3741 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x4001, 14250, 0x400, 12170}, {0x4001, 12800, 0x400, 12170}, {0x4001, 6380, 0x400, 12170}, {0x8000, 21600, 0, 0x403}
3742 };
3743
3744 const TextRectangle TEXT_CURVE_UP_TRS[] =
3745 {
3746 { {0, 0}, {21600, 21600} }
3747 };
3748
3749 const int TEXT_CURVE_UP_DEFAULT_ADJUST[] =
3750 {
3751 9900
3752 };
3753
3754 const CustomShape CS_TEXT_CURVE_UP(
3755 TEXT_CURVE_UP_VERTICES, sizeof(TEXT_CURVE_UP_VERTICES) / sizeof(Vertex),
3756 TEXT_CURVE_UP_SEGMENTS, sizeof(TEXT_CURVE_UP_SEGMENTS) / sizeof(unsigned short),
3757 TEXT_CURVE_UP_CALC, sizeof(TEXT_CURVE_UP_CALC) / sizeof(Calculation),
3758 TEXT_CURVE_UP_DEFAULT_ADJUST, sizeof(TEXT_CURVE_UP_DEFAULT_ADJUST) / sizeof(int),
3759 TEXT_CURVE_UP_TRS, sizeof(TEXT_CURVE_UP_TRS) / sizeof(TextRectangle),
3760 21600, 21600,
3761 nullptr, 0);
3762
3763 const Vertex TEXT_CURVE_DOWN_VERTICES[] =
3764 {
3765 {0, 0}, {9960, CALCULATED_VALUE(2)}, {16700, CALCULATED_VALUE(1)}, {21600, CALCULATED_VALUE(0)}, {0, CALCULATED_VALUE(4)}, {5690, 21600}, {7490, 21600}, {11500, 21600}, {13100, 21600}, {17900, 21600}, {21600, CALCULATED_VALUE(4)}
3766 };
3767
3768 const unsigned short TEXT_CURVE_DOWN_SEGMENTS[] =
3769 {
3770 0x4000, 0x2001, 0x8000, 0x4000, 0x2002, 0x8000
3771 };
3772
3773 const Calculation TEXT_CURVE_DOWN_CALC[] =
3774 {
3775 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x4001, 14250, 0x400, 12170}, {0x4001, 12800, 0x400, 12170}, {0x4001, 6380, 0x400, 12170}, {0x8000, 21600, 0, 0x403}
3776 };
3777
3778 const TextRectangle TEXT_CURVE_DOWN_TRS[] =
3779 {
3780 { {0, 0}, {21600, 21600} }
3781 };
3782
3783 const int TEXT_CURVE_DOWN_DEFAULT_ADJUST[] =
3784 {
3785 9900
3786 };
3787
3788 const CustomShape CS_TEXT_CURVE_DOWN(
3789 TEXT_CURVE_DOWN_VERTICES, sizeof(TEXT_CURVE_DOWN_VERTICES) / sizeof(Vertex),
3790 TEXT_CURVE_DOWN_SEGMENTS, sizeof(TEXT_CURVE_DOWN_SEGMENTS) / sizeof(unsigned short),
3791 TEXT_CURVE_DOWN_CALC, sizeof(TEXT_CURVE_DOWN_CALC) / sizeof(Calculation),
3792 TEXT_CURVE_DOWN_DEFAULT_ADJUST, sizeof(TEXT_CURVE_DOWN_DEFAULT_ADJUST) / sizeof(int),
3793 TEXT_CURVE_DOWN_TRS, sizeof(TEXT_CURVE_DOWN_TRS) / sizeof(TextRectangle),
3794 21600, 21600,
3795 nullptr, 0);
3796
3797 const Vertex TEXT_CASCADE_UP_VERTICES[] =
3798 {
3799 {0, CALCULATED_VALUE(2)}, {21600, 0}, {0, 21600}, {21600, CALCULATED_VALUE(0)}
3800 };
3801
3802 const unsigned short TEXT_CASCADE_UP_SEGMENTS[] =
3803 {
3804 0x4000, 0x0001, 0x8000, 0x4000, 0x0001, 0x8000
3805 };
3806
3807 const Calculation TEXT_CASCADE_UP_CALC[] =
3808 {
3809 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST}, {0x2001, 0x401, 1, 4}
3810 };
3811
3812 const TextRectangle TEXT_CASCADE_UP_TRS[] =
3813 {
3814 { {0, 0}, {21600, 21600} }
3815 };
3816
3817 const int TEXT_CASCADE_UP_DEFAULT_ADJUST[] =
3818 {
3819 9600
3820 };
3821
3822 const CustomShape CS_TEXT_CASCADE_UP(
3823 TEXT_CASCADE_UP_VERTICES, sizeof(TEXT_CASCADE_UP_VERTICES) / sizeof(Vertex),
3824 TEXT_CASCADE_UP_SEGMENTS, sizeof(TEXT_CASCADE_UP_SEGMENTS) / sizeof(unsigned short),
3825 TEXT_CASCADE_UP_CALC, sizeof(TEXT_CASCADE_UP_CALC) / sizeof(Calculation),
3826 TEXT_CASCADE_UP_DEFAULT_ADJUST, sizeof(TEXT_CASCADE_UP_DEFAULT_ADJUST) / sizeof(int),
3827 TEXT_CASCADE_UP_TRS, sizeof(TEXT_CASCADE_UP_TRS) / sizeof(TextRectangle),
3828 21600, 21600,
3829 nullptr, 0);
3830
3831 const Vertex TEXT_CASCADE_DOWN_VERTICES[] =
3832 {
3833 {0, 0}, {21600, CALCULATED_VALUE(2)}, {0, CALCULATED_VALUE(0)}, {21600, 21600}
3834 };
3835
3836 const unsigned short TEXT_CASCADE_DOWN_SEGMENTS[] =
3837 {
3838 0x4000, 0x0001, 0x8000, 0x4000, 0x0001, 0x8000
3839 };
3840
3841 const Calculation TEXT_CASCADE_DOWN_CALC[] =
3842 {
3843 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST}, {0x2001, 0x401, 1, 4}
3844 };
3845
3846 const TextRectangle TEXT_CASCADE_DOWN_TRS[] =
3847 {
3848 { {0, 0}, {21600, 21600} }
3849 };
3850
3851 const int TEXT_CASCADE_DOWN_DEFAULT_ADJUST[] =
3852 {
3853 9600
3854 };
3855
3856 const CustomShape CS_TEXT_CASCADE_DOWN(
3857 TEXT_CASCADE_DOWN_VERTICES, sizeof(TEXT_CASCADE_DOWN_VERTICES) / sizeof(Vertex),
3858 TEXT_CASCADE_DOWN_SEGMENTS, sizeof(TEXT_CASCADE_DOWN_SEGMENTS) / sizeof(unsigned short),
3859 TEXT_CASCADE_DOWN_CALC, sizeof(TEXT_CASCADE_DOWN_CALC) / sizeof(Calculation),
3860 TEXT_CASCADE_DOWN_DEFAULT_ADJUST, sizeof(TEXT_CASCADE_DOWN_DEFAULT_ADJUST) / sizeof(int),
3861 TEXT_CASCADE_DOWN_TRS, sizeof(TEXT_CASCADE_DOWN_TRS) / sizeof(TextRectangle),
3862 21600, 21600,
3863 nullptr, 0);
3864
3865 const Vertex TEXT_WAVE_1_VERTICES[] =
3866 {
3867 {CALCULATED_VALUE(7), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(15), CALCULATED_VALUE(9)}, {CALCULATED_VALUE(16), CALCULATED_VALUE(10)}, {CALCULATED_VALUE(12), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(29), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(27), CALCULATED_VALUE(28)}, {CALCULATED_VALUE(25), CALCULATED_VALUE(26)}, {CALCULATED_VALUE(24), CALCULATED_VALUE(1)}
3868 };
3869
3870 const unsigned short TEXT_WAVE_1_SEGMENTS[] =
3871 {
3872 0x4000, 0x2001, 0x8000, 0x4000, 0x2001, 0x8000
3873 };
3874
3875 const Calculation TEXT_WAVE_1_CALC[] =
3876 {
3877 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x8000, 21600, 0, 0x400}, {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x2000, 0x402, 0, 10800}, {0x2001, 0x403, 2, 1}, {0x2003, 0x404, 0, 0}, {0x8000, 4320, 0, 0x405}, {0xa006, 0x403, 0, 0x405}, {0x4001, 15800, 0x400, 4460}, {0xa000, 0x400, 0, 0x408}, {0x6000, 0x400, 0x408, 0}, {0x8000, 21600, 0, 0x404}, {0x6006, 0x403, 0x40b, 21600}, {0xa000, 0x40c, 0, 0x407}, {0x2001, 0x405, 1, 2}, {0xa000, 0x407, 7200, 0x40e}, {0x6000, 0x40c, 0x40e, 7200}, {0x2001, 0x40d, 1, 2}, {0x6000, 0x407, 0x411, 0}, {0x8000, 21600, 0, 0x412}, {0x2001, 0x405, 1, 2}, {0x8000, 21600, 0, 0x414}, {0x2001, 0x400, 2, 1}, {0x8000, 21600, 0, 0x416}, {0x8000, 21600, 0, 0x407}, {0x8000, 21600, 0, 0x40f}, {0x6000, 0x401, 0x408, 0}, {0x8000, 21600, 0, 0x410}, {0xa000, 0x401, 0, 0x408}, {0x8000, 21600, 0, 0x40c}
3878 };
3879
3880 const TextRectangle TEXT_WAVE_1_TRS[] =
3881 {
3882 { {0, 0}, {21600, 21600} }
3883 };
3884
3885 const int TEXT_WAVE_1_DEFAULT_ADJUST[] =
3886 {
3887 1400, 10800
3888 };
3889
3890 const CustomShape CS_TEXT_WAVE_1(
3891 TEXT_WAVE_1_VERTICES, sizeof(TEXT_WAVE_1_VERTICES) / sizeof(Vertex),
3892 TEXT_WAVE_1_SEGMENTS, sizeof(TEXT_WAVE_1_SEGMENTS) / sizeof(unsigned short),
3893 TEXT_WAVE_1_CALC, sizeof(TEXT_WAVE_1_CALC) / sizeof(Calculation),
3894 TEXT_WAVE_1_DEFAULT_ADJUST, sizeof(TEXT_WAVE_1_DEFAULT_ADJUST) / sizeof(int),
3895 TEXT_WAVE_1_TRS, sizeof(TEXT_WAVE_1_TRS) / sizeof(TextRectangle),
3896 21600, 21600,
3897 nullptr, 0);
3898
3899 const Vertex TEXT_WAVE_2_VERTICES[] =
3900 {
3901 {CALCULATED_VALUE(7), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(15), CALCULATED_VALUE(10)}, {CALCULATED_VALUE(16), CALCULATED_VALUE(9)}, {CALCULATED_VALUE(12), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(29), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(27), CALCULATED_VALUE(26)}, {CALCULATED_VALUE(25), CALCULATED_VALUE(28)}, {CALCULATED_VALUE(24), CALCULATED_VALUE(1)}
3902 };
3903
3904 const unsigned short TEXT_WAVE_2_SEGMENTS[] =
3905 {
3906 0x4000, 0x2001, 0x8000, 0x4000, 0x2001, 0x8000
3907 };
3908
3909 const Calculation TEXT_WAVE_2_CALC[] =
3910 {
3911 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x8000, 21600, 0, 0x400}, {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x2000, 0x402, 0, 10800}, {0x2001, 0x403, 2, 1}, {0x2003, 0x404, 0, 0}, {0x8000, 4320, 0, 0x405}, {0xa006, 0x403, 0, 0x405}, {0x4001, 15800, 0x400, 4460}, {0xa000, 0x400, 0, 0x408}, {0x6000, 0x400, 0x408, 0}, {0x8000, 21600, 0, 0x404}, {0x6006, 0x403, 0x40b, 21600}, {0xa000, 0x40c, 0, 0x407}, {0x2001, 0x405, 1, 2}, {0xa000, 0x407, 7200, 0x40e}, {0x6000, 0x40c, 0x40e, 7200}, {0x2001, 0x40d, 1, 2}, {0x6000, 0x407, 0x411, 0}, {0x8000, 21600, 0, 0x412}, {0x2001, 0x405, 1, 2}, {0x8000, 21600, 0, 0x414}, {0x2001, 0x400, 2, 1}, {0x8000, 21600, 0, 0x416}, {0x8000, 21600, 0, 0x407}, {0x8000, 21600, 0, 0x40f}, {0x6000, 0x401, 0x408, 0}, {0x8000, 21600, 0, 0x410}, {0xa000, 0x401, 0, 0x408}, {0x8000, 21600, 0, 0x40c}
3912 };
3913
3914 const TextRectangle TEXT_WAVE_2_TRS[] =
3915 {
3916 { {0, 0}, {21600, 21600} }
3917 };
3918
3919 const int TEXT_WAVE_2_DEFAULT_ADJUST[] =
3920 {
3921 1400, 10800
3922 };
3923
3924 const CustomShape CS_TEXT_WAVE_2(
3925 TEXT_WAVE_2_VERTICES, sizeof(TEXT_WAVE_2_VERTICES) / sizeof(Vertex),
3926 TEXT_WAVE_2_SEGMENTS, sizeof(TEXT_WAVE_2_SEGMENTS) / sizeof(unsigned short),
3927 TEXT_WAVE_2_CALC, sizeof(TEXT_WAVE_2_CALC) / sizeof(Calculation),
3928 TEXT_WAVE_2_DEFAULT_ADJUST, sizeof(TEXT_WAVE_2_DEFAULT_ADJUST) / sizeof(int),
3929 TEXT_WAVE_2_TRS, sizeof(TEXT_WAVE_2_TRS) / sizeof(TextRectangle),
3930 21600, 21600,
3931 nullptr, 0);
3932
3933 const Vertex TEXT_WAVE_3_VERTICES[] =
3934 {
3935 {CALCULATED_VALUE(7), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(15), CALCULATED_VALUE(9)}, {CALCULATED_VALUE(0x1e), CALCULATED_VALUE(10)}, {CALCULATED_VALUE(0x12), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(0x1f), CALCULATED_VALUE(9)}, {CALCULATED_VALUE(16), CALCULATED_VALUE(10)}, {CALCULATED_VALUE(12), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(29), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(27), CALCULATED_VALUE(28)}, {CALCULATED_VALUE(0x20), CALCULATED_VALUE(26)}, {CALCULATED_VALUE(0x13), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(0x21), CALCULATED_VALUE(28)}, {CALCULATED_VALUE(25), CALCULATED_VALUE(26)}, {CALCULATED_VALUE(24), CALCULATED_VALUE(1)}
3936 };
3937
3938 const unsigned short TEXT_WAVE_3_SEGMENTS[] =
3939 {
3940 0x4000, 0x2002, 0x8000, 0x4000, 0x2002, 0x8000
3941 };
3942
3943 const Calculation TEXT_WAVE_3_CALC[] =
3944 {
3945 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x8000, 21600, 0, 0x400}, {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x2000, 0x402, 0, 10800}, {0x2001, 0x403, 2, 1}, {0x2003, 0x404, 0, 0}, {0x8000, 4320, 0, 0x405}, {0xa006, 0x403, 0, 0x405}, {0x4001, 7900, 0x400, 2230}, {0xa000, 0x400, 0, 0x408}, {0x6000, 0x400, 0x408, 0}, {0x8000, 21600, 0, 0x404}, {0x6006, 0x403, 0x40b, 21600}, {0xa000, 0x40c, 0, 0x407}, {0x2001, 0x405, 1, 2}, {0xa000, 0x407, 3600, 0x40e}, {0x6000, 0x40c, 0x40e, 3600}, {0x2001, 0x40d, 1, 2}, {0x6000, 0x407, 0x411, 0}, {0x8000, 21600, 0, 0x412}, {0x2001, 0x405, 1, 2}, {0x8000, 21600, 0, 0x414}, {0x2001, 0x400, 2, 1}, {0x8000, 21600, 0, 0x416}, {0x8000, 21600, 0, 0x407}, {0x8000, 21600, 0, 0x40f}, {0x6000, 0x401, 0x408, 0}, {0x8000, 21600, 0, 0x410}, {0xa000, 0x401, 0, 0x408}, {0x8000, 21600, 0, 0x40c}, {0xa000, 0x412, 0, 0x40e}, {0x6000, 0x412, 0x40e, 0}, {0xa000, 0x413, 0, 0x40e}, {0x6000, 0x413, 0x40e, 0}
3946 };
3947
3948 const TextRectangle TEXT_WAVE_3_TRS[] =
3949 {
3950 { {0, 0}, {21600, 21600} }
3951 };
3952
3953 const int TEXT_WAVE_3_DEFAULT_ADJUST[] =
3954 {
3955 1400, 10800
3956 };
3957
3958 const CustomShape CS_TEXT_WAVE_3(
3959 TEXT_WAVE_3_VERTICES, sizeof(TEXT_WAVE_3_VERTICES) / sizeof(Vertex),
3960 TEXT_WAVE_3_SEGMENTS, sizeof(TEXT_WAVE_3_SEGMENTS) / sizeof(unsigned short),
3961 TEXT_WAVE_3_CALC, sizeof(TEXT_WAVE_3_CALC) / sizeof(Calculation),
3962 TEXT_WAVE_3_DEFAULT_ADJUST, sizeof(TEXT_WAVE_3_DEFAULT_ADJUST) / sizeof(int),
3963 TEXT_WAVE_3_TRS, sizeof(TEXT_WAVE_3_TRS) / sizeof(TextRectangle),
3964 21600, 21600,
3965 nullptr, 0);
3966
3967 const Vertex TEXT_WAVE_4_VERTICES[] =
3968 {
3969 {CALCULATED_VALUE(7), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(15), CALCULATED_VALUE(10)}, {CALCULATED_VALUE(0x1e), CALCULATED_VALUE(9)}, {CALCULATED_VALUE(0x12), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(0x1f), CALCULATED_VALUE(10)}, {CALCULATED_VALUE(16), CALCULATED_VALUE(9)}, {CALCULATED_VALUE(12), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(29), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(27), CALCULATED_VALUE(26)}, {CALCULATED_VALUE(0x20), CALCULATED_VALUE(28)}, {CALCULATED_VALUE(0x13), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(0x21), CALCULATED_VALUE(26)}, {CALCULATED_VALUE(25), CALCULATED_VALUE(28)}, {CALCULATED_VALUE(24), CALCULATED_VALUE(1)}
3970 };
3971
3972 const unsigned short TEXT_WAVE_4_SEGMENTS[] =
3973 {
3974 0x4000, 0x2002, 0x8000, 0x4000, 0x2002, 0x8000
3975 };
3976
3977 const Calculation TEXT_WAVE_4_CALC[] =
3978 {
3979 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x8000, 21600, 0, 0x400}, {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x2000, 0x402, 0, 10800}, {0x2001, 0x403, 2, 1}, {0x2003, 0x404, 0, 0}, {0x8000, 4320, 0, 0x405}, {0xa006, 0x403, 0, 0x405}, {0x4001, 7900, 0x400, 2230}, {0xa000, 0x400, 0, 0x408}, {0x6000, 0x400, 0x408, 0}, {0x8000, 21600, 0, 0x404}, {0x6006, 0x403, 0x40b, 21600}, {0xa000, 0x40c, 0, 0x407}, {0x2001, 0x405, 1, 2}, {0xa000, 0x407, 3600, 0x40e}, {0x6000, 0x40c, 0x40e, 3600}, {0x2001, 0x40d, 1, 2}, {0x6000, 0x407, 0x411, 0}, {0x8000, 21600, 0, 0x412}, {0x2001, 0x405, 1, 2}, {0x8000, 21600, 0, 0x414}, {0x2001, 0x400, 2, 1}, {0x8000, 21600, 0, 0x416}, {0x8000, 21600, 0, 0x407}, {0x8000, 21600, 0, 0x40f}, {0x6000, 0x401, 0x408, 0}, {0x8000, 21600, 0, 0x410}, {0xa000, 0x401, 0, 0x408}, {0x8000, 21600, 0, 0x40c}, {0xa000, 0x412, 0, 0x40e}, {0x6000, 0x412, 0x40e, 0}, {0xa000, 0x413, 0, 0x40e}, {0x6000, 0x413, 0x40e, 0}
3980 };
3981
3982 const TextRectangle TEXT_WAVE_4_TRS[] =
3983 {
3984 { {CALCULATED_VALUE(5), CALCULATED_VALUE(22)}, {CALCULATED_VALUE(11), CALCULATED_VALUE(23)} }
3985 };
3986
3987 const int TEXT_WAVE_4_DEFAULT_ADJUST[] =
3988 {
3989 1400, 10800
3990 };
3991
3992 const Vertex TEXT_WAVE_4_GLUE_POINTS[] =
3993 {
3994 {CALCULATED_VALUE(0x12), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(0x14), 10800}, {CALCULATED_VALUE(0x13), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(0x15), 10800}
3995 };
3996
3997 const CustomShape CS_TEXT_WAVE_4(
3998 TEXT_WAVE_4_VERTICES, sizeof(TEXT_WAVE_4_VERTICES) / sizeof(Vertex),
3999 TEXT_WAVE_4_SEGMENTS, sizeof(TEXT_WAVE_4_SEGMENTS) / sizeof(unsigned short),
4000 TEXT_WAVE_4_CALC, sizeof(TEXT_WAVE_4_CALC) / sizeof(Calculation),
4001 TEXT_WAVE_4_DEFAULT_ADJUST, sizeof(TEXT_WAVE_4_DEFAULT_ADJUST) / sizeof(int),
4002 TEXT_WAVE_4_TRS, sizeof(TEXT_WAVE_4_TRS) / sizeof(TextRectangle),
4003 21600, 21600,
4004 TEXT_WAVE_4_GLUE_POINTS, sizeof(TEXT_WAVE_4_GLUE_POINTS) / sizeof(Vertex));
4005
4006 const Vertex TEXT_INFLATE_VERTICES[] =
4007 {
4008 {0, CALCULATED_VALUE(0)}, {4100, CALCULATED_VALUE(1)}, {7300, 0}, {10800, 0}, {14300, 0}, {17500, CALCULATED_VALUE(1)}, {21600, CALCULATED_VALUE(0)}, {0, CALCULATED_VALUE(2)}, {4100, CALCULATED_VALUE(3)}, {7300, 21600}, {10800, 21600}, {14300, 21600}, {17500, CALCULATED_VALUE(3)}, {21600, CALCULATED_VALUE(2)}
4009 };
4010
4011 const unsigned short TEXT_INFLATE_SEGMENTS[] =
4012 {
4013 0x4000, 0x2002, 0x8000, 0x4000, 0x2002, 0x8000
4014 };
4015
4016 const Calculation TEXT_INFLATE_CALC[] =
4017 {
4018 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x4001, 1530, 0x400, 4650}, {0x8000, 21600, 0, 0x400}, {0x8000, 21600, 0, 0x401}
4019 };
4020
4021 const TextRectangle TEXT_INFLATE_TRS[] =
4022 {
4023 { {0, 0}, {21600, 21600} }
4024 };
4025
4026 const int TEXT_INFLATE_DEFAULT_ADJUST[] =
4027 {
4028 2950
4029 };
4030
4031 const CustomShape CS_TEXT_INFLATE(
4032 TEXT_INFLATE_VERTICES, sizeof(TEXT_INFLATE_VERTICES) / sizeof(Vertex),
4033 TEXT_INFLATE_SEGMENTS, sizeof(TEXT_INFLATE_SEGMENTS) / sizeof(unsigned short),
4034 TEXT_INFLATE_CALC, sizeof(TEXT_INFLATE_CALC) / sizeof(Calculation),
4035 TEXT_INFLATE_DEFAULT_ADJUST, sizeof(TEXT_INFLATE_DEFAULT_ADJUST) / sizeof(int),
4036 TEXT_INFLATE_TRS, sizeof(TEXT_INFLATE_TRS) / sizeof(TextRectangle),
4037 21600, 21600,
4038 nullptr, 0);
4039
4040 const Vertex TEXT_DEFLATE_VERTICES[] =
4041 {
4042 {0, 0}, {3500, CALCULATED_VALUE(1)}, {7100, CALCULATED_VALUE(0)}, {10800, CALCULATED_VALUE(0)}, {14500, CALCULATED_VALUE(0)}, {18100, CALCULATED_VALUE(1)}, {21600, 0}, {0, 21600}, {3500, CALCULATED_VALUE(3)}, {7100, CALCULATED_VALUE(2)}, {10800, CALCULATED_VALUE(2)}, {14500, CALCULATED_VALUE(2)}, {18100, CALCULATED_VALUE(3)}, {21600, 21600}
4043 };
4044
4045 const unsigned short TEXT_DEFLATE_SEGMENTS[] =
4046 {
4047 0x4000, 0x2002, 0x8000, 0x4000, 0x2002, 0x8000
4048 };
4049
4050 const Calculation TEXT_DEFLATE_CALC[] =
4051 {
4052 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2001, 0x400, 5320, 7100}, {0x8000, 21600, 0, 0x400}, {0x8000, 21600, 0, 0x401}
4053 };
4054
4055 const TextRectangle TEXT_DEFLATE_TRS[] =
4056 {
4057 { {0, 0}, {21600, 21600} }
4058 };
4059
4060 const int TEXT_DEFLATE_DEFAULT_ADJUST[] =
4061 {
4062 8100
4063 };
4064
4065 const CustomShape CS_TEXT_DEFLATE(
4066 TEXT_DEFLATE_VERTICES, sizeof(TEXT_DEFLATE_VERTICES) / sizeof(Vertex),
4067 TEXT_DEFLATE_SEGMENTS, sizeof(TEXT_DEFLATE_SEGMENTS) / sizeof(unsigned short),
4068 TEXT_DEFLATE_CALC, sizeof(TEXT_DEFLATE_CALC) / sizeof(Calculation),
4069 TEXT_DEFLATE_DEFAULT_ADJUST, sizeof(TEXT_DEFLATE_DEFAULT_ADJUST) / sizeof(int),
4070 TEXT_DEFLATE_TRS, sizeof(TEXT_DEFLATE_TRS) / sizeof(TextRectangle),
4071 21600, 21600,
4072 nullptr, 0);
4073
4074 const Vertex TEXT_INFLATE_BOTTOM_VERTICES[] =
4075 {
4076 {0, 0}, {21600, 0}, {0, CALCULATED_VALUE(0)}, {3500, CALCULATED_VALUE(3)}, {7300, 21600}, {10800, 21600}, {14300, 21600}, {18100, CALCULATED_VALUE(3)}, {21600, CALCULATED_VALUE(0)}
4077 };
4078
4079 const unsigned short TEXT_INFLATE_BOTTOM_SEGMENTS[] =
4080 {
4081 0x4000, 0x0001, 0x8000, 0x4000, 0x2002, 0x8000
4082 };
4083
4084 const Calculation TEXT_INFLATE_BOTTOM_CALC[] =
4085 {
4086 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2000, 0x400, 0, 11150}, {0x2001, 0x401, 3900, 10450}, {0x2000, 0x402, 17700, 0}
4087 };
4088
4089 const TextRectangle TEXT_INFLATE_BOTTOM_TRS[] =
4090 {
4091 { {0, 0}, {21600, 21600} }
4092 };
4093
4094 const int TEXT_INFLATE_BOTTOM_DEFAULT_ADJUST[] =
4095 {
4096 14700
4097 };
4098
4099 const CustomShape CS_TEXT_INFLATE_BOTTOM(
4100 TEXT_INFLATE_BOTTOM_VERTICES, sizeof(TEXT_INFLATE_BOTTOM_VERTICES) / sizeof(Vertex),
4101 TEXT_INFLATE_BOTTOM_SEGMENTS, sizeof(TEXT_INFLATE_BOTTOM_SEGMENTS) / sizeof(unsigned short),
4102 TEXT_INFLATE_BOTTOM_CALC, sizeof(TEXT_INFLATE_BOTTOM_CALC) / sizeof(Calculation),
4103 TEXT_INFLATE_BOTTOM_DEFAULT_ADJUST, sizeof(TEXT_INFLATE_BOTTOM_DEFAULT_ADJUST) / sizeof(int),
4104 TEXT_INFLATE_BOTTOM_TRS, sizeof(TEXT_INFLATE_BOTTOM_TRS) / sizeof(TextRectangle),
4105 21600, 21600,
4106 nullptr, 0);
4107
4108 const Vertex TEXT_DEFLATE_BOTTOM_VERTICES[] =
4109 {
4110 {0, 0}, {21600, 0}, {0, 21600}, {2900, CALCULATED_VALUE(3)}, {7200, CALCULATED_VALUE(0)}, {10800, CALCULATED_VALUE(0)}, {14400, CALCULATED_VALUE(0)}, {18700, CALCULATED_VALUE(3)}, {21600, 21600}
4111 };
4112
4113 const unsigned short TEXT_DEFLATE_BOTTOM_SEGMENTS[] =
4114 {
4115 0x4000, 0x0001, 0x8000, 0x4000, 0x2002, 0x8000
4116 };
4117
4118 const Calculation TEXT_DEFLATE_BOTTOM_CALC[] =
4119 {
4120 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2000, 0x400, 0, 1350}, {0x2001, 0x401, 12070, 20250}, {0x2000, 0x402, 9530, 0}
4121 };
4122
4123 const TextRectangle TEXT_DEFLATE_BOTTOM_TRS[] =
4124 {
4125 { {0, 0}, {21600, 21600} }
4126 };
4127
4128 const int TEXT_DEFLATE_BOTTOM_DEFAULT_ADJUST[] =
4129 {
4130 11500
4131 };
4132
4133 const CustomShape CS_TEXT_DEFLATE_BOTTOM(
4134 TEXT_DEFLATE_BOTTOM_VERTICES, sizeof(TEXT_DEFLATE_BOTTOM_VERTICES) / sizeof(Vertex),
4135 TEXT_DEFLATE_BOTTOM_SEGMENTS, sizeof(TEXT_DEFLATE_BOTTOM_SEGMENTS) / sizeof(unsigned short),
4136 TEXT_DEFLATE_BOTTOM_CALC, sizeof(TEXT_DEFLATE_BOTTOM_CALC) / sizeof(Calculation),
4137 TEXT_DEFLATE_BOTTOM_DEFAULT_ADJUST, sizeof(TEXT_DEFLATE_BOTTOM_DEFAULT_ADJUST) / sizeof(int),
4138 TEXT_DEFLATE_BOTTOM_TRS, sizeof(TEXT_DEFLATE_BOTTOM_TRS) / sizeof(TextRectangle),
4139 21600, 21600,
4140 nullptr, 0);
4141
4142 const Vertex TEXT_INFLATE_TOP_VERTICES[] =
4143 {
4144 {0, CALCULATED_VALUE(0)}, {3500, CALCULATED_VALUE(1)}, {7300, 0}, {10800, 0}, {14300, 0}, {18100, CALCULATED_VALUE(1)}, {21600, CALCULATED_VALUE(0)}, {0, 21600}, {21600, 21600}
4145 };
4146
4147 const unsigned short TEXT_INFLATE_TOP_SEGMENTS[] =
4148 {
4149 0x4000, 0x2002, 0x8000, 0x4000, 0x0001, 0x8000
4150 };
4151
4152 const Calculation TEXT_INFLATE_TOP_CALC[] =
4153 {
4154 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2001, 0x400, 3900, 10450}
4155 };
4156
4157 const TextRectangle TEXT_INFLATE_TOP_TRS[] =
4158 {
4159 { {0, 0}, {21600, 21600} }
4160 };
4161
4162 const int TEXT_INFLATE_TOP_DEFAULT_ADJUST[] =
4163 {
4164 6900
4165 };
4166
4167 const CustomShape CS_TEXT_INFLATE_TOP(
4168 TEXT_INFLATE_TOP_VERTICES, sizeof(TEXT_INFLATE_TOP_VERTICES) / sizeof(Vertex),
4169 TEXT_INFLATE_TOP_SEGMENTS, sizeof(TEXT_INFLATE_TOP_SEGMENTS) / sizeof(unsigned short),
4170 TEXT_INFLATE_TOP_CALC, sizeof(TEXT_INFLATE_TOP_CALC) / sizeof(Calculation),
4171 TEXT_INFLATE_TOP_DEFAULT_ADJUST, sizeof(TEXT_INFLATE_TOP_DEFAULT_ADJUST) / sizeof(int),
4172 TEXT_INFLATE_TOP_TRS, sizeof(TEXT_INFLATE_TOP_TRS) / sizeof(TextRectangle),
4173 21600, 21600,
4174 nullptr, 0);
4175
4176 const Vertex TEXT_DEFLATE_TOP_VERTICES[] =
4177 {
4178 {0, 0}, {2900, CALCULATED_VALUE(1)}, {7200, CALCULATED_VALUE(0)}, {10800, CALCULATED_VALUE(0)}, {14400, CALCULATED_VALUE(0)}, {18700, CALCULATED_VALUE(1)}, {21600, 0}, {0, 21600}, {21600, 21600}
4179 };
4180
4181 const unsigned short TEXT_DEFLATE_TOP_SEGMENTS[] =
4182 {
4183 0x4000, 0x2002, 0x8000, 0x4000, 0x0001, 0x8000
4184 };
4185
4186 const Calculation TEXT_DEFLATE_TOP_CALC[] =
4187 {
4188 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2001, 0x400, 12070, 20250}
4189 };
4190
4191 const TextRectangle TEXT_DEFLATE_TOP_TRS[] =
4192 {
4193 { {0, 0}, {21600, 21600} }
4194 };
4195
4196 const int TEXT_DEFLATE_TOP_DEFAULT_ADJUST[] =
4197 {
4198 10100
4199 };
4200
4201 const CustomShape CS_TEXT_DEFLATE_TOP(
4202 TEXT_DEFLATE_TOP_VERTICES, sizeof(TEXT_DEFLATE_TOP_VERTICES) / sizeof(Vertex),
4203 TEXT_DEFLATE_TOP_SEGMENTS, sizeof(TEXT_DEFLATE_TOP_SEGMENTS) / sizeof(unsigned short),
4204 TEXT_DEFLATE_TOP_CALC, sizeof(TEXT_DEFLATE_TOP_CALC) / sizeof(Calculation),
4205 TEXT_DEFLATE_TOP_DEFAULT_ADJUST, sizeof(TEXT_DEFLATE_TOP_DEFAULT_ADJUST) / sizeof(int),
4206 TEXT_DEFLATE_TOP_TRS, sizeof(TEXT_DEFLATE_TOP_TRS) / sizeof(TextRectangle),
4207 21600, 21600,
4208 nullptr, 0);
4209
4210 const Vertex TEXT_DEFLATE_INFLATE_VERTICES[] =
4211 {
4212 {0, 0}, {21600, 0}, {0, 10100}, {3300, CALCULATED_VALUE(3)}, {7100, CALCULATED_VALUE(5)}, {10800, CALCULATED_VALUE(5)}, {14500, CALCULATED_VALUE(5)}, {18300, CALCULATED_VALUE(3)}, {21600, 10100}, {0, 11500}, {3300, CALCULATED_VALUE(4)}, {7100, CALCULATED_VALUE(6)}, {10800, CALCULATED_VALUE(6)}, {14500, CALCULATED_VALUE(6)}, {18300, CALCULATED_VALUE(4)}, {21600, 11500}, {0, 21600}, {21600, 21600}
4213 };
4214
4215 const unsigned short TEXT_DEFLATE_INFLATE_SEGMENTS[] =
4216 {
4217 0x4000, 0x0001, 0x8000, 0x4000, 0x2002, 0x8000, 0x4000, 0x2002, 0x8000, 0x4000, 0x0001, 0x8000
4218 };
4219
4220 const Calculation TEXT_DEFLATE_INFLATE_CALC[] =
4221 {
4222 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x8000, 10800, 0, 0x400}, {0x2001, 0x401, 5770, 9500}, {0x8000, 10100, 0, 0x402}, {0x8000, 11500, 0, 0x402}, {0x2000, 0x400, 0, 700}, {0x2000, 0x400, 700, 0}
4223 };
4224
4225 const TextRectangle TEXT_DEFLATE_INFLATE_TRS[] =
4226 {
4227 { {0, 0}, {21600, 21600} }
4228 };
4229
4230 const int TEXT_DEFLATE_INFLATE_DEFAULT_ADJUST[] =
4231 {
4232 6500
4233 };
4234
4235 const CustomShape CS_TEXT_DEFLATE_INFLATE(
4236 TEXT_DEFLATE_INFLATE_VERTICES, sizeof(TEXT_DEFLATE_INFLATE_VERTICES) / sizeof(Vertex),
4237 TEXT_DEFLATE_INFLATE_SEGMENTS, sizeof(TEXT_DEFLATE_INFLATE_SEGMENTS) / sizeof(unsigned short),
4238 TEXT_DEFLATE_INFLATE_CALC, sizeof(TEXT_DEFLATE_INFLATE_CALC) / sizeof(Calculation),
4239 TEXT_DEFLATE_INFLATE_DEFAULT_ADJUST, sizeof(TEXT_DEFLATE_INFLATE_DEFAULT_ADJUST) / sizeof(int),
4240 TEXT_DEFLATE_INFLATE_TRS, sizeof(TEXT_DEFLATE_INFLATE_TRS) / sizeof(TextRectangle),
4241 21600, 21600,
4242 nullptr, 0);
4243
4244 const Vertex TEXT_DEFLATE_INFLATE_DEFLATE_VERTICES[] =
4245 {
4246 {0, 0}, {21600, 0}, {0, 6600}, {3600, CALCULATED_VALUE(3)}, {7250, CALCULATED_VALUE(4)}, {10800, CALCULATED_VALUE(4)}, {14350, CALCULATED_VALUE(4)}, {18000, CALCULATED_VALUE(3)}, {21600, 6600}, {0, 7500}, {3600, CALCULATED_VALUE(5)}, {7250, CALCULATED_VALUE(6)}, {10800, CALCULATED_VALUE(6)}, {14350, CALCULATED_VALUE(6)}, {18000, CALCULATED_VALUE(5)}, {21600, 7500}, {0, 14100}, {3600, CALCULATED_VALUE(9)}, {7250, CALCULATED_VALUE(10)}, {10800, CALCULATED_VALUE(10)}, {14350, CALCULATED_VALUE(10)}, {18000, CALCULATED_VALUE(9)}, {21600, 14100}, {0, 15000}, {3600, CALCULATED_VALUE(7)}, {7250, CALCULATED_VALUE(8)}, {10800, CALCULATED_VALUE(8)}, {14350, CALCULATED_VALUE(8)}, {18000, CALCULATED_VALUE(7)}, {21600, 15000}, {0, 21600}, {21600, 21600}
4247 };
4248
4249 const unsigned short TEXT_DEFLATE_INFLATE_DEFLATE_SEGMENTS[] =
4250 {
4251 0x4000, 0x0001, 0x8000, 0x4000, 0x2002, 0x8000, 0x4000, 0x2002, 0x8000, 0x4000, 0x2002, 0x8000, 0x4000, 0x2002, 0x8000, 0x4000, 0x0001, 0x8000
4252 };
4253
4254 const Calculation TEXT_DEFLATE_INFLATE_DEFLATE_CALC[] =
4255 {
4256 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 850}, {0x2001, 0x400, 6120, 8700}, {0x2000, 0x401, 0, 4280}, {0x4000, 6600, 0x402, 0}, {0x2000, PROP_ADJUST_VAL_FIRST, 0, 450}, {0x2000, 0x403, 900, 0}, {0x2000, 0x404, 900, 0}, {0x8000, 21600, 0, 0x403}, {0x8000, 21600, 0, 0x404}, {0x8000, 21600, 0, 0x405}, {0x8000, 21600, 0, 0x406}
4257 };
4258
4259 const TextRectangle TEXT_DEFLATE_INFLATE_DEFLATE_TRS[] =
4260 {
4261 { {0, 0}, {21600, 21600} }
4262 };
4263
4264 const int TEXT_DEFLATE_INFLATE_DEFLATE_DEFAULT_ADJUST[] =
4265 {
4266 6050
4267 };
4268
4269 const CustomShape CS_TEXT_DEFLATE_INFLATE_DEFLATE(
4270 TEXT_DEFLATE_INFLATE_DEFLATE_VERTICES, sizeof(TEXT_DEFLATE_INFLATE_DEFLATE_VERTICES) / sizeof(Vertex),
4271 TEXT_DEFLATE_INFLATE_DEFLATE_SEGMENTS, sizeof(TEXT_DEFLATE_INFLATE_DEFLATE_SEGMENTS) / sizeof(unsigned short),
4272 TEXT_DEFLATE_INFLATE_DEFLATE_CALC, sizeof(TEXT_DEFLATE_INFLATE_DEFLATE_CALC) / sizeof(Calculation),
4273 TEXT_DEFLATE_INFLATE_DEFLATE_DEFAULT_ADJUST, sizeof(TEXT_DEFLATE_INFLATE_DEFLATE_DEFAULT_ADJUST) / sizeof(int),
4274 TEXT_DEFLATE_INFLATE_DEFLATE_TRS, sizeof(TEXT_DEFLATE_INFLATE_DEFLATE_TRS) / sizeof(TextRectangle),
4275 21600, 21600,
4276 nullptr, 0);
4277
4278 const Vertex TEXT_FADE_RIGHT_VERTICES[] =
4279 {
4280 {0, 0}, {21600, CALCULATED_VALUE(0)}, {0, 21600}, {21600, CALCULATED_VALUE(1)}
4281 };
4282
4283 const unsigned short TEXT_FADE_RIGHT_SEGMENTS[] =
4284 {
4285 0x4000, 0x0001, 0x8000, 0x4000, 0x0001, 0x8000
4286 };
4287
4288 const Calculation TEXT_FADE_RIGHT_CALC[] =
4289 {
4290 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST}
4291 };
4292
4293 const TextRectangle TEXT_FADE_RIGHT_TRS[] =
4294 {
4295 { {0, 0}, {21600, 21600} }
4296 };
4297
4298 const int TEXT_FADE_RIGHT_DEFAULT_ADJUST[] =
4299 {
4300 7200
4301 };
4302
4303 const CustomShape CS_TEXT_FADE_RIGHT(
4304 TEXT_FADE_RIGHT_VERTICES, sizeof(TEXT_FADE_RIGHT_VERTICES) / sizeof(Vertex),
4305 TEXT_FADE_RIGHT_SEGMENTS, sizeof(TEXT_FADE_RIGHT_SEGMENTS) / sizeof(unsigned short),
4306 TEXT_FADE_RIGHT_CALC, sizeof(TEXT_FADE_RIGHT_CALC) / sizeof(Calculation),
4307 TEXT_FADE_RIGHT_DEFAULT_ADJUST, sizeof(TEXT_FADE_RIGHT_DEFAULT_ADJUST) / sizeof(int),
4308 TEXT_FADE_RIGHT_TRS, sizeof(TEXT_FADE_RIGHT_TRS) / sizeof(TextRectangle),
4309 21600, 21600,
4310 nullptr, 0);
4311
4312 const Vertex TEXT_FADE_LEFT_VERTICES[] =
4313 {
4314 {0, CALCULATED_VALUE(0)}, {21600, 0}, {0, CALCULATED_VALUE(1)}, {21600, 21600}
4315 };
4316
4317 const unsigned short TEXT_FADE_LEFT_SEGMENTS[] =
4318 {
4319 0x4000, 0x0001, 0x8000, 0x4000, 0x0001, 0x8000
4320 };
4321
4322 const Calculation TEXT_FADE_LEFT_CALC[] =
4323 {
4324 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST}
4325 };
4326
4327 const TextRectangle TEXT_FADE_LEFT_TRS[] =
4328 {
4329 { {0, 0}, {21600, 21600} }
4330 };
4331
4332 const int TEXT_FADE_LEFT_DEFAULT_ADJUST[] =
4333 {
4334 7200
4335 };
4336
4337 const CustomShape CS_TEXT_FADE_LEFT(
4338 TEXT_FADE_LEFT_VERTICES, sizeof(TEXT_FADE_LEFT_VERTICES) / sizeof(Vertex),
4339 TEXT_FADE_LEFT_SEGMENTS, sizeof(TEXT_FADE_LEFT_SEGMENTS) / sizeof(unsigned short),
4340 TEXT_FADE_LEFT_CALC, sizeof(TEXT_FADE_LEFT_CALC) / sizeof(Calculation),
4341 TEXT_FADE_LEFT_DEFAULT_ADJUST, sizeof(TEXT_FADE_LEFT_DEFAULT_ADJUST) / sizeof(int),
4342 TEXT_FADE_LEFT_TRS, sizeof(TEXT_FADE_LEFT_TRS) / sizeof(TextRectangle),
4343 21600, 21600,
4344 nullptr, 0);
4345
4346 const Vertex TEXT_FADE_UP_VERTICES[] =
4347 {
4348 {CALCULATED_VALUE(0), 0}, {CALCULATED_VALUE(1), 0}, {0, 21600}, {21600, 21600}
4349 };
4350
4351 const unsigned short TEXT_FADE_UP_SEGMENTS[] =
4352 {
4353 0x4000, 0x0001, 0x8000, 0x4000, 0x0001, 0x8000
4354 };
4355
4356 const Calculation TEXT_FADE_UP_CALC[] =
4357 {
4358 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST}
4359 };
4360
4361 const TextRectangle TEXT_FADE_UP_TRS[] =
4362 {
4363 { {0, 0}, {21600, 21600} }
4364 };
4365
4366 const int TEXT_FADE_UP_DEFAULT_ADJUST[] =
4367 {
4368 7200
4369 };
4370
4371 const CustomShape CS_TEXT_FADE_UP(
4372 TEXT_FADE_UP_VERTICES, sizeof(TEXT_FADE_UP_VERTICES) / sizeof(Vertex),
4373 TEXT_FADE_UP_SEGMENTS, sizeof(TEXT_FADE_UP_SEGMENTS) / sizeof(unsigned short),
4374 TEXT_FADE_UP_CALC, sizeof(TEXT_FADE_UP_CALC) / sizeof(Calculation),
4375 TEXT_FADE_UP_DEFAULT_ADJUST, sizeof(TEXT_FADE_UP_DEFAULT_ADJUST) / sizeof(int),
4376 TEXT_FADE_UP_TRS, sizeof(TEXT_FADE_UP_TRS) / sizeof(TextRectangle),
4377 21600, 21600,
4378 nullptr, 0);
4379
4380 const Vertex TEXT_FADE_DOWN_VERTICES[] =
4381 {
4382 {0, 0}, {21600, 0}, {CALCULATED_VALUE(0), 21600}, {CALCULATED_VALUE(1), 21600}
4383 };
4384
4385 const unsigned short TEXT_FADE_DOWN_SEGMENTS[] =
4386 {
4387 0x4000, 0x0001, 0x8000, 0x4000, 0x0001, 0x8000
4388 };
4389
4390 const Calculation TEXT_FADE_DOWN_CALC[] =
4391 {
4392 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST}
4393 };
4394
4395 const TextRectangle TEXT_FADE_DOWN_TRS[] =
4396 {
4397 { {0, 0}, {21600, 21600} }
4398 };
4399
4400 const int TEXT_FADE_DOWN_DEFAULT_ADJUST[] =
4401 {
4402 7200
4403 };
4404
4405 const CustomShape CS_TEXT_FADE_DOWN(
4406 TEXT_FADE_DOWN_VERTICES, sizeof(TEXT_FADE_DOWN_VERTICES) / sizeof(Vertex),
4407 TEXT_FADE_DOWN_SEGMENTS, sizeof(TEXT_FADE_DOWN_SEGMENTS) / sizeof(unsigned short),
4408 TEXT_FADE_DOWN_CALC, sizeof(TEXT_FADE_DOWN_CALC) / sizeof(Calculation),
4409 TEXT_FADE_DOWN_DEFAULT_ADJUST, sizeof(TEXT_FADE_DOWN_DEFAULT_ADJUST) / sizeof(int),
4410 TEXT_FADE_DOWN_TRS, sizeof(TEXT_FADE_DOWN_TRS) / sizeof(TextRectangle),
4411 21600, 21600,
4412 nullptr, 0);
4413
4414 const Vertex TEXT_SLANT_UP_VERTICES[] =
4415 {
4416 {0, CALCULATED_VALUE(0)}, {21600, 0}, {0, 21600}, {21600, CALCULATED_VALUE(1)}
4417 };
4418
4419 const unsigned short TEXT_SLANT_UP_SEGMENTS[] =
4420 {
4421 0x4000, 0x0001, 0x8000, 0x4000, 0x0001, 0x8000
4422 };
4423
4424 const Calculation TEXT_SLANT_UP_CALC[] =
4425 {
4426 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST}
4427 };
4428
4429 const TextRectangle TEXT_SLANT_UP_TRS[] =
4430 {
4431 { {0, 0}, {21600, 21600} }
4432 };
4433
4434 const int TEXT_SLANT_UP_DEFAULT_ADJUST[] =
4435 {
4436 12000
4437 };
4438
4439 const CustomShape CS_TEXT_SLANT_UP(
4440 TEXT_SLANT_UP_VERTICES, sizeof(TEXT_SLANT_UP_VERTICES) / sizeof(Vertex),
4441 TEXT_SLANT_UP_SEGMENTS, sizeof(TEXT_SLANT_UP_SEGMENTS) / sizeof(unsigned short),
4442 TEXT_SLANT_UP_CALC, sizeof(TEXT_SLANT_UP_CALC) / sizeof(Calculation),
4443 TEXT_SLANT_UP_DEFAULT_ADJUST, sizeof(TEXT_SLANT_UP_DEFAULT_ADJUST) / sizeof(int),
4444 TEXT_SLANT_UP_TRS, sizeof(TEXT_SLANT_UP_TRS) / sizeof(TextRectangle),
4445 21600, 21600,
4446 nullptr, 0);
4447
4448 const Vertex TEXT_SLANT_DOWN_VERTICES[] =
4449 {
4450 {0, 0}, {21600, CALCULATED_VALUE(1)}, {0, CALCULATED_VALUE(0)}, {21600, 21600}
4451 };
4452
4453 const unsigned short TEXT_SLANT_DOWN_SEGMENTS[] =
4454 {
4455 0x4000, 0x0001, 0x8000, 0x4000, 0x0001, 0x8000
4456 };
4457
4458 const Calculation TEXT_SLANT_DOWN_CALC[] =
4459 {
4460 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST}
4461 };
4462
4463 const TextRectangle TEXT_SLANT_DOWN_TRS[] =
4464 {
4465 { {0, 0}, {21600, 21600} }
4466 };
4467
4468 const int TEXT_SLANT_DOWN_DEFAULT_ADJUST[] =
4469 {
4470 12000
4471 };
4472
4473 const CustomShape CS_TEXT_SLANT_DOWN(
4474 TEXT_SLANT_DOWN_VERTICES, sizeof(TEXT_SLANT_DOWN_VERTICES) / sizeof(Vertex),
4475 TEXT_SLANT_DOWN_SEGMENTS, sizeof(TEXT_SLANT_DOWN_SEGMENTS) / sizeof(unsigned short),
4476 TEXT_SLANT_DOWN_CALC, sizeof(TEXT_SLANT_DOWN_CALC) / sizeof(Calculation),
4477 TEXT_SLANT_DOWN_DEFAULT_ADJUST, sizeof(TEXT_SLANT_DOWN_DEFAULT_ADJUST) / sizeof(int),
4478 TEXT_SLANT_DOWN_TRS, sizeof(TEXT_SLANT_DOWN_TRS) / sizeof(TextRectangle),
4479 21600, 21600,
4480 nullptr, 0);
4481
4482 const Vertex TEXT_CAN_UP_VERTICES[] =
4483 {
4484 {0, CALCULATED_VALUE(1)}, {900, 0}, {7100, 0}, {10800, 0}, {14500, 0}, {20700, 0}, {21600, CALCULATED_VALUE(1)}, {0, 21600}, {900, CALCULATED_VALUE(4)}, {7100, CALCULATED_VALUE(0)}, {10800, CALCULATED_VALUE(0)}, {14500, CALCULATED_VALUE(0)}, {20700, CALCULATED_VALUE(4)}, {21600, 21600}
4485 };
4486
4487 const unsigned short TEXT_CAN_UP_SEGMENTS[] =
4488 {
4489 0x4000, 0x2002, 0x8000, 0x4000, 0x2002, 0x8000
4490 };
4491
4492 const Calculation TEXT_CAN_UP_CALC[] =
4493 {
4494 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST}, {0x2000, PROP_ADJUST_VAL_FIRST, 0, 14400}, {0x4001, 5470, 0x402, 7200}, {0x4000, 16130, 0x403, 0}
4495 };
4496
4497 const TextRectangle TEXT_CAN_UP_TRS[] =
4498 {
4499 { {0, 0}, {21600, 21600} }
4500 };
4501
4502 const int TEXT_CAN_UP_DEFAULT_ADJUST[] =
4503 {
4504 18500
4505 };
4506
4507 const CustomShape CS_TEXT_CAN_UP(
4508 TEXT_CAN_UP_VERTICES, sizeof(TEXT_CAN_UP_VERTICES) / sizeof(Vertex),
4509 TEXT_CAN_UP_SEGMENTS, sizeof(TEXT_CAN_UP_SEGMENTS) / sizeof(unsigned short),
4510 TEXT_CAN_UP_CALC, sizeof(TEXT_CAN_UP_CALC) / sizeof(Calculation),
4511 TEXT_CAN_UP_DEFAULT_ADJUST, sizeof(TEXT_CAN_UP_DEFAULT_ADJUST) / sizeof(int),
4512 TEXT_CAN_UP_TRS, sizeof(TEXT_CAN_UP_TRS) / sizeof(TextRectangle),
4513 21600, 21600,
4514 nullptr, 0);
4515
4516 const Vertex TEXT_CAN_DOWN_VERTICES[] =
4517 {
4518 {0, 0}, {900, CALCULATED_VALUE(2)}, {7100, CALCULATED_VALUE(0)}, {10800, CALCULATED_VALUE(0)}, {14500, CALCULATED_VALUE(0)}, {20700, CALCULATED_VALUE(2)}, {21600, 0}, {0, CALCULATED_VALUE(1)}, {900, 21600}, {7100, 21600}, {10800, 21600}, {14500, 21600}, {20700, 21600}, {21600, CALCULATED_VALUE(1)}
4519 };
4520
4521 const unsigned short TEXT_CAN_DOWN_SEGMENTS[] =
4522 {
4523 0x4000, 0x2002, 0x8000, 0x4000, 0x2002, 0x8000
4524 };
4525
4526 const Calculation TEXT_CAN_DOWN_CALC[] =
4527 {
4528 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST}, {0x4001, 5470, 0x400, 7200}
4529 };
4530
4531 const TextRectangle TEXT_CAN_DOWN_TRS[] =
4532 {
4533 { {0, 0}, {21600, 21600} }
4534 };
4535
4536 const int TEXT_CAN_DOWN_DEFAULT_ADJUST[] =
4537 {
4538 3100
4539 };
4540
4541 const CustomShape CS_TEXT_CAN_DOWN(
4542 TEXT_CAN_DOWN_VERTICES, sizeof(TEXT_CAN_DOWN_VERTICES) / sizeof(Vertex),
4543 TEXT_CAN_DOWN_SEGMENTS, sizeof(TEXT_CAN_DOWN_SEGMENTS) / sizeof(unsigned short),
4544 TEXT_CAN_DOWN_CALC, sizeof(TEXT_CAN_DOWN_CALC) / sizeof(Calculation),
4545 TEXT_CAN_DOWN_DEFAULT_ADJUST, sizeof(TEXT_CAN_DOWN_DEFAULT_ADJUST) / sizeof(int),
4546 TEXT_CAN_DOWN_TRS, sizeof(TEXT_CAN_DOWN_TRS) / sizeof(TextRectangle),
4547 21600, 21600,
4548 nullptr, 0);
4549
4550 const Vertex FLOW_CHART_ALTERNATE_PROCESS_VERTICES[] =
4551 {
4552 {0, CALCULATED_VALUE(2)}, {CALCULATED_VALUE(0), 0}, {CALCULATED_VALUE(1), 0}, {21600, CALCULATED_VALUE(2)}, {21600, CALCULATED_VALUE(3)}, {CALCULATED_VALUE(1), 21600}, {CALCULATED_VALUE(0), 21600}, {0, CALCULATED_VALUE(3)}
4553 };
4554
4555 const unsigned short FLOW_CHART_ALTERNATE_PROCESS_SEGMENTS[] =
4556 {
4557 0x4000, 0xa801, 0x0001, 0xa701, 0x0001, 0xa801, 0x0001, 0xa701, 0x6000, 0x8000
4558 };
4559
4560 const Calculation FLOW_CHART_ALTERNATE_PROCESS_CALC[] =
4561 {
4562 {0x2000, PROP_GEO_LEFT, 2540, 0}, {0x2000, PROP_GEO_RIGHT, 0, 2540}, {0x2000, PROP_GEO_TOP, 2540, 0}, {0x2000, PROP_GEO_BOTTOM, 0, 2540}, {0x2000, PROP_GEO_LEFT, 800, 0}, {0x2000, PROP_GEO_RIGHT, 0, 800}, {0x2000, PROP_GEO_TOP, 800, 0}, {0x2000, PROP_GEO_BOTTOM, 0, 800}
4563 };
4564
4565 const TextRectangle FLOW_CHART_ALTERNATE_PROCESS_TRS[] =
4566 {
4567 { {CALCULATED_VALUE(4), CALCULATED_VALUE(6)}, {CALCULATED_VALUE(5), CALCULATED_VALUE(7)} }
4568 };
4569
4570 const Vertex FLOW_CHART_ALTERNATE_PROCESS_GLUE_POINTS[] =
4571 {
4572 {0, 10800}, {10800, 0}, {21600, 10800}, {10800, 21600}
4573 };
4574
4575 const CustomShape CS_FLOW_CHART_ALTERNATE_PROCESS(
4576 FLOW_CHART_ALTERNATE_PROCESS_VERTICES, sizeof(FLOW_CHART_ALTERNATE_PROCESS_VERTICES) / sizeof(Vertex),
4577 FLOW_CHART_ALTERNATE_PROCESS_SEGMENTS, sizeof(FLOW_CHART_ALTERNATE_PROCESS_SEGMENTS) / sizeof(unsigned short),
4578 FLOW_CHART_ALTERNATE_PROCESS_CALC, sizeof(FLOW_CHART_ALTERNATE_PROCESS_CALC) / sizeof(Calculation),
4579 nullptr, 0,
4580 FLOW_CHART_ALTERNATE_PROCESS_TRS, sizeof(FLOW_CHART_ALTERNATE_PROCESS_TRS) / sizeof(TextRectangle),
4581 21600, 21600,
4582 FLOW_CHART_ALTERNATE_PROCESS_GLUE_POINTS, sizeof(FLOW_CHART_ALTERNATE_PROCESS_GLUE_POINTS) / sizeof(Vertex));
4583
4584 const Vertex FLOW_CHART_OFFPAGE_CONNECTOR_VERTICES[] =
4585 {
4586 {0, 0}, {21600, 0}, {21600, 17150}, {10800, 21600}, {0, 17150}, {0, 0}
4587 };
4588
4589 const TextRectangle FLOW_CHART_OFFPAGE_CONNECTOR_TRS[] =
4590 {
4591 { {0, 0}, {21600, 17150} }
4592 };
4593
4594 const Vertex FLOW_CHART_OFFPAGE_CONNECTOR_GLUE_POINTS[] =
4595 {
4596 {10800, 0}, {0, 10800}, {10800, 21600}, {21600, 10800}
4597 };
4598
4599 const CustomShape CS_FLOW_CHART_OFFPAGE_CONNECTOR(
4600 FLOW_CHART_OFFPAGE_CONNECTOR_VERTICES, sizeof(FLOW_CHART_OFFPAGE_CONNECTOR_VERTICES) / sizeof(Vertex),
4601 nullptr, 0,
4602 nullptr, 0,
4603 nullptr, 0,
4604 FLOW_CHART_OFFPAGE_CONNECTOR_TRS, sizeof(FLOW_CHART_OFFPAGE_CONNECTOR_TRS) / sizeof(TextRectangle),
4605 21600, 21600,
4606 FLOW_CHART_OFFPAGE_CONNECTOR_GLUE_POINTS, sizeof(FLOW_CHART_OFFPAGE_CONNECTOR_GLUE_POINTS) / sizeof(Vertex));
4607
4608 const Vertex LEFT_RIGHT_UP_ARROW_VERTICES[] =
4609 {
4610 {10800, 0}, {CALCULATED_VALUE(3), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(4), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(4), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(5), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(5), CALCULATED_VALUE(0)}, {21600, 10800}, {CALCULATED_VALUE(5), CALCULATED_VALUE(3)}, {CALCULATED_VALUE(5), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(3)}, {0, 10800}, {CALCULATED_VALUE(2), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(2), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(2)}
4611 };
4612
4613 const unsigned short LEFT_RIGHT_UP_ARROW_SEGMENTS[] =
4614 {
4615 0x4000, 0x0010, 0x6001, 0x8000
4616 };
4617
4618 const Calculation LEFT_RIGHT_UP_ARROW_CALC[] =
4619 {
4620 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x6001, 0x0403, PROP_ADJUST_VAL_FIRST + 2, 21600}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST + 1}, {0x8000, 21600, 0, 0x0402}
4621 };
4622
4623 const TextRectangle LEFT_RIGHT_UP_ARROW_TRS[] =
4624 {
4625 { {0, 0}, {21600, 21600} }
4626 };
4627
4628 const int LEFT_RIGHT_UP_ARROW_DEFAULT_ADJUST[] =
4629 {
4630 6500, 8600, 6200
4631 };
4632
4633 const CustomShape CS_LEFT_RIGHT_UP_ARROW(
4634 LEFT_RIGHT_UP_ARROW_VERTICES, sizeof(LEFT_RIGHT_UP_ARROW_VERTICES) / sizeof(Vertex),
4635 LEFT_RIGHT_UP_ARROW_SEGMENTS, sizeof(LEFT_RIGHT_UP_ARROW_SEGMENTS) / sizeof(unsigned short),
4636 LEFT_RIGHT_UP_ARROW_CALC, sizeof(LEFT_RIGHT_UP_ARROW_CALC) / sizeof(Calculation),
4637 LEFT_RIGHT_UP_ARROW_DEFAULT_ADJUST, sizeof(LEFT_RIGHT_UP_ARROW_DEFAULT_ADJUST) / sizeof(int),
4638 LEFT_RIGHT_UP_ARROW_TRS, sizeof(LEFT_RIGHT_UP_ARROW_TRS) / sizeof(TextRectangle),
4639 21600, 21600,
4640 nullptr, 0);
4641
4642 const Vertex SUN_VERTICES[] =
4643 {
4644 {0, 10800}, {CALCULATED_VALUE(4), CALCULATED_VALUE(8)}, {CALCULATED_VALUE(4), CALCULATED_VALUE(9)}, {CALCULATED_VALUE(0x0a), CALCULATED_VALUE(0x0b)}, {CALCULATED_VALUE(0x0c), CALCULATED_VALUE(0x0d)}, {CALCULATED_VALUE(0x0e), CALCULATED_VALUE(0x0f)}, {CALCULATED_VALUE(0x10), CALCULATED_VALUE(0x11)}, {CALCULATED_VALUE(0x12), CALCULATED_VALUE(0x13)}, {CALCULATED_VALUE(0x14), CALCULATED_VALUE(0x15)}, {CALCULATED_VALUE(0x16), CALCULATED_VALUE(0x17)}, {CALCULATED_VALUE(0x18), CALCULATED_VALUE(0x19)}, {CALCULATED_VALUE(0x1a), CALCULATED_VALUE(0x1b)}, {CALCULATED_VALUE(0x1c), CALCULATED_VALUE(0x1d)}, {CALCULATED_VALUE(0x1e), CALCULATED_VALUE(0x1f)}, {CALCULATED_VALUE(0x20), CALCULATED_VALUE(0x21)}, {CALCULATED_VALUE(0x22), CALCULATED_VALUE(0x23)}, {CALCULATED_VALUE(0x24), CALCULATED_VALUE(0x25)}, {CALCULATED_VALUE(0x26), CALCULATED_VALUE(0x27)}, {CALCULATED_VALUE(0x28), CALCULATED_VALUE(0x29)}, {CALCULATED_VALUE(0x2a), CALCULATED_VALUE(0x2b)}, {CALCULATED_VALUE(0x2c), CALCULATED_VALUE(0x2d)}, {CALCULATED_VALUE(0x2e), CALCULATED_VALUE(0x2f)}, {CALCULATED_VALUE(0x30), CALCULATED_VALUE(0x31)}, {CALCULATED_VALUE(0x32), CALCULATED_VALUE(0x33)}, {10800, 10800}, {CALCULATED_VALUE(0x36), CALCULATED_VALUE(0x36)}, {0, 360}
4645 };
4646
4647 const unsigned short SUN_SEGMENTS[] =
4648 {
4649 0x4000, 0x0002, 0x6001, 0x8000, 0x4000, 0x0002, 0x6001, 0x8000, 0x4000, 0x0002, 0x6001, 0x8000, 0x4000, 0x0002, 0x6001, 0x8000, 0x4000, 0x0002, 0x6001, 0x8000, 0x4000, 0x0002, 0x6001, 0x8000, 0x4000, 0x0002, 0x6001, 0x8000, 0x4000, 0x0002, 0x6001, 0x8000, 0xa203, 0x6000, 0x8000
4650 };
4651
4652 const Calculation SUN_CALC[] =
4653 {
4654 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST}, {0x2000, PROP_ADJUST_VAL_FIRST, 0, 2700}, {0x2001, 0x402, 5080, 7425}, {0x2000, 0x403, 2540, 0}, {0x8000, 10125, 0, PROP_ADJUST_VAL_FIRST}, {0x2001, 0x405, 2120, 7425}, {0x2000, 0x406, 210, 0}, {0x4000, 10800, 0x407, 0}, {0x8000, 10800, 0, 0x407}, {0x0081, 0, 10800, 45}, {0x0082, 0, 10800, 45}, {0x6081, 0x404, 0x408, 45}, {0x6082, 0x404, 0x408, 45}, {0x6081, 0x404, 0x409, 45}, {0x6082, 0x404, 0x409, 45}, {0x0081, 0, 10800, 90}, {0x0082, 0, 10800, 90}, {0x6081, 0x404, 0x408, 90}, {0x6082, 0x404, 0x408, 90}, {0x6081, 0x404, 0x409, 90}, {0x6082, 0x404, 0x409, 90}, {0x0081, 0, 10800, 135}, {0x0082, 0, 10800, 135}, {0x6081, 0x404, 0x408, 135}, {0x6082, 0x404, 0x408, 135}, {0x6081, 0x404, 0x409, 135}, {0x6082, 0x404, 0x409, 135}, {0x0081, 0, 10800, 180}, {0x0082, 0, 10800, 180}, {0x6081, 0x404, 0x408, 180}, {0x6082, 0x404, 0x408, 180}, {0x6081, 0x404, 0x409, 180}, {0x6082, 0x404, 0x409, 180}, {0x0081, 0, 10800, 225}, {0x0082, 0, 10800, 225}, {0x6081, 0x404, 0x408, 225}, {0x6082, 0x404, 0x408, 225}, {0x6081, 0x404, 0x409, 225}, {0x6082, 0x404, 0x409, 225}, {0x0081, 0, 10800, 270}, {0x0082, 0, 10800, 270}, {0x6081, 0x404, 0x408, 270}, {0x6082, 0x404, 0x408, 270}, {0x6081, 0x404, 0x409, 270}, {0x6082, 0x404, 0x409, 270}, {0x0081, 0, 10800, 315}, {0x0082, 0, 10800, 315}, {0x6081, 0x404, 0x408, 315}, {0x6082, 0x404, 0x408, 315}, {0x6081, 0x404, 0x409, 315}, {0x6082, 0x404, 0x409, 315}, {0x2081, PROP_ADJUST_VAL_FIRST, 10800, 45}, {0x2081, PROP_ADJUST_VAL_FIRST, 10800, 225}, {0x8000, 10800, 0, PROP_ADJUST_VAL_FIRST}
4655 };
4656
4657 const TextRectangle SUN_TRS[] =
4658 {
4659 { {CALCULATED_VALUE(0x34), CALCULATED_VALUE(0x34)}, {CALCULATED_VALUE(0x35), CALCULATED_VALUE(0x35)} }
4660 };
4661
4662 const int SUN_DEFAULT_ADJUST[] =
4663 {
4664 5400
4665 };
4666
4667 const Vertex SUN_GLUE_POINTS[] =
4668 {
4669 {10800, 0}, {0, 10800}, {10800, 21600}, {21600, 10800}
4670 };
4671
4672 const CustomShape CS_SUN(
4673 SUN_VERTICES, sizeof(SUN_VERTICES) / sizeof(Vertex),
4674 SUN_SEGMENTS, sizeof(SUN_SEGMENTS) / sizeof(unsigned short),
4675 SUN_CALC, sizeof(SUN_CALC) / sizeof(Calculation),
4676 SUN_DEFAULT_ADJUST, sizeof(SUN_DEFAULT_ADJUST) / sizeof(int),
4677 SUN_TRS, sizeof(SUN_TRS) / sizeof(TextRectangle),
4678 21600, 21600,
4679 SUN_GLUE_POINTS, sizeof(SUN_GLUE_POINTS) / sizeof(Vertex));
4680
4681 const Vertex MOON_VERTICES[] =
4682 {
4683 {21600, 0}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(0), 5080}, {CALCULATED_VALUE(0), 10800}, {CALCULATED_VALUE(0), 16520}, {CALCULATED_VALUE(3), CALCULATED_VALUE(5)}, {21600, 21600}, {9740, 21600}, {0, 16730}, {0, 10800}, {0, 4870}, {9740, 0}, {21600, 0}
4684 };
4685
4686 const unsigned short MOON_SEGMENTS[] =
4687 {
4688 0x4000, 0x2004, 0x6000, 0x8000
4689 };
4690
4691 const Calculation MOON_CALC[] =
4692 {
4693 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x8000, 21600, 0, PROP_ADJUST_VAL_FIRST}, {0x2001, 0x401, 1, 2}, {0x6000, 0x402, PROP_ADJUST_VAL_FIRST, 0}, {0x2001, PROP_ADJUST_VAL_FIRST, 1794, 10000}, {0x8000, 21600, 0, 0x0404}, {0x2001, PROP_ADJUST_VAL_FIRST, 400, 18900}, {0x8081, 0, 10800, 0x406}, {0x8082, 0, 10800, 0x406}, {0x6000, 0x407, 0x407, 0}, {0x8000, 21600, 0, 0x408}
4694 };
4695
4696 const TextRectangle MOON_TRS[] =
4697 {
4698 { {CALCULATED_VALUE(9), CALCULATED_VALUE(8)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(10)} }
4699 };
4700
4701 const int MOON_DEFAULT_ADJUST[] =
4702 {
4703 10800
4704 };
4705
4706 const Vertex MOON_GLUE_POINTS[] =
4707 {
4708 {21600, 0}, {0, 10800}, {21600, 21600}, {CALCULATED_VALUE(0), 10800}
4709 };
4710
4711 const CustomShape CS_MOON(
4712 MOON_VERTICES, sizeof(MOON_VERTICES) / sizeof(Vertex),
4713 MOON_SEGMENTS, sizeof(MOON_SEGMENTS) / sizeof(unsigned short),
4714 MOON_CALC, sizeof(MOON_CALC) / sizeof(Calculation),
4715 MOON_DEFAULT_ADJUST, sizeof(MOON_DEFAULT_ADJUST) / sizeof(int),
4716 MOON_TRS, sizeof(MOON_TRS) / sizeof(TextRectangle),
4717 21600, 21600,
4718 MOON_GLUE_POINTS, sizeof(MOON_GLUE_POINTS) / sizeof(Vertex));
4719
4720 const Vertex BRACKET_PAIR_VERTICES[] =
4721 {
4722 {CALCULATED_VALUE(0), 0}, {0, CALCULATED_VALUE(1)}, {0, CALCULATED_VALUE(2)}, {CALCULATED_VALUE(0), 21600}, {CALCULATED_VALUE(3), 21600}, {21600, CALCULATED_VALUE(2)}, {21600, CALCULATED_VALUE(1)}, {CALCULATED_VALUE(3), 0}
4723 };
4724
4725 const unsigned short BRACKET_PAIR_SEGMENTS[] =
4726 {
4727 0x4000, 0xa701, 0x0001, 0xa801, 0x8000, 0x4000, 0xa701, 0x0001, 0xa801, 0x8000
4728 };
4729
4730 const Calculation BRACKET_PAIR_CALC[] =
4731 {
4732 {0x6000, PROP_GEO_LEFT, PROP_ADJUST_VAL_FIRST, 0}, {0x6000, PROP_GEO_TOP, PROP_ADJUST_VAL_FIRST, 0}, {0xa000, PROP_GEO_BOTTOM, 0, PROP_ADJUST_VAL_FIRST}, {0xa000, PROP_GEO_RIGHT, 0, PROP_ADJUST_VAL_FIRST}, {0x2082, PROP_ADJUST_VAL_FIRST, 0, 45}, {0x2000, 0x404, 0, 10800}, {0x8000, 0, 0, PROP_ADJUST_VAL_FIRST}, {0xa000, 0x406, 0, 0x405}, {0xa000, PROP_GEO_LEFT, 0, 0x407}, {0xa000, PROP_GEO_TOP, 0, 0x407}, {0x6000, PROP_GEO_RIGHT, 0x407, 0}, {0x6000, PROP_GEO_BOTTOM, 0x407, 0}, {0xa000, PROP_GEO_LEFT, 0, 0x405}, {0xa000, PROP_GEO_TOP, 0, 0x405}, {0x6000, PROP_GEO_RIGHT, 0x405, 0}, {0x6000, PROP_GEO_BOTTOM, 0x405, 0}
4733 };
4734
4735 const TextRectangle BRACKET_PAIR_TRS[] =
4736 {
4737 { {CALCULATED_VALUE(8), CALCULATED_VALUE(9)}, {CALCULATED_VALUE(10), CALCULATED_VALUE(11)} }
4738 };
4739
4740 const int BRACKET_PAIR_DEFAULT_ADJUST[] =
4741 {
4742 3700
4743 };
4744
4745 const Vertex BRACKET_PAIR_GLUE_POINTS[] =
4746 {
4747 {10800, 0}, {0, 10800}, {10800, 21600}, {21600, 10800}
4748 };
4749
4750 const CustomShape CS_BRACKET_PAIR(
4751 BRACKET_PAIR_VERTICES, sizeof(BRACKET_PAIR_VERTICES) / sizeof(Vertex),
4752 BRACKET_PAIR_SEGMENTS, sizeof(BRACKET_PAIR_SEGMENTS) / sizeof(unsigned short),
4753 BRACKET_PAIR_CALC, sizeof(BRACKET_PAIR_CALC) / sizeof(Calculation),
4754 BRACKET_PAIR_DEFAULT_ADJUST, sizeof(BRACKET_PAIR_DEFAULT_ADJUST) / sizeof(int),
4755 BRACKET_PAIR_TRS, sizeof(BRACKET_PAIR_TRS) / sizeof(TextRectangle),
4756 21600, 21600,
4757 BRACKET_PAIR_GLUE_POINTS, sizeof(BRACKET_PAIR_GLUE_POINTS) / sizeof(Vertex));
4758
4759 const Vertex BRACE_PAIR_VERTICES[] =
4760 {
4761 {CALCULATED_VALUE(4), 0}, {CALCULATED_VALUE(0), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(6)}, {0, 10800}, {CALCULATED_VALUE(0), CALCULATED_VALUE(7)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(4), 21600}, {CALCULATED_VALUE(8), 21600}, {CALCULATED_VALUE(3), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(7)}, {21600, 10800}, {CALCULATED_VALUE(3), CALCULATED_VALUE(6)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(8), 0}
4762 };
4763
4764 const unsigned short BRACE_PAIR_SEGMENTS[] =
4765 {
4766 0x4000, 0xa701, 0x0001, 0xa801, 0xa701, 0x0001, 0xa801, 0x8000, 0x4000, 0xa701, 0x0001, 0xa801, 0xa701, 0x0001, 0xa801, 0x8000
4767 };
4768
4769 const Calculation BRACE_PAIR_CALC[] =
4770 {
4771 {0x6000, PROP_GEO_LEFT, PROP_ADJUST_VAL_FIRST, 0}, {0x6000, PROP_GEO_TOP, PROP_ADJUST_VAL_FIRST, 0}, {0xa000, PROP_GEO_BOTTOM, 0, PROP_ADJUST_VAL_FIRST}, {0xa000, PROP_GEO_RIGHT, 0, PROP_ADJUST_VAL_FIRST}, {0x2001, 0x400, 2, 1}, {0x2001, PROP_ADJUST_VAL_FIRST, 2, 1}, {0x8000, 10800, 0, PROP_ADJUST_VAL_FIRST}, {0x8000, 21600, 0, 0x406}, {0xa000, PROP_GEO_RIGHT, 0, 0x405}, {0x2001, PROP_ADJUST_VAL_FIRST, 1, 3}, {0x6000, 0x409, PROP_ADJUST_VAL_FIRST, 0}, {0x6000, PROP_GEO_LEFT, 0x40a, 0}, {0x6000, PROP_GEO_TOP, 0x409, 0}, {0xa000, PROP_GEO_RIGHT, 0, 0x40a}, {0xa000, PROP_GEO_BOTTOM, 0, 0x409}
4772 };
4773
4774 const TextRectangle BRACE_PAIR_TRS[] =
4775 {
4776 { {CALCULATED_VALUE(11), CALCULATED_VALUE(12)}, {CALCULATED_VALUE(13), CALCULATED_VALUE(14)} }
4777 };
4778
4779 const int BRACE_PAIR_DEFAULT_ADJUST[] =
4780 {
4781 1800
4782 };
4783
4784 const Vertex BRACE_PAIR_GLUE_POINTS[] =
4785 {
4786 {10800, 0}, {0, 10800}, {10800, 21600}, {21600, 10800}
4787 };
4788
4789 const CustomShape CS_BRACE_PAIR(
4790 BRACE_PAIR_VERTICES, sizeof(BRACE_PAIR_VERTICES) / sizeof(Vertex),
4791 BRACE_PAIR_SEGMENTS, sizeof(BRACE_PAIR_SEGMENTS) / sizeof(unsigned short),
4792 BRACE_PAIR_CALC, sizeof(BRACE_PAIR_CALC) / sizeof(Calculation),
4793 BRACE_PAIR_DEFAULT_ADJUST, sizeof(BRACE_PAIR_DEFAULT_ADJUST) / sizeof(int),
4794 BRACE_PAIR_TRS, sizeof(BRACE_PAIR_TRS) / sizeof(TextRectangle),
4795 21600, 21600,
4796 BRACE_PAIR_GLUE_POINTS, sizeof(BRACE_PAIR_GLUE_POINTS) / sizeof(Vertex));
4797
4798 const Vertex DOUBLE_WAVE_VERTICES[] =
4799 {
4800 {CALCULATED_VALUE(7), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(15), CALCULATED_VALUE(9)}, {CALCULATED_VALUE(0x1e), CALCULATED_VALUE(10)}, {CALCULATED_VALUE(0x12), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(0x1f), CALCULATED_VALUE(9)}, {CALCULATED_VALUE(16), CALCULATED_VALUE(10)}, {CALCULATED_VALUE(12), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(24), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(25), CALCULATED_VALUE(26)}, {CALCULATED_VALUE(0x21), CALCULATED_VALUE(28)}, {CALCULATED_VALUE(0x13), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(0x20), CALCULATED_VALUE(26)}, {CALCULATED_VALUE(27), CALCULATED_VALUE(28)}, {CALCULATED_VALUE(29), CALCULATED_VALUE(1)}
4801 };
4802
4803 const unsigned short DOUBLE_WAVE_SEGMENTS[] =
4804 {
4805 0x4000, 0x2002, 0x0001, 0x2002, 0x6000, 0x8000
4806 };
4807
4808 const Calculation DOUBLE_WAVE_CALC[] =
4809 {
4810 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x8000, 21600, 0, 0x400}, {0x2000, PROP_ADJUST_VAL_FIRST + 1, 0, 0}, {0x2000, 0x402, 0, 10800}, {0x2001, 0x403, 2, 1}, {0x2003, 0x404, 0, 0}, {0x8000, 4320, 0, 0x405}, {0xa006, 0x403, 0, 0x405}, {0x4001, 7900, 0x400, 2230}, {0xa000, 0x400, 0, 0x408}, {0x6000, 0x400, 0x408, 0}, {0x8000, 21600, 0, 0x404}, {0x6006, 0x403, 0x40b, 21600}, {0xa000, 0x40c, 0, 0x407}, {0x2001, 0x405, 1, 2}, {0xa000, 0x407, 3600, 0x40e}, {0x6000, 0x40c, 0x40e, 3600}, {0x2001, 0x40d, 1, 2}, {0x6000, 0x407, 0x411, 0}, {0x8000, 21600, 0, 0x412}, {0x2001, 0x405, 1, 2}, {0x8000, 21600, 0, 0x414}, {0x2001, 0x400, 2, 1}, {0x8000, 21600, 0, 0x416}, {0x8000, 21600, 0, 0x407}, {0x8000, 21600, 0, 0x40f}, {0x6000, 0x401, 0x408, 0}, {0x8000, 21600, 0, 0x410}, {0xa000, 0x401, 0, 0x408}, {0x8000, 21600, 0, 0x40c}, {0xa000, 0x412, 0, 0x40e}, {0x6000, 0x412, 0x40e, 0}, {0xa000, 0x413, 0, 0x40e}, {0x6000, 0x413, 0x40e, 0}
4811 };
4812
4813 const TextRectangle DOUBLE_WAVE_TRS[] =
4814 {
4815 { {CALCULATED_VALUE(5), CALCULATED_VALUE(22)}, {CALCULATED_VALUE(11), CALCULATED_VALUE(23)} }
4816 };
4817
4818 const int DOUBLE_WAVE_DEFAULT_ADJUST[] =
4819 {
4820 1400, 10800
4821 };
4822
4823 const Vertex DOUBLE_WAVE_GLUE_POINTS[] =
4824 {
4825 {CALCULATED_VALUE(0x12), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(0x14), 10800}, {CALCULATED_VALUE(0x13), CALCULATED_VALUE(1)}, {CALCULATED_VALUE(0x15), 10800}
4826 };
4827
4828 const CustomShape CS_DOUBLE_WAVE(
4829 DOUBLE_WAVE_VERTICES, sizeof(DOUBLE_WAVE_VERTICES) / sizeof(Vertex),
4830 DOUBLE_WAVE_SEGMENTS, sizeof(DOUBLE_WAVE_SEGMENTS) / sizeof(unsigned short),
4831 DOUBLE_WAVE_CALC, sizeof(DOUBLE_WAVE_CALC) / sizeof(Calculation),
4832 DOUBLE_WAVE_DEFAULT_ADJUST, sizeof(DOUBLE_WAVE_DEFAULT_ADJUST) / sizeof(int),
4833 DOUBLE_WAVE_TRS, sizeof(DOUBLE_WAVE_TRS) / sizeof(TextRectangle),
4834 21600, 21600,
4835 DOUBLE_WAVE_GLUE_POINTS, sizeof(DOUBLE_WAVE_GLUE_POINTS) / sizeof(Vertex));
4836
4837 const Vertex ACTION_BUTTON_BLANK_VERTICES[] =
4838 {
4839 {0, 0}, {21600, 0}, {21600, 21600}, {0, 21600}, {0, 0}, {21600, 0}, {CALCULATED_VALUE(1), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(0)}, {21600, 0}, {21600, 21600}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(0)}, {21600, 21600}, {0, 21600}, {CALCULATED_VALUE(0), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {0, 21600}, {0, 0}, {CALCULATED_VALUE(0), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(0), CALCULATED_VALUE(2)}
4840 };
4841
4842 const unsigned short ACTION_BUTTON_BLANK_SEGMENTS[] =
4843 {
4844 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000
4845 };
4846
4847 const Calculation ACTION_BUTTON_BLANK_CALC[] =
4848 {
4849 {0x2001, PROP_ADJUST_VAL_FIRST, 21599, 21600}, {0xa000, PROP_GEO_RIGHT, 0, 0x400}, {0xa000, PROP_GEO_BOTTOM, 0, 0x400}
4850 };
4851
4852 const TextRectangle ACTION_BUTTON_BLANK_TRS[] =
4853 {
4854 { {CALCULATED_VALUE(0), CALCULATED_VALUE(0)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)} }
4855 };
4856
4857 const int ACTION_BUTTON_BLANK_DEFAULT_ADJUST[] =
4858 {
4859 1400
4860 };
4861
4862 const CustomShape CS_ACTION_BUTTON_BLANK(
4863 ACTION_BUTTON_BLANK_VERTICES, sizeof(ACTION_BUTTON_BLANK_VERTICES) / sizeof(Vertex),
4864 ACTION_BUTTON_BLANK_SEGMENTS, sizeof(ACTION_BUTTON_BLANK_SEGMENTS) / sizeof(unsigned short),
4865 ACTION_BUTTON_BLANK_CALC, sizeof(ACTION_BUTTON_BLANK_CALC) / sizeof(Calculation),
4866 ACTION_BUTTON_BLANK_DEFAULT_ADJUST, sizeof(ACTION_BUTTON_BLANK_DEFAULT_ADJUST) / sizeof(int),
4867 ACTION_BUTTON_BLANK_TRS, sizeof(ACTION_BUTTON_BLANK_TRS) / sizeof(TextRectangle),
4868 21600, 21600,
4869 nullptr, 0);
4870
4871 const Vertex ACTION_BUTTON_HOME_VERTICES[] =
4872 {
4873 {0, 0}, {21600, 0}, {21600, 21600}, {0, 21600}, {0, 0}, {21600, 0}, {CALCULATED_VALUE(3), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {21600, 0}, {21600, 21600}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(2)}, {21600, 21600}, {0, 21600}, {CALCULATED_VALUE(1), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)}, {0, 21600}, {0, 0}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(7), CALCULATED_VALUE(0xa)}, {CALCULATED_VALUE(0xc), CALCULATED_VALUE(0xe)}, {CALCULATED_VALUE(0xc), CALCULATED_VALUE(0x10)}, {CALCULATED_VALUE(0x12), CALCULATED_VALUE(0x10)}, {CALCULATED_VALUE(0x12), CALCULATED_VALUE(0x14)}, {CALCULATED_VALUE(0x16), CALCULATED_VALUE(8)}, {CALCULATED_VALUE(0x18), CALCULATED_VALUE(8)}, {CALCULATED_VALUE(0x18), CALCULATED_VALUE(0x1a)}, {CALCULATED_VALUE(0x1c), CALCULATED_VALUE(0x1a)}, {CALCULATED_VALUE(0x1c), CALCULATED_VALUE(8)}, {CALCULATED_VALUE(0x1e), CALCULATED_VALUE(8)}, {CALCULATED_VALUE(0xc), CALCULATED_VALUE(0xe)}, {CALCULATED_VALUE(0xc), CALCULATED_VALUE(0x10)}, {CALCULATED_VALUE(0x12), CALCULATED_VALUE(0x10)}, {CALCULATED_VALUE(0x12), CALCULATED_VALUE(0x14)}, {CALCULATED_VALUE(0x20), CALCULATED_VALUE(0x24)}, {CALCULATED_VALUE(0x22), CALCULATED_VALUE(0x24)}, {CALCULATED_VALUE(0x22), CALCULATED_VALUE(0x1a)}, {CALCULATED_VALUE(0x18), CALCULATED_VALUE(0x1a)}, {CALCULATED_VALUE(0x18), CALCULATED_VALUE(8)}, {CALCULATED_VALUE(0x1c), CALCULATED_VALUE(8)}, {CALCULATED_VALUE(0x1c), CALCULATED_VALUE(0x1a)}, {CALCULATED_VALUE(0x20), CALCULATED_VALUE(0x1a)}
4874 };
4875
4876 const unsigned short ACTION_BUTTON_HOME_SEGMENTS[] =
4877 {
4878 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x000a, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0007, 0x6001, 0x8000
4879 };
4880
4881 const Calculation ACTION_BUTTON_HOME_CALC[] =
4882 {
4883 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x6000, PROP_GEO_LEFT, PROP_ADJUST_VAL_FIRST, 0}, {0x6000, PROP_GEO_TOP, PROP_ADJUST_VAL_FIRST, 0}, {0xa000, PROP_GEO_RIGHT, 0, PROP_ADJUST_VAL_FIRST}, {0xa000, PROP_GEO_BOTTOM, 0, PROP_ADJUST_VAL_FIRST}, {0x8000, 10800, 0, PROP_ADJUST_VAL_FIRST}, {0x2001, 0x0405, 1, 10800}, {0x2001, PROP_GEO_RIGHT, 1, 2}, {0x2001, PROP_GEO_BOTTOM, 1, 2}, {0x4001, -8000, 0x0406, 1}, {0x6000, 0x0409, 0x0408, 0}, {0x4001, 2960, 0x0406, 1}, {0x6000, 0x040b, 0x0407, 0}, {0x4001, -5000, 0x0406, 1}, {0x6000, 0x040d, 0x0408, 0}, {0x4001, -7000, 0x0406, 1}, {0x6000, 0x040f, 0x0408, 0}, {0x4001, 5000, 0x0406, 1}, {0x6000, 0x0411, 0x0407, 0}, {0x4001, -2960, 0x0406, 1}, {0x6000, 0x0413, 0x0408, 0}, {0x4001, 8000, 0x0406, 1}, {0x6000, 0x0415, 0x0407, 0}, {0x4001, 6100, 0x0406, 1}, {0x6000, 0x0417, 0x0407, 0}, {0x4001, 8260, 0x0406, 1}, {0x6000, 0x0419, 0x0408, 0}, {0x4001, -6100, 0x0406, 1}, {0x6000, 0x041b, 0x0407, 0}, {0x4001, -8000, 0x0406, 1}, {0x6000, 0x041d, 0x0407, 0}, {0x4001, -1060, 0x0406, 1}, {0x6000, 0x041f, 0x0407, 0}, {0x4001, 1060, 0x0406, 1}, {0x6000, 0x0421, 0x0407, 0}, {0x4001, 4020, 0x0406, 1}, {0x6000, 0x0423, 0x0408, 0}
4884 };
4885
4886 const TextRectangle ACTION_BUTTON_HOME_TRS[] =
4887 {
4888 { {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)} }
4889 };
4890
4891 const int ACTION_BUTTON_HOME_DEFAULT_ADJUST[] =
4892 {
4893 1400
4894 };
4895
4896 const CustomShape CS_ACTION_BUTTON_HOME(
4897 ACTION_BUTTON_HOME_VERTICES, sizeof(ACTION_BUTTON_HOME_VERTICES) / sizeof(Vertex),
4898 ACTION_BUTTON_HOME_SEGMENTS, sizeof(ACTION_BUTTON_HOME_SEGMENTS) / sizeof(unsigned short),
4899 ACTION_BUTTON_HOME_CALC, sizeof(ACTION_BUTTON_HOME_CALC) / sizeof(Calculation),
4900 ACTION_BUTTON_HOME_DEFAULT_ADJUST, sizeof(ACTION_BUTTON_HOME_DEFAULT_ADJUST) / sizeof(int),
4901 ACTION_BUTTON_HOME_TRS, sizeof(ACTION_BUTTON_HOME_TRS) / sizeof(TextRectangle),
4902 21600, 21600,
4903 nullptr, 0);
4904
4905 const Vertex ACTION_BUTTON_HELP_VERTICES[] =
4906 {
4907 {0, 0}, {21600, 0}, {21600, 21600}, {0, 21600}, {0, 0}, {21600, 0}, {CALCULATED_VALUE(3), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {21600, 0}, {21600, 21600}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(2)}, {21600, 21600}, {0, 21600}, {CALCULATED_VALUE(1), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)}, {0, 21600}, {0, 0}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(7), CALCULATED_VALUE(0xc)}, {CALCULATED_VALUE(0xa), CALCULATED_VALUE(0x3e)}, {CALCULATED_VALUE(7), CALCULATED_VALUE(0x10)}, {CALCULATED_VALUE(0xe), CALCULATED_VALUE(0x3e)}, {CALCULATED_VALUE(7), CALCULATED_VALUE(0xc)}, {CALCULATED_VALUE(0x12), CALCULATED_VALUE(0x14)}, {CALCULATED_VALUE(0x12), CALCULATED_VALUE(0x16)}, {CALCULATED_VALUE(0x12), CALCULATED_VALUE(0x18)}, {CALCULATED_VALUE(0x1a), CALCULATED_VALUE(8)}, {CALCULATED_VALUE(0x1c), CALCULATED_VALUE(8)}, {CALCULATED_VALUE(0x1e), CALCULATED_VALUE(8)}, {CALCULATED_VALUE(0x20), CALCULATED_VALUE(0x22)}, {CALCULATED_VALUE(0x20), CALCULATED_VALUE(0x24)}, {CALCULATED_VALUE(0x20), CALCULATED_VALUE(0x26)}, {CALCULATED_VALUE(0x28), CALCULATED_VALUE(0x2a)}, {CALCULATED_VALUE(7), CALCULATED_VALUE(0x2a)}, {CALCULATED_VALUE(0x2c), CALCULATED_VALUE(0x2a)}, {CALCULATED_VALUE(0x2e), CALCULATED_VALUE(0x26)}, {CALCULATED_VALUE(0x2e), CALCULATED_VALUE(0x24)}, {CALCULATED_VALUE(0x30), CALCULATED_VALUE(0x24)}, {CALCULATED_VALUE(0x30), CALCULATED_VALUE(0x32)}, {CALCULATED_VALUE(0x34), CALCULATED_VALUE(0x36)}, {CALCULATED_VALUE(7), CALCULATED_VALUE(0x36)}, {CALCULATED_VALUE(0x12), CALCULATED_VALUE(0x36)}, {CALCULATED_VALUE(0x1c), CALCULATED_VALUE(0x32)}, {CALCULATED_VALUE(0x1c), CALCULATED_VALUE(0x24)}, {CALCULATED_VALUE(0x1c), CALCULATED_VALUE(0x38)}, {CALCULATED_VALUE(0x3a), CALCULATED_VALUE(0x3c)}, {CALCULATED_VALUE(0x12), CALCULATED_VALUE(0x3c)}, {CALCULATED_VALUE(7), CALCULATED_VALUE(0x3c)}, {CALCULATED_VALUE(0x34), CALCULATED_VALUE(8)}, {CALCULATED_VALUE(0x34), CALCULATED_VALUE(0x16)}, {CALCULATED_VALUE(0x34), CALCULATED_VALUE(0x14)}
4908 };
4909
4910 const unsigned short ACTION_BUTTON_HELP_SEGMENTS[] =
4911 {
4912 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0xa704, 0x6000, 0x8000, 0x4000, 0x0001, 0x2004, 0x0001, 0x2004, 0x0001, 0x6001, 0x8000
4913 };
4914
4915 const Calculation ACTION_BUTTON_HELP_CALC[] =
4916 {
4917 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x6000, PROP_GEO_LEFT, PROP_ADJUST_VAL_FIRST, 0}, {0x6000, PROP_GEO_TOP, PROP_ADJUST_VAL_FIRST, 0}, {0xa000, PROP_GEO_RIGHT, 0, PROP_ADJUST_VAL_FIRST}, {0xa000, PROP_GEO_BOTTOM, 0, PROP_ADJUST_VAL_FIRST}, {0x8000, 10800, 0, PROP_ADJUST_VAL_FIRST}, {0x2001, 0x0405, 1, 10800}, {0x2001, PROP_GEO_RIGHT, 1, 2}, {0x2001, PROP_GEO_BOTTOM, 1, 2}, {0x4001, -1690, 0x0406, 1}, {0x6000, 0x0409, 0x0407, 0}, {0x4001, 4600, 0x0406, 1}, {0x6000, 0x040b, 0x0408, 0}, {0x4001, 1690, 0x0406, 1}, {0x6000, 0x040d, 0x0407, 0}, {0x4001, 7980, 0x0406, 1}, {0x6000, 0x040f, 0x0408, 0}, {0x4001, 1270, 0x0406, 1}, {0x6000, 0x0411, 0x0407, 0}, {0x4001, 4000, 0x0406, 1}, {0x6000, 0x0413, 0x0408, 0}, {0x4001, 1750, 0x0406, 1}, {0x6000, 0x0415, 0x0408, 0}, {0x4001, 800, 0x0406, 1}, {0x6000, 0x0417, 0x0408, 0}, {0x4001, 1650, 0x0406, 1}, {0x6000, 0x0419, 0x0407, 0}, {0x4001, 2340, 0x0406, 1}, {0x6000, 0x041b, 0x0407, 0}, {0x4001, 3640, 0x0406, 1}, {0x6000, 0x041d, 0x0407, 0}, {0x4001, 4670, 0x0406, 1}, {0x6000, 0x041f, 0x0407, 0}, {0x4001, -1570, 0x0406, 1}, {0x6000, 0x0421, 0x0408, 0}, {0x4001, -3390, 0x0406, 1}, {0x6000, 0x0423, 0x0408, 0}, {0x4001, -6050, 0x0406, 1}, {0x6000, 0x0425, 0x0408, 0}, {0x4001, 2540, 0x0406, 1}, {0x6000, 0x0427, 0x0407, 0}, {0x4001, -8050, 0x0406, 1}, {0x6000, 0x0429, 0x0408, 0}, {0x4001, -2540, 0x0406, 1}, {0x6000, 0x042b, 0x0407, 0}, {0x4001, -4460, 0x0406, 1}, {0x6000, 0x042d, 0x0407, 0}, {0x4001, -2330, 0x0406, 1}, {0x6000, 0x042f, 0x0407, 0}, {0x4001, -4700, 0x0406, 1}, {0x6000, 0x0431, 0x0408, 0}, {0x4001, -1270, 0x0406, 1}, {0x6000, 0x0433, 0x0407, 0}, {0x4001, -5720, 0x0406, 1}, {0x6000, 0x0435, 0x0408, 0}, {0x4001, -2540, 0x0406, 1}, {0x6000, 0x0437, 0x0408, 0}, {0x4001, 1800, 0x0406, 1}, {0x6000, 0x0439, 0x0407, 0}, {0x4001, -1700, 0x0406, 1}, {0x6000, 0x043b, 0x0408, 0}, {0x4001, 6290, 0x0406, 1}, {0x6000, 0x043d, 0x0408, 0}
4918 };
4919
4920 const TextRectangle ACTION_BUTTON_HELP_TRS[] =
4921 {
4922 { {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)} }
4923 };
4924
4925 const int ACTION_BUTTON_HELP_DEFAULT_ADJUST[] =
4926 {
4927 1400
4928 };
4929
4930 const CustomShape CS_ACTION_BUTTON_HELP(
4931 ACTION_BUTTON_HELP_VERTICES, sizeof(ACTION_BUTTON_HELP_VERTICES) / sizeof(Vertex),
4932 ACTION_BUTTON_HELP_SEGMENTS, sizeof(ACTION_BUTTON_HELP_SEGMENTS) / sizeof(unsigned short),
4933 ACTION_BUTTON_HELP_CALC, sizeof(ACTION_BUTTON_HELP_CALC) / sizeof(Calculation),
4934 ACTION_BUTTON_HELP_DEFAULT_ADJUST, sizeof(ACTION_BUTTON_HELP_DEFAULT_ADJUST) / sizeof(int),
4935 ACTION_BUTTON_HELP_TRS, sizeof(ACTION_BUTTON_HELP_TRS) / sizeof(TextRectangle),
4936 21600, 21600,
4937 nullptr, 0);
4938
4939 const Vertex ACTION_BUTTON_INFORMATION_VERTICES[] =
4940 {
4941 {0, 0}, {21600, 0}, {21600, 21600}, {0, 21600}, {0, 0}, {21600, 0}, {CALCULATED_VALUE(3), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {21600, 0}, {21600, 21600}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(2)}, {21600, 21600}, {0, 21600}, {CALCULATED_VALUE(1), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)}, {0, 21600}, {0, 0}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(0x7), CALCULATED_VALUE(0xc)}, {CALCULATED_VALUE(0xa), CALCULATED_VALUE(0x8)}, {CALCULATED_VALUE(0x7), CALCULATED_VALUE(0x10)}, {CALCULATED_VALUE(0xe), CALCULATED_VALUE(8)}, {CALCULATED_VALUE(0x7), CALCULATED_VALUE(0xc)}, {CALCULATED_VALUE(0x7), CALCULATED_VALUE(0x14)}, {CALCULATED_VALUE(0x12), CALCULATED_VALUE(0x2a)}, {CALCULATED_VALUE(0x7), CALCULATED_VALUE(0x18)}, {CALCULATED_VALUE(0x16), CALCULATED_VALUE(0x2a)}, {CALCULATED_VALUE(0x7), CALCULATED_VALUE(0x14)}, {CALCULATED_VALUE(0x1a), CALCULATED_VALUE(0x1c)}, {CALCULATED_VALUE(0x1e), CALCULATED_VALUE(0x1c)}, {CALCULATED_VALUE(0x1e), CALCULATED_VALUE(0x20)}, {CALCULATED_VALUE(0x22), CALCULATED_VALUE(0x20)}, {CALCULATED_VALUE(0x22), CALCULATED_VALUE(0x24)}, {CALCULATED_VALUE(0x1a), CALCULATED_VALUE(0x24)}, {CALCULATED_VALUE(0x1a), CALCULATED_VALUE(0x20)}, {CALCULATED_VALUE(0x26), CALCULATED_VALUE(0x20)}, {CALCULATED_VALUE(0x26), CALCULATED_VALUE(0x28)}, {CALCULATED_VALUE(0x1a), CALCULATED_VALUE(0x28)}
4942 };
4943
4944 const unsigned short ACTION_BUTTON_INFORMATION_SEGMENTS[] =
4945 {
4946 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0xa704, 0x6000, 0x8000, 0x4000, 0xa704, 0x6000, 0x8000, 0x4000, 0x0009, 0x6001, 0x8000
4947 };
4948
4949 const Calculation ACTION_BUTTON_INFORMATION_CALC[] =
4950 {
4951 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x6000, PROP_GEO_LEFT, PROP_ADJUST_VAL_FIRST, 0}, {0x6000, PROP_GEO_TOP, PROP_ADJUST_VAL_FIRST, 0}, {0xa000, PROP_GEO_RIGHT, 0, PROP_ADJUST_VAL_FIRST}, {0xa000, PROP_GEO_BOTTOM, 0, PROP_ADJUST_VAL_FIRST}, {0x8000, 10800, 0, PROP_ADJUST_VAL_FIRST}, {0x2001, 0x0405, 1, 10800}, {0x2001, PROP_GEO_RIGHT, 1, 2}, {0x2001, PROP_GEO_BOTTOM, 1, 2}, {0x4001, -8050, 0x0406, 1}, {0x6000, 0x0409, 0x0407, 0}, {0x4001, -8050, 0x0406, 1}, {0x6000, 0x040b, 0x0408, 0}, {0x4001, 8050, 0x0406, 1}, {0x6000, 0x040d, 0x0407, 0}, {0x4001, 8050, 0x0406, 1}, {0x6000, 0x040f, 0x0408, 0}, {0x4001, -2060, 0x0406, 1}, {0x6000, 0x0411, 0x0407, 0}, {0x4001, -7620, 0x0406, 1}, {0x6000, 0x0413, 0x0408, 0}, {0x4001, 2060, 0x0406, 1}, {0x6000, 0x0415, 0x0407, 0}, {0x4001, -3500, 0x0406, 1}, {0x6000, 0x0417, 0x0408, 0}, {0x4001, -2960, 0x0406, 1}, {0x6000, 0x0419, 0x0407, 0}, {0x4001, -2960, 0x0406, 1}, {0x6000, 0x041b, 0x0408, 0}, {0x4001, 1480, 0x0406, 1}, {0x6000, 0x041d, 0x0407, 0}, {0x4001, 5080, 0x0406, 1}, {0x6000, 0x041f, 0x0408, 0}, {0x4001, 2960, 0x0406, 1}, {0x6000, 0x0421, 0x0407, 0}, {0x4001, 6140, 0x0406, 1}, {0x6000, 0x0423, 0x0408, 0}, {0x4001, -1480, 0x0406, 1}, {0x6000, 0x0425, 0x0407, 0}, {0x4001, -1920, 0x0406, 1}, {0x6000, 0x0427, 0x0408, 0}, {0x4001, -5560, 0x0406, 1}, {0x6000, 0x0429, 0x0408, 0}
4952 };
4953
4954 const TextRectangle ACTION_BUTTON_INFORMATION_TRS[] =
4955 {
4956 { {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)} }
4957 };
4958
4959 const int ACTION_BUTTON_INFORMATION_DEFAULT_ADJUST[] =
4960 {
4961 1400
4962 };
4963
4964 const CustomShape CS_ACTION_BUTTON_INFORMATION(
4965 ACTION_BUTTON_INFORMATION_VERTICES, sizeof(ACTION_BUTTON_INFORMATION_VERTICES) / sizeof(Vertex),
4966 ACTION_BUTTON_INFORMATION_SEGMENTS, sizeof(ACTION_BUTTON_INFORMATION_SEGMENTS) / sizeof(unsigned short),
4967 ACTION_BUTTON_INFORMATION_CALC, sizeof(ACTION_BUTTON_INFORMATION_CALC) / sizeof(Calculation),
4968 ACTION_BUTTON_INFORMATION_DEFAULT_ADJUST, sizeof(ACTION_BUTTON_INFORMATION_DEFAULT_ADJUST) / sizeof(int),
4969 ACTION_BUTTON_INFORMATION_TRS, sizeof(ACTION_BUTTON_INFORMATION_TRS) / sizeof(TextRectangle),
4970 21600, 21600,
4971 nullptr, 0);
4972
4973 const Vertex ACTION_BUTTON_FORWARD_NEXT_VERTICES[] =
4974 {
4975 {0, 0}, {21600, 0}, {21600, 21600}, {0, 21600}, {0, 0}, {21600, 0}, {CALCULATED_VALUE(3), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {21600, 0}, {21600, 21600}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(2)}, {21600, 21600}, {0, 21600}, {CALCULATED_VALUE(1), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)}, {0, 21600}, {0, 0}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(0xa), CALCULATED_VALUE(0xc)}, {CALCULATED_VALUE(0xe), CALCULATED_VALUE(8)}, {CALCULATED_VALUE(0xa), CALCULATED_VALUE(0x10)}
4976 };
4977
4978 const unsigned short ACTION_BUTTON_FORWARD_NEXT_SEGMENTS[] =
4979 {
4980 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0002, 0x6001, 0x8000
4981 };
4982
4983 const Calculation ACTION_BUTTON_FORWARD_NEXT_CALC[] =
4984 {
4985 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x6000, PROP_GEO_LEFT, PROP_ADJUST_VAL_FIRST, 0}, {0x6000, PROP_GEO_TOP, PROP_ADJUST_VAL_FIRST, 0}, {0xa000, PROP_GEO_RIGHT, 0, PROP_ADJUST_VAL_FIRST}, {0xa000, PROP_GEO_BOTTOM, 0, PROP_ADJUST_VAL_FIRST}, {0x8000, 10800, 0, PROP_ADJUST_VAL_FIRST}, {0x2001, 0x0405, 1, 10800}, {0x2001, PROP_GEO_RIGHT, 1, 2}, {0x2001, PROP_GEO_BOTTOM, 1, 2}, {0x4001, -8050, 0x0406, 1}, {0x6000, 0x0409, 0x0407, 0}, {0x4001, -8050, 0x0406, 1}, {0x6000, 0x040b, 0x0408, 0}, {0x4001, 8050, 0x0406, 1}, {0x6000, 0x040d, 0x0407, 0}, {0x4001, 8050, 0x0406, 1}, {0x6000, 0x040f, 0x0408, 0}
4986 };
4987
4988 const TextRectangle ACTION_BUTTON_FORWARD_NEXT_TRS[] =
4989 {
4990 { {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)} }
4991 };
4992
4993 const int ACTION_BUTTON_FORWARD_NEXT_DEFAULT_ADJUST[] =
4994 {
4995 1400
4996 };
4997
4998 const CustomShape CS_ACTION_BUTTON_FORWARD_NEXT(
4999 ACTION_BUTTON_FORWARD_NEXT_VERTICES, sizeof(ACTION_BUTTON_FORWARD_NEXT_VERTICES) / sizeof(Vertex),
5000 ACTION_BUTTON_FORWARD_NEXT_SEGMENTS, sizeof(ACTION_BUTTON_FORWARD_NEXT_SEGMENTS) / sizeof(unsigned short),
5001 ACTION_BUTTON_FORWARD_NEXT_CALC, sizeof(ACTION_BUTTON_FORWARD_NEXT_CALC) / sizeof(Calculation),
5002 ACTION_BUTTON_FORWARD_NEXT_DEFAULT_ADJUST, sizeof(ACTION_BUTTON_FORWARD_NEXT_DEFAULT_ADJUST) / sizeof(int),
5003 ACTION_BUTTON_FORWARD_NEXT_TRS, sizeof(ACTION_BUTTON_FORWARD_NEXT_TRS) / sizeof(TextRectangle),
5004 21600, 21600,
5005 nullptr, 0);
5006
5007 const Vertex ACTION_BUTTON_BACK_PREVIOUS_VERTICES[] =
5008 {
5009 {0, 0}, {21600, 0}, {21600, 21600}, {0, 21600}, {0, 0}, {21600, 0}, {CALCULATED_VALUE(3), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {21600, 0}, {21600, 21600}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(2)}, {21600, 21600}, {0, 21600}, {CALCULATED_VALUE(1), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)}, {0, 21600}, {0, 0}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(0xa), CALCULATED_VALUE(8)}, {CALCULATED_VALUE(0xe), CALCULATED_VALUE(0xc)}, {CALCULATED_VALUE(0xe), CALCULATED_VALUE(0x10)}
5010 };
5011
5012 const unsigned short ACTION_BUTTON_BACK_PREVIOUS_SEGMENTS[] =
5013 {
5014 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0002, 0x6001, 0x8000
5015 };
5016
5017 const Calculation ACTION_BUTTON_BACK_PREVIOUS_CALC[] =
5018 {
5019 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x6000, PROP_GEO_LEFT, PROP_ADJUST_VAL_FIRST, 0}, {0x6000, PROP_GEO_TOP, PROP_ADJUST_VAL_FIRST, 0}, {0xa000, PROP_GEO_RIGHT, 0, PROP_ADJUST_VAL_FIRST}, {0xa000, PROP_GEO_BOTTOM, 0, PROP_ADJUST_VAL_FIRST}, {0x8000, 10800, 0, PROP_ADJUST_VAL_FIRST}, {0x2001, 0x0405, 1, 10800}, {0x2001, PROP_GEO_RIGHT, 1, 2}, {0x2001, PROP_GEO_BOTTOM, 1, 2}, {0x4001, -8050, 0x0406, 1}, {0x6000, 0x0409, 0x0407, 0}, {0x4001, -8050, 0x0406, 1}, {0x6000, 0x040b, 0x0408, 0}, {0x4001, 8050, 0x0406, 1}, {0x6000, 0x040d, 0x0407, 0}, {0x4001, 8050, 0x0406, 1}, {0x6000, 0x040f, 0x0408, 0}
5020 };
5021
5022 const TextRectangle ACTION_BUTTON_BACK_PREVIOUS_TRS[] =
5023 {
5024 { {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)} }
5025 };
5026
5027 const int ACTION_BUTTON_BACK_PREVIOUS_DEFAULT_ADJUST[] =
5028 {
5029 1400
5030 };
5031
5032 const CustomShape CS_ACTION_BUTTON_BACK_PREVIOUS(
5033 ACTION_BUTTON_BACK_PREVIOUS_VERTICES, sizeof(ACTION_BUTTON_BACK_PREVIOUS_VERTICES) / sizeof(Vertex),
5034 ACTION_BUTTON_BACK_PREVIOUS_SEGMENTS, sizeof(ACTION_BUTTON_BACK_PREVIOUS_SEGMENTS) / sizeof(unsigned short),
5035 ACTION_BUTTON_BACK_PREVIOUS_CALC, sizeof(ACTION_BUTTON_BACK_PREVIOUS_CALC) / sizeof(Calculation),
5036 ACTION_BUTTON_BACK_PREVIOUS_DEFAULT_ADJUST, sizeof(ACTION_BUTTON_BACK_PREVIOUS_DEFAULT_ADJUST) / sizeof(int),
5037 ACTION_BUTTON_BACK_PREVIOUS_TRS, sizeof(ACTION_BUTTON_BACK_PREVIOUS_TRS) / sizeof(TextRectangle),
5038 21600, 21600,
5039 nullptr, 0);
5040
5041 const Vertex ACTION_BUTTON_END_VERTICES[] =
5042 {
5043 {0, 0}, {21600, 0}, {21600, 21600}, {0, 21600}, {0, 0}, {21600, 0}, {CALCULATED_VALUE(3), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {21600, 0}, {21600, 21600}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(2)}, {21600, 21600}, {0, 21600}, {CALCULATED_VALUE(1), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)}, {0, 21600}, {0, 0}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(0x16), CALCULATED_VALUE(8)}, {CALCULATED_VALUE(0x12), CALCULATED_VALUE(0x10)}, {CALCULATED_VALUE(0x12), CALCULATED_VALUE(0xc)}, {CALCULATED_VALUE(0x18), CALCULATED_VALUE(0xc)}, {CALCULATED_VALUE(0x18), CALCULATED_VALUE(0x10)}, {CALCULATED_VALUE(0xe), CALCULATED_VALUE(0x10)}, {CALCULATED_VALUE(0xe), CALCULATED_VALUE(0xc)}
5044 };
5045
5046 const unsigned short ACTION_BUTTON_END_SEGMENTS[] =
5047 {
5048 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0002, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000
5049 };
5050
5051 const Calculation ACTION_BUTTON_END_CALC[] =
5052 {
5053 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x6000, PROP_GEO_LEFT, PROP_ADJUST_VAL_FIRST, 0}, {0x6000, PROP_GEO_TOP, PROP_ADJUST_VAL_FIRST, 0}, {0xa000, PROP_GEO_RIGHT, 0, PROP_ADJUST_VAL_FIRST}, {0xa000, PROP_GEO_BOTTOM, 0, PROP_ADJUST_VAL_FIRST}, {0x8000, 10800, 0, PROP_ADJUST_VAL_FIRST}, {0x2001, 0x0405, 1, 10800}, {0x2001, PROP_GEO_RIGHT, 1, 2}, {0x2001, PROP_GEO_BOTTOM, 1, 2}, {0x4001, -4020, 0x0406, 1}, {0x6000, 0x0409, 0x0407, 0}, {0x4001, -8050, 0x0406, 1}, {0x6000, 0x040b, 0x0408, 0}, {0x4001, 8050, 0x0406, 1}, {0x6000, 0x040d, 0x0407, 0}, {0x4001, 8050, 0x0406, 1}, {0x6000, 0x040f, 0x0408, 0}, {0x4001, -8050, 0x0406, 1}, {0x6000, 0x0411, 0x0407, 0}, {0x4001, -6140, 0x0406, 1}, {0x6000, 0x0413, 0x0407, 0}, {0x4001, 4020, 0x0406, 1}, {0x6000, 0x0415, 0x0407, 0}, {0x4001, 6140, 0x0406, 1}, {0x6000, 0x0417, 0x0407, 0}
5054 };
5055
5056 const TextRectangle ACTION_BUTTON_END_TRS[] =
5057 {
5058 { {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)} }
5059 };
5060
5061 const int ACTION_BUTTON_END_DEFAULT_ADJUST[] =
5062 {
5063 1400
5064 };
5065
5066 const CustomShape CS_ACTION_BUTTON_END(
5067 ACTION_BUTTON_END_VERTICES, sizeof(ACTION_BUTTON_END_VERTICES) / sizeof(Vertex),
5068 ACTION_BUTTON_END_SEGMENTS, sizeof(ACTION_BUTTON_END_SEGMENTS) / sizeof(unsigned short),
5069 ACTION_BUTTON_END_CALC, sizeof(ACTION_BUTTON_END_CALC) / sizeof(Calculation),
5070 ACTION_BUTTON_END_DEFAULT_ADJUST, sizeof(ACTION_BUTTON_END_DEFAULT_ADJUST) / sizeof(int),
5071 ACTION_BUTTON_END_TRS, sizeof(ACTION_BUTTON_END_TRS) / sizeof(TextRectangle),
5072 21600, 21600,
5073 nullptr, 0);
5074
5075 const Vertex ACTION_BUTTON_BEGINNING_VERTICES[] =
5076 {
5077 {0, 0}, {21600, 0}, {21600, 21600}, {0, 21600}, {0, 0}, {21600, 0}, {CALCULATED_VALUE(3), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {21600, 0}, {21600, 21600}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(2)}, {21600, 21600}, {0, 21600}, {CALCULATED_VALUE(1), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)}, {0, 21600}, {0, 0}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(0xa), CALCULATED_VALUE(8)}, {CALCULATED_VALUE(0xe), CALCULATED_VALUE(0xc)}, {CALCULATED_VALUE(0xe), CALCULATED_VALUE(0x10)}, {CALCULATED_VALUE(0x12), CALCULATED_VALUE(0xc)}, {CALCULATED_VALUE(0x14), CALCULATED_VALUE(0xc)}, {CALCULATED_VALUE(0x14), CALCULATED_VALUE(0x10)}, {CALCULATED_VALUE(0x12), CALCULATED_VALUE(0x10)}
5078 };
5079
5080 const unsigned short ACTION_BUTTON_BEGINNING_SEGMENTS[] =
5081 {
5082 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0002, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000
5083 };
5084
5085 const Calculation ACTION_BUTTON_BEGINNING_CALC[] =
5086 {
5087 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x6000, PROP_GEO_LEFT, PROP_ADJUST_VAL_FIRST, 0}, {0x6000, PROP_GEO_TOP, PROP_ADJUST_VAL_FIRST, 0}, {0xa000, PROP_GEO_RIGHT, 0, PROP_ADJUST_VAL_FIRST}, {0xa000, PROP_GEO_BOTTOM, 0, PROP_ADJUST_VAL_FIRST}, {0x8000, 10800, 0, PROP_ADJUST_VAL_FIRST}, {0x2001, 0x0405, 1, 10800}, {0x2001, PROP_GEO_RIGHT, 1, 2}, {0x2001, PROP_GEO_BOTTOM, 1, 2}, {0x4001, -4020, 0x0406, 1}, {0x6000, 0x0409, 0x0407, 0}, {0x4001, -8050, 0x0406, 1}, {0x6000, 0x040b, 0x0408, 0}, {0x4001, 8050, 0x0406, 1}, {0x6000, 0x040d, 0x0407, 0}, {0x4001, 8050, 0x0406, 1}, {0x6000, 0x040f, 0x0408, 0}, {0x4001, -8050, 0x0406, 1}, {0x6000, 0x0411, 0x0407, 0}, {0x4001, -6140, 0x0406, 1}, {0x6000, 0x0413, 0x0407, 0}, {0x4001, 4020, 0x0406, 1}, {0x6000, 0x0415, 0x0407, 0}, {0x4001, 6140, 0x0406, 1}, {0x6000, 0x0417, 0x0407, 0}
5088 };
5089
5090 const TextRectangle ACTION_BUTTON_BEGINNING_TRS[] =
5091 {
5092 { {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)} }
5093 };
5094
5095 const int ACTION_BUTTON_BEGINNING_DEFAULT_ADJUST[] =
5096 {
5097 1400
5098 };
5099
5100 const CustomShape CS_ACTION_BUTTON_BEGINNING(
5101 ACTION_BUTTON_BEGINNING_VERTICES, sizeof(ACTION_BUTTON_BEGINNING_VERTICES) / sizeof(Vertex),
5102 ACTION_BUTTON_BEGINNING_SEGMENTS, sizeof(ACTION_BUTTON_BEGINNING_SEGMENTS) / sizeof(unsigned short),
5103 ACTION_BUTTON_BEGINNING_CALC, sizeof(ACTION_BUTTON_BEGINNING_CALC) / sizeof(Calculation),
5104 ACTION_BUTTON_BEGINNING_DEFAULT_ADJUST, sizeof(ACTION_BUTTON_BEGINNING_DEFAULT_ADJUST) / sizeof(int),
5105 ACTION_BUTTON_BEGINNING_TRS, sizeof(ACTION_BUTTON_BEGINNING_TRS) / sizeof(TextRectangle),
5106 21600, 21600,
5107 nullptr, 0);
5108
5109 const Vertex ACTION_BUTTON_RETURN_VERTICES[] =
5110 {
5111 {0, 0}, {21600, 0}, {21600, 21600}, {0, 21600}, {0, 0}, {21600, 0}, {CALCULATED_VALUE(3), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {21600, 0}, {21600, 21600}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(2)}, {21600, 21600}, {0, 21600}, {CALCULATED_VALUE(1), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)}, {0, 21600}, {0, 0}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(0xa), CALCULATED_VALUE(0xc)}, {CALCULATED_VALUE(0xe), CALCULATED_VALUE(0xc)}, {CALCULATED_VALUE(0xe), CALCULATED_VALUE(0x10)}, {CALCULATED_VALUE(0xe), CALCULATED_VALUE(0x12)}, {CALCULATED_VALUE(0x14), CALCULATED_VALUE(0x16)}, {CALCULATED_VALUE(0x18), CALCULATED_VALUE(0x16)}, {CALCULATED_VALUE(7), CALCULATED_VALUE(0x16)}, {CALCULATED_VALUE(0x1a), CALCULATED_VALUE(0x16)}, {CALCULATED_VALUE(0x1c), CALCULATED_VALUE(0x12)}, {CALCULATED_VALUE(0x1c), CALCULATED_VALUE(0x10)}, {CALCULATED_VALUE(0x1c), CALCULATED_VALUE(0xc)}, {CALCULATED_VALUE(7), CALCULATED_VALUE(0xc)}, {CALCULATED_VALUE(0x1e), CALCULATED_VALUE(0x20)}, {CALCULATED_VALUE(0x22), CALCULATED_VALUE(0xc)}, {CALCULATED_VALUE(0x24), CALCULATED_VALUE(0xc)}, {CALCULATED_VALUE(0x24), CALCULATED_VALUE(0x10)}, {CALCULATED_VALUE(0x24), CALCULATED_VALUE(0x26)}, {CALCULATED_VALUE(0x28), CALCULATED_VALUE(0x2a)}, {CALCULATED_VALUE(7), CALCULATED_VALUE(0x2a)}, {CALCULATED_VALUE(0x18), CALCULATED_VALUE(0x2a)}, {CALCULATED_VALUE(0x2c), CALCULATED_VALUE(0x2a)}, {CALCULATED_VALUE(0xa), CALCULATED_VALUE(0x26)}, {CALCULATED_VALUE(0xa), CALCULATED_VALUE(0x10)}
5112 };
5113
5114 const unsigned short ACTION_BUTTON_RETURN_SEGMENTS[] =
5115 {
5116 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0002, 0x2001, 0x0001, 0x2001, 0x0006, 0x2001, 0x0001, 0x2001, 0x6001, 0x8000
5117 };
5118
5119 const Calculation ACTION_BUTTON_RETURN_CALC[] =
5120 {
5121 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x6000, PROP_GEO_LEFT, PROP_ADJUST_VAL_FIRST, 0}, {0x6000, PROP_GEO_TOP, PROP_ADJUST_VAL_FIRST, 0}, {0xa000, PROP_GEO_RIGHT, 0, PROP_ADJUST_VAL_FIRST}, {0xa000, PROP_GEO_BOTTOM, 0, PROP_ADJUST_VAL_FIRST}, {0x8000, 10800, 0, PROP_ADJUST_VAL_FIRST}, {0x2001, 0x0405, 1, 10800}, {0x2001, PROP_GEO_RIGHT, 1, 2}, {0x2001, PROP_GEO_BOTTOM, 1, 2}, {0x4001, -8050, 0x0406, 1}, {0x6000, 0x0409, 0x0407, 0}, {0x4001, -3800, 0x0406, 1}, {0x6000, 0x040b, 0x0408, 0}, {0x4001, -4020, 0x0406, 1}, {0x6000, 0x040d, 0x0407, 0}, {0x4001, 2330, 0x0406, 1}, {0x6000, 0x040f, 0x0408, 0}, {0x4001, 3390, 0x0406, 1}, {0x6000, 0x0411, 0x0408, 0}, {0x4001, -3100, 0x0406, 1}, {0x6000, 0x0413, 0x0407, 0}, {0x4001, 4230, 0x0406, 1}, {0x6000, 0x0415, 0x0408, 0}, {0x4001, -1910, 0x0406, 1}, {0x6000, 0x0417, 0x0407, 0}, {0x4001, 1190, 0x0406, 1}, {0x6000, 0x0419, 0x0407, 0}, {0x4001, 2110, 0x0406, 1}, {0x6000, 0x041b, 0x0407, 0}, {0x4001, 4030, 0x0406, 1}, {0x6000, 0x041d, 0x0407, 0}, {0x4001, -7830, 0x0406, 1}, {0x6000, 0x041f, 0x0408, 0}, {0x4001, 8250, 0x0406, 1}, {0x6000, 0x0421, 0x0407, 0}, {0x4001, 6140, 0x0406, 1}, {0x6000, 0x0423, 0x0407, 0}, {0x4001, 5510, 0x0406, 1}, {0x6000, 0x0425, 0x0408, 0}, {0x4001, 3180, 0x0406, 1}, {0x6000, 0x0427, 0x0407, 0}, {0x4001, 8450, 0x0406, 1}, {0x6000, 0x0429, 0x0408, 0}, {0x4001, -5090, 0x0406, 1}, {0x6000, 0x042b, 0x0407, 0}
5122 };
5123
5124 const TextRectangle ACTION_BUTTON_RETURN_TRS[] =
5125 {
5126 { {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)} }
5127 };
5128
5129 const int ACTION_BUTTON_RETURN_DEFAULT_ADJUST[] =
5130 {
5131 1400
5132 };
5133
5134 const CustomShape CS_ACTION_BUTTON_RETURN(
5135 ACTION_BUTTON_RETURN_VERTICES, sizeof(ACTION_BUTTON_RETURN_VERTICES) / sizeof(Vertex),
5136 ACTION_BUTTON_RETURN_SEGMENTS, sizeof(ACTION_BUTTON_RETURN_SEGMENTS) / sizeof(unsigned short),
5137 ACTION_BUTTON_RETURN_CALC, sizeof(ACTION_BUTTON_RETURN_CALC) / sizeof(Calculation),
5138 ACTION_BUTTON_RETURN_DEFAULT_ADJUST, sizeof(ACTION_BUTTON_RETURN_DEFAULT_ADJUST) / sizeof(int),
5139 ACTION_BUTTON_RETURN_TRS, sizeof(ACTION_BUTTON_RETURN_TRS) / sizeof(TextRectangle),
5140 21600, 21600,
5141 nullptr, 0);
5142
5143 const Vertex ACTION_BUTTON_DOCUMENT_VERTICES[] =
5144 {
5145 {0, 0}, {21600, 0}, {21600, 21600}, {0, 21600}, {0, 0}, {21600, 0}, {CALCULATED_VALUE(3), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {21600, 0}, {21600, 21600}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(2)}, {21600, 21600}, {0, 21600}, {CALCULATED_VALUE(1), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)}, {0, 21600}, {0, 0}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(0xa), CALCULATED_VALUE(0xc)}, {CALCULATED_VALUE(0xe), CALCULATED_VALUE(0xc)}, {CALCULATED_VALUE(0x10), CALCULATED_VALUE(0x12)}, {CALCULATED_VALUE(0x10), CALCULATED_VALUE(0x14)}, {CALCULATED_VALUE(0xa), CALCULATED_VALUE(0x14)}, {CALCULATED_VALUE(0xe), CALCULATED_VALUE(0xc)}, {CALCULATED_VALUE(0x10), CALCULATED_VALUE(0x12)}, {CALCULATED_VALUE(0xe), CALCULATED_VALUE(0x12)}
5146 };
5147
5148 const unsigned short ACTION_BUTTON_DOCUMENT_SEGMENTS[] =
5149 {
5150 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0004, 0x6001, 0x8000, 0x4000, 0x0002, 0x6001, 0x8000
5151 };
5152
5153 const Calculation ACTION_BUTTON_DOCUMENT_CALC[] =
5154 {
5155 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x6000, PROP_GEO_LEFT, PROP_ADJUST_VAL_FIRST, 0}, {0x6000, PROP_GEO_TOP, PROP_ADJUST_VAL_FIRST, 0}, {0xa000, PROP_GEO_RIGHT, 0, PROP_ADJUST_VAL_FIRST}, {0xa000, PROP_GEO_BOTTOM, 0, PROP_ADJUST_VAL_FIRST}, {0x8000, 10800, 0, PROP_ADJUST_VAL_FIRST}, {0x2001, 0x0405, 1, 10800}, {0x2001, PROP_GEO_RIGHT, 1, 2}, {0x2001, PROP_GEO_BOTTOM, 1, 2}, {0x4001, -6350, 0x0406, 1}, {0x6000, 0x0409, 0x0407, 0}, {0x4001, -7830, 0x0406, 1}, {0x6000, 0x040b, 0x0408, 0}, {0x4001, 1690, 0x0406, 1}, {0x6000, 0x040d, 0x0407, 0}, {0x4001, 6350, 0x0406, 1}, {0x6000, 0x040f, 0x0407, 0}, {0x4001, -3810, 0x0406, 1}, {0x6000, 0x0411, 0x0408, 0}, {0x4001, 7830, 0x0406, 1}, {0x6000, 0x0413, 0x0408, 0}
5156 };
5157
5158 const TextRectangle ACTION_BUTTON_DOCUMENT_TRS[] =
5159 {
5160 { {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)} }
5161 };
5162
5163 const int ACTION_BUTTON_DOCUMENT_DEFAULT_ADJUST[] =
5164 {
5165 1400
5166 };
5167
5168 const CustomShape CS_ACTION_BUTTON_DOCUMENT(
5169 ACTION_BUTTON_DOCUMENT_VERTICES, sizeof(ACTION_BUTTON_DOCUMENT_VERTICES) / sizeof(Vertex),
5170 ACTION_BUTTON_DOCUMENT_SEGMENTS, sizeof(ACTION_BUTTON_DOCUMENT_SEGMENTS) / sizeof(unsigned short),
5171 ACTION_BUTTON_DOCUMENT_CALC, sizeof(ACTION_BUTTON_DOCUMENT_CALC) / sizeof(Calculation),
5172 ACTION_BUTTON_DOCUMENT_DEFAULT_ADJUST, sizeof(ACTION_BUTTON_DOCUMENT_DEFAULT_ADJUST) / sizeof(int),
5173 ACTION_BUTTON_DOCUMENT_TRS, sizeof(ACTION_BUTTON_DOCUMENT_TRS) / sizeof(TextRectangle),
5174 21600, 21600,
5175 nullptr, 0);
5176
5177 const Vertex ACTION_BUTTON_SOUND_VERTICES[] =
5178 {
5179 {0, 0}, {21600, 0}, {21600, 21600}, {0, 21600}, {0, 0}, {21600, 0}, {CALCULATED_VALUE(3), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {21600, 0}, {21600, 21600}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(2)}, {21600, 21600}, {0, 21600}, {CALCULATED_VALUE(1), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)}, {0, 21600}, {0, 0}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(0xa), CALCULATED_VALUE(0xc)}, {CALCULATED_VALUE(0xe), CALCULATED_VALUE(0xc)}, {CALCULATED_VALUE(0x10), CALCULATED_VALUE(0x12)}, {CALCULATED_VALUE(0x10), CALCULATED_VALUE(0x14)}, {CALCULATED_VALUE(0xe), CALCULATED_VALUE(0x16)}, {CALCULATED_VALUE(0xa), CALCULATED_VALUE(0x16)}, {CALCULATED_VALUE(0x18), CALCULATED_VALUE(8)}, {CALCULATED_VALUE(0x1a), CALCULATED_VALUE(8)}, {CALCULATED_VALUE(0x18), CALCULATED_VALUE(0xc)}, {CALCULATED_VALUE(0x1a), CALCULATED_VALUE(0x1c)}, {CALCULATED_VALUE(0x18), CALCULATED_VALUE(0x16)}, {CALCULATED_VALUE(0x1a), CALCULATED_VALUE(0x1e)}
5180 };
5181
5182 const unsigned short ACTION_BUTTON_SOUND_SEGMENTS[] =
5183 {
5184 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0005, 0x6001, 0x8000, 0x4000, 0x0001, 0x8000, 0x4000, 0x0001, 0x8000, 0x4000, 0x0001, 0x8000
5185 };
5186
5187 const Calculation ACTION_BUTTON_SOUND_CALC[] =
5188 {
5189 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x6000, PROP_GEO_LEFT, PROP_ADJUST_VAL_FIRST, 0}, {0x6000, PROP_GEO_TOP, PROP_ADJUST_VAL_FIRST, 0}, {0xa000, PROP_GEO_RIGHT, 0, PROP_ADJUST_VAL_FIRST}, {0xa000, PROP_GEO_BOTTOM, 0, PROP_ADJUST_VAL_FIRST}, {0x8000, 10800, 0, PROP_ADJUST_VAL_FIRST}, {0x2001, 0x0405, 1, 10800}, {0x2001, PROP_GEO_RIGHT, 1, 2}, {0x2001, PROP_GEO_BOTTOM, 1, 2}, {0x4001, -8050, 0x0406, 1}, {0x6000, 0x0409, 0x0407, 0}, {0x4001, -2750, 0x0406, 1}, {0x6000, 0x040b, 0x0408, 0}, {0x4001, -2960, 0x0406, 1}, {0x6000, 0x040d, 0x0407, 0}, {0x4001, 2120, 0x0406, 1}, {0x6000, 0x040f, 0x0407, 0}, {0x4001, -8050, 0x0406, 1}, {0x6000, 0x0411, 0x0408, 0}, {0x4001, 8050, 0x0406, 1}, {0x6000, 0x0413, 0x0408, 0}, {0x4001, 2750, 0x0406, 1}, {0x6000, 0x0415, 0x0408, 0}, {0x4001, 4020, 0x0406, 1}, {0x6000, 0x0417, 0x0407, 0}, {0x4001, 8050, 0x0406, 1}, {0x6000, 0x0419, 0x0407, 0}, {0x4001, -5930, 0x0406, 1}, {0x6000, 0x041b, 0x0408, 0}, {0x4001, 5930, 0x0406, 1}, {0x6000, 0x041d, 0x0408, 0}
5190 };
5191
5192 const TextRectangle ACTION_BUTTON_SOUND_TRS[] =
5193 {
5194 { {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)} }
5195 };
5196
5197 const int ACTION_BUTTON_SOUND_DEFAULT_ADJUST[] =
5198 {
5199 1400
5200 };
5201
5202 const CustomShape CS_ACTION_BUTTON_SOUND(
5203 ACTION_BUTTON_SOUND_VERTICES, sizeof(ACTION_BUTTON_SOUND_VERTICES) / sizeof(Vertex),
5204 ACTION_BUTTON_SOUND_SEGMENTS, sizeof(ACTION_BUTTON_SOUND_SEGMENTS) / sizeof(unsigned short),
5205 ACTION_BUTTON_SOUND_CALC, sizeof(ACTION_BUTTON_SOUND_CALC) / sizeof(Calculation),
5206 ACTION_BUTTON_SOUND_DEFAULT_ADJUST, sizeof(ACTION_BUTTON_SOUND_DEFAULT_ADJUST) / sizeof(int),
5207 ACTION_BUTTON_SOUND_TRS, sizeof(ACTION_BUTTON_SOUND_TRS) / sizeof(TextRectangle),
5208 21600, 21600,
5209 nullptr, 0);
5210
5211 const Vertex ACTION_BUTTON_MOVIE_VERTICES[] =
5212 {
5213 {0, 0}, {21600, 0}, {21600, 21600}, {0, 21600}, {0, 0}, {21600, 0}, {CALCULATED_VALUE(3), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {21600, 0}, {21600, 21600}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(2)}, {21600, 21600}, {0, 21600}, {CALCULATED_VALUE(1), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)}, {0, 21600}, {0, 0}, {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(1), CALCULATED_VALUE(4)}, {CALCULATED_VALUE(0xa), CALCULATED_VALUE(0xc)}, {CALCULATED_VALUE(0xe), CALCULATED_VALUE(0xc)}, {CALCULATED_VALUE(0x10), CALCULATED_VALUE(0x12)}, {CALCULATED_VALUE(0x14), CALCULATED_VALUE(0x12)}, {CALCULATED_VALUE(0x16), CALCULATED_VALUE(0x18)}, {CALCULATED_VALUE(0x16), CALCULATED_VALUE(0x1a)}, {CALCULATED_VALUE(0x1c), CALCULATED_VALUE(0x1a)}, {CALCULATED_VALUE(0x1e), CALCULATED_VALUE(0x18)}, {CALCULATED_VALUE(0x20), CALCULATED_VALUE(0x18)}, {CALCULATED_VALUE(0x20), CALCULATED_VALUE(0x22)}, {CALCULATED_VALUE(0x1e), CALCULATED_VALUE(0x22)}, {CALCULATED_VALUE(0x1c), CALCULATED_VALUE(0x24)}, {CALCULATED_VALUE(0x16), CALCULATED_VALUE(0x24)}, {CALCULATED_VALUE(0x16), CALCULATED_VALUE(0x26)}, {CALCULATED_VALUE(0x2a), CALCULATED_VALUE(0x26)}, {CALCULATED_VALUE(0x2a), CALCULATED_VALUE(0x28)}, {CALCULATED_VALUE(0x10), CALCULATED_VALUE(0x28)}, {CALCULATED_VALUE(0xe), CALCULATED_VALUE(0x2c)}, {CALCULATED_VALUE(0xa), CALCULATED_VALUE(0x2c)}
5214 };
5215
5216 const unsigned short ACTION_BUTTON_MOVIE_SEGMENTS[] =
5217 {
5218 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0003, 0x6001, 0x8000, 0x4000, 0x0012, 0x6001, 0x8000
5219 };
5220
5221 const Calculation ACTION_BUTTON_MOVIE_CALC[] =
5222 {
5223 {0x2000, PROP_ADJUST_VAL_FIRST, 0, 0}, {0x6000, PROP_GEO_LEFT, PROP_ADJUST_VAL_FIRST, 0}, {0x6000, PROP_GEO_TOP, PROP_ADJUST_VAL_FIRST, 0}, {0xa000, PROP_GEO_RIGHT, 0, PROP_ADJUST_VAL_FIRST}, {0xa000, PROP_GEO_BOTTOM, 0, PROP_ADJUST_VAL_FIRST}, {0x8000, 10800, 0, PROP_ADJUST_VAL_FIRST}, {0x2001, 0x0405, 1, 10800}, {0x2001, PROP_GEO_RIGHT, 1, 2}, {0x2001, PROP_GEO_BOTTOM, 1, 2}, {0x4001, -8050, 0x0406, 1}, {0x6000, 0x0409, 0x0407, 0}, {0x4001, -4020, 0x0406, 1}, {0x6000, 0x040b, 0x0408, 0}, {0x4001, -7000, 0x0406, 1}, {0x6000, 0x040d, 0x0407, 0}, {0x4001, -6560, 0x0406, 1}, {0x6000, 0x040f, 0x0407, 0}, {0x4001, -3600, 0x0406, 1}, {0x6000, 0x0411, 0x0408, 0}, {0x4001, 4020, 0x0406, 1}, {0x6000, 0x0413, 0x0407, 0}, {0x4001, 4660, 0x0406, 1}, {0x6000, 0x0415, 0x0407, 0}, {0x4001, -2960, 0x0406, 1}, {0x6000, 0x0417, 0x0408, 0}, {0x4001, -2330, 0x0406, 1}, {0x6000, 0x0419, 0x0408, 0}, {0x4001, 6780, 0x0406, 1}, {0x6000, 0x041b, 0x0407, 0}, {0x4001, 7200, 0x0406, 1}, {0x6000, 0x041d, 0x0407, 0}, {0x4001, 8050, 0x0406, 1}, {0x6000, 0x041f, 0x0407, 0}, {0x4001, 2960, 0x0406, 1}, {0x6000, 0x0421, 0x0408, 0}, {0x4001, 2330, 0x0406, 1}, {0x6000, 0x0423, 0x0408, 0}, {0x4001, 3800, 0x0406, 1}, {0x6000, 0x0425, 0x0408, 0}, {0x4001, -1060, 0x0406, 1}, {0x6000, 0x0427, 0x0408, 0}, {0x4001, -6350, 0x0406, 1}, {0x6000, 0x0429, 0x0407, 0}, {0x4001, -640, 0x0406, 1}, {0x6000, 0x042b, 0x0408, 0}
5224 };
5225
5226 const TextRectangle ACTION_BUTTON_MOVIE_TRS[] =
5227 {
5228 { {CALCULATED_VALUE(1), CALCULATED_VALUE(2)}, {CALCULATED_VALUE(3), CALCULATED_VALUE(4)} }
5229 };
5230
5231 const int ACTION_BUTTON_MOVIE_DEFAULT_ADJUST[] =
5232 {
5233 1400
5234 };
5235
5236 const CustomShape CS_ACTION_BUTTON_MOVIE(
5237 ACTION_BUTTON_MOVIE_VERTICES, sizeof(ACTION_BUTTON_MOVIE_VERTICES) / sizeof(Vertex),
5238 ACTION_BUTTON_MOVIE_SEGMENTS, sizeof(ACTION_BUTTON_MOVIE_SEGMENTS) / sizeof(unsigned short),
5239 ACTION_BUTTON_MOVIE_CALC, sizeof(ACTION_BUTTON_MOVIE_CALC) / sizeof(Calculation),
5240 ACTION_BUTTON_MOVIE_DEFAULT_ADJUST, sizeof(ACTION_BUTTON_MOVIE_DEFAULT_ADJUST) / sizeof(int),
5241 ACTION_BUTTON_MOVIE_TRS, sizeof(ACTION_BUTTON_MOVIE_TRS) / sizeof(TextRectangle),
5242 21600, 21600,
5243 nullptr, 0);
5244
getCustomShape(ShapeType type)5245 const CustomShape *getCustomShape(ShapeType type)
5246 {
5247 switch (type)
5248 {
5249 case RECTANGLE:
5250 return &CS_RECTANGLE;
5251 case ELLIPSE:
5252 return &CS_ELLIPSE;
5253 case ISOCELES_TRIANGLE:
5254 return &CS_ISOCELES_TRIANGLE;
5255 case SEAL_4:
5256 return &CS_SEAL_4;
5257 case PARALLELOGRAM:
5258 return &CS_PARALLELOGRAM;
5259 case RIGHT_TRIANGLE:
5260 return &CS_RIGHT_TRIANGLE;
5261 case DIAMOND:
5262 return &CS_DIAMOND;
5263 case TRAPEZOID:
5264 return &CS_TRAPEZOID;
5265 case HEXAGON:
5266 return &CS_HEXAGON;
5267 case STAR:
5268 return &CS_STAR;
5269 case PLUS:
5270 return &CS_PLUS;
5271 case ROUND_RECTANGLE:
5272 return &CS_ROUND_RECTANGLE;
5273 case OCTAGON:
5274 return &CS_OCTAGON;
5275 case ARROW:
5276 return &CS_ARROW;
5277 case HOME_PLATE:
5278 return &CS_HOME_PLATE;
5279 case CUBE:
5280 return &CS_CUBE;
5281 case BALLOON:
5282 return &CS_BALLOON;
5283 case ARC_SHAPE:
5284 return &CS_ARC;
5285 case PLAQUE:
5286 return &CS_PLAQUE;
5287 case CAN:
5288 return &CS_CAN;
5289 case DONUT:
5290 return &CS_DONUT;
5291 case TEXT_BOX:
5292 case TEXT_SIMPLE:
5293 return &CS_TEXT_SIMPLE;
5294 case STRAIGHT_CONNECTOR_1:
5295 return &CS_STRAIGHT_CONNECTOR_1;
5296 case BENT_CONNECTOR_2:
5297 return &CS_BENT_CONNECTOR_2;
5298 case BENT_CONNECTOR_3:
5299 return &CS_BENT_CONNECTOR_3;
5300 case BENT_CONNECTOR_4:
5301 return &CS_BENT_CONNECTOR_4;
5302 case BENT_CONNECTOR_5:
5303 return &CS_BENT_CONNECTOR_5;
5304 case CURVED_CONNECTOR_2:
5305 return &CS_CURVED_CONNECTOR_2;
5306 case CURVED_CONNECTOR_3:
5307 return &CS_CURVED_CONNECTOR_3;
5308 case CURVED_CONNECTOR_4:
5309 return &CS_CURVED_CONNECTOR_4;
5310 case CURVED_CONNECTOR_5:
5311 return &CS_CURVED_CONNECTOR_5;
5312 case CALLOUT_1:
5313 return &CS_CALLOUT_1;
5314 case CALLOUT_2:
5315 return &CS_CALLOUT_2;
5316 case CALLOUT_3:
5317 return &CS_CALLOUT_3;
5318 case RIBBON:
5319 return &CS_RIBBON;
5320 case RIBBON_2:
5321 return &CS_RIBBON_2;
5322 case CHEVRON:
5323 return &CS_CHEVRON;
5324 case PENTAGON:
5325 return &CS_PENTAGON;
5326 case NO_SMOKING:
5327 return &CS_NO_SMOKING;
5328 case SEAL_8:
5329 return &CS_SEAL_8;
5330 case SEAL_16:
5331 return &CS_SEAL_16;
5332 case SEAL_32:
5333 return &CS_SEAL_32;
5334 case WAVE:
5335 return &CS_WAVE;
5336 case LINE:
5337 return &CS_LINE;
5338 case FOLDED_CORNER:
5339 return &CS_FOLDED_CORNER;
5340 case LEFT_ARROW:
5341 return &CS_LEFT_ARROW;
5342 case DOWN_ARROW:
5343 return &CS_DOWN_ARROW;
5344 case UP_ARROW:
5345 return &CS_UP_ARROW;
5346 case LEFT_RIGHT_ARROW:
5347 return &CS_LEFT_RIGHT_ARROW;
5348 case UP_DOWN_ARROW:
5349 return &CS_UP_DOWN_ARROW;
5350 case IRREGULAR_SEAL_1:
5351 return &CS_IRREGULAR_SEAL_1;
5352 case IRREGULAR_SEAL_2:
5353 return &CS_IRREGULAR_SEAL_2;
5354 case LIGHTNING_BOLT:
5355 return &CS_LIGHTNING_BOLT;
5356 case HEART:
5357 return &CS_HEART;
5358 case PICTURE_FRAME:
5359 return &CS_RECTANGLE; // treat it as RECTANGLE for now
5360 case QUAD_ARROW:
5361 return &CS_QUAD_ARROW;
5362 case BEVEL:
5363 return &CS_BEVEL;
5364 case LEFT_BRACKET:
5365 return &CS_LEFT_BRACKET;
5366 case RIGHT_BRACKET:
5367 return &CS_RIGHT_BRACKET;
5368 case LEFT_BRACE:
5369 return &CS_LEFT_BRACE;
5370 case RIGHT_BRACE:
5371 return &CS_RIGHT_BRACE;
5372 case LEFT_UP_ARROW:
5373 return &CS_LEFT_UP_ARROW;
5374 case BENT_UP_ARROW:
5375 return &CS_BENT_UP_ARROW;
5376 case BENT_ARROW:
5377 return &CS_BENT_ARROW;
5378 case SEAL_24:
5379 return &CS_SEAL_24;
5380 case STRIPED_RIGHT_ARROW:
5381 return &CS_STRIPED_RIGHT_ARROW;
5382 case NOTCHED_RIGHT_ARROW:
5383 return &CS_NOTCHED_RIGHT_ARROW;
5384 case BLOCK_ARC:
5385 return &CS_BLOCK_ARC;
5386 case SMILEY_FACE:
5387 return &CS_SMILEY_FACE;
5388 case VERTICAL_SCROLL:
5389 return &CS_VERTICAL_SCROLL;
5390 case HORIZONTAL_SCROLL:
5391 return &CS_HORIZONTAL_SCROLL;
5392 case CIRCULAR_ARROW:
5393 return &CS_CIRCULAR_ARROW;
5394 case U_TURN_ARROW:
5395 return &CS_U_TURN_ARROW;
5396 case CURVED_RIGHT_ARROW:
5397 return &CS_CURVED_RIGHT_ARROW;
5398 case CURVED_LEFT_ARROW:
5399 return &CS_CURVED_LEFT_ARROW;
5400 case CURVED_UP_ARROW:
5401 return &CS_CURVED_UP_ARROW;
5402 case CURVED_DOWN_ARROW:
5403 return &CS_CURVED_DOWN_ARROW;
5404 case FLOW_CHART_PROCESS:
5405 return &CS_FLOW_CHART_PROCESS;
5406 case FLOW_CHART_DECISION:
5407 return &CS_FLOW_CHART_DECISION;
5408 case FLOW_CHART_IO:
5409 return &CS_FLOW_CHART_IO;
5410 case FLOW_CHART_PREDEFINED_PROCESS:
5411 return &CS_FLOW_CHART_PREDEFINED_PROCESS;
5412 case FLOW_CHART_INTERNAL_STORAGE:
5413 return &CS_FLOW_CHART_INTERNAL_STORAGE;
5414 case FLOW_CHART_DOCUMENT:
5415 return &CS_FLOW_CHART_DOCUMENT;
5416 case FLOW_CHART_MULTI_DOCUMENT:
5417 return &CS_FLOW_CHART_MULTI_DOCUMENT;
5418 case FLOW_CHART_TERMINATOR:
5419 return &CS_FLOW_CHART_TERMINATOR;
5420 case FLOW_CHART_PREPARATION:
5421 return &CS_FLOW_CHART_PREPARATION;
5422 case FLOW_CHART_MANUAL_INPUT:
5423 return &CS_FLOW_CHART_MANUAL_INPUT;
5424 case FLOW_CHART_MANUAL_OPERATION:
5425 return &CS_FLOW_CHART_MANUAL_OPERATION;
5426 case FLOW_CHART_CONNECTOR:
5427 return &CS_FLOW_CHART_CONNECTOR;
5428 case FLOW_CHART_PUNCHED_CARD:
5429 return &CS_FLOW_CHART_PUNCHED_CARD;
5430 case FLOW_CHART_PUNCHED_TAPE:
5431 return &CS_FLOW_CHART_PUNCHED_TAPE;
5432 case FLOW_CHART_SUMMING_JUNCTION:
5433 return &CS_FLOW_CHART_SUMMING_JUNCTION;
5434 case FLOW_CHART_OR:
5435 return &CS_FLOW_CHART_OR;
5436 case FLOW_CHART_COLLATE:
5437 return &CS_FLOW_CHART_COLLATE;
5438 case FLOW_CHART_SORT:
5439 return &CS_FLOW_CHART_SORT;
5440 case FLOW_CHART_EXTRACT:
5441 return &CS_FLOW_CHART_EXTRACT;
5442 case FLOW_CHART_MERGE:
5443 return &CS_FLOW_CHART_MERGE;
5444 case FLOW_CHART_ONLINE_STORAGE:
5445 return &CS_FLOW_CHART_ONLINE_STORAGE;
5446 case FLOW_CHART_MAGNETIC_TAPE:
5447 return &CS_FLOW_CHART_MAGNETIC_TAPE;
5448 case FLOW_CHART_MAGNETIC_DISK:
5449 return &CS_FLOW_CHART_MAGNETIC_DISK;
5450 case FLOW_CHART_MAGNETIC_DRUM:
5451 return &CS_FLOW_CHART_MAGNETIC_DRUM;
5452 case FLOW_CHART_DISPLAY:
5453 return &CS_FLOW_CHART_DISPLAY;
5454 case FLOW_CHART_DELAY:
5455 return &CS_FLOW_CHART_DELAY;
5456 case TEXT_PLAIN_TEXT:
5457 return &CS_TEXT_PLAIN_TEXT;
5458 case TEXT_STOP:
5459 return &CS_TEXT_STOP;
5460 case TEXT_TRIANGLE:
5461 return &CS_TEXT_TRIANGLE;
5462 case TEXT_TRIANGLE_INVERTED:
5463 return &CS_TEXT_TRIANGLE_INVERTED;
5464 case TEXT_CHEVRON:
5465 return &CS_TEXT_CHEVRON;
5466 case TEXT_CHEVRON_INVERTED:
5467 return &CS_TEXT_CHEVRON_INVERTED;
5468 case TEXT_RING_OUTSIDE:
5469 return &CS_TEXT_RING_OUTSIDE;
5470 case TEXT_ARCH_UP_CURVE:
5471 return &CS_TEXT_ARCH_UP_CURVE;
5472 case TEXT_ARCH_DOWN_CURVE:
5473 return &CS_TEXT_ARCH_DOWN_CURVE;
5474 case TEXT_CIRCLE_CURVE:
5475 return &CS_TEXT_CIRCLE_CURVE;
5476 case TEXT_BUTTON_CURVE:
5477 return &CS_TEXT_BUTTON_CURVE;
5478 case TEXT_ARCH_UP_POUR:
5479 return &CS_TEXT_ARCH_UP_POUR;
5480 case TEXT_ARCH_DOWN_POUR:
5481 return &CS_TEXT_ARCH_DOWN_POUR;
5482 case TEXT_CIRCLE_POUR:
5483 return &CS_TEXT_CIRCLE_POUR;
5484 case TEXT_BUTTON_POUR:
5485 return &CS_TEXT_BUTTON_POUR;
5486 case TEXT_CURVE_UP:
5487 return &CS_TEXT_CURVE_UP;
5488 case TEXT_CURVE_DOWN:
5489 return &CS_TEXT_CURVE_DOWN;
5490 case TEXT_CASCADE_UP:
5491 return &CS_TEXT_CASCADE_UP;
5492 case TEXT_CASCADE_DOWN:
5493 return &CS_TEXT_CASCADE_DOWN;
5494 case TEXT_WAVE_1:
5495 return &CS_TEXT_WAVE_1;
5496 case TEXT_WAVE_2:
5497 return &CS_TEXT_WAVE_2;
5498 case TEXT_WAVE_3:
5499 return &CS_TEXT_WAVE_3;
5500 case TEXT_WAVE_4:
5501 return &CS_TEXT_WAVE_4;
5502 case TEXT_INFLATE:
5503 return &CS_TEXT_INFLATE;
5504 case TEXT_DEFLATE:
5505 return &CS_TEXT_DEFLATE;
5506 case TEXT_INFLATE_BOTTOM:
5507 return &CS_TEXT_INFLATE_BOTTOM;
5508 case TEXT_DEFLATE_BOTTOM:
5509 return &CS_TEXT_DEFLATE_BOTTOM;
5510 case TEXT_INFLATE_TOP:
5511 return &CS_TEXT_INFLATE_TOP;
5512 case TEXT_DEFLATE_TOP:
5513 return &CS_TEXT_DEFLATE_TOP;
5514 case TEXT_DEFLATE_INFLATE:
5515 return &CS_TEXT_DEFLATE_INFLATE;
5516 case TEXT_DEFLATE_INFLATE_DEFLATE: // great name
5517 return &CS_TEXT_DEFLATE_INFLATE_DEFLATE;
5518 case TEXT_FADE_RIGHT:
5519 return &CS_TEXT_FADE_RIGHT;
5520 case TEXT_FADE_LEFT:
5521 return &CS_TEXT_FADE_LEFT;
5522 case TEXT_FADE_UP:
5523 return &CS_TEXT_FADE_UP;
5524 case TEXT_FADE_DOWN:
5525 return &CS_TEXT_FADE_DOWN;
5526 case TEXT_SLANT_UP:
5527 return &CS_TEXT_SLANT_UP;
5528 case TEXT_SLANT_DOWN:
5529 return &CS_TEXT_SLANT_DOWN;
5530 case TEXT_CAN_UP:
5531 return &CS_TEXT_CAN_UP;
5532 case TEXT_CAN_DOWN:
5533 return &CS_TEXT_CAN_DOWN;
5534 case FLOW_CHART_ALTERNATE_PROCESS:
5535 return &CS_FLOW_CHART_ALTERNATE_PROCESS;
5536 case FLOW_CHART_OFFPAGE_CONNECTOR:
5537 return &CS_FLOW_CHART_OFFPAGE_CONNECTOR;
5538 case LEFT_RIGHT_UP_ARROW:
5539 return &CS_LEFT_RIGHT_UP_ARROW;
5540 case SUN:
5541 return &CS_SUN;
5542 case MOON:
5543 return &CS_MOON;
5544 case BRACKET_PAIR:
5545 return &CS_BRACKET_PAIR;
5546 case BRACE_PAIR:
5547 return &CS_BRACE_PAIR;
5548 case DOUBLE_WAVE:
5549 return &CS_DOUBLE_WAVE;
5550 case ACTION_BUTTON_BLANK:
5551 return &CS_ACTION_BUTTON_BLANK;
5552 case ACTION_BUTTON_HOME:
5553 return &CS_ACTION_BUTTON_HOME;
5554 case ACTION_BUTTON_HELP:
5555 return &CS_ACTION_BUTTON_HELP;
5556 case ACTION_BUTTON_INFORMATION:
5557 return &CS_ACTION_BUTTON_INFORMATION;
5558 case ACTION_BUTTON_FORWARD_NEXT:
5559 return &CS_ACTION_BUTTON_FORWARD_NEXT;
5560 case ACTION_BUTTON_BACK_PREVIOUS:
5561 return &CS_ACTION_BUTTON_BACK_PREVIOUS;
5562 case ACTION_BUTTON_END:
5563 return &CS_ACTION_BUTTON_END;
5564 case ACTION_BUTTON_BEGINNING:
5565 return &CS_ACTION_BUTTON_BEGINNING;
5566 case ACTION_BUTTON_RETURN:
5567 return &CS_ACTION_BUTTON_RETURN;
5568 case ACTION_BUTTON_DOCUMENT:
5569 return &CS_ACTION_BUTTON_DOCUMENT;
5570 case ACTION_BUTTON_SOUND:
5571 return &CS_ACTION_BUTTON_SOUND;
5572 case ACTION_BUTTON_MOVIE:
5573 return &CS_ACTION_BUTTON_MOVIE;
5574 default:
5575 return nullptr;
5576 }
5577 }
5578
5579 enum Command
5580 {
5581 MOVETO,
5582 LINETO,
5583 CURVETO,
5584 NOFILL,
5585 NOSTROKE,
5586 ANGLEELLIPSE,
5587 CLOSESUBPATH,
5588 ARCTO,
5589 ARC,
5590 CLOCKWISEARCTO,
5591 CLOCKWISEARC,
5592 ENDSUBPATH,
5593 ELLIPTICALQUADRANTX,
5594 ELLIPTICALQUADRANTY
5595 };
5596
5597 struct ShapeElementCommand
5598 {
5599 Command m_command;
5600 unsigned char m_count;
ShapeElementCommandlibmspub::ShapeElementCommand5601 ShapeElementCommand(Command command, unsigned char count) : m_command(command), m_count(count) { }
5602 };
5603
getCommandFromBinary(unsigned short binary)5604 ShapeElementCommand getCommandFromBinary(unsigned short binary)
5605 {
5606 Command cmd;
5607 unsigned count = 0;
5608 switch (binary >> 8)
5609 {
5610 case 0xAA:
5611 cmd = NOFILL;
5612 break;
5613 case 0xAB:
5614 cmd = NOSTROKE;
5615 break;
5616 case 0xAD:
5617 case 0xB3:
5618 case 0x20:
5619 case 0xAF:
5620 cmd = CURVETO;
5621 count = (binary & 0xFF);
5622 break;
5623 case 0xA2:
5624 cmd = ANGLEELLIPSE;
5625 count = (binary & 0xFF) / 3;
5626 break;
5627 case 0xA3:
5628 cmd = ARCTO;
5629 count = (binary & 0xFF) / 4;
5630 break;
5631 case 0xA4:
5632 cmd = ARC;
5633 count = (binary & 0xFF) / 4;
5634 break;
5635 case 0xA5:
5636 cmd = CLOCKWISEARCTO;
5637 count = (binary & 0xFF) / 4;
5638 break;
5639 case 0xA6:
5640 cmd = CLOCKWISEARC;
5641 count = (binary & 0xFF) / 4;
5642 break;
5643 case 0xA7:
5644 cmd = ELLIPTICALQUADRANTX;
5645 count = (binary & 0xFF);
5646 break;
5647 case 0xA8:
5648 cmd = ELLIPTICALQUADRANTY;
5649 count = (binary & 0xFF);
5650 break;
5651 case 0xAC:
5652 case 0xAE:
5653 case 0x0:
5654 cmd = LINETO;
5655 count = (binary & 0xFF);
5656 break;
5657 case 0x40:
5658 cmd = MOVETO;
5659 count = (binary & 0xFF);
5660 count = count ? count : 1;
5661 break;
5662 case 0x60:
5663 cmd = CLOSESUBPATH;
5664 break;
5665 case 0x80:
5666 cmd = ENDSUBPATH;
5667 break;
5668 default:
5669 MSPUB_DEBUG_MSG(("unknown segment command 0x%x\n", binary >> 8));
5670 cmd = MOVETO;
5671 count = 1;
5672 break;
5673 }
5674 return ShapeElementCommand(cmd, count);
5675 }
5676
getSpecialIfNecessary(std::function<double (unsigned index)> calculator,int val)5677 double getSpecialIfNecessary(std::function<double(unsigned index)> calculator, int val)
5678 {
5679 bool special = val & 0x80000000;
5680 return special ? calculator(val ^ 0x80000000) : val;
5681 }
5682
getTextRectangle(double x,double y,double width,double height,std::function<double (unsigned index)> calculator) const5683 Coordinate CustomShape::getTextRectangle(double x, double y, double width, double height, std::function<double(unsigned index)> calculator) const
5684 {
5685 double scaleX = width * m_coordWidth;
5686 double scaleY = height * m_coordHeight;
5687 if (m_numTextRectangles == 0)
5688 {
5689 return Coordinate(x, y, x + width, y + height);
5690 }
5691 const Vertex &start = mp_textRectangles[0].first;
5692 const Vertex &end = mp_textRectangles[0].second;
5693 double startX = x + scaleX * getSpecialIfNecessary(calculator, start.m_x);
5694 double startY = y + scaleY * getSpecialIfNecessary(calculator, start.m_y);
5695 double endX = x + scaleX * getSpecialIfNecessary(calculator, end.m_x);
5696 double endY = y + scaleY * getSpecialIfNecessary(calculator, end.m_y);
5697 return Coordinate(startX, startY, endX, endY);
5698 }
5699
5700 namespace
5701 {
5702
5703 struct LineInfo
5704 {
5705 librevenge::RVNGPropertyListVector m_vertices;
5706 double m_width;
5707 librevenge::RVNGString m_color;
5708 bool m_lineExists;
LineInfolibmspub::__anond9defa060111::LineInfo5709 LineInfo(librevenge::RVNGPropertyListVector vertices, Line current, std::vector<Color> palette) : m_vertices(vertices),
5710 m_width((double)(current.m_widthInEmu) / EMUS_IN_INCH),
5711 m_color(MSPUBCollector::getColorString(current.m_color.getFinalColor(palette))),
5712 m_lineExists(current.m_lineExists) { }
outputlibmspub::__anond9defa060111::LineInfo5713 void output(librevenge::RVNGDrawingInterface *painter, librevenge::RVNGPropertyList &graphicsProps)
5714 {
5715 graphicsProps.insert("draw:stroke", m_lineExists ? "solid" : "none");
5716 graphicsProps.insert("svg:stroke-width", m_width);
5717 graphicsProps.insert("svg:stroke-color", m_color);
5718 painter->setStyle(graphicsProps);
5719 librevenge::RVNGPropertyList points;
5720 points.insert("svg:points", m_vertices);
5721 painter->drawPolyline(points);
5722 }
5723 private:
5724 };
5725
5726 }
5727
drawEmulatedLine(std::shared_ptr<const CustomShape> shape,ShapeType shapeType,const std::vector<Line> & lines,Vector2D center,VectorTransformation2D transform,double x,double y,double scaleX,double scaleY,bool drawStroke,librevenge::RVNGPropertyList & graphicsProps,librevenge::RVNGDrawingInterface * painter,std::function<double (unsigned index)> calculator,const std::vector<Color> & palette)5728 void drawEmulatedLine(std::shared_ptr<const CustomShape> shape, ShapeType shapeType, const std::vector<Line> &lines,
5729 Vector2D center, VectorTransformation2D transform,
5730 double x, double y, double scaleX, double scaleY,
5731 bool drawStroke, librevenge::RVNGPropertyList &graphicsProps, librevenge::RVNGDrawingInterface *painter,
5732 std::function<double(unsigned index)> calculator,
5733 const std::vector<Color> &palette)
5734 {
5735 std::vector<LineInfo> lineInfos;
5736 unsigned i_line = 0;
5737 bool rectangle = isShapeTypeRectangle(shapeType) && !lines.empty(); // ugly HACK: special handling for rectangle outlines.
5738 Vector2D vector(0, 0);
5739 Vector2D old(0, 0);
5740 for (unsigned i = 0; i < shape->m_numVertices; ++i)
5741 {
5742 librevenge::RVNGPropertyListVector vertices;
5743 librevenge::RVNGPropertyList vertex;
5744 if (i > 0)
5745 {
5746 librevenge::RVNGPropertyList vertexStart;
5747 double lineWidth = (double)(lines[i_line].m_widthInEmu) / EMUS_IN_INCH;
5748 switch (i - 1) // fudge the lines inward by half their width so they are fully inside the shape and hence proper borders
5749 {
5750 case 0:
5751 old.m_y += lineWidth / 2;
5752 break;
5753 case 1:
5754 old.m_x -= lineWidth / 2;
5755 break;
5756 case 2:
5757 old.m_y -= lineWidth / 2;
5758 break;
5759 case 3:
5760 old.m_x += lineWidth / 2;
5761 break;
5762 }
5763 old = transform.transformWithOrigin(old, center);
5764 vertexStart.insert("svg:x", old.m_x);
5765 vertexStart.insert("svg:y", old.m_y);
5766 vertices.append(vertexStart);
5767 }
5768 vector.m_x = x + scaleX * getSpecialIfNecessary(calculator, shape->mp_vertices[i].m_x);
5769 vector.m_y = y + scaleY * getSpecialIfNecessary(calculator, shape->mp_vertices[i].m_y);
5770 old = vector;
5771 if (rectangle)
5772 {
5773 double lineWidth = (double)(lines[i_line].m_widthInEmu) / EMUS_IN_INCH;
5774 switch (i) // fudge the lines inward by half their width so they are fully inside the shape and hence proper borders
5775 {
5776 case 1:
5777 vector.m_y += lineWidth / 2;
5778 break;
5779 case 2:
5780 vector.m_x -= lineWidth / 2;
5781 break;
5782 case 3:
5783 vector.m_y -= lineWidth / 2;
5784 break;
5785 case 4:
5786 vector.m_x += lineWidth / 2;
5787 break;
5788 }
5789 }
5790 vector = transform.transformWithOrigin(vector, center);
5791 vertex.insert("svg:x", vector.m_x);
5792 vertex.insert("svg:y", vector.m_y);
5793 vertices.append(vertex);
5794 if (i > 0)
5795 {
5796 lineInfos.push_back(LineInfo(vertices, lines[i_line], palette));
5797 if (drawStroke)
5798 {
5799 if (i_line + 1 < lines.size()) // continue using the last element if we run out of lines.
5800 {
5801 ++i_line;
5802 }
5803 }
5804 }
5805 }
5806 if (rectangle)
5807 {
5808 LineInfo *top = &lineInfos[0];
5809 LineInfo *right = (lineInfos.size() > 1) ? &lineInfos[1] : nullptr;
5810 LineInfo *bottom = (lineInfos.size() > 2) ? &lineInfos[2] : nullptr;
5811 LineInfo *left = (lineInfos.size() > 3) ? &lineInfos[3] : nullptr;
5812 if (left)
5813 {
5814 left->output(painter, graphicsProps);
5815 }
5816 if (right)
5817 {
5818 right->output(painter, graphicsProps);
5819 }
5820 if (top)
5821 {
5822 top->output(painter, graphicsProps);
5823 }
5824 if (bottom)
5825 {
5826 bottom->output(painter, graphicsProps);
5827 }
5828 }
5829 else
5830 {
5831 for (auto &lineInfo : lineInfos)
5832 {
5833 lineInfo.output(painter, graphicsProps);
5834 }
5835 }
5836 }
5837
getRayEllipseIntersection(double initX,double initY,double rx,double ry,double cx,double cy,double & xOut,double & yOut)5838 void getRayEllipseIntersection(double initX, double initY, double rx, double ry, double cx, double cy, double &xOut, double &yOut)
5839 {
5840 double x = initX - cx;
5841 double y = initY - cy;
5842 if (x != 0 && y != 0)
5843 {
5844 xOut = rx * ry / sqrt(ry * ry + rx * rx * (y / x) * (y / x));
5845 if (x < 0)
5846 {
5847 xOut *= -1;
5848 }
5849 yOut = xOut * y / x;
5850 }
5851 else if (y != 0)
5852 {
5853 xOut = 0;
5854 if (y > 0)
5855 {
5856 yOut = ry;
5857 }
5858 else
5859 {
5860 yOut = -ry;
5861 }
5862 }
5863 else if (x != 0)
5864 {
5865 yOut = 0;
5866 if (x > 0)
5867 {
5868 xOut = rx;
5869 }
5870 else
5871 {
5872 xOut = -rx;
5873 }
5874 }
5875 else
5876 {
5877 xOut = yOut = 0;
5878 }
5879 xOut += cx;
5880 yOut += cy;
5881 }
5882
calcClipPath(const std::vector<Vertex> & verts,double x,double y,double height,double width,VectorTransformation2D transform,std::shared_ptr<const CustomShape> shape)5883 librevenge::RVNGPropertyList calcClipPath(const std::vector<Vertex> &verts, double x, double y, double height, double width, VectorTransformation2D transform, std::shared_ptr<const CustomShape> shape)
5884 {
5885 librevenge::RVNGPropertyList vertices;
5886 Vector2D center(x + width / 2, y + height / 2);
5887 double scaleX = width / shape->m_coordWidth;
5888 double scaleY = height / shape->m_coordHeight;
5889 librevenge::RVNGString clipString;
5890 Vector2D vector(x + scaleX * verts[0].m_x, y + scaleY * verts[0].m_y);
5891 vector = transform.transformWithOrigin(vector, center);
5892 librevenge::RVNGString sValue;
5893 sValue.sprintf("M %f %f", (double)vector.m_x, (double)vector.m_y);
5894 clipString.append(sValue);
5895 for (unsigned i = 1; i < verts.size(); ++i)
5896 {
5897 Vector2D vector2(x + scaleX * verts[i].m_x, y + scaleY * verts[i].m_y);
5898 vector2 = transform.transformWithOrigin(vector2, center);
5899 librevenge::RVNGString sValue2;
5900 sValue2.sprintf(" L %f %f", (double)vector2.m_x, (double)vector2.m_y);
5901 clipString.append(sValue2);
5902 }
5903 clipString.append(" Z");
5904 vertices.insert("svg:clip-path", clipString);
5905 return vertices;
5906 }
5907
writeCustomShape(ShapeType shapeType,librevenge::RVNGPropertyList & graphicsProps,librevenge::RVNGDrawingInterface * painter,double x,double y,double height,double width,bool closeEverything,VectorTransformation2D transform,std::vector<Line> lines,std::function<double (unsigned index)> calculator,const std::vector<Color> & palette,std::shared_ptr<const CustomShape> shape)5908 void writeCustomShape(ShapeType shapeType, librevenge::RVNGPropertyList &graphicsProps, librevenge::RVNGDrawingInterface *painter, double x, double y, double height, double width, bool closeEverything, VectorTransformation2D transform, std::vector<Line> lines, std::function<double(unsigned index)> calculator, const std::vector<Color> &palette, std::shared_ptr<const CustomShape> shape)
5909 {
5910 MSPUB_DEBUG_MSG(("***STARTING CUSTOM SHAPE***\n"));
5911 if (!shape)
5912 {
5913 return;
5914 }
5915 bool drawStroke = !lines.empty();
5916 bool horizontal = height == 0;
5917 bool vertical = width == 0;
5918 if (horizontal && vertical)
5919 {
5920 return;
5921 }
5922 Vector2D center(x + width / 2, y + height / 2);
5923 double scaleX = width / shape->m_coordWidth;
5924 double scaleY = height / shape->m_coordHeight;
5925 bool allLinesSame = true;
5926 for (unsigned i = 0; allLinesSame && i + 1< lines.size(); ++i)
5927 {
5928 const Line &l1 = lines[i];
5929 const Line &l2 = lines[i + 1];
5930 allLinesSame = l1 == l2;
5931 }
5932 if (shape->mp_elements == nullptr)
5933 {
5934 bool shouldDrawShape = true;
5935 if ((!graphicsProps["draw:fill"]) || (graphicsProps["draw:fill"]->getStr() == "none"))
5936 {
5937 if (!allLinesSame)
5938 {
5939 drawEmulatedLine(shape, shapeType, lines, center, transform,
5940 x, y, scaleX, scaleY, drawStroke, graphicsProps, painter, calculator, palette);
5941 shouldDrawShape = false;
5942 }
5943 else if (drawStroke)
5944 {
5945 Line &first = lines[0];
5946 if (!first.m_lineExists)
5947 {
5948 graphicsProps.insert("draw:stroke", "none");
5949 }
5950 graphicsProps.insert("svg:stroke-width", (double)(first.m_widthInEmu) / EMUS_IN_INCH);
5951 graphicsProps.insert("svg:stroke-color", MSPUBCollector::getColorString(first.m_color.getFinalColor(palette)));
5952 painter->setStyle(graphicsProps);
5953 }
5954 }
5955 if (shouldDrawShape)
5956 {
5957 librevenge::RVNGPropertyListVector vertices;
5958 for (unsigned i = 0; i < shape->m_numVertices; ++i)
5959 {
5960 librevenge::RVNGPropertyList vertex;
5961 Vector2D vector(x + scaleX * getSpecialIfNecessary(calculator, shape->mp_vertices[i].m_x),
5962 y + scaleY * getSpecialIfNecessary(calculator, shape->mp_vertices[i].m_y));
5963 vector = transform.transformWithOrigin(vector, center);
5964 vertex.insert("svg:x", vector.m_x);
5965 vertex.insert("svg:y", vector.m_y);
5966 vertices.append(vertex);
5967 }
5968 librevenge::RVNGPropertyList points;
5969 points.insert("svg:points", vertices);
5970 painter->drawPolygon(points);
5971 }
5972 }
5973 else
5974 {
5975 librevenge::RVNGPropertyListVector vertices;
5976 if (drawStroke)
5977 {
5978 // don't bother with different strokes for things defined by segments
5979 Line &first = lines[0];
5980 if (!first.m_lineExists)
5981 {
5982 graphicsProps.insert("draw:stroke", "none");
5983 }
5984 graphicsProps.insert("svg:stroke-width", (double)(first.m_widthInEmu) / EMUS_IN_INCH);
5985 graphicsProps.insert("svg:stroke-color", MSPUBCollector::getColorString(first.m_color.getFinalColor(palette)));
5986 painter->setStyle(graphicsProps);
5987 }
5988 unsigned vertexIndex = 0;
5989 bool hasUnclosedElements = false;
5990 boost::optional<Vector2D> lastPoint;
5991 // Escher assigns segments into subpaths somewhat differently than SVG does,
5992 // so we have to keep track of the following, rather than just adding a 'Z'
5993 // directive on path close and expecting everything to work.
5994 boost::optional<Vector2D> pathBegin;
5995 for (unsigned i = 0; i < shape->m_numElements; ++i)
5996 {
5997 ShapeElementCommand cmd = getCommandFromBinary(shape->mp_elements[i]);
5998 switch (cmd.m_command)
5999 {
6000 case ELLIPTICALQUADRANTX:
6001 case ELLIPTICALQUADRANTY:
6002 {
6003 #ifdef DEBUG
6004 if (cmd.m_command == ELLIPTICALQUADRANTX)
6005 {
6006 MSPUB_DEBUG_MSG(("ELLIPTICALQUADRANTX %d\n", cmd.m_count));
6007 }
6008 else
6009 {
6010 MSPUB_DEBUG_MSG(("ELLIPTICALQUADRANTY %d\n", cmd.m_count));
6011 }
6012 #endif
6013 bool firstDirection = true;
6014 for (unsigned j = 0; (j < cmd.m_count) && (vertexIndex < shape->m_numVertices); ++j, ++vertexIndex)
6015 {
6016 bool modifier = cmd.m_command == ELLIPTICALQUADRANTX ? true : false;
6017 const Vertex &curr = shape->mp_vertices[vertexIndex];
6018 Vector2D curr2D(x + scaleX * getSpecialIfNecessary(calculator, curr.m_x), y + scaleY * getSpecialIfNecessary(calculator, curr.m_y));
6019 if (bool(lastPoint))
6020 {
6021 if (!pathBegin)
6022 {
6023 pathBegin = curr2D;
6024 }
6025 hasUnclosedElements = true;
6026 double prevX = lastPoint.get().m_x;
6027 double prevY = lastPoint.get().m_y;
6028 double tmpX = curr2D.m_x - prevX;
6029 double tmpY = curr2D.m_y - prevY;
6030 if ((tmpX < 0 && tmpY >= 0) || (tmpX >= 0 && tmpY < 0))
6031 {
6032 if (j == 0)
6033 {
6034 firstDirection = true;
6035 }
6036 else if (! firstDirection)
6037 {
6038 modifier = !modifier;
6039 }
6040 }
6041 else
6042 {
6043 if (j == 0)
6044 {
6045 firstDirection = false;
6046 }
6047 else if (firstDirection)
6048 {
6049 modifier = !modifier;
6050 }
6051 }
6052 if (modifier)
6053 {
6054 tmpX = curr2D.m_x;
6055 tmpY = prevY;
6056 }
6057 else
6058 {
6059 tmpX = prevX;
6060 tmpY = curr2D.m_y;
6061 }
6062 double vecX = (tmpX - prevX) / 2;
6063 double vecY = (tmpY - prevY) / 2;
6064 Vector2D vec1(prevX + vecX, prevY + vecY);
6065 vecX = (tmpX - curr2D.m_x) / 2;
6066 vecY = (tmpY - curr2D.m_y) / 2;
6067 Vector2D vec2(curr2D.m_x + vecX, curr2D.m_y + vecY);
6068 vec1 = transform.transformWithOrigin(vec1, center);
6069 vec2 = transform.transformWithOrigin(vec2, center);
6070 curr2D = transform.transformWithOrigin(curr2D, center);
6071 librevenge::RVNGPropertyList bezier;
6072 bezier.insert("librevenge:path-action", "C");
6073 bezier.insert("svg:x1", vec1.m_x);
6074 bezier.insert("svg:x2", vec2.m_x);
6075 bezier.insert("svg:y1", vec1.m_y);
6076 bezier.insert("svg:y2", vec2.m_y);
6077 bezier.insert("svg:x", curr2D.m_x);
6078 bezier.insert("svg:y", curr2D.m_y);
6079 vertices.append(bezier);
6080 }
6081 else
6082 {
6083 //something is broken, just move
6084 if (vertexIndex < shape->m_numVertices)
6085 {
6086 librevenge::RVNGPropertyList moveVertex;
6087 if (hasUnclosedElements && closeEverything)
6088 {
6089 librevenge::RVNGPropertyList closeVertex;
6090 closeVertex.insert("librevenge:path-action", "Z");
6091 vertices.append(closeVertex);
6092 }
6093 hasUnclosedElements = false;
6094 Vector2D new_(x + scaleX * getSpecialIfNecessary(calculator, shape->mp_vertices[vertexIndex].m_x), y + scaleY * getSpecialIfNecessary(calculator, shape->mp_vertices[vertexIndex].m_y));
6095 new_ = transform.transformWithOrigin(new_, center);
6096 moveVertex.insert("svg:x", new_.m_x);
6097 moveVertex.insert("svg:y", new_.m_y);
6098 moveVertex.insert("librevenge:path-action", "M");
6099 vertices.append(moveVertex);
6100 ++vertexIndex;
6101 }
6102 }
6103 }
6104 }
6105 break;
6106 case CLOCKWISEARCTO:
6107 case CLOCKWISEARC:
6108 case ARCTO:
6109 case ARC:
6110 switch (cmd.m_command)
6111 {
6112 case CLOCKWISEARCTO:
6113 MSPUB_DEBUG_MSG(("CLOCKWISEARCTO %d\n", cmd.m_count));
6114 break;
6115 case CLOCKWISEARC:
6116 MSPUB_DEBUG_MSG(("CLOCKWISEARC %d\n", cmd.m_count));
6117 break;
6118 case ARCTO:
6119 MSPUB_DEBUG_MSG(("ARCTO %d\n", cmd.m_count));
6120 break;
6121 case ARC:
6122 MSPUB_DEBUG_MSG(("ARC %d\n", cmd.m_count));
6123 break;
6124 default:
6125 break;
6126 }
6127 for (unsigned j = 0; (j < cmd.m_count) && (vertexIndex + 3 < shape->m_numVertices); ++j, vertexIndex += 4)
6128 {
6129 for (unsigned k = 0; k < 4; ++k)
6130 {
6131 MSPUB_DEBUG_MSG(("Calculated vertex x: %f, y: %f\n", getSpecialIfNecessary(calculator, shape->mp_vertices[vertexIndex + k].m_x), getSpecialIfNecessary(calculator, shape->mp_vertices[vertexIndex + k].m_y)));
6132 }
6133 bool to = cmd.m_command == CLOCKWISEARCTO || cmd.m_command == ARCTO;
6134 bool clockwise = cmd.m_command == CLOCKWISEARCTO || cmd.m_command == CLOCKWISEARC;
6135 const Vertex &bound1 = shape->mp_vertices[vertexIndex];
6136 const Vertex &bound2 = shape->mp_vertices[vertexIndex + 1];
6137 const Vertex &start = shape->mp_vertices[vertexIndex + 2];
6138 const Vertex &end = shape->mp_vertices[vertexIndex + 3];
6139
6140 double bound1X = x + scaleX * getSpecialIfNecessary(calculator, bound1.m_x);
6141 double bound1Y = y + scaleY * getSpecialIfNecessary(calculator, bound1.m_y);
6142 double bound2X = x + scaleX * getSpecialIfNecessary(calculator, bound2.m_x);
6143 double bound2Y = y + scaleY * getSpecialIfNecessary(calculator, bound2.m_y);
6144 double rx = fabs(bound1X - bound2X) / 2;
6145 double ry = fabs(bound1Y - bound2Y) / 2;
6146 double cx = (bound1X + bound2X) / 2;
6147 double cy = (bound1Y + bound2Y) / 2;
6148 double startX = x + scaleX * getSpecialIfNecessary(calculator, start.m_x);
6149 double startY = y + scaleY * getSpecialIfNecessary(calculator, start.m_y);
6150 double endX = x + scaleX * getSpecialIfNecessary(calculator, end.m_x);
6151 double endY = y + scaleY * getSpecialIfNecessary(calculator, end.m_y);
6152 getRayEllipseIntersection(startX, startY, rx, ry, cx, cy, startX, startY);
6153 getRayEllipseIntersection(endX, endY, rx, ry, cx, cy, endX, endY);
6154 Vector2D start2D(startX, startY);
6155 if (!pathBegin)
6156 {
6157 pathBegin = start2D;
6158 }
6159 start2D = transform.transformWithOrigin(start2D, center);
6160 Vector2D end2D(endX, endY);
6161 lastPoint = end2D;
6162 end2D = transform.transformWithOrigin(end2D, center);
6163 bool clockwiseAfterTransform = clockwise ^ transform.orientationReversing();
6164 librevenge::RVNGPropertyList startVertex;
6165 startVertex.insert("svg:x", start2D.m_x);
6166 startVertex.insert("svg:y", start2D.m_y);
6167 startVertex.insert("librevenge:path-action", ((to || closeEverything) && hasUnclosedElements) ? "L" : "M");
6168 vertices.append(startVertex);
6169 double startAngle = atan2(cy - startY, startX - cx);
6170 double endAngle = atan2(cy -endY, endX - cx);
6171 double angleDifference = clockwise ? doubleModulo(startAngle - endAngle, 2 * M_PI)
6172 : doubleModulo(endAngle - startAngle, 2 * M_PI);
6173 // don't worry about corner cases; the closer an arc gets to pi radians, the
6174 // less difference there is between the large and small arcs, down to no difference at all
6175 // for an exact 180-degree arc.
6176 bool largeArc = angleDifference >= M_PI;
6177 librevenge::RVNGPropertyList ellipseVertex;
6178 ellipseVertex.insert("svg:x", end2D.m_x);
6179 ellipseVertex.insert("svg:y", end2D.m_y);
6180 // The next two lines won't work if "transform" stretches the shape.
6181 // Since currently the only transforms are flips and rotations, this isn't a problem now,
6182 // but keep it in mind if we ever change how this code works, since it breaks abstraction.
6183 ellipseVertex.insert("svg:rx", rx);
6184 ellipseVertex.insert("svg:ry", ry);
6185 ellipseVertex.insert("librevenge:large-arc", largeArc ? 1 : 0);
6186 ellipseVertex.insert("librevenge:sweep", clockwiseAfterTransform ? 1 : 0);
6187 ellipseVertex.insert("librevenge:rotate", -transform.getRotation());
6188 ellipseVertex.insert("librevenge:path-action", "A");
6189 vertices.append(ellipseVertex);
6190 hasUnclosedElements = true;
6191 }
6192 break;
6193
6194 case ANGLEELLIPSE:
6195 MSPUB_DEBUG_MSG(("ANGLEELLIPSE %d\n", cmd.m_count));
6196 for (unsigned j = 0; (j < cmd.m_count) && (vertexIndex + 2 < shape->m_numVertices); ++j, vertexIndex += 3)
6197 {
6198 hasUnclosedElements = true;
6199 librevenge::RVNGPropertyList vertex;
6200 double startAngle = getSpecialIfNecessary(calculator, shape->mp_vertices[vertexIndex + 2].m_x);
6201 double endAngle = getSpecialIfNecessary(calculator, shape->mp_vertices[vertexIndex + 2].m_y);
6202 double cx = x + scaleX * getSpecialIfNecessary(calculator, shape->mp_vertices[vertexIndex].m_x);
6203 double cy = y + scaleY * getSpecialIfNecessary(calculator, shape->mp_vertices[vertexIndex].m_y);
6204 double rx = scaleX * getSpecialIfNecessary(calculator, shape->mp_vertices[vertexIndex + 1].m_x);
6205 double ry = scaleY * getSpecialIfNecessary(calculator, shape->mp_vertices[vertexIndex + 1].m_y);
6206
6207 // FIXME: Are angles supposed to be the actual angle of the point with the x-axis,
6208 // or the eccentric anomaly, or something else?
6209 //
6210 // assuming eccentric anomaly for now
6211 librevenge::RVNGPropertyList moveVertex;
6212 Vector2D start(cx + rx * cos(startAngle * M_PI / 180),
6213 cy + ry * sin(startAngle * M_PI / 180));
6214 if (!pathBegin)
6215 {
6216 pathBegin = start;
6217 }
6218 start = transform.transformWithOrigin(start, center);
6219 moveVertex.insert("librevenge:path-action", "M");
6220 moveVertex.insert("svg:x", start.m_x);
6221 moveVertex.insert("svg:y", start.m_y);
6222 vertices.append(moveVertex);
6223 Vector2D half(cx + rx * cos(endAngle * M_PI / 360),
6224 cy + ry * sin(endAngle * M_PI / 360));
6225 half = transform.transformWithOrigin(half, center);
6226 librevenge::RVNGPropertyList halfVertex;
6227 halfVertex.insert("librevenge:path-action", "A");
6228 halfVertex.insert("svg:x", half.m_x);
6229 halfVertex.insert("svg:y", half.m_y);
6230 halfVertex.insert("svg:rx", rx * transform.getHorizontalScaling());
6231 halfVertex.insert("svg:ry", ry * transform.getVerticalScaling());
6232 halfVertex.insert("librevenge:rotate", transform.getRotation() * 180 / M_PI);
6233 vertices.append(halfVertex);
6234 Vector2D end(cx + rx * cos(endAngle * M_PI / 180),
6235 cy + ry * sin(endAngle * M_PI / 180));
6236 lastPoint = end;
6237 end = transform.transformWithOrigin(end, center);
6238 vertex.insert("svg:x", end.m_x);
6239 vertex.insert("svg:y", end.m_y);
6240 vertex.insert("svg:rx", rx);
6241 vertex.insert("svg:ry", ry);
6242 vertex.insert("librevenge:rotate", transform.getRotation() * 180 / M_PI);
6243 vertex.insert("librevenge:path-action", "A");
6244 vertices.append(vertex);
6245 }
6246 break;
6247 case MOVETO:
6248 MSPUB_DEBUG_MSG(("MOVETO %d\n", cmd.m_count));
6249 for (unsigned j = 0; (j < cmd.m_count) && (vertexIndex < shape->m_numVertices); ++j, ++vertexIndex)
6250 {
6251 MSPUB_DEBUG_MSG(("x: %f, y: %f\n", getSpecialIfNecessary(calculator, shape->mp_vertices[vertexIndex].m_x), getSpecialIfNecessary(calculator, shape->mp_vertices[vertexIndex].m_y)));
6252 if (hasUnclosedElements && closeEverything)
6253 {
6254 librevenge::RVNGPropertyList closeVertex;
6255 closeVertex.insert("librevenge:path-action", "Z");
6256 vertices.append(closeVertex);
6257 }
6258 hasUnclosedElements = false;
6259 librevenge::RVNGPropertyList moveVertex;
6260 Vector2D new_(x + scaleX * getSpecialIfNecessary(calculator, shape->mp_vertices[vertexIndex].m_x),
6261 y + scaleY * getSpecialIfNecessary(calculator, shape->mp_vertices[vertexIndex].m_y));
6262 pathBegin = new_;
6263 lastPoint = new_;
6264 new_ = transform.transformWithOrigin(new_, center);
6265 moveVertex.insert("svg:x", new_.m_x);
6266 moveVertex.insert("svg:y", new_.m_y);
6267 moveVertex.insert("librevenge:path-action", "M");
6268 vertices.append(moveVertex);
6269 }
6270 break;
6271 case LINETO:
6272 MSPUB_DEBUG_MSG(("LINETO %d\n", cmd.m_count));
6273 for (unsigned j = 0; (j < cmd.m_count) && (vertexIndex < shape->m_numVertices); ++j, ++vertexIndex)
6274 {
6275 MSPUB_DEBUG_MSG(("x: %f, y: %f\n", getSpecialIfNecessary(calculator, shape->mp_vertices[vertexIndex].m_x), getSpecialIfNecessary(calculator, shape->mp_vertices[vertexIndex].m_y)));
6276 hasUnclosedElements = true;
6277 librevenge::RVNGPropertyList vertex;
6278 Vector2D vector(x + scaleX * getSpecialIfNecessary(calculator, shape->mp_vertices[vertexIndex].m_x),
6279 y + scaleY * getSpecialIfNecessary(calculator, shape->mp_vertices[vertexIndex].m_y));
6280 lastPoint = vector;
6281 vector = transform.transformWithOrigin(vector, center);
6282 vertex.insert("svg:x", vector.m_x);
6283 vertex.insert("svg:y", vector.m_y);
6284 vertex.insert("librevenge:path-action", "L");
6285 vertices.append(vertex);
6286 }
6287 break;
6288 case CURVETO:
6289 MSPUB_DEBUG_MSG(("CURVETO %d\n", cmd.m_count));
6290 for (unsigned j = 0; (j < cmd.m_count) && (vertexIndex + 2 < shape->m_numVertices); ++j, vertexIndex += 3)
6291 {
6292 hasUnclosedElements = true;
6293 Vector2D firstCtrl(x + scaleX * getSpecialIfNecessary(calculator, shape->mp_vertices[vertexIndex].m_x),
6294 y + scaleY * getSpecialIfNecessary(calculator, shape->mp_vertices[vertexIndex].m_y));
6295 firstCtrl = transform.transformWithOrigin(firstCtrl, center);
6296 Vector2D secondCtrl(x + scaleX * getSpecialIfNecessary(calculator, shape->mp_vertices[vertexIndex + 1].m_x),
6297 y + scaleY * getSpecialIfNecessary(calculator, shape->mp_vertices[vertexIndex + 1].m_y));
6298 secondCtrl = transform.transformWithOrigin(secondCtrl, center);
6299 Vector2D end(x + scaleX * getSpecialIfNecessary(calculator, shape->mp_vertices[vertexIndex + 2].m_x),
6300 y + scaleY * getSpecialIfNecessary(calculator, shape->mp_vertices[vertexIndex + 2].m_y));
6301 lastPoint = end;
6302 end = transform.transformWithOrigin(end, center);
6303 librevenge::RVNGPropertyList bezier;
6304 bezier.insert("librevenge:path-action", "C");
6305 bezier.insert("svg:x1", firstCtrl.m_x);
6306 bezier.insert("svg:x2", secondCtrl.m_x);
6307 bezier.insert("svg:y1", firstCtrl.m_y);
6308 bezier.insert("svg:y2", secondCtrl.m_y);
6309 bezier.insert("svg:x", end.m_x);
6310 bezier.insert("svg:y", end.m_y);
6311 vertices.append(bezier);
6312 }
6313 break;
6314 case CLOSESUBPATH:
6315 {
6316 MSPUB_DEBUG_MSG(("CLOSESUBPATH\n"));
6317 if (!pathBegin)
6318 {
6319 MSPUB_DEBUG_MSG(("Tried to close a subpath that hadn't yet begun!\n"));
6320 }
6321 else if (closeEverything)
6322 {
6323 librevenge::RVNGPropertyList end;
6324 end.insert("librevenge:path-action", "Z");
6325 vertices.append(end);
6326 }
6327 else
6328 {
6329 librevenge::RVNGPropertyList end;
6330 end.insert("librevenge:path-action", "L");
6331 Vector2D transformedPathBegin = transform.transformWithOrigin(pathBegin.get(), center);
6332 end.insert("svg:x", transformedPathBegin.m_x);
6333 end.insert("svg:y", transformedPathBegin.m_y);
6334 vertices.append(end);
6335 }
6336 hasUnclosedElements = false;
6337 }
6338 MSPUB_FALLTHROUGH;
6339 case ENDSUBPATH:
6340 MSPUB_DEBUG_MSG(("ENDSUBPATH\n"));
6341 if (closeEverything && bool(pathBegin))
6342 {
6343 librevenge::RVNGPropertyList end;
6344 end.insert("librevenge:path-action", "Z");
6345 vertices.append(end);
6346 }
6347 pathBegin = boost::optional<Vector2D>();
6348 break;
6349 case NOFILL:
6350 MSPUB_DEBUG_MSG(("NOFILL (ignored)\n"));
6351 break;
6352 case NOSTROKE:
6353 MSPUB_DEBUG_MSG(("NOSTROKE (ignored)\n"));
6354 break;
6355 default:
6356 MSPUB_DEBUG_MSG(("Unknown custom shape command %d\n", cmd.m_command));
6357 break;
6358 }
6359 }
6360 if (hasUnclosedElements && closeEverything)
6361 {
6362 if (bool(pathBegin))
6363 {
6364 librevenge::RVNGPropertyList end;
6365 end.insert("librevenge:path-action", "Z");
6366 vertices.append(end);
6367 }
6368 }
6369 librevenge::RVNGPropertyList propList;
6370 propList.insert("svg:d", vertices);
6371 painter->drawPath(propList);
6372 }
6373 }
6374
isShapeTypeRectangle(ShapeType type)6375 bool isShapeTypeRectangle(ShapeType type)
6376 {
6377 return type == RECTANGLE || type == TEXT_BOX;
6378 }
6379
6380
getFromDynamicCustomShape(const DynamicCustomShape & dcs)6381 std::shared_ptr<const CustomShape> getFromDynamicCustomShape(const DynamicCustomShape &dcs)
6382 {
6383 return std::shared_ptr<const CustomShape>(new CustomShape(
6384 dcs.m_vertices.empty() ? nullptr : dcs.m_vertices.data(),
6385 dcs.m_vertices.size(),
6386 dcs.m_elements.empty() ? nullptr : dcs.m_elements.data(),
6387 dcs.m_elements.size(),
6388 dcs.m_calculations.empty() ? nullptr : dcs.m_calculations.data(),
6389 dcs.m_calculations.size(),
6390 dcs.m_defaultAdjustValues.empty() ? nullptr :
6391 dcs.m_defaultAdjustValues.data(),
6392 dcs.m_defaultAdjustValues.size(),
6393 dcs.m_textRectangles.empty() ? nullptr : dcs.m_textRectangles.data(),
6394 dcs.m_textRectangles.size(),
6395 dcs.m_coordWidth, dcs.m_coordHeight,
6396 dcs.m_gluePoints.empty() ? nullptr : dcs.m_gluePoints.data(),
6397 dcs.m_gluePoints.size(),
6398 dcs.m_adjustShiftMask
6399 ));
6400 }
6401
6402 }
6403
6404 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
6405