亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? jpgraph_line.php

?? asterisk用 的voip記費軟件
?? PHP
字號:
<?php/*=======================================================================// File: 	JPGRAPH_LINE.PHP// Description:	Line plot extension for JpGraph// Created: 	2001-01-08// Author:	Johan Persson (johanp@aditus.nu)// Ver:		$Id: jpgraph_line.php,v 1.48.2.6 2004/12/11 13:40:44 aditus Exp $//// License:	This code is released under QPL// Copyright (C) 2001,2002 Johan Persson//========================================================================*/require_once ('jpgraph_plotmark.inc');// constants for the (filled) areaDEFINE("LP_AREA_FILLED", true);DEFINE("LP_AREA_NOT_FILLED", false);DEFINE("LP_AREA_BORDER",false);DEFINE("LP_AREA_NO_BORDER",true);//===================================================// CLASS LinePlot// Description: //===================================================class LinePlot extends Plot{    var $filled=false;    var $fill_color='blue';    var $mark=null;    var $step_style=false, $center=false;    var $line_style=1;	// Default to solid    var $filledAreas = array(); // array of arrays(with min,max,col,filled in them)    var $barcenter=false;  // When we mix line and bar. Should we center the line in the bar.    var $fillFromMin = false ;    var $fillgrad=false,$fillgrad_fromcolor='navy',$fillgrad_tocolor='silver',$fillgrad_numcolors=100;    var $iFastStroke=false;//---------------// CONSTRUCTOR    function LinePlot(&$datay,$datax=false) {	$this->Plot($datay,$datax);	$this->mark = new PlotMark();    }//---------------// PUBLIC METHODS	    // Set style, filled or open    function SetFilled($aFlag=true) {    	JpGraphError::Raise('LinePlot::SetFilled() is deprecated. Use SetFillColor()');    }	    function SetBarCenter($aFlag=true) {	$this->barcenter=$aFlag;    }    function SetStyle($aStyle) {	$this->line_style=$aStyle;    }	    function SetStepStyle($aFlag=true) {	$this->step_style = $aFlag;    }	    function SetColor($aColor) {	parent::SetColor($aColor);    }	    function SetFillFromYMin($f=true) {	$this->fillFromMin = $f ;    }        function SetFillColor($aColor,$aFilled=true) {	$this->fill_color=$aColor;	$this->filled=$aFilled;    }    function SetFillGradient($aFromColor,$aToColor,$aNumColors=100,$aFilled=true) {	$this->fillgrad_fromcolor = $aFromColor;	$this->fillgrad_tocolor   = $aToColor;	$this->fillgrad_numcolors = $aNumColors;	$this->filled = $aFilled;	$this->fillgrad = true;    }	    function Legend(&$graph) {	if( $this->legend!="" ) {	    if( $this->filled ) {		$graph->legend->Add($this->legend,				    $this->fill_color,$this->mark,0,				    $this->legendcsimtarget,$this->legendcsimalt);	    } else {		$graph->legend->Add($this->legend,				    $this->color,$this->mark,$this->line_style,				    $this->legendcsimtarget,$this->legendcsimalt);	    }	}	    }    function AddArea($aMin=0,$aMax=0,$aFilled=LP_AREA_NOT_FILLED,$aColor="gray9",$aBorder=LP_AREA_BORDER) {	if($aMin > $aMax) {	    // swap	    $tmp = $aMin;	    $aMin = $aMax;	    $aMax = $tmp;	} 	$this->filledAreas[] = array($aMin,$aMax,$aColor,$aFilled,$aBorder);    }	    // Gets called before any axis are stroked    function PreStrokeAdjust(&$graph) {	// If another plot type have already adjusted the	// offset we don't touch it.	// (We check for empty in case the scale is  a log scale 	// and hence doesn't contain any xlabel_offset)	if( empty($graph->xaxis->scale->ticks->xlabel_offset) ||	    $graph->xaxis->scale->ticks->xlabel_offset == 0 ) {	    if( $this->center ) {		++$this->numpoints;		$a=0.5; $b=0.5;	    } else {		$a=0; $b=0;	    }	    $graph->xaxis->scale->ticks->SetXLabelOffset($a);	    $graph->SetTextScaleOff($b);							    //$graph->xaxis->scale->ticks->SupressMinorTickMarks();	}    }    function SetFastStroke($aFlg=true) {	$this->iFastStroke = $aFlg;    }    function FastStroke(&$img,&$xscale,&$yscale,$aStartPoint=0,$exist_x=true) {	// An optimized stroke for many data points with no extra 	// features but 60% faster. You can't have values or line styles, or null	// values in plots.	$numpoints=count($this->coords[0]);	if( $this->barcenter ) 	    $textadj = 0.5-$xscale->text_scale_off;	else	    $textadj = 0;	$img->SetColor($this->color);	$img->SetLineWeight($this->weight);	$pnts=$aStartPoint;	while( $pnts < $numpoints ) {	    	    if( $exist_x ) $x=$this->coords[1][$pnts];	    else $x=$pnts+$textadj;	    $xt = $xscale->Translate($x);	    $y=$this->coords[0][$pnts];	    $yt = $yscale->Translate($y);    	    if( is_numeric($y) ) {		$cord[] = $xt;		$cord[] = $yt;	    }	    elseif( $y == '-' && $pnts > 0 ) {		// Just ignore	    }	    else {		JpGraphError::Raise('Plot too complicated for fast line Stroke. Use standard Stroke()');		return;	    }	    ++$pnts;	} // WHILE	$img->Polygon($cord,false,true);    }	    function Stroke(&$img,&$xscale,&$yscale) {	$numpoints=count($this->coords[0]);	if( isset($this->coords[1]) ) {	    if( count($this->coords[1])!=$numpoints )		JpGraphError::Raise("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;	if( $this->barcenter ) 	    $textadj = 0.5-$xscale->text_scale_off;	else	    $textadj = 0;	// Find the first numeric data point	$startpoint=0;	while( $startpoint < $numpoints && !is_numeric($this->coords[0][$startpoint]) )	    ++$startpoint;	// Bail out if no data points	if( $startpoint == $numpoints ) 	    return;	if( $this->iFastStroke ) {	    $this->FastStroke($img,$xscale,$yscale,$startpoint,$exist_x);	    return;	}	if( $exist_x )	    $xs=$this->coords[1][$startpoint];	else	    $xs= $textadj+$startpoint;	$img->SetStartPoint($xscale->Translate($xs),			    $yscale->Translate($this->coords[0][$startpoint]));	if( $this->filled ) {	    $cord[] = $xscale->Translate($xs);	    $min = $yscale->GetMinVal();	    if( $min > 0 || $this->fillFromMin )		$cord[] = $yscale->Translate($min);	    else		$cord[] = $yscale->Translate(0);	}	$xt = $xscale->Translate($xs);	$yt = $yscale->Translate($this->coords[0][$startpoint]);	$cord[] = $xt;	$cord[] = $yt;	$yt_old = $yt;	$xt_old = $xt;	$y_old = $this->coords[0][$startpoint];	$this->value->Stroke($img,$this->coords[0][$startpoint],$xt,$yt);	$img->SetColor($this->color);	$img->SetLineWeight($this->weight);	$img->SetLineStyle($this->line_style);	$pnts=$startpoint+1;	$firstnonumeric = false;	while( $pnts < $numpoints ) {	    	    if( $exist_x ) $x=$this->coords[1][$pnts];	    else $x=$pnts+$textadj;	    $xt = $xscale->Translate($x);	    $yt = $yscale->Translate($this->coords[0][$pnts]);	    	    $y=$this->coords[0][$pnts];	    if( $this->step_style ) {		// To handle null values within step style we need to record the		// first non numeric value so we know from where to start if the		// non value is '-'. 		if( is_numeric($y) ) {		    $firstnonumeric = false;		    if( is_numeric($y_old) ) {			$img->StyleLine($xt_old,$yt_old,$xt,$yt_old);			$img->StyleLine($xt,$yt_old,$xt,$yt);		    }		    elseif( $y_old == '-' ) {			$img->StyleLine($xt_first,$yt_first,$xt,$yt_first);			$img->StyleLine($xt,$yt_first,$xt,$yt);					    }		    else {			$yt_old = $yt;			$xt_old = $xt;		    }		    $cord[] = $xt;		    $cord[] = $yt_old;		    $cord[] = $xt;		    $cord[] = $yt;		}		elseif( $firstnonumeric==false ) {		    $firstnonumeric = true;		    $yt_first = $yt_old;		    $xt_first = $xt_old;		}	    }	    else {		if( is_numeric($y) || (is_string($y) && $y != "-") ) {		    $tmp1=$this->coords[0][$pnts];		    $tmp2=$this->coords[0][$pnts-1]; 		 					    if( is_numeric($tmp1)  && (is_numeric($tmp2) || $tmp2=="-" ) ) { 			$img->StyleLineTo($xt,$yt);		    } 		    else {			$img->SetStartPoint($xt,$yt);		    }		    if( is_numeric($tmp1)  && 			(is_numeric($tmp2) || $tmp2=="-" || ($this->filled && $tmp2=='') ) ) { 			$cord[] = $xt;			$cord[] = $yt;		    } 		}	    }	    $yt_old = $yt;	    $xt_old = $xt;	    $y_old = $y;	    $this->StrokeDataValue($img,$this->coords[0][$pnts],$xt,$yt);	    ++$pnts;	}		if( $this->filled  ) {	    $cord[] = $xt;	    if( $min > 0 || $this->fillFromMin )		$cord[] = $yscale->Translate($min);	    else		$cord[] = $yscale->Translate(0);	    if( $this->fillgrad ) {		$img->SetLineWeight(1);		$grad = new Gradient($img);		$grad->SetNumColors($this->fillgrad_numcolors);		$grad->FilledFlatPolygon($cord,$this->fillgrad_fromcolor,$this->fillgrad_tocolor);		$img->SetLineWeight($this->weight);	    }	    else {		$img->SetColor($this->fill_color);			$img->FilledPolygon($cord);	    }	    if( $this->line_weight > 0 ) {		$img->SetColor($this->color);		$img->Polygon($cord);	    }	}	if(!empty($this->filledAreas)) {	    $minY = $yscale->Translate($yscale->GetMinVal());	    $factor = ($this->step_style ? 4 : 2);	    for($i = 0; $i < sizeof($this->filledAreas); ++$i) {		// go through all filled area elements ordered by insertion		// fill polygon array		$areaCoords[] = $cord[$this->filledAreas[$i][0] * $factor];		$areaCoords[] = $minY;		$areaCoords =		    array_merge($areaCoords,				array_slice($cord,					    $this->filledAreas[$i][0] * $factor,					    ($this->filledAreas[$i][1] - $this->filledAreas[$i][0] + ($this->step_style ? 0 : 1))  * $factor));		$areaCoords[] = $areaCoords[sizeof($areaCoords)-2]; // last x		$areaCoords[] = $minY; // last y	    		if($this->filledAreas[$i][3]) {		    $img->SetColor($this->filledAreas[$i][2]);		    $img->FilledPolygon($areaCoords);		    $img->SetColor($this->color);		}		// Check if we should draw the frame.		// If not we still re-draw the line since it might have been		// partially overwritten by the filled area and it doesn't look		// very good.		// TODO: The behaviour is undefined if the line does not have		// any line at the position of the area.		if( $this->filledAreas[$i][4] )		    $img->Polygon($areaCoords);		else	    	    $img->Polygon($cord);		$areaCoords = array();	    }	}		if( $this->mark->type == -1 || $this->mark->show == false )	    return;	for( $pnts=0; $pnts<$numpoints; ++$pnts) {	    if( $exist_x ) $x=$this->coords[1][$pnts];	    else $x=$pnts+$textadj;	    $xt = $xscale->Translate($x);	    $yt = $yscale->Translate($this->coords[0][$pnts]);	    if( is_numeric($this->coords[0][$pnts]) ) {		if( !empty($this->csimtargets[$pnts]) ) {		    $this->mark->SetCSIMTarget($this->csimtargets[$pnts]);		    $this->mark->SetCSIMAlt($this->csimalts[$pnts]);		}		if( $exist_x )		    $x=$this->coords[1][$pnts];		else		    $x=$pnts;		$this->mark->SetCSIMAltVal($this->coords[0][$pnts],$x);		$this->mark->Stroke($img,$xt,$yt);			$this->csimareas .= $this->mark->GetCSIMAreas();		$this->StrokeDataValue($img,$this->coords[0][$pnts],$xt,$yt);	    }	}    }} // Class//===================================================// CLASS AccLinePlot// Description: //===================================================class AccLinePlot extends Plot {    var $plots=null,$nbrplots=0,$numpoints=0;//---------------// CONSTRUCTOR    function AccLinePlot($plots) {        $this->plots = $plots;	$this->nbrplots = count($plots);	$this->numpoints = $plots[0]->numpoints;		    }//---------------// PUBLIC METHODS	    function Legend(&$graph) {	foreach( $this->plots as $p )	    $p->DoLegend($graph);    }	    function Max() {	list($xmax) = $this->plots[0]->Max();	$nmax=0;	for($i=0; $i<count($this->plots); ++$i) {	    $n = count($this->plots[$i]->coords[0]);	    $nmax = max($nmax,$n);	    list($x) = $this->plots[$i]->Max();	    $xmax = Max($xmax,$x);	}	for( $i = 0; $i < $nmax; $i++ ) {	    // Get y-value for line $i by adding the	    // individual bars from all the plots added.	    // It would be wrong to just add the	    // individual plots max y-value since that	    // would in most cases give to large y-value.	    $y=$this->plots[0]->coords[0][$i];	    for( $j = 1; $j < $this->nbrplots; $j++ ) {		$y += $this->plots[ $j ]->coords[0][$i];	    }	    $ymax[$i] = $y;	}	$ymax = max($ymax);	return array($xmax,$ymax);    }	    function Min() {	$nmax=0;	list($xmin,$ysetmin) = $this->plots[0]->Min();	for($i=0; $i<count($this->plots); ++$i) {	    $n = count($this->plots[$i]->coords[0]);	    $nmax = max($nmax,$n);	    list($x,$y) = $this->plots[$i]->Min();	    $xmin = Min($xmin,$x);	    $ysetmin = Min($y,$ysetmin);	}	for( $i = 0; $i < $nmax; $i++ ) {	    // Get y-value for line $i by adding the	    // individual bars from all the plots added.	    // It would be wrong to just add the	    // individual plots min y-value since that	    // would in most cases give to small y-value.	    $y=$this->plots[0]->coords[0][$i];	    for( $j = 1; $j < $this->nbrplots; $j++ ) {		$y += $this->plots[ $j ]->coords[0][$i];	    }	    $ymin[$i] = $y;	}	$ymin = Min($ysetmin,Min($ymin));	return array($xmin,$ymin);    }    // Gets called before any axis are stroked    function PreStrokeAdjust(&$graph) {	// If another plot type have already adjusted the	// offset we don't touch it.	// (We check for empty in case the scale is  a log scale 	// and hence doesn't contain any xlabel_offset)		if( empty($graph->xaxis->scale->ticks->xlabel_offset) ||	    $graph->xaxis->scale->ticks->xlabel_offset == 0 ) {	    if( $this->center ) {		++$this->numpoints;		$a=0.5; $b=0.5;	    } else {		$a=0; $b=0;	    }	    $graph->xaxis->scale->ticks->SetXLabelOffset($a);	    $graph->SetTextScaleOff($b);							    $graph->xaxis->scale->ticks->SupressMinorTickMarks();	}	    }    // To avoid duplicate of line drawing code here we just    // change the y-values for each plot and then restore it    // after we have made the stroke. We must do this copy since    // it wouldn't be possible to create an acc line plot    // with the same graphs, i.e AccLinePlot(array($pl,$pl,$pl));    // since this method would have a side effect.    function Stroke(&$img,&$xscale,&$yscale) {	$img->SetLineWeight($this->weight);	$this->numpoints = count($this->plots[0]->coords[0]);	// Allocate array	$coords[$this->nbrplots][$this->numpoints]=0;	for($i=0; $i<$this->numpoints; $i++) {	    $coords[0][$i]=$this->plots[0]->coords[0][$i]; 	    $accy=$coords[0][$i];	    for($j=1; $j<$this->nbrplots; ++$j ) {		$coords[$j][$i] = $this->plots[$j]->coords[0][$i]+$accy; 		$accy = $coords[$j][$i];	    }	}	for($j=$this->nbrplots-1; $j>=0; --$j) {	    $p=$this->plots[$j];	    for( $i=0; $i<$this->numpoints; ++$i) {		$tmp[$i]=$p->coords[0][$i];		$p->coords[0][$i]=$coords[$j][$i];	    }	    $p->Stroke($img,$xscale,$yscale);	    for( $i=0; $i<$this->numpoints; ++$i) 		$p->coords[0][$i]=$tmp[$i];	    $p->coords[0][]=$tmp;	}    }} // Class/* EOF */?>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲精品7777| 日韩一区二区精品葵司在线 | 成人黄色大片在线观看| 国产丝袜美腿一区二区三区| 成人97人人超碰人人99| 一区二区在线观看视频在线观看| 成人av在线网| 亚洲最新视频在线观看| 欧美丰满嫩嫩电影| 韩国成人在线视频| 国产精品久久久久三级| 欧美视频自拍偷拍| 另类小说欧美激情| 中文字幕在线免费不卡| 欧美日韩日日骚| 九九国产精品视频| 亚洲美女视频在线观看| 91麻豆精品91久久久久久清纯| 狠狠色2019综合网| 日韩理论电影院| 制服.丝袜.亚洲.另类.中文| 国产精品资源在线看| 亚洲乱码国产乱码精品精小说| 欧美日韩免费一区二区三区视频| 捆绑紧缚一区二区三区视频| 国产日韩综合av| 欧美久久一二区| 国产成人亚洲精品狼色在线 | 欧美大片在线观看一区| 盗摄精品av一区二区三区| 亚洲一级在线观看| 国产日本欧美一区二区| 欧美日韩精品三区| 成人国产精品视频| 九九精品一区二区| 亚洲v日本v欧美v久久精品| 久久精品水蜜桃av综合天堂| 欧美日韩视频在线观看一区二区三区| 国产九色精品成人porny| 婷婷六月综合亚洲| 亚洲女人小视频在线观看| 精品国产青草久久久久福利| 欧美视频第二页| 成人av动漫网站| 狠狠色综合播放一区二区| 性久久久久久久久久久久| 日韩美女啊v在线免费观看| 亚洲精品一区二区三区福利| 欧美嫩在线观看| 成人免费av资源| 国产大陆a不卡| 美女视频网站久久| 日韩二区在线观看| 亚洲电影中文字幕在线观看| **网站欧美大片在线观看| 国产亚洲一区字幕| 欧美zozo另类异族| 欧美一区午夜精品| 欧美日本在线播放| 欧美色视频一区| 在线看国产一区| 99国产欧美另类久久久精品| 不卡视频一二三| 成人app网站| 97久久超碰精品国产| www.亚洲在线| 99久久精品国产网站| 波多野结衣视频一区| 成人手机在线视频| 丁香婷婷综合激情五月色| 亚洲主播在线播放| 中文字幕一区二区三区在线播放 | 精品无人码麻豆乱码1区2区| 奇米四色…亚洲| 毛片不卡一区二区| 精品一区二区三区视频在线观看| 日韩不卡一区二区| 九九**精品视频免费播放| 精油按摩中文字幕久久| 国内精品视频666| 国产精品18久久久久久vr| 岛国精品在线观看| 91色综合久久久久婷婷| 在线看国产一区二区| 欧美日韩一区成人| 日韩欧美一二三| 国产亚洲一二三区| 国产精品久久久久影院亚瑟| 日韩毛片在线免费观看| 亚洲一区二区三区三| 日韩精品亚洲专区| 久久精品国产77777蜜臀| 国产伦理精品不卡| www.亚洲在线| 欧美色综合影院| 精品国产制服丝袜高跟| 国产欧美日韩视频在线观看| 亚洲欧美日韩国产综合| 亚洲福中文字幕伊人影院| 麻豆精品一区二区| 不卡视频在线看| 欧美日本韩国一区| 日韩欧美在线1卡| 久久久www免费人成精品| 中文字幕日韩av资源站| 午夜亚洲国产au精品一区二区| 黄色小说综合网站| 91亚洲精品乱码久久久久久蜜桃| 欧美精品一二三区| 国产日韩精品一区二区浪潮av| 亚洲男同性恋视频| 免费日韩伦理电影| aaa欧美日韩| 日韩欧美一区电影| 最新高清无码专区| 激情久久五月天| 91久久国产最好的精华液| 欧美精品一区二区不卡| 亚洲嫩草精品久久| 国产剧情一区在线| 欧美日韩国产首页在线观看| 国产色婷婷亚洲99精品小说| 天堂在线一区二区| 99这里都是精品| 久久影院视频免费| 丝袜美腿亚洲综合| 91亚洲国产成人精品一区二区三| 日韩欧美国产精品| 亚洲一区二区三区中文字幕在线| 国产精品主播直播| 日韩欧美在线综合网| 一区二区日韩av| eeuss鲁片一区二区三区| 日韩精品一区二| 亚洲国产日产av| 91亚洲永久精品| 国产日韩精品一区二区浪潮av| 青青国产91久久久久久| 中文字幕一区av| 中文字幕制服丝袜成人av| 精品一区二区在线视频| 欧美无人高清视频在线观看| 国产亚洲欧美日韩俺去了| 蜜桃视频在线观看一区| 欧美日韩三级在线| 一区二区三区不卡在线观看| 懂色一区二区三区免费观看| 精品国产91九色蝌蚪| 全部av―极品视觉盛宴亚洲| 欧美三级韩国三级日本三斤| 亚洲美女一区二区三区| 99精品热视频| 日韩美女视频19| 91老师片黄在线观看| 国产精品久久久久婷婷二区次| 国产美女视频91| 久久久不卡网国产精品一区| 久久国产精品一区二区| 欧美一级爆毛片| 久久精品国产亚洲aⅴ| 69久久夜色精品国产69蝌蚪网| 亚洲国产sm捆绑调教视频| 色www精品视频在线观看| 亚洲人成在线播放网站岛国| 成人性视频网站| 国产精品第四页| 色综合天天性综合| 亚洲精品中文在线| 欧美日韩综合在线| 奇米色一区二区三区四区| 日韩精品在线网站| 国产在线不卡视频| 中文字幕乱码一区二区免费| 成人国产亚洲欧美成人综合网| 中文字幕一区二区三区不卡| 色又黄又爽网站www久久| 一区二区三区高清在线| 欧美日精品一区视频| 91精品国产一区二区三区香蕉 | 亚洲欧美色一区| 色天天综合色天天久久| 亚洲一区二区视频| 欧美一级理论性理论a| 激情久久五月天| 国产日韩高清在线| 91麻豆产精品久久久久久| 亚洲一二三级电影| 精品国产欧美一区二区| 不卡的av在线| 天堂一区二区在线| 久久久久久久久岛国免费| 波多野结衣一区二区三区| 亚洲成av人片一区二区三区| 欧美一级一区二区| 丁香网亚洲国际| 亚欧色一区w666天堂| 国产亚洲精品超碰| 欧美四级电影在线观看| 国产乱码精品一区二区三| 亚洲丝袜另类动漫二区|