NAME
CSS::SpriteBuilder - CSS sprite builder.
SYNOPSIS
use CSS::SpriteBuilder
my $builder = CSS::SpriteBuilder->new( [%args] );
$builder->build(
sprites => [{
file => 'sample_sprite_%d.png',
images => [
{ file => 'small/Add.png', [ %options ] },
],
[ %options ],
}],
);
$build->write_css('sprite.css');
Or
$builder->build(config => 'config.xml');
$build->write_css('sprite.css');
DESCRIPTION
This module generate CSS sprites with one of these modules: Image::Magick or GD.
It has many useful settings and can be used for sites with complex structure.
METHODS
new(<%args>)
my $builder = CSS::SpriteBuilder->new(<%args>);
Create instance.
Valid arguments are:
source_dir [ = undef ]
Specify custom location for source images.
output_dir [ = undef ]
Specify custom location for generated images.
image_quality 0..100 [ = 90 ]
Specify image quality for generated images (for JPEG only).
max_image_size [ = 65536 ]
Specify max size of images that will be used to generate a sprite.
max_image_width [ = 2000 ]
Specify max width of images that will be used to generate a sprite.
max_image_height [ = 2000 ]
Specify max height of images that will be used to generate a sprite.
max_sprite_width [ = 2000 ]
Specify max width of sprite. When sprite has no free space, than creates a new sprite with addition of a suffix to the sprite name. Opera 9.0 and below have a bug which affects CSS background offsets less than -2042px. All values less than this are treated as -2042px exactly.
max_sprite_height [ = 2000 ]
Specify max height of sprite.
margin [ = 0 ]
Add margin to each image.
transparent_color [ = undef ]
Set transparent color for image, for example: 'white', 'black', ....
is_background [ = 0 ]
If is_background flag is '0' will be generated CSS rule such as: 'width:XXXpx;height:YYYpx;'.
layout [ = 'packed' ]
Specify layout algorithm (horizontal, vertical or packed).
css_selector_prefix [ = '.spr-' ]
Specify CSS selector prefix. For example, for an image "img/icon/arrow.gif" will be generated selector such as ".spr-img-icon-arrow".
css_url_prefix [ = '' ]
Specify prefix for CSS url. For example: background-image: url('css_url_prefixsample_sprite.png')
is_add_timestamp [ = 1 ]
If parameter set to '1' than timestamp will be added for CSS url. For example: background-image: url('sample_sprite.png?12345678')
build(<%args>)
Build sprites.
$builder->build(<%args>);
This method returning structure like:
{
'sample_sprite_1.png' => [
{
'y' => 0,
'width' => 32,
'selector' => '.spr-small-add',
'is_background' => 0,
'x' => 0,
'height' => 32,
'image' => 'small/Add.png',
'repeat' => 'no'
},
...
],
...
}
Valid arguments are:
sprites
Specify sprite list.
$builder->build( sprites => [ { file => 'horizontal_%d.png', layout => 'horizontal', max_sprite_width => 1000, ... images => [ { file => 'small/*.png', is_repeat => 1, ... }, { file => 'small/*.gif' }, { file => 'small/a.jpg', is_background => 1 }, ], }, { file => 'sprite_%d.png', max_sprite_width => 1000, css_selector_prefix => '#spr-', ... images => [ { file => 'small/Add.png', is_repeat => 1, ... }, ], }, ], );
config
Specify XML config filename (it requires XML::LibXML module).
$builder->build(config => 'config.xml');
Example of config.xml:
<root> <global_opts> <max_image_size>20000</max_image_size> <layout>packed</layout> <css_selector_prefix>.spr-</css_selector_prefix> <css_url_prefix>/sprite/</css_url_prefix> </global_opts> <sprites> <sprite file="sprite_%d.png"> <image file="small/Add.png"/> <image file="small/Box.png"/> <image file="medium/CD.png"/> </sprite> <sprite file="sprite_x_%d.png" layout="vertical"> <image file="small/Brick.png" is_repeat="1"/> <image file="small/Bin_Empty.png"/> <image file="medium/Close.png"/> </sprite> <sprite file="sprite_y_%d.png" layout="horizontal"> <image file="small/Pattern.png" is_repeat="1"/> <image file="small/Address_Book.png"/> <image file="medium/Chat.png"/> </sprite> </sprites> </root>
write_css([<filename|fh>])
Write CSS to file. When filename parameter is not specified than this method returning a string.
$builder->write_css('sprite.css');
write_xml([<filename|fh>])
Write CSS sprites info structure into XML format (it requires XML::LibXML module). When filename parameter is not specified than this method returning a string.
$builder->write_xml('sprite.xml');
Example of sprite.xml:
<root>
<sprite src="sample_sprite.png">
<image y="0" width="32" selector=".spr-small-add" is_background="0" x="0" height="32" repeat="no" image="small/Add.png"/>
</sprite>
</root>
write_html([<filename|fh>])
Write HTML sample page. When filename parameter is not specified than this method returning a string.
get_sprites_info()
This method returning structure like:
{
'sample_sprite.png' => [
{
'y' => 0,
'width' => 32,
'selector' => '.spr-small-add',
'is_background' => 0,
'x' => 0,
'height' => 32,
'image' => 'small/Add.png',
'repeat' => 'no'
},
...
],
...
}
AUTHOR
Yuriy Ustushenko, <yoreek@yahoo.com>
COPYRIGHT AND LICENSE
Copyright (C) 2013 Yuriy Ustushenko
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.