deweese 02/02/20 05:27:10
Modified: samples/extensions multi.svg
sources/org/apache/batik/extension/svg
BatikDomExtension.java BatikExtConstants.java
BatikMultiImageElementBridge.java
sources/org/apache/batik/extension/svg/renderable
MultiResRable.java
Added: sources/org/apache/batik/extension/svg
BatikMultiImageElement.java
test-references/org/apache/batik/ext/awt/geom .cvsignore
Log:
1) Wrapped up a few loose ends on <multiImage> extension (renamed tag to
be consistent with rest of svg).
Revision Changes Path
1.2 +26 -18 xml-batik/samples/extensions/multi.svg
Index: multi.svg
===================================================================
RCS file: /home/cvs/xml-batik/samples/extensions/multi.svg,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- multi.svg 19 Feb 2002 22:08:43 -0000 1.1
+++ multi.svg 20 Feb 2002 13:27:10 -0000 1.2
@@ -14,7 +14,7 @@
<!-- regularPoly extension tag test -->
<!-- -->
<!-- @author [EMAIL PROTECTED] -->
-<!-- @version $Id: multi.svg,v 1.1 2002/02/19 22:08:43 deweese Exp $ -->
+<!-- @version $Id: multi.svg,v 1.2 2002/02/20 13:27:10 deweese Exp $ -->
<!-- ====================================================================== -->
<!-- <?xml-stylesheet type="text/css" href="extension.css" ?> -->
@@ -23,31 +23,39 @@
viewBox="0 0 450 500"
xmlns:batikExt="http://xml.apache.org/batik/ext">
- <title>Multi-Image Extension Tag</title>
-
+ <title>MultiImage Extension Tag</title>
+ <defs>
+ <g id="sample">
+ <rect fill="#ADA" x="0" y="0" width="280" height="400"/>
+ <batikExt:multiImage id="img" xlink:href="multi1.jpg"
+ x="20" y="20" width="240" height="360"
+ pixel-width="480" pixel-height="720">
+ <batikExt:subImage xlink:href="multi2.jpg"
+ pixel-width="240" pixel-height="360"/>
+ <batikExt:subImage xlink:href="multi3.jpg"
+ pixel-width="120" pixel-height="180"/>
+ <batikExt:subImage xlink:href="multi4.jpg"
+ pixel-width="60" pixel-height="90"/>
+ </batikExt:multiImage>
+ </g>
+ </defs>
+
<!-- ============================================================= -->
<!-- Test content -->
<!-- ============================================================= -->
<g id="testContent" class="legend" style="text-anchor:middle">
- <text x="225" y="40" class="title">Multi-Image Extension Tag</text>
+ <text x="225" y="40" class="title">MultiImage Extension Tag</text>
- <g transform="translate(145, 145)">
- <rect fill="#DAA" x="0" y="0" width="160" height="220"/>
- <batikExt:multi-image id="img" xlink:href="multi1.jpg"
- x="20" y="20" width="120" height="180"
- pixel-width="480" pixel-height="720">
- <batikExt:sub-image xlink:href="multi2.jpg"
- pixel-width="240" pixel-height="360"/>
- <batikExt:sub-image xlink:href="multi3.jpg"
- pixel-width="120" pixel-height="180"/>
- <batikExt:sub-image xlink:href="multi4.jpg"
- pixel-width="60" pixel-height="90"/>
- </batikExt:multi-image>
- </g>
+ <use transform="translate(10, 50)" xlink:href="#sample"/>
+
+ <use transform="translate(300, 50) scale(.5)" xlink:href="#sample"/>
+
+ <use transform="translate(300, 260) scale(.25)" xlink:href="#sample"/>
+
</g>
<!-- ============================================================= -->
<!-- Batik sample mark -->
<!-- ============================================================= -->
- <!-- <use xlink:href="../batikLogo.svg#Batik_Tag_Box" /> -->
+ <use xlink:href="../batikLogo.svg#Batik_Tag_Box" />
</svg>
1.7 +20 -0
xml-batik/sources/org/apache/batik/extension/svg/BatikDomExtension.java
Index: BatikDomExtension.java
===================================================================
RCS file:
/home/cvs/xml-batik/sources/org/apache/batik/extension/svg/BatikDomExtension.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- BatikDomExtension.java 23 Oct 2001 13:42:29 -0000 1.6
+++ BatikDomExtension.java 20 Feb 2002 13:27:10 -0000 1.7
@@ -93,6 +93,11 @@
di.registerCustomElementFactory
(BATIK_EXT_NAMESPACE_URI,
+ BATIK_EXT_MULTI_IMAGE_TAG,
+ new BatikMultiImageElementFactory());
+
+ di.registerCustomElementFactory
+ (BATIK_EXT_NAMESPACE_URI,
BATIK_EXT_SOLID_COLOR_TAG,
new SolidColorElementFactory());
@@ -150,6 +155,21 @@
*/
public Element create(String prefix, Document doc) {
return new BatikHistogramNormalizationElement
+ (prefix, (AbstractDocument)doc);
+ }
+ }
+
+ /**
+ * To create a 'multiImage' element.
+ */
+ protected static class BatikMultiImageElementFactory
+ implements SVGDOMImplementation.ElementFactory {
+ public BatikMultiImageElementFactory() {}
+ /**
+ * Creates an instance of the associated element type.
+ */
+ public Element create(String prefix, Document doc) {
+ return new BatikMultiImageElement
(prefix, (AbstractDocument)doc);
}
}
1.7 +4 -4
xml-batik/sources/org/apache/batik/extension/svg/BatikExtConstants.java
Index: BatikExtConstants.java
===================================================================
RCS file:
/home/cvs/xml-batik/sources/org/apache/batik/extension/svg/BatikExtConstants.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- BatikExtConstants.java 19 Feb 2002 22:08:43 -0000 1.6
+++ BatikExtConstants.java 20 Feb 2002 13:27:10 -0000 1.7
@@ -35,13 +35,13 @@
public static final String BATIK_EXT_HISTOGRAM_NORMALIZATION_TAG =
"histogramNormalization";
- /** Tag name for Batik's multi-image extension. */
+ /** Tag name for Batik's multiImage extension. */
public static final String BATIK_EXT_MULTI_IMAGE_TAG =
- "multi-image";
+ "multiImage";
- /** Tag name for Batik's multi-image extension. */
+ /** Tag name for Batik's subImage multiImage extension. */
public static final String BATIK_EXT_SUB_IMAGE_TAG =
- "sub-image";
+ "subImage";
/** Attribute name for sides attribute */
public static final String BATIK_EXT_SIDES_ATTRIBUTE =
1.2 +30 -16
xml-batik/sources/org/apache/batik/extension/svg/BatikMultiImageElementBridge.java
Index: BatikMultiImageElementBridge.java
===================================================================
RCS file:
/home/cvs/xml-batik/sources/org/apache/batik/extension/svg/BatikMultiImageElementBridge.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- BatikMultiImageElementBridge.java 19 Feb 2002 22:08:43 -0000 1.1
+++ BatikMultiImageElementBridge.java 20 Feb 2002 13:27:10 -0000 1.2
@@ -42,10 +42,26 @@
import org.apache.batik.util.ParsedURL;
/**
- * Bridge class for the <image> element.
+ * Bridge class for the <multiImage> element.
*
- * @author <a href="mailto:[EMAIL PROTECTED]">Thierry Kormann</a>
- * @version $Id: BatikMultiImageElementBridge.java,v 1.1 2002/02/19 22:08:43
deweese Exp $
+ * The 'multiImage' element is similar to the 'image' element (supports
+ * all the same attributes and properties) except.
+ * <ol>
+ * <li>It can only be used to reference raster content (this is an
+ * implementation thing really)</li>
+ * <li>It has two addtional attributes: 'pixel-width' and
+ * 'pixel-height' which are the maximum width and height of the
+ * image referenced by the xlink:href attribute.</li>
+ * <li>It can contain a child element 'subImage' which has only
+ * three attributes, pixel-width, pixel-height and xlink:href.
+ * The image displayed is the smallest image such that
+ * pixel-width and pixel-height are greater than or equal to the
+ * required image size for display.</li>
+ * </ol>
+ *
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Thomas DeWeese</a>
+ * @version $Id: BatikMultiImageElementBridge.java,v 1.2 2002/02/20 13:27:10
deweese Exp $
*/
public class BatikMultiImageElementBridge extends SVGImageElementBridge
implements BatikExtConstants {
@@ -60,7 +76,7 @@
}
/**
- * Returns 'multi-image'.
+ * Returns 'multiImage'.
*/
public String getLocalName() {
return BATIK_EXT_MULTI_IMAGE_TAG;
@@ -174,31 +190,29 @@
int w=0, h=0;
String s;
- s = e.getAttributeNS
- (null,BATIK_EXT_PIXEL_WIDTH_ATTRIBUTE);
- if (s.length() == 0)
- throw new BridgeException(e, ERR_ATTRIBUTE_MISSING,
- new Object[] {"pixel-width"});
+ s = e.getAttributeNS(null,BATIK_EXT_PIXEL_WIDTH_ATTRIBUTE);
+ if (s.length() == 0) throw new BridgeException
+ (e, ERR_ATTRIBUTE_MISSING,
+ new Object[] {BATIK_EXT_PIXEL_WIDTH_ATTRIBUTE});
try {
w = (int)SVGUtilities.convertSVGNumber(s);
} catch (NumberFormatException ex) {
throw new BridgeException
(e, ERR_ATTRIBUTE_VALUE_MALFORMED,
- new Object[] {BATIK_EXT_TRIM_ATTRIBUTE, s});
+ new Object[] {BATIK_EXT_PIXEL_WIDTH_ATTRIBUTE, s});
}
- s = e.getAttributeNS
- (null,BATIK_EXT_PIXEL_HEIGHT_ATTRIBUTE);
- if (s.length() == 0)
- throw new BridgeException(e, ERR_ATTRIBUTE_MISSING,
- new Object[] {"pixel-height"});
+ s = e.getAttributeNS(null,BATIK_EXT_PIXEL_HEIGHT_ATTRIBUTE);
+ if (s.length() == 0) throw new BridgeException
+ (e, ERR_ATTRIBUTE_MISSING,
+ new Object[] {BATIK_EXT_PIXEL_HEIGHT_ATTRIBUTE});
try {
h = (int)SVGUtilities.convertSVGNumber(s);
} catch (NumberFormatException ex) {
throw new BridgeException
(e, ERR_ATTRIBUTE_VALUE_MALFORMED,
- new Object[] {BATIK_EXT_TRIM_ATTRIBUTE, s});
+ new Object[] {BATIK_EXT_PIXEL_HEIGHT_ATTRIBUTE, s});
}
return new Dimension(w, h);
1.1
xml-batik/sources/org/apache/batik/extension/svg/BatikMultiImageElement.java
Index: BatikMultiImageElement.java
===================================================================
/*****************************************************************************
* Copyright (C) The Apache Software Foundation. All rights reserved. *
* ------------------------------------------------------------------------- *
* This software is published under the terms of the Apache Software License *
* version 1.1, a copy of which has been included with this distribution in *
* the LICENSE file. *
*****************************************************************************/
package org.apache.batik.extension.svg;
import org.w3c.dom.Node;
import org.apache.batik.dom.AbstractDocument;
import org.apache.batik.extension.PrefixableStylableExtensionElement;
/**
* This class implements a multiImage extension to SVG.
*
* The 'multiImage' element is similar to the 'image' element (supports
* all the same attributes and properties) except.
* <ol>
* <li>It can only be used to reference raster content (this is an
* implementation thing really)</li>
* <li>It has two addtional attributes: 'pixel-width' and
* 'pixel-height' which are the maximum width and height of the
* image referenced by the xlink:href attribute.</li>
* <li>It can contain a child element 'subImage' which has only
* three attributes, pixel-width, pixel-height and xlink:href.
* The image displayed is the smallest image such that
* pixel-width and pixel-height are greater than or equal to the
* required image size for display.</li>
* </ol>
*
* @author <a href="mailto:[EMAIL PROTECTED]">Thomas DeWeese</a>
* @version $Id: BatikMultiImageElement.java,v 1.1 2002/02/20 13:27:10 deweese Exp $
*/
public class BatikMultiImageElement
extends PrefixableStylableExtensionElement
implements BatikExtConstants {
/**
* Creates a new BatikMultiImageElement object.
*/
protected BatikMultiImageElement() {
}
/**
* Creates a new BatikMultiImageElement object.
* @param prefix The namespace prefix.
* @param owner The owner document.
*/
public BatikMultiImageElement(String prefix, AbstractDocument owner) {
super(prefix, owner);
}
/**
* <b>DOM</b>: Implements {@link org.w3c.dom.Node#getLocalName()}.
*/
public String getLocalName() {
return BATIK_EXT_MULTI_IMAGE_TAG;
}
/**
* <b>DOM</b>: Implements {@link org.w3c.dom.Node#getNamespaceURI()}.
*/
public String getNamespaceURI() {
return BATIK_EXT_NAMESPACE_URI;
}
/**
* Returns a new uninitialized instance of this object's class.
*/
protected Node newNode() {
return new BatikMultiImageElement();
}
}
1.2 +16 -4
xml-batik/sources/org/apache/batik/extension/svg/renderable/MultiResRable.java
Index: MultiResRable.java
===================================================================
RCS file:
/home/cvs/xml-batik/sources/org/apache/batik/extension/svg/renderable/MultiResRable.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- MultiResRable.java 19 Feb 2002 22:08:44 -0000 1.1
+++ MultiResRable.java 20 Feb 2002 13:27:10 -0000 1.2
@@ -11,6 +11,7 @@
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.RenderingHints;
+import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Rectangle2D;
import java.awt.image.RenderedImage;
@@ -28,7 +29,7 @@
* RenderableImage world.
*
* @author <a href="mailto:[EMAIL PROTECTED]>Thomas DeWeese</a>
- * @version $Id: MultiResRable.java,v 1.1 2002/02/19 22:08:44 deweese Exp $
+ * @version $Id: MultiResRable.java,v 1.2 2002/02/20 13:27:10 deweese Exp $
*/
public class MultiResRable
extends AbstractRable {
@@ -72,6 +73,10 @@
srcs[idx] = new SoftReference(f);
}
+ // Just copy over the rendering hints.
+ RenderingHints rh = rc.getRenderingHints();
+ if (rh == null) rh = new RenderingHints(null);
+
double sx = bounds.getWidth() /(double)f.getWidth();
double sy = bounds.getHeight()/(double)f.getHeight();
@@ -79,8 +84,15 @@
AffineTransform at = rc.getTransform();
at.scale(sx, sy);
- rc.setTransform(at);
- return f.createRendering(rc);
+ // Map the area of interest to our input...
+ Shape aoi = rc.getAreaOfInterest();
+ if (aoi != null) {
+ AffineTransform invAt = AffineTransform.getScaleInstance
+ (1/sx, 1/sy);
+ aoi = invAt.createTransformedShape(aoi);
+ }
+
+ return f.createRendering(new RenderContext(at, aoi, rh));
}
public RenderedImage createRendering(RenderContext rc) {
@@ -93,7 +105,7 @@
double w = bounds.getWidth()*det;
for (int i=1; i<sizes.length; i++) {
- if (w >= sizes[i].width)
+ if (w > sizes[i].width)
return getImage(i-1, rc);
}
1.1
xml-batik/test-references/org/apache/batik/ext/awt/geom/.cvsignore
Index: .cvsignore
===================================================================
candidate
variation
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]