propane 3.4.0-java → 3.7.0.pre-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.
- checksums.yaml +4 -4
- data/.mvn/extensions.xml +1 -2
- data/.mvn/wrapper/MavenWrapperDownloader.java +2 -2
- data/.mvn/wrapper/maven-wrapper.properties +2 -2
- data/.travis.yml +2 -2
- data/CHANGELOG.md +12 -0
- data/Gemfile +2 -0
- data/README.md +17 -8
- data/Rakefile +10 -11
- data/bin/propane +3 -1
- data/lib/propane.rb +6 -4
- data/lib/propane/app.rb +20 -10
- data/lib/propane/creators/sketch_class.rb +7 -1
- data/lib/propane/creators/sketch_factory.rb +4 -2
- data/lib/propane/creators/sketch_writer.rb +1 -0
- data/lib/propane/helper_methods.rb +23 -24
- data/lib/propane/helpers/numeric.rb +2 -0
- data/lib/propane/helpers/version_error.rb +1 -0
- data/lib/propane/library.rb +5 -1
- data/lib/propane/library_loader.rb +2 -0
- data/lib/propane/native_folder.rb +10 -9
- data/lib/propane/native_loader.rb +3 -0
- data/lib/propane/runner.rb +14 -6
- data/lib/propane/version.rb +2 -1
- data/library/boids/boids.rb +21 -11
- data/library/color_group/color_group.rb +28 -0
- data/library/control_panel/control_panel.rb +8 -5
- data/library/dxf/dxf.rb +6 -0
- data/library/file_chooser/chooser.rb +10 -9
- data/library/file_chooser/file_chooser.rb +10 -9
- data/library/library_proxy/library_proxy.rb +2 -0
- data/library/net/net.rb +7 -0
- data/library/simplex_noise/simplex_noise.rb +2 -0
- data/library/slider/slider.rb +23 -22
- data/library/vector_utils/vector_utils.rb +4 -0
- data/library/video_event/video_event.rb +4 -1
- data/pom.rb +37 -36
- data/pom.xml +7 -7
- data/propane.gemspec +16 -12
- data/src/main/java/monkstone/ColorUtil.java +13 -1
- data/src/main/java/monkstone/MathToolModule.java +253 -203
- data/src/main/java/monkstone/PropaneLibrary.java +2 -2
- data/src/main/java/monkstone/fastmath/Deglut.java +1 -1
- data/src/main/java/monkstone/filechooser/Chooser.java +2 -1
- data/src/main/java/monkstone/noise/SimplexNoise.java +2 -2
- data/src/main/java/monkstone/slider/CustomHorizontalSlider.java +1 -1
- data/src/main/java/monkstone/slider/CustomVerticalSlider.java +1 -1
- data/src/main/java/monkstone/slider/SimpleHorizontalSlider.java +1 -1
- data/src/main/java/monkstone/slider/SimpleVerticalSlider.java +1 -1
- data/src/main/java/monkstone/slider/SliderBar.java +1 -1
- data/src/main/java/monkstone/slider/SliderGroup.java +1 -1
- data/src/main/java/monkstone/slider/WheelHandler.java +7 -6
- data/src/main/java/monkstone/vecmath/package-info.java +1 -1
- data/src/main/java/monkstone/vecmath/vec2/Vec2.java +1 -1
- data/src/main/java/monkstone/vecmath/vec3/Vec3.java +3 -3
- data/src/main/java/monkstone/videoevent/CaptureEvent.java +27 -0
- data/src/main/java/monkstone/videoevent/{VideoInterface.java → MovieEvent.java} +11 -27
- data/src/main/java/monkstone/videoevent/package-info.java +1 -1
- data/src/main/java/processing/awt/PGraphicsJava2D.java +781 -285
- data/src/main/java/processing/awt/PImageAWT.java +377 -0
- data/src/main/java/processing/awt/PShapeJava2D.java +56 -52
- data/src/main/java/processing/awt/PSurfaceAWT.java +309 -209
- data/src/main/java/processing/awt/ShimAWT.java +581 -0
- data/src/main/java/processing/core/PApplet.java +4510 -4503
- data/src/main/java/processing/core/PConstants.java +477 -447
- data/src/main/java/processing/core/PFont.java +914 -880
- data/src/main/java/processing/core/PGraphics.java +193 -177
- data/src/main/java/processing/core/PImage.java +611 -309
- data/src/main/java/processing/core/PMatrix.java +172 -159
- data/src/main/java/processing/core/PMatrix2D.java +478 -415
- data/src/main/java/processing/core/PMatrix3D.java +762 -735
- data/src/main/java/processing/core/PShape.java +2888 -2652
- data/src/main/java/processing/core/PShapeOBJ.java +97 -92
- data/src/main/java/processing/core/PShapeSVG.java +1705 -1490
- data/src/main/java/processing/core/PStyle.java +40 -37
- data/src/main/java/processing/core/PSurface.java +139 -97
- data/src/main/java/processing/core/PSurfaceNone.java +296 -218
- data/src/main/java/processing/core/PVector.java +997 -965
- data/src/main/java/processing/core/ThinkDifferent.java +15 -13
- data/src/main/java/processing/data/DoubleDict.java +756 -710
- data/src/main/java/processing/data/DoubleList.java +749 -696
- data/src/main/java/processing/data/FloatDict.java +748 -702
- data/src/main/java/processing/data/FloatList.java +751 -697
- data/src/main/java/processing/data/IntDict.java +720 -673
- data/src/main/java/processing/data/IntList.java +699 -633
- data/src/main/java/processing/data/JSONArray.java +931 -873
- data/src/main/java/processing/data/JSONObject.java +1262 -1165
- data/src/main/java/processing/data/JSONTokener.java +351 -341
- data/src/main/java/processing/data/LongDict.java +710 -663
- data/src/main/java/processing/data/LongList.java +701 -635
- data/src/main/java/processing/data/Sort.java +37 -41
- data/src/main/java/processing/data/StringDict.java +525 -486
- data/src/main/java/processing/data/StringList.java +626 -580
- data/src/main/java/processing/data/Table.java +3690 -3510
- data/src/main/java/processing/data/TableRow.java +182 -183
- data/src/main/java/processing/data/XML.java +957 -883
- data/src/main/java/processing/dxf/RawDXF.java +404 -0
- data/src/main/java/processing/event/Event.java +87 -67
- data/src/main/java/processing/event/KeyEvent.java +48 -41
- data/src/main/java/processing/event/MouseEvent.java +88 -113
- data/src/main/java/processing/event/TouchEvent.java +10 -6
- data/src/main/java/processing/javafx/PGraphicsFX2D.java +20 -345
- data/src/main/java/processing/javafx/PSurfaceFX.java +149 -121
- data/src/main/java/processing/net/Client.java +744 -0
- data/src/main/java/processing/net/Server.java +388 -0
- data/src/main/java/processing/opengl/FontTexture.java +289 -270
- data/src/main/java/processing/opengl/FrameBuffer.java +386 -364
- data/src/main/java/processing/opengl/LinePath.java +547 -500
- data/src/main/java/processing/opengl/LineStroker.java +588 -581
- data/src/main/java/processing/opengl/PGL.java +3047 -2914
- data/src/main/java/processing/opengl/PGraphics2D.java +408 -315
- data/src/main/java/processing/opengl/PGraphics3D.java +107 -72
- data/src/main/java/processing/opengl/PGraphicsOpenGL.java +12378 -12075
- data/src/main/java/processing/opengl/PJOGL.java +1753 -1670
- data/src/main/java/processing/opengl/PShader.java +1266 -1257
- data/src/main/java/processing/opengl/PShapeOpenGL.java +4678 -4580
- data/src/main/java/processing/opengl/PSurfaceJOGL.java +1114 -1027
- data/src/main/java/processing/opengl/Texture.java +1492 -1401
- data/src/main/java/processing/opengl/VertexBuffer.java +57 -55
- data/test/create_test.rb +21 -20
- data/test/deglut_spec_test.rb +4 -2
- data/test/helper_methods_test.rb +49 -20
- data/test/math_tool_test.rb +39 -32
- data/test/native_folder.rb +47 -0
- data/test/respond_to_test.rb +3 -2
- data/test/sketches/key_event.rb +2 -2
- data/test/sketches/library/my_library/my_library.rb +3 -0
- data/test/test_helper.rb +2 -0
- data/test/vecmath_spec_test.rb +35 -22
- data/vendors/Rakefile +33 -62
- metadata +56 -48
- data/src/main/java/processing/core/util/image/ImageLoadFacade.java +0 -161
- data/src/main/java/processing/core/util/image/ImageSaveFacade.java +0 -169
- data/src/main/java/processing/core/util/image/constants/TifConstants.java +0 -45
- data/src/main/java/processing/core/util/image/load/AwtImageLoadStrategy.java +0 -80
- data/src/main/java/processing/core/util/image/load/Base64StringImageLoadStrategy.java +0 -73
- data/src/main/java/processing/core/util/image/load/FallbackImageLoadStrategy.java +0 -70
- data/src/main/java/processing/core/util/image/load/ImageIoImageLoadStrategy.java +0 -132
- data/src/main/java/processing/core/util/image/load/ImageLoadStrategy.java +0 -48
- data/src/main/java/processing/core/util/image/load/ImageLoadUtil.java +0 -45
- data/src/main/java/processing/core/util/image/load/TgaImageLoadStrategy.java +0 -255
- data/src/main/java/processing/core/util/image/load/TiffImageLoadStrategy.java +0 -98
- data/src/main/java/processing/core/util/image/save/ImageSaveStrategy.java +0 -49
- data/src/main/java/processing/core/util/image/save/ImageSaveUtil.java +0 -48
- data/src/main/java/processing/core/util/image/save/ImageWriterImageSaveStrategy.java +0 -179
- data/src/main/java/processing/core/util/image/save/SaveImageException.java +0 -41
- data/src/main/java/processing/core/util/image/save/TgaImageSaveStrategy.java +0 -198
- data/src/main/java/processing/core/util/image/save/TiffImageSaveStrategy.java +0 -91
- data/src/main/java/processing/core/util/image/save/TiffNakedFilenameImageSaveStrategy.java +0 -57
- data/src/main/java/processing/core/util/io/InputFactory.java +0 -285
- data/src/main/java/processing/core/util/io/PathUtil.java +0 -109
- data/src/main/java/processing/opengl/shaders/LightVert-brcm.glsl +0 -154
- data/src/main/java/processing/opengl/shaders/LightVert-vc4.glsl +0 -154
- data/src/main/java/processing/opengl/shaders/TexLightVert-brcm.glsl +0 -160
- data/src/main/java/processing/opengl/shaders/TexLightVert-vc4.glsl +0 -160
@@ -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
|
-
}
|
@@ -1,45 +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.constants;
|
26
|
-
|
27
|
-
|
28
|
-
/**
|
29
|
-
* Constants to use for tif images.
|
30
|
-
*/
|
31
|
-
public class TifConstants {
|
32
|
-
|
33
|
-
public static final byte TIFF_HEADER[] = {
|
34
|
-
77, 77, 0, 42, 0, 0, 0, 8, 0, 9, 0, -2, 0, 4, 0, 0, 0, 1, 0, 0,
|
35
|
-
0, 0, 1, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 3, 0, 0, 0, 1,
|
36
|
-
0, 0, 0, 0, 1, 2, 0, 3, 0, 0, 0, 3, 0, 0, 0, 122, 1, 6, 0, 3, 0,
|
37
|
-
0, 0, 1, 0, 2, 0, 0, 1, 17, 0, 4, 0, 0, 0, 1, 0, 0, 3, 0, 1, 21,
|
38
|
-
0, 3, 0, 0, 0, 1, 0, 3, 0, 0, 1, 22, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0,
|
39
|
-
1, 23, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 8, 0, 8
|
40
|
-
};
|
41
|
-
|
42
|
-
public static final String TIFF_ERROR =
|
43
|
-
"Error: Processing can only read its own TIFF files.";
|
44
|
-
|
45
|
-
}
|
@@ -1,80 +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.load;
|
26
|
-
|
27
|
-
import processing.core.PApplet;
|
28
|
-
import processing.core.PImage;
|
29
|
-
|
30
|
-
import javax.swing.*;
|
31
|
-
import java.awt.*;
|
32
|
-
import java.awt.color.ColorSpace;
|
33
|
-
import java.awt.image.BufferedImage;
|
34
|
-
|
35
|
-
|
36
|
-
/**
|
37
|
-
* Strategy to load an image through ImageIcon / abstract window toolkit.
|
38
|
-
*/
|
39
|
-
public class AwtImageLoadStrategy implements ImageLoadStrategy {
|
40
|
-
|
41
|
-
@Override
|
42
|
-
public PImage load(PApplet pApplet, String path, String extension) {
|
43
|
-
byte bytes[] = pApplet.loadBytes(path);
|
44
|
-
if (bytes == null) {
|
45
|
-
return null;
|
46
|
-
} else {
|
47
|
-
//Image awtImage = Toolkit.getDefaultToolkit().createImage(bytes);
|
48
|
-
Image awtImage = new ImageIcon(bytes).getImage();
|
49
|
-
|
50
|
-
if (awtImage instanceof BufferedImage) {
|
51
|
-
BufferedImage buffImage = (BufferedImage) awtImage;
|
52
|
-
int space = buffImage.getColorModel().getColorSpace().getType();
|
53
|
-
if (space == ColorSpace.TYPE_CMYK) {
|
54
|
-
System.err.println(path + " is a CMYK image, " +
|
55
|
-
"only RGB images are supported.");
|
56
|
-
return null;
|
57
|
-
/*
|
58
|
-
// wishful thinking, appears to not be supported
|
59
|
-
// https://community.oracle.com/thread/1272045?start=0&tstart=0
|
60
|
-
BufferedImage destImage =
|
61
|
-
new BufferedImage(buffImage.getWidth(),
|
62
|
-
buffImage.getHeight(),
|
63
|
-
BufferedImage.TYPE_3BYTE_BGR);
|
64
|
-
ColorConvertOp op = new ColorConvertOp(null);
|
65
|
-
op.filter(buffImage, destImage);
|
66
|
-
image = new PImage(destImage);
|
67
|
-
*/
|
68
|
-
}
|
69
|
-
}
|
70
|
-
|
71
|
-
boolean checkAlpha = extension.equalsIgnoreCase("gif")
|
72
|
-
|| extension.equalsIgnoreCase("png")
|
73
|
-
|| extension.equalsIgnoreCase("unknown");
|
74
|
-
|
75
|
-
PImage image = new PImage(awtImage, checkAlpha, pApplet);
|
76
|
-
return image;
|
77
|
-
}
|
78
|
-
}
|
79
|
-
|
80
|
-
}
|