CubicBezier.php 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <?php
  2. namespace Grafika\Imagick\DrawingObject;
  3. use Grafika\DrawingObject\CubicBezier as Base;
  4. use Grafika\DrawingObjectInterface;
  5. use Grafika\Imagick\Image;
  6. use Grafika\ImageInterface;
  7. /**
  8. * Class CubicBezier
  9. * @package Grafika
  10. */
  11. class CubicBezier extends Base implements DrawingObjectInterface
  12. {
  13. /**
  14. * @param ImageInterface $image
  15. * @return Image
  16. */
  17. public function draw($image)
  18. {
  19. // Localize vars
  20. $width = $image->getWidth();
  21. $height = $image->getHeight();
  22. $imagick = $image->getCore();
  23. $draw = new \ImagickDraw();
  24. $strokeColor = new \ImagickPixel($this->getColor()->getHexString());
  25. $fillColor = new \ImagickPixel('rgba(0,0,0,0)');
  26. $draw->setStrokeOpacity(1);
  27. $draw->setStrokeColor($strokeColor);
  28. $draw->setFillColor($fillColor);
  29. $points = array(
  30. array('x'=> $this->point1[0], 'y'=> $this->point1[1]),
  31. array('x'=> $this->control1[0], 'y'=> $this->control1[1]),
  32. array('x'=> $this->control2[0], 'y'=> $this->control2[1]),
  33. array('x'=> $this->point2[0], 'y'=> $this->point2[1]),
  34. );
  35. $draw->bezier($points);
  36. // Render the draw commands in the ImagickDraw object
  37. $imagick->drawImage($draw);
  38. $type = $image->getType();
  39. $file = $image->getImageFile();
  40. return new Image($imagick, $file, $width, $height, $type); // Create new image with updated core
  41. }
  42. }