$webvideo->execute();
}
- public static function colorizeAndRasterizeIcon($iconSet, $icon, $colors, $dest, &$w, &$h) {
+ public static function colorizeAndRasterizeIcon($iconSet, $icon, $colors, $dest, $scale, &$w, &$h, $makepng = true) {
// Init directory
if (is_string($colors)) {
$colors = array('colorize' => $colors);
if (!file_exists($dirColorized)) {
mkdir($dirColorized, 0777, true);
}
+
+
// SVG
- if (!file_exists($svgColorized) || filemtime($svgColorized) <= filemtime($svgRef)) {
+ $time=max(filemtime(__FILE__),filemtime($svgRef));
+ if (!file_exists($svgColorized) || filemtime($svgColorized) <= $time) {
$svg = file_get_contents($svgRef);
// Colorize it
foreach ($colors as $k => $v) {
}
self::copy($svgColorized, $dest . '/' . $icon . '.svg');
- $svg = simplexml_load_file($svgColorized);
- $w = (string)$svg['width'];
- $h = (string)$svg['height'];
- $w = rtrim($w, 'px');
- $h = rtrim($h, 'px');
+ // PNG
+ $png = $dirColorized . '/' . $icon . '.png';
+ $time=max(filemtime(__FILE__),filemtime($svgColorized));
+ if (!file_exists($png) || filemtime($png) <= $time) {
+ $svg = simplexml_load_file($svgColorized);
+ $w = (string)$svg['width'];
+ $h = (string)$svg['height'];
+ $w = rtrim($w, 'px');
+ $h = rtrim($h, 'px');
+ // Finally rasterize it
+ $batik = new cubeCommandLine('inkscape');
+ $batik->setArg('z');
+ $batik->setArg('e', $png);
+ $batik->setArg('w', $w * $scale);
+ $batik->setArg('h', $h * $scale);
+ $batik->setManualArg($svgColorized);
+ $batik->execute();
+ }
+
+ if (file_exists($png)) {
+ $dim = getimagesize($png);
+ $w = $dim[0] / $scale;
+ $h = $dim[1] / $scale;
+ }
+
+ if ($makepng) {
+ self::copy($png, $dest . '/' . $icon . '.png');
+ }
}
public static function copy($source, $dest) {
$this->config->iconsDimensions = array();
$makepng = !$this->supportSVG();
foreach ($icons as $icon => $color) {
- wsTools::colorizeAndRasterizeIcon($this->theme->parametres->iconSet, $icon, $color, $this->vdir . '/data/images/', $w, $h);
+ wsTools::colorizeAndRasterizeIcon($this->theme->parametres->iconSet, $icon, $color, $this->vdir . '/data/images/', 4, $w, $h);
$this->config->iconsDimensions[$icon] = array($w, $h);
}
return $res;