Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
23 / 23
100.00% covered (success)
100.00%
13 / 13
CRAP
100.00% covered (success)
100.00%
1 / 1
AbstractType
100.00% covered (success)
100.00%
23 / 23
100.00% covered (success)
100.00%
13 / 13
13
100.00% covered (success)
100.00%
1 / 1
 getOpacity
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getFillColor
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getStrokeColor
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getStrokeWidth
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setFillColor
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setStrokeColor
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setStrokeWidth
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 size
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 font
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 x
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 y
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 xy
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
1
 rotate
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setOpacity
n/a
0 / 0
n/a
0 / 0
0
1<?php
2/**
3 * Pop PHP Framework (http://www.popphp.org/)
4 *
5 * @link       https://github.com/popphp/popphp-framework
6 * @author     Nick Sagona, III <dev@nolainteractive.com>
7 * @copyright  Copyright (c) 2009-2024 NOLA Interactive, LLC. (http://www.nolainteractive.com)
8 * @license    http://www.popphp.org/license     New BSD License
9 */
10
11/**
12 * @namespace
13 */
14namespace Pop\Image\Type;
15
16use Pop\Image\AbstractEditObject;
17use Pop\Color\Color;
18
19/**
20 * Type abstract class
21 *
22 * @category   Pop
23 * @package    Pop\Image
24 * @author     Nick Sagona, III <dev@nolainteractive.com>
25 * @copyright  Copyright (c) 2009-2024 NOLA Interactive, LLC. (http://www.nolainteractive.com)
26 * @license    http://www.popphp.org/license     New BSD License
27 * @version    4.0.0
28 */
29abstract class AbstractType extends AbstractEditObject implements TypeInterface
30{
31
32    /**
33     * Type font size
34     * @var int
35     */
36    protected int $size = 12;
37
38    /**
39     * Type font
40     * @var ?string
41     */
42    protected ?string $font = null;
43
44    /**
45     * Fill color
46     * @var ?Color\ColorInterface
47     */
48    protected ?Color\ColorInterface $fillColor = null;
49
50    /**
51     * Stroke color
52     * @var ?Color\ColorInterface
53     */
54    protected ?Color\ColorInterface $strokeColor = null;
55
56    /**
57     * Stroke width
58     * @var int
59     */
60    protected int $strokeWidth = 1;
61
62    /**
63     * Type X-position
64     * @var int
65     */
66    protected int $x = 0;
67
68    /**
69     * Type Y-position
70     * @var int
71     */
72    protected int $y = 0;
73
74    /**
75     * Type rotation in degrees
76     * @var int
77     */
78    protected int $rotation = 0;
79
80    /**
81     * Opacity
82     * @var int|float|null
83     */
84    protected int|float|null $opacity = null;
85
86    /**
87     * Get the opacity
88     *
89     * @return int|float|null
90     */
91    public function getOpacity(): int|float|null
92    {
93        return $this->opacity;
94    }
95
96    /**
97     * Get fill color
98     *
99     * @return Color\ColorInterface
100     */
101    public function getFillColor(): Color\ColorInterface
102    {
103        return $this->fillColor;
104    }
105
106    /**
107     * Get stroke color
108     *
109     * @return Color\ColorInterface
110     */
111    public function getStrokeColor(): Color\ColorInterface
112    {
113        return $this->strokeColor;
114    }
115
116    /**
117     * Get stroke width
118     *
119     * @return int
120     */
121    public function getStrokeWidth(): int
122    {
123        return $this->strokeWidth;
124    }
125
126    /**
127     * Set fill color
128     *
129     * @param  Color\ColorInterface $color
130     * @return AbstractType
131     */
132    public function setFillColor(Color\ColorInterface $color): AbstractType
133    {
134        $this->fillColor = $color;
135        return $this;
136    }
137
138    /**
139     * Set stroke color
140     *
141     * @param  Color\ColorInterface $color
142     * @return AbstractType
143     */
144    public function setStrokeColor(Color\ColorInterface $color): AbstractType
145    {
146        $this->strokeColor = $color;
147        return $this;
148    }
149
150    /**
151     * Set stroke width
152     *
153     * @param  int $w
154     * @return AbstractType
155     */
156    public function setStrokeWidth(int $w): AbstractType
157    {
158        $this->strokeWidth = $w;
159        return $this;
160    }
161
162    /**
163     * Set the font size
164     *
165     * @param  int $size
166     * @return AbstractType
167     */
168    public function size(int $size): AbstractType
169    {
170        $this->size = (int)$size;
171        return $this;
172    }
173
174    /**
175     * Set the font
176     *
177     * @param  string $font
178     * @return AbstractType
179     */
180    public function font(string $font): AbstractType
181    {
182        $this->font = $font;
183        return $this;
184    }
185
186    /**
187     * Set the X-position
188     *
189     * @param  int $x
190     * @return AbstractType
191     */
192    public function x(int $x): AbstractType
193    {
194        $this->x = (int)$x;
195        return $this;
196    }
197
198    /**
199     * Set the Y-position
200     *
201     * @param  int $y
202     * @return AbstractType
203     */
204    public function y(int $y): AbstractType
205    {
206        $this->y = (int)$y;
207        return $this;
208    }
209
210    /**
211     * Set both the X- and Y-positions
212     *
213     * @param  int $x
214     * @param  int $y
215     * @return AbstractType
216     */
217    public function xy(int $x, int $y): AbstractType
218    {
219        $this->x($x);
220        $this->y($y);
221        return $this;
222    }
223
224    /**
225     * Set the rotation of the text
226     *
227     * @param  int $degrees
228     * @return AbstractType
229     */
230    public function rotate(int $degrees): AbstractType
231    {
232        $this->rotation = (int)$degrees;
233        return $this;
234    }
235
236    /**
237     * Set the opacity
238     *
239     * @param  int|float $opacity
240     * @return AbstractType
241     */
242    abstract public function setOpacity(int|float$opacity): AbstractType;
243
244}