diff --git a/lib/squib/api/shapes.rb b/lib/squib/api/shapes.rb index dc3999a..b4d2193 100644 --- a/lib/squib/api/shapes.rb +++ b/lib/squib/api/shapes.rb @@ -1,10 +1,8 @@ require 'squib/args/box' require 'squib/args/draw' require 'squib/args/card_range' -require 'squib/args/tri' -require 'squib/args/bezier' -require 'squib/args/polygon' require 'squib/args/transform' +require 'squib/args/coords' module Squib class Deck @@ -58,11 +56,10 @@ module Squib # @return [nil] intended to be void # @api public def circle(opts = {}) - range = Args::CardRange.new(opts[:range], deck_size: size) - opts = {radius: 100}.merge(opts) # overriding the non-system default - box = Args::Box.new(self).load!(opts, expand_by: size, layout: layout, dpi: dpi) - draw = Args::Draw.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) - range.each { |i| @cards[i].circle(box[i], draw[i]) } + 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.load!(opts, expand_by: size, layout: layout, dpi: dpi) + range.each { |i| @cards[i].circle(coords[i], draw[i]) } end # Draw an ellipse @@ -115,8 +112,8 @@ module Squib def triangle(opts = {}) range = Args::CardRange.new(opts[:range], deck_size: size) draw = Args::Draw.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) - tri = Args::Tri.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) - range.each { |i| @cards[i].triangle(tri[i], draw[i]) } + coords = Args::Coords.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) + range.each { |i| @cards[i].triangle(coords[i], draw[i]) } end # Draw a line using the given coordinates @@ -139,8 +136,8 @@ module Squib def line(opts = {}) range = Args::CardRange.new(opts[:range], deck_size: size) draw = Args::Draw.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) - bezier = Args::Bezier.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) - range.each { |i| @cards[i].line(bezier[i], draw[i]) } + coords = Args::Coords.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) + range.each { |i| @cards[i].line(coords[i], draw[i]) } end # Draw a curve using the given coordinates @@ -165,8 +162,8 @@ module Squib def curve(opts = {}) range = Args::CardRange.new(opts[:range], deck_size: size) draw = Args::Draw.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) - bezier = Args::Bezier.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) - range.each { |i| @cards[i].curve(bezier[i], draw[i]) } + coords = Args::Coords.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) + range.each { |i| @cards[i].curve(coords[i], draw[i]) } end # Draw a star at the given x,y @@ -190,9 +187,9 @@ module Squib def star(opts = {}) range = Args::CardRange.new(opts[:range], deck_size: size) draw = Args::Draw.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) - poly = Args::Polygon.new.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(poly[i], trans[i], draw[i]) } + range.each { |i| @cards[i].star(coords[i], trans[i], draw[i]) } end # Draw a regular polygon at the given x,y @@ -216,9 +213,9 @@ module Squib def polygon(opts = {}) range = Args::CardRange.new(opts[:range], deck_size: size) draw = Args::Draw.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) - poly = Args::Polygon.new.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(poly[i], trans[i], draw[i]) } + range.each { |i| @cards[i].polygon(coords[i], trans[i], draw[i]) } end end diff --git a/lib/squib/args/bezier.rb b/lib/squib/args/coords.rb similarity index 63% rename from lib/squib/args/bezier.rb rename to lib/squib/args/coords.rb index 7ed1714..710af09 100644 --- a/lib/squib/args/bezier.rb +++ b/lib/squib/args/coords.rb @@ -4,14 +4,19 @@ module Squib # @api private module Args - class Bezier + class Coords include ArgLoader def self.parameters - { x1: 100, y1: 100, - cx1: 0 , cy1: 0, + { x: 0, y: 0, + x1: 100, y1: 100, x2: 150, y2: 150, - cx2: 0 , cy2: 0} + x3: 100, y3: 150, + cx1: 0 , cy1: 0, + cx2: 0 , cy2: 0, + inner_radius: 50, outer_radius: 100, + radius: 100, + n: 5, } end def self.expanding_parameters diff --git a/lib/squib/args/polygon.rb b/lib/squib/args/polygon.rb deleted file mode 100644 index fca6497..0000000 --- a/lib/squib/args/polygon.rb +++ /dev/null @@ -1,26 +0,0 @@ -require 'squib/args/arg_loader' - -module Squib - # @api private - module Args - - class Polygon - include ArgLoader - - def self.parameters - { x: 0, y: 0, n: 5, - radius: 100, inner_radius: 50, outer_radius: 100} - end - - def self.expanding_parameters - parameters.keys # all of them - end - - def self.params_with_units - parameters.keys # all of them - end - - end - - end -end \ No newline at end of file diff --git a/lib/squib/args/tri.rb b/lib/squib/args/tri.rb deleted file mode 100644 index d3e464e..0000000 --- a/lib/squib/args/tri.rb +++ /dev/null @@ -1,27 +0,0 @@ -require 'squib/args/arg_loader' - -module Squib - # @api private - module Args - - class Tri - include ArgLoader - - def self.parameters - { x1: 100, y1: 100, - x2: 150, y2: 150, - x3: 100, y3: 150 } - end - - def self.expanding_parameters - parameters.keys # all of them - end - - def self.params_with_units - parameters.keys # all of them - end - - end - - end -end \ No newline at end of file