From 4480af4eddf08abe12d462ed4143f885dec13c25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sat, 9 Dec 2023 22:20:00 +0100 Subject: [PATCH] Fixed FLA Export - frame numbering problem Fixed morpshape hole detection --- CHANGELOG.md | 5 +- .../decompiler/flash/xfl/XFLConverter.java | 239 ++++++++---------- .../flash/xfl/shapefixer/MorphShapeFixer.java | 16 +- .../exp/morphshape_ease/DOMDocument.xml | 59 ----- .../exp/morphshape_ease/PublishSettings.xml | 206 --------------- .../morphshape_ease/DOMDocument.xml | 62 +++++ .../morphshape_timeline.html | 49 ++++ .../morphshape_timeline.swf | Bin 0 -> 1177 bytes .../morphshape_timeline/DOMDocument.xml | 148 +++++++++++ .../morphshape_timeline/META-INF/metadata.xml | 68 +++++ .../morphshape_timeline/MobileSettings.xml | 0 .../morphshape_timeline/PublishSettings.xml | 206 +++++++++++++++ .../morphshape_timeline/bin/SymDepend.cache | Bin 0 -> 28 bytes .../morphshape_timeline.xfl} | 0 14 files changed, 656 insertions(+), 402 deletions(-) delete mode 100644 libsrc/ffdec_lib/testdata/morphshape_ease/exp/morphshape_ease/DOMDocument.xml delete mode 100644 libsrc/ffdec_lib/testdata/morphshape_ease/exp/morphshape_ease/PublishSettings.xml create mode 100644 libsrc/ffdec_lib/testdata/morphshape_ease/morphshape_ease/DOMDocument.xml create mode 100644 libsrc/ffdec_lib/testdata/morphshape_timeline/morphshape_timeline.html create mode 100644 libsrc/ffdec_lib/testdata/morphshape_timeline/morphshape_timeline.swf create mode 100644 libsrc/ffdec_lib/testdata/morphshape_timeline/morphshape_timeline/DOMDocument.xml create mode 100644 libsrc/ffdec_lib/testdata/morphshape_timeline/morphshape_timeline/META-INF/metadata.xml create mode 100644 libsrc/ffdec_lib/testdata/morphshape_timeline/morphshape_timeline/MobileSettings.xml create mode 100644 libsrc/ffdec_lib/testdata/morphshape_timeline/morphshape_timeline/PublishSettings.xml create mode 100644 libsrc/ffdec_lib/testdata/morphshape_timeline/morphshape_timeline/bin/SymDepend.cache rename libsrc/ffdec_lib/testdata/{morphshape_ease/exp/morphshape_ease/morphshape_ease.xfl => morphshape_timeline/morphshape_timeline/morphshape_timeline.xfl} (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 375800f14..2be177648 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -71,8 +71,9 @@ All notable changes to this project will be documented in this file. - [#2136] FLA Export - optimized Shape fixer speed, repeated shape on timeline not exported twice - [#2139] FLA Export - labels layer not counted as layer index causing masked layer parentindex wrong - [#2138] Nested clipping (masks) display -- [#2138] Missing morphshapes (incorrect holes calculation) -- [#2138] Mask layer was visible when did not contain a masked layer +- [#2138] FLA Export - Missing morphshapes (incorrect holes calculation) +- [#2138] FLA Export - Mask layer was visible when did not contain a masked layer +- FLA Export - frame numbering problem ### Changed - [#2120] Exported assets no longer take names from assigned classes if there is more than 1 assigned class diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/xfl/XFLConverter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/xfl/XFLConverter.java index 5b70003b4..f67402233 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/xfl/XFLConverter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/xfl/XFLConverter.java @@ -1877,7 +1877,7 @@ public class XFLConverter { symbolStr.writeEndElement(); } symbolStr.writeStartElement("DOMFrame", new String[]{ - "index", Integer.toString(frame - 1), + "index", Integer.toString(frame), "keyMode", Integer.toString(KEY_MODE_NORMAL)}); symbolStr.writeStartElement("elements"); symbolStr.writeCharactersRaw(recCharWriter.toString()); @@ -2548,7 +2548,7 @@ public class XFLConverter { boolean lastIn = true; XFLXmlWriter writer2 = new XFLXmlWriter(); prevStr += ""; - int frame = -1; + int frame = -1; String lastElements = ""; CharacterTag lastCharacter = null; MATRIX lastMatrix = null; @@ -2572,7 +2572,9 @@ public class XFLConverter { MorphShapeTag shapeTweener = null; List morphShapeRatios = new ArrayList<>(); int lastTweenRatio = -1; - + MorphShapeTag standaloneShapeTweener = null; + MATRIX standaloneShapeTweenerMatrix = null; + //Add ShowFrameTag to the end when there is one last missing List timTags = timelineTags.toArrayList(); boolean needsFrameAdd = false; @@ -2589,8 +2591,7 @@ public class XFLConverter { timTags.add(new ShowFrameTag(swf)); } - MorphShapeTag standaloneShapeTweener = null; - MATRIX standaloneShapeTweenerMatrix = null; + for (Tag t : timTags) { if (t instanceof PlaceObjectTypeTag) { PlaceObjectTypeTag po = (PlaceObjectTypeTag) t; @@ -2658,22 +2659,10 @@ public class XFLConverter { ratio = po.getRatio(); clipActions = po.getClipActions(); } - } } } - - /*if (t instanceof ShowFrameTag) { - if (t == timTags.get(timTags.size() - 1)) { - if (shapeTween && character != null && (character instanceof MorphShapeTag)) { - MorphShapeTag m = (MorphShapeTag) character; - shapeTweener = m; - shapeTween = false; - lastTweenRatio = ratio; - character = null; - } - } - }*/ + if (t instanceof RemoveTag) { RemoveTag rt = (RemoveTag) t; if (rt.getDepth() == depth) { @@ -2699,137 +2688,121 @@ public class XFLConverter { } if (t instanceof ShowFrameTag) { - /*if (prevWasShapeTween) { - prevWasShapeTween = false; - continue; - }*/ - - boolean shapeTweenNow = false; - if (frame + 1 >= startFrame && (onlyFrames == null || onlyFrames.contains(frame + 1))) { - - XFLXmlWriter elementsWriter = new XFLXmlWriter(); - - if (frame + 1 <= endFrame) { - lastIn = true; - if (shapeTweener != null) { - MorphShapeTag m = shapeTweener; - XFLXmlWriter addLastWriter = new XFLXmlWriter(); - SHAPEWITHSTYLE endShape = m.getShapeAtRatio(65535); //lastTweenRatio); - convertShape(swf, characters, matrix, m.getShapeNum() == 1 ? 3 : 4, endShape.shapeRecords, m.getFillStyles().getFillStylesAt(65535), m.getLineStyles().getLineStylesAt(m.getShapeNum(), 65535), true, false, addLastWriter); - Integer ease = Easing.getEaseFromShapeRatios(morphShapeRatios); - Integer acceleration = null; - if (ease != null) { - acceleration = -ease; - } - convertFrame(scene, true, null, null, frame - duration, duration, "", lastElements, files, writer2, acceleration); - duration = 1; - lastElements = addLastWriter.toString(); - lastCharacter = m; - lastMatrix = matrix; - shapeTweener = null; - shapeTweenNow = true; - morphShapeRatios.clear(); - } - if (!shapeTweenNow) { - if (character instanceof ShapeTag && standaloneShapeTweener != null) { - convertSymbolInstance(instanceName, standaloneShapeTweenerMatrix, colorTransForm, cacheAsBitmap, blendMode, filters, isVisible, backGroundColor, clipActions, metadata, standaloneShapeTweener, characters, tags, flaVersion, elementsWriter); - standaloneShapeTweener = null; - } else if ((character instanceof ShapeTag) && (nonLibraryShapes.contains(characterId))) { // || shapeTweener != null)) { - if (lastCharacter == character && Objects.equals(matrix, lastMatrix)) { - elementsWriter.writeCharactersRaw(lastElements); - } else { - ShapeTag shape = (ShapeTag) character; - statusStack.pushStatus(character.toString()); - convertShape(swf, characters, matrix, shape.getShapeNum(), shape.getShapes().shapeRecords, shape.getShapes().fillStyles, shape.getShapes().lineStyles, false, false, elementsWriter); - statusStack.popStatus(); - } - lastCharacter = character; - lastMatrix = matrix; - shapeTween = false; - shapeTweener = null; - } else if (character != null) { - if (character instanceof MorphShapeTag) { - MorphShapeTag m = (MorphShapeTag) character; - if (multiUsageMorphShapes.contains(m.getCharacterId())) { - shapeTween = false; - shapeTweener = null; - standaloneShapeTweener = m; - standaloneShapeTweenerMatrix = matrix; - convertSymbolInstance(instanceName, matrix, colorTransForm, cacheAsBitmap, blendMode, filters, isVisible, backGroundColor, clipActions, metadata, character, characters, tags, flaVersion, elementsWriter); - } else { - morphShapeRatios.add(ratio == -1 ? 0 : ratio); - if (lastCharacter == m && Objects.equals(matrix, lastMatrix)) { - elementsWriter.writeCharactersRaw(lastElements); - } else { - statusStack.pushStatus(m.toString()); - convertShape(swf, characters, matrix, m.getShapeNum() == 1 ? 3 : 4, m.getStartEdges().shapeRecords, m.getFillStyles().getStartFillStyles(), m.getLineStyles().getStartLineStyles(m.getShapeNum()), true, false, elementsWriter); - statusStack.popStatus(); - } - - lastCharacter = m; - lastMatrix = matrix; - shapeTween = true; - } - } else { - shapeTween = false; - if (character instanceof TextTag) { - statusStack.pushStatus(character.toString()); - convertText(instanceName, (TextTag) character, matrix, filters, clipActions, elementsWriter); - statusStack.popStatus(); - } else if (character instanceof DefineVideoStreamTag) { - convertVideoInstance(instanceName, matrix, (DefineVideoStreamTag) character, clipActions, elementsWriter); - } else if (character instanceof ImageTag) { - convertImageInstance(instanceName, matrix, (ImageTag) character, clipActions, elementsWriter); - } else { - convertSymbolInstance(instanceName, matrix, colorTransForm, cacheAsBitmap, blendMode, filters, isVisible, backGroundColor, clipActions, metadata, character, characters, tags, flaVersion, elementsWriter); - } - } - } - } - } - if (!shapeTweenNow) { - frame++; - String elements = elementsWriter.toString(); - if (!elements.equals(lastElements) && frame > 0) { - convertFrame(scene, false, null, null, frame - duration, duration, "", lastElements, files, writer2, null); - duration = 1; - } else if (frame == 0) { - duration = 1; - } else { - duration++; - } - - lastElements = elements; - lastCharacter = character; - lastMatrix = matrix; - if (frame > endFrame) { - if (lastIn) { - lastElements = ""; - lastIn = false; - lastCharacter = null; - lastMatrix = null; - } - } - } - } else { + frame++; + if (frame < startFrame || frame > endFrame || (onlyFrames != null && !onlyFrames.contains(frame))) { if (lastIn) { lastElements = ""; lastIn = false; lastCharacter = null; lastMatrix = null; } - frame++; if (frame == 0) { duration = 1; } else { duration++; } + continue; } + lastIn = true; + + XFLXmlWriter elementsWriter = new XFLXmlWriter(); + + if (shapeTweener != null) { + MorphShapeTag m = shapeTweener; + XFLXmlWriter addLastWriter = new XFLXmlWriter(); + + if ((character instanceof MorphShapeTag) && (!multiUsageMorphShapes.contains(character.getCharacterId()))) { + MorphShapeTag m2 = (MorphShapeTag) character; + statusStack.pushStatus(m2.toString()); + convertShape(swf, characters, matrix, m2.getShapeNum() == 1 ? 3 : 4, m2.getStartEdges().shapeRecords, m2.getFillStyles().getStartFillStyles(), m2.getLineStyles().getStartLineStyles(m2.getShapeNum()), true, false, addLastWriter); + statusStack.popStatus(); + shapeTween = true; + } else { + SHAPEWITHSTYLE endShape = m.getShapeAtRatio(65535); //lastTweenRatio); + convertShape(swf, characters, matrix, m.getShapeNum() == 1 ? 3 : 4, endShape.shapeRecords, m.getFillStyles().getFillStylesAt(65535), m.getLineStyles().getLineStylesAt(m.getShapeNum(), 65535), true, false, addLastWriter); + } + + Integer ease = Easing.getEaseFromShapeRatios(morphShapeRatios); + Integer acceleration = null; + if (ease != null) { + acceleration = -ease; + } + convertFrame(scene, true, null, null, frame - duration, duration, "", lastElements, files, writer2, acceleration); + duration = 1; + lastElements = addLastWriter.toString(); + lastMatrix = matrix; + lastCharacter = character; + shapeTweener = null; + morphShapeRatios.clear(); + continue; + } + + if (character instanceof ShapeTag && standaloneShapeTweener != null) { + convertSymbolInstance(instanceName, standaloneShapeTweenerMatrix, colorTransForm, cacheAsBitmap, blendMode, filters, isVisible, backGroundColor, clipActions, metadata, standaloneShapeTweener, characters, tags, flaVersion, elementsWriter); + standaloneShapeTweener = null; + } else if ((character instanceof ShapeTag) && (nonLibraryShapes.contains(characterId))) { + if (lastCharacter == character && Objects.equals(matrix, lastMatrix)) { + elementsWriter.writeCharactersRaw(lastElements); + } else { + ShapeTag shape = (ShapeTag) character; + statusStack.pushStatus(character.toString()); + convertShape(swf, characters, matrix, shape.getShapeNum(), shape.getShapes().shapeRecords, shape.getShapes().fillStyles, shape.getShapes().lineStyles, false, false, elementsWriter); + statusStack.popStatus(); + } + shapeTween = false; + shapeTweener = null; + } else if (character instanceof MorphShapeTag) { + MorphShapeTag m = (MorphShapeTag) character; + if (multiUsageMorphShapes.contains(m.getCharacterId())) { + shapeTween = false; + shapeTweener = null; + standaloneShapeTweener = m; + standaloneShapeTweenerMatrix = matrix; + convertSymbolInstance(instanceName, matrix, colorTransForm, cacheAsBitmap, blendMode, filters, isVisible, backGroundColor, clipActions, metadata, character, characters, tags, flaVersion, elementsWriter); + } else { + morphShapeRatios.add(ratio == -1 ? 0 : ratio); + if (lastCharacter == m && Objects.equals(matrix, lastMatrix)) { + elementsWriter.writeCharactersRaw(lastElements); + } else { + statusStack.pushStatus(m.toString()); + convertShape(swf, characters, matrix, m.getShapeNum() == 1 ? 3 : 4, m.getStartEdges().shapeRecords, m.getFillStyles().getStartFillStyles(), m.getLineStyles().getStartLineStyles(m.getShapeNum()), true, false, elementsWriter); + statusStack.popStatus(); + } + shapeTween = true; + } + } else { + shapeTween = false; + if (character instanceof TextTag) { + statusStack.pushStatus(character.toString()); + convertText(instanceName, (TextTag) character, matrix, filters, clipActions, elementsWriter); + statusStack.popStatus(); + } else if (character instanceof DefineVideoStreamTag) { + convertVideoInstance(instanceName, matrix, (DefineVideoStreamTag) character, clipActions, elementsWriter); + } else if (character instanceof ImageTag) { + convertImageInstance(instanceName, matrix, (ImageTag) character, clipActions, elementsWriter); + } else if (character != null) { + convertSymbolInstance(instanceName, matrix, colorTransForm, cacheAsBitmap, blendMode, filters, isVisible, backGroundColor, clipActions, metadata, character, characters, tags, flaVersion, elementsWriter); + } + } + + String elements = elementsWriter.toString(); + if (!elements.equals(lastElements) && frame > 0) { + convertFrame(scene, false, null, null, frame - duration, duration, "", lastElements, files, writer2, null); + duration = 1; + } else if (frame == 0) { + duration = 1; + } else { + duration++; + } + lastElements = elements; + lastCharacter = character; + lastMatrix = matrix; } } + if (!lastElements.isEmpty() || writer2.length() > 0) { frame++; - convertFrame(scene, false, null, null, (frame - duration < 0 ? 0 : frame - duration), duration, "", lastElements, files, writer2, null); + convertFrame(scene, false, null, null, frame - duration, duration, "", lastElements, files, writer2, null); } afterStr = "" + afterStr; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/xfl/shapefixer/MorphShapeFixer.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/xfl/shapefixer/MorphShapeFixer.java index 5e13e9666..bc7995998 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/xfl/shapefixer/MorphShapeFixer.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/xfl/shapefixer/MorphShapeFixer.java @@ -27,6 +27,7 @@ import java.awt.Rectangle; import java.awt.geom.GeneralPath; import java.awt.geom.PathIterator; import java.awt.geom.Point2D; +import java.awt.geom.Rectangle2D; import java.util.ArrayList; import java.util.HashSet; import java.util.LinkedHashMap; @@ -266,12 +267,23 @@ public class MorphShapeFixer extends ShapeFixer { px = r.getX() + r.getWidth() * Math.random(); py = r.getY() + r.getHeight() * Math.random(); } while (!region.contains(px, py));*/ + + PathIterator pi = region.getPathIterator(null); if (!pi.isDone()) { double[] points = new double[6]; int type = pi.currentSegment(points); - if (type == PathIterator.SEG_MOVETO) { - if (!path.contains(points[0], points[1])) { + if (type == PathIterator.SEG_MOVETO) { + double x = points[0]; + double y = points[1]; + Rectangle2D bounds = region.getBounds2D(); + double centerX = bounds.getCenterX(); + double centerY = bounds.getCenterY(); + + double p = Math.sqrt((centerX - x) * (centerX - x) + (centerY - y) * (centerY - y)); + double x1 = (centerX - x) * 0.1 / p; + double y1 = (centerY - y) * 0.1 / p; + if (!path.contains(x + x1, y + y1)) { closedHolesI.add(i); } } diff --git a/libsrc/ffdec_lib/testdata/morphshape_ease/exp/morphshape_ease/DOMDocument.xml b/libsrc/ffdec_lib/testdata/morphshape_ease/exp/morphshape_ease/DOMDocument.xml deleted file mode 100644 index f6c5bd73f..000000000 --- a/libsrc/ffdec_lib/testdata/morphshape_ease/exp/morphshape_ease/DOMDocument.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libsrc/ffdec_lib/testdata/morphshape_ease/exp/morphshape_ease/PublishSettings.xml b/libsrc/ffdec_lib/testdata/morphshape_ease/exp/morphshape_ease/PublishSettings.xml deleted file mode 100644 index 40c6cbef7..000000000 --- a/libsrc/ffdec_lib/testdata/morphshape_ease/exp/morphshape_ease/PublishSettings.xml +++ /dev/null @@ -1,206 +0,0 @@ - - - - 1 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - morphshape_ease.swf - morphshape_ease.exe - morphshape_ease.app - morphshape_ease.html - morphshape_ease.gif - morphshape_ease.jpg - morphshape_ease.png - 1 - morphshape_ease.smil - morphshape_ease.swc - - - 0 - 12,0,0,0;11,2,0,0;11,1,0,0;10,3,0,0;10,2,153,0;10,1,52,0;9,0,124,0;8,0,24,0;7,0,14,0;6,0,79,0;5,0,58,0;4,0,32,0;3,0,8,0;2,0,1,12;1,0,0,1; - 1 - 1 - morphshape_ease_content.html - morphshape_ease_alternate.html - 0 - - 550.0 - 400.0 - 0 - 0 - 1 - 0 - 0 - 1 - 1 - 4 - 0 - 0 - 1 - 0 - - 1 - - - - - 0 - 0 - 0 - 80 - 0 - 0 - 7 - 0 - 7 - 0 - 15 - FlashPlayer11.2 - 2 - 1 - - . - CONFIG::FLASH_AUTHORING="true"; - 0 - - 1 - 0 - 1 - 0 - 0 - 0 - 0 - - 2 - 4 - 4096 - AS3 - 1 - 1 - 0 - 15 - 1 - 0 - 4102 - rsl - wrap - $(AppConfig)/ActionScript 3.0/rsls/loader_animation.swf - - - $(AppConfig)/ActionScript 3.0/libs - merge - - - $(AppConfig)/ActionScript 3.0/libs/11.0/textLayout.swc - rsl - http://fpdownload.adobe.com/pub/swz/tlf/2.0.0.232/textLayout_2.0.0.232.swz - http://fpdownload.adobe.com/pub/swz/crossdomain.xml - textLayout_2.0.0.232.swz - - - - - $(AppConfig)/ActionScript 3.0/libs/11.0/textLayout.swc - - http://fpdownload.adobe.com/pub/swz/tlf/2.0.0.232/textLayout_2.0.0.232.swz - http://fpdownload.adobe.com/pub/swz/crossdomain.xml - textLayout_2.0.0.232.swz - - - - - 550.0 - 400.0 - 0 - 4718592 - 0 - 80 - 1 - - - 1 - 0 - 1 - 0 - 0 - 100000 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 1 - - - 550.0 - 400.0 - 0 - 1 - 1 - - 1 - 0 - 1 - 0 - 0 - - 128 - - - 255 - - - - 550.0 - 400.0 - 1 - 0 - 0 - 1 - 0 - 0 - 1 - - - - 24-bit with Alpha - 255 - - - - 550.0 - 400.0 - 1 - 0 - - - 00000000 - 0 - 0 - 0 - 0 - 1 - - - \ No newline at end of file diff --git a/libsrc/ffdec_lib/testdata/morphshape_ease/morphshape_ease/DOMDocument.xml b/libsrc/ffdec_lib/testdata/morphshape_ease/morphshape_ease/DOMDocument.xml new file mode 100644 index 000000000..a1f15ede5 --- /dev/null +++ b/libsrc/ffdec_lib/testdata/morphshape_ease/morphshape_ease/DOMDocument.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libsrc/ffdec_lib/testdata/morphshape_timeline/morphshape_timeline.html b/libsrc/ffdec_lib/testdata/morphshape_timeline/morphshape_timeline.html new file mode 100644 index 000000000..97cdf7583 --- /dev/null +++ b/libsrc/ffdec_lib/testdata/morphshape_timeline/morphshape_timeline.html @@ -0,0 +1,49 @@ + + + + morphshape_timeline + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + Get Adobe Flash player + + + + + +
+ + diff --git a/libsrc/ffdec_lib/testdata/morphshape_timeline/morphshape_timeline.swf b/libsrc/ffdec_lib/testdata/morphshape_timeline/morphshape_timeline.swf new file mode 100644 index 0000000000000000000000000000000000000000..a77b381fc152a4f0efdd2c7b5902e9c19d7a2d81 GIT binary patch literal 1177 zcmV;K1ZMj~S5pr*2><|ioTZe1OdDkw$KS$=OtuVyv)eTBQs#!Z_U>BfdN=4=TgpgQ zMZh?+h#tKw9BX^!?n+y>M79L@LnVu2A~++GDWe;i#y?C93&ekjY-YwEll`ZOOvEKd zmuRAK^}Y7Jql1d5{gHg{&G-4{c|OmZiv#`h0BjorU`Gw`loSI1UMwxv15hop0lLxS z#p0o0Sfb%mjj=j4X)Ff)I4L z6c^?VGExWDAPNCal3+X&#N16b%!IW?`5=o`+R18sb!Ao-=YfBRg|Jvnq{T!~%_KpS zm2?%CsvKGBDpcPtY1SL ziHgDWzF0rb1-TFxmL-UnOygz!bU+Y8jO<_{ks$A9lt4Ugk~#$cu^7|MnF0#xYJA1` zUt5Bc`F!gyJQTuJwG?E2~Ja+fCVOYe|x_l2(c&_FF5xHWxuz)9mjpRnt6zKdNv;Y3#p9%PLjVo)YcSo&9Pol2&K0WVMK{jNYxlsR0^gvUz*Q>iTbC( z)|9GgYz|EJjis^KgJh0`|AXmoBQR|-E1Ys)X&k)-9T;%urBbPxq6YYa)Pb%ie>^za zG0~f-lec|$bjuJZPalI3kV*lNf@sn2`B^qN|e3x(}BG| ze^J;A5nTAg{=NLFzG+gl*0FbKrWgzql-%v0lQ(_`5Fpk_!KDKK7aDf z_tP7W)nm`l!)2A3P3J2kuKlKyibi4WCM~J!&)a8SJCXzkGuI1(&2haHlwa*Wbuqb5 z|KNvDP;b<|a_#jB^XB~V8?^cOsgD=WJ!kvmrCy+)`)w?A2wbUccQ;HmTtB3nI=$=R z)Ae;NOSZvpYxkXNeGib6pzvsuAz2Y!Hh{e!^%9PX$M0S*oaVp$eFtd0RGjI5leQvl zGulG5J!tqf>Kbf~v4&P5ngLk{C(;9T?DTztAg|sU@tvPCjDf!F2Fv?q?;q`-Xj*zf z*E0zW7cMPzZcpy~0hISR^;}P;SH03}>H!MI6o9VJapTz&7f*LB2%FD-qr~f2kh!qB rN9WEYTb4hImEQ1no-kDJd3NCV)nP+&`TP;sV!jSmJE8S2u`#!zW;8*< literal 0 HcmV?d00001 diff --git a/libsrc/ffdec_lib/testdata/morphshape_timeline/morphshape_timeline/DOMDocument.xml b/libsrc/ffdec_lib/testdata/morphshape_timeline/morphshape_timeline/DOMDocument.xml new file mode 100644 index 000000000..336da3be4 --- /dev/null +++ b/libsrc/ffdec_lib/testdata/morphshape_timeline/morphshape_timeline/DOMDocument.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libsrc/ffdec_lib/testdata/morphshape_timeline/morphshape_timeline/META-INF/metadata.xml b/libsrc/ffdec_lib/testdata/morphshape_timeline/morphshape_timeline/META-INF/metadata.xml new file mode 100644 index 000000000..8246fb6eb --- /dev/null +++ b/libsrc/ffdec_lib/testdata/morphshape_timeline/morphshape_timeline/META-INF/metadata.xml @@ -0,0 +1,68 @@ + + + + + Adobe Flash Professional CS6 - build 481 + 2023-12-09T10:14:52-08:00 + 2023-12-09T12:45:21-08:00 + 2023-12-09T12:45:21-08:00 + + + application/vnd.adobe.fla + + + xmp.iid:C88F451FCC96EE119313910734F6A093 + xmp.did:C88F451FCC96EE119313910734F6A093 + xmp.did:FF0A2AA52D76EE119313910734F6A093 + + + + created + xmp.iid:FF0A2AA52D76EE119313910734F6A093 + 2023-12-09T10:14:52-08:00 + Adobe Flash Professional CS6 - build 481 + + + saved + xmp.iid:C88F451FCC96EE119313910734F6A093 + 2023-12-09T12:45:21-08:00 + Adobe Flash Professional CS6 - build 481 + / + + + + + xmp.iid:FF0A2AA52D76EE119313910734F6A093 + xmp.did:FF0A2AA52D76EE119313910734F6A093 + xmp.did:FF0A2AA52D76EE119313910734F6A093 + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libsrc/ffdec_lib/testdata/morphshape_timeline/morphshape_timeline/MobileSettings.xml b/libsrc/ffdec_lib/testdata/morphshape_timeline/morphshape_timeline/MobileSettings.xml new file mode 100644 index 000000000..e69de29bb diff --git a/libsrc/ffdec_lib/testdata/morphshape_timeline/morphshape_timeline/PublishSettings.xml b/libsrc/ffdec_lib/testdata/morphshape_timeline/morphshape_timeline/PublishSettings.xml new file mode 100644 index 000000000..1e03326ec --- /dev/null +++ b/libsrc/ffdec_lib/testdata/morphshape_timeline/morphshape_timeline/PublishSettings.xml @@ -0,0 +1,206 @@ + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + testtimes.swf + testtimes.exe + testtimes.app + testtimes.html + testtimes.gif + testtimes.jpg + testtimes.png + testtimes.mov + testtimes.smil + testtimes.swc + + + 0 + 12,0,0,0;11,2,0,0;11,1,0,0;10,3,0,0;10,2,153,0;10,1,52,0;9,0,124,0;8,0,24,0;7,0,14,0;6,0,79,0;5,0,58,0;4,0,32,0;3,0,8,0;2,0,1,12;1,0,0,1; + 1 + 1 + testtimes.xfl_content.html + testtimes.xfl_alternate.html + 0 + + 550 + 400 + 0 + 0 + 1 + 0 + 0 + 1 + 1 + 4 + 0 + 0 + 1 + 0 + C:\Users\MyUser\AppData\Local\Adobe\Flash CS6\en_US\Configuration\HTML\Default.html + 1 + + + + + 0 + 0 + 0 + 80 + 0 + 0 + 7 + 0 + 7 + 0 + 15 + FlashPlayer11.2 + 2 + 1 + + . + CONFIG::FLASH_AUTHORING="true"; + 0 + + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + 2 + 4 + 4096 + AS3 + 1 + 1 + 0 + 15 + 1 + 0 + 4102 + rsl + wrap + $(AppConfig)/ActionScript 3.0/rsls/loader_animation.swf + + + $(AppConfig)/ActionScript 3.0/libs + merge + + + $(AppConfig)/ActionScript 3.0/libs/11.0/textLayout.swc + rsl + http://fpdownload.adobe.com/pub/swz/tlf/2.0.0.232/textLayout_2.0.0.232.swz + http://fpdownload.adobe.com/pub/swz/crossdomain.xml + textLayout_2.0.0.232.swz + + + + + $(AppConfig)/ActionScript 3.0/libs/11.0/textLayout.swc + + http://fpdownload.adobe.com/pub/swz/tlf/2.0.0.232/textLayout_2.0.0.232.swz + http://fpdownload.adobe.com/pub/swz/crossdomain.xml + textLayout_2.0.0.232.swz + + + + + 550 + 400 + 0 + 4718592 + 0 + 80 + 1 + + + 1 + 0 + 1 + 0 + 0 + 100000 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + + + 550 + 400 + 0 + 1 + 1 + + 1 + 0 + 1 + 0 + 0 + + 128 + + + 255 + + + + 550 + 400 + 1 + 0 + 0 + 1 + 0 + 0 + 1 + + + + 24-bit with Alpha + 255 + + + + 550 + 400 + 1 + 0 + + + 00000000 + 0 + 0 + 0 + 0 + 1 + + + \ No newline at end of file diff --git a/libsrc/ffdec_lib/testdata/morphshape_timeline/morphshape_timeline/bin/SymDepend.cache b/libsrc/ffdec_lib/testdata/morphshape_timeline/morphshape_timeline/bin/SymDepend.cache new file mode 100644 index 0000000000000000000000000000000000000000..420aca5c8f5fbbfdb69de919525f69e47276f430 GIT binary patch literal 28 fcmYdiU|@L8&cndQz{$YFpvxc%