function pDraw::drawLine

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

... See full list

File

inc/pchart/pchart/class/pDraw.class.php, line 739

Class

pDraw

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));
}