blob: ebef23bbb2b75a50c8dcdeb0cee8f32fe2120baa [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
Jack Jansen21f96871998-02-20 16:02:09 +000035 def writeinitialdefs(self):
36 self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n")
37
Jack Jansencb4eaad1995-11-30 15:03:59 +000038 def makeblacklistnames(self):
39 return [
40 "DisposeMovie", # Done on python-object disposal
Jack Jansen453ced51995-11-30 17:42:08 +000041 "DisposeMovieTrack", # ditto
42 "DisposeTrackMedia", # ditto
43 "DisposeUserData", # ditto
44 "DisposeTimeBase", # ditto
Jack Jansen9cfea101995-12-09 14:05:56 +000045 "DisposeMovieController", # ditto
Jack Jansen68a0ee01997-09-01 15:38:24 +000046
Jack Jansen453ced51995-11-30 17:42:08 +000047 # The following 4 use 'void *' in an uncontrolled way
48 # TBD when I've read the manual...
49 "GetUserDataItem",
50 "SetUserDataItem",
51 "SetTextSampleData",
Jack Jansene0cf87b1997-04-09 15:53:46 +000052 "BeginFullScreen",
Jack Jansen453ced51995-11-30 17:42:08 +000053 # bgen gets the argument in/out wrong..
54 "AddTextSample",
55 "AddTESample",
56 "AddHiliteSample",
57 "HiliteTextSample",
Jack Jansen4a8c54e1997-02-24 13:56:59 +000058 # Missing in CW11 quicktime library
59 "SpriteMediaGetDisplayedSampleNumber",
60 "SpriteMediaGetIndImageDescription",
61 "SpriteMediaCountImages",
62 "SpriteMediaCountSprites",
63 "SpriteMediaHitTestSprites",
64 "SpriteMediaGetProperty",
65 "SpriteMediaSetProperty",
66 "TextMediaSetTextSampleData",
67 "TextMediaHiliteTextSample",
68 "TextMediaFindNextText",
69 "TextMediaAddHiliteSample",
70 "TextMediaAddTESample",
71 "TextMediaAddTextSample",
72 "VideoMediaGetStatistics",
73 "VideoMediaResetStatistics",
74 "EndFullScreen",
75 "NewMovieFromDataRef",
76 "MCPtInController",
77 "MCRemoveAMovie",
78 "MCRemoveAllMovies",
79 "MCInvalidate",
80 "InvalidateMovieRegion",
81 "GetMovieCompositeBufferFlags",
82 "SetMovieCompositeBufferFlags",
83 "SetTrackSoundLocalizationSettings",
84 "GetTrackSoundLocalizationSettings",
85 "GetMovieNaturalBoundsRect",
Jack Jansencb4eaad1995-11-30 15:03:59 +000086 ]
87
88 def makeblacklisttypes(self):
89 return [
Jack Jansen453ced51995-11-30 17:42:08 +000090 # I don't think we want to do these
91 "QTSyncTaskPtr",
92 # We dont do callbacks yet, so no need for these
Jack Jansencb4eaad1995-11-30 15:03:59 +000093 "QTCallBack",
Jack Jansen453ced51995-11-30 17:42:08 +000094 # Skipped for now, due to laziness
Jack Jansencb4eaad1995-11-30 15:03:59 +000095 "TimeRecord",
96 "TimeRecord_ptr",
97 "TrackEditState",
98 "MovieEditState",
Jack Jansencb4eaad1995-11-30 15:03:59 +000099 "MatrixRecord",
100 "MatrixRecord_ptr",
Jack Jansen453ced51995-11-30 17:42:08 +0000101 "SampleReferencePtr",
Jack Jansen68a0ee01997-09-01 15:38:24 +0000102
Jack Jansen453ced51995-11-30 17:42:08 +0000103 # Routine pointers, not yet.
104 "MoviesErrorUPP",
105 "MoviePreviewCallOutUPP",
106 "MovieDrawingCompleteUPP",
Jack Jansencb4eaad1995-11-30 15:03:59 +0000107 "QTCallBackUPP",
108 "TextMediaUPP",
109 "MovieProgressUPP",
110 "MovieRgnCoverUPP",
111 "MCActionFilterUPP",
112 "MCActionFilterWithRefConUPP",
Jack Jansen453ced51995-11-30 17:42:08 +0000113 "GetMovieUPP",
114 "ModalFilterUPP",
Jack Jansene0cf87b1997-04-09 15:53:46 +0000115 "TrackTransferUPP",
Jack Jansen4a8c54e1997-02-24 13:56:59 +0000116 "QTAtomContainer",
117 "SpriteWorld",
118 "Sprite",
Jack Jansencb4eaad1995-11-30 15:03:59 +0000119 ]
120
121 def makerepairinstructions(self):
122 return [
Jack Jansen453ced51995-11-30 17:42:08 +0000123 ([('FSSpec', '*', 'OutMode')], [('FSSpec_ptr', '*', 'InMode')]),
Jack Jansen9cfea101995-12-09 14:05:56 +0000124
125 # Movie controller creation
126 ([('ComponentInstance', 'NewMovieController', 'ReturnMode')],
127 [('MovieController', '*', 'ReturnMode')]),
128
129 # NewMovieFromFile
130 ([('short', 'resId', 'OutMode'), ('StringPtr', 'resName', 'InMode')],
Jack Jansene0cf87b1997-04-09 15:53:46 +0000131 [('short', 'resId', 'InOutMode'), ('dummyStringPtr', 'resName', 'InMode')]),
Jack Jansen9cfea101995-12-09 14:05:56 +0000132
Jack Jansen4a8c54e1997-02-24 13:56:59 +0000133 # MCDoAction and more
134 ([('void', '*', 'OutMode')], [('mcactionparams', '*', 'InMode')]),
135
Jack Jansencb4eaad1995-11-30 15:03:59 +0000136 ]
137
138if __name__ == "__main__":
139 main()