deweese 01/10/17 05:33:00
Modified: samples/extensions solidColor.svg
sources/org/apache/batik/extension/svg
BatikBridgeExtension.java BatikDomExtension.java
BatikExtConstants.java
Added: samples/extensions colorSwitch.svg
sources/org/apache/batik/extension/svg
ColorSwitchBridge.java ColorSwitchElement.java
Log:
1) Improved the solidColor test a bit
2) Added a ColorSwitch element which is a Paint Server which
selects which child element to use based on switch like parameters.
Revision Changes Path
1.2 +22 -8 xml-batik/samples/extensions/solidColor.svg
Index: solidColor.svg
===================================================================
RCS file: /home/cvs/xml-batik/samples/extensions/solidColor.svg,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- solidColor.svg 2001/10/16 23:25:31 1.1
+++ solidColor.svg 2001/10/17 12:33:00 1.2
@@ -14,7 +14,7 @@
<!-- regularPoly extension tag test -->
<!-- -->
<!-- @author [EMAIL PROTECTED] -->
-<!-- @version $Id: solidColor.svg,v 1.1 2001/10/16 23:25:31 deweese Exp $ -->
+<!-- @version $Id: solidColor.svg,v 1.2 2001/10/17 12:33:00 deweese Exp $ -->
<!-- ====================================================================== -->
<?xml-stylesheet type="text/css" href="extension.css" ?>
@@ -33,7 +33,19 @@
<text x="225" y="40" class="title">
Solid Color Paint Server
</text>
+
+ <path d="M25,135 c50,-50 50,50 100,0 c50,-50 50,50 100,0
+ c50,-50 50,50 100,0c50,-50 50,50 100,0"
+ fill="none" stroke="black" stroke-width="10"/>
+
+ <path d="M25,275 c50,-50 50,50 100,0 c50,-50 50,50 100,0
+ c50,-50 50,50 100,0c50,-50 50,50 100,0"
+ fill="none" stroke="black" stroke-width="10"/>
+ <path d="M25,415 c50,-50 50,50 100,0 c50,-50 50,50 100,0
+ c50,-50 50,50 100,0c50,-50 50,50 100,0"
+ fill="none" stroke="black" stroke-width="10"/>
+
<switch>
<g requiredExtensions="http://xml.apache.org/batik/ext/solidColor/1.0"
fill="#0D0" stroke="#88F" stroke-width="2">
@@ -45,16 +57,18 @@
<circle fill="url(#SolidPurple)" cx="85" cy="135" r="50"/>
<circle fill="url(#TransPurple)" cx="225" cy="135" r="50"/>
<circle fill="url(#orange)" cx="365" cy="135" r="50"/>
-
- <circle stroke="url(#SolidPurple)" cx="85" cy="275" r="50"/>
- <circle stroke="url(#TransPurple)" cx="225" cy="275" r="50"/>
- <circle stroke="url(#orange)" cx="365" cy="275" r="50"/>
+
+ <g stroke-width="5" fill="none">
+ <circle stroke="url(#SolidPurple)" cx="85" cy="275" r="50"/>
+ <circle stroke="url(#TransPurple)" cx="225" cy="275" r="50"/>
+ <circle stroke="url(#orange)" cx="365" cy="275" r="50"/>
+ </g>
- <circle fill="url(#SolidPurple)" opacity="0.5"
+ <circle fill="url(#SolidPurple)" fill-opacity="0.5"
cx="85" cy="415" r="50"/>
- <circle fill="url(#TransPurple)" opacity="0.5"
+ <circle fill="url(#TransPurple)" fill-opacity="0.5"
cx="225" cy="415" r="50"/>
- <circle fill="url(#orange)" opacity="0.5"
+ <circle fill="url(#orange)" fill-opacity="0.5"
cx="365" cy="415" r="50"/>
</g>
1.1 xml-batik/samples/extensions/colorSwitch.svg
Index: colorSwitch.svg
===================================================================
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<!-- ====================================================================== -->
<!-- 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. -->
<!-- ====================================================================== -->
<!-- ====================================================================== -->
<!-- regularPoly extension tag test -->
<!-- -->
<!-- @author [EMAIL PROTECTED] -->
<!-- @version $Id: colorSwitch.svg,v 1.1 2001/10/17 12:33:00 deweese Exp $ -->
<!-- ====================================================================== -->
<?xml-stylesheet type="text/css" href="extension.css" ?>
<svg id="body" width="450" height="500" xml:space="preserve"
viewBox="0 0 450 500"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:batik="http://xml.apache.org/batik/ext">
<title>Star Extension Tag</title>
<!-- ============================================================= -->
<!-- Test content -->
<!-- ============================================================= -->
<g id="testContent" class="legend" style="text-anchor:middle">
<text x="225" y="40" class="title">
Color Switch Paint Server
</text>
<path d="M25,135 c50,-50 50,50 100,0 c50,-50 50,50 100,0
c50,-50 50,50 100,0c50,-50 50,50 100,0"
fill="none" stroke="black" stroke-width="10"/>
<path d="M25,275 c50,-50 50,50 100,0 c50,-50 50,50 100,0
c50,-50 50,50 100,0c50,-50 50,50 100,0"
fill="none" stroke="black" stroke-width="10"/>
<path d="M25,415 c50,-50 50,50 100,0 c50,-50 50,50 100,0
c50,-50 50,50 100,0c50,-50 50,50 100,0"
fill="none" stroke="black" stroke-width="10"/>
<switch>
<g requiredExtensions="http://xml.apache.org/batik/ext/colorSwitch/1.0"
fill="#0D0" stroke="#88F" stroke-width="2">
<batik:colorSwitch id="TransPurple">
<batik:solidColor color="red"
requiredExtensions="NonExistantExtension"/>
<batik:solidColor color="#FF00FF" opacity=".5"
requiredExtensions="http://xml.apache.org/batik/ext/solidColor/1.0"/>
<linearGradient>
<stop offset="0" stop-color="#FF0000" stop-opacity="0.5"/>
</linearGradient>
</batik:colorSwitch>
<batik:colorSwitch id="SolidPurple">
<batik:solidColor color="#FF00FF"
requiredExtensions="http://xml.apache.org/batik/ext/solidColor/1.0"/>
<linearGradient>
<stop offset="0" stop-color="#FFFF00" />
</linearGradient>
</batik:colorSwitch>
<batik:colorSwitch id="orange">
<batik:solidColor color="orange" opacity="1"
requiredExtensions="NonExistantExtension" />
<linearGradient y2="100%">
<stop offset=".1" stop-color="crimson" />
<stop offset=".5" stop-color="gold" stop-opacity="0.5"/>
<stop offset=".9" stop-color="crimson" />
</linearGradient>
</batik:colorSwitch>
<circle fill="url(#SolidPurple)" cx="85" cy="135" r="50"/>
<circle fill="url(#TransPurple)" cx="225" cy="135" r="50"/>
<circle fill="url(#orange)" cx="365" cy="135" r="50"/>
<g stroke-width="5" fill="none">
<circle stroke="url(#SolidPurple)" cx="85" cy="275" r="50"/>
<circle stroke="url(#TransPurple)" cx="225" cy="275" r="50"/>
<circle stroke="url(#orange)" cx="365" cy="275" r="50"/>
</g>
<circle fill="url(#SolidPurple)" fill-opacity="0.5"
cx="85" cy="415" r="50"/>
<circle fill="url(#TransPurple)" fill-opacity="0.5"
cx="225" cy="415" r="50"/>
<circle fill="url(#orange)" fill-opacity="0.5"
cx="365" cy="415" r="50"/>
</g>
<g fill="red">
<circle cx="85" cy="135" r="50"/>
<circle cx="225" cy="135" r="50"/>
<circle cx="365" cy="135" r="50"/>
<circle cx="85" cy="275" r="50"/>
<circle cx="225" cy="275" r="50"/>
<circle cx="365" cy="275" r="50"/>
<circle cx="85" cy="415" r="50"/>
<circle cx="225" cy="415" r="50"/>
<circle cx="365" cy="415" r="50"/>
</g>
</switch>
</g>
<!-- ============================================================= -->
<!-- Batik sample mark -->
<!-- ============================================================= -->
<use xlink:href="../batikLogo.svg#Batik_Tag_Box" />
</svg>
1.4 +2 -0
xml-batik/sources/org/apache/batik/extension/svg/BatikBridgeExtension.java
Index: BatikBridgeExtension.java
===================================================================
RCS file:
/home/cvs/xml-batik/sources/org/apache/batik/extension/svg/BatikBridgeExtension.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- BatikBridgeExtension.java 2001/10/16 23:25:31 1.3
+++ BatikBridgeExtension.java 2001/10/17 12:33:00 1.4
@@ -41,6 +41,7 @@
"http://xml.apache.org/batik/ext/star/1.0" ,
"http://xml.apache.org/batik/ext/histogramNormalization/1.0" ,
"http://xml.apache.org/batik/ext/solidColor/1.0" ,
+ "http://xml.apache.org/batik/ext/colorSwitch/1.0" ,
};
Vector v = new Vector(extensions.length);
for (int i=0; i<extensions.length; i++) {
@@ -94,5 +95,6 @@
ctx.putBridge(new BatikStarElementBridge());
ctx.putBridge(new BatikHistogramNormalizationElementBridge());
ctx.putBridge(new SolidColorBridge());
+ ctx.putBridge(new ColorSwitchBridge());
}
}
1.5 +19 -1
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.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- BatikDomExtension.java 2001/10/16 23:25:31 1.4
+++ BatikDomExtension.java 2001/10/17 12:33:00 1.5
@@ -91,6 +91,11 @@
(BATIK_EXT_NAMESPACE_URI,
BATIK_EXT_SOLID_COLOR_TAG,
new SolidColorElementFactory());
+
+ di.registerCustomElementFactory
+ (BATIK_EXT_NAMESPACE_URI,
+ BATIK_EXT_COLOR_SWITCH_TAG,
+ new ColorSwitchElementFactory());
}
/**
@@ -144,7 +149,6 @@
protected static class SolidColorElementFactory
implements SVGDOMImplementation.ElementFactory {
public SolidColorElementFactory() {
- System.out.println("FActory created");
}
/**
* Creates an instance of the associated element type.
@@ -154,5 +158,19 @@
}
}
+ /**
+ * To create a 'solidColor' element.
+ */
+ protected static class ColorSwitchElementFactory
+ implements SVGDOMImplementation.ElementFactory {
+ public ColorSwitchElementFactory() {
+ }
+ /**
+ * Creates an instance of the associated element type.
+ */
+ public Element create(String prefix, Document doc) {
+ return new ColorSwitchElement(prefix, (AbstractDocument)doc);
+ }
+ }
}
1.4 +4 -0
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.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- BatikExtConstants.java 2001/10/16 23:25:31 1.3
+++ BatikExtConstants.java 2001/10/17 12:33:00 1.4
@@ -27,6 +27,10 @@
public static final String BATIK_EXT_SOLID_COLOR_TAG =
"solidColor";
+ /** Tag name for Batik's regular poly extension. */
+ public static final String BATIK_EXT_COLOR_SWITCH_TAG =
+ "colorSwitch";
+
/** Tag name for Batik's star extension. */
public static final String BATIK_EXT_HISTOGRAM_NORMALIZATION_TAG =
"histogramNormalization";
1.1
xml-batik/sources/org/apache/batik/extension/svg/ColorSwitchBridge.java
Index: ColorSwitchBridge.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 java.awt.Color;
import java.awt.Paint;
import org.apache.batik.bridge.BridgeContext;
import org.apache.batik.bridge.AbstractSVGBridge;
import org.apache.batik.bridge.PaintBridge;
import org.apache.batik.bridge.SVGUtilities;
import org.apache.batik.bridge.Bridge;
import org.apache.batik.gvt.GraphicsNode;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.svg.SVGTests;
/**
* Bridge class for a regular polygon element.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Thomas Deweese</a>
*/
public class ColorSwitchBridge
extends AbstractSVGBridge
implements PaintBridge, BatikExtConstants {
/**
* Constructs a new bridge for the <rect> element.
*/
public ColorSwitchBridge() { /* nothing */ }
/**
* Returns the SVG namespace URI.
*/
public String getNamespaceURI() {
return BATIK_EXT_NAMESPACE_URI;
}
/**
* Returns 'rect'.
*/
public String getLocalName() {
return BATIK_EXT_COLOR_SWITCH_TAG;
}
/**
* Creates a <tt>Paint</tt> according to the specified parameters.
*
* @param ctx the bridge context to use
* @param paintElement the element that defines a Paint
* @param paintedElement the element referencing the paint
* @param paintedNode the graphics node on which the Paint will be applied
* @param opacity the opacity of the Paint to create
*/
public Paint createPaint(BridgeContext ctx,
Element paintElement,
Element paintedElement,
GraphicsNode paintedNode,
float opacity) {
Element clrDef = null;
for (Node n = paintElement.getFirstChild();
n != null;
n = n.getNextSibling()) {
if ((n.getNodeType() != Node.ELEMENT_NODE))
continue;
Element ref = (Element)n;
if ( // (ref instanceof SVGTests) &&
SVGUtilities.matchUserAgent(ref, ctx.getUserAgent())) {
clrDef = ref;
break;
}
}
if (clrDef == null)
return Color.black;
Bridge bridge = ctx.getBridge(clrDef);
if (bridge == null || !(bridge instanceof PaintBridge))
return Color.black;
return ((PaintBridge)bridge).createPaint(ctx, clrDef,
paintedElement,
paintedNode,
opacity);
}
}
1.1
xml-batik/sources/org/apache/batik/extension/svg/ColorSwitchElement.java
Index: ColorSwitchElement.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 regular polygon extension to SVG
*
* @author <a href="mailto:[EMAIL PROTECTED]">Thomas DeWeese</a>
* @version $Id: ColorSwitchElement.java,v 1.1 2001/10/17 12:33:00 deweese Exp $
*/
public class ColorSwitchElement
extends PrefixableStylableExtensionElement
implements BatikExtConstants {
/**
* Creates a new BatikRegularPolygonElement object.
*/
protected ColorSwitchElement() {
}
/**
* Creates a new BatikRegularPolygonElement object.
* @param prefix The namespace prefix.
* @param owner The owner document.
*/
public ColorSwitchElement(String prefix, AbstractDocument owner) {
super(prefix, owner);
}
/**
* <b>DOM</b>: Implements {@link org.w3c.dom.Node#getLocalName()}.
*/
public String getLocalName() {
return BATIK_EXT_COLOR_SWITCH_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 ColorSwitchElement();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]