Stephan Müller wrote:

I want to paint a SVG directly on a Graphics2D, without creating first a BufferedImage. Therefore I used the GraphicsNodes paint()-method. But it doesn't work with SVGs using
filter - the result looks ugly. Using the StaticRenderer instead works fine, but I don't want to use that. Why doesn't it work?

Tonny Kohar wrote:

If the result look ugly maybe you need to set the anti-alias on, but I
could be wrong

Hi Guys,

   The problem is that the component doesn't have an alpha channel.
So when the filters try to match it the result is pretty ugly.  I have
attached a tentative patch for the problem.  I'm wary about putting it
in CVS because this stuff evolved out of a lot of trial an error, so
any change is really risking breaking stuff that already works...

   I want to at least have a chance to check printing before I
commit the change.
Index: sources/org/apache/batik/ext/awt/image/GraphicsUtil.java
===================================================================
RCS file: 
/home/cvs/xml-batik/sources/org/apache/batik/ext/awt/image/GraphicsUtil.java,v
retrieving revision 1.32
diff -w -u -r1.32 GraphicsUtil.java
--- sources/org/apache/batik/ext/awt/image/GraphicsUtil.java    18 Aug 2004 07:13:48 
-0000      1.32
+++ sources/org/apache/batik/ext/awt/image/GraphicsUtil.java    22 Aug 2004 01:16:13 
-0000
@@ -134,15 +134,11 @@
             // Assume device is sRGB
             g2dCS = ColorSpace.getInstance(ColorSpace.CS_sRGB);
         ColorModel drawCM = g2dCM;
-        if (g2dCM == null) {
-            // If we can't find out about our device assume
-            // it's SRGB unpremultiplied (Just because this
-            // seems to work for us).
+        if ((g2dCM == null) || !g2dCM.hasAlpha()) {
+            // If we can't find out about our device or the device
+            // does not support alpha just use SRGB unpremultiplied
+            // (Just because this seems to work for us).
             drawCM = sRGB_Unpre;
-        } else if (drawCM.hasAlpha() && g2dCM.hasAlpha() &&
-                   (drawCM.isAlphaPremultiplied() !=
-                    g2dCM .isAlphaPremultiplied())) {
-            drawCM = coerceColorModel(drawCM, g2dCM.isAlphaPremultiplied());
         }
 
         if (cr instanceof BufferedImageCachableRed) {
@@ -281,8 +277,9 @@
                 Rectangle iR  = new Rectangle(0,0,0,0);
 
                 if (false) {
-                    System.out.println("CR: " + cr);
-                    System.out.println("CRR: " + crR + " TG: [" +
+                    System.err.println("SrcCM: " + srcCM);
+                    System.err.println("CR: " + cr);
+                    System.err.println("CRR: " + crR + " TG: [" +
                                        xt0 +"," +
                                        yt0 +"," +
                                        xt1 +"," +

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to