class Mosaiq::Image
Attributes
canvas[R]
Public Class Methods
new(width:, height:, palette: Palette.black_and_white)
click to toggle source
# File lib/mosaiq/image.rb, line 10 def initialize(width:, height:, palette: Palette.black_and_white) @width = read_positive_integer(width: width) @height = read_positive_integer(height: height) @palette = read_palette(palette) build_canvas end
Public Instance Methods
svg()
click to toggle source
# File lib/mosaiq/image.rb, line 18 def svg Mosaiq::Svg.new(@canvas) end
Private Instance Methods
build_canvas()
click to toggle source
# File lib/mosaiq/image.rb, line 24 def build_canvas total = @width * @height all_tiles = Array.new(total).map { @palette.sample } @canvas = all_tiles.each_slice(@width).collect(&:itself) end
read_palette(palette)
click to toggle source
# File lib/mosaiq/image.rb, line 38 def read_palette(palette) return palette unless palette.empty? raise Mosaiq::InvalidPaletteArgument end
read_positive_integer(args = {})
click to toggle source
# File lib/mosaiq/image.rb, line 30 def read_positive_integer(args = {}) key, value = args.first integer_value = value.to_i return integer_value if integer_value.positive? raise Mosaiq::InvalidDimensionArgument.new(key, value) end