You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-users@xmlgraphics.apache.org by Laurent Caron <la...@gmail.com> on 2005/12/02 19:00:18 UTC
Initial Rendering
Hi,
I've got an image and I want to display it magnified (Zoom 2x) :
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.geom.AffineTransform;
import java.io.File;
import org.apache.batik.swing.JSVGCanvas;
import org.apache.batik.swing.gvt.GVTTreeRendererAdapter;
import org.apache.batik.swing.gvt.GVTTreeRendererEvent;
import org.apache.batik.swing.svg.GVTTreeBuilderEvent;
import org.apache.batik.swing.svg.GVTTreeBuilderListener;
public class SVGApplication {
public static void main(String[] args) {
Frame f = new Frame("Batik");
JSVGCanvas svgCanvas = new JSVGCanvas();
JSVGCanvas canvas = new JSVGCanvas();
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
f.add(canvas);
f.setSize(800, 600);
f.setVisible(true);
canvas.setURI(new File("test.svg").toURI().toString());
AffineTransform at = AffineTransform.getScaleInstance(2, 2);
canvas.setRenderingTransform(at,true);
}
}
But unfortunately, when the image is diplayed, the size is orginal. Is it
possible to apply a renderingTransform before the image is displayed ?
Thanks,
Laurent
Re: Initial Rendering
Posted by Laurent Caron <la...@gmail.com>.
Hi,
First of all, I'm using AWT instead of Swing because my application is based
on SWT, so my JSVGCanvas
is embedded inside a AWT Frame (embedded in a SWT Composite).
Thanks to Thomas, I found a solution adding a GVTTreeBuildListener :
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.geom.AffineTransform;
import java.io.File;
import org.apache.batik.swing.JSVGCanvas;
import org.apache.batik.swing.svg.GVTTreeBuilderAdapter;
import org.apache.batik.swing.svg.GVTTreeBuilderEvent;
public class Test {
public static void main(String[] args) {
Frame f = new Frame("Batik");
final JSVGCanvas canvas = new JSVGCanvas();
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
f.add(canvas);
f.setSize(800, 600);
canvas.addGVTTreeBuilderListener(new GVTTreeBuilderAdapter() {
public void gvtBuildCompleted(GVTTreeBuilderEvent arg0) {
AffineTransform at = AffineTransform.getScaleInstance(2, 2);
canvas.setRenderingTransform(at, true);
}
});
f.setVisible(true);
canvas.setURI(new File("test.svg").toURI().toString());
}
}
It is working perfectly !
Thanks
Laurent
On 12/3/05, thomas.deweese@kodak.com <th...@kodak.com> wrote:
>
> Hi Laurent,
>
> The problem is that you are setting the scale _way_ before the Canvas
> calculates the
> scale factor it will use for the rendering. The easiest way to adjust the
> initial rendering
> transform is to create a small subclass of Canvas where you override
> 'calculateViewingTransform'. You could also register a
> GVTTreeBuildListener
> with the Canvas and set the rendering transform in the 'gvtBuildCompleted'
> I'm fairly certain this will be called after the canvas calculates it's
> viewing transform.
>
> Also for dynamic documents you can register an 'onload' DOM event
> handler
> and you can set the scale in that callback as well.
>
> Anthony Cavalliotis <an...@googlemail.com> wrote on
> 12/02/2005 08:19:38 PM:
>
> > Is there a reason you are using awt over swing?
> >
> > Anyhow, reason it doesn't work is that you've not added a panel. Try:
> >
> > Panel panel = new Panel();
> > f.add(panel); // f & canvas are your components below
> > panel.add(canvas);
> >
> > in swing you'd go a JPanel and f.getContentPane().add() instead.
> >
> > Cheers,
> >
> > Anthony
> >
> >
> > On 02/12/05, Laurent Caron <la...@gmail.com> wrote:
> > > Hi,
> > >
> > > I've got an image and I want to display it magnified (Zoom 2x) :
> > >
> > > import java.awt.Frame;
> > > import java.awt.event.WindowAdapter;
> > > import java.awt.event.WindowEvent;
> > > import java.awt.geom.AffineTransform ;
> > > import java.io.File;
> > >
> > > import org.apache.batik.swing.JSVGCanvas;
> > > import org.apache.batik.swing.gvt.GVTTreeRendererAdapter;
> > > import org.apache.batik.swing.gvt.GVTTreeRendererEvent;
> > > import org.apache.batik.swing.svg.GVTTreeBuilderEvent ;
> > > import org.apache.batik.swing.svg.GVTTreeBuilderListener;
> > >
> > > public class SVGApplication {
> > >
> > > public static void main(String[] args) {
> > > Frame f = new Frame("Batik");
> > >
> > > JSVGCanvas svgCanvas = new JSVGCanvas();
> > >
> > > JSVGCanvas canvas = new JSVGCanvas();
> > > f.addWindowListener(new WindowAdapter() {
> > > public void windowClosing(WindowEvent e) {
> > > System.exit(0);
> > > }
> > > });
> > >
> > > f.add(canvas);
> > > f.setSize(800, 600);
> > > f.setVisible(true);
> > > canvas.setURI(new File("test.svg").toURI().toString());
> > > AffineTransform at =
> > > AffineTransform.getScaleInstance(2, 2);
> > > canvas.setRenderingTransform(at,true);
> > >
> > >
> > > }
> > > }
> > >
> > > But unfortunately, when the image is diplayed, the size is orginal. Is
> it
> > > possible to apply a renderingTransform before the image is displayed ?
> > >
> > > Thanks,
> > >
> > > Laurent
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: batik-users-unsubscribe@xmlgraphics.apache.org
> > For additional commands, e-mail: batik-users-help@xmlgraphics.apache.org
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: batik-users-unsubscribe@xmlgraphics.apache.org
> For additional commands, e-mail: batik-users-help@xmlgraphics.apache.org
>
>
Re: Initial Rendering
Posted by th...@kodak.com.
Hi Laurent,
The problem is that you are setting the scale _way_ before the Canvas
calculates the
scale factor it will use for the rendering. The easiest way to adjust the
initial rendering
transform is to create a small subclass of Canvas where you override
'calculateViewingTransform'. You could also register a
GVTTreeBuildListener
with the Canvas and set the rendering transform in the 'gvtBuildCompleted'
I'm fairly certain this will be called after the canvas calculates it's
viewing transform.
Also for dynamic documents you can register an 'onload' DOM event
handler
and you can set the scale in that callback as well.
Anthony Cavalliotis <an...@googlemail.com> wrote on
12/02/2005 08:19:38 PM:
> Is there a reason you are using awt over swing?
>
> Anyhow, reason it doesn't work is that you've not added a panel. Try:
>
> Panel panel = new Panel();
> f.add(panel); // f & canvas are your components below
> panel.add(canvas);
>
> in swing you'd go a JPanel and f.getContentPane().add() instead.
>
> Cheers,
>
> Anthony
>
>
> On 02/12/05, Laurent Caron <la...@gmail.com> wrote:
> > Hi,
> >
> > I've got an image and I want to display it magnified (Zoom 2x) :
> >
> > import java.awt.Frame;
> > import java.awt.event.WindowAdapter;
> > import java.awt.event.WindowEvent;
> > import java.awt.geom.AffineTransform ;
> > import java.io.File;
> >
> > import org.apache.batik.swing.JSVGCanvas;
> > import org.apache.batik.swing.gvt.GVTTreeRendererAdapter;
> > import org.apache.batik.swing.gvt.GVTTreeRendererEvent;
> > import org.apache.batik.swing.svg.GVTTreeBuilderEvent ;
> > import org.apache.batik.swing.svg.GVTTreeBuilderListener;
> >
> > public class SVGApplication {
> >
> > public static void main(String[] args) {
> > Frame f = new Frame("Batik");
> >
> > JSVGCanvas svgCanvas = new JSVGCanvas();
> >
> > JSVGCanvas canvas = new JSVGCanvas();
> > f.addWindowListener(new WindowAdapter() {
> > public void windowClosing(WindowEvent e) {
> > System.exit(0);
> > }
> > });
> >
> > f.add(canvas);
> > f.setSize(800, 600);
> > f.setVisible(true);
> > canvas.setURI(new File("test.svg").toURI().toString());
> > AffineTransform at =
> > AffineTransform.getScaleInstance(2, 2);
> > canvas.setRenderingTransform(at,true);
> >
> >
> > }
> > }
> >
> > But unfortunately, when the image is diplayed, the size is orginal. Is
it
> > possible to apply a renderingTransform before the image is displayed ?
> >
> > Thanks,
> >
> > Laurent
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: batik-users-unsubscribe@xmlgraphics.apache.org
> For additional commands, e-mail: batik-users-help@xmlgraphics.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: batik-users-help@xmlgraphics.apache.org
Re: Initial Rendering
Posted by Anthony Cavalliotis <an...@googlemail.com>.
Is there a reason you are using awt over swing?
Anyhow, reason it doesn't work is that you've not added a panel. Try:
Panel panel = new Panel();
f.add(panel); // f & canvas are your components below
panel.add(canvas);
in swing you'd go a JPanel and f.getContentPane().add() instead.
Cheers,
Anthony
On 02/12/05, Laurent Caron <la...@gmail.com> wrote:
> Hi,
>
> I've got an image and I want to display it magnified (Zoom 2x) :
>
> import java.awt.Frame;
> import java.awt.event.WindowAdapter;
> import java.awt.event.WindowEvent;
> import java.awt.geom.AffineTransform ;
> import java.io.File;
>
> import org.apache.batik.swing.JSVGCanvas;
> import org.apache.batik.swing.gvt.GVTTreeRendererAdapter;
> import org.apache.batik.swing.gvt.GVTTreeRendererEvent;
> import org.apache.batik.swing.svg.GVTTreeBuilderEvent ;
> import org.apache.batik.swing.svg.GVTTreeBuilderListener;
>
> public class SVGApplication {
>
> public static void main(String[] args) {
> Frame f = new Frame("Batik");
>
> JSVGCanvas svgCanvas = new JSVGCanvas();
>
> JSVGCanvas canvas = new JSVGCanvas();
> f.addWindowListener(new WindowAdapter() {
> public void windowClosing(WindowEvent e) {
> System.exit(0);
> }
> });
>
> f.add(canvas);
> f.setSize(800, 600);
> f.setVisible(true);
> canvas.setURI(new File("test.svg").toURI().toString());
> AffineTransform at =
> AffineTransform.getScaleInstance(2, 2);
> canvas.setRenderingTransform(at,true);
>
>
> }
> }
>
> But unfortunately, when the image is diplayed, the size is orginal. Is it
> possible to apply a renderingTransform before the image is displayed ?
>
> Thanks,
>
> Laurent
>
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: batik-users-help@xmlgraphics.apache.org