Module: Morandi::CairoExt

Defined in:
lib/morandi/cairo_ext.rb

Overview

Rounded rectangle function for photo borders

Class Method Summary collapse

Class Method Details

.rounded_rectangle(cr, x1, y1, x2, y2, x_radius = 4, y_radius = nil) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/morandi/cairo_ext.rb', line 12

def rounded_rectangle(cr, x1, y1, x2, y2, x_radius = 4, y_radius = nil)
  width = x2 - x1
  height = y2 - y1
  y_radius ||= x_radius

  x_radius = [x_radius, width / 2].min
  y_radius = [y_radius, height / 2].min

  xr1 = x_radius
  xr2 = x_radius / 2.0
  yr1 = y_radius
  yr2 = y_radius / 2.0

  cr.new_path
  cr.move_to(x1 + xr1, y1)
  cr.line_to(x2 - xr1, y1)
  cr.curve_to(x2 - xr2, y1, x2, y1 + yr2, x2, y1 + yr1)
  cr.line_to(x2, y2 - yr1)
  cr.curve_to(x2, y2 - yr2, x2 - xr2, y2, x2 - xr1, y2)
  cr.line_to(x1 + xr1, y2)
  cr.curve_to(x1 + xr2, y2, x1, y2 - yr2, x1, y2 - yr1)
  cr.line_to(x1, y1 + yr1)
  cr.curve_to(x1, y1 + yr2, x1 + xr2, y1, x1 + xr1, y1)
  cr.close_path
end