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@9576: // REMARK: only check opacity, because the transparency of the pattern-images is not 100% good gernotbelger@9576: if (src[3] > 128) { gernotbelger@8910: out[0] = this.to[0]; gernotbelger@8910: out[1] = this.to[1]; gernotbelger@8910: out[2] = this.to[2]; gernotbelger@9576: out[3] = this.to[3]; gernotbelger@8910: } else { gernotbelger@9576: out[0] = 0; gernotbelger@9576: out[1] = 0; gernotbelger@9576: out[2] = 0; gernotbelger@9576: out[3] = 0; gernotbelger@8910: } gernotbelger@8910: gernotbelger@8910: return out; gernotbelger@8910: } gernotbelger@8910: }