X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Frenderer%2FAnnotationRenderer.java;h=b5dac0d50f95fb5daf98ac5379724f0bea3d6697;hb=3fdc889794e3566af57628f0b6a308eb23886f96;hp=fd1caf9a171b0b887ff03a76d8475b08db6e6833;hpb=ac2ebf05c1262b96c1a1b3e3d20b87d84f286a85;p=jalview.git diff --git a/src/jalview/renderer/AnnotationRenderer.java b/src/jalview/renderer/AnnotationRenderer.java index fd1caf9..b5dac0d 100644 --- a/src/jalview/renderer/AnnotationRenderer.java +++ b/src/jalview/renderer/AnnotationRenderer.java @@ -95,7 +95,7 @@ public class AnnotationRenderer private boolean av_ignoreGapsConsensus; - private boolean vectorRendition = false; + private boolean renderingVectors = false; private boolean glyphLineDrawn = false; @@ -175,7 +175,6 @@ public class AnnotationRenderer int x, int y, int iconOffset, int startRes, int column, boolean validRes, boolean validEnd) { - g.setColor(STEM_COLOUR); int sCol = (lastSSX / charWidth) + hiddenColumns.visibleToAbsoluteColumn(startRes); int x1 = lastSSX; @@ -185,11 +184,19 @@ public class AnnotationRenderer : row_annotations[column - 1].secondaryStructure; boolean diffupstream = sCol == 0 || row_annotations[sCol - 1] == null - || dc != row_annotations[sCol - 1].secondaryStructure; + || dc != row_annotations[sCol - 1].secondaryStructure + || !validEnd; boolean diffdownstream = !validRes || !validEnd || row_annotations[column] == null || dc != row_annotations[column].secondaryStructure; + if (diffupstream || diffdownstream) + { + // draw glyphline under arrow + drawGlyphLine(g, lastSSX, x, y, iconOffset); + } + g.setColor(STEM_COLOUR); + if (column > 0 && Rna.isClosingParenthesis(dc)) { if (diffupstream) @@ -202,7 +209,8 @@ public class AnnotationRenderer */ fillPolygon(g, new int[] { lastSSX + 5, lastSSX + 5, lastSSX }, new int[] - { y + iconOffset, y + 14 + iconOffset, y + 8 + iconOffset }, + { y + iconOffset + 1, y + 13 + iconOffset, + y + 7 + iconOffset }, 3); x1 += 5; } @@ -220,9 +228,10 @@ public class AnnotationRenderer * if annotation ending with an opeing base pair half of the stem, * display a forward arrow */ - fillPolygon(g, new int[] { x2 - 5, x2 - 5, x2 }, + fillPolygon(g, new int[] { x2 - 6, x2 - 6, x2 - 1 }, new int[] - { y + iconOffset, y + 14 + iconOffset, y + 8 + iconOffset }, + { y + iconOffset + 1, y + 13 + iconOffset, + y + 7 + iconOffset }, 3); x2 -= 5; } @@ -232,7 +241,8 @@ public class AnnotationRenderer } } // draw arrow body - fillRect(g, x1, y + 4 + iconOffset, x2 - x1, 7); + unsetAntialias(g); + fillRect(g, x1, y + 4 + iconOffset, x2 - x1, 6); } void drawNotCanonicalAnnot(Graphics g, Color nonCanColor, @@ -251,7 +261,8 @@ public class AnnotationRenderer : row_annotations[column - 1].displayCharacter; boolean diffupstream = sCol == 0 || row_annotations[sCol - 1] == null - || !dc.equals(row_annotations[sCol - 1].displayCharacter); + || !dc.equals(row_annotations[sCol - 1].displayCharacter) + || !validEnd; boolean diffdownstream = !validRes || !validEnd || row_annotations[column] == null || !dc.equals(row_annotations[column].displayCharacter); @@ -304,7 +315,7 @@ public class AnnotationRenderer } // draw arrow body unsetAntialias(g); - fillRect(g, x1 - 1, y + 4 + iconOffset, x2 - x1 + 1, 6); + fillRect(g, x1, y + 4 + iconOffset, x2 - x1, 6); } // public void updateFromAnnotationPanel(FontMetrics annotFM, AlignViewportI @@ -469,11 +480,9 @@ public class AnnotationRenderer { if (g instanceof EpsGraphics2D || g instanceof SVGGraphics2D) { - this.setVectorRendition(true); + this.setVectorRendering(true); } Graphics2D g2d = (Graphics2D) g; - // flag used for vector rendition - this.glyphLineDrawn = false; long stime = System.currentTimeMillis(); boolean usedFaded = false; @@ -624,6 +633,9 @@ public class AnnotationRenderer // first pass sets up state for drawing continuation from left-hand // column // of startRes + + // flag used for vector rendition + this.glyphLineDrawn = false; x = (startRes == 0) ? 0 : -1; while (x < endRes - startRes) { @@ -910,7 +922,7 @@ public class AnnotationRenderer // temp = x; break; default: - if (isVectorRendition()) + if (isVectorRendering()) { // draw single full width glyphline drawGlyphLine(g, lastSSX, endRes - x, y, iconOffset); @@ -1051,7 +1063,7 @@ public class AnnotationRenderer x, y, iconOffset, startRes, column, validRes, validEnd); break; default: - if (isVectorRendition()) + if (isVectorRendering()) { // draw single full width glyphline drawGlyphLine(g, lastSSX, endRes - x, y, iconOffset); @@ -1206,13 +1218,7 @@ public class AnnotationRenderer } unsetAntialias(g); g.setColor(GLYPHLINE_COLOR); - g.fillRect(lastSSX, y + 6 + iconOffset, (x * charWidth) - lastSSX - 1, - 2); - if (!isVectorRendition()) - { - g.drawRect(lastSSX, y + 6 + iconOffset, (x * charWidth) - lastSSX - 1, - 2); - } + g.fillRect(lastSSX, y + 6 + iconOffset, (x * charWidth) - lastSSX, 2); } void drawSheetAnnot(Graphics g, Annotation[] row, @@ -1228,7 +1234,7 @@ public class AnnotationRenderer g.setColor(SHEET_COLOUR); fillRect(g, lastSSX, y + 4 + iconOffset, - (x * charWidth) - lastSSX - 4, isVectorRendition() ? 6 : 7); + (x * charWidth) - lastSSX - 4, 6); fillPolygon(g, new int[] { (x * charWidth) - 6, (x * charWidth) - 6, @@ -1241,8 +1247,8 @@ public class AnnotationRenderer else { g.setColor(SHEET_COLOUR); - fillRect(g, lastSSX, y + 4 + iconOffset, x * charWidth - lastSSX, - isVectorRendition() ? 6 : 7); + fillRect(g, lastSSX, y + 4 + iconOffset, (x * charWidth) - lastSSX, + 6); } } @@ -1255,7 +1261,7 @@ public class AnnotationRenderer int x1 = lastSSX; int x2 = (x * charWidth); - if (USE_FILL_ROUND_RECT || isVectorRendition()) + if (USE_FILL_ROUND_RECT || isVectorRendering()) { // draw glyph line behind helix (visible in EPS or SVG output) drawGlyphLine(g, lastSSX, x, y, iconOffset); @@ -1272,7 +1278,6 @@ public class AnnotationRenderer } else { - // g.setColor(Color.orange); fillRoundRect(g, lastSSX, y + 3 + iconOffset, x2 - x1 - ofs, 8, 0, 0); } @@ -1283,7 +1288,6 @@ public class AnnotationRenderer } else { - // g.setColor(Color.magenta); fillRoundRect(g, lastSSX + ofs, y + 3 + iconOffset, x2 - x1 - ofs, 8, 0, 0); } @@ -1310,8 +1314,8 @@ public class AnnotationRenderer if (rightEnd) { - fillArc(g, (x * charWidth) - charWidth - 1, y + 3 + iconOffset, - charWidth, 8, 270, 180); + fillArc(g, ((x - 1) * charWidth), y + 3 + iconOffset, charWidth, 8, + 270, 180); x2 -= charWidth / 2; } @@ -1836,14 +1840,8 @@ public class AnnotationRenderer private void fillPolygon(Graphics g, int[] xpoints, int[] ypoints, int n) { - unsetAntialias(g); + setAntialias(g); g.fillPolygon(xpoints, ypoints, n); - if (!isVectorRendition()) - { - setAntialias(g); - g.fillPolygon(xpoints, ypoints, n); - g.drawPolygon(xpoints, ypoints, n); - } } /* @@ -1854,13 +1852,8 @@ public class AnnotationRenderer private void fillRect(Graphics g, int a, int b, int c, int d) { + unsetAntialias(g); g.fillRect(a, b, c, d); - /* - if (false && !isVectorRendition() && drawRect) - { - g.drawRect(a, b, c, d); - } - */ } private void fillRoundRect(Graphics g, int a, int b, int c, int d, int e, @@ -1868,20 +1861,12 @@ public class AnnotationRenderer { setAntialias(g); g.fillRoundRect(a, b, c, d, e, f); - if (!isVectorRendition()) - { - g.drawRoundRect(a, b, c, d, e, f); - } } private void fillArc(Graphics g, int a, int b, int c, int d, int e, int f) { setAntialias(g); g.fillArc(a, b, c, d, e, f); - if (!isVectorRendition()) - { - g.drawArc(a, b, c, d, e, f); - } } private void drawLine(Graphics g, Stroke s, int a, int b, int c, int d) @@ -1901,7 +1886,7 @@ public class AnnotationRenderer private void setAntialias(Graphics g) { - if (isVectorRendition()) + if (isVectorRendering()) { // no need to antialias vector drawings return; @@ -1916,7 +1901,7 @@ public class AnnotationRenderer private void unsetAntialias(Graphics g) { - if (isVectorRendition()) + if (isVectorRendering()) { // no need to antialias vector drawings return; @@ -1926,13 +1911,13 @@ public class AnnotationRenderer RenderingHints.VALUE_ANTIALIAS_OFF); } - public void setVectorRendition(boolean b) + public void setVectorRendering(boolean b) { - vectorRendition = b; + renderingVectors = b; } - public boolean isVectorRendition() + public boolean isVectorRendering() { - return vectorRendition; + return renderingVectors; } }