def removeDiv(): node = player.getElementByID("divid") imgNode = player.getElementByID("imageid") node.unlink() imgNode.id = "imageid" imgNode.unlink() root.appendChild(node) node.appendChild(imgNode) self.assertException(lambda: setImageID(imgNode))
def __endCalibration(self, isSuccessful): player.getElementByID("cal_coordcalibrator").active = False player.getElementByID("cal_coordcalibrator").opacity = 0 MsgsNode = player.getElementByID("cal_messages") for i in range(0, MsgsNode.getNumChildren()): MsgsNode.removeChild(0) g_KbManager.pop() self.__calibrationTerminatedCb(isSuccessful)
def removeDiv(): node = player.getElementByID("divid") imgNode = player.getElementByID("imageid") node.unlink() imgNode.id = "imageid" imgNode.unlink() root.appendChild(node) node.appendChild(imgNode) self.assertRaises(RuntimeError, lambda: setImageID(imgNode))
def killNode(): def onKill(): self.killCalled = True self.node = player.getElementByID("nodeid1") self.killCalled = False self.node.subscribe(avg.Node.KILLED, onKill) self.node.unlink(True) self.assert_(self.killCalled) gone = player.getElementByID("nodeid1") self.assertEqual(gone, None)
def testCoordConversions(): innerNode = player.getElementByID("inner") relPos = innerNode.getRelPos((90, 80)) self.assertAlmostEqual(relPos, (10, 10)) outerNode = player.getElementByID("outer") relPos = outerNode.getRelPos((90, 80)) self.assertAlmostEqual(relPos[0], 12.332806394528092) self.assertAlmostEqual(relPos[1], 6.9211188716194592) absPos = outerNode.getAbsPos(relPos) self.assertAlmostEqual(absPos, (90, 80)) self.assertEqual(outerNode.getElementByPos((10, 10)), innerNode) self.assertEqual(outerNode.getElementByPos((0, 10)), outerNode) self.assertEqual(outerNode.getElementByPos((-10, -110)), None)
def testOutlines(self): root = self.__initDefaultRotateScene() root.elementoutlinecolor = "FFFFFF" innerDiv = player.getElementByID("inner") innerDiv.size = (0, 0) innerDiv.getChild(0).elementoutlinecolor = "00FF00" self.start(False, [lambda: self.compareImage("testOutlines")])
def __onFrame(self): def showTrackerImage(trackerImageID, nodeID, size, pos=(0,0)): bitmap = self.tracker.getImage(trackerImageID) node = player.getElementByID(nodeID) node.setBitmap(bitmap) node.size = size if pos != (0,0): node.pos = pos # flip: grid = node.getOrigVertexCoords() grid = [ [ (1-pos[0], pos[1]) for pos in line ] for line in grid] node.setWarpedVertexCoords(grid) if self.__showBigCamImage: showTrackerImage(avg.IMG_CAMERA, "cal_distorted", (1280, 960)) else: pos = self.tracker.getDisplayROIPos() size = self.tracker.getDisplayROISize() showTrackerImage(avg.IMG_DISTORTED, "cal_distorted", pos = pos, size = size) showTrackerImage(avg.IMG_CAMERA, "cal_camera", (160, 120)) showTrackerImage(avg.IMG_NOHISTORY, "cal_nohistory", (160, 120)) showTrackerImage(avg.IMG_HISTOGRAM, "cal_histogram", (160, 120)) fps = player.getEffectiveFramerate() player.getElementByID("cal_fps").text = '%(val).2f' % {'val': fps}
def testDivResize(self): def checkSize (w, h): self.assertEqual(node.width, w) self.assertEqual(node.height, h) self.assertEqual(node.size, (w,h)) def setSize (size): node.size = size def setWidth (w): node.width = w def setHeight (h): node.height = h self.__initDefaultScene() node = player.getElementByID('nestedavg') self.start(False, (lambda: checkSize(128, 32), lambda: setSize((14,15)), lambda: checkSize(14,15), lambda: setWidth(23), lambda: checkSize(23,15), lambda: setHeight(22), lambda: checkSize(23,22), ))
def setNotification(self, text, timeout=0): player.getElementByID('cal_notification').text = text if timeout: if self.__notificationTimer is not None: player.clearInterval(self.__notificationTimer) self.__notificationTimer = player.setTimeout(timeout, self.__clearNotification)
def testNodePythonAttribute(): node1 = player.createNode("image", {"id":"foo", "pos":(23, 42)}) root.appendChild(node1) node1.customAttribute = "bbb" node2 = player.getElementByID("foo") self.assertEqual(node1, node2) self.assertEqual(node2.customAttribute, "bbb") node1.unlink(True)
def testRotate(self): def onOuterDown(Event): self.onOuterDownCalled = True def fakeRotate(): player.getElementByID("outer").angle += 0.1 player.getElementByID("inner").angle -= 0.1 def testCoordConversions(): innerNode = player.getElementByID("inner") relPos = innerNode.getRelPos((90, 80)) self.assertAlmostEqual(relPos, (10, 10)) outerNode = player.getElementByID("outer") relPos = outerNode.getRelPos((90, 80)) self.assertAlmostEqual(relPos[0], 12.332806394528092) self.assertAlmostEqual(relPos[1], 6.9211188716194592) absPos = outerNode.getAbsPos(relPos) self.assertAlmostEqual(absPos, (90, 80)) self.assertEqual(outerNode.getElementByPos((10, 10)), innerNode) self.assertEqual(outerNode.getElementByPos((0, 10)), outerNode) self.assertEqual(outerNode.getElementByPos((-10, -110)), None) def disableCrop(): player.getElementByID("outer").crop = False player.getElementByID("inner").crop = False self.__initDefaultRotateScene() player.getElementByID("outer").subscribe(avg.Node.CURSOR_DOWN, onOuterDown) self.onOuterDownCalled = False self.start( False, ( lambda: self.compareImage("testRotate1"), testCoordConversions, fakeRotate, lambda: self.compareImage("testRotate1a"), lambda: self._sendMouseEvent(avg.Event.CURSOR_DOWN, 85, 70), lambda: self._sendMouseEvent(avg.Event.CURSOR_UP, 85, 70), lambda: self.assert_(not (self.onOuterDownCalled)), lambda: self._sendMouseEvent(avg.Event.CURSOR_DOWN, 85, 75), lambda: self._sendMouseEvent(avg.Event.CURSOR_UP, 85, 75), lambda: self.assert_(self.onOuterDownCalled), disableCrop, lambda: self.compareImage("testRotate1b"), ), )
def showTrackerImage(trackerImageID, nodeID, size, pos=(0,0)): bitmap = self.tracker.getImage(trackerImageID) node = player.getElementByID(nodeID) node.setBitmap(bitmap) node.size = size if pos != (0,0): node.pos = pos # flip: grid = node.getOrigVertexCoords() grid = [ [ (1-pos[0], pos[1]) for pos in line ] for line in grid] node.setWarpedVertexCoords(grid)
def displayParams(self): i = 0 for Param in self.paramList: Node = player.getElementByID("cal_param"+str(i)) Path = Param['path'] Val = float(self.tracker.getParam(Path)) Node.text = (Param['Name']+": " +('%(val).'+str(Param['precision'])+'f') % {'val': Val}) if self.curParam == i: Node.color = "FFFFFF" else: Node.color = "A0A0FF" i += 1
def createNode1(useXml): def setNodeID(): node.id = "bork" node = createFunc(useXml) node.id = "nodeid1" node.x = 10 node.y = 20 self.root.appendChild(node) self.assertRaises(RuntimeError, setNodeID) self.assertEqual(self.root.indexOf(player.getElementByID("nodeid1")), 0) self.assertRaises(RuntimeError, lambda: self.root.indexOf(self.root))
def __init__(self, calibrationTerminatedCb): self.__calibrationTerminatedCb = calibrationTerminatedCb self.__CurPointIndex = 0 self.__CPPCal = player.getTracker().startCalibration() self.__LastCenter = None self.__NumMessages = 0 self._mycursor = None mainNode = player.getElementByID("cal_coordcalibrator") mainNode.active = True mainNode.opacity = 1 mainNode.setEventHandler(avg.Event.CURSOR_DOWN, avg.Event.TOUCH, self.__onTouchDown) mainNode.setEventHandler(avg.Event.CURSOR_MOTION, avg.Event.TOUCH, self.__onTouchMove) mainNode.setEventHandler(avg.Event.CURSOR_UP, avg.Event.TOUCH, self.__onTouchUp) self.__crosshair = player.getElementByID("cal_crosshair") self.__feedback = player.getElementByID("cal_feedback") self.__feedback.opacity = 0 self.__addMessage("Starting calibration.") self.__moveMarker() g_KbManager.push() g_KbManager.bindKey("space", self.__nextPoint, "sample next point") g_KbManager.bindKey("a", self.__abortCalibration, "abort calibration")
def __addMessage(self, text): MsgsNode = player.getElementByID("cal_messages") if self.__NumMessages > 38: for i in range(0, MsgsNode.getNumChildren() - 1): MsgsNode.getChild(i).text = MsgsNode.getChild(i + 1).text MsgsNode.removeChild(MsgsNode.getNumChildren() - 1) else: self.__NumMessages += 1 Node = player.createNode("<words fontsize='10' font='Eurostile' color='00FF00'/>") Node.x = 0 Node.y = self.__NumMessages * 13 Node.text = text MsgsNode.appendChild(Node)
def testAnimRegistry(self): def on1Stop(): self.__onStopCalled = True def on2Start(): self.__onStopBeforeOnStart = self.__onStopCalled self.initScene() sameNode = player.getElementByID("test") anim1 = avg.LinearAnim(self.__node, "x", 500, 0, 100, False, None, on1Stop) anim2 = avg.LinearAnim(sameNode, "x", 300, 0, 100, False, on2Start) self.__onStopCalled = False self.__onStopBeforeOnStart = False self.start(False, (lambda: anim1.start(), lambda: self.assert_(not(self.__onStopCalled)), lambda: anim2.start(), lambda: self.assert_(self.__onStopBeforeOnStart), lambda: self.assertEqual(avg.getNumRunningAnims(), 1) )) anim1 = None anim2 = None
def changeHRef(href): player.getElementByID("imagenode").href = href
def killNode(): self.node = player.getElementByID("nodeid1") self.node.unlink(True) gone = player.getElementByID("nodeid1") self.assertEqual(gone, None)
def deleteImg(): parentNode = root node = player.getElementByID("img") parentNode.removeChild(parentNode.indexOf(node))
def deferredRefresh(self): player.setTimeout(1500, self.__deferredRefreshCB) self.setNotification('Please wait for settlement') g_KbManager.push() player.getElementByID('cal_params').opacity = 0.3
def disableCrop(): player.getElementByID("outer").crop = False player.getElementByID("inner").crop = False
def removeAgain(): node = player.getElementByID("nodeid1") node.unlink() gone = player.getElementByID("nodeid1") self.assertEqual(gone, None)
def rotate(): node = player.getElementByID("movie") node.x = 10 node.y = 10 player.getElementByID("nestedavg").angle = 1.0 player.getElementByID("bkgd").angle = 1.0
def reorderNode(): self.root.reorderChild(0, 1) node = player.getElementByID("nodeid1") self.root.reorderChild(node, 0)
def removeNodes(): self.node = player.getElementByID("nodeid1") self.root.removeChild(self.root.indexOf(self.node)) self.node2 = player.getElementByID("nodeid2") self.root.removeChild(self.node2) self.assertEqual(player.getElementByID("nodeid1"), None)
def createNode2(useXml): node = createFunc(useXml) node.id = "nodeid2" oldNode = player.getElementByID("nodeid1") self.root.insertChildBefore(node, oldNode) self.assertEqual(self.root.getChild(1), oldNode)
def testPositioning(self): def click(pos): self.fakeClick(int(pos[0]), int(pos[1])) def testInside(bInside): ok = bInside == self.clicked self.clicked = False return ok def onMouse(event): self.clicked = True root = self.loadEmptyScene() avg.LineNode(pos1=(4, 20.5), pos2=(157, 20.5), color="FF0000", parent=root) avg.LineNode(pos1=(4.5, 20.5), pos2=(4.5, 110), color="FF0000", parent=root) avg.LineNode(pos1=(156.5, 20.5), pos2=(156.5, 110), color="FF0000", parent=root) avg.LineNode(pos1=(80.5, 20.5), pos2=(80.5, 110), color="FF0000", parent=root) avg.WordsNode(id="left", pos=(4, 20), fontsize=12, font="Bitstream Vera Sans", variant="roman", text="Norm", parent=root) avg.WordsNode(pos=(45, 20), fontsize=12, font="Bitstream Vera Sans", variant="roman", text="orm", parent=root) avg.WordsNode(pos=(75, 20), fontsize=12, font="Bitstream Vera Sans", variant="roman", text="ÖÄÜ", parent=root) avg.WordsNode(pos=(4, 40), fontsize=12, font="Bitstream Vera Sans", variant="oblique", text="Jtalic", parent=root) avg.WordsNode(id="right", pos=(156, 60), fontsize=12, alignment="right", font="Bitstream Vera Sans", variant="roman", text="Right-aligned", parent=root) avg.WordsNode(id="center", pos=(80, 80), fontsize=12, alignment="center", font="Bitstream Vera Sans", variant="roman", text="Centered", parent=root) for id in ["left", "center", "right"]: player.getElementByID(id).subscribe(avg.Node.CURSOR_DOWN, onMouse) self.clicked = False leftWidth = player.getElementByID("left").getMediaSize()[0] centerWidth = player.getElementByID("center").getMediaSize()[0] rightWidth = player.getElementByID("right").getMediaSize()[0] self.start(True, ( lambda: self.compareImage("testPositioning"), lambda: click((4, 20)), lambda: self.assert_(testInside(True)), lambda: click((3, 20)), lambda: self.assert_(testInside(False)), lambda: click((3 + leftWidth, 20)), lambda: self.assert_(testInside(True)), lambda: click((4 + leftWidth, 20)), lambda: self.assert_(testInside(False)), lambda: click((81 - centerWidth / 2, 80)), lambda: self.assert_(testInside(True)), lambda: click((80 - centerWidth / 2, 80)), lambda: self.assert_(testInside(False)), lambda: click((80 + centerWidth / 2, 80)), lambda: self.assert_(testInside(True)), lambda: click((81 + centerWidth / 2, 80)), lambda: self.assert_(testInside(False)), lambda: click((156 - rightWidth, 60)), lambda: self.assert_(testInside(True)), lambda: click((155 - rightWidth, 60)), lambda: self.assert_(testInside(False)), lambda: click((155, 60)), lambda: self.assert_(testInside(True)), lambda: click((156, 60)), lambda: self.assert_(testInside(False)), ))
def setSpacing(): player.getElementByID("words1").letterspacing = -2 player.getElementByID("words2").letterspacing = -2
def setTextAttrib(): self.baselineBmp = player.screenshot() player.getElementByID("words").text = self.text
def createNode2(useXml): node = createFunc(useXml) node.id = "nodeid2" oldNode = player.getElementByID("nodeid1") self.root.insertChildBefore(node, oldNode)
def removeNodes(): self.node = player.getElementByID("nodeid1") self.root.removeChild(self.root.indexOf(self.node)) node2 = player.getElementByID("nodeid2") self.root.removeChild(node2) self.assertEqual(player.getElementByID("nodeid1"), None)
def setEventCapture(): player.getElementByID("img").setEventCapture()
def __toggleGUI(self): self.__guiOpacity = 1 - self.__guiOpacity player.getElementByID('cal_gui').opacity = self.__guiOpacity
def checkRelPos(): RelPos = player.getElementByID("obscured").getRelPos((50, 52)) self.assertEqual(RelPos, (0, 0))
def moveTLNegative(): node = player.getElementByID("movie") node.x = -60 node.y = -50
def moveit(): node = player.getElementByID("nestedimg1") node.x += 50 node.opacity -= 0.7 node = player.getElementByID("nestedavg") node.x += 50
def moveBRCrop(): node = player.getElementByID("movie") node.x = 60 node.y = 40
def fakeRotate(): player.getElementByID("outer").angle += 0.1 player.getElementByID("inner").angle -= 0.1
def moveTLCrop(): node = player.getElementByID("movie") node.x = -20 node.y = -20
def setBitmap(): bitmap = avg.Bitmap("media/rgb24-65x65.png") player.getElementByID("imagenode").setBitmap(bitmap)
def moveBRGone(): node = player.getElementByID("movie") node.x = 140 node.y = 100
def unlink(): self.node = player.getElementByID("imagenode") self.node.unlink() self.assertEqual(self.canvas1.getNumDependentCanvases(), 0) gc.collect()
def __deferredRefreshCB(self): self.displayParams() self.tracker.resetHistory() self.setNotification('') g_KbManager.pop() player.getElementByID('cal_params').opacity = 0.9
def testCanvasBasics(self): def createCanvas(isFirst, canvasName, x): canvas = self.__createOffscreenCanvas(canvasName, False) canvas.getElementByID("test1").x = x node = avg.ImageNode(parent=root, id="imagenode") node.href="canvas:"+canvasName if isFirst: self.assertEqual(canvas.getNumDependentCanvases(), 0) self.canvas1 = canvas else: self.assertEqual(canvas.getNumDependentCanvases(), 1) self.canvas2 = canvas def unlink(): self.node = player.getElementByID("imagenode") self.node.unlink() self.assertEqual(self.canvas1.getNumDependentCanvases(), 0) gc.collect() def relink(): root.appendChild(self.node) self.node = None self.assertEqual(self.canvas1.getNumDependentCanvases(), 1) def changeHRef(href): player.getElementByID("imagenode").href = href def setBitmap(): bitmap = avg.Bitmap("media/rgb24-65x65.png") player.getElementByID("imagenode").setBitmap(bitmap) def deleteCanvases(): changeHRef("") firstNode.href = "" player.deleteCanvas("testcanvas1") self.assertRaises(RuntimeError, lambda: changeHRef("canvas:testcanvas1")) changeHRef("canvas:testcanvas2") self.assertRaises(RuntimeError, lambda: player.deleteCanvas("testcanvas2")) changeHRef("") player.deleteCanvas("testcanvas2") self.assertRaises(RuntimeError, lambda: player.deleteCanvas("foo")) root = self.loadEmptyScene() root.mediadir = "media" createCanvas(True, "testcanvas1", 0) firstNode = player.getElementByID("imagenode") self.start(False, (lambda: self.compareImage("testOffscreen1"), unlink, lambda: self.compareImage("testOffscreen2"), relink, lambda: self.compareImage("testOffscreen1"), unlink, lambda: createCanvas(False, "testcanvas2", 80), lambda: self.compareImage("testOffscreen3"), lambda: changeHRef("canvas:testcanvas1"), lambda: self.assertEqual(self.canvas1.getNumDependentCanvases(), 1), lambda: self.assertEqual(self.canvas2.getNumDependentCanvases(), 0), lambda: self.compareImage("testOffscreen1"), lambda: changeHRef("rgb24-65x65.png"), lambda: self.assertEqual(self.canvas1.getNumDependentCanvases(), 0), lambda: self.compareImage("testOffscreen4"), lambda: changeHRef("canvas:testcanvas1"), lambda: self.assertEqual(self.canvas1.getNumDependentCanvases(), 1), lambda: self.compareImage("testOffscreen1"), setBitmap, lambda: self.compareImage("testOffscreen4"), deleteCanvases, lambda: self.compareImage("testOffscreen5"), ))
def usePlugin1(): node = colorplugin.ColorNode(fillcolor="7f7f00", id="mynode1") root.appendChild(node) mynode = player.getElementByID("mynode1") self.assertEqual(mynode.fillcolor, "7f7f00")
def playMovie(): node = player.getElementByID("movie") node.play()