Mercurial > dive4elements > river
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