2 * Copyright (c) 2009 The openGion Project.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 * either express or implied. See the License for the specific language
14 * governing permissions and limitations under the License.
16 package org.opengion.hayabusa.io;
18 import org.opengion.fukurou.system.OgRuntimeException ; // 6.4.2.0 (2016/01/29)
19 import java.awt.Color;
22 * ValueMarkOverColors は、ChartDataset で設定される ValueMark用の色管理クラスです。
23 * JFreeChart の個別属性を管理しているデータ管理クラスです。
24 * このクラスは、JFreeChart に特化した、値の判定ロジックのみを提供していますので、
27 * マーカーラインの値と、超過時のShape色を配列で指定します。
29 * マーカーラインを使用する場合に、そのラインを超えない色、超える色を指定します。
30 * この色の指定は、マーカーラインの色やマーカーラインの設定値の個数+1に
31 * なります。つまり、色1:設定値1:色2:設定値2:色3 となります。
32 * 色1は、設定値1より小さい場合に使用され、色2は、設定値1より大きく、
33 * 設定値2より小さい場合、色3は、設定値2より大きい場合になります。
35 * Shape色は、java.awt.Color クラスのオブジェクトで指定します。
36 * BLACK , BLUE , CYAN , DARK_GRAY , GRAY , GREEN , LIGHT_GRAY ,
37 * MAGENTA , ORANGE , PINK , RED , WHITE , YELLOW , (PURPLE) が指定できます。
38 * また、#XXXXXX形式の16bitRGB表記 でも指定可能です。
39 * values と、あわせて設定する必要があります。
40 * どちらかが、指定されていない場合は、エラーになります。
42 * @og.rev 4.1.0.1 (2008/01/19) ChartDataset クラスから独立
44 * @version 0.9.0 2007/06/21
45 * @author Kazuhiko Hasegawa
48 class ValueMarkOverColors {
49 private final double[] markValues ; // doubleの配列
50 private final Color[] markOverColors; // マーカーラインの超過色
51 private final Color markColor; // 動的マーカーライン色
52 private final int dynamicOCadrs; // 動的マーカーライン色
57 * マーカーラインの値と、超過時のShape色を配列で指定します。
59 * マーカーラインを使用する場合に、そのラインを超えない色、超える色を指定します。
60 * この色の指定は、マーカーラインの色やマーカーラインの設定値の個数+1に
61 * なります。つまり、色1:設定値1:色2:設定値2:色3 となります。
62 * 色1は、設定値1より小さい場合に使用され、色2は、設定値1より大きく、
63 * 設定値2より小さい場合、色3は、設定値2より大きい場合になります。
65 * Shape色は、java.awt.Color クラスのオブジェクトで指定します。
66 * BLACK , BLUE , CYAN , DARK_GRAY , GRAY , GREEN , LIGHT_GRAY ,
67 * MAGENTA , ORANGE , PINK , RED , WHITE , YELLOW , (PURPLE) が指定できます。
68 * また、#XXXXXX形式の16bitRGB表記 でも指定可能です。
69 * values と、あわせて設定する必要があります。
70 * どちらかが、指定されていない場合は、エラーになります。
72 * @og.rev 4.1.0.1 (2008/01/19) 新規追加
74 * @param values マーカーラインの値配列
75 * @param overColors マーカーラインの超過時のShape色配列
76 * @param dynMarkColor 動的なマーカーラインを使用時の動的ライン色
77 * @param dynOCadrs 動的なマーカーラインの基準番号
79 public ValueMarkOverColors( final double[] values ,
80 final Color[] overColors ,
81 final Color dynMarkColor ,
82 final int dynOCadrs ) {
84 markOverColors = overColors;
85 markColor = dynMarkColor;
86 dynamicOCadrs = dynOCadrs;
88 if( markValues == null || markOverColors == null ||
89 markValues.length + 1 != overColors.length ||
90 markValues.length < 1 ) {
92 final String errMsg = "ValueMarkOverColors が構築できません。\n"
93 + " markValues が null か、markOverColors が null か、"
94 + " markValuesの個数+1が、overColorsの個数に合致しません。" ;
95 System.out.println( errMsg );
96 throw new OgRuntimeException( errMsg );
101 * 動的マーカーラインのライン色を返します。
103 * 動的マーカーラインのライン色は、ChartDataset クラスの markValues
104 * 属性で、"G" という文字列を設定されたアドレスが、使用されます。
106 * @og.rev 4.1.0.1 (2008/01/19) 新規追加
108 * @return 動的マーカーラインのライン色
110 protected Color getDynamicColor() {
115 * コンストラクタで指定された設定値配列と比べて、合致するShape色を返します。
116 * 動的なオーバーカラー(useDynamicOverColor)を使用しない場合のメソッドです。
118 * @og.rev 4.1.0.1 (2008/01/19) 新規追加
120 * @param value double マーカーラインと比較する値
122 * @return 指定の値に対する Shape色
124 protected Color getColor( final double value ) {
125 return getColor( value,markValues[0] );
129 * コンストラクタで指定された設定値配列と比べて、合致するShape色を返します。
130 * 動的なオーバーカラー(useDynamicOverColor)を使用する場合のメソッドです。
131 * ここでは、動的閾値の比較対照を、引数で指定します。
133 * @og.rev 4.1.1.0 (2008/02/04) 新規追加
135 * @param value double マーカーラインと比較する値
136 * @param minNum Number 最下位の動的マーカーライン値
138 * @return 指定の値に対する Shape色
140 protected Color getColor( final double value, final Number minNum ) {
143 double minVal = 0.0 ;
144 if( minNum != null ) {
145 minVal = minNum.doubleValue();
147 rtnclr = getColor( value,minVal );
153 * コンストラクタで指定された設定値配列と比べて、合致するShape色を返します。
154 * 動的なオーバーカラー(useDynamicOverColor)を使用する場合のメソッドです。
155 * ここでは、動的閾値の比較対照を、引数で指定します。
158 * ・閾値[0]の値と比較して、下の場合は、色[0]を返す。(確定)
159 * ・閾値[N-1]の値と比較して、上の場合は、色[N]を返す。(確定)
160 * ・閾値[N-2]の値と比較して、上の場合は、色[N-1]を返す。(確定)
161 * ・閾値[1]の値と比較して、上の場合は、色[2]を返す。(確定)
162 * ・閾値[0]の値と比較して、上の場合は、色[1]を返す。(確定)
163 * 閾値のアドレスが、動的オーバーカラー(dynamicOCadrs)の場合は、
164 * 引数の markValue が、動的閾値として、閾値配列の代わりに使用されます。
166 * @og.rev 4.1.1.0 (2008/02/04) 新規追加
167 * @og.rev 4.1.1.0 (2008/02/21) dynamicOCadrs を考慮した処理を行う
169 * @param value double マーカーラインと比較する値
170 * @param markValue double マーカーライン値
172 * @return 指定の値に対する Shape色
174 private Color getColor( final double value,final double markValue ) {
177 if( dynamicOCadrs >= 0 ) {
178 markValues[dynamicOCadrs] = markValue ;
181 // 閾値[0]の値と比較して、下の場合は、色[0]を返す
182 if( value < markValues[0] ) {
183 rtnclr = markOverColors[0];
186 // 閾値[N-1]の値と比較して、上の場合は、色[N]を返す。(確定)
187 for( int i=markValues.length-1; i>=0; i-- ) {
188 if( value >= markValues[i] ) {
189 rtnclr = markOverColors[i+1];