Browse Source

add save_sheet rtl option for duplex printing

dev
Clarence "Sparr" Risher 9 years ago committed by Andy Meneely
parent
commit
695bd8fb77
  1. 5
      docs/dsl/save_sheet.rst
  2. 1
      lib/squib/args/sheet.rb
  3. 10
      lib/squib/graphics/save_doc.rb

5
docs/dsl/save_sheet.rst

@ -51,5 +51,10 @@ trim
the space around the edge of each card to trim (e.g. to cut off the bleed margin for print-and-play). Supports :doc:`/units`.
rtl
default ``false``
whether to render columns right to left, used for duplex printing of card backs
Examples
--------

1
lib/squib/args/sheet.rb

@ -40,6 +40,7 @@ module Squib
trim_radius: 38,
trim: 0,
width: 3300,
rtl: false,
}
end

10
lib/squib/graphics/save_doc.rb

@ -9,7 +9,8 @@ module Squib
cc = Cairo::Context.new(Cairo::ImageSurface.new(sheet_width, sheet_height))
num_this_sheet = 0
sheet_num = 0
x, y = sheet.margin, sheet.margin
y = sheet.margin
x = sheet.rtl ? (sheet_width - sheet.margin - sheet.gap - @width) : 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
@ -18,16 +19,17 @@ module Squib
new_sheet = false
num_this_sheet = 0
sheet_num += 1
x, y = sheet.margin, sheet.margin
y = sheet.margin
x = sheet.rtl ? (sheet_width - sheet.margin - sheet.gap - @width) : sheet.margin
cc = Cairo::Context.new(Cairo::ImageSurface.new(sheet_width, sheet_height))
end
surface = trim(@cards[i].cairo_surface, sheet.trim, @width, @height)
cc.set_source(surface, x, y)
cc.paint
num_this_sheet += 1
x += surface.width + sheet.gap
x += (surface.width + sheet.gap) * (sheet.rtl ? -1 : 1)
if num_this_sheet % sheet.columns == 0 # new row
x = sheet.margin
x = sheet.rtl ? (sheet_width - sheet.margin - sheet.gap - @width) : sheet.margin
y += surface.height + sheet.gap
end
bar.increment

Loading…
Cancel
Save