CSS-SpriteBuilder

 view release on metacpan or  search on metacpan

README  view on Meta::CPAN

        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).

examples/config.xml  view on Meta::CPAN


<global_opts>
<!--
    <image_quality>90</image_quality>
    <max_image_size>65536</max_image_size>
    <max_image_width>1536</max_image_width>
    <max_image_height>1024</max_image_height>
    <max_sprite_width>1536</max_sprite_width>
    <max_sprite_height>1024</max_sprite_height>
    <margin>0</margin>
    <transparent_color></transparent_color>
    <is_background>0</is_background>
    <layout>packed</layout>
    <css_selector_prefix>.spr-</css_selector_prefix>
    <css_url_prefix>/sprite/</css_url_prefix>
    <is_add_timestamp>1</is_add_timestamp>
-->
</global_opts>

<sprites>
    <sprite file="sprite.png">

lib/CSS/SpriteBuilder.pm  view on Meta::CPAN

        source_dir          => undef,
        output_dir          => undef,

        image_quality       => DEF_IMAGE_QUALITY,
        max_image_size      => DEF_MAX_IMAGE_SIZE,
        max_image_width     => DEF_MAX_IMAGE_WIDTH,
        max_image_height    => DEF_MAX_IMAGE_HEIGHT,
        max_sprite_width    => DEF_MAX_SPRITE_WIDTH,
        max_sprite_height   => DEF_MAX_SPRITE_HEIGHT,
        margin              => DEF_MARGIN,
        transparent_color   => undef,
        is_background       => 0,
        layout              => DEF_LAYOUT,
        css_selector_prefix => DEF_CSS_SELECTOR_PREFIX,
        css_url_prefix      => '',
        is_add_timestamp    => 1,

        _sprites            => {},

        @args,
    }, $class;

lib/CSS/SpriteBuilder.pm  view on Meta::CPAN

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.

=item * B<max_sprite_height> [ = 2000 ]

Specify max height of sprite.

=item * B<margin> [ = 0 ]

Add margin to each image.

=item * B<transparent_color> [ = undef ]

Set transparent color for image, for example: 'white', 'black', ....

=item * B<is_background> [ = 0 ]

If B<is_background> flag is '0' will be generated CSS rule such as: 'width:XXXpx;height:YYYpx;'.

=item * B<layout> [ = 'packed' ]

Specify layout algorithm (horizontal, vertical or packed).

=item * B<css_selector_prefix> [ = '.spr-' ]

lib/CSS/SpriteBuilder/Constants.pm  view on Meta::CPAN


use constant SPRITE_OPTS => [qw/
    source_dir
    image_quality
    max_image_size
    max_image_width
    max_image_height
    max_sprite_width
    max_sprite_height
    margin
    transparent_color
    is_background
    layout
    css_selector_prefix
    css_url_prefix
    is_add_timestamp
/];

use constant IMAGE_OPTS => [qw/
    is_background
    is_repeat

lib/CSS/SpriteBuilder/ImageDriver/Common.pm  view on Meta::CPAN


=back

=head2 reset([<image>])

Make a blank image.
When B<image> parameter is specified than assign the initial value as B<image>.

=back

=head2 set_transparent_color(<color>)

$image->set_transparent_color('white');

Set transparent color.

=back

=head2 set_quality(<0..100>)

Set image qualit (for JPEG only).

=back

=head2 read(<filename>)

lib/CSS/SpriteBuilder/ImageDriver/Common.pm  view on Meta::CPAN

sub is_blank { $_[0]->width() ? 0 : 1 }

sub reset {
    my ($self, $image) = @_;

    # Nothing

    return;
}

sub set_transparent_color {
    my ($self, $color) = @_;

    # Nothing

    return;
}

sub set_quality {
    my ($self, $quality) = @_;

lib/CSS/SpriteBuilder/ImageDriver/GD.pm  view on Meta::CPAN

        print $fh $data;
        close $fh or die "Failed to close file '$filename' due: $!";
    }
    else {
        die "Unknown extension of the file '$filename'";
    }

    return;
}

sub set_transparent_color {
    my ($self, $color) = @_;

    return unless $self->{_image};

    my $rgb   = $COLOR_MAP{ lc $color } or die "Unknown color '$color'";
    my $index = $self->{_image}->colorClosest(@$rgb);
    $self->{_image}->transparent($index);

    return;
}

sub extent {
    my ($self, $width, $height) = @_;

    my $old_image = $self->{_image};
    my $new_image = GD::Image->new($width, $height, 1);

lib/CSS/SpriteBuilder/ImageDriver/ImageMagick.pm  view on Meta::CPAN

    if ( $self->{_quality} && $filename =~ /\.jpg$/i ) {
        $self->{_image}->Set( quality => $self->{_quality} );
    }

    my $error = $self->{_image}->Write($filename);
    die "Failed to write image to '$filename' due: $error" if $error;

    return;
}

sub set_transparent_color {
    my ($self, $color) = @_;

    $self->{_image}->Transparent(color => $color);

    return;
}

sub extent {
    my ($self, $width, $height) = @_;

lib/CSS/SpriteBuilder/Sprite.pm  view on Meta::CPAN

        source_images       => undef,
        target_file         => undef,

        image_quality       => DEF_IMAGE_QUALITY,
        max_image_size      => DEF_MAX_IMAGE_SIZE,
        max_image_width     => DEF_MAX_IMAGE_WIDTH,
        max_image_height    => DEF_MAX_IMAGE_HEIGHT,
        max_sprite_width    => DEF_MAX_SPRITE_WIDTH,
        max_sprite_height   => DEF_MAX_SPRITE_HEIGHT,
        margin              => DEF_MARGIN,
        transparent_color   => undef,
        is_background       => 0,
        layout              => DEF_LAYOUT,
        css_selector_prefix => DEF_CSS_SELECTOR_PREFIX,
        css_url_prefix      => '',
        is_add_timestamp    => 1,

        _sprite_no          => 1,
        _repeated_images    => [],
        _sprites            => {},
        _x                  => 0,

lib/CSS/SpriteBuilder/Sprite.pm  view on Meta::CPAN

    return;
}

sub write {
    my ($self) = @_;

    return if $self->is_blank();

    $self->process_repeated_images();

    $self->set_transparent_color( $self->{transparent_color} )
        if $self->{transparent_color};

    $self->set_quality( $self->{image_quality} );

    $self->SUPER::write( $self->target_file() );

    $self->{_sprite_no}++;

    $self->reset();

    return;



( run in 0.414 second using v1.01-cache-2.11-cpan-0a6323c29d9 )