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