001 /* ===========================================================
002 * JFreeChart : a free chart library for the Java(tm) platform
003 * ===========================================================
004 *
005 * (C) Copyright 2000-2006, by Object Refinery Limited and Contributors.
006 *
007 * Project Info: http://www.jfree.org/jfreechart/index.html
008 *
009 * This library is free software; you can redistribute it and/or modify it
010 * under the terms of the GNU Lesser General Public License as published by
011 * the Free Software Foundation; either version 2.1 of the License, or
012 * (at your option) any later version.
013 *
014 * This library is distributed in the hope that it will be useful, but
015 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
016 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
017 * License for more details.
018 *
019 * You should have received a copy of the GNU Lesser General Public
020 * License along with this library; if not, write to the Free Software
021 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
022 * USA.
023 *
024 * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
025 * in the United States and other countries.]
026 *
027 * -------------
028 * Zoomable.java
029 * -------------
030 *
031 * (C) Copyright 2004, 2006, by Object Refinery Limited and Contributors.
032 *
033 * Original Author: David Gilbert (for Object Refinery Limited);
034 * Contributor(s): Rune Fauske;
035 *
036 * Changes
037 * -------
038 * 12-Nov-2004 : Version 1 (DG);
039 * 26-Jan-2004 : Added getOrientation() method (DG);
040 * 04-Sep-2006 : Added credit for Rune Fauske, see patch 1050659 (DG);
041 *
042 */
043
044 package org.jfree.chart.plot;
045
046 import java.awt.geom.Point2D;
047
048 import org.jfree.chart.ChartPanel;
049
050 /**
051 * A plot that is zoomable must implement this interface to provide a
052 * mechanism for the {@link ChartPanel} to control the zooming.
053 */
054 public interface Zoomable {
055
056 /**
057 * Returns <code>true</code> if the plot's domain is zoomable, and
058 * <code>false</code> otherwise.
059 *
060 * @return A boolean.
061 */
062 public boolean isDomainZoomable();
063
064 /**
065 * Returns <code>true</code> if the plot's range is zoomable, and
066 * <code>false</code> otherwise.
067 *
068 * @return A boolean.
069 */
070 public boolean isRangeZoomable();
071
072 /**
073 * Returns the orientation of the plot.
074 *
075 * @return The orientation.
076 */
077 public PlotOrientation getOrientation();
078
079 /**
080 * Multiplies the range on the domain axis/axes by the specified factor.
081 *
082 * @param factor the zoom factor.
083 * @param state the plot state.
084 * @param source the source point (in Java2D coordinates).
085 */
086 public void zoomDomainAxes(double factor, PlotRenderingInfo state,
087 Point2D source);
088
089 /**
090 * Zooms in on the domain axes.
091 *
092 * @param lowerPercent the new lower bound.
093 * @param upperPercent the new upper bound.
094 * @param state the plot state.
095 * @param source the source point (in Java2D coordinates).
096 */
097 public void zoomDomainAxes(double lowerPercent, double upperPercent,
098 PlotRenderingInfo state, Point2D source);
099
100 /**
101 * Multiplies the range on the range axis/axes by the specified factor.
102 *
103 * @param factor the zoom factor.
104 * @param state the plot state.
105 * @param source the source point (in Java2D coordinates).
106 */
107 public void zoomRangeAxes(double factor, PlotRenderingInfo state,
108 Point2D source);
109
110 /**
111 * Zooms in on the range axes.
112 *
113 * @param lowerPercent the new lower bound.
114 * @param upperPercent the new upper bound.
115 * @param state the plot state.
116 * @param source the source point (in Java2D coordinates).
117 */
118 public void zoomRangeAxes(double lowerPercent, double upperPercent,
119 PlotRenderingInfo state, Point2D source);
120
121 }