Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 7
0.00% covered (danger)
0.00%
0 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
LengthUnit
0.00% covered (danger)
0.00%
0 / 7
0.00% covered (danger)
0.00%
0 / 3
20
0.00% covered (danger)
0.00%
0 / 1
 isAbsolute
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
 isFontRelative
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
 isViewportRelative
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2
3declare(strict_types=1);
4
5namespace Phpdftk\Css\Value;
6
7/**
8 * CSS length units per CSS Values 4. Categorised into absolute (resolvable
9 * to the pixel without context), font-relative (need a font size to
10 * resolve), and viewport-relative (need a viewport size).
11 */
12enum LengthUnit: string
13{
14    // Absolute
15    case Px = 'px';
16    case Pt = 'pt';
17    case Pc = 'pc';
18    case Cm = 'cm';
19    case Mm = 'mm';
20    case Q = 'q';
21    case In = 'in';
22
23    // Font-relative
24    case Em = 'em';
25    case Rem = 'rem';
26    case Ex = 'ex';
27    case Ch = 'ch';
28    case Lh = 'lh';
29    case Rlh = 'rlh';
30
31    // Viewport-relative
32    case Vw = 'vw';
33    case Vh = 'vh';
34    case Vmin = 'vmin';
35    case Vmax = 'vmax';
36    case Vi = 'vi';
37    case Vb = 'vb';
38    case Svw = 'svw';
39    case Svh = 'svh';
40    case Lvw = 'lvw';
41    case Lvh = 'lvh';
42    case Dvw = 'dvw';
43    case Dvh = 'dvh';
44
45    public function isAbsolute(): bool
46    {
47        return in_array($this, [
48            self::Px, self::Pt, self::Pc, self::Cm, self::Mm, self::Q, self::In,
49        ], true);
50    }
51
52    public function isFontRelative(): bool
53    {
54        return in_array($this, [
55            self::Em, self::Rem, self::Ex, self::Ch, self::Lh, self::Rlh,
56        ], true);
57    }
58
59    public function isViewportRelative(): bool
60    {
61        return !$this->isAbsolute() && !$this->isFontRelative();
62    }
63}