def self.area(results=[], options={})
step = options[:step].to_i
height = options[:height].to_i
upper = options[:upper].to_i
has_min = options[:has_min]
has_max = options[:has_max]
has_last = options[:has_last]
min_color = options[:min_color]
max_color = options[:max_color]
last_color = options[:last_color]
below_color = options[:below_color]
above_color = options[:above_color]
img = Magick::Image.new((results.size - 1) * step + 4, height) {self.background_color = options[:background_color]}
img.format = "PNG"
draw = Magick::Draw.new
coords = [[0,(height - 3 - upper/(101.0/(height-4)))]]
i=0
results.each do |r|
coords.push [(2 + i), (height - 3 - r/(101.0/(height-4)))]
i += step
end
coords.push [(results.size - 1) * step + 4, (height - 3 - upper/(101.0/(height-4)))]
draw.fill(above_color)
draw.define_clip_path('top') do
draw.rectangle(0,0,(results.size - 1) * step + 4,(height - 3 - upper/(101.0/(height-4))))
end
draw.clip_path('top')
draw.polygon *coords.flatten
draw.fill(below_color)
draw.define_clip_path('bottom') do
draw.rectangle(0,(height - 3 - upper/(101.0/(height-4))),(results.size - 1) * step + 4,height)
end
draw.clip_path('bottom')
draw.polygon *coords.flatten
draw.fill('black')
draw.line(0,(height - 3 - upper/(101.0/(height-4))),(results.size - 1) * step + 4,(height - 3 - upper/(101.0/(height-4))))
draw.define_clip_path('all') do
draw.rectangle(0,0,img.columns,img.rows)
end
draw.clip_path('all')
if has_min == 'true'
min_pt = coords[results.index(results.min)+1]
draw.fill(min_color)
draw.rectangle(min_pt[0]-1, min_pt[1]-1, min_pt[0]+1, min_pt[1]+1)
end
if has_max == 'true'
max_pt = coords[results.index(results.max)+1]
draw.fill(max_color)
draw.rectangle(max_pt[0]-1, max_pt[1]-1, max_pt[0]+1, max_pt[1]+1)
end
if has_last == 'true'
last_pt = coords[-2]
draw.fill(last_color)
draw.rectangle(last_pt[0]-1, last_pt[1]-1, last_pt[0]+1, last_pt[1]+1)
end
draw.draw(img)
img.to_blob
end