From 4a45f54479050513cb6024ccad67321b8ea01cf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=F8=EDk?= Date: Thu, 16 May 2013 22:15:10 +0200 Subject: [PATCH] FLA export - is visible, matte color --- .../flash/tags/PlaceObject2Tag.java | 11 +++++++++ .../flash/tags/PlaceObject3Tag.java | 23 +++++++++++++++++++ .../decompiler/flash/tags/PlaceObjectTag.java | 11 +++++++++ .../flash/tags/PlaceObjectTypeTag.java | 5 ++++ .../decompiler/flash/xfl/XFLConverter.java | 17 +++++++++++--- 5 files changed, 64 insertions(+), 3 deletions(-) diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/PlaceObject2Tag.java b/trunk/src/com/jpexs/decompiler/flash/tags/PlaceObject2Tag.java index 6a094be76..766cf4b82 100644 --- a/trunk/src/com/jpexs/decompiler/flash/tags/PlaceObject2Tag.java +++ b/trunk/src/com/jpexs/decompiler/flash/tags/PlaceObject2Tag.java @@ -25,6 +25,7 @@ import com.jpexs.decompiler.flash.types.CLIPACTIONS; import com.jpexs.decompiler.flash.types.CXFORM; import com.jpexs.decompiler.flash.types.CXFORMWITHALPHA; import com.jpexs.decompiler.flash.types.MATRIX; +import com.jpexs.decompiler.flash.types.RGBA; import com.jpexs.decompiler.flash.types.filters.FILTER; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; @@ -331,4 +332,14 @@ public class PlaceObject2Tag extends Tag implements Container, PlaceObjectTypeTa public String getClassName() { return null; } + + @Override + public boolean isVisible() { + return true; + } + + @Override + public RGBA getBackgroundColor() { + return null; + } } diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/PlaceObject3Tag.java b/trunk/src/com/jpexs/decompiler/flash/tags/PlaceObject3Tag.java index 8ae53048c..c2fd839f6 100644 --- a/trunk/src/com/jpexs/decompiler/flash/tags/PlaceObject3Tag.java +++ b/trunk/src/com/jpexs/decompiler/flash/tags/PlaceObject3Tag.java @@ -254,6 +254,8 @@ public class PlaceObject3Tag extends Tag implements Container, PlaceObjectTypeTa } if (placeFlagHasVisible) { sos.writeUI8(visible); + } + if (placeFlagOpaqueBackground) { sos.writeRGBA(backgroundColor); } if (placeFlagHasClipActions) { @@ -329,10 +331,15 @@ public class PlaceObject3Tag extends Tag implements Container, PlaceObjectTypeTa bitmapCache = 1; } } + if (placeFlagHasVisible) { visible = sis.readUI8(); + } + if (placeFlagOpaqueBackground) { backgroundColor = sis.readRGBA(); } + + System.out.println("" + sis.available()); if (placeFlagHasClipActions) { clipActions = sis.readCLIPACTIONS(); } @@ -436,4 +443,20 @@ public class PlaceObject3Tag extends Tag implements Container, PlaceObjectTypeTa public boolean cacheAsBitmap() { return placeFlagHasCacheAsBitmap; } + + @Override + public boolean isVisible() { + if (placeFlagHasVisible) { + return visible == 1; + } + return true; + } + + @Override + public RGBA getBackgroundColor() { + if (placeFlagOpaqueBackground) { + return backgroundColor; + } + return null; + } } diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/PlaceObjectTag.java b/trunk/src/com/jpexs/decompiler/flash/tags/PlaceObjectTag.java index 8b9e938bb..1d8a75a57 100644 --- a/trunk/src/com/jpexs/decompiler/flash/tags/PlaceObjectTag.java +++ b/trunk/src/com/jpexs/decompiler/flash/tags/PlaceObjectTag.java @@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.SWFOutputStream; import com.jpexs.decompiler.flash.types.CXFORM; import com.jpexs.decompiler.flash.types.CXFORMWITHALPHA; import com.jpexs.decompiler.flash.types.MATRIX; +import com.jpexs.decompiler.flash.types.RGBA; import com.jpexs.decompiler.flash.types.filters.FILTER; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; @@ -165,4 +166,14 @@ public class PlaceObjectTag extends Tag implements PlaceObjectTypeTag { public String getClassName() { return null; } + + @Override + public boolean isVisible() { + return true; + } + + @Override + public RGBA getBackgroundColor() { + return null; + } } diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/PlaceObjectTypeTag.java b/trunk/src/com/jpexs/decompiler/flash/tags/PlaceObjectTypeTag.java index 67f4a8fcb..a466f7444 100644 --- a/trunk/src/com/jpexs/decompiler/flash/tags/PlaceObjectTypeTag.java +++ b/trunk/src/com/jpexs/decompiler/flash/tags/PlaceObjectTypeTag.java @@ -3,6 +3,7 @@ package com.jpexs.decompiler.flash.tags; import com.jpexs.decompiler.flash.types.CXFORM; import com.jpexs.decompiler.flash.types.CXFORMWITHALPHA; import com.jpexs.decompiler.flash.types.MATRIX; +import com.jpexs.decompiler.flash.types.RGBA; import com.jpexs.decompiler.flash.types.filters.FILTER; import java.util.List; @@ -33,4 +34,8 @@ public interface PlaceObjectTypeTag { public String getClassName(); public boolean cacheAsBitmap(); + + public boolean isVisible(); + + public RGBA getBackgroundColor(); } diff --git a/trunk/src/com/jpexs/decompiler/flash/xfl/XFLConverter.java b/trunk/src/com/jpexs/decompiler/flash/xfl/XFLConverter.java index 64f890dc8..10e0dc1f2 100644 --- a/trunk/src/com/jpexs/decompiler/flash/xfl/XFLConverter.java +++ b/trunk/src/com/jpexs/decompiler/flash/xfl/XFLConverter.java @@ -757,7 +757,7 @@ public class XFLConverter { return ret; } - public static String convertSymbolInstance(String name, MATRIX matrix, CXFORM colorTransform, CXFORMWITHALPHA colorTransformAlpha, boolean cacheAsBitmap, int blendMode, List filters, CharacterTag tag, HashMap characters) { + public static String convertSymbolInstance(String name, MATRIX matrix, CXFORM colorTransform, CXFORMWITHALPHA colorTransformAlpha, boolean cacheAsBitmap, int blendMode, List filters, boolean isVisible, RGBA backgroundColor, CharacterTag tag, HashMap characters) { String ret = ""; if (matrix == null) { matrix = new MATRIX(); @@ -788,11 +788,22 @@ public class XFLConverter { if (cacheAsBitmap) { ret += " cacheAsBitmap=\"true\""; } + if (!isVisible) { + ret += " isVisible=\"false\""; + } ret += ">"; ret += ""; ret += convertMatrix(matrix); ret += ""; ret += ""; + + if (backgroundColor != null) { + ret += "