Pārlūkot izejas kodu

Added margin to bounding box.

Taddeus Kroes 13 gadi atpakaļ
vecāks
revīzija
c9e6ef009e
1 mainītis faili ar 15 papildinājumiem un 6 dzēšanām
  1. 15 6
      tests/testapp.py

+ 15 - 6
tests/testapp.py

@@ -33,10 +33,11 @@ class Rectangle(mt.RectangularArea):
 
 
 class Polygon(BoundingBoxArea):
-    def __init__(self, x, y, points, color=BLUE, border_color=RED):
+    def __init__(self, x, y, points, margin=0, color=BLUE, border_color=RED):
         super(Polygon, self).__init__(x, y, points)
         self.fill_color = color
         self.border_color = border_color
+        self.margin = margin
 
         self.on_drag(self.handle_drag)
         self.on_pinch(self.handle_pinch)
@@ -59,10 +60,17 @@ class Polygon(BoundingBoxArea):
         self.update_bounds()
         refresh()
 
+    def contains(self, x, y):
+        m = self.margin
+        return self.x - m <= x < self.x + self.width + m \
+               and self.y - m <= y < self.y + self.height + m
+
     def draw(self, cr):
         # Draw bounding box
         if draw_bounding_boxes:
-            cr.rectangle(self.x, self.y, self.width, self.height)
+            m = self.margin
+            cr.rectangle(self.x - m, self.y - m,
+                         self.width + 2 * m, self.height + 2 * m)
             cr.set_source_rgb(*self.border_color)
             cr.set_line_width(3)
             cr.stroke()
@@ -205,7 +213,7 @@ def on_show(window):
 
     # Create blue rectangle
     x, y, w, h = 0, 0, 250, 150
-    rect = Polygon(x, y, [(0, 0), (0, h), (w, h), (w, 0)])
+    rect = Polygon(x, y, [(0, 0), (0, h), (w, h), (w, 0)], margin=20)
     draw_objects.append(rect)
     root.add_area(rect)
 
@@ -215,7 +223,8 @@ def on_show(window):
     # Create green triangle
     x, y, w = 400, 400, 200
     h = triangle_height(w)
-    triangle = Polygon(x, y, [(0, h), (w, h), (w / 2, 0)], color=GREEN)
+    triangle = Polygon(x, y, [(0, h), (w, h), (w / 2, 0)],
+                       margin=20, color=GREEN)
     draw_objects.append(triangle)
     root.add_area(triangle)
 
@@ -245,8 +254,8 @@ if __name__ == '__main__':
 
     # Parse arguments
     parser = create_parser()
-    parser.add_argument('-f', '--fullscreen', action='store_true', default=False,
-                        help='run in fullscreen initially')
+    parser.add_argument('-f', '--fullscreen', action='store_true',
+            default=False, help='run in fullscreen initially')
     args = parse_args(parser)
 
     fullscreen = args.fullscreen