}
/**
- * Draw a wrapped alignment panel for printing
+ * Draws a wrapped alignment panel for printing. After drawing, the graphics
+ * origin is shifted down by the height of the image drawn.
*
* @param g
- * Graphics object to draw with
+ * Graphics object to draw with
* @param canvasWidth
- * width of drawing area
+ * width of drawing area
* @param canvasHeight
- * height of drawing area
+ * height of drawing area
* @param startRes
- * start residue of print area
+ * start residue of print area
*/
public void drawWrappedPanelForPrinting(Graphics g, int canvasWidth,
int canvasHeight, int startRes)
{
- drawWrappedPanel(g, canvasWidth, canvasHeight, startRes);
+ int heightDrawn = drawWrappedPanel(g, canvasWidth, canvasHeight,
+ startRes);
SequenceGroup group = av.getSelectionGroup();
if (group != null)
drawWrappedSelection((Graphics2D) g, group, canvasWidth, canvasHeight,
startRes);
}
+
+ /*
+ * shift graphics (0, 0) to below the region drawn
+ */
+ g.translate(0, heightDrawn);
}
/**
}
/**
- * Draws as many widths of a wrapped alignment as can fit in the visible
- * window
+ * Draws as many widths of a wrapped alignment as can fit in the visible window,
+ * and returns the height drawn in pixels
*
* @param g
* @param canvasWidth
- * available width in pixels
+ * available width in pixels
* @param canvasHeight
- * available height in pixels
+ * available height in pixels
* @param startColumn
- * the first column (0...) of the alignment to draw
+ * the first column (0...) of the alignment to draw
+ *
+ * @return
*/
- public void drawWrappedPanel(Graphics g, int canvasWidth,
+ public int drawWrappedPanel(Graphics g, int canvasWidth,
int canvasHeight, final int startColumn)
{
int wrappedWidthInResidues = calculateWrappedGeometry(canvasWidth,
canvasHeight);
-
av.setWrappedWidth(wrappedWidthInResidues);
ViewportRanges ranges = av.getRanges();
}
drawWrappedDecorators(g, startColumn);
+
+ return ypos;
}
/**
// the Printable page which we need to account for here
Shape clip = g.getClip();
- if (clip == null)
- {
- g.setClip(0, 0, viewportWidth * charWidth, canvasHeight);
- }
- else
+ if (clip != null)
{
g.setClip(0, (int) clip.getBounds().getY(),
viewportWidth * charWidth, (int) clip.getBounds().getHeight());
startColumn, endx + 1);
g.translate(0, -yShift);
}
- g.setClip(clip);
+
+ if (clip != null)
+ {
+ g.setClip(clip);
+ }
+
g.translate(-xOffset, 0);
}