import java.beans.PropertyChangeEvent;
import java.util.Iterator;
+@SuppressWarnings("serial")
public class SeqCanvas extends Panel implements ViewportListenerI
{
FeatureRenderer fr;
.visibleToAbsoluteColumn(endx);
}
- int maxwidth = av.getAlignment().getWidth();
- if (av.hasHiddenColumns())
- {
- maxwidth = av.getAlignment().getHiddenColumns()
- .absoluteToVisibleColumn(maxwidth) - 1;
- }
-
// WEST SCALE
for (int i = 0; i < av.getAlignment().getHeight(); i++)
{
int endx;
int ypos = hgap;
- int maxwidth = av.getAlignment().getWidth();
-
- if (av.hasHiddenColumns())
- {
- maxwidth = av.getAlignment().getHiddenColumns()
- .absoluteToVisibleColumn(maxwidth);
- }
+ int maxwidth = av.getAlignment().getVisibleWidth();
while ((ypos <= canvasHeight) && (startRes < maxwidth))
{
HiddenColumns hidden = av.getAlignment().getHiddenColumns();
g.setColor(Color.blue);
int res;
- Iterator<Integer> it = hidden.getBoundedStartIterator(startRes,
+ Iterator<Integer> it = hidden.getStartRegionIterator(startRes,
endx + 1);
while (it.hasNext())
{
{ ypos - (avcharHeight / 2), ypos - (avcharHeight / 2), ypos - (avcharHeight / 2) + 8 }, 3);
}
}
-
+ // BH 2020.03.19 avoiding g.setClip at all costs
+ g = g.create();
if (g.getClip() == null)
{
- g.setClip(0, 0, cWidth * avcharWidth, canvasHeight);
+ g.clipRect(0, 0, cWidth * avcharWidth, canvasHeight);
}
drawPanel(g, startRes, endx, 0, al.getHeight() - 1, ypos);
- g.setClip(null);
+ // g.setClip(null);
+ g.dispose();
if (av.isShowAnnotation())
{
g.translate(0, cHeight + ypos + 4);
int blockEnd;
HiddenColumns hidden = av.getAlignment().getHiddenColumns();
- VisibleContigsIterator regions = (VisibleContigsIterator) hidden
+ VisibleContigsIterator regions = hidden
.getVisContigsIterator(startRes, endRes + 1, true);
while (regions.hasNext())
}
}
+ /**
+ * Ensure that a full paint is done next, for whatever reason. This was
+ * necessary for JavaScript; apparently in Java the timing is just right on
+ * multiple threads (EventQueue-0, Consensus, Conservation) that we can get
+ * away with one fast paint before the others, but this ensures that in the
+ * end we get a full paint. Problem arose in relation to copy/paste, where the
+ * paste was not finalized with a full paint.
+ *
+ * @author hansonr 2019.04.17
+ */
+ public void clearFastPaint()
+ {
+ fastPaint = false;
+ }
+
}