smart packing implimentation thanks @johnbintz
This commit is contained in:
parent
ef4c897de5
commit
59722ef4ad
@ -7,7 +7,8 @@ module Compass
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
require 'compass/sass_extensions/sprites/image_row'
|
||||
require 'compass/sass_extensions/sprites/row_fitter'
|
||||
require 'compass/sass_extensions/sprites/image'
|
||||
require 'compass/sass_extensions/sprites/layout_methods'
|
||||
require 'compass/sass_extensions/sprites/sprite_methods'
|
||||
|
@ -4,6 +4,11 @@ module Compass
|
||||
module LayoutMethods
|
||||
HORIZONTAL = 'horizontal'
|
||||
DIAGONAL = 'diagonal'
|
||||
SMART = 'smart'
|
||||
|
||||
def smart?
|
||||
@kwargs.get_var('layout').value == SMART
|
||||
end
|
||||
|
||||
def horizontal?
|
||||
@kwargs.get_var('layout').value == HORIZONTAL
|
||||
@ -17,6 +22,10 @@ module Compass
|
||||
# collects image sizes and input parameters for each sprite
|
||||
def compute_image_positions!
|
||||
case @kwargs.get_var('layout').value
|
||||
when SMART
|
||||
require 'compass/sass_extensions/sprites/image_row'
|
||||
require 'compass/sass_extensions/sprites/row_fitter'
|
||||
calculate_smart_positions
|
||||
when DIAGONAL
|
||||
calculate_diagonal_dimensions
|
||||
calculate_diagonal_positions
|
||||
@ -32,6 +41,23 @@ module Compass
|
||||
end
|
||||
end
|
||||
|
||||
def calculate_smart_positions
|
||||
fitter = ::Compass::SassExtensions::Sprites::RowFitter.new(@images)
|
||||
current_y = 0
|
||||
fitter.fit!.each do |row|
|
||||
current_x = 0
|
||||
row.images.each_with_index do |image, index|
|
||||
image.left = current_x
|
||||
image.top = current_y
|
||||
current_x += image.width
|
||||
end
|
||||
current_y += row.height
|
||||
end
|
||||
@width = fitter.width
|
||||
@height = fitter.height
|
||||
end
|
||||
|
||||
|
||||
def calculate_diagonal_dimensions
|
||||
@width = @images.map {|image| image.width}.inject(0) {|width, sum| sum + width}
|
||||
@height = @images.map {|image| image.height}.inject(0) {|height, sum| sum + height}
|
||||
|
Loading…
Reference in New Issue
Block a user