From 0c4adb7d1a42628e56251bf2bbf6e091e0d20e09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sat, 24 Dec 2022 13:05:44 +0100 Subject: [PATCH] Fixed filter bounds --- .../decompiler/flash/timeline/Timeline.java | 26 ++++--------------- .../flash/types/filters/BEVELFILTER.java | 4 +-- .../flash/types/filters/DROPSHADOWFILTER.java | 4 +-- .../types/filters/GRADIENTBEVELFILTER.java | 4 +-- .../types/filters/GRADIENTGLOWFILTER.java | 4 +-- 5 files changed, 13 insertions(+), 29 deletions(-) diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/Timeline.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/Timeline.java index e85ecc38e..6a2d9d883 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/Timeline.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/Timeline.java @@ -752,36 +752,20 @@ public class Timeline { // calculate size after applying the filters double deltaXMax = 0; double deltaYMax = 0; - double deltaXMin = Integer.MAX_VALUE; - double deltaYMin = Integer.MAX_VALUE; for (FILTER filter : filters) { double x = filter.getDeltaX(); double y = filter.getDeltaY(); deltaXMax = Math.max(x, deltaXMax); - deltaYMax = Math.max(y, deltaYMax); - deltaXMin = Math.min(x, deltaXMin); - deltaYMin = Math.min(y, deltaYMin); + deltaYMax = Math.max(y, deltaYMax); } - if (deltaXMin > 0) { - deltaXMin = 0; - } - if (deltaYMin > 0) { - deltaYMin = 0; - } - if (deltaXMax < 0) { - deltaXMax = 0; - } - if (deltaYMax < 0) { - deltaYMax = 0; - } - rect.xMin += deltaXMin * unzoom * SWF.unitDivisor; + rect.xMin -= deltaXMax * unzoom * SWF.unitDivisor; rect.xMax += deltaXMax * unzoom * SWF.unitDivisor; - rect.yMin += deltaYMin * unzoom * SWF.unitDivisor; + rect.yMin -= deltaXMax * unzoom * SWF.unitDivisor; rect.yMax += deltaYMax * unzoom * SWF.unitDivisor; viewRect2.xMin -= deltaXMax * SWF.unitDivisor; viewRect2.xMax += deltaXMax * SWF.unitDivisor; - viewRect2.yMin -= deltaXMax * SWF.unitDivisor; - viewRect2.yMax += deltaXMax * SWF.unitDivisor; + viewRect2.yMin -= deltaYMax * SWF.unitDivisor; + viewRect2.yMax += deltaYMax * SWF.unitDivisor; } rect.xMin -= SWF.unitDivisor; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/filters/BEVELFILTER.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/filters/BEVELFILTER.java index c04be3af5..3906048da 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/filters/BEVELFILTER.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/filters/BEVELFILTER.java @@ -114,11 +114,11 @@ public class BEVELFILTER extends FILTER { @Override public double getDeltaX() { - return blurX + (distance * Math.cos(angle)); + return blurX + Math.abs(distance * Math.cos(angle)); } @Override public double getDeltaY() { - return blurY + (distance * Math.sin(angle)); + return blurY + Math.abs(distance * Math.sin(angle)); } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/filters/DROPSHADOWFILTER.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/filters/DROPSHADOWFILTER.java index 60a8d653d..04b80867c 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/filters/DROPSHADOWFILTER.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/filters/DROPSHADOWFILTER.java @@ -98,11 +98,11 @@ public class DROPSHADOWFILTER extends FILTER { @Override public double getDeltaX() { - return blurX + (distance * Math.cos(angle)); + return blurX + Math.abs(distance * Math.cos(angle)); } @Override public double getDeltaY() { - return blurY + (distance * Math.sin(angle)); + return blurY + Math.abs(distance * Math.sin(angle)); } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/filters/GRADIENTBEVELFILTER.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/filters/GRADIENTBEVELFILTER.java index 7054b3a77..aa406e7ef 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/filters/GRADIENTBEVELFILTER.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/filters/GRADIENTBEVELFILTER.java @@ -132,11 +132,11 @@ public class GRADIENTBEVELFILTER extends FILTER { @Override public double getDeltaX() { - return blurX + (distance * Math.cos(angle)); + return blurX + Math.abs(distance * Math.cos(angle)); } @Override public double getDeltaY() { - return blurY + (distance * Math.sin(angle)); + return blurY + Math.abs(distance * Math.sin(angle)); } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/filters/GRADIENTGLOWFILTER.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/filters/GRADIENTGLOWFILTER.java index d94cf9681..ab3d44803 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/filters/GRADIENTGLOWFILTER.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/filters/GRADIENTGLOWFILTER.java @@ -133,11 +133,11 @@ public class GRADIENTGLOWFILTER extends FILTER { @Override public double getDeltaX() { - return blurX + (distance * Math.cos(angle)); + return blurX + Math.abs(distance * Math.cos(angle)); } @Override public double getDeltaY() { - return blurY + (distance * Math.sin(angle)); + return blurY + Math.abs(distance * Math.sin(angle)); } }