/* * Jalview - A Sequence Alignment Editor and Viewer * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ package jalview.schemes; import jalview.analysis.*; import java.awt.*; import java.util.Vector; /** * DOCUMENT ME! * * @author $author$ * @version $Revision$ */ public class ConservationColourScheme extends ResidueColourScheme { /** DOCUMENT ME!! */ public Conservation conserve; /** DOCUMENT ME!! */ public ColourSchemeI cs; /** DOCUMENT ME!! */ public int inc = 30; /** * Creates a new ConservationColourScheme object. * * @param cons DOCUMENT ME! * @param oldcs DOCUMENT ME! */ public ConservationColourScheme(Conservation cons, ColourSchemeI oldcs) { super(); conserve = cons; cs = oldcs; } /** * DOCUMENT ME! * * @param consensus DOCUMENT ME! */ public void setConsensus(Vector consensus) { super.setConsensus(consensus); if (cs != null) { cs.setConsensus(consensus); } } /** * DOCUMENT ME! * * @param s DOCUMENT ME! * @param i DOCUMENT ME! * * @return DOCUMENT ME! */ public Color findColour(String s, int i) { Color c = Color.white; if (cs == null) { return c; } char ch = conserve.getConsSequence().getSequence().charAt(i); if ((ch == '*') || (ch == '+')) { c = cs.findColour(s, i); } else { int tmp = 10; int t = 0; if (!jalview.util.Comparison.isGap(ch)) { t = Integer.parseInt(ch + ""); } c = cs.findColour(s, i); while (tmp >= t) { c = lighter(c, inc); tmp--; } } return c; } /** * DOCUMENT ME! * * @param c DOCUMENT ME! * @param inc DOCUMENT ME! * * @return DOCUMENT ME! */ public Color lighter(Color c, int inc) { int red = c.getRed(); int blue = c.getBlue(); int green = c.getGreen(); if (red < (255 - inc)) { red = red + inc; } else { red = 255; } if (blue < (255 - inc)) { blue = blue + inc; } else { blue = 255; } if (green < (255 - inc)) { green = green + inc; } else { green = 255; } return new Color(red, green, blue); } }