KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jfree > chart > renderer > xy > HighLow


1 /* ===========================================================
2  * JFreeChart : a free chart library for the Java(tm) platform
3  * ===========================================================
4  *
5  * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors.
6  *
7  * Project Info: http://www.jfree.org/jfreechart/index.html
8  *
9  * This library is free software; you can redistribute it and/or modify it
10  * under the terms of the GNU Lesser General Public License as published by
11  * the Free Software Foundation; either version 2.1 of the License, or
12  * (at your option) any later version.
13  *
14  * This library is distributed in the hope that it will be useful, but
15  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
17  * License for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public License
20  * along with this library; if not, write to the Free Software Foundation,
21  * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
22  *
23  * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
24  * in the United States and other countries.]
25  *
26  * ------------
27  * HighLow.java
28  * ------------
29  * (C) Copyright 2000-2004, by Andrzej Porebski and Contributors.
30  *
31  * Original Author: Andrzej Porebski;
32  * Contributor(s): David Gilbert (for Object Refinery Limited);
33  *
34  * $Id: HighLow.java,v 1.2 2005/03/28 07:14:33 mungady Exp $
35  *
36  * Changes (from 18-Sep-2001)
37  * --------------------------
38  * 18-Sep-2001 : Added standard header and fixed DOS encoding problem (DG);
39  * 17-Nov-2001 : Renamed HiLow --> HighLow (DG);
40  * 06-Mar-2002 : Updated import statements (DG);
41  * 26-Sep-2002 : Fixed errors reported by Checkstyle (DG);
42  *
43  */

44
45 package org.jfree.chart.renderer.xy;
46
47 import java.awt.BasicStroke JavaDoc;
48 import java.awt.Color JavaDoc;
49 import java.awt.Paint JavaDoc;
50 import java.awt.Stroke JavaDoc;
51 import java.awt.geom.Line2D JavaDoc;
52 import java.awt.geom.Rectangle2D JavaDoc;
53
54 /**
55  * Represents one point in the high/low/open/close plot.
56  * <P>
57  * All the coordinates in this class are in Java2D space.
58  *
59  * @author Andrzej Porebski
60  */

61 public class HighLow {
62
63     /** Useful constant for open/close value types. */
64     public static final int OPEN = 0;
65
66     /** Useful constant for open/close value types. */
67     public static final int CLOSE = 1;
68
69     /** The position of the line. */
70     private Line2D JavaDoc line;
71
72     /** The bounds. */
73     private Rectangle2D JavaDoc bounds;
74
75     /** The open value. */
76     private double open;
77
78     /** The close value. */
79     private double close;
80
81     /** The pen/brush used to draw the lines. */
82     private Stroke JavaDoc stroke;
83
84     /** The color used to draw the lines. */
85     private Paint JavaDoc paint;
86
87     /** The tick size. */
88     private double tickSize = 2;
89
90     /**
91      * Constructs a high-low item, with default values for the open/close and
92      * colors.
93      *
94      * @param x the x value.
95      * @param high the high value.
96      * @param low the low value.
97      */

98     public HighLow(double x, double high, double low) {
99         this(x, high, low, high, low, new BasicStroke JavaDoc(), Color.blue);
100     }
101
102     /**
103      * Constructs a high-low item, with default values for the colors.
104      *
105      * @param x the x value.
106      * @param high the high value.
107      * @param low the low value.
108      * @param open the open value.
109      * @param close the close value.
110      */

111     public HighLow(double x, double high, double low, double open,
112                    double close) {
113         this(x, high, low, open, close, new BasicStroke JavaDoc(), Color.blue);
114     }
115
116     /**
117      * Constructs a high-low item.
118      *
119      * @param x the x value.
120      * @param high the high value.
121      * @param low the low value.
122      * @param open the open value.
123      * @param close the close value.
124      * @param stroke the stroke.
125      * @param paint the paint.
126      */

127     public HighLow(double x, double high, double low, double open, double close,
128                    Stroke JavaDoc stroke, Paint JavaDoc paint) {
129
130         this.line = new Line2D.Double JavaDoc(x, high, x, low);
131         this.bounds = new Rectangle2D.Double JavaDoc(x - this.tickSize, high,
132                                               2 * this.tickSize, low - high);
133         this.open = open;
134         this.close = close;
135         this.stroke = stroke;
136         this.paint = paint;
137
138     }
139
140     /**
141      * Sets the width of the open/close tick.
142      *
143      * @param newSize the new tick size.
144      */

145     public void setTickSize(double newSize) {
146         this.tickSize = newSize;
147     }
148
149     /**
150      * Returns the width of the open/close tick.
151      *
152      * @return The width of the open/close tick.
153      */

154     public double getTickSize() {
155         return this.tickSize;
156     }
157
158     /**
159      * Returns the line.
160      *
161      * @return The line.
162      */

163     public Line2D JavaDoc getLine() {
164         return this.line;
165     }
166
167     /**
168      * Returns the bounds.
169      *
170      * @return The bounds.
171      */

172     public Rectangle2D JavaDoc getBounds() {
173         return this.bounds;
174     }
175
176     /**
177      * Returns either OPEN or CLOSE value depending on the valueType.
178      *
179      * @param valueType which value <code>{OPEN|CLOSE}</code>.
180      *
181      * @return The open value for valueType <code>OPEN</code>, the close value
182      * otherwise.
183      */

184     public double getValue(int valueType) {
185         if (valueType == OPEN) {
186             return this.open;
187         }
188         else {
189             return this.close;
190         }
191     }
192
193     /**
194      * Sets either OPEN or Close value depending on the valueType.
195      *
196      * @param type the value type (OPEN or CLOSE).
197      * @param value the new value.
198      */

199     public void setValue(int type, double value) {
200         if (type == OPEN) {
201             this.open = value;
202         }
203         else {
204             this.close = value;
205         }
206     }
207
208     /**
209      * Returns the line for open tick.
210      *
211      * @return The line for open tick.
212      */

213     public Line2D JavaDoc getOpenTickLine() {
214         return getTickLine(
215             getLine().getX1(), getValue(OPEN), (-1) * getTickSize()
216         );
217     }
218
219     /**
220      * Returns the line for close tick
221      *
222      * @return The line for close tick.
223      */

224     public Line2D JavaDoc getCloseTickLine() {
225         return getTickLine(getLine().getX1(), getValue(CLOSE), getTickSize());
226     }
227
228     /**
229      * Helper to get the tickLine for the OPEN/CLOSE value.
230      *
231      * @param x the X coordinate of the start point of the tick line.
232      * @param value the OPEN or the CLOSE value.
233      * @param width the width of the tickLine.
234      *
235      * @return A tickLine for the OPEN or the CLOSE value.
236      */

237     private Line2D JavaDoc getTickLine(double x, double value, double width) {
238         return new Line2D.Double JavaDoc(x, value, x + width, value);
239     }
240
241     /**
242      * Returns the Stroke object used to draw the line.
243      *
244      * @return The Stroke object used to draw the line.
245      */

246     public Stroke JavaDoc getStroke() {
247         return this.stroke;
248     }
249
250     /**
251      * Returns the Paint object used to color the line.
252      *
253      * @return The Paint object used to color the line.
254      */

255     public Paint JavaDoc getPaint() {
256         return this.paint;
257     }
258
259 }
260
Popular Tags