I'm not sure what you are after, but If you want to scale the svg to the
size of your svg canvas, you can extend jsvgcanvas and overload the
following function:
/**
* Computes the initial value of the transform used for rendering
* this scales the image (preserving aspect ratio)
* so that it fits the size of the canvas.
*
*/
protected void computeRenderingTransform() {
Dimension2D _imageSize;
Rectangle _paneSize;
double x, y;
try{
_imageSize = getSVGDocumentSize();
_paneSize = this.getBounds();
x = _paneSize.getWidth() /
_imageSize.getWidth();
y = _paneSize.getHeight() /
_imageSize.getHeight();
//If the image is too big in either
direction,
//shrink so larger dimension will fit. (i.e
apply the smaller ratio)
if(x < 1.0 || y < 1.0){
x = Math.min(x,y);
y = Math.min(x,y);
}else{//if smaller (or same in both) apply
the larger ratio
x = Math.max(x,y);
y = Math.max(x,y);
}
}catch(NullPointerException npe){
x = y = 1;
}
initialTransform = new AffineTransform();
initialTransform.setToScale(x,y);
setRenderingTransform(initialTransform);
}
Be careful though, as jsvgcomponent will set the preferred size of
jsvgcanvas. This will cause a problem if you have you canvas inside a
jscrollpane
To fix this I added the following function and set the min max size:
/**
* We have to overwrite this function so that the loading of a new
* document does not change the preferred size beyond the min/max
* JSVGComponent.buildComplete(..) calls this.
*
* @param d
*
*/
public void setPreferredSize(Dimension d){
Dimension dmin, dmax;
dmin = getMinimumSize();
d.width = (int)Math.max(d.getWidth(),dmin.getWidth());
d.height = (int)Math.max(d.getHeight(),dmin.getHeight());
dmax = getMaximumSize();
d.width = (int)Math.min(d.getWidth(),dmax.getWidth());
d.height = (int)Math.min(d.getHeight(),dmax.getHeight());
super.setPreferredSize(d);
};
Hope this helps,
Jon
Jonathan Burgin
OnBoard Software Inc.
12621 Silicon Dr., Ste. 113
San Antonio, TX 78249
www.onboard-software.com
Phone: 210.932.1683
Direct Line: 210.477.5390
Fax: 210.932.1280
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]