JAL-4045 - don't apply distribution dependent scale factor to the axis lines!
[jalview.git] / src / jalview / gui / RotatableCanvas.java
index d7cb78a..ef0b2aa 100755 (executable)
  */
 package jalview.gui;
 
-import jalview.api.RotatableCanvasI;
-import jalview.datamodel.Point;
-import jalview.datamodel.SequenceGroup;
-import jalview.datamodel.SequenceI;
-import jalview.datamodel.SequencePoint;
-import jalview.math.RotatableMatrix;
-import jalview.math.RotatableMatrix.Axis;
-import jalview.util.ColorUtils;
-import jalview.util.MessageManager;
-import jalview.viewmodel.AlignmentViewport;
-
 import java.awt.Color;
 import java.awt.Dimension;
 import java.awt.Font;
@@ -53,13 +42,24 @@ import java.util.List;
 import javax.swing.JPanel;
 import javax.swing.ToolTipManager;
 
+import jalview.api.RotatableCanvasI;
+import jalview.datamodel.Point;
+import jalview.datamodel.SequenceGroup;
+import jalview.datamodel.SequenceI;
+import jalview.datamodel.SequencePoint;
+import jalview.math.RotatableMatrix;
+import jalview.math.RotatableMatrix.Axis;
+import jalview.util.ColorUtils;
+import jalview.util.MessageManager;
+import jalview.viewmodel.AlignmentViewport;
+
 /**
  * Models a Panel on which a set of points, and optionally x/y/z axes, can be
  * drawn, and rotated or zoomed with the mouse
  */
-public class RotatableCanvas extends JPanel implements MouseListener,
-        MouseMotionListener, KeyListener, RotatableCanvasI,
-        MouseWheelListener
+public class RotatableCanvas extends JPanel
+        implements MouseListener, MouseMotionListener, KeyListener,
+        RotatableCanvasI, MouseWheelListener
 {
   private static final float ZOOM_OUT = 0.9f;
 
@@ -198,15 +198,15 @@ public class RotatableCanvas extends JPanel implements MouseListener,
   {
     float[] max = new float[DIMS];
     float[] min = new float[DIMS];
-    
+
     max[0] = -Float.MAX_VALUE;
     max[1] = -Float.MAX_VALUE;
     max[2] = -Float.MAX_VALUE;
-    
+
     min[0] = Float.MAX_VALUE;
     min[1] = Float.MAX_VALUE;
     min[2] = Float.MAX_VALUE;
-    
+
     for (SequencePoint sp : sequencePoints)
     {
       max[0] = Math.max(max[0], sp.coord.x);
@@ -216,7 +216,7 @@ public class RotatableCanvas extends JPanel implements MouseListener,
       min[1] = Math.min(min[1], sp.coord.y);
       min[2] = Math.min(min[2], sp.coord.z);
     }
-    
+
     seqMin = min;
     seqMax = max;
   }
@@ -322,16 +322,16 @@ public class RotatableCanvas extends JPanel implements MouseListener,
 
     int midX = getWidth() / 2;
     int midY = getHeight() / 2;
-    float maxWidth = Math.max(Math.abs(seqMax[0] - seqMin[0]),
-            Math.abs(seqMax[1] - seqMin[1]));
+    // float maxWidth = Math.max(Math.abs(seqMax[0] - seqMin[0]),
+    // Math.abs(seqMax[1] - seqMin[1]));
     int pix = Math.min(getWidth(), getHeight());
-    float scaleBy = pix * getScaleFactor() / (2f * maxWidth);
+    float scaleBy = pix * getScaleFactor() / (2f);
 
     for (int i = 0; i < DIMS; i++)
     {
       g.drawLine(midX, midY,
-              midX + (int) (getAxisEndPoints()[i].x * scaleBy * seqMax[0]),
-              midY + (int) (getAxisEndPoints()[i].y * scaleBy * seqMax[1]));
+              midX + (int) (getAxisEndPoints()[i].x * scaleBy * 0.25),
+              midY + (int) (getAxisEndPoints()[i].y * scaleBy * 0.25));
     }
   }
 
@@ -699,7 +699,7 @@ public class RotatableCanvas extends JPanel implements MouseListener,
 
       // Now translate back again
       sp.translate(centre[0], centre[1], centre[2]);
-      
+
       zMin = Math.min(zMin, sp.coord.z);
       zMax = Math.max(zMax, sp.coord.z);
     }
@@ -758,8 +758,7 @@ public class RotatableCanvas extends JPanel implements MouseListener,
         if (av != null)
         {
           SequenceI sequence = sp.getSequence();
-          if (!av.getSelectionGroup().getSequences(null)
-                  .contains(sequence))
+          if (!av.getSelectionGroup().getSequences(null).contains(sequence))
           {
             av.getSelectionGroup().addSequence(sequence, true);
           }
@@ -794,10 +793,8 @@ public class RotatableCanvas extends JPanel implements MouseListener,
     for (int i = 0; i < npoint; i++)
     {
       SequencePoint sp = sequencePoints.get(i);
-      int px = (int) ((sp.coord.x - centre[0]) * scaleBy)
-              + halfwidth;
-      int py = (int) ((sp.coord.y - centre[1]) * scaleBy)
-              + halfheight;
+      int px = (int) ((sp.coord.x - centre[0]) * scaleBy) + halfwidth;
+      int py = (int) ((sp.coord.y - centre[1]) * scaleBy) + halfheight;
 
       if ((Math.abs(px - x) < NEARBY) && (Math.abs(py - y) < NEARBY))
       {