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
@@ -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) 2012-15 The Processing Foundation
@@ -20,8 +20,7 @@
20
20
  Public License along with this library; if not, write to the
21
21
  Free Software Foundation, Inc., 59 Temple Place, Suite 330,
22
22
  Boston, MA 02111-1307 USA
23
- */
24
-
23
+ */
25
24
  package processing.opengl;
26
25
 
27
26
  import java.awt.Component;
@@ -65,7 +64,6 @@ import com.jogamp.newt.event.InputEvent;
65
64
  import com.jogamp.newt.opengl.GLWindow;
66
65
  import com.jogamp.opengl.util.FPSAnimator;
67
66
 
68
-
69
67
  import processing.core.PApplet;
70
68
  import processing.core.PConstants;
71
69
  import processing.core.PGraphics;
@@ -79,112 +77,115 @@ import processing.event.MouseEvent;
79
77
  * @author Martin Prout
80
78
  */
81
79
  public class PSurfaceJOGL implements PSurface {
82
- /** Selected GL profile */
80
+
81
+ /**
82
+ * Selected GL profile
83
+ */
83
84
  public static GLProfile profile;
84
85
 
85
- /**
86
- *
87
- */
88
- public PJOGL pgl;
86
+ /**
87
+ *
88
+ */
89
+ public PJOGL pgl;
89
90
 
90
- /**
91
- *
92
- */
93
- protected GLWindow window;
91
+ /**
92
+ *
93
+ */
94
+ protected GLWindow window;
94
95
 
95
- /**
96
- *
97
- */
98
- protected FPSAnimator animator;
96
+ /**
97
+ *
98
+ */
99
+ protected FPSAnimator animator;
99
100
 
100
- /**
101
- *
102
- */
103
- protected Rectangle screenRect;
101
+ /**
102
+ *
103
+ */
104
+ protected Rectangle screenRect;
104
105
 
105
106
  private Thread drawExceptionHandler;
106
107
 
107
- /**
108
- *
109
- */
110
- protected PApplet sketch;
111
-
112
- /**
113
- *
114
- */
115
- protected PGraphics graphics;
116
-
117
- /**
118
- *
119
- */
120
- protected int sketchWidth0;
121
-
122
- /**
123
- *
124
- */
125
- protected int sketchHeight0;
126
-
127
- /**
128
- *
129
- */
130
- protected int sketchWidth;
131
-
132
- /**
133
- *
134
- */
135
- protected int sketchHeight;
136
-
137
- /**
138
- *
139
- */
140
- protected Display display;
141
-
142
- /**
143
- *
144
- */
145
- protected Screen screen;
146
-
147
- /**
148
- *
149
- */
150
- protected Rectangle displayRect;
151
-
152
- /**
153
- *
154
- */
155
- protected Throwable drawException;
108
+ /**
109
+ *
110
+ */
111
+ protected PApplet sketch;
112
+
113
+ /**
114
+ *
115
+ */
116
+ protected PGraphics graphics;
117
+
118
+ /**
119
+ *
120
+ */
121
+ protected int sketchWidth0;
122
+
123
+ /**
124
+ *
125
+ */
126
+ protected int sketchHeight0;
127
+
128
+ /**
129
+ *
130
+ */
131
+ protected int sketchWidth;
132
+
133
+ /**
134
+ *
135
+ */
136
+ protected int sketchHeight;
137
+
138
+ /**
139
+ *
140
+ */
141
+ protected Display display;
142
+
143
+ /**
144
+ *
145
+ */
146
+ protected Screen screen;
147
+
148
+ /**
149
+ *
150
+ */
151
+ protected Rectangle displayRect;
152
+
153
+ /**
154
+ *
155
+ */
156
+ protected Throwable drawException;
156
157
  private final Object drawExceptionMutex = new Object();
157
158
 
158
- /**
159
- *
160
- */
161
- protected NewtCanvasAWT canvas;
162
-
163
- /**
164
- *
165
- */
166
- protected int windowScaleFactor;
167
-
168
- /**
169
- *
170
- */
171
- protected float[] currentPixelScale = {0, 0};
172
-
173
- /**
174
- *
175
- */
176
- protected boolean external = false;
177
-
178
- /**
179
- *
180
- * @param graphics
181
- */
182
- public PSurfaceJOGL(PGraphics graphics) {
159
+ /**
160
+ *
161
+ */
162
+ protected NewtCanvasAWT canvas;
163
+
164
+ /**
165
+ *
166
+ */
167
+ protected int windowScaleFactor;
168
+
169
+ /**
170
+ *
171
+ */
172
+ protected float[] currentPixelScale = {0, 0};
173
+
174
+ /**
175
+ *
176
+ */
177
+ protected boolean external = false;
178
+
179
+ /**
180
+ *
181
+ * @param graphics
182
+ */
183
+ public PSurfaceJOGL(PGraphics graphics) {
183
184
  this.graphics = graphics;
184
- this.pgl = (PJOGL) ((PGraphicsOpenGL)graphics).pgl;
185
+ this.pgl = (PJOGL) ((PGraphicsOpenGL) graphics).pgl;
185
186
  }
186
187
 
187
-
188
+ @Override
188
189
  public void initOffscreen(PApplet sketch) {
189
190
  this.sketch = sketch;
190
191
 
@@ -198,7 +199,7 @@ public class PSurfaceJOGL implements PSurface {
198
199
  }
199
200
  }
200
201
 
201
-
202
+ @Override
202
203
  public void initFrame(PApplet sketch) {
203
204
  this.sketch = sketch;
204
205
  initIcons();
@@ -209,15 +210,15 @@ public class PSurfaceJOGL implements PSurface {
209
210
  initAnimator();
210
211
  }
211
212
 
212
-
213
+ @Override
213
214
  public Object getNative() {
214
215
  return window;
215
216
  }
216
217
 
217
- /**
218
- *
219
- */
220
- protected void initDisplay() {
218
+ /**
219
+ *
220
+ */
221
+ protected void initDisplay() {
221
222
  display = NewtFactory.createDisplay(null);
222
223
  display.addReference();
223
224
  screen = NewtFactory.createScreen(display, 0);
@@ -230,12 +231,12 @@ public class PSurfaceJOGL implements PSurface {
230
231
  int displayNum = sketch.sketchDisplay();
231
232
  if (displayNum > 0) { // if -1, use the default device
232
233
  if (displayNum <= awtDevices.length) {
233
- awtDisplayDevice = awtDevices[displayNum-1];
234
+ awtDisplayDevice = awtDevices[displayNum - 1];
234
235
  } else {
235
- System.err.format("Display %d does not exist, " +
236
- "using the default display instead.%n", displayNum);
236
+ System.err.format("Display %d does not exist, "
237
+ + "using the default display instead.%n", displayNum);
237
238
  for (int i = 0; i < awtDevices.length; i++) {
238
- System.err.format("Display %d is %s%n", i+1, awtDevices[i]);
239
+ System.err.format("Display %d is %s%n", i + 1, awtDevices[i]);
239
240
  }
240
241
  }
241
242
  } else if (0 < awtDevices.length) {
@@ -249,52 +250,59 @@ public class PSurfaceJOGL implements PSurface {
249
250
  displayRect = awtDisplayDevice.getDefaultConfiguration().getBounds();
250
251
  }
251
252
 
252
- /**
253
- *
254
- */
255
- protected void initGL() {
253
+ /**
254
+ *
255
+ */
256
+ protected void initGL() {
256
257
  // System.out.println("*******************************");
257
258
  if (profile == null) {
258
- if (PJOGL.profile == 1) {
259
- try {
260
- profile = GLProfile.getGL2ES1();
261
- } catch (GLException ex) {
262
- profile = GLProfile.getMaxFixedFunc(true);
263
- }
264
- } else if (PJOGL.profile == 2) {
265
- try {
266
- profile = GLProfile.getGL2ES2();
259
+ switch (PJOGL.profile) {
260
+ case 1:
261
+ try {
262
+ profile = GLProfile.getGL2ES1();
263
+ } catch (GLException ex) {
264
+ profile = GLProfile.getMaxFixedFunc(true);
265
+ }
266
+ break;
267
+ case 2:
268
+ try {
269
+ profile = GLProfile.getGL2ES2();
267
270
 
268
- // workaround for https://jogamp.org/bugzilla/show_bug.cgi?id=1347
269
- if (!profile.isHardwareRasterizer()) {
270
- GLProfile hardware = GLProfile.getMaxProgrammable(true);
271
- if (hardware.isGL2ES2()) {
272
- profile = hardware;
271
+ // workaround for https://jogamp.org/bugzilla/show_bug.cgi?id=1347
272
+ if (!profile.isHardwareRasterizer()) {
273
+ GLProfile hardware = GLProfile.getMaxProgrammable(true);
274
+ if (hardware.isGL2ES2()) {
275
+ profile = hardware;
276
+ }
273
277
  }
274
- }
275
278
 
276
- } catch (GLException ex) {
277
- profile = GLProfile.getMaxProgrammable(true);
278
- }
279
- } else if (PJOGL.profile == 3) {
280
- try {
281
- profile = GLProfile.getGL2GL3();
282
- } catch (GLException ex) {
283
- profile = GLProfile.getMaxProgrammable(true);
284
- }
285
- if (!profile.isGL3()) {
286
- PGraphics.showWarning("Requested profile GL3 but is not available, got: " + profile);
287
- }
288
- } else if (PJOGL.profile == 4) {
289
- try {
290
- profile = GLProfile.getGL4ES3();
291
- } catch (GLException ex) {
292
- profile = GLProfile.getMaxProgrammable(true);
293
- }
294
- if (!profile.isGL4()) {
295
- PGraphics.showWarning("Requested profile GL4 but is not available, got: " + profile);
296
- }
297
- } else throw new RuntimeException(PGL.UNSUPPORTED_GLPROF_ERROR);
279
+ } catch (GLException ex) {
280
+ profile = GLProfile.getMaxProgrammable(true);
281
+ }
282
+ break;
283
+ case 3:
284
+ try {
285
+ profile = GLProfile.getGL2GL3();
286
+ } catch (GLException ex) {
287
+ profile = GLProfile.getMaxProgrammable(true);
288
+ }
289
+ if (!profile.isGL3()) {
290
+ PGraphics.showWarning("Requested profile GL3 but is not available, got: " + profile);
291
+ }
292
+ break;
293
+ case 4:
294
+ try {
295
+ profile = GLProfile.getGL4ES3();
296
+ } catch (GLException ex) {
297
+ profile = GLProfile.getMaxProgrammable(true);
298
+ }
299
+ if (!profile.isGL4()) {
300
+ PGraphics.showWarning("Requested profile GL4 but is not available, got: " + profile);
301
+ }
302
+ break;
303
+ default:
304
+ throw new RuntimeException(PGL.UNSUPPORTED_GLPROF_ERROR);
305
+ }
298
306
  }
299
307
 
300
308
  // Setting up the desired capabilities;
@@ -305,7 +313,6 @@ public class PSurfaceJOGL implements PSurface {
305
313
 
306
314
  // caps.setPBuffer(false);
307
315
  // caps.setFBO(false);
308
-
309
316
  // pgl.reqNumSamples = PGL.smoothToSamples(graphics.smooth);
310
317
  caps.setSampleBuffers(true);
311
318
  caps.setNumSamples(PGL.smoothToSamples(graphics.smooth));
@@ -314,10 +321,10 @@ public class PSurfaceJOGL implements PSurface {
314
321
  pgl.setCaps(caps);
315
322
  }
316
323
 
317
- /**
318
- *
319
- */
320
- protected void initWindow() {
324
+ /**
325
+ *
326
+ */
327
+ protected void initWindow() {
321
328
  window = GLWindow.create(screen, pgl.getCaps());
322
329
 
323
330
  // Make sure that we pass the window close through to exit(), otherwise
@@ -332,16 +339,15 @@ public class PSurfaceJOGL implements PSurface {
332
339
  // } else {
333
340
  // window = GLWindow.create(displayDevice.getScreen(), pgl.getCaps());
334
341
  // }
335
-
336
- windowScaleFactor = PApplet.platform == PConstants.MACOSX ?
337
- 1 : sketch.pixelDensity;
342
+ windowScaleFactor = PApplet.platform == PConstants.MACOSX
343
+ ? 1 : sketch.pixelDensity;
338
344
 
339
345
  boolean spanDisplays = sketch.sketchDisplay() == PConstants.SPAN;
340
- screenRect = spanDisplays ?
341
- new Rectangle(screen.getX(), screen.getY(), screen.getWidth(), screen.getHeight()) :
342
- new Rectangle((int) displayRect.getX(), (int) displayRect.getY(),
343
- (int) displayRect.getWidth(),
344
- (int) displayRect.getHeight());
346
+ screenRect = spanDisplays
347
+ ? new Rectangle(screen.getX(), screen.getY(), screen.getWidth(), screen.getHeight())
348
+ : new Rectangle((int) displayRect.getX(), (int) displayRect.getY(),
349
+ (int) displayRect.getWidth(),
350
+ (int) displayRect.getHeight());
345
351
 
346
352
  // Set the displayWidth/Height variables inside PApplet, so that they're
347
353
  // usable and can even be returned by the sketchWidth()/Height() methods.
@@ -368,8 +374,7 @@ public class PSurfaceJOGL implements PSurface {
368
374
  // graphics.setSize(w, h - 22 - 22);
369
375
  System.err.println("setting width/height to " + w + " " + h);
370
376
  }
371
- */
372
-
377
+ */
373
378
  sketchWidth = sketch.sketchWidth();
374
379
  sketchHeight = sketch.sketchHeight();
375
380
  // System.out.println("init: " + sketchWidth + " " + sketchHeight);
@@ -387,7 +392,7 @@ public class PSurfaceJOGL implements PSurface {
387
392
  fullScreen = true;
388
393
  sketch.fullScreen();
389
394
  }
390
- */
395
+ */
391
396
 
392
397
  if (fullScreen || spanDisplays) {
393
398
  sketchWidth = screenRect.width / windowScaleFactor;
@@ -398,13 +403,13 @@ public class PSurfaceJOGL implements PSurface {
398
403
 
399
404
  float[] reqSurfacePixelScale;
400
405
  if (graphics.is2X() && PApplet.platform == PConstants.MACOSX) {
401
- // Retina
402
- reqSurfacePixelScale = new float[] { ScalableSurface.AUTOMAX_PIXELSCALE,
403
- ScalableSurface.AUTOMAX_PIXELSCALE };
406
+ // Retina
407
+ reqSurfacePixelScale = new float[]{ScalableSurface.AUTOMAX_PIXELSCALE,
408
+ ScalableSurface.AUTOMAX_PIXELSCALE};
404
409
  } else {
405
410
  // Non-retina
406
- reqSurfacePixelScale = new float[] { ScalableSurface.IDENTITY_PIXELSCALE,
407
- ScalableSurface.IDENTITY_PIXELSCALE };
411
+ reqSurfacePixelScale = new float[]{ScalableSurface.IDENTITY_PIXELSCALE,
412
+ ScalableSurface.IDENTITY_PIXELSCALE};
408
413
  }
409
414
  window.setSurfaceScale(reqSurfacePixelScale);
410
415
  window.setSize(sketchWidth * windowScaleFactor, sketchHeight * windowScaleFactor);
@@ -422,10 +427,10 @@ public class PSurfaceJOGL implements PSurface {
422
427
  }
423
428
  }
424
429
 
425
- /**
426
- *
427
- */
428
- protected void initListeners() {
430
+ /**
431
+ *
432
+ */
433
+ protected void initListeners() {
429
434
  NEWTMouseListener mouseListener = new NEWTMouseListener();
430
435
  window.addMouseListener(mouseListener);
431
436
  NEWTKeyListener keyListener = new NEWTKeyListener();
@@ -437,10 +442,10 @@ public class PSurfaceJOGL implements PSurface {
437
442
  window.addGLEventListener(drawlistener);
438
443
  }
439
444
 
440
- /**
441
- *
442
- */
443
- protected void initAnimator() {
445
+ /**
446
+ *
447
+ */
448
+ protected void initAnimator() {
444
449
  if (PApplet.platform == PConstants.WINDOWS) {
445
450
  // Force Windows to keep timer resolution high by
446
451
  // sleeping for time which is not a multiple of 10 ms.
@@ -449,7 +454,8 @@ public class PSurfaceJOGL implements PSurface {
449
454
  Thread highResTimerThread = new Thread(() -> {
450
455
  try {
451
456
  Thread.sleep(Long.MAX_VALUE);
452
- } catch (InterruptedException ignore) { }
457
+ } catch (InterruptedException ignore) {
458
+ }
453
459
  }, "HighResTimerThread");
454
460
  highResTimerThread.setDaemon(true);
455
461
  highResTimerThread.start();
@@ -457,19 +463,15 @@ public class PSurfaceJOGL implements PSurface {
457
463
 
458
464
  animator = new FPSAnimator(window, 60);
459
465
  drawException = null;
460
- animator.setUncaughtExceptionHandler(new GLAnimatorControl.UncaughtExceptionHandler() {
461
- @Override
462
- public void uncaughtException(final GLAnimatorControl animator,
463
- final GLAutoDrawable drawable,
464
- final Throwable cause) {
465
- synchronized (drawExceptionMutex) {
466
- drawException = cause;
467
- drawExceptionMutex.notify();
468
- }
466
+ animator.setUncaughtExceptionHandler((final GLAnimatorControl animator1, final GLAutoDrawable drawable, final Throwable cause) -> {
467
+ synchronized (drawExceptionMutex) {
468
+ drawException = cause;
469
+ drawExceptionMutex.notify();
469
470
  }
470
471
  });
471
472
 
472
473
  drawExceptionHandler = new Thread(new Runnable() {
474
+ @Override
473
475
  public void run() {
474
476
  synchronized (drawExceptionMutex) {
475
477
  try {
@@ -493,7 +495,6 @@ public class PSurfaceJOGL implements PSurface {
493
495
  }
494
496
  }
495
497
  } catch (InterruptedException e) {
496
- return;
497
498
  }
498
499
  }
499
500
  }
@@ -501,71 +502,55 @@ public class PSurfaceJOGL implements PSurface {
501
502
  drawExceptionHandler.start();
502
503
  }
503
504
 
504
-
505
505
  @Override
506
506
  public void setTitle(final String title) {
507
- display.getEDTUtil().invoke(false, new Runnable() {
508
- @Override
509
- public void run() {
510
- window.setTitle(title);
511
- }
507
+ display.getEDTUtil().invoke(false, () -> {
508
+ window.setTitle(title);
512
509
  });
513
510
  }
514
511
 
515
-
516
512
  @Override
517
513
  public void setVisible(final boolean visible) {
518
- display.getEDTUtil().invoke(false, new Runnable() {
519
- @Override
520
- public void run() {
521
- window.setVisible(visible);
522
- }
514
+ display.getEDTUtil().invoke(false, () -> {
515
+ window.setVisible(visible);
523
516
  });
524
517
  }
525
518
 
526
-
527
519
  @Override
528
520
  public void setResizable(final boolean resizable) {
529
- display.getEDTUtil().invoke(false, new Runnable() {
530
- @Override
531
- public void run() {
532
- window.setResizable(resizable);
533
- }
521
+ display.getEDTUtil().invoke(false, () -> {
522
+ window.setResizable(resizable);
534
523
  });
535
524
  }
536
525
 
537
-
526
+ @Override
538
527
  public void setIcon(PImage icon) {
539
- PGraphics.showWarning("Window icons for OpenGL sketches can only be set in settings()\n" +
540
- "using PJOGL.setIcon(filename).");
528
+ PGraphics.showWarning("Window icons for OpenGL sketches can only be set in settings()\n"
529
+ + "using PJOGL.setIcon(filename).");
541
530
  }
542
531
 
543
-
544
532
  @Override
545
533
  public void setAlwaysOnTop(final boolean always) {
546
- display.getEDTUtil().invoke(false, new Runnable() {
547
- @Override
548
- public void run() {
549
- window.setAlwaysOnTop(always);
550
- }
534
+ display.getEDTUtil().invoke(false, () -> {
535
+ window.setAlwaysOnTop(always);
551
536
  });
552
537
  }
553
538
 
554
- /**
555
- *
556
- */
557
- protected void initIcons() {
539
+ /**
540
+ *
541
+ */
542
+ protected void initIcons() {
558
543
  IOUtil.ClassResources res = null;
559
544
  if (PJOGL.icons == null || PJOGL.icons.length == 0) {
560
545
  // Default Processing icons
561
- final int[] sizes = { 16, 32, 48, 64, 128, 256, 512 };
546
+ final int[] sizes = {16, 32, 48, 64, 128, 256, 512};
562
547
  String[] iconImages = new String[sizes.length];
563
548
  for (int i = 0; i < sizes.length; i++) {
564
- iconImages[i] = "/icon/icon-" + sizes[i] + ".png";
565
- }
566
- res = new ClassResources(iconImages,
567
- PApplet.class.getClassLoader(),
568
- PApplet.class);
549
+ iconImages[i] = "/icon/icon-" + sizes[i] + ".png";
550
+ }
551
+ res = new ClassResources(iconImages,
552
+ PApplet.class.getClassLoader(),
553
+ PApplet.class);
569
554
  } else {
570
555
  // Loading custom icons from user-provided files.
571
556
  String[] iconImages = new String[PJOGL.icons.length];
@@ -574,13 +559,12 @@ public class PSurfaceJOGL implements PSurface {
574
559
  }
575
560
 
576
561
  res = new ClassResources(iconImages,
577
- sketch.getClass().getClassLoader(),
578
- sketch.getClass());
562
+ sketch.getClass().getClassLoader(),
563
+ sketch.getClass());
579
564
  }
580
565
  NewtFactory.setWindowIcons(res);
581
566
  }
582
567
 
583
-
584
568
  @SuppressWarnings("resource")
585
569
  private String resourceFilename(String filename) {
586
570
  // The code below comes from PApplet.createInputRaw() with a few adaptations
@@ -606,12 +590,13 @@ public class PSurfaceJOGL implements PSurface {
606
590
  //if (filenameActual.equalsIgnoreCase(filenameShort) &&
607
591
  //!filenameActual.equals(filenameShort)) {
608
592
  if (!filenameActual.equals(filenameShort)) {
609
- throw new RuntimeException("This file is named " +
610
- filenameActual + " not " +
611
- filename + ". Rename the file " +
612
- "or change your code.");
593
+ throw new RuntimeException("This file is named "
594
+ + filenameActual + " not "
595
+ + filename + ". Rename the file "
596
+ + "or change your code.");
613
597
  }
614
- } catch (IOException e) { }
598
+ } catch (IOException e) {
599
+ }
615
600
  }
616
601
 
617
602
  stream = new FileInputStream(file);
@@ -622,8 +607,8 @@ public class PSurfaceJOGL implements PSurface {
622
607
 
623
608
  // have to break these out because a general Exception might
624
609
  // catch the RuntimeException being thrown above
625
- } catch (IOException ioe) {
626
- } catch (SecurityException se) { }
610
+ } catch (IOException | SecurityException ioe) {
611
+ }
627
612
 
628
613
  ClassLoader cl = sketch.getClass().getClassLoader();
629
614
 
@@ -654,7 +639,8 @@ public class PSurfaceJOGL implements PSurface {
654
639
  return filename;
655
640
  }
656
641
  }
657
- } catch (IOException e) { }
642
+ } catch (IOException e) {
643
+ }
658
644
 
659
645
  try {
660
646
  // attempt to load from a local file, used when running as
@@ -667,7 +653,8 @@ public class PSurfaceJOGL implements PSurface {
667
653
  stream.close();
668
654
  return path;
669
655
  }
670
- } catch (IOException e2) { }
656
+ } catch (IOException e2) {
657
+ }
671
658
 
672
659
  try {
673
660
  String path = sketch.sketchPath(filename);
@@ -676,7 +663,8 @@ public class PSurfaceJOGL implements PSurface {
676
663
  stream.close();
677
664
  return path;
678
665
  }
679
- } catch (Exception e) { } // ignored
666
+ } catch (IOException e) {
667
+ } // ignored
680
668
 
681
669
  try {
682
670
  stream = new FileInputStream(filename);
@@ -684,19 +672,19 @@ public class PSurfaceJOGL implements PSurface {
684
672
  stream.close();
685
673
  return filename;
686
674
  }
687
- } catch (IOException e1) { }
675
+ } catch (IOException e1) {
676
+ }
688
677
 
689
- } catch (SecurityException se) { } // online, whups
678
+ } catch (SecurityException se) {
679
+ } // online, whups
690
680
 
691
681
  } catch (Exception e) {
692
682
  //die(e.getMessage(), e);
693
- e.printStackTrace();
694
683
  }
695
684
 
696
685
  return "";
697
686
  }
698
687
 
699
-
700
688
  @Override
701
689
  public void placeWindow(int[] location, int[] editorLocation) {
702
690
 
@@ -733,19 +721,19 @@ public class PSurfaceJOGL implements PSurface {
733
721
  if ((locationX + w > sketch.displayWidth - 33) ||
734
722
  (locationY + h > sketch.displayHeight - 33)) {
735
723
  // otherwise center on screen
736
- */
724
+ */
737
725
  locationX = (sketch.displayWidth - w) / 2;
738
726
  locationY = (sketch.displayHeight - h) / 2;
739
727
  /*
740
728
  }
741
- */
729
+ */
742
730
  window.setTopLevelPosition(locationX, locationY);
743
731
  }
744
732
  } else { // just center on screen
745
733
  // Can't use frame.setLocationRelativeTo(null) because it sends the
746
734
  // frame to the main display, which undermines the --display setting.
747
735
  window.setTopLevelPosition(screenRect.x + (screenRect.width - sketchWidth) / 2,
748
- screenRect.y + (screenRect.height - sketchHeight) / 2);
736
+ screenRect.y + (screenRect.height - sketchHeight) / 2);
749
737
  }
750
738
 
751
739
  Point frameLoc = new Point(x, y);
@@ -756,11 +744,11 @@ public class PSurfaceJOGL implements PSurface {
756
744
  }
757
745
  }
758
746
 
759
-
747
+ @Override
760
748
  public void placePresent(int stopColor) {
761
749
  float scale = getPixelScale();
762
- pgl.initPresentMode(0.5f * (screenRect.width/scale - sketchWidth),
763
- 0.5f * (screenRect.height/scale - sketchHeight), stopColor);
750
+ pgl.initPresentMode(0.5f * (screenRect.width / scale - sketchWidth),
751
+ 0.5f * (screenRect.height / scale - sketchHeight), stopColor);
764
752
  PApplet.hideMenuBar();
765
753
 
766
754
  window.setUndecorated(true);
@@ -768,33 +756,33 @@ public class PSurfaceJOGL implements PSurface {
768
756
  window.setTopLevelSize((int) displayRect.getWidth(), (int) displayRect.getHeight());
769
757
  }
770
758
 
771
-
759
+ @Override
772
760
  public void setupExternalMessages() {
773
761
  external = true;
774
762
  }
775
763
 
776
-
764
+ @Override
777
765
  public void startThread() {
778
766
  if (animator != null) {
779
767
  animator.start();
780
768
  }
781
769
  }
782
770
 
783
-
771
+ @Override
784
772
  public void pauseThread() {
785
773
  if (animator != null) {
786
774
  animator.pause();
787
775
  }
788
776
  }
789
777
 
790
-
778
+ @Override
791
779
  public void resumeThread() {
792
780
  if (animator != null) {
793
781
  animator.resume();
794
782
  }
795
783
  }
796
784
 
797
-
785
+ @Override
798
786
  public boolean stopThread() {
799
787
  if (drawExceptionHandler != null) {
800
788
  drawExceptionHandler.interrupt();
@@ -807,7 +795,11 @@ public class PSurfaceJOGL implements PSurface {
807
795
  }
808
796
  }
809
797
 
810
-
798
+ /**
799
+ *
800
+ * @return
801
+ */
802
+ @Override
811
803
  public boolean isStopped() {
812
804
  if (animator != null) {
813
805
  return !animator.isAnimating();
@@ -816,19 +808,18 @@ public class PSurfaceJOGL implements PSurface {
816
808
  }
817
809
  }
818
810
 
819
-
811
+ @Override
820
812
  public void setLocation(final int x, final int y) {
821
- display.getEDTUtil().invoke(false, new Runnable() {
822
- @Override
823
- public void run() {
824
- window.setTopLevelPosition(x, y);
825
- }
813
+ display.getEDTUtil().invoke(false, () -> {
814
+ window.setTopLevelPosition(x, y);
826
815
  });
827
816
  }
828
817
 
829
-
818
+ @Override
830
819
  public void setSize(int wide, int high) {
831
- if (pgl.presentMode()) return;
820
+ if (pgl.presentMode()) {
821
+ return;
822
+ }
832
823
 
833
824
  // When the surface is set to resizable via surface.setResizable(true),
834
825
  // a crash may occur if the user sets the window to size zero.
@@ -853,11 +844,11 @@ public class PSurfaceJOGL implements PSurface {
853
844
  }
854
845
  }
855
846
 
856
- /**
857
- *
858
- * @return
859
- */
860
- public float getPixelScale() {
847
+ /**
848
+ *
849
+ * @return
850
+ */
851
+ public float getPixelScale() {
861
852
  if (graphics.pixelDensity == 1) {
862
853
  return 1;
863
854
  }
@@ -876,19 +867,19 @@ public class PSurfaceJOGL implements PSurface {
876
867
  return currentPixelScale[0];
877
868
  }
878
869
 
879
- /**
880
- *
881
- * @return
882
- */
883
- public Component getComponent() {
870
+ /**
871
+ *
872
+ * @return
873
+ */
874
+ public Component getComponent() {
884
875
  return canvas;
885
876
  }
886
877
 
887
- /**
888
- *
889
- * @param level
890
- */
891
- public void setSmooth(int level) {
878
+ /**
879
+ *
880
+ * @param level
881
+ */
882
+ public void setSmooth(int level) {
892
883
  pgl.reqNumSamples = level;
893
884
  GLCapabilities caps = new GLCapabilities(profile);
894
885
  caps.setAlphaBits(PGL.REQUESTED_ALPHA_BITS);
@@ -903,41 +894,39 @@ public class PSurfaceJOGL implements PSurface {
903
894
  config.setChosenCapabilities(caps);
904
895
  }
905
896
 
906
-
897
+ @Override
907
898
  public void setFrameRate(float fps) {
908
899
  if (fps < 1) {
909
900
  PGraphics.showWarning(
910
- "The OpenGL renderer cannot have a frame rate lower than 1.\n" +
911
- "Your sketch will run at 1 frame per second.");
901
+ "The OpenGL renderer cannot have a frame rate lower than 1.\n"
902
+ + "Your sketch will run at 1 frame per second.");
912
903
  fps = 1;
913
904
  } else if (fps > 1000) {
914
905
  PGraphics.showWarning(
915
- "The OpenGL renderer cannot have a frame rate higher than 1000.\n" +
916
- "Your sketch will run at 1000 frames per second.");
906
+ "The OpenGL renderer cannot have a frame rate higher than 1000.\n"
907
+ + "Your sketch will run at 1000 frames per second.");
917
908
  fps = 1000;
918
909
  }
919
910
  if (animator != null) {
920
911
  animator.stop();
921
- animator.setFPS((int)fps);
912
+ animator.setFPS((int) fps);
922
913
  pgl.setFps(fps);
923
914
  animator.start();
924
915
  }
925
916
  }
926
917
 
927
- /**
928
- *
929
- */
930
- public void requestFocus() {
931
- display.getEDTUtil().invoke(false, new Runnable() {
932
- @Override
933
- public void run() {
934
- window.requestFocus();
935
- }
918
+ /**
919
+ *
920
+ */
921
+ public void requestFocus() {
922
+ display.getEDTUtil().invoke(false, () -> {
923
+ window.requestFocus();
936
924
  });
937
925
  }
938
926
 
939
-
940
927
  class DrawListener implements GLEventListener {
928
+
929
+ @Override
941
930
  public void display(GLAutoDrawable drawable) {
942
931
  if (display.getEDTUtil().isCurrentThreadEDT()) {
943
932
  // For some reason, the first two frames of the animator are run on the
@@ -974,9 +963,13 @@ public class PSurfaceJOGL implements PSurface {
974
963
  sketch.exitActual();
975
964
  }
976
965
  }
966
+
967
+ @Override
977
968
  public void dispose(GLAutoDrawable drawable) {
978
969
  // sketch.dispose();
979
970
  }
971
+
972
+ @Override
980
973
  public void init(GLAutoDrawable drawable) {
981
974
  pgl.getGL(drawable);
982
975
  pgl.init(drawable);
@@ -984,244 +977,241 @@ public class PSurfaceJOGL implements PSurface {
984
977
 
985
978
  int c = graphics.backgroundColor;
986
979
  pgl.clearColor(((c >> 16) & 0xff) / 255f,
987
- ((c >> 8) & 0xff) / 255f,
988
- ((c >> 0) & 0xff) / 255f,
989
- ((c >> 24) & 0xff) / 255f);
980
+ ((c >> 8) & 0xff) / 255f,
981
+ ((c) & 0xff) / 255f,
982
+ ((c >> 24) & 0xff) / 255f);
990
983
  pgl.clear(PGL.COLOR_BUFFER_BIT);
991
984
  }
992
985
 
986
+ @Override
993
987
  public void reshape(GLAutoDrawable drawable, int x, int y, int w, int h) {
994
988
  pgl.resetFBOLayer();
995
989
  pgl.getGL(drawable);
996
- float scale = PApplet.platform == PConstants.MACOSX ?
997
- getCurrentPixelScale() : getPixelScale();
990
+ float scale = PApplet.platform == PConstants.MACOSX
991
+ ? getCurrentPixelScale() : getPixelScale();
998
992
  setSize((int) (w / scale), (int) (h / scale));
999
993
  }
1000
994
  }
1001
995
 
996
+ /**
997
+ *
998
+ */
999
+ protected class NEWTWindowListener implements com.jogamp.newt.event.WindowListener {
1000
+
1002
1001
  /**
1003
1002
  *
1004
1003
  */
1005
- protected class NEWTWindowListener implements com.jogamp.newt.event.WindowListener {
1006
-
1007
- /**
1008
- *
1009
- */
1010
- public NEWTWindowListener() {
1004
+ public NEWTWindowListener() {
1011
1005
  super();
1012
1006
  }
1013
1007
 
1014
- /**
1015
- *
1016
- * @param arg0
1017
- */
1018
- @Override
1008
+ /**
1009
+ *
1010
+ * @param arg0
1011
+ */
1012
+ @Override
1019
1013
  public void windowGainedFocus(com.jogamp.newt.event.WindowEvent arg0) {
1020
1014
  sketch.focused = true;
1021
1015
  sketch.focusGained();
1022
1016
  }
1023
1017
 
1024
- /**
1025
- *
1026
- * @param arg0
1027
- */
1028
- @Override
1018
+ /**
1019
+ *
1020
+ * @param arg0
1021
+ */
1022
+ @Override
1029
1023
  public void windowLostFocus(com.jogamp.newt.event.WindowEvent arg0) {
1030
1024
  sketch.focused = false;
1031
1025
  sketch.focusLost();
1032
1026
  }
1033
1027
 
1034
- /**
1035
- *
1036
- * @param arg0
1037
- */
1038
- @Override
1028
+ /**
1029
+ *
1030
+ * @param arg0
1031
+ */
1032
+ @Override
1039
1033
  public void windowDestroyNotify(com.jogamp.newt.event.WindowEvent arg0) {
1040
1034
  sketch.exit();
1041
1035
  }
1042
1036
 
1043
- /**
1044
- *
1045
- * @param arg0
1046
- */
1047
- @Override
1037
+ /**
1038
+ *
1039
+ * @param arg0
1040
+ */
1041
+ @Override
1048
1042
  public void windowDestroyed(com.jogamp.newt.event.WindowEvent arg0) {
1049
1043
  sketch.exit();
1050
1044
  }
1051
1045
 
1052
- /**
1053
- *
1054
- * @param arg0
1055
- */
1056
- @Override
1046
+ /**
1047
+ *
1048
+ * @param arg0
1049
+ */
1050
+ @Override
1057
1051
  public void windowMoved(com.jogamp.newt.event.WindowEvent arg0) {
1058
1052
  if (external) {
1059
1053
  sketch.frameMoved(window.getX(), window.getY());
1060
1054
  }
1061
1055
  }
1062
1056
 
1063
- /**
1064
- *
1065
- * @param arg0
1066
- */
1067
- @Override
1057
+ /**
1058
+ *
1059
+ * @param arg0
1060
+ */
1061
+ @Override
1068
1062
  public void windowRepaint(com.jogamp.newt.event.WindowUpdateEvent arg0) {
1069
1063
  }
1070
1064
 
1071
- /**
1072
- *
1073
- * @param arg0
1074
- */
1075
- @Override
1065
+ /**
1066
+ *
1067
+ * @param arg0
1068
+ */
1069
+ @Override
1076
1070
  public void windowResized(com.jogamp.newt.event.WindowEvent arg0) {
1077
1071
  }
1078
1072
  }
1079
1073
 
1080
-
1081
1074
  // NEWT mouse listener
1075
+ /**
1076
+ *
1077
+ */
1078
+ protected class NEWTMouseListener extends com.jogamp.newt.event.MouseAdapter {
1082
1079
 
1083
1080
  /**
1084
1081
  *
1085
1082
  */
1086
- protected class NEWTMouseListener extends com.jogamp.newt.event.MouseAdapter {
1087
-
1088
- /**
1089
- *
1090
- */
1091
- public NEWTMouseListener() {
1083
+ public NEWTMouseListener() {
1092
1084
  super();
1093
1085
  }
1094
1086
 
1095
- /**
1096
- *
1097
- * @param e
1098
- */
1099
- @Override
1087
+ /**
1088
+ *
1089
+ * @param e
1090
+ */
1091
+ @Override
1100
1092
  public void mousePressed(com.jogamp.newt.event.MouseEvent e) {
1101
1093
  nativeMouseEvent(e, MouseEvent.PRESS);
1102
1094
  }
1103
1095
 
1104
- /**
1105
- *
1106
- * @param e
1107
- */
1108
- @Override
1096
+ /**
1097
+ *
1098
+ * @param e
1099
+ */
1100
+ @Override
1109
1101
  public void mouseReleased(com.jogamp.newt.event.MouseEvent e) {
1110
1102
  nativeMouseEvent(e, MouseEvent.RELEASE);
1111
1103
  }
1112
1104
 
1113
- /**
1114
- *
1115
- * @param e
1116
- */
1117
- @Override
1105
+ /**
1106
+ *
1107
+ * @param e
1108
+ */
1109
+ @Override
1118
1110
  public void mouseClicked(com.jogamp.newt.event.MouseEvent e) {
1119
1111
  nativeMouseEvent(e, MouseEvent.CLICK);
1120
1112
  }
1121
1113
 
1122
- /**
1123
- *
1124
- * @param e
1125
- */
1126
- @Override
1114
+ /**
1115
+ *
1116
+ * @param e
1117
+ */
1118
+ @Override
1127
1119
  public void mouseDragged(com.jogamp.newt.event.MouseEvent e) {
1128
1120
  nativeMouseEvent(e, MouseEvent.DRAG);
1129
1121
  }
1130
1122
 
1131
- /**
1132
- *
1133
- * @param e
1134
- */
1135
- @Override
1123
+ /**
1124
+ *
1125
+ * @param e
1126
+ */
1127
+ @Override
1136
1128
  public void mouseMoved(com.jogamp.newt.event.MouseEvent e) {
1137
1129
  nativeMouseEvent(e, MouseEvent.MOVE);
1138
1130
  }
1139
1131
 
1140
- /**
1141
- *
1142
- * @param e
1143
- */
1144
- @Override
1132
+ /**
1133
+ *
1134
+ * @param e
1135
+ */
1136
+ @Override
1145
1137
  public void mouseWheelMoved(com.jogamp.newt.event.MouseEvent e) {
1146
1138
  nativeMouseEvent(e, MouseEvent.WHEEL);
1147
1139
  }
1148
1140
 
1149
- /**
1150
- *
1151
- * @param e
1152
- */
1153
- @Override
1141
+ /**
1142
+ *
1143
+ * @param e
1144
+ */
1145
+ @Override
1154
1146
  public void mouseEntered(com.jogamp.newt.event.MouseEvent e) {
1155
1147
  // System.out.println("enter");
1156
1148
  nativeMouseEvent(e, MouseEvent.ENTER);
1157
1149
  }
1158
1150
 
1159
- /**
1160
- *
1161
- * @param e
1162
- */
1163
- @Override
1151
+ /**
1152
+ *
1153
+ * @param e
1154
+ */
1155
+ @Override
1164
1156
  public void mouseExited(com.jogamp.newt.event.MouseEvent e) {
1165
1157
  // System.out.println("exit");
1166
1158
  nativeMouseEvent(e, MouseEvent.EXIT);
1167
1159
  }
1168
1160
  }
1169
1161
 
1170
-
1171
1162
  // NEWT key listener
1163
+ /**
1164
+ *
1165
+ */
1166
+ protected class NEWTKeyListener extends com.jogamp.newt.event.KeyAdapter {
1172
1167
 
1173
1168
  /**
1174
1169
  *
1175
1170
  */
1176
- protected class NEWTKeyListener extends com.jogamp.newt.event.KeyAdapter {
1177
-
1178
- /**
1179
- *
1180
- */
1181
- public NEWTKeyListener() {
1171
+ public NEWTKeyListener() {
1182
1172
  super();
1183
1173
  }
1184
1174
 
1185
- /**
1186
- *
1187
- * @param e
1188
- */
1189
- @Override
1175
+ /**
1176
+ *
1177
+ * @param e
1178
+ */
1179
+ @Override
1190
1180
  public void keyPressed(com.jogamp.newt.event.KeyEvent e) {
1191
1181
  nativeKeyEvent(e, KeyEvent.PRESS);
1192
1182
  }
1193
1183
 
1194
- /**
1195
- *
1196
- * @param e
1197
- */
1198
- @Override
1184
+ /**
1185
+ *
1186
+ * @param e
1187
+ */
1188
+ @Override
1199
1189
  public void keyReleased(com.jogamp.newt.event.KeyEvent e) {
1200
1190
  nativeKeyEvent(e, KeyEvent.RELEASE);
1201
1191
  }
1202
1192
 
1203
- /**
1204
- *
1205
- * @param e
1206
- */
1207
- public void keyTyped(com.jogamp.newt.event.KeyEvent e) {
1193
+ /**
1194
+ *
1195
+ * @param e
1196
+ */
1197
+ public void keyTyped(com.jogamp.newt.event.KeyEvent e) {
1208
1198
  nativeKeyEvent(e, KeyEvent.TYPE);
1209
1199
  }
1210
1200
  }
1211
1201
 
1212
- /**
1213
- *
1214
- * @param nativeEvent
1215
- * @param peAction
1216
- */
1217
- protected void nativeMouseEvent(com.jogamp.newt.event.MouseEvent nativeEvent,
1218
- int peAction) {
1202
+ /**
1203
+ *
1204
+ * @param nativeEvent
1205
+ * @param peAction
1206
+ */
1207
+ protected void nativeMouseEvent(com.jogamp.newt.event.MouseEvent nativeEvent,
1208
+ int peAction) {
1219
1209
  int modifiers = nativeEvent.getModifiers();
1220
- int peModifiers = modifiers &
1221
- (InputEvent.SHIFT_MASK |
1222
- InputEvent.CTRL_MASK |
1223
- InputEvent.META_MASK |
1224
- InputEvent.ALT_MASK);
1210
+ int peModifiers = modifiers
1211
+ & (InputEvent.SHIFT_MASK
1212
+ | InputEvent.CTRL_MASK
1213
+ | InputEvent.META_MASK
1214
+ | InputEvent.ALT_MASK);
1225
1215
 
1226
1216
  int peButton = 0;
1227
1217
  switch (nativeEvent.getButton()) {
@@ -1247,8 +1237,8 @@ public class PSurfaceJOGL implements PSurface {
1247
1237
  if (peAction == MouseEvent.WHEEL) {
1248
1238
  // Invert wheel rotation count so it matches JAVA2D's
1249
1239
  // https://github.com/processing/processing/issues/3840
1250
- peCount = -(nativeEvent.isShiftDown() ? (int)nativeEvent.getRotation()[0]:
1251
- (int)nativeEvent.getRotation()[1]);
1240
+ peCount = -(nativeEvent.isShiftDown() ? (int) nativeEvent.getRotation()[0]
1241
+ : (int) nativeEvent.getRotation()[1]);
1252
1242
  } else {
1253
1243
  peCount = nativeEvent.getClickCount();
1254
1244
  }
@@ -1265,10 +1255,10 @@ public class PSurfaceJOGL implements PSurface {
1265
1255
  int my = sy;
1266
1256
 
1267
1257
  if (pgl.presentMode()) {
1268
- mx -= (int)pgl.presentX;
1269
- my -= (int)pgl.presentY;
1270
- if (peAction == KeyEvent.RELEASE &&
1271
- pgl.insideStopButton(sx, sy - screenRect.height / windowScaleFactor)) {
1258
+ mx -= (int) pgl.presentX;
1259
+ my -= (int) pgl.presentY;
1260
+ if (peAction == KeyEvent.RELEASE
1261
+ && pgl.insideStopButton(sx, sy - screenRect.height / windowScaleFactor)) {
1272
1262
  sketch.exit();
1273
1263
  }
1274
1264
  if (mx < 0 || sketchWidth < mx || my < 0 || sketchHeight < my) {
@@ -1277,26 +1267,26 @@ public class PSurfaceJOGL implements PSurface {
1277
1267
  }
1278
1268
 
1279
1269
  MouseEvent me = new MouseEvent(nativeEvent, nativeEvent.getWhen(),
1280
- peAction, peModifiers,
1281
- mx, my,
1282
- peButton,
1283
- peCount);
1270
+ peAction, peModifiers,
1271
+ mx, my,
1272
+ peButton,
1273
+ peCount);
1284
1274
 
1285
1275
  sketch.postEvent(me);
1286
1276
  }
1287
1277
 
1288
- /**
1289
- *
1290
- * @param nativeEvent
1291
- * @param peAction
1292
- */
1293
- protected void nativeKeyEvent(com.jogamp.newt.event.KeyEvent nativeEvent,
1294
- int peAction) {
1295
- int peModifiers = nativeEvent.getModifiers() &
1296
- (InputEvent.SHIFT_MASK |
1297
- InputEvent.CTRL_MASK |
1298
- InputEvent.META_MASK |
1299
- InputEvent.ALT_MASK);
1278
+ /**
1279
+ *
1280
+ * @param nativeEvent
1281
+ * @param peAction
1282
+ */
1283
+ protected void nativeKeyEvent(com.jogamp.newt.event.KeyEvent nativeEvent,
1284
+ int peAction) {
1285
+ int peModifiers = nativeEvent.getModifiers()
1286
+ & (InputEvent.SHIFT_MASK
1287
+ | InputEvent.CTRL_MASK
1288
+ | InputEvent.META_MASK
1289
+ | InputEvent.ALT_MASK);
1300
1290
 
1301
1291
  short code = nativeEvent.getKeyCode();
1302
1292
  char keyChar;
@@ -1306,8 +1296,8 @@ public class PSurfaceJOGL implements PSurface {
1306
1296
  keyChar = PConstants.CODED;
1307
1297
  } else if (isHackyKey(code)) {
1308
1298
  // we can return only one char for ENTER, let it be \n everywhere
1309
- keyCode = code == com.jogamp.newt.event.KeyEvent.VK_ENTER ?
1310
- PConstants.ENTER : code;
1299
+ keyCode = code == com.jogamp.newt.event.KeyEvent.VK_ENTER
1300
+ ? PConstants.ENTER : code;
1311
1301
  keyChar = hackToChar(code, nativeEvent.getKeyChar());
1312
1302
  } else {
1313
1303
  keyCode = code;
@@ -1322,10 +1312,10 @@ public class PSurfaceJOGL implements PSurface {
1322
1312
  // In contrast to key symbol, key code uses a fixed US keyboard layout and therefore is keyboard layout independent.
1323
1313
  // E.g. virtual key code VK_Y denotes the same physical key regardless whether keyboard layout QWERTY or QWERTZ is active. The key symbol of the former is VK_Y, where the latter produces VK_Y.
1324
1314
  KeyEvent ke = new KeyEvent(nativeEvent, nativeEvent.getWhen(),
1325
- peAction, peModifiers,
1326
- keyChar,
1327
- keyCode,
1328
- nativeEvent.isAutoRepeat());
1315
+ peAction, peModifiers,
1316
+ keyChar,
1317
+ keyCode,
1318
+ nativeEvent.isAutoRepeat());
1329
1319
 
1330
1320
  sketch.postEvent(ke);
1331
1321
 
@@ -1334,29 +1324,27 @@ public class PSurfaceJOGL implements PSurface {
1334
1324
  // Create key typed event
1335
1325
  // TODO: combine dead keys with the following key
1336
1326
  KeyEvent tke = new KeyEvent(nativeEvent, nativeEvent.getWhen(),
1337
- KeyEvent.TYPE, peModifiers,
1338
- keyChar,
1339
- 0,
1340
- nativeEvent.isAutoRepeat());
1327
+ KeyEvent.TYPE, peModifiers,
1328
+ keyChar,
1329
+ 0,
1330
+ nativeEvent.isAutoRepeat());
1341
1331
 
1342
1332
  sketch.postEvent(tke);
1343
1333
  }
1344
1334
  }
1345
1335
  }
1346
1336
 
1347
-
1348
1337
  private static boolean isPCodedKey(short code) {
1349
- return code == com.jogamp.newt.event.KeyEvent.VK_UP ||
1350
- code == com.jogamp.newt.event.KeyEvent.VK_DOWN ||
1351
- code == com.jogamp.newt.event.KeyEvent.VK_LEFT ||
1352
- code == com.jogamp.newt.event.KeyEvent.VK_RIGHT ||
1353
- code == com.jogamp.newt.event.KeyEvent.VK_ALT ||
1354
- code == com.jogamp.newt.event.KeyEvent.VK_CONTROL ||
1355
- code == com.jogamp.newt.event.KeyEvent.VK_SHIFT ||
1356
- code == com.jogamp.newt.event.KeyEvent.VK_WINDOWS;
1338
+ return code == com.jogamp.newt.event.KeyEvent.VK_UP
1339
+ || code == com.jogamp.newt.event.KeyEvent.VK_DOWN
1340
+ || code == com.jogamp.newt.event.KeyEvent.VK_LEFT
1341
+ || code == com.jogamp.newt.event.KeyEvent.VK_RIGHT
1342
+ || code == com.jogamp.newt.event.KeyEvent.VK_ALT
1343
+ || code == com.jogamp.newt.event.KeyEvent.VK_CONTROL
1344
+ || code == com.jogamp.newt.event.KeyEvent.VK_SHIFT
1345
+ || code == com.jogamp.newt.event.KeyEvent.VK_WINDOWS;
1357
1346
  }
1358
1347
 
1359
-
1360
1348
  // Why do we need this mapping?
1361
1349
  // Relevant discussion and links here:
1362
1350
  // http://forum.jogamp.org/Newt-wrong-keycode-for-key-td4033690.html#a4033697
@@ -1384,7 +1372,6 @@ public class PSurfaceJOGL implements PSurface {
1384
1372
  }
1385
1373
  }
1386
1374
 
1387
-
1388
1375
  private static boolean isHackyKey(short code) {
1389
1376
  switch (code) {
1390
1377
  case com.jogamp.newt.event.KeyEvent.VK_BACK_SPACE:
@@ -1397,7 +1384,6 @@ public class PSurfaceJOGL implements PSurface {
1397
1384
  return false;
1398
1385
  }
1399
1386
 
1400
-
1401
1387
  private static char hackToChar(short code, char def) {
1402
1388
  switch (code) {
1403
1389
  case com.jogamp.newt.event.KeyEvent.VK_BACK_SPACE:
@@ -1414,11 +1400,9 @@ public class PSurfaceJOGL implements PSurface {
1414
1400
  return def;
1415
1401
  }
1416
1402
 
1417
-
1418
1403
  // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1419
-
1420
-
1421
1404
  class CursorInfo {
1405
+
1422
1406
  PImage image;
1423
1407
  int x, y;
1424
1408
 
@@ -1435,6 +1419,7 @@ public class PSurfaceJOGL implements PSurface {
1435
1419
 
1436
1420
  static Map<Integer, CursorInfo> cursors = new HashMap<>();
1437
1421
  static Map<Integer, String> cursorNames = new HashMap<>();
1422
+
1438
1423
  static {
1439
1424
  cursorNames.put(PConstants.ARROW, "arrow");
1440
1425
  cursorNames.put(PConstants.CROSS, "cross");
@@ -1444,7 +1429,7 @@ public class PSurfaceJOGL implements PSurface {
1444
1429
  cursorNames.put(PConstants.TEXT, "text");
1445
1430
  }
1446
1431
 
1447
-
1432
+ @Override
1448
1433
  public void setCursor(int kind) {
1449
1434
  if (!cursorNames.containsKey(kind)) {
1450
1435
  PGraphics.showWarning("Unknown cursor type: " + kind);
@@ -1454,19 +1439,28 @@ public class PSurfaceJOGL implements PSurface {
1454
1439
  if (cursor == null) {
1455
1440
  String name = cursorNames.get(kind);
1456
1441
  if (name != null) {
1457
- ImageIcon icon =
1458
- new ImageIcon(getClass().getResource("cursors/" + name + ".png"));
1442
+ ImageIcon icon
1443
+ = new ImageIcon(getClass().getResource("cursors/" + name + ".png"));
1459
1444
  PImage img = new PImage(icon.getImage());
1460
1445
  // Most cursors just use the center as the hotspot...
1461
1446
  int x = img.width / 2;
1462
1447
  int y = img.height / 2;
1463
1448
  // ...others are more specific
1464
- if (kind == PConstants.ARROW) {
1465
- x = 10; y = 7;
1466
- } else if (kind == PConstants.HAND) {
1467
- x = 12; y = 8;
1468
- } else if (kind == PConstants.TEXT) {
1469
- x = 16; y = 22;
1449
+ switch (kind) {
1450
+ case PConstants.ARROW:
1451
+ x = 10;
1452
+ y = 7;
1453
+ break;
1454
+ case PConstants.HAND:
1455
+ x = 12;
1456
+ y = 8;
1457
+ break;
1458
+ case PConstants.TEXT:
1459
+ x = 16;
1460
+ y = 22;
1461
+ break;
1462
+ default:
1463
+ break;
1470
1464
  }
1471
1465
  cursor = new CursorInfo(img, x, y);
1472
1466
  cursors.put(kind, cursor);
@@ -1479,11 +1473,11 @@ public class PSurfaceJOGL implements PSurface {
1479
1473
  }
1480
1474
  }
1481
1475
 
1482
-
1476
+ @Override
1483
1477
  public void setCursor(PImage image, int hotspotX, int hotspotY) {
1484
1478
  Display disp = window.getScreen().getDisplay();
1485
- BufferedImage bimg = (BufferedImage)image.getNative();
1486
- DataBufferInt dbuf = (DataBufferInt)bimg.getData().getDataBuffer();
1479
+ BufferedImage bimg = (BufferedImage) image.getNative();
1480
+ DataBufferInt dbuf = (DataBufferInt) bimg.getData().getDataBuffer();
1487
1481
  int[] ipix = dbuf.getData();
1488
1482
  ByteBuffer pixels = ByteBuffer.allocate(ipix.length * 4);
1489
1483
  pixels.asIntBuffer().put(ipix);
@@ -1491,32 +1485,23 @@ public class PSurfaceJOGL implements PSurface {
1491
1485
  final Dimension size = new Dimension(bimg.getWidth(), bimg.getHeight());
1492
1486
  PixelRectangle pixelrect = new PixelRectangle.GenericPixelRect(format, size, 0, false, pixels);
1493
1487
  final PointerIcon pi = disp.createPointerIcon(pixelrect, hotspotX, hotspotY);
1494
- display.getEDTUtil().invoke(false, new Runnable() {
1495
- @Override
1496
- public void run() {
1497
- window.setPointerVisible(true);
1498
- window.setPointerIcon(pi);
1499
- }
1488
+ display.getEDTUtil().invoke(false, () -> {
1489
+ window.setPointerVisible(true);
1490
+ window.setPointerIcon(pi);
1500
1491
  });
1501
1492
  }
1502
1493
 
1503
-
1494
+ @Override
1504
1495
  public void showCursor() {
1505
- display.getEDTUtil().invoke(false, new Runnable() {
1506
- @Override
1507
- public void run() {
1508
- window.setPointerVisible(true);
1509
- }
1496
+ display.getEDTUtil().invoke(false, () -> {
1497
+ window.setPointerVisible(true);
1510
1498
  });
1511
1499
  }
1512
1500
 
1513
-
1501
+ @Override
1514
1502
  public void hideCursor() {
1515
- display.getEDTUtil().invoke(false, new Runnable() {
1516
- @Override
1517
- public void run() {
1518
- window.setPointerVisible(false);
1519
- }
1503
+ display.getEDTUtil().invoke(false, () -> {
1504
+ window.setPointerVisible(false);
1520
1505
  });
1521
1506
  }
1522
1507
  }