package aliview.gui.pane;
import java.awt.Color;
import java.awt.Font;
import java.util.HashMap;
import java.util.HashSet;
import org.apache.log4j.Logger;
import aliview.AminoAcid;
import aliview.NucleotideUtilities;
import aliview.alignment.Alignment;
import aliview.color.ColorScheme;
import aliview.sequencelist.AlignmentListModel;
public class CompoundCharPixelsContainer {
private static final Logger logger = Logger.getLogger(CompoundCharPixelsContainer.class);
private HashMap<Color, CharPixelsContainer> colorContainerMap;
// Below is for CompounColorScheme
private ColorScheme colorScheme;
public CompoundCharPixelsContainer() {
logger.info("init CharPixContainer");
}
public RGBArray getRGBArray(byte residue, int xPos, Alignment alignment){
AminoAcid aa = AminoAcid.getAminoAcidFromByte(residue);
Color compoundColor = colorScheme.getAminoAcidBackgroundColor(aa, xPos, alignment);
CharPixelsContainer pixContainer = colorContainerMap.get(compoundColor);
return pixContainer.getRGBArray(residue);
}
public static CompoundCharPixelsContainer createDefaultCompoundColorContainer(Font font, int minFontSize, int width, int height, ColorScheme colorScheme, int fontCase) {
if(colorScheme.getALLCompundColors() == null || colorScheme.getALLCompundColors().length == 0){
return null;
}
CompoundCharPixelsContainer compundContainer = new CompoundCharPixelsContainer();
compundContainer.colorScheme = colorScheme;
compundContainer.colorContainerMap = new HashMap<Color, CharPixelsContainer>(colorScheme.getALLCompundColors().length);
for(Color bgColor : colorScheme.getALLCompundColors()){
CharPixelsContainer container = new CharPixelsContainer();
for(int n = 0; n < container.backend.length; n++){
AminoAcid aa = AminoAcid.getAminoAcidFromByte((byte)n);
Color fgColor = colorScheme.getAminoAcidForgroundColor(aa);
container.backend[n] = new CharPixels((char)n, width, height, fgColor, bgColor, font, minFontSize, fontCase);
}
compundContainer.colorContainerMap.put(bgColor, container);
}
return compundContainer;
}
public static CompoundCharPixelsContainer createSelectedCompoundColorContainer(Font font, int minFontSize, int width, int height, ColorScheme colorScheme, int fontCase) {
if(colorScheme.getALLCompundColors() == null || colorScheme.getALLCompundColors().length == 0){
return null;
}
CompoundCharPixelsContainer compundContainer = new CompoundCharPixelsContainer();
compundContainer.colorScheme = colorScheme;
compundContainer.colorContainerMap = new HashMap<Color, CharPixelsContainer>(colorScheme.getALLCompundColors().length);
for(Color bgColor : colorScheme.getALLCompundColors()){
CharPixelsContainer container = new CharPixelsContainer();
for(int n = 0; n < container.backend.length; n++){
AminoAcid aa = AminoAcid.getAminoAcidFromByte((byte)n);
Color fgColor = colorScheme.getAminoAcidSelectionForegroundColor(aa);
container.backend[n] = new CharPixels((char)n, width, height, fgColor, bgColor.darker(), font, minFontSize, fontCase);
}
compundContainer.colorContainerMap.put(bgColor, container);
}
return compundContainer;
}
}