From f59edae0e89551fe16b62c5ac3eae52bcb30c373 Mon Sep 17 00:00:00 2001 From: "honfika@gmail.com" Date: Tue, 21 Jul 2015 19:06:30 +0200 Subject: [PATCH] cache only "alpha multiplied" images --- .../decompiler/flash/tags/DefineBitsJPEG2Tag.java | 9 +-------- .../decompiler/flash/tags/DefineBitsJPEG3Tag.java | 12 ------------ .../decompiler/flash/tags/DefineBitsJPEG4Tag.java | 12 ------------ .../flash/tags/DefineBitsLossless2Tag.java | 8 -------- .../decompiler/flash/tags/DefineBitsLosslessTag.java | 9 --------- .../jpexs/decompiler/flash/tags/DefineBitsTag.java | 9 --------- .../jpexs/decompiler/flash/tags/base/ImageTag.java | 12 +++++++++++- 7 files changed, 12 insertions(+), 59 deletions(-) diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineBitsJPEG2Tag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineBitsJPEG2Tag.java index 902735672..87bac6ec1 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineBitsJPEG2Tag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineBitsJPEG2Tag.java @@ -19,7 +19,6 @@ package com.jpexs.decompiler.flash.tags; import com.jpexs.decompiler.flash.SWF; import com.jpexs.decompiler.flash.SWFInputStream; import com.jpexs.decompiler.flash.SWFOutputStream; -import com.jpexs.decompiler.flash.configuration.Configuration; import com.jpexs.decompiler.flash.helpers.ImageHelper; import com.jpexs.decompiler.flash.tags.base.AloneTag; import com.jpexs.decompiler.flash.tags.base.ImageTag; @@ -125,9 +124,6 @@ public class DefineBitsJPEG2Tag extends ImageTag implements AloneTag { @Override public SerializableImage getImage(boolean preMultiplyApha) { - if (cachedImage != null) { - return cachedImage; - } try { BufferedImage image = ImageHelper.read(getOriginalImageData()); if (image == null) { @@ -136,14 +132,11 @@ public class DefineBitsJPEG2Tag extends ImageTag implements AloneTag { } SerializableImage img = new SerializableImage(image); - if (Configuration.cacheImages.get()) { - cachedImage = img; - } - return img; } catch (IOException ex) { Logger.getLogger(DefineBitsJPEG2Tag.class.getName()).log(Level.SEVERE, "Failed to get image", ex); } + return null; } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineBitsJPEG3Tag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineBitsJPEG3Tag.java index a2f91c780..982e6396c 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineBitsJPEG3Tag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineBitsJPEG3Tag.java @@ -19,7 +19,6 @@ package com.jpexs.decompiler.flash.tags; import com.jpexs.decompiler.flash.SWF; import com.jpexs.decompiler.flash.SWFInputStream; import com.jpexs.decompiler.flash.SWFOutputStream; -import com.jpexs.decompiler.flash.configuration.Configuration; import com.jpexs.decompiler.flash.helpers.ImageHelper; import com.jpexs.decompiler.flash.tags.base.AloneTag; import com.jpexs.decompiler.flash.tags.base.ImageTag; @@ -176,9 +175,6 @@ public class DefineBitsJPEG3Tag extends ImageTag implements AloneTag { @Override public SerializableImage getImage(boolean preMultiplyApha) { - if (cachedImage != null) { - return cachedImage; - } try { int errorLength = hasErrorHeader(imageData) ? 4 : 0; ByteArrayInputStream bis = new ByteArrayInputStream(imageData.getArray(), imageData.getPos() + errorLength, imageData.getLength() - errorLength); @@ -192,10 +188,6 @@ public class DefineBitsJPEG3Tag extends ImageTag implements AloneTag { image = ensurePreMultipled(image, preMultiplyApha); SerializableImage img = new SerializableImage(image); if (bitmapAlphaData.getLength() == 0) { - if (Configuration.cacheImages.get()) { - cachedImage = img; - } - return img; } @@ -210,10 +202,6 @@ public class DefineBitsJPEG3Tag extends ImageTag implements AloneTag { } } - if (Configuration.cacheImages.get()) { - cachedImage = img; - } - return img; } catch (IOException ex) { Logger.getLogger(DefineBitsJPEG3Tag.class.getName()).log(Level.SEVERE, "Failed to get image", ex); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineBitsJPEG4Tag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineBitsJPEG4Tag.java index 7f9e9a528..c78e5d3e3 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineBitsJPEG4Tag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineBitsJPEG4Tag.java @@ -19,7 +19,6 @@ package com.jpexs.decompiler.flash.tags; import com.jpexs.decompiler.flash.SWF; import com.jpexs.decompiler.flash.SWFInputStream; import com.jpexs.decompiler.flash.SWFOutputStream; -import com.jpexs.decompiler.flash.configuration.Configuration; import com.jpexs.decompiler.flash.helpers.ImageHelper; import com.jpexs.decompiler.flash.tags.base.AloneTag; import com.jpexs.decompiler.flash.tags.base.ImageTag; @@ -180,9 +179,6 @@ public class DefineBitsJPEG4Tag extends ImageTag implements AloneTag { @Override public SerializableImage getImage(boolean preMultiplyApha) { - if (cachedImage != null) { - return cachedImage; - } try { BufferedImage image = ImageHelper.read(new ByteArrayInputStream(imageData.getArray(), imageData.getPos(), imageData.getLength())); if (image == null) { @@ -193,10 +189,6 @@ public class DefineBitsJPEG4Tag extends ImageTag implements AloneTag { image = ensurePreMultipled(image, preMultiplyApha); SerializableImage img = new SerializableImage(image); if (bitmapAlphaData.getLength() == 0) { - if (Configuration.cacheImages.get()) { - cachedImage = img; - } - return img; } @@ -211,10 +203,6 @@ public class DefineBitsJPEG4Tag extends ImageTag implements AloneTag { } } - if (Configuration.cacheImages.get()) { - cachedImage = img; - } - return img; } catch (IOException ex) { Logger.getLogger(DefineBitsJPEG4Tag.class.getName()).log(Level.SEVERE, "Failed to get image", ex); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineBitsLossless2Tag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineBitsLossless2Tag.java index 977e104f7..9de60ad30 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineBitsLossless2Tag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineBitsLossless2Tag.java @@ -19,7 +19,6 @@ package com.jpexs.decompiler.flash.tags; import com.jpexs.decompiler.flash.SWF; import com.jpexs.decompiler.flash.SWFInputStream; import com.jpexs.decompiler.flash.SWFOutputStream; -import com.jpexs.decompiler.flash.configuration.Configuration; import com.jpexs.decompiler.flash.helpers.ImageHelper; import com.jpexs.decompiler.flash.tags.base.AloneTag; import com.jpexs.decompiler.flash.tags.base.ImageTag; @@ -231,9 +230,6 @@ public class DefineBitsLossless2Tag extends ImageTag implements AloneTag { @Override public SerializableImage getImage(boolean preMultiplyApha) { - if (cachedImage != null) { - return cachedImage; - } SerializableImage bi = new SerializableImage(bitmapWidth, bitmapHeight, SerializableImage.TYPE_INT_ARGB); ALPHACOLORMAPDATA colorMapData = null; ALPHABITMAPDATA bitmapData = null; @@ -271,10 +267,6 @@ public class DefineBitsLossless2Tag extends ImageTag implements AloneTag { } } - if (Configuration.cacheImages.get()) { - cachedImage = bi; - } - return bi; } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineBitsLosslessTag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineBitsLosslessTag.java index dd0181a6c..855b0d788 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineBitsLosslessTag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineBitsLosslessTag.java @@ -19,7 +19,6 @@ package com.jpexs.decompiler.flash.tags; import com.jpexs.decompiler.flash.SWF; import com.jpexs.decompiler.flash.SWFInputStream; import com.jpexs.decompiler.flash.SWFOutputStream; -import com.jpexs.decompiler.flash.configuration.Configuration; import com.jpexs.decompiler.flash.helpers.ImageHelper; import com.jpexs.decompiler.flash.tags.base.AloneTag; import com.jpexs.decompiler.flash.tags.base.ImageTag; @@ -226,10 +225,6 @@ public class DefineBitsLosslessTag extends ImageTag implements AloneTag { @Override public SerializableImage getImage(boolean preMultiplyApha) { - if (cachedImage != null) { - return cachedImage; - } - int[] pixels = new int[bitmapWidth * bitmapHeight]; if (bitmapFormat == DefineBitsLosslessTag.FORMAT_8BIT_COLORMAPPED) { COLORMAPDATA colorMapData = getColorMapData(); @@ -270,10 +265,6 @@ public class DefineBitsLosslessTag extends ImageTag implements AloneTag { } SerializableImage bi = new SerializableImage(bitmapWidth, bitmapHeight, SerializableImage.TYPE_INT_RGB, pixels); - if (Configuration.cacheImages.get()) { - cachedImage = bi; - } - return bi; } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineBitsTag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineBitsTag.java index 9e3d83ab9..047abd754 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineBitsTag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineBitsTag.java @@ -19,7 +19,6 @@ package com.jpexs.decompiler.flash.tags; import com.jpexs.decompiler.flash.SWF; import com.jpexs.decompiler.flash.SWFInputStream; import com.jpexs.decompiler.flash.SWFOutputStream; -import com.jpexs.decompiler.flash.configuration.Configuration; import com.jpexs.decompiler.flash.helpers.ImageHelper; import com.jpexs.decompiler.flash.tags.base.ImageTag; import com.jpexs.decompiler.flash.tags.enums.ImageFormat; @@ -132,10 +131,6 @@ public class DefineBitsTag extends ImageTag implements TagChangedListener { @Override public SerializableImage getImage(boolean preMultiplyApha) { - if (cachedImage != null) { - return cachedImage; - } - InputStream imageStream = getOriginalImageData(); if (imageStream != null) { try { @@ -146,10 +141,6 @@ public class DefineBitsTag extends ImageTag implements TagChangedListener { } SerializableImage img = new SerializableImage(image); - if (Configuration.cacheImages.get()) { - cachedImage = img; - } - return img; } catch (IOException ex) { Logger.getLogger(DefineBitsTag.class.getName()).log(Level.SEVERE, "Failed to get image", ex); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/ImageTag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/ImageTag.java index fb31b53e7..a98825e22 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/ImageTag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/ImageTag.java @@ -17,6 +17,7 @@ package com.jpexs.decompiler.flash.tags.base; import com.jpexs.decompiler.flash.SWF; +import com.jpexs.decompiler.flash.configuration.Configuration; import com.jpexs.decompiler.flash.exporters.commonshape.Matrix; import com.jpexs.decompiler.flash.exporters.commonshape.SVGExporter; import com.jpexs.decompiler.flash.exporters.shape.BitmapExporter; @@ -106,7 +107,16 @@ public abstract class ImageTag extends CharacterTag implements DrawableTag { } public SerializableImage getImage() { - return getImage(true); + if (cachedImage != null) { + return cachedImage; + } + + SerializableImage image = getImage(true); + if (Configuration.cacheImages.get()) { + cachedImage = image; + } + + return image; } public InputStream getImageData() {