You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-dev@xmlgraphics.apache.org by tk...@apache.org on 2001/05/16 17:04:23 UTC
cvs commit: xml-batik/sources/org/apache/batik/apps/svgbrowser ThumbnailDialog.java
tkormann 01/05/16 08:04:22
Modified: sources/org/apache/batik/apps/svgbrowser
ThumbnailDialog.java
Log:
Area of interest is now displayed
Revision Changes Path
1.4 +53 -1 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.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ThumbnailDialog.java 2001/05/16 14:03:26 1.3
+++ ThumbnailDialog.java 2001/05/16 15:04:17 1.4
@@ -8,11 +8,18 @@
package org.apache.batik.apps.svgbrowser;
+import java.awt.BasicStroke;
import java.awt.BorderLayout;
+import java.awt.Color;
import java.awt.Dimension;
import java.awt.Frame;
+import java.awt.Graphics2D;
+import java.awt.Graphics;
+import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Dimension2D;
+import java.awt.geom.NoninvertibleTransformException;
+import java.awt.geom.Rectangle2D;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
@@ -31,6 +38,7 @@
import org.apache.batik.swing.gvt.GVTTreeRendererAdapter;
import org.apache.batik.swing.gvt.GVTTreeRendererEvent;
import org.apache.batik.swing.gvt.JGVTComponent;
+import org.apache.batik.swing.gvt.Overlay;
import org.apache.batik.swing.svg.SVGDocumentLoaderAdapter;
import org.apache.batik.swing.svg.SVGDocumentLoaderEvent;
@@ -45,7 +53,7 @@
* document.
*
* @author <a href="mailto:tkormann@apache.org">Thierry Kormann</a>
- * @version $Id: ThumbnailDialog.java,v 1.3 2001/05/16 14:03:26 tkormann Exp $
+ * @version $Id: ThumbnailDialog.java,v 1.4 2001/05/16 15:04:17 tkormann Exp $
*/
public class ThumbnailDialog extends JDialog {
@@ -79,6 +87,9 @@
/** A flag bit that indicates a document has been loaded. */
protected boolean documentChanged;
+ /** The overlay used to display the area of interest. */
+ protected AreaOfInterestOverlay overlay;
+
/**
* Constructs a new <tt>ThumbnailDialog</tt> for the specified canvas.
*
@@ -96,6 +107,8 @@
// create the thumbnail
svgThumbnailCanvas = new JGVTComponent();
+ overlay = new AreaOfInterestOverlay();
+ svgThumbnailCanvas.getOverlays().add(overlay);
svgThumbnailCanvas.setPreferredSize(new Dimension(150, 150));
svgThumbnailCanvas.addComponentListener(new ThumbnailComponentListener());
getContentPane().add(svgThumbnailCanvas, BorderLayout.CENTER);
@@ -107,6 +120,10 @@
protected void updateThumbnailGraphicsNode() {
svgThumbnailCanvas.setGraphicsNode(svgCanvas.getGraphicsNode());
updateThumbnailRenderingTransform();
+ if (svgCanvas.getSVGDocument() != null) {
+ overlay.updateAreaOfInterest();
+ svgThumbnailCanvas.repaint();
+ }
}
/**
@@ -153,6 +170,8 @@
updateThumbnailGraphicsNode();
documentChanged = false;
}
+ overlay.updateAreaOfInterest();
+ svgThumbnailCanvas.repaint();
}
public void gvtRenderingCancelled(GVTTreeRendererEvent e) {
@@ -185,6 +204,39 @@
public void componentResized(ComponentEvent e) {
updateThumbnailRenderingTransform();
+ }
+ }
+
+ /**
+ * An overlay that represents the current area of interest.
+ */
+ protected class AreaOfInterestOverlay implements Overlay {
+
+ protected Shape s;
+
+ public void updateAreaOfInterest() {
+ Dimension dim = svgCanvas.getSize();
+ s = new Rectangle2D.Float(0, 0, dim.width, dim.height);
+ try {
+ AffineTransform at
+ = svgCanvas.getRenderingTransform().createInverse();
+
+ at.preConcatenate(svgThumbnailCanvas.getRenderingTransform());
+ s = at.createTransformedShape(s);
+ } catch (NoninvertibleTransformException ex) {
+ s = null;
+ }
+ }
+
+ public void paint(Graphics g) {
+ if (s != null) {
+ Graphics2D g2d = (Graphics2D)g;
+ g2d.setColor(new Color(255, 255, 255, 128));
+ g2d.fill(s);
+ g2d.setColor(Color.black);
+ g2d.setStroke(new BasicStroke());
+ g2d.draw(s);
+ }
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-dev-help@xml.apache.org