001/* ===========================================================
002 * Orson Charts : a 3D chart library for the Java(tm) platform
003 * ===========================================================
004 * 
005 * (C)opyright 2013-2022, by David Gilbert.  All rights reserved.
006 * 
007 * https://github.com/jfree/orson-charts
008 * 
009 * This program is free software: you can redistribute it and/or modify
010 * it under the terms of the GNU General Public License as published by
011 * the Free Software Foundation, either version 3 of the License, or
012 * (at your option) any later version.
013 *
014 * This program is distributed in the hope that it will be useful,
015 * but WITHOUT ANY WARRANTY; without even the implied warranty of
016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
017 * GNU General Public License for more details.
018 *
019 * You should have received a copy of the GNU General Public License
020 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
021 * 
022 * [Oracle and Java are registered trademarks of Oracle and/or its affiliates. 
023 * Other names may be trademarks of their respective owners.]
024 * 
025 * If you do not wish to be bound by the terms of the GPL, an alternative
026 * commercial license can be purchased.  For details, please see visit the
027 * Orson Charts home page:
028 * 
029 * http://www.object-refinery.com/orsoncharts/index.html
030 * 
031 */
032
033package org.jfree.chart3d.graphics2d;
034
035/**
036 * An enumeration of reference points within a rectangle.  These reference 
037 * points are used to place titles, legends and other labels.
038 * 
039 * @see Anchor2D
040 */
041public enum RefPt2D {
042
043    /** The top-left corner of a rectangle. */
044    TOP_LEFT,
045  
046    /** The middle of a rectangle at the top. */
047    TOP_CENTER,
048  
049    /** The top-right corner of a rectangle. */
050    TOP_RIGHT,
051  
052    /** The middle of a rectangle at the left side. */
053    CENTER_LEFT,
054  
055    /** The center of a rectangle. */
056    CENTER,
057  
058    /** The middle of a rectangle at the right side. */
059    CENTER_RIGHT,
060  
061    /** The bottom-left corner of a rectangle. */
062    BOTTOM_LEFT, 
063  
064    /** The middle of a rectangle at the bottom. */
065    BOTTOM_CENTER,
066  
067    /** The bottom-right corner of a rectangle. */
068    BOTTOM_RIGHT;
069    
070    /**
071     * Returns {@code true} if the reference point is at the left, and
072     * {@code false} otherwise.
073     * 
074     * @return A boolean. 
075     */
076    public boolean isLeft() {
077        return (this == TOP_LEFT || this == CENTER_LEFT || this == BOTTOM_LEFT);
078    }
079    
080    /**
081     * Returns {@code true} if the reference point is at the right, and
082     * {@code false} otherwise.
083     * 
084     * @return A boolean. 
085     */
086    public boolean isRight() {
087        return (this == TOP_RIGHT || this == CENTER_RIGHT 
088                || this == BOTTOM_RIGHT);        
089    }
090    
091    /**
092     * Returns {@code true} if the reference point is at the center 
093     * horizontally, and {@code false} otherwise.
094     * 
095     * @return A boolean. 
096     */
097    public boolean isHorizontalCenter() {
098        return (this == TOP_CENTER || this == CENTER 
099                || this == BOTTOM_CENTER);                
100    }
101    
102    /**
103     * Returns {@code true} if the reference point is at the top, and 
104     * {@code false} otherwise.
105     * 
106     * @return A boolean. 
107     */
108    public boolean isTop() {
109        return (this == TOP_LEFT || this == TOP_CENTER || this == TOP_RIGHT);
110    }
111
112    /**
113     * Returns {@code true} if the reference point is at the bottom, and 
114     * {@code false} otherwise.
115     * 
116     * @return A boolean. 
117     */
118    public boolean isBottom() {
119        return (this == BOTTOM_LEFT || this == BOTTOM_CENTER 
120                || this == BOTTOM_RIGHT);
121    }
122    
123    /**
124     * Returns {@code true} if the reference point is at the center 
125     * vertically, and {@code false} otherwise.
126     * 
127     * @return A boolean. 
128     */
129    public boolean isVerticalCenter() {
130        return (this == CENTER_LEFT || this == CENTER 
131                || this == CENTER_RIGHT);
132    }
133}