11 changed files with 159 additions and 109 deletions
@ -1,25 +0,0 @@ |
|||||||
require_relative 'text_embed' |
|
||||||
require_relative '../args/box' |
|
||||||
require_relative '../args/card_range' |
|
||||||
require_relative '../args/draw' |
|
||||||
require_relative '../args/paragraph' |
|
||||||
|
|
||||||
module Squib |
|
||||||
class Deck |
|
||||||
|
|
||||||
# DSL method. See http://squib.readthedocs.io |
|
||||||
def text(opts = {}) |
|
||||||
range = Args::CardRange.new(opts[:range], deck_size: size) |
|
||||||
para = Args::Paragraph.new(font).load!(opts, expand_by: size, layout: layout) |
|
||||||
box = Args::Box.new(self, { width: :auto, height: :auto }).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(custom_colors, { stroke_width: 0.0 }).load!(opts, expand_by: size, layout: layout, dpi: dpi) |
|
||||||
embed = TextEmbed.new(size, custom_colors, layout, dpi, img_dir) |
|
||||||
yield(embed) if block_given? # store the opts for later use |
|
||||||
extents = Array.new(@cards.size) |
|
||||||
range.each { |i| extents[i] = @cards[i].text(embed, para[i], box[i], trans[i], draw[i], dpi) } |
|
||||||
return extents |
|
||||||
end |
|
||||||
|
|
||||||
end |
|
||||||
end |
|
||||||
@ -1,75 +0,0 @@ |
|||||||
require_relative '../args/box' |
|
||||||
require_relative '../args/card_range' |
|
||||||
require_relative '../args/embed_adjust' |
|
||||||
require_relative '../args/embed_key' |
|
||||||
require_relative '../args/input_file' |
|
||||||
require_relative '../args/paint' |
|
||||||
require_relative '../args/transform' |
|
||||||
|
|
||||||
module Squib |
|
||||||
class TextEmbed |
|
||||||
# :nodoc: |
|
||||||
# @api private |
|
||||||
attr_reader :rules |
|
||||||
|
|
||||||
# :nodoc: |
|
||||||
# @api private |
|
||||||
def initialize(deck_size, custom_colors, layout, dpi, img_dir) |
|
||||||
@deck_size = deck_size |
|
||||||
@custom_colors = custom_colors |
|
||||||
@layout = layout |
|
||||||
@dpi = dpi |
|
||||||
@img_dir = img_dir |
|
||||||
@rules = {} # store an array of options for later usage |
|
||||||
end |
|
||||||
|
|
||||||
# DSL method. See http://squib.readthedocs.io |
|
||||||
def svg(opts = {}) |
|
||||||
key = Args::EmbedKey.new.validate_key(opts[:key]) |
|
||||||
range = Args::CardRange.new(opts[:range], deck_size: @deck_size) |
|
||||||
paint = Args::Paint.new(@custom_colors).load!(opts, expand_by: @deck_size, layout: @layout) |
|
||||||
box = Args::Box.new(self, { width: :native, height: :native }).load!(opts, expand_by: @deck_size, layout: @layout, dpi: @dpi) |
|
||||||
adjust = Args::EmbedAdjust.new.load!(opts, expand_by: @deck_size, layout: @layout, dpi: @dpi) |
|
||||||
trans = Args::Transform.new.load!(opts, expand_by: @deck_size, layout: @layout, dpi: @dpi) |
|
||||||
ifile = Args::InputFile.new.load!(opts, expand_by: @deck_size, layout: @layout, dpi: @dpi) |
|
||||||
svg_args = Args::SvgSpecial.new.load!(opts, expand_by: @deck_size, layout: @layout, dpi: @dpi) |
|
||||||
rule = { type: :svg, file: ifile, box: box, paint: paint, trans: trans, |
|
||||||
adjust: adjust, svg_args: svg_args } |
|
||||||
rule[:draw] = Proc.new do |card, x, y, scale| |
|
||||||
i = card.index |
|
||||||
b = box[i] |
|
||||||
b.x, b.y = x, y |
|
||||||
b.width = b.width * scale if b.width.is_a? Numeric |
|
||||||
b.height = b.height * scale if b.height.is_a? Numeric |
|
||||||
Dir.chdir(@img_dir) do |
|
||||||
card.svg(ifile[i].file, svg_args[i], b, paint[i], trans[i]) |
|
||||||
end |
|
||||||
end |
|
||||||
@rules[key] = rule |
|
||||||
end |
|
||||||
|
|
||||||
# DSL method. See http://squib.readthedocs.io |
|
||||||
def png(opts = {}) |
|
||||||
key = Args::EmbedKey.new.validate_key(opts[:key]) |
|
||||||
range = Args::CardRange.new(opts[:range], deck_size: @deck_size) |
|
||||||
paint = Args::Paint.new(@custom_colors).load!(opts, expand_by: @deck_size, layout: @layout) |
|
||||||
box = Args::Box.new(self, { width: :native, height: :native }).load!(opts, expand_by: @deck_size, layout: @layout, dpi: @dpi) |
|
||||||
adjust = Args::EmbedAdjust.new.load!(opts, expand_by: @deck_size, layout: @layout, dpi: @dpi) |
|
||||||
trans = Args::Transform.new.load!(opts, expand_by: @deck_size, layout: @layout, dpi: @dpi) |
|
||||||
ifile = Args::InputFile.new.load!(opts, expand_by: @deck_size, layout: @layout, dpi: @dpi) |
|
||||||
rule = { type: :png, file: ifile, box: box, paint: paint, trans: trans, adjust: adjust } |
|
||||||
rule[:draw] = Proc.new do |card, x, y, scale| |
|
||||||
i = card.index |
|
||||||
b = box[i] |
|
||||||
b.x, b.y = x, y |
|
||||||
b.width = b.width * scale if b.width.is_a? Numeric |
|
||||||
b.height = b.height * scale if b.height.is_a? Numeric |
|
||||||
Dir.chdir(@img_dir) do |
|
||||||
card.png(ifile[i].file, b, paint[i], trans[i]) |
|
||||||
end |
|
||||||
end |
|
||||||
@rules[key] = rule |
|
||||||
end |
|
||||||
|
|
||||||
end |
|
||||||
end |
|
||||||
@ -0,0 +1,54 @@ |
|||||||
|
require_relative '../args/box' |
||||||
|
require_relative '../args/card_range' |
||||||
|
require_relative '../args/draw' |
||||||
|
require_relative '../args/paragraph' |
||||||
|
require_relative '../args/transform' |
||||||
|
require_relative '../dsl/text_embed' |
||||||
|
require_relative '../errors_warnings/warn_unexpected_params' |
||||||
|
|
||||||
|
module Squib |
||||||
|
class Deck |
||||||
|
def text(opts = {}) |
||||||
|
embed = TextEmbed.new self, __callee__ |
||||||
|
yield(embed) if block_given? # store the opts for later use |
||||||
|
DSL::Text.new(self, __callee__, embed).run(opts) |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
module DSL |
||||||
|
class Text |
||||||
|
include WarnUnexpectedParams |
||||||
|
attr_reader :dsl_method, :deck, :embed |
||||||
|
|
||||||
|
def initialize(deck, dsl_method, embed) |
||||||
|
@deck = deck |
||||||
|
@dsl_method = dsl_method |
||||||
|
@embed = embed |
||||||
|
end |
||||||
|
|
||||||
|
def self.accepted_params |
||||||
|
%i( |
||||||
|
str font font_size x y markup width height |
||||||
|
wrap spacing align justify valign ellipsize angle dash cap join |
||||||
|
hint color fill_color |
||||||
|
stroke_color stroke_width stroke_width stroke_color stroke_strategy |
||||||
|
range layout |
||||||
|
) |
||||||
|
end |
||||||
|
|
||||||
|
def run(opts) |
||||||
|
warn_if_unexpected opts |
||||||
|
range = Args.extract_range opts, deck |
||||||
|
para = Args.extract_para opts, deck |
||||||
|
box = Args.extract_box opts, deck, { width: :auto, height: :auto } |
||||||
|
trans = Args.extract_transform opts, deck |
||||||
|
draw = Args.extract_draw opts, deck, { stroke_width: 0.0 } |
||||||
|
extents = Array.new(deck.size) |
||||||
|
range.each do |i| |
||||||
|
extents[i] = deck.cards[i].text(embed, para[i], box[i], trans[i], draw[i], deck.dpi) |
||||||
|
end |
||||||
|
return extents |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
@ -0,0 +1,78 @@ |
|||||||
|
require_relative '../args/box' |
||||||
|
require_relative '../args/card_range' |
||||||
|
require_relative '../args/embed_adjust' |
||||||
|
require_relative '../args/embed_key' |
||||||
|
require_relative '../args/input_file' |
||||||
|
require_relative '../args/paint' |
||||||
|
require_relative '../args/transform' |
||||||
|
require_relative '../errors_warnings/warn_unexpected_params' |
||||||
|
|
||||||
|
module Squib |
||||||
|
class TextEmbed |
||||||
|
include WarnUnexpectedParams |
||||||
|
attr_reader :rules, :deck, :dsl_method |
||||||
|
|
||||||
|
def initialize(deck, dsl_method) |
||||||
|
@deck = deck |
||||||
|
@rules = {} # store an array of options for later usage |
||||||
|
end |
||||||
|
|
||||||
|
def self.accepted_params |
||||||
|
%i( |
||||||
|
key file id force_id layout width height dx dy |
||||||
|
id force_id data |
||||||
|
flip_horizontal flip_vertical |
||||||
|
alpha angle blend mask |
||||||
|
) |
||||||
|
end |
||||||
|
|
||||||
|
def svg(opts = {}) |
||||||
|
warn_if_unexpected opts |
||||||
|
key = Args::EmbedKey.new.validate_key(opts[:key]) |
||||||
|
range = Args.extract_range opts, deck |
||||||
|
paint = Args.extract_paint opts, deck |
||||||
|
box = Args.extract_box opts, deck, { width: :native, height: :native } |
||||||
|
adjust = Args::EmbedAdjust.new.load!(opts, expand_by: deck.size, layout: deck.layout, dpi: deck.dpi) |
||||||
|
trans = Args.extract_transform opts, deck |
||||||
|
ifile = Args.extract_input_file opts, deck |
||||||
|
svg_args = Args.extract_svg_special opts, deck |
||||||
|
rule = { type: :svg, file: ifile, box: box, paint: paint, trans: trans, |
||||||
|
adjust: adjust, svg_args: svg_args } |
||||||
|
rule[:draw] = Proc.new do |card, x, y, scale| |
||||||
|
i = card.index |
||||||
|
b = box[i] |
||||||
|
b.x, b.y = x, y |
||||||
|
b.width = b.width * scale if b.width.is_a? Numeric |
||||||
|
b.height = b.height * scale if b.height.is_a? Numeric |
||||||
|
Dir.chdir(deck.img_dir) do |
||||||
|
card.svg(ifile[i].file, svg_args[i], b, paint[i], trans[i]) |
||||||
|
end |
||||||
|
end |
||||||
|
@rules[key] = rule |
||||||
|
end |
||||||
|
|
||||||
|
def png(opts = {}) |
||||||
|
warn_if_unexpected opts |
||||||
|
key = Args::EmbedKey.new.validate_key(opts[:key]) |
||||||
|
range = Args.extract_range opts, deck |
||||||
|
paint = Args.extract_paint opts, deck |
||||||
|
box = Args.extract_box opts, deck, { width: :native, height: :native } |
||||||
|
adjust = Args::EmbedAdjust.new.load!(opts, expand_by: deck.size, layout: deck.layout, dpi: deck.dpi) |
||||||
|
trans = Args.extract_transform opts, deck |
||||||
|
ifile = Args.extract_input_file opts, deck |
||||||
|
rule = { type: :png, file: ifile, box: box, paint: paint, trans: trans, adjust: adjust } |
||||||
|
rule[:draw] = Proc.new do |card, x, y, scale| |
||||||
|
i = card.index |
||||||
|
b = box[i] |
||||||
|
b.x, b.y = x, y |
||||||
|
b.width = b.width * scale if b.width.is_a? Numeric |
||||||
|
b.height = b.height * scale if b.height.is_a? Numeric |
||||||
|
Dir.chdir(deck.img_dir) do |
||||||
|
card.png(ifile[i].file, b, paint[i], trans[i]) |
||||||
|
end |
||||||
|
end |
||||||
|
@rules[key] = rule |
||||||
|
end |
||||||
|
|
||||||
|
end |
||||||
|
end |
||||||
Loading…
Reference in new issue