lib/squib/api/shapes.rb in squib-0.15.2 vs lib/squib/api/shapes.rb in squib-0.15.3

- old
+ new

@@ -1,124 +1,124 @@ -require_relative '../args/box' -require_relative '../args/draw' -require_relative '../args/card_range' -require_relative '../args/transform' -require_relative '../args/coords' - -module Squib - class Deck - - # DSL method. See http://squib.readthedocs.io - def rect(opts = {}) - range = Args::CardRange.new(opts[:range], deck_size: size) - box = Args::Box.new(self).load!(opts, expand_by: size, layout: layout, dpi: dpi) - draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi) - trans = Args::Transform.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) - range.each { |i| @cards[i].rect(box[i], draw[i], trans[i]) } - end - - # DSL method. See http://squib.readthedocs.io - def circle(opts = {}) - range = Args::CardRange.new(opts[:range], deck_size: size) - coords = Args::Coords.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) - draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi) - range.each { |i| @cards[i].circle(coords[i], draw[i]) } - end - - # DSL method. See http://squib.readthedocs.io - def ellipse(opts = {}) - range = Args::CardRange.new(opts[:range], deck_size: size) - draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi) - box = Args::Box.new(self, { width: '0.25in', height: '0.25in' }).load!(opts, expand_by: size, layout: layout, dpi: dpi) - trans = Args::Transform.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) - range.each { |i| @cards[i].ellipse(box[i], draw[i], trans[i]) } - end - - # DSL method. See http://squib.readthedocs.io - def grid(opts = {}) - range = Args::CardRange.new(opts[:range], deck_size: size) - draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi) - box = Args::Box.new(self).load!(opts, expand_by: size, layout: layout, dpi: dpi) - range.each { |i| @cards[i].grid(box[i], draw[i]) } - end - - # DSL method. See http://squib.readthedocs.io - def triangle(opts = {}) - range = Args::CardRange.new(opts[:range], deck_size: size) - draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi) - coords = Args::Coords.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) - range.each { |i| @cards[i].triangle(coords[i], draw[i]) } - end - - # DSL method. See http://squib.readthedocs.io - def line(opts = {}) - range = Args::CardRange.new(opts[:range], deck_size: size) - draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi) - coords = Args::Coords.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) - range.each { |i| @cards[i].line(coords[i], draw[i]) } - end - - # DSL method. See http://squib.readthedocs.io - def curve(opts = {}) - range = Args::CardRange.new(opts[:range], deck_size: size) - draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi) - coords = Args::Coords.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) - range.each { |i| @cards[i].curve(coords[i], draw[i]) } - end - - # DSL method. See http://squib.readthedocs.io - def star(opts = {}) - range = Args::CardRange.new(opts[:range], deck_size: size) - draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi) - coords = Args::Coords.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) - trans = Args::Transform.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) - range.each { |i| @cards[i].star(coords[i], trans[i], draw[i]) } - end - - # DSL method. See http://squib.readthedocs.io - def polygon(opts = {}) - range = Args::CardRange.new(opts[:range], deck_size: size) - draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi) - coords = Args::Coords.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) - trans = Args::Transform.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) - range.each { |i| @cards[i].polygon(coords[i], trans[i], draw[i]) } - end - - # DSL method. See http://squib.readthedocs.io - def safe_zone(opts = {}) - safe_defaults = { - margin: '0.25in', - radius: '0.125in', - stroke_color: :blue, - fill_color: '#0000', - stroke_width: 1.0, - dash: '3 3', - } - new_opts = safe_defaults.merge(opts) - margin = Args::UnitConversion.parse new_opts[:margin] - new_opts[:x] = margin - new_opts[:y] = margin - new_opts[:width] = width - (2 * margin) - new_opts[:height] = height - (2 * margin) - rect new_opts - end - - # DSL method. See http://squib.readthedocs.io - def cut_zone(opts = {}) - safe_defaults = { - margin: '0.125in', - radius: '0.125in', - stroke_color: :red, - fill_color: '#0000', - stroke_width: 2.0, - } - new_opts = safe_defaults.merge(opts) - margin = Args::UnitConversion.parse new_opts[:margin] - new_opts[:x] = margin - new_opts[:y] = margin - new_opts[:width] = width - (2 * margin) - new_opts[:height] = height - (2 * margin) - rect new_opts - end - - end -end +require_relative '../args/box' +require_relative '../args/draw' +require_relative '../args/card_range' +require_relative '../args/transform' +require_relative '../args/coords' + +module Squib + class Deck + + # DSL method. See http://squib.readthedocs.io + def rect(opts = {}) + range = Args::CardRange.new(opts[:range], deck_size: size) + box = Args::Box.new(self).load!(opts, expand_by: size, layout: layout, dpi: dpi) + draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi) + trans = Args::Transform.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) + range.each { |i| @cards[i].rect(box[i], draw[i], trans[i]) } + end + + # DSL method. See http://squib.readthedocs.io + def circle(opts = {}) + range = Args::CardRange.new(opts[:range], deck_size: size) + coords = Args::Coords.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) + draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi) + range.each { |i| @cards[i].circle(coords[i], draw[i]) } + end + + # DSL method. See http://squib.readthedocs.io + def ellipse(opts = {}) + range = Args::CardRange.new(opts[:range], deck_size: size) + draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi) + box = Args::Box.new(self, { width: '0.25in', height: '0.25in' }).load!(opts, expand_by: size, layout: layout, dpi: dpi) + trans = Args::Transform.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) + range.each { |i| @cards[i].ellipse(box[i], draw[i], trans[i]) } + end + + # DSL method. See http://squib.readthedocs.io + def grid(opts = {}) + range = Args::CardRange.new(opts[:range], deck_size: size) + draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi) + box = Args::Box.new(self).load!(opts, expand_by: size, layout: layout, dpi: dpi) + range.each { |i| @cards[i].grid(box[i], draw[i]) } + end + + # DSL method. See http://squib.readthedocs.io + def triangle(opts = {}) + range = Args::CardRange.new(opts[:range], deck_size: size) + draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi) + coords = Args::Coords.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) + range.each { |i| @cards[i].triangle(coords[i], draw[i]) } + end + + # DSL method. See http://squib.readthedocs.io + def line(opts = {}) + range = Args::CardRange.new(opts[:range], deck_size: size) + draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi) + coords = Args::Coords.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) + range.each { |i| @cards[i].line(coords[i], draw[i]) } + end + + # DSL method. See http://squib.readthedocs.io + def curve(opts = {}) + range = Args::CardRange.new(opts[:range], deck_size: size) + draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi) + coords = Args::Coords.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) + range.each { |i| @cards[i].curve(coords[i], draw[i]) } + end + + # DSL method. See http://squib.readthedocs.io + def star(opts = {}) + range = Args::CardRange.new(opts[:range], deck_size: size) + draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi) + coords = Args::Coords.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) + trans = Args::Transform.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) + range.each { |i| @cards[i].star(coords[i], trans[i], draw[i]) } + end + + # DSL method. See http://squib.readthedocs.io + def polygon(opts = {}) + range = Args::CardRange.new(opts[:range], deck_size: size) + draw = Args::Draw.new(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi) + coords = Args::Coords.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) + trans = Args::Transform.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) + range.each { |i| @cards[i].polygon(coords[i], trans[i], draw[i]) } + end + + # DSL method. See http://squib.readthedocs.io + def safe_zone(opts = {}) + safe_defaults = { + margin: '0.25in', + radius: '0.125in', + stroke_color: :blue, + fill_color: '#0000', + stroke_width: 1.0, + dash: '3 3', + } + new_opts = safe_defaults.merge(opts) + margin = Args::UnitConversion.parse new_opts[:margin] + new_opts[:x] = margin + new_opts[:y] = margin + new_opts[:width] = width - (2 * margin) + new_opts[:height] = height - (2 * margin) + rect new_opts + end + + # DSL method. See http://squib.readthedocs.io + def cut_zone(opts = {}) + safe_defaults = { + margin: '0.125in', + radius: '0.125in', + stroke_color: :red, + fill_color: '#0000', + stroke_width: 2.0, + } + new_opts = safe_defaults.merge(opts) + margin = Args::UnitConversion.parse new_opts[:margin] + new_opts[:x] = margin + new_opts[:y] = margin + new_opts[:width] = width - (2 * margin) + new_opts[:height] = height - (2 * margin) + rect new_opts + end + + end +end