class Smalruby::Canvas

お絵かきを表現するクラス

Constants

DEFAULT_COLOR_OPTION

@!endgroup

DEFAULT_RECT_OPTION

Public Class Methods

new(options = {}) click to toggle source
Calls superclass method
# File lib/smalruby/canvas.rb, line 5
def initialize(options = {})
  defaults = {
    x: 0,
    y: 0,
    width: Window.width,
    height: Window.height,
    color: nil,
  }
  opts = Util.process_options(options, defaults)

  opts[:costume] = Image.new(opts[:width], opts[:height])
  super(opts.reject { |k, _| [:width, :height, :color].include?(k) })

  fill(color: opts[:color]) if opts[:color]
end

Public Instance Methods

box(option) click to toggle source
# File lib/smalruby/canvas.rb, line 43
def box(option)
  opt = process_rect_option(option)

  image.box(opt[:left], opt[:top], opt[:right], opt[:bottom],
            Color.smalruby_to_dxruby(opt[:color]))
end
box_fill(option) click to toggle source
# File lib/smalruby/canvas.rb, line 50
def box_fill(option)
  opt = process_rect_option(option)

  image.box_fill(opt[:left], opt[:top], opt[:right], opt[:bottom],
                 Color.smalruby_to_dxruby(opt[:color]))
end
circle(option) click to toggle source
# File lib/smalruby/canvas.rb, line 57
def circle(option)
  opt = process_circle_option(option)

  image.circle(opt[:x], opt[:y], opt[:r],
               Color.smalruby_to_dxruby(opt[:color]))
end
circle_fill(option) click to toggle source
# File lib/smalruby/canvas.rb, line 64
def circle_fill(option)
  opt = process_circle_option(option)

  image.circle_fill(opt[:x], opt[:y], opt[:r],
                    Color.smalruby_to_dxruby(opt[:color]))
end
draw_font(option) click to toggle source

@!group ペン

# File lib/smalruby/canvas.rb, line 23
def draw_font(option)
  defaults = {
    x: 0,
    y: 0,
    string: "",
    size: 32
  }.merge(DEFAULT_COLOR_OPTION)
  opt = process_optional_arguments(option, defaults)

  image.draw_font(opt[:x], opt[:y], opt[:string], new_font(opt[:size]),
                  Color.smalruby_to_dxruby(opt[:color]))
end
fill(option) click to toggle source
# File lib/smalruby/canvas.rb, line 71
def fill(option)
  opt = process_optional_arguments(option, DEFAULT_COLOR_OPTION)

  image.box_fill(0, 0, image.width, image.height,
                 Color.smalruby_to_dxruby(opt[:color]))
end
line(option) click to toggle source
# File lib/smalruby/canvas.rb, line 36
def line(option)
  opt = process_rect_option(option)

  image.line(opt[:left], opt[:top], opt[:right], opt[:bottom],
             Color.smalruby_to_dxruby(opt[:color]))
end

Private Instance Methods

process_circle_option(option) click to toggle source
# File lib/smalruby/canvas.rb, line 113
def process_circle_option(option)
  defaults = {
    x: 5,
    y: 5,
    r: 5
  }.merge(DEFAULT_COLOR_OPTION)
  process_optional_arguments(option, defaults)
end
process_rect_option(option) click to toggle source
# File lib/smalruby/canvas.rb, line 102
def process_rect_option(option)
  defaults = DEFAULT_COLOR_OPTION.merge(DEFAULT_RECT_OPTION)
  opt = {
    left: option[:x1],
    top: option[:y1],
    right: option[:x2],
    bottom: option[:y2]
  }.merge(option)
  process_optional_arguments(opt, defaults)
end