From: <mu...@us...> - 2008-08-15 08:48:09
|
Revision: 1370 http://jfreechart.svn.sourceforge.net/jfreechart/?rev=1370&view=rev Author: mungady Date: 2008-08-15 08:48:07 +0000 (Fri, 15 Aug 2008) Log Message: ----------- Synchronised with 1.0.x branch. Modified Paths: -------------- trunk/source/org/jfree/chart/ChartPanel.java Modified: trunk/source/org/jfree/chart/ChartPanel.java =================================================================== --- trunk/source/org/jfree/chart/ChartPanel.java 2008-08-15 08:41:52 UTC (rev 1369) +++ trunk/source/org/jfree/chart/ChartPanel.java 2008-08-15 08:48:07 UTC (rev 1370) @@ -135,6 +135,11 @@ * 24-Sep-2007 : Added zoomAroundAnchor flag, and handle clearing of chart * buffer (DG); * 25-Oct-2007 : Added default directory attribute (DG); + * 07-Nov-2007 : Fixed (rare) bug in refreshing off-screen image (DG); + * 07-May-2008 : Fixed bug in zooming that triggered zoom for a rectangle + * outside of the data area (DG); + * 08-May-2008 : Fixed serialization bug (DG); + * 15-Aug-2008 : Increased default maxDrawWidth/Height (DG); * */ @@ -163,6 +168,8 @@ import java.awt.print.PrinterJob; import java.io.File; import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; import java.io.Serializable; import java.util.EventListener; import java.util.ResourceBundle; @@ -221,10 +228,10 @@ public static final int DEFAULT_MINIMUM_DRAW_HEIGHT = 200; /** The default limit below which chart scaling kicks in. */ - public static final int DEFAULT_MAXIMUM_DRAW_WIDTH = 800; + public static final int DEFAULT_MAXIMUM_DRAW_WIDTH = 1024; /** The default limit below which chart scaling kicks in. */ - public static final int DEFAULT_MAXIMUM_DRAW_HEIGHT = 600; + public static final int DEFAULT_MAXIMUM_DRAW_HEIGHT = 768; /** The minimum size required to perform a zoom on a rectangle */ public static final int DEFAULT_ZOOM_TRIGGER_DISTANCE = 10; @@ -269,7 +276,7 @@ private JFreeChart chart; /** Storage for registered (chart) mouse listeners. */ - private EventListenerList chartMouseListeners; + private transient EventListenerList chartMouseListeners; /** A flag that controls whether or not the off-screen buffer is used. */ private boolean useBuffer; @@ -278,7 +285,7 @@ private boolean refreshBuffer; /** A buffer for the rendered chart. */ - private Image chartBuffer; + private transient Image chartBuffer; /** The height of the chart buffer. */ private int chartBufferHeight; @@ -338,7 +345,7 @@ * click). This is a point on the screen, not the chart (which may have * been scaled up or down to fit the panel). */ - private Point zoomPoint = null; + private Point2D zoomPoint = null; /** The zoom rectangle (selected by the user with the mouse). */ private transient Rectangle2D zoomRectangle = null; @@ -565,7 +572,7 @@ boolean zoom, boolean tooltips) { - this.setChart(chart); + setChart(chart); this.chartMouseListeners = new EventListenerList(); this.info = new ChartRenderingInfo(); setPreferredSize(new Dimension(width, height)); @@ -1169,16 +1176,16 @@ * Applies any scaling that is in effect for the chart drawing to the * given rectangle. * - * @param rect the rectangle. + * @param rect the rectangle (<code>null</code> not permitted). * * @return A new scaled rectangle. */ public Rectangle2D scale(Rectangle2D rect) { Insets insets = getInsets(); double x = rect.getX() * getScaleX() + insets.left; - double y = rect.getY() * this.getScaleY() + insets.top; - double w = rect.getWidth() * this.getScaleX(); - double h = rect.getHeight() * this.getScaleY(); + double y = rect.getY() * getScaleY() + insets.top; + double w = rect.getWidth() * getScaleX(); + double h = rect.getHeight() * getScaleY(); return new Rectangle2D.Double(x, y, w, h); } @@ -1308,6 +1315,8 @@ // do we need to redraw the buffer? if (this.refreshBuffer) { + this.refreshBuffer = false; // clear the flag + Rectangle2D bufferArea = new Rectangle2D.Double( 0, 0, this.chartBufferWidth, this.chartBufferHeight); @@ -1331,8 +1340,6 @@ this.info); } - this.refreshBuffer = false; - } // zap the buffer onto the panel... @@ -1531,12 +1538,10 @@ * * @return A point within the rectangle. */ - private Point getPointInRectangle(int x, int y, Rectangle2D area) { - x = (int) Math.max(Math.ceil(area.getMinX()), Math.min(x, - Math.floor(area.getMaxX()))); - y = (int) Math.max(Math.ceil(area.getMinY()), Math.min(y, - Math.floor(area.getMaxY()))); - return new Point(x, y); + private Point2D getPointInRectangle(int x, int y, Rectangle2D area) { + double xx = Math.max(area.getMinX(), Math.min(x, area.getMaxX())); + double yy = Math.max(area.getMinY(), Math.min(y, area.getMaxY())); + return new Point2D.Double(xx, yy); } /** @@ -1634,6 +1639,8 @@ Rectangle2D screenDataArea = getScreenDataArea( (int) this.zoomPoint.getX(), (int) this.zoomPoint.getY()); + double maxX = screenDataArea.getMaxX(); + double maxY = screenDataArea.getMaxY(); // for mouseReleased event, (horizontalZoom || verticalZoom) // will be true, so we can just test for either being false; // otherwise both are true @@ -1641,8 +1648,7 @@ x = this.zoomPoint.getX(); y = screenDataArea.getMinY(); w = Math.min(this.zoomRectangle.getWidth(), - screenDataArea.getMaxX() - - this.zoomPoint.getX()); + maxX - this.zoomPoint.getX()); h = screenDataArea.getHeight(); } else if (!hZoom) { @@ -1650,18 +1656,15 @@ y = this.zoomPoint.getY(); w = screenDataArea.getWidth(); h = Math.min(this.zoomRectangle.getHeight(), - screenDataArea.getMaxY() - - this.zoomPoint.getY()); + maxY - this.zoomPoint.getY()); } else { x = this.zoomPoint.getX(); y = this.zoomPoint.getY(); w = Math.min(this.zoomRectangle.getWidth(), - screenDataArea.getMaxX() - - this.zoomPoint.getX()); + maxX - this.zoomPoint.getX()); h = Math.min(this.zoomRectangle.getHeight(), - screenDataArea.getMaxY() - - this.zoomPoint.getY()); + maxY - this.zoomPoint.getY()); } Rectangle2D zoomArea = new Rectangle2D.Double(x, y, w, h); zoom(zoomArea); @@ -1690,7 +1693,7 @@ /** * Receives notification of mouse clicks on the panel. These are - * translated and passed on to any registered chart mouse click listeners. + * translated and passed on to any registered {@link ChartMouseListener}s. * * @param event Information about the mouse event. */ @@ -1923,7 +1926,8 @@ if (p instanceof Zoomable) { Zoomable z = (Zoomable) p; // we need to guard against this.zoomPoint being null - Point zp = (this.zoomPoint != null ? this.zoomPoint : new Point()); + Point2D zp = (this.zoomPoint != null + ? this.zoomPoint : new Point()); z.zoomDomainAxes(0.0, this.info.getPlotInfo(), zp); } } @@ -1936,7 +1940,8 @@ if (p instanceof Zoomable) { Zoomable z = (Zoomable) p; // we need to guard against this.zoomPoint being null - Point zp = (this.zoomPoint != null ? this.zoomPoint : new Point()); + Point2D zp = (this.zoomPoint != null + ? this.zoomPoint : new Point()); z.zoomRangeAxes(0.0, this.info.getPlotInfo(), zp); } } @@ -2523,8 +2528,8 @@ } - /* (non-Javadoc) - * @see javax.swing.JPanel#updateUI() + /** + * Updates the UI for a LookAndFeel change. */ public void updateUI() { // here we need to update the UI for the popup menu, if the panel @@ -2535,4 +2540,38 @@ super.updateUI(); } + /** + * Provides serialization support. + * + * @param stream the output stream. + * + * @throws IOException if there is an I/O error. + */ + private void writeObject(ObjectOutputStream stream) throws IOException { + stream.defaultWriteObject(); + } + + /** + * Provides serialization support. + * + * @param stream the input stream. + * + * @throws IOException if there is an I/O error. + * @throws ClassNotFoundException if there is a classpath problem. + */ + private void readObject(ObjectInputStream stream) + throws IOException, ClassNotFoundException { + stream.defaultReadObject(); + + // we create a new but empty chartMouseListeners list + this.chartMouseListeners = new EventListenerList(); + + // register as a listener with sub-components... + if (this.chart != null) { + this.chart.addChangeListener(this); + } + + } + + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mu...@us...> - 2008-09-18 01:34:54
|
Revision: 1607 http://jfreechart.svn.sourceforge.net/jfreechart/?rev=1607&view=rev Author: mungady Date: 2008-09-18 08:34:52 +0000 (Thu, 18 Sep 2008) Log Message: ----------- Synchronised with 1.0.x branch. Modified Paths: -------------- trunk/source/org/jfree/chart/ChartPanel.java Modified: trunk/source/org/jfree/chart/ChartPanel.java =================================================================== --- trunk/source/org/jfree/chart/ChartPanel.java 2008-09-18 08:31:39 UTC (rev 1606) +++ trunk/source/org/jfree/chart/ChartPanel.java 2008-09-18 08:34:52 UTC (rev 1607) @@ -140,6 +140,7 @@ * outside of the data area (DG); * 08-May-2008 : Fixed serialization bug (DG); * 15-Aug-2008 : Increased default maxDrawWidth/Height (DG); + * 18-Sep-2008 : Modified creation of chart buffer (DG); * */ @@ -150,9 +151,11 @@ import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; +import java.awt.GraphicsConfiguration; import java.awt.Image; import java.awt.Insets; import java.awt.Point; +import java.awt.Transparency; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; @@ -1302,12 +1305,10 @@ || (this.chartBufferHeight != available.getHeight())) { this.chartBufferWidth = (int) available.getWidth(); this.chartBufferHeight = (int) available.getHeight(); - this.chartBuffer = createImage(this.chartBufferWidth, - this.chartBufferHeight); -// GraphicsConfiguration gc = g2.getDeviceConfiguration(); -// this.chartBuffer = gc.createCompatibleImage( -// this.chartBufferWidth, this.chartBufferHeight, -// Transparency.TRANSLUCENT); + GraphicsConfiguration gc = g2.getDeviceConfiguration(); + this.chartBuffer = gc.createCompatibleImage( + this.chartBufferWidth, this.chartBufferHeight, + Transparency.TRANSLUCENT); this.refreshBuffer = true; clearBuffer = false; // buffer is new, no clearing required } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mu...@us...> - 2008-11-13 10:05:52
|
Revision: 1676 http://jfreechart.svn.sourceforge.net/jfreechart/?rev=1676&view=rev Author: mungady Date: 2008-11-13 10:05:49 +0000 (Thu, 13 Nov 2008) Log Message: ----------- Synchronised with 1.0.x branch. Modified Paths: -------------- trunk/source/org/jfree/chart/ChartPanel.java Modified: trunk/source/org/jfree/chart/ChartPanel.java =================================================================== --- trunk/source/org/jfree/chart/ChartPanel.java 2008-11-13 10:01:50 UTC (rev 1675) +++ trunk/source/org/jfree/chart/ChartPanel.java 2008-11-13 10:05:49 UTC (rev 1676) @@ -230,10 +230,10 @@ /** The default limit below which chart scaling kicks in. */ public static final int DEFAULT_MINIMUM_DRAW_HEIGHT = 200; - /** The default limit below which chart scaling kicks in. */ + /** The default limit above which chart scaling kicks in. */ public static final int DEFAULT_MAXIMUM_DRAW_WIDTH = 1024; - /** The default limit below which chart scaling kicks in. */ + /** The default limit above which chart scaling kicks in. */ public static final int DEFAULT_MAXIMUM_DRAW_HEIGHT = 768; /** The minimum size required to perform a zoom on a rectangle */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mu...@us...> - 2009-01-16 09:47:16
|
Revision: 1796 http://jfreechart.svn.sourceforge.net/jfreechart/?rev=1796&view=rev Author: mungady Date: 2009-01-16 09:47:11 +0000 (Fri, 16 Jan 2009) Log Message: ----------- Synchronised with 1.0.x branch. Modified Paths: -------------- trunk/source/org/jfree/chart/ChartPanel.java Modified: trunk/source/org/jfree/chart/ChartPanel.java =================================================================== --- trunk/source/org/jfree/chart/ChartPanel.java 2009-01-16 09:32:41 UTC (rev 1795) +++ trunk/source/org/jfree/chart/ChartPanel.java 2009-01-16 09:47:11 UTC (rev 1796) @@ -143,8 +143,9 @@ * 18-Sep-2008 : Modified creation of chart buffer (DG); * 18-Dec-2008 : Use ResourceBundleWrapper - see patch 1607918 by * Jess Thrysoee (DG); - * 13-Jan-2008 : Fixed zooming methods to trigger only one plot + * 13-Jan-2009 : Fixed zooming methods to trigger only one plot * change event (DG); + * 16-Jan-2009 : Use XOR for zoom rectangle only if useBuffer is false (DG); * */ @@ -158,6 +159,7 @@ import java.awt.GraphicsConfiguration; import java.awt.Image; import java.awt.Insets; +import java.awt.Paint; import java.awt.Point; import java.awt.Transparency; import java.awt.event.ActionEvent; @@ -205,6 +207,7 @@ import org.jfree.chart.plot.Zoomable; import org.jfree.chart.ui.ExtensionFileFilter; import org.jfree.chart.util.ResourceBundleWrapper; +import org.jfree.chart.util.SerialUtilities; /** * A Swing GUI component for displaying a {@link JFreeChart} object. @@ -221,7 +224,7 @@ private static final long serialVersionUID = 6046366297214274674L; /** Default setting for buffer usage. */ - public static final boolean DEFAULT_BUFFER_USED = false; + public static final boolean DEFAULT_BUFFER_USED = true; /** The default panel width. */ public static final int DEFAULT_WIDTH = 680; @@ -448,6 +451,20 @@ */ private boolean zoomAroundAnchor; + /** + * The paint used to draw the zoom rectangle outline. + * + * @since 1.0.13 + */ + private transient Paint zoomOutlinePaint; + + /** + * The zoom fill paint (should use transparency). + * + * @since 1.0.13 + */ + private transient Paint zoomFillPaint; + /** The resourceBundle for the localization. */ protected static ResourceBundle localizationResources = ResourceBundleWrapper.getBundle( @@ -616,6 +633,8 @@ this.ownToolTipReshowDelay = ttm.getReshowDelay(); this.zoomAroundAnchor = false; + this.zoomOutlinePaint = Color.blue; + this.zoomFillPaint = new Color(0, 0, 255, 63); } /** @@ -1110,6 +1129,65 @@ } /** + * Returns the zoom rectangle fill paint. + * + * @return The zoom rectangle fill paint (never <code>null</code>). + * + * @see #setZoomFillPaint(java.awt.Paint) + * @see #setFillZoomRectangle(boolean) + * + * @since 1.0.13 + */ + public Paint getZoomFillPaint() { + return this.zoomFillPaint; + } + + /** + * Sets the zoom rectangle fill paint. + * + * @param paint the paint (<code>null</code> not permitted). + * + * @see #getZoomFillPaint() + * @see #getFillZoomRectangle() + * + * @since 1.0.13 + */ + public void setZoomFillPaint(Paint paint) { + if (paint == null) { + throw new IllegalArgumentException("Null 'paint' argument."); + } + this.zoomFillPaint = paint; + } + + /** + * Returns the zoom rectangle outline paint. + * + * @return The zoom rectangle outline paint (never <code>null</code>). + * + * @see #setZoomOutlinePaint(java.awt.Paint) + * @see #setFillZoomRectangle(boolean) + * + * @since 1.0.13 + */ + public Paint getZoomOutlinePaint() { + return this.zoomOutlinePaint; + } + + /** + * Sets the zoom rectangle outline paint. + * + * @param paint the paint (<code>null</code> not permitted). + * + * @see #getZoomOutlinePaint() + * @see #getFillZoomRectangle() + * + * @since 1.0.13 + */ + public void setZoomOutlinePaint(Paint paint) { + this.zoomOutlinePaint = paint; + } + + /** * Switches the display of tooltips for the panel on or off. Note that * tooltips can only be displayed if the chart has been configured to * generate tooltip items. @@ -1369,8 +1447,10 @@ } - // Redraw the zoom rectangle (if present) - drawZoomRectangle(g2); + // redraw the zoom rectangle (if present) - if useBuffer is false, + // we use XOR so we can XOR the rectangle away again without redrawing + // the chart + drawZoomRectangle(g2, !this.useBuffer); g2.dispose(); @@ -1568,8 +1648,13 @@ } Graphics2D g2 = (Graphics2D) getGraphics(); - // Erase the previous zoom rectangle (if any)... - drawZoomRectangle(g2); + // erase the previous zoom rectangle (if any). We only need to do + // this is we are using XOR mode, which we do when we're not using + // the buffer (if there is a buffer, then at the end of this method we + // just trigger a repaint) + if (!this.useBuffer) { + drawZoomRectangle(g2, true); + } boolean hZoom = false; boolean vZoom = false; @@ -1605,8 +1690,14 @@ } // Draw the new zoom rectangle... - drawZoomRectangle(g2); - + if (this.useBuffer) { + repaint(); + } + else { + // with no buffer, we use XOR to draw the rectangle "over" the + // chart... + drawZoomRectangle(g2, true); + } g2.dispose(); } @@ -1680,9 +1771,14 @@ this.zoomRectangle = null; } else { - // Erase the zoom rectangle + // erase the zoom rectangle Graphics2D g2 = (Graphics2D) getGraphics(); - drawZoomRectangle(g2); + if (this.useBuffer) { + repaint(); + } + else { + drawZoomRectangle(g2, true); + } g2.dispose(); this.zoomPoint = null; this.zoomRectangle = null; @@ -2191,21 +2287,28 @@ * of the canvas. * * @param g2 the graphics device. + * @param xor use XOR for drawing? */ - private void drawZoomRectangle(Graphics2D g2) { + private void drawZoomRectangle(Graphics2D g2, boolean xor) { + if (this.zoomRectangle != null) { + if (xor) { // Set XOR mode to draw the zoom rectangle g2.setXORMode(Color.gray); - if (this.zoomRectangle != null) { + } if (this.fillZoomRectangle) { + g2.setPaint(this.zoomFillPaint); g2.fill(this.zoomRectangle); } else { + g2.setPaint(this.zoomOutlinePaint); g2.draw(this.zoomRectangle); } - } + if (xor) { // Reset to the default 'overwrite' mode g2.setPaintMode(); } + } + } /** * Draws a vertical line used to trace the mouse position to the horizontal @@ -2628,6 +2731,8 @@ */ private void writeObject(ObjectOutputStream stream) throws IOException { stream.defaultWriteObject(); + SerialUtilities.writePaint(this.zoomFillPaint, stream); + SerialUtilities.writePaint(this.zoomOutlinePaint, stream); } /** @@ -2641,6 +2746,8 @@ private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { stream.defaultReadObject(); + this.zoomFillPaint = SerialUtilities.readPaint(stream); + this.zoomOutlinePaint = SerialUtilities.readPaint(stream); // we create a new but empty chartMouseListeners list this.chartMouseListeners = new EventListenerList(); @@ -2652,5 +2759,4 @@ } - } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mu...@us...> - 2009-06-29 13:11:58
|
Revision: 2174 http://jfreechart.svn.sourceforge.net/jfreechart/?rev=2174&view=rev Author: mungady Date: 2009-06-29 12:47:29 +0000 (Mon, 29 Jun 2009) Log Message: ----------- Removed tracelines - use new Overlay mechanism instead. Modified Paths: -------------- trunk/source/org/jfree/chart/ChartPanel.java Modified: trunk/source/org/jfree/chart/ChartPanel.java =================================================================== --- trunk/source/org/jfree/chart/ChartPanel.java 2009-06-29 12:42:20 UTC (rev 2173) +++ trunk/source/org/jfree/chart/ChartPanel.java 2009-06-29 12:47:29 UTC (rev 2174) @@ -163,7 +163,8 @@ * 01-Jun-2009 : Check for null chart in mousePressed() method (DG); * 08-Jun-2009 : Fixed bug in setMouseWheelEnabled() (DG); * 29-Jun-2009 : Implemented new mouse handler mechanism (DG); - * + * 29-Jun-2009 : Removed tracelines - use Overlays instead (DG); + * */ package org.jfree.chart; @@ -193,7 +194,6 @@ import java.awt.event.MouseMotionListener; import java.awt.geom.AffineTransform; import java.awt.geom.GeneralPath; -import java.awt.geom.Line2D; import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; import java.awt.print.PageFormat; @@ -419,18 +419,6 @@ /** The minimum distance required to drag the mouse to trigger a zoom. */ private int zoomTriggerDistance; - /** A flag that controls whether or not horizontal tracing is enabled. */ - private boolean horizontalAxisTrace = false; - - /** A flag that controls whether or not vertical tracing is enabled. */ - private boolean verticalAxisTrace = false; - - /** A vertical trace line. */ - private transient Line2D verticalTraceLine; - - /** A horizontal trace line. */ - private transient Line2D horizontalTraceLine; - /** Menu item for zooming in on a chart (both axes). */ private JMenuItem zoomInBothMenuItem; @@ -1145,82 +1133,6 @@ } /** - * Returns the flag that controls whether or not a horizontal axis trace - * line is drawn over the plot area at the current mouse location. - * - * @return A boolean. - */ - public boolean getHorizontalAxisTrace() { - return this.horizontalAxisTrace; - } - - /** - * A flag that controls trace lines on the horizontal axis. - * - * @param flag <code>true</code> enables trace lines for the mouse - * pointer on the horizontal axis. - */ - public void setHorizontalAxisTrace(boolean flag) { - this.horizontalAxisTrace = flag; - } - - /** - * Returns the horizontal trace line. - * - * @return The horizontal trace line (possibly <code>null</code>). - */ - protected Line2D getHorizontalTraceLine() { - return this.horizontalTraceLine; - } - - /** - * Sets the horizontal trace line. - * - * @param line the line (<code>null</code> permitted). - */ - protected void setHorizontalTraceLine(Line2D line) { - this.horizontalTraceLine = line; - } - - /** - * Returns the flag that controls whether or not a vertical axis trace - * line is drawn over the plot area at the current mouse location. - * - * @return A boolean. - */ - public boolean getVerticalAxisTrace() { - return this.verticalAxisTrace; - } - - /** - * A flag that controls trace lines on the vertical axis. - * - * @param flag <code>true</code> enables trace lines for the mouse - * pointer on the vertical axis. - */ - public void setVerticalAxisTrace(boolean flag) { - this.verticalAxisTrace = flag; - } - - /** - * Returns the vertical trace line. - * - * @return The vertical trace line (possibly <code>null</code>). - */ - protected Line2D getVerticalTraceLine() { - return this.verticalTraceLine; - } - - /** - * Sets the vertical trace line. - * - * @param line the line (<code>null</code> permitted). - */ - protected void setVerticalTraceLine(Line2D line) { - this.verticalTraceLine = line; - } - - /** * Returns the default directory for the "save as" option. * * @return The default directory (possibly <code>null</code>). @@ -1872,8 +1784,6 @@ g2.dispose(); this.anchor = null; - this.verticalTraceLine = null; - this.horizontalTraceLine = null; } @@ -2184,14 +2094,6 @@ * @param e the event. */ public void mouseMoved(MouseEvent e) { - Graphics2D g2 = (Graphics2D) getGraphics(); - if (this.horizontalAxisTrace) { - drawHorizontalAxisTrace(g2, e.getX()); - } - if (this.verticalAxisTrace) { - drawVerticalAxisTrace(g2, e.getY()); - } - g2.dispose(); Object[] listeners = this.chartMouseListeners.getListeners( ChartMouseListener.class); @@ -2688,67 +2590,6 @@ } /** - * Draws a vertical line used to trace the mouse position to the horizontal - * axis. - * - * @param g2 the graphics device. - * @param x the x-coordinate of the trace line. - */ - private void drawHorizontalAxisTrace(Graphics2D g2, int x) { - - Rectangle2D dataArea = getScreenDataArea(); - - g2.setXORMode(Color.orange); - if (((int) dataArea.getMinX() < x) && (x < (int) dataArea.getMaxX())) { - - if (this.verticalTraceLine != null) { - g2.draw(this.verticalTraceLine); - this.verticalTraceLine.setLine(x, (int) dataArea.getMinY(), x, - (int) dataArea.getMaxY()); - } - else { - this.verticalTraceLine = new Line2D.Float(x, - (int) dataArea.getMinY(), x, (int) dataArea.getMaxY()); - } - g2.draw(this.verticalTraceLine); - } - - // Reset to the default 'overwrite' mode - g2.setPaintMode(); - } - - /** - * Draws a horizontal line used to trace the mouse position to the vertical - * axis. - * - * @param g2 the graphics device. - * @param y the y-coordinate of the trace line. - */ - private void drawVerticalAxisTrace(Graphics2D g2, int y) { - - Rectangle2D dataArea = getScreenDataArea(); - - g2.setXORMode(Color.orange); - if (((int) dataArea.getMinY() < y) && (y < (int) dataArea.getMaxY())) { - - if (this.horizontalTraceLine != null) { - g2.draw(this.horizontalTraceLine); - this.horizontalTraceLine.setLine((int) dataArea.getMinX(), y, - (int) dataArea.getMaxX(), y); - } - else { - this.horizontalTraceLine = new Line2D.Float( - (int) dataArea.getMinX(), y, (int) dataArea.getMaxX(), - y); - } - g2.draw(this.horizontalTraceLine); - } - - // Reset to the default 'overwrite' mode - g2.setPaintMode(); - } - - /** * Displays a dialog that allows the user to edit the properties for the * current chart. * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mu...@us...> - 2009-07-06 20:15:13
|
Revision: 2197 http://jfreechart.svn.sourceforge.net/jfreechart/?rev=2197&view=rev Author: mungady Date: 2009-07-06 20:15:10 +0000 (Mon, 06 Jul 2009) Log Message: ----------- Clear off screen buffer to fully transparent. Modified Paths: -------------- trunk/source/org/jfree/chart/ChartPanel.java Modified: trunk/source/org/jfree/chart/ChartPanel.java =================================================================== --- trunk/source/org/jfree/chart/ChartPanel.java 2009-07-06 20:09:51 UTC (rev 2196) +++ trunk/source/org/jfree/chart/ChartPanel.java 2009-07-06 20:15:10 UTC (rev 2197) @@ -164,14 +164,17 @@ * 08-Jun-2009 : Fixed bug in setMouseWheelEnabled() (DG); * 29-Jun-2009 : Implemented new mouse handler mechanism (DG); * 29-Jun-2009 : Removed tracelines - use Overlays instead (DG); + * 06-Jul-2009 : Clear off-screen buffer to fully transparent (DG); * */ package org.jfree.chart; import java.awt.AWTEvent; +import java.awt.AlphaComposite; import java.awt.BasicStroke; import java.awt.Color; +import java.awt.Composite; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; @@ -1665,12 +1668,17 @@ Rectangle2D bufferArea = new Rectangle2D.Double( 0, 0, this.chartBufferWidth, this.chartBufferHeight); + // make the background of the buffer clear and transparent Graphics2D bufferG2 = (Graphics2D) this.chartBuffer.getGraphics(); + Composite savedComposite = bufferG2.getComposite(); + bufferG2.setComposite(AlphaComposite.getInstance( + AlphaComposite.CLEAR, 0.0f)); Rectangle r = new Rectangle(0, 0, this.chartBufferWidth, this.chartBufferHeight); - bufferG2.setPaint(getBackground()); bufferG2.fill(r); + bufferG2.setComposite(savedComposite); + if (scale) { AffineTransform saved = bufferG2.getTransform(); AffineTransform st = AffineTransform.getScaleInstance( This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |