You are here

function pBarcode39::draw in Visitors 7.2

Same name and namespace in other branches
  1. 7 pChart/class/pBarcode39.class.php \pBarcode39::draw()

File

pChart/class/pBarcode39.class.php, line 108

Class

pBarcode39

Code

function draw($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
    ->encode39($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);
  }
}