示例#1
0
文件: EventTest.py 项目: BeepC/libavg
    def testMultiContactRegistration(self):

        def onDown(event):
            contact = event.contact
            self.motionListenerID = contact.subscribe(avg.Contact.CURSOR_MOTION, 
                    onContact2)
            self.upListenerID = contact.subscribe(avg.Contact.CURSOR_UP, onContact2)
            contact.subscribe(avg.Contact.CURSOR_MOTION, onContact1)
            contact.subscribe(avg.Contact.CURSOR_UP, onContact1)

        def onContact1(event):
            if self.numContact1Callbacks == 0:
                event.contact.unsubscribe(self.motionListenerID)
                event.contact.unsubscribe(self.upListenerID)
            self.numContact1Callbacks += 1

        def onContact2(event):
            self.assertEqual(self.numContact1Callbacks, 0)
            self.numContact2Callbacks += 1
        
        root = self.loadEmptyScene()
        root.subscribe(avg.Node.CURSOR_DOWN, onDown)
        player.setFakeFPS(25)
        self.numContact1Callbacks = 0
        self.numContact2Callbacks = 0
        self.start(False,
                (lambda: self._sendTouchEvent(1, avg.Event.CURSOR_DOWN, 10, 10),
                 lambda: self._sendTouchEvent(1, avg.Event.CURSOR_MOTION, 20, 10),
                 lambda: self._sendTouchEvent(1, avg.Event.CURSOR_UP, 10, 10),
                ))
        self.assertEqual(self.numContact1Callbacks, 2)
        # The order of callbacks is unspecified, so onContact2 might be called once.
        self.assert_(self.numContact2Callbacks <= 1)
示例#2
0
 def initScene(self):
     root = self.loadEmptyScene()
     self.__node = avg.ImageNode(id="test",
                                 pos=(64, 30),
                                 href="rgb24-65x65.png",
                                 parent=root)
     player.setFakeFPS(10)
示例#3
0
文件: EventTest.py 项目: BeepC/libavg
    def testContactRegistration(self):

        def onDown(event):
            root.setEventCapture(event.cursorid)
            root.releaseEventCapture(event.cursorid)

        def onMotion(event):
            contact = event.contact
            self.contactID = contact.subscribe(avg.Contact.CURSOR_MOTION, onContactMotion)
            self.numMotionCallbacks += 1
            root.unsubscribe(avg.Node.CURSOR_DOWN, onDown)
            root.unsubscribe(avg.Node.CURSOR_MOTION, onMotion)

        def onContactMotion(event):
            contact = event.contact
            contact.unsubscribe(self.contactID)
            self.assertRaises(avg.Exception, lambda: contact.unsubscribe(self.contactID))
            self.numContactCallbacks += 1
       
        root = self.loadEmptyScene()
        root.subscribe(avg.Node.CURSOR_DOWN, onDown)
        self.numMotionCallbacks = 0
        root.subscribe(avg.Node.CURSOR_MOTION, onMotion)
        self.numContactCallbacks = 0
        player.setFakeFPS(25)
        self.start(False,
                (lambda: self._sendTouchEvent(1, avg.Event.CURSOR_DOWN, 10, 10),
                 lambda: self._sendTouchEvent(1, avg.Event.CURSOR_MOTION, 20, 10),
                 lambda: self._sendTouchEvent(1, avg.Event.CURSOR_MOTION, 30, 10),
                 lambda: self._sendTouchEvent(1, avg.Event.CURSOR_MOTION, 40, 10),
                ))
        self.assertEqual(self.numContactCallbacks, 1)
        self.assertEqual(self.numMotionCallbacks, 1)
示例#4
0
    def testMultiWindowFX(self):
        def setHueSat(node):
            effect = avg.HueSatFXNode()
            effect.saturation = -200
            node.setEffect(effect)

        def setBlur(node):
            node.setEffect(avg.BlurFXNode(3))

        def startVideo():
            node.unlink(True)
            self.videoNode = avg.VideoNode(href="mpeg1-48x48.mov",
                                           size=(96, 96),
                                           threaded=False,
                                           parent=root)
            self.videoNode.setEffect(avg.NullFXNode())
            self.videoNode.play()

        root = self.loadEmptyScene()
        player.setWindowConfig("avgwindowconfig.xml")
        node = avg.ImageNode(pos=(0, 0), href="rgb24-64x64.png", parent=root)
        node.setEffect(avg.NullFXNode())
        player.setFakeFPS(25)
        self.start(False, (
            lambda: self.compareImage("testMultiWindowFX1"),
            lambda: setHueSat(node),
            lambda: self.compareImage("testMultiWindowFX2"),
            lambda: setBlur(node),
            lambda: self.compareImage("testMultiWindowFX3"),
            startVideo,
            lambda: self.compareImage("testMultiWindowFXVideo1"),
            lambda: setHueSat(self.videoNode),
            lambda: self.compareImage("testMultiWindowFXVideo2"),
        ))
示例#5
0
    def testWarp(self):
        def moveVertex():
            grid = image.getWarpedVertexCoords()
            grid[1][1] = (grid[1][1][0]+0.06, grid[1][1][1]+0.06)
            image.setWarpedVertexCoords(grid)
            grid = video.getWarpedVertexCoords()
            grid[0][0] = (grid[0][0][0]+0.06, grid[0][0][1]+0.06)
            grid[1][1] = (grid[1][1][0]-0.06, grid[1][1][1]-0.06)
            video.setWarpedVertexCoords(grid)
        
        def flip():
            grid = image.getOrigVertexCoords()
            grid = [ [ (1-pos[0], pos[1]) for pos in line ] for line in grid]
            image.setWarpedVertexCoords(grid)
       
        root = self.loadEmptyScene()
        image = avg.ImageNode(href="rgb24-64x64.png",
                maxtilewidth=32, maxtileheight=16, parent=root)
        video = avg.VideoNode(pos=(40,0), size=(80,80), opacity=0.5, loop=True,
                href="mpeg1-48x48.mov", threaded=False, fps=30, parent=root)

        self.assertException(image.getOrigVertexCoords)
        self.assertException(image.getWarpedVertexCoords)
        player.setFakeFPS(30)
        self.start(False,
                (lambda: video.play(),
                 lambda: self.compareImage("testWarp1"),
                 moveVertex,
                 lambda: self.compareImage("testWarp2"),
                 flip,
                 lambda: self.compareImage("testWarp3")
                ))
示例#6
0
    def testVideoSeek(self):
        def seek(frame):
            videoNode.seekToFrame(frame)

        def checkCurFrame():
            self.assertEqual(videoNode.getCurFrame(), 26)

        player.setFakeFPS(25)
        for useCustomFPS in [False, True]:
            root = self.loadEmptyScene()
            if useCustomFPS:
                videoNode = avg.VideoNode(parent=root,
                                          loop=True,
                                          size=(96, 96),
                                          fps=25,
                                          threaded=False,
                                          href="mjpeg-48x48.avi")
            else:
                videoNode = avg.VideoNode(parent=root,
                                          loop=True,
                                          size=(96, 96),
                                          threaded=False,
                                          href="mjpeg-48x48.avi")

            videoNode.play()
            seek(26)
            self.start(
                False,
                (checkCurFrame, lambda: self.compareImage("testVideoSeek0"),
                 lambda: seek(100),
                 lambda: self.compareImage("testVideoSeek1"),
                 lambda: videoNode.pause(), lambda: seek(26), None,
                 lambda: self.compareImage("testVideoSeek2"),
                 lambda: videoNode.play(), None,
                 lambda: self.compareImage("testVideoSeek3")))
示例#7
0
    def testSound(self):
        def testSoundFile(filename):
            def setVolume(volume):
                node.volume = volume

            def testGetVolume(volume):
                self.assertAlmostEqual(node.volume, volume)

            root = self.loadEmptyScene()
            node = avg.SoundNode(href=filename, parent=root)
            self.start(False,
                       (lambda: setVolume(0.5), lambda: testGetVolume(0.5),
                        lambda: node.play(), None, lambda: node.stop(),
                        lambda: node.play(), lambda: node.pause(),
                        lambda: node.play(), lambda: setVolume(0.5),
                        lambda: testGetVolume(0.5), lambda: node.pause(),
                        lambda: node.stop(), lambda: setVolume(0.3),
                        lambda: testGetVolume(0.3), lambda: node.pause()))

        player.setFakeFPS(-1)
        player.volume = 0
        # "44.1kHz_mono.ogg" not tested for now - broken under Windows.
        # Assuming buggy ffmpeg version.
        for filename in [
                "22.050Hz_16bit_mono.wav", "44.1kHz_16bit_stereo.aif",
                "44.1kHz_16bit_stereo.wav", "44.1kHz_stereo.mp3",
                "48kHz_24bit_stereo.wav"
        ]:
            testSoundFile(filename)
示例#8
0
    def testMultiContactRegistration(self):
        def onDown(event):
            contact = event.contact
            self.motionListenerID = contact.subscribe(
                avg.Contact.CURSOR_MOTION, onContact2)
            self.upListenerID = contact.subscribe(avg.Contact.CURSOR_UP,
                                                  onContact2)
            contact.subscribe(avg.Contact.CURSOR_MOTION, onContact1)
            contact.subscribe(avg.Contact.CURSOR_UP, onContact1)

        def onContact1(event):
            if self.numContact1Callbacks == 0:
                event.contact.unsubscribe(self.motionListenerID)
                event.contact.unsubscribe(self.upListenerID)
            self.numContact1Callbacks += 1

        def onContact2(event):
            self.assertEqual(self.numContact1Callbacks, 0)
            self.numContact2Callbacks += 1

        root = self.loadEmptyScene()
        root.subscribe(avg.Node.CURSOR_DOWN, onDown)
        player.setFakeFPS(25)
        self.numContact1Callbacks = 0
        self.numContact2Callbacks = 0
        self.start(False, (
            lambda: self._sendTouchEvent(1, avg.Event.CURSOR_DOWN, 10, 10),
            lambda: self._sendTouchEvent(1, avg.Event.CURSOR_MOTION, 20, 10),
            lambda: self._sendTouchEvent(1, avg.Event.CURSOR_UP, 10, 10),
        ))
        self.assertEqual(self.numContact1Callbacks, 2)
        # The order of callbacks is unspecified, so onContact2 might be called once.
        self.assert_(self.numContact2Callbacks <= 1)
示例#9
0
    def testContactRegistration(self):
        def onDown(event):
            root.setEventCapture(event.cursorid)
            root.releaseEventCapture(event.cursorid)

        def onMotion(event):
            contact = event.contact
            self.contactID = contact.subscribe(avg.Contact.CURSOR_MOTION,
                                               onContactMotion)
            self.numMotionCallbacks += 1
            root.unsubscribe(avg.Node.CURSOR_DOWN, onDown)
            root.unsubscribe(avg.Node.CURSOR_MOTION, onMotion)

        def onContactMotion(event):
            contact = event.contact
            contact.unsubscribe(self.contactID)
            self.assertException(lambda: contact.unsubscribe(self.contactID))
            self.numContactCallbacks += 1

        root = self.loadEmptyScene()
        root.subscribe(avg.Node.CURSOR_DOWN, onDown)
        self.numMotionCallbacks = 0
        root.subscribe(avg.Node.CURSOR_MOTION, onMotion)
        self.numContactCallbacks = 0
        player.setFakeFPS(25)
        self.start(False, (
            lambda: self._sendTouchEvent(1, avg.Event.CURSOR_DOWN, 10, 10),
            lambda: self._sendTouchEvent(1, avg.Event.CURSOR_MOTION, 20, 10),
            lambda: self._sendTouchEvent(1, avg.Event.CURSOR_MOTION, 30, 10),
            lambda: self._sendTouchEvent(1, avg.Event.CURSOR_MOTION, 40, 10),
        ))
        self.assertEqual(self.numContactCallbacks, 1)
        self.assertEqual(self.numMotionCallbacks, 1)
示例#10
0
文件: AVTest.py 项目: hoodie/libavg
 def testException(self):
     class TestException(Exception):
         pass
     
     def throwException():
         raise TestException
     
     player.setFakeFPS(0.1)
     videoNode = avg.VideoNode(threaded = False)
     videoNode.href = "../testmediadir/mjpeg-48x48.avi"
     videoNode.subscribe(avg.Node.END_OF_FILE, throwException)
     
     root = self.loadEmptyScene()
     root.appendChild(videoNode)
     
     self.__exceptionThrown = False
     try:
         self.start(False,
                 (videoNode.pause,
                  lambda: videoNode.seekToFrame(videoNode.getNumFrames()),
                  videoNode.play,
                  lambda: None
                 ))
     except TestException:
         self.__exceptionThrown = True
         
     self.assert_(self.__exceptionThrown)
示例#11
0
    def testContrast(self):
        def setContrast(val):
            node.contrast = val

        def showVideo():
            node.unlink(True)
            videoNode = avg.VideoNode(parent=root,
                                      size=(96, 96),
                                      threaded=False,
                                      href="mpeg1-48x48.mov",
                                      contrast=(0.5, 0.5, 0.5))
            videoNode.play()

        root = self.loadEmptyScene()
        node = avg.ImageNode(parent=root,
                             href="colorramp.png",
                             contrast=(0.5, 0.5, 0.5))
        self.assertEqual(node.contrast, (0.5, 0.5, 0.5))
        player.setFakeFPS(10)
        self.start(False, (
            lambda: self.compareImage("testContrast1"),
            lambda: setContrast((1.5, 2.0, 2.5)),
            lambda: self.assertEqual(node.contrast, (1.5, 2.0, 2.5)),
            lambda: self.compareImage("testContrast2"),
            showVideo,
            lambda: self.compareImage("testContrast3"),
        ))
        player.setFakeFPS(-1)
示例#12
0
    def testVideoHRef(self):
        def testGetMediaSize():
            self.assertEqual(node.getMediaSize(), (48, 48))

        def setHRefLoaded():
            node.href = "h264-48x48.h264"

        def setHRefUnloaded():
            node = avg.VideoNode()
            node.href = "h264-48x48.h264"
            node.play()

        def testVideoNotFound():
            # Missing file, but no play() or pause(): Should just work.
            node = avg.VideoNode(href="MissingFile.mov")
            node.href = "SecondMissingFile.mov"
            # Now libavg notices the missing file.
            self.assertRaises(avg.Exception, node.play)

        def testVideoBroken():
            node = avg.VideoNode(href="SimpleSkin.xml")
            self.assertRaises(avg.Exception, node.play)

        root = self.loadEmptyScene()
        node = avg.VideoNode(href="mpeg1-48x48.mov",
                             threaded=False,
                             parent=root)
        player.setFakeFPS(25)
        testVideoNotFound()
        testVideoBroken()
        setHRefUnloaded()
        self.start(False,
                   (lambda: node.play(), testGetMediaSize, setHRefLoaded,
                    lambda: self.compareImage("testVideoHRef1"),
                    testGetMediaSize, testVideoNotFound, testVideoBroken))
示例#13
0
    def testMultiWindowFX(self):
        def setHueSat(node):
            effect = avg.HueSatFXNode()
            effect.saturation = -200
            node.setEffect(effect)

        def setBlur(node):
            node.setEffect(avg.BlurFXNode(3))

        def startVideo():
            node.unlink(True)
            self.videoNode = avg.VideoNode(href="mpeg1-48x48.mov", size=(96,96), 
                    threaded=False, parent=root)
            self.videoNode.setEffect(avg.NullFXNode())
            self.videoNode.play()

        root = self.loadEmptyScene()
        player.setWindowConfig("avgwindowconfig.xml")
        node = avg.ImageNode(pos=(0,0), href="rgb24-64x64.png", parent=root)
        node.setEffect(avg.NullFXNode())
        player.setFakeFPS(25)
        self.start(False,
                (self.skipIfMinimalShader,
                 lambda: self.compareImage("testMultiWindowFX1"),
                 lambda: setHueSat(node),
                 lambda: self.compareImage("testMultiWindowFX2"),
                 lambda: setBlur(node),
                 lambda: self.compareImage("testMultiWindowFX3"),
                 startVideo,
                 lambda: self.compareImage("testMultiWindowFXVideo1"),
                 lambda: setHueSat(self.videoNode),
                 lambda: self.compareImage("testMultiWindowFXVideo2"),
                ))
示例#14
0
    def testComplexDiv(self):
        def setImageID(imgNode):
            imgNode.id = "imageid"

        def createDiv():
            imgNode = player.createNode("image", 
                    {"id":"imageid", "href":"rgb24-64x64.png"})
            node = player.createNode("div", {"id":"divid"})
            node.appendChild(imgNode)
            imgNode.id = "imageid"
            root.appendChild(node)
            self.assertRaises(RuntimeError, lambda: setImageID(imgNode))
  
        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))

        root = self.loadEmptyScene()
        createDiv()
        removeDiv()
        player.stop()
        root = self.loadEmptyScene()
        player.setFakeFPS(25)
        self.start(False,
                (createDiv,
                 lambda: self.compareImage("testComplexDiv1"),
                 removeDiv,
                 lambda: self.compareImage("testComplexDiv1"),
                ))
示例#15
0
    def testWarp(self):
        def moveVertex():
            grid = image.getWarpedVertexCoords()
            grid[1][1] = (grid[1][1][0]+0.06, grid[1][1][1]+0.06)
            image.setWarpedVertexCoords(grid)
            grid = video.getWarpedVertexCoords()
            grid[0][0] = (grid[0][0][0]+0.06, grid[0][0][1]+0.06)
            grid[1][1] = (grid[1][1][0]-0.06, grid[1][1][1]-0.06)
            video.setWarpedVertexCoords(grid)
        
        def flip():
            grid = image.getOrigVertexCoords()
            grid = [ [ (1-pos[0], pos[1]) for pos in line ] for line in grid]
            image.setWarpedVertexCoords(grid)
       
        root = self.loadEmptyScene()
        image = avg.ImageNode(href="rgb24-64x64.png",
                maxtilewidth=32, maxtileheight=16, parent=root)
        video = avg.VideoNode(pos=(40,0), size=(80,80), opacity=0.5, loop=True,
                href="mpeg1-48x48.mpg", threaded=False, fps=30, parent=root)

        self.assertException(image.getOrigVertexCoords)
        self.assertException(image.getWarpedVertexCoords)
        player.setFakeFPS(30)
        self.start(False,
                (lambda: video.play(),
                 lambda: self.compareImage("testWarp1"),
                 moveVertex,
                 lambda: self.compareImage("testWarp2"),
                 flip,
                 lambda: self.compareImage("testWarp3")
                ))
示例#16
0
文件: AVTest.py 项目: hoodie/libavg
    def testLoop(self):
        def onEOF():
            self.eof = True

        def onFrame():
            if self.eof:
                if not threaded:
                    self.compareImage("testVideoLoop")
                player.stop()

        for audio, threaded in [(False, False), (False, True), (True, True)]:
            self.eof = False
            if audio:
                player.setFakeFPS(-1)
            else:
                player.setFakeFPS(25)
            root = self.loadEmptyScene()
            if audio:
                node = avg.SoundNode(parent=root, loop=True,
                        href="48kHz_16bit_mono.wav")
            else:
                node = avg.VideoNode(parent=root, loop=True, fps=25, size=(96,96),
                    threaded=threaded, href="mpeg1-48x48.mov")
            node.subscribe(avg.Node.END_OF_FILE, onEOF)
            node.play()
            player.subscribe(player.ON_FRAME, onFrame)
            player.play()
示例#17
0
文件: AVTest.py 项目: hoodie/libavg
    def testVideoSeek(self):
        def seek(frame):
            videoNode.seekToFrame(frame)
            self.assert_(videoNode.isSeeking())

        def checkCurFrame():
            self.assertEqual(videoNode.getCurFrame(), 26)
            self.assert_(not(videoNode.isSeeking())),

        player.setFakeFPS(25)
        for useCustomFPS in [False, True]:
            root = self.loadEmptyScene()
            if useCustomFPS:
                videoNode = avg.VideoNode(parent=root, loop=True, size=(96,96), fps=25,
                        threaded=False, href="mjpeg-48x48.avi")
            else:
                videoNode = avg.VideoNode(parent=root, loop=True, size=(96,96), 
                        threaded=False, href="mjpeg-48x48.avi")

            videoNode.play()
            videoNode.seekToFrame(26)
            self.start(False,
                    (checkCurFrame,
                     lambda: self.compareImage("testVideoSeek0"),
                     lambda: seek(100),
                     lambda: self.compareImage("testVideoSeek1"),
                     lambda: videoNode.pause(),
                     lambda: seek(26),
                     None,
                     lambda: self.compareImage("testVideoSeek2"),
                     lambda: videoNode.play(),
                     None,
                     lambda: self.compareImage("testVideoSeek3")
                    ))
示例#18
0
    def testException(self):
        class TestException(Exception):
            pass

        def throwException():
            raise TestException

        player.setFakeFPS(0.1)
        videoNode = avg.VideoNode(threaded=False)
        videoNode.href = "../testmediadir/mjpeg-48x48.avi"
        videoNode.subscribe(avg.Node.END_OF_FILE, throwException)

        root = self.loadEmptyScene()
        root.appendChild(videoNode)

        self.__exceptionThrown = False
        try:
            self.start(
                False,
                (videoNode.pause,
                 lambda: videoNode.seekToFrame(videoNode.getNumFrames()),
                 videoNode.play, lambda: None))
        except TestException:
            self.__exceptionThrown = True

        self.assert_(self.__exceptionThrown)
示例#19
0
文件: AVTest.py 项目: hoodie/libavg
        def testWithFile(filename, testImgName):
            def setMask(href):
                video.maskhref = href
                video.masksize = (32,32)

            def setOpacity():
                video.opacity = 0.5

            def setMaskBitmap():
                video.setMaskBitmap(avg.Bitmap("media/mask4.png"))

            print "  ", filename
            player.setFakeFPS(25)
            root = self.loadEmptyScene()
            video = avg.VideoNode(href=filename, threaded=False,
                    parent=root)
            video.play()
            self.start(False,
                    (lambda: setMask("mask4.png"),
                     lambda: self.compareImage(testImgName+"1"),
                     lambda: video.seekToFrame(10),
                     lambda: setMask(""),
                     lambda: self.compareImage(testImgName+"2"),
                     lambda: setMask("mask2.png"),
                     lambda: self.compareImage(testImgName+"3"),
                     setOpacity,
                     lambda: self.compareImage(testImgName+"4"),
                     setMaskBitmap,
                     lambda: self.compareImage(testImgName+"5"),
                    ))
示例#20
0
        def testWithFile(filename, testImgName):
            def setMask(href):
                video.maskhref = href
                video.masksize = (32, 32)

            def setOpacity():
                video.opacity = 0.5

            def setMaskBitmap():
                video.setMaskBitmap(avg.Bitmap("media/mask4.png"))

            print "  ", filename
            player.setFakeFPS(25)
            root = self.loadEmptyScene()
            video = avg.VideoNode(href=filename, threaded=False, parent=root)
            video.play()
            self.start(False, (
                lambda: setMask("mask4.png"),
                lambda: self.compareImage(testImgName + "1"),
                lambda: video.seekToFrame(10),
                lambda: setMask(""),
                lambda: self.compareImage(testImgName + "2"),
                lambda: setMask("mask2.png"),
                lambda: self.compareImage(testImgName + "3"),
                setOpacity,
                lambda: self.compareImage(testImgName + "4"),
                setMaskBitmap,
                lambda: self.compareImage(testImgName + "5"),
            ))
示例#21
0
    def testLoop(self):
        def onEOF():
            self.eof = True

        def onFrame():
            if self.eof:
                if not threaded:
                    self.compareImage("testVideoLoop")
                player.stop()

        for audio, threaded in [(False, False), (False, True), (True, True)]:
            self.eof = False
            if audio:
                player.setFakeFPS(-1)
            else:
                player.setFakeFPS(25)
            root = self.loadEmptyScene()
            if audio:
                node = avg.SoundNode(parent=root,
                                     loop=True,
                                     href="48kHz_16bit_mono.wav")
            else:
                node = avg.VideoNode(parent=root,
                                     loop=True,
                                     fps=25,
                                     size=(96, 96),
                                     threaded=threaded,
                                     href="mpeg1-48x48.mov")
            node.subscribe(avg.Node.END_OF_FILE, onEOF)
            node.play()
            player.subscribe(player.ON_FRAME, onFrame)
            player.play()
示例#22
0
文件: AVTest.py 项目: hoodie/libavg
    def testSound(self):
        def testSoundFile(filename):
            def setVolume(volume):
                node.volume = volume

            def testGetVolume(volume):
                self.assertAlmostEqual(node.volume, volume)

            root = self.loadEmptyScene()
            node = avg.SoundNode(href=filename, parent=root)
            self.start(False,
                    (lambda: setVolume(0.5),
                     lambda: testGetVolume(0.5),
                     lambda: node.play(),
                     None,
                     lambda: node.stop(),
                     lambda: node.play(),
                     lambda: node.pause(),
                     lambda: node.play(),
                     lambda: setVolume(0.5),
                     lambda: testGetVolume(0.5),
                     lambda: node.pause(),
                     lambda: node.stop(),
                     lambda: setVolume(0.3),
                     lambda: testGetVolume(0.3),
                     lambda: node.pause()
                    ))
        player.setFakeFPS(-1)
        player.volume = 0
        # "44.1kHz_mono.ogg" not tested for now - broken under Windows.
        # Assuming buggy ffmpeg version. 
        for filename in ["22.050Hz_16bit_mono.wav", "44.1kHz_16bit_stereo.aif", 
                "44.1kHz_16bit_stereo.wav", "44.1kHz_stereo.mp3", 
                "48kHz_24bit_stereo.wav"]:
            testSoundFile(filename)
示例#23
0
 def testVideoState(self):
     for accelerated in [True, False]:
         root = self.loadEmptyScene()
         node = avg.VideoNode(href="mpeg1-48x48.mov",
                              size=(96, 96),
                              threaded=False,
                              accelerated=accelerated,
                              parent=root)
         player.setFakeFPS(25)
         self.start(False, (
             lambda: node.play(),
             lambda: self.compareImage("testVideoState1"),
             lambda: node.pause(),
             lambda: self.compareImage("testVideoState2"),
             lambda: self.compareImage("testVideoState2"),
             lambda: node.play(),
             lambda: self.compareImage("testVideoState3"),
             lambda: node.stop(),
             lambda: self.compareImage("testVideoState4"),
             lambda: node.pause(),
             lambda: self.compareImage("testVideoState5"),
             lambda: self.compareImage("testVideoState5"),
             lambda: node.stop(),
             lambda: self.compareImage("testVideoState4"),
         ))
示例#24
0
    def testBitmapManager(self):
        WAIT_TIMEOUT = 5000
        def expectException(returnValue, nextAction):
            if isinstance(returnValue, Exception):
                nextAction()
            else:
                raise RuntimeError("Expected exception, got %s (%s)" % (
                        returnValue, type(returnValue)))
            
        def loadValidBitmap():
            def validBitmapCb(bitmap):
                self.assert_(not isinstance(bitmap, Exception))
                player.setTimeout(0, loadBitmapWithPixelFormat)

            bitmapManager.loadBitmap("media/rgb24alpha-64x64.png", validBitmapCb)

        def loadBitmapWithPixelFormat():
            def validBitmapCb(bitmap):
                self.assert_(not isinstance(bitmap, Exception))
                self.assert_(bitmap.getFormat() == avg.B5G6R5)
                player.setTimeout(0, loadUnexistentBitmap)

            bitmapManager.loadBitmap("media/rgb24alpha-64x64.png",
                    validBitmapCb, avg.B5G6R5)

        def loadUnexistentBitmap():
            bitmapManager.loadBitmap("nonexistent.png",
                    lambda bmp: expectException(
                            returnValue=bmp,
                            nextAction=lambda: player.setTimeout(0, loadBrokenBitmap)))

        def loadBrokenBitmap():
            import tempfile
            tempFileName = os.path.join(tempfile.gettempdir(),
                    "broken.png")
            open(tempFileName, "w")

            def cleanupAndTestReturnValue(returnValue):
                os.unlink(tempFileName)
                expectException(returnValue=returnValue, nextAction=player.stop)

            bitmapManager.loadBitmap(tempFileName, cleanupAndTestReturnValue)

        def reportStuck():
            raise RuntimeError("BitmapManager didn't reply "
                    "within %dms timeout" % WAIT_TIMEOUT)

        player.setFakeFPS(-1)
        sys.stderr.write("\n")
        for multithread in [False, True]:
            bitmapManager = avg.BitmapManager.get()
            sys.stderr.write("  Multithread: "+str(multithread)+"\n")
            self.loadEmptyScene()
            if multithread:
                bitmapManager.setNumThreads(2)
            player.setTimeout(WAIT_TIMEOUT, reportStuck)
            loadValidBitmap()
            player.play()
        avg.BitmapManager.get().setNumThreads(1)
示例#25
0
 def testVideoNullFX(self):
     root = self.loadEmptyScene()
     player.setFakeFPS(25)
     node = avg.VideoNode(parent=root, href="mjpeg-48x48.avi",
             threaded=False)
     node.setEffect(avg.NullFXNode())
     node.play()
     self.start(False, (lambda: self.compareImage("testVideoNullFX"),))
示例#26
0
文件: FXTest.py 项目: JohnChu/libavg
 def testVideoNullFX(self):
     root = self.loadEmptyScene()
     player.setFakeFPS(25)
     node = avg.VideoNode(parent=root, href="mjpeg-48x48.avi",
             threaded=False)
     node.setEffect(avg.NullFXNode())
     node.play()
     self.start(False, (lambda: self.compareImage("testVideoNullFX"),))
示例#27
0
    def testFakeTime(self):
        def checkTime():
            self.assertEqual(player.getFrameTime(), 50)
            self.assertEqual(player.getFrameDuration(), 50)
            self.assertEqual(player.getEffectiveFramerate(), 20)

        self.loadEmptyScene()
        player.setFakeFPS(20)
        self.start(False, (checkTime, ))
示例#28
0
    def testFakeTime(self):
        def checkTime():
            self.assertEqual(player.getFrameTime(), 50)
            self.assertEqual(player.getFrameDuration(), 50)
            self.assertEqual(player.getEffectiveFramerate(), 20)

        self.loadEmptyScene()
        player.setFakeFPS(20)
        self.start(False, (checkTime,))
示例#29
0
文件: AVTest.py 项目: hoodie/libavg
 def test2VideosAtOnce(self):
     player.setFakeFPS(25)
     self.loadEmptyScene()
     root = player.getRootNode()
     for pos in ((0,0), (80,0)):
         video = avg.VideoNode(pos=pos, threaded=False, href="mpeg1-48x48.mov",
                 parent=root)
         video.play()
     self.start(False,
             [lambda: self.compareImage("test2VideosAtOnce1"),])
示例#30
0
 def test2VideosAtOnce(self):
     player.setFakeFPS(25)
     self.loadEmptyScene()
     root = player.getRootNode()
     for pos in ((0,0), (80,0)):
         video = avg.VideoNode(pos=pos, threaded=False, href="mpeg1-48x48.mov",
                 parent=root)
         video.play()
     self.start(False,
             [lambda: self.compareImage("test2VideosAtOnce1"),])
示例#31
0
    def testCropMovie(self):
        def playMovie():
            node = player.getElementByID("movie")
            node.play()

        def moveTLCrop():
            node = player.getElementByID("movie")
            node.x = -20
            node.y = -20

        def moveBRCrop():
            node = player.getElementByID("movie")
            node.x = 60
            node.y = 40

        def moveTLNegative():
            node = player.getElementByID("movie")
            node.x = -60
            node.y = -50

        def moveBRGone():
            node = player.getElementByID("movie")
            node.x = 140
            node.y = 100

        def rotate():
            node = player.getElementByID("movie")
            node.x = 10
            node.y = 10
            player.getElementByID("nestedavg").angle = 1.0
            player.getElementByID("bkgd").angle = 1.0

        player.setFakeFPS(30)
        root = self.loadEmptyScene()
        avg.ImageNode(id="bkgd", href="crop_bkgd.png", parent=root)
        root.appendChild(
            player.createNode("""
                  <div id="nestedavg" x="40" y="30" width="80" height="60" crop="True">
                    <video id="movie" x="10" y="10" width="40" height="40" 
                            threaded="false" href="mpeg1-48x48.mov"
                            fps="30"/>
                  </div>
                """))
        self.start(
            False,
            (playMovie, lambda: self.compareImage("testCropMovie1"),
             moveTLCrop, lambda: self.compareImage("testCropMovie2"),
             moveBRCrop, lambda: self.compareImage("testCropMovie3"),
             moveTLNegative, lambda: self.compareImage("testCropMovie4"),
             moveBRGone, lambda: self.compareImage("testCropMovie5"), rotate,
             lambda: self.compareImage("testCropMovie6"), moveTLCrop,
             lambda: self.compareImage("testCropMovie7"), moveBRCrop,
             lambda: self.compareImage("testCropMovie8"), moveTLNegative,
             lambda: self.compareImage("testCropMovie9"), moveBRGone,
             lambda: self.compareImage("testCropMovie10")))
示例#32
0
 def testVideoFPS(self):
     player.setFakeFPS(25)
     root = self.loadEmptyScene()
     root = root
     videoNode = avg.VideoNode(size=(80,80), loop=True, threaded=False,
             href="mjpeg-48x48.avi", fps=250, parent=root)
     self.start(False,
             (lambda: videoNode.play(),
              None,
              lambda: self.compareImage("testVideoFPS")
             ))
示例#33
0
    def testNonNodeAttrAnim(self):
        class GenericClass(object):
            def __init__(self):
                self.numberValue = 0
                self.pointValue = avg.Point2D(0.0, 0.0)

        def on1Stop():
            self.__onStopCalled = True

        def on2Start():
            self.__onStopBeforeOnStart = self.__onStopCalled

        self.loadEmptyScene()
        player.setFakeFPS(10)
        genericObject1 = GenericClass()
        genericObject2 = genericObject1
        genericObject3 = GenericClass()
        anim1 = avg.LinearAnim(genericObject1, "numberValue", 1000, 0, 100,
                False, None, on1Stop)
        anim2 = avg.LinearAnim(genericObject2, "numberValue", 1200, 0, 200,
                False, on2Start)
        anim3 = avg.LinearAnim(genericObject1, "pointValue", 800, (0, 0), (100, 200))
        anim4 = avg.LinearAnim(genericObject3, "numberValue", 400, 0, 42)
        self.__onStopCalled = False
        self.__onStopBeforeOnStart = False
        self.start(False,
                (lambda: anim1.start(),
                 lambda: self.assert_(anim1.isRunning()),
                 lambda: self.assert_(not(self.__onStopCalled)),
                 lambda: anim2.start(),
                 lambda: self.assert_(self.__onStopBeforeOnStart),
                 lambda: self.assert_(not(anim1.isRunning())),
                 lambda: self.assert_(anim2.isRunning()),
                 lambda: self.assertEqual(avg.getNumRunningAnims(), 1),
                 lambda: anim3.start(),
                 lambda: self.assert_(anim2.isRunning()),
                 lambda: self.assert_(anim3.isRunning()),
                 lambda: self.assertEqual(avg.getNumRunningAnims(), 2),
                 lambda: anim4.start(),
                 lambda: self.assert_(anim4.isRunning()),
                 lambda: self.assertEqual(avg.getNumRunningAnims(), 3),
                 lambda: self.delay(200),
                 lambda: self.assertEqual(avg.getNumRunningAnims(), 0),
                 lambda: self.assert_(genericObject1.numberValue == 200),
                 lambda: self.assert_(genericObject2.pointValue == (100, 200)),
                 lambda: self.assert_(genericObject3.numberValue == 42)
                ))
        anim1 = None
        anim2 = None
        anim3 = None
        anim4 = None
        genericObject1 = None
        genericObject2 = None
        genericObject3 = None
示例#34
0
 def testSoundSeek(self):
     player.setFakeFPS(-1)
     player.volume = 0 
     root = self.loadEmptyScene()
     soundNode = avg.SoundNode(parent=root, href="44.1kHz_16bit_stereo.wav")
     soundNode.play()
     soundNode.seekToTime(500)
     self.start(False,
             (None,
              lambda: soundNode.seekToTime(200),
             ))
示例#35
0
文件: AVTest.py 项目: hoodie/libavg
 def testSoundSeek(self):
     player.setFakeFPS(-1)
     player.volume = 0 
     root = self.loadEmptyScene()
     soundNode = avg.SoundNode(parent=root, href="44.1kHz_16bit_stereo.wav")
     soundNode.play()
     soundNode.seekToTime(500)
     self.start(False,
             (None,
              lambda: soundNode.seekToTime(200),
             ))
示例#36
0
文件: AVTest.py 项目: hoodie/libavg
 def testVideoFPS(self):
     player.setFakeFPS(25)
     root = self.loadEmptyScene()
     root = root
     videoNode = avg.VideoNode(size=(80,80), loop=True, threaded=False,
             href="mjpeg-48x48.avi", fps=250, parent=root)
     self.start(False,
             (lambda: videoNode.play(),
              None,
              lambda: self.compareImage("testVideoFPS")
             ))
示例#37
0
文件: AVTest.py 项目: hoodie/libavg
 def testPlayBeforeConnect(self):
     node = avg.VideoNode(href="media/mpeg1-48x48.mov", threaded=False)
     node.play()
     player.createMainCanvas(size=(160,120))
     root = player.getRootNode()
     root.insertChild(node, 0)
     player.setFakeFPS(25)
     self.start(False,
             (lambda: self.assertEqual(node.size, (48, 48)),
              lambda: self.compareImage("testPlayBeforeConnect"),
             )) 
示例#38
0
 def testPlayBeforeConnect(self):
     node = avg.VideoNode(href="media/mpeg1-48x48.mov", threaded=False)
     node.play()
     player.createMainCanvas(size=(160,120))
     root = player.getRootNode()
     root.insertChild(node, 0)
     player.setFakeFPS(25)
     self.start(False,
             (lambda: self.assertEqual(node.size, (48, 48)),
              lambda: self.compareImage("testPlayBeforeConnect"),
             )) 
示例#39
0
文件: AnimTest.py 项目: derric/libavg
    def testNonNodeAttrAnim(self):
        class GenericClass(object):
            def __init__(self):
                self.numberValue = 0
                self.pointValue = avg.Point2D(0.0, 0.0)

        def on1Stop():
            self.__onStopCalled = True

        def on2Start():
            self.__onStopBeforeOnStart = self.__onStopCalled

        self.loadEmptyScene()
        player.setFakeFPS(10)
        genericObject1 = GenericClass()
        genericObject2 = genericObject1
        genericObject3 = GenericClass()
        anim1 = avg.LinearAnim(genericObject1, "numberValue", 1000, 0, 100,
                               False, None, on1Stop)
        anim2 = avg.LinearAnim(genericObject2, "numberValue", 1200, 0, 200,
                               False, on2Start)
        anim3 = avg.LinearAnim(genericObject1, "pointValue", 800, (0, 0),
                               (100, 200))
        anim4 = avg.LinearAnim(genericObject3, "numberValue", 400, 0, 42)
        self.__onStopCalled = False
        self.__onStopBeforeOnStart = False
        self.start(
            False,
            (lambda: anim1.start(), lambda: self.assert_(anim1.isRunning()),
             lambda: self.assert_(not (self.__onStopCalled)),
             lambda: anim2.start(),
             lambda: self.assert_(self.__onStopBeforeOnStart),
             lambda: self.assert_(not (anim1.isRunning())),
             lambda: self.assert_(anim2.isRunning()),
             lambda: self.assertEqual(avg.getNumRunningAnims(), 1),
             lambda: anim3.start(), lambda: self.assert_(anim2.isRunning()),
             lambda: self.assert_(anim3.isRunning()),
             lambda: self.assertEqual(avg.getNumRunningAnims(), 2),
             lambda: anim4.start(), lambda: self.assert_(anim4.isRunning()),
             lambda: self.assertEqual(avg.getNumRunningAnims(), 3),
             lambda: self.delay(200),
             lambda: self.assertEqual(avg.getNumRunningAnims(), 0),
             lambda: self.assert_(genericObject1.numberValue == 200),
             lambda: self.assert_(genericObject2.pointValue == (100, 200)),
             lambda: self.assert_(genericObject3.numberValue == 42)))
        anim1 = None
        anim2 = None
        anim3 = None
        anim4 = None
        genericObject1 = None
        genericObject2 = None
        genericObject3 = None
示例#40
0
    def testWarp(self):
        def moveVertex():
            grid = image.getWarpedVertexCoords()
            grid[1][1] = (grid[1][1][0] + 0.06, grid[1][1][1] + 0.06)
            image.setWarpedVertexCoords(grid)
            grid = video.getWarpedVertexCoords()
            grid[0][0] = (grid[0][0][0] + 0.06, grid[0][0][1] + 0.06)
            grid[1][1] = (grid[1][1][0] - 0.06, grid[1][1][1] - 0.06)
            video.setWarpedVertexCoords(grid)

        def flip():
            grid = image.getOrigVertexCoords()
            grid = [[(1 - pos[0], pos[1]) for pos in line] for line in grid]
            image.setWarpedVertexCoords(grid)

        def changeHref():
            image.href = "rgb24-65x65.png"
            grid = image.getWarpedVertexCoords()
            self.assert_(len(grid) == 6)
            self.assert_(len(grid[0]) == 4)

        root = self.loadEmptyScene()
        image = avg.ImageNode(href="rgb24-64x64.png",
                              maxtilewidth=32,
                              maxtileheight=16,
                              parent=root)
        video = avg.VideoNode(pos=(40, 0),
                              size=(80, 80),
                              opacity=0.5,
                              loop=True,
                              href="mpeg1-48x48.mov",
                              threaded=False,
                              fps=30,
                              parent=root)

        self.assertRaises(avg.Exception, image.getOrigVertexCoords)
        self.assertRaises(avg.Exception, image.getWarpedVertexCoords)
        player.setFakeFPS(30)
        self.start(False, (
            lambda: video.play(),
            lambda: self.compareImage("testWarp1"),
            moveVertex,
            lambda: self.compareImage("testWarp2"),
            flip,
            lambda: self.compareImage("testWarp3"),
            changeHref,
            lambda: self.compareImage("testWarp4"),
            lambda: image.setMirror(avg.RasterNode.HORIZONTAL),
            lambda: self.compareImage("testWarp5"),
            lambda: image.setMirror(avg.RasterNode.VERTICAL),
            lambda: self.compareImage("testWarp6"),
        ))
示例#41
0
    def testFXUpdate(self):
        # This tests if the FX render-on-demand functionality doesn't forget updates.
        def changeTexture():
            node.href = "colorramp.png"

        def addMaskTex():
            node.maskhref = "mask.png"

        def changeMaskTex():
            node.maskhref = "mask2.png"

        def changeMaskPos():
            node.maskpos = (10, 10)

        def changeFX():
            effect.radius = 2

        def addVideo():
            node.unlink(True)
            videoNode = avg.VideoNode(parent=root, threaded=False, size=(96,96),
                    href="mpeg1-48x48.mpg")
            effect = avg.BlurFXNode()
            effect.radius = 0
            videoNode.setEffect(effect)
            videoNode.play()

        if player.isUsingGLES():
            self.skip("Not supported under GLES")
            return

        root = self.loadEmptyScene()
        node = avg.ImageNode(parent=root, href="rgb24alpha-64x64.png")
        effect = avg.BlurFXNode()
        effect.radius = 0
        node.setEffect(effect)
        player.setFakeFPS(25)
        self.start(False,
                (changeTexture,
                 lambda: self.compareImage("testFXUpdateTex"),
                 addMaskTex,
                 lambda: self.compareImage("testFXUpdateMaskTex1"),
                 changeMaskTex,
                 lambda: self.compareImage("testFXUpdateMaskTex2"),
                 changeMaskPos,
                 lambda: self.compareImage("testFXUpdateMaskPos"),
                 changeFX,
                 lambda: self.compareImage("testFXUpdateFX"),
                 addVideo,
                 None,
                 lambda: self.compareImage("testFXUpdateVideo"),
                ))
示例#42
0
    def testFXUpdate(self):
        # This tests if the FX render-on-demand functionality doesn't forget updates.
        def changeTexture():
            node.href = "colorramp.png"

        def addMaskTex():
            node.maskhref = "mask4.png"
            node.masksize = (32, 32)

        def changeMaskTex():
            node.maskhref = "mask2.png"

        def changeMaskPos():
            node.maskpos = (32, 32)

        def changeFX():
            effect.radius = 2

        def addVideo():
            node.unlink(True)
            videoNode = avg.VideoNode(parent=root,
                                      threaded=False,
                                      size=(96, 96),
                                      href="mpeg1-48x48.mov")
            effect = avg.BlurFXNode()
            effect.radius = 0
            videoNode.setEffect(effect)
            videoNode.play()

        root = self.loadEmptyScene()
        node = avg.ImageNode(parent=root, href="rgb24alpha-64x64.png")
        effect = avg.BlurFXNode()
        effect.radius = 0
        player.setFakeFPS(25)
        self.start(False, (
            self.skipIfMinimalShader,
            lambda: node.setEffect(effect),
            changeTexture,
            lambda: self.compareImage("testFXUpdateTex"),
            addMaskTex,
            lambda: self.compareImage("testFXUpdateMaskTex1"),
            changeMaskTex,
            lambda: self.compareImage("testFXUpdateMaskTex2"),
            changeMaskPos,
            lambda: self.compareImage("testFXUpdateMaskPos"),
            changeFX,
            lambda: self.compareImage("testFXUpdateFX"),
            addVideo,
            None,
            lambda: self.compareImage("testFXUpdateVideo"),
        ))
示例#43
0
    def testCallFromThread(self):
        def onAsyncCall():
            self.asyncCalled = True

        def threadFunc():
            player.callFromThread(onAsyncCall)

        def startThread():
            self.thread = threading.Thread(target=threadFunc)
            self.thread.start()

        self.initDefaultImageScene()
        self.asyncCalled = False
        player.setFakeFPS(-1)
        self.start(False, (startThread, lambda: self.thread.join(), None, lambda: self.assert_(self.asyncCalled)))
 def runTest(useXml):
     self.root = self.loadEmptyScene()
     createNode1(useXml)
     player.stop()
     self.root = self.loadEmptyScene()
     player.setFakeFPS(25)
     self.start(warnOnImageDiff,
                (lambda: createNode1(useXml),
                 lambda: self.compareImage(testName + "1"),
                 lambda: createNode2(useXml),
                 lambda: self.compareImage(testName + "2"), reorderNode,
                 lambda: self.compareImage(testName + "3"), removeNodes,
                 lambda: self.compareImage(testName + "4"), reAddNode,
                 lambda: self.compareImage(testName + "5"), killNode,
                 reAddNode, reAddNode2, removeAgain))
示例#45
0
    def testDragRecognizerRelCoords(self):

        def onDrag(offset):
            self.assertAlmostEqual(offset, (-40,-40))

        player.setFakeFPS(100)
        for self.friction in (-1, 100):
            root = self.loadEmptyScene()
            div = avg.DivNode(pos=(64,64), angle=math.pi, parent=root)
            image = avg.ImageNode(parent=div, href="rgb24-64x64.png")
            ui.DragRecognizer(image, moveHandler=onDrag, friction=self.friction)
            self.start(False,
                    (lambda: self._sendMouseEvent(avg.Event.CURSOR_DOWN, 30, 30),
                     lambda: self._sendMouseEvent(avg.Event.CURSOR_MOTION, 70, 70),
                    ))
        player.setFakeFPS(-1)
示例#46
0
    def testSimpleScrollArea(self):

        def onContentPosChanged(newPos):
            self.messageTester.setMessageReceived(self.node.CONTENT_POS_CHANGED)

        root = self.loadEmptyScene()
        image = avg.ImageNode(href="rgb24-64x64.png", size=(200,400))
        self.node = simple.ScrollArea(contentNode=image, size=(115,115),
                friction=-1, parent=root)
        self.messageTester = MessageTester(self.node, [self.node.PRESSED, 
                self.node.RELEASED], self)
        self.node.subscribe(self.node.CONTENT_POS_CHANGED, onContentPosChanged)
        player.setFakeFPS(10)

        self.start(False,
                (lambda: self.compareImage("testSimpleScrollArea1"),
                 lambda: self.node.setContentSize((400,200)),
                 lambda: self.compareImage("testSimpleScrollArea2"),
                 lambda: self.node.setContentPos((200,100)),
                 lambda: self.messageTester.assertState([self.node.CONTENT_POS_CHANGED]),
                 lambda: self.compareImage("testSimpleScrollArea3"),
                 lambda: self.node.setContentPos((0,0)),
                 # Scroll via gesture
                 self.messageTester.reset,
                 self._genMouseEventFrames(avg.Event.CURSOR_DOWN, 90, 90,
                        [self.node.PRESSED,]),
                 self._genMouseEventFrames(avg.Event.CURSOR_MOTION, 10, 90,
                        [self.node.CONTENT_POS_CHANGED]),
                 lambda: self.compareImage("testSimpleScrollArea4"),
                 self._genMouseEventFrames(avg.Event.CURSOR_UP, 10, 10,
                        [self.node.RELEASED,self.node.CONTENT_POS_CHANGED]),
                 lambda: self.compareImage("testSimpleScrollArea5"),
                 lambda: self.delay(1000), # Wait for end of inertia.
                 lambda: self.node.setContentPos((0,0)), 
                 # Scroll using scroll bars
                 self.messageTester.reset,
                 lambda: self.compareImage("testSimpleScrollArea2"),
                 lambda: self._sendMouseEvent(avg.Event.CURSOR_DOWN, 110, 0),
                 lambda: self._sendMouseEvent(avg.Event.CURSOR_UP, 110, 50),
                 lambda: self.messageTester.assertState([self.node.CONTENT_POS_CHANGED]),
                 lambda: self.compareImage("testSimpleScrollArea6"),
                 lambda: self._sendMouseEvent(avg.Event.CURSOR_DOWN, 0, 110),
                 lambda: self._sendMouseEvent(avg.Event.CURSOR_UP, 50, 110),
                 lambda: self.messageTester.assertState([self.node.CONTENT_POS_CHANGED]),
                 lambda: self.compareImage("testSimpleScrollArea7"),
                ))
        player.setFakeFPS(-1)
示例#47
0
文件: AVTest.py 项目: dboesel/libavg
    def testVideoActive(self):
        def deactivate():
            node.active = 0

        def activate():
            node.active = 1

        root = self.loadEmptyScene()
        node = avg.VideoNode(href="mpeg1-48x48.mov",
                             size=(96, 96),
                             threaded=False,
                             parent=root)
        player.setFakeFPS(25)
        self.start(False,
                   (lambda: node.play(), deactivate,
                    lambda: self.compareImage("testVideoActive1"), activate,
                    lambda: self.compareImage("testVideoActive2")))
示例#48
0
文件: AVTest.py 项目: dboesel/libavg
        def testWithFile(filename, testImgName):
            def hide():
                self.videoNode.opacity = 0

            def show():
                self.videoNode.opacity = 1

            player.setFakeFPS(25)
            root = self.loadEmptyScene()
            self.videoNode = avg.VideoNode(href=filename,
                                           loop=True,
                                           threaded=False,
                                           parent=root)
            self.start(
                False,
                (lambda: self.videoNode.play(), None,
                 lambda: self.compareImage(testImgName + "1"), hide, None,
                 None, show, lambda: self.compareImage(testImgName + "2")))
示例#49
0
文件: AVTest.py 项目: hoodie/libavg
    def testVideoActive(self):
        def deactivate():
            node.active=0

        def activate():
            node.active=1
        
        root = self.loadEmptyScene()
        node = avg.VideoNode(href="mpeg1-48x48.mov", size=(96,96), threaded=False,
                parent=root)
        player.setFakeFPS(25)
        self.start(False,
                (lambda: node.play(),
                 deactivate,
                 lambda: self.compareImage("testVideoActive1"),
                 activate,
                 lambda: self.compareImage("testVideoActive2")
                ))
示例#50
0
    def testWarp(self):
        def moveVertex():
            grid = image.getWarpedVertexCoords()
            grid[1][1] = (grid[1][1][0]+0.06, grid[1][1][1]+0.06)
            image.setWarpedVertexCoords(grid)
            grid = video.getWarpedVertexCoords()
            grid[0][0] = (grid[0][0][0]+0.06, grid[0][0][1]+0.06)
            grid[1][1] = (grid[1][1][0]-0.06, grid[1][1][1]-0.06)
            video.setWarpedVertexCoords(grid)
        
        def flip():
            grid = image.getOrigVertexCoords()
            grid = [ [ (1-pos[0], pos[1]) for pos in line ] for line in grid]
            image.setWarpedVertexCoords(grid)

        def changeHref():
            image.href = "rgb24-65x65.png"
            grid = image.getWarpedVertexCoords()
            self.assert_(len(grid) == 6)
            self.assert_(len(grid[0]) == 4)
      
        root = self.loadEmptyScene()
        image = avg.ImageNode(href="rgb24-64x64.png",
                maxtilewidth=32, maxtileheight=16, parent=root)
        video = avg.VideoNode(pos=(40,0), size=(80,80), opacity=0.5, loop=True,
                href="mpeg1-48x48.mov", threaded=False, fps=30, parent=root)

        self.assertRaises(avg.Exception, image.getOrigVertexCoords)
        self.assertRaises(avg.Exception, image.getWarpedVertexCoords)
        player.setFakeFPS(30)
        self.start(False,
                (lambda: video.play(),
                 lambda: self.compareImage("testWarp1"),
                 moveVertex,
                 lambda: self.compareImage("testWarp2"),
                 flip,
                 lambda: self.compareImage("testWarp3"),
                 changeHref,
                 lambda: self.compareImage("testWarp4"),
                 lambda: image.setMirror(avg.RasterNode.HORIZONTAL),
                 lambda: self.compareImage("testWarp5"),
                 lambda: image.setMirror(avg.RasterNode.VERTICAL),
                 lambda: self.compareImage("testWarp6"),
                ))
示例#51
0
    def testCanvasDrag(self):
        def onDrag(offset):
            self.assertAlmostEqual(offset, (-40,-40))
            self.__onDragCalled = True

        player.setFakeFPS(100)
        self.__onDragCalled = False
        mainCanvas, offscreenCanvas = self.__setupCanvas(True)
        self.node.angle = math.pi
        image = avg.ImageNode(parent=offscreenCanvas.getRootNode(), size=(160,120),
                href="rgb24-64x64.png")
        dragRecognizer = gesture.DragRecognizer(image, moveHandler=onDrag,
                friction=-1)
        self.start(False,
                (lambda: self._sendMouseEvent(avg.Event.CURSOR_DOWN, 30, 30),
                 lambda: self._sendMouseEvent(avg.Event.CURSOR_MOTION, 70, 70),
                ))
        player.setFakeFPS(-1)
        self.assert_(self.__onDragCalled)
示例#52
0
    def testCanvasDrag(self):
        def onDrag(offset):
            self.assertAlmostEqual(offset, (-40,-40))
            self.__onDragCalled = True

        player.setFakeFPS(100)
        self.__onDragCalled = False
        mainCanvas, offscreenCanvas = self.__setupCanvas(True)
        self.node.angle = math.pi
        image = avg.ImageNode(parent=offscreenCanvas.getRootNode(), size=(160,120),
                href="rgb24-64x64.png")
        dragRecognizer = gesture.DragRecognizer(image, moveHandler=onDrag,
                friction=-1)
        self.start(False,
                (lambda: self._sendMouseEvent(avg.Event.CURSOR_DOWN, 30, 30),
                 lambda: self._sendMouseEvent(avg.Event.CURSOR_MOTION, 70, 70),
                ))
        player.setFakeFPS(-1)
        self.assert_(self.__onDragCalled)
示例#53
0
    def testVideoLoop(self):
        def onEOF():
            self.eof = True

        def onFrame():
            if self.eof:
                if not(threaded):
                    self.compareImage("testVideoLoop")
                player.stop()

        for threaded in [False, True]:
            self.eof = False
            player.setFakeFPS(25)
            root = self.loadEmptyScene()
            videoNode = avg.VideoNode(parent=root, loop=True, fps=25, size=(96,96),
                    threaded=threaded, href="mpeg1-48x48.mpg")
            videoNode.subscribe(avg.Node.END_OF_FILE, onEOF)
            videoNode.play()
            player.subscribe(player.ON_FRAME, onFrame)
            player.play()
示例#54
0
    def testVideoSeekAfterEOF(self):
        def onEOF():
            node.seekToTime(0)
            player.subscribe(avg.Player.ON_FRAME, onFrame)

        def onFrame():
            if node.getCurTime() < 100:
                self.compareImage("testSeekAfterEOF")
                player.stop()

        def onNoEOF():
            self.fail("No EOF")

        player.setFakeFPS(25)
        root = self.loadEmptyScene()
        node = avg.VideoNode(href="mpeg1-48x48.mov", parent=root)
        node.play()
        node.subscribe(avg.VideoNode.END_OF_FILE, onEOF)
        player.setTimeout(100000, onNoEOF)
        player.play()
示例#55
0
    def testCallFromThread(self):
        def onAsyncCall():
            self.asyncCalled = True

        def threadFunc():
            player.callFromThread(onAsyncCall)

        def startThread():
            self.thread = threading.Thread(target=threadFunc)
            self.thread.start()

        self.initDefaultImageScene()
        self.asyncCalled = False
        player.setFakeFPS(-1)
        self.start(False, (
            startThread,
            lambda: self.thread.join(),
            None,
            lambda: self.assert_(self.asyncCalled),
        ))
示例#56
0
文件: AVTest.py 项目: hoodie/libavg
    def testVideoSeekAfterEOF(self):
        def onEOF():
            node.seekToTime(0)
            player.subscribe(avg.Player.ON_FRAME, onFrame)

        def onFrame():
            if node.getCurTime() < 100:
                self.compareImage("testSeekAfterEOF")
                player.stop()

        def onNoEOF():
            self.fail("No EOF")

        player.setFakeFPS(25)
        root = self.loadEmptyScene()
        node = avg.VideoNode(href="mpeg1-48x48.mov", parent=root)
        node.play()
        node.subscribe(avg.VideoNode.END_OF_FILE, onEOF)
        player.setTimeout(100000, onNoEOF)
        player.play()
示例#57
0
文件: AVTest.py 项目: hoodie/libavg
    def testVideoEOF(self):
        player.setFakeFPS(25)
        for filename in ["mpeg1-48x48.mov", "mpeg1-48x48-sound.avi"]:
            node = avg.VideoNode(href=filename)
            self.testEOF(node)
        node = avg.VideoNode(href="mpeg1-48x48.mov", opacity=0)
        self.testEOF(node)

        root = self.loadEmptyScene()
        video = avg.VideoNode(href="mpeg1-48x48.mov", threaded=False,
                parent=root)
        player.setFakeFPS(0.1)
       
        # Should never be called
        eofID = video.subscribe(avg.Node.END_OF_FILE, lambda: self.assert_(False))   
        self.start(False,
                (lambda: video.unsubscribe(avg.Node.END_OF_FILE, eofID), 
                 video.play,
                 None
                ))
示例#58
0
 def runTest(useXml):
     self.root = self.loadEmptyScene()
     createNode1(useXml)
     player.stop()
     self.root = self.loadEmptyScene()
     player.setFakeFPS(25)
     self.start(warnOnImageDiff, 
             (lambda: createNode1(useXml),
              lambda: self.compareImage(testName+"1"),
              lambda: createNode2(useXml),
              lambda: self.compareImage(testName+"2"),
              reorderNode,
              lambda: self.compareImage(testName+"3"),
              removeNodes,
              lambda: self.compareImage(testName+"4"),
              reAddNode,
              lambda: self.compareImage(testName+"5"),
              killNode,
              reAddNode,
              removeAgain
             ))
示例#59
0
文件: AVTest.py 项目: hoodie/libavg
        def testWithFile(filename, testImgName):
            def hide():
                self.videoNode.opacity=0

            def show():
                self.videoNode.opacity=1

            player.setFakeFPS(25)
            root = self.loadEmptyScene()
            self.videoNode = avg.VideoNode(href=filename, loop=True, threaded=False,
                    parent=root)
            self.start(False,
                    (lambda: self.videoNode.play(),
                     None,
                     lambda: self.compareImage(testImgName+"1"),
                     hide,
                     None,
                     None,
                     show,
                     lambda: self.compareImage(testImgName+"2")
                    ))