Merge branch 'bug/JAL-4375_annotation_not_redrawn_correctly_when_scrolling_left-right...
[jalview.git] / src / jalview / renderer / ContactMapRenderer.java
index 9f0cc35..f966e24 100644 (file)
  */
 package jalview.renderer;
 
+import java.awt.BasicStroke;
 import java.awt.Color;
 import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Stroke;
 
 import jalview.api.AlignViewportI;
 import jalview.datamodel.AlignmentAnnotation;
@@ -134,7 +137,7 @@ public abstract class ContactMapRenderer implements AnnotationRowRendererI
           boolean hasHiddenColumns, AlignViewportI viewport,
           HiddenColumns hiddenColumns, ColumnSelection columnSelection,
           AlignmentAnnotation _aa, Annotation[] aa_annotations, int sRes,
-          int eRes, float min, float max, int y)
+          int eRes, float min, float max, int y, boolean isVectorRendering)
   {
     if (sRes > aa_annotations.length)
     {
@@ -157,6 +160,11 @@ public abstract class ContactMapRenderer implements AnnotationRowRendererI
     {
       return;
     }
+    Graphics2D g2d = (Graphics2D) g;
+    // Not sure turning off antialiasing is appropriate here
+    // g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
+    // RenderingHints.VALUE_ANTIALIAS_OFF);
+    g2d.setStroke(thinRectangularLineStroke);
     while (x < eRes - sRes)
     {
       column = sRes + x;
@@ -251,14 +259,14 @@ public abstract class ContactMapRenderer implements AnnotationRowRendererI
                   (int) ((col.getBlue() + gpcol.getBlue()) / 2f));
         }
         g.setColor(col);
-        if (cgeom.pixels_step > 1)
+        if (isVectorRendering || cgeom.pixels_step > 1)
         {
-          g.fillRect(x * charWidth, botY + ht, charWidth,
+          g2d.fillRect(x * charWidth, botY + ht, charWidth,
                   cgeom.pixels_step);
         }
         else
         {
-          g.drawLine(x * charWidth, botY + ht, (x + 1) * charWidth,
+          g2d.drawLine(x * charWidth, botY + ht, (x + 1) * charWidth - 1,
                   botY + ht);
         }
       }
@@ -267,6 +275,9 @@ public abstract class ContactMapRenderer implements AnnotationRowRendererI
 
   }
 
+  private static Stroke thinRectangularLineStroke = new BasicStroke(1,
+          BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL);
+
   Color shadeFor(float min, float max, float value)
   {
     return jalview.util.ColorUtils.getGraduatedColour(value, 0,