NAME

CSS::SpriteMaker::Layout - Layout interface for items placed on a 2D grid.

Allows to access coordinates of items laid out on a 2D grid.

Shouldn't be instantiated directly, but subclasses should be instantiated instead.

VERSION

Version 0.01

_layout_items

Lays out the items given their properties. These properties can be global or about individual items, and have the form of the following hashref:

{
    '<item_id>' : {
        width => <integer>,
        height => <integer>,
        first_pixel_x => <integer>,
        first_pixel_y => <integer>,
        ... other arbitrary properties, if any
    },
    ...
}

This method should never be called on this class, but on a subclass. It contains the implementation of the specific layout after all.

get_item_coord

Gets the coordinates of a specific item within the layout.

my ($x, $y) = $Layout->get_item_coord("129");

Returns a list containing the x and the y coordinates of the specified element respectively.

set_item_coord

Sets the coordinates of a layout item.

# sets coordinates of item #129 to x: 100 y: 200
$Layout->set_item_coord("129", 100, 200); 

Sets coordinates of the given element internally and returns undef.

move_items

Moves all the items in this layout by the given deltay and deltax.

delete_item

Deletes the item with the specified id from the internal list of items that have been layed out.

WARNING - this doesn't trigger a re-layout: will result in having a hole in the current layout. Be aware of it.

Triggers a warning if the element with the specified id doesn't exist in the current layout.

merge_with

Merges the current layout with the one specified. For a successful merge to happen, items in the old and in the new layout must have different ids.

get_item_ids

Returns the id of each item into an array.

my @ids = $Layout->get_item_ids();

width

Returns the width of the overall layout in pixels.

my $width = $Layout->width();

height

Returns the height of the overall layout in pixels.

my $width = $Layout->height();

finalize

Sets this layout as instantiated. To only be called by a subclass of this base class once class is instantiated.

$Layout->finalize();

Once called, some checks are performed on the layout and warnings are issued emitted if something is wrong.

Always returns undef.