Args refactoring: combine polygon, tri, and bezier args into coords
As a rule, I think it's better to group args classes together have some extra overhead of extracting unused parameters. For example, we don't *need* to extract "n" for the circle, but the ease of having logically grouped classes is better than having tons of different classes tailored to each command.dev
parent
b5903293d7
commit
c931a860a1
|
|
@ -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
|
||||
|
|
@ -59,10 +57,9 @@ module Squib
|
|||
# @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)
|
||||
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(box[i], draw[i]) }
|
||||
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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
Loading…
Reference in New Issue