class DomGlancy::SVG
Public Class Methods
new(set_current_not_master, set_master_not_current, set_changed_master)
click to toggle source
# File lib/dom_glancy/svg.rb, line 7 def initialize(set_current_not_master, set_master_not_current, set_changed_master) @set_current_not_master = set_current_not_master @set_master_not_current = set_master_not_current @set_changed_master = set_changed_master end
Public Instance Methods
generate_svg()
click to toggle source
# File lib/dom_glancy/svg.rb, line 13 def generate_svg add_ids rectangles = make_rectangles width, height = get_window_size_from_rectangles(rectangles) s = svg_start(width, height) rectangles.each do |rectangle| rectangle_string = " <rect id='#{rectangle[:js_id]}' x = '#{rectangle['left']}' y = '#{rectangle['top']}' width = '#{rectangle['width']}' height = '#{rectangle['height']}' fill = '#{rectangle[:fill]}' stroke = '#{rectangle[:stroke]}' stroke-width = '#{rectangle[:stroke_width]}' fill-opacity = '#{rectangle[:opacity]}' />\n" s += rectangle_string end s += svg_end s += "\n" end
Private Instance Methods
add_ids()
click to toggle source
# File lib/dom_glancy/svg.rb, line 32 def add_ids js_id = 0 @set_master_not_current.each do |item| item[:js_id] = js_id js_id += 1 end @set_current_not_master.each do |item| item[:js_id] = js_id js_id += 1 end @set_changed_master.each do |item| item[:js_id] = js_id js_id += 1 end end
format__not_in_current()
click to toggle source
# File lib/dom_glancy/svg.rb, line 94 def format__not_in_current { :stroke => 'red', :fill => 'white', :stroke_width => '1', :opacity => '0.5' } end
format__not_in_master()
click to toggle source
# File lib/dom_glancy/svg.rb, line 85 def format__not_in_master { :stroke => 'blue', :fill => 'white', :stroke_width => '1', :opacity => '0.5' } end
format__same_but_different()
click to toggle source
# File lib/dom_glancy/svg.rb, line 103 def format__same_but_different { :stroke => 'orange', :fill => 'white', :stroke_width => '1', :opacity => '0.5' } end
get_window_size_from_rectangles(rectangles)
click to toggle source
# File lib/dom_glancy/svg.rb, line 55 def get_window_size_from_rectangles(rectangles) width = 0 height = 0 rectangles.each do |rectangle| rectangle_right = rectangle['left'].to_i + rectangle['width'].to_i rectangle_bottom = rectangle['top'].to_i + rectangle['height'].to_i width = rectangle_right if rectangle_right > width height = rectangle_bottom if rectangle_bottom > height end [width, height] end
make_rectangles()
click to toggle source
# File lib/dom_glancy/svg.rb, line 48 def make_rectangles rectangles = @set_current_not_master.map { |item| item.merge(format__not_in_master) } rectangles << @set_master_not_current.map { |item| item.merge(format__not_in_current) } rectangles << @set_changed_master.map { |item| item.merge(format__same_but_different) } rectangles.flatten! end
svg_end()
click to toggle source
# File lib/dom_glancy/svg.rb, line 78 def svg_end s = [' </svg>'] s << '' s.join("\n") end
svg_start(width, height)
click to toggle source
# File lib/dom_glancy/svg.rb, line 69 def svg_start(width, height) s = ["<?xml version='1.0' standalone='no'?>"] s << " <!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>" s << " <svg version = '1.1' width='#{width}px' height='#{height}px' border='2px' style='background-color:#FFFFFF;border:1px solid black;'>" s << '' s.join("\n") end