X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FSequenceRenderer.java;h=daf971d406348f5682cc23ea8c67a66cffcd9768;hb=94e19634c669879ab63bbb82d5489c200cdb18f8;hp=9103c1d3a27d914907cae96557177db5c16f1cfe;hpb=5cd5b6e7864fe435ceb3f5c2f339a436ea0aac93;p=jalview.git diff --git a/src/jalview/appletgui/SequenceRenderer.java b/src/jalview/appletgui/SequenceRenderer.java index 9103c1d..daf971d 100755 --- a/src/jalview/appletgui/SequenceRenderer.java +++ b/src/jalview/appletgui/SequenceRenderer.java @@ -1,6 +1,6 @@ /* * Jalview - A Sequence Alignment Editor and Viewer - * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle + * Copyright (C) 2007 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 @@ -47,11 +47,11 @@ public class SequenceRenderer */ public void prepare(Graphics g, boolean renderGaps) { - graphics = g; - fm = g.getFontMetrics(); + graphics = g; + fm = g.getFontMetrics(); - this.renderGaps = renderGaps; - } + this.renderGaps = renderGaps; + } public Color getResidueBoxColour(SequenceI seq, int i) { @@ -66,21 +66,21 @@ public class SequenceRenderer } else if (av.getShowBoxes()) { - getBoxColour(av.globalColourScheme, seq, i); + getBoxColour(av.globalColourScheme, seq, i); } return resBoxColour; - } + } void getBoxColour(ColourSchemeI cs, SequenceI seq, int i) { if (cs != null) { - resBoxColour = cs.findColour(seq.getSequence(i, i + 1), i); + resBoxColour = cs.findColour(seq.getCharAt(i), i); } - else if(forOverview && !jalview.util.Comparison.isGap(seq.getCharAt(i))) + else if (forOverview && !jalview.util.Comparison.isGap(seq.getCharAt(i))) { - resBoxColour = Color.lightGray; + resBoxColour = Color.lightGray; } else { @@ -92,24 +92,29 @@ public class SequenceRenderer public Color findSequenceColour(SequenceI seq, int i) { allGroups = av.alignment.findAllGroups(seq); - drawBoxes(seq, i,i, 0); + drawBoxes(seq, i, i, 0); return resBoxColour; } public void drawSequence(SequenceI seq, SequenceGroup[] sg, - int start, int end, int y1) + int start, int end, int y1) { + if (seq == null) + { + return; + } + allGroups = sg; - drawBoxes(seq, start, end, y1); + drawBoxes(seq, start, end, y1); - if(av.validCharWidth) + if (av.validCharWidth) { drawText(seq, start, end, y1); } } - public void drawBoxes(SequenceI seq, int start, int end, int y1) + public void drawBoxes(SequenceI seq, int start, int end, int y1) { int i = start; int length = seq.getLength(); @@ -121,7 +126,7 @@ public class SequenceRenderer while (i <= end) { resBoxColour = Color.white; - if(i < length) + if (i < length) { if (inCurrentSequenceGroup(i)) { @@ -136,7 +141,6 @@ public class SequenceRenderer } } - if (resBoxColour != tempColour) { if (tempColour != null) @@ -159,19 +163,30 @@ public class SequenceRenderer i++; } - graphics.fillRect(av.charWidth * (curStart - start), y1, curWidth, av.charHeight); + graphics.fillRect(av.charWidth * (curStart - start), y1, curWidth, + av.charHeight); } public void drawText(SequenceI seq, int start, int end, int y1) { + Font boldFont = null; + boolean bold = false; + if (av.upperCasebold) + { + boldFont = new Font(av.getFont().getName(), Font.BOLD, av.charHeight); - y1 += av.charHeight - av.charHeight / 5; // height/5 replaces pady + graphics.setFont(av.getFont()); + } + + y1 += av.charHeight - av.charHeight / 5; // height/5 replaces pady int charOffset = 0; // Need to find the sequence position here. - if(end+1>=seq.getLength()) - end = seq.getLength()-1; + if (end + 1 >= seq.getLength()) + { + end = seq.getLength() - 1; + } char s = ' '; @@ -219,10 +234,30 @@ public class SequenceRenderer } } + if (av.upperCasebold) + { + fm = graphics.getFontMetrics(); + if ('A' <= s && s <= 'Z') + { + if (!bold) + { + + graphics.setFont(boldFont); + } + bold = true; + } + else if (bold) + { + graphics.setFont(av.font); + bold = false; + } + + } + charOffset = (av.charWidth - fm.charWidth(s)) / 2; graphics.drawString(String.valueOf(s), - charOffset + av.charWidth * (i - start), - y1 ); + charOffset + av.charWidth * (i - start), + y1); } } @@ -246,7 +281,8 @@ public class SequenceRenderer return false; } - public void drawHighlightedText(SequenceI seq, int start, int end, int x1, int y1) + public void drawHighlightedText(SequenceI seq, int start, int end, int x1, + int y1) { int pady = av.charHeight / 5; int charOffset = 0; @@ -256,13 +292,13 @@ public class SequenceRenderer char s = '~'; // Need to find the sequence position here. - if(av.validCharWidth) + if (av.validCharWidth) { for (int i = start; i <= end; i++) { if (i < seq.getLength()) { - s = seq.getSequence().charAt(i); + s = seq.getCharAt(i); } charOffset = (av.charWidth - fm.charWidth(s)) / 2; @@ -292,6 +328,6 @@ public class SequenceRenderer charOffset + x1, (y1 + av.charHeight) - pady); } - } + } }