X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FSeqCanvas.java;h=99447a4b1aabbafd3c6fcb04635474a9b774b3b7;hb=03e082a4dba4e1ba9b6929ca3d3f8055f9224fc1;hp=f542b17d68effd255169286b4fd82b36e2131255;hpb=3d1120fca6dd9dc2865ee6cde98760f65c2701da;p=jalview.git diff --git a/src/jalview/gui/SeqCanvas.java b/src/jalview/gui/SeqCanvas.java index f542b17..99447a4 100755 --- a/src/jalview/gui/SeqCanvas.java +++ b/src/jalview/gui/SeqCanvas.java @@ -34,8 +34,8 @@ import javax.swing.*; */ public class SeqCanvas extends JComponent { - FeatureRenderer fr; - SequenceRenderer sr; + final FeatureRenderer fr; + final SequenceRenderer sr; BufferedImage img; Graphics2D gg; int imgWidth; @@ -46,6 +46,11 @@ public class SeqCanvas extends JComponent int LABEL_WEST; int LABEL_EAST; + + int cursorX = 0; + int cursorY = 0; + + /** * Creates a new SeqCanvas object. * @@ -100,8 +105,11 @@ public class SeqCanvas extends JComponent // NORTH SCALE for (int i = scalestartx; i < endx; i += 10) { - String string = String.valueOf(av.getColumnSelection().adjustForHiddenColumns(i)); - g.drawString(string, (i - startx - 1) * av.charWidth, + int value = i; + if(av.hasHiddenColumns) + value = av.getColumnSelection().adjustForHiddenColumns(value); + + g.drawString( String.valueOf(value), (i - startx - 1) * av.charWidth, ypos - (av.charHeight / 2)); g.drawLine(((i - startx - 1) * av.charWidth) + (av.charWidth / 2), @@ -124,6 +132,9 @@ public class SeqCanvas extends JComponent FontMetrics fm = getFontMetrics(av.getFont()); ypos += av.charHeight; + if(av.hasHiddenColumns) + startx = av.getColumnSelection().adjustForHiddenColumns(startx); + // EAST SCALE for (int i = 0; i < av.alignment.getHeight(); i++) { @@ -166,6 +177,9 @@ public class SeqCanvas extends JComponent { ypos += av.charHeight; + if(av.hasHiddenColumns) + endx = av.getColumnSelection().adjustForHiddenColumns(endx); + // EAST SCALE for (int i = 0; i < av.alignment.getHeight(); i++) { @@ -173,6 +187,8 @@ public class SeqCanvas extends JComponent int index = endx; int value = -1; + + while (index > startx) { if (jalview.util.Comparison.isGap(seq.getCharAt(index))) @@ -208,6 +224,7 @@ public class SeqCanvas extends JComponent return; } + fastPaint = true; gg.copyArea(horizontal * av.charWidth, @@ -224,6 +241,7 @@ public class SeqCanvas extends JComponent int transX = 0; int transY = 0; + if (horizontal > 0) // scrollbar pulled right, image to the left { er ++; @@ -280,7 +298,7 @@ public class SeqCanvas extends JComponent { super.paintComponent(g); - sr.renderGaps(av.renderGaps); + if ( img != null && (fastPaint || (getVisibleRect().width != g.getClipBounds().width) @@ -329,7 +347,7 @@ public class SeqCanvas extends JComponent if (pdbCanvas != null) { - pdbCanvas.updateSeqColours(); + pdbCanvas.updateSeqColours(); } } @@ -418,12 +436,18 @@ public class SeqCanvas extends JComponent av.endRes = av.startRes + cWidth; - int endx = (startRes + cWidth) - 1; + int endx; int ypos = hgap; - while ((ypos <= canvasHeight) && (startRes < av.alignment.getWidth())) { + endx = startRes + cWidth; + + if (endx > al.getWidth()) + { + endx = al.getWidth(); + } + g.setFont(av.getFont()); g.setColor(Color.black); @@ -460,12 +484,6 @@ public class SeqCanvas extends JComponent cWidth * av.charWidth, (int) clip.getBounds().getHeight()); } - if (av.vconsensus!=null && av.alignment.getWidth() >= av.vconsensus.size()) - { - endx = av.vconsensus.size() - 2; - } - - drawPanel(g, startRes, endx, 0, al.getHeight(), ypos); if(av.showAnnotation) @@ -474,7 +492,7 @@ public class SeqCanvas extends JComponent if(annotations==null) annotations = new AnnotationPanel(av); - annotations.drawComponent( (Graphics2D) g, startRes, endx + 1); + annotations.drawComponent( (Graphics2D) g, startRes, endx); g.translate(0, -cHeight - ypos); } g.setClip(clip); @@ -485,12 +503,6 @@ public class SeqCanvas extends JComponent ypos -= 3; startRes += cWidth; - endx = (startRes + cWidth) - 1; - - if (endx > al.getWidth()) - { - endx = al.getWidth(); - } } } @@ -510,35 +522,12 @@ public class SeqCanvas extends JComponent * DOCUMENT ME! * * @param g1 DOCUMENT ME! - * @param x1 DOCUMENT ME! - * @param x2 DOCUMENT ME! - * @param y1 DOCUMENT ME! - * @param y2 DOCUMENT ME! - * @param startx DOCUMENT ME! - * @param starty DOCUMENT ME! + * @param startRes DOCUMENT ME! + * @param endRes DOCUMENT ME! + * @param startSeq DOCUMENT ME! + * @param endSeq DOCUMENT ME! * @param offset DOCUMENT ME! */ - - float aaRatio = 2f/3f; - public void increaseAARatio() - { - aaRatio += .025; - if(aaRatio>1) - aaRatio = 1; - - repaint(); - } - - public void decreaseAARation() - { - aaRatio -= .025; - if(aaRatio<0) - aaRatio = 0; - - repaint(); - } - - void drawPanel(Graphics g1, int startRes, int endRes, int startSeq, int endSeq, int offset) { @@ -587,7 +576,7 @@ public class SeqCanvas extends JComponent blockStart = hideEnd + 1; } - if (screenY < (endRes - startRes)) + if (screenY <= (endRes - startRes)) { blockEnd = blockStart + (endRes - startRes) - screenY; g1.translate(screenY * av.charWidth, 0); @@ -608,8 +597,11 @@ public class SeqCanvas extends JComponent int startSeq, int endSeq, int offset) { + + Graphics2D g = (Graphics2D) g1; g.setFont(av.getFont()); + sr.prepare(g, av.renderGaps); SequenceI nextSeq; @@ -619,15 +611,14 @@ public class SeqCanvas extends JComponent { nextSeq = av.alignment.getSequenceAt(i); - sr.drawSequence(g, nextSeq, av.alignment.findAllGroups(nextSeq), + sr.drawSequence(nextSeq, av.alignment.findAllGroups(nextSeq), startRes, endRes, offset + ( (i - startSeq) * av.charHeight)); if (av.showSequenceFeatures) { fr.drawSequence(g1, nextSeq, startRes, endRes, - offset + ((i - startSeq) * av.charHeight), av.charWidth, - av.charHeight); + offset + ((i - startSeq) * av.charHeight)); } /// Highlight search Results once all sequences have been drawn @@ -641,10 +632,16 @@ public class SeqCanvas extends JComponent sr.drawHighlightedText(nextSeq, visibleResults[r], visibleResults[r + 1], (visibleResults[r] - startRes) * av.charWidth, - offset + ( (i - startSeq) * av.charHeight), - av.charWidth, av.charHeight); + offset + ( (i - startSeq) * av.charHeight)); } } + + if(av.cursorMode && cursorY==i + && cursorX>=startRes && cursorX<=endRes) + { + sr.drawCursor(nextSeq, cursorX, (cursorX - startRes) * av.charWidth, + offset + ( (i - startSeq) * av.charHeight)); + } } //