NAME
CSS::SpriteBuilder - CSS sprite builder.
SYNOPSIS
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.