git://source.jalview.org
/
jalview.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
be7a79e
)
JAL-1161 conditional parameters for controlling clipping
author
Jim Procter
<jprocter@compbio.dundee.ac.uk>
Tue, 21 May 2013 09:52:14 +0000
(10:52 +0100)
committer
Jim Procter
<jprocter@compbio.dundee.ac.uk>
Fri, 24 May 2013 14:10:54 +0000
(15:10 +0100)
src/jalview/appletgui/AnnotationPanel.java
patch
|
blob
|
history
src/jalview/gui/AnnotationLabels.java
patch
|
blob
|
history
src/jalview/gui/AnnotationPanel.java
patch
|
blob
|
history
src/jalview/renderer/AnnotationRenderer.java
patch
|
blob
|
history
diff --git
a/src/jalview/appletgui/AnnotationPanel.java
b/src/jalview/appletgui/AnnotationPanel.java
index
f4b2212
..
f63cb76
100755
(executable)
--- a/
src/jalview/appletgui/AnnotationPanel.java
+++ b/
src/jalview/appletgui/AnnotationPanel.java
@@
-657,10
+657,12
@@
public class AnnotationPanel extends Panel implements AwtRenderPanelI,
@Override
public int[] getVisibleVRange()
{
@Override
public int[] getVisibleVRange()
{
+ if (ap!=null && ap.alabels!=null)
+ {
int sOffset=-ap.alabels.scrollOffset;
int visHeight = sOffset+ap.annotationPanelHolder.getHeight();
bounds[0] = sOffset; bounds[1]=visHeight;
return bounds;
int sOffset=-ap.alabels.scrollOffset;
int visHeight = sOffset+ap.annotationPanelHolder.getHeight();
bounds[0] = sOffset; bounds[1]=visHeight;
return bounds;
+ } else return null;
}
}
-
}
}
diff --git
a/src/jalview/gui/AnnotationLabels.java
b/src/jalview/gui/AnnotationLabels.java
index
dd6f190
..
6df2088
100755
(executable)
--- a/
src/jalview/gui/AnnotationLabels.java
+++ b/
src/jalview/gui/AnnotationLabels.java
@@
-816,18
+816,30
@@
public class AnnotationLabels extends JPanel implements MouseListener,
RenderingHints.VALUE_ANTIALIAS_ON);
}
RenderingHints.VALUE_ANTIALIAS_ON);
}
- drawComponent(g2, width);
+ drawComponent(g2, true, width);
}
/**
}
/**
- * DOCUMENT ME!
+ * Draw the full set of annotation Labels for the alignment at the given cursor
*
*
- * @param g
- * DOCUMENT ME!
+ * @param g Graphics2D instance (needed for font scaling)
+ * @param width Width for scaling labels
+ *
*/
public void drawComponent(Graphics g, int width)
{
*/
public void drawComponent(Graphics g, int width)
{
+ drawComponent(g, false, width);
+ }
+ /**
+ * Draw the full set of annotation Labels for the alignment at the given cursor
+ *
+ * @param g Graphics2D instance (needed for font scaling)
+ * @param clip - true indicates that only current visible area needs to be rendered
+ * @param width Width for scaling labels
+ */
+ public void drawComponent(Graphics g, boolean clip, int width)
+ {
if (av.getFont().getSize() < 10)
{
g.setFont(font);
if (av.getFont().getSize() < 10)
{
g.setFont(font);
@@
-843,7
+855,7
@@
public class AnnotationLabels extends JPanel implements MouseListener,
g.translate(0, scrollOffset);
g.setColor(Color.black);
g.translate(0, scrollOffset);
g.setColor(Color.black);
-
+
AlignmentAnnotation[] aa = av.getAlignment().getAlignmentAnnotation();
int fontHeight = g.getFont().getSize();
int y = 0;
AlignmentAnnotation[] aa = av.getAlignment().getAlignmentAnnotation();
int fontHeight = g.getFont().getSize();
int y = 0;
@@
-853,10
+865,18
@@
public class AnnotationLabels extends JPanel implements MouseListener,
Font baseFont = g.getFont();
FontMetrics baseMetrics = fm;
int ofontH = fontHeight;
Font baseFont = g.getFont();
FontMetrics baseMetrics = fm;
int ofontH = fontHeight;
- boolean visible = true;
+ int sOffset=0;
+ int visHeight = 0;
+ int[] visr = (ap!=null && ap.annotationPanel!=null) ? ap.annotationPanel.getVisibleVRange() : null;
+ if (clip && visr!=null){
+ sOffset = visr[0];
+ visHeight = visr[1];
+ }
+ boolean visible = true,before=false,after=false;
if (aa != null)
{
hasHiddenRows = false;
if (aa != null)
{
hasHiddenRows = false;
+ int olY=0;
for (int i = 0; i < aa.length; i++)
{
visible = true;
for (int i = 0; i < aa.length; i++)
{
visible = true;
@@
-867,9
+887,29
@@
public class AnnotationLabels extends JPanel implements MouseListener,
hasHiddenRows = true;
continue;
}
hasHiddenRows = true;
continue;
}
-
+ olY=y;
y += aa[i].height;
y += aa[i].height;
+ if (clip) {if (y<sOffset)
+ {
+ if (!before)
+ {
+ System.out.println("before vis: "+i);
+ before=true;
+ }
+ // don't draw what isn't visible
+ continue;
+ }
+ if (olY>visHeight)
+ {
+ if (!after)
+ {
+ System.out.println("Scroll offset: "+sOffset+" after vis: "+i);
+ after=true;
+ }
+ // don't draw what isn't visible
+ continue;
+ }}
offset = -aa[i].height / 2;
if (aa[i].hasText)
offset = -aa[i].height / 2;
if (aa[i].hasText)
diff --git
a/src/jalview/gui/AnnotationPanel.java
b/src/jalview/gui/AnnotationPanel.java
index
90f4595
..
ed7f359
100755
(executable)
--- a/
src/jalview/gui/AnnotationPanel.java
+++ b/
src/jalview/gui/AnnotationPanel.java
@@
-954,9
+954,12
@@
public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
@Override
public int[] getVisibleVRange()
{
@Override
public int[] getVisibleVRange()
{
+ if (ap!=null && ap.alabels!=null)
+ {
int sOffset=-ap.alabels.scrollOffset;
int visHeight = sOffset+ap.annotationSpaceFillerHolder.getHeight();
bounds[0] = sOffset; bounds[1]=visHeight;
return bounds;
int sOffset=-ap.alabels.scrollOffset;
int visHeight = sOffset+ap.annotationSpaceFillerHolder.getHeight();
bounds[0] = sOffset; bounds[1]=visHeight;
return bounds;
+ } else return null;
}
}
}
}
diff --git
a/src/jalview/renderer/AnnotationRenderer.java
b/src/jalview/renderer/AnnotationRenderer.java
index
7598f5f
..
fcdd77d
100644
(file)
--- a/
src/jalview/renderer/AnnotationRenderer.java
+++ b/
src/jalview/renderer/AnnotationRenderer.java
@@
-142,7
+142,22
@@
public class AnnotationRenderer
* width of image to render in panel
*/
private int imgWidth;
* width of image to render in panel
*/
private int imgWidth;
-
+ /**
+ * offset to beginning of visible area
+ */
+ private int sOffset;
+ /**
+ * offset to end of visible area
+ */
+ private int visHeight;
+ /**
+ * indicate if the renderer should only render the visible portion of the annotation given the current view settings
+ */
+ private boolean useClip=false;
+ /**
+ * master flag indicating if renderer should ever try to clip. not enabled for jalview 2.8.1
+ */
+ private boolean canClip=false;
// public void updateFromAnnotationPanel(FontMetrics annotFM, AlignViewportI
// av)
public void updateFromAwtRenderPanel(AwtRenderPanelI annotPanel,
// public void updateFromAnnotationPanel(FontMetrics annotFM, AlignViewportI
// av)
public void updateFromAwtRenderPanel(AwtRenderPanelI annotPanel,
@@
-152,6
+167,22
@@
public class AnnotationRenderer
annotationPanel = annotPanel;
fadedImage = annotPanel.getFadedImage();
imgWidth = annotPanel.getFadedImageWidth();
annotationPanel = annotPanel;
fadedImage = annotPanel.getFadedImage();
imgWidth = annotPanel.getFadedImageWidth();
+ // visible area for rendering
+ int[] bounds=annotPanel.getVisibleVRange();
+ if (bounds!=null)
+ {
+ sOffset = bounds[0];
+ visHeight = bounds[1];
+ if (visHeight==0)
+ {
+ useClip=false;
+ } else {
+ useClip=canClip;
+ }
+ } else {
+ useClip=false;
+ }
+
updateFromAlignViewport(av);
}
updateFromAlignViewport(av);
}
@@
-280,6
+311,9
@@
public class AnnotationRenderer
// column.
Font ofont = g.getFont();
// \u03B2 \u03B1
// column.
Font ofont = g.getFont();
// \u03B2 \u03B1
+ // debug ints
+ int yfrom=0,f_i=0,yto=0,f_to=0;
+ boolean clipst=false,clipend=false;
for (int i = 0; i < aa.length; i++)
{
AlignmentAnnotation row = aa[i];
for (int i = 0; i < aa.length; i++)
{
AlignmentAnnotation row = aa[i];
@@
-293,6
+327,17
@@
public class AnnotationRenderer
scaleColLabel = row.scaleColLabel;
lastSS = ' ';
lastSSX = 0;
scaleColLabel = row.scaleColLabel;
lastSS = ' ';
lastSSX = 0;
+
+ if (!useClip || ((y-charHeight)<visHeight && (y+row.height+charHeight*2)>=sOffset))
+ {// if_in_visible_region
+ if (!clipst)
+ {
+ clipst=true;
+ yfrom=y;
+ f_i=i;
+ }
+ yto = y;
+ f_to=i;
if (row.graph > 0)
{
if (row.graphGroup > -1 && graphGroupDrawn.get(row.graphGroup)) {
if (row.graph > 0)
{
if (row.graphGroup > -1 && graphGroupDrawn.get(row.graphGroup)) {
@@
-617,7
+662,12
@@
public class AnnotationRenderer
row.graphMin, row.graphMax, y);
}
}
row.graphMin, row.graphMax, y);
}
}
-
+ } else {
+ if (clipst && !clipend)
+ {
+ clipend = true;
+ }
+ }// end if_in_visible_region
if (row.graph > 0 && row.hasText)
{
y += charHeight;
if (row.graph > 0 && row.hasText)
{
y += charHeight;
@@
-628,6
+678,20
@@
public class AnnotationRenderer
y += aa[i].height;
}
}
y += aa[i].height;
}
}
+ if (canClip)
+ {
+ if (clipst)
+ {
+ System.err.println("Start clip at : " + yfrom + " (index " + f_i
+ + ")");
+ }
+ if (clipend)
+ {
+ System.err
+ .println("End clip at : " + yto + " (index " + f_to + ")");
+ }
+ }
+ ;
return !usedFaded;
}
return !usedFaded;
}