Sha256: 4843830ce7c88172a2d6bf552ec424e1972a4f313323fc8f2c570ac66540f46b

Contents?: true

Size: 1.86 KB

Versions: 1

Compression:

Stored size: 1.86 KB

Contents

require 'cairo'
require 'squib/input_helpers'
require 'squib/graphics/cairo_context_wrapper'

module Squib
  # Back end graphics. Private.
  class Card
    include Squib::InputHelpers

    # :nodoc:
    # @api private
    attr_reader :width, :height, :backend, :svgfile

    # :nodoc:
    # @api private
    attr_accessor :cairo_surface, :cairo_context

    # :nodoc:
    # @api private
    def initialize(deck, width, height, backend=:memory, index=-1)
      @deck          = deck
      @width         = width
      @height        = height
      @backend       = backend
      @svgfile       = "#{deck.dir}/#{deck.prefix}#{deck.count_format % index}.svg"
      @cairo_surface = make_surface(@svgfile, backend)
      @cairo_context = Squib::Graphics::CairoContextWrapper.new(Cairo::Context.new(@cairo_surface))
      @cairo_context.antialias = ANTIALIAS_OPTS[(@deck.antialias.downcase)] || 'subpixel'
    end

    def make_surface(svgfile, backend)
      case backend
      when :memory
        Cairo::ImageSurface.new(@width, @height)
      when :svg
        Dir.mkdir @deck.dir unless Dir.exists?(@deck.dir)
        Cairo::SVGSurface.new(svgfile, @width, @height)
      else
        Squib.logger.fatal "Back end not recognized: '#{backend}'"
        abort
      end
    end


  # A save/restore wrapper for using Cairo
  # :nodoc:
  # @api private
    def use_cairo(&block)
      @cairo_context.save
      block.yield(@cairo_context)
      @cairo_context.restore
    end

    ########################
    ### BACKEND GRAPHICS ###
    ########################
    require 'squib/graphics/background'
    require 'squib/graphics/image'
    require 'squib/graphics/save_doc'
    require 'squib/graphics/save_images'
    require 'squib/graphics/shapes'
    require 'squib/graphics/showcase'
    require 'squib/graphics/text'

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
squib-0.4.0 lib/squib/card.rb