blob: 6b26bcb644da924773508dc8a9431a0ab001449c [file] [log] [blame]
Jack Jansencb4eaad1995-11-30 15:03:59 +00001# Scan an Apple header file, generating a Python file of generator calls.
2
3import addpack
4addpack.addpack(':tools:bgen:bgen')
5from scantools import Scanner
Jack Jansen46d9e791996-04-12 16:29:23 +00006from bgenlocations import TOOLBOXDIR
Jack Jansencb4eaad1995-11-30 15:03:59 +00007
8LONG = "QuickTime"
9SHORT = "qt"
Jack Jansen9cfea101995-12-09 14:05:56 +000010OBJECTS = ("Movie", "Track", "Media", "UserData", "TimeBase", "MovieController")
Jack Jansencb4eaad1995-11-30 15:03:59 +000011
12def main():
13 input = "Movies.h"
14 output = SHORT + "gen.py"
Jack Jansen46d9e791996-04-12 16:29:23 +000015 defsoutput = TOOLBOXDIR + LONG + ".py"
Jack Jansencb4eaad1995-11-30 15:03:59 +000016 scanner = MyScanner(input, output, defsoutput)
17 scanner.scan()
18 scanner.close()
19 print "=== Done scanning and generating, now importing the generated code... ==="
20 exec "import " + SHORT + "support"
21 print "=== Done. It's up to you to compile it now! ==="
22
23class MyScanner(Scanner):
24
25 def destination(self, type, name, arglist):
26 classname = "Function"
27 listname = "functions"
28 if arglist:
29 t, n, m = arglist[0]
Jack Jansen453ced51995-11-30 17:42:08 +000030 if t in OBJECTS and m == "InMode":
Jack Jansencb4eaad1995-11-30 15:03:59 +000031 classname = "Method"
Jack Jansen453ced51995-11-30 17:42:08 +000032 listname = t + "_methods"
Jack Jansencb4eaad1995-11-30 15:03:59 +000033 return classname, listname
34
35 def makeblacklistnames(self):
36 return [
37 "DisposeMovie", # Done on python-object disposal
Jack Jansen453ced51995-11-30 17:42:08 +000038 "DisposeMovieTrack", # ditto
39 "DisposeTrackMedia", # ditto
40 "DisposeUserData", # ditto
41 "DisposeTimeBase", # ditto
Jack Jansen9cfea101995-12-09 14:05:56 +000042 "DisposeMovieController", # ditto
Jack Jansencb4eaad1995-11-30 15:03:59 +000043 "GetMovieCreationTime", # type "unsigned long" in C, inparseable
44 "GetMovieModificationTime", # Ditto
Jack Jansen453ced51995-11-30 17:42:08 +000045 "GetTrackCreationTime", # ditto
46 "GetTrackModificationTime", # Ditto
47 "GetMediaCreationTime", # ditto
48 "GetMediaModificationTime", # Ditto
49 # The following 4 use 'void *' in an uncontrolled way
50 # TBD when I've read the manual...
51 "GetUserDataItem",
52 "SetUserDataItem",
53 "SetTextSampleData",
Jack Jansen453ced51995-11-30 17:42:08 +000054 # bgen gets the argument in/out wrong..
55 "AddTextSample",
56 "AddTESample",
57 "AddHiliteSample",
58 "HiliteTextSample",
Jack Jansen4a8c54e1997-02-24 13:56:59 +000059 # Missing in CW11 quicktime library
60 "SpriteMediaGetDisplayedSampleNumber",
61 "SpriteMediaGetIndImageDescription",
62 "SpriteMediaCountImages",
63 "SpriteMediaCountSprites",
64 "SpriteMediaHitTestSprites",
65 "SpriteMediaGetProperty",
66 "SpriteMediaSetProperty",
67 "TextMediaSetTextSampleData",
68 "TextMediaHiliteTextSample",
69 "TextMediaFindNextText",
70 "TextMediaAddHiliteSample",
71 "TextMediaAddTESample",
72 "TextMediaAddTextSample",
73 "VideoMediaGetStatistics",
74 "VideoMediaResetStatistics",
75 "EndFullScreen",
76 "NewMovieFromDataRef",
77 "MCPtInController",
78 "MCRemoveAMovie",
79 "MCRemoveAllMovies",
80 "MCInvalidate",
81 "InvalidateMovieRegion",
82 "GetMovieCompositeBufferFlags",
83 "SetMovieCompositeBufferFlags",
84 "SetTrackSoundLocalizationSettings",
85 "GetTrackSoundLocalizationSettings",
86 "GetMovieNaturalBoundsRect",
Jack Jansencb4eaad1995-11-30 15:03:59 +000087 ]
88
89 def makeblacklisttypes(self):
90 return [
Jack Jansen453ced51995-11-30 17:42:08 +000091 # I don't think we want to do these
92 "QTSyncTaskPtr",
93 # We dont do callbacks yet, so no need for these
Jack Jansencb4eaad1995-11-30 15:03:59 +000094 "QTCallBack",
Jack Jansen453ced51995-11-30 17:42:08 +000095 # Skipped for now, due to laziness
Jack Jansencb4eaad1995-11-30 15:03:59 +000096 "TimeRecord",
97 "TimeRecord_ptr",
98 "TrackEditState",
99 "MovieEditState",
Jack Jansencb4eaad1995-11-30 15:03:59 +0000100 "MatrixRecord",
101 "MatrixRecord_ptr",
Jack Jansen453ced51995-11-30 17:42:08 +0000102 "SampleReferencePtr",
103# "SampleDescription",
104# "SoundDescription",
105# "TextDescription",
106# "MusicDescription",
107 # I dont know yet how to do these.
108 "CGrafPtr",
109 "GDHandle",
110 # Routine pointers, not yet.
111 "MoviesErrorUPP",
112 "MoviePreviewCallOutUPP",
113 "MovieDrawingCompleteUPP",
Jack Jansencb4eaad1995-11-30 15:03:59 +0000114 "QTCallBackUPP",
115 "TextMediaUPP",
116 "MovieProgressUPP",
117 "MovieRgnCoverUPP",
118 "MCActionFilterUPP",
119 "MCActionFilterWithRefConUPP",
Jack Jansen453ced51995-11-30 17:42:08 +0000120 "GetMovieUPP",
121 "ModalFilterUPP",
Jack Jansen4a8c54e1997-02-24 13:56:59 +0000122 "QTAtomContainer",
123 "SpriteWorld",
124 "Sprite",
Jack Jansencb4eaad1995-11-30 15:03:59 +0000125 ]
126
127 def makerepairinstructions(self):
128 return [
Jack Jansen453ced51995-11-30 17:42:08 +0000129 ([('FSSpec', '*', 'OutMode')], [('FSSpec_ptr', '*', 'InMode')]),
Jack Jansen9cfea101995-12-09 14:05:56 +0000130
131 # Movie controller creation
132 ([('ComponentInstance', 'NewMovieController', 'ReturnMode')],
133 [('MovieController', '*', 'ReturnMode')]),
134
135 # NewMovieFromFile
136 ([('short', 'resId', 'OutMode'), ('StringPtr', 'resName', 'InMode')],
137 [('dummyshortptr', 'resId', 'InMode'), ('dummyStringPtr', 'resName', 'InMode')]),
138
Jack Jansen4a8c54e1997-02-24 13:56:59 +0000139 # MCDoAction and more
140 ([('void', '*', 'OutMode')], [('mcactionparams', '*', 'InMode')]),
141
Jack Jansencb4eaad1995-11-30 15:03:59 +0000142 ]
143
144if __name__ == "__main__":
145 main()