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