Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
21 / 21
100.00% covered (success)
100.00%
14 / 14
CRAP
100.00% covered (success)
100.00%
1 / 1
AbstractAlignment
100.00% covered (success)
100.00%
21 / 21
100.00% covered (success)
100.00%
14 / 14
14
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 setAlignment
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setLeftX
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setRightX
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setLeading
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getAlignment
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getLeftX
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getRightX
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getLeading
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 hasLeftX
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 hasRightX
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 hasLeading
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 isLeft
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 isRight
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
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 <nick@popphp.org>
8 * @copyright  Copyright (c) 2009-2026 Nick Sagona, III
9 * @license    https://www.popphp.org/license     New BSD License
10 */
11
12/**
13 * @namespace
14 */
15namespace Pop\Pdf\Document\Page\Text;
16
17/**
18 * Pdf page text abstract alignment class
19 *
20 * @category   Pop
21 * @package    Pop\Pdf
22 * @author     Nick Sagona, III <nick@popphp.org>
23 * @copyright  Copyright (c) 2009-2026 Nick Sagona, III
24 * @license    https://www.popphp.org/license     New BSD License
25 * @version    6.0.0
26 */
27abstract class AbstractAlignment implements AlignmentInterface
28{
29
30    /**
31     * Alignment constants
32     */
33    const LEFT  = 'LEFT';
34    const RIGHT = 'RIGHT';
35
36    /**
37     * Text alignment
38     * @var string
39     */
40    protected string $alignment = self::LEFT;
41
42    /**
43     * Left X boundary
44     * @var int
45     */
46    protected int $leftX = 0;
47
48    /**
49     * Right X boundary
50     * @var int
51     */
52    protected int $rightX = 0;
53
54    /**
55     * Text leading
56     * @var int
57     */
58    protected int $leading = 0;
59
60    /**
61     * Constructor
62     *
63     * Instantiate a PDF text alignment object.
64     *
65     * @param string $alignment
66     * @param int    $leftX
67     * @param int    $rightX
68     * @param int    $leading
69     */
70    public function __construct(string $alignment = self::LEFT, int $leftX = 0, int $rightX = 0, int $leading = 0)
71    {
72        $this->setAlignment($alignment);
73        $this->setLeftX($leftX);
74        $this->setRightX($rightX);
75        $this->setLeading($leading);
76    }
77
78    /**
79     * Set alignment
80     *
81     * @param  string $alignment
82     * @return AbstractAlignment
83     */
84    public function setAlignment(string $alignment): AbstractAlignment
85    {
86        $this->alignment = $alignment;
87        return $this;
88    }
89
90    /**
91     * Set the left X boundary
92     *
93     * @param  int $x
94     * @return AbstractAlignment
95     */
96    public function setLeftX(int $x): AbstractAlignment
97    {
98        $this->leftX = $x;
99        return $this;
100    }
101
102    /**
103     * Set the right X boundary
104     *
105     * @param  int $x
106     * @return AbstractAlignment
107     */
108    public function setRightX(int $x): AbstractAlignment
109    {
110        $this->rightX = $x;
111        return $this;
112    }
113
114    /**
115     * Set the leading
116     *
117     * @param  int $leading
118     * @return AbstractAlignment
119     */
120    public function setLeading(int $leading): AbstractAlignment
121    {
122        $this->leading = $leading;
123        return $this;
124    }
125
126    /**
127     * Get alignment
128     *
129     * @return string
130     */
131    public function getAlignment(): string
132    {
133        return $this->alignment;
134    }
135
136    /**
137     * Get the left X
138     *
139     * @return int
140     */
141    public function getLeftX(): int
142    {
143        return $this->leftX;
144    }
145
146    /**
147     * Get the right X
148     *
149     * @return int
150     */
151    public function getRightX(): int
152    {
153        return $this->rightX;
154    }
155
156    /**
157     * Get the leading
158     *
159     * @return int
160     */
161    public function getLeading(): int
162    {
163        return $this->leading;
164    }
165
166    /**
167     * Has left X
168     *
169     * @return bool
170     */
171    public function hasLeftX(): bool
172    {
173        return ($this->leftX > 0);
174    }
175
176    /**
177     * Has right X
178     *
179     * @return bool
180     */
181    public function hasRightX(): bool
182    {
183        return ($this->rightX > 0);
184    }
185
186    /**
187     * Has leading
188     *
189     * @return bool
190     */
191    public function hasLeading(): bool
192    {
193        return ($this->leading > 0);
194    }
195
196    /**
197     * Is LEFT alignment
198     *
199     * @return bool
200     */
201    public function isLeft(): bool
202    {
203        return ($this->alignment == self::LEFT);
204    }
205
206    /**
207     * Is RIGHT alignment
208     *
209     * @return bool
210     */
211    public function isRight(): bool
212    {
213        return ($this->alignment == self::RIGHT);
214    }
215
216}