picrate 0.2.0-java → 0.3.0-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +8 -5
- data/Rakefile +10 -2
- data/docs/_posts/2018-06-26-auto_install_picrate.md +15 -0
- data/lib/export.txt +8 -0
- data/lib/picrate/app.rb +4 -4
- data/lib/picrate/version.rb +1 -1
- data/picrate.gemspec +1 -1
- data/pom.rb +1 -1
- data/pom.xml +1 -1
- data/src/main/java/processing/awt/PGraphicsJava2D.java +16 -85
- data/src/main/java/processing/awt/PShapeJava2D.java +9 -33
- data/src/main/java/processing/awt/PSurfaceAWT.java +76 -169
- data/src/main/java/processing/core/PApplet.java +14019 -15963
- data/src/main/java/processing/core/PConstants.java +475 -981
- data/src/main/java/processing/core/PFont.java +50 -202
- data/src/main/java/processing/core/PGraphics.java +7330 -8477
- data/src/main/java/processing/core/PImage.java +42 -212
- data/src/main/java/processing/core/PMatrix.java +21 -160
- data/src/main/java/processing/core/PMatrix2D.java +18 -178
- data/src/main/java/processing/core/PMatrix3D.java +48 -324
- data/src/main/java/processing/core/PShape.java +294 -1181
- data/src/main/java/processing/core/PShapeOBJ.java +16 -91
- data/src/main/java/processing/core/PShapeSVG.java +53 -253
- data/src/main/java/processing/core/PStyle.java +34 -179
- data/src/main/java/processing/core/PSurface.java +13 -94
- data/src/main/java/processing/core/PSurfaceNone.java +35 -140
- data/src/main/java/processing/core/PVector.java +10 -87
- data/src/main/java/processing/event/Event.java +86 -69
- data/src/main/java/processing/event/MouseEvent.java +102 -102
- data/src/main/java/processing/opengl/PGL.java +23 -16
- data/src/main/java/processing/opengl/PGraphicsOpenGL.java +13 -10
- data/src/main/java/processing/opengl/PJOGL.java +32 -12
- data/src/main/java/processing/opengl/shaders/LightVert-brcm.glsl +154 -0
- data/src/main/java/processing/opengl/shaders/LightVert-vc4.glsl +2 -2
- data/src/main/java/processing/opengl/shaders/TexLightVert-brcm.glsl +160 -0
- data/src/main/java/processing/opengl/shaders/TexLightVert-vc4.glsl +2 -2
- metadata +7 -3
@@ -22,29 +22,16 @@ public class PShapeOBJ extends PShape {
|
|
22
22
|
|
23
23
|
/**
|
24
24
|
* Initializes a new OBJ Object with the given filename.
|
25
|
-
* @param parent
|
26
|
-
* @param filename
|
27
25
|
*/
|
28
26
|
public PShapeOBJ(PApplet parent, String filename) {
|
29
27
|
this(parent, parent.createReader(filename), getBasePath(parent, filename));
|
30
28
|
}
|
31
29
|
|
32
|
-
|
33
|
-
*
|
34
|
-
* @param parent
|
35
|
-
* @param reader
|
36
|
-
*/
|
37
|
-
public PShapeOBJ(PApplet parent, BufferedReader reader) {
|
30
|
+
public PShapeOBJ(PApplet parent, BufferedReader reader) {
|
38
31
|
this(parent, reader, "");
|
39
32
|
}
|
40
33
|
|
41
|
-
|
42
|
-
*
|
43
|
-
* @param parent
|
44
|
-
* @param reader
|
45
|
-
* @param basePath
|
46
|
-
*/
|
47
|
-
public PShapeOBJ(PApplet parent, BufferedReader reader, String basePath) {
|
34
|
+
public PShapeOBJ(PApplet parent, BufferedReader reader, String basePath) {
|
48
35
|
ArrayList<OBJFace> faces = new ArrayList<OBJFace>();
|
49
36
|
ArrayList<OBJMaterial> materials = new ArrayList<OBJMaterial>();
|
50
37
|
ArrayList<PVector> coords = new ArrayList<PVector>();
|
@@ -59,15 +46,8 @@ public class PShapeOBJ extends PShape {
|
|
59
46
|
addChildren(faces, materials, coords, normals, texcoords);
|
60
47
|
}
|
61
48
|
|
62
|
-
|
63
|
-
|
64
|
-
* @param face
|
65
|
-
* @param mtl
|
66
|
-
* @param coords
|
67
|
-
* @param normals
|
68
|
-
* @param texcoords
|
69
|
-
*/
|
70
|
-
protected PShapeOBJ(OBJFace face, OBJMaterial mtl,
|
49
|
+
|
50
|
+
protected PShapeOBJ(OBJFace face, OBJMaterial mtl,
|
71
51
|
ArrayList<PVector> coords,
|
72
52
|
ArrayList<PVector> normals,
|
73
53
|
ArrayList<PVector> texcoords) {
|
@@ -145,15 +125,8 @@ public class PShapeOBJ extends PShape {
|
|
145
125
|
}
|
146
126
|
}
|
147
127
|
|
148
|
-
|
149
|
-
|
150
|
-
* @param faces
|
151
|
-
* @param materials
|
152
|
-
* @param coords
|
153
|
-
* @param normals
|
154
|
-
* @param texcoords
|
155
|
-
*/
|
156
|
-
protected void addChildren(ArrayList<OBJFace> faces,
|
128
|
+
|
129
|
+
protected void addChildren(ArrayList<OBJFace> faces,
|
157
130
|
ArrayList<OBJMaterial> materials,
|
158
131
|
ArrayList<PVector> coords,
|
159
132
|
ArrayList<PVector> normals,
|
@@ -176,18 +149,8 @@ public class PShapeOBJ extends PShape {
|
|
176
149
|
}
|
177
150
|
}
|
178
151
|
|
179
|
-
|
180
|
-
|
181
|
-
* @param parent
|
182
|
-
* @param path
|
183
|
-
* @param reader
|
184
|
-
* @param faces
|
185
|
-
* @param materials
|
186
|
-
* @param coords
|
187
|
-
* @param normals
|
188
|
-
* @param texcoords
|
189
|
-
*/
|
190
|
-
static protected void parseOBJ(PApplet parent, String path,
|
152
|
+
|
153
|
+
static protected void parseOBJ(PApplet parent, String path,
|
191
154
|
BufferedReader reader,
|
192
155
|
ArrayList<OBJFace> faces,
|
193
156
|
ArrayList<OBJMaterial> materials,
|
@@ -353,16 +316,8 @@ public class PShapeOBJ extends PShape {
|
|
353
316
|
}
|
354
317
|
}
|
355
318
|
|
356
|
-
|
357
|
-
|
358
|
-
* @param parent
|
359
|
-
* @param mtlfn
|
360
|
-
* @param path
|
361
|
-
* @param reader
|
362
|
-
* @param materials
|
363
|
-
* @param materialsHash
|
364
|
-
*/
|
365
|
-
static protected void parseMTL(PApplet parent, String mtlfn, String path,
|
319
|
+
|
320
|
+
static protected void parseMTL(PApplet parent, String mtlfn, String path,
|
366
321
|
BufferedReader reader,
|
367
322
|
ArrayList<OBJMaterial> materials,
|
368
323
|
Map<String, Integer> materialsHash) {
|
@@ -433,14 +388,7 @@ public class PShapeOBJ extends PShape {
|
|
433
388
|
}
|
434
389
|
}
|
435
390
|
|
436
|
-
|
437
|
-
*
|
438
|
-
* @param mtlname
|
439
|
-
* @param materials
|
440
|
-
* @param materialsHash
|
441
|
-
* @return
|
442
|
-
*/
|
443
|
-
protected static OBJMaterial addMaterial(String mtlname,
|
391
|
+
protected static OBJMaterial addMaterial(String mtlname,
|
444
392
|
ArrayList<OBJMaterial> materials,
|
445
393
|
Map<String, Integer> materialsHash) {
|
446
394
|
OBJMaterial currentMtl = new OBJMaterial(mtlname);
|
@@ -449,24 +397,14 @@ public class PShapeOBJ extends PShape {
|
|
449
397
|
return currentMtl;
|
450
398
|
}
|
451
399
|
|
452
|
-
|
453
|
-
*
|
454
|
-
* @param color
|
455
|
-
* @return
|
456
|
-
*/
|
457
|
-
protected static int rgbaValue(PVector color) {
|
400
|
+
protected static int rgbaValue(PVector color) {
|
458
401
|
return 0xFF000000 | ((int)(color.x * 255) << 16) |
|
459
402
|
((int)(color.y * 255) << 8) |
|
460
403
|
(int)(color.z * 255);
|
461
404
|
}
|
462
405
|
|
463
|
-
|
464
|
-
|
465
|
-
* @param color
|
466
|
-
* @param alpha
|
467
|
-
* @return
|
468
|
-
*/
|
469
|
-
protected static int rgbaValue(PVector color, float alpha) {
|
406
|
+
|
407
|
+
protected static int rgbaValue(PVector color, float alpha) {
|
470
408
|
return ((int)(alpha * 255) << 24) |
|
471
409
|
((int)(color.x * 255) << 16) |
|
472
410
|
((int)(color.y * 255) << 8) |
|
@@ -475,10 +413,6 @@ public class PShapeOBJ extends PShape {
|
|
475
413
|
|
476
414
|
|
477
415
|
// Stores a face from an OBJ file
|
478
|
-
|
479
|
-
/**
|
480
|
-
*
|
481
|
-
*/
|
482
416
|
static protected class OBJFace {
|
483
417
|
ArrayList<Integer> vertIdx;
|
484
418
|
ArrayList<Integer> texIdx;
|
@@ -495,13 +429,8 @@ public class PShapeOBJ extends PShape {
|
|
495
429
|
}
|
496
430
|
}
|
497
431
|
|
498
|
-
|
499
|
-
|
500
|
-
* @param parent
|
501
|
-
* @param filename
|
502
|
-
* @return
|
503
|
-
*/
|
504
|
-
static protected String getBasePath(PApplet parent, String filename) {
|
432
|
+
|
433
|
+
static protected String getBasePath(PApplet parent, String filename) {
|
505
434
|
// Obtaining the path
|
506
435
|
File file = new File(parent.dataPath(filename));
|
507
436
|
if (!file.exists()) {
|
@@ -514,10 +443,6 @@ public class PShapeOBJ extends PShape {
|
|
514
443
|
|
515
444
|
|
516
445
|
// Stores a material defined in an MTL file.
|
517
|
-
|
518
|
-
/**
|
519
|
-
*
|
520
|
-
*/
|
521
446
|
static protected class OBJMaterial {
|
522
447
|
String name;
|
523
448
|
PVector ka;
|
@@ -89,10 +89,6 @@ public class PShapeSVG extends PShape {
|
|
89
89
|
XML element;
|
90
90
|
|
91
91
|
/// Values between 0 and 1.
|
92
|
-
|
93
|
-
/**
|
94
|
-
*
|
95
|
-
*/
|
96
92
|
protected float opacity;
|
97
93
|
float strokeOpacity;
|
98
94
|
float fillOpacity;
|
@@ -106,22 +102,15 @@ public class PShapeSVG extends PShape {
|
|
106
102
|
/** √((w² + h²)/2) of containing SVG (used for percentages). */
|
107
103
|
protected float svgSizeXY;
|
108
104
|
|
109
|
-
|
110
|
-
*
|
111
|
-
*/
|
112
|
-
protected Gradient strokeGradient;
|
105
|
+
protected Gradient strokeGradient;
|
113
106
|
String strokeName; // id of another object, gradients only?
|
114
107
|
|
115
|
-
|
116
|
-
*
|
117
|
-
*/
|
118
|
-
protected Gradient fillGradient;
|
108
|
+
protected Gradient fillGradient;
|
119
109
|
String fillName; // id of another object
|
120
110
|
|
121
111
|
|
122
112
|
/**
|
123
113
|
* Initializes a new SVG object from the given XML object.
|
124
|
-
* @param svg
|
125
114
|
*/
|
126
115
|
public PShapeSVG(XML svg) {
|
127
116
|
this(null, svg, true);
|
@@ -136,13 +125,8 @@ public class PShapeSVG extends PShape {
|
|
136
125
|
}
|
137
126
|
}
|
138
127
|
|
139
|
-
|
140
|
-
|
141
|
-
* @param parent
|
142
|
-
* @param properties
|
143
|
-
* @param parseKids
|
144
|
-
*/
|
145
|
-
protected PShapeSVG(PShapeSVG parent, XML properties, boolean parseKids) {
|
128
|
+
|
129
|
+
protected PShapeSVG(PShapeSVG parent, XML properties, boolean parseKids) {
|
146
130
|
setParent(parent);
|
147
131
|
|
148
132
|
// Need to get width/height in early.
|
@@ -229,11 +213,6 @@ public class PShapeSVG extends PShape {
|
|
229
213
|
|
230
214
|
// Broken out so that subclasses can copy any additional variables
|
231
215
|
// (i.e. fillGradientPaint and strokeGradientPaint)
|
232
|
-
|
233
|
-
/**
|
234
|
-
*
|
235
|
-
* @param parent
|
236
|
-
*/
|
237
216
|
protected void setParent(PShapeSVG parent) {
|
238
217
|
// Need to set this so that findChild() works.
|
239
218
|
// Otherwise 'parent' is null until addChild() is called later.
|
@@ -295,20 +274,13 @@ public class PShapeSVG extends PShape {
|
|
295
274
|
}
|
296
275
|
|
297
276
|
|
298
|
-
/** Factory method for subclasses.
|
299
|
-
* @param parent
|
300
|
-
* @param properties
|
301
|
-
* @param parseKids
|
302
|
-
* @return */
|
277
|
+
/** Factory method for subclasses. */
|
303
278
|
protected PShapeSVG createShape(PShapeSVG parent, XML properties, boolean parseKids) {
|
304
279
|
return new PShapeSVG(parent, properties, parseKids);
|
305
280
|
}
|
306
281
|
|
307
|
-
|
308
|
-
|
309
|
-
* @param graphics
|
310
|
-
*/
|
311
|
-
protected void parseChildren(XML graphics) {
|
282
|
+
|
283
|
+
protected void parseChildren(XML graphics) {
|
312
284
|
XML[] elements = graphics.getChildren();
|
313
285
|
children = new PShape[elements.length];
|
314
286
|
childCount = 0;
|
@@ -324,8 +296,6 @@ public class PShapeSVG extends PShape {
|
|
324
296
|
/**
|
325
297
|
* Parse a child XML element.
|
326
298
|
* Override this method to add parsing for more SVG elements.
|
327
|
-
* @param elem
|
328
|
-
* @return
|
329
299
|
*/
|
330
300
|
protected PShape parseChild(XML elem) {
|
331
301
|
// System.err.println("parsing child in pshape " + elem.getName());
|
@@ -419,10 +389,8 @@ public class PShapeSVG extends PShape {
|
|
419
389
|
return shape;
|
420
390
|
}
|
421
391
|
|
422
|
-
|
423
|
-
|
424
|
-
*/
|
425
|
-
protected void parseLine() {
|
392
|
+
|
393
|
+
protected void parseLine() {
|
426
394
|
kind = LINE;
|
427
395
|
family = PRIMITIVE;
|
428
396
|
params = new float[] {
|
@@ -460,10 +428,8 @@ public class PShapeSVG extends PShape {
|
|
460
428
|
params[3] = ry*2;
|
461
429
|
}
|
462
430
|
|
463
|
-
|
464
|
-
|
465
|
-
*/
|
466
|
-
protected void parseRect() {
|
431
|
+
|
432
|
+
protected void parseRect() {
|
467
433
|
kind = RECT;
|
468
434
|
family = PRIMITIVE;
|
469
435
|
params = new float[] {
|
@@ -497,10 +463,8 @@ public class PShapeSVG extends PShape {
|
|
497
463
|
}
|
498
464
|
}
|
499
465
|
|
500
|
-
|
501
|
-
|
502
|
-
*/
|
503
|
-
protected void parsePath() {
|
466
|
+
|
467
|
+
protected void parsePath() {
|
504
468
|
family = PATH;
|
505
469
|
kind = 0;
|
506
470
|
|
@@ -1073,12 +1037,8 @@ public class PShapeSVG extends PShape {
|
|
1073
1037
|
return outgoing;
|
1074
1038
|
}
|
1075
1039
|
|
1076
|
-
|
1077
|
-
|
1078
|
-
* @param matrixStr
|
1079
|
-
* @return
|
1080
|
-
*/
|
1081
|
-
static protected PMatrix2D parseSingleTransform(String matrixStr) {
|
1040
|
+
|
1041
|
+
static protected PMatrix2D parseSingleTransform(String matrixStr) {
|
1082
1042
|
//String[] pieces = PApplet.match(matrixStr, "^\\s*(\\w+)\\((.*)\\)\\s*$");
|
1083
1043
|
String[] pieces = PApplet.match(matrixStr, "[,\\s]*(\\w+)\\((.*)\\)");
|
1084
1044
|
if (pieces == null) {
|
@@ -1124,11 +1084,8 @@ public class PShapeSVG extends PShape {
|
|
1124
1084
|
return null;
|
1125
1085
|
}
|
1126
1086
|
|
1127
|
-
|
1128
|
-
|
1129
|
-
* @param properties
|
1130
|
-
*/
|
1131
|
-
protected void parseColors(XML properties) {
|
1087
|
+
|
1088
|
+
protected void parseColors(XML properties) {
|
1132
1089
|
if (properties.hasAttribute("opacity")) {
|
1133
1090
|
String opacityText = properties.getString("opacity");
|
1134
1091
|
setOpacity(opacityText);
|
@@ -1316,7 +1273,6 @@ public class PShapeSVG extends PShape {
|
|
1316
1273
|
/**
|
1317
1274
|
* Parses the "color" datatype only, and prints an error if it is not of this form.
|
1318
1275
|
* http://www.w3.org/TR/SVG/types.html#DataTypeColor
|
1319
|
-
* @param colorText
|
1320
1276
|
* @return 0xRRGGBB (no alpha). Zero on error.
|
1321
1277
|
*/
|
1322
1278
|
static protected int parseSimpleColor(String colorText) {
|
@@ -1388,13 +1344,6 @@ public class PShapeSVG extends PShape {
|
|
1388
1344
|
}
|
1389
1345
|
*/
|
1390
1346
|
|
1391
|
-
/**
|
1392
|
-
*
|
1393
|
-
* @param what
|
1394
|
-
* @return
|
1395
|
-
*/
|
1396
|
-
|
1397
|
-
|
1398
1347
|
static protected int parseRGB(String what) {
|
1399
1348
|
int leftParen = what.indexOf('(') + 1;
|
1400
1349
|
int rightParen = what.indexOf(')');
|
@@ -1418,12 +1367,6 @@ public class PShapeSVG extends PShape {
|
|
1418
1367
|
|
1419
1368
|
|
1420
1369
|
//static protected Map<String, String> parseStyleAttributes(String style) {
|
1421
|
-
|
1422
|
-
/**
|
1423
|
-
*
|
1424
|
-
* @param style
|
1425
|
-
* @return
|
1426
|
-
*/
|
1427
1370
|
static protected StringDict parseStyleAttributes(String style) {
|
1428
1371
|
//Map<String, String> table = new HashMap<String, String>();
|
1429
1372
|
StringDict table = new StringDict();
|
@@ -1467,11 +1410,9 @@ public class PShapeSVG extends PShape {
|
|
1467
1410
|
* <LI>"1cm" equals "35.43307px" (and therefore 35.43307 user units)
|
1468
1411
|
* <LI>"1in" equals "90px" (and therefore 90 user units)
|
1469
1412
|
* </UL>
|
1470
|
-
* @param text
|
1471
1413
|
* @param relativeTo (float) Used for %. When relative to viewbox, should
|
1472
1414
|
* be svgWidth for horizontal dimentions, svgHeight for vertical, and
|
1473
1415
|
* svgXYSize for anything else.
|
1474
|
-
* @return
|
1475
1416
|
*/
|
1476
1417
|
static protected float parseUnitSize(String text, float relativeTo) {
|
1477
1418
|
int len = text.length() - 2;
|
@@ -1495,12 +1436,8 @@ public class PShapeSVG extends PShape {
|
|
1495
1436
|
}
|
1496
1437
|
}
|
1497
1438
|
|
1498
|
-
|
1499
|
-
|
1500
|
-
* @param text
|
1501
|
-
* @return
|
1502
|
-
*/
|
1503
|
-
static protected float parseFloatOrPercent(String text) {
|
1439
|
+
|
1440
|
+
static protected float parseFloatOrPercent(String text) {
|
1504
1441
|
text = text.trim();
|
1505
1442
|
if (text.endsWith("%")) {
|
1506
1443
|
return Float.parseFloat(text.substring(0, text.length() - 1)) / 100.0f;
|
@@ -1512,35 +1449,15 @@ public class PShapeSVG extends PShape {
|
|
1512
1449
|
|
1513
1450
|
// . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
1514
1451
|
|
1515
|
-
/**
|
1516
|
-
*
|
1517
|
-
*/
|
1518
|
-
|
1519
1452
|
|
1520
1453
|
static public class Gradient extends PShapeSVG {
|
1521
1454
|
AffineTransform transform;
|
1522
1455
|
|
1523
|
-
|
1524
|
-
|
1525
|
-
|
1526
|
-
|
1527
|
-
|
1528
|
-
/**
|
1529
|
-
*
|
1530
|
-
*/
|
1531
|
-
public int[] color;
|
1532
|
-
|
1533
|
-
/**
|
1534
|
-
*
|
1535
|
-
*/
|
1536
|
-
public int count;
|
1537
|
-
|
1538
|
-
/**
|
1539
|
-
*
|
1540
|
-
* @param parent
|
1541
|
-
* @param properties
|
1542
|
-
*/
|
1543
|
-
public Gradient(PShapeSVG parent, XML properties) {
|
1456
|
+
public float[] offset;
|
1457
|
+
public int[] color;
|
1458
|
+
public int count;
|
1459
|
+
|
1460
|
+
public Gradient(PShapeSVG parent, XML properties) {
|
1544
1461
|
super(parent, properties, true);
|
1545
1462
|
|
1546
1463
|
XML elements[] = properties.getChildren();
|
@@ -1580,37 +1497,11 @@ public class PShapeSVG extends PShape {
|
|
1580
1497
|
}
|
1581
1498
|
}
|
1582
1499
|
|
1583
|
-
|
1584
|
-
|
1585
|
-
|
1586
|
-
|
1587
|
-
|
1588
|
-
/**
|
1589
|
-
*
|
1590
|
-
*/
|
1591
|
-
public float x1,
|
1592
|
-
|
1593
|
-
/**
|
1594
|
-
*
|
1595
|
-
*/
|
1596
|
-
y1,
|
1597
|
-
|
1598
|
-
/**
|
1599
|
-
*
|
1600
|
-
*/
|
1601
|
-
x2,
|
1602
|
-
|
1603
|
-
/**
|
1604
|
-
*
|
1605
|
-
*/
|
1606
|
-
y2;
|
1607
|
-
|
1608
|
-
/**
|
1609
|
-
*
|
1610
|
-
* @param parent
|
1611
|
-
* @param properties
|
1612
|
-
*/
|
1613
|
-
public LinearGradient(PShapeSVG parent, XML properties) {
|
1500
|
+
|
1501
|
+
public class LinearGradient extends Gradient {
|
1502
|
+
public float x1, y1, x2, y2;
|
1503
|
+
|
1504
|
+
public LinearGradient(PShapeSVG parent, XML properties) {
|
1614
1505
|
super(parent, properties);
|
1615
1506
|
|
1616
1507
|
this.x1 = getFloatWithUnit(properties, "x1", svgWidth);
|
@@ -1636,32 +1527,11 @@ public class PShapeSVG extends PShape {
|
|
1636
1527
|
}
|
1637
1528
|
}
|
1638
1529
|
|
1639
|
-
|
1640
|
-
|
1641
|
-
|
1642
|
-
|
1643
|
-
|
1644
|
-
/**
|
1645
|
-
*
|
1646
|
-
*/
|
1647
|
-
public float cx,
|
1648
|
-
|
1649
|
-
/**
|
1650
|
-
*
|
1651
|
-
*/
|
1652
|
-
cy,
|
1653
|
-
|
1654
|
-
/**
|
1655
|
-
*
|
1656
|
-
*/
|
1657
|
-
r;
|
1658
|
-
|
1659
|
-
/**
|
1660
|
-
*
|
1661
|
-
* @param parent
|
1662
|
-
* @param properties
|
1663
|
-
*/
|
1664
|
-
public RadialGradient(PShapeSVG parent, XML properties) {
|
1530
|
+
|
1531
|
+
public class RadialGradient extends Gradient {
|
1532
|
+
public float cx, cy, r;
|
1533
|
+
|
1534
|
+
public RadialGradient(PShapeSVG parent, XML properties) {
|
1665
1535
|
super(parent, properties);
|
1666
1536
|
|
1667
1537
|
this.cx = getFloatWithUnit(properties, "cx", svgWidth);
|
@@ -1688,51 +1558,21 @@ public class PShapeSVG extends PShape {
|
|
1688
1558
|
|
1689
1559
|
// . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
1690
1560
|
|
1691
|
-
/**
|
1692
|
-
*
|
1693
|
-
*/
|
1694
|
-
|
1695
1561
|
|
1696
1562
|
public static class Font extends PShapeSVG {
|
1563
|
+
public FontFace face;
|
1697
1564
|
|
1698
|
-
|
1699
|
-
|
1700
|
-
*/
|
1701
|
-
public FontFace face;
|
1702
|
-
|
1703
|
-
/**
|
1704
|
-
*
|
1705
|
-
*/
|
1706
|
-
public Map<String, FontGlyph> namedGlyphs;
|
1565
|
+
public Map<String, FontGlyph> namedGlyphs;
|
1566
|
+
public Map<Character, FontGlyph> unicodeGlyphs;
|
1707
1567
|
|
1708
|
-
|
1709
|
-
|
1710
|
-
|
1711
|
-
public Map<Character, FontGlyph> unicodeGlyphs;
|
1712
|
-
|
1713
|
-
/**
|
1714
|
-
*
|
1715
|
-
*/
|
1716
|
-
public int glyphCount;
|
1717
|
-
|
1718
|
-
/**
|
1719
|
-
*
|
1720
|
-
*/
|
1721
|
-
public FontGlyph[] glyphs;
|
1722
|
-
|
1723
|
-
/**
|
1724
|
-
*
|
1725
|
-
*/
|
1726
|
-
public FontGlyph missingGlyph;
|
1568
|
+
public int glyphCount;
|
1569
|
+
public FontGlyph[] glyphs;
|
1570
|
+
public FontGlyph missingGlyph;
|
1727
1571
|
|
1728
1572
|
int horizAdvX;
|
1729
1573
|
|
1730
|
-
|
1731
|
-
|
1732
|
-
* @param parent
|
1733
|
-
* @param properties
|
1734
|
-
*/
|
1735
|
-
public Font(PShapeSVG parent, XML properties) {
|
1574
|
+
|
1575
|
+
public Font(PShapeSVG parent, XML properties) {
|
1736
1576
|
super(parent, properties, false);
|
1737
1577
|
// handle(parent, properties);
|
1738
1578
|
|
@@ -1773,22 +1613,13 @@ public class PShapeSVG extends PShape {
|
|
1773
1613
|
}
|
1774
1614
|
}
|
1775
1615
|
|
1776
|
-
|
1777
|
-
|
1778
|
-
*/
|
1779
|
-
protected void drawShape() {
|
1616
|
+
|
1617
|
+
protected void drawShape() {
|
1780
1618
|
// does nothing for fonts
|
1781
1619
|
}
|
1782
1620
|
|
1783
|
-
|
1784
|
-
|
1785
|
-
* @param g
|
1786
|
-
* @param str
|
1787
|
-
* @param x
|
1788
|
-
* @param y
|
1789
|
-
* @param size
|
1790
|
-
*/
|
1791
|
-
public void drawString(PGraphics g, String str, float x, float y, float size) {
|
1621
|
+
|
1622
|
+
public void drawString(PGraphics g, String str, float x, float y, float size) {
|
1792
1623
|
// 1) scale by the 1.0/unitsPerEm
|
1793
1624
|
// 2) scale up by a font size
|
1794
1625
|
g.pushMatrix();
|
@@ -1812,15 +1643,8 @@ public class PShapeSVG extends PShape {
|
|
1812
1643
|
g.popMatrix();
|
1813
1644
|
}
|
1814
1645
|
|
1815
|
-
|
1816
|
-
|
1817
|
-
* @param g
|
1818
|
-
* @param c
|
1819
|
-
* @param x
|
1820
|
-
* @param y
|
1821
|
-
* @param size
|
1822
|
-
*/
|
1823
|
-
public void drawChar(PGraphics g, char c, float x, float y, float size) {
|
1646
|
+
|
1647
|
+
public void drawChar(PGraphics g, char c, float x, float y, float size) {
|
1824
1648
|
g.pushMatrix();
|
1825
1649
|
float s = size / face.unitsPerEm;
|
1826
1650
|
g.translate(x, y);
|
@@ -1830,13 +1654,8 @@ public class PShapeSVG extends PShape {
|
|
1830
1654
|
g.popMatrix();
|
1831
1655
|
}
|
1832
1656
|
|
1833
|
-
|
1834
|
-
|
1835
|
-
* @param str
|
1836
|
-
* @param size
|
1837
|
-
* @return
|
1838
|
-
*/
|
1839
|
-
public float textWidth(String str, float size) {
|
1657
|
+
|
1658
|
+
public float textWidth(String str, float size) {
|
1840
1659
|
float w = 0;
|
1841
1660
|
char[] c = str.toCharArray();
|
1842
1661
|
for (int i = 0; i < c.length; i++) {
|
@@ -1890,27 +1709,13 @@ public class PShapeSVG extends PShape {
|
|
1890
1709
|
|
1891
1710
|
// . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
1892
1711
|
|
1893
|
-
/**
|
1894
|
-
*
|
1895
|
-
*/
|
1896
|
-
|
1897
1712
|
|
1898
1713
|
public static class FontGlyph extends PShapeSVG { // extends Path
|
1899
|
-
|
1900
|
-
/**
|
1901
|
-
*
|
1902
|
-
*/
|
1903
1714
|
public String name;
|
1904
1715
|
char unicode;
|
1905
1716
|
int horizAdvX;
|
1906
1717
|
|
1907
|
-
|
1908
|
-
*
|
1909
|
-
* @param parent
|
1910
|
-
* @param properties
|
1911
|
-
* @param font
|
1912
|
-
*/
|
1913
|
-
public FontGlyph(PShapeSVG parent, XML properties, Font font) {
|
1718
|
+
public FontGlyph(PShapeSVG parent, XML properties, Font font) {
|
1914
1719
|
super(parent, properties, true);
|
1915
1720
|
super.parsePath(); // ??
|
1916
1721
|
|
@@ -1933,11 +1738,8 @@ public class PShapeSVG extends PShape {
|
|
1933
1738
|
}
|
1934
1739
|
}
|
1935
1740
|
|
1936
|
-
|
1937
|
-
|
1938
|
-
* @return
|
1939
|
-
*/
|
1940
|
-
protected boolean isLegit() { // TODO need a better way to handle this...
|
1741
|
+
|
1742
|
+
protected boolean isLegit() { // TODO need a better way to handle this...
|
1941
1743
|
return vertexCount != 0;
|
1942
1744
|
}
|
1943
1745
|
}
|
@@ -1956,8 +1758,6 @@ public class PShapeSVG extends PShape {
|
|
1956
1758
|
* // This code grabs "Layer 3" and the shapes beneath it.
|
1957
1759
|
* PShape layer3 = svg.getChild("Layer 3");
|
1958
1760
|
* </PRE>
|
1959
|
-
* @param name
|
1960
|
-
* @return
|
1961
1761
|
*/
|
1962
1762
|
@Override
|
1963
1763
|
public PShape getChild(String name) {
|