From 2362e189d7b786df3dbfabe03ab22ddc1ad571b2 Mon Sep 17 00:00:00 2001 From: Andy Meneely Date: Thu, 5 Oct 2017 23:36:53 -0400 Subject: [PATCH] new methods: safe_zone and cut_zone --- CHANGELOG.md | 1 + lib/squib/api/shapes.rb | 37 ++++++++ samples/shapes/_proofs.rb | 22 +++++ samples/shapes/proof_poker_00_expected.png | Bin 0 -> 16922 bytes samples/shapes/proof_tiny_00_expected.png | Bin 0 -> 8292 bytes spec/data/samples/shapes/_proofs.rb.txt | 102 +++++++++++++++++++++ spec/samples/samples_regression_spec.rb | 3 +- 7 files changed, 164 insertions(+), 1 deletion(-) create mode 100644 samples/shapes/_proofs.rb create mode 100644 samples/shapes/proof_poker_00_expected.png create mode 100644 samples/shapes/proof_tiny_00_expected.png create mode 100644 spec/data/samples/shapes/_proofs.rb.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index ab87cd0..16a904c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ Features: * `yaml` method for reading in data, much like `csv` and `xlsx` by @blinks * Layouts now support `*=` and `/=` operators in addition to `+=` and `-=` (#200). * `save_pdf` method also supports `rtl` by @vador +* New DSL methods `safe_zone` and `cut_zone` will draw a rectangle inset from the margins for quick proof checking Compatibility: * DPI is correctly respected with font sizes now. To convert to Squib v0.14+, divide your old font sizes by 3. By @felixleong diff --git a/lib/squib/api/shapes.rb b/lib/squib/api/shapes.rb index 0095376..6189b48 100644 --- a/lib/squib/api/shapes.rb +++ b/lib/squib/api/shapes.rb @@ -83,5 +83,42 @@ module Squib range.each { |i| @cards[i].polygon(coords[i], trans[i], draw[i]) } end + # DSL method. See http://squib.readthedocs.io + def safe_zone(opts = {}) + safe_defaults = { + margin: '0.25in', + radius: '0.125in', + stroke_color: :blue, + fill_color: '#0000', + stroke_width: 1.0, + dash: '3 3', + } + new_opts = safe_defaults.merge(opts) + margin = Args::UnitConversion.parse new_opts[:margin] + new_opts[:x] = margin + new_opts[:y] = margin + new_opts[:width] = width - (2 * margin) + new_opts[:height] = height - (2 * margin) + rect new_opts + end + + # DSL method. See http://squib.readthedocs.io + def cut_zone(opts = {}) + safe_defaults = { + margin: '0.125in', + radius: '0.125in', + stroke_color: :red, + fill_color: '#0000', + stroke_width: 2.0, + } + new_opts = safe_defaults.merge(opts) + margin = Args::UnitConversion.parse new_opts[:margin] + new_opts[:x] = margin + new_opts[:y] = margin + new_opts[:width] = width - (2 * margin) + new_opts[:height] = height - (2 * margin) + rect new_opts + end + end end diff --git a/samples/shapes/_proofs.rb b/samples/shapes/_proofs.rb new file mode 100644 index 0000000..c1ff00f --- /dev/null +++ b/samples/shapes/_proofs.rb @@ -0,0 +1,22 @@ +require 'squib' + +Squib::Deck.new do + background color: :white + safe_zone # defaults TheGameCrafter 0.25in around the edge, rounded corners + cut_zone # defaults TheGameCrafter 0.125in around the edge + + text str: 'Poker card with proof lines', x: '0.25in', y: '0.25in' + save_png prefix: 'proof_poker_' +end + + +Squib::Deck.new(width:'2in', height: '1in')do + background color: :white + safe_zone stroke_color: :purple, margin: '0.1in' + safe_zone stroke_color: :purple, margin: '0.05in' + + text str: 'Small card with proof lines', x: '0.1in', y: '0.1in', + font: 'Arial 10' + + save_png prefix: 'proof_tiny_' +end diff --git a/samples/shapes/proof_poker_00_expected.png b/samples/shapes/proof_poker_00_expected.png new file mode 100644 index 0000000000000000000000000000000000000000..05d7b810ea40767c160f5672fc7356b265ec59c8 GIT binary patch literal 16922 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 literal 0 HcmV?d00001 diff --git a/samples/shapes/proof_tiny_00_expected.png b/samples/shapes/proof_tiny_00_expected.png new file mode 100644 index 0000000000000000000000000000000000000000..4bcb428e541cbaceeefaaed50588cd2706678c50 GIT binary patch literal 8292 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 literal 0 HcmV?d00001 diff --git a/spec/data/samples/shapes/_proofs.rb.txt b/spec/data/samples/shapes/_proofs.rb.txt new file mode 100644 index 0000000..61d2234 --- /dev/null +++ b/spec/data/samples/shapes/_proofs.rb.txt @@ -0,0 +1,102 @@ +cairo: antialias=(["subpixel"]) +cairo: save([]) +cairo: set_source_color(["white"]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: translate([75.0, 75.0]) +cairo: rotate([0]) +cairo: translate([-75.0, -75.0]) +cairo: rounded_rectangle([75.0, 75.0, 675.0, 975.0, 37.5, 37.5]) +cairo: set_source_color(["#0000"]) +cairo: fill_preserve([]) +cairo: set_source_color(["blue"]) +cairo: set_line_width([1.0]) +cairo: set_line_join([0]) +cairo: set_line_cap([0]) +cairo: set_dash([[3.0, 3.0]]) +cairo: stroke([]) +cairo: restore([]) +cairo: save([]) +cairo: translate([37.5, 37.5]) +cairo: rotate([0]) +cairo: translate([-37.5, -37.5]) +cairo: rounded_rectangle([37.5, 37.5, 750.0, 1050.0, 37.5, 37.5]) +cairo: set_source_color(["#0000"]) +cairo: fill_preserve([]) +cairo: set_source_color(["red"]) +cairo: set_line_width([2.0]) +cairo: set_line_join([0]) +cairo: set_line_cap([0]) +cairo: set_dash([[]]) +cairo: stroke([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color(["black"]) +cairo: translate([75.0, 75.0]) +cairo: rotate([0]) +cairo: move_to([0, 0]) +pango: font_description=([MockDouble]) +pango: text=(["Poker card with proof lines"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +cairo: move_to([0, 0]) +cairo: move_to([0, 0]) +cairo: show_pango_layout([MockDouble]) +pango: ellipsized?([]) +cairo: restore([]) +surface: write_to_png(["_output/proof_poker_00.png"]) +surface: finish([]) +cairo: antialias=(["subpixel"]) +cairo: save([]) +cairo: set_source_color(["white"]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: translate([30.0, 30.0]) +cairo: rotate([0]) +cairo: translate([-30.0, -30.0]) +cairo: rounded_rectangle([30.0, 30.0, 540.0, 240.0, 37.5, 37.5]) +cairo: set_source_color(["#0000"]) +cairo: fill_preserve([]) +cairo: set_source_color(["purple"]) +cairo: set_line_width([1.0]) +cairo: set_line_join([0]) +cairo: set_line_cap([0]) +cairo: set_dash([[3.0, 3.0]]) +cairo: stroke([]) +cairo: restore([]) +cairo: save([]) +cairo: translate([15.0, 15.0]) +cairo: rotate([0]) +cairo: translate([-15.0, -15.0]) +cairo: rounded_rectangle([15.0, 15.0, 570.0, 270.0, 37.5, 37.5]) +cairo: set_source_color(["#0000"]) +cairo: fill_preserve([]) +cairo: set_source_color(["purple"]) +cairo: set_line_width([1.0]) +cairo: set_line_join([0]) +cairo: set_line_cap([0]) +cairo: set_dash([[3.0, 3.0]]) +cairo: stroke([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color(["black"]) +cairo: translate([30.0, 30.0]) +cairo: rotate([0]) +cairo: move_to([0, 0]) +pango: font_description=([MockDouble]) +pango: text=(["Small card with proof lines"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +cairo: move_to([0, 0]) +cairo: move_to([0, 0]) +cairo: show_pango_layout([MockDouble]) +pango: ellipsized?([]) +cairo: restore([]) +surface: write_to_png(["_output/proof_tiny_00.png"]) +surface: finish([]) diff --git a/spec/samples/samples_regression_spec.rb b/spec/samples/samples_regression_spec.rb index 8eb864f..2acd0df 100644 --- a/spec/samples/samples_regression_spec.rb +++ b/spec/samples/samples_regression_spec.rb @@ -51,6 +51,7 @@ describe 'Squib samples' do saves/_saves.rb saves/_showcase.rb shapes/_draw_shapes.rb + shapes/_proofs.rb text/_embed_text.rb text/_text_options.rb units/_units.rb @@ -62,7 +63,7 @@ describe 'Squib samples' do Dir.chdir(File.dirname("#{samples_dir}/#{sample}")) do load full_sample_path end - overwrite_sample(sample, log) # Use TEMPORARILY once happy with the new sample log + # overwrite_sample(sample, log) # Use TEMPORARILY once happy with the new sample log test_file_str = File.open(sample_regression_file(sample), 'r:UTF-8').read expect(log.string).to eq(test_file_str) end