/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.4)
- * Copyright (C) 2008 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
+ * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, 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 file is part of Jalview.
*
- * 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.
+ * Jalview 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 3 of the License, or (at your option) any later version.
*
- * 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
+ * Jalview 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 Jalview. If not, see <http://www.gnu.org/licenses/>.
*/
package jalview.gui;
* @author $author$
* @version $Revision$
*/
-public class SequenceRenderer
+public class SequenceRenderer implements jalview.api.SequenceRenderer
{
AlignViewport av;
* Creates a new SequenceRenderer object.
*
* @param av
- * DOCUMENT ME!
+ * DOCUMENT ME!
*/
public SequenceRenderer(AlignViewport av)
{
* DOCUMENT ME!
*
* @param b
- * DOCUMENT ME!
+ * DOCUMENT ME!
*/
public void prepare(Graphics g, boolean renderGaps)
{
* DOCUMENT ME!
*
* @param cs
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param seq
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param i
- * DOCUMENT ME!
+ * DOCUMENT ME!
*/
void getBoxColour(ColourSchemeI cs, SequenceI seq, int i)
{
* DOCUMENT ME!
*
* @param g
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param seq
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param sg
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param start
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param end
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param x1
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param y1
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param width
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param height
- * DOCUMENT ME!
+ * DOCUMENT ME!
*/
public void drawSequence(SequenceI seq, SequenceGroup[] sg, int start,
int end, int y1)
* DOCUMENT ME!
*
* @param seq
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param start
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param end
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param x1
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param y1
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param width
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param height
- * DOCUMENT ME!
+ * DOCUMENT ME!
*/
public synchronized void drawBoxes(SequenceI seq, int start, int end,
int y1)
{
+ if (seq == null)
+ return; // fix for racecondition
int i = start;
int length = seq.getLength();
* DOCUMENT ME!
*
* @param seq
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param start
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param end
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param x1
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param y1
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param width
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param height
- * DOCUMENT ME!
+ * DOCUMENT ME!
*/
public void drawText(SequenceI seq, int start, int end, int y1)
{
{
graphics.setColor(currentSequenceGroup.textColour);
}
+ if (currentSequenceGroup.getShowNonconserved()) // todo optimize
+ {
+ // todo - use sequence group consensus
+ s = getDisplayChar(av.consensus, i, s, '.');
+
+ }
}
else
graphics.setColor(av.textColour2);
}
}
+ if (av.showUnconserved)
+ {
+ s = getDisplayChar(av.consensus, i, s, '.');
+
+ }
}
}
}
+ private char getDisplayChar(AlignmentAnnotation consensus, int position,
+ char s, char c)
+ {
+ char conschar = consensus.annotations[position].displayCharacter
+ .charAt(0);
+ if (conschar != '-' && s == conschar)
+ {
+ s = c;
+ }
+ return s;
+ }
+
/**
* DOCUMENT ME!
*
* @param res
- * DOCUMENT ME!
+ * DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
* DOCUMENT ME!
*
* @param seq
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param start
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param end
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param x1
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param y1
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param width
- * DOCUMENT ME!
+ * DOCUMENT ME!
* @param height
- * DOCUMENT ME!
+ * DOCUMENT ME!
*/
public void drawHighlightedText(SequenceI seq, int start, int end,
int x1, int y1)
}
charOffset = (av.charWidth - fm.charWidth(s)) / 2;
- graphics
- .drawString(String.valueOf(s), charOffset + x1
- + (av.charWidth * (i - start)),
- (y1 + av.charHeight) - pady);
+ graphics.drawString(String.valueOf(s), charOffset + x1
+ + (av.charWidth * (i - start)), (y1 + av.charHeight) - pady);
}
}
}