function pDraw::writeBounds in Visitors 7
Same name and namespace in other branches
- 7.2 pChart/class/pDraw.class.php \pDraw::writeBounds()
File
- pChart/
class/ pDraw.class.php, line 3169
Class
Code
function writeBounds($Type = BOUND_BOTH, $Format = NULL) {
$MaxLabelTxt = isset($Format["MaxLabelTxt"]) ? $Format["MaxLabelTxt"] : "max=";
$MinLabelTxt = isset($Format["MinLabelTxt"]) ? $Format["MinLabelTxt"] : "min=";
$Decimals = isset($Format["Decimals"]) ? $Format["Decimals"] : 1;
$ExcludedSeries = isset($Format["ExcludedSeries"]) ? $Format["ExcludedSeries"] : "";
$DisplayOffset = isset($Format["DisplayOffset"]) ? $Format["DisplayOffset"] : 4;
$DisplayColor = isset($Format["DisplayColor"]) ? $Format["DisplayColor"] : DISPLAY_MANUAL;
$MaxDisplayR = isset($Format["MaxDisplayR"]) ? $Format["MaxDisplayR"] : 0;
$MaxDisplayG = isset($Format["MaxDisplayG"]) ? $Format["MaxDisplayG"] : 0;
$MaxDisplayB = isset($Format["MaxDisplayB"]) ? $Format["MaxDisplayB"] : 0;
$MinDisplayR = isset($Format["MinDisplayR"]) ? $Format["MinDisplayR"] : 255;
$MinDisplayG = isset($Format["MinDisplayG"]) ? $Format["MinDisplayG"] : 255;
$MinDisplayB = isset($Format["MinDisplayB"]) ? $Format["MinDisplayB"] : 255;
$MinLabelPos = isset($Format["MinLabelPos"]) ? $Format["MinLabelPos"] : BOUND_LABEL_POS_AUTO;
$MaxLabelPos = isset($Format["MaxLabelPos"]) ? $Format["MaxLabelPos"] : BOUND_LABEL_POS_AUTO;
$DrawBox = isset($Format["DrawBox"]) ? $Format["DrawBox"] : TRUE;
$DrawBoxBorder = isset($Format["DrawBoxBorder"]) ? $Format["DrawBoxBorder"] : FALSE;
$BorderOffset = isset($Format["BorderOffset"]) ? $Format["BorderOffset"] : 5;
$BoxRounded = isset($Format["BoxRounded"]) ? $Format["BoxRounded"] : TRUE;
$RoundedRadius = isset($Format["RoundedRadius"]) ? $Format["RoundedRadius"] : 3;
$BoxR = isset($Format["BoxR"]) ? $Format["BoxR"] : 0;
$BoxG = isset($Format["BoxG"]) ? $Format["BoxG"] : 0;
$BoxB = isset($Format["BoxB"]) ? $Format["BoxB"] : 0;
$BoxAlpha = isset($Format["BoxAlpha"]) ? $Format["BoxAlpha"] : 20;
$BoxSurrounding = isset($Format["BoxSurrounding"]) ? $Format["BoxSurrounding"] : "";
$BoxBorderR = isset($Format["BoxBorderR"]) ? $Format["BoxBorderR"] : 255;
$BoxBorderG = isset($Format["BoxBorderG"]) ? $Format["BoxBorderG"] : 255;
$BoxBorderB = isset($Format["BoxBorderB"]) ? $Format["BoxBorderB"] : 255;
$BoxBorderAlpha = isset($Format["BoxBorderAlpha"]) ? $Format["BoxBorderAlpha"] : 100;
$CaptionSettings = array(
"DrawBox" => $DrawBox,
"DrawBoxBorder" => $DrawBoxBorder,
"BorderOffset" => $BorderOffset,
"BoxRounded" => $BoxRounded,
"RoundedRadius" => $RoundedRadius,
"BoxR" => $BoxR,
"BoxG" => $BoxG,
"BoxB" => $BoxB,
"BoxAlpha" => $BoxAlpha,
"BoxSurrounding" => $BoxSurrounding,
"BoxBorderR" => $BoxBorderR,
"BoxBorderG" => $BoxBorderG,
"BoxBorderB" => $BoxBorderB,
"BoxBorderAlpha" => $BoxBorderAlpha,
);
list($XMargin, $XDivs) = $this
->scaleGetXSettings();
$Data = $this->DataSet
->getData();
foreach ($Data["Series"] as $SerieName => $Serie) {
if ($Serie["isDrawable"] == TRUE && $SerieName != $Data["Abscissa"] && !isset($ExcludedSeries[$SerieName])) {
$R = $Serie["Color"]["R"];
$G = $Serie["Color"]["G"];
$B = $Serie["Color"]["B"];
$Alpha = $Serie["Color"]["Alpha"];
$Ticks = $Serie["Ticks"];
if ($DisplayColor == DISPLAY_AUTO) {
$DisplayR = $R;
$DisplayG = $G;
$DisplayB = $B;
}
$MinValue = $this->DataSet
->getMin($SerieName);
$MaxValue = $this->DataSet
->getMax($SerieName);
$MinPos = VOID;
$MaxPos = VOID;
foreach ($Serie["Data"] as $Key => $Value) {
if ($Value == $MinValue && $MinPos == VOID) {
$MinPos = $Key;
}
if ($Value == $MaxValue) {
$MaxPos = $Key;
}
}
$AxisID = $Serie["Axis"];
$Mode = $Data["Axis"][$AxisID]["Display"];
$Format = $Data["Axis"][$AxisID]["Format"];
$Unit = $Data["Axis"][$AxisID]["Unit"];
$PosArray = $this
->scaleComputeY($Serie["Data"], array(
"AxisID" => $Serie["Axis"],
));
if ($Data["Orientation"] == SCALE_POS_LEFTRIGHT) {
$XStep = ($this->GraphAreaX2 - $this->GraphAreaX1 - $XMargin * 2) / $XDivs;
$X = $this->GraphAreaX1 + $XMargin;
$SerieOffset = isset($Serie["XOffset"]) ? $Serie["XOffset"] : 0;
if ($Type == BOUND_MAX || $Type == BOUND_BOTH) {
if ($MaxLabelPos == BOUND_LABEL_POS_TOP || $MaxLabelPos == BOUND_LABEL_POS_AUTO && $MaxValue >= 0) {
$YPos = $PosArray[$MaxPos] - $DisplayOffset + 2;
$Align = TEXT_ALIGN_BOTTOMMIDDLE;
}
if ($MaxLabelPos == BOUND_LABEL_POS_BOTTOM || $MaxLabelPos == BOUND_LABEL_POS_AUTO && $MaxValue < 0) {
$YPos = $PosArray[$MaxPos] + $DisplayOffset + 2;
$Align = TEXT_ALIGN_TOPMIDDLE;
}
$XPos = $X + $MaxPos * $XStep + $SerieOffset;
$Label = $MaxLabelTxt . $this
->scaleFormat(round($MaxValue, $Decimals), $Mode, $Format, $Unit);
$TxtPos = $this
->getTextBox($XPos, $YPos, $this->FontName, $this->FontSize, 0, $Label);
$XOffset = 0;
$YOffset = 0;
if ($TxtPos[0]["X"] < $this->GraphAreaX1) {
$XOffset = ($this->GraphAreaX1 - $TxtPos[0]["X"]) / 2;
}
if ($TxtPos[1]["X"] > $this->GraphAreaX2) {
$XOffset = -(($TxtPos[1]["X"] - $this->GraphAreaX2) / 2);
}
if ($TxtPos[2]["Y"] < $this->GraphAreaY1) {
$YOffset = $this->GraphAreaY1 - $TxtPos[2]["Y"];
}
if ($TxtPos[0]["Y"] > $this->GraphAreaY2) {
$YOffset = -($TxtPos[0]["Y"] - $this->GraphAreaY2);
}
$CaptionSettings["R"] = $MaxDisplayR;
$CaptionSettings["G"] = $MaxDisplayG;
$CaptionSettings["B"] = $MaxDisplayB;
$CaptionSettings["Align"] = $Align;
$this
->drawText($XPos + $XOffset, $YPos + $YOffset, $Label, $CaptionSettings);
}
if ($Type == BOUND_MIN || $Type == BOUND_BOTH) {
if ($MinLabelPos == BOUND_LABEL_POS_TOP || $MinLabelPos == BOUND_LABEL_POS_AUTO && $MinValue >= 0) {
$YPos = $PosArray[$MinPos] - $DisplayOffset + 2;
$Align = TEXT_ALIGN_BOTTOMMIDDLE;
}
if ($MinLabelPos == BOUND_LABEL_POS_BOTTOM || $MinLabelPos == BOUND_LABEL_POS_AUTO && $MinValue < 0) {
$YPos = $PosArray[$MinPos] + $DisplayOffset + 2;
$Align = TEXT_ALIGN_TOPMIDDLE;
}
$XPos = $X + $MinPos * $XStep + $SerieOffset;
$Label = $MinLabelTxt . $this
->scaleFormat(round($MinValue, $Decimals), $Mode, $Format, $Unit);
$TxtPos = $this
->getTextBox($XPos, $YPos, $this->FontName, $this->FontSize, 0, $Label);
$XOffset = 0;
$YOffset = 0;
if ($TxtPos[0]["X"] < $this->GraphAreaX1) {
$XOffset = ($this->GraphAreaX1 - $TxtPos[0]["X"]) / 2;
}
if ($TxtPos[1]["X"] > $this->GraphAreaX2) {
$XOffset = -(($TxtPos[1]["X"] - $this->GraphAreaX2) / 2);
}
if ($TxtPos[2]["Y"] < $this->GraphAreaY1) {
$YOffset = $this->GraphAreaY1 - $TxtPos[2]["Y"];
}
if ($TxtPos[0]["Y"] > $this->GraphAreaY2) {
$YOffset = -($TxtPos[0]["Y"] - $this->GraphAreaY2);
}
$CaptionSettings["R"] = $MinDisplayR;
$CaptionSettings["G"] = $MinDisplayG;
$CaptionSettings["B"] = $MinDisplayB;
$CaptionSettings["Align"] = $Align;
$this
->drawText($XPos + $XOffset, $YPos - $DisplayOffset + $YOffset, $Label, $CaptionSettings);
}
}
else {
$XStep = ($this->GraphAreaY2 - $this->GraphAreaY1 - $XMargin * 2) / $XDivs;
$X = $this->GraphAreaY1 + $XMargin;
$SerieOffset = isset($Serie["XOffset"]) ? $Serie["XOffset"] : 0;
if ($Type == BOUND_MAX || $Type == BOUND_BOTH) {
if ($MaxLabelPos == BOUND_LABEL_POS_TOP || $MaxLabelPos == BOUND_LABEL_POS_AUTO && $MaxValue >= 0) {
$YPos = $PosArray[$MaxPos] + $DisplayOffset + 2;
$Align = TEXT_ALIGN_MIDDLELEFT;
}
if ($MaxLabelPos == BOUND_LABEL_POS_BOTTOM || $MaxLabelPos == BOUND_LABEL_POS_AUTO && $MaxValue < 0) {
$YPos = $PosArray[$MaxPos] - $DisplayOffset + 2;
$Align = TEXT_ALIGN_MIDDLERIGHT;
}
$XPos = $X + $MaxPos * $XStep + $SerieOffset;
$Label = $MaxLabelTxt . $this
->scaleFormat($MaxValue, $Mode, $Format, $Unit);
$TxtPos = $this
->getTextBox($YPos, $XPos, $this->FontName, $this->FontSize, 0, $Label);
$XOffset = 0;
$YOffset = 0;
if ($TxtPos[0]["X"] < $this->GraphAreaX1) {
$XOffset = $this->GraphAreaX1 - $TxtPos[0]["X"];
}
if ($TxtPos[1]["X"] > $this->GraphAreaX2) {
$XOffset = -($TxtPos[1]["X"] - $this->GraphAreaX2);
}
if ($TxtPos[2]["Y"] < $this->GraphAreaY1) {
$YOffset = ($this->GraphAreaY1 - $TxtPos[2]["Y"]) / 2;
}
if ($TxtPos[0]["Y"] > $this->GraphAreaY2) {
$YOffset = -(($TxtPos[0]["Y"] - $this->GraphAreaY2) / 2);
}
$CaptionSettings["R"] = $MaxDisplayR;
$CaptionSettings["G"] = $MaxDisplayG;
$CaptionSettings["B"] = $MaxDisplayB;
$CaptionSettings["Align"] = $Align;
$this
->drawText($YPos + $XOffset, $XPos + $YOffset, $Label, $CaptionSettings);
}
if ($Type == BOUND_MIN || $Type == BOUND_BOTH) {
if ($MinLabelPos == BOUND_LABEL_POS_TOP || $MinLabelPos == BOUND_LABEL_POS_AUTO && $MinValue >= 0) {
$YPos = $PosArray[$MinPos] + $DisplayOffset + 2;
$Align = TEXT_ALIGN_MIDDLELEFT;
}
if ($MinLabelPos == BOUND_LABEL_POS_BOTTOM || $MinLabelPos == BOUND_LABEL_POS_AUTO && $MinValue < 0) {
$YPos = $PosArray[$MinPos] - $DisplayOffset + 2;
$Align = TEXT_ALIGN_MIDDLERIGHT;
}
$XPos = $X + $MinPos * $XStep + $SerieOffset;
$Label = $MinLabelTxt . $this
->scaleFormat($MinValue, $Mode, $Format, $Unit);
$TxtPos = $this
->getTextBox($YPos, $XPos, $this->FontName, $this->FontSize, 0, $Label);
$XOffset = 0;
$YOffset = 0;
if ($TxtPos[0]["X"] < $this->GraphAreaX1) {
$XOffset = $this->GraphAreaX1 - $TxtPos[0]["X"];
}
if ($TxtPos[1]["X"] > $this->GraphAreaX2) {
$XOffset = -($TxtPos[1]["X"] - $this->GraphAreaX2);
}
if ($TxtPos[2]["Y"] < $this->GraphAreaY1) {
$YOffset = ($this->GraphAreaY1 - $TxtPos[2]["Y"]) / 2;
}
if ($TxtPos[0]["Y"] > $this->GraphAreaY2) {
$YOffset = -(($TxtPos[0]["Y"] - $this->GraphAreaY2) / 2);
}
$CaptionSettings["R"] = $MinDisplayR;
$CaptionSettings["G"] = $MinDisplayG;
$CaptionSettings["B"] = $MinDisplayB;
$CaptionSettings["Align"] = $Align;
$this
->drawText($YPos + $XOffset, $XPos + $YOffset, $Label, $CaptionSettings);
}
}
}
}
}