picrate 0.7.0-java → 0.8.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.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/.mvn/wrapper/MavenWrapperDownloader.java +117 -0
  4. data/.mvn/wrapper/maven-wrapper.properties +2 -1
  5. data/.travis.yml +2 -5
  6. data/CHANGELOG.md +4 -0
  7. data/README.md +3 -3
  8. data/Rakefile +15 -27
  9. data/docs/_config.yml +1 -1
  10. data/docs/_posts/2018-05-11-arch-linux-arm.md +1 -1
  11. data/docs/_posts/2018-11-18-building-gem.md +1 -1
  12. data/lib/picrate/app.rb +1 -1
  13. data/lib/picrate/native_folder.rb +1 -1
  14. data/lib/picrate/version.rb +1 -1
  15. data/mvnw +127 -51
  16. data/mvnw.cmd +182 -0
  17. data/pom.rb +39 -30
  18. data/pom.xml +50 -37
  19. data/src/main/java/monkstone/ColorUtil.java +1 -1
  20. data/src/main/java/monkstone/core/LibraryProxy.java +0 -1
  21. data/src/main/java/monkstone/noise/SimplexNoise.java +1 -1
  22. data/src/main/java/monkstone/vecmath/GfxRender.java +87 -0
  23. data/src/main/java/monkstone/vecmath/ShapeRender.java +1 -1
  24. data/src/main/java/monkstone/vecmath/vec2/Vec2.java +1 -1
  25. data/src/main/java/processing/awt/PGraphicsJava2D.java +48 -50
  26. data/src/main/java/processing/awt/PShapeJava2D.java +10 -0
  27. data/src/main/java/processing/awt/PSurfaceAWT.java +315 -371
  28. data/src/main/java/processing/core/PApplet.java +15424 -15495
  29. data/src/main/java/processing/core/PConstants.java +4 -4
  30. data/src/main/java/processing/core/PFont.java +394 -369
  31. data/src/main/java/processing/core/PGraphics.java +11 -10
  32. data/src/main/java/processing/core/PImage.java +1389 -1435
  33. data/src/main/java/processing/core/PMatrix2D.java +297 -294
  34. data/src/main/java/processing/core/PMatrix3D.java +641 -594
  35. data/src/main/java/processing/core/PShape.java +1755 -1784
  36. data/src/main/java/processing/core/PShapeOBJ.java +145 -133
  37. data/src/main/java/processing/core/PShapeSVG.java +808 -801
  38. data/src/main/java/processing/core/PStyle.java +141 -149
  39. data/src/main/java/processing/core/PSurface.java +111 -117
  40. data/src/main/java/processing/core/PSurfaceNone.java +178 -187
  41. data/src/main/java/processing/javafx/PGraphicsFX2D.java +349 -346
  42. data/src/main/java/processing/opengl/FontTexture.java +40 -59
  43. data/src/main/java/processing/opengl/FrameBuffer.java +28 -18
  44. data/src/main/java/processing/opengl/LinePath.java +7 -7
  45. data/src/main/java/processing/opengl/LineStroker.java +6 -10
  46. data/src/main/java/processing/opengl/PGL.java +56 -44
  47. data/src/main/java/processing/opengl/PGraphicsOpenGL.java +909 -2338
  48. data/src/main/java/processing/opengl/PJOGL.java +1722 -1763
  49. data/src/main/java/processing/opengl/PShader.java +1308 -1192
  50. data/src/main/java/processing/opengl/PShapeOpenGL.java +487 -1811
  51. data/src/main/java/processing/opengl/PSurfaceJOGL.java +482 -497
  52. data/src/main/java/processing/opengl/Texture.java +99 -76
  53. data/src/main/java/processing/opengl/VertexBuffer.java +41 -43
  54. data/vendors/Rakefile +1 -1
  55. metadata +7 -4
@@ -37,7 +37,7 @@ public class ShapeRender implements JRender {
37
37
  */
38
38
  @Override
39
39
  public void curveVertex(double x, double y) {
40
- throw new UnsupportedOperationException("Not implemented for this renderer");
40
+ shape.curveVertex((float) x, (float) y);
41
41
  }
42
42
 
43
43
  /**
@@ -407,7 +407,7 @@ public class Vec2 extends RubyObject {
407
407
  @JRubyMethod(name = "set_mag")
408
408
 
409
409
  public IRubyObject set_mag(ThreadContext context, IRubyObject scalar, Block block) {
410
- double new_mag = (Double) scalar.toJava(Double.class);
410
+ double new_mag = scalar.toJava(Double.class);
411
411
  if (block.isGiven()) {
412
412
  if (!(boolean) block.yield(context, scalar).toJava(Boolean.class)) {
413
413
  return this;
@@ -1030,12 +1030,9 @@ public class PGraphicsJava2D extends PGraphics {
1030
1030
  /**
1031
1031
  * ( begin auto-generated from blendMode.xml )
1032
1032
  *
1033
- * This is a new reference entry for Processing 2.0. It will be updated shortly.
1034
- *
1035
- * ( end auto-generated )
1033
+ * This is a new reference entry for Processing 2.0.It will be updated shortly. ( end auto-generated )
1036
1034
  *
1037
1035
  * @webref Rendering
1038
- * @param mode the blending mode to use
1039
1036
  */
1040
1037
  @Override
1041
1038
  protected void blendModeImpl() {
@@ -1043,15 +1040,7 @@ public class PGraphicsJava2D extends PGraphics {
1043
1040
  g2.setComposite(defaultComposite);
1044
1041
 
1045
1042
  } else {
1046
- g2.setComposite(new Composite() {
1047
-
1048
- @Override
1049
- public CompositeContext createContext(ColorModel srcColorModel,
1050
- ColorModel dstColorModel,
1051
- RenderingHints hints) {
1052
- return new BlendingContext(blendMode);
1053
- }
1054
- });
1043
+ g2.setComposite((ColorModel srcColorModel, ColorModel dstColorModel, RenderingHints hints1) -> new BlendingContext(blendMode));
1055
1044
  }
1056
1045
  }
1057
1046
 
@@ -1060,14 +1049,16 @@ public class PGraphicsJava2D extends PGraphics {
1060
1049
  // demo and terrific writeup on blending modes in Java 2D.
1061
1050
  // http://www.curious-creature.org/2006/09/20/new-blendings-modes-for-java2d/
1062
1051
  private static final class BlendingContext implements CompositeContext {
1063
- private int mode;
1052
+ private final int mode;
1064
1053
 
1065
1054
  private BlendingContext(int mode) {
1066
1055
  this.mode = mode;
1067
1056
  }
1068
1057
 
1058
+ @Override
1069
1059
  public void dispose() { }
1070
1060
 
1061
+ @Override
1071
1062
  public void compose(Raster src, Raster dstIn, WritableRaster dstOut) {
1072
1063
  // not sure if this is really necessary, since we control our buffers
1073
1064
  if (src.getSampleModel().getDataType() != DataBuffer.TYPE_INT ||
@@ -1336,17 +1327,21 @@ public class PGraphicsJava2D extends PGraphics {
1336
1327
  int fillMode = Arc2D.PIE;
1337
1328
  int strokeMode = Arc2D.OPEN;
1338
1329
 
1339
- if (mode == OPEN) {
1340
- fillMode = Arc2D.OPEN;
1341
- //strokeMode = Arc2D.OPEN;
1342
-
1343
- } else if (mode == PIE) {
1344
- //fillMode = Arc2D.PIE;
1345
- strokeMode = Arc2D.PIE;
1346
-
1347
- } else if (mode == CHORD) {
1348
- fillMode = Arc2D.CHORD;
1349
- strokeMode = Arc2D.CHORD;
1330
+ switch (mode) {
1331
+ case OPEN:
1332
+ fillMode = Arc2D.OPEN;
1333
+ //strokeMode = Arc2D.OPEN;
1334
+ break;
1335
+ case PIE:
1336
+ //fillMode = Arc2D.PIE;
1337
+ strokeMode = Arc2D.PIE;
1338
+ break;
1339
+ case CHORD:
1340
+ fillMode = Arc2D.CHORD;
1341
+ strokeMode = Arc2D.CHORD;
1342
+ break;
1343
+ default:
1344
+ break;
1350
1345
  }
1351
1346
 
1352
1347
  if (fill) {
@@ -1792,38 +1787,41 @@ public class PGraphicsJava2D extends PGraphics {
1792
1787
  } else {
1793
1788
  int index = 0;
1794
1789
  for (int y = 0; y < source.pixelHeight; y++) {
1795
- if (source.format == RGB) {
1796
- int alpha = tintColor & 0xFF000000;
1797
- for (int x = 0; x < source.pixelWidth; x++) {
1798
- int argb1 = source.pixels[index++];
1799
- int r1 = (argb1 >> 16) & 0xff;
1800
- int g1 = (argb1 >> 8) & 0xff;
1801
- int b1 = (argb1) & 0xff;
1802
- tintedTemp[x] = alpha |
1790
+ switch (source.format) {
1791
+ case RGB:
1792
+ int alpha = tintColor & 0xFF000000;
1793
+ for (int x = 0; x < source.pixelWidth; x++) {
1794
+ int argb1 = source.pixels[index++];
1795
+ int r1 = (argb1 >> 16) & 0xff;
1796
+ int g1 = (argb1 >> 8) & 0xff;
1797
+ int b1 = (argb1) & 0xff;
1798
+ tintedTemp[x] = alpha |
1803
1799
  (((r2 * r1) & 0xff00) << 8) |
1804
1800
  ((g2 * g1) & 0xff00) |
1805
1801
  (((b2 * b1) & 0xff00) >> 8);
1806
- }
1807
- } else if (source.format == ARGB) {
1808
- for (int x = 0; x < source.pixelWidth; x++) {
1809
- int argb1 = source.pixels[index++];
1810
- int a1 = (argb1 >> 24) & 0xff;
1811
- int r1 = (argb1 >> 16) & 0xff;
1812
- int g1 = (argb1 >> 8) & 0xff;
1813
- int b1 = (argb1) & 0xff;
1814
- tintedTemp[x] =
1802
+ } break;
1803
+ case ARGB:
1804
+ for (int x = 0; x < source.pixelWidth; x++) {
1805
+ int argb1 = source.pixels[index++];
1806
+ int a1 = (argb1 >> 24) & 0xff;
1807
+ int r1 = (argb1 >> 16) & 0xff;
1808
+ int g1 = (argb1 >> 8) & 0xff;
1809
+ int b1 = (argb1) & 0xff;
1810
+ tintedTemp[x] =
1815
1811
  (((a2 * a1) & 0xff00) << 16) |
1816
1812
  (((r2 * r1) & 0xff00) << 8) |
1817
1813
  ((g2 * g1) & 0xff00) |
1818
1814
  (((b2 * b1) & 0xff00) >> 8);
1819
- }
1820
- } else if (source.format == ALPHA) {
1821
- int lower = tintColor & 0xFFFFFF;
1822
- for (int x = 0; x < source.pixelWidth; x++) {
1823
- int a1 = source.pixels[index++];
1824
- tintedTemp[x] =
1815
+ } break;
1816
+ case ALPHA:
1817
+ int lower = tintColor & 0xFFFFFF;
1818
+ for (int x = 0; x < source.pixelWidth; x++) {
1819
+ int a1 = source.pixels[index++];
1820
+ tintedTemp[x] =
1825
1821
  (((a2 * a1) & 0xff00) << 16) | lower;
1826
- }
1822
+ } break;
1823
+ default:
1824
+ break;
1827
1825
  }
1828
1826
  wr.setDataElements(0, y, source.pixelWidth, 1, tintedTemp);
1829
1827
  }
@@ -1960,7 +1958,7 @@ public class PGraphicsJava2D extends PGraphics {
1960
1958
 
1961
1959
  /**
1962
1960
  * Same as parent, but override for native version of the font.
1963
- * <p/>
1961
+ *
1964
1962
  * Called from textFontImpl and textSizeImpl, so the metrics
1965
1963
  * will get recorded properly.
1966
1964
  */
@@ -131,6 +131,7 @@ public class PShapeJava2D extends PShapeSVG {
131
131
  this.opacity = opacity;
132
132
  }
133
133
 
134
+ @Override
134
135
  public PaintContext createContext(ColorModel cm,
135
136
  Rectangle deviceBounds, Rectangle2D userBounds,
136
137
  AffineTransform xform, RenderingHints hints) {
@@ -140,6 +141,7 @@ public class PShapeJava2D extends PShapeSVG {
140
141
  (float) t2.getX(), (float) t2.getY());
141
142
  }
142
143
 
144
+ @Override
143
145
  public int getTransparency() {
144
146
  return TRANSLUCENT; // why not.. rather than checking each color
145
147
  }
@@ -155,10 +157,13 @@ public class PShapeJava2D extends PShapeSVG {
155
157
  this.ty2 = ty2;
156
158
  }
157
159
 
160
+ @Override
158
161
  public void dispose() { }
159
162
 
163
+ @Override
160
164
  public ColorModel getColorModel() { return ColorModel.getRGBdefault(); }
161
165
 
166
+ @Override
162
167
  public Raster getRaster(int x, int y, int w, int h) {
163
168
  WritableRaster raster =
164
169
  getColorModel().createCompatibleWritableRaster(w, h);
@@ -255,12 +260,14 @@ public class PShapeJava2D extends PShapeSVG {
255
260
  this.opacity = opacity;
256
261
  }
257
262
 
263
+ @Override
258
264
  public PaintContext createContext(ColorModel cm,
259
265
  Rectangle deviceBounds, Rectangle2D userBounds,
260
266
  AffineTransform xform, RenderingHints hints) {
261
267
  return new RadialGradientContext();
262
268
  }
263
269
 
270
+ @Override
264
271
  public int getTransparency() {
265
272
  return TRANSLUCENT;
266
273
  }
@@ -268,10 +275,13 @@ public class PShapeJava2D extends PShapeSVG {
268
275
  public class RadialGradientContext implements PaintContext {
269
276
  int ACCURACY = 5;
270
277
 
278
+ @Override
271
279
  public void dispose() {}
272
280
 
281
+ @Override
273
282
  public ColorModel getColorModel() { return ColorModel.getRGBdefault(); }
274
283
 
284
+ @Override
275
285
  public Raster getRaster(int x, int y, int w, int h) {
276
286
  WritableRaster raster =
277
287
  getColorModel().createCompatibleWritableRaster(w, h);
@@ -1,6 +1,6 @@
1
1
  /* -*- mode: java; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2
2
 
3
- /*
3
+ /*
4
4
  Part of the Processing project - http://processing.org
5
5
 
6
6
  Copyright (c) 2014-15 The Processing Foundation
@@ -18,8 +18,7 @@
18
18
  Public License along with this library; if not, write to the
19
19
  Free Software Foundation, Inc., 59 Temple Place, Suite 330,
20
20
  Boston, MA 02111-1307 USA
21
- */
22
-
21
+ */
23
22
  package processing.awt;
24
23
 
25
24
  import java.awt.Canvas;
@@ -42,7 +41,6 @@ import java.awt.event.*;
42
41
  import java.awt.geom.Rectangle2D;
43
42
  import java.awt.image.*;
44
43
  import java.lang.management.ManagementFactory;
45
- import java.lang.reflect.Method;
46
44
  import java.net.URL;
47
45
  import java.util.ArrayList;
48
46
  import java.util.List;
@@ -62,11 +60,11 @@ import processing.event.MouseEvent;
62
60
  * @author Martin Prout
63
61
  */
64
62
  public class PSurfaceAWT extends PSurfaceNone {
63
+
65
64
  GraphicsDevice displayDevice;
66
65
 
67
66
  // used for canvas to determine whether resizable or not
68
67
  // boolean resizable; // default is false
69
-
70
68
  // Internally, we know it's always a JFrame (not just a Frame)
71
69
  // JFrame frame;
72
70
  // Trying Frame again with a11 to see if this avoids some Swing nastiness.
@@ -84,22 +82,20 @@ public class PSurfaceAWT extends PSurfaceNone {
84
82
 
85
83
  // 3.0a5 didn't use strategy, and active was shut off during init() w/ retina
86
84
  // boolean useStrategy = true;
87
-
88
85
  Canvas canvas;
89
86
  // Component canvas;
90
87
 
91
88
  // PGraphics graphics; // moved to PSurfaceNone
92
-
93
89
  int sketchWidth;
94
90
  int sketchHeight;
95
91
 
96
92
  int windowScaleFactor;
97
93
 
98
- /**
99
- *
100
- * @param graphics
101
- */
102
- public PSurfaceAWT(PGraphics graphics) {
94
+ /**
95
+ *
96
+ * @param graphics
97
+ */
98
+ public PSurfaceAWT(PGraphics graphics) {
103
99
  //this.graphics = graphics;
104
100
  super(graphics);
105
101
 
@@ -124,7 +120,7 @@ public class PSurfaceAWT extends PSurfaceNone {
124
120
  // flicker--pushing pixels out before the screen has finished rendering.
125
121
  // useStrategy = false;
126
122
  }
127
- */
123
+ */
128
124
  canvas = new SmoothCanvas();
129
125
  // if (useStrategy) {
130
126
  //canvas.setIgnoreRepaint(true);
@@ -140,8 +136,8 @@ public class PSurfaceAWT extends PSurfaceNone {
140
136
  // make sure this is a real resize event, not just initial setup
141
137
  // https://github.com/processing/processing/issues/3310
142
138
  Dimension canvasSize = canvas.getSize();
143
- if (canvasSize.width != sketch.sketchWidth() ||
144
- canvasSize.height != sketch.sketchHeight()) {
139
+ if (canvasSize.width != sketch.sketchWidth()
140
+ || canvasSize.height != sketch.sketchHeight()) {
145
141
  sketch.redraw();
146
142
  }
147
143
  }
@@ -150,7 +146,6 @@ public class PSurfaceAWT extends PSurfaceNone {
150
146
  addListeners();
151
147
  }
152
148
 
153
-
154
149
  // /**
155
150
  // * Handle grabbing the focus on startup. Other renderers can override this
156
151
  // * if handling needs to be different. For the AWT, the request is invoked
@@ -185,62 +180,56 @@ public class PSurfaceAWT extends PSurfaceNone {
185
180
  // }
186
181
  // });
187
182
  // }
188
-
189
-
190
183
  // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
191
-
192
- /**
193
- *
194
- */
195
-
196
-
184
+ /**
185
+ *
186
+ */
197
187
  public class SmoothCanvas extends Canvas {
188
+
198
189
  private Dimension oldSize = new Dimension(0, 0);
199
190
  private Dimension newSize = new Dimension(0, 0);
200
191
 
201
-
202
192
  // Turns out getParent() returns a JPanel on a JFrame. Yech.
203
-
204
- /**
205
- *
206
- * @return
207
- */
193
+ /**
194
+ *
195
+ * @return
196
+ */
208
197
  public Frame getFrame() {
209
198
  return frame;
210
199
  }
211
200
 
212
- /**
213
- *
214
- * @return
215
- */
216
- @Override
201
+ /**
202
+ *
203
+ * @return
204
+ */
205
+ @Override
217
206
  public Dimension getPreferredSize() {
218
207
  return new Dimension(sketchWidth, sketchHeight);
219
208
  }
220
209
 
221
- /**
222
- *
223
- * @return
224
- */
225
- @Override
210
+ /**
211
+ *
212
+ * @return
213
+ */
214
+ @Override
226
215
  public Dimension getMinimumSize() {
227
216
  return getPreferredSize();
228
217
  }
229
218
 
230
- /**
231
- *
232
- * @return
233
- */
234
- @Override
219
+ /**
220
+ *
221
+ * @return
222
+ */
223
+ @Override
235
224
  public Dimension getMaximumSize() {
236
225
  //return resizable ? super.getMaximumSize() : getPreferredSize();
237
226
  return frame.isResizable() ? super.getMaximumSize() : getPreferredSize();
238
227
  }
239
228
 
240
- /**
241
- *
242
- */
243
- @Override
229
+ /**
230
+ *
231
+ */
232
+ @Override
244
233
  public void validate() {
245
234
  super.validate();
246
235
  newSize.width = getWidth();
@@ -261,21 +250,21 @@ public class PSurfaceAWT extends PSurfaceNone {
261
250
  }
262
251
  }
263
252
 
264
- /**
265
- *
266
- * @param g
267
- */
268
- @Override
253
+ /**
254
+ *
255
+ * @param g
256
+ */
257
+ @Override
269
258
  public void update(Graphics g) {
270
259
  // System.out.println("updating");
271
260
  paint(g);
272
261
  }
273
262
 
274
- /**
275
- *
276
- * @param screen
277
- */
278
- @Override
263
+ /**
264
+ *
265
+ * @param screen
266
+ */
267
+ @Override
279
268
  public void paint(Graphics screen) {
280
269
  // System.out.println("painting");
281
270
  // if (useStrategy) {
@@ -285,7 +274,7 @@ public class PSurfaceAWT extends PSurfaceNone {
285
274
  System.out.println("drawing to screen " + canvas);
286
275
  screen.drawImage(graphics.image, 0, 0, sketchWidth, sketchHeight, null);
287
276
  }
288
- */
277
+ */
289
278
 
290
279
  // } else {
291
280
  //// new Exception("painting").printStackTrace(System.out);
@@ -302,7 +291,7 @@ public class PSurfaceAWT extends PSurfaceNone {
302
291
  }
303
292
  }
304
293
 
305
- /*
294
+ /*
306
295
  @Override
307
296
  public void addNotify() {
308
297
  // System.out.println("adding notify");
@@ -310,14 +299,13 @@ public class PSurfaceAWT extends PSurfaceNone {
310
299
  // prior to Java 7 on OS X, this no longer works [121222]
311
300
  // createBufferStrategy(2);
312
301
  }
313
- */
314
-
315
- /**
316
- *
317
- */
318
- synchronized protected void render() {
319
- if (canvas.isDisplayable() &&
320
- graphics.image != null) {
302
+ */
303
+ /**
304
+ *
305
+ */
306
+ synchronized protected void render() {
307
+ if (canvas.isDisplayable()
308
+ && graphics.image != null) {
321
309
  if (canvas.getBufferStrategy() == null) {
322
310
  canvas.createBufferStrategy(2);
323
311
  }
@@ -387,15 +375,12 @@ public class PSurfaceAWT extends PSurfaceNone {
387
375
  }
388
376
  }
389
377
  }
390
- */
391
-
392
-
378
+ */
393
379
  // what needs to happen here?
394
-
395
- /**
396
- *
397
- * @param sketch
398
- */
380
+ /**
381
+ *
382
+ * @param sketch
383
+ */
399
384
  @Override
400
385
  public void initOffscreen(PApplet sketch) {
401
386
  this.sketch = sketch;
@@ -408,9 +393,9 @@ public class PSurfaceAWT extends PSurfaceNone {
408
393
  // but don't show it
409
394
  return dummy;
410
395
  }
411
- */
396
+ */
412
397
 
413
- /*
398
+ /*
414
399
  @Override
415
400
  public Component initComponent(PApplet sketch) {
416
401
  this.sketch = sketch;
@@ -421,19 +406,18 @@ public class PSurfaceAWT extends PSurfaceNone {
421
406
 
422
407
  return canvas;
423
408
  }
424
- */
425
-
426
- /**
427
- *
428
- * @param sketch
429
- */
430
- @Override
409
+ */
410
+ /**
411
+ *
412
+ * @param sketch
413
+ */
414
+ @Override
431
415
  public void initFrame(final PApplet sketch) {/*, int backgroundColor,
432
416
  int deviceIndex, boolean fullScreen, boolean spanDisplays) {*/
433
417
  this.sketch = sketch;
434
418
 
435
- GraphicsEnvironment environment =
436
- GraphicsEnvironment.getLocalGraphicsEnvironment();
419
+ GraphicsEnvironment environment
420
+ = GraphicsEnvironment.getLocalGraphicsEnvironment();
437
421
 
438
422
  int displayNum = sketch.sketchDisplay();
439
423
  // System.out.println("display from sketch is " + displayNum);
@@ -442,10 +426,10 @@ public class PSurfaceAWT extends PSurfaceNone {
442
426
  if (displayNum <= devices.length) {
443
427
  displayDevice = devices[displayNum - 1];
444
428
  } else {
445
- System.err.format("Display %d does not exist, " +
446
- "using the default display instead.%n", displayNum);
429
+ System.err.format("Display %d does not exist, "
430
+ + "using the default display instead.%n", displayNum);
447
431
  for (int i = 0; i < devices.length; i++) {
448
- System.err.format("Display %d is %s%n", (i+1), devices[i]);
432
+ System.err.format("Display %d is %s%n", (i + 1), devices[i]);
449
433
  }
450
434
  }
451
435
  }
@@ -457,8 +441,8 @@ public class PSurfaceAWT extends PSurfaceNone {
457
441
  // because pack() will cause the bounds to go to zero.
458
442
  // http://dev.processing.org/bugs/show_bug.cgi?id=923
459
443
  boolean spanDisplays = sketch.sketchDisplay() == PConstants.SPAN;
460
- screenRect = spanDisplays ? getDisplaySpan() :
461
- displayDevice.getDefaultConfiguration().getBounds();
444
+ screenRect = spanDisplays ? getDisplaySpan()
445
+ : displayDevice.getDefaultConfiguration().getBounds();
462
446
  // DisplayMode doesn't work here, because we can't get the upper-left
463
447
  // corner of the display, which is important for multi-display setups.
464
448
 
@@ -467,8 +451,8 @@ public class PSurfaceAWT extends PSurfaceNone {
467
451
  sketch.displayWidth = screenRect.width;
468
452
  sketch.displayHeight = screenRect.height;
469
453
 
470
- windowScaleFactor = PApplet.platform == PConstants.MACOSX ?
471
- 1 : sketch.pixelDensity;
454
+ windowScaleFactor = PApplet.platform == PConstants.MACOSX
455
+ ? 1 : sketch.pixelDensity;
472
456
 
473
457
  sketchWidth = sketch.sketchWidth() * windowScaleFactor;
474
458
  sketchHeight = sketch.sketchHeight() * windowScaleFactor;
@@ -486,7 +470,7 @@ public class PSurfaceAWT extends PSurfaceNone {
486
470
  fullScreen = true;
487
471
  sketch.fullScreen(); // won't change the renderer
488
472
  }
489
- */
473
+ */
490
474
 
491
475
  if (fullScreen || spanDisplays) {
492
476
  sketchWidth = screenRect.width;
@@ -526,7 +510,6 @@ public class PSurfaceAWT extends PSurfaceNone {
526
510
  // and launches the Thread that will kick off setup().
527
511
  // http://dev.processing.org/bugs/show_bug.cgi?id=891
528
512
  // http://dev.processing.org/bugs/show_bug.cgi?id=908
529
-
530
513
  frame.add(canvas);
531
514
  setSize(sketchWidth / windowScaleFactor, sketchHeight / windowScaleFactor);
532
515
 
@@ -553,7 +536,7 @@ public class PSurfaceAWT extends PSurfaceNone {
553
536
  // will be set visible in placeWindow() [3.0a10]
554
537
  //frame.setVisible(true); // re-add native resources
555
538
  }
556
- */
539
+ */
557
540
  frame.setLayout(null);
558
541
  //frame.add(applet);
559
542
 
@@ -562,9 +545,7 @@ public class PSurfaceAWT extends PSurfaceNone {
562
545
  // spanScreens was in use.
563
546
  // pg = sketch.makePrimaryGraphics(sketchWidth, sketchHeight);
564
547
  // pg = sketch.makePrimaryGraphics();
565
-
566
548
  // resize sketch to sketchWidth/sketchHeight here
567
-
568
549
  if (fullScreen) {
569
550
  frame.invalidate();
570
551
  } else {
@@ -573,7 +554,6 @@ public class PSurfaceAWT extends PSurfaceNone {
573
554
 
574
555
  // insufficient, places the 100x100 sketches offset strangely
575
556
  //frame.validate();
576
-
577
557
  // disabling resize has to happen after pack() to avoid apparent Apple bug
578
558
  // http://code.google.com/p/processing/issues/detail?id=467
579
559
  frame.setResizable(false);
@@ -588,36 +568,37 @@ public class PSurfaceAWT extends PSurfaceNone {
588
568
  // sketch.setFrame(frame);
589
569
  }
590
570
 
591
-
592
571
  @Override
593
572
  public Object getNative() {
594
573
  return canvas;
595
574
  }
596
575
 
597
-
598
576
  // public Toolkit getToolkit() {
599
577
  // return canvas.getToolkit();
600
578
  // }
601
-
602
-
603
- /** Set the window (and dock, or whatever necessary) title.
604
- * @param title */
579
+ /**
580
+ * Set the window (and dock, or whatever necessary) title.
581
+ *
582
+ * @param title
583
+ */
605
584
  @Override
606
585
  public void setTitle(String title) {
607
586
  frame.setTitle(title);
608
587
  // Workaround for apparent Java bug on OS X?
609
588
  // https://github.com/processing/processing/issues/3472
610
- if (cursorVisible &&
611
- (PApplet.platform == PConstants.MACOSX) &&
612
- (cursorType != PConstants.ARROW)) {
589
+ if (cursorVisible
590
+ && (PApplet.platform == PConstants.MACOSX)
591
+ && (cursorType != PConstants.ARROW)) {
613
592
  hideCursor();
614
593
  showCursor();
615
594
  }
616
595
  }
617
596
 
618
-
619
- /** Set true if we want to resize things (default is not resizable)
620
- * @param resizable */
597
+ /**
598
+ * Set true if we want to resize things (default is not resizable)
599
+ *
600
+ * @param resizable
601
+ */
621
602
  @Override
622
603
  public void setResizable(boolean resizable) {
623
604
  //this.resizable = resizable; // really only used for canvas
@@ -627,11 +608,11 @@ public class PSurfaceAWT extends PSurfaceNone {
627
608
  }
628
609
  }
629
610
 
630
- /**
631
- *
632
- * @param image
633
- */
634
- @Override
611
+ /**
612
+ *
613
+ * @param image
614
+ */
615
+ @Override
635
616
  public void setIcon(PImage image) {
636
617
  Image awtImage = (Image) image.getNative();
637
618
  frame.setIconImage(awtImage);
@@ -652,51 +633,50 @@ public class PSurfaceAWT extends PSurfaceNone {
652
633
  // }
653
634
  }
654
635
 
655
-
656
636
  @Override
657
637
  public void setAlwaysOnTop(boolean always) {
658
638
  frame.setAlwaysOnTop(always);
659
639
  }
660
640
 
661
- /**
662
- *
663
- * @param x
664
- * @param y
665
- */
666
- @Override
641
+ /**
642
+ *
643
+ * @param x
644
+ * @param y
645
+ */
646
+ @Override
667
647
  public void setLocation(int x, int y) {
668
648
  frame.setLocation(x, y);
669
649
  }
670
650
 
671
-
672
651
  List<Image> iconImages;
673
652
 
674
- /**
675
- *
676
- * @param frame
677
- */
678
- protected void setProcessingIcon(Frame frame) {
653
+ /**
654
+ *
655
+ * @param frame
656
+ */
657
+ protected void setProcessingIcon(Frame frame) {
679
658
  // On OS X, this only affects what shows up in the dock when minimized.
680
659
  // So replacing it is actually a step backwards. Brilliant.
681
660
  // if (PApplet.platform != PConstants.MACOSX) {
682
- //Image image = Toolkit.getDefaultToolkit().createImage(ICON_IMAGE);
683
- //frame.setIconImage(image);
684
- try {
685
- if (iconImages == null) {
686
- iconImages = new ArrayList<Image>();
687
- final int[] sizes = { 16, 32, 48, 64, 128, 256, 512 };
688
-
689
- for (int sz : sizes) {
690
- //URL url = getClass().getResource("/icon/icon-" + sz + ".png");
691
- URL url = PApplet.class.getResource("/icon/icon-" + sz + ".png");
692
- Image image = Toolkit.getDefaultToolkit().getImage(url);
693
- iconImages.add(image);
694
- //iconImages.add(Toolkit.getLibImage("icons/pde-" + sz + ".png", frame));
695
- }
661
+ //Image image = Toolkit.getDefaultToolkit().createImage(ICON_IMAGE);
662
+ //frame.setIconImage(image);
663
+ try {
664
+ if (iconImages == null) {
665
+ iconImages = new ArrayList<>();
666
+ final int[] sizes = {16, 32, 48, 64, 128, 256, 512};
667
+
668
+ for (int sz : sizes) {
669
+ //URL url = getClass().getResource("/icon/icon-" + sz + ".png");
670
+ URL url = PApplet.class.getResource("/icon/icon-" + sz + ".png");
671
+ Image image = Toolkit.getDefaultToolkit().getImage(url);
672
+ iconImages.add(image);
673
+ //iconImages.add(Toolkit.getLibImage("icons/pde-" + sz + ".png", frame));
696
674
  }
697
- frame.setIconImages(iconImages);
675
+ }
676
+ frame.setIconImages(iconImages);
698
677
 
699
- } catch (Exception e) { } // harmless; keep this to ourselves
678
+ } catch (Exception e) {
679
+ } // harmless; keep this to ourselves
700
680
 
701
681
  // } else { // handle OS X differently
702
682
  // if (!dockIconSpecified()) { // don't override existing -Xdock param
@@ -719,15 +699,14 @@ public class PSurfaceAWT extends PSurfaceNone {
719
699
  // }
720
700
  }
721
701
 
722
-
723
702
  /**
724
703
  * @return true if -Xdock:icon was specified on the command line
725
704
  */
726
705
  private boolean dockIconSpecified() {
727
706
  // TODO This is incomplete... Haven't yet found a way to figure out if
728
707
  // the app has an icns file specified already. Help?
729
- List<String> jvmArgs =
730
- ManagementFactory.getRuntimeMXBean().getInputArguments();
708
+ List<String> jvmArgs
709
+ = ManagementFactory.getRuntimeMXBean().getInputArguments();
731
710
  for (String arg : jvmArgs) {
732
711
  if (arg.startsWith("-Xdock:icon")) {
733
712
  return true; // dock image already set
@@ -736,7 +715,6 @@ public class PSurfaceAWT extends PSurfaceNone {
736
715
  return false;
737
716
  }
738
717
 
739
-
740
718
  @Override
741
719
  public void setVisible(boolean visible) {
742
720
  frame.setVisible(visible);
@@ -762,16 +740,14 @@ public class PSurfaceAWT extends PSurfaceNone {
762
740
  insets.top + insets.bottom);
763
741
  }
764
742
  }
765
- */
743
+ */
766
744
  }
767
745
 
768
-
769
746
  //public void placeFullScreen(boolean hideStop) {
770
-
771
- /**
772
- *
773
- * @param stopColor
774
- */
747
+ /**
748
+ *
749
+ * @param stopColor
750
+ */
775
751
  @Override
776
752
  public void placePresent(int stopColor) {
777
753
  setFullFrame();
@@ -779,14 +755,13 @@ public class PSurfaceAWT extends PSurfaceNone {
779
755
  // After the pack(), the screen bounds are gonna be 0s
780
756
  // frame.setBounds(screenRect); // already called in setFullFrame()
781
757
  canvas.setBounds((screenRect.width - sketchWidth) / 2,
782
- (screenRect.height - sketchHeight) / 2,
783
- sketchWidth, sketchHeight);
758
+ (screenRect.height - sketchHeight) / 2,
759
+ sketchWidth, sketchHeight);
784
760
 
785
761
  // if (PApplet.platform == PConstants.MACOSX) {
786
762
  // macosxFullScreenEnable(frame);
787
763
  // macosxFullScreenToggle(frame);
788
764
  // }
789
-
790
765
  if (stopColor != 0) {
791
766
  Label label = new Label("stop");
792
767
  label.setForeground(new Color(stopColor, false));
@@ -856,22 +831,21 @@ public class PSurfaceAWT extends PSurfaceNone {
856
831
  frame.setVisible(true);
857
832
  }
858
833
  }
859
- */
860
-
861
-
834
+ */
862
835
  private void setCanvasSize() {
863
836
  // System.out.format("setting canvas size %d %d%n", sketchWidth, sketchHeight);
864
837
  // new Exception().printStackTrace(System.out);
865
838
  int contentW = Math.max(sketchWidth, MIN_WINDOW_WIDTH);
866
839
  int contentH = Math.max(sketchHeight, MIN_WINDOW_HEIGHT);
867
840
 
868
- canvas.setBounds((contentW - sketchWidth)/2,
869
- (contentH - sketchHeight)/2,
870
- sketchWidth, sketchHeight);
841
+ canvas.setBounds((contentW - sketchWidth) / 2,
842
+ (contentH - sketchHeight) / 2,
843
+ sketchWidth, sketchHeight);
871
844
  }
872
845
 
873
-
874
- /** Resize frame for these sketch (canvas) dimensions. */
846
+ /**
847
+ * Resize frame for these sketch (canvas) dimensions.
848
+ */
875
849
  private Dimension setFrameSize() { //int sketchWidth, int sketchHeight) {
876
850
  // https://github.com/processing/processing/pull/3162
877
851
  frame.addNotify(); // using instead of show() to add the peer [fry]
@@ -879,24 +853,24 @@ public class PSurfaceAWT extends PSurfaceNone {
879
853
  // System.out.format("setting frame size %d %d %n", sketchWidth, sketchHeight);
880
854
  // new Exception().printStackTrace(System.out);
881
855
  currentInsets = frame.getInsets();
882
- int windowW = Math.max(sketchWidth, MIN_WINDOW_WIDTH) +
883
- currentInsets.left + currentInsets.right;
884
- int windowH = Math.max(sketchHeight, MIN_WINDOW_HEIGHT) +
885
- currentInsets.top + currentInsets.bottom;
856
+ int windowW = Math.max(sketchWidth, MIN_WINDOW_WIDTH)
857
+ + currentInsets.left + currentInsets.right;
858
+ int windowH = Math.max(sketchHeight, MIN_WINDOW_HEIGHT)
859
+ + currentInsets.top + currentInsets.bottom;
886
860
  frame.setSize(windowW, windowH);
887
861
  return new Dimension(windowW, windowH);
888
862
  }
889
863
 
890
-
891
864
  private void setFrameCentered() {
892
865
  // Can't use frame.setLocationRelativeTo(null) because it sends the
893
866
  // frame to the main display, which undermines the --display setting.
894
867
  frame.setLocation(screenRect.x + (screenRect.width - sketchWidth) / 2,
895
- screenRect.y + (screenRect.height - sketchHeight) / 2);
868
+ screenRect.y + (screenRect.height - sketchHeight) / 2);
896
869
  }
897
870
 
898
-
899
- /** Hide the menu bar, make the Frame undecorated, set it to screenRect. */
871
+ /**
872
+ * Hide the menu bar, make the Frame undecorated, set it to screenRect.
873
+ */
900
874
  private void setFullFrame() {
901
875
  // Called here because the graphics device is needed before we can
902
876
  // determine whether the sketch wants size(displayWidth, displayHeight),
@@ -906,7 +880,6 @@ public class PSurfaceAWT extends PSurfaceNone {
906
880
  // Tried to use this to fix the 'present' mode issue.
907
881
  // Did not help, and the screenRect setup seems to work fine.
908
882
  //frame.setExtendedState(Frame.MAXIMIZED_BOTH);
909
-
910
883
  // https://github.com/processing/processing/pull/3162
911
884
  //frame.dispose(); // release native resources, allows setUndecorated()
912
885
  frame.removeNotify();
@@ -919,12 +892,12 @@ public class PSurfaceAWT extends PSurfaceNone {
919
892
  //frame.setVisible(true); // re-add native resources
920
893
  }
921
894
 
922
- /**
923
- *
924
- * @param location
925
- * @param editorLocation
926
- */
927
- @Override
895
+ /**
896
+ *
897
+ * @param location
898
+ * @param editorLocation
899
+ */
900
+ @Override
928
901
  public void placeWindow(int[] location, int[] editorLocation) {
929
902
  //Dimension window = setFrameSize(sketchWidth, sketchHeight);
930
903
  Dimension window = setFrameSize(); //sketchWidth, sketchHeight);
@@ -967,7 +940,7 @@ public class PSurfaceAWT extends PSurfaceNone {
967
940
  locationX = (sketch.displayWidth - window.width) / 2;
968
941
  locationY = (sketch.displayHeight - window.height) / 2;
969
942
  }
970
- */
943
+ */
971
944
  frame.setLocation(locationX, locationY);
972
945
  }
973
946
  } else { // just center on screen
@@ -981,9 +954,9 @@ public class PSurfaceAWT extends PSurfaceNone {
981
954
  }
982
955
  }
983
956
 
984
- canvas.setBounds((contentW - sketchWidth)/2,
985
- (contentH - sketchHeight)/2,
986
- sketchWidth, sketchHeight);
957
+ canvas.setBounds((contentW - sketchWidth) / 2,
958
+ (contentH - sketchHeight) / 2,
959
+ sketchWidth, sketchHeight);
987
960
 
988
961
  // handle frame resizing events
989
962
  setupFrameResizeListener();
@@ -999,20 +972,18 @@ public class PSurfaceAWT extends PSurfaceNone {
999
972
  // canvas.requestFocus();
1000
973
  // }
1001
974
  }
1002
- */
975
+ */
1003
976
  // if (sketch.getGraphics().displayable()) {
1004
977
  // setVisible(true);
1005
978
  // }
1006
979
  }
1007
980
 
1008
-
1009
981
  // needs to resize the frame, which will resize the canvas, and so on...
1010
-
1011
- /**
1012
- *
1013
- * @param wide
1014
- * @param high
1015
- */
982
+ /**
983
+ *
984
+ * @param wide
985
+ * @param high
986
+ */
1016
987
  @Override
1017
988
  public void setSize(int wide, int high) {
1018
989
  // When the surface is set to resizable via surface.setResizable(true),
@@ -1029,10 +1000,9 @@ public class PSurfaceAWT extends PSurfaceNone {
1029
1000
  // //System.out.format("frame visible %b, setSize(%d, %d) %n", frame.isVisible(), wide, high);
1030
1001
  // new Exception(String.format("setSize(%d, %d)", wide, high)).printStackTrace(System.out);
1031
1002
  // }
1032
-
1033
1003
  //if (wide == sketchWidth && high == sketchHeight) { // doesn't work on launch
1034
- if (wide == sketch.width && high == sketch.height &&
1035
- (frame == null || currentInsets.equals(frame.getInsets()))) {
1004
+ if (wide == sketch.width && high == sketch.height
1005
+ && (frame == null || currentInsets.equals(frame.getInsets()))) {
1036
1006
  // if (PApplet.DEBUG) {
1037
1007
  // new Exception("w/h unchanged " + wide + " " + high).printStackTrace(System.out);
1038
1008
  // }
@@ -1053,7 +1023,6 @@ public class PSurfaceAWT extends PSurfaceNone {
1053
1023
  // }
1054
1024
 
1055
1025
  //initImage(graphics, wide, high);
1056
-
1057
1026
  //throw new RuntimeException("implement me, see readme.md");
1058
1027
  sketch.setSize(wide, high);
1059
1028
  // sketch.width = wide;
@@ -1064,7 +1033,6 @@ public class PSurfaceAWT extends PSurfaceNone {
1064
1033
  // System.out.println("out of setSize()");
1065
1034
  }
1066
1035
 
1067
-
1068
1036
  //public void initImage(PGraphics gr, int wide, int high) {
1069
1037
  /*
1070
1038
  @Override
@@ -1083,20 +1051,14 @@ public class PSurfaceAWT extends PSurfaceNone {
1083
1051
  int high = graphics.height * graphics.pixelFactor;
1084
1052
  graphics.image = gc.createCompatibleImage(wide, high);
1085
1053
  }
1086
- */
1087
-
1088
-
1054
+ */
1089
1055
  // @Override
1090
1056
  // public Component getComponent() {
1091
1057
  // return canvas;
1092
1058
  // }
1093
-
1094
-
1095
1059
  // @Override
1096
1060
  // public void setSmooth(int level) {
1097
1061
  // }
1098
-
1099
-
1100
1062
  /*
1101
1063
  private boolean checkRetina() {
1102
1064
  if (PApplet.platform == PConstants.MACOSX) {
@@ -1123,14 +1085,14 @@ public class PSurfaceAWT extends PSurfaceNone {
1123
1085
  }
1124
1086
  return false;
1125
1087
  }
1126
- */
1127
-
1128
-
1129
- /** Get the bounds rectangle for all displays. */
1088
+ */
1089
+ /**
1090
+ * Get the bounds rectangle for all displays.
1091
+ */
1130
1092
  static Rectangle getDisplaySpan() {
1131
1093
  Rectangle bounds = new Rectangle();
1132
- GraphicsEnvironment environment =
1133
- GraphicsEnvironment.getLocalGraphicsEnvironment();
1094
+ GraphicsEnvironment environment
1095
+ = GraphicsEnvironment.getLocalGraphicsEnvironment();
1134
1096
  for (GraphicsDevice device : environment.getScreenDevices()) {
1135
1097
  for (GraphicsConfiguration config : device.getConfigurations()) {
1136
1098
  Rectangle2D.union(bounds, config.getBounds(), bounds);
@@ -1154,15 +1116,13 @@ public class PSurfaceAWT extends PSurfaceNone {
1154
1116
  }
1155
1117
  }
1156
1118
  }
1157
- */
1158
-
1159
-
1119
+ */
1160
1120
  /**
1161
1121
  * Set this sketch to communicate its state back to the PDE.
1162
- * <p/>
1163
- * This uses the stderr stream to write positions of the window
1164
- * (so that it will be saved by the PDE for the next run) and
1165
- * notify on quit. See more notes in the Worker class.
1122
+ *
1123
+ * This uses the stderr stream to write positions of the window (so that it
1124
+ * will be saved by the PDE for the next run) and notify on quit. See more
1125
+ * notes in the Worker class.
1166
1126
  */
1167
1127
  @Override
1168
1128
  public void setupExternalMessages() {
@@ -1175,33 +1135,26 @@ public class PSurfaceAWT extends PSurfaceNone {
1175
1135
  });
1176
1136
  }
1177
1137
 
1178
-
1179
1138
  /**
1180
- * Set up a listener that will fire proper component resize events
1181
- * in cases where frame.setResizable(true) is called.
1139
+ * Set up a listener that will fire proper component resize events in cases
1140
+ * where frame.setResizable(true) is called.
1182
1141
  */
1183
1142
  private void setupFrameResizeListener() {
1184
- frame.addWindowStateListener(new WindowStateListener() {
1185
- @Override
1186
- // Detecting when the frame is resized in order to handle the frame
1187
- // maximization bug in OSX:
1188
- // http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8036935
1189
- public void windowStateChanged(WindowEvent e) {
1190
- // This seems to be firing when dragging the window on OS X
1143
+ frame.addWindowStateListener((WindowEvent e) -> {
1144
+ // This seems to be firing when dragging the window on OS X
1145
+ // https://github.com/processing/processing/issues/3092
1146
+ if (Frame.MAXIMIZED_BOTH == e.getNewState()) {
1147
+ // Supposedly, sending the frame to back and then front is a
1148
+ // workaround for this bug:
1149
+ // http://stackoverflow.com/a/23897602
1150
+ // but is not working for me...
1151
+ //frame.toBack();
1152
+ //frame.toFront();
1153
+ // Packing the frame works, but that causes the window to collapse
1154
+ // on OS X when the window is dragged. Changing to addNotify() for
1191
1155
  // https://github.com/processing/processing/issues/3092
1192
- if (Frame.MAXIMIZED_BOTH == e.getNewState()) {
1193
- // Supposedly, sending the frame to back and then front is a
1194
- // workaround for this bug:
1195
- // http://stackoverflow.com/a/23897602
1196
- // but is not working for me...
1197
- //frame.toBack();
1198
- //frame.toFront();
1199
- // Packing the frame works, but that causes the window to collapse
1200
- // on OS X when the window is dragged. Changing to addNotify() for
1201
- // https://github.com/processing/processing/issues/3092
1202
- //frame.pack();
1203
- frame.addNotify();
1204
- }
1156
+ //frame.pack();
1157
+ frame.addNotify();
1205
1158
  }
1206
1159
  });
1207
1160
 
@@ -1239,7 +1192,6 @@ public class PSurfaceAWT extends PSurfaceNone {
1239
1192
  });
1240
1193
  }
1241
1194
 
1242
-
1243
1195
  // /**
1244
1196
  // * (No longer in use) Use reflection to call
1245
1197
  // * <code>com.apple.eawt.FullScreenUtilities.setWindowCanFullScreen(window, true);</code>
@@ -1280,11 +1232,7 @@ public class PSurfaceAWT extends PSurfaceNone {
1280
1232
  // e.printStackTrace();
1281
1233
  // }
1282
1234
  // }
1283
-
1284
-
1285
1235
  //////////////////////////////////////////////////////////////
1286
-
1287
-
1288
1236
  /*
1289
1237
  // disabling for now; requires Java 1.7 and "precise" semantics are odd...
1290
1238
  // returns 0.1 for tick-by-tick scrolling on OS X, but it's not a matter of
@@ -1298,14 +1246,13 @@ public class PSurfaceAWT extends PSurfaceNone {
1298
1246
  // ignored, the method will just be set to null
1299
1247
  }
1300
1248
  }
1301
- */
1302
-
1303
-
1249
+ */
1304
1250
  /**
1305
- * Figure out how to process a mouse event. When loop() has been
1306
- * called, the events will be queued up until drawing is complete.
1307
- * If noLoop() has been called, then events will happen immediately.
1308
- * @param nativeEvent
1251
+ * Figure out how to process a mouse event. When loop() has been called, the
1252
+ * events will be queued up until drawing is complete. If noLoop() has been
1253
+ * called, then events will happen immediately.
1254
+ *
1255
+ * @param nativeEvent
1309
1256
  */
1310
1257
  protected void nativeMouseEvent(java.awt.event.MouseEvent nativeEvent) {
1311
1258
  // the 'amount' is the number of button clicks for a click event,
@@ -1314,31 +1261,31 @@ public class PSurfaceAWT extends PSurfaceNone {
1314
1261
 
1315
1262
  int peAction = 0;
1316
1263
  switch (nativeEvent.getID()) {
1317
- case java.awt.event.MouseEvent.MOUSE_PRESSED:
1318
- peAction = MouseEvent.PRESS;
1319
- break;
1320
- case java.awt.event.MouseEvent.MOUSE_RELEASED:
1321
- peAction = MouseEvent.RELEASE;
1322
- break;
1323
- case java.awt.event.MouseEvent.MOUSE_CLICKED:
1324
- peAction = MouseEvent.CLICK;
1325
- break;
1326
- case java.awt.event.MouseEvent.MOUSE_DRAGGED:
1327
- peAction = MouseEvent.DRAG;
1328
- break;
1329
- case java.awt.event.MouseEvent.MOUSE_MOVED:
1330
- peAction = MouseEvent.MOVE;
1331
- break;
1332
- case java.awt.event.MouseEvent.MOUSE_ENTERED:
1333
- peAction = MouseEvent.ENTER;
1334
- break;
1335
- case java.awt.event.MouseEvent.MOUSE_EXITED:
1336
- peAction = MouseEvent.EXIT;
1337
- break;
1338
- //case java.awt.event.MouseWheelEvent.WHEEL_UNIT_SCROLL:
1339
- case java.awt.event.MouseEvent.MOUSE_WHEEL:
1340
- peAction = MouseEvent.WHEEL;
1341
- /*
1264
+ case java.awt.event.MouseEvent.MOUSE_PRESSED:
1265
+ peAction = MouseEvent.PRESS;
1266
+ break;
1267
+ case java.awt.event.MouseEvent.MOUSE_RELEASED:
1268
+ peAction = MouseEvent.RELEASE;
1269
+ break;
1270
+ case java.awt.event.MouseEvent.MOUSE_CLICKED:
1271
+ peAction = MouseEvent.CLICK;
1272
+ break;
1273
+ case java.awt.event.MouseEvent.MOUSE_DRAGGED:
1274
+ peAction = MouseEvent.DRAG;
1275
+ break;
1276
+ case java.awt.event.MouseEvent.MOUSE_MOVED:
1277
+ peAction = MouseEvent.MOVE;
1278
+ break;
1279
+ case java.awt.event.MouseEvent.MOUSE_ENTERED:
1280
+ peAction = MouseEvent.ENTER;
1281
+ break;
1282
+ case java.awt.event.MouseEvent.MOUSE_EXITED:
1283
+ peAction = MouseEvent.EXIT;
1284
+ break;
1285
+ //case java.awt.event.MouseWheelEvent.WHEEL_UNIT_SCROLL:
1286
+ case java.awt.event.MouseEvent.MOUSE_WHEEL:
1287
+ peAction = MouseEvent.WHEEL;
1288
+ /*
1342
1289
  if (preciseWheelMethod != null) {
1343
1290
  try {
1344
1291
  peAmount = ((Double) preciseWheelMethod.invoke(nativeEvent, (Object[]) null)).floatValue();
@@ -1346,9 +1293,9 @@ public class PSurfaceAWT extends PSurfaceNone {
1346
1293
  preciseWheelMethod = null;
1347
1294
  }
1348
1295
  }
1349
- */
1350
- peCount = ((MouseWheelEvent) nativeEvent).getWheelRotation();
1351
- break;
1296
+ */
1297
+ peCount = ((MouseWheelEvent) nativeEvent).getWheelRotation();
1298
+ break;
1352
1299
  }
1353
1300
 
1354
1301
  //System.out.println(nativeEvent);
@@ -1356,11 +1303,11 @@ public class PSurfaceAWT extends PSurfaceNone {
1356
1303
  // If using getModifiersEx(), the regular modifiers don't set properly.
1357
1304
  int modifiers = nativeEvent.getModifiers();
1358
1305
 
1359
- int peModifiers = modifiers &
1360
- (InputEvent.SHIFT_MASK |
1361
- InputEvent.CTRL_MASK |
1362
- InputEvent.META_MASK |
1363
- InputEvent.ALT_MASK);
1306
+ int peModifiers = modifiers
1307
+ & (InputEvent.SHIFT_MASK
1308
+ | InputEvent.CTRL_MASK
1309
+ | InputEvent.META_MASK
1310
+ | InputEvent.ALT_MASK);
1364
1311
 
1365
1312
  // Windows and OS X seem to disagree on how to handle this. Windows only
1366
1313
  // sets BUTTON1_DOWN_MASK, while OS X seems to set BUTTON1_MASK.
@@ -1398,29 +1345,29 @@ public class PSurfaceAWT extends PSurfaceNone {
1398
1345
  }
1399
1346
 
1400
1347
  sketch.postEvent(new MouseEvent(nativeEvent, nativeEvent.getWhen(),
1401
- peAction, peModifiers,
1402
- nativeEvent.getX() / windowScaleFactor,
1403
- nativeEvent.getY() / windowScaleFactor,
1404
- peButton,
1405
- peCount));
1348
+ peAction, peModifiers,
1349
+ nativeEvent.getX() / windowScaleFactor,
1350
+ nativeEvent.getY() / windowScaleFactor,
1351
+ peButton,
1352
+ peCount));
1406
1353
  }
1407
1354
 
1408
- /**
1409
- *
1410
- * @param event
1411
- */
1412
- protected void nativeKeyEvent(java.awt.event.KeyEvent event) {
1355
+ /**
1356
+ *
1357
+ * @param event
1358
+ */
1359
+ protected void nativeKeyEvent(java.awt.event.KeyEvent event) {
1413
1360
  int peAction = 0;
1414
1361
  switch (event.getID()) {
1415
- case java.awt.event.KeyEvent.KEY_PRESSED:
1416
- peAction = KeyEvent.PRESS;
1417
- break;
1418
- case java.awt.event.KeyEvent.KEY_RELEASED:
1419
- peAction = KeyEvent.RELEASE;
1420
- break;
1421
- case java.awt.event.KeyEvent.KEY_TYPED:
1422
- peAction = KeyEvent.TYPE;
1423
- break;
1362
+ case java.awt.event.KeyEvent.KEY_PRESSED:
1363
+ peAction = KeyEvent.PRESS;
1364
+ break;
1365
+ case java.awt.event.KeyEvent.KEY_RELEASED:
1366
+ peAction = KeyEvent.RELEASE;
1367
+ break;
1368
+ case java.awt.event.KeyEvent.KEY_TYPED:
1369
+ peAction = KeyEvent.TYPE;
1370
+ break;
1424
1371
  }
1425
1372
 
1426
1373
  // int peModifiers = event.getModifiersEx() &
@@ -1428,43 +1375,46 @@ public class PSurfaceAWT extends PSurfaceNone {
1428
1375
  // InputEvent.CTRL_DOWN_MASK |
1429
1376
  // InputEvent.META_DOWN_MASK |
1430
1377
  // InputEvent.ALT_DOWN_MASK);
1431
- int peModifiers = event.getModifiers() &
1432
- (InputEvent.SHIFT_MASK |
1433
- InputEvent.CTRL_MASK |
1434
- InputEvent.META_MASK |
1435
- InputEvent.ALT_MASK);
1378
+ int peModifiers = event.getModifiers()
1379
+ & (InputEvent.SHIFT_MASK
1380
+ | InputEvent.CTRL_MASK
1381
+ | InputEvent.META_MASK
1382
+ | InputEvent.ALT_MASK);
1436
1383
 
1437
1384
  sketch.postEvent(new KeyEvent(event, event.getWhen(),
1438
- peAction, peModifiers,
1439
- event.getKeyChar(), event.getKeyCode()));
1385
+ peAction, peModifiers,
1386
+ event.getKeyChar(), event.getKeyCode()));
1440
1387
  }
1441
1388
 
1442
-
1443
1389
  // listeners, for all my men!
1444
-
1445
- /**
1446
- *
1447
- */
1448
- protected void addListeners() {
1390
+ /**
1391
+ *
1392
+ */
1393
+ protected final void addListeners() {
1449
1394
 
1450
1395
  canvas.addMouseListener(new MouseListener() {
1451
1396
 
1397
+ @Override
1452
1398
  public void mousePressed(java.awt.event.MouseEvent e) {
1453
1399
  nativeMouseEvent(e);
1454
1400
  }
1455
1401
 
1402
+ @Override
1456
1403
  public void mouseReleased(java.awt.event.MouseEvent e) {
1457
1404
  nativeMouseEvent(e);
1458
1405
  }
1459
1406
 
1407
+ @Override
1460
1408
  public void mouseClicked(java.awt.event.MouseEvent e) {
1461
1409
  nativeMouseEvent(e);
1462
1410
  }
1463
1411
 
1412
+ @Override
1464
1413
  public void mouseEntered(java.awt.event.MouseEvent e) {
1465
1414
  nativeMouseEvent(e);
1466
1415
  }
1467
1416
 
1417
+ @Override
1468
1418
  public void mouseExited(java.awt.event.MouseEvent e) {
1469
1419
  nativeMouseEvent(e);
1470
1420
  }
@@ -1472,34 +1422,34 @@ public class PSurfaceAWT extends PSurfaceNone {
1472
1422
 
1473
1423
  canvas.addMouseMotionListener(new MouseMotionListener() {
1474
1424
 
1425
+ @Override
1475
1426
  public void mouseDragged(java.awt.event.MouseEvent e) {
1476
1427
  nativeMouseEvent(e);
1477
1428
  }
1478
1429
 
1430
+ @Override
1479
1431
  public void mouseMoved(java.awt.event.MouseEvent e) {
1480
1432
  nativeMouseEvent(e);
1481
1433
  }
1482
1434
  });
1483
1435
 
1484
- canvas.addMouseWheelListener(new MouseWheelListener() {
1485
-
1486
- public void mouseWheelMoved(MouseWheelEvent e) {
1487
- nativeMouseEvent(e);
1488
- }
1436
+ canvas.addMouseWheelListener((MouseWheelEvent e) -> {
1437
+ nativeMouseEvent(e);
1489
1438
  });
1490
1439
 
1491
1440
  canvas.addKeyListener(new KeyListener() {
1492
1441
 
1442
+ @Override
1493
1443
  public void keyPressed(java.awt.event.KeyEvent e) {
1494
1444
  nativeKeyEvent(e);
1495
1445
  }
1496
1446
 
1497
-
1447
+ @Override
1498
1448
  public void keyReleased(java.awt.event.KeyEvent e) {
1499
1449
  nativeKeyEvent(e);
1500
1450
  }
1501
1451
 
1502
-
1452
+ @Override
1503
1453
  public void keyTyped(java.awt.event.KeyEvent e) {
1504
1454
  nativeKeyEvent(e);
1505
1455
  }
@@ -1507,11 +1457,13 @@ public class PSurfaceAWT extends PSurfaceNone {
1507
1457
 
1508
1458
  canvas.addFocusListener(new FocusListener() {
1509
1459
 
1460
+ @Override
1510
1461
  public void focusGained(FocusEvent e) {
1511
1462
  sketch.focused = true;
1512
1463
  sketch.focusGained();
1513
1464
  }
1514
1465
 
1466
+ @Override
1515
1467
  public void focusLost(FocusEvent e) {
1516
1468
  sketch.focused = false;
1517
1469
  sketch.focusLost();
@@ -1537,9 +1489,7 @@ public class PSurfaceAWT extends PSurfaceNone {
1537
1489
  comp.removeKeyListener(this);
1538
1490
  comp.removeFocusListener(this);
1539
1491
  }
1540
- */
1541
-
1542
-
1492
+ */
1543
1493
  // /**
1544
1494
  // * Call to remove, then add, listeners to a component.
1545
1495
  // * Avoids issues with double-adding.
@@ -1548,21 +1498,16 @@ public class PSurfaceAWT extends PSurfaceNone {
1548
1498
  // removeListeners(comp);
1549
1499
  // addListeners(comp);
1550
1500
  // }
1551
-
1552
-
1553
-
1554
1501
  // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1555
-
1556
-
1557
1502
  int cursorType = PConstants.ARROW;
1558
1503
  boolean cursorVisible = true;
1559
1504
  Cursor invisibleCursor;
1560
1505
 
1561
- /**
1562
- *
1563
- * @param kind
1564
- */
1565
- @Override
1506
+ /**
1507
+ *
1508
+ * @param kind
1509
+ */
1510
+ @Override
1566
1511
  public void setCursor(int kind) {
1567
1512
  // Swap the HAND cursor because MOVE doesn't seem to be available on OS X
1568
1513
  // https://github.com/processing/processing/issues/2358
@@ -1574,13 +1519,13 @@ public class PSurfaceAWT extends PSurfaceNone {
1574
1519
  this.cursorType = kind;
1575
1520
  }
1576
1521
 
1577
- /**
1578
- *
1579
- * @param img
1580
- * @param x
1581
- * @param y
1582
- */
1583
- @Override
1522
+ /**
1523
+ *
1524
+ * @param img
1525
+ * @param x
1526
+ * @param y
1527
+ */
1528
+ @Override
1584
1529
  public void setCursor(PImage img, int x, int y) {
1585
1530
  // Don't set cursorType, instead use cursorType to save the last
1586
1531
  // regular cursor type used for when cursor() is called.
@@ -1592,18 +1537,18 @@ public class PSurfaceAWT extends PSurfaceNone {
1592
1537
  return;
1593
1538
  }
1594
1539
 
1595
- Cursor cursor =
1596
- canvas.getToolkit().createCustomCursor((Image) img.getNative(),
1597
- new Point(x, y),
1598
- "custom");
1540
+ Cursor cursor
1541
+ = canvas.getToolkit().createCustomCursor((Image) img.getNative(),
1542
+ new Point(x, y),
1543
+ "custom");
1599
1544
  canvas.setCursor(cursor);
1600
1545
  cursorVisible = true;
1601
1546
  }
1602
1547
 
1603
- /**
1604
- *
1605
- */
1606
- @Override
1548
+ /**
1549
+ *
1550
+ */
1551
+ @Override
1607
1552
  public void showCursor() {
1608
1553
  // Maybe should always set here? Seems dangerous, since it's likely that
1609
1554
  // Java will set the cursor to something else on its own, and the sketch
@@ -1614,35 +1559,35 @@ public class PSurfaceAWT extends PSurfaceNone {
1614
1559
  }
1615
1560
  }
1616
1561
 
1617
- /**
1618
- *
1619
- */
1620
- @Override
1562
+ /**
1563
+ *
1564
+ */
1565
+ @Override
1621
1566
  public void hideCursor() {
1622
1567
  // Because the OS may have shown the cursor on its own,
1623
1568
  // don't return if 'cursorVisible' is set to true. [rev 0216]
1624
1569
 
1625
1570
  if (invisibleCursor == null) {
1626
- BufferedImage cursorImg =
1627
- new BufferedImage(16, 16, BufferedImage.TYPE_INT_ARGB);
1571
+ BufferedImage cursorImg
1572
+ = new BufferedImage(16, 16, BufferedImage.TYPE_INT_ARGB);
1628
1573
  // this is a temporary workaround for the CHIP, will be removed
1629
1574
  Dimension cursorSize = Toolkit.getDefaultToolkit().getBestCursorSize(16, 16);
1630
1575
  if (cursorSize.width == 0 || cursorSize.height == 0) {
1631
1576
  invisibleCursor = Cursor.getDefaultCursor();
1632
1577
  } else {
1633
- invisibleCursor =
1634
- canvas.getToolkit().createCustomCursor(cursorImg, new Point(8, 8), "blank");
1578
+ invisibleCursor
1579
+ = canvas.getToolkit().createCustomCursor(cursorImg, new Point(8, 8), "blank");
1635
1580
  }
1636
1581
  }
1637
1582
  canvas.setCursor(invisibleCursor);
1638
1583
  cursorVisible = false;
1639
1584
  }
1640
1585
 
1641
- /**
1642
- *
1643
- * @return
1644
- */
1645
- @Override
1586
+ /**
1587
+ *
1588
+ * @return
1589
+ */
1590
+ @Override
1646
1591
  public Thread createThread() {
1647
1592
  return new AnimationThread() {
1648
1593
  @Override
@@ -1653,8 +1598,7 @@ public class PSurfaceAWT extends PSurfaceNone {
1653
1598
  };
1654
1599
  }
1655
1600
 
1656
-
1657
- void debug(String format, Object ... args) {
1601
+ void debug(String format, Object... args) {
1658
1602
  System.out.format(format + "%n", args);
1659
1603
  }
1660
1604
  }