You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by di...@apache.org on 2001/01/03 14:49:01 UTC
cvs commit: xml-cocoon/webapp sitemap.xmap
dims 01/01/03 05:49:01
Modified: . Tag: xml-cocoon2 build.xml
src/org/apache/cocoon/serialization Tag: xml-cocoon2
FOPSerializer.java SVGSerializer.java
webapp Tag: xml-cocoon2 sitemap.xmap
Added: lib Tag: xml-cocoon2 batik-all.jar fop-0_16_0.jar
Removed: lib Tag: xml-cocoon2 fop-0_15_0.jar ss_css2.jar
svg-20001010.jar
Log:
Moving to FOP .16 and xml-batik. the latest CSIRO SVG Toolkit is not good
enough for use with FOP .16. Hence the move to xml-batik.
Revision Changes Path
No revision
No revision
1.6.2.51 +1 -1 xml-cocoon/build.xml
Index: build.xml
===================================================================
RCS file: /home/cvs/xml-cocoon/build.xml,v
retrieving revision 1.6.2.50
retrieving revision 1.6.2.51
diff -u -r1.6.2.50 -r1.6.2.51
--- build.xml 2000/12/16 14:58:22 1.6.2.50
+++ build.xml 2001/01/03 13:48:56 1.6.2.51
@@ -164,7 +164,7 @@
<available property="xt.present" classname="com.jclark.xsl.sax.XMLProcessorImpl">
<classpath refid="classpath"/>
</available>
- <available property="svg.present" classname="org.csiro.svg.dom.SVGDocumentImpl">
+ <available property="svg.present" classname="org.apache.batik.transcoder.TranscoderFactory">
<classpath refid="classpath"/>
</available>
<available property="rhino.present" classname="org.mozilla.javascript.tools.jsc.Main">
No revision
No revision
1.1.2.1 +6016 -0 xml-cocoon/lib/Attic/batik-all.jar
<<Binary file>>
1.1.2.1 +3424 -0 xml-cocoon/lib/Attic/fop-0_16_0.jar
<<Binary file>>
No revision
No revision
1.1.2.10 +2 -2 xml-cocoon/src/org/apache/cocoon/serialization/Attic/FOPSerializer.java
Index: FOPSerializer.java
===================================================================
RCS file: /home/cvs/xml-cocoon/src/org/apache/cocoon/serialization/Attic/FOPSerializer.java,v
retrieving revision 1.1.2.9
retrieving revision 1.1.2.10
diff -u -r1.1.2.9 -r1.1.2.10
--- FOPSerializer.java 2000/12/08 20:40:09 1.1.2.9
+++ FOPSerializer.java 2001/01/03 13:49:00 1.1.2.10
@@ -29,7 +29,7 @@
* @author <a href="mailto:giacomo.pati@pwr.ch">Giacomo Pati</a>
* (PWR Organisation & Entwicklung)
* @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
- * @version CVS $Revision: 1.1.2.9 $ $Date: 2000/12/08 20:40:09 $
+ * @version CVS $Revision: 1.1.2.10 $ $Date: 2001/01/03 13:49:00 $
*
*/
public class FOPSerializer extends AbstractSerializer implements MessageListener, Poolable {
@@ -57,7 +57,7 @@
this.driver.addElementMapping("org.apache.fop.svg.SVGElementMapping");
this.driver.addPropertyList("org.apache.fop.fo.StandardPropertyListMapping");
this.driver.addPropertyList("org.apache.fop.svg.SVGPropertyListMapping");
- this.driver.setWriter(new PrintWriter(out));
+ this.driver.setOutputStream(out);
this.setContentHandler(this.driver.getContentHandler());
}
1.1.2.18 +50 -66 xml-cocoon/src/org/apache/cocoon/serialization/Attic/SVGSerializer.java
Index: SVGSerializer.java
===================================================================
RCS file: /home/cvs/xml-cocoon/src/org/apache/cocoon/serialization/Attic/SVGSerializer.java,v
retrieving revision 1.1.2.17
retrieving revision 1.1.2.18
diff -u -r1.1.2.17 -r1.1.2.18
--- SVGSerializer.java 2000/12/08 20:40:11 1.1.2.17
+++ SVGSerializer.java 2001/01/03 13:49:00 1.1.2.18
@@ -11,7 +11,6 @@
import org.apache.cocoon.*;
import org.apache.cocoon.environment.Environment;
import org.apache.cocoon.components.parser.Parser;
-import org.apache.cocoon.components.image.ImageEncoder;
import org.apache.cocoon.xml.*;
import org.apache.cocoon.xml.dom.*;
import org.apache.avalon.*;
@@ -22,8 +21,17 @@
import org.xml.sax.ext.*;
import org.w3c.dom.*;
import org.w3c.dom.svg.*;
-import org.csiro.svg.dom.SVGDocumentImpl;
+import org.apache.batik.refimpl.transcoder.*;
+import org.apache.batik.transcoder.*;
+
+import org.apache.xml.serialize.SerializerFactory;
+import org.apache.xml.serialize.Method;
+import org.apache.xml.serialize.OutputFormat;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+
public class SVGSerializer extends DOMBuilder implements Composer, Serializer, Configurable {
/** The <code>ContentHandler</code> receiving SAX events. */
@@ -36,16 +44,10 @@
private Environment environment=null;
/** The current <code>Parameters</code>. */
private Configuration config=null;
- /** The source URI associated with the request or <b>null</b>. */
- private String source=null;
/** The current <code>OutputStream</code>. */
private OutputStream output=null;
- /** The current <code>ImageEncoder</code>. */
- private ImageEncoder encoder;
- /** Does the produced image have a transparent background? */
- private boolean transparent;
- /** The background colour of this image if not transparent */
- private Color backgroundColour = null;
+ /** The current <code>mime-type</code>. */
+ private String mimetype = null;
/**
* Set the <code>OutputStream</code> where the XML should be serialized.
@@ -68,42 +70,9 @@
log.error("Could not find component", e);
throw new ConfigurationException("Could not find Parser", e);
}
-
- // What image encoder do I use?
- String enc = this.config.getChild("encoder").getValue();
-
- try {
- log.debug("Selecting " + Roles.IMAGE_ENCODER + ": " + enc);
- ComponentSelector selector = (ComponentSelector) this.manager.lookup(Roles.IMAGE_ENCODER);
- this.encoder = (ImageEncoder) selector.select(enc);
- } catch (Exception e) {
- log.error("Could not select " + Roles.IMAGE_ENCODER, e);
- throw new ConfigurationException("The ImageEncoder '"
- + enc + "' cannot be found. Check your component configuration in the sitemap", e);
- }
-
- // Configure the encoder
- if (this.encoder instanceof Configurable) {
- ((Configurable)this.encoder).configure(conf);
- }
-
- // Transparent or a solid colour background?
- this.transparent = this.config.getChild("transparent").getValueAsBoolean(false);
- if (!transparent) {
- String bg = this.config.getChild("background").getValue("#FFFFFF").trim();
-
- if (bg.startsWith("#")) {
- bg = bg.substring(1);
- }
-
- try {
- this.backgroundColour = new Color(Integer.parseInt(bg, 16));
- } catch (NumberFormatException e) {
- log.debug("Invalid color(SVGSerializer)", e);
- throw new ConfigurationException(bg + " is not a valid color.", e);
- }
- }
+ mimetype = this.config.getAttribute("mime-type");
+ log.debug("SVGSerializer mime-type:" + mimetype);
}
/**
@@ -154,27 +123,42 @@
*/
public void notify(Document doc) throws SAXException {
try {
- SVGDocumentImpl svg = new SVGDocumentImpl(doc);
- SVGSVGElement root = svg.getRootElement();
- SVGLength width = root.getWidth().getBaseVal();
- SVGLength height = root.getHeight().getBaseVal();
- width.convertToSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX);
- height.convertToSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX);
- int w = (int) width.getValue();
- int h = (int) height.getValue();
- BufferedImage img = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
- // Either leave this image transparent, or fill it with a solid colour
- Graphics2D gra = img.createGraphics();
- if (!transparent) {
- gra.setColor(backgroundColour);
- gra.fillRect(0, 0, w, h);
- }
- svg.draw(gra);
- encoder.encode(img, this.output);
+ TranscoderFactory transcoderFactory =
+ ConcreteTranscoderFactory.getTranscoderFactoryImplementation();
+ Transcoder transcoder =
+ transcoderFactory.createTranscoder(mimetype);
+
+ // TODO: FIXME(DIMS) : Remove hard-coded parser name.
+ transcoder.addTranscodingHint(
+ TranscodingHints.KEY_XML_PARSER_CLASSNAME,
+ "org.apache.xerces.parsers.SAXParser");
+
+ // TODO: FIXME(DIMS) - batik is flaky in accepting DOM and don't
+ // support SAX yet. So we have to create a Byte Array as an input
+ // stream for them.
+ ByteArrayOutputStream bytestream = new ByteArrayOutputStream();
+ BufferedOutputStream ostream = new BufferedOutputStream(bytestream);
+
+ OutputFormat outformat = new OutputFormat();
+ SerializerFactory serializerFactory =
+ SerializerFactory.getSerializerFactory(Method.XML);
+ org.apache.xml.serialize.Serializer serializer =
+ serializerFactory.makeSerializer(outformat);
+ serializer.setOutputByteStream(ostream);
+ serializer.asDOMSerializer().serialize(doc);
+
+ // Use the Byte Array as the InputSource for the transcoder.
+ InputSource inputSource = new InputSource(new ByteArrayInputStream
+ (bytestream.toByteArray()));
+
+ // TODO: FIXME(DIMS) - Why do they need a SystemId?
+ inputSource.setSystemId("http://xml.apache.org");
+ transcoder.transcodeToStream(inputSource,this.output);
+
this.output.flush();
- } catch (IOException ex) {
- log.warn("SVGSerializer: IOException writing image", ex);
- throw new SAXException("IOException writing image ", ex);
+ } catch (Exception ex) {
+ log.warn("SVGSerializer: Exception writing image", ex);
+ throw new SAXException("Exception writing image ", ex);
}
}
@@ -182,6 +166,6 @@
* Return the MIME type.
*/
public String getMimeType() {
- return encoder.getMimeType();
+ return mimetype;
}
}
No revision
No revision
1.1.2.30 +3 -4 xml-cocoon/webapp/Attic/sitemap.xmap
Index: sitemap.xmap
===================================================================
RCS file: /home/cvs/xml-cocoon/webapp/Attic/sitemap.xmap,v
retrieving revision 1.1.2.29
retrieving revision 1.1.2.30
diff -u -r1.1.2.29 -r1.1.2.30
--- sitemap.xmap 2000/12/30 23:01:02 1.1.2.29
+++ sitemap.xmap 2001/01/03 13:49:00 1.1.2.30
@@ -43,10 +43,9 @@
<doctype-system>http://www.w3.org/TR/2000/03/WD-SVG-20000303/</doctype-system>
</map:serializer>
<map:serializer name="svg2jpeg" mime-type="image/jpeg" src="org.apache.cocoon.serialization.SVGSerializer">
- <encoder>jpegencoder</encoder>
- <transparent>false</transparent>
- <background>#FFFFFF</background>
</map:serializer>
+ <map:serializer name="svg2png" mime-type="image/png" src="org.apache.cocoon.serialization.SVGSerializer">
+ </map:serializer>
</map:serializers>
<map:selectors default="browser">
@@ -207,7 +206,7 @@
<map:match pattern="svg">
<map:generate src="docs/samples/opac.svg"/>
- <map:serialize type="svg2jpeg"/>
+ <map:serialize type="svg2png"/>
</map:match>
<map:match pattern="slides/slides">