Sha256: 1a2be2f605f06d3a18435ad9b06c65dce7da37bdf27ff202d5cffe41342a0a31

Contents?: true

Size: 1.18 KB

Versions: 1

Compression:

Stored size: 1.18 KB

Contents

module Squib
  class Card

    # :nodoc:
    # @api private
    def save_png(batch)
      surface = if preprocess_save?(batch)
                  preprocessed_save(batch.angle, batch.trim, batch.trim_radius)
                else
                  @cairo_surface
                end
      write_png(surface, index, batch.dir, batch.prefix, batch.count_format)
    end

    # :nodoc:
    # @api private
    def preprocess_save?(batch)
      batch.rotate || batch.trim > 0
    end

    def preprocessed_save(angle, trim, trim_radius)
      new_width, new_height = @width - 2*trim, @height - 2*trim
      new_cc = Cairo::Context.new(Cairo::ImageSurface.new(new_width, new_height))
      new_cc.translate(new_width * 0.5, new_height * 0.5)
      new_cc.rotate(angle)
      new_cc.translate(new_width * -0.5, new_height * -0.5)
      new_cc.set_source(@cairo_surface, -trim, -trim)
      new_cc.rounded_rectangle(0, 0, new_width, new_height, trim_radius, trim_radius)
      new_cc.clip
      new_cc.paint
      new_cc.target
    end

    def write_png(surface, i, dir, prefix, count_format)
      surface.write_to_png("#{dir}/#{prefix}#{count_format % i}.png")
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
squib-0.9.0 lib/squib/graphics/save_images.rb