xref: /plugin/combo/ComboStrap/Unit.php (revision 37748cd8654635afbeca80942126742f0f4cc346)
1*37748cd8SNickeau<?php
2*37748cd8SNickeau/**
3*37748cd8SNickeau * Copyright (c) 2021. ComboStrap, Inc. and its affiliates. All Rights Reserved.
4*37748cd8SNickeau *
5*37748cd8SNickeau * This source code is licensed under the GPL license found in the
6*37748cd8SNickeau * COPYING  file in the root directory of this source tree.
7*37748cd8SNickeau *
8*37748cd8SNickeau * @license  GPL 3 (https://www.gnu.org/licenses/gpl-3.0.en.html)
9*37748cd8SNickeau * @author   ComboStrap <support@combostrap.com>
10*37748cd8SNickeau *
11*37748cd8SNickeau */
12*37748cd8SNickeau
13*37748cd8SNickeaunamespace ComboStrap;
14*37748cd8SNickeau
15*37748cd8SNickeau
16*37748cd8SNickeauclass Unit
17*37748cd8SNickeau{
18*37748cd8SNickeau
19*37748cd8SNickeau    /**
20*37748cd8SNickeau     * Calculates pixel size for any given SVG size
21*37748cd8SNickeau     *
22*37748cd8SNickeau     * @credit https://github.com/lechup/svgpureinsert/blob/master/helper.php#L72
23*37748cd8SNickeau     * @param $value
24*37748cd8SNickeau     * @return int
25*37748cd8SNickeau     */
26*37748cd8SNickeau    static public function toPixel($value) {
27*37748cd8SNickeau        if(!preg_match('/^(\d+?(\.\d*)?)(in|em|ex|px|pt|pc|cm|mm)?$/', $value, $m)) return 0;
28*37748cd8SNickeau
29*37748cd8SNickeau        $digit = (double) $m[1];
30*37748cd8SNickeau        $unit  = (string) $m[3];
31*37748cd8SNickeau
32*37748cd8SNickeau        $dpi         = 72;
33*37748cd8SNickeau        $conversions = array(
34*37748cd8SNickeau            'in' => $dpi,
35*37748cd8SNickeau            'em' => 16,
36*37748cd8SNickeau            'ex' => 12,
37*37748cd8SNickeau            'px' => 1,
38*37748cd8SNickeau            'pt' => $dpi / 72, # 1/27 of an inch
39*37748cd8SNickeau            'pc' => $dpi / 6, # 1/6 of an inch
40*37748cd8SNickeau            'cm' => $dpi / 2.54, # inch to cm
41*37748cd8SNickeau            'mm' => $dpi / (2.54 * 10), # inch to cm,
42*37748cd8SNickeau        );
43*37748cd8SNickeau
44*37748cd8SNickeau        if(isset($conversions[$unit])) {
45*37748cd8SNickeau            $digit = $digit * (float) $conversions[$unit];
46*37748cd8SNickeau        }
47*37748cd8SNickeau
48*37748cd8SNickeau        return $digit;
49*37748cd8SNickeau    }
50*37748cd8SNickeau
51*37748cd8SNickeau
52*37748cd8SNickeau}
53