gernotbelger@8910: /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde gernotbelger@8910: * Software engineering by gernotbelger@8910: * Björnsen Beratende Ingenieure GmbH gernotbelger@8910: * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt gernotbelger@8910: * gernotbelger@8910: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@8910: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@8910: * documentation coming with Dive4Elements River for details. gernotbelger@8910: */ gernotbelger@8910: package org.dive4elements.river.jfree; gernotbelger@8910: gernotbelger@8910: import java.awt.Color; gernotbelger@8910: import java.awt.image.LookupTable; gernotbelger@8910: gernotbelger@8910: final class ColorMapper extends LookupTable { gernotbelger@8910: gernotbelger@8910: private final int[] from; gernotbelger@8910: private final int[] to; gernotbelger@8910: gernotbelger@8910: public ColorMapper(final Color from, final Color to) { gernotbelger@8910: super(0, 4); gernotbelger@8910: gernotbelger@8910: this.from = new int[] { from.getRed(), from.getGreen(), from.getBlue(), from.getAlpha(), }; gernotbelger@8910: this.to = new int[] { to.getRed(), to.getGreen(), to.getBlue(), to.getAlpha(), }; gernotbelger@8910: } gernotbelger@8910: gernotbelger@8910: @Override gernotbelger@8910: public int[] lookupPixel(final int[] src, final int[] dest) { gernotbelger@8910: final int[] out = dest == null ? new int[src.length] : dest; gernotbelger@8910: gernotbelger@8910: // REMARK: only compare rgb, so we even keep the transparency level gernotbelger@8910: if (src[0] == this.from[0] && src[1] == this.from[1] && src[2] == this.from[2]) { gernotbelger@8910: out[0] = this.to[0]; gernotbelger@8910: out[1] = this.to[1]; gernotbelger@8910: out[2] = this.to[2]; gernotbelger@8910: out[2] = src[3]; gernotbelger@8910: } else { gernotbelger@8910: System.arraycopy(src, 0, out, 0, src.length); gernotbelger@8910: } gernotbelger@8910: gernotbelger@8910: return out; gernotbelger@8910: } gernotbelger@8910: }