deweese 2003/03/26 07:36:19
Modified: sources/org/apache/batik/apps/svgbrowser
ThumbnailDialog.java
Log:
The Thumbnail dialog now takes document viewbox transform into account
when setting it's rendering transform up.
Revision Changes Path
1.9 +41 -2
xml-batik/sources/org/apache/batik/apps/svgbrowser/ThumbnailDialog.java
Index: ThumbnailDialog.java
===================================================================
RCS file:
/home/cvs/xml-batik/sources/org/apache/batik/apps/svgbrowser/ThumbnailDialog.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- ThumbnailDialog.java 29 Aug 2001 17:01:47 -0000 1.8
+++ ThumbnailDialog.java 26 Mar 2003 15:36:19 -0000 1.9
@@ -48,6 +48,10 @@
import org.apache.batik.util.gui.resource.ResourceManager;
+import org.apache.batik.gvt.CanvasGraphicsNode;
+import org.apache.batik.gvt.CompositeGraphicsNode;
+import org.apache.batik.gvt.GraphicsNode;
+
import org.w3c.dom.svg.SVGDocument;
import org.w3c.dom.svg.SVGSVGElement;
@@ -106,7 +110,8 @@
// register listeners to maintain consistency
this.svgCanvas = svgCanvas;
svgCanvas.addGVTTreeRendererListener(new ThumbnailGVTListener());
- svgCanvas.addSVGDocumentLoaderListener(new ThumbnailDocumentListener());
+ svgCanvas.addSVGDocumentLoaderListener(new ThumbnailDocumentListener());
svgCanvas.addComponentListener(new ThumbnailCanvasComponentListener());
+
// create the thumbnail
svgThumbnailCanvas = new JGVTComponent();
@@ -128,6 +133,16 @@
updateThumbnailRenderingTransform();
}
+ protected CanvasGraphicsNode getCanvasGraphicsNode(GraphicsNode gn) {
+ if (!(gn instanceof CompositeGraphicsNode))
+ return null;
+ CompositeGraphicsNode cgn = (CompositeGraphicsNode)gn;
+ gn = (GraphicsNode)cgn.getChildren().get(0);
+ if (!(gn instanceof CanvasGraphicsNode))
+ return null;
+ return (CanvasGraphicsNode)gn;
+ }
+
/**
* Updates the thumbnail component rendering transform.
*/
@@ -147,6 +162,19 @@
double s = Math.min(sx, sy);
Tx = AffineTransform.getScaleInstance(s, s);
}
+
+ GraphicsNode gn = svgCanvas.getGraphicsNode();
+ CanvasGraphicsNode cgn = getCanvasGraphicsNode(gn);
+ AffineTransform vTx = cgn.getViewingTransform();
+ if ((vTx != null) && !vTx.isIdentity()) {
+ try {
+ AffineTransform invVTx = vTx.createInverse();
+ Tx.concatenate(invVTx);
+ } catch (NoninvertibleTransformException nite) {
+ /* nothing */
+ }
+ }
+
svgThumbnailCanvas.setRenderingTransform(Tx);
overlay.synchronizeAreaOfInterest();
}
@@ -258,6 +286,17 @@
* resized properly.
*/
protected class ThumbnailComponentListener extends ComponentAdapter {
+
+ public void componentResized(ComponentEvent e) {
+ updateThumbnailRenderingTransform();
+ }
+ }
+
+ /**
+ * Used to allow the SVG document being displayed by the thumbnail to be
+ * resized properly when parent resizes.
+ */
+ protected class ThumbnailCanvasComponentListener extends ComponentAdapter {
public void componentResized(ComponentEvent e) {
updateThumbnailRenderingTransform();
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]