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    }