JOGL v2.6.0-rc-20250712
JOGL, High-Performance Graphics Binding for Java™ (public API).
Glyph03FreeMonoRegular_M.java
Go to the documentation of this file.
1/**
2 * Copyright 2023 JogAmp Community. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without modification, are
5 * permitted provided that the following conditions are met:
6 *
7 * 1. Redistributions of source code must retain the above copyright notice, this list of
8 * conditions and the following disclaimer.
9 *
10 * 2. Redistributions in binary form must reproduce the above copyright notice, this list
11 * of conditions and the following disclaimer in the documentation and/or other materials
12 * provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
15 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
16 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
20 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
21 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
22 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23 *
24 * The views and conclusions contained in the software and documentation are those of the
25 * authors and should not be interpreted as representing official policies, either expressed
26 * or implied, of JogAmp Community.
27 */
28package com.jogamp.opengl.demos.graph.ui.testshapes;
29
30import com.jogamp.graph.curve.OutlineShape;
31import com.jogamp.graph.ui.GraphShape;
32import com.jogamp.opengl.GL2ES2;
33import com.jogamp.opengl.GLProfile;
34
35/**
36 * GPU based resolution independent test object
37 * - FreeMono-Regular, capital case 'M'
38 * - TTF Shape for Glyph 48
39 */
41
43 super(renderModes);
44 }
45
46 @SuppressWarnings("unused")
47 @Override
48 protected void addShapeToRegion(final GLProfile glp, final GL2ES2 gl) {
49 final OutlineShape shape = new OutlineShape();
50
51 if( true ) {
52 // Start TTF Shape for Glyph 48
53 // GlyphShape<48>: offset 0 of 45/45 points
54 // pM[044] P[483/522, on true, end true]
55 // p0[000] P[326/169, on true, end false]
56 // p1[001] P[280/169, on true, end false]
57 // p2[002] P[121/522, on true, end false]
58 // 000: B0a: move-to p0
59 // Shape.MoveTo:
60 shape.closeLastOutline(false);
61 shape.addEmptyOutline();
62 shape.addVertex(0, 0.326000f, 0.169000f, true);
63 // 000: B1: line-to p0-p1
64 // Shape.LineTo:
65 shape.addVertex(0, 0.280000f, 0.169000f, true);
66 // GlyphShape<48>: offset 1 of 45/45 points
67 // pM[000] P[326/169, on true, end false]
68 // p0[001] P[280/169, on true, end false]
69 // p1[002] P[121/522, on true, end false]
70 // p2[003] P[113/522, on true, end false]
71 // 001: B1: line-to p0-p1
72 // Shape.LineTo:
73 shape.addVertex(0, 0.121000f, 0.522000f, true);
74 // GlyphShape<48>: offset 2 of 45/45 points
75 // pM[001] P[280/169, on true, end false]
76 // p0[002] P[121/522, on true, end false]
77 // p1[003] P[113/522, on true, end false]
78 // p2[004] P[113/41, on true, end false]
79 // 002: B1: line-to p0-p1
80 // Shape.LineTo:
81 shape.addVertex(0, 0.113000f, 0.522000f, true);
82 // GlyphShape<48>: offset 3 of 45/45 points
83 // pM[002] P[121/522, on true, end false]
84 // p0[003] P[113/522, on true, end false]
85 // p1[004] P[113/41, on true, end false]
86 // p2[005] P[187/41, on true, end false]
87 // 003: B1: line-to p0-p1
88 // Shape.LineTo:
89 shape.addVertex(0, 0.113000f, 0.041000f, true);
90 // GlyphShape<48>: offset 4 of 45/45 points
91 // pM[003] P[113/522, on true, end false]
92 // p0[004] P[113/41, on true, end false]
93 // p1[005] P[187/41, on true, end false]
94 // p2[006] P[215/41, on false, end false]
95 // 004: B1: line-to p0-p1
96 // Shape.LineTo:
97 shape.addVertex(0, 0.187000f, 0.041000f, true);
98 // GlyphShape<48>: offset 5 of 45/45 points
99 // pM[004] P[113/41, on true, end false]
100 // p0[005] P[187/41, on true, end false]
101 // p1[006] P[215/41, on false, end false]
102 // p2[007] P[215/21, on true, end false]
103 // 005: B2: quad-to p0-p1-p2
104 // Shape.QuadTo:
105 shape.addVertex(0, 0.215000f, 0.041000f, false);
106 shape.addVertex(0, 0.215000f, 0.021000f, true);
107 // GlyphShape<48>: offset 7 of 45/45 points
108 // pM[006] P[215/41, on false, end false]
109 // p0[007] P[215/21, on true, end false]
110 // p1[008] P[215/0, on false, end false]
111 // p2[009] P[187/0, on true, end false]
112 // 007: B2: quad-to p0-p1-p2
113 // Shape.QuadTo:
114 shape.addVertex(0, 0.215000f, 0.000000f, false);
115 shape.addVertex(0, 0.187000f, 0.000000f, true);
116 // GlyphShape<48>: offset 9 of 45/45 points
117 // pM[008] P[215/0, on false, end false]
118 // p0[009] P[187/0, on true, end false]
119 // p1[010] P[38/0, on true, end false]
120 // p2[011] P[11/0, on false, end false]
121 // 009: B1: line-to p0-p1
122 // Shape.LineTo:
123 shape.addVertex(0, 0.038000f, 0.000000f, true);
124 // GlyphShape<48>: offset 10 of 45/45 points
125 // pM[009] P[187/0, on true, end false]
126 // p0[010] P[38/0, on true, end false]
127 // p1[011] P[11/0, on false, end false]
128 // p2[012] P[11/21, on true, end false]
129 // 010: B2: quad-to p0-p1-p2
130 // Shape.QuadTo:
131 shape.addVertex(0, 0.011000f, 0.000000f, false);
132 shape.addVertex(0, 0.011000f, 0.021000f, true);
133 // GlyphShape<48>: offset 12 of 45/45 points
134 // pM[011] P[11/0, on false, end false]
135 // p0[012] P[11/21, on true, end false]
136 // p1[013] P[11/41, on false, end false]
137 // p2[014] P[38/41, on true, end false]
138 // 012: B2: quad-to p0-p1-p2
139 // Shape.QuadTo:
140 shape.addVertex(0, 0.011000f, 0.041000f, false);
141 shape.addVertex(0, 0.038000f, 0.041000f, true);
142 // GlyphShape<48>: offset 14 of 45/45 points
143 // pM[013] P[11/41, on false, end false]
144 // p0[014] P[38/41, on true, end false]
145 // p1[015] P[72/41, on true, end false]
146 // p2[016] P[72/522, on true, end false]
147 // 014: B1: line-to p0-p1
148 // Shape.LineTo:
149 shape.addVertex(0, 0.072000f, 0.041000f, true);
150 // GlyphShape<48>: offset 15 of 45/45 points
151 // pM[014] P[38/41, on true, end false]
152 // p0[015] P[72/41, on true, end false]
153 // p1[016] P[72/522, on true, end false]
154 // p2[017] P[47/522, on true, end false]
155 // 015: B1: line-to p0-p1
156 // Shape.LineTo:
157 shape.addVertex(0, 0.072000f, 0.522000f, true);
158 // GlyphShape<48>: offset 16 of 45/45 points
159 // pM[015] P[72/41, on true, end false]
160 // p0[016] P[72/522, on true, end false]
161 // p1[017] P[47/522, on true, end false]
162 // p2[018] P[20/522, on false, end false]
163 // 016: B1: line-to p0-p1
164 // Shape.LineTo:
165 shape.addVertex(0, 0.047000f, 0.522000f, true);
166 // GlyphShape<48>: offset 17 of 45/45 points
167 // pM[016] P[72/522, on true, end false]
168 // p0[017] P[47/522, on true, end false]
169 // p1[018] P[20/522, on false, end false]
170 // p2[019] P[20/543, on true, end false]
171 // 017: B2: quad-to p0-p1-p2
172 // Shape.QuadTo:
173 shape.addVertex(0, 0.020000f, 0.522000f, false);
174 shape.addVertex(0, 0.020000f, 0.543000f, true);
175 // GlyphShape<48>: offset 19 of 45/45 points
176 // pM[018] P[20/522, on false, end false]
177 // p0[019] P[20/543, on true, end false]
178 // p1[020] P[20/563, on false, end false]
179 // p2[021] P[47/563, on true, end false]
180 // 019: B2: quad-to p0-p1-p2
181 // Shape.QuadTo:
182 shape.addVertex(0, 0.020000f, 0.563000f, false);
183 shape.addVertex(0, 0.047000f, 0.563000f, true);
184 // GlyphShape<48>: offset 21 of 45/45 points
185 // pM[020] P[20/563, on false, end false]
186 // p0[021] P[47/563, on true, end false]
187 // p1[022] P[146/563, on true, end false]
188 // p2[023] P[303/215, on true, end false]
189 // 021: B1: line-to p0-p1
190 // Shape.LineTo:
191 shape.addVertex(0, 0.146000f, 0.563000f, true);
192 // GlyphShape<48>: offset 22 of 45/45 points
193 // pM[021] P[47/563, on true, end false]
194 // p0[022] P[146/563, on true, end false]
195 // p1[023] P[303/215, on true, end false]
196 // p2[024] P[457/563, on true, end false]
197 // 022: B1: line-to p0-p1
198 // Shape.LineTo:
199 shape.addVertex(0, 0.303000f, 0.215000f, true);
200 // GlyphShape<48>: offset 23 of 45/45 points
201 // pM[022] P[146/563, on true, end false]
202 // p0[023] P[303/215, on true, end false]
203 // p1[024] P[457/563, on true, end false]
204 // p2[025] P[557/563, on true, end false]
205 // 023: B1: line-to p0-p1
206 // Shape.LineTo:
207 shape.addVertex(0, 0.457000f, 0.563000f, true);
208 // GlyphShape<48>: offset 24 of 45/45 points
209 // pM[023] P[303/215, on true, end false]
210 // p0[024] P[457/563, on true, end false]
211 // p1[025] P[557/563, on true, end false]
212 // p2[026] P[584/563, on false, end false]
213 // 024: B1: line-to p0-p1
214 // Shape.LineTo:
215 shape.addVertex(0, 0.557000f, 0.563000f, true);
216 // GlyphShape<48>: offset 25 of 45/45 points
217 // pM[024] P[457/563, on true, end false]
218 // p0[025] P[557/563, on true, end false]
219 // p1[026] P[584/563, on false, end false]
220 // p2[027] P[584/543, on true, end false]
221 // 025: B2: quad-to p0-p1-p2
222 // Shape.QuadTo:
223 shape.addVertex(0, 0.584000f, 0.563000f, false);
224 shape.addVertex(0, 0.584000f, 0.543000f, true);
225 // GlyphShape<48>: offset 27 of 45/45 points
226 // pM[026] P[584/563, on false, end false]
227 // p0[027] P[584/543, on true, end false]
228 // p1[028] P[584/522, on false, end false]
229 // p2[029] P[557/522, on true, end false]
230 // 027: B2: quad-to p0-p1-p2
231 // Shape.QuadTo:
232 shape.addVertex(0, 0.584000f, 0.522000f, false);
233 shape.addVertex(0, 0.557000f, 0.522000f, true);
234 // GlyphShape<48>: offset 29 of 45/45 points
235 // pM[028] P[584/522, on false, end false]
236 // p0[029] P[557/522, on true, end false]
237 // p1[030] P[532/522, on true, end false]
238 // p2[031] P[532/41, on true, end false]
239 // 029: B1: line-to p0-p1
240 // Shape.LineTo:
241 shape.addVertex(0, 0.532000f, 0.522000f, true);
242 // GlyphShape<48>: offset 30 of 45/45 points
243 // pM[029] P[557/522, on true, end false]
244 // p0[030] P[532/522, on true, end false]
245 // p1[031] P[532/41, on true, end false]
246 // p2[032] P[566/41, on true, end false]
247 // 030: B1: line-to p0-p1
248 // Shape.LineTo:
249 shape.addVertex(0, 0.532000f, 0.041000f, true);
250 // GlyphShape<48>: offset 31 of 45/45 points
251 // pM[030] P[532/522, on true, end false]
252 // p0[031] P[532/41, on true, end false]
253 // p1[032] P[566/41, on true, end false]
254 // p2[033] P[593/41, on false, end false]
255 // 031: B1: line-to p0-p1
256 // Shape.LineTo:
257 shape.addVertex(0, 0.566000f, 0.041000f, true);
258 // GlyphShape<48>: offset 32 of 45/45 points
259 // pM[031] P[532/41, on true, end false]
260 // p0[032] P[566/41, on true, end false]
261 // p1[033] P[593/41, on false, end false]
262 // p2[034] P[593/21, on true, end false]
263 // 032: B2: quad-to p0-p1-p2
264 // Shape.QuadTo:
265 shape.addVertex(0, 0.593000f, 0.041000f, false);
266 shape.addVertex(0, 0.593000f, 0.021000f, true);
267 // GlyphShape<48>: offset 34 of 45/45 points
268 // pM[033] P[593/41, on false, end false]
269 // p0[034] P[593/21, on true, end false]
270 // p1[035] P[593/0, on false, end false]
271 // p2[036] P[566/0, on true, end false]
272 // 034: B2: quad-to p0-p1-p2
273 // Shape.QuadTo:
274 shape.addVertex(0, 0.593000f, 0.000000f, false);
275 shape.addVertex(0, 0.566000f, 0.000000f, true);
276 // GlyphShape<48>: offset 36 of 45/45 points
277 // pM[035] P[593/0, on false, end false]
278 // p0[036] P[566/0, on true, end false]
279 // p1[037] P[417/0, on true, end false]
280 // p2[038] P[390/0, on false, end false]
281 // 036: B1: line-to p0-p1
282 // Shape.LineTo:
283 shape.addVertex(0, 0.417000f, 0.000000f, true);
284 // GlyphShape<48>: offset 37 of 45/45 points
285 // pM[036] P[566/0, on true, end false]
286 // p0[037] P[417/0, on true, end false]
287 // p1[038] P[390/0, on false, end false]
288 // p2[039] P[390/21, on true, end false]
289 // 037: B2: quad-to p0-p1-p2
290 // Shape.QuadTo:
291 shape.addVertex(0, 0.390000f, 0.000000f, false);
292 shape.addVertex(0, 0.390000f, 0.021000f, true);
293 // GlyphShape<48>: offset 39 of 45/45 points
294 // pM[038] P[390/0, on false, end false]
295 // p0[039] P[390/21, on true, end false]
296 // p1[040] P[390/41, on false, end false]
297 // p2[041] P[417/41, on true, end false]
298 // 039: B2: quad-to p0-p1-p2
299 // Shape.QuadTo:
300 shape.addVertex(0, 0.390000f, 0.041000f, false);
301 shape.addVertex(0, 0.417000f, 0.041000f, true);
302 // GlyphShape<48>: offset 41 of 45/45 points
303 // pM[040] P[390/41, on false, end false]
304 // p0[041] P[417/41, on true, end false]
305 // p1[042] P[491/41, on true, end false]
306 // p2[043] P[491/522, on true, end false]
307 // 041: B1: line-to p0-p1
308 // Shape.LineTo:
309 shape.addVertex(0, 0.491000f, 0.041000f, true);
310 // GlyphShape<48>: offset 42 of 45/45 points
311 // pM[041] P[417/41, on true, end false]
312 // p0[042] P[491/41, on true, end false]
313 // p1[043] P[491/522, on true, end false]
314 // p2[044] P[483/522, on true, end true]
315 // 042: B1: line-to p0-p1
316 // Shape.LineTo:
317 shape.addVertex(0, 0.491000f, 0.522000f, true);
318 // GlyphShape<48>: offset 43 of 45/45 points
319 // pM[042] P[491/41, on true, end false]
320 // p0[043] P[491/522, on true, end false]
321 // p1[044] P[483/522, on true, end true]
322 // p2[000] P[326/169, on true, end false]
323 // 043: B1: line-to p0-p1
324 // Shape.LineTo:
325 shape.addVertex(0, 0.483000f, 0.522000f, true);
326 // GlyphShape<48>: offset 44 of 45/45 points
327 // pM[043] P[491/522, on true, end false]
328 // p0[044] P[483/522, on true, end true]
329 // p1[000] P[326/169, on true, end false]
330 // p2[001] P[280/169, on true, end false]
331 // 044: B1: line-to p0-p1
332 // Shape.LineTo:
333 shape.addVertex(0, 0.326000f, 0.169000f, true);
334 System.err.println("Glyph03FreeMonoRegular_M.shape01a.winding_area: "+shape.getWindingOfLastOutline());
335 shape.closeLastOutline(false);
336
337 // End Shape for Glyph 48
338 } else if( false ) {
339 // Start TTF Shape for Glyph 48
340 // GlyphShape<48>: offset 0 of 45/45 points
341 // pM[044] P[483/522, on true, end true]
342 // p0[000] P[326/169, on true, end false]
343 // p1[001] P[280/169, on true, end false]
344 // p2[002] P[121/522, on true, end false]
345 // 000: B0a: move-to p0
346 // Shape.MoveTo:
347 shape.closeLastOutline(false);
348 shape.addEmptyOutline();
349 shape.addVertex(0, 0.326000f, 0.169000f, true);
350 // 000: B1: line-to p0-p1
351 // Shape.LineTo:
352 shape.addVertex(0, 0.280000f, 0.169000f, true);
353 // GlyphShape<48>: offset 1 of 45/45 points
354 // pM[000] P[326/169, on true, end false]
355 // p0[001] P[280/169, on true, end false]
356 // p1[002] P[121/522, on true, end false]
357 // p2[003] P[113/522, on true, end false]
358 // 001: B1: line-to p0-p1
359 // Shape.LineTo:
360 shape.addVertex(0, 0.121000f, 0.522000f, true);
361 // GlyphShape<48>: offset 2 of 45/45 points
362 // pM[001] P[280/169, on true, end false]
363 // p0[002] P[121/522, on true, end false]
364 // p1[003] P[113/522, on true, end false]
365 // p2[004] P[113/41, on true, end false]
366 // 002: B1: line-to p0-p1
367 // Shape.LineTo:
368 shape.addVertex(0, 0.113000f, 0.522000f, true);
369 // GlyphShape<48>: offset 3 of 45/45 points
370 // pM[002] P[121/522, on true, end false]
371 // p0[003] P[113/522, on true, end false]
372 // p1[004] P[113/41, on true, end false]
373 // p2[005] P[187/41, on true, end false]
374 // 003: B1: line-to p0-p1
375 // Shape.LineTo:
376 shape.addVertex(0, 0.113000f, 0.041000f, true);
377 // GlyphShape<48>: offset 4 of 45/45 points
378 // pM[003] P[113/522, on true, end false]
379 // p0[004] P[113/41, on true, end false]
380 // p1[005] P[187/41, on true, end false]
381 // p2[006] P[215/41, on false, end false]
382 // 004: B1: line-to p0-p1
383 // Shape.LineTo:
384 shape.addVertex(0, 0.187000f, 0.041000f, true);
385 // GlyphShape<48>: offset 5 of 45/45 points
386 // pM[004] P[113/41, on true, end false]
387 // p0[005] P[187/41, on true, end false]
388 // p1[006] P[215/41, on false, end false]
389 // p2[007] P[215/21, on true, end false]
390 // 005: B2: quad-to p0-p1-p2
391 // Shape.QuadTo:
392 shape.addVertex(0, 0.215000f, 0.041000f, true); // curve -> line
393 shape.addVertex(0, 0.215000f, 0.021000f, true);
394 // GlyphShape<48>: offset 7 of 45/45 points
395 // pM[006] P[215/41, on false, end false]
396 // p0[007] P[215/21, on true, end false]
397 // p1[008] P[215/0, on false, end false]
398 // p2[009] P[187/0, on true, end false]
399 // 007: B2: quad-to p0-p1-p2
400 // Shape.QuadTo:
401 shape.addVertex(0, 0.215000f, 0.000000f, true); // curve -> line
402 shape.addVertex(0, 0.187000f, 0.000000f, true);
403 // GlyphShape<48>: offset 9 of 45/45 points
404 // pM[008] P[215/0, on false, end false]
405 // p0[009] P[187/0, on true, end false]
406 // p1[010] P[38/0, on true, end false]
407 // p2[011] P[11/0, on false, end false]
408 // 009: B1: line-to p0-p1
409 // Shape.LineTo:
410 shape.addVertex(0, 0.038000f, 0.000000f, true);
411 // GlyphShape<48>: offset 10 of 45/45 points
412 // pM[009] P[187/0, on true, end false]
413 // p0[010] P[38/0, on true, end false]
414 // p1[011] P[11/0, on false, end false]
415 // p2[012] P[11/21, on true, end false]
416 // 010: B2: quad-to p0-p1-p2
417 // Shape.QuadTo:
418 shape.addVertex(0, 0.011000f, 0.000000f, true); // curve -> line
419 shape.addVertex(0, 0.011000f, 0.021000f, true);
420 // GlyphShape<48>: offset 12 of 45/45 points
421 // pM[011] P[11/0, on false, end false]
422 // p0[012] P[11/21, on true, end false]
423 // p1[013] P[11/41, on false, end false]
424 // p2[014] P[38/41, on true, end false]
425 // 012: B2: quad-to p0-p1-p2
426 // Shape.QuadTo:
427 shape.addVertex(0, 0.011000f, 0.041000f, true); // curve -> line
428 shape.addVertex(0, 0.038000f, 0.041000f, true);
429 // GlyphShape<48>: offset 14 of 45/45 points
430 // pM[013] P[11/41, on false, end false]
431 // p0[014] P[38/41, on true, end false]
432 // p1[015] P[72/41, on true, end false]
433 // p2[016] P[72/522, on true, end false]
434 // 014: B1: line-to p0-p1
435 // Shape.LineTo:
436 shape.addVertex(0, 0.072000f, 0.041000f, true);
437 // GlyphShape<48>: offset 15 of 45/45 points
438 // pM[014] P[38/41, on true, end false]
439 // p0[015] P[72/41, on true, end false]
440 // p1[016] P[72/522, on true, end false]
441 // p2[017] P[47/522, on true, end false]
442 // 015: B1: line-to p0-p1
443 // Shape.LineTo:
444 shape.addVertex(0, 0.072000f, 0.522000f, true);
445 // GlyphShape<48>: offset 16 of 45/45 points
446 // pM[015] P[72/41, on true, end false]
447 // p0[016] P[72/522, on true, end false]
448 // p1[017] P[47/522, on true, end false]
449 // p2[018] P[20/522, on false, end false]
450 // 016: B1: line-to p0-p1
451 // Shape.LineTo:
452 shape.addVertex(0, 0.047000f, 0.522000f, true);
453 // GlyphShape<48>: offset 17 of 45/45 points
454 // pM[016] P[72/522, on true, end false]
455 // p0[017] P[47/522, on true, end false]
456 // p1[018] P[20/522, on false, end false]
457 // p2[019] P[20/543, on true, end false]
458 // 017: B2: quad-to p0-p1-p2
459 // Shape.QuadTo:
460 shape.addVertex(0, 0.020000f, 0.522000f, true); // curve -> line
461 shape.addVertex(0, 0.020000f, 0.543000f, true);
462 // GlyphShape<48>: offset 19 of 45/45 points
463 // pM[018] P[20/522, on false, end false]
464 // p0[019] P[20/543, on true, end false]
465 // p1[020] P[20/563, on false, end false]
466 // p2[021] P[47/563, on true, end false]
467 // 019: B2: quad-to p0-p1-p2
468 // Shape.QuadTo:
469 shape.addVertex(0, 0.020000f, 0.563000f, true); // curve -> line
470 shape.addVertex(0, 0.047000f, 0.563000f, true);
471 // GlyphShape<48>: offset 21 of 45/45 points
472 // pM[020] P[20/563, on false, end false]
473 // p0[021] P[47/563, on true, end false]
474 // p1[022] P[146/563, on true, end false]
475 // p2[023] P[303/215, on true, end false]
476 // 021: B1: line-to p0-p1
477 // Shape.LineTo:
478 shape.addVertex(0, 0.146000f, 0.563000f, true);
479 // GlyphShape<48>: offset 22 of 45/45 points
480 // pM[021] P[47/563, on true, end false]
481 // p0[022] P[146/563, on true, end false]
482 // p1[023] P[303/215, on true, end false]
483 // p2[024] P[457/563, on true, end false]
484 // 022: B1: line-to p0-p1
485 // Shape.LineTo:
486 shape.addVertex(0, 0.303000f, 0.215000f, true);
487 // GlyphShape<48>: offset 23 of 45/45 points
488 // pM[022] P[146/563, on true, end false]
489 // p0[023] P[303/215, on true, end false]
490 // p1[024] P[457/563, on true, end false]
491 // p2[025] P[557/563, on true, end false]
492 // 023: B1: line-to p0-p1
493 // Shape.LineTo:
494 shape.addVertex(0, 0.457000f, 0.563000f, true);
495 // GlyphShape<48>: offset 24 of 45/45 points
496 // pM[023] P[303/215, on true, end false]
497 // p0[024] P[457/563, on true, end false]
498 // p1[025] P[557/563, on true, end false]
499 // p2[026] P[584/563, on false, end false]
500 // 024: B1: line-to p0-p1
501 // Shape.LineTo:
502 shape.addVertex(0, 0.557000f, 0.563000f, true);
503 // GlyphShape<48>: offset 25 of 45/45 points
504 // pM[024] P[457/563, on true, end false]
505 // p0[025] P[557/563, on true, end false]
506 // p1[026] P[584/563, on false, end false]
507 // p2[027] P[584/543, on true, end false]
508 // 025: B2: quad-to p0-p1-p2
509 // Shape.QuadTo:
510 shape.addVertex(0, 0.584000f, 0.563000f, true); // curve -> line
511 shape.addVertex(0, 0.584000f, 0.543000f, true);
512 // GlyphShape<48>: offset 27 of 45/45 points
513 // pM[026] P[584/563, on false, end false]
514 // p0[027] P[584/543, on true, end false]
515 // p1[028] P[584/522, on false, end false]
516 // p2[029] P[557/522, on true, end false]
517 // 027: B2: quad-to p0-p1-p2
518 // Shape.QuadTo:
519 shape.addVertex(0, 0.584000f, 0.522000f, true); // curve -> line
520 shape.addVertex(0, 0.557000f, 0.522000f, true);
521 // GlyphShape<48>: offset 29 of 45/45 points
522 // pM[028] P[584/522, on false, end false]
523 // p0[029] P[557/522, on true, end false]
524 // p1[030] P[532/522, on true, end false]
525 // p2[031] P[532/41, on true, end false]
526 // 029: B1: line-to p0-p1
527 // Shape.LineTo:
528 shape.addVertex(0, 0.532000f, 0.522000f, true);
529 // GlyphShape<48>: offset 30 of 45/45 points
530 // pM[029] P[557/522, on true, end false]
531 // p0[030] P[532/522, on true, end false]
532 // p1[031] P[532/41, on true, end false]
533 // p2[032] P[566/41, on true, end false]
534 // 030: B1: line-to p0-p1
535 // Shape.LineTo:
536 shape.addVertex(0, 0.532000f, 0.041000f, true);
537 // GlyphShape<48>: offset 31 of 45/45 points
538 // pM[030] P[532/522, on true, end false]
539 // p0[031] P[532/41, on true, end false]
540 // p1[032] P[566/41, on true, end false]
541 // p2[033] P[593/41, on false, end false]
542 // 031: B1: line-to p0-p1
543 // Shape.LineTo:
544 shape.addVertex(0, 0.566000f, 0.041000f, true);
545 // GlyphShape<48>: offset 32 of 45/45 points
546 // pM[031] P[532/41, on true, end false]
547 // p0[032] P[566/41, on true, end false]
548 // p1[033] P[593/41, on false, end false]
549 // p2[034] P[593/21, on true, end false]
550 // 032: B2: quad-to p0-p1-p2
551 // Shape.QuadTo:
552 shape.addVertex(0, 0.593000f, 0.041000f, true); // curve -> line
553 shape.addVertex(0, 0.593000f, 0.021000f, true);
554 // GlyphShape<48>: offset 34 of 45/45 points
555 // pM[033] P[593/41, on false, end false]
556 // p0[034] P[593/21, on true, end false]
557 // p1[035] P[593/0, on false, end false]
558 // p2[036] P[566/0, on true, end false]
559 // 034: B2: quad-to p0-p1-p2
560 // Shape.QuadTo:
561 shape.addVertex(0, 0.593000f, 0.000000f, true); // curve -> line
562 shape.addVertex(0, 0.566000f, 0.000000f, true);
563 // GlyphShape<48>: offset 36 of 45/45 points
564 // pM[035] P[593/0, on false, end false]
565 // p0[036] P[566/0, on true, end false]
566 // p1[037] P[417/0, on true, end false]
567 // p2[038] P[390/0, on false, end false]
568 // 036: B1: line-to p0-p1
569 // Shape.LineTo:
570 shape.addVertex(0, 0.417000f, 0.000000f, true);
571 // GlyphShape<48>: offset 37 of 45/45 points
572 // pM[036] P[566/0, on true, end false]
573 // p0[037] P[417/0, on true, end false]
574 // p1[038] P[390/0, on false, end false]
575 // p2[039] P[390/21, on true, end false]
576 // 037: B2: quad-to p0-p1-p2
577 // Shape.QuadTo:
578 shape.addVertex(0, 0.390000f, 0.000000f, true); // curve -> line
579 shape.addVertex(0, 0.390000f, 0.021000f, true);
580 // GlyphShape<48>: offset 39 of 45/45 points
581 // pM[038] P[390/0, on false, end false]
582 // p0[039] P[390/21, on true, end false]
583 // p1[040] P[390/41, on false, end false]
584 // p2[041] P[417/41, on true, end false]
585 // 039: B2: quad-to p0-p1-p2
586 // Shape.QuadTo:
587 shape.addVertex(0, 0.390000f, 0.041000f, true); // curve -> line
588 shape.addVertex(0, 0.417000f, 0.041000f, true);
589 // GlyphShape<48>: offset 41 of 45/45 points
590 // pM[040] P[390/41, on false, end false]
591 // p0[041] P[417/41, on true, end false]
592 // p1[042] P[491/41, on true, end false]
593 // p2[043] P[491/522, on true, end false]
594 // 041: B1: line-to p0-p1
595 // Shape.LineTo:
596 shape.addVertex(0, 0.491000f, 0.041000f, true);
597 // GlyphShape<48>: offset 42 of 45/45 points
598 // pM[041] P[417/41, on true, end false]
599 // p0[042] P[491/41, on true, end false]
600 // p1[043] P[491/522, on true, end false]
601 // p2[044] P[483/522, on true, end true]
602 // 042: B1: line-to p0-p1
603 // Shape.LineTo:
604 shape.addVertex(0, 0.491000f, 0.522000f, true);
605 // GlyphShape<48>: offset 43 of 45/45 points
606 // pM[042] P[491/41, on true, end false]
607 // p0[043] P[491/522, on true, end false]
608 // p1[044] P[483/522, on true, end true]
609 // p2[000] P[326/169, on true, end false]
610 // 043: B1: line-to p0-p1
611 // Shape.LineTo:
612 shape.addVertex(0, 0.483000f, 0.522000f, true);
613 // GlyphShape<48>: offset 44 of 45/45 points
614 // pM[043] P[491/522, on true, end false]
615 // p0[044] P[483/522, on true, end true]
616 // p1[000] P[326/169, on true, end false]
617 // p2[001] P[280/169, on true, end false]
618 // 044: B1: line-to p0-p1
619 // Shape.LineTo:
620 shape.addVertex(0, 0.326000f, 0.169000f, true);
621 System.err.println("Glyph03FreeMonoRegular_M.shape01a.winding_area: "+shape.getWindingOfLastOutline());
622 shape.closeLastOutline(false);
623 } else {
624 final boolean with_left_leg = true; // ERROR
625 final boolean with_right_leg = true; // OK
626
627 // Start TTF Shape for Glyph 48
628 // GlyphShape<48>: offset 0 of 45/45 points
629 // pM[044] P[483/522, on true, end true]
630 // p0[000] P[326/169, on true, end false]
631 // p1[001] P[280/169, on true, end false]
632 // p2[002] P[121/522, on true, end false]
633 // 000: B0a: move-to p0
634 // Shape.MoveTo:
635 shape.closeLastOutline(false);
636 shape.addEmptyOutline();
637 shape.addVertex(0, 0.326000f, 0.169000f, true);
638 // 000: B1: line-to p0-p1
639 // Shape.LineTo:
640 shape.addVertex(0, 0.280000f, 0.169000f, true);
641 // GlyphShape<48>: offset 1 of 45/45 points
642 // pM[000] P[326/169, on true, end false]
643 // p0[001] P[280/169, on true, end false]
644 // p1[002] P[121/522, on true, end false]
645 // p2[003] P[113/522, on true, end false]
646 // 001: B1: line-to p0-p1
647 // Shape.LineTo:
648 shape.addVertex(0, 0.121000f, 0.522000f, true); // ID 11
649
650 // GlyphShape<48>: offset 2 of 45/45 points
651 // pM[001] P[280/169, on true, end false]
652 // p0[002] P[121/522, on true, end false]
653 // p1[003] P[113/522, on true, end false]
654 // p2[004] P[113/41, on true, end false]
655 // 002: B1: line-to p0-p1
656 // Shape.LineTo:
657 shape.addVertex(0, 0.113000f, 0.522000f, true);
658
659 if( with_left_leg ) {
660 // GlyphShape<48>: offset 3 of 45/45 points
661 // pM[002] P[121/522, on true, end false]
662 // p0[003] P[113/522, on true, end false]
663 // p1[004] P[113/41, on true, end false]
664 // p2[005] P[187/41, on true, end false]
665 // 003: B1: line-to p0-p1
666 // Shape.LineTo:
667 // shape.addVertex(0, 0.113000f, 0.041000f, true);
668
669 shape.addVertex(0, 0.113000f, 0.000000f, true);
670 shape.addVertex(0, 0.072000f, 0.000000f, true);
671
672 // GlyphShape<48>: offset 14 of 45/45 points
673 // pM[013] P[11/41, on false, end false]
674 // p0[014] P[38/41, on true, end false]
675 // p1[015] P[72/41, on true, end false]
676 // p2[016] P[72/522, on true, end false]
677 // 014: B1: line-to p0-p1
678 // Shape.LineTo:
679 // shape.addVertex(0, 0.072000f, 0.041000f, true);
680
681 // GlyphShape<48>: offset 15 of 45/45 points
682 // pM[014] P[38/41, on true, end false]
683 // p0[015] P[72/41, on true, end false]
684 // p1[016] P[72/522, on true, end false]
685 // p2[017] P[47/522, on true, end false]
686 // 015: B1: line-to p0-p1
687 // Shape.LineTo:
688 // shape.addVertex(0, 0.072000f, 0.522000f, true);
689
690 shape.addVertex(0, 0.072000f, 0.563000f, true); // ID 7
691 } else {
692 shape.addVertex(0, 0.113000f, 0.563000f, true);
693 }
694
695 // GlyphShape<48>: offset 21 of 45/45 points
696 // pM[020] P[20/563, on false, end false]
697 // p0[021] P[47/563, on true, end false]
698 // p1[022] P[146/563, on true, end false]
699 // p2[023] P[303/215, on true, end false]
700 // 021: B1: line-to p0-p1
701 // Shape.LineTo:
702 shape.addVertex(0, 0.146000f, 0.563000f, true);
703 // GlyphShape<48>: offset 22 of 45/45 points
704 // pM[021] P[47/563, on true, end false]
705 // p0[022] P[146/563, on true, end false]
706 // p1[023] P[303/215, on true, end false]
707 // p2[024] P[457/563, on true, end false]
708 // 022: B1: line-to p0-p1
709 // Shape.LineTo:
710 shape.addVertex(0, 0.303000f, 0.215000f, true);
711 // GlyphShape<48>: offset 23 of 45/45 points
712 // pM[022] P[146/563, on true, end false]
713 // p0[023] P[303/215, on true, end false]
714 // p1[024] P[457/563, on true, end false]
715 // p2[025] P[557/563, on true, end false]
716 // 023: B1: line-to p0-p1
717 // Shape.LineTo:
718 shape.addVertex(0, 0.457000f, 0.563000f, true); // ID 4
719
720 if( with_right_leg ) {
721 shape.addVertex(0, 0.532000f, 0.563000f, true);
722
723 // GlyphShape<48>: offset 29 of 45/45 points
724 // pM[028] P[584/522, on false, end false]
725 // p0[029] P[557/522, on true, end false]
726 // p1[030] P[532/522, on true, end false]
727 // p2[031] P[532/41, on true, end false]
728 // 029: B1: line-to p0-p1
729 // Shape.LineTo:
730 shape.addVertex(0, 0.532000f, 0.522000f, true);
731 // GlyphShape<48>: offset 30 of 45/45 points
732 // pM[029] P[557/522, on true, end false]
733 // p0[030] P[532/522, on true, end false]
734 // p1[031] P[532/41, on true, end false]
735 // p2[032] P[566/41, on true, end false]
736 // 030: B1: line-to p0-p1
737 // Shape.LineTo:
738 // shape.addVertex(0, 0.532000f, 0.041000f, true);
739
740 shape.addVertex(0, 0.532000f, 0.000000f, true);
741 shape.addVertex(0, 0.491000f, 0.000000f, true);
742 } else {
743 shape.addVertex(0, 0.491000f, 0.563000f, true); // ID 3
744 }
745
746 // GlyphShape<48>: offset 41 of 45/45 points
747 // pM[040] P[390/41, on false, end false]
748 // p0[041] P[417/41, on true, end false]
749 // p1[042] P[491/41, on true, end false]
750 // p2[043] P[491/522, on true, end false]
751 // 041: B1: line-to p0-p1
752 // Shape.LineTo:
753 // shape.addVertex(0, 0.491000f, 0.041000f, true);
754
755 // GlyphShape<48>: offset 42 of 45/45 points
756 // pM[041] P[417/41, on true, end false]
757 // p0[042] P[491/41, on true, end false]
758 // p1[043] P[491/522, on true, end false]
759 // p2[044] P[483/522, on true, end true]
760 // 042: B1: line-to p0-p1
761 // Shape.LineTo:
762 shape.addVertex(0, 0.491000f, 0.522000f, true); // ID 2
763 // GlyphShape<48>: offset 43 of 45/45 points
764 // pM[042] P[491/41, on true, end false]
765 // p0[043] P[491/522, on true, end false]
766 // p1[044] P[483/522, on true, end true]
767 // p2[000] P[326/169, on true, end false]
768 // 043: B1: line-to p0-p1
769 // Shape.LineTo:
770 shape.addVertex(0, 0.483000f, 0.522000f, true); // ID 1
771 // GlyphShape<48>: offset 44 of 45/45 points
772 // pM[043] P[491/522, on true, end false]
773 // p0[044] P[483/522, on true, end true]
774 // p1[000] P[326/169, on true, end false]
775 // p2[001] P[280/169, on true, end false]
776 // 044: B1: line-to p0-p1
777 // Shape.LineTo:
778 shape.addVertex(0, 0.326000f, 0.169000f, true);
779 System.err.println("Glyph03FreeMonoRegular_M.shape01a.winding_area: "+shape.getWindingOfLastOutline());
780 shape.closeLastOutline(false);
781 }
782
783 shape.setIsQuadraticNurbs();
785 shape.print(System.err);
786
787 resetGLRegion(glp, gl, null, shape);
788 region.addOutlineShape(shape, null, rgbaColor);
789 box.resize(shape.getBounds());
791 }
792
793 @Override
794 public String getSubString() {
795 return super.getSubString();
796 }
797}
A Generic shape objects which is defined by a list of Outlines.
final Winding getWindingOfLastOutline()
Compute the Winding of the getLastOutline() using the VectorUtil#area(ArrayList) function over all of...
final void addVertex(final Vertex v)
Adds a vertex to the last open outline to the shape's tail.
final void setIsQuadraticNurbs()
Claim this outline's vertices are all OutlineShape.VerticesState#QUADRATIC_NURBS, hence no cubic tran...
final void setSharpness(final float s)
Sets sharpness, defaults to DEFAULT_SHARPNESS.
final void closeLastOutline(final boolean closeTail)
Closes the last outline in the shape.
void print(final PrintStream out)
final void addEmptyOutline()
Add a new empty Outline to the end of this shape's outline list.
final void addOutlineShape(final OutlineShape shape, final AffineTransform t, final Vec4f rgbaColor)
Add the given OutlineShape to this region with the given optional AffineTransform.
Definition: Region.java:616
Graph based GLRegion Shape.
Definition: GraphShape.java:55
final void resetGLRegion(final GLProfile glp, final GL2ES2 gl, final TextureSequence colorTexSeq, int vertexCount, int indexCount)
Reset the GLRegion and reserving its buffers to have a free capacity for vertexCount and indexCount e...
final Vec4f rgbaColor
Default base-color w/o color channel, will be modulated w/ pressed- and toggle color.
Definition: Shape.java:261
final Shape setRotationPivot(final float px, final float py, final float pz)
Set unscaled rotation origin, aka pivot.
Definition: Shape.java:620
final AABBox resize(final AABBox newBox)
Resize the AABBox to encapsulate another AABox.
Definition: AABBox.java:274
final Vec3f getCenter()
Returns computed center of this AABBox of getLow() and getHigh().
Definition: AABBox.java:737
Specifies the the OpenGL profile.
Definition: GLProfile.java:77