mirror of
https://github.com/processing/processing4.git
synced 2026-06-16 04:26:26 +02:00
fix transparency with new imageio (bug #350), add bug num to revisions.txt for lighting stuff
This commit is contained in:
@@ -140,6 +140,7 @@ Lots of OpenGL bug fixes, and some big OS X fixes too.
|
||||
http://dev.processing.org/bugs/show_bug.cgi?id=189
|
||||
|
||||
+ Fix lighting issues with that were introduced in revision 0109.
|
||||
http://dev.processing.org/bugs/show_bug.cgi?id=316
|
||||
|
||||
+ Now checking maximum supported texture sizes for the video card
|
||||
when using OpenGL. It will now throw a RuntimeException to avoid
|
||||
|
||||
+20
-12
@@ -3056,6 +3056,12 @@ public class PApplet extends Applet
|
||||
* <TT>println(javax.imageio.ImageIO.getReaderFormatNames())</TT>
|
||||
*/
|
||||
public PImage loadImage(String filename) {
|
||||
// it's not clear whether this method is more efficient for
|
||||
// loading gif, jpeg, and png data than the standard toolkit function,
|
||||
// in fact it may even be identical. but who knows, with any luck
|
||||
// it may even fix the image loading problems from bug #279.
|
||||
// http://dev.processing.org/bugs/show_bug.cgi?id=279
|
||||
// (if anyone reading this knows for certain, please post)
|
||||
if (PApplet.javaVersion >= 1.4f) {
|
||||
if (loadImageFormats == null) {
|
||||
//loadImageFormats = javax.imageio.ImageIO.getReaderFormatNames();
|
||||
@@ -3112,21 +3118,15 @@ public class PApplet extends Applet
|
||||
// if it's a .gif image, test to see if it has transparency
|
||||
if ((filename.toLowerCase().endsWith(".gif")) ||
|
||||
(filename.toLowerCase().endsWith(".png"))) {
|
||||
for (int i = 0; i < image.pixels.length; i++) {
|
||||
// since transparency is often at corners, hopefully this
|
||||
// will find a non-transparent pixel quickly and exit
|
||||
if ((image.pixels[i] & 0xff000000) != 0xff000000) {
|
||||
image.format = ARGB;
|
||||
break;
|
||||
}
|
||||
}
|
||||
image.checkAlpha();
|
||||
}
|
||||
return image;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* Use Java 1.4 ImageIO methods to load an image. All done via reflection
|
||||
* in order to maintain compatability with previous releases.
|
||||
*/
|
||||
protected PImage loadImageIO(String filename) {
|
||||
InputStream stream = openStream(filename);
|
||||
@@ -3150,14 +3150,17 @@ public class PApplet extends Applet
|
||||
Method getHeightMethod =
|
||||
biClass.getMethod("getHeight", (Class[]) null);
|
||||
Integer hi = (Integer) getHeightMethod.invoke(bimage, (Object[]) null);
|
||||
//int h = hi.intValue();
|
||||
|
||||
Method getWidthMethod =
|
||||
biClass.getMethod("getWidth", (Class[]) null);
|
||||
Integer wi = (Integer) getWidthMethod.invoke(bimage, (Object[]) null);
|
||||
//int w = wi.intValue();
|
||||
|
||||
// need to call getType() on the image to see if RGB or ARGB
|
||||
// was gonna call getType() on the image to see if RGB or ARGB,
|
||||
// but it's not actually useful, since gif images will come through
|
||||
// as TYPE_BYTE_INDEXED, which means it'll still have to check for
|
||||
// the transparency. also, would have to iterate through all the other
|
||||
// types and guess whether alpha was in there, so.. just gonna stick
|
||||
// with the old method.
|
||||
|
||||
PImage outgoing = new PImage(wi.intValue(), hi.intValue());
|
||||
|
||||
@@ -3171,6 +3174,11 @@ public class PApplet extends Applet
|
||||
new Integer(outgoing.width), new Integer(outgoing.height),
|
||||
outgoing.pixels, new Integer(0), new Integer(outgoing.width)
|
||||
});
|
||||
|
||||
// check the alpha for this image
|
||||
outgoing.checkAlpha();
|
||||
|
||||
// return the image
|
||||
return outgoing;
|
||||
|
||||
} catch (Exception e) {
|
||||
|
||||
@@ -144,6 +144,23 @@ public class PImage implements PConstants, Cloneable {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check the alpha on an image, using a really primitive loop.
|
||||
*/
|
||||
protected void checkAlpha() {
|
||||
if (pixels == null) return;
|
||||
|
||||
for (int i = 0; i < pixels.length; i++) {
|
||||
// since transparency is often at corners, hopefully this
|
||||
// will find a non-transparent pixel quickly and exit
|
||||
if ((pixels[i] & 0xff000000) != 0xff000000) {
|
||||
format = ARGB;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new PImage from a java.awt.Image. This constructor assumes
|
||||
* that you've done the work of making sure a MediaTracker has been used
|
||||
|
||||
+9
-8
@@ -16,6 +16,9 @@ X fix issue where processing applets would run extremely fast
|
||||
X after having been starved of resources where there framerate dropped
|
||||
X http://dev.processing.org/bugs/show_bug.cgi?id=336
|
||||
X added color/stroke/tint/fill(#FF8800, 30);
|
||||
X test imageio with images that have alpha (does it work?)
|
||||
X nope, doesn't, didn't finish support
|
||||
X http://dev.processing.org/bugs/show_bug.cgi?id=350
|
||||
|
||||
fixed in 0115 / quicktime 7.1
|
||||
X color values on camera input flipped on intel macs
|
||||
@@ -57,15 +60,9 @@ _ http://dev.processing.org/bugs/show_bug.cgi?id=346
|
||||
_ bring back the old P2D, rename PGraphics2 into PGraphicsJava
|
||||
_ remove POLYGON, LINE_LOOP, LINE_STRIP
|
||||
|
||||
|
||||
_ an image marked RGB but with 0s for the alpha won't draw in JAVA2D
|
||||
|
||||
_ test imageio with images that have alpha (does it work?)
|
||||
|
||||
_ get tiff exporter for p5 to support argb and gray
|
||||
_ would also need to modify the tiff loading code,
|
||||
_ because the header would be different
|
||||
_ http://dev.processing.org/bugs/show_bug.cgi?id=343
|
||||
_ also if transparency set but RGB is setting, still honors transparency
|
||||
_ http://dev.processing.org/bugs/show_bug.cgi?id=351
|
||||
|
||||
_ this produces a dark blue background:
|
||||
colorMode(RGB, 100);
|
||||
@@ -705,6 +702,10 @@ _ specifically, which tags that were in the original image file
|
||||
_ perhaps something gets corrected?
|
||||
_ loadImage() using spaces in the name
|
||||
_ if loadImage() with spaces when online(), throw an error
|
||||
_ get tiff exporter for p5 to support argb and gray
|
||||
_ would also need to modify the tiff loading code,
|
||||
_ because the header would be different
|
||||
_ http://dev.processing.org/bugs/show_bug.cgi?id=343
|
||||
|
||||
|
||||
CORE / Documentation
|
||||
|
||||
@@ -103,6 +103,8 @@ X move 'how do i create large images' here
|
||||
_ move stuff about getting gl object and java2d stuff here
|
||||
_ explain how to integrate code with swing
|
||||
_ use a separate environment, call init(), use noLoop(), redraw()
|
||||
_ use JPopupMenu.setDefaultLightWeightPopupEnabled(false); for zorder
|
||||
_ http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Integrate;action=display;num=1147670059
|
||||
_ how do i add gui to a sketch?
|
||||
_ don't use awt components
|
||||
_ how to use swing and embed components inside p5
|
||||
|
||||
Reference in New Issue
Block a user