blob: 614d5807ecd0a505bd33235694855e0d27c0baa6 [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 Jansene0cf87b1997-04-09 15:53:46 +000043# "GetMovieCreationTime", # type "unsigned long" in C, inparseable
44# "GetMovieModificationTime", # Ditto
45# "GetTrackCreationTime", # ditto
46# "GetTrackModificationTime", # Ditto
47# "GetMediaCreationTime", # ditto
48# "GetMediaModificationTime", # Ditto
Jack Jansen453ced51995-11-30 17:42:08 +000049 # The following 4 use 'void *' in an uncontrolled way
50 # TBD when I've read the manual...
51 "GetUserDataItem",
52 "SetUserDataItem",
53 "SetTextSampleData",
Jack Jansene0cf87b1997-04-09 15:53:46 +000054 "BeginFullScreen",
Jack Jansen453ced51995-11-30 17:42:08 +000055 # bgen gets the argument in/out wrong..
56 "AddTextSample",
57 "AddTESample",
58 "AddHiliteSample",
59 "HiliteTextSample",
Jack Jansen4a8c54e1997-02-24 13:56:59 +000060 # Missing in CW11 quicktime library
61 "SpriteMediaGetDisplayedSampleNumber",
62 "SpriteMediaGetIndImageDescription",
63 "SpriteMediaCountImages",
64 "SpriteMediaCountSprites",
65 "SpriteMediaHitTestSprites",
66 "SpriteMediaGetProperty",
67 "SpriteMediaSetProperty",
68 "TextMediaSetTextSampleData",
69 "TextMediaHiliteTextSample",
70 "TextMediaFindNextText",
71 "TextMediaAddHiliteSample",
72 "TextMediaAddTESample",
73 "TextMediaAddTextSample",
74 "VideoMediaGetStatistics",
75 "VideoMediaResetStatistics",
76 "EndFullScreen",
77 "NewMovieFromDataRef",
78 "MCPtInController",
79 "MCRemoveAMovie",
80 "MCRemoveAllMovies",
81 "MCInvalidate",
82 "InvalidateMovieRegion",
83 "GetMovieCompositeBufferFlags",
84 "SetMovieCompositeBufferFlags",
85 "SetTrackSoundLocalizationSettings",
86 "GetTrackSoundLocalizationSettings",
87 "GetMovieNaturalBoundsRect",
Jack Jansencb4eaad1995-11-30 15:03:59 +000088 ]
89
90 def makeblacklisttypes(self):
91 return [
Jack Jansen453ced51995-11-30 17:42:08 +000092 # I don't think we want to do these
93 "QTSyncTaskPtr",
94 # We dont do callbacks yet, so no need for these
Jack Jansencb4eaad1995-11-30 15:03:59 +000095 "QTCallBack",
Jack Jansen453ced51995-11-30 17:42:08 +000096 # Skipped for now, due to laziness
Jack Jansencb4eaad1995-11-30 15:03:59 +000097 "TimeRecord",
98 "TimeRecord_ptr",
99 "TrackEditState",
100 "MovieEditState",
Jack Jansencb4eaad1995-11-30 15:03:59 +0000101 "MatrixRecord",
102 "MatrixRecord_ptr",
Jack Jansen453ced51995-11-30 17:42:08 +0000103 "SampleReferencePtr",
104# "SampleDescription",
105# "SoundDescription",
106# "TextDescription",
107# "MusicDescription",
108 # I dont know yet how to do these.
Jack Jansene0cf87b1997-04-09 15:53:46 +0000109# "CGrafPtr",
110# "GDHandle",
Jack Jansen453ced51995-11-30 17:42:08 +0000111 # Routine pointers, not yet.
112 "MoviesErrorUPP",
113 "MoviePreviewCallOutUPP",
114 "MovieDrawingCompleteUPP",
Jack Jansencb4eaad1995-11-30 15:03:59 +0000115 "QTCallBackUPP",
116 "TextMediaUPP",
117 "MovieProgressUPP",
118 "MovieRgnCoverUPP",
119 "MCActionFilterUPP",
120 "MCActionFilterWithRefConUPP",
Jack Jansen453ced51995-11-30 17:42:08 +0000121 "GetMovieUPP",
122 "ModalFilterUPP",
Jack Jansene0cf87b1997-04-09 15:53:46 +0000123 "TrackTransferUPP",
Jack Jansen4a8c54e1997-02-24 13:56:59 +0000124 "QTAtomContainer",
125 "SpriteWorld",
126 "Sprite",
Jack Jansencb4eaad1995-11-30 15:03:59 +0000127 ]
128
129 def makerepairinstructions(self):
130 return [
Jack Jansen453ced51995-11-30 17:42:08 +0000131 ([('FSSpec', '*', 'OutMode')], [('FSSpec_ptr', '*', 'InMode')]),
Jack Jansen9cfea101995-12-09 14:05:56 +0000132
133 # Movie controller creation
134 ([('ComponentInstance', 'NewMovieController', 'ReturnMode')],
135 [('MovieController', '*', 'ReturnMode')]),
136
137 # NewMovieFromFile
138 ([('short', 'resId', 'OutMode'), ('StringPtr', 'resName', 'InMode')],
Jack Jansene0cf87b1997-04-09 15:53:46 +0000139 [('short', 'resId', 'InOutMode'), ('dummyStringPtr', 'resName', 'InMode')]),
Jack Jansen9cfea101995-12-09 14:05:56 +0000140
Jack Jansen4a8c54e1997-02-24 13:56:59 +0000141 # MCDoAction and more
142 ([('void', '*', 'OutMode')], [('mcactionparams', '*', 'InMode')]),
143
Jack Jansencb4eaad1995-11-30 15:03:59 +0000144 ]
145
146if __name__ == "__main__":
147 main()