Index: /branches/feature-module-update/data/class/graph/SC_GraphBar.php
===================================================================
--- /branches/feature-module-update/data/class/graph/SC_GraphBar.php	(revision 15597)
+++ /branches/feature-module-update/data/class/graph/SC_GraphBar.php	(revision 15599)
@@ -6,78 +6,78 @@
  */
 $SC_GRAPHBAR_DIR = realpath(dirname( __FILE__));
-require_once($SC_GRAPHBAR_DIR . "/SC_GraphLine.php");	
+require_once($SC_GRAPHBAR_DIR . "/SC_GraphLine.php");
 
 // 棒グラフ生成クラス
 class SC_GraphBar extends SC_GraphLine{
     // コンストラクタ
-	function SC_GraphLine(
-		$bgw = BG_WIDTH, $bgh = BG_HEIGHT, $left = LINE_LEFT, $top = LINE_TOP,
-		$area_width = LINE_AREA_WIDTH, $area_height = LINE_AREA_HEIGHT) {
-		parent::SC_GraphLine($bgw, $bgh, $left, $top, $area_width, $area_height);	
-	}
-	
-	// グラフの描画
-	function drawGraph() {
-		$this->drawYLine();
-		$this->drawXLine(true);
-		
-		// 棒グラフの描画
-		for($i = 0; $i < $this->line_max; $i++) {
-			$this->drawBar($i);
-		}
-		
-		// ラベルの描画
-		for($i = 0; $i < $this->line_max; $i++) {
-			$this->drawLabel($i);
-		}
-		
-		// 凡例の描画
-		$this->drawLegend();	
-	}
-	
-	// 棒グラフの描画
-	function drawBar($line_no) {
-		$arrPointList = $this->arrPointList[$line_no];
-		// データ数を数える
-		$count = count($arrPointList);
-		// 半目盛りの幅を求める
-		$half_scale = intval($this->area_width / ($count + 1) / 2);
-		// 目盛りの幅を求める
-		$scale_width = intval($this->area_width / ($count + 1));
-		// 棒グラフのサイズを求める
-		$bar_width = intval(($scale_width - (BAR_PAD * 2)) / $this->line_max);
-		// 色数の取得
-		$c_max = count($this->arrColor);
-		for($i = 0; $i < $count; $i++) {
-			$left = $arrPointList[$i][0] - $half_scale + BAR_PAD + ($bar_width * $line_no);
-			$top = $arrPointList[$i][1];
-			$right = $left + $bar_width;
-			$bottom = $this->top + $this->area_height;
-			
-			// 影の描画
-			if($this->shade_on) {
-				imagefilledrectangle($this->image, $left + 2, $top + 2, $right + 2, $bottom, $this->shade_color);
-			}
-			//imagefilledrectangle($this->image, $left, $top, $right, $bottom, $this->arrColor[($i % $c_max)]);
-			imagefilledrectangle($this->image, $left, $top, $right, $bottom, $this->arrColor[$line_no]);			
-			imagerectangle($this->image, $left, $top, $right, $bottom, $this->flame_color);					
-		}
-	}
-	
-	// ラベルを描画する
-	function drawLabel($line_no) {
-		$arrData = $this->arrDataList[$line_no];
-		$arrPointList = $this->arrPointList[$line_no];
-		$count = count($arrPointList);
-		for($i = 0; $i < $count; $i++) {
-			$x = $arrPointList[$i][0];
-			$y = $arrPointList[$i][1];
-			$text_width = $this->getTextWidth(number_format($arrData[$i]), FONT_SIZE);
-			$y_pos = $y - FONT_SIZE - 5;
-			$x_pos = $x - $text_width / 2;
-			$this->setText(FONT_SIZE, $x_pos, $y_pos, number_format($arrData[$i]));
-		}
-	}
-	
+    function SC_GraphLine(
+        $bgw = BG_WIDTH, $bgh = BG_HEIGHT, $left = LINE_LEFT, $top = LINE_TOP,
+        $area_width = LINE_AREA_WIDTH, $area_height = LINE_AREA_HEIGHT) {
+        parent::SC_GraphLine($bgw, $bgh, $left, $top, $area_width, $area_height);
+    }
+
+    // グラフの描画
+    function drawGraph() {
+        $this->drawYLine();
+        $this->drawXLine(true);
+
+        // 棒グラフの描画
+        for($i = 0; $i < $this->line_max; $i++) {
+            $this->drawBar($i);
+        }
+
+        // ラベルの描画
+        for($i = 0; $i < $this->line_max; $i++) {
+            $this->drawLabel($i);
+        }
+
+        // 凡例の描画
+        $this->drawLegend();
+    }
+
+    // 棒グラフの描画
+    function drawBar($line_no) {
+        $arrPointList = $this->arrPointList[$line_no];
+        // データ数を数える
+        $count = count($arrPointList);
+        // 半目盛りの幅を求める
+        $half_scale = intval($this->area_width / ($count + 1) / 2);
+        // 目盛りの幅を求める
+        $scale_width = intval($this->area_width / ($count + 1));
+        // 棒グラフのサイズを求める
+        $bar_width = intval(($scale_width - (BAR_PAD * 2)) / $this->line_max);
+        // 色数の取得
+        $c_max = count($this->arrColor);
+        for($i = 0; $i < $count; $i++) {
+            $left = $arrPointList[$i][0] - $half_scale + BAR_PAD + ($bar_width * $line_no);
+            $top = $arrPointList[$i][1];
+            $right = $left + $bar_width;
+            $bottom = $this->top + $this->area_height;
+
+            // 影の描画
+            if($this->shade_on) {
+                imagefilledrectangle($this->image, $left + 2, $top + 2, $right + 2, $bottom, $this->shade_color);
+            }
+            //imagefilledrectangle($this->image, $left, $top, $right, $bottom, $this->arrColor[($i % $c_max)]);
+            imagefilledrectangle($this->image, $left, $top, $right, $bottom, $this->arrColor[$line_no]);
+            imagerectangle($this->image, $left, $top, $right, $bottom, $this->flame_color);
+        }
+    }
+
+    // ラベルを描画する
+    function drawLabel($line_no) {
+        $arrData = $this->arrDataList[$line_no];
+        $arrPointList = $this->arrPointList[$line_no];
+        $count = count($arrPointList);
+        for($i = 0; $i < $count; $i++) {
+            $x = $arrPointList[$i][0];
+            $y = $arrPointList[$i][1];
+            $text_width = $this->getTextWidth(number_format($arrData[$i]), FONT_SIZE);
+            $y_pos = $y - FONT_SIZE - 5;
+            $x_pos = $x - $text_width / 2;
+            $this->setText(FONT_SIZE, $x_pos, $y_pos, number_format($arrData[$i]));
+        }
+    }
+
 }
 ?>
Index: /branches/feature-module-update/data/class/graph/SC_GraphLine.php
===================================================================
--- /branches/feature-module-update/data/class/graph/SC_GraphLine.php	(revision 15597)
+++ /branches/feature-module-update/data/class/graph/SC_GraphLine.php	(revision 15599)
@@ -6,283 +6,283 @@
  */
 $SC_GRAPHLINE_DIR = realpath(dirname( __FILE__));
-require_once($SC_GRAPHLINE_DIR . "/SC_GraphBase.php");	
+require_once($SC_GRAPHLINE_DIR . "/SC_GraphBase.php");
 
 // 折れ線グラフ生成クラス
 class SC_GraphLine extends SC_GraphBase{
-	var $area_width;
-	var $area_height;
-	var $ygrid_on;
-	var $graph_max;		// グラフのエリア最大値(Y軸頂点の値)
-	var $arrXLabel;	
-	var $XLabelAngle;	// X軸ラベル角度	
-	var $XTitle;		// X軸タイトル
-	var $YTitle;		// Y軸タイトル
-	var $arrDataList;	// グラフデータを格納
-	var $arrPointList;	// 折れ線座標を格納
-	var $line_max;		// 複数の描画の場合に加算していく
-	
-	var $x_margin;
-	var $y_margin;
-			
+    var $area_width;
+    var $area_height;
+    var $ygrid_on;
+    var $graph_max;     // グラフのエリア最大値(Y軸頂点の値)
+    var $arrXLabel;
+    var $XLabelAngle;   // X軸ラベル角度
+    var $XTitle;        // X軸タイトル
+    var $YTitle;        // Y軸タイトル
+    var $arrDataList;   // グラフデータを格納
+    var $arrPointList;  // 折れ線座標を格納
+    var $line_max;      // 複数の描画の場合に加算していく
+
+    var $x_margin;
+    var $y_margin;
+
     // コンストラクタ
-	function SC_GraphLine(
-		$bgw = BG_WIDTH, $bgh = BG_HEIGHT, $left = LINE_LEFT, $top = LINE_TOP,
-		$area_width = LINE_AREA_WIDTH, $area_height = LINE_AREA_HEIGHT) {
-		parent::SC_GraphBase($bgw, $bgh, $left, $top);	
-		$this->area_width = $area_width;
-		$this->area_height = $area_height;
-		$this->ygrid_on = true;
-		$this->line_max = 0;
-		$this->graph_max = 0;
-		$this->XLabelAngle = 0;
-		$this->x_margin = 0;
-		$this->y_margin = 0;
-	}
-	
-	// X軸ラベルの角度セット
-	function setXLabelAngle($Angle) {
-		$this->XLabelAngle = $Angle;
-	}
-	
-	// Y軸タイトル
-	function drawYTitle() {
-		// Y軸にタイトルを入れる
-		if($this->YTitle != "") {
-			$text_width = $this->getTextWidth($this->YTitle, FONT_SIZE);
-			$x_pos = $this->left - ($text_width / 2);
-			$y_pos = $this->top - FONT_SIZE - LINE_YTITLE_PAD;		
-			$this->setText(FONT_SIZE, $x_pos, $y_pos, $this->YTitle);
-		}
-	}
-	
-	// X軸タイトル
-	function drawXTitle() {
-		// Y軸にタイトルを入れる
-		if($this->XTitle != "") {
-			$text_width = $this->getTextWidth($this->XTitle, FONT_SIZE);
-			$x_pos = $this->left + $this->area_width - ($text_width / 2) + 30;
-			$y_pos = $this->top + $this->area_height + LINE_XTITLE_PAD;
-			$this->setText(FONT_SIZE, $x_pos, $y_pos, $this->XTitle);
-		}
-	}
-	
-	// Y軸の描画
-	function drawYLine() {
-		imageline($this->image, $this->left, $this->top, $this->left, $this->top + $this->area_height, $this->flame_color);
-		// 目盛り幅を求める(中間点は自動)
-		$size = $this->area_height / (LINE_Y_SCALE * 2);
-		// 上から目盛りを入れていく
-		$pos = 0;
-		for($i = 0; $i < (LINE_Y_SCALE * 2); $i++) {
-			// 目盛り幅
-			if(($i % 2) == 0) {
-				$sw = LINE_SCALE_SIZE;
-				if($this->ygrid_on) {
-					imageline($this->image, $this->left, $this->top + $pos, $this->left + $this->area_width, $this->top + $pos, $this->grid_color);
-				}
-			} else {
-				$sw = LINE_SCALE_SIZE / 2;
-			}
-			imageline($this->image, $this->left, $this->top + $pos, $this->left + $sw, $this->top + $pos, $this->flame_color);
-			$pos += $size;
-		}
-		// Y軸に目盛り値を入れる
-		$this->setYScale();
-		$this->drawYTitle();	
-	}
-	
-	// X軸の描画
-	function drawXLine($bar = false) {
-		imageline($this->image, $this->left, $this->top + $this->area_height, $this->left + $this->area_width, $this->top + $this->area_height, $this->flame_color);
-		$arrPointList = $this->arrPointList[0];
-		$count = count($arrPointList);
-		
-		// 棒グラフの場合は半目盛りずらす
-		if($bar) {
-			$half_scale = intval($this->area_width / ($count + 1) / 2);
-		} else {
-			$half_scale = 0;
-		}
-		
-		// ラベルの表示インターバルを算出
-		$interval = ceil($count / LINE_XLABEL_MAX);	// 切り上げ				
-		for($i = 0; $i < $count; $i++) {
-			// X軸に目盛りを入れる
-			$x = $arrPointList[$i][0];
-			$pos = $this->top + $this->area_height;
-			imageline($this->image, $x - $half_scale, $pos, $x - $half_scale, $pos - LINE_SCALE_SIZE,  $this->flame_color);			
-			// ラベルを入れる
-			if(($i % $interval) == 0) {
-				$text_width = $this->getTextWidth($this->arrXLabel[$i], FONT_SIZE);
-				$x_pos = $x;
-				
-				if ($bar) $bar_margin = -15;
-
-				$this->setText(FONT_SIZE, $x_pos + $this->x_margin + $bar_margin, $pos + FONT_SIZE + $this->y_margin, $this->arrXLabel[$i], NULL, $this->XLabelAngle);
-			}
-		}
-		
-		// 棒グラフの場合は最後の目盛りを一つ追加する
-		if($bar) {
-			imageline($this->image, $x + $half_scale, $pos, $x + $half_scale, $pos - LINE_SCALE_SIZE,  $this->flame_color);	
-		}
-		
-		$this->drawXTitle();
-	}
-		
-	// グリッド表示
-	function setYGridOn($ygrid_on) {
-		$this->ygrid_on = $ygrid_on;
-	}
-	
-	// ポイントの描画
-	function setMark($line_no, $left, $top, $size = LINE_MARK_SIZE) {
-		// 偶数に変換しておく
-		$size += $size % 2;
-		$array = array(
-			$left, $top - ($size / 2),
-			$left + ($size / 2), $top,
-			$left, $top + ($size / 2),
-			$left - ($size / 2), $top,
-		);		
-		imagefilledpolygon($this->image, $array, 4, $this->arrColor[$line_no]);
-		imagepolygon($this->image, $array, 4, $this->flame_color);
- 		imagesetpixel ($this->image, $left, $top + ($size / 2), $this->flame_color);
-	}	
-	
-	// Y軸目盛りに値を入れる
-	function setYScale() {
-		// 1目盛りの値
-		$number = intval($this->graph_max / LINE_Y_SCALE);				
-		// 目盛り幅を求める
-		$size = $this->area_height / LINE_Y_SCALE;
-		$pos = 0;
-		for($i = 0; $i <= LINE_Y_SCALE; $i++) {
-			$snumber = $number * (LINE_Y_SCALE - $i);
-			$disp_number = number_format($snumber);
-			$num_width = $this->getTextWidth($disp_number, FONT_SIZE);
-			$this->setText(FONT_SIZE, $this->left - $num_width - 2, $this->top + $pos - (FONT_SIZE / 2), $disp_number);
-			$pos += $size;
-		}
-	}
-	
-	// 
-	function setMax($arrData) {
-		// データの最大値を取得する。
-		$data_max = max($arrData);
-		// 10の何倍かを取得
-		$figure = strlen($data_max) - 1;
-		// 次の桁を計算する
-		$tenval = pow(10, $figure);
-		// グラフ上での最大値を求める
-		$this->graph_max = $tenval * (intval($data_max / $tenval) + 1);
-		// 最大値が10未満の場合の対応
-		if($this->graph_max < 10) {
-			$this->graph_max = 10;
-		}	
-	}
-	
-	// グラフの描画
-	function drawGraph() {
-		// グラフ背景を描画
-		$this->drawYLine();
-		$this->drawXLine();
-		
-		// 折れ線グラフ描画
-		for($i = 0; $i < $this->line_max; $i++) {
-			$this->drawLine($i);
-		}
-		
-		// マークを描画
-		for($i = 0; $i < $this->line_max; $i++) {
-			$this->drawMark($i);
-		}
-		
-		// ラベルを描画
-		for($i = 0; $i < $this->line_max; $i++) {
-			$this->drawLabel($i);		
-		}
-
-		// 凡例の描画
-		$this->drawLegend();	
-	}
-	
-	// ラインを描画する
-	function drawLine($line_no) {
-		$arrPointList = $this->arrPointList[$line_no];
-		
-		$count = count($arrPointList);
-		for($i = 0; $i < $count; $i++) {
-			$x = $arrPointList[$i][0];
-			$y = $arrPointList[$i][1];
-			if(isset($arrPointList[$i + 1])) {
-				$next_x = $arrPointList[$i + 1][0];
-				$next_y = $arrPointList[$i + 1][1];
-				imageline($this->image, $x, $y, $next_x, $next_y, $this->arrColor[$line_no]);
-			}
-		}
-	}
-	
-	// マークを描画する
-	function drawMark($line_no) {
-		$arrPointList = $this->arrPointList[$line_no];
-		$count = count($arrPointList);
-		for($i = 0; $i < $count; $i++) {
-			$x = $arrPointList[$i][0];
-			$y = $arrPointList[$i][1];			
-			$this->setMark($line_no, $x, $y);
-		}
-	}
-	
-	// ラベルを描画する
-	function drawLabel($line_no) {
-		$arrData = $this->arrDataList[$line_no];
-		$arrPointList = $this->arrPointList[$line_no];
-		$count = count($arrPointList);
-		for($i = 0; $i < $count; $i++) {
-			$x = $arrPointList[$i][0];
-			$y = $arrPointList[$i][1];
-			$text_width = $this->getTextWidth(number_format($arrData[$i]), FONT_SIZE);
-			$y_pos = $y - FONT_SIZE - 5;
-			$x_pos = $x - $text_width / 2;
-			$this->setText(FONT_SIZE, $x_pos, $y_pos, number_format($arrData[$i]));
-		}
-	}
-	
-	// データをセットする
-	function setData($arrData) {
-		$this->arrDataList[$this->line_max] = array_values((array)$arrData);
-		$this->setMax($this->arrDataList[$this->line_max]);
-		// 値の描画変換率
-		$rate = $this->area_height / $this->graph_max;
-		// 描画率を計算
-		$count = count($this->arrDataList[$this->line_max]);
-		$scale_width = $this->area_width / ($count + 1);		
-		$this->arrPointList[$this->line_max] = array();
-		for($i = 0; $i < $count; $i++) {
-			// X座標を求める
-			$x = intval($this->left + ($scale_width * ($i + 1)));
-			// Y座標を求める
-			$y = intval($this->top + $this->area_height - ($this->arrDataList[$this->line_max][$i] * $rate));
-			// XY座標を保存する
-			$this->arrPointList[$this->line_max][] = array($x, $y);
-		}
-		$this->line_max++;
-	}
-	
-	// X軸ラベルをセットする
-	function setXLabel($arrXLabel) {
-		$this->arrXLabel = array_values((array)$arrXLabel);
-	}
-	
-	// X軸タイトルをセットする
-	function setXTitle($title) {
-		$this->XTitle = $title;
-	}
-	
-	// Y軸タイトルをセットする
-	function setYTitle($title) {
-		$this->YTitle = $title;
-	}	
+    function SC_GraphLine(
+        $bgw = BG_WIDTH, $bgh = BG_HEIGHT, $left = LINE_LEFT, $top = LINE_TOP,
+        $area_width = LINE_AREA_WIDTH, $area_height = LINE_AREA_HEIGHT) {
+        parent::SC_GraphBase($bgw, $bgh, $left, $top);
+        $this->area_width = $area_width;
+        $this->area_height = $area_height;
+        $this->ygrid_on = true;
+        $this->line_max = 0;
+        $this->graph_max = 0;
+        $this->XLabelAngle = 0;
+        $this->x_margin = 0;
+        $this->y_margin = 0;
+    }
+
+    // X軸ラベルの角度セット
+    function setXLabelAngle($Angle) {
+        $this->XLabelAngle = $Angle;
+    }
+
+    // Y軸タイトル
+    function drawYTitle() {
+        // Y軸にタイトルを入れる
+        if($this->YTitle != "") {
+            $text_width = $this->getTextWidth($this->YTitle, FONT_SIZE);
+            $x_pos = $this->left - ($text_width / 2);
+            $y_pos = $this->top - FONT_SIZE - LINE_YTITLE_PAD;
+            $this->setText(FONT_SIZE, $x_pos, $y_pos, $this->YTitle);
+        }
+    }
+
+    // X軸タイトル
+    function drawXTitle() {
+        // Y軸にタイトルを入れる
+        if($this->XTitle != "") {
+            $text_width = $this->getTextWidth($this->XTitle, FONT_SIZE);
+            $x_pos = $this->left + $this->area_width - ($text_width / 2) + 30;
+            $y_pos = $this->top + $this->area_height + LINE_XTITLE_PAD;
+            $this->setText(FONT_SIZE, $x_pos, $y_pos, $this->XTitle);
+        }
+    }
+
+    // Y軸の描画
+    function drawYLine() {
+        imageline($this->image, $this->left, $this->top, $this->left, $this->top + $this->area_height, $this->flame_color);
+        // 目盛り幅を求める(中間点は自動)
+        $size = $this->area_height / (LINE_Y_SCALE * 2);
+        // 上から目盛りを入れていく
+        $pos = 0;
+        for($i = 0; $i < (LINE_Y_SCALE * 2); $i++) {
+            // 目盛り幅
+            if(($i % 2) == 0) {
+                $sw = LINE_SCALE_SIZE;
+                if($this->ygrid_on) {
+                    imageline($this->image, $this->left, $this->top + $pos, $this->left + $this->area_width, $this->top + $pos, $this->grid_color);
+                }
+            } else {
+                $sw = LINE_SCALE_SIZE / 2;
+            }
+            imageline($this->image, $this->left, $this->top + $pos, $this->left + $sw, $this->top + $pos, $this->flame_color);
+            $pos += $size;
+        }
+        // Y軸に目盛り値を入れる
+        $this->setYScale();
+        $this->drawYTitle();
+    }
+
+    // X軸の描画
+    function drawXLine($bar = false) {
+        imageline($this->image, $this->left, $this->top + $this->area_height, $this->left + $this->area_width, $this->top + $this->area_height, $this->flame_color);
+        $arrPointList = $this->arrPointList[0];
+        $count = count($arrPointList);
+
+        // 棒グラフの場合は半目盛りずらす
+        if($bar) {
+            $half_scale = intval($this->area_width / ($count + 1) / 2);
+        } else {
+            $half_scale = 0;
+        }
+
+        // ラベルの表示インターバルを算出
+        $interval = ceil($count / LINE_XLABEL_MAX); // 切り上げ
+        for($i = 0; $i < $count; $i++) {
+            // X軸に目盛りを入れる
+            $x = $arrPointList[$i][0];
+            $pos = $this->top + $this->area_height;
+            imageline($this->image, $x - $half_scale, $pos, $x - $half_scale, $pos - LINE_SCALE_SIZE,  $this->flame_color);
+            // ラベルを入れる
+            if(($i % $interval) == 0) {
+                $text_width = $this->getTextWidth($this->arrXLabel[$i], FONT_SIZE);
+                $x_pos = $x;
+
+                if ($bar) $bar_margin = -15;
+
+                $this->setText(FONT_SIZE, $x_pos + $this->x_margin + $bar_margin, $pos + FONT_SIZE + $this->y_margin, $this->arrXLabel[$i], NULL, $this->XLabelAngle);
+            }
+        }
+
+        // 棒グラフの場合は最後の目盛りを一つ追加する
+        if($bar) {
+            imageline($this->image, $x + $half_scale, $pos, $x + $half_scale, $pos - LINE_SCALE_SIZE,  $this->flame_color);
+        }
+
+        $this->drawXTitle();
+    }
+
+    // グリッド表示
+    function setYGridOn($ygrid_on) {
+        $this->ygrid_on = $ygrid_on;
+    }
+
+    // ポイントの描画
+    function setMark($line_no, $left, $top, $size = LINE_MARK_SIZE) {
+        // 偶数に変換しておく
+        $size += $size % 2;
+        $array = array(
+            $left, $top - ($size / 2),
+            $left + ($size / 2), $top,
+            $left, $top + ($size / 2),
+            $left - ($size / 2), $top,
+        );
+        imagefilledpolygon($this->image, $array, 4, $this->arrColor[$line_no]);
+        imagepolygon($this->image, $array, 4, $this->flame_color);
+        imagesetpixel ($this->image, $left, $top + ($size / 2), $this->flame_color);
+    }
+
+    // Y軸目盛りに値を入れる
+    function setYScale() {
+        // 1目盛りの値
+        $number = intval($this->graph_max / LINE_Y_SCALE);
+        // 目盛り幅を求める
+        $size = $this->area_height / LINE_Y_SCALE;
+        $pos = 0;
+        for($i = 0; $i <= LINE_Y_SCALE; $i++) {
+            $snumber = $number * (LINE_Y_SCALE - $i);
+            $disp_number = number_format($snumber);
+            $num_width = $this->getTextWidth($disp_number, FONT_SIZE);
+            $this->setText(FONT_SIZE, $this->left - $num_width - 2, $this->top + $pos - (FONT_SIZE / 2), $disp_number);
+            $pos += $size;
+        }
+    }
+
+    //
+    function setMax($arrData) {
+        // データの最大値を取得する。
+        $data_max = max($arrData);
+        // 10の何倍かを取得
+        $figure = strlen($data_max) - 1;
+        // 次の桁を計算する
+        $tenval = pow(10, $figure);
+        // グラフ上での最大値を求める
+        $this->graph_max = $tenval * (intval($data_max / $tenval) + 1);
+        // 最大値が10未満の場合の対応
+        if($this->graph_max < 10) {
+            $this->graph_max = 10;
+        }
+    }
+
+    // グラフの描画
+    function drawGraph() {
+        // グラフ背景を描画
+        $this->drawYLine();
+        $this->drawXLine();
+
+        // 折れ線グラフ描画
+        for($i = 0; $i < $this->line_max; $i++) {
+            $this->drawLine($i);
+        }
+
+        // マークを描画
+        for($i = 0; $i < $this->line_max; $i++) {
+            $this->drawMark($i);
+        }
+
+        // ラベルを描画
+        for($i = 0; $i < $this->line_max; $i++) {
+            $this->drawLabel($i);
+        }
+
+        // 凡例の描画
+        $this->drawLegend();
+    }
+
+    // ラインを描画する
+    function drawLine($line_no) {
+        $arrPointList = $this->arrPointList[$line_no];
+
+        $count = count($arrPointList);
+        for($i = 0; $i < $count; $i++) {
+            $x = $arrPointList[$i][0];
+            $y = $arrPointList[$i][1];
+            if(isset($arrPointList[$i + 1])) {
+                $next_x = $arrPointList[$i + 1][0];
+                $next_y = $arrPointList[$i + 1][1];
+                imageline($this->image, $x, $y, $next_x, $next_y, $this->arrColor[$line_no]);
+            }
+        }
+    }
+
+    // マークを描画する
+    function drawMark($line_no) {
+        $arrPointList = $this->arrPointList[$line_no];
+        $count = count($arrPointList);
+        for($i = 0; $i < $count; $i++) {
+            $x = $arrPointList[$i][0];
+            $y = $arrPointList[$i][1];
+            $this->setMark($line_no, $x, $y);
+        }
+    }
+
+    // ラベルを描画する
+    function drawLabel($line_no) {
+        $arrData = $this->arrDataList[$line_no];
+        $arrPointList = $this->arrPointList[$line_no];
+        $count = count($arrPointList);
+        for($i = 0; $i < $count; $i++) {
+            $x = $arrPointList[$i][0];
+            $y = $arrPointList[$i][1];
+            $text_width = $this->getTextWidth(number_format($arrData[$i]), FONT_SIZE);
+            $y_pos = $y - FONT_SIZE - 5;
+            $x_pos = $x - $text_width / 2;
+            $this->setText(FONT_SIZE, $x_pos, $y_pos, number_format($arrData[$i]));
+        }
+    }
+
+    // データをセットする
+    function setData($arrData) {
+        $this->arrDataList[$this->line_max] = array_values((array)$arrData);
+        $this->setMax($this->arrDataList[$this->line_max]);
+        // 値の描画変換率
+        $rate = $this->area_height / $this->graph_max;
+        // 描画率を計算
+        $count = count($this->arrDataList[$this->line_max]);
+        $scale_width = $this->area_width / ($count + 1);
+        $this->arrPointList[$this->line_max] = array();
+        for($i = 0; $i < $count; $i++) {
+            // X座標を求める
+            $x = intval($this->left + ($scale_width * ($i + 1)));
+            // Y座標を求める
+            $y = intval($this->top + $this->area_height - ($this->arrDataList[$this->line_max][$i] * $rate));
+            // XY座標を保存する
+            $this->arrPointList[$this->line_max][] = array($x, $y);
+        }
+        $this->line_max++;
+    }
+
+    // X軸ラベルをセットする
+    function setXLabel($arrXLabel) {
+        $this->arrXLabel = array_values((array)$arrXLabel);
+    }
+
+    // X軸タイトルをセットする
+    function setXTitle($title) {
+        $this->XTitle = $title;
+    }
+
+    // Y軸タイトルをセットする
+    function setYTitle($title) {
+        $this->YTitle = $title;
+    }
 }
 ?>
Index: /branches/feature-module-update/data/class/graph/SC_GraphPie.php
===================================================================
--- /branches/feature-module-update/data/class/graph/SC_GraphPie.php	(revision 15597)
+++ /branches/feature-module-update/data/class/graph/SC_GraphPie.php	(revision 15599)
@@ -6,195 +6,194 @@
  */
 $SC_GRAPHPIE_DIR = realpath(dirname( __FILE__));
-require_once($SC_GRAPHPIE_DIR . "/SC_GraphBase.php");	
+require_once($SC_GRAPHPIE_DIR . "/SC_GraphBase.php");
 
 // 円グラフ生成クラス
 class SC_GraphPie extends SC_GraphBase{
-	var $cw;
-	var $ch;
-	var $cz;
-	var $cx;
-	var $cy;
-	var $arrLabel;
-	var $arrData;
-	
+    var $cw;
+    var $ch;
+    var $cz;
+    var $cx;
+    var $cy;
+    var $arrLabel;
+    var $arrData;
+
     // コンストラクタ
-	function SC_GraphPie($bgw = BG_WIDTH, $bgh = BG_HEIGHT, $left = PIE_LEFT, $top = PIE_TOP) {
-		parent::SC_GraphBase($bgw, $bgh, $left, $top);
-		// サイズ設定
-		$this->setSize(PIE_WIDTH, PIE_HEIGHT, PIE_THICK);
-		// 位置設定
-		$this->setPosition($this->left + ($this->cw / 2), $this->top + ($this->ch / 2));
+    function SC_GraphPie($bgw = BG_WIDTH, $bgh = BG_HEIGHT, $left = PIE_LEFT, $top = PIE_TOP) {
+        parent::SC_GraphBase($bgw, $bgh, $left, $top);
+        // サイズ設定
+        $this->setSize(PIE_WIDTH, PIE_HEIGHT, PIE_THICK);
+        // 位置設定
+        $this->setPosition($this->left + ($this->cw / 2), $this->top + ($this->ch / 2));
     }
-	
-	// データを360°値に変換する
-	function getCircleData($array) {
-		if(!is_array($array)) {
-			return;
-		}
-		$arrRet = array();
-		foreach($array as $val) {
-			$total += $val;			
-		}
-		if($total <= 0) {
-			return;
-		}		
-		$rate = 360 / $total;
-		// ラベル表示用
-		$p_rate = 100 / $total;
-		$cnt = 0;
-		foreach($array as $val) {
-			$ret = round($val * $rate);
-			$new_total+= $ret;
-			$arrRet[] = $ret;
-			// パーセント表示用
-			$this->arrLabel[] = round($val * $p_rate) . " %";
-			$cnt++;
-		}
-		// 合計が360になるように補正しておく
-		$arrRet[0] -= $new_total - 360;
-		return $arrRet;
-	}	
-		
-	// 円の位置設定を行う
-	function setPosition($cx, $cy) {
-		$this->cx = $cx;
-		$this->cy = $cy;
-	}
-		
-	// 円のサイズ設定を行う
-	function setSize($cw, $ch, $cz = 0) {
-		$this->cw = $cw;
-		$this->ch = $ch;
-		$this->cz = $cz;
-	}
-	
-	// 影の描画
-	function drawShade() {
-		$move = 1;
-		for($i = ($this->cy + $this->cz); $i <= ($this->cy + $this->cz + ($this->cz * PIE_SHADE_IMPACT)); $i++) {
-			imagefilledarc($this->image, $this->cx + $move, $i, $this->cw, $this->ch, 0, 360, $this->shade_color, IMG_ARC_PIE);
-			$move += 0.5;
-		}
-	}
-	
-	// データをセットする
-	function setData($arrData) {
-		$this->arrData = array_values($arrData);
-	}
-	
-	// 円グラフを描画する
-	function drawGraph() {
-		$x = $this->cx;
-		$y = $this->cy;
-		$z = $this->cz;
-		$h = $this->ch;
-		$w = $this->cw;
-		
-		// データの角度を取得する
-		$arrRad = $this->getCircleData($this->arrData);
-		$rd_max = count($arrRad);
-		
-		// データが存在しない場合
-		if($rd_max <= 0) {
-			return;
-		}
-		
-		// 影の描画
-		if($this->shade_on) {
-			$this->drawShade();
-		}
-			
-		// 色数の取得
-		$c_max = count($this->arrColor);
-		$dc_max = count($this->arrDarkColor);
-		
-		// 側面の描画		
-		for ($i = ($y + $z - 1); $i >= $y; $i--) {
-			$start = 0;
-			for($j = 0; $j < $rd_max; $j++) {
-				// 角度が0度以上の場合のみ側面を描画する。
-				if($arrRad[$j] > 0) {
-					$end = $start + $arrRad[$j];
-					if($start == 0 && $end == 360) {
-						// -90~270で指定すると円が描画できないので0~360に指定
-						imagearc($this->image, $x, $i, $w, $h, 0, 360, $this->arrDarkColor[($j % $dc_max)]);
-					} else {
-						// -90°は12時の位置から開始するように補正している
-						imagearc($this->image, $x, $i, $w, $h, $start - 90, $end - 90, $this->arrDarkColor[($j % $dc_max)]);	
-					}			
-					$start = $end;
-				}
-			}
-		}
-		// 底面の描画
-		imagearc($this->image, $x, $y + $z, $w, $h, 0, 180 , $this->flame_color);
 
-		// 上面の描画
-		$start = 0;
-		for($i = 0; $i < $rd_max; $i++) {
-			$end = $start + $arrRad[$i];
-			if($start == 0 && $end == 360) {
-				// -90~270で指定すると円が描画できないので0~360に指定
-				imagefilledarc($this->image, $x, $y, $w, $h, 0, 360, $this->arrColor[($i % $c_max)], IMG_ARC_PIE);			
-			} else {
-				// -90°は12時の位置から開始するように補正している。		
-				imagefilledarc($this->image, $x, $y, $w, $h, $start - 90, $end - 90, $this->arrColor[($i % $c_max)], IMG_ARC_PIE);
-			}
-			$start = $end;
-		}
+    // データを360°値に変換する
+    function getCircleData($array) {
+        if(!is_array($array)) {
+            return;
+        }
+        $arrRet = array();
+        foreach($array as $val) {
+            $total += $val;
+        }
+        if($total <= 0) {
+            return;
+        }
+        $rate = 360 / $total;
+        // ラベル表示用
+        $p_rate = 100 / $total;
+        $cnt = 0;
+        foreach($array as $val) {
+            $ret = round($val * $rate);
+            $new_total+= $ret;
+            $arrRet[] = $ret;
+            // パーセント表示用
+            $this->arrLabel[] = round($val * $p_rate) . " %";
+            $cnt++;
+        }
+        // 合計が360になるように補正しておく
+        $arrRet[0] -= $new_total - 360;
+        return $arrRet;
+    }
 
-		// 上面の縁取り
-		$start = 0;
-		for($i = 0; $i < $rd_max; $i++) {
-			$end = $start + $arrRad[$i];
-			if($start == 0 && $end == 360) {
-				// -90~270で指定すると円が描画できないので0~360に指定
-				imagearc($this->image, $x, $y, $w, $h, 0, 360 , $this->flame_color);
-			}
-			// -90°は12時の位置から開始するように補正している。
-			imagefilledarc($this->image, $x, $y, $w, $h, $start - 90, $end - 90, $this->flame_color, IMG_ARC_EDGED|IMG_ARC_NOFILL);
-			$start = $end;
-		}
+    // 円の位置設定を行う
+    function setPosition($cx, $cy) {
+        $this->cx = $cx;
+        $this->cy = $cy;
+    }
 
-		// 側面の縁取り
-		imageline($this->image, $x + ($w / 2), $y, $x + ($w / 2), $y + $z, $this->flame_color);
-		imageline($this->image, $x - ($w / 2), $y, $x - ($w / 2), $y + $z, $this->flame_color);
-		$start = 0;
-		for($i = 0; $i < $rd_max; $i++) {
-			$end = $start + $arrRad[$i];
-			// 前面のみ
-			if($end > 90 && $end < 270) {
-				list($ax, $ay) = lfGetArcPos($x, $y, $w, $h, $end);
-				// ラインのずれを補正する
-				if($end > 180) {
-					$ax = $ax + 1;
-				}
-				imageline($this->image, $ax, $ay, $ax, $ay + $z, $this->flame_color);
-			}
-			$start = $end;	
-		}
-				
-		// ラベルの描画
-		$this->drawLabel($arrRad);
-		// 凡例の描画
-		$this->drawLegend(count($this->arrData));			
-	}
-	
-	// 円グラフのラベルを描画する
-	function drawLabel($arrRad) {
-		$rd_max = count($arrRad);
-		$start = 0;
-		for($i = 0; $i < $rd_max; $i++) {
-			$center = $start + ($arrRad[$i] / 2);
-			$end = $start + $arrRad[$i];
-			list($sx, $sy) = lfGetArcPos($this->cx, $this->cy, ($this->cw / 1.5), ($this->ch / 1.5), $center);
-			list($ex, $ey) = lfGetArcPos($this->cx, $this->cy, ($this->cw * 1.5), ($this->ch * 1.5), $center);
-			// 指示線の描画
-			imageline($this->image, $sx, $sy, $ex + 2, $ey - PIE_LABEL_UP, $this->flame_color);
-			$this->setText(FONT_SIZE, $ex - 10, $ey - PIE_LABEL_UP - FONT_SIZE, $this->arrLabel[$i], NULL, 0, true);
-			$start = $end;
-		}
-	}	
+    // 円のサイズ設定を行う
+    function setSize($cw, $ch, $cz = 0) {
+        $this->cw = $cw;
+        $this->ch = $ch;
+        $this->cz = $cz;
+    }
+
+    // 影の描画
+    function drawShade() {
+        $move = 1;
+        for($i = ($this->cy + $this->cz); $i <= ($this->cy + $this->cz + ($this->cz * PIE_SHADE_IMPACT)); $i++) {
+            imagefilledarc($this->image, $this->cx + $move, $i, $this->cw, $this->ch, 0, 360, $this->shade_color, IMG_ARC_PIE);
+            $move += 0.5;
+        }
+    }
+
+    // データをセットする
+    function setData($arrData) {
+        $this->arrData = array_values($arrData);
+    }
+
+    // 円グラフを描画する
+    function drawGraph() {
+        $x = $this->cx;
+        $y = $this->cy;
+        $z = $this->cz;
+        $h = $this->ch;
+        $w = $this->cw;
+
+        // データの角度を取得する
+        $arrRad = $this->getCircleData($this->arrData);
+        $rd_max = count($arrRad);
+
+        // データが存在しない場合
+        if($rd_max <= 0) {
+            return;
+        }
+
+        // 影の描画
+        if($this->shade_on) {
+            $this->drawShade();
+        }
+
+        // 色数の取得
+        $c_max = count($this->arrColor);
+        $dc_max = count($this->arrDarkColor);
+
+        // 側面の描画
+        for ($i = ($y + $z - 1); $i >= $y; $i--) {
+            $start = 0;
+            for($j = 0; $j < $rd_max; $j++) {
+                // 角度が0度以上の場合のみ側面を描画する。
+                if($arrRad[$j] > 0) {
+                    $end = $start + $arrRad[$j];
+                    if($start == 0 && $end == 360) {
+                        // -90~270で指定すると円が描画できないので0~360に指定
+                        imagearc($this->image, $x, $i, $w, $h, 0, 360, $this->arrDarkColor[($j % $dc_max)]);
+                    } else {
+                        // -90°は12時の位置から開始するように補正している
+                        imagearc($this->image, $x, $i, $w, $h, $start - 90, $end - 90, $this->arrDarkColor[($j % $dc_max)]);
+                    }
+                    $start = $end;
+                }
+            }
+        }
+        // 底面の描画
+        imagearc($this->image, $x, $y + $z, $w, $h, 0, 180 , $this->flame_color);
+
+        // 上面の描画
+        $start = 0;
+        for($i = 0; $i < $rd_max; $i++) {
+            $end = $start + $arrRad[$i];
+            if($start == 0 && $end == 360) {
+                // -90~270で指定すると円が描画できないので0~360に指定
+                imagefilledarc($this->image, $x, $y, $w, $h, 0, 360, $this->arrColor[($i % $c_max)], IMG_ARC_PIE);
+            } else {
+                // -90°は12時の位置から開始するように補正している。
+                imagefilledarc($this->image, $x, $y, $w, $h, $start - 90, $end - 90, $this->arrColor[($i % $c_max)], IMG_ARC_PIE);
+            }
+            $start = $end;
+        }
+
+        // 上面の縁取り
+        $start = 0;
+        for($i = 0; $i < $rd_max; $i++) {
+            $end = $start + $arrRad[$i];
+            if($start == 0 && $end == 360) {
+                // -90~270で指定すると円が描画できないので0~360に指定
+                imagearc($this->image, $x, $y, $w, $h, 0, 360 , $this->flame_color);
+            }
+            // -90°は12時の位置から開始するように補正している。
+            imagefilledarc($this->image, $x, $y, $w, $h, $start - 90, $end - 90, $this->flame_color, IMG_ARC_EDGED|IMG_ARC_NOFILL);
+            $start = $end;
+        }
+
+        // 側面の縁取り
+        imageline($this->image, $x + ($w / 2), $y, $x + ($w / 2), $y + $z, $this->flame_color);
+        imageline($this->image, $x - ($w / 2), $y, $x - ($w / 2), $y + $z, $this->flame_color);
+        $start = 0;
+        for($i = 0; $i < $rd_max; $i++) {
+            $end = $start + $arrRad[$i];
+            // 前面のみ
+            if($end > 90 && $end < 270) {
+                list($ax, $ay) = lfGetArcPos($x, $y, $w, $h, $end);
+                // ラインのずれを補正する
+                if($end > 180) {
+                    $ax = $ax + 1;
+                }
+                imageline($this->image, $ax, $ay, $ax, $ay + $z, $this->flame_color);
+            }
+            $start = $end;
+        }
+
+        // ラベルの描画
+        $this->drawLabel($arrRad);
+        // 凡例の描画
+        $this->drawLegend(count($this->arrData));
+    }
+
+    // 円グラフのラベルを描画する
+    function drawLabel($arrRad) {
+        $rd_max = count($arrRad);
+        $start = 0;
+        for($i = 0; $i < $rd_max; $i++) {
+            $center = $start + ($arrRad[$i] / 2);
+            $end = $start + $arrRad[$i];
+            list($sx, $sy) = lfGetArcPos($this->cx, $this->cy, ($this->cw / 1.5), ($this->ch / 1.5), $center);
+            list($ex, $ey) = lfGetArcPos($this->cx, $this->cy, ($this->cw * 1.5), ($this->ch * 1.5), $center);
+            // 指示線の描画
+            imageline($this->image, $sx, $sy, $ex + 2, $ey - PIE_LABEL_UP, $this->flame_color);
+            $this->setText(FONT_SIZE, $ex - 10, $ey - PIE_LABEL_UP - FONT_SIZE, $this->arrLabel[$i], NULL, 0, true);
+            $start = $end;
+        }
+    }
 }
-
 ?>
