#!/usr/bin/ruby -w
require 'RMagick'

i = Magick::ImageList.new
i.new_image 600, 300 do self.background_color = "white" end

primitives = Magick::Draw.new

# Draw path with quadratic bezier commands
primitives.fill_opacity 0
primitives.stroke 'red'
primitives.stroke_width 3
primitives.path "M100,150 Q200,25 300,150 T500,150"

# Annotate
# Show end points
primitives.fill_opacity 1
primitives.stroke 'grey50'
primitives.stroke_width 1
primitives.circle 100,150, 103, 153
primitives.circle 300,150, 303, 153
primitives.circle 500,150, 503, 153

# Show control points
primitives.fill 'black'
primitives.stroke 'transparent'
primitives.circle 200,25, 203, 28
primitives.circle 400,275, 403, 278

# Show connector lines
primitives.line 100,150, 200,25
primitives.line 200,25, 400,275
primitives.line 400,275, 500,150

# Add labels
# Add end point labels
primitives.text 110,155, "'100,150'"
primitives.text 310,155, "'300,150'"
primitives.text 510,155, "'500,150'"

# Add control point labels
primitives.text 210,30, "'200,25'"
primitives.text 410,280, "'400,275'"

# Outline
primitives.stroke 'lavender'
primitives.stroke_width 1
primitives.fill_opacity 0
primitives.rectangle 0,0, 599, 299

primitives.draw i

#i.display
i.write "qbezierpath.gif"