import jalview.analysis.*;\r
\r
\r
-public class SeqCanvas extends JPanel\r
+public class SeqCanvas extends JComponent\r
{\r
FeatureRenderer fr;\r
+ SequenceRenderer sr;\r
BufferedImage img;\r
Graphics2D gg;\r
int imgWidth;\r
{\r
this.av = av;\r
fr = new FeatureRenderer(av);\r
+ sr = new SequenceRenderer(av);\r
setLayout(new BorderLayout());\r
PaintRefresher.Register(this);\r
\r
gg.copyArea(0, 0, imgWidth, imgHeight, -horizontal * av.charWidth,\r
-vertical * av.charHeight);\r
\r
- int sr = av.startRes, er = av.endRes + 1, ss = av.startSeq, es = av.endSeq,\r
+ int sr = av.startRes, er = av.endRes, ss = av.startSeq, es = av.endSeq,\r
transX = 0, transY = 0;\r
if (horizontal > 0) // scrollbar pulled right, image to the left\r
{\r
gg.translate(transX, transY);\r
\r
gg.setColor(Color.white);\r
- gg.fillRect(0,0, (er-sr)*av.charWidth, (es-ss)*av.charHeight);\r
+ gg.fillRect(0,0, (er-sr+1)*av.charWidth, (es-ss)*av.charHeight);\r
drawPanel(gg, sr, er, ss, es, sr, ss, 0);\r
gg.translate( -transX, -transY);\r
\r
* in the adjustment listener in SeqPanel when the scrollbars move.\r
*/\r
\r
- public void paintComponent(Graphics g)\r
+ public void paint(Graphics g)\r
{\r
g.setColor(Color.white);\r
g.fillRect(0, 0, getWidth(), getHeight());\r
int endx = startRes+cWidth-1;\r
int ypos = 2*av.charHeight;\r
\r
-\r
while (ypos <= canvasHeight && startRes<av.alignment.getWidth() )\r
{\r
g.setColor(Color.black);\r
if(av.scaleAboveWrapped)\r
drawNorthScale(g, startRes, endx, ypos);\r
\r
- g.setClip(0, 0, cWidth*av.charWidth, getHeight());\r
+\r
+ // When printing we have an extra clipped region,\r
+ // the Printable page which we need to account for here\r
+ Shape clip = g.getClip();\r
+ if(clip==null)\r
+ g.setClip(0, 0, cWidth*av.charWidth, canvasHeight);\r
+ else\r
+ g.setClip(0,\r
+ (int)clip.getBounds().getY(),\r
+ cWidth*av.charWidth,\r
+ (int)clip.getBounds().getHeight()\r
+ );\r
+\r
drawPanel(g, startRes, endx, 0, al.getHeight(), startRes, 0, ypos);\r
- g.setClip(null);\r
+ g.setClip(clip);\r
g.translate(-LABEL_WEST,0);\r
\r
ypos += cHeight;\r
}\r
\r
\r
- public void drawPanel(Graphics g1,int x1,int x2, int y1, int y2,int startx, int starty,int offset) {\r
+ synchronized public void drawPanel(Graphics g1,int x1,int x2, int y1, int y2,int startx, int starty,int offset) {\r
\r
Graphics2D g = (Graphics2D)g1;\r
g.setFont(av.getFont());\r
- RendererI sr = av.getRenderer();\r
+ sr.renderGaps(av.renderGaps);\r
+\r
\r
SequenceI nextSeq;\r
\r
sr.drawSequence(g, nextSeq, av.alignment.findAllGroups( nextSeq ),x1,x2,\r
(x1 - startx) * av.charWidth,\r
offset + AlignmentUtil.getPixelHeight(starty, i, av.charHeight),\r
- av.charWidth,av.charHeight,null, i);\r
+ av.charWidth,av.charHeight);\r
\r
if(av.showSequenceFeatures)\r
{\r
(x1 - startx) * av.charWidth,\r
offset +\r
AlignmentUtil.getPixelHeight(starty, i, av.charHeight),\r
- av.charWidth, av.charHeight, null, i);\r
+ av.charWidth, av.charHeight);\r
}\r
}\r
//\r