1 # Scan an Apple header file, generating a Python file of generator calls.
5 BGENDIR
=os
.path
.join(sys
.prefix
, ':Tools:bgen:bgen')
6 sys
.path
.append(BGENDIR
)
7 from scantools
import Scanner
8 from bgenlocations
import TOOLBOXDIR
12 OBJECTS
= ("Movie", "Track", "Media", "UserData", "TimeBase", "MovieController")
16 output
= SHORT
+ "gen.py"
17 defsoutput
= TOOLBOXDIR
+ LONG
+ ".py"
18 scanner
= MyScanner(input, output
, defsoutput
)
21 print "=== Done scanning and generating, now importing the generated code... ==="
22 exec "import " + SHORT
+ "support"
23 print "=== Done. It's up to you to compile it now! ==="
25 class MyScanner(Scanner
):
27 def destination(self
, type, name
, arglist
):
28 classname
= "Function"
29 listname
= "functions"
32 if t
in OBJECTS
and m
== "InMode":
34 listname
= t
+ "_methods"
35 return classname
, listname
37 def writeinitialdefs(self
):
38 self
.defsfile
.write("def FOUR_CHAR_CODE(x): return x\n")
40 def makeblacklistnames(self
):
42 "DisposeMovie", # Done on python-object disposal
43 "DisposeMovieTrack", # ditto
44 "DisposeTrackMedia", # ditto
45 "DisposeUserData", # ditto
46 # "DisposeTimeBase", # ditto
47 "DisposeMovieController", # ditto
49 # The following 4 use 'void *' in an uncontrolled way
50 # TBD when I've read the manual...
55 # bgen gets the argument in/out wrong..
60 # 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",
77 # "NewMovieFromDataRef",
80 # "MCRemoveAllMovies",
82 # "InvalidateMovieRegion",
83 # "GetMovieCompositeBufferFlags",
84 # "SetMovieCompositeBufferFlags",
85 # "SetTrackSoundLocalizationSettings",
86 # "GetTrackSoundLocalizationSettings",
87 # "GetMovieNaturalBoundsRect",
89 "MakeTrackTimeTable", # Uses long * return?
90 "MakeMediaTimeTable", # ditto
91 "VideoMediaGetStallCount", # Undefined in CW Pro 3 library
94 def makeblacklisttypes(self
):
96 # I don't think we want to do these
98 # We dont do callbacks yet, so no need for these
100 # Skipped for now, due to laziness
105 "SampleReferencePtr",
108 # Routine pointers, not yet.
110 "MoviePreviewCallOutUPP",
111 "MovieDrawingCompleteUPP",
117 "MCActionFilterWithRefConUPP",
126 def makerepairinstructions(self
):
128 ([('FSSpec', '*', 'OutMode')], [('FSSpec_ptr', '*', 'InMode')]),
130 # Movie controller creation
131 ([('ComponentInstance', 'NewMovieController', 'ReturnMode')],
132 [('MovieController', '*', 'ReturnMode')]),
135 ([('short', 'resId', 'OutMode'), ('StringPtr', 'resName', 'InMode')],
136 [('short', 'resId', 'InOutMode'), ('dummyStringPtr', 'resName', 'InMode')]),
138 # MCDoAction and more
139 ([('void', '*', 'OutMode')], [('mcactionparams', '*', 'InMode')]),
143 if __name__
== "__main__":