JAL-2388 Initial removal of hidden cols/seqs out of overview
[jalview.git] / src / jalview / viewmodel / ViewportPositionProps.java
index 1bb49af..f00d69f 100644 (file)
@@ -20,7 +20,7 @@
  */
 package jalview.viewmodel;
 
-import jalview.api.ViewStyleI;
+import jalview.api.AlignViewportI;
 import jalview.datamodel.AlignmentI;
 
 /**
@@ -42,23 +42,18 @@ public class ViewportPositionProps extends ViewportProperties
   // end sequence of viewport
   private int endSeq;
 
-  // character height
-  private int charHeight;
-
-  // character width
-  private int charWidth;
-
   // alignment
   private AlignmentI al;
 
-  // viewstyle
-  private ViewStyleI viewstyle;
+  // viewport
+  private AlignViewportI av; // this is a bad dependency, viewmodel should not
+                             // depend on api
 
   /**
    * Constructor
    * @param alignment TODO
    */
-  public ViewportPositionProps(AlignmentI alignment, ViewStyleI vstyle)
+  public ViewportPositionProps(AlignmentI alignment, AlignViewportI viewport)
   {
     // initial values of viewport settings
     this.startRes = 0;
@@ -66,17 +61,7 @@ public class ViewportPositionProps extends ViewportProperties
     this.startSeq = 0;
     this.endSeq = alignment.getHeight() - 1;
     this.al = alignment;
-    this.viewstyle = vstyle;
-  }
-
-  public void setCharHeight(int h)
-  {
-    viewstyle.setCharHeight(h);
-  }
-
-  public void setCharWidth(int w)
-  {
-    viewstyle.setCharWidth(w);
+    this.av = viewport;
   }
 
   // ways to update values
@@ -116,22 +101,22 @@ public class ViewportPositionProps extends ViewportProperties
 
   public void setEndRes(int res)
   {
-    if (res > al.getWidth() - 1)
+    if (res > al.getWidth())
     {
-      res = al.getWidth() - 1;
+      res = al.getWidth();
     }
-    else if (res < 0)
+    else if (res < 1)
     {
-      res = 0;
+      res = 1;
     }
     this.endRes = res;
   }
 
   public void setStartSeq(int seq)
   {
-    if (seq > al.getHeight())
+    if (seq > al.getHeight() - 1)
     {
-      seq = al.getHeight();
+      seq = al.getHeight() - 1;
     }
     else if (seq < 0)
     {
@@ -146,9 +131,9 @@ public class ViewportPositionProps extends ViewportProperties
     {
       seq = al.getHeight();
     }
-    else if (seq < 0)
+    else if (seq < 1)
     {
-      seq = 0;
+      seq = 1;
     }
     this.endSeq = seq;
   }
@@ -184,68 +169,62 @@ public class ViewportPositionProps extends ViewportProperties
   {
     return endSeq;
   }
+
   /**
-   * Get start residue of viewport
+   * Get absolute start residue of viewport
    */
-  public int getStartRes(boolean countHidden)
+  public int getAbsoluteStartRes()
   {
-    if (countHidden)
-    {
-      return 0; // av.getColumnSelection().adjustForHiddenColumns(startRes);
-    }
-    else
+    int start = startRes;
+
+    if (av.hasHiddenColumns())
     {
-      return startRes;
+      start = av.getColumnSelection().adjustForHiddenColumns(start);
     }
+    return start;
   }
 
   /**
-   * Convert distance x in viewport pixels to a distance in number of residues
-   * 
-   * @param x
-   *          number of pixels
-   * @return number of residues
+   * Get absolute start residue of viewport
    */
-  public int convertPixelsToResidues(int x)
+  public int getAbsoluteEndRes()
   {
-    return Math.round((float) x / viewstyle.getCharWidth());
-    // return (int) ((float) x / viewstyle.getCharWidth());
-  }
+    int end = endRes;
 
-  /**
-   * Convert distance y in viewport pixels to a distance in number of sequences
-   * 
-   * @param y
-   *          number of pixels
-   * @return number of sequences
-   */
-  public int convertPixelsToSequences(int y)
-  {
-    return Math.round((float) y / viewstyle.getCharHeight());
-    // return (int) ((float) y / viewstyle.getCharHeight());
+    if (av.hasHiddenColumns())
+    {
+      end = av.getColumnSelection().adjustForHiddenColumns(end);
+    }
+    return end;
   }
-  
+
   /**
-   * Convert number of sequences s to a height in viewport pixels
-   * 
-   * @param s
-   *          number of sequences
-   * @return number of pixels
+   * Get absolute start sequence of viewport
    */
-  public int convertSequencesToPixels(int s)
+  public int getAbsoluteStartSeq()
   {
-    return (s * viewstyle.getCharHeight());
+    int start = startSeq;
+
+    if (av.hasHiddenRows())
+    {
+      start = av.getAlignment().getHiddenSequences()
+              .adjustForHiddenSeqs(start);
+    }
+    return start;
   }
 
   /**
-   * Convert number of residues r to a width in viewport pixels
-   * 
-   * @param r
-   *          number of residues
-   * @return number of pixels
+   * Get absolute end sequence of viewport
    */
-  public int convertResiduesToPixels(int r)
+  public int getAbsoluteEndSeq()
   {
-    return (r * viewstyle.getCharWidth());
+    int end = endSeq;
+
+    if (av.hasHiddenRows())
+    {
+      end = av.getAlignment().getHiddenSequences().adjustForHiddenSeqs(end);
+    }
+    return end;
   }
+
 }