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/box'
|
||||||
require 'squib/args/draw'
|
require 'squib/args/draw'
|
||||||
require 'squib/args/card_range'
|
require 'squib/args/card_range'
|
||||||
require 'squib/args/tri'
|
|
||||||
require 'squib/args/bezier'
|
|
||||||
require 'squib/args/polygon'
|
|
||||||
require 'squib/args/transform'
|
require 'squib/args/transform'
|
||||||
|
require 'squib/args/coords'
|
||||||
|
|
||||||
module Squib
|
module Squib
|
||||||
class Deck
|
class Deck
|
||||||
|
|
@ -58,11 +56,10 @@ module Squib
|
||||||
# @return [nil] intended to be void
|
# @return [nil] intended to be void
|
||||||
# @api public
|
# @api public
|
||||||
def circle(opts = {})
|
def circle(opts = {})
|
||||||
range = Args::CardRange.new(opts[:range], deck_size: size)
|
range = Args::CardRange.new(opts[:range], deck_size: size)
|
||||||
opts = {radius: 100}.merge(opts) # overriding the non-system default
|
coords = Args::Coords.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
|
||||||
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)
|
||||||
draw = Args::Draw.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
|
range.each { |i| @cards[i].circle(coords[i], draw[i]) }
|
||||||
range.each { |i| @cards[i].circle(box[i], draw[i]) }
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# Draw an ellipse
|
# Draw an ellipse
|
||||||
|
|
@ -115,8 +112,8 @@ module Squib
|
||||||
def triangle(opts = {})
|
def triangle(opts = {})
|
||||||
range = Args::CardRange.new(opts[:range], deck_size: size)
|
range = Args::CardRange.new(opts[:range], deck_size: size)
|
||||||
draw = Args::Draw.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
|
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)
|
coords = Args::Coords.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
|
||||||
range.each { |i| @cards[i].triangle(tri[i], draw[i]) }
|
range.each { |i| @cards[i].triangle(coords[i], draw[i]) }
|
||||||
end
|
end
|
||||||
|
|
||||||
# Draw a line using the given coordinates
|
# Draw a line using the given coordinates
|
||||||
|
|
@ -139,8 +136,8 @@ module Squib
|
||||||
def line(opts = {})
|
def line(opts = {})
|
||||||
range = Args::CardRange.new(opts[:range], deck_size: size)
|
range = Args::CardRange.new(opts[:range], deck_size: size)
|
||||||
draw = Args::Draw.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
|
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)
|
coords = Args::Coords.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
|
||||||
range.each { |i| @cards[i].line(bezier[i], draw[i]) }
|
range.each { |i| @cards[i].line(coords[i], draw[i]) }
|
||||||
end
|
end
|
||||||
|
|
||||||
# Draw a curve using the given coordinates
|
# Draw a curve using the given coordinates
|
||||||
|
|
@ -165,8 +162,8 @@ module Squib
|
||||||
def curve(opts = {})
|
def curve(opts = {})
|
||||||
range = Args::CardRange.new(opts[:range], deck_size: size)
|
range = Args::CardRange.new(opts[:range], deck_size: size)
|
||||||
draw = Args::Draw.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
|
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)
|
coords = Args::Coords.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
|
||||||
range.each { |i| @cards[i].curve(bezier[i], draw[i]) }
|
range.each { |i| @cards[i].curve(coords[i], draw[i]) }
|
||||||
end
|
end
|
||||||
|
|
||||||
# Draw a star at the given x,y
|
# Draw a star at the given x,y
|
||||||
|
|
@ -190,9 +187,9 @@ module Squib
|
||||||
def star(opts = {})
|
def star(opts = {})
|
||||||
range = Args::CardRange.new(opts[:range], deck_size: size)
|
range = Args::CardRange.new(opts[:range], deck_size: size)
|
||||||
draw = Args::Draw.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
|
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)
|
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
|
end
|
||||||
|
|
||||||
# Draw a regular polygon at the given x,y
|
# Draw a regular polygon at the given x,y
|
||||||
|
|
@ -216,9 +213,9 @@ module Squib
|
||||||
def polygon(opts = {})
|
def polygon(opts = {})
|
||||||
range = Args::CardRange.new(opts[:range], deck_size: size)
|
range = Args::CardRange.new(opts[:range], deck_size: size)
|
||||||
draw = Args::Draw.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
|
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)
|
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
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -4,14 +4,19 @@ module Squib
|
||||||
# @api private
|
# @api private
|
||||||
module Args
|
module Args
|
||||||
|
|
||||||
class Bezier
|
class Coords
|
||||||
include ArgLoader
|
include ArgLoader
|
||||||
|
|
||||||
def self.parameters
|
def self.parameters
|
||||||
{ x1: 100, y1: 100,
|
{ x: 0, y: 0,
|
||||||
cx1: 0 , cy1: 0,
|
x1: 100, y1: 100,
|
||||||
x2: 150, y2: 150,
|
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
|
end
|
||||||
|
|
||||||
def self.expanding_parameters
|
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