*/
package jalview.viewmodel;
-import jalview.api.ViewStyleI;
+import jalview.api.AlignViewportI;
import jalview.datamodel.AlignmentI;
/**
// 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;
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
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)
{
{
seq = al.getHeight();
}
- else if (seq < 0)
+ else if (seq < 1)
{
- seq = 0;
+ seq = 1;
}
this.endSeq = seq;
}
{
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;
}
+
}