Sha256: e40e4e565cbb699798d44a0de04056c0f62be444bb045e35f91d9b73224958e6

Contents?: true

Size: 1.72 KB

Versions: 2

Compression:

Stored size: 1.72 KB

Contents

require 'profound/version'
require 'profound/filters/toy_camera'
require 'rmagick'

module Profound
  class Theme
    def initialize(theme)
      @theme = theme
    end

    def color
      @theme == :dark ? 'black' : 'white'
    end

    def inverse_color
      @theme == :dark ? 'white' : 'black'
    end
  end

  class Image
    include Profound::Filters::ToyCamera

    def initialize(source, caption, options, destination)
      @source       = Magick::ImageList.new(source).first
      @target       = Magick::ImageList.new
      @destination  = destination
      @caption      = caption
      @options      = options
      @theme        = Theme.new(options[:theme])
    end

    def convert
      shadow
      text
      filters
      save
    end

    def text
      @source = @source.composite(_text, Magick::CenterGravity, Magick::OverCompositeOp)
    end

    def filters
      case @options[:filter]
      when :toycamera
        toy_camera
      end
    end

    def shadow
      image = _text(40)
      shadow = image.shadow(0, 0, 30).colorize(1, 1, 1, 0, @theme.inverse_color)
      @source = @source.composite(shadow, Magick::CenterGravity, 20, 0, Magick::OverCompositeOp)
    end

    def save
      @source.write(@destination)
    end

    def _text(stroke_width = 0)
      image = Magick::Image.new(@source.columns, 100) {
        self.background_color = 'none'
      }
      text = Magick::Draw.new

      color = @theme.color
      text.annotate(image, 0, 0, 0, 0, @caption) {
        self.fill         = color
        self.font_family  = 'Arial'
        self.pointsize    = 80
        self.stroke_width = stroke_width
        self.stroke       = color
        self.gravity      = Magick::CenterGravity
      }

      image
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
profound-0.0.3 lib/profound.rb
profound-0.0.2 lib/profound.rb