001 /* ===========================================================
002 * JFreeChart : a free chart library for the Java(tm) platform
003 * ===========================================================
004 *
005 * (C) Copyright 2000-2005, 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 * PiePlotState.java
029 * -----------------
030 * (C) Copyright 2004, by Object Refinery Limited.
031 *
032 * Original Author: David Gilbert (for Object Refinery Limited);
033 * Contributor(s): -;
034 *
035 * $Id: PiePlotState.java,v 1.3.2.1 2005/10/25 20:52:08 mungady Exp $
036 *
037 * Changes
038 * -------
039 * 06-Mar-2004 : Version 1 (DG);
040 *
041 */
042
043 package org.jfree.chart.plot;
044
045 import java.awt.geom.Rectangle2D;
046
047 import org.jfree.chart.renderer.RendererState;
048
049 /**
050 * A renderer state.
051 */
052 public class PiePlotState extends RendererState {
053
054 /** The number of passes required by the renderer. */
055 private int passesRequired;
056
057 /** The total of the values in the dataset. */
058 private double total;
059
060 /** The latest angle. */
061 private double latestAngle;
062
063 /** The exploded pie area. */
064 private Rectangle2D explodedPieArea;
065
066 /** The pie area. */
067 private Rectangle2D pieArea;
068
069 /** The center of the pie in Java 2D coordinates. */
070 private double pieCenterX;
071
072 /** The center of the pie in Java 2D coordinates. */
073 private double pieCenterY;
074
075 /** The vertical pie radius. */
076 private double pieHRadius;
077
078 /** The horizontal pie radius. */
079 private double pieWRadius;
080
081 /** The link area. */
082 private Rectangle2D linkArea;
083
084 /**
085 * Creates a new object for recording temporary state information for a
086 * renderer.
087 *
088 * @param info the plot rendering info.
089 */
090 public PiePlotState(PlotRenderingInfo info) {
091 super(info);
092 this.passesRequired = 1;
093 this.total = 0.0;
094 }
095
096 /**
097 * Returns the number of passes required by the renderer.
098 *
099 * @return The number of passes.
100 */
101 public int getPassesRequired() {
102 return this.passesRequired;
103 }
104
105 /**
106 * Sets the number of passes required by the renderer.
107 *
108 * @param passes the passes.
109 */
110 public void setPassesRequired(int passes) {
111 this.passesRequired = passes;
112 }
113
114 /**
115 * Returns the total of the values in the dataset.
116 *
117 * @return The total.
118 */
119 public double getTotal() {
120 return this.total;
121 }
122
123 /**
124 * Sets the total.
125 *
126 * @param total the total.
127 */
128 public void setTotal(double total) {
129 this.total = total;
130 }
131
132 /**
133 * Returns the latest angle.
134 *
135 * @return The latest angle.
136 */
137 public double getLatestAngle() {
138 return this.latestAngle;
139 }
140
141 /**
142 * Sets the latest angle.
143 *
144 * @param angle the angle.
145 */
146 public void setLatestAngle(double angle) {
147 this.latestAngle = angle;
148 }
149
150 /**
151 * Returns the pie area.
152 *
153 * @return The pie area.
154 */
155 public Rectangle2D getPieArea() {
156 return this.pieArea;
157 }
158
159 /**
160 * Sets the pie area.
161 *
162 * @param area the area.
163 */
164 public void setPieArea(Rectangle2D area) {
165 this.pieArea = area;
166 }
167
168 /**
169 * Returns the exploded pie area.
170 *
171 * @return The exploded pie area.
172 */
173 public Rectangle2D getExplodedPieArea() {
174 return this.explodedPieArea;
175 }
176
177 /**
178 * Sets the exploded pie area.
179 *
180 * @param area the area.
181 */
182 public void setExplodedPieArea(Rectangle2D area) {
183 this.explodedPieArea = area;
184 }
185
186 /**
187 * Returns the x-coordinate of the center of the pie chart.
188 *
189 * @return The x-coordinate (in Java2D space).
190 */
191 public double getPieCenterX() {
192 return this.pieCenterX;
193 }
194
195 /**
196 * Sets the x-coordinate of the center of the pie chart.
197 *
198 * @param x the x-coordinate (in Java2D space).
199 */
200 public void setPieCenterX(double x) {
201 this.pieCenterX = x;
202 }
203
204 /**
205 * Returns the y-coordinate (in Java2D space) of the center of the pie
206 * chart. For the {@link PiePlot3D} class, we derive this from the top of
207 * the pie.
208 *
209 * @return The y-coordinate (in Java2D space).
210 */
211 public double getPieCenterY() {
212 return this.pieCenterY;
213 }
214
215 /**
216 * Sets the y-coordinate of the center of the pie chart. This method is
217 * used by the plot and typically is not called directly by applications.
218 *
219 * @param y the y-coordinate (in Java2D space).
220 */
221 public void setPieCenterY(double y) {
222 this.pieCenterY = y;
223 }
224
225 /**
226 * Returns the link area. This defines the "dog-leg" point for the label
227 * linking lines.
228 *
229 * @return The link area.
230 */
231 public Rectangle2D getLinkArea() {
232 return this.linkArea;
233 }
234
235 /**
236 * Sets the label link area. This defines the "dog-leg" point for the
237 * label linking lines.
238 *
239 * @param area the area.
240 */
241 public void setLinkArea(Rectangle2D area) {
242 this.linkArea = area;
243 }
244
245 /**
246 * Returns the vertical pie radius.
247 *
248 * @return The radius.
249 */
250 public double getPieHRadius() {
251 return this.pieHRadius;
252 }
253
254 /**
255 * Sets the vertical pie radius.
256 *
257 * @param radius the radius.
258 */
259 public void setPieHRadius(double radius) {
260 this.pieHRadius = radius;
261 }
262
263 /**
264 * Returns the horizontal pie radius.
265 *
266 * @return The radius.
267 */
268 public double getPieWRadius() {
269 return this.pieWRadius;
270 }
271
272 /**
273 * Sets the horizontal pie radius.
274 *
275 * @param radius the radius.
276 */
277 public void setPieWRadius(double radius) {
278 this.pieWRadius = radius;
279 }
280
281 }