The spec says you can put <text> into a <clipPath>, but the
file below seems not to clip.
Also, an attempt to fill text with a linear gradient produces the
error messages shown below. I'm using Batik built from CVS on
12 July 2001, with
java version "1.3.0"
Java(TM) 2 Runtime Environment, Standard Edition (build
Blackdown-1.3.0-FCS)
Java HotSpot(TM) Client VM (build Blackdown-1.3.0-FCS, mixed mode)
on Linux Mandrake 7.2.
SVG file:
=======
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20001102//EN"
"http://www.w3.org/TR/2000/CR-SVG-20001102/DTD/svg-20001102.dtd">
<svg width="310px" height="310px" viewBox="0 0 310 310"
preserveAspectRatio="xMinYMin meet">
<defs>
<clipPath id="textClip">
<text id="text1" font-size="48pt" x="0" y="0"
transform="rotate(60)" fill="black" stroke="black">CLIP</text>
</clipPath>
<linearGradient id="lgrad">
<stop offset="0" stop-color="#009900"/>
<stop offset="1" stop-color="#ccffcc"/>
</linearGradient>
<g id="shapes">
<circle cx="20" cy="20" r="15" fill="#666"/>
<rect x="40" y="10" width="30" height="80" fill="#ccc"/>
<polygon points="0 35, 50 50, 10 90" stroke="black" stroke-width="2"
fill="none"/>
</g>
</defs>
<use xlink:href="#shapes" clip-path="url(#textClip)"/>
<rect x="100" y="30" width="40" height="40"
fill="url(#lgrad)"/>
<text x="150" y="30" font-size="24pt"
fill="url(#lgrad)">Fill</text>
<g transform="translate(0,150)">
<use xlink:href="#shapes"/>
<use xlink:href="#text1"/>
</g>
</svg>
===========================================
Error produced when filling text with gradient:
java.awt.geom.NoninvertibleTransformException: Determinant is 0
at java.awt.geom.AffineTransform.createInverse(AffineTransform.java:1898)
at
org.apache.batik.ext.awt.MultipleGradientPaintContext.<init>(MultipleGradientPaintContext.java:241)
at
org.apache.batik.ext.awt.LinearGradientPaintContext.<init>(LinearGradientPaintContext.java:83)
at
org.apache.batik.ext.awt.LinearGradientPaint.createContext(LinearGradientPaint.java:305)
at sun.java2d.pipe.AlphaPaintPipe.startSequence(AlphaPaintPipe.java:46)
at sun.java2d.pipe.SpanClipRenderer.startSequence(SpanClipRenderer.java:59)
at sun.java2d.pipe.DuctusShapeRenderer.renderPath(DuctusShapeRenderer.java:79)
at sun.java2d.pipe.DuctusShapeRenderer.fill(DuctusShapeRenderer.java:52)
at sun.java2d.pipe.ValidatePipe.fill(ValidatePipe.java:115)
at sun.java2d.SunGraphics2D.fill(SunGraphics2D.java:1616)
at org.apache.batik.gvt.font.AWTGVTGlyphVector.draw(AWTGVTGlyphVector.java:559)
at org.apache.batik.gvt.text.GlyphLayout.draw(GlyphLayout.java:113)
at
org.apache.batik.gvt.renderer.StrokingTextPainter.paintTextRuns(StrokingTextPainter.java:652)
at
org.apache.batik.gvt.renderer.StrokingTextPainter.paint(StrokingTextPainter.java:89)
at org.apache.batik.gvt.TextNode.primitivePaint(TextNode.java:323)
at
org.apache.batik.gvt.AbstractGraphicsNode.paint(AbstractGraphicsNode.java:398)
at org.apache.batik.gvt.TextNode.paint(TextNode.java:304)
at
org.apache.batik.gvt.CompositeGraphicsNode.primitivePaint(CompositeGraphicsNode.java:129)
at
org.apache.batik.gvt.CanvasGraphicsNode.primitivePaint(CanvasGraphicsNode.java:61)
at
org.apache.batik.gvt.AbstractGraphicsNode.paint(AbstractGraphicsNode.java:398)
at
org.apache.batik.gvt.CompositeGraphicsNode.primitivePaint(CompositeGraphicsNode.java:129)
at
org.apache.batik.gvt.filter.GraphicsNodeRed8Bit.genRect(GraphicsNodeRed8Bit.java:134)
at
org.apache.batik.ext.awt.image.rendered.AbstractTiledRed.copyToRasterByBlocks(AbstractTiledRed.java:633)
at
org.apache.batik.ext.awt.image.rendered.AbstractTiledRed.copyData(AbstractTiledRed.java:252)
at
org.apache.batik.ext.awt.image.rendered.TranslateRed.copyData(TranslateRed.java:97)
at org.apache.batik.ext.awt.image.rendered.PadRed.copyData(PadRed.java:87)
at
org.apache.batik.gvt.renderer.StaticRenderer.repaint(StaticRenderer.java:374)
at org.apache.batik.swing.gvt.GVTTreeRenderer.run(GVTTreeRenderer.java:106)
java.lang.IllegalArgumentException: transform should beinvertible
at
org.apache.batik.ext.awt.LinearGradientPaint.createContext(LinearGradientPaint.java:320)
at sun.java2d.pipe.AlphaPaintPipe.startSequence(AlphaPaintPipe.java:46)
at sun.java2d.pipe.SpanClipRenderer.startSequence(SpanClipRenderer.java:59)
at sun.java2d.pipe.DuctusShapeRenderer.renderPath(DuctusShapeRenderer.java:79)
at sun.java2d.pipe.DuctusShapeRenderer.fill(DuctusShapeRenderer.java:52)
at sun.java2d.pipe.ValidatePipe.fill(ValidatePipe.java:115)
at sun.java2d.SunGraphics2D.fill(SunGraphics2D.java:1616)
at org.apache.batik.gvt.font.AWTGVTGlyphVector.draw(AWTGVTGlyphVector.java:559)
at org.apache.batik.gvt.text.GlyphLayout.draw(GlyphLayout.java:113)
at
org.apache.batik.gvt.renderer.StrokingTextPainter.paintTextRuns(StrokingTextPainter.java:652)
at
org.apache.batik.gvt.renderer.StrokingTextPainter.paint(StrokingTextPainter.java:89)
at org.apache.batik.gvt.TextNode.primitivePaint(TextNode.java:323)
at
org.apache.batik.gvt.AbstractGraphicsNode.paint(AbstractGraphicsNode.java:398)
at org.apache.batik.gvt.TextNode.paint(TextNode.java:304)
at
org.apache.batik.gvt.CompositeGraphicsNode.primitivePaint(CompositeGraphicsNode.java:129)
at
org.apache.batik.gvt.CanvasGraphicsNode.primitivePaint(CanvasGraphicsNode.java:61)
at
org.apache.batik.gvt.AbstractGraphicsNode.paint(AbstractGraphicsNode.java:398)
at
org.apache.batik.gvt.CompositeGraphicsNode.primitivePaint(CompositeGraphicsNode.java:129)
at
org.apache.batik.gvt.filter.GraphicsNodeRed8Bit.genRect(GraphicsNodeRed8Bit.java:134)
at
org.apache.batik.ext.awt.image.rendered.AbstractTiledRed.copyToRasterByBlocks(AbstractTiledRed.java:633)
at
org.apache.batik.ext.awt.image.rendered.AbstractTiledRed.copyData(AbstractTiledRed.java:252)
at
org.apache.batik.ext.awt.image.rendered.TranslateRed.copyData(TranslateRed.java:97)
at org.apache.batik.ext.awt.image.rendered.PadRed.copyData(PadRed.java:87)
at
org.apache.batik.gvt.renderer.StaticRenderer.repaint(StaticRenderer.java:374)
at org.apache.batik.swing.gvt.GVTTreeRenderer.run(GVTTreeRenderer.java:106)
---
J. David Eisenberg http://catcode.com/
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]