propane 3.7.1-java → 3.11.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/.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;
|