/** * Create the encoded string * @param Image $Object * @param string $Value * @param int $X * @param int $Y * @param string $Format */ public function draw(Image $Object, $Value, $X, $Y, $Format = "") { $this->pChartObject = $Object; $R = isset($Format["R"]) ? $Format["R"] : 0; $G = isset($Format["G"]) ? $Format["G"] : 0; $B = isset($Format["B"]) ? $Format["B"] : 0; $Alpha = isset($Format["Alpha"]) ? $Format["Alpha"] : 100; $Height = isset($Format["Height"]) ? $Format["Height"] : 30; $Angle = isset($Format["Angle"]) ? $Format["Angle"] : 0; $ShowLegend = isset($Format["ShowLegend"]) ? $Format["ShowLegend"] : false; $LegendOffset = isset($Format["LegendOffset"]) ? $Format["LegendOffset"] : 5; $DrawArea = isset($Format["DrawArea"]) ? $Format["DrawArea"] : false; $AreaR = isset($Format["AreaR"]) ? $Format["AreaR"] : 255; $AreaG = isset($Format["AreaG"]) ? $Format["AreaG"] : 255; $AreaB = isset($Format["AreaB"]) ? $Format["AreaB"] : 255; $AreaBorderR = isset($Format["AreaBorderR"]) ? $Format["AreaBorderR"] : $AreaR; $AreaBorderG = isset($Format["AreaBorderG"]) ? $Format["AreaBorderG"] : $AreaG; $AreaBorderB = isset($Format["AreaBorderB"]) ? $Format["AreaBorderB"] : $AreaB; $TextString = $this->encode128($Value); if ($DrawArea) { $X1 = $X + cos(($Angle - 135) * PI / 180) * 10; $Y1 = $Y + sin(($Angle - 135) * PI / 180) * 10; $X2 = $X1 + cos($Angle * PI / 180) * (strlen($this->Result) + 20); $Y2 = $Y1 + sin($Angle * PI / 180) * (strlen($this->Result) + 20); if ($ShowLegend) { $X3 = $X2 + cos(($Angle + 90) * PI / 180) * ($Height + $LegendOffset + $this->pChartObject->FontSize + 10); $Y3 = $Y2 + sin(($Angle + 90) * PI / 180) * ($Height + $LegendOffset + $this->pChartObject->FontSize + 10); } else { $X3 = $X2 + cos(($Angle + 90) * PI / 180) * ($Height + 20); $Y3 = $Y2 + sin(($Angle + 90) * PI / 180) * ($Height + 20); } $X4 = $X3 + cos(($Angle + 180) * PI / 180) * (strlen($this->Result) + 20); $Y4 = $Y3 + sin(($Angle + 180) * PI / 180) * (strlen($this->Result) + 20); $Polygon = array($X1, $Y1, $X2, $Y2, $X3, $Y3, $X4, $Y4); $Settings = array("R" => $AreaR, "G" => $AreaG, "B" => $AreaB, "BorderR" => $AreaBorderR, "BorderG" => $AreaBorderG, "BorderB" => $AreaBorderB); $this->pChartObject->drawPolygon($Polygon, $Settings); } for ($i = 1; $i <= strlen($this->Result); $i++) { if ($this->mid($this->Result, $i, 1) == 1) { $X1 = $X + cos($Angle * PI / 180) * $i; $Y1 = $Y + sin($Angle * PI / 180) * $i; $X2 = $X1 + cos(($Angle + 90) * PI / 180) * $Height; $Y2 = $Y1 + sin(($Angle + 90) * PI / 180) * $Height; $Settings = array("R" => $R, "G" => $G, "B" => $B, "Alpha" => $Alpha); $this->pChartObject->drawLine($X1, $Y1, $X2, $Y2, $Settings); } } if ($ShowLegend) { $X1 = $X + cos($Angle * PI / 180) * (strlen($this->Result) / 2); $Y1 = $Y + sin($Angle * PI / 180) * (strlen($this->Result) / 2); $LegendX = $X1 + cos(($Angle + 90) * PI / 180) * ($Height + $LegendOffset); $LegendY = $Y1 + sin(($Angle + 90) * PI / 180) * ($Height + $LegendOffset); $Settings = array("R" => $R, "G" => $G, "B" => $B, "Alpha" => $Alpha, "Angle" => -$Angle, "Align" => TEXT_ALIGN_TOPMIDDLE); $this->pChartObject->drawText($LegendX, $LegendY, $TextString, $Settings); } }