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)
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)), ))
def addPolygon(): polygon = avg.PolygonNode(strokewidth=2, color="FF00FF", pos=((10, 10), (50, 10), (90, 50), (90, 90))) canvas.appendChild(polygon) return polygon
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
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
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
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)
def addEmptyPolygon(): avg.PolygonNode(parent=canvas, fillopacity=1)
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)
def onInit(self): self.poly = avg.PolygonNode(pos=self.__genPts(), fillopacity=0.5, parent=self)
def createSelfIntersecting(): avg.PolygonNode(pos=((0, 0), (200, 0), (200, 100), (0, 0), (100, 200), (0, 200)), parent=canvas)