JOGL v2.6.0-rc-20250706
JOGL, High-Performance Graphics Binding for Java™ (public API).
Glyph02UbuntuLight_ae.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 * - Ubuntu-Light, lower case 'æ'
38 * - TTF Shape for Glyph 193
39 */
40public class Glyph02UbuntuLight_ae extends GraphShape {
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 // Ubuntu-Light, lower case 'æ'
52
53 // Start TTF Shape for Glyph 193
54 if( true ) {
55 // Original Inner e-shape: Winding.CCW
56 // Moved into OutlineShape reverse -> Winding.CW -> OK
57 //
58 // Shape.MoveTo:
59 shape.closeLastOutline(false);
60 shape.addEmptyOutline();
61 shape.addVertex(0, 0.728000f, 0.300000f, true);
62 // 000: B4: quad-to p0-p1-p2h **** MID
63 // Shape.QuadTo:
64 shape.addVertex(0, 0.726000f, 0.381000f, false);
65 shape.addVertex(0, 0.690000f, 0.426000f, true);
66 // 002: B6: quad-to pMh-p0-p1
67 // Shape.QuadTo:
68 shape.addVertex(0, 0.654000f, 0.471000f, false);
69 shape.addVertex(0, 0.588000f, 0.471000f, true);
70 // 003: B4: quad-to p0-p1-p2h **** MID
71 // Shape.QuadTo:
72 shape.addVertex(0, 0.553000f, 0.471000f, false);
73 shape.addVertex(0, 0.526000f, 0.457000f, true);
74 // 005: B5: quad-to pMh-p0-p1h ***** MID
75 // Shape.QuadTo:
76 shape.addVertex(0, 0.498000f, 0.443000f, false);
77 shape.addVertex(0, 0.478000f, 0.420000f, true);
78 // 006: B5: quad-to pMh-p0-p1h ***** MID
79 // Shape.QuadTo:
80 shape.addVertex(0, 0.457000f, 0.396000f, false);
81 shape.addVertex(0, 0.446000f, 0.365000f, true);
82 // 007: B6: quad-to pMh-p0-p1
83 // Shape.QuadTo:
84 shape.addVertex(0, 0.434000f, 0.334000f, false);
85 shape.addVertex(0, 0.432000f, 0.300000f, true);
86 // 008: B1: line-to p0-p1
87 // Shape.LineTo:
88 shape.addVertex(0, 0.728000f, 0.300000f, true);
89 System.err.println("Glyph02UbuntuLight_ae.shape01a.winding_area: "+shape.getWindingOfLastOutline());
90 shape.closeLastOutline(false);
91 } else {
92 // Inner e-shape: Winding.CCW
93 // Moved into OutlineShape same-order -> Winding.CCW -> ??
94 //
95 // Shape.MoveTo:
96 shape.closeLastOutline(false);
97 shape.addEmptyOutline();
98 shape.addVertex(0.728000f, 0.300000f, true);
99 // 000: B4: quad-to p0-p1-p2h **** MID
100 // Shape.QuadTo:
101 shape.addVertex(0.726000f, 0.381000f, false);
102 shape.addVertex(0.690000f, 0.426000f, true);
103 // 002: B6: quad-to pMh-p0-p1
104 // Shape.QuadTo:
105 shape.addVertex(0.654000f, 0.471000f, false);
106 shape.addVertex(0.588000f, 0.471000f, true);
107 // 003: B4: quad-to p0-p1-p2h **** MID
108 // Shape.QuadTo:
109 shape.addVertex(0.553000f, 0.471000f, false);
110 shape.addVertex(0.526000f, 0.457000f, true);
111 // 005: B5: quad-to pMh-p0-p1h ***** MID
112 // Shape.QuadTo:
113 shape.addVertex(0.498000f, 0.443000f, false);
114 shape.addVertex(0.478000f, 0.420000f, true);
115 // 006: B5: quad-to pMh-p0-p1h ***** MID
116 // Shape.QuadTo:
117 shape.addVertex(0.457000f, 0.396000f, false);
118 shape.addVertex(0.446000f, 0.365000f, true);
119 // 007: B6: quad-to pMh-p0-p1
120 // Shape.QuadTo:
121 shape.addVertex(0.434000f, 0.334000f, false);
122 shape.addVertex(0.432000f, 0.300000f, true);
123 // 008: B1: line-to p0-p1
124 // Shape.LineTo:
125 shape.addVertex(0.728000f, 0.300000f, true);
126 System.err.println("Glyph02UbuntuLight_ae.shape01b.winding_area: "+shape.getWindingOfLastOutline());
127 shape.closeLastOutline(false);
128 }
129
130 if( true ) {
131 // Original Outer shape: Winding.CW
132 // Moved into OutlineShape reverse -> Winding.CCW -> OK
133 //
134 // Shape.MoveTo:
135 shape.closeLastOutline(false);
136 shape.addEmptyOutline();
137 shape.addVertex(0, 0.252000f, -0.011000f, true);
138 // 009: B4: quad-to p0-p1-p2h **** MID
139 // Shape.QuadTo:
140 shape.addVertex(0, 0.208000f, -0.011000f, false);
141 shape.addVertex(0, 0.171000f, -0.002000f, true);
142 // 011: B5: quad-to pMh-p0-p1h ***** MID
143 // Shape.QuadTo:
144 shape.addVertex(0, 0.133000f, 0.007000f, false);
145 shape.addVertex(0, 0.106000f, 0.026000f, true);
146 // 012: B5: quad-to pMh-p0-p1h ***** MID
147 // Shape.QuadTo:
148 shape.addVertex(0, 0.079000f, 0.046000f, false);
149 shape.addVertex(0, 0.064000f, 0.076000f, true);
150 // 013: B6: quad-to pMh-p0-p1
151 // Shape.QuadTo:
152 shape.addVertex(0, 0.048000f, 0.107000f, false);
153 shape.addVertex(0, 0.048000f, 0.151000f, true);
154 // 014: B4: quad-to p0-p1-p2h **** MID
155 // Shape.QuadTo:
156 shape.addVertex(0, 0.048000f, 0.193000f, false);
157 shape.addVertex(0, 0.064000f, 0.223000f, true);
158 // 016: B5: quad-to pMh-p0-p1h ***** MID
159 // Shape.QuadTo:
160 shape.addVertex(0, 0.080000f, 0.253000f, false);
161 shape.addVertex(0, 0.109000f, 0.272000f, true);
162 // 017: B5: quad-to pMh-p0-p1h ***** MID
163 // Shape.QuadTo:
164 shape.addVertex(0, 0.138000f, 0.292000f, false);
165 shape.addVertex(0, 0.178000f, 0.301000f, true);
166 // 018: B6: quad-to pMh-p0-p1
167 // Shape.QuadTo:
168 shape.addVertex(0, 0.218000f, 0.310000f, false);
169 shape.addVertex(0, 0.265000f, 0.310000f, true);
170 // 019: B4: quad-to p0-p1-p2h **** MID
171 // Shape.QuadTo:
172 shape.addVertex(0, 0.279000f, 0.310000f, false);
173 shape.addVertex(0, 0.294000f, 0.309000f, true);
174 // 021: B5: quad-to pMh-p0-p1h ***** MID
175 // Shape.QuadTo:
176 shape.addVertex(0, 0.310000f, 0.307000f, false);
177 shape.addVertex(0, 0.324000f, 0.305000f, true);
178 // 022: B5: quad-to pMh-p0-p1h ***** MID
179 // Shape.QuadTo:
180 shape.addVertex(0, 0.339000f, 0.302000f, false);
181 shape.addVertex(0, 0.349000f, 0.300000f, true);
182 // 023: B6: quad-to pMh-p0-p1
183 // Shape.QuadTo:
184 shape.addVertex(0, 0.360000f, 0.297000f, false);
185 shape.addVertex(0, 0.364000f, 0.295000f, true);
186 // 024: B1: line-to p0-p1
187 // Shape.LineTo:
188 shape.addVertex(0, 0.364000f, 0.327000f, true);
189 // 025: B4: quad-to p0-p1-p2h **** MID
190 // Shape.QuadTo:
191 shape.addVertex(0, 0.364000f, 0.354000f, false);
192 shape.addVertex(0, 0.360000f, 0.379000f, true);
193 // 027: B5: quad-to pMh-p0-p1h ***** MID
194 // Shape.QuadTo:
195 shape.addVertex(0, 0.356000f, 0.405000f, false);
196 shape.addVertex(0, 0.343000f, 0.425000f, true);
197 // 028: B5: quad-to pMh-p0-p1h ***** MID
198 // Shape.QuadTo:
199 shape.addVertex(0, 0.329000f, 0.446000f, false);
200 shape.addVertex(0, 0.305000f, 0.458000f, true);
201 // 029: B6: quad-to pMh-p0-p1
202 // Shape.QuadTo:
203 shape.addVertex(0, 0.280000f, 0.471000f, false);
204 shape.addVertex(0, 0.240000f, 0.471000f, true);
205 // 030: B4: quad-to p0-p1-p2h **** MID
206 // Shape.QuadTo:
207 shape.addVertex(0, 0.186000f, 0.471000f, false);
208 shape.addVertex(0, 0.156000f, 0.464000f, true);
209 // 032: B6: quad-to pMh-p0-p1
210 // Shape.QuadTo:
211 shape.addVertex(0, 0.126000f, 0.456000f, false);
212 shape.addVertex(0, 0.113000f, 0.451000f, true);
213 // 033: B1: line-to p0-p1
214 // Shape.LineTo:
215 shape.addVertex(0, 0.105000f, 0.507000f, true);
216 // 034: B4: quad-to p0-p1-p2h **** MID
217 // Shape.QuadTo:
218 shape.addVertex(0, 0.122000f, 0.515000f, false);
219 shape.addVertex(0, 0.158000f, 0.522000f, true);
220 // 036: B6: quad-to pMh-p0-p1
221 // Shape.QuadTo:
222 shape.addVertex(0, 0.194000f, 0.529000f, false);
223 shape.addVertex(0, 0.243000f, 0.529000f, true);
224 // 037: B4: quad-to p0-p1-p2h **** MID
225 // Shape.QuadTo:
226 shape.addVertex(0, 0.314000f, 0.529000f, false);
227 shape.addVertex(0, 0.354000f, 0.503000f, true);
228 // 039: B6: quad-to pMh-p0-p1
229 // Shape.QuadTo:
230 shape.addVertex(0, 0.395000f, 0.476000f, false);
231 shape.addVertex(0, 0.412000f, 0.431000f, true);
232 // 040: B4: quad-to p0-p1-p2h **** MID
233 // Shape.QuadTo:
234 shape.addVertex(0, 0.445000f, 0.480000f, false);
235 shape.addVertex(0, 0.491000f, 0.504000f, true);
236 // 042: B6: quad-to pMh-p0-p1
237 // Shape.QuadTo:
238 shape.addVertex(0, 0.537000f, 0.529000f, false);
239 shape.addVertex(0, 0.587000f, 0.529000f, true);
240 // 043: B4: quad-to p0-p1-p2h **** MID
241 // Shape.QuadTo:
242 shape.addVertex(0, 0.682000f, 0.529000f, false);
243 shape.addVertex(0, 0.738000f, 0.467000f, true);
244 // 045: B6: quad-to pMh-p0-p1
245 // Shape.QuadTo:
246 shape.addVertex(0, 0.795000f, 0.405000f, false);
247 shape.addVertex(0, 0.795000f, 0.276000f, true);
248 // 046: B4: quad-to p0-p1-p2h **** MID
249 // Shape.QuadTo:
250 shape.addVertex(0, 0.795000f, 0.268000f, false);
251 shape.addVertex(0, 0.795000f, 0.260000f, true);
252 // 048: B6: quad-to pMh-p0-p1
253 // Shape.QuadTo:
254 shape.addVertex(0, 0.794000f, 0.252000f, false);
255 shape.addVertex(0, 0.793000f, 0.245000f, true);
256 // 049: B1: line-to p0-p1
257 // Shape.LineTo:
258 shape.addVertex(0, 0.430000f, 0.245000f, true);
259 // 050: B4: quad-to p0-p1-p2h **** MID
260 // Shape.QuadTo:
261 shape.addVertex(0, 0.433000f, 0.150000f, false);
262 shape.addVertex(0, 0.477000f, 0.099000f, true);
263 // 052: B6: quad-to pMh-p0-p1
264 // Shape.QuadTo:
265 shape.addVertex(0, 0.521000f, 0.048000f, false);
266 shape.addVertex(0, 0.617000f, 0.048000f, true);
267 // 053: B4: quad-to p0-p1-p2h **** MID
268 // Shape.QuadTo:
269 shape.addVertex(0, 0.670000f, 0.048000f, false);
270 shape.addVertex(0, 0.701000f, 0.058000f, true);
271 // 055: B6: quad-to pMh-p0-p1
272 // Shape.QuadTo:
273 shape.addVertex(0, 0.732000f, 0.068000f, false);
274 shape.addVertex(0, 0.746000f, 0.075000f, true);
275 // 056: B1: line-to p0-p1
276 // Shape.LineTo:
277 shape.addVertex(0, 0.758000f, 0.019000f, true);
278 // 057: B4: quad-to p0-p1-p2h **** MID
279 // Shape.QuadTo:
280 shape.addVertex(0, 0.744000f, 0.011000f, false);
281 shape.addVertex(0, 0.706000f, 0.000000f, true);
282 // 059: B6: quad-to pMh-p0-p1
283 // Shape.QuadTo:
284 shape.addVertex(0, 0.667000f, -0.011000f, false);
285 shape.addVertex(0, 0.615000f, -0.011000f, true);
286 // 060: B4: quad-to p0-p1-p2h **** MID
287 // Shape.QuadTo:
288 shape.addVertex(0, 0.558000f, -0.011000f, false);
289 shape.addVertex(0, 0.514000f, 0.003000f, true);
290 // 062: B6: quad-to pMh-p0-p1
291 // Shape.QuadTo:
292 shape.addVertex(0, 0.470000f, 0.017000f, false);
293 shape.addVertex(0, 0.437000f, 0.049000f, true);
294 // 063: B4: quad-to p0-p1-p2h **** MID
295 // Shape.QuadTo:
296 shape.addVertex(0, 0.426000f, 0.040000f, false);
297 shape.addVertex(0, 0.410000f, 0.030000f, true);
298 // 065: B5: quad-to pMh-p0-p1h ***** MID
299 // Shape.QuadTo:
300 shape.addVertex(0, 0.393000f, 0.019000f, false);
301 shape.addVertex(0, 0.370000f, 0.010000f, true);
302 // 066: B5: quad-to pMh-p0-p1h ***** MID
303 // Shape.QuadTo:
304 shape.addVertex(0, 0.347000f, 0.001000f, false);
305 shape.addVertex(0, 0.318000f, -0.005000f, true);
306 // 067: B6: quad-to pMh-p0-p1
307 // Shape.QuadTo:
308 shape.addVertex(0, 0.289000f, -0.011000f, false);
309 shape.addVertex(0, 0.252000f, -0.011000f, true);
310 System.err.println("Glyph02UbuntuLight_ae.shape02a.winding_area: "+shape.getWindingOfLastOutline());
311 shape.closeLastOutline(false);
312 } else {
313 // Outer shape: Winding.CW
314 // Moved into OutlineShape same-order -> Winding.CW -> OK now
315 //
316 // Shape.MoveTo:
317 shape.closeLastOutline(false);
318 shape.addEmptyOutline();
319 shape.addVertex(0.252000f, -0.011000f, true);
320 // 009: B4: quad-to p0-p1-p2h **** MID
321 // Shape.QuadTo:
322 shape.addVertex(0.208000f, -0.011000f, false);
323 shape.addVertex(0.171000f, -0.002000f, true);
324 // 011: B5: quad-to pMh-p0-p1h ***** MID
325 // Shape.QuadTo:
326 shape.addVertex(0.133000f, 0.007000f, false);
327 shape.addVertex(0.106000f, 0.026000f, true);
328 // 012: B5: quad-to pMh-p0-p1h ***** MID
329 // Shape.QuadTo:
330 shape.addVertex(0.079000f, 0.046000f, false);
331 shape.addVertex(0.064000f, 0.076000f, true);
332 // 013: B6: quad-to pMh-p0-p1
333 // Shape.QuadTo:
334 shape.addVertex(0.048000f, 0.107000f, false);
335 shape.addVertex(0.048000f, 0.151000f, true);
336 // 014: B4: quad-to p0-p1-p2h **** MID
337 // Shape.QuadTo:
338 shape.addVertex(0.048000f, 0.193000f, false);
339 shape.addVertex(0.064000f, 0.223000f, true);
340 // 016: B5: quad-to pMh-p0-p1h ***** MID
341 // Shape.QuadTo:
342 shape.addVertex(0.080000f, 0.253000f, false);
343 shape.addVertex(0.109000f, 0.272000f, true);
344 // 017: B5: quad-to pMh-p0-p1h ***** MID
345 // Shape.QuadTo:
346 shape.addVertex(0.138000f, 0.292000f, false);
347 shape.addVertex(0.178000f, 0.301000f, true);
348 // 018: B6: quad-to pMh-p0-p1
349 // Shape.QuadTo:
350 shape.addVertex(0.218000f, 0.310000f, false);
351 shape.addVertex(0.265000f, 0.310000f, true);
352 // 019: B4: quad-to p0-p1-p2h **** MID
353 // Shape.QuadTo:
354 shape.addVertex(0.279000f, 0.310000f, false);
355 shape.addVertex(0.294000f, 0.309000f, true);
356 // 021: B5: quad-to pMh-p0-p1h ***** MID
357 // Shape.QuadTo:
358 shape.addVertex(0.310000f, 0.307000f, false);
359 shape.addVertex(0.324000f, 0.305000f, true);
360 // 022: B5: quad-to pMh-p0-p1h ***** MID
361 // Shape.QuadTo:
362 shape.addVertex(0.339000f, 0.302000f, false);
363 shape.addVertex(0.349000f, 0.300000f, true);
364 // 023: B6: quad-to pMh-p0-p1
365 // Shape.QuadTo:
366 shape.addVertex(0.360000f, 0.297000f, false);
367 shape.addVertex(0.364000f, 0.295000f, true);
368 // 024: B1: line-to p0-p1
369 // Shape.LineTo:
370 shape.addVertex(0.364000f, 0.327000f, true);
371 // 025: B4: quad-to p0-p1-p2h **** MID
372 // Shape.QuadTo:
373 shape.addVertex(0.364000f, 0.354000f, false);
374 shape.addVertex(0.360000f, 0.379000f, true);
375 // 027: B5: quad-to pMh-p0-p1h ***** MID
376 // Shape.QuadTo:
377 shape.addVertex(0.356000f, 0.405000f, false);
378 shape.addVertex(0.343000f, 0.425000f, true);
379 // 028: B5: quad-to pMh-p0-p1h ***** MID
380 // Shape.QuadTo:
381 shape.addVertex(0.329000f, 0.446000f, false);
382 shape.addVertex(0.305000f, 0.458000f, true);
383 // 029: B6: quad-to pMh-p0-p1
384 // Shape.QuadTo:
385 shape.addVertex(0.280000f, 0.471000f, false);
386 shape.addVertex(0.240000f, 0.471000f, true);
387 // 030: B4: quad-to p0-p1-p2h **** MID
388 // Shape.QuadTo:
389 shape.addVertex(0.186000f, 0.471000f, false);
390 shape.addVertex(0.156000f, 0.464000f, true);
391 // 032: B6: quad-to pMh-p0-p1
392 // Shape.QuadTo:
393 shape.addVertex(0.126000f, 0.456000f, false);
394 shape.addVertex(0.113000f, 0.451000f, true);
395 // 033: B1: line-to p0-p1
396 // Shape.LineTo:
397 shape.addVertex(0.105000f, 0.507000f, true);
398 // 034: B4: quad-to p0-p1-p2h **** MID
399 // Shape.QuadTo:
400 shape.addVertex(0.122000f, 0.515000f, false);
401 shape.addVertex(0.158000f, 0.522000f, true);
402 // 036: B6: quad-to pMh-p0-p1
403 // Shape.QuadTo:
404 shape.addVertex(0.194000f, 0.529000f, false);
405 shape.addVertex(0.243000f, 0.529000f, true);
406 // 037: B4: quad-to p0-p1-p2h **** MID
407 // Shape.QuadTo:
408 shape.addVertex(0.314000f, 0.529000f, false);
409 shape.addVertex(0.354000f, 0.503000f, true);
410 // 039: B6: quad-to pMh-p0-p1
411 // Shape.QuadTo:
412 shape.addVertex(0.395000f, 0.476000f, false);
413 shape.addVertex(0.412000f, 0.431000f, true);
414 // 040: B4: quad-to p0-p1-p2h **** MID
415 // Shape.QuadTo:
416 shape.addVertex(0.445000f, 0.480000f, false);
417 shape.addVertex(0.491000f, 0.504000f, true);
418 // 042: B6: quad-to pMh-p0-p1
419 // Shape.QuadTo:
420 shape.addVertex(0.537000f, 0.529000f, false);
421 shape.addVertex(0.587000f, 0.529000f, true);
422 // 043: B4: quad-to p0-p1-p2h **** MID
423 // Shape.QuadTo:
424 shape.addVertex(0.682000f, 0.529000f, false);
425 shape.addVertex(0.738000f, 0.467000f, true);
426 // 045: B6: quad-to pMh-p0-p1
427 // Shape.QuadTo:
428 shape.addVertex(0.795000f, 0.405000f, false);
429 shape.addVertex(0.795000f, 0.276000f, true);
430 // 046: B4: quad-to p0-p1-p2h **** MID
431 // Shape.QuadTo:
432 shape.addVertex(0.795000f, 0.268000f, false);
433 shape.addVertex(0.795000f, 0.260000f, true);
434 // 048: B6: quad-to pMh-p0-p1
435 // Shape.QuadTo:
436 shape.addVertex(0.794000f, 0.252000f, false);
437 shape.addVertex(0.793000f, 0.245000f, true);
438 // 049: B1: line-to p0-p1
439 // Shape.LineTo:
440 shape.addVertex(0.430000f, 0.245000f, true);
441 // 050: B4: quad-to p0-p1-p2h **** MID
442 // Shape.QuadTo:
443 shape.addVertex(0.433000f, 0.150000f, false);
444 shape.addVertex(0.477000f, 0.099000f, true);
445 // 052: B6: quad-to pMh-p0-p1
446 // Shape.QuadTo:
447 shape.addVertex(0.521000f, 0.048000f, false);
448 shape.addVertex(0.617000f, 0.048000f, true);
449 // 053: B4: quad-to p0-p1-p2h **** MID
450 // Shape.QuadTo:
451 shape.addVertex(0.670000f, 0.048000f, false);
452 shape.addVertex(0.701000f, 0.058000f, true);
453 // 055: B6: quad-to pMh-p0-p1
454 // Shape.QuadTo:
455 shape.addVertex(0.732000f, 0.068000f, false);
456 shape.addVertex(0.746000f, 0.075000f, true);
457 // 056: B1: line-to p0-p1
458 // Shape.LineTo:
459 shape.addVertex(0.758000f, 0.019000f, true);
460 // 057: B4: quad-to p0-p1-p2h **** MID
461 // Shape.QuadTo:
462 shape.addVertex(0.744000f, 0.011000f, false);
463 shape.addVertex(0.706000f, 0.000000f, true);
464 // 059: B6: quad-to pMh-p0-p1
465 // Shape.QuadTo:
466 shape.addVertex(0.667000f, -0.011000f, false);
467 shape.addVertex(0.615000f, -0.011000f, true);
468 // 060: B4: quad-to p0-p1-p2h **** MID
469 // Shape.QuadTo:
470 shape.addVertex(0.558000f, -0.011000f, false);
471 shape.addVertex(0.514000f, 0.003000f, true);
472 // 062: B6: quad-to pMh-p0-p1
473 // Shape.QuadTo:
474 shape.addVertex(0.470000f, 0.017000f, false);
475 shape.addVertex(0.437000f, 0.049000f, true);
476 // 063: B4: quad-to p0-p1-p2h **** MID
477 // Shape.QuadTo:
478 shape.addVertex(0.426000f, 0.040000f, false);
479 shape.addVertex(0.410000f, 0.030000f, true);
480 // 065: B5: quad-to pMh-p0-p1h ***** MID
481 // Shape.QuadTo:
482 shape.addVertex(0.393000f, 0.019000f, false);
483 shape.addVertex(0.370000f, 0.010000f, true);
484 // 066: B5: quad-to pMh-p0-p1h ***** MID
485 // Shape.QuadTo:
486 shape.addVertex(0.347000f, 0.001000f, false);
487 shape.addVertex(0.318000f, -0.005000f, true);
488 // 067: B6: quad-to pMh-p0-p1
489 // Shape.QuadTo:
490 shape.addVertex(0.289000f, -0.011000f, false);
491 shape.addVertex(0.252000f, -0.011000f, true);
492 System.err.println("Glyph02UbuntuLight_ae.shape02b.winding_area: "+shape.getWindingOfLastOutline());
493 shape.closeLastOutline(false);
494 }
495
496 if( true ) {
497 // Original Inner a-shape: Winding.CCW
498 // Moved into OutlineShape reverse -> Winding.CW -> OK now
499 //
500 // Shape.MoveTo:
501 shape.closeLastOutline(false);
502 shape.addEmptyOutline();
503 shape.addVertex(0, 0.365000f, 0.238000f, true);
504 // 068: B4: quad-to p0-p1-p2h **** MID
505 // Shape.QuadTo:
506 shape.addVertex(0, 0.354000f, 0.243000f, false);
507 shape.addVertex(0, 0.330000f, 0.248000f, true);
508 // 070: B6: quad-to pMh-p0-p1
509 // Shape.QuadTo:
510 shape.addVertex(0, 0.305000f, 0.254000f, false);
511 shape.addVertex(0, 0.263000f, 0.254000f, true);
512 // 071: B4: quad-to p0-p1-p2h **** MID
513 // Shape.QuadTo:
514 shape.addVertex(0, 0.239000f, 0.254000f, false);
515 shape.addVertex(0, 0.213000f, 0.251000f, true);
516 // 073: B5: quad-to pMh-p0-p1h ***** MID
517 // Shape.QuadTo:
518 shape.addVertex(0, 0.187000f, 0.247000f, false);
519 shape.addVertex(0, 0.165000f, 0.236000f, true);
520 // 074: B5: quad-to pMh-p0-p1h ***** MID
521 // Shape.QuadTo:
522 shape.addVertex(0, 0.143000f, 0.224000f, false);
523 shape.addVertex(0, 0.129000f, 0.204000f, true);
524 // 075: B6: quad-to pMh-p0-p1
525 // Shape.QuadTo:
526 shape.addVertex(0, 0.115000f, 0.184000f, false);
527 shape.addVertex(0, 0.115000f, 0.151000f, true);
528 // 076: B4: quad-to p0-p1-p2h **** MID
529 // Shape.QuadTo:
530 shape.addVertex(0, 0.115000f, 0.122000f, false);
531 shape.addVertex(0, 0.125000f, 0.102000f, true);
532 // 078: B5: quad-to pMh-p0-p1h ***** MID
533 // Shape.QuadTo:
534 shape.addVertex(0, 0.135000f, 0.082000f, false);
535 shape.addVertex(0, 0.153000f, 0.070000f, true);
536 // 079: B5: quad-to pMh-p0-p1h ***** MID
537 // Shape.QuadTo:
538 shape.addVertex(0, 0.172000f, 0.058000f, false);
539 shape.addVertex(0, 0.197000f, 0.053000f, true);
540 // 080: B6: quad-to pMh-p0-p1
541 // Shape.QuadTo:
542 shape.addVertex(0, 0.222000f, 0.047000f, false);
543 shape.addVertex(0, 0.252000f, 0.047000f, true);
544 // 081: B4: quad-to p0-p1-p2h **** MID
545 // Shape.QuadTo:
546 shape.addVertex(0, 0.314000f, 0.047000f, false);
547 shape.addVertex(0, 0.350000f, 0.063000f, true);
548 // 083: B6: quad-to pMh-p0-p1
549 // Shape.QuadTo:
550 shape.addVertex(0, 0.386000f, 0.080000f, false);
551 shape.addVertex(0, 0.400000f, 0.093000f, true);
552 // 084: B4: quad-to p0-p1-p2h **** MID
553 // Shape.QuadTo:
554 shape.addVertex(0, 0.384000f, 0.119000f, false);
555 shape.addVertex(0, 0.375000f, 0.154000f, true);
556 // 086: B6: quad-to pMh-p0-p1
557 // Shape.QuadTo:
558 shape.addVertex(0, 0.366000f, 0.190000f, false);
559 shape.addVertex(0, 0.365000f, 0.238000f, true);
560 System.err.println("Glyph02UbuntuLight_ae.shape03a.winding_area: "+shape.getWindingOfLastOutline());
561 shape.closeLastOutline(false);
562 } else {
563 // Inner a-shape: Winding.CCW
564 // Moved into OutlineShape same-order -> Winding.CCW -> OK
565 //
566 // Shape.MoveTo:
567 shape.closeLastOutline(false);
568 shape.addEmptyOutline();
569 shape.addVertex(0.365000f, 0.238000f, true);
570 // 068: B4: quad-to p0-p1-p2h **** MID
571 // Shape.QuadTo:
572 shape.addVertex(0.354000f, 0.243000f, false);
573 shape.addVertex(0.330000f, 0.248000f, true);
574 // 070: B6: quad-to pMh-p0-p1
575 // Shape.QuadTo:
576 shape.addVertex(0.305000f, 0.254000f, false);
577 shape.addVertex(0.263000f, 0.254000f, true);
578 // 071: B4: quad-to p0-p1-p2h **** MID
579 // Shape.QuadTo:
580 shape.addVertex(0.239000f, 0.254000f, false);
581 shape.addVertex(0.213000f, 0.251000f, true);
582 // 073: B5: quad-to pMh-p0-p1h ***** MID
583 // Shape.QuadTo:
584 shape.addVertex(0.187000f, 0.247000f, false);
585 shape.addVertex(0.165000f, 0.236000f, true);
586 // 074: B5: quad-to pMh-p0-p1h ***** MID
587 // Shape.QuadTo:
588 shape.addVertex(0.143000f, 0.224000f, false);
589 shape.addVertex(0.129000f, 0.204000f, true);
590 // 075: B6: quad-to pMh-p0-p1
591 // Shape.QuadTo:
592 shape.addVertex(0.115000f, 0.184000f, false);
593 shape.addVertex(0.115000f, 0.151000f, true);
594 // 076: B4: quad-to p0-p1-p2h **** MID
595 // Shape.QuadTo:
596 shape.addVertex(0.115000f, 0.122000f, false);
597 shape.addVertex(0.125000f, 0.102000f, true);
598 // 078: B5: quad-to pMh-p0-p1h ***** MID
599 // Shape.QuadTo:
600 shape.addVertex(0.135000f, 0.082000f, false);
601 shape.addVertex(0.153000f, 0.070000f, true);
602 // 079: B5: quad-to pMh-p0-p1h ***** MID
603 // Shape.QuadTo:
604 shape.addVertex(0.172000f, 0.058000f, false);
605 shape.addVertex(0.197000f, 0.053000f, true);
606 // 080: B6: quad-to pMh-p0-p1
607 // Shape.QuadTo:
608 shape.addVertex(0.222000f, 0.047000f, false);
609 shape.addVertex(0.252000f, 0.047000f, true);
610 // 081: B4: quad-to p0-p1-p2h **** MID
611 // Shape.QuadTo:
612 shape.addVertex(0.314000f, 0.047000f, false);
613 shape.addVertex(0.350000f, 0.063000f, true);
614 // 083: B6: quad-to pMh-p0-p1
615 // Shape.QuadTo:
616 shape.addVertex(0.386000f, 0.080000f, false);
617 shape.addVertex(0.400000f, 0.093000f, true);
618 // 084: B4: quad-to p0-p1-p2h **** MID
619 // Shape.QuadTo:
620 shape.addVertex(0.384000f, 0.119000f, false);
621 shape.addVertex(0.375000f, 0.154000f, true);
622 // 086: B6: quad-to pMh-p0-p1
623 // Shape.QuadTo:
624 shape.addVertex(0.366000f, 0.190000f, false);
625 shape.addVertex(0.365000f, 0.238000f, true);
626 System.err.println("Glyph02UbuntuLight_ae.shape03b.winding_area: "+shape.getWindingOfLastOutline());
627 shape.closeLastOutline(false);
628 }
629 // End Shape for Glyph 193
630
631 shape.setIsQuadraticNurbs();
633
634 resetGLRegion(glp, gl, null, shape);
635 region.addOutlineShape(shape, null, rgbaColor);
636 box.resize(shape.getBounds());
638 }
639
640 @Override
641 public String getSubString() {
642 return super.getSubString();
643 }
644}
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.
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