function pDraw::drawXThreshold

5.x pDraw.class.php pDraw::drawXThreshold($Value, $Format = "")

File

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

Class

pDraw

Code

function drawXThreshold($Value, $Format = "") 
 {
  $R = isset($Format ["R"]) ? $Format ["R"] : 255;
  $G = isset($Format ["G"]) ? $Format ["G"] : 0;
  $B = isset($Format ["B"]) ? $Format ["B"] : 0;
  $Alpha = isset($Format ["Alpha"]) ? $Format ["Alpha"] : 50;
  $Weight = isset($Format ["Weight"]) ? $Format ["Weight"] : NULL;
  $Ticks = isset($Format ["Ticks"]) ? $Format ["Ticks"] : 6;
  $Wide = isset($Format ["Wide"]) ? $Format ["Wide"] : FALSE;
  $WideFactor = isset($Format ["WideFactor"]) ? $Format ["WideFactor"] : 5;
  $WriteCaption = isset($Format ["WriteCaption"]) ? $Format ["WriteCaption"] : FALSE;
  $Caption = isset($Format ["Caption"]) ? $Format ["Caption"] : NULL;
  $CaptionAlign = isset($Format ["CaptionAlign"]) ? $Format ["CaptionAlign"] : CAPTION_LEFT_TOP;
  $CaptionOffset = isset($Format ["CaptionOffset"]) ? $Format ["CaptionOffset"] : 5;
  $CaptionR = isset($Format ["CaptionR"]) ? $Format ["CaptionR"] : 255;
  $CaptionG = isset($Format ["CaptionG"]) ? $Format ["CaptionG"] : 255;
  $CaptionB = isset($Format ["CaptionB"]) ? $Format ["CaptionB"] : 255;
  $CaptionAlpha = isset($Format ["CaptionAlpha"]) ? $Format ["CaptionAlpha"] : 100;
  $DrawBox = isset($Format ["DrawBox"]) ? $Format ["DrawBox"] : TRUE;
  $DrawBoxBorder = isset($Format ["DrawBoxBorder"]) ? $Format ["DrawBoxBorder"] : FALSE;
  $BorderOffset = isset($Format ["BorderOffset"]) ? $Format ["BorderOffset"] : 3;
  $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"] : 30;
  $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;
  $ValueIsLabel = isset($Format ["ValueIsLabel"]) ? $Format ["ValueIsLabel"] : FALSE;

  $Data = $this->DataSet->getData();
  $AbscissaMargin = $this->getAbscissaMargin($Data);
  $XScale = $this->scaleGetXSettings();

  if (is_array($Value)) {
    foreach ($Value as $Key => $ID) {
      $this->drawXThreshold($ID, $Format);
    }
    return (0);
  }

  if ($ValueIsLabel) 
   {
    $Format ["ValueIsLabel"] = FALSE;
    foreach ($Data ["Series"][$Data ["Abscissa"]]["Data"] as $Key => $SerieValue) 
     {
      if ($SerieValue == $Value) {
        $this->drawXThreshold($Key, $Format);
      }
    }

    return (0);
  }

  $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,
    "R" => $CaptionR, "G" => $CaptionG, "B" => $CaptionB, "Alpha" => $CaptionAlpha);

  if ($Caption == NULL) 
   {
    if (isset($Data ["Abscissa"])) 
     {
      if (isset($Data ["Series"][$Data ["Abscissa"]]["Data"][$Value])) {
        $Caption = $Data ["Series"][$Data ["Abscissa"]]["Data"][$Value];
      }
      else {
        $Caption = $Value;
      }
    }
    else {
      $Caption = $Value;
    }
  }

  if ($Data ["Orientation"] == SCALE_POS_LEFTRIGHT) 
   {
    $XStep = (($this->GraphAreaX2 - $this->GraphAreaX1) - $XScale [0] * 2) / $XScale [1];
    $XPos = $this->GraphAreaX1 + $XScale [0] + $XStep * $Value;
    $YPos1 = $this->GraphAreaY1 + $Data ["YMargin"];
    $YPos2 = $this->GraphAreaY2 - $Data ["YMargin"];

    if ($XPos >= $this->GraphAreaX1 + $AbscissaMargin && $XPos <= $this->GraphAreaX2 - $AbscissaMargin) 
     {
      $this->drawLine($XPos, $YPos1, $XPos, $YPos2, array("R" => $R, "G" => $G, "B" => $B, "Alpha" => $Alpha, "Ticks" => $Ticks, "Weight" => $Weight));

      if ($Wide) 
       {
        $this->drawLine($XPos -1, $YPos1, $XPos -1, $YPos2, array("R" => $R, "G" => $G, "B" => $B, "Alpha" => $Alpha / $WideFactor, "Ticks" => $Ticks));
        $this->drawLine($XPos + 1, $YPos1, $XPos + 1, $YPos2, array("R" => $R, "G" => $G, "B" => $B, "Alpha" => $Alpha / $WideFactor, "Ticks" => $Ticks));
      }

      if ($WriteCaption) 
       {
        if ($CaptionAlign == CAPTION_LEFT_TOP) 
         {
          $Y = $YPos1 + $CaptionOffset;
          $CaptionSettings ["Align"] = TEXT_ALIGN_TOPMIDDLE;
        }
        else 
         {
          $Y = $YPos2 - $CaptionOffset;
          $CaptionSettings ["Align"] = TEXT_ALIGN_BOTTOMMIDDLE;
        }

        $this->drawText($XPos, $Y, $Caption, $CaptionSettings);
      }

      return (array("X" => $XPos));
    }
  }
  elseif ($Data ["Orientation"] == SCALE_POS_TOPBOTTOM) 
   {
    $XStep = (($this->GraphAreaY2 - $this->GraphAreaY1) - $XScale [0] * 2) / $XScale [1];
    $XPos = $this->GraphAreaY1 + $XScale [0] + $XStep * $Value;
    $YPos1 = $this->GraphAreaX1 + $Data ["YMargin"];
    $YPos2 = $this->GraphAreaX2 - $Data ["YMargin"];

    if ($XPos >= $this->GraphAreaY1 + $AbscissaMargin && $XPos <= $this->GraphAreaY2 - $AbscissaMargin) 
     {
      $this->drawLine($YPos1, $XPos, $YPos2, $XPos, array("R" => $R, "G" => $G, "B" => $B, "Alpha" => $Alpha, "Ticks" => $Ticks, "Weight" => $Weight));

      if ($Wide) 
       {
        $this->drawLine($YPos1, $XPos -1, $YPos2, $XPos -1, array("R" => $R, "G" => $G, "B" => $B, "Alpha" => $Alpha / $WideFactor, "Ticks" => $Ticks));
        $this->drawLine($YPos1, $XPos + 1, $YPos2, $XPos + 1, array("R" => $R, "G" => $G, "B" => $B, "Alpha" => $Alpha / $WideFactor, "Ticks" => $Ticks));
      }

      if ($WriteCaption) 
       {
        if ($CaptionAlign == CAPTION_LEFT_TOP) 
         {
          $Y = $YPos1 + $CaptionOffset;
          $CaptionSettings ["Align"] = TEXT_ALIGN_MIDDLELEFT;
        }
        else 
         {
          $Y = $YPos2 - $CaptionOffset;
          $CaptionSettings ["Align"] = TEXT_ALIGN_MIDDLERIGHT;
        }

        $this->drawText($Y, $XPos, $Caption, $CaptionSettings);
      }

      return (array("X" => $XPos));
    }
  }
}