/*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9.0b2)
+ * Copyright (C) 2015 The Jalview Authors
*
* This file is part of Jalview.
*
import jalview.datamodel.SearchResults;
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
+import jalview.renderer.ScaleRenderer;
+import jalview.renderer.ScaleRenderer.ScaleMark;
import java.awt.BasicStroke;
import java.awt.BorderLayout;
charHeight = av.getCharHeight();
charWidth = av.getCharWidth();
}
+
/**
* DOCUMENT ME!
*
private void drawNorthScale(Graphics g, int startx, int endx, int ypos)
{
updateViewport();
- int scalestartx = startx - (startx % 10) + 10;
-
- g.setColor(Color.black);
- // NORTH SCALE
- for (int i = scalestartx; i < endx; i += 10)
+ for (ScaleMark mark : new ScaleRenderer().calculateMarks(av, startx,
+ endx))
{
- int value = i;
- if (av.hasHiddenColumns())
+ int mpos = mark.column; // (i - startx - 1)
+ if (mpos < 0)
{
- value = av.getColumnSelection().adjustForHiddenColumns(value);
+ continue;
}
+ String mstring = mark.text;
- g.drawString(String.valueOf(value), (i - startx - 1) * charWidth,
- ypos - (charHeight / 2));
-
- g.drawLine(((i - startx - 1) * charWidth) + (charWidth / 2),
- (ypos + 2) - (charHeight / 2), ((i - startx - 1) * charWidth)
- + (charWidth / 2),
- ypos - 2);
+ if (mark.major)
+ {
+ if (mstring != null)
+ {
+ g.drawString(mstring, mpos * charWidth, ypos - (charHeight / 2));
+ }
+ g.drawLine((mpos * charWidth) + (charWidth / 2), (ypos + 2)
+ - (charHeight / 2), (mpos * charWidth) + (charWidth / 2),
+ ypos - 2);
+ }
}
}
*/
// Set this to false to force a full panel paint
+ @Override
public void paintComponent(Graphics g)
{
updateViewport();
continue;
}
- gg.fillPolygon(new int[]
- { res * charWidth - charHeight / 4,
- res * charWidth + charHeight / 4, res * charWidth },
- new int[]
- { ypos - (charHeight / 2), ypos - (charHeight / 2),
- ypos - (charHeight / 2) + 8 }, 3);
+ gg.fillPolygon(
+ new int[] { res * charWidth - charHeight / 4,
+ res * charWidth + charHeight / 4, res * charWidth },
+ new int[] { ypos - (charHeight / 2),
+ ypos - (charHeight / 2), ypos - (charHeight / 2) + 8 },
+ 3);
}
}
annotations = new AnnotationPanel(av);
}
- annotations.renderer.drawComponent(annotations, av, g,
- -1, startRes, endx + 1);
+ annotations.renderer.drawComponent(annotations, av, g, -1,
+ startRes, endx + 1);
g.translate(0, -cHeight - ypos - 3);
}
g.setClip(clip);
* DOCUMENT ME!
*/
public void drawPanel(Graphics g1, int startRes, int endRes,
- int startSeq,
- int endSeq, int offset)
+ int startSeq, int endSeq, int offset)
{
updateViewport();
if (!av.hasHiddenColumns())
g1.translate(-screenY * charWidth, 0);
screenY += blockEnd - blockStart + 1;
blockStart = hideEnd + 1;
+
+ if (screenY > (endRes - startRes))
+ {
+ // already rendered last block
+ return;
+ }
}
if (screenY <= (endRes - startRes))
{
+ // remaining visible region to render
blockEnd = blockStart + (endRes - startRes) - screenY;
g1.translate(screenY * charWidth, 0);
draw(g1, blockStart, blockEnd, startSeq, endSeq, offset);
// int startRes, int endRes, int startSeq, int endSeq, int x, int y,
// int x1, int x2, int y1, int y2, int startx, int starty,
private void draw(Graphics g, int startRes, int endRes, int startSeq,
- int endSeq,
- int offset)
+ int endSeq, int offset)
{
g.setFont(av.getFont());
sr.prepare(g, av.isRenderGaps());
if (group == av.getSelectionGroup())
{
g.setStroke(new BasicStroke(1, BasicStroke.CAP_BUTT,
- BasicStroke.JOIN_ROUND, 3f, new float[]
- { 5f, 3f }, 0f));
+ BasicStroke.JOIN_ROUND, 3f, new float[] { 5f, 3f },
+ 0f));
g.setColor(Color.RED);
}
else
break;
}
- group = av.getAlignment().getGroups()
- .get(groupIndex);
+ group = av.getAlignment().getGroups().get(groupIndex);
} while (groupIndex < av.getAlignment().getGroups().size());