/** * * @param string $ScatterSerieID * @param mixed $Points * @param array $Format * @return null | int */ public function writeScatterLabel($ScatterSerieID, $Points, array $Format = array()) { $DrawPoint = isset($Format["DrawPoint"]) ? $Format["DrawPoint"] : LABEL_POINT_BOX; $Decimals = isset($Format["Decimals"]) ? $Format["Decimals"] : null; $Data = $this->pDataObject->getData(); if (!is_array($Points)) { $Points = array($Points); } if (!isset($Data["ScatterSeries"][$ScatterSerieID])) { return 0; } $Series = $Data["ScatterSeries"][$ScatterSerieID]; $SerieX = $Series["X"]; $SerieValuesX = $Data["Series"][$SerieX]["Data"]; $SerieXAxis = $Data["Series"][$SerieX]["Axis"]; $SerieY = $Series["Y"]; $SerieValuesY = $Data["Series"][$SerieY]["Data"]; $SerieYAxis = $Data["Series"][$SerieY]["Axis"]; $PosArrayX = $this->getPosArray($SerieValuesX, $SerieXAxis); if (!is_array($PosArrayX)) { $Value = $PosArrayX; $PosArrayX = array(); $PosArrayX[0] = $Value; } $PosArrayY = $this->getPosArray($SerieValuesY, $SerieYAxis); if (!is_array($PosArrayY)) { $Value = $PosArrayY; $PosArrayY = array(); $PosArrayY[0] = $Value; } foreach ($Points as $Key => $Point) { if (isset($PosArrayX[$Point]) && isset($PosArrayY[$Point])) { $X = floor($PosArrayX[$Point]); $Y = floor($PosArrayY[$Point]); if ($DrawPoint == LABEL_POINT_CIRCLE) { $this->pChartObject->drawFilledCircle($X, $Y, 3, array("R" => 255, "G" => 255, "B" => 255, "BorderR" => 0, "BorderG" => 0, "BorderB" => 0)); } elseif ($DrawPoint == LABEL_POINT_BOX) { $this->pChartObject->drawFilledRectangle($X - 2, $Y - 2, $X + 2, $Y + 2, array("R" => 255, "G" => 255, "B" => 255, "BorderR" => 0, "BorderG" => 0, "BorderB" => 0)); } $Serie = array(); $Serie["R"] = $Series["Color"]["R"]; $Serie["G"] = $Series["Color"]["G"]; $Serie["B"] = $Series["Color"]["B"]; $Serie["Alpha"] = $Series["Color"]["Alpha"]; $XAxisMode = $Data["Axis"][$SerieXAxis]["Display"]; $XAxisFormat = $Data["Axis"][$SerieXAxis]["Format"]; $XAxisUnit = $Data["Axis"][$SerieXAxis]["Unit"]; if ($Decimals == null) { $XValue = $SerieValuesX[$Point]; } else { $XValue = round($SerieValuesX[$Point], $Decimals); } $XValue = $this->pChartObject->scaleFormat($XValue, $XAxisMode, $XAxisFormat, $XAxisUnit); $YAxisMode = $Data["Axis"][$SerieYAxis]["Display"]; $YAxisFormat = $Data["Axis"][$SerieYAxis]["Format"]; $YAxisUnit = $Data["Axis"][$SerieYAxis]["Unit"]; if ($Decimals == null) { $YValue = $SerieValuesY[$Point]; } else { $YValue = round($SerieValuesY[$Point], $Decimals); } $YValue = $this->pChartObject->scaleFormat($YValue, $YAxisMode, $YAxisFormat, $YAxisUnit); $Caption = sprintf("%s / %s", $XValue, $YValue); if (isset($Series["Description"])) { $Description = $Series["Description"]; } else { $Description = "No description"; } $Series = array(array("Format" => $Serie, "Caption" => $Caption)); $this->pChartObject->drawLabelBox($X, $Y - 3, $Description, $Series, $Format); } } }