1 2 /* ========================= Module _Qdoffs ========================= */ 3 4 #include "Python.h" 5 6 7 #include <Carbon/Carbon.h> 8 #if !defined(__LP64__) && !defined(MAC_OS_X_VERSION_10_7) 9 10 #include "pymactoolbox.h" 11 12 /* Macro to test whether a weak-loaded CFM function exists */ 13 #define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ 14 PyErr_SetString(PyExc_NotImplementedError, \ 15 "Not available in this shared library/OS version"); \ 16 return NULL; \ 17 }} while(0) 18 19 20 21 #ifdef USE_TOOLBOX_OBJECT_GLUE 22 extern PyObject *_GWorldObj_New(GWorldPtr); 23 extern int _GWorldObj_Convert(PyObject *, GWorldPtr *); 24 25 #define GWorldObj_New _GWorldObj_New 26 #define GWorldObj_Convert _GWorldObj_Convert 27 #endif 28 29 #define as_GrafPtr(gworld) ((GrafPtr)(gworld)) 30 31 32 static PyObject *Qdoffs_Error; 33 34 /* ----------------------- Object type GWorld ----------------------- */ 35 36 PyTypeObject GWorld_Type; 37 38 #define GWorldObj_Check(x) ((x)->ob_type == &GWorld_Type || PyObject_TypeCheck((x), &GWorld_Type)) 39 40 typedef struct GWorldObject { 41 PyObject_HEAD 42 GWorldPtr ob_itself; 43 } GWorldObject; 44 45 PyObject *GWorldObj_New(GWorldPtr itself) 46 { 47 GWorldObject *it; 48 if (itself == NULL) return PyMac_Error(resNotFound); 49 it = PyObject_NEW(GWorldObject, &GWorld_Type); 50 if (it == NULL) return NULL; 51 it->ob_itself = itself; 52 return (PyObject *)it; 53 } 54 55 int GWorldObj_Convert(PyObject *v, GWorldPtr *p_itself) 56 { 57 if (!GWorldObj_Check(v)) 58 { 59 PyErr_SetString(PyExc_TypeError, "GWorld required"); 60 return 0; 61 } 62 *p_itself = ((GWorldObject *)v)->ob_itself; 63 return 1; 64 } 65 66 static void GWorldObj_dealloc(GWorldObject *self) 67 { 68 DisposeGWorld(self->ob_itself); 69 self->ob_type->tp_free((PyObject *)self); 70 } 71 72 static PyObject *GWorldObj_GetGWorldDevice(GWorldObject *_self, PyObject *_args) 73 { 74 PyObject *_res = NULL; 75 GDHandle _rv; 76 #ifndef GetGWorldDevice 77 PyMac_PRECHECK(GetGWorldDevice); 78 #endif 79 if (!PyArg_ParseTuple(_args, "")) 80 return NULL; 81 _rv = GetGWorldDevice(_self->ob_itself); 82 _res = Py_BuildValue("O&", 83 ResObj_New, _rv); 84 return _res; 85 } 86 87 static PyObject *GWorldObj_GetGWorldPixMap(GWorldObject *_self, PyObject *_args) 88 { 89 PyObject *_res = NULL; 90 PixMapHandle _rv; 91 #ifndef GetGWorldPixMap 92 PyMac_PRECHECK(GetGWorldPixMap); 93 #endif 94 if (!PyArg_ParseTuple(_args, "")) 95 return NULL; 96 _rv = GetGWorldPixMap(_self->ob_itself); 97 _res = Py_BuildValue("O&", 98 ResObj_New, _rv); 99 return _res; 100 } 101 102 static PyObject *GWorldObj_as_GrafPtr(GWorldObject *_self, PyObject *_args) 103 { 104 PyObject *_res = NULL; 105 GrafPtr _rv; 106 #ifndef as_GrafPtr 107 PyMac_PRECHECK(as_GrafPtr); 108 #endif 109 if (!PyArg_ParseTuple(_args, "")) 110 return NULL; 111 _rv = as_GrafPtr(_self->ob_itself); 112 _res = Py_BuildValue("O&", 113 GrafObj_New, _rv); 114 return _res; 115 } 116 117 static PyMethodDef GWorldObj_methods[] = { 118 {"GetGWorldDevice", (PyCFunction)GWorldObj_GetGWorldDevice, 1, 119 PyDoc_STR("() -> (GDHandle _rv)")}, 120 {"GetGWorldPixMap", (PyCFunction)GWorldObj_GetGWorldPixMap, 1, 121 PyDoc_STR("() -> (PixMapHandle _rv)")}, 122 {"as_GrafPtr", (PyCFunction)GWorldObj_as_GrafPtr, 1, 123 PyDoc_STR("() -> (GrafPtr _rv)")}, 124 {NULL, NULL, 0} 125 }; 126 127 #define GWorldObj_getsetlist NULL 128 129 130 #define GWorldObj_compare NULL 131 132 #define GWorldObj_repr NULL 133 134 #define GWorldObj_hash NULL 135 #define GWorldObj_tp_init 0 136 137 #define GWorldObj_tp_alloc PyType_GenericAlloc 138 139 static PyObject *GWorldObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) 140 { 141 PyObject *_self; 142 GWorldPtr itself; 143 char *kw[] = {"itself", 0}; 144 145 if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, GWorldObj_Convert, &itself)) return NULL; 146 if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; 147 ((GWorldObject *)_self)->ob_itself = itself; 148 return _self; 149 } 150 151 #define GWorldObj_tp_free PyObject_Del 152 153 154 PyTypeObject GWorld_Type = { 155 PyObject_HEAD_INIT(NULL) 156 0, /*ob_size*/ 157 "_Qdoffs.GWorld", /*tp_name*/ 158 sizeof(GWorldObject), /*tp_basicsize*/ 159 0, /*tp_itemsize*/ 160 /* methods */ 161 (destructor) GWorldObj_dealloc, /*tp_dealloc*/ 162 0, /*tp_print*/ 163 (getattrfunc)0, /*tp_getattr*/ 164 (setattrfunc)0, /*tp_setattr*/ 165 (cmpfunc) GWorldObj_compare, /*tp_compare*/ 166 (reprfunc) GWorldObj_repr, /*tp_repr*/ 167 (PyNumberMethods *)0, /* tp_as_number */ 168 (PySequenceMethods *)0, /* tp_as_sequence */ 169 (PyMappingMethods *)0, /* tp_as_mapping */ 170 (hashfunc) GWorldObj_hash, /*tp_hash*/ 171 0, /*tp_call*/ 172 0, /*tp_str*/ 173 PyObject_GenericGetAttr, /*tp_getattro*/ 174 PyObject_GenericSetAttr, /*tp_setattro */ 175 0, /*tp_as_buffer*/ 176 Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ 177 0, /*tp_doc*/ 178 0, /*tp_traverse*/ 179 0, /*tp_clear*/ 180 0, /*tp_richcompare*/ 181 0, /*tp_weaklistoffset*/ 182 0, /*tp_iter*/ 183 0, /*tp_iternext*/ 184 GWorldObj_methods, /* tp_methods */ 185 0, /*tp_members*/ 186 GWorldObj_getsetlist, /*tp_getset*/ 187 0, /*tp_base*/ 188 0, /*tp_dict*/ 189 0, /*tp_descr_get*/ 190 0, /*tp_descr_set*/ 191 0, /*tp_dictoffset*/ 192 GWorldObj_tp_init, /* tp_init */ 193 GWorldObj_tp_alloc, /* tp_alloc */ 194 GWorldObj_tp_new, /* tp_new */ 195 GWorldObj_tp_free, /* tp_free */ 196 }; 197 198 /* --------------------- End object type GWorld --------------------- */ 199 200 201 static PyObject *Qdoffs_NewGWorld(PyObject *_self, PyObject *_args) 202 { 203 PyObject *_res = NULL; 204 QDErr _err; 205 GWorldPtr offscreenGWorld; 206 short PixelDepth; 207 Rect boundsRect; 208 CTabHandle cTable; 209 GDHandle aGDevice; 210 GWorldFlags flags; 211 #ifndef NewGWorld 212 PyMac_PRECHECK(NewGWorld); 213 #endif 214 if (!PyArg_ParseTuple(_args, "hO&O&O&l", 215 &PixelDepth, 216 PyMac_GetRect, &boundsRect, 217 OptResObj_Convert, &cTable, 218 OptResObj_Convert, &aGDevice, 219 &flags)) 220 return NULL; 221 _err = NewGWorld(&offscreenGWorld, 222 PixelDepth, 223 &boundsRect, 224 cTable, 225 aGDevice, 226 flags); 227 if (_err != noErr) return PyMac_Error(_err); 228 _res = Py_BuildValue("O&", 229 GWorldObj_New, offscreenGWorld); 230 return _res; 231 } 232 233 static PyObject *Qdoffs_LockPixels(PyObject *_self, PyObject *_args) 234 { 235 PyObject *_res = NULL; 236 Boolean _rv; 237 PixMapHandle pm; 238 #ifndef LockPixels 239 PyMac_PRECHECK(LockPixels); 240 #endif 241 if (!PyArg_ParseTuple(_args, "O&", 242 ResObj_Convert, &pm)) 243 return NULL; 244 _rv = LockPixels(pm); 245 _res = Py_BuildValue("b", 246 _rv); 247 return _res; 248 } 249 250 static PyObject *Qdoffs_UnlockPixels(PyObject *_self, PyObject *_args) 251 { 252 PyObject *_res = NULL; 253 PixMapHandle pm; 254 #ifndef UnlockPixels 255 PyMac_PRECHECK(UnlockPixels); 256 #endif 257 if (!PyArg_ParseTuple(_args, "O&", 258 ResObj_Convert, &pm)) 259 return NULL; 260 UnlockPixels(pm); 261 Py_INCREF(Py_None); 262 _res = Py_None; 263 return _res; 264 } 265 266 static PyObject *Qdoffs_UpdateGWorld(PyObject *_self, PyObject *_args) 267 { 268 PyObject *_res = NULL; 269 GWorldFlags _rv; 270 GWorldPtr offscreenGWorld; 271 short pixelDepth; 272 Rect boundsRect; 273 CTabHandle cTable; 274 GDHandle aGDevice; 275 GWorldFlags flags; 276 #ifndef UpdateGWorld 277 PyMac_PRECHECK(UpdateGWorld); 278 #endif 279 if (!PyArg_ParseTuple(_args, "hO&O&O&l", 280 &pixelDepth, 281 PyMac_GetRect, &boundsRect, 282 OptResObj_Convert, &cTable, 283 OptResObj_Convert, &aGDevice, 284 &flags)) 285 return NULL; 286 _rv = UpdateGWorld(&offscreenGWorld, 287 pixelDepth, 288 &boundsRect, 289 cTable, 290 aGDevice, 291 flags); 292 _res = Py_BuildValue("lO&", 293 _rv, 294 GWorldObj_New, offscreenGWorld); 295 return _res; 296 } 297 298 static PyObject *Qdoffs_GetGWorld(PyObject *_self, PyObject *_args) 299 { 300 PyObject *_res = NULL; 301 CGrafPtr port; 302 GDHandle gdh; 303 #ifndef GetGWorld 304 PyMac_PRECHECK(GetGWorld); 305 #endif 306 if (!PyArg_ParseTuple(_args, "")) 307 return NULL; 308 GetGWorld(&port, 309 &gdh); 310 _res = Py_BuildValue("O&O&", 311 GrafObj_New, port, 312 ResObj_New, gdh); 313 return _res; 314 } 315 316 static PyObject *Qdoffs_SetGWorld(PyObject *_self, PyObject *_args) 317 { 318 PyObject *_res = NULL; 319 CGrafPtr port; 320 GDHandle gdh; 321 #ifndef SetGWorld 322 PyMac_PRECHECK(SetGWorld); 323 #endif 324 if (!PyArg_ParseTuple(_args, "O&O&", 325 GrafObj_Convert, &port, 326 OptResObj_Convert, &gdh)) 327 return NULL; 328 SetGWorld(port, 329 gdh); 330 Py_INCREF(Py_None); 331 _res = Py_None; 332 return _res; 333 } 334 335 static PyObject *Qdoffs_CTabChanged(PyObject *_self, PyObject *_args) 336 { 337 PyObject *_res = NULL; 338 CTabHandle ctab; 339 #ifndef CTabChanged 340 PyMac_PRECHECK(CTabChanged); 341 #endif 342 if (!PyArg_ParseTuple(_args, "O&", 343 OptResObj_Convert, &ctab)) 344 return NULL; 345 CTabChanged(ctab); 346 Py_INCREF(Py_None); 347 _res = Py_None; 348 return _res; 349 } 350 351 static PyObject *Qdoffs_PixPatChanged(PyObject *_self, PyObject *_args) 352 { 353 PyObject *_res = NULL; 354 PixPatHandle ppat; 355 #ifndef PixPatChanged 356 PyMac_PRECHECK(PixPatChanged); 357 #endif 358 if (!PyArg_ParseTuple(_args, "O&", 359 ResObj_Convert, &ppat)) 360 return NULL; 361 PixPatChanged(ppat); 362 Py_INCREF(Py_None); 363 _res = Py_None; 364 return _res; 365 } 366 367 static PyObject *Qdoffs_PortChanged(PyObject *_self, PyObject *_args) 368 { 369 PyObject *_res = NULL; 370 GrafPtr port; 371 #ifndef PortChanged 372 PyMac_PRECHECK(PortChanged); 373 #endif 374 if (!PyArg_ParseTuple(_args, "O&", 375 GrafObj_Convert, &port)) 376 return NULL; 377 PortChanged(port); 378 Py_INCREF(Py_None); 379 _res = Py_None; 380 return _res; 381 } 382 383 static PyObject *Qdoffs_GDeviceChanged(PyObject *_self, PyObject *_args) 384 { 385 PyObject *_res = NULL; 386 GDHandle gdh; 387 #ifndef GDeviceChanged 388 PyMac_PRECHECK(GDeviceChanged); 389 #endif 390 if (!PyArg_ParseTuple(_args, "O&", 391 OptResObj_Convert, &gdh)) 392 return NULL; 393 GDeviceChanged(gdh); 394 Py_INCREF(Py_None); 395 _res = Py_None; 396 return _res; 397 } 398 399 static PyObject *Qdoffs_AllowPurgePixels(PyObject *_self, PyObject *_args) 400 { 401 PyObject *_res = NULL; 402 PixMapHandle pm; 403 #ifndef AllowPurgePixels 404 PyMac_PRECHECK(AllowPurgePixels); 405 #endif 406 if (!PyArg_ParseTuple(_args, "O&", 407 ResObj_Convert, &pm)) 408 return NULL; 409 AllowPurgePixels(pm); 410 Py_INCREF(Py_None); 411 _res = Py_None; 412 return _res; 413 } 414 415 static PyObject *Qdoffs_NoPurgePixels(PyObject *_self, PyObject *_args) 416 { 417 PyObject *_res = NULL; 418 PixMapHandle pm; 419 #ifndef NoPurgePixels 420 PyMac_PRECHECK(NoPurgePixels); 421 #endif 422 if (!PyArg_ParseTuple(_args, "O&", 423 ResObj_Convert, &pm)) 424 return NULL; 425 NoPurgePixels(pm); 426 Py_INCREF(Py_None); 427 _res = Py_None; 428 return _res; 429 } 430 431 static PyObject *Qdoffs_GetPixelsState(PyObject *_self, PyObject *_args) 432 { 433 PyObject *_res = NULL; 434 GWorldFlags _rv; 435 PixMapHandle pm; 436 #ifndef GetPixelsState 437 PyMac_PRECHECK(GetPixelsState); 438 #endif 439 if (!PyArg_ParseTuple(_args, "O&", 440 ResObj_Convert, &pm)) 441 return NULL; 442 _rv = GetPixelsState(pm); 443 _res = Py_BuildValue("l", 444 _rv); 445 return _res; 446 } 447 448 static PyObject *Qdoffs_SetPixelsState(PyObject *_self, PyObject *_args) 449 { 450 PyObject *_res = NULL; 451 PixMapHandle pm; 452 GWorldFlags state; 453 #ifndef SetPixelsState 454 PyMac_PRECHECK(SetPixelsState); 455 #endif 456 if (!PyArg_ParseTuple(_args, "O&l", 457 ResObj_Convert, &pm, 458 &state)) 459 return NULL; 460 SetPixelsState(pm, 461 state); 462 Py_INCREF(Py_None); 463 _res = Py_None; 464 return _res; 465 } 466 467 static PyObject *Qdoffs_GetPixRowBytes(PyObject *_self, PyObject *_args) 468 { 469 PyObject *_res = NULL; 470 long _rv; 471 PixMapHandle pm; 472 #ifndef GetPixRowBytes 473 PyMac_PRECHECK(GetPixRowBytes); 474 #endif 475 if (!PyArg_ParseTuple(_args, "O&", 476 ResObj_Convert, &pm)) 477 return NULL; 478 _rv = GetPixRowBytes(pm); 479 _res = Py_BuildValue("l", 480 _rv); 481 return _res; 482 } 483 484 static PyObject *Qdoffs_NewScreenBuffer(PyObject *_self, PyObject *_args) 485 { 486 PyObject *_res = NULL; 487 QDErr _err; 488 Rect globalRect; 489 Boolean purgeable; 490 GDHandle gdh; 491 PixMapHandle offscreenPixMap; 492 #ifndef NewScreenBuffer 493 PyMac_PRECHECK(NewScreenBuffer); 494 #endif 495 if (!PyArg_ParseTuple(_args, "O&b", 496 PyMac_GetRect, &globalRect, 497 &purgeable)) 498 return NULL; 499 _err = NewScreenBuffer(&globalRect, 500 purgeable, 501 &gdh, 502 &offscreenPixMap); 503 if (_err != noErr) return PyMac_Error(_err); 504 _res = Py_BuildValue("O&O&", 505 ResObj_New, gdh, 506 ResObj_New, offscreenPixMap); 507 return _res; 508 } 509 510 static PyObject *Qdoffs_DisposeScreenBuffer(PyObject *_self, PyObject *_args) 511 { 512 PyObject *_res = NULL; 513 PixMapHandle offscreenPixMap; 514 #ifndef DisposeScreenBuffer 515 PyMac_PRECHECK(DisposeScreenBuffer); 516 #endif 517 if (!PyArg_ParseTuple(_args, "O&", 518 ResObj_Convert, &offscreenPixMap)) 519 return NULL; 520 DisposeScreenBuffer(offscreenPixMap); 521 Py_INCREF(Py_None); 522 _res = Py_None; 523 return _res; 524 } 525 526 static PyObject *Qdoffs_QDDone(PyObject *_self, PyObject *_args) 527 { 528 PyObject *_res = NULL; 529 Boolean _rv; 530 GrafPtr port; 531 #ifndef QDDone 532 PyMac_PRECHECK(QDDone); 533 #endif 534 if (!PyArg_ParseTuple(_args, "O&", 535 GrafObj_Convert, &port)) 536 return NULL; 537 _rv = QDDone(port); 538 _res = Py_BuildValue("b", 539 _rv); 540 return _res; 541 } 542 543 static PyObject *Qdoffs_OffscreenVersion(PyObject *_self, PyObject *_args) 544 { 545 PyObject *_res = NULL; 546 long _rv; 547 #ifndef OffscreenVersion 548 PyMac_PRECHECK(OffscreenVersion); 549 #endif 550 if (!PyArg_ParseTuple(_args, "")) 551 return NULL; 552 _rv = OffscreenVersion(); 553 _res = Py_BuildValue("l", 554 _rv); 555 return _res; 556 } 557 558 static PyObject *Qdoffs_NewTempScreenBuffer(PyObject *_self, PyObject *_args) 559 { 560 PyObject *_res = NULL; 561 QDErr _err; 562 Rect globalRect; 563 Boolean purgeable; 564 GDHandle gdh; 565 PixMapHandle offscreenPixMap; 566 #ifndef NewTempScreenBuffer 567 PyMac_PRECHECK(NewTempScreenBuffer); 568 #endif 569 if (!PyArg_ParseTuple(_args, "O&b", 570 PyMac_GetRect, &globalRect, 571 &purgeable)) 572 return NULL; 573 _err = NewTempScreenBuffer(&globalRect, 574 purgeable, 575 &gdh, 576 &offscreenPixMap); 577 if (_err != noErr) return PyMac_Error(_err); 578 _res = Py_BuildValue("O&O&", 579 ResObj_New, gdh, 580 ResObj_New, offscreenPixMap); 581 return _res; 582 } 583 584 static PyObject *Qdoffs_PixMap32Bit(PyObject *_self, PyObject *_args) 585 { 586 PyObject *_res = NULL; 587 Boolean _rv; 588 PixMapHandle pmHandle; 589 #ifndef PixMap32Bit 590 PyMac_PRECHECK(PixMap32Bit); 591 #endif 592 if (!PyArg_ParseTuple(_args, "O&", 593 ResObj_Convert, &pmHandle)) 594 return NULL; 595 _rv = PixMap32Bit(pmHandle); 596 _res = Py_BuildValue("b", 597 _rv); 598 return _res; 599 } 600 601 static PyObject *Qdoffs_GetPixMapBytes(PyObject *_self, PyObject *_args) 602 { 603 PyObject *_res = NULL; 604 605 PixMapHandle pm; 606 int from, length; 607 char *cp; 608 609 if ( !PyArg_ParseTuple(_args, "O&ii", ResObj_Convert, &pm, &from, &length) ) 610 return NULL; 611 cp = GetPixBaseAddr(pm)+from; 612 _res = PyString_FromStringAndSize(cp, length); 613 return _res; 614 615 } 616 617 static PyObject *Qdoffs_PutPixMapBytes(PyObject *_self, PyObject *_args) 618 { 619 PyObject *_res = NULL; 620 621 PixMapHandle pm; 622 int from, length; 623 char *cp, *icp; 624 625 if ( !PyArg_ParseTuple(_args, "O&is#", ResObj_Convert, &pm, &from, &icp, &length) ) 626 return NULL; 627 cp = GetPixBaseAddr(pm)+from; 628 memcpy(cp, icp, length); 629 Py_INCREF(Py_None); 630 _res = Py_None; 631 return _res; 632 633 } 634 #endif /* __LP64__ */ 635 636 static PyMethodDef Qdoffs_methods[] = { 637 #if !defined(__LP64__) && !defined(MAC_OS_X_VERSION_10_7) 638 {"NewGWorld", (PyCFunction)Qdoffs_NewGWorld, 1, 639 PyDoc_STR("(short PixelDepth, Rect boundsRect, CTabHandle cTable, GDHandle aGDevice, GWorldFlags flags) -> (GWorldPtr offscreenGWorld)")}, 640 {"LockPixels", (PyCFunction)Qdoffs_LockPixels, 1, 641 PyDoc_STR("(PixMapHandle pm) -> (Boolean _rv)")}, 642 {"UnlockPixels", (PyCFunction)Qdoffs_UnlockPixels, 1, 643 PyDoc_STR("(PixMapHandle pm) -> None")}, 644 {"UpdateGWorld", (PyCFunction)Qdoffs_UpdateGWorld, 1, 645 PyDoc_STR("(short pixelDepth, Rect boundsRect, CTabHandle cTable, GDHandle aGDevice, GWorldFlags flags) -> (GWorldFlags _rv, GWorldPtr offscreenGWorld)")}, 646 {"GetGWorld", (PyCFunction)Qdoffs_GetGWorld, 1, 647 PyDoc_STR("() -> (CGrafPtr port, GDHandle gdh)")}, 648 {"SetGWorld", (PyCFunction)Qdoffs_SetGWorld, 1, 649 PyDoc_STR("(CGrafPtr port, GDHandle gdh) -> None")}, 650 {"CTabChanged", (PyCFunction)Qdoffs_CTabChanged, 1, 651 PyDoc_STR("(CTabHandle ctab) -> None")}, 652 {"PixPatChanged", (PyCFunction)Qdoffs_PixPatChanged, 1, 653 PyDoc_STR("(PixPatHandle ppat) -> None")}, 654 {"PortChanged", (PyCFunction)Qdoffs_PortChanged, 1, 655 PyDoc_STR("(GrafPtr port) -> None")}, 656 {"GDeviceChanged", (PyCFunction)Qdoffs_GDeviceChanged, 1, 657 PyDoc_STR("(GDHandle gdh) -> None")}, 658 {"AllowPurgePixels", (PyCFunction)Qdoffs_AllowPurgePixels, 1, 659 PyDoc_STR("(PixMapHandle pm) -> None")}, 660 {"NoPurgePixels", (PyCFunction)Qdoffs_NoPurgePixels, 1, 661 PyDoc_STR("(PixMapHandle pm) -> None")}, 662 {"GetPixelsState", (PyCFunction)Qdoffs_GetPixelsState, 1, 663 PyDoc_STR("(PixMapHandle pm) -> (GWorldFlags _rv)")}, 664 {"SetPixelsState", (PyCFunction)Qdoffs_SetPixelsState, 1, 665 PyDoc_STR("(PixMapHandle pm, GWorldFlags state) -> None")}, 666 {"GetPixRowBytes", (PyCFunction)Qdoffs_GetPixRowBytes, 1, 667 PyDoc_STR("(PixMapHandle pm) -> (long _rv)")}, 668 {"NewScreenBuffer", (PyCFunction)Qdoffs_NewScreenBuffer, 1, 669 PyDoc_STR("(Rect globalRect, Boolean purgeable) -> (GDHandle gdh, PixMapHandle offscreenPixMap)")}, 670 {"DisposeScreenBuffer", (PyCFunction)Qdoffs_DisposeScreenBuffer, 1, 671 PyDoc_STR("(PixMapHandle offscreenPixMap) -> None")}, 672 {"QDDone", (PyCFunction)Qdoffs_QDDone, 1, 673 PyDoc_STR("(GrafPtr port) -> (Boolean _rv)")}, 674 {"OffscreenVersion", (PyCFunction)Qdoffs_OffscreenVersion, 1, 675 PyDoc_STR("() -> (long _rv)")}, 676 {"NewTempScreenBuffer", (PyCFunction)Qdoffs_NewTempScreenBuffer, 1, 677 PyDoc_STR("(Rect globalRect, Boolean purgeable) -> (GDHandle gdh, PixMapHandle offscreenPixMap)")}, 678 {"PixMap32Bit", (PyCFunction)Qdoffs_PixMap32Bit, 1, 679 PyDoc_STR("(PixMapHandle pmHandle) -> (Boolean _rv)")}, 680 {"GetPixMapBytes", (PyCFunction)Qdoffs_GetPixMapBytes, 1, 681 PyDoc_STR("(pixmap, int start, int size) -> string. Return bytes from the pixmap")}, 682 {"PutPixMapBytes", (PyCFunction)Qdoffs_PutPixMapBytes, 1, 683 PyDoc_STR("(pixmap, int start, string data). Store bytes into the pixmap")}, 684 #endif /* __LP64__ */ 685 {NULL, NULL, 0} 686 }; 687 688 689 690 691 void init_Qdoffs(void) 692 { 693 PyObject *m; 694 #if !defined(__LP64__) && !defined(MAC_OS_X_VERSION_10_7) 695 PyObject *d; 696 697 698 699 PyMac_INIT_TOOLBOX_OBJECT_NEW(GWorldPtr, GWorldObj_New); 700 PyMac_INIT_TOOLBOX_OBJECT_CONVERT(GWorldPtr, GWorldObj_Convert); 701 702 #endif /* __LP64__ */ 703 704 m = Py_InitModule("_Qdoffs", Qdoffs_methods); 705 #if !defined(__LP64__) && !defined(MAC_OS_X_VERSION_10_7) 706 d = PyModule_GetDict(m); 707 Qdoffs_Error = PyMac_GetOSErrException(); 708 if (Qdoffs_Error == NULL || 709 PyDict_SetItemString(d, "Error", Qdoffs_Error) != 0) 710 return; 711 GWorld_Type.ob_type = &PyType_Type; 712 if (PyType_Ready(&GWorld_Type) < 0) return; 713 Py_INCREF(&GWorld_Type); 714 PyModule_AddObject(m, "GWorld", (PyObject *)&GWorld_Type); 715 /* Backward-compatible name */ 716 Py_INCREF(&GWorld_Type); 717 PyModule_AddObject(m, "GWorldType", (PyObject *)&GWorld_Type); 718 #endif /* __LP64__ */ 719 } 720 721 /* ======================= End module _Qdoffs ======================= */ 722 723