Beispiel #1
0
    def __init__(self, address, objDesc, screenRect, fullRect, absRect, zoom=(4,4), pos=None, size=None, blend=False, cropRect=None, fps=None, scale=None, allowFrameSkip=True, gridColsRows=None, doCenter=True):
        BaseTileDisplayObject.__init__(self, screenRect=screenRect, fullRect=fullRect, absRect=absRect, zoom=zoom, pos=pos, size=size, blend=blend, cropRect=cropRect)
        self.address = address
        if gridColsRows == None:
            self.streamCols = 1
            self.streamRows = 1
        else:
            self.streamCols = gridColsRows[0]
            self.streamRows = gridColsRows[1]
        #self.streamWidth = 352
        #self.streamHeight = 288
        self.streamWidth = objDesc.streamWidth
        self.streamHeight = objDesc.streamHeight
        if scale != None:
            self.streamWidth *= scale[0]
            self.streamHeight *= scale[1]
        addVisibleSeparation = False
        if addVisibleSeparation:
            self.streamWidth += 3
            self.streamHeight += 3
        self.size = self.streamCols * self.streamWidth, self.streamRows * self.streamHeight
        self.streamObjs = []

        # print "GROUP:", self.pos, self.size
        if doCenter:
            # center on pos
            self.setPos(pos[0] -self.size[0]/2, pos[1] - self.size[1]/2)


        for r in range(self.streamRows):
            for c in range(self.streamCols):
                objOffset = Vec2(c * self.streamWidth, r * self.streamHeight)
                #objPos = (self.pos[0] + c * self.streamWidth, self.pos[1] + r * self.streamHeight)
                objPos = Vec2(self.pos[0] + objOffset[0], self.pos[1] + objOffset[1])
                streamObj = glStreamedTxtrBox(address, screenRect=screenRect, imagePos=objPos, absRect= absRect, fullRect=fullRect, blend=blend, scale=scale, streamState=StreamState(), streamWidth=objDesc.streamWidth, streamHeight=objDesc.streamHeight, vflip=objDesc.vflip)
                streamObj.groupOffset = objOffset
                self.streamObjs.append(streamObj)

        # information for sorting and aligning tiles
        self.targetLocationOrder = []
        self.locations = []
        for r in range(self.streamRows):
            for c in range(self.streamCols):
                self.locations.append(Vec2(c * self.streamWidth, r * self.streamHeight))
                #nC = self.streamCols-c
                #self.targetLocationOrder.append(r*self.streamCols+c)
        self.initialObjOrder = list(self.streamObjs)

        # DEBUG
        #self.targetLocationOrder = [ 0, 1, 2, 3]  # numbers for the location
        self.targetLocationOrder = range(self.streamRows*self.streamCols)
Beispiel #2
0
    def __init__(self, imageFilename, screenRect, fullRect, absRect, zoom=(4,4), imagePos=None, imageSize=None, blend=False, cropRect=None, scale=None):
        pos = imagePos # FIXME, replace imagePos arg above and its mention in other files with "pos"

        BaseTileDisplayObject.__init__(self, screenRect=screenRect, fullRect=fullRect, absRect=absRect, zoom=zoom, pos=pos, size=imageSize, blend=blend, cropRect=cropRect)

        self.hasDrawFunc=True
        self.hasEraseDrawFunc=True
        self.visible = True
        self.texture = Texture( imageFilename, cropRect=cropRect)
        #self.easyTexture = EasyTexture(imageFilename, screenGeomRect=screenRect, blend=False)
        #self.easyTexture.width = renderer.width * 0.8
        #self.easyTexture.height = renderer.height * 0.8
        #self.easyTexture.width = renderer.width
        #self.easyTexture.height = renderer.height
        self.useDrawPixel = False # For comparison debugging
        self.xvel = 0.1
        self.yvel = 0.1
        self.vflipTexture = False

        # Now in base class
        #self.blend=blend
        #self.zoom = zoom

        #self.easyTexture.zoom(zoom[0], zoom[1])
        #self.easyTexture.setOffset(initialOffset[0], initialOffset[1])
        self.autoPan = False

        if pos:
            self.pos = Vec2(pos[0], pos[1])
        else:
            self.pos = Vec2(0.0, 0.0)

        self.srcImageSize = self.texture.getWidth(), self.texture.getHeight()

        if imageSize == None:
            self.imageSize = self.texture.getWidth(), self.texture.getHeight()
        else:
            self.imageSize = imageSize

        self.scale = scale
        if self.scale != None:
            self.imageSize = self.imageSize[0] * self.scale[0], self.imageSize[1] * self.scale[1]

        self.fullRect = fullRect
        self.absRect = absRect
        self.screenRect = screenRect
    def __init__(self, filename, screenRect, fullRect, absRect, zoom=(4,4), pos=None, size=None, blend=False, cropRect=None, fps=None, scale=None, allowFrameSkip=True):
        BaseTileDisplayObject.__init__(self, screenRect=screenRect, fullRect=fullRect, absRect=absRect, zoom=zoom, pos=pos, size=size, blend=blend, cropRect=cropRect)

        if IsTiledMovieChunkImageBased(filename):
            print "Using ImageMovieReader"
            r = ImageMovieReader(quiet = True)
        else:
            print "Using PyFfmpegMovieReader"
            if not PyFfmpegMovieReader:
                print "PyFfmpegMovieReader is not available, make sure pyffmpeg and pyFfmpegMoviereader are installed before playing a movie."
            r = PyFfmpegMovieReader(quiet=True)
            r.setSecondsToPauseBeforeRewind(1.0)
        if fps != None:
            r.setFps(fps)
            r.discoverFps = False

        self.scale = scale
        self.movieReader = r
        #r.setFile("/home/eolson/blah_mpeg1.mpg")
        self.filename = filename
        r.setFile(self.filename)
        r.loadFile()
        print "Setting movie size:", r.getSize()
        self.moviePlayer = GLMoviePlayer(origWidth=r.getSize()[0], origHeight=r.getSize()[1], textureScale=scale, dstRectScale=scale)
        #                                         note textureScale unused since local code replaces moviePlayer's draw function()
        self.moviePlayer.setAllowFrameSkip(allowFrameSkip) # because we want to 
                          # getNextFrame if it's not on current tile's display (for draggable movies)
        self.size = tuple(r.getSize())
        if self.scale != None:
            self.size = self.size[0] * self.scale[0], self.size[1]* self.scale[1]
        if pos: # avoid None
            self.moviePlayer.setPos(pos[0], pos[1])
            self.moviePlayer.setPos(0,0)
            self.setPos(*pos)
            print "TileMovieOBject.__init__, SETTING pos:", self.getPos()
        else:
            print "Pos is:", pos
            #raise
            print "WARNING DEBUG setting movie pos to 0,0"
            self.moviePlayer.setPos(0,0)
            self.setPos(0,0)
        self.moviePlayer.setVideoSource(r)
        print "TileMovieOBject.__init__, pos:", self.getPos()
        r.start()
Beispiel #4
0
    def __init__(self,
                 imageFilename,
                 screenRect,
                 fullRect,
                 absRect,
                 zoom=(4, 4),
                 imagePos=None,
                 imageSize=None,
                 blend=False,
                 cropRect=None,
                 scale=None):
        pos = imagePos  # FIXME, replace imagePos arg above and its mention in other files with "pos"

        BaseTileDisplayObject.__init__(self,
                                       screenRect=screenRect,
                                       fullRect=fullRect,
                                       absRect=absRect,
                                       zoom=zoom,
                                       pos=pos,
                                       size=imageSize,
                                       blend=blend,
                                       cropRect=cropRect)

        self.hasDrawFunc = True
        self.hasEraseDrawFunc = True
        self.visible = True
        self.texture = Texture(imageFilename, cropRect=cropRect)
        #self.easyTexture = EasyTexture(imageFilename, screenGeomRect=screenRect, blend=False)
        #self.easyTexture.width = renderer.width * 0.8
        #self.easyTexture.height = renderer.height * 0.8
        #self.easyTexture.width = renderer.width
        #self.easyTexture.height = renderer.height
        self.useDrawPixel = False  # For comparison debugging
        self.xvel = 0.1
        self.yvel = 0.1
        self.vflipTexture = False

        # Now in base class
        #self.blend=blend
        #self.zoom = zoom

        #self.easyTexture.zoom(zoom[0], zoom[1])
        #self.easyTexture.setOffset(initialOffset[0], initialOffset[1])
        self.autoPan = False

        if pos:
            self.pos = Vec2(pos[0], pos[1])
        else:
            self.pos = Vec2(0.0, 0.0)

        self.srcImageSize = self.texture.getWidth(), self.texture.getHeight()

        if imageSize == None:
            self.imageSize = self.texture.getWidth(), self.texture.getHeight()
        else:
            self.imageSize = imageSize

        self.scale = scale
        if self.scale != None:
            self.imageSize = self.imageSize[0] * self.scale[0], self.imageSize[
                1] * self.scale[1]

        self.fullRect = fullRect
        self.absRect = absRect
        self.screenRect = screenRect
Beispiel #5
0
 def setPos(self, x, y):
     BaseTileDisplayObject.setPos(self, x,y)
     for streamObj in self.streamObjs:
         streamObj.setPos(*(self.pos + streamObj.groupOffset))
    def __init__(self,
                 filename,
                 screenRect,
                 fullRect,
                 absRect,
                 zoom=(4, 4),
                 pos=None,
                 size=None,
                 blend=False,
                 cropRect=None,
                 fps=None,
                 scale=None,
                 allowFrameSkip=True):
        BaseTileDisplayObject.__init__(self,
                                       screenRect=screenRect,
                                       fullRect=fullRect,
                                       absRect=absRect,
                                       zoom=zoom,
                                       pos=pos,
                                       size=size,
                                       blend=blend,
                                       cropRect=cropRect)

        if IsTiledMovieChunkImageBased(filename):
            print "Using ImageMovieReader"
            r = ImageMovieReader(quiet=True)
        else:
            print "Using PyFfmpegMovieReader"
            if not PyFfmpegMovieReader:
                print "PyFfmpegMovieReader is not available, make sure pyffmpeg and pyFfmpegMoviereader are installed before playing a movie."
            r = PyFfmpegMovieReader(quiet=True)
            r.setSecondsToPauseBeforeRewind(1.0)
        if fps != None:
            r.setFps(fps)
            r.discoverFps = False

        self.scale = scale
        self.movieReader = r
        #r.setFile("/home/eolson/blah_mpeg1.mpg")
        self.filename = filename
        r.setFile(self.filename)
        r.loadFile()
        print "Setting movie size:", r.getSize()
        self.moviePlayer = GLMoviePlayer(origWidth=r.getSize()[0],
                                         origHeight=r.getSize()[1],
                                         textureScale=scale,
                                         dstRectScale=scale)
        #                                         note textureScale unused since local code replaces moviePlayer's draw function()
        self.moviePlayer.setAllowFrameSkip(
            allowFrameSkip)  # because we want to
        # getNextFrame if it's not on current tile's display (for draggable movies)
        self.size = tuple(r.getSize())
        if self.scale != None:
            self.size = self.size[0] * self.scale[0], self.size[
                1] * self.scale[1]
        if pos:  # avoid None
            self.moviePlayer.setPos(pos[0], pos[1])
            self.moviePlayer.setPos(0, 0)
            self.setPos(*pos)
            print "TileMovieOBject.__init__, SETTING pos:", self.getPos()
        else:
            print "Pos is:", pos
            #raise
            print "WARNING DEBUG setting movie pos to 0,0"
            self.moviePlayer.setPos(0, 0)
            self.setPos(0, 0)
        self.moviePlayer.setVideoSource(r)
        print "TileMovieOBject.__init__, pos:", self.getPos()
        r.start()