X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FSeqCanvas.java;h=7dbb8d3c63c44393165768770cff0e387f043522;hb=ce23b7810e0a9fea03e3f46a14319e1012d4eabf;hp=303aac69ea4a6a3134293ce2b4cfc5bfe7d64220;hpb=ce728f87f1f43be3041ef02f7f2cc2e39314711a;p=jalview.git diff --git a/src/jalview/gui/SeqCanvas.java b/src/jalview/gui/SeqCanvas.java index 303aac6..7dbb8d3 100755 --- a/src/jalview/gui/SeqCanvas.java +++ b/src/jalview/gui/SeqCanvas.java @@ -47,8 +47,6 @@ public class SeqCanvas extends JComponent int LABEL_WEST; int LABEL_EAST; - boolean isOverview = false; - /** * Creates a new SeqCanvas object. * @@ -64,6 +62,28 @@ public class SeqCanvas extends JComponent setBackground(Color.white); } + MCview.PDBCanvas pdbCanvas; + public SequenceRenderer getSequenceRenderer() + { + return sr; + } + + public FeatureRenderer getFeatureRenderer() + { + return fr; + } + + public void setPDBCanvas(MCview.PDBCanvas pc) + { + pdbCanvas = pc; + } + + public AlignViewport getViewport() + { + return av; + } + + /** * DOCUMENT ME! * @@ -170,7 +190,7 @@ public class SeqCanvas extends JComponent if (value != -1) { - g.drawString(String.valueOf(value), av.charWidth/2, + g.drawString(String.valueOf(value), 0, (ypos + (i * av.charHeight)) - (av.charHeight / 5)); } } @@ -184,11 +204,13 @@ public class SeqCanvas extends JComponent */ public void fastPaint(int horizontal, int vertical) { - if (gg == null) + if (fastPaint || gg == null) { return; } + fastPaint = true; + gg.copyArea(horizontal * av.charWidth, vertical * av.charHeight, imgWidth, @@ -240,7 +262,6 @@ public class SeqCanvas extends JComponent drawPanel(gg, sr, er, ss, es, sr, ss, 0); gg.translate(-transX, -transY); - fastPaint = true; repaint(); } @@ -258,18 +279,20 @@ public class SeqCanvas extends JComponent // Set this to false to force a full panel paint public void paintComponent(Graphics g) { + super.paintComponent(g); + sr.renderGaps(av.renderGaps); - if ((img != null) && - (fastPaint || (getWidth() != g.getClipBounds().width) || - (getHeight() != g.getClipBounds().height))) + if ( img != null && (fastPaint + || (getVisibleRect().width != g.getClipBounds().width) + || (getVisibleRect().height != g.getClipBounds().height))) { g.drawImage(img, 0, 0, this); fastPaint = false; - return; } + // this draws the whole of the alignment imgWidth = getWidth(); imgHeight = getHeight(); @@ -282,12 +305,13 @@ public class SeqCanvas extends JComponent return; } - img = new BufferedImage(imgWidth, imgHeight, BufferedImage.TYPE_INT_RGB); gg = (Graphics2D) img.getGraphics(); gg.setFont(av.getFont()); - gg.setRenderingHint(RenderingHints.KEY_ANTIALIASING, - RenderingHints.VALUE_ANTIALIAS_ON); + + if (av.antiAlias) + gg.setRenderingHint(RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); gg.setColor(Color.white); gg.fillRect(0, 0, imgWidth, imgHeight); @@ -304,6 +328,12 @@ public class SeqCanvas extends JComponent } g.drawImage(img, 0, 0, this); + + if (pdbCanvas != null) + { + pdbCanvas.updateSeqColours(); + } + } /** @@ -322,7 +352,7 @@ public class SeqCanvas extends JComponent if (av.scaleRightWrapped) { - LABEL_EAST = fm.stringWidth(getMask()+"0"); + LABEL_EAST = fm.stringWidth(getMask()); } if (av.scaleLeftWrapped) @@ -340,7 +370,7 @@ public class SeqCanvas extends JComponent */ String getMask() { - String mask = "0"; + String mask = "00"; for (int i = av.alignment.getWidth(); i > 0; i /= 10) { mask += "0"; @@ -368,7 +398,7 @@ public class SeqCanvas extends JComponent if (av.scaleRightWrapped) { - LABEL_EAST = fm.stringWidth(getMask()+"0"); + LABEL_EAST = fm.stringWidth(getMask()); } int LABEL_WEST = 0; @@ -396,6 +426,7 @@ public class SeqCanvas extends JComponent while ((ypos <= canvasHeight) && (startRes < av.alignment.getWidth())) { + g.setFont(av.getFont()); g.setColor(Color.black); if (av.scaleLeftWrapped) @@ -489,13 +520,55 @@ public class SeqCanvas extends JComponent * @param starty DOCUMENT ME! * @param offset DOCUMENT ME! */ - synchronized public void drawPanel(Graphics g1, int x1, int x2, int y1, - int y2, int startx, int starty, int offset) + + 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 x1, int x2, int y1, int y2, int startx, int starty, int offset) { - Graphics2D g = (Graphics2D) g1; - g.setFont(av.getFont()); + Graphics2D g = (Graphics2D) g1; + g.setFont(av.getFont()); + + SequenceI nextSeq; + // int aaHeight = av.charHeight; + // Font aafont = av.getFont(); + + /* dnafont = null, , dna = null, dnaHeight = av.charHeight + if (av.getShowTranslation()) + { + aaHeight = (int) (av.getCharHeight() * aaRatio); + dnaHeight = (int) (av.getCharHeight() * (1 - aaRatio)); + java.awt.geom.AffineTransform transform = new java.awt.geom.AffineTransform(); + transform.scale(1f / 3f, 1); + dnafont = new Font(av.getFont().getName(), av.getFont().getStyle(), + dnaHeight); + dnafont = dnafont.deriveFont(transform); + + aafont = new Font(av.getFont().getName(), av.getFont().getStyle(), + aaHeight); + transform = new java.awt.geom.AffineTransform(); + transform.scale(1 / aaRatio, 1); + aafont = aafont.deriveFont(transform); + } +*/ - SequenceI nextSeq; /// First draw the sequences ///////////////////////////// @@ -503,15 +576,46 @@ public class SeqCanvas extends JComponent { nextSeq = av.alignment.getSequenceAt(i); + /* if(av.getShowTranslation()) + { + dna = nextSeq; + StringBuffer sb = new StringBuffer(); + for(int r = 0; r 0)) + if ((group == null) && (av.alignment.getGroups().size() > 0)) { - group = (SequenceGroup) groups.elementAt(0); + group = (SequenceGroup) av.alignment.getGroups().elementAt(0); groupIndex = 0; } - - if (group != null && !isOverview) + if (group != null) { do { @@ -673,14 +775,14 @@ public class SeqCanvas extends JComponent groupIndex++; - if (groupIndex >= groups.size()) + if (groupIndex >= av.alignment.getGroups().size()) { break; } - group = (SequenceGroup) groups.elementAt(groupIndex); + group = (SequenceGroup) av.alignment.getGroups().elementAt(groupIndex); } - while (groupIndex < groups.size()); + while (groupIndex < av.alignment.getGroups().size()); } /// Highlight search Results once all sequences have been drawn