summaryrefslogtreecommitdiffhomepage
path: root/lib
diff options
context:
space:
mode:
authorTom Black <[email protected]>2018-12-12 00:10:14 -0800
committerGitHub <[email protected]>2018-12-12 00:10:14 -0800
commit241093f3ea07255af6d36fa9e07c2a1ecb7c712f (patch)
treec9987a2eb4d98820ba5a8845909e4c9430d31307 /lib
parent0f52b2115a5f910ae4d3350f7400bb11622ea899 (diff)
downloadruby2d-241093f3ea07255af6d36fa9e07c2a1ecb7c712f.tar.gz
ruby2d-241093f3ea07255af6d36fa9e07c2a1ecb7c712f.zip
Make `contains?` inclusive (#137)
If point is over the visual area, it's true. Also add default rectangle implementation to `renderable.rb`.
Diffstat (limited to 'lib')
-rw-r--r--lib/ruby2d/image.rb4
-rw-r--r--lib/ruby2d/line.rb6
-rw-r--r--lib/ruby2d/rectangle.rb4
-rw-r--r--lib/ruby2d/renderable.rb4
-rw-r--r--lib/ruby2d/text.rb4
5 files changed, 5 insertions, 17 deletions
diff --git a/lib/ruby2d/image.rb b/lib/ruby2d/image.rb
index 0516f4f..236df19 100644
--- a/lib/ruby2d/image.rb
+++ b/lib/ruby2d/image.rb
@@ -27,9 +27,5 @@ module Ruby2D
@color = Color.new(c)
end
- def contains?(x, y)
- @x < x and @x + @width > x and @y < y and @y + @height > y
- end
-
end
end
diff --git a/lib/ruby2d/line.rb b/lib/ruby2d/line.rb
index e817acb..8beb8ff 100644
--- a/lib/ruby2d/line.rb
+++ b/lib/ruby2d/line.rb
@@ -32,9 +32,9 @@ module Ruby2D
# the width. For reference:
# https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line
def contains?(x, y)
- points_distance(x1, y1, x, y) < length and
- points_distance(x2, y2, x, y) < length and
- (((@y2 - @y1) * x - (@x2 - @x1) * y + @x2 * @y1 - @y2 * @x1).abs / length) < 0.5 * @width
+ points_distance(x1, y1, x, y) <= length &&
+ points_distance(x2, y2, x, y) <= length &&
+ (((@y2 - @y1) * x - (@x2 - @x1) * y + @x2 * @y1 - @y2 * @x1).abs / length) <= 0.5 * @width
end
private
diff --git a/lib/ruby2d/rectangle.rb b/lib/ruby2d/rectangle.rb
index 43b0db5..07ee19b 100644
--- a/lib/ruby2d/rectangle.rb
+++ b/lib/ruby2d/rectangle.rb
@@ -40,10 +40,6 @@ module Ruby2D
update_coords(@x, @y, @width, h)
end
- def contains?(x, y)
- @x < x and @x + @width > x and @y < y and @y + @height > y
- end
-
private
def update_coords(x, y, w, h)
diff --git a/lib/ruby2d/renderable.rb b/lib/ruby2d/renderable.rb
index 0e5da50..2599bc4 100644
--- a/lib/ruby2d/renderable.rb
+++ b/lib/ruby2d/renderable.rb
@@ -42,9 +42,9 @@ module Ruby2D
def colour; self.color end
def colour=(c); self.color = c end
- # Add a contains method stub
+ # Check if given point is within a rectangle, by default (unless overridden)
def contains?(x, y)
- raise Error, "\`#contains?\` not implemented for this class yet"
+ x > @x && x < (@x + @width) && y > @y && y < (@y + @height)
end
end
diff --git a/lib/ruby2d/text.rb b/lib/ruby2d/text.rb
index 796cdb6..ea9a2a9 100644
--- a/lib/ruby2d/text.rb
+++ b/lib/ruby2d/text.rb
@@ -32,9 +32,5 @@ module Ruby2D
@color = Color.new(c)
end
- def contains?(x, y)
- @x < x and @x + @width > x and @y < y and @y + @height > y
- end
-
end
end