symbian-qemu-0.9.1-12/python-2.6.1/Mac/Modules/qd/qdscan.py
changeset 1 2fb8b9db1c86
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/symbian-qemu-0.9.1-12/python-2.6.1/Mac/Modules/qd/qdscan.py	Fri Jul 31 15:01:17 2009 +0100
@@ -0,0 +1,234 @@
+# Scan an Apple header file, generating a Python file of generator calls.
+
+import sys
+from bgenlocations import TOOLBOXDIR, BGENDIR
+sys.path.append(BGENDIR)
+
+from scantools import Scanner
+
+def main():
+    input = "QuickDraw.h"
+    output = "qdgen.py"
+    defsoutput = TOOLBOXDIR + "QuickDraw.py"
+    scanner = MyScanner(input, output, defsoutput)
+    scanner.scan()
+    scanner.close()
+
+    # Grmpf. Universal Headers have Text-stuff in a different include file...
+    input = "QuickDrawText.h"
+    output = "@qdgentext.py"
+    defsoutput = "@QuickDrawText.py"
+    have_extra = 0
+    try:
+        scanner = MyScanner(input, output, defsoutput)
+        scanner.scan()
+        scanner.close()
+        have_extra = 1
+    except IOError:
+        pass
+    if have_extra:
+        print "=== Copying QuickDrawText stuff into main files... ==="
+        ifp = open("@qdgentext.py")
+        ofp = open("qdgen.py", "a")
+        ofp.write(ifp.read())
+        ifp.close()
+        ofp.close()
+        ifp = open("@QuickDrawText.py")
+        ofp = open(TOOLBOXDIR + "QuickDraw.py", "a")
+        ofp.write(ifp.read())
+        ifp.close()
+        ofp.close()
+
+    print "=== Testing definitions output code ==="
+    execfile(defsoutput, {}, {})
+    print "=== Done scanning and generating, now importing the generated code... ==="
+    import qdsupport
+    print "=== Done.  It's up to you to compile it now! ==="
+
+class MyScanner(Scanner):
+
+    def destination(self, type, name, arglist):
+        classname = "Function"
+        listname = "functions"
+        if arglist:
+            t, n, m = arglist[0]
+            if t in ('GrafPtr', 'CGrafPtr') and m == 'InMode':
+                classname = "Method"
+                listname = "gr_methods"
+            elif t == 'BitMapPtr' and m == 'InMode':
+                classname = "Method"
+                listname = "bm_methods"
+##                      elif t == "PolyHandle" and m == "InMode":
+##                              classname = "Method"
+##                              listname = "p_methods"
+##                      elif t == "RgnHandle" and m == "InMode":
+##                              classname = "Method"
+##                              listname = "r_methods"
+        return classname, listname
+
+
+    def writeinitialdefs(self):
+        self.defsfile.write("""
+def FOUR_CHAR_CODE(x): return x
+normal                                          = 0
+bold                                            = 1
+italic                                          = 2
+underline                                       = 4
+outline                                         = 8
+shadow                                          = 0x10
+condense                                        = 0x20
+extend                                          = 0x40
+""")
+
+    def makeblacklistnames(self):
+        return [
+                'InitGraf',
+                'StuffHex',
+                'StdLine',
+                'StdComment',
+                'StdGetPic',
+                'OpenPort',
+                'InitPort',
+                'ClosePort',
+                'OpenCPort',
+                'InitCPort',
+                'CloseCPort',
+                'BitMapToRegionGlue',
+                'StdOpcode',    # XXXX Missing from library...
+                # The following are for non-macos use:
+                'LockPortBits',
+                'UnlockPortBits',
+                'UpdatePort',
+                'GetPortNativeWindow',
+                'GetNativeWindowPort',
+                'NativeRegionToMacRegion',
+                'MacRegionToNativeRegion',
+                'GetPortHWND',
+                'GetHWNDPort',
+                'GetPICTFromDIB',
+
+                'HandleToRgn', # Funny signature
+
+                # Need Cm, which we don't want to drag in just yet
+                'OpenCursorComponent',
+                'CloseCursorComponent',
+                'SetCursorComponent',
+                'CursorComponentChanged',
+                'CursorComponentSetData',
+                ]
+
+    def makeblacklisttypes(self):
+        return [
+                "QDRegionBitsRef", # Should do this, but too lazy now.
+                'CIconHandle', # Obsolete
+                'CQDProcs',
+                'CQDProcsPtr',
+                'CSpecArray',
+                'ColorComplementProcPtr',
+                'ColorComplementUPP',
+                'ColorSearchProcPtr',
+                'ColorSearchUPP',
+                'ConstPatternParam',
+                'DeviceLoopDrawingProcPtr',
+                'DeviceLoopFlags',
+                'GrafVerb',
+                'OpenCPicParams_ptr',
+                'Ptr',
+                'QDProcs',
+                'ReqListRec',
+                'void_ptr',
+                'CustomXFerProcPtr',
+                ]
+
+    def makerepairinstructions(self):
+        return [
+                ([('void_ptr', 'textBuf', 'InMode'),
+                  ('short', 'firstByte', 'InMode'),
+                  ('short', 'byteCount', 'InMode')],
+                 [('TextThingie', '*', '*'), ('*', '*', '*'), ('*', '*', '*')]),
+
+                # GetPen and SetPt use a point-pointer as output-only:
+                ('GetPen', [('Point', '*', 'OutMode')], [('*', '*', 'OutMode')]),
+                ('SetPt', [('Point', '*', 'OutMode')], [('*', '*', 'OutMode')]),
+
+                # All others use it as input/output:
+                ([('Point', '*', 'OutMode')],
+                 [('*', '*', 'InOutMode')]),
+
+                 # InsetRect, OffsetRect
+                 ([('Rect', 'r', 'OutMode'),
+                        ('short', 'dh', 'InMode'),
+                        ('short', 'dv', 'InMode')],
+                  [('Rect', 'r', 'InOutMode'),
+                        ('short', 'dh', 'InMode'),
+                        ('short', 'dv', 'InMode')]),
+
+                 # MapRect
+                 ([('Rect', 'r', 'OutMode'),
+                        ('Rect_ptr', 'srcRect', 'InMode'),
+                        ('Rect_ptr', 'dstRect', 'InMode')],
+                  [('Rect', 'r', 'InOutMode'),
+                        ('Rect_ptr', 'srcRect', 'InMode'),
+                        ('Rect_ptr', 'dstRect', 'InMode')]),
+
+                 # CopyBits and friends
+                 ([('RgnHandle', 'maskRgn', 'InMode')],
+                  [('OptRgnHandle', 'maskRgn', 'InMode')]),
+
+                 ('QDFlushPortBuffer',
+                  [('RgnHandle', '*', 'InMode')],
+                  [('OptRgnHandle', '*', 'InMode')]),
+
+                 # Accessors with reference argument also returned.
+                 ([('Rect_ptr', 'GetPortBounds', 'ReturnMode')],
+                  [('void', '*', 'ReturnMode')]),
+
+                 ([('RGBColor_ptr', 'GetPortForeColor', 'ReturnMode')],
+                  [('void', '*', 'ReturnMode')]),
+
+                 ([('RGBColor_ptr', 'GetPortBackColor', 'ReturnMode')],
+                  [('void', '*', 'ReturnMode')]),
+
+                 ([('RGBColor_ptr', 'GetPortOpColor', 'ReturnMode')],
+                  [('void', '*', 'ReturnMode')]),
+
+                 ([('RGBColor_ptr', 'GetPortHiliteColor', 'ReturnMode')],
+                  [('void', '*', 'ReturnMode')]),
+
+                 ([('Point_ptr', 'GetPortPenSize', 'ReturnMode')],
+                  [('void', '*', 'ReturnMode')]),
+
+                 ([('Point_ptr', 'GetPortPenLocation', 'ReturnMode')],
+                  [('void', '*', 'ReturnMode')]),
+
+                 ([('Rect_ptr', 'GetPixBounds', 'ReturnMode')],
+                  [('void', '*', 'ReturnMode')]),
+
+                 ([('BitMap_ptr', 'GetQDGlobalsScreenBits', 'ReturnMode')],
+                  [('void', '*', 'ReturnMode')]),
+
+                 ([('Cursor_ptr', 'GetQDGlobalsArrow', 'ReturnMode')],
+                  [('void', '*', 'ReturnMode')]),
+
+                 ([('Rect_ptr', 'GetRegionBounds', 'ReturnMode')],
+                  [('void', '*', 'ReturnMode')]),
+
+                 ([('Pattern_ptr', '*', 'ReturnMode')],
+                  [('void', '*', 'ReturnMode')]),
+
+                 ([('Point_ptr', 'QDLocalToGlobalPoint', 'ReturnMode')],
+                  [('void', '*', 'ReturnMode')]),
+
+                 ([('Rect_ptr', 'QDLocalToGlobalRect', 'ReturnMode')],
+                  [('void', '*', 'ReturnMode')]),
+
+                 ([('Point_ptr', 'QDGlobalToLocalPoint', 'ReturnMode')],
+                  [('void', '*', 'ReturnMode')]),
+
+                 ([('Rect_ptr', 'QDGlobalToLocalRect', 'ReturnMode')],
+                  [('void', '*', 'ReturnMode')]),
+
+                ]
+
+if __name__ == "__main__":
+    main()