From 7b0331361528c3f1e4520fb959ecaf948b2d7fc2 Mon Sep 17 00:00:00 2001 From: "honfika@gmail.com" Date: Sun, 14 Dec 2014 11:10:32 +0100 Subject: [PATCH] color transform fix --- .../decompiler/flash/types/ColorTransform.java | 8 ++++---- .../flash/types/filters/Filtering.java | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/ColorTransform.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/ColorTransform.java index 79e5ca571..fa0af859b 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/ColorTransform.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/ColorTransform.java @@ -124,22 +124,22 @@ public class ColorTransform implements Cloneable { @Override public int getRedMulti() { - return (int) ((float) t.getRedMulti() / 255f * c.getRedMulti()); + return (int) ((float) t.getRedMulti() / 256f * c.getRedMulti()); } @Override public int getGreenMulti() { - return (int) ((float) t.getGreenMulti() / 255f * c.getGreenMulti()); + return (int) ((float) t.getGreenMulti() / 256f * c.getGreenMulti()); } @Override public int getBlueMulti() { - return (int) ((float) t.getBlueMulti() / 255f * c.getBlueMulti()); + return (int) ((float) t.getBlueMulti() / 256f * c.getBlueMulti()); } @Override public int getAlphaMulti() { - return (int) ((float) t.getAlphaMulti() / 255f * c.getAlphaMulti()); + return (int) ((float) t.getAlphaMulti() / 256f * c.getAlphaMulti()); } }; } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/filters/Filtering.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/filters/Filtering.java index 9fee7e568..54b71d20a 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/filters/Filtering.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/filters/Filtering.java @@ -570,10 +570,10 @@ public class Filtering { int r = (rgb >> 16) & 0xff; int g = (rgb >> 8) & 0xff; int b = (rgb) & 0xff; - r = cut(((r * redMultTerm) / 255) + redAddTerm); - g = cut(((g * greenMultTerm) / 255) + greenAddTerm); - b = cut(((b * blueMultTerm) / 255) + blueAddTerm); - a = cut(((a * alphaMultTerm) / 255) + alphaAddTerm); + r = cut(((r * redMultTerm) / 256) + redAddTerm); + g = cut(((g * greenMultTerm) / 256) + greenAddTerm); + b = cut(((b * blueMultTerm) / 256) + blueAddTerm); + a = cut(((a * alphaMultTerm) / 256) + alphaAddTerm); return RGBA.toInt(r, g, b, a); } @@ -587,10 +587,10 @@ public class Filtering { int r = (rgb[i] >> 16) & 0xff; int g = (rgb[i] >> 8) & 0xff; int b = (rgb[i]) & 0xff; - r = Math.max(0, Math.min(((r * redMultTerm) / 256) + redAddTerm, 255)); - g = Math.max(0, Math.min(((g * greenMultTerm) / 256) + greenAddTerm, 255)); - b = Math.max(0, Math.min(((b * blueMultTerm) / 256) + blueAddTerm, 255)); - a = Math.max(0, Math.min(((a * alphaMultTerm) / 256) + alphaAddTerm, 255)); + r = cut(((r * redMultTerm) / 256) + redAddTerm); + g = cut(((g * greenMultTerm) / 256) + greenAddTerm); + b = cut(((b * blueMultTerm) / 256) + blueAddTerm); + a = cut(((a * alphaMultTerm) / 256) + alphaAddTerm); rgb[i] = (a << 24) | (r << 16) | (g << 8) | (b); } setRGB(dst, src.getWidth(), src.getHeight(), rgb);