symbian-qemu-0.9.1-12/python-2.6.1/Mac/Modules/qd/qdscan.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 # Scan an Apple header file, generating a Python file of generator calls.
       
     2 
       
     3 import sys
       
     4 from bgenlocations import TOOLBOXDIR, BGENDIR
       
     5 sys.path.append(BGENDIR)
       
     6 
       
     7 from scantools import Scanner
       
     8 
       
     9 def main():
       
    10     input = "QuickDraw.h"
       
    11     output = "qdgen.py"
       
    12     defsoutput = TOOLBOXDIR + "QuickDraw.py"
       
    13     scanner = MyScanner(input, output, defsoutput)
       
    14     scanner.scan()
       
    15     scanner.close()
       
    16 
       
    17     # Grmpf. Universal Headers have Text-stuff in a different include file...
       
    18     input = "QuickDrawText.h"
       
    19     output = "@qdgentext.py"
       
    20     defsoutput = "@QuickDrawText.py"
       
    21     have_extra = 0
       
    22     try:
       
    23         scanner = MyScanner(input, output, defsoutput)
       
    24         scanner.scan()
       
    25         scanner.close()
       
    26         have_extra = 1
       
    27     except IOError:
       
    28         pass
       
    29     if have_extra:
       
    30         print "=== Copying QuickDrawText stuff into main files... ==="
       
    31         ifp = open("@qdgentext.py")
       
    32         ofp = open("qdgen.py", "a")
       
    33         ofp.write(ifp.read())
       
    34         ifp.close()
       
    35         ofp.close()
       
    36         ifp = open("@QuickDrawText.py")
       
    37         ofp = open(TOOLBOXDIR + "QuickDraw.py", "a")
       
    38         ofp.write(ifp.read())
       
    39         ifp.close()
       
    40         ofp.close()
       
    41 
       
    42     print "=== Testing definitions output code ==="
       
    43     execfile(defsoutput, {}, {})
       
    44     print "=== Done scanning and generating, now importing the generated code... ==="
       
    45     import qdsupport
       
    46     print "=== Done.  It's up to you to compile it now! ==="
       
    47 
       
    48 class MyScanner(Scanner):
       
    49 
       
    50     def destination(self, type, name, arglist):
       
    51         classname = "Function"
       
    52         listname = "functions"
       
    53         if arglist:
       
    54             t, n, m = arglist[0]
       
    55             if t in ('GrafPtr', 'CGrafPtr') and m == 'InMode':
       
    56                 classname = "Method"
       
    57                 listname = "gr_methods"
       
    58             elif t == 'BitMapPtr' and m == 'InMode':
       
    59                 classname = "Method"
       
    60                 listname = "bm_methods"
       
    61 ##                      elif t == "PolyHandle" and m == "InMode":
       
    62 ##                              classname = "Method"
       
    63 ##                              listname = "p_methods"
       
    64 ##                      elif t == "RgnHandle" and m == "InMode":
       
    65 ##                              classname = "Method"
       
    66 ##                              listname = "r_methods"
       
    67         return classname, listname
       
    68 
       
    69 
       
    70     def writeinitialdefs(self):
       
    71         self.defsfile.write("""
       
    72 def FOUR_CHAR_CODE(x): return x
       
    73 normal                                          = 0
       
    74 bold                                            = 1
       
    75 italic                                          = 2
       
    76 underline                                       = 4
       
    77 outline                                         = 8
       
    78 shadow                                          = 0x10
       
    79 condense                                        = 0x20
       
    80 extend                                          = 0x40
       
    81 """)
       
    82 
       
    83     def makeblacklistnames(self):
       
    84         return [
       
    85                 'InitGraf',
       
    86                 'StuffHex',
       
    87                 'StdLine',
       
    88                 'StdComment',
       
    89                 'StdGetPic',
       
    90                 'OpenPort',
       
    91                 'InitPort',
       
    92                 'ClosePort',
       
    93                 'OpenCPort',
       
    94                 'InitCPort',
       
    95                 'CloseCPort',
       
    96                 'BitMapToRegionGlue',
       
    97                 'StdOpcode',    # XXXX Missing from library...
       
    98                 # The following are for non-macos use:
       
    99                 'LockPortBits',
       
   100                 'UnlockPortBits',
       
   101                 'UpdatePort',
       
   102                 'GetPortNativeWindow',
       
   103                 'GetNativeWindowPort',
       
   104                 'NativeRegionToMacRegion',
       
   105                 'MacRegionToNativeRegion',
       
   106                 'GetPortHWND',
       
   107                 'GetHWNDPort',
       
   108                 'GetPICTFromDIB',
       
   109 
       
   110                 'HandleToRgn', # Funny signature
       
   111 
       
   112                 # Need Cm, which we don't want to drag in just yet
       
   113                 'OpenCursorComponent',
       
   114                 'CloseCursorComponent',
       
   115                 'SetCursorComponent',
       
   116                 'CursorComponentChanged',
       
   117                 'CursorComponentSetData',
       
   118                 ]
       
   119 
       
   120     def makeblacklisttypes(self):
       
   121         return [
       
   122                 "QDRegionBitsRef", # Should do this, but too lazy now.
       
   123                 'CIconHandle', # Obsolete
       
   124                 'CQDProcs',
       
   125                 'CQDProcsPtr',
       
   126                 'CSpecArray',
       
   127                 'ColorComplementProcPtr',
       
   128                 'ColorComplementUPP',
       
   129                 'ColorSearchProcPtr',
       
   130                 'ColorSearchUPP',
       
   131                 'ConstPatternParam',
       
   132                 'DeviceLoopDrawingProcPtr',
       
   133                 'DeviceLoopFlags',
       
   134                 'GrafVerb',
       
   135                 'OpenCPicParams_ptr',
       
   136                 'Ptr',
       
   137                 'QDProcs',
       
   138                 'ReqListRec',
       
   139                 'void_ptr',
       
   140                 'CustomXFerProcPtr',
       
   141                 ]
       
   142 
       
   143     def makerepairinstructions(self):
       
   144         return [
       
   145                 ([('void_ptr', 'textBuf', 'InMode'),
       
   146                   ('short', 'firstByte', 'InMode'),
       
   147                   ('short', 'byteCount', 'InMode')],
       
   148                  [('TextThingie', '*', '*'), ('*', '*', '*'), ('*', '*', '*')]),
       
   149 
       
   150                 # GetPen and SetPt use a point-pointer as output-only:
       
   151                 ('GetPen', [('Point', '*', 'OutMode')], [('*', '*', 'OutMode')]),
       
   152                 ('SetPt', [('Point', '*', 'OutMode')], [('*', '*', 'OutMode')]),
       
   153 
       
   154                 # All others use it as input/output:
       
   155                 ([('Point', '*', 'OutMode')],
       
   156                  [('*', '*', 'InOutMode')]),
       
   157 
       
   158                  # InsetRect, OffsetRect
       
   159                  ([('Rect', 'r', 'OutMode'),
       
   160                         ('short', 'dh', 'InMode'),
       
   161                         ('short', 'dv', 'InMode')],
       
   162                   [('Rect', 'r', 'InOutMode'),
       
   163                         ('short', 'dh', 'InMode'),
       
   164                         ('short', 'dv', 'InMode')]),
       
   165 
       
   166                  # MapRect
       
   167                  ([('Rect', 'r', 'OutMode'),
       
   168                         ('Rect_ptr', 'srcRect', 'InMode'),
       
   169                         ('Rect_ptr', 'dstRect', 'InMode')],
       
   170                   [('Rect', 'r', 'InOutMode'),
       
   171                         ('Rect_ptr', 'srcRect', 'InMode'),
       
   172                         ('Rect_ptr', 'dstRect', 'InMode')]),
       
   173 
       
   174                  # CopyBits and friends
       
   175                  ([('RgnHandle', 'maskRgn', 'InMode')],
       
   176                   [('OptRgnHandle', 'maskRgn', 'InMode')]),
       
   177 
       
   178                  ('QDFlushPortBuffer',
       
   179                   [('RgnHandle', '*', 'InMode')],
       
   180                   [('OptRgnHandle', '*', 'InMode')]),
       
   181 
       
   182                  # Accessors with reference argument also returned.
       
   183                  ([('Rect_ptr', 'GetPortBounds', 'ReturnMode')],
       
   184                   [('void', '*', 'ReturnMode')]),
       
   185 
       
   186                  ([('RGBColor_ptr', 'GetPortForeColor', 'ReturnMode')],
       
   187                   [('void', '*', 'ReturnMode')]),
       
   188 
       
   189                  ([('RGBColor_ptr', 'GetPortBackColor', 'ReturnMode')],
       
   190                   [('void', '*', 'ReturnMode')]),
       
   191 
       
   192                  ([('RGBColor_ptr', 'GetPortOpColor', 'ReturnMode')],
       
   193                   [('void', '*', 'ReturnMode')]),
       
   194 
       
   195                  ([('RGBColor_ptr', 'GetPortHiliteColor', 'ReturnMode')],
       
   196                   [('void', '*', 'ReturnMode')]),
       
   197 
       
   198                  ([('Point_ptr', 'GetPortPenSize', 'ReturnMode')],
       
   199                   [('void', '*', 'ReturnMode')]),
       
   200 
       
   201                  ([('Point_ptr', 'GetPortPenLocation', 'ReturnMode')],
       
   202                   [('void', '*', 'ReturnMode')]),
       
   203 
       
   204                  ([('Rect_ptr', 'GetPixBounds', 'ReturnMode')],
       
   205                   [('void', '*', 'ReturnMode')]),
       
   206 
       
   207                  ([('BitMap_ptr', 'GetQDGlobalsScreenBits', 'ReturnMode')],
       
   208                   [('void', '*', 'ReturnMode')]),
       
   209 
       
   210                  ([('Cursor_ptr', 'GetQDGlobalsArrow', 'ReturnMode')],
       
   211                   [('void', '*', 'ReturnMode')]),
       
   212 
       
   213                  ([('Rect_ptr', 'GetRegionBounds', 'ReturnMode')],
       
   214                   [('void', '*', 'ReturnMode')]),
       
   215 
       
   216                  ([('Pattern_ptr', '*', 'ReturnMode')],
       
   217                   [('void', '*', 'ReturnMode')]),
       
   218 
       
   219                  ([('Point_ptr', 'QDLocalToGlobalPoint', 'ReturnMode')],
       
   220                   [('void', '*', 'ReturnMode')]),
       
   221 
       
   222                  ([('Rect_ptr', 'QDLocalToGlobalRect', 'ReturnMode')],
       
   223                   [('void', '*', 'ReturnMode')]),
       
   224 
       
   225                  ([('Point_ptr', 'QDGlobalToLocalPoint', 'ReturnMode')],
       
   226                   [('void', '*', 'ReturnMode')]),
       
   227 
       
   228                  ([('Rect_ptr', 'QDGlobalToLocalRect', 'ReturnMode')],
       
   229                   [('void', '*', 'ReturnMode')]),
       
   230 
       
   231                 ]
       
   232 
       
   233 if __name__ == "__main__":
       
   234     main()