Ejemplo n.º 1
0
    def __init__(self, parent, event):
        """
        This class uses an initial touch event to track subsequent moves draw a line between them in a div node.
        It is mainly used to draw a selection lasso and record a polygon of it. This polygon can later be used to check
        for if the lasso contains nodes.

        Args:
            parent (avg.DivNode): Parent node that should contain the drawn line.
            event (Event): Initial event that is used to track touches / mouse moves.
        """
        EventDispatcher.__init__(self)

        self.__parent = parent
        self.__node = avg.PolygonNode(
            strokewidth=2,
            parent=self.__parent,
            color=vs_config.SELECTION_FEEDBACK_COLOR,
            fillopacity=0.5,
            opacity=0.5,
            fillcolor='ccc',
            sensitive=False,
            pos=[self.__parent.getRelPos((event.x, event.y))])
        self.__event = event
        self.__touch_id = event.cursorid

        self.__event.contact.subscribe(avg.Contact.CURSOR_MOTION,
                                       self.__on_move)
        self.__event.contact.subscribe(avg.Contact.CURSOR_UP, self.__on_up)
Ejemplo n.º 2
0
    def testPolygonEvents(self):
        def moveNode():
            div.pos = (40,40)

        canvas = self.makeEmptyCanvas()
        div = avg.DivNode(parent=canvas)
        polygon = avg.PolygonNode(strokewidth=10, color="FF00FF",
                    pos=((10,10), (50,10), (90,50), (90, 90)), parent=div)
        handlerTester = NodeHandlerTester(self, polygon)
        self.start(False,
                (lambda: self.fakeClick(20, 50),
                 lambda: handlerTester.assertState(()),
                 lambda: self.fakeClick(70, 50),
                 lambda: handlerTester.assertState(
                        (avg.Node.CURSOR_DOWN, avg.Node.CURSOR_OVER, avg.Node.CURSOR_UP)),
                 lambda: self.fakeClick(30, 7),
                 lambda: handlerTester.assertState(
                        (avg.Node.CURSOR_DOWN, avg.Node.CURSOR_UP)),
                 moveNode,
                 lambda: self.fakeClick(20, 20),
                 lambda: handlerTester.assertState([avg.Node.CURSOR_OUT]),
                 lambda: self.fakeClick(50, 50),
                 lambda: handlerTester.assertState(
                        (avg.Node.CURSOR_DOWN, avg.Node.CURSOR_OVER, avg.Node.CURSOR_UP)),
                ))
Ejemplo n.º 3
0
 def addPolygon():
     polygon = avg.PolygonNode(strokewidth=2,
                               color="FF00FF",
                               pos=((10, 10), (50, 10), (90, 50), (90,
                                                                   90)))
     canvas.appendChild(polygon)
     return polygon
Ejemplo n.º 4
0
 def texturePolygon():
     polygon = avg.PolygonNode(strokewidth=20,
                               color="FF00FF",
                               texhref="rgb24-64x64.png",
                               pos=((10, 10), (50, 10), (90, 50), (90,
                                                                   90)))
     canvas.appendChild(polygon)
     return polygon
Ejemplo n.º 5
0
 def addPolygon():
     polygon = avg.PolygonNode(strokewidth=2,
                               color="FF00FF",
                               pos=((10, 10), (50, 10), (90, 50), (90,
                                                                   90)))
     polygon.subscribe(avg.Node.CURSOR_DOWN, onMouseDown)
     canvas.appendChild(polygon)
     return polygon
Ejemplo n.º 6
0
 def createPolygonInInivisbleDiv():
     canvas = self.makeEmptyCanvas()
     div = avg.DivNode(parent=canvas, opacity=0)
     avg.PolygonNode(parent=div,
             strokewidth=2, color="FF00FF",
             fillopacity=1, fillcolor="00FF00",
             pos=((10, 10), (50, 10), (90, 50), (90, 90)))
     return div
Ejemplo n.º 7
0
 def createDegenerate():
     avg.PolygonNode(pos=((10, 20), (10, 20), (10, 20)), parent=canvas)
     avg.PolygonNode(pos=((10, 20), (10, 20), (20, 30)), parent=canvas)
     avg.PolygonNode(pos=((20, 30), (10, 20), (10, 20)), parent=canvas)
     avg.PolygonNode(pos=((10, 20), (20, 30), (10, 20)), parent=canvas)
     avg.PolygonNode(pos=((10, 20), (10, 30), (10, 40)), parent=canvas)
     avg.PolygonNode(pos=((20, 10), (30, 10), (40, 10)), parent=canvas)
     avg.PolygonNode(pos=((0, 0), (200, 0), (0, 0), (0, 200)),
                     parent=canvas)
Ejemplo n.º 8
0
 def addEmptyPolygon():
     avg.PolygonNode(parent=canvas, fillopacity=1)
Ejemplo n.º 9
0
 def addPolygon2():
     polygon = avg.PolygonNode(strokewidth=3, color="FF00FF",
             pos=((100.5,10.5), (100.5,30.5), (120.5,30.5), (120.5, 10.5)))
     canvas.insertChild(polygon, 0)
Ejemplo n.º 10
0
 def onInit(self):
     self.poly = avg.PolygonNode(pos=self.__genPts(),
                                 fillopacity=0.5,
                                 parent=self)
Ejemplo n.º 11
0
 def createSelfIntersecting():
     avg.PolygonNode(pos=((0, 0), (200, 0), (200, 100), (0, 0),
                          (100, 200), (0, 200)),
                     parent=canvas)