class ImageMosaic::Image::Layout::Grid
Takes an array of URLs, returns a sliced array of Child
images with sizes based on columns
Constants
- STARTING_Y
Public Class Methods
new(items, width: WIDTH)
click to toggle source
# File lib/image_mosaic/image/layout/grid.rb, line 8 def initialize(items, width: WIDTH) @items = items @width = width end
Public Instance Methods
items(y: STARTING_Y)
click to toggle source
# File lib/image_mosaic/image/layout/grid.rb, line 13 def items(y: STARTING_Y) [].tap do |images| rows.each do |row| x = 0 row.each do |cell| images << cell.merge(y: y, x: x, h: child_dimension, w: child_dimension) x += child_dimension end y += child_dimension end end end
Private Instance Methods
child_dimension()
click to toggle source
# File lib/image_mosaic/image/layout/grid.rb, line 36 def child_dimension @width / columns end
columns()
click to toggle source
# File lib/image_mosaic/image/layout/grid.rb, line 32 def columns Math.sqrt(valid_items.count).floor end
rows()
click to toggle source
# File lib/image_mosaic/image/layout/grid.rb, line 28 def rows @rows ||= valid_items.each_slice(columns).to_a end
valid_items()
click to toggle source
# File lib/image_mosaic/image/layout/grid.rb, line 40 def valid_items @valid_items ||= Data::Validator.new(@items).items end