You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-commits@xmlgraphics.apache.org by de...@apache.org on 2005/10/13 13:39:49 UTC

svn commit: r320740 - in /xmlgraphics/batik/trunk: sources/org/apache/batik/gvt/ sources/org/apache/batik/gvt/renderer/ test-references/samples/ test-references/samples/tests/spec/coordinates/ test-references/samples/tests/spec/filters/ test-references...

Author: deweese
Date: Thu Oct 13 04:39:26 2005
New Revision: 320740

URL: http://svn.apache.org/viewcvs?rev=320740&view=rev
Log:
1) New MacRenderer implementation that avoids 10x slowdown on
   Tiger.
2) Update to the handling of clipping in AbstractGraphicsNode.
   This avoids 'dirty bits' with Mac Renderer and potentially
   avoids other rendering errors around the edges of clipped
   regions.

Added:
    xmlgraphics/batik/trunk/sources/org/apache/batik/gvt/renderer/MacRenderer.java
      - copied unchanged from r320711, xmlgraphics/batik/branches/svg11/sources/org/apache/batik/gvt/renderer/MacRenderer.java
Modified:
    xmlgraphics/batik/trunk/sources/org/apache/batik/gvt/AbstractGraphicsNode.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/gvt/renderer/ConcreteImageRendererFactory.java
    xmlgraphics/batik/trunk/test-references/samples/tests/spec/coordinates/percentagesAndUnits.png
    xmlgraphics/batik/trunk/test-references/samples/tests/spec/filters/feTileTarget.png
    xmlgraphics/batik/trunk/test-references/samples/tests/spec/scripting/relativeURI.png
    xmlgraphics/batik/trunk/test-references/samples/textRotate.png
    xmlgraphics/batik/trunk/test-references/samples/textRotateShadows.png

Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/gvt/AbstractGraphicsNode.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/sources/org/apache/batik/gvt/AbstractGraphicsNode.java?rev=320740&r1=320739&r2=320740&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/gvt/AbstractGraphicsNode.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/gvt/AbstractGraphicsNode.java Thu Oct 13 04:39:26 2005
@@ -445,25 +445,36 @@
         // Set up graphic context. It is important to setup the
         // transform first, because the clip is defined in this node's
         // user space.
-        Shape defaultClip = g2d.getClip();
-        Composite defaultComposite = g2d.getComposite();
-        AffineTransform defaultTransform = g2d.getTransform();
-        RenderingHints defaultHints = null;
-
-        if (hints != null) {
-            defaultHints = g2d.getRenderingHints();
-            g2d.addRenderingHints(hints);
-        }
-        if (transform != null) {
-            g2d.transform(transform);
-        }
-        if (composite != null) {
-            g2d.setComposite(composite);
-        }
-        if (clip != null){
+        Composite       defaultComposite = null;
+        AffineTransform defaultTransform = null;
+        RenderingHints  defaultHints     = null;
+        Graphics2D      baseG2d          = null;
+
+        if (clip != null)  { 
+            baseG2d = g2d;
+            g2d = (Graphics2D)g2d.create();
+            if (hints != null) 
+                g2d.addRenderingHints(hints);
+            if (transform != null)
+                g2d.transform(transform);
+            if (composite != null)
+                g2d.setComposite(composite);
             g2d.clip(clip.getClipPath());
+        } else {
+            if (hints != null) {
+                defaultHints = g2d.getRenderingHints();
+                g2d.addRenderingHints(hints);
+            }
+            if (transform != null) {
+                defaultTransform = g2d.getTransform();
+                g2d.transform(transform);
+            }
+            if (composite != null) {
+                defaultComposite = g2d.getComposite();
+                g2d.setComposite(composite);
+            }
         }
-
+            
         Shape curClip = g2d.getClip();
         g2d.setRenderingHint(RenderingHintsKeyExt.KEY_AREA_OF_INTEREST, 
                              curClip);
@@ -520,6 +531,12 @@
                     filteredImage = clip;
                 }
 
+                baseG2d = g2d;
+                // Only muck with the clip on a 'child'
+                // graphics 2D otherwise when we restore the
+                // clip it might 'wander' by a pixel.
+                g2d = (Graphics2D)g2d.create();
+
                 if(antialiasedClip){
                     // Remove hard edged clip
                     g2d.setClip(null);
@@ -530,17 +547,23 @@
 
                 org.apache.batik.ext.awt.image.GraphicsUtil.drawImage
                     (g2d, filteredImage);
+
+                g2d = baseG2d;
+                baseG2d = null;
             }
         }
 
         // Restore default rendering attributes
-        if (defaultHints != null) {
-            g2d.setRenderingHints(defaultHints);
-        }
-        g2d.setTransform(defaultTransform);
-        g2d.setClip(defaultClip);
-        if (composite != null) {
-            g2d.setComposite(defaultComposite);
+        if (baseG2d != null) {
+            g2d.dispose();
+        } else {
+            if (defaultHints != null)
+                g2d.setRenderingHints(defaultHints);
+            if (defaultTransform != null)
+                g2d.setTransform(defaultTransform);
+            if (defaultComposite != null) {
+                g2d.setComposite(defaultComposite);
+            }
         }
     }
 

Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/gvt/renderer/ConcreteImageRendererFactory.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/sources/org/apache/batik/gvt/renderer/ConcreteImageRendererFactory.java?rev=320740&r1=320739&r2=320740&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/gvt/renderer/ConcreteImageRendererFactory.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/gvt/renderer/ConcreteImageRendererFactory.java Thu Oct 13 04:39:26 2005
@@ -37,6 +37,8 @@
      * Creates a new static image renderer
      */
     public ImageRenderer createStaticImageRenderer(){
+        if (onMacOSX)
+            return new MacRenderer();
         return new StaticRenderer();
     }
 
@@ -44,6 +46,15 @@
      * Creates a new dynamic image renderer
      */
     public ImageRenderer createDynamicImageRenderer(){
+        if (onMacOSX)
+            return new MacRenderer();
         return new DynamicRenderer();
+    }
+
+
+    static final boolean onMacOSX;
+    static {
+        // This should be OK for applets.
+        onMacOSX = ("Mac OS X".equals(System.getProperty("os.name")));
     }
 }

Modified: xmlgraphics/batik/trunk/test-references/samples/tests/spec/coordinates/percentagesAndUnits.png
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/test-references/samples/tests/spec/coordinates/percentagesAndUnits.png?rev=320740&r1=320739&r2=320740&view=diff
==============================================================================
Binary files - no diff available.

Modified: xmlgraphics/batik/trunk/test-references/samples/tests/spec/filters/feTileTarget.png
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/test-references/samples/tests/spec/filters/feTileTarget.png?rev=320740&r1=320739&r2=320740&view=diff
==============================================================================
Binary files - no diff available.

Modified: xmlgraphics/batik/trunk/test-references/samples/tests/spec/scripting/relativeURI.png
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/test-references/samples/tests/spec/scripting/relativeURI.png?rev=320740&r1=320739&r2=320740&view=diff
==============================================================================
Binary files - no diff available.

Modified: xmlgraphics/batik/trunk/test-references/samples/textRotate.png
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/test-references/samples/textRotate.png?rev=320740&r1=320739&r2=320740&view=diff
==============================================================================
Binary files - no diff available.

Modified: xmlgraphics/batik/trunk/test-references/samples/textRotateShadows.png
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/test-references/samples/textRotateShadows.png?rev=320740&r1=320739&r2=320740&view=diff
==============================================================================
Binary files - no diff available.