/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package org.pepsoft.worldpainter.layers.renderers; import org.pepsoft.util.ColourUtils; /** * * @author pepijn */ public class ColouredPatternRenderer implements NibbleLayerRenderer { public ColouredPatternRenderer(int colour, boolean[][] pattern) { this(colour, pattern, 0, 0); } public ColouredPatternRenderer(int colour, boolean[][] pattern, int dx, int dy) { this.colour = colour; this.pattern = pattern; this.dx = dx; this.dy = dy; if (pattern.length != 8) { throw new IllegalArgumentException("pattern"); } for (boolean[] row: pattern) { if (row.length != 8) { throw new IllegalArgumentException("pattern"); } } } @Override public int getPixelColour(int x, int y, int underlyingColour, int value) { if ((value > 0) && pattern[(y + dy) & 7][(x + dx) & 7]) { int intensity = value * 255 / 15; return ColourUtils.mix(colour, underlyingColour, intensity); } else { return underlyingColour; } } private final int colour, dx, dy; private final boolean[][]pattern; }