class Compass::SassExtensions::Sprites::Layout::Horizontal
Public Instance Methods
layout!()
click to toggle source
# File lib/compass/sass_extensions/sprites/layout/horizontal.rb, line 7 def layout! calculate_height! calculate_width! calculate_positions! tile_images_that_repeat! end
Private Instance Methods
calculate_height!()
click to toggle source
# File lib/compass/sass_extensions/sprites/layout/horizontal.rb, line 16 def calculate_height! @height = @images.map {|image| image.height + image.offset}.max if repeating_images? calculate_repeat_extra_height! end @height end
calculate_positions!()
click to toggle source
# File lib/compass/sass_extensions/sprites/layout/horizontal.rb, line 38 def calculate_positions! @images.each_with_index do |image, index| image.top = image.position.unit_str == '%' ? (@height - image.height) * (image.position.value / 100.0) : image.position.value next if index == 0 last_image = @images[index-1] image.left = last_image.left + last_image.width + [image.spacing, last_image.spacing].max end end
calculate_repeat_extra_height!()
click to toggle source
# File lib/compass/sass_extensions/sprites/layout/horizontal.rb, line 32 def calculate_repeat_extra_height! m = @images.inject(1) {|m,img| img.repeat_y? ? m.lcm(img.height) : m } remainder = @height % m @height += (m - remainder) unless remainder.zero? end
calculate_width!()
click to toggle source
# File lib/compass/sass_extensions/sprites/layout/horizontal.rb, line 24 def calculate_width! @width = @images.inject(0) { |sum, image| sum += (image.width + image.spacing) } end
repeating_images?()
click to toggle source
# File lib/compass/sass_extensions/sprites/layout/horizontal.rb, line 28 def repeating_images? @repeating_images ||= @images.any?(&:repeat_y?) end
tile_images_that_repeat!()
click to toggle source
# File lib/compass/sass_extensions/sprites/layout/horizontal.rb, line 47 def tile_images_that_repeat! return unless repeating_images? @images.map {|img| img if img.repeat_y?}.compact.each do |image| y = (image.top + image.height) while y < @height do begin img = image.dup img.top = y.to_i @images << img y += image.height end end #while end end