?? jpgraph.php
字號:
<?php//=======================================================================// File: JPGRAPH.PHP// Description: PHP4 Graph Plotting library. Base module.// Created: 2001-01-08// Author: Johan Persson (johanp@aditus.nu)// Ver: $Id: jpgraph.php,v 1.242.2.96 2005/01/16 20:51:53 aditus Exp $//// License: This code is released under QPL 1.0// Copyright (C) 2001,2002,2003,2004 Johan Persson Aditus Consulting//========================================================================require_once('jpg-config.inc');// Version infoDEFINE('JPG_VERSION','1.17beta2');// For internal use onlyDEFINE("_JPG_DEBUG",false);DEFINE("_FORCE_IMGTOFILE",false);DEFINE("_FORCE_IMGDIR",'/tmp/jpgimg/');//------------------------------------------------------------------------// Automatic settings of path for cache and font directory// if they have not been previously specified//------------------------------------------------------------------------if(USE_CACHE) { if (!defined('CACHE_DIR')) { if ( strstr( PHP_OS, 'WIN') ) { if( empty($_SERVER['TEMP']) ) { die('JpGraph Error: No path specified for CACHE_DIR. Please specify CACHE_DIR manually in jpg-config.inc'); } else { DEFINE('CACHE_DIR', $_SERVER['TEMP'] . '/'); } } else { DEFINE('CACHE_DIR','/tmp/jpgraph_cache/'); } }}elseif( !defined('CACHE_DIR') ) { DEFINE('CACHE_DIR', '');}if (!defined('TTF_DIR')) { if (strstr( PHP_OS, 'WIN') ) { $sroot = getenv('SystemRoot'); if( empty($sroot) ) { die('JpGraph Error: No path specified for TTF_DIR and path can not be determined automatically. Please specify TTF_DIR manually (in jpg-config.inc).'); } else { DEFINE('TTF_DIR', $sroot.'/fonts/'); } } else { DEFINE('TTF_DIR','/usr/X11R6/lib/X11/fonts/truetype/'); }}//------------------------------------------------------------------// Constants which are used as parameters for the method calls//------------------------------------------------------------------// TTF Font familiesDEFINE("FF_COURIER",10);DEFINE("FF_VERDANA",11);DEFINE("FF_TIMES",12);DEFINE("FF_COMIC",14);DEFINE("FF_ARIAL",15);DEFINE("FF_GEORGIA",16);DEFINE("FF_TREBUCHE",17);// Gnome Vera font// Available from http://www.gnome.org/fonts/DEFINE("FF_VERA",19);DEFINE("FF_VERAMONO",20);DEFINE("FF_VERASERIF",21);// Chinese fontDEFINE("FF_SIMSUN",30);DEFINE("FF_CHINESE",31);DEFINE("FF_BIG5",31);// Japanese fontDEFINE("FF_MINCHO",40);DEFINE("FF_PMINCHO",41);DEFINE("FF_GOTHIC",42);DEFINE("FF_PGOTHIC",43);// Limits for TTF fontsDEFINE('_FF_FIRST',10);DEFINE('_FF_LAST',43);// Older deprecated fonts DEFINE("FF_BOOK",91); // Deprecated fonts from 1.9DEFINE("FF_HANDWRT",92); // Deprecated fonts from 1.9// TTF Font stylesDEFINE("FS_NORMAL",9001);DEFINE("FS_BOLD",9002);DEFINE("FS_ITALIC",9003);DEFINE("FS_BOLDIT",9004);DEFINE("FS_BOLDITALIC",9004);//Definitions for internal font, new styleDEFINE("FF_FONT0",1);DEFINE("FF_FONT1",2);DEFINE("FF_FONT2",4);// Tick densityDEFINE("TICKD_DENSE",1);DEFINE("TICKD_NORMAL",2);DEFINE("TICKD_SPARSE",3);DEFINE("TICKD_VERYSPARSE",4);// Side for ticks and labels. DEFINE("SIDE_LEFT",-1);DEFINE("SIDE_RIGHT",1);DEFINE("SIDE_DOWN",-1);DEFINE("SIDE_BOTTOM",-1);DEFINE("SIDE_UP",1);DEFINE("SIDE_TOP",1);// Legend type stacked vertical or horizontalDEFINE("LEGEND_VERT",0);DEFINE("LEGEND_HOR",1);// Mark types for plot marksDEFINE("MARK_SQUARE",1);DEFINE("MARK_UTRIANGLE",2);DEFINE("MARK_DTRIANGLE",3);DEFINE("MARK_DIAMOND",4);DEFINE("MARK_CIRCLE",5);DEFINE("MARK_FILLEDCIRCLE",6);DEFINE("MARK_CROSS",7);DEFINE("MARK_STAR",8);DEFINE("MARK_X",9);DEFINE("MARK_LEFTTRIANGLE",10);DEFINE("MARK_RIGHTTRIANGLE",11);DEFINE("MARK_FLASH",12);DEFINE("MARK_IMG",13);DEFINE("MARK_FLAG1",14);DEFINE("MARK_FLAG2",15);DEFINE("MARK_FLAG3",16);DEFINE("MARK_FLAG4",17);// Builtin imagesDEFINE("MARK_IMG_PUSHPIN",50);DEFINE("MARK_IMG_SPUSHPIN",50);DEFINE("MARK_IMG_LPUSHPIN",51);DEFINE("MARK_IMG_DIAMOND",52);DEFINE("MARK_IMG_SQUARE",53);DEFINE("MARK_IMG_STAR",54);DEFINE("MARK_IMG_BALL",55);DEFINE("MARK_IMG_SBALL",55);DEFINE("MARK_IMG_MBALL",56);DEFINE("MARK_IMG_LBALL",57);DEFINE("MARK_IMG_BEVEL",58);// Inline definesDEFINE("INLINE_YES",1);DEFINE("INLINE_NO",0);// Format for background imagesDEFINE("BGIMG_FILLPLOT",1);DEFINE("BGIMG_FILLFRAME",2);DEFINE("BGIMG_COPY",3);DEFINE("BGIMG_CENTER",4);// Depth of objectsDEFINE("DEPTH_BACK",0);DEFINE("DEPTH_FRONT",1);// DirectionDEFINE("VERTICAL",1);DEFINE("HORIZONTAL",0);// Axis styles for scientific style axisDEFINE('AXSTYLE_SIMPLE',1);DEFINE('AXSTYLE_BOXIN',2);DEFINE('AXSTYLE_BOXOUT',3);DEFINE('AXSTYLE_YBOXIN',4);DEFINE('AXSTYLE_YBOXOUT',5);// Style for title backgroundsDEFINE('TITLEBKG_STYLE1',1);DEFINE('TITLEBKG_STYLE2',2);DEFINE('TITLEBKG_STYLE3',3);DEFINE('TITLEBKG_FRAME_NONE',0);DEFINE('TITLEBKG_FRAME_FULL',1);DEFINE('TITLEBKG_FRAME_BOTTOM',2);DEFINE('TITLEBKG_FRAME_BEVEL',3);DEFINE('TITLEBKG_FILLSTYLE_HSTRIPED',1);DEFINE('TITLEBKG_FILLSTYLE_VSTRIPED',2);DEFINE('TITLEBKG_FILLSTYLE_SOLID',3);// Style for background gradient fillsDEFINE('BGRAD_FRAME',1);DEFINE('BGRAD_MARGIN',2);DEFINE('BGRAD_PLOT',3);// Width of tab titlesDEFINE('TABTITLE_WIDTHFIT',0);DEFINE('TABTITLE_WIDTHFULL',-1);// Defines for 3D skew directionsDEFINE('SKEW3D_UP',0);DEFINE('SKEW3D_DOWN',1);DEFINE('SKEW3D_LEFT',2);DEFINE('SKEW3D_RIGHT',3);//// Get hold of gradient class (In Version 2.x)// A client of the library has to manually include this//require_once 'jpgraph_gradient.php';//// A wrapper class that is used to access the specified error object// (to hide the global error parameter and avoid having a GLOBAL directive// in all methods.//class JpGraphError { function Install($aErrObject) { GLOBAL $__jpg_err; $__jpg_err = $aErrObject; } function Raise($aMsg,$aHalt=true){ GLOBAL $__jpg_err; $tmp = new $__jpg_err; $tmp->Raise($aMsg,$aHalt); }}//// ... and install the default error handler//if( USE_IMAGE_ERROR_HANDLER ) { $__jpg_err = "JpGraphErrObjectImg";}else { $__jpg_err = "JpGraphErrObject"; }//// Make GD sanity check//if( !function_exists("imagetypes") || !function_exists('imagecreatefromstring') ) { JpGraphError::Raise("This PHP installation is not configured with the GD library. Please recompile PHP with GD support to run JpGraph. (Neither function imagetypes() nor imagecreatefromstring() does exist)");}//// Routine to determine if GD1 or GD2 is installed//function CheckGDVersion() { $GDfuncList = get_extension_funcs('gd'); if( !$GDfuncList ) return 0 ; else { if( in_array('imagegd2',$GDfuncList) && in_array('imagecreatetruecolor',$GDfuncList)) return 2; else return 1; } }//// Check what version of the GD library is installed.//$GLOBALS['gd2'] = false;if( USE_LIBRARY_GD2 === 'auto' ) { $gdversion = CheckGDVersion(); if( $gdversion == 2 ) { $GLOBALS['gd2'] = true; $GLOBALS['copyfunc'] = 'imagecopyresampled'; } elseif( $gdversion == 1 ) { $GLOBALS['gd2'] = false; $GLOBALS['copyfunc'] = 'imagecopyresized'; } else { JpGraphError::Raise(" Your PHP installation does not seem to have the required GD library. Please see the PHP documentation on how to install and enable the GD library."); }}else { $GLOBALS['gd2'] = USE_LIBRARY_GD2; $GLOBALS['copyfunc'] = USE_LIBRARY_GD2 ? 'imagecopyresampled' : 'imagecopyresized';}//// First of all set up a default error handler////=============================================================// The default trivial text error handler.//=============================================================class JpGraphErrObject { var $iTitle = "JpGraph Error"; var $iDest = false; function JpGraphErrObject() { // Empty. Reserved for future use } function SetTitle($aTitle) { $this->iTitle = $aTitle; } function SetStrokeDest($aDest) { $this->iDest = $aDest; } // If aHalt is true then execution can't continue. Typical used for fatal errors. function Raise($aMsg,$aHalt=true) { $aMsg = $this->iTitle.' '.$aMsg; if ($this->iDest) { $f = @fopen($this->iDest,'a'); if( $f ) { @fwrite($f,$aMsg); @fclose($f); } } if( $aHalt ) die(); }}//==============================================================// An image based error handler//==============================================================class JpGraphErrObjectImg extends JpGraphErrObject { function Raise($aMsg,$aHalt=true) { $img_iconerror = 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAAaV'. 'BMVEX//////2Xy8mLl5V/Z2VvMzFi/v1WyslKlpU+ZmUyMjEh/'. 'f0VyckJlZT9YWDxMTDjAwMDy8sLl5bnY2K/MzKW/v5yyspKlpY'. 'iYmH+MjHY/PzV/f2xycmJlZVlZWU9MTEXY2Ms/PzwyMjLFTjea'. 'AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACx'. 'IAAAsSAdLdfvwAAAAHdElNRQfTBgISOCqusfs5AAABLUlEQVR4'. '2tWV3XKCMBBGWfkranCIVClKLd/7P2Q3QsgCxjDTq+6FE2cPH+'. 'xJ0Ogn2lQbsT+Wrs+buAZAV4W5T6Bs0YXBBwpKgEuIu+JERAX6'. 'wM2rHjmDdEITmsQEEmWADgZm6rAjhXsoMGY9B/NZBwJzBvn+e3'. 'wHntCAJdGu9SviwIwoZVDxPB9+Rc0TSEbQr0j3SA1gwdSn6Db0'. '6Tm1KfV6yzWGQO7zdpvyKLKBDmRFjzeB3LYgK7r6A/noDAfjtS'. 'IXaIzbJSv6WgUebTMV4EoRB8a2mQiQjgtF91HdKDKZ1gtFtQjk'. 'YcWaR5OKOhkYt+ZsTFdJRfPAApOpQYJTNHvCRSJR6SJngQadfc'. 'vd69OLMddVOPCGVnmrFD8bVYd3JXfxXPtLR/+mtv59/ALWiiMx'. 'qL72fwAAAABJRU5ErkJggg==' ; if( function_exists("imagetypes") ) $supported = imagetypes(); else $supported = 0; if( !function_exists('imagecreatefromstring') ) $supported = 0; if( ob_get_length() || headers_sent() || !($supported & IMG_PNG) ) { // Special case for headers already sent or that the installation doesn't support // the PNG format (which the error icon is encoded in). // Dont return an image since it can't be displayed die($this->iTitle.' '.$aMsg); } $aMsg = wordwrap($aMsg,55); $lines = substr_count($aMsg,"\n"); // Create the error icon GD $erricon = Image::CreateFromString(base64_decode($img_iconerror)); // Create an image that contains the error text. $w=400; $h=100 + 15*max(0,$lines-3); $img = new Image($w,$h); // Drop shadow $img->SetColor("gray"); $img->FilledRectangle(5,5,$w-1,$h-1,10); $img->SetColor("gray:0.7"); $img->FilledRectangle(5,5,$w-3,$h-3,10); // Window background $img->SetColor("lightblue"); $img->FilledRectangle(1,1,$w-5,$h-5); $img->CopyCanvasH($img->img,$erricon,5,30,0,0,40,40); // Window border $img->SetColor("black"); $img->Rectangle(1,1,$w-5,$h-5); $img->Rectangle(0,0,$w-4,$h-4); // Window top row $img->SetColor("darkred"); for($y=3; $y < 18; $y += 2 ) $img->Line(1,$y,$w-6,$y); // "White shadow" $img->SetColor("white"); // Left window edge $img->Line(2,2,2,$h-5); $img->Line(2,2,$w-6,2); // "Gray button shadow" $img->SetColor("darkgray"); // Gray window shadow $img->Line(2,$h-6,$w-5,$h-6); $img->Line(3,$h-7,$w-5,$h-7); // Window title $m = floor($w/2-5); $l = 100; $img->SetColor("lightgray:1.3");
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -