X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FRotatableCanvas.java;fp=src%2Fjalview%2Fgui%2FRotatableCanvas.java;h=ef0b2aa0453802f9957457a8d19d31045391f783;hb=3459a8a691cb22508d7067f240b7254e588e77d3;hp=d7cb78ac5523422b959f8271e3422034a41a5515;hpb=5b27f1062b2203c4c31702e205f4c78e1992063e;p=jalview.git diff --git a/src/jalview/gui/RotatableCanvas.java b/src/jalview/gui/RotatableCanvas.java index d7cb78a..ef0b2aa 100755 --- a/src/jalview/gui/RotatableCanvas.java +++ b/src/jalview/gui/RotatableCanvas.java @@ -20,17 +20,6 @@ */ 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)) {