boolean fastpainting = false;
+ AnnotationPanel annotations;
+
/**
* Creates a new SeqCanvas object.
*
}
}
- AnnotationPanel annotations;
-
int getAnnotationHeight()
{
if (!av.isShowAnnotation())
// ///////////////////////////////////
SequenceGroup group = null;
-
- int sx = -1;
- int sy = -1;
- int ex = -1;
int groupIndex = -1;
- int visWidth = (endRes - startRes + 1) * charWidth;
if (av.getAlignment().getGroups().size() > 0)
{
do
{
+ drawPartialGroupOutline(g, group, startRes, endRes, startSeq,
+ endSeq, offset);
- // drawSelectionGroupPart(g, group, startRes, endRes, startSeq,
- // endSeq,offset);
- int oldY = -1;
- int i = 0;
- boolean inGroup = false;
- int top = -1;
- int bottom = -1;
-
- for (i = startSeq; i <= endSeq; i++)
- {
- // position of start residue of group relative to startRes, in pixels
- sx = (group.getStartRes() - startRes) * charWidth;
- sy = offset + ((i - startSeq) * charHeight);
- // width of group in pixels
- ex = (((group.getEndRes() + 1) - group.getStartRes()) * charWidth)
- - 1;
-
- if (sx + ex < 0 || sx > visWidth)
- {
- continue;
- }
-
- if ((sx <= (endRes - startRes) * charWidth)
- && group.getSequences(null).contains(
- av.getAlignment().getSequenceAt(i)))
- {
- if ((bottom == -1)
- && !group.getSequences(null).contains(
- av.getAlignment().getSequenceAt(i + 1)))
- {
- bottom = sy + charHeight;
- }
-
- if (!inGroup)
- {
- if (((top == -1) && (i == 0))
- || !group.getSequences(null).contains(
- av.getAlignment().getSequenceAt(i - 1)))
- {
- top = sy;
- }
-
- oldY = sy;
- inGroup = true;
-
- g.setStroke(new BasicStroke());
- g.setColor(group.getOutlineColour());
- }
- }
- else
- {
- if (inGroup)
- {
- // if start position is visible, draw vertical line to left of
- // group
- if (sx >= 0 && sx < visWidth)
- {
- g.drawLine(sx, oldY, sx, sy);
- }
-
- // if end position is visible, draw vertical line to right of
- // group
- if (sx + ex < visWidth)
- {
- g.drawLine(sx + ex, oldY, sx + ex, sy);
- }
-
- if (sx < 0)
- {
- ex += sx;
- sx = 0;
- }
-
- if (sx + ex > visWidth)
- {
- ex = visWidth;
- }
- else if (sx + ex >= (endRes - startRes + 1) * charWidth)
- {
- ex = (endRes - startRes + 1) * charWidth;
- }
-
- // draw horizontal line at top of group
- if (top != -1)
- {
- g.drawLine(sx, top, sx + ex, top);
- top = -1;
- }
-
- // draw horizontal line at bottom of group
- if (bottom != -1)
- {
- g.drawLine(sx, bottom, sx + ex, bottom);
- bottom = -1;
- }
-
- inGroup = false;
- }
- }
- }
-
- if (inGroup)
- {
- sy = offset + ((i - startSeq) * charHeight);
- if (sx >= 0 && sx < visWidth)
- {
- g.drawLine(sx, oldY, sx, sy);
- }
-
- if (sx + ex < visWidth)
- {
- g.drawLine(sx + ex, oldY, sx + ex, sy);
- }
-
- if (sx < 0)
- {
- ex += sx;
- sx = 0;
- }
-
- if (sx + ex > visWidth)
- {
- ex = visWidth;
- }
- else if (sx + ex >= (endRes - startRes + 1) * charWidth)
- {
- ex = (endRes - startRes + 1) * charWidth;
- }
-
- if (top != -1)
- {
- g.drawLine(sx, top, sx + ex, top);
- top = -1;
- }
-
- if (bottom != -1)
- {
- g.drawLine(sx, bottom - 1, sx + ex, bottom - 1);
- bottom = -1;
- }
-
- inGroup = false;
- }
-
groupIndex++;
g.setStroke(new BasicStroke());
{
if (!av.hasHiddenColumns())
{
- drawSelectionGroupPart(g, group, startRes, endRes, startSeq, endSeq,
+ drawPartialGroupOutline(g, group, startRes, endRes, startSeq, endSeq,
offset);
}
else
blockEnd = hideStart - 1;
g.translate(screenY * charWidth, 0);
- drawSelectionGroupPart(g, group,
+ drawPartialGroupOutline(g, group,
blockStart, blockEnd, startSeq, endSeq, offset);
g.translate(-screenY * charWidth, 0);
// remaining visible region to render
blockEnd = blockStart + (endRes - startRes) - screenY;
g.translate(screenY * charWidth, 0);
- drawSelectionGroupPart(g, group,
+ drawPartialGroupOutline(g, group,
blockStart, blockEnd, startSeq, endSeq, offset);
g.translate(-screenY * charWidth, 0);
/*
* Draw the selection group as a separate image and overlay
*/
- private void drawSelectionGroupPart(Graphics2D g, SequenceGroup group,
+ private void drawPartialGroupOutline(Graphics2D g, SequenceGroup group,
int startRes, int endRes, int startSeq, int endSeq,
int verticalOffset)
{