Browse code

Consistently implement is_inside() method (i.e. add impl for Edge).

Paul Sokolovsky authored on 12/02/2013 19:09:32 • José Fonseca committed on 12/05/2013 12:45:11
Showing 1 changed files

  • xdot.py index 28e2f82..e3ed9f5 100755
... ...
@@ -363,6 +363,9 @@ class Element(CompoundShape):
363 363
     def __init__(self, shapes):
364 364
         CompoundShape.__init__(self, shapes)
365 365
 
366
+    def is_inside(self, x, y):
367
+        return False
368
+
366 369
     def get_url(self, x, y):
367 370
         return None
368 371
 
... ...
@@ -421,10 +424,23 @@ class Edge(Element):
421 424
 
422 425
     RADIUS = 10
423 426
 
427
+    def is_inside_begin(self, x, y):
428
+        return square_distance(x, y, *self.points[0]) <= self.RADIUS*self.RADIUS
429
+
430
+    def is_inside_end(self, x, y):
431
+        return square_distance(x, y, *self.points[-1]) <= self.RADIUS*self.RADIUS
432
+
433
+    def is_inside(self, x, y):
434
+        if self.is_inside_begin(x, y):
435
+            return True
436
+        if self.is_inside_end(x, y):
437
+            return True
438
+        return False
439
+
424 440
     def get_jump(self, x, y):
425
-        if square_distance(x, y, *self.points[0]) <= self.RADIUS*self.RADIUS:
441
+        if self.is_inside_begin(x, y):
426 442
             return Jump(self, self.dst.x, self.dst.y, highlight=set([self, self.dst]))
427
-        if square_distance(x, y, *self.points[-1]) <= self.RADIUS*self.RADIUS:
443
+        if self.is_inside_end(x, y):
428 444
             return Jump(self, self.src.x, self.src.y, highlight=set([self, self.src]))
429 445
         return None
430 446