Starting paint args class - not integrated yet.
Draw args also now requires custom_colors from Deck. (Can't trust caller to override the default.)dev
parent
ad15e0f933
commit
08d0ac2b60
|
|
@ -1,3 +1,5 @@
|
|||
require 'squib/args/paint'
|
||||
require 'squib/args/card_range'
|
||||
module Squib
|
||||
class Deck
|
||||
|
||||
|
|
@ -21,7 +23,14 @@ module Squib
|
|||
# @return [nil] Returns nil
|
||||
# @api public
|
||||
def png(opts = {})
|
||||
opts = needs(opts, [:range, :files, :x, :y, :width, :height, :alpha, :layout, :blend, :angle, :mask])
|
||||
range = Args::CardRange.new(opts[:range], deck_size: size)
|
||||
paint = Args::Paint.new(custom_colors).load!(opts, expand_by: size, layout: layout)
|
||||
opts = needs(opts, [:range,
|
||||
:files,
|
||||
:x, :y, :width, :height,
|
||||
:angle,
|
||||
:alpha, :blend, :mask,
|
||||
:layout])
|
||||
Dir.chdir(img_dir) do
|
||||
@progress_bar.start('Loading PNG(s)', opts[:range].size) do |bar|
|
||||
opts[:range].each do |i|
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ module Squib
|
|||
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.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].rect(box[i], draw[i]) }
|
||||
end
|
||||
|
||||
|
|
@ -58,7 +58,7 @@ module Squib
|
|||
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.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
|
||||
|
||||
|
|
@ -83,7 +83,7 @@ module Squib
|
|||
# @api public
|
||||
def ellipse(opts = {})
|
||||
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(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].ellipse(box[i], draw[i]) }
|
||||
end
|
||||
|
|
@ -110,8 +110,8 @@ module Squib
|
|||
# @return [nil] intended to be void
|
||||
# @api public
|
||||
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)
|
||||
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
|
||||
|
|
@ -135,8 +135,8 @@ module Squib
|
|||
# @api public
|
||||
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)
|
||||
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)
|
||||
coords = Args::Coords.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
|
||||
range.each { |i| @cards[i].line(coords[i], draw[i]) }
|
||||
end
|
||||
|
||||
|
|
@ -160,8 +160,8 @@ module Squib
|
|||
# @return [nil] intended to be void
|
||||
# @api public
|
||||
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)
|
||||
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
|
||||
|
|
@ -185,10 +185,10 @@ module Squib
|
|||
# @return [nil] intended to be void
|
||||
# @api public
|
||||
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)
|
||||
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)
|
||||
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
|
||||
|
||||
|
|
@ -211,10 +211,10 @@ module Squib
|
|||
# @return [nil] intended to be void
|
||||
# @api public
|
||||
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)
|
||||
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)
|
||||
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
|
||||
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ module Squib
|
|||
para = Args::Paragraph.new(font).load!(opts, expand_by: size, layout: layout)
|
||||
box = Args::Box.new(self).load!(opts, expand_by: size, layout: layout, dpi: dpi)
|
||||
trans = Args::Transform.new.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(custom_colors).load!(opts, expand_by: size, layout: layout, dpi: dpi)
|
||||
embed = TextEmbed.new
|
||||
yield(embed) if block_given? #store the opts for later use
|
||||
extents = Array.new(@cards.size)
|
||||
|
|
|
|||
|
|
@ -10,9 +10,9 @@ module Squib
|
|||
include ArgLoader
|
||||
include ColorValidator
|
||||
|
||||
def initialize(custom_colors = {})
|
||||
def initialize(custom_colors)
|
||||
@custom_colors = custom_colors
|
||||
end
|
||||
end
|
||||
|
||||
def self.parameters
|
||||
{ color: :black,
|
||||
|
|
|
|||
|
|
@ -0,0 +1,44 @@
|
|||
require 'cairo'
|
||||
require 'squib/args/arg_loader'
|
||||
require 'squib/args/color_validator'
|
||||
|
||||
module Squib
|
||||
# @api private
|
||||
module Args
|
||||
class Paint
|
||||
include ArgLoader
|
||||
include ColorValidator
|
||||
|
||||
def self.parameters
|
||||
{ alpha: 1.0,
|
||||
blend: :none,
|
||||
mask: nil,
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
def self.expanding_parameters
|
||||
parameters.keys # all of them are expandable
|
||||
end
|
||||
|
||||
def self.params_with_units
|
||||
[]
|
||||
end
|
||||
|
||||
def initialize(custom_colors)
|
||||
@custom_colors = custom_colors
|
||||
end
|
||||
|
||||
def validate_alpha(arg, _i)
|
||||
raise 'alpha must respond to to_f' unless arg.respond_to? :to_f
|
||||
arg.to_f
|
||||
end
|
||||
|
||||
def validate_mask(arg, _i)
|
||||
colorify(arg, @custom_colors)
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
require 'spec_helper'
|
||||
require 'squib/args/paint'
|
||||
|
||||
describe Squib::Args::Draw do
|
||||
let(:custom_colors) { {'foo' => 'abc'} }
|
||||
subject(:paint) {Squib::Args::Paint.new(custom_colors)}
|
||||
|
||||
context 'alpha' do
|
||||
|
||||
it 'can be a float' do
|
||||
args = {alpha: 0.6}
|
||||
paint.load!(args)
|
||||
expect(paint.alpha).to eq [0.6]
|
||||
end
|
||||
|
||||
it 'raises exception when not a float' do
|
||||
args = {alpha: /6/}
|
||||
expect { paint.load!(args) }.to raise_error('alpha must respond to to_f')
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
Loading…
Reference in New Issue