Class: CartoCSSHelper::FullSetOfComparedImages
- Inherits:
-
Object
- Object
- CartoCSSHelper::FullSetOfComparedImages
- Defined in:
- lib/cartocss_helper/visualise_changes_diff_from_images.rb
Instance Method Summary collapse
- #compress(before, after) ⇒ Object
- #create_canvas ⇒ Object
- #get_needed_y ⇒ Object
-
#initialize(before, after, header, filename, image_size) ⇒ FullSetOfComparedImages
constructor
A new instance of FullSetOfComparedImages.
- #popup ⇒ Object
- #read_image_from_disk(filename) ⇒ Object
- #render ⇒ Object
- #render_footer(y_offset) ⇒ Object
- #render_header ⇒ Object
- #render_images_with_labels(y_offset) ⇒ Object
- #render_label(y_offset, label) ⇒ Object
-
#render_row_of_images(y_offset, left_image, right_image) ⇒ Object
noinspection RubyResolve.
- #render_row_of_labelled_images(processed, y_offset) ⇒ Object
- #save ⇒ Object
Constructor Details
#initialize(before, after, header, filename, image_size) ⇒ FullSetOfComparedImages
Returns a new instance of FullSetOfComparedImages.
35 36 37 38 39 40 41 42 43 44 45 46 47 |
# 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 |
Instance Method Details
#compress(before, after) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 |
# 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 ⇒ Object
72 73 74 75 76 77 |
# 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 ⇒ Object
79 80 81 82 83 84 85 86 87 88 |
# 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 ⇒ Object
154 155 156 |
# File 'lib/cartocss_helper/visualise_changes_diff_from_images.rb', line 154 def popup @canvas.display end |
#read_image_from_disk(filename) ⇒ Object
103 104 105 106 107 108 109 110 111 |
# 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 ⇒ Object
61 62 63 64 65 66 67 68 69 70 |
# 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) offset end |
#render_footer(y_offset) ⇒ Object
147 148 149 150 151 152 |
# File 'lib/cartocss_helper/visualise_changes_diff_from_images.rb', line 147 def (y_offset) label_drawer = Magick::Draw.new label_drawer.pointsize(@standard_pointsize) label_drawer.text(@margin, y_offset, 'generated using https://github.com/matkoniecz/CartoCSSHelper') label_drawer.draw(@canvas) end |
#render_header ⇒ Object
90 91 92 93 94 95 |
# 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) ⇒ Object
97 98 99 100 101 |
# 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) ⇒ Object
130 131 132 133 134 135 |
# 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) ⇒ Object
noinspection RubyResolve
138 139 140 141 142 143 144 145 |
# 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) ⇒ Object
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# 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 ⇒ Object
158 159 160 |
# File 'lib/cartocss_helper/visualise_changes_diff_from_images.rb', line 158 def save @canvas.write(@filename) end |