PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 1.18
Independent Analytics – WordPress Analytics Plugin v1.18
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / vendor / phenx / php-svg-lib / src / Svg / CssLength.php
independent-analytics / vendor / phenx / php-svg-lib / src / Svg Last commit date
Gradient 3 years ago Surface 3 years ago Tag 3 years ago CssLength.php 3 years ago DefaultStyle.php 3 years ago Document.php 3 years ago Style.php 3 years ago
CssLength.php
99 lines
1 <?php
2
3 namespace IAWP\Svg;
4
5 class CssLength
6 {
7 /**
8 * Array of valid css length units.
9 * Should be pre-sorted by unit text length so no earlier length can be
10 * contained within a latter (eg. 'in' within 'vmin').
11 *
12 * @var string[]
13 */
14 protected static $units = ['vmax', 'vmin', 'rem', 'px', 'pt', 'cm', 'mm', 'in', 'pc', 'em', 'ex', 'ch', 'vw', 'vh', '%', 'q'];
15 /**
16 * A list of units that are inch-relative, and their unit division within an inch.
17 *
18 * @var array<string, float>
19 */
20 protected static $inchDivisions = ['in' => 1, 'cm' => 2.54, 'mm' => 25.4, 'q' => 101.6, 'pc' => 6, 'pt' => 72];
21 /**
22 * The CSS length unit indicator.
23 * Will be lower-case and one of the units listed in the '$units' array or empty.
24 *
25 * @var string
26 */
27 protected $unit = '';
28 /**
29 * The numeric value of the given length.
30 *
31 * @var float
32 */
33 protected $value = 0;
34 /**
35 * The original unparsed length provided.
36 *
37 * @var string
38 */
39 protected $unparsed;
40 public function __construct(string $length)
41 {
42 $this->unparsed = $length;
43 $this->parseLengthComponents($length);
44 }
45 /**
46 * Parse out the unit and value components from the given string length.
47 */
48 protected function parseLengthComponents(string $length) : void
49 {
50 $length = \strtolower($length);
51 foreach (self::$units as $unit) {
52 $pos = \strpos($length, $unit);
53 if ($pos) {
54 $this->value = \floatval(\substr($length, 0, $pos));
55 $this->unit = $unit;
56 return;
57 }
58 }
59 $this->unit = '';
60 $this->value = \floatval($length);
61 }
62 /**
63 * Get the unit type of this css length.
64 * Units are standardised to be lower-cased.
65 *
66 * @return string
67 */
68 public function getUnit() : string
69 {
70 return $this->unit;
71 }
72 /**
73 * Get this CSS length in the equivalent pixel count size.
74 *
75 * @param float $referenceSize
76 * @param float $dpi
77 *
78 * @return float
79 */
80 public function toPixels(float $referenceSize = 11.0, float $dpi = 96.0) : float
81 {
82 // Standard relative units
83 if (\in_array($this->unit, ['em', 'rem', 'ex', 'ch'])) {
84 return $this->value * $referenceSize;
85 }
86 // Percentage relative units
87 if (\in_array($this->unit, ['%', 'vw', 'vh', 'vmin', 'vmax'])) {
88 return $this->value * ($referenceSize / 100);
89 }
90 // Inch relative units
91 if (\in_array($this->unit, \array_keys(static::$inchDivisions))) {
92 $inchValue = $this->value * $dpi;
93 $division = static::$inchDivisions[$this->unit];
94 return $inchValue / $division;
95 }
96 return $this->value;
97 }
98 }
99