{\r
graphics = g;\r
fm = g.getFontMetrics();\r
- monospacedFont = fm.getStringBounds("M",g).getWidth()==fm.getStringBounds("|",g).getWidth();\r
+\r
+ // If EPS graphics, stringWidth will be a double, not an int\r
+ double dwidth = fm.getStringBounds("M", g).getWidth();\r
+\r
+ monospacedFont =\r
+ dwidth == fm.getStringBounds("|",g).getWidth()\r
+ && av.charWidth == (int)dwidth;\r
+\r
this.renderGaps = renderGaps;\r
}\r
\r
\r
drawBoxes(seq, start, end, y1);\r
\r
- drawText(seq, start, end, y1);\r
+ if (av.validCharWidth)\r
+ drawText(seq, start, end, y1);\r
}\r
\r
/**\r
\r
if(monospacedFont && av.showText && allGroups.length==0 && !av.getColourText())\r
{\r
+ if(av.renderGaps)\r
graphics.drawString(seq.getSequence(start, end + 1), 0, y1);\r
+ else\r
+ {\r
+ char gap = av.getGapCharacter();\r
+ graphics.drawString( seq.getSequence(start, end+1).replace(gap, ' '), 0, y1);\r
+ }\r
}\r
else\r
{\r
char s = '~';\r
\r
// Need to find the sequence position here.\r
- for (int i = start; i <= end; i++)\r
+ if(av.validCharWidth)\r
{\r
+ for (int i = start; i <= end; i++)\r
+ {\r
if (i < seq.getLength())\r
{\r
- s = seq.getSequence().charAt(i);\r
+ s = seq.getSequence().charAt(i);\r
}\r
\r
charOffset = (av.charWidth - fm.charWidth(s)) / 2;\r
graphics.drawString(String.valueOf(s),\r
- charOffset + x1 + (av.charWidth * (i - start)),\r
- (y1 + av.charHeight) - pady);\r
+ charOffset + x1 + (av.charWidth * (i - start)),\r
+ (y1 + av.charHeight) - pady);\r
+ }\r
}\r
}\r
\r
{\r
int pady = av.charHeight / 5;\r
int charOffset = 0;\r
- graphics.setColor(Color.lightGray);\r
+ graphics.setColor(Color.black);\r
graphics.fillRect(x1, y1, av.charWidth, av.charHeight);\r
- graphics.setColor(Color.white);\r
-\r
- graphics.setColor(Color.white);\r
\r
- char s = seq.getCharAt(res);\r
+ if(av.validCharWidth)\r
+ {\r
+ graphics.setColor(Color.white);\r
\r
- charOffset = (av.charWidth - fm.charWidth(s)) / 2;\r
- graphics.drawString(String.valueOf(s),\r
- charOffset + x1,\r
- (y1 + av.charHeight) - pady);\r
+ char s = seq.getCharAt(res);\r
\r
+ charOffset = (av.charWidth - fm.charWidth(s)) / 2;\r
+ graphics.drawString(String.valueOf(s),\r
+ charOffset + x1,\r
+ (y1 + av.charHeight) - pady);\r
+ }\r
\r
}\r
}\r