function pImage::getTextBox

5.x pImage.class.php pImage::getTextBox($X, $Y, $FontName, $FontSize, $Angle, $Text)

File

inc/pchart/pchart/class/pImage.class.php, line 209

Class

pImage

Code

function getTextBox($X, $Y, $FontName, $FontSize, $Angle, $Text) 
 {
  $coords = imagettfbbox($FontSize, 0, $FontName, $Text);

  $a = deg2rad($Angle);
  $ca = cos($a);
  $sa = sin($a);
  $RealPos = array();
  for ($i = 0; $i < 7; $i += 2) 
   {
    $RealPos [$i / 2]["X"] = $X + round($coords [$i] * $ca + $coords [$i + 1] * $sa);
    $RealPos [$i / 2]["Y"] = $Y + round($coords [$i + 1] * $ca - $coords [$i] * $sa);
  }

  $RealPos [TEXT_ALIGN_BOTTOMLEFT]["X"] = $RealPos [0]["X"];
  $RealPos [TEXT_ALIGN_BOTTOMLEFT]["Y"] = $RealPos [0]["Y"];
  $RealPos [TEXT_ALIGN_BOTTOMRIGHT]["X"] = $RealPos [1]["X"];
  $RealPos [TEXT_ALIGN_BOTTOMRIGHT]["Y"] = $RealPos [1]["Y"];
  $RealPos [TEXT_ALIGN_TOPLEFT]["X"] = $RealPos [3]["X"];
  $RealPos [TEXT_ALIGN_TOPLEFT]["Y"] = $RealPos [3]["Y"];
  $RealPos [TEXT_ALIGN_TOPRIGHT]["X"] = $RealPos [2]["X"];
  $RealPos [TEXT_ALIGN_TOPRIGHT]["Y"] = $RealPos [2]["Y"];
  $RealPos [TEXT_ALIGN_BOTTOMMIDDLE]["X"] = ($RealPos [1]["X"] -$RealPos [0]["X"]) / 2 + $RealPos [0]["X"];
  $RealPos [TEXT_ALIGN_BOTTOMMIDDLE]["Y"] = ($RealPos [0]["Y"] -$RealPos [1]["Y"]) / 2 + $RealPos [1]["Y"];
  $RealPos [TEXT_ALIGN_TOPMIDDLE]["X"] = ($RealPos [2]["X"] -$RealPos [3]["X"]) / 2 + $RealPos [3]["X"];
  $RealPos [TEXT_ALIGN_TOPMIDDLE]["Y"] = ($RealPos [3]["Y"] -$RealPos [2]["Y"]) / 2 + $RealPos [2]["Y"];
  $RealPos [TEXT_ALIGN_MIDDLELEFT]["X"] = ($RealPos [0]["X"] -$RealPos [3]["X"]) / 2 + $RealPos [3]["X"];
  $RealPos [TEXT_ALIGN_MIDDLELEFT]["Y"] = ($RealPos [0]["Y"] -$RealPos [3]["Y"]) / 2 + $RealPos [3]["Y"];
  $RealPos [TEXT_ALIGN_MIDDLERIGHT]["X"] = ($RealPos [1]["X"] -$RealPos [2]["X"]) / 2 + $RealPos [2]["X"];
  $RealPos [TEXT_ALIGN_MIDDLERIGHT]["Y"] = ($RealPos [1]["Y"] -$RealPos [2]["Y"]) / 2 + $RealPos [2]["Y"];
  $RealPos [TEXT_ALIGN_MIDDLEMIDDLE]["X"] = ($RealPos [1]["X"] -$RealPos [3]["X"]) / 2 + $RealPos [3]["X"];
  $RealPos [TEXT_ALIGN_MIDDLEMIDDLE]["Y"] = ($RealPos [0]["Y"] -$RealPos [2]["Y"]) / 2 + $RealPos [2]["Y"];

  return ($RealPos);
}