picrate 0.3.0-java → 0.4.0-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/.mvn/extensions.xml +1 -1
  3. data/CHANGELOG.md +1 -2
  4. data/README.md +1 -1
  5. data/Rakefile +2 -2
  6. data/lib/picrate.rb +1 -0
  7. data/lib/picrate/app.rb +4 -4
  8. data/lib/picrate/helper_methods.rb +0 -4
  9. data/lib/picrate/version.rb +1 -1
  10. data/library/color_group/color_group.rb +27 -0
  11. data/picrate.gemspec +1 -1
  12. data/pom.rb +5 -5
  13. data/pom.xml +5 -5
  14. data/src/main/java/monkstone/ColorUtil.java +57 -32
  15. data/src/main/java/processing/awt/PShapeJava2D.java +33 -9
  16. data/src/main/java/processing/awt/PSurfaceAWT.java +169 -76
  17. data/src/main/java/processing/core/PApplet.java +15921 -13981
  18. data/src/main/java/processing/core/PConstants.java +981 -475
  19. data/src/main/java/processing/core/PFont.java +202 -50
  20. data/src/main/java/processing/core/PGraphics.java +8470 -7323
  21. data/src/main/java/processing/core/PImage.java +212 -42
  22. data/src/main/java/processing/core/PMatrix.java +160 -21
  23. data/src/main/java/processing/core/PMatrix2D.java +178 -18
  24. data/src/main/java/processing/core/PMatrix3D.java +324 -48
  25. data/src/main/java/processing/core/PShape.java +42 -20
  26. data/src/main/java/processing/core/PShapeOBJ.java +91 -16
  27. data/src/main/java/processing/core/PShapeSVG.java +253 -53
  28. data/src/main/java/processing/core/PStyle.java +179 -34
  29. data/src/main/java/processing/core/PSurface.java +94 -13
  30. data/src/main/java/processing/core/PSurfaceNone.java +140 -35
  31. data/src/main/java/processing/core/PVector.java +87 -10
  32. data/src/main/java/processing/data/JSONObject.java +2 -2
  33. data/src/main/java/processing/event/Event.java +69 -86
  34. data/src/main/java/processing/event/MouseEvent.java +102 -102
  35. data/src/main/java/processing/opengl/PJOGL.java +3 -0
  36. data/test/color_group_test.rb +33 -0
  37. data/vendors/Rakefile +1 -1
  38. metadata +7 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 98912fc6c5238c86d49019bba74ea9c72f89d4e0888d0718400e16da3f57756c
4
- data.tar.gz: b0519d1aa9030d1a63c012e3274e34c3908287af72232b687f0a6e6e9d5fa6d3
3
+ metadata.gz: 1d0093cb47f7b3da255af047a82056efb9ea6d3c4173c13c8336b98c7f4b3cfb
4
+ data.tar.gz: ea5b1e00ee24ca51bc0625ab261a6914b2c67624f5026a06a4c0283a31b07da0
5
5
  SHA512:
6
- metadata.gz: aa44b2c66509e6348d3a455cb27de46c1a8f004278adb4062a306f0b1da6d7398efa00b5841d3c71b7c9c2f6482b15cc6282fcd668789db518507046a76665bf
7
- data.tar.gz: f63e3511db6a033fcce9bf87a691324deebe1329897edf9c74556d9d1da701acbecd2ca7f9b601adf42cc1b2521d8d55b8a996b0115e619affd63160d061a2d7
6
+ metadata.gz: 50417839ec672bf61d8fc21f707612959ce3856dd7c85c4d6263308f00e09e209f9cfea4fa94a065232c41fa3a80f6bd715d2cf182a8f0d518e549a8f0ac4ec1
7
+ data.tar.gz: c852f333c965a5ec7152d312939fbfce171048079838e2e69e46984daa740a19c64e9a789a912f097fd110807864141f8104b0239ad82fce81e5212163cdeae2
data/.mvn/extensions.xml CHANGED
@@ -3,7 +3,7 @@
3
3
  <extension>
4
4
  <groupId>io.takari.polyglot</groupId>
5
5
  <artifactId>polyglot-ruby</artifactId>
6
- <version>0.3.0
6
+ <version>0.3.1
7
7
  </version>
8
8
  </extension>
9
9
  </extensions>
data/CHANGELOG.md CHANGED
@@ -1,5 +1,4 @@
1
- v0.1.0.pre
2
- Hack to get library loader to work (will need revision), convert P2D samples to JAVA2D until opengl issue fixed
1
+ v0.0.4 LSystem examples
3
2
  v0.0.3
4
3
  Extended Samples
5
4
  v0.0.2
data/README.md CHANGED
@@ -16,7 +16,7 @@ Requires maven, [jdk8][oracle] (but could be openjdk), and a jruby install.
16
16
  ```bash
17
17
  cd PiCrate
18
18
  rake # assumes an installed version of vanilla processing
19
- jgem install picrate-0.2.0-java.gem
19
+ jgem install picrate-0.4.0-java.gem
20
20
  ```
21
21
  To create a template sketch:-
22
22
  ```bash
data/Rakefile CHANGED
@@ -22,13 +22,13 @@ task :init do
22
22
  opengl = Dir.entries(jar_dir).grep(/amd64|armv6hf/).select { |jar| jar =~ /linux/ }
23
23
  opengl.concat %w[jogl-all.jar gluegen-rt.jar]
24
24
  opengl.each do |gl|
25
- FileUtils.cp(File.join(jar_dir, gl), File.join('.', 'lib'))
25
+ FileUtils.cp(File.join(jar_dir, gl), File.join('.', 'lib'))
26
26
  end
27
27
  end
28
28
 
29
29
  desc 'Install'
30
30
  task :install do
31
- sh 'mv target/picrate-0.3.0.jar lib'
31
+ sh 'mv target/picrate-0.4.0.jar lib'
32
32
  end
33
33
 
34
34
  desc 'Gem'
data/lib/picrate.rb CHANGED
@@ -4,6 +4,7 @@ unless defined? PICRATE_ROOT
4
4
  $LOAD_PATH << File.expand_path(File.dirname(__FILE__))
5
5
  PICRATE_ROOT = File.absolute_path(File.dirname(__dir__))
6
6
  end
7
+
7
8
  Dir["#{PICRATE_ROOT}/lib/*.jar"].each do |jar|
8
9
  require jar
9
10
  end
data/lib/picrate/app.rb CHANGED
@@ -1,15 +1,15 @@
1
1
  # frozen_string_literal: false
2
2
  require_relative 'helper_methods'
3
3
  require_relative 'library_loader'
4
-
4
+ require 'jruby'
5
5
  # A wrapper module for the processing App
6
6
  module Processing
7
7
  include_package 'processing.core' # imports the processing jar.
8
8
  # Load vecmath, fastmath and mathtool modules
9
9
  Java::Monkstone::PicrateLibrary.load(JRuby.runtime)
10
- SKETCH_ROOT = File.absolute_path('.')
11
-
12
- # A utility to facillitate rendering of Vec2D and Vec3D as vertex
10
+ SKETCH_ROOT ||= Dir.pwd
11
+ # JRuby::Util.load_ext('monkstone.PicrateLibrary')
12
+ # A utility to facilitate rendering of Vec2D and Vec3D as vertex
13
13
  module Render
14
14
  java_import 'monkstone.vecmath.AppRender'
15
15
  java_import 'monkstone.vecmath.ShapeRender'
@@ -55,10 +55,6 @@ module Processing
55
55
  super(hex_color(args[0]))
56
56
  end
57
57
 
58
- def web_to_color_array(web)
59
- Java::Monkstone::ColorUtil.webArray(web)
60
- end
61
-
62
58
  def int_to_ruby_colors(hex)
63
59
  Java::Monkstone::ColorUtil.rubyString(hex)
64
60
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module PiCrate
3
- VERSION = '0.3.0'.freeze
3
+ VERSION = '0.4.0'.freeze
4
4
  end
@@ -0,0 +1,27 @@
1
+ java_import Java::Monkstone::ColorUtil
2
+
3
+ # class wraps a java color array (of signed int), supports shuffle!, last and
4
+ # ruby_code (string for use in ruby code). As well as ability to initialize
5
+ # with an ruby array of "web" color string
6
+ class ColorGroup
7
+ attr_reader :colors
8
+ def initialize(p5cols)
9
+ @colors = p5cols
10
+ end
11
+
12
+ def self.from_web_array(web)
13
+ ColorGroup.new(ColorUtil.web_array(web))
14
+ end
15
+
16
+ def shuffle!
17
+ @colors = ColorUtil.shuffle(colors)
18
+ end
19
+
20
+ def ruby_code
21
+ ColorUtil.rubyString(colors)
22
+ end
23
+
24
+ def last
25
+ colors[0]
26
+ end
27
+ end
data/picrate.gemspec CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |gem|
15
15
  gem.summary = %q{ruby wrapper for processing-3.3.7 on raspberrypi and linux64}
16
16
  gem.homepage = 'https://ruby-processing.github.io/PiCrate/'
17
17
  gem.files = `git ls-files`.split($/)
18
- gem.files << 'lib/picrate-0.3.0.jar'
18
+ gem.files << 'lib/picrate-0.4.0.jar'
19
19
  gem.files << 'lib/gluegen-rt.jar'
20
20
  gem.files << 'lib/jogl-all.jar'
21
21
  gem.files << 'lib/gluegen-rt-natives-linux-amd64.jar'
data/pom.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  project 'picrate', 'http://maven.apache.org' do
2
2
 
3
3
  model_version '4.0.0'
4
- id 'ruby-processing:picrate:0.3.0'
4
+ id 'ruby-processing:picrate:0.4.0'
5
5
  packaging 'jar'
6
6
 
7
7
  description 'An integrated processing-core (somewhat hacked), with additional java code for a jruby version of processing.'
@@ -24,7 +24,7 @@ project 'picrate', 'http://maven.apache.org' do
24
24
 
25
25
  properties( 'jogl.version' => '2.3.2',
26
26
  'jruby.api' => 'http://jruby.org/apidocs/',
27
- 'source.directory' => 'src',
27
+ 'source.directory' => 'src/main',
28
28
  'maven.compiler.target' => '1.8',
29
29
  'processing.api' => 'http://processing.github.io/processing-javadocs/core/',
30
30
  'picrate.basedir' => '${project.basedir}',
@@ -39,7 +39,7 @@ project 'picrate', 'http://maven.apache.org' do
39
39
 
40
40
  plugin( :resources, '2.7',
41
41
  'encoding' => 'UTF-8' )
42
- plugin( :compiler, '3.7.0',
42
+ plugin( :compiler, '3.8.0',
43
43
  'source' => '1.8',
44
44
  'target' => '1.8' )
45
45
  plugin( :pmd, '3.3',
@@ -48,12 +48,12 @@ project 'picrate', 'http://maven.apache.org' do
48
48
  'targetJdk' => '${compileSource}' )
49
49
  build do
50
50
  resource do
51
- directory '${source.directory}/main/java'
51
+ directory '${source.directory}/java'
52
52
  includes ['**/**/*.glsl', '**/*.jnilib']
53
53
  excludes '**/**/*.java'
54
54
  end
55
55
  resource do
56
- directory '${source.directory}/main/resources'
56
+ directory '${source.directory}/resources'
57
57
  includes ['**/*.png', '*.txt']
58
58
  end
59
59
  end
data/pom.xml CHANGED
@@ -11,7 +11,7 @@ DO NOT MODIFIY - GENERATED CODE
11
11
  <modelVersion>4.0.0</modelVersion>
12
12
  <groupId>ruby-processing</groupId>
13
13
  <artifactId>picrate</artifactId>
14
- <version>0.3.0</version>
14
+ <version>0.4.0</version>
15
15
  <name>picrate</name>
16
16
  <description>An integrated processing-core (somewhat hacked), with additional java code for a jruby version of processing.</description>
17
17
  <url>http://maven.apache.org</url>
@@ -66,7 +66,7 @@ DO NOT MODIFIY - GENERATED CODE
66
66
  <properties>
67
67
  <jogl.version>2.3.2</jogl.version>
68
68
  <jruby.api>http://jruby.org/apidocs/</jruby.api>
69
- <source.directory>src</source.directory>
69
+ <source.directory>src/main</source.directory>
70
70
  <maven.compiler.target>1.8</maven.compiler.target>
71
71
  <processing.api>http://processing.github.io/processing-javadocs/core/</processing.api>
72
72
  <project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
@@ -100,7 +100,7 @@ DO NOT MODIFIY - GENERATED CODE
100
100
  <build>
101
101
  <resources>
102
102
  <resource>
103
- <directory>${source.directory}/main/java</directory>
103
+ <directory>${source.directory}/java</directory>
104
104
  <includes>
105
105
  <include>**/**/*.glsl</include>
106
106
  <include>**/*.jnilib</include>
@@ -110,7 +110,7 @@ DO NOT MODIFIY - GENERATED CODE
110
110
  </excludes>
111
111
  </resource>
112
112
  <resource>
113
- <directory>${source.directory}/main/resources</directory>
113
+ <directory>${source.directory}/resources</directory>
114
114
  <includes>
115
115
  <include>**/*.png</include>
116
116
  <include>*.txt</include>
@@ -127,7 +127,7 @@ DO NOT MODIFIY - GENERATED CODE
127
127
  </plugin>
128
128
  <plugin>
129
129
  <artifactId>maven-compiler-plugin</artifactId>
130
- <version>3.7.0</version>
130
+ <version>3.8.0</version>
131
131
  <configuration>
132
132
  <source>1.8</source>
133
133
  <target>1.8</target>
@@ -1,24 +1,30 @@
1
1
  /**
2
- * This utility allows PiCrate users to use the processing.org color method
3
- * in their sketches. Includes a method to efficiently convert an array of web
4
- * strings to an array of color int, and another to convert an array of color
5
- * int to a string that can be used in ruby code (to generate web color array).
6
- * Copyright (c) 2018 Martin Prout.
2
+ * This utility allows JRubyArt users to use the processing.org color method
3
+ * in their sketches. Includes a method to efficiently convert an cols of web
4
+ * strings to an cols of color int, and another to convert an cols of p5 color
5
+ * (int) to a string that can be used in ruby code (to generate web color cols).
6
+ * Copyright (c) 2015-18 Martin Prout.
7
7
  * This utility is free software; you can redistribute it and/or modify
8
- * it under the terms of the GNU General Public License as published by
9
- * the Free Software Foundation; either version 3.0 of the License, or (at
8
+ * it under the terms of the GNU Lesser General Public License as published by
9
+ * the Free Software Foundation; either version 2.1 of the License, or (at
10
10
  * your option) any later version.
11
11
  *
12
- * Obtain a copy of the license at http://www.gnu.org/licenses/gpl-3.0-standalone.html
12
+ * Obtain a copy of the license at http://www.gnu.org/licenses/lgpl-2.1.html
13
13
  */
14
14
  package monkstone;
15
15
 
16
+ import java.util.ArrayList;
17
+ import java.util.List;
18
+ import java.util.Random;
19
+
16
20
  /**
17
21
  *
18
- *
22
+ * @author Martin Prout
19
23
  */
20
24
  public class ColorUtil {
21
25
 
26
+ static final String TOO_BIG = "produces a line too long a line for code";
27
+
22
28
  /**
23
29
  * Returns hex long as a positive int unless greater than Integer.MAX_VALUE
24
30
  * else return the complement as a negative integer or something like that
@@ -43,36 +49,55 @@ public class ColorUtil {
43
49
  return java.awt.Color.decode(hexstring).getRGB();
44
50
  }
45
51
 
46
- /**
47
- *
48
- * @param web Array of web (hex) String
49
- * @return array of color int according to java
50
- */
51
- static public int[] webArray(String[] web) {
52
- int[] result = new int[web.length];
53
- for (int i = 0; i < web.length; i++) {
54
- result[i] = java.awt.Color.decode(web[i]).getRGB();
55
- }
56
- return result;
57
- }
52
+ /**
53
+ *
54
+ * @param web Array of web (hex) String
55
+ * @return cols of p5 color (int)
56
+ */
57
+ static public int[] webArray(String... web) {
58
+ int[] result = new int[web.length];
59
+ for (int i = 0; i < web.length; i++) {
60
+ result[i] = java.awt.Color.decode(web[i]).getRGB();
61
+ }
62
+ return result;
63
+ }
58
64
 
59
65
  /**
60
- * Return a ruby string of the form "%w(a b c)" where a, b, c are raw web
66
+ * Return a ruby string of the form "%w[a b c]" where a, b, c are raw web
61
67
  * strings. This string can be used in ruby code.
62
68
  *
63
- * @param hex int array
69
+ * @param p5colors cols of p5 colors (int)
64
70
  * @return String for use in ruby
65
71
  */
66
- static public String rubyString(int[] hex) {
67
- StringBuilder result = new StringBuilder("%w(");
68
- for (int i = 0; i < hex.length; i++) {
69
- result.append(String.format("#%06X", (0xFFFFFF & hex[i])));
70
- if (i < hex.length - 1) {
71
- result.append(' ');
72
- }
72
+ static public String rubyString(int[] p5colors) {
73
+ if (p5colors.length > 8){ return TOO_BIG;}
74
+ StringBuilder sb = new StringBuilder("%w[");
75
+ for (int p5color : p5colors) {
76
+ sb.append(String.format("#%06X", (0xFFFFFF & p5color)));
77
+ sb.append(' ');
78
+ }
79
+ sb.deleteCharAt(sb.length() - 1);
80
+ sb.append("]\n");
81
+ return sb.toString();
82
+ }
83
+
84
+ static public String[] p5ToWeb(int[] p5colors) {
85
+ List<String> list = new ArrayList<>();
86
+ for (int p5color : p5colors) {
87
+ list.add(String.format("#%06X", (0xFFFFFF & p5color)));
88
+ }
89
+ return list.toArray(new String[0]);
90
+ }
91
+
92
+ static public int[] shuffle(int[] cols) {
93
+ Random rgen = new Random(); // Random number generator
94
+ for (int i = 0; i < cols.length; i++) {
95
+ int randomPosition = rgen.nextInt(cols.length);
96
+ int temp = cols[i];
97
+ cols[i] = cols[randomPosition];
98
+ cols[randomPosition] = temp;
73
99
  }
74
- result.append(")\n");
75
- return result.toString();
100
+ return cols;
76
101
  }
77
102
 
78
103
  /**
@@ -47,18 +47,29 @@ public class PShapeJava2D extends PShapeSVG {
47
47
  Paint strokeGradientPaint;
48
48
  Paint fillGradientPaint;
49
49
 
50
-
51
- public PShapeJava2D(XML svg) {
50
+ /**
51
+ *
52
+ * @param svg
53
+ */
54
+ public PShapeJava2D(XML svg) {
52
55
  super(svg);
53
56
  }
54
57
 
55
-
56
- public PShapeJava2D(PShapeSVG parent, XML properties, boolean parseKids) {
58
+ /**
59
+ *
60
+ * @param parent
61
+ * @param properties
62
+ * @param parseKids
63
+ */
64
+ public PShapeJava2D(PShapeSVG parent, XML properties, boolean parseKids) {
57
65
  super(parent, properties, parseKids);
58
66
  }
59
67
 
60
-
61
- @Override
68
+ /**
69
+ *
70
+ * @param parent
71
+ */
72
+ @Override
62
73
  protected void setParent(PShapeSVG parent) {
63
74
  super.setParent(parent);
64
75
 
@@ -74,7 +85,11 @@ public class PShapeJava2D extends PShapeSVG {
74
85
  }
75
86
 
76
87
 
77
- /** Factory method for subclasses. */
88
+ /** Factory method for subclasses.
89
+ * @param parent
90
+ * @param properties
91
+ * @param parseKids
92
+ * @return */
78
93
  @Override
79
94
  protected PShapeSVG createShape(PShapeSVG parent, XML properties, boolean parseKids) {
80
95
  return new PShapeJava2D(parent, properties, parseKids);
@@ -298,8 +313,12 @@ public class PShapeJava2D extends PShapeSVG {
298
313
  }
299
314
  }
300
315
 
301
-
302
- protected Paint calcGradientPaint(Gradient gradient) {
316
+ /**
317
+ *
318
+ * @param gradient
319
+ * @return
320
+ */
321
+ protected Paint calcGradientPaint(Gradient gradient) {
303
322
  if (gradient instanceof LinearGradient) {
304
323
  // System.out.println("creating linear gradient");
305
324
  LinearGradient grad = (LinearGradient) gradient;
@@ -344,6 +363,11 @@ public class PShapeJava2D extends PShapeSVG {
344
363
 
345
364
  // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
346
365
 
366
+ /**
367
+ *
368
+ * @param g
369
+ */
370
+
347
371
 
348
372
  @Override
349
373
  protected void styles(PGraphics g) {
@@ -57,7 +57,10 @@ import processing.core.PSurfaceNone;
57
57
  import processing.event.KeyEvent;
58
58
  import processing.event.MouseEvent;
59
59
 
60
-
60
+ /**
61
+ *
62
+ * @author tux
63
+ */
61
64
  public class PSurfaceAWT extends PSurfaceNone {
62
65
  GraphicsDevice displayDevice;
63
66
 
@@ -92,8 +95,11 @@ public class PSurfaceAWT extends PSurfaceNone {
92
95
 
93
96
  int windowScaleFactor;
94
97
 
95
-
96
- public PSurfaceAWT(PGraphics graphics) {
98
+ /**
99
+ *
100
+ * @param graphics
101
+ */
102
+ public PSurfaceAWT(PGraphics graphics) {
97
103
  //this.graphics = graphics;
98
104
  super(graphics);
99
105
 
@@ -183,6 +189,10 @@ public class PSurfaceAWT extends PSurfaceNone {
183
189
 
184
190
  // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
185
191
 
192
+ /**
193
+ *
194
+ */
195
+
186
196
 
187
197
  public class SmoothCanvas extends Canvas {
188
198
  private Dimension oldSize = new Dimension(0, 0);
@@ -190,31 +200,47 @@ public class PSurfaceAWT extends PSurfaceNone {
190
200
 
191
201
 
192
202
  // Turns out getParent() returns a JPanel on a JFrame. Yech.
203
+
204
+ /**
205
+ *
206
+ * @return
207
+ */
193
208
  public Frame getFrame() {
194
209
  return frame;
195
210
  }
196
211
 
197
-
198
- @Override
212
+ /**
213
+ *
214
+ * @return
215
+ */
216
+ @Override
199
217
  public Dimension getPreferredSize() {
200
218
  return new Dimension(sketchWidth, sketchHeight);
201
219
  }
202
220
 
203
-
204
- @Override
221
+ /**
222
+ *
223
+ * @return
224
+ */
225
+ @Override
205
226
  public Dimension getMinimumSize() {
206
227
  return getPreferredSize();
207
228
  }
208
229
 
209
-
210
- @Override
230
+ /**
231
+ *
232
+ * @return
233
+ */
234
+ @Override
211
235
  public Dimension getMaximumSize() {
212
236
  //return resizable ? super.getMaximumSize() : getPreferredSize();
213
237
  return frame.isResizable() ? super.getMaximumSize() : getPreferredSize();
214
238
  }
215
239
 
216
-
217
- @Override
240
+ /**
241
+ *
242
+ */
243
+ @Override
218
244
  public void validate() {
219
245
  super.validate();
220
246
  newSize.width = getWidth();
@@ -235,15 +261,21 @@ public class PSurfaceAWT extends PSurfaceNone {
235
261
  }
236
262
  }
237
263
 
238
-
239
- @Override
264
+ /**
265
+ *
266
+ * @param g
267
+ */
268
+ @Override
240
269
  public void update(Graphics g) {
241
270
  // System.out.println("updating");
242
271
  paint(g);
243
272
  }
244
273
 
245
-
246
- @Override
274
+ /**
275
+ *
276
+ * @param screen
277
+ */
278
+ @Override
247
279
  public void paint(Graphics screen) {
248
280
  // System.out.println("painting");
249
281
  // if (useStrategy) {
@@ -280,8 +312,10 @@ public class PSurfaceAWT extends PSurfaceNone {
280
312
  }
281
313
  */
282
314
 
283
-
284
- synchronized protected void render() {
315
+ /**
316
+ *
317
+ */
318
+ synchronized protected void render() {
285
319
  if (canvas.isDisplayable() &&
286
320
  graphics.image != null) {
287
321
  if (canvas.getBufferStrategy() == null) {
@@ -357,6 +391,11 @@ public class PSurfaceAWT extends PSurfaceNone {
357
391
 
358
392
 
359
393
  // what needs to happen here?
394
+
395
+ /**
396
+ *
397
+ * @param sketch
398
+ */
360
399
  @Override
361
400
  public void initOffscreen(PApplet sketch) {
362
401
  this.sketch = sketch;
@@ -384,8 +423,11 @@ public class PSurfaceAWT extends PSurfaceNone {
384
423
  }
385
424
  */
386
425
 
387
-
388
- @Override
426
+ /**
427
+ *
428
+ * @param sketch
429
+ */
430
+ @Override
389
431
  public void initFrame(final PApplet sketch) {/*, int backgroundColor,
390
432
  int deviceIndex, boolean fullScreen, boolean spanDisplays) {*/
391
433
  this.sketch = sketch;
@@ -558,7 +600,8 @@ public class PSurfaceAWT extends PSurfaceNone {
558
600
  // }
559
601
 
560
602
 
561
- /** Set the window (and dock, or whatever necessary) title. */
603
+ /** Set the window (and dock, or whatever necessary) title.
604
+ * @param title */
562
605
  @Override
563
606
  public void setTitle(String title) {
564
607
  frame.setTitle(title);
@@ -573,7 +616,8 @@ public class PSurfaceAWT extends PSurfaceNone {
573
616
  }
574
617
 
575
618
 
576
- /** Set true if we want to resize things (default is not resizable) */
619
+ /** Set true if we want to resize things (default is not resizable)
620
+ * @param resizable */
577
621
  @Override
578
622
  public void setResizable(boolean resizable) {
579
623
  //this.resizable = resizable; // really only used for canvas
@@ -583,26 +627,29 @@ public class PSurfaceAWT extends PSurfaceNone {
583
627
  }
584
628
  }
585
629
 
586
-
587
- @Override
630
+ /**
631
+ *
632
+ * @param image
633
+ */
634
+ @Override
588
635
  public void setIcon(PImage image) {
589
636
  Image awtImage = (Image) image.getNative();
590
-
591
- if (PApplet.platform != PConstants.MACOSX) {
592
- frame.setIconImage(awtImage);
593
-
594
- } else {
595
- try {
596
- final String td = "processing.core.ThinkDifferent";
597
- Class<?> thinkDifferent =
598
- Thread.currentThread().getContextClassLoader().loadClass(td);
599
- Method method =
600
- thinkDifferent.getMethod("setIconImage", new Class[] { java.awt.Image.class });
601
- method.invoke(null, new Object[] { awtImage });
602
- } catch (Exception e) {
603
- e.printStackTrace(); // That's unfortunate
604
- }
605
- }
637
+ frame.setIconImage(awtImage);
638
+ // if (PApplet.platform != PConstants.MACOSX) {
639
+ // frame.setIconImage(awtImage);
640
+ //
641
+ // } else {
642
+ // try {
643
+ // final String td = "processing.core.ThinkDifferent";
644
+ // Class<?> thinkDifferent =
645
+ // Thread.currentThread().getContextClassLoader().loadClass(td);
646
+ // Method method =
647
+ // thinkDifferent.getMethod("setIconImage", new Class[] { java.awt.Image.class });
648
+ // method.invoke(null, new Object[] { awtImage });
649
+ // } catch (Exception e) {
650
+ // e.printStackTrace(); // That's unfortunate
651
+ // }
652
+ // }
606
653
  }
607
654
 
608
655
 
@@ -611,8 +658,12 @@ public class PSurfaceAWT extends PSurfaceNone {
611
658
  frame.setAlwaysOnTop(always);
612
659
  }
613
660
 
614
-
615
- @Override
661
+ /**
662
+ *
663
+ * @param x
664
+ * @param y
665
+ */
666
+ @Override
616
667
  public void setLocation(int x, int y) {
617
668
  frame.setLocation(x, y);
618
669
  }
@@ -620,10 +671,14 @@ public class PSurfaceAWT extends PSurfaceNone {
620
671
 
621
672
  List<Image> iconImages;
622
673
 
623
- protected void setProcessingIcon(Frame frame) {
674
+ /**
675
+ *
676
+ * @param frame
677
+ */
678
+ protected void setProcessingIcon(Frame frame) {
624
679
  // On OS X, this only affects what shows up in the dock when minimized.
625
680
  // So replacing it is actually a step backwards. Brilliant.
626
- if (PApplet.platform != PConstants.MACOSX) {
681
+ // if (PApplet.platform != PConstants.MACOSX) {
627
682
  //Image image = Toolkit.getDefaultToolkit().createImage(ICON_IMAGE);
628
683
  //frame.setIconImage(image);
629
684
  try {
@@ -643,25 +698,25 @@ public class PSurfaceAWT extends PSurfaceNone {
643
698
 
644
699
  } catch (Exception e) { } // harmless; keep this to ourselves
645
700
 
646
- } else { // handle OS X differently
647
- if (!dockIconSpecified()) { // don't override existing -Xdock param
648
- // On OS X, set this for AWT surfaces, which handles the dock image
649
- // as well as the cmd-tab image that's shown. Just one size, I guess.
650
- URL url = PApplet.class.getResource("/icon/icon-512.png");
651
- // Seems dangerous to have this in code instead of using reflection, no?
652
- //ThinkDifferent.setIconImage(Toolkit.getDefaultToolkit().getImage(url));
653
- try {
654
- final String td = "processing.core.ThinkDifferent";
655
- Class<?> thinkDifferent =
656
- Thread.currentThread().getContextClassLoader().loadClass(td);
657
- Method method =
658
- thinkDifferent.getMethod("setIconImage", new Class[] { java.awt.Image.class });
659
- method.invoke(null, new Object[] { Toolkit.getDefaultToolkit().getImage(url) });
660
- } catch (Exception e) {
661
- e.printStackTrace(); // That's unfortunate
662
- }
663
- }
664
- }
701
+ // } else { // handle OS X differently
702
+ // if (!dockIconSpecified()) { // don't override existing -Xdock param
703
+ // // On OS X, set this for AWT surfaces, which handles the dock image
704
+ // // as well as the cmd-tab image that's shown. Just one size, I guess.
705
+ // URL url = PApplet.class.getResource("/icon/icon-512.png");
706
+ // // Seems dangerous to have this in code instead of using reflection, no?
707
+ // //ThinkDifferent.setIconImage(Toolkit.getDefaultToolkit().getImage(url));
708
+ // try {
709
+ // final String td = "processing.core.ThinkDifferent";
710
+ // Class<?> thinkDifferent =
711
+ // Thread.currentThread().getContextClassLoader().loadClass(td);
712
+ // Method method =
713
+ // thinkDifferent.getMethod("setIconImage", new Class[] { java.awt.Image.class });
714
+ // method.invoke(null, new Object[] { Toolkit.getDefaultToolkit().getImage(url) });
715
+ // } catch (Exception e) {
716
+ // e.printStackTrace(); // That's unfortunate
717
+ // }
718
+ // }
719
+ // }
665
720
  }
666
721
 
667
722
 
@@ -712,6 +767,11 @@ public class PSurfaceAWT extends PSurfaceNone {
712
767
 
713
768
 
714
769
  //public void placeFullScreen(boolean hideStop) {
770
+
771
+ /**
772
+ *
773
+ * @param stopColor
774
+ */
715
775
  @Override
716
776
  public void placePresent(int stopColor) {
717
777
  setFullFrame();
@@ -859,8 +919,12 @@ public class PSurfaceAWT extends PSurfaceNone {
859
919
  //frame.setVisible(true); // re-add native resources
860
920
  }
861
921
 
862
-
863
- @Override
922
+ /**
923
+ *
924
+ * @param location
925
+ * @param editorLocation
926
+ */
927
+ @Override
864
928
  public void placeWindow(int[] location, int[] editorLocation) {
865
929
  //Dimension window = setFrameSize(sketchWidth, sketchHeight);
866
930
  Dimension window = setFrameSize(); //sketchWidth, sketchHeight);
@@ -943,6 +1007,12 @@ public class PSurfaceAWT extends PSurfaceNone {
943
1007
 
944
1008
 
945
1009
  // needs to resize the frame, which will resize the canvas, and so on...
1010
+
1011
+ /**
1012
+ *
1013
+ * @param wide
1014
+ * @param high
1015
+ */
946
1016
  @Override
947
1017
  public void setSize(int wide, int high) {
948
1018
  // When the surface is set to resizable via surface.setResizable(true),
@@ -1235,6 +1305,7 @@ public class PSurfaceAWT extends PSurfaceNone {
1235
1305
  * Figure out how to process a mouse event. When loop() has been
1236
1306
  * called, the events will be queued up until drawing is complete.
1237
1307
  * If noLoop() has been called, then events will happen immediately.
1308
+ * @param nativeEvent
1238
1309
  */
1239
1310
  protected void nativeMouseEvent(java.awt.event.MouseEvent nativeEvent) {
1240
1311
  // the 'amount' is the number of button clicks for a click event,
@@ -1334,8 +1405,11 @@ public class PSurfaceAWT extends PSurfaceNone {
1334
1405
  peCount));
1335
1406
  }
1336
1407
 
1337
-
1338
- protected void nativeKeyEvent(java.awt.event.KeyEvent event) {
1408
+ /**
1409
+ *
1410
+ * @param event
1411
+ */
1412
+ protected void nativeKeyEvent(java.awt.event.KeyEvent event) {
1339
1413
  int peAction = 0;
1340
1414
  switch (event.getID()) {
1341
1415
  case java.awt.event.KeyEvent.KEY_PRESSED:
@@ -1367,6 +1441,10 @@ public class PSurfaceAWT extends PSurfaceNone {
1367
1441
 
1368
1442
 
1369
1443
  // listeners, for all my men!
1444
+
1445
+ /**
1446
+ *
1447
+ */
1370
1448
  protected void addListeners() {
1371
1449
 
1372
1450
  canvas.addMouseListener(new MouseListener() {
@@ -1480,8 +1558,11 @@ public class PSurfaceAWT extends PSurfaceNone {
1480
1558
  boolean cursorVisible = true;
1481
1559
  Cursor invisibleCursor;
1482
1560
 
1483
-
1484
- @Override
1561
+ /**
1562
+ *
1563
+ * @param kind
1564
+ */
1565
+ @Override
1485
1566
  public void setCursor(int kind) {
1486
1567
  // Swap the HAND cursor because MOVE doesn't seem to be available on OS X
1487
1568
  // https://github.com/processing/processing/issues/2358
@@ -1493,8 +1574,13 @@ public class PSurfaceAWT extends PSurfaceNone {
1493
1574
  this.cursorType = kind;
1494
1575
  }
1495
1576
 
1496
-
1497
- @Override
1577
+ /**
1578
+ *
1579
+ * @param img
1580
+ * @param x
1581
+ * @param y
1582
+ */
1583
+ @Override
1498
1584
  public void setCursor(PImage img, int x, int y) {
1499
1585
  // Don't set cursorType, instead use cursorType to save the last
1500
1586
  // regular cursor type used for when cursor() is called.
@@ -1514,8 +1600,10 @@ public class PSurfaceAWT extends PSurfaceNone {
1514
1600
  cursorVisible = true;
1515
1601
  }
1516
1602
 
1517
-
1518
- @Override
1603
+ /**
1604
+ *
1605
+ */
1606
+ @Override
1519
1607
  public void showCursor() {
1520
1608
  // Maybe should always set here? Seems dangerous, since it's likely that
1521
1609
  // Java will set the cursor to something else on its own, and the sketch
@@ -1526,8 +1614,10 @@ public class PSurfaceAWT extends PSurfaceNone {
1526
1614
  }
1527
1615
  }
1528
1616
 
1529
-
1530
- @Override
1617
+ /**
1618
+ *
1619
+ */
1620
+ @Override
1531
1621
  public void hideCursor() {
1532
1622
  // Because the OS may have shown the cursor on its own,
1533
1623
  // don't return if 'cursorVisible' is set to true. [rev 0216]
@@ -1548,8 +1638,11 @@ public class PSurfaceAWT extends PSurfaceNone {
1548
1638
  cursorVisible = false;
1549
1639
  }
1550
1640
 
1551
-
1552
- @Override
1641
+ /**
1642
+ *
1643
+ * @return
1644
+ */
1645
+ @Override
1553
1646
  public Thread createThread() {
1554
1647
  return new AnimationThread() {
1555
1648
  @Override