propane 3.7.1-java → 3.11.0-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.mvn/extensions.xml +1 -1
- data/.mvn/wrapper/maven-wrapper.properties +1 -1
- data/.travis.yml +1 -1
- data/CHANGELOG.md +7 -1
- data/README.md +8 -15
- data/Rakefile +6 -5
- data/lib/propane/app.rb +11 -15
- data/lib/propane/helper_methods.rb +6 -6
- data/lib/propane/version.rb +1 -1
- data/lib/{propane-3.7.1.jar → propane-3.11.0.jar} +0 -0
- data/library/pdf/itextpdf-5.5.13.2.jar +0 -0
- data/library/pdf/pdf.rb +7 -0
- data/library/svg/batik-all-1.14.jar +0 -0
- data/library/svg/svg.rb +7 -0
- data/mvnw +3 -3
- data/mvnw.cmd +2 -2
- data/pom.rb +32 -5
- data/pom.xml +58 -7
- data/propane.gemspec +9 -5
- data/src/main/java/monkstone/FastNoiseModuleJava.java +127 -0
- data/src/main/java/monkstone/MathToolModule.java +30 -30
- data/src/main/java/monkstone/PropaneLibrary.java +2 -0
- data/src/main/java/monkstone/SmoothNoiseModuleJava.java +127 -0
- data/src/main/java/monkstone/fastmath/DegLutTables.java +111 -0
- data/src/main/java/monkstone/fastmath/Deglut.java +6 -56
- data/src/main/java/monkstone/filechooser/Chooser.java +1 -1
- data/src/main/java/monkstone/noise/OpenSimplex2F.java +914 -0
- data/src/main/java/monkstone/noise/OpenSimplex2S.java +1138 -0
- data/src/main/java/monkstone/slider/WheelHandler.java +1 -1
- data/src/main/java/monkstone/vecmath/JRender.java +6 -6
- data/src/main/java/monkstone/vecmath/vec2/Vec2.java +27 -31
- data/src/main/java/monkstone/vecmath/vec3/Vec3.java +26 -40
- data/src/main/java/processing/awt/PGraphicsJava2D.java +11 -3
- data/src/main/java/processing/awt/PImageAWT.java +6 -4
- data/src/main/java/processing/core/PApplet.java +13259 -13379
- data/src/main/java/processing/core/PConstants.java +155 -163
- data/src/main/java/processing/core/PGraphics.java +118 -111
- data/src/main/java/processing/core/PImage.java +14 -14
- data/src/main/java/processing/opengl/PGraphicsOpenGL.java +13 -13
- data/src/main/java/processing/opengl/PJOGL.java +6 -5
- data/src/main/java/processing/opengl/PShader.java +1 -6
- data/src/main/java/processing/opengl/PSurfaceJOGL.java +6 -6
- data/src/main/java/processing/pdf/PGraphicsPDF.java +581 -0
- data/src/main/java/processing/svg/PGraphicsSVG.java +378 -0
- data/src/main/{java/processing/opengl → resources}/cursors/arrow.png +0 -0
- data/src/main/{java/processing/opengl → resources}/cursors/cross.png +0 -0
- data/src/main/{java/processing/opengl → resources}/cursors/hand.png +0 -0
- data/src/main/{java/processing/opengl → resources}/cursors/license.txt +0 -0
- data/src/main/{java/processing/opengl → resources}/cursors/move.png +0 -0
- data/src/main/{java/processing/opengl → resources}/cursors/text.png +0 -0
- data/src/main/{java/processing/opengl → resources}/cursors/wait.png +0 -0
- data/src/main/{java/processing/opengl → resources}/shaders/ColorFrag.glsl +0 -0
- data/src/main/{java/processing/opengl → resources}/shaders/ColorVert.glsl +0 -0
- data/src/main/{java/processing/opengl → resources}/shaders/LightFrag.glsl +0 -0
- data/src/main/{java/processing/opengl → resources}/shaders/LightVert.glsl +0 -0
- data/src/main/{java/processing/opengl → resources}/shaders/LineFrag.glsl +0 -0
- data/src/main/{java/processing/opengl → resources}/shaders/LineVert.glsl +0 -0
- data/src/main/{java/processing/opengl → resources}/shaders/MaskFrag.glsl +0 -0
- data/src/main/{java/processing/opengl → resources}/shaders/PointFrag.glsl +0 -0
- data/src/main/{java/processing/opengl → resources}/shaders/PointVert.glsl +0 -0
- data/src/main/{java/processing/opengl → resources}/shaders/TexFrag.glsl +0 -0
- data/src/main/{java/processing/opengl → resources}/shaders/TexLightFrag.glsl +0 -0
- data/src/main/{java/processing/opengl → resources}/shaders/TexLightVert.glsl +0 -0
- data/src/main/{java/processing/opengl → resources}/shaders/TexVert.glsl +0 -0
- data/test/deglut_spec_test.rb +2 -2
- data/test/test_helper.rb +1 -0
- data/vendors/Rakefile +1 -1
- metadata +49 -46
- data/library/simplex_noise/simplex_noise.rb +0 -5
- data/src/main/java/monkstone/noise/SimplexNoise.java +0 -436
@@ -30,9 +30,11 @@ import java.awt.Color;
|
|
30
30
|
|
31
31
|
// Used for the 'image' object that's been here forever
|
32
32
|
import java.awt.Font;
|
33
|
+
import java.awt.FontFormatException;
|
33
34
|
import java.awt.Image;
|
34
35
|
|
35
36
|
import java.io.File;
|
37
|
+
import java.io.IOException;
|
36
38
|
import java.io.InputStream;
|
37
39
|
import java.util.Map;
|
38
40
|
import java.util.HashMap;
|
@@ -626,8 +628,8 @@ public class PGraphics extends PImage implements PConstants {
|
|
626
628
|
sinLUT = new float[SINCOS_LENGTH];
|
627
629
|
cosLUT = new float[SINCOS_LENGTH];
|
628
630
|
for (int i = 0; i < SINCOS_LENGTH; i++) {
|
629
|
-
sinLUT[i] = (float) Math.sin(i *
|
630
|
-
cosLUT[i] = (float) Math.cos(i *
|
631
|
+
sinLUT[i] = (float) Math.sin(Math.toRadians(i * SINCOS_PRECISION));
|
632
|
+
cosLUT[i] = (float) Math.cos(Math.toRadians(i * SINCOS_PRECISION));
|
631
633
|
}
|
632
634
|
}
|
633
635
|
|
@@ -1984,35 +1986,32 @@ public class PGraphics extends PImage implements PConstants {
|
|
1984
1986
|
* @param d height of the rectangle, by default
|
1985
1987
|
*/
|
1986
1988
|
public void clip(float a, float b, float c, float d) {
|
1987
|
-
|
1988
|
-
|
1989
|
-
|
1989
|
+
switch (imageMode) {
|
1990
|
+
case CORNER:
|
1991
|
+
if (c < 0) { // reset a negative width
|
1992
|
+
a += c; c = -c;
|
1993
|
+
} if (d < 0) { // reset a negative height
|
1994
|
+
b += d; d = -d;
|
1995
|
+
} clipImpl(a, b, a + c, b + d);
|
1996
|
+
break;
|
1997
|
+
case CORNERS:
|
1998
|
+
if (c < a) { // reverse because x2 < x1
|
1999
|
+
float temp = a; a = c; c = temp;
|
2000
|
+
} if (d < b) { // reverse because y2 < y1
|
2001
|
+
float temp = b; b = d; d = temp;
|
2002
|
+
} clipImpl(a, b, c, d);
|
2003
|
+
break;
|
2004
|
+
case CENTER:
|
2005
|
+
// c and d are width/height
|
2006
|
+
if (c < 0) c = -c;
|
2007
|
+
if (d < 0) d = -d;
|
2008
|
+
float x1 = a - c/2;
|
2009
|
+
float y1 = b - d/2;
|
2010
|
+
clipImpl(x1, y1, x1 + c, y1 + d);
|
2011
|
+
break;
|
2012
|
+
default:
|
2013
|
+
break;
|
1990
2014
|
}
|
1991
|
-
if (d < 0) { // reset a negative height
|
1992
|
-
b += d; d = -d;
|
1993
|
-
}
|
1994
|
-
|
1995
|
-
clipImpl(a, b, a + c, b + d);
|
1996
|
-
|
1997
|
-
} else if (imageMode == CORNERS) {
|
1998
|
-
if (c < a) { // reverse because x2 < x1
|
1999
|
-
float temp = a; a = c; c = temp;
|
2000
|
-
}
|
2001
|
-
if (d < b) { // reverse because y2 < y1
|
2002
|
-
float temp = b; b = d; d = temp;
|
2003
|
-
}
|
2004
|
-
|
2005
|
-
clipImpl(a, b, c, d);
|
2006
|
-
|
2007
|
-
} else if (imageMode == CENTER) {
|
2008
|
-
// c and d are width/height
|
2009
|
-
if (c < 0) c = -c;
|
2010
|
-
if (d < 0) d = -d;
|
2011
|
-
float x1 = a - c/2;
|
2012
|
-
float y1 = b - d/2;
|
2013
|
-
|
2014
|
-
clipImpl(x1, y1, x1 + c, y1 + d);
|
2015
|
-
}
|
2016
2015
|
}
|
2017
2016
|
|
2018
2017
|
|
@@ -2811,20 +2810,24 @@ public class PGraphics extends PImage implements PConstants {
|
|
2811
2810
|
float w = c;
|
2812
2811
|
float h = d;
|
2813
2812
|
|
2814
|
-
|
2815
|
-
|
2816
|
-
|
2817
|
-
|
2818
|
-
|
2819
|
-
|
2820
|
-
|
2821
|
-
|
2822
|
-
|
2823
|
-
|
2824
|
-
|
2825
|
-
|
2826
|
-
|
2827
|
-
|
2813
|
+
switch (ellipseMode) {
|
2814
|
+
case CORNERS:
|
2815
|
+
w = c - a;
|
2816
|
+
h = d - b;
|
2817
|
+
break;
|
2818
|
+
case RADIUS:
|
2819
|
+
x = a - c;
|
2820
|
+
y = b - d;
|
2821
|
+
w = c * 2;
|
2822
|
+
h = d * 2;
|
2823
|
+
break;
|
2824
|
+
case DIAMETER:
|
2825
|
+
x = a - c/2f;
|
2826
|
+
y = b - d/2f;
|
2827
|
+
break;
|
2828
|
+
default:
|
2829
|
+
break;
|
2830
|
+
}
|
2828
2831
|
|
2829
2832
|
if (w < 0) { // undo negative width
|
2830
2833
|
x += w;
|
@@ -2881,20 +2884,24 @@ public class PGraphics extends PImage implements PConstants {
|
|
2881
2884
|
float w = c;
|
2882
2885
|
float h = d;
|
2883
2886
|
|
2884
|
-
|
2885
|
-
|
2886
|
-
|
2887
|
-
|
2888
|
-
|
2889
|
-
|
2890
|
-
|
2891
|
-
|
2892
|
-
|
2893
|
-
|
2894
|
-
|
2895
|
-
|
2896
|
-
|
2897
|
-
|
2887
|
+
switch (ellipseMode) {
|
2888
|
+
case CORNERS:
|
2889
|
+
w = c - a;
|
2890
|
+
h = d - b;
|
2891
|
+
break;
|
2892
|
+
case RADIUS:
|
2893
|
+
x = a - c;
|
2894
|
+
y = b - d;
|
2895
|
+
w = c * 2;
|
2896
|
+
h = d * 2;
|
2897
|
+
break;
|
2898
|
+
case CENTER:
|
2899
|
+
x = a - c/2f;
|
2900
|
+
y = b - d/2f;
|
2901
|
+
break;
|
2902
|
+
default:
|
2903
|
+
break;
|
2904
|
+
}
|
2898
2905
|
|
2899
2906
|
// make sure the loop will exit before starting while
|
2900
2907
|
if (!Float.isInfinite(start) && !Float.isInfinite(stop)) {
|
@@ -3854,41 +3861,38 @@ public class PGraphics extends PImage implements PConstants {
|
|
3854
3861
|
// loadImageAsync() sets width and height to -1 when loading fails.
|
3855
3862
|
if (img.width == -1 || img.height == -1) return;
|
3856
3863
|
|
3857
|
-
|
3858
|
-
|
3859
|
-
|
3860
|
-
|
3861
|
-
|
3862
|
-
|
3864
|
+
switch (imageMode) {
|
3865
|
+
case CORNER:
|
3866
|
+
if (c < 0) { // reset a negative width
|
3867
|
+
a += c; c = -c;
|
3868
|
+
} if (d < 0) { // reset a negative height
|
3869
|
+
b += d; d = -d;
|
3870
|
+
} imageImpl(img,
|
3871
|
+
a, b, a + c, b + d,
|
3872
|
+
u1, v1, u2, v2);
|
3873
|
+
break;
|
3874
|
+
case CORNERS:
|
3875
|
+
if (c < a) { // reverse because x2 < x1
|
3876
|
+
float temp = a; a = c; c = temp;
|
3877
|
+
} if (d < b) { // reverse because y2 < y1
|
3878
|
+
float temp = b; b = d; d = temp;
|
3879
|
+
} imageImpl(img,
|
3880
|
+
a, b, c, d,
|
3881
|
+
u1, v1, u2, v2);
|
3882
|
+
break;
|
3883
|
+
case CENTER:
|
3884
|
+
// c and d are width/height
|
3885
|
+
if (c < 0) c = -c;
|
3886
|
+
if (d < 0) d = -d;
|
3887
|
+
float x1 = a - c/2;
|
3888
|
+
float y1 = b - d/2;
|
3889
|
+
imageImpl(img,
|
3890
|
+
x1, y1, x1 + c, y1 + d,
|
3891
|
+
u1, v1, u2, v2);
|
3892
|
+
break;
|
3893
|
+
default:
|
3894
|
+
break;
|
3863
3895
|
}
|
3864
|
-
|
3865
|
-
imageImpl(img,
|
3866
|
-
a, b, a + c, b + d,
|
3867
|
-
u1, v1, u2, v2);
|
3868
|
-
|
3869
|
-
} else if (imageMode == CORNERS) {
|
3870
|
-
if (c < a) { // reverse because x2 < x1
|
3871
|
-
float temp = a; a = c; c = temp;
|
3872
|
-
}
|
3873
|
-
if (d < b) { // reverse because y2 < y1
|
3874
|
-
float temp = b; b = d; d = temp;
|
3875
|
-
}
|
3876
|
-
|
3877
|
-
imageImpl(img,
|
3878
|
-
a, b, c, d,
|
3879
|
-
u1, v1, u2, v2);
|
3880
|
-
|
3881
|
-
} else if (imageMode == CENTER) {
|
3882
|
-
// c and d are width/height
|
3883
|
-
if (c < 0) c = -c;
|
3884
|
-
if (d < 0) d = -d;
|
3885
|
-
float x1 = a - c/2;
|
3886
|
-
float y1 = b - d/2;
|
3887
|
-
|
3888
|
-
imageImpl(img,
|
3889
|
-
x1, y1, x1 + c, y1 + d,
|
3890
|
-
u1, v1, u2, v2);
|
3891
|
-
}
|
3892
3896
|
}
|
3893
3897
|
|
3894
3898
|
|
@@ -4062,6 +4066,7 @@ public class PGraphics extends PImage implements PConstants {
|
|
4062
4066
|
|
4063
4067
|
|
4064
4068
|
/**
|
4069
|
+
* @param shape
|
4065
4070
|
* @param a x-coordinate of the shape
|
4066
4071
|
* @param b y-coordinate of the shape
|
4067
4072
|
* @param c width to display the shape
|
@@ -4073,23 +4078,26 @@ public class PGraphics extends PImage implements PConstants {
|
|
4073
4078
|
|
4074
4079
|
pushMatrix();
|
4075
4080
|
|
4076
|
-
|
4077
|
-
|
4078
|
-
|
4079
|
-
|
4080
|
-
|
4081
|
-
|
4082
|
-
|
4083
|
-
|
4084
|
-
|
4085
|
-
|
4086
|
-
|
4087
|
-
|
4088
|
-
|
4089
|
-
|
4090
|
-
|
4091
|
-
|
4092
|
-
|
4081
|
+
switch (shapeMode) {
|
4082
|
+
case CENTER:
|
4083
|
+
// x and y are center, c and d refer to a diameter
|
4084
|
+
translate(a - c/2f, b - d/2f);
|
4085
|
+
scale(c / shape.getWidth(), d / shape.getHeight());
|
4086
|
+
break;
|
4087
|
+
case CORNER:
|
4088
|
+
translate(a, b);
|
4089
|
+
scale(c / shape.getWidth(), d / shape.getHeight());
|
4090
|
+
break;
|
4091
|
+
case CORNERS:
|
4092
|
+
// c and d are x2/y2, make them into width/height
|
4093
|
+
c -= a; d -= b;
|
4094
|
+
// then same as above
|
4095
|
+
translate(a, b);
|
4096
|
+
scale(c / shape.getWidth(), d / shape.getHeight());
|
4097
|
+
break;
|
4098
|
+
default:
|
4099
|
+
break;
|
4100
|
+
}
|
4093
4101
|
shape.draw(this);
|
4094
4102
|
|
4095
4103
|
popMatrix();
|
@@ -4141,9 +4149,8 @@ public class PGraphics extends PImage implements PConstants {
|
|
4141
4149
|
}
|
4142
4150
|
return createFont(baseFont, size, smooth, charset, stream != null);
|
4143
4151
|
|
4144
|
-
} catch (
|
4152
|
+
} catch (FontFormatException | IOException e) {
|
4145
4153
|
System.err.println("Problem with createFont(\"" + name + "\")");
|
4146
|
-
e.printStackTrace();
|
4147
4154
|
return null;
|
4148
4155
|
}
|
4149
4156
|
}
|
@@ -1567,24 +1567,24 @@ public class PImage implements PConstants, Cloneable {
|
|
1567
1567
|
* Sometimes called "Normal" or "Copy" in other software.
|
1568
1568
|
*
|
1569
1569
|
* <LI>BLEND - linear interpolation of colours:
|
1570
|
-
* <
|
1570
|
+
* <code>C = A*factor + B</code>
|
1571
1571
|
*
|
1572
1572
|
* <LI>ADD - additive blending with white clip:
|
1573
|
-
* <
|
1573
|
+
* <code>C = min(A*factor + B, 255)</code>.
|
1574
1574
|
* Clipped to 0..255, Photoshop calls this "Linear Burn",
|
1575
1575
|
* and Director calls it "Add Pin".
|
1576
1576
|
*
|
1577
1577
|
* <LI>SUBTRACT - substractive blend with black clip:
|
1578
|
-
* <
|
1578
|
+
* <code>C = max(B - A*factor, 0)</code>.
|
1579
1579
|
* Clipped to 0..255, Photoshop calls this "Linear Dodge",
|
1580
1580
|
* and Director calls it "Subtract Pin".
|
1581
1581
|
*
|
1582
1582
|
* <LI>DARKEST - only the darkest colour succeeds:
|
1583
|
-
* <
|
1583
|
+
* <code>C = min(A*factor, B)</code>.
|
1584
1584
|
* Illustrator calls this "Darken".
|
1585
1585
|
*
|
1586
1586
|
* <LI>LIGHTEST - only the lightest colour succeeds:
|
1587
|
-
* <
|
1587
|
+
* <code>C = max(A*factor, B)</code>.
|
1588
1588
|
* Illustrator calls this "Lighten".
|
1589
1589
|
*
|
1590
1590
|
* <LI>DIFFERENCE - subtract colors from underlying image.
|
@@ -1615,12 +1615,12 @@ public class PImage implements PConstants, Cloneable {
|
|
1615
1615
|
* <P>It is important to note that Processing uses "fast" code, not
|
1616
1616
|
* necessarily "correct" code. No biggie, most software does. A nitpicker
|
1617
1617
|
* can find numerous "off by 1 division" problems in the blend code where
|
1618
|
-
* <
|
1619
|
-
* <
|
1618
|
+
* <code>>>8</code> or <code>>>7</code> is used when strictly speaking
|
1619
|
+
* <code>/255.0</code> or <code>/127.0</code> should have been used.</P>
|
1620
1620
|
* <P>For instance, exclusion (not intended for real-time use) reads
|
1621
|
-
* <
|
1622
|
-
* not <
|
1623
|
-
* the same as <
|
1621
|
+
* <code>r1 + r2 - ((2 * r1 * r2) / 255)</code> because <code>255 == 1.0</code>
|
1622
|
+
* not <code>256 == 1.0</code>. In other words, <code>(255*255)>>8</code> is not
|
1623
|
+
* the same as <code>(255*255)/255</code>. But for real-time use the shifts
|
1624
1624
|
* are preferrable, and the difference is insignificant for applications
|
1625
1625
|
* built with Processing.</P>
|
1626
1626
|
*
|
@@ -3130,9 +3130,9 @@ int testFunction(int dst, int src) {
|
|
3130
3130
|
* </p>
|
3131
3131
|
* Starting with revision 0092, the format setting is taken into account:
|
3132
3132
|
* <UL>
|
3133
|
-
* <LI><
|
3134
|
-
* <LI><
|
3135
|
-
* <LI><
|
3133
|
+
* <LI><code>ALPHA</code> images written as 8bit grayscale (uses lowest byte)
|
3134
|
+
* <LI><code>RGB</code> → 24 bits
|
3135
|
+
* <LI><code>ARGB</code> → 32 bits
|
3136
3136
|
* </UL>
|
3137
3137
|
* All versions are RLE compressed.
|
3138
3138
|
*
|
@@ -3307,7 +3307,7 @@ int testFunction(int dst, int src) {
|
|
3307
3307
|
* and the extension used is supported (usually png, jpg, jpeg, bmp,
|
3308
3308
|
* and tiff), then those methods will be used to write the image.
|
3309
3309
|
* To get a list of the supported formats for writing, use: <BR>
|
3310
|
-
* <
|
3310
|
+
* <code>println(javax.imageio.ImageIO.getReaderFormatNames())</code>
|
3311
3311
|
* <p>
|
3312
3312
|
* To use the original built-in image writers, use .tga or .tif as the
|
3313
3313
|
* extension, or don't include an extension. When no extension is used,
|
@@ -181,32 +181,32 @@ public class PGraphicsOpenGL extends PGraphics {
|
|
181
181
|
// Shaders
|
182
182
|
|
183
183
|
static protected URL defColorShaderVertURL =
|
184
|
-
PGraphicsOpenGL.class.getResource("/
|
184
|
+
PGraphicsOpenGL.class.getResource("/shaders/ColorVert.glsl");
|
185
185
|
static protected URL defTextureShaderVertURL =
|
186
|
-
PGraphicsOpenGL.class.getResource("/
|
186
|
+
PGraphicsOpenGL.class.getResource("/shaders/TexVert.glsl");
|
187
187
|
static protected URL defLightShaderVertURL =
|
188
|
-
PGraphicsOpenGL.class.getResource("/
|
188
|
+
PGraphicsOpenGL.class.getResource("/shaders/LightVert.glsl");
|
189
189
|
static protected URL defTexlightShaderVertURL =
|
190
|
-
PGraphicsOpenGL.class.getResource("/
|
190
|
+
PGraphicsOpenGL.class.getResource("/shaders/TexLightVert.glsl");
|
191
191
|
static protected URL defColorShaderFragURL =
|
192
|
-
PGraphicsOpenGL.class.getResource("/
|
192
|
+
PGraphicsOpenGL.class.getResource("/shaders/ColorFrag.glsl");
|
193
193
|
static protected URL defTextureShaderFragURL =
|
194
|
-
PGraphicsOpenGL.class.getResource("/
|
194
|
+
PGraphicsOpenGL.class.getResource("/shaders/TexFrag.glsl");
|
195
195
|
static protected URL defLightShaderFragURL =
|
196
|
-
PGraphicsOpenGL.class.getResource("/
|
196
|
+
PGraphicsOpenGL.class.getResource("/shaders/LightFrag.glsl");
|
197
197
|
static protected URL defTexlightShaderFragURL =
|
198
|
-
PGraphicsOpenGL.class.getResource("/
|
198
|
+
PGraphicsOpenGL.class.getResource("/shaders/TexLightFrag.glsl");
|
199
199
|
|
200
200
|
static protected URL defLineShaderVertURL =
|
201
|
-
PGraphicsOpenGL.class.getResource("/
|
201
|
+
PGraphicsOpenGL.class.getResource("/shaders/LineVert.glsl");
|
202
202
|
static protected URL defLineShaderFragURL =
|
203
|
-
PGraphicsOpenGL.class.getResource("/
|
203
|
+
PGraphicsOpenGL.class.getResource("/shaders/LineFrag.glsl");
|
204
204
|
static protected URL defPointShaderVertURL =
|
205
|
-
PGraphicsOpenGL.class.getResource("/
|
205
|
+
PGraphicsOpenGL.class.getResource("/shaders/PointVert.glsl");
|
206
206
|
static protected URL defPointShaderFragURL =
|
207
|
-
PGraphicsOpenGL.class.getResource("/
|
207
|
+
PGraphicsOpenGL.class.getResource("/shaders/PointFrag.glsl");
|
208
208
|
static protected URL maskShaderFragURL =
|
209
|
-
PGraphicsOpenGL.class.getResource("/
|
209
|
+
PGraphicsOpenGL.class.getResource("/shaders/MaskFrag.glsl");
|
210
210
|
|
211
211
|
protected PShader defColorShader;
|
212
212
|
protected PShader defTextureShader;
|
@@ -182,7 +182,7 @@ public class PJOGL extends PGL {
|
|
182
182
|
@Override
|
183
183
|
protected PImage screenshot() {
|
184
184
|
AWTGLReadBufferUtil util = new AWTGLReadBufferUtil(capabilities.getGLProfile(), false);
|
185
|
-
return new PImageAWT(util.readPixelsToBufferedImage
|
185
|
+
return new PImageAWT(util.readPixelsToBufferedImage(gl, true));
|
186
186
|
}
|
187
187
|
|
188
188
|
|
@@ -637,6 +637,7 @@ public class PJOGL extends PGL {
|
|
637
637
|
setProperty(GLU.GLU_TESS_WINDING_RULE, rule);
|
638
638
|
}
|
639
639
|
|
640
|
+
@Override
|
640
641
|
public void setProperty(int property, int value) {
|
641
642
|
GLU.gluTessProperty(tess, property, value);
|
642
643
|
}
|
@@ -1997,10 +1998,10 @@ public class PJOGL extends PGL {
|
|
1997
1998
|
} else if (gl3 != null) {
|
1998
1999
|
gl3.glDrawBuffer(buf);
|
1999
2000
|
} else if (gl3es3 != null) {
|
2000
|
-
IntBuffer
|
2001
|
-
|
2002
|
-
|
2003
|
-
gl3es3.glDrawBuffers(1,
|
2001
|
+
IntBuffer localIntBuf = IntBuffer.allocate(1);
|
2002
|
+
localIntBuf.put(buf);
|
2003
|
+
localIntBuf.rewind();
|
2004
|
+
gl3es3.glDrawBuffers(1, localIntBuf);
|
2004
2005
|
} else {
|
2005
2006
|
throw new RuntimeException(String.format(MISSING_GLFUNC_ERROR, "glDrawBuffer()"));
|
2006
2007
|
}
|
@@ -988,7 +988,7 @@ public class PShader implements PConstants {
|
|
988
988
|
|
989
989
|
|
990
990
|
/**
|
991
|
-
* @return
|
991
|
+
* @return
|
992
992
|
*/
|
993
993
|
protected boolean compileFragmentShader() {
|
994
994
|
pgl.shaderSource(glFragment, PApplet.join(fragmentShaderSource, "\n"));
|
@@ -1137,11 +1137,6 @@ public class PShader implements PConstants {
|
|
1137
1137
|
specularLoc = getAttributeLoc("specular");
|
1138
1138
|
emissiveLoc = getAttributeLoc("emissive");
|
1139
1139
|
shininessLoc = getAttributeLoc("shininess");
|
1140
|
-
|
1141
|
-
directionLoc = getAttributeLoc("direction");
|
1142
|
-
|
1143
|
-
offsetLoc = getAttributeLoc("offset");
|
1144
|
-
|
1145
1140
|
directionLoc = getAttributeLoc("direction");
|
1146
1141
|
offsetLoc = getAttributeLoc("offset");
|
1147
1142
|
|
@@ -184,10 +184,10 @@ public class PSurfaceJOGL implements PSurface {
|
|
184
184
|
boolean hide = (sketch != null) &&
|
185
185
|
(PApplet.platform == PConstants.WINDOWS);
|
186
186
|
if (hide) setVisible(false);
|
187
|
-
|
187
|
+
|
188
188
|
ShimAWT.selectFolderImpl(prompt, callbackMethod, file,
|
189
189
|
callbackObject, null);
|
190
|
-
|
190
|
+
|
191
191
|
if (hide) setVisible(true);
|
192
192
|
});
|
193
193
|
}
|
@@ -273,7 +273,7 @@ public class PSurfaceJOGL implements PSurface {
|
|
273
273
|
case 2:
|
274
274
|
try {
|
275
275
|
profile = GLProfile.getGL2ES2();
|
276
|
-
|
276
|
+
|
277
277
|
// workaround for https://jogamp.org/bugzilla/show_bug.cgi?id=1347
|
278
278
|
if (!profile.isHardwareRasterizer()) {
|
279
279
|
GLProfile hardware = GLProfile.getMaxProgrammable(true);
|
@@ -281,7 +281,7 @@ public class PSurfaceJOGL implements PSurface {
|
|
281
281
|
profile = hardware;
|
282
282
|
}
|
283
283
|
}
|
284
|
-
|
284
|
+
|
285
285
|
} catch (GLException ex) {
|
286
286
|
profile = GLProfile.getMaxProgrammable(true);
|
287
287
|
} break;
|
@@ -657,7 +657,7 @@ public class PSurfaceJOGL implements PSurface {
|
|
657
657
|
stream = new FileInputStream(filename);
|
658
658
|
stream.close();
|
659
659
|
return filename;
|
660
|
-
|
660
|
+
|
661
661
|
} catch (IOException e1) { }
|
662
662
|
|
663
663
|
} catch (SecurityException se) { } // online, whups
|
@@ -1309,7 +1309,7 @@ public class PSurfaceJOGL implements PSurface {
|
|
1309
1309
|
String name = cursorNames.get(kind);
|
1310
1310
|
if (name != null) {
|
1311
1311
|
ImageIcon icon =
|
1312
|
-
new ImageIcon(getClass().getResource("cursors/" + name + ".png"));
|
1312
|
+
new ImageIcon(getClass().getResource("/cursors/" + name + ".png"));
|
1313
1313
|
PImage img = new PImageAWT(icon.getImage());
|
1314
1314
|
// Most cursors just use the center as the hotspot...
|
1315
1315
|
int x = img.width / 2;
|