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 2006/03/12 02:21:12 UTC

svn commit: r385230 - in /xmlgraphics/batik/branches/svg11: contrib/scroll/ sources/org/apache/batik/bridge/svg12/ sources/org/apache/batik/ext/awt/image/ sources/org/apache/batik/ext/awt/image/codec/tiff/ sources/org/apache/batik/ext/awt/image/rendere...

Author: deweese
Date: Sat Mar 11 17:21:10 2006
New Revision: 385230

URL: http://svn.apache.org/viewcvs?rev=385230&view=rev
Log:
1) JSVGScrollPane now has 'scrollbarAlwaysVisible' mode.
2) 38872 - G2D not disposed. (Thanks Eric Suen).
3) 38930,38932 - Fallthroughs (Thanks Dieter von Holten)
4) 38933 - NPE (actually I updated docs)


Modified:
    xmlgraphics/batik/branches/svg11/contrib/scroll/ScrollExample.java
    xmlgraphics/batik/branches/svg11/sources/org/apache/batik/bridge/svg12/SVGMultiImageElementBridge.java
    xmlgraphics/batik/branches/svg11/sources/org/apache/batik/ext/awt/image/GraphicsUtil.java
    xmlgraphics/batik/branches/svg11/sources/org/apache/batik/ext/awt/image/codec/tiff/TIFFImageEncoder.java
    xmlgraphics/batik/branches/svg11/sources/org/apache/batik/ext/awt/image/rendered/AbstractRed.java
    xmlgraphics/batik/branches/svg11/sources/org/apache/batik/gvt/AbstractGraphicsNode.java
    xmlgraphics/batik/branches/svg11/sources/org/apache/batik/swing/JSVGScrollPane.java
    xmlgraphics/batik/branches/svg11/sources/org/apache/batik/transcoder/SVGAbstractTranscoder.java

Modified: xmlgraphics/batik/branches/svg11/contrib/scroll/ScrollExample.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/branches/svg11/contrib/scroll/ScrollExample.java?rev=385230&r1=385229&r2=385230&view=diff
==============================================================================
--- xmlgraphics/batik/branches/svg11/contrib/scroll/ScrollExample.java (original)
+++ xmlgraphics/batik/branches/svg11/contrib/scroll/ScrollExample.java Sat Mar 11 17:21:10 2006
@@ -79,17 +79,18 @@
 		JFrame frame = new JFrame("ScrollExample: "+url.getFile());
 		frame.setResizable(true);
 		frame.setSize(new Dimension(500,500));
-                frame.addWindowListener(new java.awt.event.WindowAdapter() {
-                        public void windowClosing
-                            (java.awt.event.WindowEvent e) {
-                            System.exit(0);
-                        }
-                    });
+        frame.addWindowListener(new java.awt.event.WindowAdapter() {
+                public void windowClosing
+                    (java.awt.event.WindowEvent e) {
+                    System.exit(0);
+                }
+            });
                 
 		// frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
 		
-                JSVGCanvas     canvas   = new JSVGCanvas();
+        JSVGCanvas     canvas   = new JSVGCanvas();
 		JSVGScrollPane scroller = new JSVGScrollPane(canvas);
+        // scroller.setScrollbarsAlwaysVisible(true);
 		canvas.setURI(url.toString());
 		
 		frame.getContentPane().add(scroller);

Modified: xmlgraphics/batik/branches/svg11/sources/org/apache/batik/bridge/svg12/SVGMultiImageElementBridge.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/branches/svg11/sources/org/apache/batik/bridge/svg12/SVGMultiImageElementBridge.java?rev=385230&r1=385229&r2=385230&view=diff
==============================================================================
--- xmlgraphics/batik/branches/svg11/sources/org/apache/batik/bridge/svg12/SVGMultiImageElementBridge.java (original)
+++ xmlgraphics/batik/branches/svg11/sources/org/apache/batik/bridge/svg12/SVGMultiImageElementBridge.java Sat Mar 11 17:21:10 2006
@@ -94,7 +94,7 @@
      * Returns a new instance of this bridge.
      */
     public Bridge getInstance() {
-        return new SVGImageElementBridge();
+        return new SVGMultiImageElementBridge();
     }
 
      /**

Modified: xmlgraphics/batik/branches/svg11/sources/org/apache/batik/ext/awt/image/GraphicsUtil.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/branches/svg11/sources/org/apache/batik/ext/awt/image/GraphicsUtil.java?rev=385230&r1=385229&r2=385230&view=diff
==============================================================================
--- xmlgraphics/batik/branches/svg11/sources/org/apache/batik/ext/awt/image/GraphicsUtil.java (original)
+++ xmlgraphics/batik/branches/svg11/sources/org/apache/batik/ext/awt/image/GraphicsUtil.java Sat Mar 11 17:21:10 2006
@@ -899,24 +899,28 @@
                 DataBufferByte retDBT = (DataBufferByte)retDB;
                 System.arraycopy(srcDBT.getData(b), offsets[b],
                                  retDBT.getData(b), offsets[b], len);
+                break;
             }
             case DataBuffer.TYPE_INT: {
                 DataBufferInt srcDBT = (DataBufferInt)srcDB;
                 DataBufferInt retDBT = (DataBufferInt)retDB;
                 System.arraycopy(srcDBT.getData(b), offsets[b],
                                  retDBT.getData(b), offsets[b], len);
+                break;
             }
             case DataBuffer.TYPE_SHORT: {
                 DataBufferShort srcDBT = (DataBufferShort)srcDB;
                 DataBufferShort retDBT = (DataBufferShort)retDB;
                 System.arraycopy(srcDBT.getData(b), offsets[b],
                                  retDBT.getData(b), offsets[b], len);
+                break;
             }
             case DataBuffer.TYPE_USHORT: {
                 DataBufferUShort srcDBT = (DataBufferUShort)srcDB;
                 DataBufferUShort retDBT = (DataBufferUShort)retDB;
                 System.arraycopy(srcDBT.getData(b), offsets[b],
                                  retDBT.getData(b), offsets[b], len);
+                break;
             }
             }
         }

Modified: xmlgraphics/batik/branches/svg11/sources/org/apache/batik/ext/awt/image/codec/tiff/TIFFImageEncoder.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/branches/svg11/sources/org/apache/batik/ext/awt/image/codec/tiff/TIFFImageEncoder.java?rev=385230&r1=385229&r2=385230&view=diff
==============================================================================
--- xmlgraphics/batik/branches/svg11/sources/org/apache/batik/ext/awt/image/codec/tiff/TIFFImageEncoder.java (original)
+++ xmlgraphics/batik/branches/svg11/sources/org/apache/batik/ext/awt/image/codec/tiff/TIFFImageEncoder.java Sat Mar 11 17:21:10 2006
@@ -832,6 +832,7 @@
                    ColorSpace.TYPE_RGB) {
                     jpegRGBToYCbCr = true;
                 }
+                break;
             case COMP_DEFLATE:
                 bufSize = (int)bytesPerTile;
                 deflater = new Deflater(encodeParam.getDeflateLevel());

Modified: xmlgraphics/batik/branches/svg11/sources/org/apache/batik/ext/awt/image/rendered/AbstractRed.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/branches/svg11/sources/org/apache/batik/ext/awt/image/rendered/AbstractRed.java?rev=385230&r1=385229&r2=385230&view=diff
==============================================================================
--- xmlgraphics/batik/branches/svg11/sources/org/apache/batik/ext/awt/image/rendered/AbstractRed.java (original)
+++ xmlgraphics/batik/branches/svg11/sources/org/apache/batik/ext/awt/image/rendered/AbstractRed.java Sat Mar 11 17:21:10 2006
@@ -96,8 +96,8 @@
      * @param props this initializes the props Map.  */
     protected AbstractRed(CachableRed src, Map props) {
         init(src, src.getBounds(), src.getColorModel(), src.getSampleModel(),
-             (src==null)?0:src.getTileGridXOffset(),
-             (src==null)?0:src.getTileGridYOffset(),
+             src.getTileGridXOffset(),
+             src.getTileGridYOffset(),
              props);
     }
 
@@ -111,17 +111,17 @@
      * @param props this initializes the props Map.  */
     protected AbstractRed(CachableRed src, Rectangle bounds, Map props) {
         init(src, bounds, src.getColorModel(), src.getSampleModel(),
-             (src==null)?0:src.getTileGridXOffset(),
-             (src==null)?0:src.getTileGridYOffset(),
+             src.getTileGridXOffset(),
+             src.getTileGridYOffset(),
              props);
     }
 
     /**
      * Construct an Abstract RenderedImage from a source image, bounds
      * rect and props (may be null).
-     * @param src will be the first (and only) member of the srcs
-     * Vector. Src is also used to set the ColorModel, SampleModel,
-     * and tile grid offsets.
+     * @param src if not null, will be the first (and only) member 
+     * of the srcs Vector. Also if it is not null it provides the
+     * tile grid offsets, otherwise they are zero.
      * @param bounds The bounds of this image.
      * @param cm The ColorModel to use. If null it will default to
      * ComponentColorModel.

Modified: xmlgraphics/batik/branches/svg11/sources/org/apache/batik/gvt/AbstractGraphicsNode.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/branches/svg11/sources/org/apache/batik/gvt/AbstractGraphicsNode.java?rev=385230&r1=385229&r2=385230&view=diff
==============================================================================
--- xmlgraphics/batik/branches/svg11/sources/org/apache/batik/gvt/AbstractGraphicsNode.java (original)
+++ xmlgraphics/batik/branches/svg11/sources/org/apache/batik/gvt/AbstractGraphicsNode.java Sat Mar 11 17:21:10 2006
@@ -548,8 +548,9 @@
                 org.apache.batik.ext.awt.image.GraphicsUtil.drawImage
                     (g2d, filteredImage);
 
+                g2d.dispose();
                 g2d = baseG2d;
-                baseG2d = null;
+                baseG2d = null;// Don't leave null we need g2d restored...
             }
         }
 

Modified: xmlgraphics/batik/branches/svg11/sources/org/apache/batik/swing/JSVGScrollPane.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/branches/svg11/sources/org/apache/batik/swing/JSVGScrollPane.java?rev=385230&r1=385229&r2=385230&view=diff
==============================================================================
--- xmlgraphics/batik/branches/svg11/sources/org/apache/batik/swing/JSVGScrollPane.java (original)
+++ xmlgraphics/batik/branches/svg11/sources/org/apache/batik/swing/JSVGScrollPane.java Sat Mar 11 17:21:10 2006
@@ -87,13 +87,14 @@
     protected JScrollBar vertical;
     protected JScrollBar horizontal;
     protected Component cornerBox;
+    protected boolean scrollbarsAlwaysVisible = false;
+
     protected SBListener hsbListener;
     protected SBListener vsbListener;
 	
     protected Rectangle2D viewBox = null; // SVG Root element viewbox 
     protected boolean ignoreScrollChange = false;
 	
-
     /**
      *	Creates a JSVGScrollPane, which will scroll an JSVGCanvas.
      *
@@ -105,7 +106,7 @@
         canvas.setRecenterOnResize(false);
 
         // create components
-        vertical = new JScrollBar(JScrollBar.VERTICAL, 0, 0, 0, 0);
+        vertical   = new JScrollBar(JScrollBar.VERTICAL,   0, 0, 0, 0);
         horizontal = new JScrollBar(JScrollBar.HORIZONTAL, 0, 0, 0, 0);
         
         // create a spacer next to the horizontal bar
@@ -123,9 +124,8 @@
         vsbListener = createScrollBarListener(true);
         vertical.getModel().addChangeListener(vsbListener);
 		
-        // by default, scrollbars are not visible
-        horizontalPanel.setVisible(false);
-        vertical       .setVisible(false);
+        // by default, scrollbars are not needed
+        updateScrollbarState(false, false);
 		
         // addMouseWheelListener(new WheelListener());
 		
@@ -147,6 +147,14 @@
         canvas.addUpdateManagerListener  (xlistener);
     }// JSVGScrollPane()
 
+    public boolean getScrollbarsAlwaysVisible() {
+        return scrollbarsAlwaysVisible;
+    }
+
+    public void setScrollbarsAlwaysVisible(boolean vis) {
+        scrollbarsAlwaysVisible = vis;
+        resizeScrollBars();
+    }
 
     /**
      * Scrollbar listener factory method so subclasses can
@@ -203,8 +211,7 @@
     public void reset()
     {
         viewBox = null;
-        horizontalPanel.setVisible(false);
-        vertical       .setVisible(false);
+        updateScrollbarState(false, false);
         revalidate();
     }// reset()
 	
@@ -364,9 +371,7 @@
         public void gvtBuildStarted  (GVTTreeBuilderEvent e) { 
             isReady = false;
             // Start by assuming we won't need them.
-            vertical       .setVisible(false);
-            horizontalPanel.setVisible(false);
-            cornerBox      .setVisible(false);
+            updateScrollbarState(false, false);
         }
         public void gvtBuildCompleted(GVTTreeBuilderEvent e)
         {
@@ -498,6 +503,7 @@
         // minVPW/H is the viewport W/H with scrollbars.
         int maxVPW = vpSize.width;  int minVPW = vpSize.width;
         int maxVPH = vpSize.height; int minVPH = vpSize.height;
+
         if (vertical.isVisible()) {
             maxVPW += vertical.getPreferredSize().width;
         } else {
@@ -514,30 +520,52 @@
         // System.err.println("MAX: [" + maxW + "," + maxH + "]");
 
         // Fist check if we need either scrollbar (given maxVPW/H).
-        boolean hVis = (maxW > maxVPW) || (tx != 0);
-        boolean vVis = (maxH > maxVPH) || (ty != 0);
-        // System.err.println("Vis flags: " + hVis +", " + vVis);
+        boolean hNeeded, vNeeded;
+        Dimension ret = new Dimension();
+
+        if (scrollbarsAlwaysVisible) {
+            hNeeded = (maxW > minVPW);
+            vNeeded = (maxH > minVPH);
+            ret.width  = minVPW;
+            ret.height = minVPH;
+        } else {
+            hNeeded = (maxW > maxVPW) || (tx != 0);
+            vNeeded = (maxH > maxVPH) || (ty != 0);
+            // System.err.println("Vis flags: " + hNeeded +", " + vNeeded);
         
-        // This makes sure that if one scrollbar is visible
-        // we 'recheck' the other scroll bar with the minVPW/H
-        // since making one visible makes the room for displaying content
-        // in the other dimension smaller. (This also makes the
-        // 'corner box' visible if both scroll bars are visible).
-        if      (vVis && !hVis) hVis = (maxW > minVPW);
-        else if (hVis && !vVis) vVis = (maxH > minVPH);
+            // This makes sure that if one scrollbar is visible
+            // we 'recheck' the other scroll bar with the minVPW/H
+            // since making one visible makes the room for displaying content
+            // in the other dimension smaller. (This also makes the
+            // 'corner box' visible if both scroll bars are visible).
+            if      (vNeeded && !hNeeded) hNeeded = (maxW > minVPW);
+            else if (hNeeded && !vNeeded) vNeeded = (maxH > minVPH);
 
-        Dimension ret = new Dimension();
-        ret.width  = (hVis)?minVPW:maxVPW;
-        ret.height = (vVis)?minVPH:maxVPH;
+            ret.width  = (hNeeded)?minVPW:maxVPW;
+            ret.height = (vNeeded)?minVPH:maxVPH;
+        }
 
-        vertical       .setVisible(vVis);
-        horizontalPanel.setVisible(hVis);
-        cornerBox      .setVisible(vVis && hVis);
+        updateScrollbarState(hNeeded, vNeeded);
 
         //  Return the new size of the canvas.
         return ret;
     }
 	
+    protected void updateScrollbarState(boolean hNeeded, boolean vNeeded) {
+        horizontal.setEnabled(hNeeded);
+        vertical  .setEnabled(vNeeded);
+
+        if (scrollbarsAlwaysVisible) {
+            horizontalPanel.setVisible(true);
+            vertical       .setVisible(true);
+            cornerBox      .setVisible(true);
+        } else {
+            horizontalPanel.setVisible(hNeeded);
+            vertical       .setVisible(vNeeded);
+            cornerBox      .setVisible(hNeeded&&vNeeded);
+        }
+    }
+
     /** 
      *	Derives the SVG Viewbox from the SVG root element. 
      *	Caches it. Assumes that it will not change.

Modified: xmlgraphics/batik/branches/svg11/sources/org/apache/batik/transcoder/SVGAbstractTranscoder.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/branches/svg11/sources/org/apache/batik/transcoder/SVGAbstractTranscoder.java?rev=385230&r1=385229&r2=385230&view=diff
==============================================================================
--- xmlgraphics/batik/branches/svg11/sources/org/apache/batik/transcoder/SVGAbstractTranscoder.java (original)
+++ xmlgraphics/batik/branches/svg11/sources/org/apache/batik/transcoder/SVGAbstractTranscoder.java Sat Mar 11 17:21:10 2006
@@ -211,6 +211,7 @@
                 se.dispatchSVGLoadEvent();
             }
         } catch (BridgeException ex) {
+            ex.printStackTrace();
             throw new TranscoderException(ex);
         }