📄 sparkline.php
字号:
<?php/* * Sparkline PHP Graphing Library * Copyright 2004 James Byers <jbyers@users.sf.net> * http://sparkline.org * * Sparkline is distributed under a BSD License. See LICENSE for details. * * $Id: Sparkline.php,v 1.8 2005/05/02 20:25:47 jbyers Exp $ * */define('TEXT_TOP', 1);define('TEXT_RIGHT', 2);define('TEXT_BOTTOM', 3);define('TEXT_LEFT', 4);define('FONT_1', 1);define('FONT_2', 2);define('FONT_3', 3);define('FONT_4', 4);define('FONT_5', 5);require_once('Object.php');class Sparkline extends Object { var $imageX; var $imageY; var $imageHandle; var $graphAreaPx; var $graphAreaPt; var $colorList; var $colorBackground; var $lineSize; //////////////////////////////////////////////////////////////////////////// // constructor // function Sparkline($catch_errors = true) { parent::Object($catch_errors); $this->colorList = array(); $this->colorBackground = 'white'; $this->lineSize = 1; $this->graphAreaPx = array(array(0, 0), array(0, 0)); // px(L, B), px(R, T) } // function Sparkline //////////////////////////////////////////////////////////////////////////// // init // function Init($x, $y) { $this->Debug("Sparkline :: Init($x, $y)", DEBUG_CALLS); $this->imageX = $x; $this->imageY = $y; // Set functions may have already set graphAreaPx offsets; add image dimensions // $this->graphAreaPx = array(array($this->graphAreaPx[0][0], $this->graphAreaPx[0][1]), array($this->graphAreaPx[1][0] + $x - 1, $this->graphAreaPx[1][1] + $y - 1)); $this->imageHandle = $this->CreateImageHandle($x, $y); // load default colors; set all color handles // $this->SetColorDefaults(); while (list($k, $v) = each($this->colorList)) { $this->SetColorHandle($k, $this->DrawColorAllocate($k, $this->imageHandle)); } reset($this->colorList); if ($this->IsError()) { return false; } else { return true; } } // function Init //////////////////////////////////////////////////////////////////////////// // color, drawing setup functions // function SetColor($name, $r, $g, $b) { $this->Debug("Sparkline :: SetColor('$name', $r, $g, $b)", DEBUG_SET); $name = strtolower($name); $this->colorList[$name] = array('rgb' => array($r, $g, $b)); } // function SetDecColor function SetColorHandle($name, $handle) { $this->Debug("Sparkline :: SetColorHandle('$name', $handle)", DEBUG_SET); $name = strtolower($name); if (array_key_exists($name, $this->colorList)) { $this->colorList[$name]['handle'] = $handle; return true; } else { return false; } } // function SetColorHandle function SetColorHex($name, $r, $g, $b) { $this->Debug("Sparkline :: SetColorHex('$name', $r, $g, $b)", DEBUG_SET); $this->SetColor($name, hexdec($r), hexdec($g), hexdec($b)); } // function SetHexColor function SetColorHtml($name, $rgb) { $this->Debug("Sparkline :: SetColorHtml('$name', '$rgb')", DEBUG_SET); $rgb = trim($rgb, '#'); $this->SetColor($name, hexdec(substr($rgb, 0, 2)), hexdec(substr($rgb, 2, 2)), hexdec(substr($rgb, 4, 2))); } // function SetHexColor function SetColorBackground($name) { $this->Debug("Sparkline :: SetColorBackground('$name')", DEBUG_SET); $this->colorBackground = $name; } // function SetColorBackground function GetColor($name) { if (array_key_exists($name, $this->colorList)) { return $this->colorList[$name]['rgb']; } else { return false; } } // function GetColor function GetColorHandle($name) { $name = strtolower($name); if (array_key_exists($name, $this->colorList)) { return $this->colorList[$name]['handle']; } else { $this->Debug("Sparkline :: GetColorHandle color '$name' not set", DEBUG_WARNING); return false; } } // function GetColorHandle function SetColorDefaults() { $this->Debug("Sparkline :: SetColorDefaults()", DEBUG_SET); $colorDefaults = array(array('aqua', '#00FFFF'), array('black', '#010101'), // TODO failure if 000000? array('blue', '#0000FF'), array('fuscia', '#FF00FF'), array('gray', '#808080'), array('grey', '#808080'), array('green', '#008000'), array('lime', '#00FF00'), array('maroon', '#800000'), array('navy', '#000080'), array('olive', '#808000'), array('purple', '#800080'), array('red', '#FF0000'), array('silver', '#C0C0C0'), array('teal', '#008080'), array('white', '#FFFFFF'), array('yellow', '#FFFF00')); while (list(, $v) = each($colorDefaults)) { if (!array_key_exists($v[0], $this->colorList)) { $this->SetColorHtml($v[0], $v[1]); } } } // function SetColorDefaults function SetLineSize($size) { $this->Debug("Sparkline :: SetLineSize($size)", DEBUG_CALLS); $this->lineSize = $size; } // function SetLineSize function GetLineSize() { return($this->lineSize); } // function GetLineSize function SetPadding($T, $R = null, $B = null, $L = null) { $this->Debug("Sparkline :: SetPadding($T, $R, $B, $L)", DEBUG_CALLS); if (null == $R && null == $B && null == $L) { $this->graphAreaPx = array(array($this->graphAreaPx[0][0] + $T, $this->graphAreaPx[0][1] + $T), array($this->graphAreaPx[1][0] - $T, $this->graphAreaPx[1][1] - $T)); } else { $this->graphAreaPx = array(array($this->graphAreaPx[0][0] + $L, $this->graphAreaPx[0][1] + $B), array($this->graphAreaPx[1][0] - $R, $this->graphAreaPx[1][1] - $T)); } } // function SetPadding //////////////////////////////////////////////////////////////////////////// // canvas setup // function CreateImageHandle($x, $y) { $this->Debug("Sparkline :: CreateImageHandle($x, $y)", DEBUG_CALLS); if(function_exists('imagecreatetruecolor')) { $handle = imagecreatetruecolor($x, $y); } elseif(function_exists('imagecreate')) { $handle = imagecreate($x, $y); } else { echo "You need at least imagecreate()";exit; } if (!is_resource($handle)) { $this->Debug('imagecreatetruecolor unavailable', DEBUG_WARNING); } if (!is_resource($handle)) { $this->Debug('imagecreate unavailable', DEBUG_WARNING); $this->Error('could not create image; GD imagecreate functions unavailable'); } return $handle; } // function CreateImageHandle //////////////////////////////////////////////////////////////////////////// // drawing primitives // // NB: all drawing primitives use the coordinate system where (0,0) // corresponds to the bottom left of the image, unlike y-inverted // PHP gd functions // function DrawBackground($handle = false) { $this->Debug("Sparkline :: DrawBackground()", DEBUG_DRAW); if (!$this->IsError()) { if ($handle === false) $handle = $this->imageHandle; return $this->DrawRectangleFilled(0, 0, imagesx($handle) - 1, imagesy($handle) - 1, $this->colorBackground, $handle); } } // function DrawBackground function DrawColorAllocate($color, $handle = false) { $this->Debug("Sparkline :: DrawColorAllocate('$color')", DEBUG_DRAW); if (!$this->IsError() && $colorRGB = $this->GetColor($color)) { if ($handle === false) $handle = $this->imageHandle; return imagecolorallocate($handle, $colorRGB[0], $colorRGB[1], $colorRGB[2]); } } // function DrawColorAllocate function DrawFill($x, $y, $color, $handle = false) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -