⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jpgraph.php

📁 最近在做软交换时研究的一个软交换的东东
💻 PHP
📖 第 1 页 / 共 5 页
字号:
<?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 173 2005-03-13 20:34:07Z rcourtna $//// 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 + -