Polygon.php 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. namespace Grafika\Imagick\DrawingObject;
  3. use Grafika\DrawingObject\Polygon as Base;
  4. use Grafika\DrawingObjectInterface;
  5. /**
  6. * Class Polygon
  7. * @package Grafika
  8. */
  9. class Polygon extends Base implements DrawingObjectInterface{
  10. public function draw( $image ) {
  11. $draw = new \ImagickDraw();
  12. $draw->setStrokeWidth($this->borderSize);
  13. if(null !== $this->fillColor) {
  14. $fillColor = new \ImagickPixel( $this->fillColor->getHexString() );
  15. $draw->setFillColor($fillColor);
  16. } else {
  17. $draw->setFillOpacity(0);
  18. }
  19. if(null !== $this->borderColor) {
  20. $borderColor = new \ImagickPixel( $this->borderColor->getHexString() );
  21. $draw->setStrokeColor($borderColor);
  22. } else {
  23. $draw->setStrokeOpacity(0);
  24. }
  25. $draw->polygon($this->points());
  26. $image->getCore()->drawImage($draw);
  27. return $image;
  28. }
  29. protected function points(){
  30. $points = array();
  31. foreach($this->points as $i=>$pos){
  32. $points[$i] = array(
  33. 'x' => $pos[0],
  34. 'y' => $pos[1]
  35. );
  36. }
  37. if( count($points) < 3 ){
  38. throw new \Exception('Polygon needs at least 3 points.');
  39. }
  40. return $points;
  41. }
  42. }