function pDraw::drawZoneChart in Visitors 7.2
Same name and namespace in other branches
- 7 pChart/class/pDraw.class.php \pDraw::drawZoneChart()
File
- pChart/
class/ pDraw.class.php, line 3836
Class
Code
function drawZoneChart($SerieA, $SerieB, $Format = NULL) {
$AxisID = isset($Format["AxisID"]) ? $Format["AxisID"] : 0;
$LineR = isset($Format["LineR"]) ? $Format["LineR"] : 150;
$LineG = isset($Format["LineG"]) ? $Format["LineG"] : 150;
$LineB = isset($Format["LineB"]) ? $Format["LineB"] : 150;
$LineAlpha = isset($Format["LineAlpha"]) ? $Format["LineAlpha"] : 50;
$LineTicks = isset($Format["LineTicks"]) ? $Format["LineTicks"] : 1;
$AreaR = isset($Format["AreaR"]) ? $Format["AreaR"] : 150;
$AreaG = isset($Format["AreaG"]) ? $Format["AreaG"] : 150;
$AreaB = isset($Format["AreaB"]) ? $Format["AreaB"] : 150;
$AreaAlpha = isset($Format["AreaAlpha"]) ? $Format["AreaAlpha"] : 5;
$this->LastChartLayout = CHART_LAST_LAYOUT_REGULAR;
$Data = $this->DataSet
->getData();
if (!isset($Data["Series"][$SerieA]["Data"]) || !isset($Data["Series"][$SerieB]["Data"])) {
return 0;
}
$SerieAData = $Data["Series"][$SerieA]["Data"];
$SerieBData = $Data["Series"][$SerieB]["Data"];
list($XMargin, $XDivs) = $this
->scaleGetXSettings();
$Mode = $Data["Axis"][$AxisID]["Display"];
$Format = $Data["Axis"][$AxisID]["Format"];
$Unit = $Data["Axis"][$AxisID]["Unit"];
$PosArrayA = $this
->scaleComputeY($SerieAData, array(
"AxisID" => $AxisID,
));
$PosArrayB = $this
->scaleComputeY($SerieBData, array(
"AxisID" => $AxisID,
));
if (count($PosArrayA) != count($PosArrayB)) {
return 0;
}
if ($Data["Orientation"] == SCALE_POS_LEFTRIGHT) {
if ($XDivs == 0) {
$XStep = ($this->GraphAreaX2 - $this->GraphAreaX1) / 4;
}
else {
$XStep = ($this->GraphAreaX2 - $this->GraphAreaX1 - $XMargin * 2) / $XDivs;
}
$X = $this->GraphAreaX1 + $XMargin;
$LastX = NULL;
$LastY = NULL;
$LastX = NULL;
$LastY1 = NULL;
$LastY2 = NULL;
$BoundsA = "";
$BoundsB = "";
foreach ($PosArrayA as $Key => $Y1) {
$Y2 = $PosArrayB[$Key];
$BoundsA[] = $X;
$BoundsA[] = $Y1;
$BoundsB[] = $X;
$BoundsB[] = $Y2;
$LastX = $X;
$LastY1 = $Y1;
$LastY2 = $Y2;
$X = $X + $XStep;
}
$Bounds = array_merge($BoundsA, $this
->reversePlots($BoundsB));
$this
->drawPolygonChart($Bounds, array(
"R" => $AreaR,
"G" => $AreaG,
"B" => $AreaB,
"Alpha" => $AreaAlpha,
));
for ($i = 0; $i <= count($BoundsA) - 4; $i = $i + 2) {
$this
->drawLine($BoundsA[$i], $BoundsA[$i + 1], $BoundsA[$i + 2], $BoundsA[$i + 3], array(
"R" => $LineR,
"G" => $LineG,
"B" => $LineB,
"Alpha" => $LineAlpha,
"Ticks" => $LineTicks,
));
$this
->drawLine($BoundsB[$i], $BoundsB[$i + 1], $BoundsB[$i + 2], $BoundsB[$i + 3], array(
"R" => $LineR,
"G" => $LineG,
"B" => $LineB,
"Alpha" => $LineAlpha,
"Ticks" => $LineTicks,
));
}
}
else {
if ($XDivs == 0) {
$YStep = ($this->GraphAreaY2 - $this->GraphAreaY1) / 4;
}
else {
$YStep = ($this->GraphAreaY2 - $this->GraphAreaY1 - $XMargin * 2) / $XDivs;
}
$Y = $this->GraphAreaY1 + $XMargin;
$LastX = NULL;
$LastY = NULL;
$LastY = NULL;
$LastX1 = NULL;
$LastX2 = NULL;
$BoundsA = "";
$BoundsB = "";
foreach ($PosArrayA as $Key => $X1) {
$X2 = $PosArrayB[$Key];
$BoundsA[] = $X1;
$BoundsA[] = $Y;
$BoundsB[] = $X2;
$BoundsB[] = $Y;
$LastY = $Y;
$LastX1 = $X1;
$LastX2 = $X2;
$Y = $Y + $YStep;
}
$Bounds = array_merge($BoundsA, $this
->reversePlots($BoundsB));
$this
->drawPolygonChart($Bounds, array(
"R" => $AreaR,
"G" => $AreaG,
"B" => $AreaB,
"Alpha" => $AreaAlpha,
));
for ($i = 0; $i <= count($BoundsA) - 4; $i = $i + 2) {
$this
->drawLine($BoundsA[$i], $BoundsA[$i + 1], $BoundsA[$i + 2], $BoundsA[$i + 3], array(
"R" => $LineR,
"G" => $LineG,
"B" => $LineB,
"Alpha" => $LineAlpha,
"Ticks" => $LineTicks,
));
$this
->drawLine($BoundsB[$i], $BoundsB[$i + 1], $BoundsB[$i + 2], $BoundsB[$i + 3], array(
"R" => $LineR,
"G" => $LineG,
"B" => $LineB,
"Alpha" => $LineAlpha,
"Ticks" => $LineTicks,
));
}
}
}