cairo で線分と円周の落書き

どうでもいい試しのコード。

require 'bundler/setup'
require 'cairo'
require './cairo_gtk'

W = 300; H = 300

Surface = Cairo::ImageSurface.new(Cairo::FORMAT_ARGB32, W, H)
C = Cairo::Context.new(Surface)
C.set_source_rgb(0, 0, 0)
C.rectangle(0, 0, W, H)
C.fill

line = lambda do |x1, y1, x2, y2|
  C.move_to(x1, y1)
  C.line_to(x2, y2)
  C.stroke
end
circle = lambda do |x, y, r|
  C.arc(x, y, r, 0, 2 * Math::PI)
  C.stroke
end

C.set_source_rgb(1, 1, 1)

line[150, 200, 250, 0]
line[150, 200, 250, -50]
line[150, -50, 350, 150]
circle[150,   0, 100]
circle[150,  50, 100]

cairo_gtk(Surface, W, H)