picrate 0.7.0-java → 0.8.0-java

Sign up to get free protection for your applications and to get access to all the features.
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
  }