function pDraw::drawLine
Search API
5.x pDraw.class.php | pDraw::drawLine($X1, $Y1, $X2, $Y2, $Format = "") |
25 calls to pDraw::drawLine()
- pDraw::drawArrow in inc/
pchart/ pchart/ class/ pDraw.class.php - pDraw::drawArrowLabel in inc/
pchart/ pchart/ class/ pDraw.class.php - pDraw::drawBarChart in inc/
pchart/ pchart/ class/ pDraw.class.php - pDraw::drawBestFit in inc/
pchart/ pchart/ class/ pDraw.class.php - pDraw::drawBezier in inc/
pchart/ pchart/ class/ pDraw.class.php
File
- inc/
pchart/ pchart/ class/ pDraw.class.php, line 739
Class
Code
function drawLine($X1, $Y1, $X2, $Y2, $Format = "")
{
$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;
$Ticks = isset($Format ["Ticks"]) ? $Format ["Ticks"] : NULL;
$Cpt = isset($Format ["Cpt"]) ? $Format ["Cpt"] : 1;
$Mode = isset($Format ["Mode"]) ? $Format ["Mode"] : 1;
$Weight = isset($Format ["Weight"]) ? $Format ["Weight"] : NULL;
$Threshold = isset($Format ["Threshold"]) ? $Format ["Threshold"] : NULL;
if ($this->Antialias == FALSE && $Ticks == NULL)
{
if ($this->Shadow && $this->ShadowX != 0 && $this->ShadowY != 0)
{
$ShadowColor = $this->allocateColor($this->Picture, $this->ShadowR, $this->ShadowG, $this->ShadowB, $this->Shadowa);
imageline($this->Picture, $X1 + $this->ShadowX, $Y1 + $this->ShadowY, $X2 + $this->ShadowX, $Y2 + $this->ShadowY, $ShadowColor);
}
$Color = $this->allocateColor($this->Picture, $R, $G, $B, $Alpha);
imageline($this->Picture, $X1, $Y1, $X2, $Y2, $Color);
return (0);
}
$Distance = sqrt(($X2 -$X1) * ($X2 -$X1) + ($Y2 -$Y1) * ($Y2 -$Y1));
if ($Distance == 0) {
return (-1);
}
/* Derivative algorithm for overweighted lines, re-route to polygons primitives */
if ($Weight != NULL)
{
$Angle = $this->getAngle($X1, $Y1, $X2, $Y2);
$PolySettings = array("R" => $R, "G" => $G, "B" => $B, "Alpha" => $Alpha, "BorderAlpha" => $Alpha);
if ($Ticks == NULL)
{
$Points = "";
$Points [] = cos(deg2rad($Angle -90)) * $Weight + $X1;
$Points [] = sin(deg2rad($Angle -90)) * $Weight + $Y1;
$Points [] = cos(deg2rad($Angle + 90)) * $Weight + $X1;
$Points [] = sin(deg2rad($Angle + 90)) * $Weight + $Y1;
$Points [] = cos(deg2rad($Angle + 90)) * $Weight + $X2;
$Points [] = sin(deg2rad($Angle + 90)) * $Weight + $Y2;
$Points [] = cos(deg2rad($Angle -90)) * $Weight + $X2;
$Points [] = sin(deg2rad($Angle -90)) * $Weight + $Y2;
$this->drawPolygon($Points, $PolySettings);
}
else
{
for ($i = 0; $i <= $Distance; $i = $i + $Ticks * 2)
{
$Xa = (($X2 -$X1) / $Distance) * $i + $X1;
$Ya = (($Y2 -$Y1) / $Distance) * $i + $Y1;
$Xb = (($X2 -$X1) / $Distance) * ($i + $Ticks) + $X1;
$Yb = (($Y2 -$Y1) / $Distance) * ($i + $Ticks) + $Y1;
$Points = "";
$Points [] = cos(deg2rad($Angle -90)) * $Weight + $Xa;
$Points [] = sin(deg2rad($Angle -90)) * $Weight + $Ya;
$Points [] = cos(deg2rad($Angle + 90)) * $Weight + $Xa;
$Points [] = sin(deg2rad($Angle + 90)) * $Weight + $Ya;
$Points [] = cos(deg2rad($Angle + 90)) * $Weight + $Xb;
$Points [] = sin(deg2rad($Angle + 90)) * $Weight + $Yb;
$Points [] = cos(deg2rad($Angle -90)) * $Weight + $Xb;
$Points [] = sin(deg2rad($Angle -90)) * $Weight + $Yb;
$this->drawPolygon($Points, $PolySettings);
}
}
return (1);
}
$XStep = ($X2 -$X1) / $Distance;
$YStep = ($Y2 -$Y1) / $Distance;
for ($i = 0; $i <= $Distance; $i++)
{
$X = $i * $XStep + $X1;
$Y = $i * $YStep + $Y1;
$Color = array("R" => $R, "G" => $G, "B" => $B, "Alpha" => $Alpha);
if ($Threshold != NULL)
{
foreach ($Threshold as $Key => $Parameters)
{
if ($Y <= $Parameters ["MinX"] && $Y >= $Parameters ["MaxX"])
{
if (isset($Parameters ["R"])) {
$RT = $Parameters ["R"];
}
else {
$RT = 0;
}
if (isset($Parameters ["G"])) {
$GT = $Parameters ["G"];
}
else {
$GT = 0;
}
if (isset($Parameters ["B"])) {
$BT = $Parameters ["B"];
}
else {
$BT = 0;
}
if (isset($Parameters ["Alpha"])) {
$AlphaT = $Parameters ["Alpha"];
}
else {
$AlphaT = 0;
}
$Color = array("R" => $RT, "G" => $GT, "B" => $BT, "Alpha" => $AlphaT);
}
}
}
if ($Ticks != NULL)
{
if ($Cpt % $Ticks == 0)
{
$Cpt = 0;
if ($Mode == 1) {
$Mode = 0;
}
else {
$Mode = 1;
}
}
if ($Mode == 1) {
$this->drawAntialiasPixel($X, $Y, $Color);
}
$Cpt++;
}
else {
$this->drawAntialiasPixel($X, $Y, $Color);
}
}
return (array($Cpt, $Mode));
}