Browse Source

Add rotate option for save_sheet (#301) (#345)

* Initial work on rotate for save_sheet

* Feature done! Maybe?
dev
Andy Meneely 4 years ago committed by GitHub
parent
commit
969f16633e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 8
      CHANGELOG.md
  2. 5
      docs/dsl/save_sheet.rst
  3. 2
      lib/squib/dsl/save_sheet.rb
  4. 48
      lib/squib/graphics/save_doc.rb
  5. 14
      samples/saves/_saves.rb
  6. BIN
      samples/saves/save_sheet_rotated_00_expected.png
  7. BIN
      samples/saves/save_sheet_rotated_01_expected.png
  8. BIN
      samples/saves/save_sheet_rotated_trimmed_00_expected.png
  9. BIN
      samples/saves/save_sheet_rotated_trimmed_01_expected.png
  10. BIN
      samples/saves/save_sheet_rotated_trimmed_rtl_00_expected.png
  11. BIN
      samples/saves/save_sheet_rotated_trimmed_rtl_01_expected.png
  12. 12
      spec/data/samples/autoscale_font/_autoscale_font.rb.txt
  13. 6
      spec/data/samples/data/_csv.rb.txt
  14. 14
      spec/data/samples/data/_excel.rb.txt
  15. 4
      spec/data/samples/ranges/_ranges.rb.txt
  16. 672
      spec/data/samples/saves/_saves.rb.txt
  17. 4
      spec/data/samples/text/_embed_text.rb.txt
  18. 2
      spec/samples/samples_regression_spec.rb

8
CHANGELOG.md

@ -4,16 +4,18 @@ Squib follows [semantic versioning](http://semver.org).
## v0.18.0 / Unreleased
Features:
* Missing images to `svg` and `png` can be replaced by a `placeholder` (#339)
* New config option: `img_missing`. When an image is missing, warn or error to the console
* Placeholders! Missing images to `svg` and `png` can be replaced by a `placeholder` (#339)
* New config option: `img_missing`. When an image is missing, warn or error to the console (#339)
* `save_sheet` learned how to `rotate` individual images! (#301)
Compatibility:
* Because of `, the new default behavior is to warn instead of errors on a missing file
* Because of the features above, the new default behavior is to warn instead of errors on a missing file
## v0.17.1 / 2021-09-07
Bugs:
* Fix frozen string error on `Squib.xlsx` import when stripping newlines is enabled
* `save_sheet` works with `rtl` and `trim` altogether properly now.
## v0.17.1 / 2021-08-11

5
docs/dsl/save_sheet.rst

@ -41,6 +41,11 @@ suffix
the suffix of all the filenames saved, just before the `.png` extension.
rotate
default: ``false``
If ``true``, the saved cards will be rotated 90 degrees clockwise. Or, rotate by the number of radians. Intended to rendering landscape instead of portrait. Possible values: ``true``, ``false``, ``:clockwise``, ``:counterclockwise``
dir
default: ``'_output'``

2
lib/squib/dsl/save_sheet.rb

@ -30,7 +30,7 @@ module Squib
range sprue
columns rows rtl
dir prefix count_format suffix
margin gap trim trim_radius
margin gap trim trim_radius rotate
)
end

48
lib/squib/graphics/save_doc.rb

@ -4,13 +4,12 @@ module Squib
# :nodoc:
# @api private
def render_sheet(range, batch, sheet)
sheet_width = (sheet.columns * (@width + 2 * sheet.gap - 2 * sheet.trim)) + (2 * sheet.margin)
sheet_height = (sheet.rows * (@height + 2 * sheet.gap - 2 * sheet.trim)) + (2 * sheet.margin)
w,h,sheet_width,sheet_height = compute_dimensions(sheet, batch)
cc = Cairo::Context.new(Cairo::ImageSurface.new(sheet_width, sheet_height))
num_this_sheet = 0
sheet_num = 0
y = sheet.margin
x = sheet.rtl ? (sheet_width - sheet.margin - sheet.gap - @width) : sheet.margin
x = sheet.rtl ? rtl_start_x(sheet_width, sheet, w) : sheet.margin
@progress_bar.start("Saving PNG sheet to #{batch.summary}", @cards.size + 1) do |bar|
range.each do |i|
if num_this_sheet >= (sheet.columns * sheet.rows) # new sheet
@ -20,36 +19,53 @@ module Squib
num_this_sheet = 0
sheet_num += 1
y = sheet.margin
x = sheet.rtl ? (sheet_width - sheet.margin - sheet.gap - @width) : sheet.margin
x = sheet.rtl ? rtl_start_x(sheet_width, sheet, w) : sheet.margin
cc = Cairo::Context.new(Cairo::ImageSurface.new(sheet_width, sheet_height))
end
surface = trim(@cards[i].cairo_surface, sheet.trim, @width, @height)
surface = preprocess(@cards[i].cairo_surface,
sheet.trim, w, h,
batch.rotate[i], batch.angle[i])
cc.set_source(surface, x, y)
cc.paint
num_this_sheet += 1
x += (surface.width + sheet.gap) * (sheet.rtl ? -1 : 1)
x += (w + sheet.gap - 2 * sheet.trim) * (sheet.rtl ? -1 : 1)
if num_this_sheet % sheet.columns == 0 # new row
x = sheet.rtl ? (sheet_width - sheet.margin - sheet.gap - @width) : sheet.margin
x = sheet.rtl ? rtl_start_x(sheet_width, sheet, w) : sheet.margin
y += surface.height + sheet.gap
end
bar.increment
end
cc.target.write_to_png(batch.full_filename(sheet_num))
end
end
# Return a new Cairo::ImageSurface that is trimmed from the original
#
# @param surface The surface to trim
# @param trim The number of pixels around the edge to trim
# @param width The width of the surface prior to the trim
# @param height The height of the surface prior to the trim
def compute_dimensions(sheet, batch)
w,h = batch.rotate ? [@height,@width] : [@width,@height]
sheet_width = (sheet.columns * (w + 2 * sheet.gap - 2 * sheet.trim)) + (2 * sheet.margin)
sheet_height = (sheet.rows * (h + 2 * sheet.gap - 2 * sheet.trim)) + (2 * sheet.margin)
return [w, h, sheet_width, sheet_height]
end
def rtl_start_x(sheet_width, sheet, w)
return sheet_width - sheet.margin - sheet.gap - w + 2 * sheet.trim
end
# Return a new Cairo::ImageSurface that is trimmed and rotated
# from the original
# :nodoc:
# @api private
def trim(surface, trim, width, height)
if trim > 0
tmp = Cairo::ImageSurface.new(width - 2 * trim, height - 2 * trim)
def preprocess(surface, trim, w, h, rotate, angle)
trimmed_w = w - 2 * trim
trimmed_h = h - 2 * trim
if trim > 0 || rotate
tmp = Cairo::ImageSurface.new(trimmed_w, trimmed_h)
cc = Cairo::Context.new(tmp)
if rotate
cc.translate trimmed_w * 0.5, trimmed_h * 0.5
cc.rotate angle
cc.translate trimmed_h * -0.5, trimmed_w * -0.5
end
cc.set_source(surface, -1 * trim, -1 * trim)
cc.paint
surface = tmp

14
samples/saves/_saves.rb

@ -1,4 +1,5 @@
require 'squib'
# require 'squib'
require_relative '../../lib/squib'
# This sample demonstrates how to use the various save methods
@ -60,3 +61,14 @@ Squib::Deck.new(width: 100, height: 100, cards: 3) do
# Buggy behavior was to revert to 1 row and not respect the rows arg.
save_sheet prefix: 'save_sheet_bug332_', rows: 2, columns: 4
end
# Allow rotating
Squib::Deck.new(width: 100, height: 50, cards: 8) do
background color: :white
rect x: 10, y: 10, width: 80, height: 30
rect x: 5, y: 5, width: 90, height: 40, stroke_width: 5, stroke_color: :blue
text y: 2, str: 0..7, font: 'Open Sans Bold 8', align: :center, width: 100
save_sheet prefix: 'save_sheet_rotated_', rows: 2, columns: 3, rotate: true
save_sheet prefix: 'save_sheet_rotated_trimmed_', rows: 2, columns: 3, rotate: true, trim: 5
save_sheet prefix: 'save_sheet_rotated_trimmed_rtl_', rows: 2, columns: 3, rotate: true, trim: 5, rtl: true
end

BIN
samples/saves/save_sheet_rotated_00_expected.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

BIN
samples/saves/save_sheet_rotated_01_expected.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
samples/saves/save_sheet_rotated_trimmed_00_expected.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
samples/saves/save_sheet_rotated_trimmed_01_expected.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
samples/saves/save_sheet_rotated_trimmed_rtl_00_expected.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
samples/saves/save_sheet_rotated_trimmed_rtl_01_expected.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

12
spec/data/samples/autoscale_font/_autoscale_font.rb.txt

@ -135,9 +135,9 @@ pango: ellipsized?([])
cairo: restore([])
cairo: set_source([MockDouble, 0, 0])
cairo: paint([])
cairo: set_source([MockDouble, 100, 0])
cairo: set_source([MockDouble, 75, 0])
cairo: paint([])
cairo: set_source([MockDouble, 200, 0])
cairo: set_source([MockDouble, 150, 0])
cairo: paint([])
surface: write_to_png(["_output/autoscale_w_data_00.png"])
surface: finish([])
@ -961,9 +961,9 @@ pango: ellipsized?([])
cairo: restore([])
cairo: set_source([MockDouble, 0, 0])
cairo: paint([])
cairo: set_source([MockDouble, 100, 0])
cairo: set_source([MockDouble, 75, 0])
cairo: paint([])
cairo: set_source([MockDouble, 200, 0])
cairo: set_source([MockDouble, 150, 0])
cairo: paint([])
surface: write_to_png(["_output/autoscale_w_ellipsize_00.png"])
surface: finish([])
@ -1106,9 +1106,9 @@ pango: ellipsized?([])
cairo: restore([])
cairo: set_source([MockDouble, 0, 0])
cairo: paint([])
cairo: set_source([MockDouble, 100, 0])
cairo: set_source([MockDouble, 75, 0])
cairo: paint([])
cairo: set_source([MockDouble, 200, 0])
cairo: set_source([MockDouble, 150, 0])
cairo: paint([])
surface: write_to_png(["_output/autoscale_w_range_00.png"])
surface: finish([])

6
spec/data/samples/data/_csv.rb.txt

@ -244,11 +244,11 @@ pango: ellipsized?([])
cairo: restore([])
cairo: set_source([MockDouble, 0, 0])
cairo: paint([])
cairo: set_source([MockDouble, 100, 0])
cairo: set_source([MockDouble, 1125, 0])
cairo: paint([])
cairo: set_source([MockDouble, 200, 0])
cairo: set_source([MockDouble, 2250, 0])
cairo: paint([])
cairo: set_source([MockDouble, 300, 0])
cairo: set_source([MockDouble, 3375, 0])
cairo: paint([])
surface: write_to_png(["_output/sample_csv_qty_00.png"])
surface: finish([])

14
spec/data/samples/data/_excel.rb.txt

@ -342,11 +342,11 @@ pango: ellipsized?([])
cairo: restore([])
cairo: set_source([MockDouble, 0, 0])
cairo: paint([])
cairo: set_source([MockDouble, 100, 0])
cairo: set_source([MockDouble, 1125, 0])
cairo: paint([])
cairo: set_source([MockDouble, 200, 0])
cairo: set_source([MockDouble, 2250, 0])
cairo: paint([])
cairo: set_source([MockDouble, 300, 0])
cairo: set_source([MockDouble, 3375, 0])
cairo: paint([])
surface: write_to_png(["_output/sample_xlsx_qty_00.png"])
surface: finish([])
@ -757,15 +757,15 @@ pango: ellipsized?([])
cairo: restore([])
cairo: set_source([MockDouble, 0, 0])
cairo: paint([])
cairo: set_source([MockDouble, 100, 0])
cairo: set_source([MockDouble, 1125, 0])
cairo: paint([])
cairo: set_source([MockDouble, 200, 0])
cairo: set_source([MockDouble, 2250, 0])
cairo: paint([])
cairo: set_source([MockDouble, 0, 101])
cairo: paint([])
cairo: set_source([MockDouble, 100, 101])
cairo: set_source([MockDouble, 1125, 101])
cairo: paint([])
cairo: set_source([MockDouble, 200, 101])
cairo: set_source([MockDouble, 2250, 101])
cairo: paint([])
surface: write_to_png(["_output/sample_excel_resources_00.png"])
surface: finish([])

4
spec/data/samples/ranges/_ranges.rb.txt

@ -531,9 +531,9 @@ cairo: stroke([])
cairo: restore([])
cairo: set_source([MockDouble, 0, 0])
cairo: paint([])
cairo: set_source([MockDouble, 100, 0])
cairo: set_source([MockDouble, 1125, 0])
cairo: paint([])
cairo: set_source([MockDouble, 200, 0])
cairo: set_source([MockDouble, 2250, 0])
cairo: paint([])
surface: write_to_png(["_output/ranges_00.png"])
surface: finish([])

672
spec/data/samples/saves/_saves.rb.txt

@ -1633,7 +1633,7 @@ cairo: set_source([MockDouble, 75, 75])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
cairo: set_source([MockDouble, 180, 75])
cairo: set_source([MockDouble, 1131, 75])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
@ -1641,7 +1641,7 @@ cairo: set_source([MockDouble, 75, 181])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
cairo: set_source([MockDouble, 180, 181])
cairo: set_source([MockDouble, 1131, 181])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
@ -1649,7 +1649,7 @@ cairo: set_source([MockDouble, 75, 287])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
cairo: set_source([MockDouble, 180, 287])
cairo: set_source([MockDouble, 1131, 287])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
@ -1657,7 +1657,7 @@ cairo: set_source([MockDouble, 75, 393])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
cairo: set_source([MockDouble, 180, 393])
cairo: set_source([MockDouble, 1131, 393])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
@ -1665,7 +1665,7 @@ cairo: set_source([MockDouble, 75, 499])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
cairo: set_source([MockDouble, 180, 499])
cairo: set_source([MockDouble, 1131, 499])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
@ -1673,7 +1673,7 @@ cairo: set_source([MockDouble, 75, 605])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
cairo: set_source([MockDouble, 180, 605])
cairo: set_source([MockDouble, 1131, 605])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
@ -1681,7 +1681,7 @@ cairo: set_source([MockDouble, 75, 711])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
cairo: set_source([MockDouble, 180, 711])
cairo: set_source([MockDouble, 1131, 711])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
@ -1689,7 +1689,7 @@ cairo: set_source([MockDouble, 75, 817])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
cairo: set_source([MockDouble, 180, 817])
cairo: set_source([MockDouble, 1131, 817])
cairo: paint([])
surface: write_to_png(["_output/save_single_sheet_00.png"])
cairo: set_source([MockDouble, -37, -37])
@ -1698,15 +1698,15 @@ cairo: set_source([MockDouble, 75, 75])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
cairo: set_source([MockDouble, 180, 75])
cairo: set_source([MockDouble, 1131, 75])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
cairo: set_source([MockDouble, 285, 75])
cairo: set_source([MockDouble, 2187, 75])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
cairo: set_source([MockDouble, 390, 75])
cairo: set_source([MockDouble, 3243, 75])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
@ -1714,15 +1714,15 @@ cairo: set_source([MockDouble, 75, 181])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
cairo: set_source([MockDouble, 180, 181])
cairo: set_source([MockDouble, 1131, 181])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
cairo: set_source([MockDouble, 285, 181])
cairo: set_source([MockDouble, 2187, 181])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
cairo: set_source([MockDouble, 390, 181])
cairo: set_source([MockDouble, 3243, 181])
cairo: paint([])
surface: write_to_png(["_output/save_sheet_00.png"])
cairo: set_source([MockDouble, -37, -37])
@ -1731,15 +1731,15 @@ cairo: set_source([MockDouble, 75, 75])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
cairo: set_source([MockDouble, 180, 75])
cairo: set_source([MockDouble, 1131, 75])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
cairo: set_source([MockDouble, 285, 75])
cairo: set_source([MockDouble, 2187, 75])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
cairo: set_source([MockDouble, 390, 75])
cairo: set_source([MockDouble, 3243, 75])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
@ -1747,15 +1747,15 @@ cairo: set_source([MockDouble, 75, 181])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
cairo: set_source([MockDouble, 180, 181])
cairo: set_source([MockDouble, 1131, 181])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
cairo: set_source([MockDouble, 285, 181])
cairo: set_source([MockDouble, 2187, 181])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
cairo: set_source([MockDouble, 390, 181])
cairo: set_source([MockDouble, 3243, 181])
cairo: paint([])
surface: write_to_png(["_output/save_sheet_01.png"])
cairo: set_source([MockDouble, -37, -37])
@ -1764,7 +1764,7 @@ cairo: set_source([MockDouble, 75, 75])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
cairo: set_source([MockDouble, 180, 75])
cairo: set_source([MockDouble, 1131, 75])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
@ -1772,7 +1772,7 @@ cairo: set_source([MockDouble, 75, 181])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
cairo: set_source([MockDouble, 180, 181])
cairo: set_source([MockDouble, 1131, 181])
cairo: paint([])
surface: write_to_png(["_output/save_sheet_range_00.png"])
cairo: set_source([MockDouble, -37, -37])
@ -1781,16 +1781,16 @@ cairo: set_source([MockDouble, 75, 75])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
cairo: set_source([MockDouble, 180, 75])
cairo: set_source([MockDouble, 1131, 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: set_source([MockDouble, 1141, 75])
cairo: paint([])
cairo: set_source([MockDouble, -37, -37])
cairo: paint([])
cairo: set_source([MockDouble, 662, 75])
cairo: set_source([MockDouble, 85, 75])
cairo: paint([])
surface: write_to_png(["_output/save_sheet_rtl_00_with_suffix.png"])
surface: finish([])
@ -1891,3 +1891,625 @@ surface: write_to_png(["_output/save_sheet_bug332_00.png"])
surface: finish([])
surface: finish([])
surface: finish([])
cairo: antialias=(["subpixel"])
cairo: antialias=(["subpixel"])
cairo: antialias=(["subpixel"])
cairo: antialias=(["subpixel"])
cairo: antialias=(["subpixel"])
cairo: antialias=(["subpixel"])
cairo: antialias=(["subpixel"])
cairo: antialias=(["subpixel"])
cairo: save([])
cairo: new_path([])
cairo: set_source_color(["white"])
cairo: paint([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
cairo: set_source_color(["white"])
cairo: paint([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
cairo: set_source_color(["white"])
cairo: paint([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
cairo: set_source_color(["white"])
cairo: paint([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
cairo: set_source_color(["white"])
cairo: paint([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
cairo: set_source_color(["white"])
cairo: paint([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
cairo: set_source_color(["white"])
cairo: paint([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
cairo: set_source_color(["white"])
cairo: paint([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
cairo: translate([10, 10])
cairo: rotate([0])
cairo: translate([-10, -10])
cairo: rounded_rectangle([10, 10, 80, 30, 0, 0])
cairo: set_source_color(["#0000"])
cairo: fill_preserve([])
cairo: set_source_color(["black"])
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: new_path([])
cairo: translate([10, 10])
cairo: rotate([0])
cairo: translate([-10, -10])
cairo: rounded_rectangle([10, 10, 80, 30, 0, 0])
cairo: set_source_color(["#0000"])
cairo: fill_preserve([])
cairo: set_source_color(["black"])
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: new_path([])
cairo: translate([10, 10])
cairo: rotate([0])
cairo: translate([-10, -10])
cairo: rounded_rectangle([10, 10, 80, 30, 0, 0])
cairo: set_source_color(["#0000"])
cairo: fill_preserve([])
cairo: set_source_color(["black"])
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: new_path([])
cairo: translate([10, 10])
cairo: rotate([0])
cairo: translate([-10, -10])
cairo: rounded_rectangle([10, 10, 80, 30, 0, 0])
cairo: set_source_color(["#0000"])
cairo: fill_preserve([])
cairo: set_source_color(["black"])
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: new_path([])
cairo: translate([10, 10])
cairo: rotate([0])
cairo: translate([-10, -10])
cairo: rounded_rectangle([10, 10, 80, 30, 0, 0])
cairo: set_source_color(["#0000"])
cairo: fill_preserve([])
cairo: set_source_color(["black"])
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: new_path([])
cairo: translate([10, 10])
cairo: rotate([0])
cairo: translate([-10, -10])
cairo: rounded_rectangle([10, 10, 80, 30, 0, 0])
cairo: set_source_color(["#0000"])
cairo: fill_preserve([])
cairo: set_source_color(["black"])
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: new_path([])
cairo: translate([10, 10])
cairo: rotate([0])
cairo: translate([-10, -10])
cairo: rounded_rectangle([10, 10, 80, 30, 0, 0])
cairo: set_source_color(["#0000"])
cairo: fill_preserve([])
cairo: set_source_color(["black"])
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: new_path([])
cairo: translate([10, 10])
cairo: rotate([0])
cairo: translate([-10, -10])
cairo: rounded_rectangle([10, 10, 80, 30, 0, 0])
cairo: set_source_color(["#0000"])
cairo: fill_preserve([])
cairo: set_source_color(["black"])
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: new_path([])
cairo: translate([5, 5])
cairo: rotate([0])
cairo: translate([-5, -5])
cairo: rounded_rectangle([5, 5, 90, 40, 0, 0])
cairo: set_source_color(["#0000"])
cairo: fill_preserve([])
cairo: set_source_color(["blue"])
cairo: set_line_width([5])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
cairo: translate([5, 5])
cairo: rotate([0])
cairo: translate([-5, -5])
cairo: rounded_rectangle([5, 5, 90, 40, 0, 0])
cairo: set_source_color(["#0000"])
cairo: fill_preserve([])
cairo: set_source_color(["blue"])
cairo: set_line_width([5])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
cairo: translate([5, 5])
cairo: rotate([0])
cairo: translate([-5, -5])
cairo: rounded_rectangle([5, 5, 90, 40, 0, 0])
cairo: set_source_color(["#0000"])
cairo: fill_preserve([])
cairo: set_source_color(["blue"])
cairo: set_line_width([5])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
cairo: translate([5, 5])
cairo: rotate([0])
cairo: translate([-5, -5])
cairo: rounded_rectangle([5, 5, 90, 40, 0, 0])
cairo: set_source_color(["#0000"])
cairo: fill_preserve([])
cairo: set_source_color(["blue"])
cairo: set_line_width([5])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
cairo: translate([5, 5])
cairo: rotate([0])
cairo: translate([-5, -5])
cairo: rounded_rectangle([5, 5, 90, 40, 0, 0])
cairo: set_source_color(["#0000"])
cairo: fill_preserve([])
cairo: set_source_color(["blue"])
cairo: set_line_width([5])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
cairo: translate([5, 5])
cairo: rotate([0])
cairo: translate([-5, -5])
cairo: rounded_rectangle([5, 5, 90, 40, 0, 0])
cairo: set_source_color(["#0000"])
cairo: fill_preserve([])
cairo: set_source_color(["blue"])
cairo: set_line_width([5])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
cairo: translate([5, 5])
cairo: rotate([0])
cairo: translate([-5, -5])
cairo: rounded_rectangle([5, 5, 90, 40, 0, 0])
cairo: set_source_color(["#0000"])
cairo: fill_preserve([])
cairo: set_source_color(["blue"])
cairo: set_line_width([5])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
cairo: translate([5, 5])
cairo: rotate([0])
cairo: translate([-5, -5])
cairo: rounded_rectangle([5, 5, 90, 40, 0, 0])
cairo: set_source_color(["#0000"])
cairo: fill_preserve([])
cairo: set_source_color(["blue"])
cairo: set_line_width([5])
cairo: set_line_join([0])
cairo: set_line_cap([0])
cairo: set_dash([[]])
cairo: stroke([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
cairo: set_source_color(["black"])
cairo: translate([0, 2])
cairo: rotate([0])
cairo: move_to([0, 0])
pango: font_description=([MockDouble])
pango: text=(["0"])
pango: width=([102400])
pango: wrap=([#<Pango::WrapMode word-char>])
pango: ellipsize=([#<Pango::EllipsizeMode end>])
pango: alignment=([#<Pango::Alignment center>])
pango: justify=([false])
cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
cairo: set_source_color(["black"])
cairo: translate([0, 2])
cairo: rotate([0])
cairo: move_to([0, 0])
pango: font_description=([MockDouble])
pango: text=(["1"])
pango: width=([102400])
pango: wrap=([#<Pango::WrapMode word-char>])
pango: ellipsize=([#<Pango::EllipsizeMode end>])
pango: alignment=([#<Pango::Alignment center>])
pango: justify=([false])
cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
cairo: set_source_color(["black"])
cairo: translate([0, 2])
cairo: rotate([0])
cairo: move_to([0, 0])
pango: font_description=([MockDouble])
pango: text=(["2"])
pango: width=([102400])
pango: wrap=([#<Pango::WrapMode word-char>])
pango: ellipsize=([#<Pango::EllipsizeMode end>])
pango: alignment=([#<Pango::Alignment center>])
pango: justify=([false])
cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
cairo: set_source_color(["black"])
cairo: translate([0, 2])
cairo: rotate([0])
cairo: move_to([0, 0])
pango: font_description=([MockDouble])
pango: text=(["3"])
pango: width=([102400])
pango: wrap=([#<Pango::WrapMode word-char>])
pango: ellipsize=([#<Pango::EllipsizeMode end>])
pango: alignment=([#<Pango::Alignment center>])
pango: justify=([false])
cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
cairo: set_source_color(["black"])
cairo: translate([0, 2])
cairo: rotate([0])
cairo: move_to([0, 0])
pango: font_description=([MockDouble])
pango: text=(["4"])
pango: width=([102400])
pango: wrap=([#<Pango::WrapMode word-char>])
pango: ellipsize=([#<Pango::EllipsizeMode end>])
pango: alignment=([#<Pango::Alignment center>])
pango: justify=([false])
cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
cairo: set_source_color(["black"])
cairo: translate([0, 2])
cairo: rotate([0])
cairo: move_to([0, 0])
pango: font_description=([MockDouble])
pango: text=(["5"])
pango: width=([102400])
pango: wrap=([#<Pango::WrapMode word-char>])
pango: ellipsize=([#<Pango::EllipsizeMode end>])
pango: alignment=([#<Pango::Alignment center>])
pango: justify=([false])
cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
cairo: set_source_color(["black"])
cairo: translate([0, 2])
cairo: rotate([0])
cairo: move_to([0, 0])
pango: font_description=([MockDouble])
pango: text=(["6"])
pango: width=([102400])
pango: wrap=([#<Pango::WrapMode word-char>])
pango: ellipsize=([#<Pango::EllipsizeMode end>])
pango: alignment=([#<Pango::Alignment center>])
pango: justify=([false])
cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
cairo: set_source_color(["black"])
cairo: translate([0, 2])
cairo: rotate([0])
cairo: move_to([0, 0])
pango: font_description=([MockDouble])
pango: text=(["7"])
pango: width=([102400])
pango: wrap=([#<Pango::WrapMode word-char>])
pango: ellipsize=([#<Pango::EllipsizeMode end>])
pango: alignment=([#<Pango::Alignment center>])
pango: justify=([false])
cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: translate([25.0, 50.0])
cairo: rotate([1.5707963267948966])
cairo: translate([-50.0, -25.0])
cairo: set_source([MockDouble, 0, 0])
cairo: paint([])
cairo: set_source([MockDouble, 0, 0])
cairo: paint([])
cairo: translate([25.0, 50.0])
cairo: rotate([1.5707963267948966])
cairo: translate([-50.0, -25.0])
cairo: set_source([MockDouble, 0, 0])
cairo: paint([])
cairo: set_source([MockDouble, 50, 0])
cairo: paint([])
cairo: translate([25.0, 50.0])
cairo: rotate([1.5707963267948966])
cairo: translate([-50.0, -25.0])
cairo: set_source([MockDouble, 0, 0])
cairo: paint([])
cairo: set_source([MockDouble, 100, 0])
cairo: paint([])
cairo: translate([25.0, 50.0])
cairo: rotate([1.5707963267948966])
cairo: translate([-50.0, -25.0])
cairo: set_source([MockDouble, 0, 0])
cairo: paint([])
cairo: set_source([MockDouble, 0, 101])
cairo: paint([])
cairo: translate([25.0, 50.0])
cairo: rotate([1.5707963267948966])
cairo: translate([-50.0, -25.0])
cairo: set_source([MockDouble, 0, 0])
cairo: paint([])
cairo: set_source([MockDouble, 50, 101])
cairo: paint([])
cairo: translate([25.0, 50.0])
cairo: rotate([1.5707963267948966])
cairo: translate([-50.0, -25.0])
cairo: set_source([MockDouble, 0, 0])
cairo: paint([])
cairo: set_source([MockDouble, 100, 101])
cairo: paint([])
surface: write_to_png(["_output/save_sheet_rotated_00.png"])
cairo: translate([25.0, 50.0])
cairo: rotate([1.5707963267948966])
cairo: translate([-50.0, -25.0])
cairo: set_source([MockDouble, 0, 0])
cairo: paint([])
cairo: set_source([MockDouble, 0, 0])
cairo: paint([])
cairo: translate([25.0, 50.0])
cairo: rotate([1.5707963267948966])
cairo: translate([-50.0, -25.0])
cairo: set_source([MockDouble, 0, 0])
cairo: paint([])
cairo: set_source([MockDouble, 50, 0])
cairo: paint([])
surface: write_to_png(["_output/save_sheet_rotated_01.png"])
cairo: translate([20.0, 45.0])
cairo: rotate([1.5707963267948966])
cairo: translate([-45.0, -20.0])
cairo: set_source([MockDouble, -5, -5])
cairo: paint([])
cairo: set_source([MockDouble, 0, 0])
cairo: paint([])
cairo: translate([20.0, 45.0])
cairo: rotate([1.5707963267948966])
cairo: translate([-45.0, -20.0])
cairo: set_source([MockDouble, -5, -5])
cairo: paint([])
cairo: set_source([MockDouble, 40, 0])
cairo: paint([])
cairo: translate([20.0, 45.0])
cairo: rotate([1.5707963267948966])
cairo: translate([-45.0, -20.0])
cairo: set_source([MockDouble, -5, -5])
cairo: paint([])
cairo: set_source([MockDouble, 80, 0])
cairo: paint([])
cairo: translate([20.0, 45.0])
cairo: rotate([1.5707963267948966])
cairo: translate([-45.0, -20.0])
cairo: set_source([MockDouble, -5, -5])
cairo: paint([])
cairo: set_source([MockDouble, 0, 101])
cairo: paint([])
cairo: translate([20.0, 45.0])
cairo: rotate([1.5707963267948966])
cairo: translate([-45.0, -20.0])
cairo: set_source([MockDouble, -5, -5])
cairo: paint([])
cairo: set_source([MockDouble, 40, 101])
cairo: paint([])
cairo: translate([20.0, 45.0])
cairo: rotate([1.5707963267948966])
cairo: translate([-45.0, -20.0])
cairo: set_source([MockDouble, -5, -5])
cairo: paint([])
cairo: set_source([MockDouble, 80, 101])
cairo: paint([])
surface: write_to_png(["_output/save_sheet_rotated_trimmed_00.png"])
cairo: translate([20.0, 45.0])
cairo: rotate([1.5707963267948966])
cairo: translate([-45.0, -20.0])
cairo: set_source([MockDouble, -5, -5])
cairo: paint([])
cairo: set_source([MockDouble, 0, 0])
cairo: paint([])
cairo: translate([20.0, 45.0])
cairo: rotate([1.5707963267948966])
cairo: translate([-45.0, -20.0])
cairo: set_source([MockDouble, -5, -5])
cairo: paint([])
cairo: set_source([MockDouble, 40, 0])
cairo: paint([])
surface: write_to_png(["_output/save_sheet_rotated_trimmed_01.png"])
cairo: translate([20.0, 45.0])
cairo: rotate([1.5707963267948966])
cairo: translate([-45.0, -20.0])
cairo: set_source([MockDouble, -5, -5])
cairo: paint([])
cairo: set_source([MockDouble, 80, 0])
cairo: paint([])
cairo: translate([20.0, 45.0])
cairo: rotate([1.5707963267948966])
cairo: translate([-45.0, -20.0])
cairo: set_source([MockDouble, -5, -5])
cairo: paint([])
cairo: set_source([MockDouble, 40, 0])
cairo: paint([])
cairo: translate([20.0, 45.0])
cairo: rotate([1.5707963267948966])
cairo: translate([-45.0, -20.0])
cairo: set_source([MockDouble, -5, -5])
cairo: paint([])
cairo: set_source([MockDouble, 0, 0])
cairo: paint([])
cairo: translate([20.0, 45.0])
cairo: rotate([1.5707963267948966])
cairo: translate([-45.0, -20.0])
cairo: set_source([MockDouble, -5, -5])
cairo: paint([])
cairo: set_source([MockDouble, 80, 101])
cairo: paint([])
cairo: translate([20.0, 45.0])
cairo: rotate([1.5707963267948966])
cairo: translate([-45.0, -20.0])
cairo: set_source([MockDouble, -5, -5])
cairo: paint([])
cairo: set_source([MockDouble, 40, 101])
cairo: paint([])
cairo: translate([20.0, 45.0])
cairo: rotate([1.5707963267948966])
cairo: translate([-45.0, -20.0])
cairo: set_source([MockDouble, -5, -5])
cairo: paint([])
cairo: set_source([MockDouble, 0, 101])
cairo: paint([])
surface: write_to_png(["_output/save_sheet_rotated_trimmed_rtl_00.png"])
cairo: translate([20.0, 45.0])
cairo: rotate([1.5707963267948966])
cairo: translate([-45.0, -20.0])
cairo: set_source([MockDouble, -5, -5])
cairo: paint([])
cairo: set_source([MockDouble, 80, 0])
cairo: paint([])
cairo: translate([20.0, 45.0])
cairo: rotate([1.5707963267948966])
cairo: translate([-45.0, -20.0])
cairo: set_source([MockDouble, -5, -5])
cairo: paint([])
cairo: set_source([MockDouble, 40, 0])
cairo: paint([])
surface: write_to_png(["_output/save_sheet_rotated_trimmed_rtl_01.png"])
surface: finish([])
surface: finish([])
surface: finish([])
surface: finish([])
surface: finish([])
surface: finish([])
surface: finish([])
surface: finish([])

4
spec/data/samples/text/_embed_text.rb.txt

@ -454,9 +454,9 @@ pango: ellipsized?([])
cairo: restore([])
cairo: set_source([MockDouble, 0, 0])
cairo: paint([])
cairo: set_source([MockDouble, 100, 0])
cairo: set_source([MockDouble, 1125, 0])
cairo: paint([])
cairo: set_source([MockDouble, 200, 0])
cairo: set_source([MockDouble, 2250, 0])
cairo: paint([])
surface: write_to_png(["_output/embed_multisheet_00.png"])
surface: finish([])

2
spec/samples/samples_regression_spec.rb

@ -63,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

Loading…
Cancel
Save