function sls_build_sprites in Service links 6.2
Same name and namespace in other branches
- 7.2 plugins/service_links_sprites.module \sls_build_sprites()
Build the CSS file and images.
1 call to sls_build_sprites()
File
- plugins/
service_links_sprites.module, line 32 - Adds new styles based on sprites.
Code
function sls_build_sprites($files = array()) {
$sprite_filename = file_directory_path() . '/' . SLS_FILENAME;
$tot_height = array();
$images = array();
$sizes = array();
//potrebbe essere configurabile
$css_str = ".service-links ul.links li{display:inline-block;}\n.sprites.service-links span{display:block;}\n.service-links span.hide{display:none;}\n.sprites.service-links {background-repeat: no-repeat; float:left;}\n";
foreach ($files as $service_id => $file) {
if (is_file($file)) {
$img_details = getimagesize($file);
if (!isset($images[$img_details[SLS_GD_WIDTH]])) {
$images[$img_details[SLS_GD_WIDTH]] = array();
}
$images[$img_details[SLS_GD_WIDTH]][$service_id] = array(
'height' => $img_details[SLS_GD_HEIGHT],
'file' => $file,
'mime' => $img_details[SLS_GD_MIME],
);
if (!isset($tot_height[$img_details[SLS_GD_WIDTH]])) {
$tot_height[$img_details[SLS_GD_WIDTH]] = 0;
}
$tot_height[$img_details[SLS_GD_WIDTH]] += $img_details[SLS_GD_HEIGHT];
}
}
foreach ($images as $width => $image) {
$img_dest = @imagecreatetruecolor($width, $tot_height[$width]);
$background = @imagecolorallocatealpha($img_dest, 255, 255, 255, 127);
@imagefill($img_dest, 0, 0, $background);
@imagealphablending($img_dest, FALSE);
@imagesavealpha($img_dest, TRUE);
$y = 0;
$padding = $width + 2;
$css_str .= ".sprites.service-links.w{$width} {padding-left: {$padding}px; background-image:url(\"" . SLS_FILENAME . "{$width}.png\");}\n";
foreach ((array) $image as $service_id => $img_details) {
switch ($img_details['mime']) {
case 'image/png':
$img_src = @imagecreatefrompng($img_details['file']);
break;
case 'image/jpeg':
$img_src = @imagecreatefromjpeg($img_details['file']);
break;
case 'image/gif':
$img_src = @imagecreatefromgif($img_details['file']);
break;
default:
continue;
}
$class = str_replace('_', '-', $service_id);
$sign = $y > 0 ? '-' : '';
$css_str .= ".sprites.service-links-{$class} {background-position: 0 {$sign}{$y}px; height:{$img_details['height']}px}\n";
@imagecopy($img_dest, $img_src, 0, $y, 0, 0, $width, $img_details['height']);
@imagedestroy($img_src);
$y += $img_details['height'];
$sizes[$img_details['file']] = $width;
}
imagepng($img_dest, $sprite_filename . $width . '.png');
imagedestroy($img_dest);
}
$css_fhandler = fopen($sprite_filename . '.css', 'w');
if ($css_fhandler && !empty($css_str)) {
fwrite($css_fhandler, $css_str);
fclose($css_fhandler);
}
variable_set('service_links_sprites_sizes', $sizes);
}