mirror of
https://github.com/python/cpython.git
synced 2025-11-03 19:34:08 +00:00
New internal function BMObj_NewCopied() which copies the BitMap. Used to get the screenBits bitmap.
This commit is contained in:
parent
69c327988a
commit
87eb4f8bb3
2 changed files with 46 additions and 8 deletions
|
|
@ -11,7 +11,7 @@
|
||||||
#include <QuickDraw.h>
|
#include <QuickDraw.h>
|
||||||
|
|
||||||
#if !ACCESSOR_CALLS_ARE_FUNCTIONS
|
#if !ACCESSOR_CALLS_ARE_FUNCTIONS
|
||||||
#define GetPortBitMapForCopyBits(port) (((GrafPort)(port))->portBits)
|
#define GetPortBitMapForCopyBits(port) ((const struct BitMap *)&((GrafPort *)(port))->portBits)
|
||||||
#define GetPortPixMap(port) (((CGrafPtr)(port))->portPixMap)
|
#define GetPortPixMap(port) (((CGrafPtr)(port))->portPixMap)
|
||||||
#define GetPortBounds(port, bounds) (*(bounds) = (port)->portRect, (bounds))
|
#define GetPortBounds(port, bounds) (*(bounds) = (port)->portRect, (bounds))
|
||||||
#define GetPortForeColor(port, color) (*(color) = (port)->rgbFgColor, (color))
|
#define GetPortForeColor(port, color) (*(color) = (port)->rgbFgColor, (color))
|
||||||
|
|
@ -79,6 +79,8 @@
|
||||||
#define QDIsPortBuffered(port) 0
|
#define QDIsPortBuffered(port) 0
|
||||||
#endif /* !TARGET_API_MAC_CARBON */
|
#endif /* !TARGET_API_MAC_CARBON */
|
||||||
|
|
||||||
|
staticforward PyObject *BMObj_NewCopied(BitMapPtr);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Parse/generate RGB records
|
** Parse/generate RGB records
|
||||||
*/
|
*/
|
||||||
|
|
@ -115,8 +117,6 @@ PyObject *QdFI_New(itself)
|
||||||
itself->widMax, itself->leading);
|
itself->widMax, itself->leading);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static PyObject *Qd_Error;
|
static PyObject *Qd_Error;
|
||||||
|
|
||||||
/* ---------------------- Object type GrafPort ---------------------- */
|
/* ---------------------- Object type GrafPort ---------------------- */
|
||||||
|
|
@ -584,7 +584,7 @@ static PyObject *QDGA_getattr(self, name)
|
||||||
if ( strcmp(name, "screenBits") == 0 ) {
|
if ( strcmp(name, "screenBits") == 0 ) {
|
||||||
BitMap rv;
|
BitMap rv;
|
||||||
GetQDGlobalsScreenBits(&rv);
|
GetQDGlobalsScreenBits(&rv);
|
||||||
return BMObj_New(&rv);
|
return BMObj_NewCopied(&rv);
|
||||||
}
|
}
|
||||||
if ( strcmp(name, "thePort") == 0 )
|
if ( strcmp(name, "thePort") == 0 )
|
||||||
return GrafObj_New(GetQDGlobalsThePort());
|
return GrafObj_New(GetQDGlobalsThePort());
|
||||||
|
|
@ -4521,7 +4521,7 @@ static PyObject *Qd_GetQDGlobalsScreenBits(_self, _args)
|
||||||
return NULL;
|
return NULL;
|
||||||
GetQDGlobalsScreenBits(&screenBits);
|
GetQDGlobalsScreenBits(&screenBits);
|
||||||
_res = Py_BuildValue("O&",
|
_res = Py_BuildValue("O&",
|
||||||
BMObj_New, &screenBits);
|
BMObj_NewCopied, &screenBits);
|
||||||
return _res;
|
return _res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -6162,6 +6162,24 @@ static PyMethodDef Qd_methods[] = {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Like BMObj_New, but the original bitmap data structure is copied (and
|
||||||
|
** released when the object is released)
|
||||||
|
*/
|
||||||
|
PyObject *BMObj_NewCopied(itself)
|
||||||
|
BitMapPtr itself;
|
||||||
|
{
|
||||||
|
BitMapObject *it;
|
||||||
|
BitMapPtr itself_copy;
|
||||||
|
|
||||||
|
if ((itself_copy=(BitMapPtr)malloc(sizeof(BitMap))) == NULL)
|
||||||
|
return PyErr_NoMemory();
|
||||||
|
*itself_copy = *itself;
|
||||||
|
it = (BitMapObject *)BMObj_New(itself_copy);
|
||||||
|
it->referred_bitmap = itself_copy;
|
||||||
|
return (PyObject *)it;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void initQd()
|
void initQd()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,7 @@ CGrafPtr = OpaqueByValueType("CGrafPtr", "GrafObj")
|
||||||
GrafPtr = OpaqueByValueType("GrafPtr", "GrafObj")
|
GrafPtr = OpaqueByValueType("GrafPtr", "GrafObj")
|
||||||
BitMap_ptr = OpaqueByValueType("BitMapPtr", "BMObj")
|
BitMap_ptr = OpaqueByValueType("BitMapPtr", "BMObj")
|
||||||
const_BitMap_ptr = OpaqueByValueType("const BitMap *", "BMObj")
|
const_BitMap_ptr = OpaqueByValueType("const BitMap *", "BMObj")
|
||||||
BitMap = OpaqueType("BitMap", "BMObj")
|
BitMap = OpaqueType("BitMap", "BMObj_NewCopied", "BUG")
|
||||||
RGBColor = OpaqueType('RGBColor', 'QdRGB')
|
RGBColor = OpaqueType('RGBColor', 'QdRGB')
|
||||||
RGBColor_ptr = RGBColor
|
RGBColor_ptr = RGBColor
|
||||||
FontInfo = OpaqueType('FontInfo', 'QdFI')
|
FontInfo = OpaqueType('FontInfo', 'QdFI')
|
||||||
|
|
@ -64,7 +64,7 @@ includestuff = includestuff + """
|
||||||
#include <%s>""" % MACHEADERFILE + """
|
#include <%s>""" % MACHEADERFILE + """
|
||||||
|
|
||||||
#if !ACCESSOR_CALLS_ARE_FUNCTIONS
|
#if !ACCESSOR_CALLS_ARE_FUNCTIONS
|
||||||
#define GetPortBitMapForCopyBits(port) (((GrafPort)(port))->portBits)
|
#define GetPortBitMapForCopyBits(port) ((const struct BitMap *)&((GrafPort *)(port))->portBits)
|
||||||
#define GetPortPixMap(port) (((CGrafPtr)(port))->portPixMap)
|
#define GetPortPixMap(port) (((CGrafPtr)(port))->portPixMap)
|
||||||
#define GetPortBounds(port, bounds) (*(bounds) = (port)->portRect, (bounds))
|
#define GetPortBounds(port, bounds) (*(bounds) = (port)->portRect, (bounds))
|
||||||
#define GetPortForeColor(port, color) (*(color) = (port)->rgbFgColor, (color))
|
#define GetPortForeColor(port, color) (*(color) = (port)->rgbFgColor, (color))
|
||||||
|
|
@ -132,6 +132,8 @@ includestuff = includestuff + """
|
||||||
#define QDIsPortBuffered(port) 0
|
#define QDIsPortBuffered(port) 0
|
||||||
#endif /* !TARGET_API_MAC_CARBON */
|
#endif /* !TARGET_API_MAC_CARBON */
|
||||||
|
|
||||||
|
staticforward PyObject *BMObj_NewCopied(BitMapPtr);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Parse/generate RGB records
|
** Parse/generate RGB records
|
||||||
*/
|
*/
|
||||||
|
|
@ -167,7 +169,25 @@ PyObject *QdFI_New(itself)
|
||||||
return Py_BuildValue("hhhh", itself->ascent, itself->descent,
|
return Py_BuildValue("hhhh", itself->ascent, itself->descent,
|
||||||
itself->widMax, itself->leading);
|
itself->widMax, itself->leading);
|
||||||
}
|
}
|
||||||
|
"""
|
||||||
|
|
||||||
|
finalstuff = finalstuff + """
|
||||||
|
/* Like BMObj_New, but the original bitmap data structure is copied (and
|
||||||
|
** released when the object is released)
|
||||||
|
*/
|
||||||
|
PyObject *BMObj_NewCopied(itself)
|
||||||
|
BitMapPtr itself;
|
||||||
|
{
|
||||||
|
BitMapObject *it;
|
||||||
|
BitMapPtr itself_copy;
|
||||||
|
|
||||||
|
if ((itself_copy=(BitMapPtr)malloc(sizeof(BitMap))) == NULL)
|
||||||
|
return PyErr_NoMemory();
|
||||||
|
*itself_copy = *itself;
|
||||||
|
it = (BitMapObject *)BMObj_New(itself_copy);
|
||||||
|
it->referred_bitmap = itself_copy;
|
||||||
|
return (PyObject *)it;
|
||||||
|
}
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
@ -458,7 +478,7 @@ class QDGlobalsAccessObjectDefinition(ObjectDefinition):
|
||||||
if ( strcmp(name, "screenBits") == 0 ) {
|
if ( strcmp(name, "screenBits") == 0 ) {
|
||||||
BitMap rv;
|
BitMap rv;
|
||||||
GetQDGlobalsScreenBits(&rv);
|
GetQDGlobalsScreenBits(&rv);
|
||||||
return BMObj_New(&rv);
|
return BMObj_NewCopied(&rv);
|
||||||
}
|
}
|
||||||
if ( strcmp(name, "thePort") == 0 )
|
if ( strcmp(name, "thePort") == 0 )
|
||||||
return GrafObj_New(GetQDGlobalsThePort());
|
return GrafObj_New(GetQDGlobalsThePort());
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue