You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
911 B
36 lines
911 B
require_relative '../errors_warnings/warn_unexpected_params' |
|
|
|
module Squib |
|
class Deck |
|
def polygon(opts = {}) |
|
DSL::Polygon.new(self, __callee__).run(opts) |
|
end |
|
end |
|
|
|
module DSL |
|
class Polygon |
|
include WarnUnexpectedParams |
|
attr_reader :dsl_method, :deck |
|
|
|
def initialize(deck, dsl_method) |
|
@deck = deck |
|
@dsl_method = dsl_method |
|
end |
|
|
|
def self.accepted_params |
|
%i(n x y radius angle |
|
fill_color stroke_color stroke_width stroke_strategy join dash cap |
|
range layout) |
|
end |
|
|
|
def run(opts) |
|
warn_if_unexpected opts |
|
range = Args.extract_range opts, deck |
|
draw = Args.extract_draw opts, deck |
|
coords = Args.extract_coords opts, deck |
|
trans = Args.extract_transform opts, deck |
|
range.each { |i| deck.cards[i].polygon(coords[i], trans[i], draw[i]) } |
|
end |
|
end |
|
end |
|
end
|
|
|