summaryrefslogtreecommitdiff
path: root/html/jpgraph
diff options
context:
space:
mode:
authorrandommonk <randommonk@gmail.com>2018-01-04 22:52:54 +0000
committerrandommonk <randommonk@gmail.com>2018-01-04 23:06:03 +0000
commitdfc4e20b8e9ca57340e24143539498fb82527697 (patch)
tree50cdec1c1e650e6ca8f0d055b401b2c893e43124 /html/jpgraph
parent66b162b5f01c996fd8a5cd4e570e31f8483cdffa (diff)
Bumped version to 4.3. Added jpgraph stats developed by killerEye
Diffstat (limited to 'html/jpgraph')
-rw-r--r--html/jpgraph/.htaccess10
-rw-r--r--html/jpgraph/d2utmpFU7H531190
-rw-r--r--html/jpgraph/flag_mapping237
-rw-r--r--html/jpgraph/flags.datbin0 -> 982680 bytes
-rw-r--r--html/jpgraph/flags_thumb100x100.datbin0 -> 687670 bytes
-rw-r--r--html/jpgraph/flags_thumb35x35.datbin0 -> 214336 bytes
-rw-r--r--html/jpgraph/flags_thumb60x60.datbin0 -> 375530 bytes
-rw-r--r--html/jpgraph/fonts/DejaVuSans-Bold.ttfbin0 -> 634541 bytes
-rw-r--r--html/jpgraph/fonts/DejaVuSans-BoldOblique.ttfbin0 -> 574990 bytes
-rw-r--r--html/jpgraph/fonts/DejaVuSans-Oblique.ttfbin0 -> 574854 bytes
-rw-r--r--html/jpgraph/fonts/DejaVuSans.ttfbin0 -> 684003 bytes
-rw-r--r--html/jpgraph/fonts/FF_FONT0-Bold.gdfbin0 -> 13456 bytes
-rw-r--r--html/jpgraph/fonts/FF_FONT0.gdfbin0 -> 13456 bytes
-rw-r--r--html/jpgraph/fonts/FF_FONT1-Bold.gdfbin0 -> 18832 bytes
-rw-r--r--html/jpgraph/fonts/FF_FONT1.gdfbin0 -> 18832 bytes
-rw-r--r--html/jpgraph/fonts/FF_FONT2-Bold.gdfbin0 -> 25104 bytes
-rw-r--r--html/jpgraph/fonts/FF_FONT2.gdfbin0 -> 25104 bytes
-rw-r--r--html/jpgraph/gd_image.inc.php2304
-rw-r--r--html/jpgraph/imageSmoothArc.php344
-rw-r--r--html/jpgraph/imgdata_balls.inc.php1061
-rw-r--r--html/jpgraph/imgdata_bevels.inc.php104
-rw-r--r--html/jpgraph/imgdata_diamonds.inc.php177
-rw-r--r--html/jpgraph/imgdata_pushpins.inc.php517
-rw-r--r--html/jpgraph/imgdata_squares.inc.php150
-rw-r--r--html/jpgraph/imgdata_stars.inc.php144
-rw-r--r--html/jpgraph/jpg-config.inc.php138
-rw-r--r--html/jpgraph/jpgraph.php5626
-rw-r--r--html/jpgraph/jpgraph_antispam-digits.php205
-rw-r--r--html/jpgraph/jpgraph_antispam.php615
-rw-r--r--html/jpgraph/jpgraph_bar.php1190
-rw-r--r--html/jpgraph/jpgraph_canvas.php95
-rw-r--r--html/jpgraph/jpgraph_canvtools.php523
-rw-r--r--html/jpgraph/jpgraph_contour.php587
-rw-r--r--html/jpgraph/jpgraph_date.php499
-rw-r--r--html/jpgraph/jpgraph_errhandler.inc.php369
-rw-r--r--html/jpgraph/jpgraph_error.php157
-rw-r--r--html/jpgraph/jpgraph_flags.php376
-rw-r--r--html/jpgraph/jpgraph_gantt.php3955
-rw-r--r--html/jpgraph/jpgraph_gb2312.php1552
-rw-r--r--html/jpgraph/jpgraph_gradient.php434
-rw-r--r--html/jpgraph/jpgraph_iconplot.php190
-rw-r--r--html/jpgraph/jpgraph_imgtrans.php223
-rw-r--r--html/jpgraph/jpgraph_led.php311
-rw-r--r--html/jpgraph/jpgraph_legend.inc.php494
-rw-r--r--html/jpgraph/jpgraph_line.php682
-rw-r--r--html/jpgraph/jpgraph_log.php305
-rw-r--r--html/jpgraph/jpgraph_meshinterpolate.inc.php105
-rw-r--r--html/jpgraph/jpgraph_mgraph.php345
-rw-r--r--html/jpgraph/jpgraph_pie.php1495
-rw-r--r--html/jpgraph/jpgraph_pie3d.php933
-rw-r--r--html/jpgraph/jpgraph_plotband.php635
-rw-r--r--html/jpgraph/jpgraph_plotline.php142
-rw-r--r--html/jpgraph/jpgraph_plotmark.inc.php504
-rw-r--r--html/jpgraph/jpgraph_polar.php897
-rw-r--r--html/jpgraph/jpgraph_radar.php861
-rw-r--r--html/jpgraph/jpgraph_regstat.php215
-rw-r--r--html/jpgraph/jpgraph_rgb.inc.php615
-rw-r--r--html/jpgraph/jpgraph_scatter.php242
-rw-r--r--html/jpgraph/jpgraph_stock.php198
-rw-r--r--html/jpgraph/jpgraph_table.php1325
-rw-r--r--html/jpgraph/jpgraph_text.inc.php327
-rw-r--r--html/jpgraph/jpgraph_theme.inc.php136
-rw-r--r--html/jpgraph/jpgraph_ttf.inc.php631
-rw-r--r--html/jpgraph/jpgraph_utils.inc.php685
-rw-r--r--html/jpgraph/jpgraph_windrose.php1566
-rw-r--r--html/jpgraph/lang/de.inc.php552
-rw-r--r--html/jpgraph/lang/en.inc.php545
-rw-r--r--html/jpgraph/lang/prod.inc.php386
-rw-r--r--html/jpgraph/themes/AquaTheme.class.php202
-rw-r--r--html/jpgraph/themes/GreenTheme.class.php178
-rw-r--r--html/jpgraph/themes/OceanTheme.class.php180
-rw-r--r--html/jpgraph/themes/OrangeTheme.class.php180
-rw-r--r--html/jpgraph/themes/PastelTheme.class.php175
-rw-r--r--html/jpgraph/themes/RoseTheme.class.php180
-rw-r--r--html/jpgraph/themes/SoftyTheme.class.php209
-rw-r--r--html/jpgraph/themes/UniversalTheme.class.php188
-rw-r--r--html/jpgraph/themes/VividTheme.class.php175
77 files changed, 39771 insertions, 0 deletions
diff --git a/html/jpgraph/.htaccess b/html/jpgraph/.htaccess
new file mode 100644
index 0000000..438cccd
--- /dev/null
+++ b/html/jpgraph/.htaccess
@@ -0,0 +1,10 @@
+#------------------------------------------------------------------------------
+# Server root folder www .htaccess
+# This file provides server security limiting access to the localhost only.
+# Comment next four lines to deactivate. (Allows external access)
+#------------------------------------------------------------------------------
+
+Order Deny,Allow
+Deny from all
+Allow from 127.0.0.1
+Allow from ::1
diff --git a/html/jpgraph/d2utmpFU7H53 b/html/jpgraph/d2utmpFU7H53
new file mode 100644
index 0000000..ee01669
--- /dev/null
+++ b/html/jpgraph/d2utmpFU7H53
@@ -0,0 +1,1190 @@
+<?php
+/*=======================================================================
+ // File: JPGRAPH_BAR.PHP
+ // Description: Bar plot extension for JpGraph
+ // Created: 2001-01-08
+ // Ver: $Id: jpgraph_bar.php 1905 2009-10-06 18:00:21Z ljp $
+ //
+ // Copyright (c) Asial Corporation. All rights reserved.
+ //========================================================================
+ */
+
+require_once('jpgraph_plotband.php');
+
+// Pattern for Bars
+DEFINE('PATTERN_DIAG1',1);
+DEFINE('PATTERN_DIAG2',2);
+DEFINE('PATTERN_DIAG3',3);
+DEFINE('PATTERN_DIAG4',4);
+DEFINE('PATTERN_CROSS1',5);
+DEFINE('PATTERN_CROSS2',6);
+DEFINE('PATTERN_CROSS3',7);
+DEFINE('PATTERN_CROSS4',8);
+DEFINE('PATTERN_STRIPE1',9);
+DEFINE('PATTERN_STRIPE2',10);
+
+//===================================================
+// CLASS BarPlot
+// Description: Main code to produce a bar plot
+//===================================================
+class BarPlot extends Plot {
+ public $fill=false,$fill_color="lightblue"; // Default is to fill with light blue
+ public $iPattern=-1,$iPatternDensity=80,$iPatternColor='black';
+ public $valuepos='top';
+ public $grad=false,$grad_style=1;
+ public $grad_fromcolor=array(50,50,200),$grad_tocolor=array(255,255,255);
+ public $ymin=0;
+ protected $width=0.4; // in percent of major ticks
+ protected $abswidth=-1; // Width in absolute pixels
+ protected $ybase=0; // Bars start at 0
+ protected $align="center";
+ protected $bar_shadow=false;
+ protected $bar_shadow_color="black";
+ protected $bar_shadow_hsize=3,$bar_shadow_vsize=3;
+ protected $bar_3d=false;
+ protected $bar_3d_hsize=3,$bar_3d_vsize=3;
+
+ //---------------
+ // CONSTRUCTOR
+ function __construct($datay,$datax=false) {
+ parent::__construct($datay,$datax);
+ ++$this->numpoints;
+ }
+
+ //---------------
+ // PUBLIC METHODS
+
+ // Set a drop shadow for the bar (or rather an "up-right" shadow)
+ function SetShadow($aColor="black",$aHSize=3,$aVSize=3,$aShow=true) {
+ $this->bar_shadow=$aShow;
+ $this->bar_shadow_color=$aColor;
+ $this->bar_shadow_vsize=$aVSize;
+ $this->bar_shadow_hsize=$aHSize;
+
+ // Adjust the value margin to compensate for shadow
+ $this->value->margin += $aVSize;
+ }
+
+ function Set3D($aHSize=3,$aVSize=3,$aShow=true) {
+ $this->bar_3d=$aShow;
+ $this->bar_3d_vsize=$aVSize;
+ $this->bar_3d_hsize=$aHSize;
+
+ $this->value->margin += $aVSize;
+ }
+
+ // DEPRECATED use SetYBase instead
+ function SetYMin($aYStartValue) {
+ //die("JpGraph Error: Deprecated function SetYMin. Use SetYBase() instead.");
+ $this->ybase=$aYStartValue;
+ }
+
+ // Specify the base value for the bars
+ function SetYBase($aYStartValue) {
+ $this->ybase=$aYStartValue;
+ }
+
+ // The method will take the specified pattern anre
+ // return a pattern index that corresponds to the original
+ // patterm being rotated 90 degreees. This is needed when plottin
+ // Horizontal bars
+ function RotatePattern($aPat,$aRotate=true) {
+ $rotate = array(1 => 2, 2 => 1, 3 => 3, 4 => 5, 5 => 4, 6 => 6, 7 => 7, 8 => 8);
+ if( $aRotate ) {
+ return $rotate[$aPat];
+ }
+ else {
+ return $aPat;
+ }
+ }
+
+ function Legend($graph) {
+ if( $this->grad && $this->legend!="" && !$this->fill ) {
+ $color=array($this->grad_fromcolor,$this->grad_tocolor);
+ // In order to differentiate between gradients and cooors specified as an RGB triple
+ $graph->legend->Add($this->legend,$color,"",-$this->grad_style,
+ $this->legendcsimtarget,$this->legendcsimalt,$this->legendcsimwintarget);
+ }
+ elseif( $this->legend!="" && ($this->iPattern > -1 || is_array($this->iPattern)) ) {
+ if( is_array($this->iPattern) ) {
+ $p1 = $this->RotatePattern( $this->iPattern[0], $graph->img->a == 90 );
+ $p2 = $this->iPatternColor[0];
+ $p3 = $this->iPatternDensity[0];
+ }
+ else {
+ $p1 = $this->RotatePattern( $this->iPattern, $graph->img->a == 90 );
+ $p2 = $this->iPatternColor;
+ $p3 = $this->iPatternDensity;
+ }
+ if( $p3 < 90 ) $p3 += 5;
+ $color = array($p1,$p2,$p3,$this->fill_color);
+ // A kludge: Too mark that we add a pattern we use a type value of < 100
+ $graph->legend->Add($this->legend,$color,"",-101,
+ $this->legendcsimtarget,$this->legendcsimalt,$this->legendcsimwintarget);
+ }
+ elseif( $this->fill_color && $this->legend!="" ) {
+ if( is_array($this->fill_color) ) {
+ $graph->legend->Add($this->legend,$this->fill_color[0],"",0,
+ $this->legendcsimtarget,$this->legendcsimalt,$this->legendcsimwintarget);
+ }
+ else {
+ $graph->legend->Add($this->legend,$this->fill_color,"",0,
+ $this->legendcsimtarget,$this->legendcsimalt,$this->legendcsimwintarget);
+ }
+ }
+ }
+
+ // Gets called before any axis are stroked
+ function PreStrokeAdjust($graph) {
+ parent::PreStrokeAdjust($graph);
+
+ // If we are using a log Y-scale we want the base to be at the
+ // minimum Y-value unless the user have specifically set some other
+ // value than the default.
+ if( substr($graph->axtype,-3,3)=="log" && $this->ybase==0 )
+ $this->ybase = $graph->yaxis->scale->GetMinVal();
+
+ // For a "text" X-axis scale we will adjust the
+ // display of the bars a little bit.
+ if( substr($graph->axtype,0,3)=="tex" ) {
+ // Position the ticks between the bars
+ $graph->xaxis->scale->ticks->SetXLabelOffset(0.5,0);
+
+ // Center the bars
+ if( $this->abswidth > -1 ) {
+ $graph->SetTextScaleAbsCenterOff($this->abswidth);
+ }
+ else {
+ if( $this->align == "center" )
+ $graph->SetTextScaleOff(0.5-$this->width/2);
+ elseif( $this->align == "right" )
+ $graph->SetTextScaleOff(1-$this->width);
+ }
+ }
+ elseif( ($this instanceof AccBarPlot) || ($this instanceof GroupBarPlot) ) {
+ // We only set an absolute width for linear and int scale
+ // for text scale the width will be set to a fraction of
+ // the majstep width.
+ if( $this->abswidth == -1 ) {
+ // Not set
+ // set width to a visuable sensible default
+ $this->abswidth = $graph->img->plotwidth/(2*$this->numpoints);
+ }
+ }
+ }
+
+ function Min() {
+ $m = parent::Min();
+ if( $m[1] >= $this->ybase ) $m[1] = $this->ybase;
+ return $m;
+ }
+
+ function Max() {
+ $m = parent::Max();
+ if( $m[1] <= $this->ybase ) $m[1] = $this->ybase;
+ return $m;
+ }
+
+ // Specify width as fractions of the major stepo size
+ function SetWidth($aWidth) {
+ if( $aWidth > 1 ) {
+ // Interpret this as absolute width
+ $this->abswidth=$aWidth;
+ }
+ else {
+ $this->width=$aWidth;
+ }
+ }
+
+ // Specify width in absolute pixels. If specified this
+ // overrides SetWidth()
+ function SetAbsWidth($aWidth) {
+ $this->abswidth=$aWidth;
+ }
+
+ function SetAlign($aAlign) {
+ $this->align=$aAlign;
+ }
+
+ function SetNoFill() {
+ $this->grad = false;
+ $this->fill_color=false;
+ $this->fill=false;
+ }
+
+ function SetFillColor($aColor) {
+ // Do an extra error check if the color is specified as an RGB array triple
+ // In that case convert it to a hex string since it will otherwise be
+ // interpretated as an array of colors for each individual bar.
+
+ $aColor = RGB::tryHexConversion($aColor);
+ $this->fill = true ;
+ $this->fill_color=$aColor;
+
+ }
+
+ function SetFillGradient($aFromColor,$aToColor=null,$aStyle=null) {
+ $this->grad = true;
+ $this->grad_fromcolor = $aFromColor;
+ $this->grad_tocolor = $aToColor;
+ $this->grad_style = $aStyle;
+ }
+
+ function SetValuePos($aPos) {
+ $this->valuepos = $aPos;
+ }
+
+ function SetPattern($aPattern, $aColor='black'){
+ if( is_array($aPattern) ) {
+ $n = count($aPattern);
+ $this->iPattern = array();
+ $this->iPatternDensity = array();
+ if( is_array($aColor) ) {
+ $this->iPatternColor = array();
+ if( count($aColor) != $n ) {
+ JpGraphError::RaiseL(2001);//('NUmber of colors is not the same as the number of patterns in BarPlot::SetPattern()');
+ }
+ }
+ else {
+ $this->iPatternColor = $aColor;
+ }
+ for( $i=0; $i < $n; ++$i ) {
+ $this->_SetPatternHelper($aPattern[$i], $this->iPattern[$i], $this->iPatternDensity[$i]);
+ if( is_array($aColor) ) {
+ $this->iPatternColor[$i] = $aColor[$i];
+ }
+ }
+ }
+ else {
+ $this->_SetPatternHelper($aPattern, $this->iPattern, $this->iPatternDensity);
+ $this->iPatternColor = $aColor;
+ }
+ }
+
+ function _SetPatternHelper($aPattern, &$aPatternValue, &$aDensity){
+ switch( $aPattern ) {
+ case PATTERN_DIAG1:
+ $aPatternValue= 1;
+ $aDensity = 92;
+ break;
+ case PATTERN_DIAG2:
+ $aPatternValue= 1;
+ $aDensity = 78;
+ break;
+ case PATTERN_DIAG3:
+ $aPatternValue= 2;
+ $aDensity = 92;
+ break;
+ case PATTERN_DIAG4:
+ $aPatternValue= 2;
+ $aDensity = 78;
+ break;
+ case PATTERN_CROSS1:
+ $aPatternValue= 8;
+ $aDensity = 90;
+ break;
+ case PATTERN_CROSS2:
+ $aPatternValue= 8;
+ $aDensity = 78;
+ break;
+ case PATTERN_CROSS3:
+ $aPatternValue= 8;
+ $aDensity = 65;
+ break;
+ case PATTERN_CROSS4:
+ $aPatternValue= 7;
+ $aDensity = 90;
+ break;
+ case PATTERN_STRIPE1:
+ $aPatternValue= 5;
+ $aDensity = 94;
+ break;
+ case PATTERN_STRIPE2:
+ $aPatternValue= 5;
+ $aDensity = 85;
+ break;
+ default:
+ JpGraphError::RaiseL(2002);
+ //('Unknown pattern specified in call to BarPlot::SetPattern()');
+ }
+ }
+
+ function Stroke($img,$xscale,$yscale) {
+
+ $numpoints = count($this->coords[0]);
+ if( isset($this->coords[1]) ) {
+ if( count($this->coords[1])!=$numpoints ) {
+ JpGraphError::RaiseL(2003,count($this->coords[1]),$numpoints);
+ //"Number of X and Y points are not equal. Number of X-points:".count($this->coords[1])."Number of Y-points:$numpoints");
+ }
+ else {
+ $exist_x = true;
+ }
+ }
+ else {
+ $exist_x = false;
+ }
+
+
+ $numbars=count($this->coords[0]);
+
+ // Use GetMinVal() instead of scale[0] directly since in the case
+ // of log scale we get a correct value. Log scales will have negative
+ // values for values < 1 while still not representing negative numbers.
+ if( $yscale->GetMinVal() >= 0 )
+ $zp=$yscale->scale_abs[0];
+ else {
+ $zp=$yscale->Translate(0);
+ }
+
+ if( $this->abswidth > -1 ) {
+ $abswidth=$this->abswidth;
+ }
+ else {
+ $abswidth=round($this->width*$xscale->scale_factor,0);
+ }
+
+ // Count pontetial pattern array to avoid doing the count for each iteration
+ if( is_array($this->iPattern) ) {
+ $np = count($this->iPattern);
+ }
+
+ $grad = null;
+ for($i=0; $i < $numbars; ++$i) {
+
+ // If value is NULL, or 0 then don't draw a bar at all
+ if ($this->coords[0][$i] === null || $this->coords[0][$i] === '' )
+ continue;
+
+ if( $exist_x ) {
+ $x=$this->coords[1][$i];
+ }
+ else {
+ $x=$i;
+ }
+
+ $x=$xscale->Translate($x);
+
+ // Comment Note: This confuses the positioning when using acc together with
+ // grouped bars. Workaround for fixing #191
+ /*
+ if( !$xscale->textscale ) {
+ if($this->align=="center")
+ $x -= $abswidth/2;
+ elseif($this->align=="right")
+ $x -= $abswidth;
+ }
+ */
+ // Stroke fill color and fill gradient
+ $pts=array(
+ $x,$zp,
+ $x,$yscale->Translate($this->coords[0][$i]),
+ $x+$abswidth,$yscale->Translate($this->coords[0][$i]),
+ $x+$abswidth,$zp);
+ if( $this->grad ) {
+ if( $grad === null ) {
+ $grad = new Gradient($img);
+ }
+ if( is_array($this->grad_fromcolor) ) {
+ // The first argument (grad_fromcolor) can be either an array or a single color. If it is an array
+ // then we have two choices. It can either a) be a single color specified as an RGB triple or it can be
+ // an array to specify both (from, to style) for each individual bar. The way to know the difference is
+ // to investgate the first element. If this element is an integer [0,255] then we assume it is an RGB
+ // triple.
+ $ng = count($this->grad_fromcolor);
+ if( $ng === 3 ) {
+ if( is_numeric($this->grad_fromcolor[0]) && $this->grad_fromcolor[0] > 0 && $this->grad_fromcolor[0] < 256 ) {
+ // RGB Triple
+ $fromcolor = $this->grad_fromcolor;
+ $tocolor = $this->grad_tocolor;
+ $style = $this->grad_style;
+ }
+ else {
+ $fromcolor = $this->grad_fromcolor[$i % $ng][0];
+ $tocolor = $this->grad_fromcolor[$i % $ng][1];
+ $style = $this->grad_fromcolor[$i % $ng][2];
+ }
+ }
+ else {
+ $fromcolor = $this->grad_fromcolor[$i % $ng][0];
+ $tocolor = $this->grad_fromcolor[$i % $ng][1];
+ $style = $this->grad_fromcolor[$i % $ng][2];
+ }
+ $grad->FilledRectangle($pts[2],$pts[3],
+ $pts[6],$pts[7],
+ $fromcolor,$tocolor,$style);
+ }
+ else {
+ $grad->FilledRectangle($pts[2],$pts[3],
+ $pts[6],$pts[7],
+ $this->grad_fromcolor,$this->grad_tocolor,$this->grad_style);
+ }
+ }
+ elseif( !empty($this->fill_color) ) {
+ if(is_array($this->fill_color)) {
+ $img->PushColor($this->fill_color[$i % count($this->fill_color)]);
+ } else {
+ $img->PushColor($this->fill_color);
+ }