cache only "alpha multiplied" images

This commit is contained in:
honfika@gmail.com
2015-07-21 19:06:30 +02:00
parent b77c2912f1
commit f59edae0e8
7 changed files with 12 additions and 59 deletions

View File

@@ -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;
}

View File

@@ -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);

View File

@@ -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);

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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);

View File

@@ -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() {