40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
# File 'lib/geometry/obround.rb', line 40
def self.new(*args)
case args.size
when 1
CenteredObround.new(args[0])
when 2
if args.all? {|a| a.is_a?(Numeric) }
CenteredObround.new(Size[*args])
elsif args.all? {|a| a.is_a?(Array) || a.is_a?(Point) }
original_new(*args)
elsif (args[0].is_a?(Point) or args[0].is_a?(Array))and args[1].is_a?(Size)
SizedObround.new(*args)
else
raise ArgumentError, "Invalid arguments #{args}"
end
when 4
raise ArgumentError unless args.all? {|a| a.is_a?(Numeric)}
left, bottom, right, top = *args
original_new(Point[left, bottom], Point[right, top])
end
end
|