propane 3.4.0-java → 3.4.1-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/.mvn/extensions.xml +1 -2
  3. data/.travis.yml +2 -2
  4. data/CHANGELOG.md +2 -0
  5. data/README.md +12 -7
  6. data/Rakefile +2 -2
  7. data/lib/propane.rb +2 -2
  8. data/lib/propane/app.rb +18 -9
  9. data/lib/propane/helper_methods.rb +1 -1
  10. data/lib/propane/runner.rb +1 -1
  11. data/lib/propane/version.rb +1 -1
  12. data/library/color_group/color_group.rb +26 -0
  13. data/library/dxf/dxf.rb +4 -0
  14. data/library/net/net.rb +5 -0
  15. data/library/video_event/video_event.rb +2 -1
  16. data/pom.rb +3 -3
  17. data/pom.xml +3 -3
  18. data/propane.gemspec +1 -1
  19. data/src/main/java/japplemenubar/JAppleMenuBar.java +3 -3
  20. data/src/main/java/monkstone/ColorUtil.java +14 -0
  21. data/src/main/java/monkstone/MathToolModule.java +243 -194
  22. data/src/main/java/monkstone/filechooser/Chooser.java +1 -0
  23. data/src/main/java/monkstone/slider/WheelHandler.java +6 -5
  24. data/src/main/java/monkstone/vecmath/vec3/Vec3.java +3 -2
  25. data/src/main/java/monkstone/videoevent/CaptureEvent.java +27 -0
  26. data/src/main/java/monkstone/videoevent/{VideoInterface.java → MovieEvent.java} +10 -26
  27. data/src/main/java/processing/awt/PSurfaceAWT.java +1 -1
  28. data/src/main/java/processing/core/PApplet.java +1236 -599
  29. data/src/main/java/processing/core/PGraphics.java +59 -59
  30. data/src/main/java/processing/core/PImage.java +528 -129
  31. data/src/main/java/processing/core/PShape.java +10 -10
  32. data/src/main/java/processing/core/PVector.java +2 -2
  33. data/src/main/java/processing/core/ThinkDifferent.java +5 -7
  34. data/src/main/java/processing/dxf/RawDXF.java +404 -0
  35. data/src/main/java/processing/net/Client.java +744 -0
  36. data/src/main/java/processing/net/Server.java +388 -0
  37. data/src/main/java/processing/opengl/FontTexture.java +19 -20
  38. data/src/main/java/processing/opengl/FrameBuffer.java +27 -17
  39. data/src/main/java/processing/opengl/LinePath.java +512 -508
  40. data/src/main/java/processing/opengl/PGL.java +3106 -3066
  41. data/src/main/java/processing/opengl/PGraphicsOpenGL.java +4 -4
  42. data/src/main/java/processing/opengl/PShader.java +1442 -1341
  43. data/vendors/Rakefile +3 -27
  44. metadata +12 -25
  45. data/src/main/java/processing/core/util/image/ImageLoadFacade.java +0 -161
  46. data/src/main/java/processing/core/util/image/ImageSaveFacade.java +0 -169
  47. data/src/main/java/processing/core/util/image/constants/TifConstants.java +0 -45
  48. data/src/main/java/processing/core/util/image/load/AwtImageLoadStrategy.java +0 -80
  49. data/src/main/java/processing/core/util/image/load/Base64StringImageLoadStrategy.java +0 -73
  50. data/src/main/java/processing/core/util/image/load/FallbackImageLoadStrategy.java +0 -70
  51. data/src/main/java/processing/core/util/image/load/ImageIoImageLoadStrategy.java +0 -132
  52. data/src/main/java/processing/core/util/image/load/ImageLoadStrategy.java +0 -48
  53. data/src/main/java/processing/core/util/image/load/ImageLoadUtil.java +0 -45
  54. data/src/main/java/processing/core/util/image/load/TgaImageLoadStrategy.java +0 -255
  55. data/src/main/java/processing/core/util/image/load/TiffImageLoadStrategy.java +0 -98
  56. data/src/main/java/processing/core/util/image/save/ImageSaveStrategy.java +0 -49
  57. data/src/main/java/processing/core/util/image/save/ImageSaveUtil.java +0 -48
  58. data/src/main/java/processing/core/util/image/save/ImageWriterImageSaveStrategy.java +0 -179
  59. data/src/main/java/processing/core/util/image/save/SaveImageException.java +0 -41
  60. data/src/main/java/processing/core/util/image/save/TgaImageSaveStrategy.java +0 -198
  61. data/src/main/java/processing/core/util/image/save/TiffImageSaveStrategy.java +0 -91
  62. data/src/main/java/processing/core/util/image/save/TiffNakedFilenameImageSaveStrategy.java +0 -57
  63. data/src/main/java/processing/core/util/io/InputFactory.java +0 -285
  64. data/src/main/java/processing/core/util/io/PathUtil.java +0 -109
data/vendors/Rakefile CHANGED
@@ -8,9 +8,9 @@ EOS
8
8
  SOUND = 'sound.zip'.freeze
9
9
  SOUND_VERSION = 'v1.3.2' # version 1.3.2
10
10
  GLVIDEO = 'processing-glvideo.zip'
11
- VIDEO = 'video-2.zip'
12
- VIDEO_VERSION = '2' # version 1.0.1
13
- EXAMPLES = '2.5'.freeze
11
+ VIDEO = 'video-2.0-beta4.zip'
12
+ VIDEO_VERSION = 'r6-v2.0-beta4'
13
+ EXAMPLES = '2.6'.freeze
14
14
  HOME_DIR = ENV['HOME']
15
15
  MAC_OR_LINUX = /linux|mac|darwin/ =~ RbConfig::CONFIG['host_os']
16
16
 
@@ -40,10 +40,6 @@ task download_and_copy_sound: [:init_dir, :download_sound, :copy_sound, :clobber
40
40
  desc 'download and copy video library to ~/.propane'
41
41
  task download_and_copy_video: [:init_dir, :download_video, :copy_video, :clobber]
42
42
 
43
- desc 'download and copy glvideo library to ~/.propane'
44
- task download_and_copy_glvideo: [:init_dir, :download_glvideo, :copy_glvideo, :clobber]
45
-
46
-
47
43
  desc 'download sound library'
48
44
  task :download_sound do
49
45
  wget_base = 'wget https://github.com/processing/processing-sound'
@@ -55,17 +51,6 @@ task :download_sound do
55
51
  end
56
52
  end
57
53
 
58
- desc 'download glvideo library'
59
- task :download_glvideo do
60
- wget_base = 'wget https://github.com/gohai/processing-glvideo'
61
- wget_string = [wget_base, 'releases/download/latest', GLVIDEO].join('/')
62
- begin
63
- sh wget_string
64
- rescue
65
- warn(WARNING)
66
- end
67
- end
68
-
69
54
  desc 'download video library'
70
55
  task :download_video do
71
56
  wget_base = 'wget https://github.com/processing/processing-video'
@@ -116,12 +101,3 @@ task :copy_video => VIDEO do
116
101
  sh "cp -r video #{HOME_DIR}/.propane/libraries/video"
117
102
  sh 'rm -r video'
118
103
  end
119
-
120
- desc 'copy glvideo library'
121
- task :copy_glvideo => GLVIDEO do
122
- directory "~/.propane/libraries/glvideo"
123
- sh "unzip #{GLVIDEO}"
124
- sh "rm -r #{HOME_DIR}/.propane/libraries/glvideo" if File.exist? "#{HOME_DIR}/.propane/libraries/glvideo"
125
- sh "cp -r glvideo #{HOME_DIR}/.propane/libraries/glvideo"
126
- sh 'rm -r glvideo'
127
- end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: propane
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.0
4
+ version: 3.4.1
5
5
  platform: java
6
6
  authors:
7
7
  - monkstone
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-01 00:00:00.000000000 Z
11
+ date: 2019-12-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -91,7 +91,7 @@ files:
91
91
  - lib/jogl-all-natives-macosx-universal.jar
92
92
  - lib/jogl-all-natives-windows-amd64.jar
93
93
  - lib/jogl-all.jar
94
- - lib/propane-3.4.0.jar
94
+ - lib/propane-3.4.1.jar
95
95
  - lib/propane.rb
96
96
  - lib/propane/app.rb
97
97
  - lib/propane/creators/sketch_class.rb
@@ -107,11 +107,14 @@ files:
107
107
  - lib/propane/runner.rb
108
108
  - lib/propane/version.rb
109
109
  - library/boids/boids.rb
110
+ - library/color_group/color_group.rb
110
111
  - library/control_panel/control_panel.rb
112
+ - library/dxf/dxf.rb
111
113
  - library/file_chooser/chooser.rb
112
114
  - library/file_chooser/file_chooser.rb
113
115
  - library/library_proxy/README.md
114
116
  - library/library_proxy/library_proxy.rb
117
+ - library/net/net.rb
115
118
  - library/simplex_noise/simplex_noise.rb
116
119
  - library/slider/slider.rb
117
120
  - library/vector_utils/vector_utils.rb
@@ -149,7 +152,8 @@ files:
149
152
  - src/main/java/monkstone/vecmath/vec2/package-info.java
150
153
  - src/main/java/monkstone/vecmath/vec3/Vec3.java
151
154
  - src/main/java/monkstone/vecmath/vec3/package-info.java
152
- - src/main/java/monkstone/videoevent/VideoInterface.java
155
+ - src/main/java/monkstone/videoevent/CaptureEvent.java
156
+ - src/main/java/monkstone/videoevent/MovieEvent.java
153
157
  - src/main/java/monkstone/videoevent/package-info.java
154
158
  - src/main/java/processing/awt/PGraphicsJava2D.java
155
159
  - src/main/java/processing/awt/PShapeJava2D.java
@@ -170,26 +174,6 @@ files:
170
174
  - src/main/java/processing/core/PSurfaceNone.java
171
175
  - src/main/java/processing/core/PVector.java
172
176
  - src/main/java/processing/core/ThinkDifferent.java
173
- - src/main/java/processing/core/util/image/ImageLoadFacade.java
174
- - src/main/java/processing/core/util/image/ImageSaveFacade.java
175
- - src/main/java/processing/core/util/image/constants/TifConstants.java
176
- - src/main/java/processing/core/util/image/load/AwtImageLoadStrategy.java
177
- - src/main/java/processing/core/util/image/load/Base64StringImageLoadStrategy.java
178
- - src/main/java/processing/core/util/image/load/FallbackImageLoadStrategy.java
179
- - src/main/java/processing/core/util/image/load/ImageIoImageLoadStrategy.java
180
- - src/main/java/processing/core/util/image/load/ImageLoadStrategy.java
181
- - src/main/java/processing/core/util/image/load/ImageLoadUtil.java
182
- - src/main/java/processing/core/util/image/load/TgaImageLoadStrategy.java
183
- - src/main/java/processing/core/util/image/load/TiffImageLoadStrategy.java
184
- - src/main/java/processing/core/util/image/save/ImageSaveStrategy.java
185
- - src/main/java/processing/core/util/image/save/ImageSaveUtil.java
186
- - src/main/java/processing/core/util/image/save/ImageWriterImageSaveStrategy.java
187
- - src/main/java/processing/core/util/image/save/SaveImageException.java
188
- - src/main/java/processing/core/util/image/save/TgaImageSaveStrategy.java
189
- - src/main/java/processing/core/util/image/save/TiffImageSaveStrategy.java
190
- - src/main/java/processing/core/util/image/save/TiffNakedFilenameImageSaveStrategy.java
191
- - src/main/java/processing/core/util/io/InputFactory.java
192
- - src/main/java/processing/core/util/io/PathUtil.java
193
177
  - src/main/java/processing/data/DoubleDict.java
194
178
  - src/main/java/processing/data/DoubleList.java
195
179
  - src/main/java/processing/data/FloatDict.java
@@ -207,12 +191,15 @@ files:
207
191
  - src/main/java/processing/data/Table.java
208
192
  - src/main/java/processing/data/TableRow.java
209
193
  - src/main/java/processing/data/XML.java
194
+ - src/main/java/processing/dxf/RawDXF.java
210
195
  - src/main/java/processing/event/Event.java
211
196
  - src/main/java/processing/event/KeyEvent.java
212
197
  - src/main/java/processing/event/MouseEvent.java
213
198
  - src/main/java/processing/event/TouchEvent.java
214
199
  - src/main/java/processing/javafx/PGraphicsFX2D.java
215
200
  - src/main/java/processing/javafx/PSurfaceFX.java
201
+ - src/main/java/processing/net/Client.java
202
+ - src/main/java/processing/net/Server.java
216
203
  - src/main/java/processing/opengl/FontTexture.java
217
204
  - src/main/java/processing/opengl/FrameBuffer.java
218
205
  - src/main/java/processing/opengl/LinePath.java
@@ -291,7 +278,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
291
278
  version: '0'
292
279
  requirements:
293
280
  - java runtime >= 11.0.2+
294
- rubygems_version: 3.0.4
281
+ rubygems_version: 3.0.6
295
282
  signing_key:
296
283
  specification_version: 4
297
284
  summary: ruby implementation of processing-4.0 on MacOS, linux and windows (64bit
@@ -1,161 +0,0 @@
1
- /* -*- mode: java; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2
-
3
- /*
4
- Part of the Processing project - http://processing.org
5
-
6
- Copyright (c) 2012-18 The Processing Foundation
7
- Copyright (c) 2004-12 Ben Fry and Casey Reas
8
- Copyright (c) 2001-04 Massachusetts Institute of Technology
9
-
10
- This library is free software; you can redistribute it and/or
11
- modify it under the terms of the GNU Lesser General Public
12
- License as published by the Free Software Foundation, version 2.1.
13
-
14
- This library is distributed in the hope that it will be useful,
15
- but WITHOUT ANY WARRANTY; without even the implied warranty of
16
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
- Lesser General Public License for more details.
18
-
19
- You should have received a copy of the GNU Lesser General
20
- Public License along with this library; if not, write to the
21
- Free Software Foundation, Inc., 59 Temple Place, Suite 330,
22
- Boston, MA 02111-1307 USA
23
- */
24
-
25
- package processing.core.util.image;
26
-
27
- import processing.core.PApplet;
28
- import processing.core.PImage;
29
- import processing.core.util.image.load.*;
30
- import processing.core.util.io.PathUtil;
31
-
32
- import java.util.HashMap;
33
- import java.util.Map;
34
- import java.util.concurrent.atomic.AtomicReference;
35
-
36
-
37
- /**
38
- * Utility for loading images either from file system or string encoding using a set of strategies.
39
- */
40
- public class ImageLoadFacade {
41
-
42
- private static final AtomicReference<ImageLoadFacade> instance = new AtomicReference<>(null);
43
-
44
- private static final String PREFIX_BASE64_STRING_IMAGE = "data:image";
45
- private static final String PREFIX_FILE_PATH = "file://";
46
-
47
- private final Map<String, ImageLoadStrategy> loadStrategies;
48
- private final ImageLoadStrategy defaultImageLoadStrategy;
49
-
50
- /**
51
- * Get a shared instance of this singleton.
52
- *
53
- * @return Shared instance of this singleton.
54
- */
55
- public static ImageLoadFacade get() {
56
- instance.compareAndSet(null, new ImageLoadFacade());
57
- return instance.get();
58
- }
59
-
60
- /**
61
- * Hidden constructor. Clients should use get().
62
- */
63
- private ImageLoadFacade() {
64
- loadStrategies = new HashMap<>();
65
-
66
- loadStrategies.put("base64", new Base64StringImageLoadStrategy());
67
-
68
- loadStrategies.put("tga", new TgaImageLoadStrategy());
69
-
70
- ImageLoadStrategy tifImageLoadStrategy = new TiffImageLoadStrategy();
71
- loadStrategies.put("tif", tifImageLoadStrategy);
72
- loadStrategies.put("tiff", tifImageLoadStrategy);
73
-
74
- ImageLoadStrategy awtImageLoadStrategy = new AwtImageLoadStrategy();
75
- defaultImageLoadStrategy = new ImageIoImageLoadStrategy();
76
-
77
- ImageLoadStrategy awtFallbackStrategy = new FallbackImageLoadStrategy(
78
- awtImageLoadStrategy,
79
- defaultImageLoadStrategy
80
- );
81
- loadStrategies.put("jpg", awtFallbackStrategy);
82
- loadStrategies.put("jpeg", awtFallbackStrategy);
83
- loadStrategies.put("gif", awtFallbackStrategy);
84
- loadStrategies.put("png", awtFallbackStrategy);
85
- loadStrategies.put("unknown", awtFallbackStrategy);
86
- }
87
-
88
- /**
89
- * Load an image embedded within an SVG string.
90
- *
91
- * @param pApplet The PApplet on whose behalf an SVG is being parsed. This must be given so that
92
- * image can be retrieved in the case of sketch relative file.
93
- * @param svgImageStr The SVG string to load which can be data:image or file://.
94
- * @return The image loaded as a PImage.
95
- */
96
- public PImage loadFromSvg(PApplet pApplet, String svgImageStr) {
97
- if (svgImageStr == null) {
98
- return null;
99
- }
100
-
101
- if (svgImageStr.startsWith(PREFIX_BASE64_STRING_IMAGE)) {
102
- String[] parts = svgImageStr.split(";base64,");
103
- String extension = parts[0].substring(11);
104
- String encodedData = parts[1];
105
- return loadStrategies.get("base64").load(pApplet, encodedData, extension);
106
- } else if (svgImageStr.startsWith(PREFIX_FILE_PATH)) {
107
- String filePath = svgImageStr.substring(PREFIX_FILE_PATH.length());
108
- return loadFromFile(pApplet, filePath);
109
- } else {
110
- return null;
111
- }
112
- }
113
-
114
- /**
115
- * Load an image from a file.
116
- *
117
- * @param pApplet The PApplet through which the image should be retrieved in the case of sketch
118
- * relative file (data folder for example).
119
- * @param path The path to the file to be opened.
120
- * @return The image loaded.
121
- */
122
- public PImage loadFromFile(PApplet pApplet, String path) {
123
- return loadFromFile(pApplet, path, null);
124
- }
125
-
126
- /**
127
- * Load an image from a file using the given file extension.
128
- *
129
- * @param pApplet The PApplet through which the image should be retrieved in the case of sketch
130
- * relative file (data folder for example).
131
- * @param path The path to the file to be opened.
132
- * @param extension The extension with which the image should be loaded like "png".
133
- * @return The image loaded.
134
- */
135
- public PImage loadFromFile(PApplet pApplet, String path, String extension) {
136
- if (extension == null) {
137
- extension = PathUtil.parseExtension(path);
138
- }
139
-
140
- // just in case. them users will try anything!
141
- extension = PathUtil.cleanExtension(extension);
142
-
143
- // Find strategy for loading
144
- ImageLoadStrategy imageLoadStrategy = loadStrategies.getOrDefault(
145
- extension,
146
- defaultImageLoadStrategy
147
- );
148
-
149
- // Load image
150
- PImage resultImage = imageLoadStrategy.load(pApplet, path, extension);
151
-
152
- // Report error or return
153
- if (resultImage == null) {
154
- System.err.println("Could not find a method to load " + path);
155
- return null;
156
- } else {
157
- return resultImage;
158
- }
159
- }
160
-
161
- }
@@ -1,169 +0,0 @@
1
- /* -*- mode: java; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2
-
3
- /*
4
- Part of the Processing project - http://processing.org
5
-
6
- Copyright (c) 2012-18 The Processing Foundation
7
- Copyright (c) 2004-12 Ben Fry and Casey Reas
8
- Copyright (c) 2001-04 Massachusetts Institute of Technology
9
-
10
- This library is free software; you can redistribute it and/or
11
- modify it under the terms of the GNU Lesser General Public
12
- License as published by the Free Software Foundation, version 2.1.
13
-
14
- This library is distributed in the hope that it will be useful,
15
- but WITHOUT ANY WARRANTY; without even the implied warranty of
16
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
- Lesser General Public License for more details.
18
-
19
- You should have received a copy of the GNU Lesser General
20
- Public License along with this library; if not, write to the
21
- Free Software Foundation, Inc., 59 Temple Place, Suite 330,
22
- Boston, MA 02111-1307 USA
23
- */
24
-
25
- package processing.core.util.image;
26
-
27
- import processing.core.PApplet;
28
- import processing.core.PGraphics;
29
- import processing.core.util.image.save.*;
30
- import processing.core.util.io.PathUtil;
31
-
32
- import java.io.File;
33
- import java.io.IOException;
34
- import java.util.HashMap;
35
- import java.util.Map;
36
- import java.util.concurrent.atomic.AtomicReference;
37
-
38
-
39
- /**
40
- * Facade to load PImages from various sources.
41
- */
42
- public class ImageSaveFacade {
43
-
44
- private static final AtomicReference<ImageSaveFacade> instance = new AtomicReference<>(null);
45
-
46
- private final Map<String, ImageSaveStrategy> saveStrategies;
47
- private final ImageSaveStrategy defaultImageSaveStrategy;
48
-
49
- /**
50
- * Get a shared instance of this singleton.
51
- *
52
- * @return Shared instance of ImageSaveFacade.
53
- */
54
- public static ImageSaveFacade get() {
55
- instance.compareAndSet(null, new ImageSaveFacade());
56
- return instance.get();
57
- }
58
-
59
- /**
60
- * Private hidden constructor requiring clients to use get().
61
- */
62
- private ImageSaveFacade() {
63
- saveStrategies = new HashMap<>();
64
-
65
- ImageSaveStrategy imageWriterImageSaveStrategy = new ImageWriterImageSaveStrategy();
66
- for (String format : javax.imageio.ImageIO.getWriterFormatNames()) {
67
- saveStrategies.put(format.toLowerCase(), imageWriterImageSaveStrategy);
68
- }
69
-
70
- ImageSaveStrategy tgaImageSaveStrategy = new TgaImageSaveStrategy();
71
- saveStrategies.put("tga", tgaImageSaveStrategy);
72
-
73
- ImageSaveStrategy tiffImageSaveStrategy = new TiffImageSaveStrategy();
74
- saveStrategies.put("tiff", tiffImageSaveStrategy);
75
-
76
- defaultImageSaveStrategy = new TiffNakedFilenameImageSaveStrategy();
77
- }
78
-
79
- /**
80
- * Save a raw representation of pixel values to a file given that file's path.
81
- *
82
- * @param pixels The raw representation of the image to save.
83
- * @param pixelWidth Width of the image in pixels.
84
- * @param pixelheight Height of the image in pixels.
85
- * @param format Format corresponding to value in PConstants like PConstants.ARGB.
86
- * @param filename The path at which the file should be saved like "test/path/output.png".
87
- */
88
- public boolean save(int[] pixels, int pixelWidth, int pixelHeight, int format, String filename) {
89
- return save(
90
- pixels,
91
- pixelWidth,
92
- pixelHeight,
93
- format,
94
- filename,
95
- null
96
- );
97
- }
98
-
99
- /**
100
- * Save a raw representation of pixel values to a file given that file's path.
101
- *
102
- * @param pixels The raw representation of the image to save.
103
- * @param pixelWidth Width of the image in pixels.
104
- * @param pixelheight Height of the image in pixels.
105
- * @param format Format corresponding to value in PConstants like PConstants.ARGB.
106
- * @param filename The path at which the file should be saved like "test/path/output.png".
107
- * @param pApplet The applet through which files should be saved when using sketch relative paths.
108
- * Can pass null if using absolute paths.
109
- */
110
- public boolean save(int[] pixels, int pixelWidth, int pixelHeight, int format, String filename,
111
- PApplet pApplet) {
112
-
113
- filename = preparePath(pApplet, filename);
114
-
115
- String extension = PathUtil.parseExtension(filename);
116
-
117
- ImageSaveStrategy imageSaveStrategy = saveStrategies.getOrDefault(
118
- extension,
119
- defaultImageSaveStrategy
120
- );
121
-
122
- try {
123
- return imageSaveStrategy.save(
124
- pixels,
125
- pixelWidth,
126
- pixelHeight,
127
- format,
128
- filename
129
- );
130
- } catch (IOException e) {
131
- System.err.println("Error while saving image.");
132
- e.printStackTrace();
133
- return false;
134
- } catch (SaveImageException e) {
135
- PGraphics.showException(e.getMessage());
136
- return false;
137
- }
138
-
139
- }
140
-
141
- /**
142
- * Ensure that the path is ready so that a file can be saved.
143
- *
144
- * @param pApplet The applet through which files should be saved when using sketch relative paths.
145
- * Can pass null if using absolute paths.
146
- * @param filename The filename that will be written and for which a path needs to be prepared.
147
- * @return Completed path useable for writing like a file path that has been made relative to
148
- * the sketch folder.
149
- */
150
- private String preparePath(PApplet pApplet, String filename) {
151
- if (pApplet != null) {
152
- return pApplet.savePath(filename);
153
- } else {
154
- File file = new File(filename);
155
- if (file.isAbsolute()) {
156
- // make sure that the intermediate folders have been created
157
- PathUtil.createPath(file);
158
- return filename;
159
- } else {
160
- String msg =
161
- "PImage.save() requires an absolute path. " +
162
- "Use createImage(), or pass savePath() to save().";
163
-
164
- throw new SaveImageException(msg);
165
- }
166
- }
167
- }
168
-
169
- }