diff artifacts/src/main/java/org/dive4elements/river/jfree/ColorMapper.java @ 8910:d9c89651bd67

Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
author gernotbelger
date Thu, 22 Feb 2018 18:46:37 +0100
parents
children 5dacb6ea75a1
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/artifacts/src/main/java/org/dive4elements/river/jfree/ColorMapper.java	Thu Feb 22 18:46:37 2018 +0100
@@ -0,0 +1,43 @@
+/** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
+ * Software engineering by
+ *  Björnsen Beratende Ingenieure GmbH
+ *  Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
+ *
+ * This file is Free Software under the GNU AGPL (>=v3)
+ * and comes with ABSOLUTELY NO WARRANTY! Check out the
+ * documentation coming with Dive4Elements River for details.
+ */
+package org.dive4elements.river.jfree;
+
+import java.awt.Color;
+import java.awt.image.LookupTable;
+
+final class ColorMapper extends LookupTable {
+
+    private final int[] from;
+    private final int[] to;
+
+    public ColorMapper(final Color from, final Color to) {
+        super(0, 4);
+
+        this.from = new int[] { from.getRed(), from.getGreen(), from.getBlue(), from.getAlpha(), };
+        this.to = new int[] { to.getRed(), to.getGreen(), to.getBlue(), to.getAlpha(), };
+    }
+
+    @Override
+    public int[] lookupPixel(final int[] src, final int[] dest) {
+        final int[] out = dest == null ? new int[src.length] : dest;
+
+        // REMARK: only compare rgb, so we even keep the transparency level
+        if (src[0] == this.from[0] && src[1] == this.from[1] && src[2] == this.from[2]) {
+            out[0] = this.to[0];
+            out[1] = this.to[1];
+            out[2] = this.to[2];
+            out[2] = src[3];
+        } else {
+            System.arraycopy(src, 0, out, 0, src.length);
+        }
+
+        return out;
+    }
+}
\ No newline at end of file

http://dive4elements.wald.intevation.org