class Bagel::Graphic::Stats::Stat

Constants

COLOR_TEXT
COLOR_TEXT_HIGHLIGHT
HEIGHT
WIDTH

Public Class Methods

new(index, stat) click to toggle source
# File lib/bagel/graphic/stats/stat.rb, line 9
def initialize(index, stat)
  @index = index
  @stat = stat

  @color_bg = @index.even? ? COLOR_GREY_LIGHT : COLOR_GREY_DARK

  @canvas = Image.new(WIDTH, HEIGHT) { |i| i.background_color = @color_bg }
  @d = Magick::Draw.new do |d|
    d.font_family = FONT_FAMILY
    d.pointsize = 36
    d.gravity = Magick::CenterGravity
    d.fill = COLOR_TEXT
  end
end

Public Instance Methods

draw() click to toggle source
# File lib/bagel/graphic/stats/stat.rb, line 24
def draw
  left = cell(value: @stat.values[0], highlight: @stat.superior[0], is_small: false)
  center = cell(value: @stat.name, is_small: true)
  right = cell(value: @stat.values[1], highlight: @stat.superior[1], is_small: false)

  @canvas.composite!(left, WestGravity, 0, 0, OverCompositeOp)
  @canvas.composite!(center, CenterGravity, 0, 0, OverCompositeOp)
  @canvas.composite!(right, EastGravity, 0, 0, OverCompositeOp)
end

Private Instance Methods

cell(args) click to toggle source
# File lib/bagel/graphic/stats/stat.rb, line 36
def cell(args)
  cell = Image.new(WIDTH / 3, HEIGHT) { |i| i.background_color = @color_bg }
  text = Image.new(WIDTH, HEIGHT) { |i| i.background_color = @color_bg }

  @d.fill = args[:highlight] ? COLOR_TEXT_HIGHLIGHT : COLOR_TEXT
  @d.pointsize = 32 if args[:is_small]

  @d.annotate(text, 0, 0, 0, 0, args[:value].to_s)
  text.trim!
  cell.composite!(text, CenterGravity, 0, 0, OverCompositeOp)
end