blob: 3cef0f91c1306eb1b2fe69cce5c01a4de81613c2 [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 Jansen68a0ee01997-09-01 15:38:24 +000043
Jack Jansen453ced51995-11-30 17:42:08 +000044 # The following 4 use 'void *' in an uncontrolled way
45 # TBD when I've read the manual...
46 "GetUserDataItem",
47 "SetUserDataItem",
48 "SetTextSampleData",
Jack Jansene0cf87b1997-04-09 15:53:46 +000049 "BeginFullScreen",
Jack Jansen453ced51995-11-30 17:42:08 +000050 # bgen gets the argument in/out wrong..
51 "AddTextSample",
52 "AddTESample",
53 "AddHiliteSample",
54 "HiliteTextSample",
Jack Jansen4a8c54e1997-02-24 13:56:59 +000055 # Missing in CW11 quicktime library
56 "SpriteMediaGetDisplayedSampleNumber",
57 "SpriteMediaGetIndImageDescription",
58 "SpriteMediaCountImages",
59 "SpriteMediaCountSprites",
60 "SpriteMediaHitTestSprites",
61 "SpriteMediaGetProperty",
62 "SpriteMediaSetProperty",
63 "TextMediaSetTextSampleData",
64 "TextMediaHiliteTextSample",
65 "TextMediaFindNextText",
66 "TextMediaAddHiliteSample",
67 "TextMediaAddTESample",
68 "TextMediaAddTextSample",
69 "VideoMediaGetStatistics",
70 "VideoMediaResetStatistics",
71 "EndFullScreen",
72 "NewMovieFromDataRef",
73 "MCPtInController",
74 "MCRemoveAMovie",
75 "MCRemoveAllMovies",
76 "MCInvalidate",
77 "InvalidateMovieRegion",
78 "GetMovieCompositeBufferFlags",
79 "SetMovieCompositeBufferFlags",
80 "SetTrackSoundLocalizationSettings",
81 "GetTrackSoundLocalizationSettings",
82 "GetMovieNaturalBoundsRect",
Jack Jansencb4eaad1995-11-30 15:03:59 +000083 ]
84
85 def makeblacklisttypes(self):
86 return [
Jack Jansen453ced51995-11-30 17:42:08 +000087 # I don't think we want to do these
88 "QTSyncTaskPtr",
89 # We dont do callbacks yet, so no need for these
Jack Jansencb4eaad1995-11-30 15:03:59 +000090 "QTCallBack",
Jack Jansen453ced51995-11-30 17:42:08 +000091 # Skipped for now, due to laziness
Jack Jansencb4eaad1995-11-30 15:03:59 +000092 "TimeRecord",
93 "TimeRecord_ptr",
94 "TrackEditState",
95 "MovieEditState",
Jack Jansencb4eaad1995-11-30 15:03:59 +000096 "MatrixRecord",
97 "MatrixRecord_ptr",
Jack Jansen453ced51995-11-30 17:42:08 +000098 "SampleReferencePtr",
Jack Jansen68a0ee01997-09-01 15:38:24 +000099
Jack Jansen453ced51995-11-30 17:42:08 +0000100 # Routine pointers, not yet.
101 "MoviesErrorUPP",
102 "MoviePreviewCallOutUPP",
103 "MovieDrawingCompleteUPP",
Jack Jansencb4eaad1995-11-30 15:03:59 +0000104 "QTCallBackUPP",
105 "TextMediaUPP",
106 "MovieProgressUPP",
107 "MovieRgnCoverUPP",
108 "MCActionFilterUPP",
109 "MCActionFilterWithRefConUPP",
Jack Jansen453ced51995-11-30 17:42:08 +0000110 "GetMovieUPP",
111 "ModalFilterUPP",
Jack Jansene0cf87b1997-04-09 15:53:46 +0000112 "TrackTransferUPP",
Jack Jansen4a8c54e1997-02-24 13:56:59 +0000113 "QTAtomContainer",
114 "SpriteWorld",
115 "Sprite",
Jack Jansencb4eaad1995-11-30 15:03:59 +0000116 ]
117
118 def makerepairinstructions(self):
119 return [
Jack Jansen453ced51995-11-30 17:42:08 +0000120 ([('FSSpec', '*', 'OutMode')], [('FSSpec_ptr', '*', 'InMode')]),
Jack Jansen9cfea101995-12-09 14:05:56 +0000121
122 # Movie controller creation
123 ([('ComponentInstance', 'NewMovieController', 'ReturnMode')],
124 [('MovieController', '*', 'ReturnMode')]),
125
126 # NewMovieFromFile
127 ([('short', 'resId', 'OutMode'), ('StringPtr', 'resName', 'InMode')],
Jack Jansene0cf87b1997-04-09 15:53:46 +0000128 [('short', 'resId', 'InOutMode'), ('dummyStringPtr', 'resName', 'InMode')]),
Jack Jansen9cfea101995-12-09 14:05:56 +0000129
Jack Jansen4a8c54e1997-02-24 13:56:59 +0000130 # MCDoAction and more
131 ([('void', '*', 'OutMode')], [('mcactionparams', '*', 'InMode')]),
132
Jack Jansencb4eaad1995-11-30 15:03:59 +0000133 ]
134
135if __name__ == "__main__":
136 main()