From 824a28c87d03f6fc721dc3d5fcac04a2b25d36c4 Mon Sep 17 00:00:00 2001 From: Andy Meneely Date: Sat, 11 Mar 2017 16:35:14 -0500 Subject: [PATCH] Document and test rtl option --- CHANGELOG.md | 1 + samples/saves/_saves.rb | 6 ++++++ samples/saves/save_sheet_rt1_00_expected.png | Bin 0 -> 25303 bytes spec/data/samples/saves/_saves.rb.txt | 9 +++++++++ 4 files changed, 16 insertions(+) create mode 100644 samples/saves/save_sheet_rt1_00_expected.png diff --git a/CHANGELOG.md b/CHANGELOG.md index b6b8ca3..f729c3c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ Squib follows [semantic versioning](http://semver.org). Features: * `circle` method now supports various `arc` options, so you can draw partial circles (#211) by @sparr +* `save_sheet` method now supports `rtl` or "right-to-left", for easier duplex printing of backs (#204, #208) by @sparr Special thanks to @sparr for all of his work!! diff --git a/samples/saves/_saves.rb b/samples/saves/_saves.rb index ac98a86..8a566af 100644 --- a/samples/saves/_saves.rb +++ b/samples/saves/_saves.rb @@ -42,4 +42,10 @@ Squib::Deck.new(width: 825, height: 1125, cards: 16) do range: 0..5, columns: 2, rows: 2, margin: 75, gap: 5, trim: 37 + + # Sheets can arrange left-to-right and right-to-left + save_sheet prefix: 'save_sheet_rtl_', + range: 0..1, rtl: true, + columns: 2, rows: 1, + margin: 75, gap: 5, trim: 37 end diff --git a/samples/saves/save_sheet_rt1_00_expected.png b/samples/saves/save_sheet_rt1_00_expected.png new file mode 100644 index 0000000000000000000000000000000000000000..d2998f28b2b1807978a7a69149a8d3ebd812f852 GIT binary patch literal 25303 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 TzjwbC`r!7hHWsvhx}EwrEBHYi literal 0 HcmV?d00001 diff --git a/spec/data/samples/saves/_saves.rb.txt b/spec/data/samples/saves/_saves.rb.txt index 2533d42..c9a6400 100644 --- a/spec/data/samples/saves/_saves.rb.txt +++ b/spec/data/samples/saves/_saves.rb.txt @@ -1719,6 +1719,15 @@ cairo: paint([]) cairo: set_source([MockDouble, 180, 75]) cairo: paint([]) surface: write_to_png(["_output/save_sheet_range_01.png"]) +cairo: set_source([MockDouble, -37, -37]) +cairo: paint([]) +cairo: set_source([MockDouble, 767, 75]) +cairo: paint([]) +cairo: set_source([MockDouble, -37, -37]) +cairo: paint([]) +cairo: set_source([MockDouble, 662, 75]) +cairo: paint([]) +surface: write_to_png(["_output/save_sheet_rtl_00.png"]) surface: finish([]) surface: finish([]) surface: finish([])