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

📄 jpgraph.php

📁 极限网络智能办公系统 Office Automation V3.0官方100%源代码.
💻 PHP
📖 第 1 页 / 共 5 页
字号:
<?php 
//======================================================================= 
// File:     JPGRAPH.PHP 
// Description:     PHP Graph Plotting library. Base module. 
// Created:      2001-01-08 
// Author:     Johan Persson (johanp@aditus.nu) 
// Ver:          $Id: jpgraph.php 84 2005-07-10 18:22:06Z ljp $ 
// 
// Copyright (c) Aditus Consulting. All rights reserved. 
//======================================================================== 

require_once('jpg-config.inc'); 

// Version info 
DEFINE('JPG_VERSION','1.19dev'); 

// For internal use only 
DEFINE("_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 families 
DEFINE("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 font 
DEFINE("FF_SIMSUN",30); 
DEFINE("FF_CHINESE",31); 
DEFINE("FF_BIG5",31); 

// Japanese font 
DEFINE("FF_MINCHO",40); 
DEFINE("FF_PMINCHO",41); 
DEFINE("FF_GOTHIC",42); 
DEFINE("FF_PGOTHIC",43); 

// Limits for TTF fonts 
DEFINE('_FF_FIRST',10); 
DEFINE('_FF_LAST',43); 

// Older deprecated fonts 
DEFINE("FF_BOOK",91); // Deprecated fonts from 1.9 
DEFINE("FF_HANDWRT",92); // Deprecated fonts from 1.9 

// TTF Font styles 
DEFINE("FS_NORMAL",9001); 
DEFINE("FS_BOLD",9002); 
DEFINE("FS_ITALIC",9003); 
DEFINE("FS_BOLDIT",9004); 
DEFINE("FS_BOLDITALIC",9004); 

//Definitions for internal font, new style 
DEFINE("FF_FONT0",1); 
DEFINE("FF_FONT1",2); 
DEFINE("FF_FONT2",4); 

// Tick density 
DEFINE("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 horizontal 
DEFINE("LEGEND_VERT",0); 
DEFINE("LEGEND_HOR",1); 

// Mark types for plot marks 
DEFINE("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 images 
DEFINE("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 defines 
DEFINE("INLINE_YES",1); 
DEFINE("INLINE_NO",0); 

// Format for background images 
DEFINE("BGIMG_FILLPLOT",1); 
DEFINE("BGIMG_FILLFRAME",2); 
DEFINE("BGIMG_COPY",3); 
DEFINE("BGIMG_CENTER",4); 

// Depth of objects 
DEFINE("DEPTH_BACK",0); 
DEFINE("DEPTH_FRONT",1); 

// Direction 
DEFINE("VERTICAL",1); 
DEFINE("HORIZONTAL",0); 


// Axis styles for scientific style axis 
DEFINE('AXSTYLE_SIMPLE',1); 
DEFINE('AXSTYLE_BOXIN',2); 
DEFINE('AXSTYLE_BOXOUT',3); 
DEFINE('AXSTYLE_YBOXIN',4); 
DEFINE('AXSTYLE_YBOXOUT',5); 

// Style for title backgrounds 
DEFINE('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 fills 
DEFINE('BGRAD_FRAME',1); 
DEFINE('BGRAD_MARGIN',2); 
DEFINE('BGRAD_PLOT',3); 

// Width of tab titles 
DEFINE('TABTITLE_WIDTHFIT',0); 
DEFINE('TABTITLE_WIDTHFULL',-1); 

// Defines for 3D skew directions 
DEFINE('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. 
// 
GLOBAL $__jpg_err; 
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"); 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -