Starting paint args class - not integrated yet.
Draw args also now requires custom_colors from Deck. (Can't trust caller to override the default.)
This commit is contained in:
+10
-1
@@ -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|
|
||||
|
||||
+15
-15
@@ -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
|
||||
Reference in New Issue
Block a user