class CartoCSSHelper::FullSetOfComparedImages

Public Class Methods

new(before, after, header, filename, image_size) click to toggle source
# File lib/cartocss_helper/visualise_changes_diff_from_images.rb, line 35
def initialize(before, after, header, filename, image_size)
  @header = header
  @filename = filename
  @compared = compress(before, after)

  @image_size = image_size
  @margin = 10
  @standard_pointsize = 10
  @header_space = @standard_pointsize * 1.5
  @diff_note_space = @standard_pointsize

  render
end

Public Instance Methods

compress(before, after) click to toggle source
# File lib/cartocss_helper/visualise_changes_diff_from_images.rb, line 49
def compress(before, after)
  returned = [PairOfComparedImages.new(before[0], after[0])]
  (1...before.length).each do |i|
    if before[i].identical(before[i - 1]) && after[i].identical(after[i - 1])
      returned[-1].merge_description_from_next_image(before[i])
    else
      returned.push(PairOfComparedImages.new(before[i], after[i]))
    end
  end
  return returned
end
create_canvas() click to toggle source
# File lib/cartocss_helper/visualise_changes_diff_from_images.rb, line 72
def create_canvas
  y = get_needed_y
  x = @image_size * 2 + 3 * @margin

  @canvas = Magick::Image.new(x, y)
end
get_needed_y() click to toggle source
# File lib/cartocss_helper/visualise_changes_diff_from_images.rb, line 79
def get_needed_y
  y = 0
  y += @header_space
  y += @margin * 1.5
  y += @diff_note_space
  y += @margin * 0.5
  y += @compared.length * (@image_size + @margin)
  y += @diff_note_space
  return y
end
popup() click to toggle source
read_image_from_disk(filename) click to toggle source
# File lib/cartocss_helper/visualise_changes_diff_from_images.rb, line 103
def read_image_from_disk(filename)
  return Magick::Image.read(filename)[0]
rescue Magick::ImageMagickError => e
  # for example on loading corrupted empty file (for example CartoCSSHelper was interuppted during writing to disk...)
  puts "reading image <#{filename}> from disk failed"
  puts e.class
  puts e
  raise e
end
render() click to toggle source
# File lib/cartocss_helper/visualise_changes_diff_from_images.rb, line 61
def render
  create_canvas
  offset = 0
  render_header
  offset += @header_space + @margin * 1.5
  offset += @diff_note_space + @margin * 0.5
  render_images_with_labels offset
  offset += @compared.length * (@margin + @image_size)
  render_footer offset
end
render_header() click to toggle source
# File lib/cartocss_helper/visualise_changes_diff_from_images.rb, line 90
def render_header
  header_drawer = Magick::Draw.new
  header_drawer.pointsize(@header_space * 3 / 5)
  header_drawer.text(@margin, @header_space, @header)
  header_drawer.draw(@canvas)
end
render_images_with_labels(y_offset) click to toggle source
# File lib/cartocss_helper/visualise_changes_diff_from_images.rb, line 97
def render_images_with_labels(y_offset)
  (0...@compared.length).each do |i|
    render_row_of_labelled_images(@compared[i], y_offset + i * (@margin + @image_size))
  end
end
render_label(y_offset, label) click to toggle source
# File lib/cartocss_helper/visualise_changes_diff_from_images.rb, line 130
def render_label(y_offset, label)
  label_drawer = Magick::Draw.new
  label_drawer.pointsize(@standard_pointsize)
  label_drawer.text(@margin, y_offset, label)
  label_drawer.draw(@canvas)
end
render_row_of_images(y_offset, left_image, right_image) click to toggle source

noinspection RubyResolve

# File lib/cartocss_helper/visualise_changes_diff_from_images.rb, line 138
def render_row_of_images(y_offset, left_image, right_image)
  if left_image == right_image
    @canvas.composite!(left_image, @margin * 1.5 + @image_size / 2, y_offset, Magick::OverCompositeOp)
  else
    @canvas.composite!(left_image, @margin, y_offset, Magick::OverCompositeOp)
    @canvas.composite!(right_image, @margin * 2 + @image_size, y_offset, Magick::OverCompositeOp)
  end
end
render_row_of_labelled_images(processed, y_offset) click to toggle source
# File lib/cartocss_helper/visualise_changes_diff_from_images.rb, line 113
def render_row_of_labelled_images(processed, y_offset)
  left_image = read_image_from_disk(processed.left_file_location)
  right_image = read_image_from_disk(processed.right_file_location)
  drawer = Magick::Draw.new
  drawer.pointsize(@diff_note_space * 4 / 5)
  if left_image == right_image
    drawer.text(@margin + @image_size / 2, y_offset, "#{processed.description} - unchanged")
    drawer.draw(@canvas)
  else
    drawer.text(@margin, y_offset, "#{processed.description} - before")
    drawer.draw(@canvas)
    drawer.text(@margin * 2 + @image_size, y_offset, "#{processed.description} - after")
    drawer.draw(@canvas)
  end
  render_row_of_images(y_offset, left_image, right_image)
end
save() click to toggle source
# File lib/cartocss_helper/visualise_changes_diff_from_images.rb, line 158
def save
  @canvas.write(@filename)
end