/* MonoMapColor.java (c) 2011-2016 Edward Swartz All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.ejs.gui.images; import java.util.TreeMap; public class MonoMapColor implements IPaletteMapper { private final int fg; private final int bg; private byte[][] palette; private int midLum; public MonoMapColor(int fg, int bg) { this.fg = fg; this.bg = bg; this.palette = createMonoPalette(fg, bg); } /** * @param midLum the midLum to set */ public void setMidLum(int midLum) { this.midLum = midLum; } private static byte[][] createMonoPalette(int fg, int bg) { byte[][] palette = new byte[Math.max(16, bg+1)][]; palette[fg] = new byte[] { 0, 0, 0 }; palette[bg] = new byte[] { -1, -1, -1 }; for (int c = 0; c < 16; c++) { if (c != fg && c != bg) { palette[c] = new byte[] { 127, 127, 127 }; } } return palette; } /* (non-Javadoc) * @see v9t9.emulator.clients.builtin.video.ImageDataCanvas.IMapColor#mapColor(int, int[]) */ @Override public int mapColor(int pixel, int[] distA) { int lum = ColorMapUtils.getPixelLum(pixel); distA[0] = lum; return lum <= midLum ? 0 : 1; } /* (non-Javadoc) * @see v9t9.emulator.clients.builtin.video.ImageImport.IMapColor#getClosestColor(int[]) */ @Override public int getClosestPaletteEntry(int pixel) { int lum = ColorMapUtils.getPixelLum(pixel); return lum <= midLum ? fg : bg; } /* (non-Javadoc) * @see v9t9.emulator.clients.builtin.video.image.IPaletteColorMapper#getClosestPalettePixel(int, int, int) */ @Override public int getClosestPalettePixel(int x, int y, int pixel) { int lum = ColorMapUtils.getPixelLum(pixel); return lum <= midLum ? 0 : -1; } /* (non-Javadoc) * @see v9t9.emulator.clients.builtin.video.image.IPaletteMapper#getMinimalPaletteDistance() */ @Override public int getMinimalPaletteDistance() { return 0; } /* (non-Javadoc) * @see v9t9.emulator.clients.builtin.video.image.IPaletteMapper#getNumColors() */ @Override public int getNumColors() { return 2; } /* (non-Javadoc) * @see v9t9.emulator.clients.builtin.video.image.IPaletteMapper#getPalette() */ @Override public byte[][] getPalette() { return palette; } /* (non-Javadoc) * @see v9t9.emulator.clients.builtin.video.image.IPaletteColorMapper#getPalettePixel(int) */ @Override public int getPalettePixel(int c) { return c == fg ? 0 : -1; } /* (non-Javadoc) * @see org.ejs.gui.images.IPaletteMapper#getPixelForGreyscaleMode(int) */ @Override public int getPixelForGreyscaleMode(int pixel) { return pixel; } /* (non-Javadoc) * @see org.ejs.gui.images.IPaletteMapper#getRgbToGreyForGreyscaleMode(byte[]) */ @Override public byte[] getRgbToGreyForGreyscaleMode(byte[] nrgb) { return nrgb; } /* (non-Javadoc) * @see org.ejs.gui.images.IPaletteMapper#getRGBToGreyMap() */ @Override public TreeMap<Integer, byte[]> getGreyToRgbMap() { return V99ColorMapUtils.getGreyToRgbMap332(); } /** * @return */ public int getForeground() { return fg; } /** * @return the bg */ public int getBackground() { return bg; } /** * @return */ public int getMidLum() { return midLum; } }