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 03:11:53 UTC
svn commit: r385233 - in /xmlgraphics/batik/trunk: contrib/scroll/
sources/org/apache/batik/ext/awt/image/
sources/org/apache/batik/ext/awt/image/codec/tiff/
sources/org/apache/batik/ext/awt/image/rendered/
sources/org/apache/batik/gvt/ sources/org/apa...
Author: deweese
Date: Sat Mar 11 18:11:48 2006
New Revision: 385233
URL: http://svn.apache.org/viewcvs?rev=385233&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/trunk/contrib/scroll/ScrollExample.java
xmlgraphics/batik/trunk/sources/org/apache/batik/ext/awt/image/GraphicsUtil.java
xmlgraphics/batik/trunk/sources/org/apache/batik/ext/awt/image/codec/tiff/TIFFImageEncoder.java
xmlgraphics/batik/trunk/sources/org/apache/batik/ext/awt/image/rendered/AbstractRed.java
xmlgraphics/batik/trunk/sources/org/apache/batik/gvt/AbstractGraphicsNode.java
xmlgraphics/batik/trunk/sources/org/apache/batik/swing/JSVGScrollPane.java
xmlgraphics/batik/trunk/sources/org/apache/batik/transcoder/SVGAbstractTranscoder.java
Modified: xmlgraphics/batik/trunk/contrib/scroll/ScrollExample.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/contrib/scroll/ScrollExample.java?rev=385233&r1=385232&r2=385233&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/contrib/scroll/ScrollExample.java (original)
+++ xmlgraphics/batik/trunk/contrib/scroll/ScrollExample.java Sat Mar 11 18:11:48 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/trunk/sources/org/apache/batik/ext/awt/image/GraphicsUtil.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/sources/org/apache/batik/ext/awt/image/GraphicsUtil.java?rev=385233&r1=385232&r2=385233&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/ext/awt/image/GraphicsUtil.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/ext/awt/image/GraphicsUtil.java Sat Mar 11 18:11:48 2006
@@ -898,24 +898,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/trunk/sources/org/apache/batik/ext/awt/image/codec/tiff/TIFFImageEncoder.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/sources/org/apache/batik/ext/awt/image/codec/tiff/TIFFImageEncoder.java?rev=385233&r1=385232&r2=385233&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/ext/awt/image/codec/tiff/TIFFImageEncoder.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/ext/awt/image/codec/tiff/TIFFImageEncoder.java Sat Mar 11 18:11:48 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/trunk/sources/org/apache/batik/ext/awt/image/rendered/AbstractRed.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/sources/org/apache/batik/ext/awt/image/rendered/AbstractRed.java?rev=385233&r1=385232&r2=385233&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/ext/awt/image/rendered/AbstractRed.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/ext/awt/image/rendered/AbstractRed.java Sat Mar 11 18:11:48 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/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=385233&r1=385232&r2=385233&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/gvt/AbstractGraphicsNode.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/gvt/AbstractGraphicsNode.java Sat Mar 11 18:11:48 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/trunk/sources/org/apache/batik/swing/JSVGScrollPane.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/sources/org/apache/batik/swing/JSVGScrollPane.java?rev=385233&r1=385232&r2=385233&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/swing/JSVGScrollPane.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/swing/JSVGScrollPane.java Sat Mar 11 18:11:48 2006
@@ -88,13 +88,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.
*
@@ -106,7 +107,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
@@ -124,9 +125,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());
@@ -148,6 +148,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
@@ -206,8 +214,7 @@
public void reset()
{
viewBox = null;
- horizontalPanel.setVisible(false);
- vertical .setVisible(false);
+ updateScrollbarState(false, false);
revalidate();
}// reset()
@@ -367,9 +374,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)
{
@@ -501,6 +506,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 {
@@ -517,30 +523,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/trunk/sources/org/apache/batik/transcoder/SVGAbstractTranscoder.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/sources/org/apache/batik/transcoder/SVGAbstractTranscoder.java?rev=385233&r1=385232&r2=385233&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/transcoder/SVGAbstractTranscoder.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/transcoder/SVGAbstractTranscoder.java Sat Mar 11 18:11:48 2006
@@ -213,6 +213,7 @@
se.dispatchSVGLoadEvent();
}
} catch (BridgeException ex) {
+ ex.printStackTrace();
throw new TranscoderException(ex);
}