From: Vincent Vanwaelscappel Date: Wed, 23 Aug 2023 15:31:00 +0000 (+0200) Subject: wip #6167 @0.5 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=e4c17134c43c7fe5e61217ac12b1e60dbd41acaf;p=fluidbook_tools.git wip #6167 @0.5 --- diff --git a/src/SVG/SVGTools.php b/src/SVG/SVGTools.php index a948022..43c18b6 100644 --- a/src/SVG/SVGTools.php +++ b/src/SVG/SVGTools.php @@ -7,13 +7,15 @@ use Cubist\Util\Files\Files; use Cubist\Util\PHP; use Fluidbook\Tools\FluidbookTools; -class SVGTools { +class SVGTools +{ protected static $_r; protected static $_i; protected static $_e; protected static $_u; - public static function optimizeSVG($in, $out = null) { + public static function optimizeSVG($in, $out = null) + { if (null === $out) { $e = explode('.', $in); $ext = array_pop($e); @@ -22,10 +24,15 @@ class SVGTools { $out = implode('.', $e); } + if (file_exists($out) && filemtime($out) >= filemtime($in) && filesize($out) === 0) { + return $out; + } + return self::_optimizeSVG($in, $out); } - public static function optimizeSVGStr($in, $fix = false) { + public static function optimizeSVGStr($in, $fix = false) + { $dir = Files::mkdir(sys_get_temp_dir() . '/svgopt'); `rm $dir/*.svg`; @@ -49,7 +56,8 @@ class SVGTools { return $res; } - public static function _optimizeSVG($in, $out) { + public static function _optimizeSVG($in, $out) + { $beforeOpt = str_replace('.svg', '.orig.svg', $in); if (file_exists($beforeOpt) && is_link($beforeOpt)) { @@ -61,12 +69,14 @@ class SVGTools { if (!$svg) { $svg = file_get_contents($in); } + $svg = str_replace('/', '', $svg); $svg = self::_disablePreserveRatio($svg); @@ -86,7 +97,8 @@ class SVGTools { file_put_contents($out, $osvg); } - protected static function _svg($c, $p) { + protected static function _svg($c, $p) + { self::$_i = 0; self::$_e = 0; self::$_u = 0; @@ -110,7 +122,8 @@ class SVGTools { return $c; } - public static function optimizeRaster($matches, $resolution) { + public static function optimizeRaster($matches, $resolution) + { PHP::neverStop(); preg_match_all('/([a-z\:\-]*)="([^"]*)"/', $matches[1], $m); @@ -152,7 +165,8 @@ class SVGTools { return $res; } - public static function fix($source, $dest) { + public static function fix($source, $dest) + { $cli = new CommandLine('oslllo-svg-fixer'); $cli->setArg('s', $source); $cli->setArg('d', $dest); @@ -163,7 +177,8 @@ class SVGTools { } } - public static function append($first, $second, $dest, $direction = 'h') { + public static function append($first, $second, $dest, $direction = 'h') + { $cli = new CommandLine('python3'); $cli->setArg(null, '/usr/local/svg_stack/svg_stack.py'); $cli->setArg('direction', $direction);