From d43eb44110dd836cad0da96d1f027260c2581d89 Mon Sep 17 00:00:00 2001 From: Andreas Gohr <andi@splitbrain.org> Date: Sun, 11 Mar 2012 10:48:29 +0100 Subject: [PATCH] Another go at building the pagetool sprite with a script This time PHP and libGD is used so it should work on Windows as well. The image quality is much better this time and the active highlight color is read directly from the template's style.ini --- lib/tpl/dokuwiki/images/pagetools-build.php | 121 +++++++++++++++++++ lib/tpl/dokuwiki/images/pagetools-build.sh | 56 --------- lib/tpl/dokuwiki/images/pagetools-sprite.png | Bin 10389 -> 8178 bytes lib/tpl/dokuwiki/images/pagetools.xcf | Bin 14393 -> 0 bytes 4 files changed, 121 insertions(+), 56 deletions(-) create mode 100644 lib/tpl/dokuwiki/images/pagetools-build.php delete mode 100755 lib/tpl/dokuwiki/images/pagetools-build.sh delete mode 100644 lib/tpl/dokuwiki/images/pagetools.xcf diff --git a/lib/tpl/dokuwiki/images/pagetools-build.php b/lib/tpl/dokuwiki/images/pagetools-build.php new file mode 100644 index 000000000..1b7262ad5 --- /dev/null +++ b/lib/tpl/dokuwiki/images/pagetools-build.php @@ -0,0 +1,121 @@ +<?php +/** + * This script generates a sprite from the unprocessed pagetool icons by combining them + * and overlaying a color layer for the active state. + * + * This script requires a current libGD to be available. + * + * The color for the active state is read from the style.ini's __link__ replacement + * + * The final sprite is optimized with optipng if available. + * + * @author Andreas Gohr <andi@splitbrain.org> + * @todo Maybe add some more error checking + */ +$GAMMA = 0.8; +$OPTIPNG = '/usr/bin/optipng'; + +// load input images +$input = glob('pagetools/*.png'); +sort($input); +$cnt = count($input); +if(!$cnt){ + die("No input images found. This script needs to be called from within the image directory!\n"); +} + +// create destination image +$DST = imagecreatetruecolor(30,$cnt*45*2); +imagesavealpha($DST, true); +$C_trans = imagecolorallocatealpha($DST, 0, 0, 0, 127); +imagefill($DST, 0, 0, $C_trans); + +// load highlight color from style.ini +$ini = parse_ini_file('../style.ini',true); +$COLOR = hex2rgb($ini['replacements']['__link__']); +$C_active = imagecolorallocate($DST, $COLOR['r'],$COLOR['g'],$COLOR['b']); + +// add all the icons to the sprite image +for($i=0; $i<$cnt; $i++){ + $base = $i*90; + + $IN = imagecreatefrompng($input[$i]); + imagesavealpha($IN, true); + imagecolorscale($IN,$GAMMA); + imagecopy($DST,$IN, 0,$base, 0,0, 30,30); + imagedestroy($IN); + + $IN = imagecreatefrompng($input[$i]); + imagesavealpha($IN, true); + imagecolorscale($IN,$GAMMA); + imagecopy($DST,$IN, 0,$base+45, 0,0, 30,30); + imagedestroy($IN); + + imagelayereffect($DST, IMG_EFFECT_OVERLAY); + imagefilledrectangle($DST, 0,$base+45, 30,$base+45+30, $C_active); + imagelayereffect($DST, IMG_EFFECT_NORMAL); +} + +// output sprite +imagepng($DST,'pagetools-sprite.png'); +imagedestroy($DST); + +// optimize if possible +if(is_executable($OPTIPNG)){ + system("$OPTIPNG -o5 'pagetools-sprite.png'"); +} + +/** + * Convert a hex color code to an rgb array + */ +function hex2rgb($hex) { + // strip hash + $hex = str_replace('#', '', $hex); + + // normalize short codes + if(strlen($hex) == 3){ + $hex = substr($hex,0,1). + substr($hex,0,1). + substr($hex,1,1). + substr($hex,1,1). + substr($hex,2,1). + substr($hex,2,1); + } + + // calc rgb + return array( + 'r' => hexdec(substr($hex, 0, 2)), + 'g' => hexdec(substr($hex, 2, 2)), + 'b' => hexdec(substr($hex, 4, 2)) + ); +} + +/** + * Scale (darken/lighten) a given image + * + * @param ressource $img The truetype GD image to work on + * @param float $scale Scale the colors by this value ( <1 darkens, >1 lightens) + */ +function imagecolorscale(&$img, $scale){ + $w = imagesx($img); + $h = imagesy($img); + + imagealphablending($img, false); + for($x = 0; $x < $w; $x++){ + for($y = 0; $y < $h; $y++){ + $rgba = imagecolorat($img, $x, $y); + $a = ($rgba >> 24) & 0xFF; + $r = ($rgba >> 16) & 0xFF; + $g = ($rgba >> 8) & 0xFF; + $b = $rgba & 0xFF; + + $r = max(min(round($r*$scale),255),0); + $g = max(min(round($g*$scale),255),0); + $b = max(min(round($b*$scale),255),0); + + $color = imagecolorallocatealpha($img, $r, $g, $b, $a); + imagesetpixel($img, $x, $y, $color); + } + } + imagealphablending($img, true); +} + diff --git a/lib/tpl/dokuwiki/images/pagetools-build.sh b/lib/tpl/dokuwiki/images/pagetools-build.sh deleted file mode 100755 index 202e222e9..000000000 --- a/lib/tpl/dokuwiki/images/pagetools-build.sh +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/sh -# -# This script generates a sprite from the unprocessed toolbar icons by combining them -# and overlaying a color layer for the active state -# -# The final sprite is optimized with optipng -# -# The script currently expects a Linux system with current versions of the imagemagick -# and optipng binaries in the path -# -# @author Andreas Gohr <andi@splitbrain.org> - -OUT=`dirname $0` -IN="$OUT/pagetools" - -if [ ! -d "$IN" ]; then - echo "Input folder $IN not found" - exit 1 -fi - -if [ -z "$TEMP" ]; then - TEMP="/tmp" -fi - -if [ ! -d "$TEMP" ]; then - echo "No temp directory available" - exit 1 -fi - -# add up all images twice -montage `for X in $IN/*.png; do echo -n "$X $X "; done` -background transparent -tile 1x -geometry 30x45 -gravity north $TEMP/icons.png - -# darken the image -convert $TEMP/icons.png \( +clone -fill '#cccccc' -colorize 100% \) -compose multiply -composite $TEMP/darkicons.png - -# create the mask to highlight an active icon -convert -size 30x30 xc:'#2b73b7' -gamma 0.7 $TEMP/active.png - -# create the full mask -montage `for X in $IN/*.png; do echo -n "$TEMP/active.png "; done` -background transparent -tile 1x -geometry 30x60+0+15 -gravity south $TEMP/activemask.png - -# apply mask -convert $TEMP/darkicons.png $TEMP/activemask.png \ -\( -clone 0 -alpha extract \) \ -\( -clone 0 -clone 1 -compose overlay -composite \) \ --delete 0,1 +swap -alpha off -compose copy_opacity -composite $OUT/pagetools-sprite.png - -# optimize final sprite -optipng -o5 $OUT/pagetools-sprite.png - -# remove temporary images -rm -f $TEMP/icons.png -rm -f $TEMP/darkicons.png -rm -f $TEMP/active.png -rm -f $TEMP/activemask.png - diff --git a/lib/tpl/dokuwiki/images/pagetools-sprite.png b/lib/tpl/dokuwiki/images/pagetools-sprite.png index 0e8b4a9bf8e2a39c1d460af5ad37b6e8eefa7b37..bbd7fd361b260c082e7f9c46cc3a3a3b3e7f90ef 100644 GIT binary patch literal 8178 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 literal 10389 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 diff --git a/lib/tpl/dokuwiki/images/pagetools.xcf b/lib/tpl/dokuwiki/images/pagetools.xcf deleted file mode 100644 index 034b39a42dd5a378969a4a4b59aa8ed100d6ef1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14393 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 -- GitLab