lib/squib/graphics/save_doc.rb in squib-0.11.0 vs lib/squib/graphics/save_doc.rb in squib-0.12.0
- old
+ new
@@ -1,54 +1,9 @@
module Squib
class Deck
# :nodoc:
# @api private
- def render_pdf(range, sheet)
- file = "#{sheet.dir}/#{sheet.file}"
- cc = Cairo::Context.new(Cairo::PDFSurface.new(file, sheet.width * 72.0 / @dpi, sheet.height * 72.0 / @dpi))
- cc.scale(72.0 / @dpi, 72.0 / @dpi) # for bug #62
- x, y = sheet.margin, sheet.margin
- card_width = @width - 2 * sheet.trim
- card_height = @height - 2 * sheet.trim
- @progress_bar.start("Saving PDF to #{file}", range.size) do |bar|
- range.each do |i|
- card = @cards[i]
- cc.translate(x, y)
- cc.rectangle(sheet.trim, sheet.trim, card_width, card_height)
- cc.clip
- case card.backend.downcase.to_sym
- when :memory
- cc.set_source(card.cairo_surface, 0, 0)
- cc.paint
- when :svg
- card.cairo_surface.finish
- cc.save
- cc.scale(0.8, 0.8) # I really don't know why I needed to do this at all. But 0.8 is the magic number to get this to scale right
- cc.render_rsvg_handle(RSVG::Handle.new_from_file(card.svgfile), nil)
- cc.restore
- else
- abort "No such back end supported for save_pdf: #{backend}"
- end
- bar.increment
- cc.reset_clip
- cc.translate(-x, -y)
- x += card.width + sheet.gap - 2 * sheet.trim
- if x > (sheet.width - card_width - sheet.margin)
- x = sheet.margin
- y += card.height + sheet.gap - 2 * sheet.trim
- if y > (sheet.height - card_height - sheet.margin)
- cc.show_page # next page
- x, y = sheet.margin, sheet.margin
- end
- end
- end
- end
- cc.target.finish
- end
-
- # :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)
cc = Cairo::Context.new(Cairo::ImageSurface.new(sheet_width, sheet_height))
num_this_sheet = 0