Commit f16bb3ab authored by Jack Jansen's avatar Jack Jansen

It now actually works. Also, MovieInWindow and VerySimplePlayer

example programs translated to python and added.
parent c9468c87
"""MovieInWindow converted to python
Jack Jansen, CWI, December 1995
"""
import addpack
addpack.addpack(':Tools:bgen:qt')
addpack.addpack(':Tools:bgen:qd')
addpack.addpack(':Tools:bgen:evt')
addpack.addpack(':Tools:bgen:win')
import Qt
import QuickTime
import Qd
import QuickDraw
import Evt
import Events
import Win
import Windows
import macfs
import sys
def main():
# skip the toolbox initializations, already done
# XXXX Should use gestalt here to check for quicktime version
Qt.EnterMovies()
# Get the movie file
fss, ok = macfs.StandardGetFile(QuickTime.MovieFileType)
if not ok:
sys.exit(0)
# Open the window
bounds = (175, 75, 175+160, 75+120)
theWindow = Win.NewCWindow(bounds, fss.as_tuple()[2], 1, 0, -1, 0, 0)
Qd.SetPort(theWindow)
# XXXX Needed? SetGWorld((CGrafPtr)theWindow, nil)
playMovieInWindow(theWindow, fss, theWindow.GetWindowPort().portRect)
def playMovieInWindow(theWindow, theFile, movieBox):
"""Play a movie in a window"""
# XXXX Needed? SetGWorld((CGrafPtr)theWindow, nil);
# Get the movie
theMovie = loadMovie(theFile)
# Set where we want it
theMovie.SetMovieBox(movieBox)
# Start at the beginning
theMovie.GoToBeginningOfMovie()
# Give a little time to preroll
theMovie.MoviesTask(0)
# Start playing
theMovie.StartMovie()
while not theMovie.IsMovieDone() and not Evt.Button():
theMovie.MoviesTask(0)
def loadMovie(theFile):
"""Load a movie given an fsspec. Return the movie object"""
movieResRef = Qt.OpenMovieFile(theFile, 1)
movie, dummy = Qt.NewMovieFromFile(movieResRef, QuickTime.newMovieActive)
return movie
if __name__ == '__main__':
main()
"""VerySimplePlayer converted to python
Jack Jansen, CWI, December 1995
"""
import addpack
addpack.addpack(':Tools:bgen:qt')
addpack.addpack(':Tools:bgen:qd')
addpack.addpack(':Tools:bgen:evt')
addpack.addpack(':Tools:bgen:win')
import Qt
import QuickTime
import Qd
import QuickDraw
import Evt
import Events
import Win
import Windows
import macfs
import sys
# XXXX maxbounds = (40, 40, 1000, 1000)
def main():
print 'hello world' # XXXX
# skip the toolbox initializations, already done
# XXXX Should use gestalt here to check for quicktime version
Qt.EnterMovies()
# Get the movie file
fss, ok = macfs.StandardGetFile(QuickTime.MovieFileType)
if not ok:
sys.exit(0)
# Open the window
bounds = (175, 75, 175+160, 75+120)
theWindow = Win.NewCWindow(bounds, fss.as_tuple()[2], 0, 0, -1, 1, 0)
# XXXX Needed? SetGWorld((CGrafPtr)theWindow, nil)
Qd.SetPort(theWindow)
# Get the movie
theMovie = loadMovie(fss)
# Relocate to (0, 0)
bounds = theMovie.GetMovieBox()
bounds = 0, 0, bounds[2]-bounds[0], bounds[3]-bounds[1]
theMovie.SetMovieBox(bounds)
# Create a controller
theController = theMovie.NewMovieController(bounds, QuickTime.mcTopLeftMovie)
# Get movie size and update window parameters
rv, bounds = theController.MCGetControllerBoundsRect()
theWindow.SizeWindow(bounds[2], bounds[3], 0) # XXXX or [3] [2]?
Qt.AlignWindow(theWindow, 0)
theWindow.ShowWindow()
# XXXX MCDoAction(theController, mcActionSetGrowBoxBounds, &maxBounds)
theController.MCDoAction(QuickTime.mcActionSetKeysEnabled, '1')
# XXXX MCSetActionFilterWithRefCon(theController, movieControllerEventFilter, (long)theWindow)
done = 0
while not done:
gotone, evt = Evt.WaitNextEvent(-1, 0)
(what, message, when, where, modifiers) = evt
## print what, message, when, where, modifiers # XXXX
if theController.MCIsPlayerEvent(evt):
continue
if what == Events.mouseDown:
part, whichWindow = Win.FindWindow(where)
if part == Windows.inGoAway:
done = whichWindow.TrackGoAway(where)
elif part == Windows.inDrag:
Qt.DragAlignedWindow(whichWindow, where, (0, 0, 4000, 4000))
elif what == Events.updateEvt:
whichWindow = Win.WhichWindow(message)
if not whichWindow:
# Probably the console window. Print something, hope it helps.
print 'update'
else:
Qd.SetPort(whichWindow)
whichWindow.BeginUpdate()
Qd.EraseRect(whichWindow.GetWindowPort().portRect)
whichWindow.EndUpdate()
def loadMovie(theFile):
"""Load a movie given an fsspec. Return the movie object"""
movieResRef = Qt.OpenMovieFile(theFile, 1)
movie, dummy = Qt.NewMovieFromFile(movieResRef, QuickTime.newMovieActive)
return movie
if __name__ == '__main__':
main()
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -1160,8 +1160,8 @@ functions.append(f) ...@@ -1160,8 +1160,8 @@ functions.append(f)
f = Function(OSErr, 'NewMovieFromFile', f = Function(OSErr, 'NewMovieFromFile',
(Movie, 'theMovie', OutMode), (Movie, 'theMovie', OutMode),
(short, 'resRefNum', InMode), (short, 'resRefNum', InMode),
(short, 'resId', OutMode), (dummyshortptr, 'resId', InMode),
(StringPtr, 'resName', InMode), (dummyStringPtr, 'resName', InMode),
(short, 'newMovieFlags', InMode), (short, 'newMovieFlags', InMode),
(Boolean, 'dataRefWasChanged', OutMode), (Boolean, 'dataRefWasChanged', OutMode),
) )
...@@ -1350,18 +1350,13 @@ f = Method(ComponentResult, 'GetMovieStatus', ...@@ -1350,18 +1350,13 @@ f = Method(ComponentResult, 'GetMovieStatus',
) )
Movie_methods.append(f) Movie_methods.append(f)
f = Method(ComponentInstance, 'NewMovieController', f = Method(MovieController, 'NewMovieController',
(Movie, 'theMovie', InMode), (Movie, 'theMovie', InMode),
(Rect_ptr, 'movieRect', InMode), (Rect_ptr, 'movieRect', InMode),
(long, 'someFlags', InMode), (long, 'someFlags', InMode),
) )
Movie_methods.append(f) Movie_methods.append(f)
f = Function(void, 'DisposeMovieController',
(ComponentInstance, 'mc', InMode),
)
functions.append(f)
f = Method(OSErr, 'PutMovieOnScrap', f = Method(OSErr, 'PutMovieOnScrap',
(Movie, 'theMovie', InMode), (Movie, 'theMovie', InMode),
(long, 'movieScrapFlags', InMode), (long, 'movieScrapFlags', InMode),
...@@ -1443,222 +1438,229 @@ f = Method(void, 'GetTrackLoadSettings', ...@@ -1443,222 +1438,229 @@ f = Method(void, 'GetTrackLoadSettings',
) )
Track_methods.append(f) Track_methods.append(f)
f = Function(ComponentResult, 'MCSetMovie', f = Method(ComponentResult, 'MCSetMovie',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
(Movie, 'theMovie', InMode), (Movie, 'theMovie', InMode),
(WindowPtr, 'movieWindow', InMode), (WindowPtr, 'movieWindow', InMode),
(Point, 'where', InMode), (Point, 'where', InMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(Movie, 'MCGetIndMovie', f = Method(Movie, 'MCGetIndMovie',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
(short, 'index', InMode), (short, 'index', InMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(ComponentResult, 'MCRemoveMovie', f = Method(ComponentResult, 'MCRemoveMovie',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(ComponentResult, 'MCIsPlayerEvent', f = Method(ComponentResult, 'MCIsPlayerEvent',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
(EventRecord_ptr, 'e', InMode), (EventRecord_ptr, 'e', InMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Method(ComponentResult, 'MCDoAction',
(MovieController, 'mc', InMode),
(short, 'action', InMode),
(mcactionparams, 'params', InMode),
)
MovieController_methods.append(f)
f = Function(ComponentResult, 'MCSetControllerAttached', f = Method(ComponentResult, 'MCSetControllerAttached',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
(Boolean, 'attach', InMode), (Boolean, 'attach', InMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(ComponentResult, 'MCIsControllerAttached', f = Method(ComponentResult, 'MCIsControllerAttached',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(ComponentResult, 'MCSetVisible', f = Method(ComponentResult, 'MCSetVisible',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
(Boolean, 'visible', InMode), (Boolean, 'visible', InMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(ComponentResult, 'MCGetVisible', f = Method(ComponentResult, 'MCGetVisible',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(ComponentResult, 'MCGetControllerBoundsRect', f = Method(ComponentResult, 'MCGetControllerBoundsRect',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
(Rect, 'bounds', OutMode), (Rect, 'bounds', OutMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(ComponentResult, 'MCSetControllerBoundsRect', f = Method(ComponentResult, 'MCSetControllerBoundsRect',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
(Rect_ptr, 'bounds', InMode), (Rect_ptr, 'bounds', InMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(RgnHandle, 'MCGetControllerBoundsRgn', f = Method(RgnHandle, 'MCGetControllerBoundsRgn',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(RgnHandle, 'MCGetWindowRgn', f = Method(RgnHandle, 'MCGetWindowRgn',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
(WindowPtr, 'w', InMode), (WindowPtr, 'w', InMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(ComponentResult, 'MCMovieChanged', f = Method(ComponentResult, 'MCMovieChanged',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
(Movie, 'm', InMode), (Movie, 'm', InMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(ComponentResult, 'MCSetDuration', f = Method(ComponentResult, 'MCSetDuration',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
(TimeValue, 'duration', InMode), (TimeValue, 'duration', InMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(TimeValue, 'MCGetCurrentTime', f = Method(TimeValue, 'MCGetCurrentTime',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
(TimeScale, 'scale', OutMode), (TimeScale, 'scale', OutMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(ComponentResult, 'MCNewAttachedController', f = Method(ComponentResult, 'MCNewAttachedController',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
(Movie, 'theMovie', InMode), (Movie, 'theMovie', InMode),
(WindowPtr, 'w', InMode), (WindowPtr, 'w', InMode),
(Point, 'where', InMode), (Point, 'where', InMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(ComponentResult, 'MCDraw', f = Method(ComponentResult, 'MCDraw',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
(WindowPtr, 'w', InMode), (WindowPtr, 'w', InMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(ComponentResult, 'MCActivate', f = Method(ComponentResult, 'MCActivate',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
(WindowPtr, 'w', InMode), (WindowPtr, 'w', InMode),
(Boolean, 'activate', InMode), (Boolean, 'activate', InMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(ComponentResult, 'MCIdle', f = Method(ComponentResult, 'MCIdle',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(ComponentResult, 'MCKey', f = Method(ComponentResult, 'MCKey',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
(SInt8, 'key', InMode), (SInt8, 'key', InMode),
(long, 'modifiers', InMode), (long, 'modifiers', InMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(ComponentResult, 'MCClick', f = Method(ComponentResult, 'MCClick',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
(WindowPtr, 'w', InMode), (WindowPtr, 'w', InMode),
(Point, 'where', InMode), (Point, 'where', InMode),
(long, 'when', InMode), (long, 'when', InMode),
(long, 'modifiers', InMode), (long, 'modifiers', InMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(ComponentResult, 'MCEnableEditing', f = Method(ComponentResult, 'MCEnableEditing',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
(Boolean, 'enabled', InMode), (Boolean, 'enabled', InMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(long, 'MCIsEditingEnabled', f = Method(long, 'MCIsEditingEnabled',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(Movie, 'MCCopy', f = Method(Movie, 'MCCopy',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(Movie, 'MCCut', f = Method(Movie, 'MCCut',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(ComponentResult, 'MCPaste', f = Method(ComponentResult, 'MCPaste',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
(Movie, 'srcMovie', InMode), (Movie, 'srcMovie', InMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(ComponentResult, 'MCClear', f = Method(ComponentResult, 'MCClear',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(ComponentResult, 'MCUndo', f = Method(ComponentResult, 'MCUndo',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(ComponentResult, 'MCPositionController', f = Method(ComponentResult, 'MCPositionController',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
(Rect_ptr, 'movieRect', InMode), (Rect_ptr, 'movieRect', InMode),
(Rect_ptr, 'controllerRect', InMode), (Rect_ptr, 'controllerRect', InMode),
(long, 'someFlags', InMode), (long, 'someFlags', InMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(ComponentResult, 'MCGetControllerInfo', f = Method(ComponentResult, 'MCGetControllerInfo',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
(long, 'someFlags', OutMode), (long, 'someFlags', OutMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(ComponentResult, 'MCSetClip', f = Method(ComponentResult, 'MCSetClip',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
(RgnHandle, 'theClip', InMode), (RgnHandle, 'theClip', InMode),
(RgnHandle, 'movieClip', InMode), (RgnHandle, 'movieClip', InMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(ComponentResult, 'MCGetClip', f = Method(ComponentResult, 'MCGetClip',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
(RgnHandle, 'theClip', OutMode), (RgnHandle, 'theClip', OutMode),
(RgnHandle, 'movieClip', OutMode), (RgnHandle, 'movieClip', OutMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(ComponentResult, 'MCDrawBadge', f = Method(ComponentResult, 'MCDrawBadge',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
(RgnHandle, 'movieRgn', InMode), (RgnHandle, 'movieRgn', InMode),
(RgnHandle, 'badgeRgn', OutMode), (RgnHandle, 'badgeRgn', OutMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(ComponentResult, 'MCSetUpEditMenu', f = Method(ComponentResult, 'MCSetUpEditMenu',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
(long, 'modifiers', InMode), (long, 'modifiers', InMode),
(MenuHandle, 'mh', InMode), (MenuHandle, 'mh', InMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(ComponentResult, 'MCGetMenuString', f = Method(ComponentResult, 'MCGetMenuString',
(MovieController, 'mc', InMode), (MovieController, 'mc', InMode),
(long, 'modifiers', InMode), (long, 'modifiers', InMode),
(short, 'item', InMode), (short, 'item', InMode),
(Str255, 'aString', InMode), (Str255, 'aString', InMode),
) )
functions.append(f) MovieController_methods.append(f)
f = Function(TimeBase, 'NewTimeBase', f = Function(TimeBase, 'NewTimeBase',
) )
......
...@@ -6,7 +6,7 @@ from scantools import Scanner ...@@ -6,7 +6,7 @@ from scantools import Scanner
LONG = "QuickTime" LONG = "QuickTime"
SHORT = "qt" SHORT = "qt"
OBJECTS = ("Movie", "Track", "Media", "UserData", "TimeBase") OBJECTS = ("Movie", "Track", "Media", "UserData", "TimeBase", "MovieController")
def main(): def main():
input = "Movies.h" input = "Movies.h"
...@@ -38,6 +38,7 @@ class MyScanner(Scanner): ...@@ -38,6 +38,7 @@ class MyScanner(Scanner):
"DisposeTrackMedia", # ditto "DisposeTrackMedia", # ditto
"DisposeUserData", # ditto "DisposeUserData", # ditto
"DisposeTimeBase", # ditto "DisposeTimeBase", # ditto
"DisposeMovieController", # ditto
"GetMovieCreationTime", # type "unsigned long" in C, inparseable "GetMovieCreationTime", # type "unsigned long" in C, inparseable
"GetMovieModificationTime", # Ditto "GetMovieModificationTime", # Ditto
"GetTrackCreationTime", # ditto "GetTrackCreationTime", # ditto
...@@ -49,7 +50,6 @@ class MyScanner(Scanner): ...@@ -49,7 +50,6 @@ class MyScanner(Scanner):
"GetUserDataItem", "GetUserDataItem",
"SetUserDataItem", "SetUserDataItem",
"SetTextSampleData", "SetTextSampleData",
"MCDoAction",
# bgen gets the argument in/out wrong.. # bgen gets the argument in/out wrong..
"AddTextSample", "AddTextSample",
"AddTESample", "AddTESample",
...@@ -95,6 +95,17 @@ class MyScanner(Scanner): ...@@ -95,6 +95,17 @@ class MyScanner(Scanner):
def makerepairinstructions(self): def makerepairinstructions(self):
return [ return [
([('FSSpec', '*', 'OutMode')], [('FSSpec_ptr', '*', 'InMode')]), ([('FSSpec', '*', 'OutMode')], [('FSSpec_ptr', '*', 'InMode')]),
# Movie controller creation
([('ComponentInstance', 'NewMovieController', 'ReturnMode')],
[('MovieController', '*', 'ReturnMode')]),
# NewMovieFromFile
([('short', 'resId', 'OutMode'), ('StringPtr', 'resName', 'InMode')],
[('dummyshortptr', 'resId', 'InMode'), ('dummyStringPtr', 'resName', 'InMode')]),
# MCDoAction
([('void', 'params', 'OutMode')], [('mcactionparams', 'params', 'InMode')]),
] ]
if __name__ == "__main__": if __name__ == "__main__":
......
...@@ -3,6 +3,8 @@ ...@@ -3,6 +3,8 @@
# The function specifications are generated by scanning the mamager's header file, # The function specifications are generated by scanning the mamager's header file,
# using the "scantools" package (customized for this particular manager). # using the "scantools" package (customized for this particular manager).
#error missing SetActionFilter
import string import string
# Declarations that change for each manager # Declarations that change for each manager
...@@ -39,6 +41,8 @@ staticforward PyObject *TrackObj_New(Track); ...@@ -39,6 +41,8 @@ staticforward PyObject *TrackObj_New(Track);
staticforward int TrackObj_Convert(PyObject *, Track *); staticforward int TrackObj_Convert(PyObject *, Track *);
staticforward PyObject *MovieObj_New(Movie); staticforward PyObject *MovieObj_New(Movie);
staticforward int MovieObj_Convert(PyObject *, Movie *); staticforward int MovieObj_Convert(PyObject *, Movie *);
staticforward PyObject *MovieCtlObj_New(MovieController);
staticforward int MovieCtlObj_Convert(PyObject *, MovieController *);
""" """
...@@ -49,6 +53,7 @@ Track = OpaqueByValueType('Track', 'TrackObj') ...@@ -49,6 +53,7 @@ Track = OpaqueByValueType('Track', 'TrackObj')
Media = OpaqueByValueType('Media', 'MediaObj') Media = OpaqueByValueType('Media', 'MediaObj')
UserData = OpaqueByValueType('UserData', 'UserDataObj') UserData = OpaqueByValueType('UserData', 'UserDataObj')
TimeBase = OpaqueByValueType('TimeBase', 'TimeBaseObj') TimeBase = OpaqueByValueType('TimeBase', 'TimeBaseObj')
MovieController = OpaqueByValueType('MovieController', 'MovieCtlObj')
# Other opaque objects # Other opaque objects
Component = OpaqueByValueType('Component', 'CmpObj') Component = OpaqueByValueType('Component', 'CmpObj')
...@@ -58,10 +63,6 @@ DataHandlerComponent = OpaqueByValueType('DataHandlerComponent', 'CmpObj') ...@@ -58,10 +63,6 @@ DataHandlerComponent = OpaqueByValueType('DataHandlerComponent', 'CmpObj')
ComponentInstance = OpaqueByValueType('ComponentInstance', 'CmpInstObj') ComponentInstance = OpaqueByValueType('ComponentInstance', 'CmpInstObj')
MediaHandler = OpaqueByValueType('MediaHandler', 'CmpInstObj') MediaHandler = OpaqueByValueType('MediaHandler', 'CmpInstObj')
DataHandler = OpaqueByValueType('DataHandler', 'CmpInstObj') DataHandler = OpaqueByValueType('DataHandler', 'CmpInstObj')
# XXXX The next one should really be a full-fledged object here, but the
# type is sometimes specified as MovieController and some times as
# ComponentInstance.
MovieController = OpaqueByValueType('MovieController', 'CmpInstObj')
RgnHandle = OpaqueByValueType("RgnHandle", "ResObj") RgnHandle = OpaqueByValueType("RgnHandle", "ResObj")
PicHandle = OpaqueByValueType("PicHandle", "ResObj") PicHandle = OpaqueByValueType("PicHandle", "ResObj")
...@@ -91,8 +92,12 @@ mediaHandlerFlagsEnum = Type("mediaHandlerFlagsEnum", "l") ...@@ -91,8 +92,12 @@ mediaHandlerFlagsEnum = Type("mediaHandlerFlagsEnum", "l")
ComponentResult = Type("ComponentResult", "l") ComponentResult = Type("ComponentResult", "l")
HandlerError = Type("HandlerError", "l") HandlerError = Type("HandlerError", "l")
Ptr = InputOnlyType("Ptr", "s") Ptr = InputOnlyType("Ptr", "s")
StringPtr = InputOnlyType("StringPtr", "s") StringPtr = Type("StringPtr", "s")
mcactionparams = InputOnlyType("void *", "s")
# Could-not-be-bothered-types (NewMovieFromFile)
dummyshortptr = FakeType('(short *)0')
dummyStringPtr = FakeType('(StringPtr)0')
class MovieObjectDefinition(GlobalObjectDefinition): class MovieObjectDefinition(GlobalObjectDefinition):
def outputCheckNewArg(self): def outputCheckNewArg(self):
...@@ -139,6 +144,15 @@ class TimeBaseObjectDefinition(GlobalObjectDefinition): ...@@ -139,6 +144,15 @@ class TimeBaseObjectDefinition(GlobalObjectDefinition):
def outputFreeIt(self, itselfname): def outputFreeIt(self, itselfname):
Output("DisposeTimeBase(%s);", itselfname) Output("DisposeTimeBase(%s);", itselfname)
class MovieCtlObjectDefinition(GlobalObjectDefinition):
def outputCheckNewArg(self):
Output("""if (itself == NULL) {
PyErr_SetString(Qt_Error,"Cannot create null MovieController");
return NULL;
}""")
def outputFreeIt(self, itselfname):
Output("DisposeMovieController(%s);", itselfname)
# From here on it's basically all boiler plate... # From here on it's basically all boiler plate...
# Create the generator groups and link them # Create the generator groups and link them
...@@ -148,7 +162,9 @@ Track_object = TrackObjectDefinition('Track', 'TrackObj', 'Track') ...@@ -148,7 +162,9 @@ Track_object = TrackObjectDefinition('Track', 'TrackObj', 'Track')
Media_object = MediaObjectDefinition('Media', 'MediaObj', 'Media') Media_object = MediaObjectDefinition('Media', 'MediaObj', 'Media')
UserData_object = UserDataObjectDefinition('UserData', 'UserDataObj', 'UserData') UserData_object = UserDataObjectDefinition('UserData', 'UserDataObj', 'UserData')
TimeBase_object = TimeBaseObjectDefinition('TimeBase', 'TimeBaseObj', 'TimeBase') TimeBase_object = TimeBaseObjectDefinition('TimeBase', 'TimeBaseObj', 'TimeBase')
MovieController_object = MovieCtlObjectDefinition('MovieController', 'MovieCtlObj', 'MovieController')
module.addobject(MovieController_object)
module.addobject(TimeBase_object) module.addobject(TimeBase_object)
module.addobject(UserData_object) module.addobject(UserData_object)
module.addobject(Media_object) module.addobject(Media_object)
...@@ -161,6 +177,7 @@ Method = OSErrMethodGenerator ...@@ -161,6 +177,7 @@ Method = OSErrMethodGenerator
# Create and populate the lists # Create and populate the lists
functions = [] functions = []
MovieController_methods = []
TimeBase_methods = [] TimeBase_methods = []
UserData_methods = [] UserData_methods = []
Media_methods = [] Media_methods = []
...@@ -168,9 +185,33 @@ Track_methods = [] ...@@ -168,9 +185,33 @@ Track_methods = []
Movie_methods = [] Movie_methods = []
execfile(INPUTFILE) execfile(INPUTFILE)
#
# Some functions from ImageCompression.h that we need:
ICMAlignmentProcRecordPtr = FakeType('(ICMAlignmentProcRecordPtr)0')
dummyRect = FakeType('(Rect *)0')
f = Function(void, 'AlignWindow',
(WindowPtr, 'wp', InMode),
(Boolean, 'front', InMode),
(dummyRect, 'alignmentRect', InMode),
(ICMAlignmentProcRecordPtr, 'alignmentProc', InMode),
)
functions.append(f)
f = Function(void, 'DragAlignedWindow',
(WindowPtr, 'wp', InMode),
(Point, 'startPt', InMode),
(Rect_ptr, 'boundsRect', InMode),
(dummyRect, 'alignmentRect', InMode),
(ICMAlignmentProcRecordPtr, 'alignmentProc', InMode),
)
functions.append(f)
# add the populated lists to the generator groups # add the populated lists to the generator groups
# (in a different wordl the scan program would generate this) # (in a different wordl the scan program would generate this)
for f in functions: module.add(f) for f in functions: module.add(f)
for f in MovieController_methods: MovieController_object.add(f)
for f in TimeBase_methods: TimeBase_object.add(f) for f in TimeBase_methods: TimeBase_object.add(f)
for f in UserData_methods: UserData_object.add(f) for f in UserData_methods: UserData_object.add(f)
for f in Media_methods: Media_object.add(f) for f in Media_methods: Media_object.add(f)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment