Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
10 / 10
100.00% covered (success)
100.00%
4 / 4
CRAP
100.00% covered (success)
100.00%
1 / 1
Imagick
100.00% covered (success)
100.00%
10 / 10
100.00% covered (success)
100.00%
4 / 4
6
100.00% covered (success)
100.00%
1 / 1
 getOverlay
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setOverlay
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 overlay
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
2
 flatten
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
2
1<?php
2declare(strict_types=1);
3/**
4 * Pop PHP Framework (https://www.popphp.org/)
5 *
6 * @link       https://github.com/popphp/popphp-framework
7 * @author     Nick Sagona, III <dev@noladev.com>
8 * @copyright  Copyright (c) 2009-2027 NOLA Interactive, LLC.
9 * @license    https://www.popphp.org/license     New BSD License
10 */
11
12/**
13 * @namespace
14 */
15namespace Pop\Image\Layer;
16
17use ImagickException;
18
19/**
20 * Layer class for Imagick
21 *
22 * @category   Pop
23 * @package    Pop\Image
24 * @author     Nick Sagona, III <dev@noladev.com>
25 * @copyright  Copyright (c) 2009-2027 NOLA Interactive, LLC.
26 * @license    https://www.popphp.org/license     New BSD License
27 * @version    5.0.0
28 */
29class Imagick extends AbstractLayer
30{
31
32    /**
33     * Overlay style
34     * @var int
35     */
36    protected int $overlay = \Imagick::COMPOSITE_ATOP;
37
38    /**
39     * Get the overlay
40     *
41     * @return int
42     */
43    public function getOverlay(): int
44    {
45        return $this->overlay;
46    }
47
48    /**
49     * Get the overlay
50     *
51     * @param  int $overlay
52     * @return Imagick
53     */
54    public function setOverlay(int $overlay): Imagick
55    {
56        $this->overlay = $overlay;
57        return $this;
58    }
59
60    /**
61     * Overlay an image onto the current image.
62     *
63     * @param  string $image
64     * @param  int    $x
65     * @param  int    $y
66     * @throws ImagickException
67     * @return Imagick
68     */
69    public function overlay(string $image, int $x = 0, int $y = 0): Imagick
70    {
71        if ($this->hasImage()) {
72            $overlayImage = new \Imagick($image);
73            $this->image->getResource()->compositeImage($overlayImage, $this->overlay, $x, $y);
74        }
75
76        return $this;
77    }
78
79    /**
80     * Flatten the image layers
81     *
82     * @param  int $method
83     * @return Imagick
84     */
85    public function flatten(int $method = \Imagick::LAYERMETHOD_FLATTEN): Imagick
86    {
87        if ($this->hasImage()) {
88            $this->image->getResource()->mergeImageLayers($method);
89        }
90        return $this;
91    }
92
93}