xref: /template/strap/ComboStrap/Unit.php (revision 70bbd7f1f72440223cc13f3495efdcb2b0a11514)
137748cd8SNickeau<?php
237748cd8SNickeau/**
337748cd8SNickeau * Copyright (c) 2021. ComboStrap, Inc. and its affiliates. All Rights Reserved.
437748cd8SNickeau *
537748cd8SNickeau * This source code is licensed under the GPL license found in the
637748cd8SNickeau * COPYING  file in the root directory of this source tree.
737748cd8SNickeau *
837748cd8SNickeau * @license  GPL 3 (https://www.gnu.org/licenses/gpl-3.0.en.html)
937748cd8SNickeau * @author   ComboStrap <support@combostrap.com>
1037748cd8SNickeau *
1137748cd8SNickeau */
1237748cd8SNickeau
1337748cd8SNickeaunamespace ComboStrap;
1437748cd8SNickeau
1537748cd8SNickeau
1637748cd8SNickeauclass Unit
1737748cd8SNickeau{
1837748cd8SNickeau
1937748cd8SNickeau    /**
2037748cd8SNickeau     * Calculates pixel size for any given SVG size
2137748cd8SNickeau     *
2237748cd8SNickeau     * @credit https://github.com/lechup/svgpureinsert/blob/master/helper.php#L72
2337748cd8SNickeau     * @param $value
2437748cd8SNickeau     * @return int
2537748cd8SNickeau     */
26*70bbd7f1Sgerardnico    static public function toPixel($value)
27*70bbd7f1Sgerardnico    {
2837748cd8SNickeau        if (!preg_match('/^(\d+?(\.\d*)?)(in|em|ex|px|pt|pc|cm|mm)?$/', $value, $m)) return 0;
2937748cd8SNickeau
3037748cd8SNickeau        $digit = (double)$m[1];
31*70bbd7f1Sgerardnico        $unit = $m[3] ?? null;
3237748cd8SNickeau
3337748cd8SNickeau        $dpi = 72;
3437748cd8SNickeau        $conversions = array(
3537748cd8SNickeau            'in' => $dpi,
3637748cd8SNickeau            'em' => 16,
3737748cd8SNickeau            'ex' => 12,
3837748cd8SNickeau            'px' => 1,
3937748cd8SNickeau            'pt' => $dpi / 72, # 1/27 of an inch
4037748cd8SNickeau            'pc' => $dpi / 6, # 1/6 of an inch
4137748cd8SNickeau            'cm' => $dpi / 2.54, # inch to cm
4237748cd8SNickeau            'mm' => $dpi / (2.54 * 10), # inch to cm,
4337748cd8SNickeau        );
4437748cd8SNickeau
4537748cd8SNickeau        if (isset($conversions[$unit])) {
4637748cd8SNickeau            $digit = $digit * (float)$conversions[$unit];
4737748cd8SNickeau        }
4837748cd8SNickeau
4937748cd8SNickeau        return $digit;
5037748cd8SNickeau    }
5137748cd8SNickeau
5237748cd8SNickeau
5337748cd8SNickeau}
54