Package VisionEgg :: Module qtmovie
[frames] | no frames]

Source Code for Module VisionEgg.qtmovie

 1  """high level QuickTime Movie wrapper""" 
 2  import qtlowlevel 
 3  import ctypes 
 4   
 5  qtlowlevel.InitializeQTML(0) 
 6  qtlowlevel.EnterMovies() 
 7   
8 -def new_movie_from_filename(filename, MAX_PATH=255):
9 """create a Movie from filename""" 10 movieProps = (qtlowlevel.QTNewMoviePropertyElement * 5)() 11 filename = unicode(filename) 12 13 movieFilePathRef = qtlowlevel.CFStringRef() 14 movieFilePathRef.value = qtlowlevel.CFStringCreateWithCharacters(qtlowlevel.kCFAllocatorDefault, 15 filename, 16 len(filename)) 17 18 moviePropCount = 0 19 20 movieProps[moviePropCount].propClass = qtlowlevel.kQTPropertyClass_DataLocation 21 movieProps[moviePropCount].propID = qtlowlevel.kQTDataLocationPropertyID_CFStringWindowsPath 22 movieProps[moviePropCount].propValueSize = ctypes.sizeof(ctypes.c_void_p) 23 movieProps[moviePropCount].propValueAddress = ctypes.cast(ctypes.byref(movieFilePathRef),ctypes.c_void_p) 24 movieProps[moviePropCount].propStatus = 0 25 26 moviePropCount += 1 27 28 boolTrue = ctypes.c_ubyte(1) 29 movieProps[moviePropCount].propClass = qtlowlevel.kQTPropertyClass_MovieInstantiation 30 movieProps[moviePropCount].propID = qtlowlevel.kQTMovieInstantiationPropertyID_DontAskUnresolvedDataRefs 31 movieProps[moviePropCount].propValueSize = ctypes.sizeof(boolTrue) 32 movieProps[moviePropCount].propValueAddress = ctypes.cast(ctypes.pointer(boolTrue),ctypes.c_void_p) 33 movieProps[moviePropCount].propStatus = 0 34 35 moviePropCount += 1 36 37 movieProps[moviePropCount].propClass = qtlowlevel.kQTPropertyClass_NewMovieProperty 38 movieProps[moviePropCount].propID = qtlowlevel.kQTNewMoviePropertyID_Active 39 movieProps[moviePropCount].propValueSize = ctypes.sizeof(boolTrue) 40 movieProps[moviePropCount].propValueAddress = ctypes.cast(ctypes.pointer(boolTrue),ctypes.c_void_p) 41 movieProps[moviePropCount].propStatus = 0 42 43 moviePropCount += 1 44 45 movieProps[moviePropCount].propClass = qtlowlevel.kQTPropertyClass_NewMovieProperty 46 movieProps[moviePropCount].propID = qtlowlevel.kQTNewMoviePropertyID_DontInteractWithUser 47 movieProps[moviePropCount].propValueSize = ctypes.sizeof(boolTrue) 48 movieProps[moviePropCount].propValueAddress = ctypes.cast(ctypes.pointer(boolTrue),ctypes.c_void_p) 49 movieProps[moviePropCount].propStatus = 0 50 51 moviePropCount += 1 52 53 theMovie = qtlowlevel.Movie() 54 qtlowlevel.NewMovieFromProperties( moviePropCount, movieProps, 0, None, ctypes.byref(theMovie)) 55 return Movie(theMovie)
56
57 -class Rect:
58 - def __init__(self,top=0,left=0,bottom=0,right=0):
59 self.top = top 60 self.left = left 61 self.bottom = bottom 62 self.right = right
63
64 -class Movie:
65 """An encapsulated QuickTime Movie"""
66 - def __init__(self,theMovie):
67 self.theMovie = theMovie
68 - def GetMovieBox(self):
69 movieBounds = qtlowlevel.Rect() 70 qtlowlevel.GetMovieBox(self.theMovie, ctypes.byref(movieBounds)) 71 return Rect(top=movieBounds.top, 72 left=movieBounds.left, 73 bottom=movieBounds.bottom, 74 right=movieBounds.right)
75
76 - def SetMovieBox(self,bounds):
77 if not isinstance(bounds,Rect): 78 raise ValueError('bounds argument must be instance of VisionEgg.qtmovie.Rect') 79 b = qtlowlevel.Rect() 80 (b.top, b.left, b.bottom, b.right) = (bounds.top, bounds.left, 81 bounds.bottom, bounds.right) 82 qtlowlevel.SetMovieBox(self.theMovie, ctypes.byref(b))
83 - def StartMovie(self):
84 qtlowlevel.StartMovie(self.theMovie)
85
86 - def MoviesTask(self,value):
87 qtlowlevel.MoviesTask(self.theMovie, value)
88
89 - def IsMovieDone(self):
90 return qtlowlevel.IsMovieDone(self.theMovie)
91
92 - def GoToBeginningOfMovie(self):
93 qtlowlevel.GoToBeginningOfMovie(self.theMovie)
94