summaryrefslogtreecommitdiff
path: root/html/jpgraph/jpgraph_theme.inc.php
diff options
context:
space:
mode:
Diffstat (limited to 'html/jpgraph/jpgraph_theme.inc.php')
-rw-r--r--html/jpgraph/jpgraph_theme.inc.php136
1 files changed, 136 insertions, 0 deletions
diff --git a/html/jpgraph/jpgraph_theme.inc.php b/html/jpgraph/jpgraph_theme.inc.php
new file mode 100644
index 0000000..0cc54c4
--- /dev/null
+++ b/html/jpgraph/jpgraph_theme.inc.php
@@ -0,0 +1,136 @@
+<?php
+//=======================================================================
+// File: JPGRAPH_THEME.INC.PHP
+// Description: Class to define graph theme
+// Created: 2010-09-29
+// Ver: $Id: jpgraph_theme.inc.php 83 2010-10-01 11:24:19Z atsushi $
+//
+// Copyright (c) Asial Corporation. All rights reserved.
+//========================================================================
+
+
+// include Theme classes
+foreach (glob(dirname(__FILE__) . '/themes/*.php') as $theme_class_script) {
+ require_once($theme_class_script);
+}
+
+//===================================================
+// CLASS
+// Description:
+//===================================================
+abstract class Theme {
+ protected $color_index;
+
+ function __construct() {
+ $this->color_index = 0;
+ }
+ /**
+ *
+ */
+ abstract function GetColorList();
+
+ /**
+ *
+ */
+ abstract function ApplyPlot($plot);
+
+
+ /**
+ *
+ */
+ function SetupPlot($plot) {
+ if (is_array($plot)) {
+ foreach ($plot as $obj) {
+ $this->ApplyPlot($obj);
+ }
+ } else {
+ $this->ApplyPlot($plot);
+ }
+ }
+
+ /**
+ *
+ */
+ function ApplyGraph($graph) {
+
+ $this->graph = $graph;
+ $method_name = '';
+
+ if (get_class($graph) == 'Graph') {
+ $method_name = 'SetupGraph';
+ } else {
+ $method_name = 'Setup' . get_class($graph);
+ }
+
+ if (method_exists($this, $method_name)) {
+ $this->$method_name($graph);
+ } else {
+ JpGraphError::RaiseL(30001, $method_name, $method_name); //Theme::%s() is not defined. \nPlease make %s(\$graph) function in your theme classs.
+ }
+ }
+
+ /**
+ *
+ */
+ function PreStrokeApply($graph) {
+ }
+
+ /**
+ *
+ */
+ function GetThemeColors($num = 30) {
+ $result_list = array();
+
+ $old_index = $this->color_index;
+ $this->color_index = 0;
+ $count = 0;
+
+ $i = 0;
+ while (true) {
+ for ($j = 0; $j < count($this->GetColorList()); $j++) {
+ if (++$count > $num) {
+ break 2;
+ }
+ $result_list[] = $this->GetNextColor();
+ }
+ $i++;
+ }
+
+ $this->color_index = $old_index;
+
+ return $result_list;
+ }
+
+ /**
+ *
+ */
+ function GetNextColor() {
+ $color_list = $this->GetColorList();
+
+ $color = null;
+ if (isset($color_list[$this->color_index])) {
+ $color = $color_list[$this->color_index];
+ } else {
+ $color_count = count($color_list);
+ if ($color_count <= $this->color_index) {
+ $color_tmp = $color_list[$this->color_index % $color_count];
+ $brightness = 1.0 - intval($this->color_index / $color_count) * 0.2;
+ $rgb = new RGB();
+ $color = $color_tmp . ':' . $brightness;
+ $color = $rgb->Color($color);
+ $alpha = array_pop($color);
+ $color = $rgb->tryHexConversion($color);
+ if ($alpha) {
+ $color .= '@' . $alpha;
+ }
+ }
+ }
+
+ $this->color_index++;
+
+ return $color;
+ }
+
+} // Class
+
+?>