/*
UserPaletteMapColor.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;
import ejs.base.utils.Pair;
public class UserPaletteMapColor extends BasePaletteMapper {
public UserPaletteMapColor(byte[][] thePalette, int firstColor, int numColors,
boolean isGreyscale) {
super(thePalette, firstColor, numColors, false, isGreyscale);
}
@Override
protected boolean isFixedPalette() {
return false;
}
/* (non-Javadoc)
* @see v9t9.emulator.clients.builtin.video.ImageDataCanvas.IMapColor#mapColor(int, int[])
*/
@Override
public int mapColor(int pixel, int[] distA) {
Pair<Integer, Integer> info = getCloseColor(pixel);
distA[0] = info.second;
return info.first;
}
/**
* Get the closest color by sheer brute force
* @param pixel
* @return pair of color index and distance
*/
private Pair<Integer, Integer> getCloseColor(int pixel) {
if (isColorMappedGreyscale) {
return ColorMapUtils.getClosestColorByLumDistance(palette, firstColor, numColors, pixel);
}
return ColorMapUtils.getClosestColorByDistance(palette, firstColor, numColors, pixel, -1);
}
/* (non-Javadoc)
* @see v9t9.emulator.clients.builtin.video.ImageImport.IMapColor#getClosestColor(int[])
*/
@Override
public int getClosestPaletteEntry(int pixel) {
Pair<Integer, Integer> info = getCloseColor(pixel);
return info.first;
}
/* (non-Javadoc)
* @see org.ejs.gui.images.IPaletteMapper#getRGBToGreyMap()
*/
@Override
public TreeMap<Integer, byte[]> getGreyToRgbMap() {
return V99ColorMapUtils.getGreyToRgbMap332();
}
}