- // Draw the rest of the panels\r
- int chunkHeight = (al.getHeight() + 2)*av.charHeight;\r
- int row = av.getStartRes() / av.chunkWidth ;\r
- for(int ypos=2*av.charHeight;\r
- ypos <= getHeight() && row*av.chunkWidth<al.getWidth();\r
- ypos += chunkHeight, row++ )\r
+ g.setColor(Color.white);\r
+ g.fillRect(0, 0, getWidth(), getHeight());\r
+\r
+ if (fastPaint)\r
+ {\r
+ fastPaint = false;\r
+ g.drawImage(image, 0, 0, this);\r
+\r
+ return;\r
+ }\r
+\r
+ imgHeight = getHeight();\r
+ imgHeight -= (imgHeight % av.charHeight);\r
+\r
+ if (imgHeight < 1)\r
+ {\r
+ return;\r
+ }\r
+\r
+ image = new BufferedImage(getWidth(), imgHeight,\r
+ BufferedImage.TYPE_INT_RGB);\r
+ gg = (Graphics2D) image.getGraphics();\r
+\r
+ //Fill in the background\r
+ gg.setColor(Color.white);\r
+ gg.fillRect(0, 0, getWidth(), imgHeight);\r
+\r
+\r
+ drawIds(av.getStartSeq(), av.endSeq);\r
+\r
+ g.drawImage(image, 0, 0, this);\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @param starty DOCUMENT ME!\r
+ * @param endy DOCUMENT ME!\r
+ */\r
+ void drawIds(int starty, int endy)\r
+ {\r
+ Font italic = new Font(av.getFont().getName(), Font.ITALIC,\r
+ av.getFont().getSize());\r
+\r
+ gg.setFont(italic);\r
+\r
+ if (av.antiAlias)\r
+ gg.setRenderingHint(RenderingHints.KEY_ANTIALIASING,\r
+ RenderingHints.VALUE_ANTIALIAS_ON);\r
+\r
+ Color currentColor = Color.white;\r
+ Color currentTextColor = Color.black;\r
+\r
+ if (av.getWrapAlignment())\r
+ {\r
+ int maxwidth = av.alignment.getWidth();\r
+ int alheight = av.alignment.getHeight();\r
+\r
+ if (av.hasHiddenColumns)\r
+ maxwidth = av.getColumnSelection().findColumnPosition(maxwidth) - 1;\r
+\r
+ int annotationHeight = 0;\r
+ AnnotationLabels labels = null;\r
+\r
+ if(av.showAnnotation)\r