    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    }