]> granicus.if.org Git - python/commitdiff
Accessor functions for regions and such expect an existing region as parameter. Fixed...
authorJack Jansen <jack.jansen@cwi.nl>
Mon, 29 Jan 2001 14:07:01 +0000 (14:07 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Mon, 29 Jan 2001 14:07:01 +0000 (14:07 +0000)
Got GetPortBitMapForCopyBits() and port.portBits to work.

Mac/Modules/qd/Qdmodule.c
Mac/Modules/qd/qdscan.py
Mac/Modules/qd/qdsupport.py

index 1ca8647519980240dbdedea633999bc736c5eb6a..7c9d49bcd2d81ccb9a12f0e70159ea822ed6f66a 100644 (file)
@@ -255,10 +255,8 @@ static PyObject *GrafObj_getattr(self, name)
 #else
 
                        {       CGrafPtr itself_color = (CGrafPtr)self->ob_itself;
-                               /*
                                if ( strcmp(name, "portBits") == 0 )
-                                       return BMObj_New((BitMapPtr)GetPortPixMap(itself_color));
-                               */
+                                       return BMObj_New((BitMapPtr)GetPortBitMapForCopyBits(itself_color));
                                if ( strcmp(name, "chExtra") == 0 )
                                        return Py_BuildValue("h", GetPortChExtra(itself_color));
                                if ( strcmp(name, "pnLocHFrac") == 0 )
@@ -276,12 +274,12 @@ static PyObject *GrafObj_getattr(self, name)
                                        return Py_BuildValue("O&", QdRGB_New, GetPortBackColor(itself_color, &c));
                                }
                                if ( strcmp(name, "pnPixPat") == 0 ) {
-                                       PixPatHandle h=0;
+                                       PixPatHandle h=NewPixPat(); /* XXXX wrong dispose routine */
                                        
                                        return Py_BuildValue("O&", ResObj_New, (Handle)GetPortPenPixPat(itself_color, h));
                                }
                                if ( strcmp(name, "fillPixPat") == 0 ) {
-                                       PixPatHandle h=0;
+                                       PixPatHandle h=NewPixPat(); /* XXXX wrong dispose routine */
                                        return Py_BuildValue("O&", ResObj_New, (Handle)GetPortFillPixPat(itself_color, h));
                                }
                                if ( strcmp(name, "portRect") == 0 ) {
@@ -289,11 +287,11 @@ static PyObject *GrafObj_getattr(self, name)
                                        return Py_BuildValue("O&", PyMac_BuildRect, GetPortBounds(itself_color, &r));
                                }
                                if ( strcmp(name, "visRgn") == 0 ) {
-                                       RgnHandle h=0;
+                                       RgnHandle h=NewRgn(); /* XXXX wrong dispose routine */
                                        return Py_BuildValue("O&", ResObj_New, (Handle)GetPortVisibleRegion(itself_color, h));
                                }
                                if ( strcmp(name, "clipRgn") == 0 ) {
-                                       RgnHandle h=0;
+                                       RgnHandle h=NewRgn(); /* XXXX wrong dispose routine */
                                        return Py_BuildValue("O&", ResObj_New, (Handle)GetPortClipRegion(itself_color, h));
                                }
                                if ( strcmp(name, "pnLoc") == 0 ) {
@@ -3858,6 +3856,22 @@ static PyObject *Qd_GetPortPixMap(_self, _args)
        return _res;
 }
 
+static PyObject *Qd_GetPortBitMapForCopyBits(_self, _args)
+       PyObject *_self;
+       PyObject *_args;
+{
+       PyObject *_res = NULL;
+       const BitMap * _rv;
+       CGrafPtr port;
+       if (!PyArg_ParseTuple(_args, "O&",
+                             GrafObj_Convert, &port))
+               return NULL;
+       _rv = GetPortBitMapForCopyBits(port);
+       _res = Py_BuildValue("O&",
+                            BMObj_New, _rv);
+       return _res;
+}
+
 static PyObject *Qd_GetPortBounds(_self, _args)
        PyObject *_self;
        PyObject *_args;
@@ -5931,6 +5945,8 @@ static PyMethodDef Qd_methods[] = {
         "(Fixed slope) -> (short _rv)"},
        {"GetPortPixMap", (PyCFunction)Qd_GetPortPixMap, 1,
         "(CGrafPtr port) -> (PixMapHandle _rv)"},
+       {"GetPortBitMapForCopyBits", (PyCFunction)Qd_GetPortBitMapForCopyBits, 1,
+        "(CGrafPtr port) -> (const BitMap * _rv)"},
        {"GetPortBounds", (PyCFunction)Qd_GetPortBounds, 1,
         "(CGrafPtr port) -> (Rect rect)"},
        {"GetPortForeColor", (PyCFunction)Qd_GetPortForeColor, 1,
index 6711ac28feb177c35c210f208915becfb95813a1..6336ba8f9883d2a259734a0a535ce34c8c287666 100644 (file)
@@ -100,7 +100,6 @@ extend                                              = 0x40
                        'GetPortHWND',
                        'GetHWNDPort',
                        'GetPICTFromDIB',
-                       'GetPortBitMapForCopyBits', # Something funny in the declaration
                        
                        'HandleToRgn', # Funny signature
 
index 80d1709722b89e7e18b3e7b4b49afec7e67bb513..b255110d4d8abb5ab74bca7518e03a0aa926a846 100644 (file)
@@ -45,6 +45,7 @@ GDHandle = OpaqueByValueType("GDHandle", "ResObj")
 CGrafPtr = OpaqueByValueType("CGrafPtr", "GrafObj")
 GrafPtr = OpaqueByValueType("GrafPtr", "GrafObj")
 BitMap_ptr = OpaqueByValueType("BitMapPtr", "BMObj")
+const_BitMap_ptr = OpaqueByValueType("const BitMap *", "BMObj")
 BitMap = OpaqueType("BitMap", "BMObj")
 RGBColor = OpaqueType('RGBColor', 'QdRGB')
 RGBColor_ptr = RGBColor
@@ -284,10 +285,8 @@ class MyGRObjectDefinition(GlobalObjectDefinition):
                Output("#else")
                Output("""
                {       CGrafPtr itself_color = (CGrafPtr)self->ob_itself;
-                       /*
                        if ( strcmp(name, "portBits") == 0 )
-                               return BMObj_New((BitMapPtr)GetPortPixMap(itself_color));
-                       */
+                               return BMObj_New((BitMapPtr)GetPortBitMapForCopyBits(itself_color));
                        if ( strcmp(name, "chExtra") == 0 )
                                return Py_BuildValue("h", GetPortChExtra(itself_color));
                        if ( strcmp(name, "pnLocHFrac") == 0 )
@@ -305,12 +304,12 @@ class MyGRObjectDefinition(GlobalObjectDefinition):
                                return Py_BuildValue("O&", QdRGB_New, GetPortBackColor(itself_color, &c));
                        }
                        if ( strcmp(name, "pnPixPat") == 0 ) {
-                               PixPatHandle h=0;
+                               PixPatHandle h=NewPixPat(); /* XXXX wrong dispose routine */
                                
                                return Py_BuildValue("O&", ResObj_New, (Handle)GetPortPenPixPat(itself_color, h));
                        }
                        if ( strcmp(name, "fillPixPat") == 0 ) {
-                               PixPatHandle h=0;
+                               PixPatHandle h=NewPixPat(); /* XXXX wrong dispose routine */
                                return Py_BuildValue("O&", ResObj_New, (Handle)GetPortFillPixPat(itself_color, h));
                        }
                        if ( strcmp(name, "portRect") == 0 ) {
@@ -318,11 +317,11 @@ class MyGRObjectDefinition(GlobalObjectDefinition):
                                return Py_BuildValue("O&", PyMac_BuildRect, GetPortBounds(itself_color, &r));
                        }
                        if ( strcmp(name, "visRgn") == 0 ) {
-                               RgnHandle h=0;
+                               RgnHandle h=NewRgn(); /* XXXX wrong dispose routine */
                                return Py_BuildValue("O&", ResObj_New, (Handle)GetPortVisibleRegion(itself_color, h));
                        }
                        if ( strcmp(name, "clipRgn") == 0 ) {
-                               RgnHandle h=0;
+                               RgnHandle h=NewRgn(); /* XXXX wrong dispose routine */
                                return Py_BuildValue("O&", ResObj_New, (Handle)GetPortClipRegion(itself_color, h));
                        }
                        if ( strcmp(name, "pnLoc") == 0 ) {