]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/python/contrib/Mac/Modules/cg/_CGmodule.c
Inital import
[l4.git] / l4 / pkg / python / contrib / Mac / Modules / cg / _CGmodule.c
1
2 /* =========================== Module _CG =========================== */
3
4 #include "Python.h"
5
6
7
8 #include "pymactoolbox.h"
9
10 /* Macro to test whether a weak-loaded CFM function exists */
11 #define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL )  {\
12         PyErr_SetString(PyExc_NotImplementedError, \
13         "Not available in this shared library/OS version"); \
14         return NULL; \
15     }} while(0)
16
17
18 #include <ApplicationServices/ApplicationServices.h>
19
20 extern int GrafObj_Convert(PyObject *, GrafPtr *);
21
22 /*
23 ** Manual converters
24 */
25
26 PyObject *CGPoint_New(CGPoint *itself)
27 {
28
29         return Py_BuildValue("(ff)",
30                         itself->x,
31                         itself->y);
32 }
33
34 int
35 CGPoint_Convert(PyObject *v, CGPoint *p_itself)
36 {
37         if( !PyArg_Parse(v, "(ff)",
38                         &p_itself->x,
39                         &p_itself->y) )
40                 return 0;
41         return 1;
42 }
43
44 PyObject *CGRect_New(CGRect *itself)
45 {
46
47         return Py_BuildValue("(ffff)",
48                         itself->origin.x,
49                         itself->origin.y,
50                         itself->size.width,
51                         itself->size.height);
52 }
53
54 int
55 CGRect_Convert(PyObject *v, CGRect *p_itself)
56 {
57         if( !PyArg_Parse(v, "(ffff)",
58                         &p_itself->origin.x,
59                         &p_itself->origin.y,
60                         &p_itself->size.width,
61                         &p_itself->size.height) )
62                 return 0;
63         return 1;
64 }
65
66 PyObject *CGAffineTransform_New(CGAffineTransform *itself)
67 {
68
69         return Py_BuildValue("(ffffff)",
70                         itself->a,
71                         itself->b,
72                         itself->c,
73                         itself->d,
74                         itself->tx,
75                         itself->ty);
76 }
77
78 int
79 CGAffineTransform_Convert(PyObject *v, CGAffineTransform *p_itself)
80 {
81         if( !PyArg_Parse(v, "(ffffff)",
82                         &p_itself->a,
83                         &p_itself->b,
84                         &p_itself->c,
85                         &p_itself->d,
86                         &p_itself->tx,
87                         &p_itself->ty) )
88                 return 0;
89         return 1;
90 }
91
92 static PyObject *CG_Error;
93
94 /* -------------------- Object type CGContextRef -------------------- */
95
96 PyTypeObject CGContextRef_Type;
97
98 #define CGContextRefObj_Check(x) ((x)->ob_type == &CGContextRef_Type || PyObject_TypeCheck((x), &CGContextRef_Type))
99
100 typedef struct CGContextRefObject {
101         PyObject_HEAD
102         CGContextRef ob_itself;
103 } CGContextRefObject;
104
105 PyObject *CGContextRefObj_New(CGContextRef itself)
106 {
107         CGContextRefObject *it;
108         it = PyObject_NEW(CGContextRefObject, &CGContextRef_Type);
109         if (it == NULL) return NULL;
110         it->ob_itself = itself;
111         return (PyObject *)it;
112 }
113
114 int CGContextRefObj_Convert(PyObject *v, CGContextRef *p_itself)
115 {
116         if (!CGContextRefObj_Check(v))
117         {
118                 PyErr_SetString(PyExc_TypeError, "CGContextRef required");
119                 return 0;
120         }
121         *p_itself = ((CGContextRefObject *)v)->ob_itself;
122         return 1;
123 }
124
125 static void CGContextRefObj_dealloc(CGContextRefObject *self)
126 {
127         CGContextRelease(self->ob_itself);
128         self->ob_type->tp_free((PyObject *)self);
129 }
130
131 static PyObject *CGContextRefObj_CGContextSaveGState(CGContextRefObject *_self, PyObject *_args)
132 {
133         PyObject *_res = NULL;
134         if (!PyArg_ParseTuple(_args, ""))
135                 return NULL;
136         CGContextSaveGState(_self->ob_itself);
137         Py_INCREF(Py_None);
138         _res = Py_None;
139         return _res;
140 }
141
142 static PyObject *CGContextRefObj_CGContextRestoreGState(CGContextRefObject *_self, PyObject *_args)
143 {
144         PyObject *_res = NULL;
145         if (!PyArg_ParseTuple(_args, ""))
146                 return NULL;
147         CGContextRestoreGState(_self->ob_itself);
148         Py_INCREF(Py_None);
149         _res = Py_None;
150         return _res;
151 }
152
153 static PyObject *CGContextRefObj_CGContextScaleCTM(CGContextRefObject *_self, PyObject *_args)
154 {
155         PyObject *_res = NULL;
156         float sx;
157         float sy;
158         if (!PyArg_ParseTuple(_args, "ff",
159                               &sx,
160                               &sy))
161                 return NULL;
162         CGContextScaleCTM(_self->ob_itself,
163                           sx,
164                           sy);
165         Py_INCREF(Py_None);
166         _res = Py_None;
167         return _res;
168 }
169
170 static PyObject *CGContextRefObj_CGContextTranslateCTM(CGContextRefObject *_self, PyObject *_args)
171 {
172         PyObject *_res = NULL;
173         float tx;
174         float ty;
175         if (!PyArg_ParseTuple(_args, "ff",
176                               &tx,
177                               &ty))
178                 return NULL;
179         CGContextTranslateCTM(_self->ob_itself,
180                               tx,
181                               ty);
182         Py_INCREF(Py_None);
183         _res = Py_None;
184         return _res;
185 }
186
187 static PyObject *CGContextRefObj_CGContextRotateCTM(CGContextRefObject *_self, PyObject *_args)
188 {
189         PyObject *_res = NULL;
190         float angle;
191         if (!PyArg_ParseTuple(_args, "f",
192                               &angle))
193                 return NULL;
194         CGContextRotateCTM(_self->ob_itself,
195                            angle);
196         Py_INCREF(Py_None);
197         _res = Py_None;
198         return _res;
199 }
200
201 static PyObject *CGContextRefObj_CGContextConcatCTM(CGContextRefObject *_self, PyObject *_args)
202 {
203         PyObject *_res = NULL;
204         CGAffineTransform transform;
205         if (!PyArg_ParseTuple(_args, "O&",
206                               CGAffineTransform_Convert, &transform))
207                 return NULL;
208         CGContextConcatCTM(_self->ob_itself,
209                            transform);
210         Py_INCREF(Py_None);
211         _res = Py_None;
212         return _res;
213 }
214
215 static PyObject *CGContextRefObj_CGContextGetCTM(CGContextRefObject *_self, PyObject *_args)
216 {
217         PyObject *_res = NULL;
218         CGAffineTransform _rv;
219         if (!PyArg_ParseTuple(_args, ""))
220                 return NULL;
221         _rv = CGContextGetCTM(_self->ob_itself);
222         _res = Py_BuildValue("O&",
223                              CGAffineTransform_New, &_rv);
224         return _res;
225 }
226
227 static PyObject *CGContextRefObj_CGContextSetLineWidth(CGContextRefObject *_self, PyObject *_args)
228 {
229         PyObject *_res = NULL;
230         float width;
231         if (!PyArg_ParseTuple(_args, "f",
232                               &width))
233                 return NULL;
234         CGContextSetLineWidth(_self->ob_itself,
235                               width);
236         Py_INCREF(Py_None);
237         _res = Py_None;
238         return _res;
239 }
240
241 static PyObject *CGContextRefObj_CGContextSetLineCap(CGContextRefObject *_self, PyObject *_args)
242 {
243         PyObject *_res = NULL;
244         int cap;
245         if (!PyArg_ParseTuple(_args, "i",
246                               &cap))
247                 return NULL;
248         CGContextSetLineCap(_self->ob_itself,
249                             cap);
250         Py_INCREF(Py_None);
251         _res = Py_None;
252         return _res;
253 }
254
255 static PyObject *CGContextRefObj_CGContextSetLineJoin(CGContextRefObject *_self, PyObject *_args)
256 {
257         PyObject *_res = NULL;
258         int join;
259         if (!PyArg_ParseTuple(_args, "i",
260                               &join))
261                 return NULL;
262         CGContextSetLineJoin(_self->ob_itself,
263                              join);
264         Py_INCREF(Py_None);
265         _res = Py_None;
266         return _res;
267 }
268
269 static PyObject *CGContextRefObj_CGContextSetMiterLimit(CGContextRefObject *_self, PyObject *_args)
270 {
271         PyObject *_res = NULL;
272         float limit;
273         if (!PyArg_ParseTuple(_args, "f",
274                               &limit))
275                 return NULL;
276         CGContextSetMiterLimit(_self->ob_itself,
277                                limit);
278         Py_INCREF(Py_None);
279         _res = Py_None;
280         return _res;
281 }
282
283 static PyObject *CGContextRefObj_CGContextSetFlatness(CGContextRefObject *_self, PyObject *_args)
284 {
285         PyObject *_res = NULL;
286         float flatness;
287         if (!PyArg_ParseTuple(_args, "f",
288                               &flatness))
289                 return NULL;
290         CGContextSetFlatness(_self->ob_itself,
291                              flatness);
292         Py_INCREF(Py_None);
293         _res = Py_None;
294         return _res;
295 }
296
297 static PyObject *CGContextRefObj_CGContextSetAlpha(CGContextRefObject *_self, PyObject *_args)
298 {
299         PyObject *_res = NULL;
300         float alpha;
301         if (!PyArg_ParseTuple(_args, "f",
302                               &alpha))
303                 return NULL;
304         CGContextSetAlpha(_self->ob_itself,
305                           alpha);
306         Py_INCREF(Py_None);
307         _res = Py_None;
308         return _res;
309 }
310
311 static PyObject *CGContextRefObj_CGContextBeginPath(CGContextRefObject *_self, PyObject *_args)
312 {
313         PyObject *_res = NULL;
314         if (!PyArg_ParseTuple(_args, ""))
315                 return NULL;
316         CGContextBeginPath(_self->ob_itself);
317         Py_INCREF(Py_None);
318         _res = Py_None;
319         return _res;
320 }
321
322 static PyObject *CGContextRefObj_CGContextMoveToPoint(CGContextRefObject *_self, PyObject *_args)
323 {
324         PyObject *_res = NULL;
325         float x;
326         float y;
327         if (!PyArg_ParseTuple(_args, "ff",
328                               &x,
329                               &y))
330                 return NULL;
331         CGContextMoveToPoint(_self->ob_itself,
332                              x,
333                              y);
334         Py_INCREF(Py_None);
335         _res = Py_None;
336         return _res;
337 }
338
339 static PyObject *CGContextRefObj_CGContextAddLineToPoint(CGContextRefObject *_self, PyObject *_args)
340 {
341         PyObject *_res = NULL;
342         float x;
343         float y;
344         if (!PyArg_ParseTuple(_args, "ff",
345                               &x,
346                               &y))
347                 return NULL;
348         CGContextAddLineToPoint(_self->ob_itself,
349                                 x,
350                                 y);
351         Py_INCREF(Py_None);
352         _res = Py_None;
353         return _res;
354 }
355
356 static PyObject *CGContextRefObj_CGContextAddCurveToPoint(CGContextRefObject *_self, PyObject *_args)
357 {
358         PyObject *_res = NULL;
359         float cp1x;
360         float cp1y;
361         float cp2x;
362         float cp2y;
363         float x;
364         float y;
365         if (!PyArg_ParseTuple(_args, "ffffff",
366                               &cp1x,
367                               &cp1y,
368                               &cp2x,
369                               &cp2y,
370                               &x,
371                               &y))
372                 return NULL;
373         CGContextAddCurveToPoint(_self->ob_itself,
374                                  cp1x,
375                                  cp1y,
376                                  cp2x,
377                                  cp2y,
378                                  x,
379                                  y);
380         Py_INCREF(Py_None);
381         _res = Py_None;
382         return _res;
383 }
384
385 static PyObject *CGContextRefObj_CGContextAddQuadCurveToPoint(CGContextRefObject *_self, PyObject *_args)
386 {
387         PyObject *_res = NULL;
388         float cpx;
389         float cpy;
390         float x;
391         float y;
392         if (!PyArg_ParseTuple(_args, "ffff",
393                               &cpx,
394                               &cpy,
395                               &x,
396                               &y))
397                 return NULL;
398         CGContextAddQuadCurveToPoint(_self->ob_itself,
399                                      cpx,
400                                      cpy,
401                                      x,
402                                      y);
403         Py_INCREF(Py_None);
404         _res = Py_None;
405         return _res;
406 }
407
408 static PyObject *CGContextRefObj_CGContextClosePath(CGContextRefObject *_self, PyObject *_args)
409 {
410         PyObject *_res = NULL;
411         if (!PyArg_ParseTuple(_args, ""))
412                 return NULL;
413         CGContextClosePath(_self->ob_itself);
414         Py_INCREF(Py_None);
415         _res = Py_None;
416         return _res;
417 }
418
419 static PyObject *CGContextRefObj_CGContextAddRect(CGContextRefObject *_self, PyObject *_args)
420 {
421         PyObject *_res = NULL;
422         CGRect rect;
423         if (!PyArg_ParseTuple(_args, "O&",
424                               CGRect_Convert, &rect))
425                 return NULL;
426         CGContextAddRect(_self->ob_itself,
427                          rect);
428         Py_INCREF(Py_None);
429         _res = Py_None;
430         return _res;
431 }
432
433 static PyObject *CGContextRefObj_CGContextAddArc(CGContextRefObject *_self, PyObject *_args)
434 {
435         PyObject *_res = NULL;
436         float x;
437         float y;
438         float radius;
439         float startAngle;
440         float endAngle;
441         int clockwise;
442         if (!PyArg_ParseTuple(_args, "fffffi",
443                               &x,
444                               &y,
445                               &radius,
446                               &startAngle,
447                               &endAngle,
448                               &clockwise))
449                 return NULL;
450         CGContextAddArc(_self->ob_itself,
451                         x,
452                         y,
453                         radius,
454                         startAngle,
455                         endAngle,
456                         clockwise);
457         Py_INCREF(Py_None);
458         _res = Py_None;
459         return _res;
460 }
461
462 static PyObject *CGContextRefObj_CGContextAddArcToPoint(CGContextRefObject *_self, PyObject *_args)
463 {
464         PyObject *_res = NULL;
465         float x1;
466         float y1;
467         float x2;
468         float y2;
469         float radius;
470         if (!PyArg_ParseTuple(_args, "fffff",
471                               &x1,
472                               &y1,
473                               &x2,
474                               &y2,
475                               &radius))
476                 return NULL;
477         CGContextAddArcToPoint(_self->ob_itself,
478                                x1,
479                                y1,
480                                x2,
481                                y2,
482                                radius);
483         Py_INCREF(Py_None);
484         _res = Py_None;
485         return _res;
486 }
487
488 static PyObject *CGContextRefObj_CGContextIsPathEmpty(CGContextRefObject *_self, PyObject *_args)
489 {
490         PyObject *_res = NULL;
491         int _rv;
492         if (!PyArg_ParseTuple(_args, ""))
493                 return NULL;
494         _rv = CGContextIsPathEmpty(_self->ob_itself);
495         _res = Py_BuildValue("i",
496                              _rv);
497         return _res;
498 }
499
500 static PyObject *CGContextRefObj_CGContextGetPathCurrentPoint(CGContextRefObject *_self, PyObject *_args)
501 {
502         PyObject *_res = NULL;
503         CGPoint _rv;
504         if (!PyArg_ParseTuple(_args, ""))
505                 return NULL;
506         _rv = CGContextGetPathCurrentPoint(_self->ob_itself);
507         _res = Py_BuildValue("O&",
508                              CGPoint_New, &_rv);
509         return _res;
510 }
511
512 static PyObject *CGContextRefObj_CGContextGetPathBoundingBox(CGContextRefObject *_self, PyObject *_args)
513 {
514         PyObject *_res = NULL;
515         CGRect _rv;
516         if (!PyArg_ParseTuple(_args, ""))
517                 return NULL;
518         _rv = CGContextGetPathBoundingBox(_self->ob_itself);
519         _res = Py_BuildValue("O&",
520                              CGRect_New, &_rv);
521         return _res;
522 }
523
524 static PyObject *CGContextRefObj_CGContextDrawPath(CGContextRefObject *_self, PyObject *_args)
525 {
526         PyObject *_res = NULL;
527         int mode;
528         if (!PyArg_ParseTuple(_args, "i",
529                               &mode))
530                 return NULL;
531         CGContextDrawPath(_self->ob_itself,
532                           mode);
533         Py_INCREF(Py_None);
534         _res = Py_None;
535         return _res;
536 }
537
538 static PyObject *CGContextRefObj_CGContextFillPath(CGContextRefObject *_self, PyObject *_args)
539 {
540         PyObject *_res = NULL;
541         if (!PyArg_ParseTuple(_args, ""))
542                 return NULL;
543         CGContextFillPath(_self->ob_itself);
544         Py_INCREF(Py_None);
545         _res = Py_None;
546         return _res;
547 }
548
549 static PyObject *CGContextRefObj_CGContextEOFillPath(CGContextRefObject *_self, PyObject *_args)
550 {
551         PyObject *_res = NULL;
552         if (!PyArg_ParseTuple(_args, ""))
553                 return NULL;
554         CGContextEOFillPath(_self->ob_itself);
555         Py_INCREF(Py_None);
556         _res = Py_None;
557         return _res;
558 }
559
560 static PyObject *CGContextRefObj_CGContextStrokePath(CGContextRefObject *_self, PyObject *_args)
561 {
562         PyObject *_res = NULL;
563         if (!PyArg_ParseTuple(_args, ""))
564                 return NULL;
565         CGContextStrokePath(_self->ob_itself);
566         Py_INCREF(Py_None);
567         _res = Py_None;
568         return _res;
569 }
570
571 static PyObject *CGContextRefObj_CGContextFillRect(CGContextRefObject *_self, PyObject *_args)
572 {
573         PyObject *_res = NULL;
574         CGRect rect;
575         if (!PyArg_ParseTuple(_args, "O&",
576                               CGRect_Convert, &rect))
577                 return NULL;
578         CGContextFillRect(_self->ob_itself,
579                           rect);
580         Py_INCREF(Py_None);
581         _res = Py_None;
582         return _res;
583 }
584
585 static PyObject *CGContextRefObj_CGContextStrokeRect(CGContextRefObject *_self, PyObject *_args)
586 {
587         PyObject *_res = NULL;
588         CGRect rect;
589         if (!PyArg_ParseTuple(_args, "O&",
590                               CGRect_Convert, &rect))
591                 return NULL;
592         CGContextStrokeRect(_self->ob_itself,
593                             rect);
594         Py_INCREF(Py_None);
595         _res = Py_None;
596         return _res;
597 }
598
599 static PyObject *CGContextRefObj_CGContextStrokeRectWithWidth(CGContextRefObject *_self, PyObject *_args)
600 {
601         PyObject *_res = NULL;
602         CGRect rect;
603         float width;
604         if (!PyArg_ParseTuple(_args, "O&f",
605                               CGRect_Convert, &rect,
606                               &width))
607                 return NULL;
608         CGContextStrokeRectWithWidth(_self->ob_itself,
609                                      rect,
610                                      width);
611         Py_INCREF(Py_None);
612         _res = Py_None;
613         return _res;
614 }
615
616 static PyObject *CGContextRefObj_CGContextClearRect(CGContextRefObject *_self, PyObject *_args)
617 {
618         PyObject *_res = NULL;
619         CGRect rect;
620         if (!PyArg_ParseTuple(_args, "O&",
621                               CGRect_Convert, &rect))
622                 return NULL;
623         CGContextClearRect(_self->ob_itself,
624                            rect);
625         Py_INCREF(Py_None);
626         _res = Py_None;
627         return _res;
628 }
629
630 static PyObject *CGContextRefObj_CGContextClip(CGContextRefObject *_self, PyObject *_args)
631 {
632         PyObject *_res = NULL;
633         if (!PyArg_ParseTuple(_args, ""))
634                 return NULL;
635         CGContextClip(_self->ob_itself);
636         Py_INCREF(Py_None);
637         _res = Py_None;
638         return _res;
639 }
640
641 static PyObject *CGContextRefObj_CGContextEOClip(CGContextRefObject *_self, PyObject *_args)
642 {
643         PyObject *_res = NULL;
644         if (!PyArg_ParseTuple(_args, ""))
645                 return NULL;
646         CGContextEOClip(_self->ob_itself);
647         Py_INCREF(Py_None);
648         _res = Py_None;
649         return _res;
650 }
651
652 static PyObject *CGContextRefObj_CGContextClipToRect(CGContextRefObject *_self, PyObject *_args)
653 {
654         PyObject *_res = NULL;
655         CGRect rect;
656         if (!PyArg_ParseTuple(_args, "O&",
657                               CGRect_Convert, &rect))
658                 return NULL;
659         CGContextClipToRect(_self->ob_itself,
660                             rect);
661         Py_INCREF(Py_None);
662         _res = Py_None;
663         return _res;
664 }
665
666 static PyObject *CGContextRefObj_CGContextSetGrayFillColor(CGContextRefObject *_self, PyObject *_args)
667 {
668         PyObject *_res = NULL;
669         float gray;
670         float alpha;
671         if (!PyArg_ParseTuple(_args, "ff",
672                               &gray,
673                               &alpha))
674                 return NULL;
675         CGContextSetGrayFillColor(_self->ob_itself,
676                                   gray,
677                                   alpha);
678         Py_INCREF(Py_None);
679         _res = Py_None;
680         return _res;
681 }
682
683 static PyObject *CGContextRefObj_CGContextSetGrayStrokeColor(CGContextRefObject *_self, PyObject *_args)
684 {
685         PyObject *_res = NULL;
686         float gray;
687         float alpha;
688         if (!PyArg_ParseTuple(_args, "ff",
689                               &gray,
690                               &alpha))
691                 return NULL;
692         CGContextSetGrayStrokeColor(_self->ob_itself,
693                                     gray,
694                                     alpha);
695         Py_INCREF(Py_None);
696         _res = Py_None;
697         return _res;
698 }
699
700 static PyObject *CGContextRefObj_CGContextSetRGBFillColor(CGContextRefObject *_self, PyObject *_args)
701 {
702         PyObject *_res = NULL;
703         float red;
704         float green;
705         float blue;
706         float alpha;
707         if (!PyArg_ParseTuple(_args, "ffff",
708                               &red,
709                               &green,
710                               &blue,
711                               &alpha))
712                 return NULL;
713         CGContextSetRGBFillColor(_self->ob_itself,
714                                  red,
715                                  green,
716                                  blue,
717                                  alpha);
718         Py_INCREF(Py_None);
719         _res = Py_None;
720         return _res;
721 }
722
723 static PyObject *CGContextRefObj_CGContextSetRGBStrokeColor(CGContextRefObject *_self, PyObject *_args)
724 {
725         PyObject *_res = NULL;
726         float red;
727         float green;
728         float blue;
729         float alpha;
730         if (!PyArg_ParseTuple(_args, "ffff",
731                               &red,
732                               &green,
733                               &blue,
734                               &alpha))
735                 return NULL;
736         CGContextSetRGBStrokeColor(_self->ob_itself,
737                                    red,
738                                    green,
739                                    blue,
740                                    alpha);
741         Py_INCREF(Py_None);
742         _res = Py_None;
743         return _res;
744 }
745
746 static PyObject *CGContextRefObj_CGContextSetCMYKFillColor(CGContextRefObject *_self, PyObject *_args)
747 {
748         PyObject *_res = NULL;
749         float cyan;
750         float magenta;
751         float yellow;
752         float black;
753         float alpha;
754         if (!PyArg_ParseTuple(_args, "fffff",
755                               &cyan,
756                               &magenta,
757                               &yellow,
758                               &black,
759                               &alpha))
760                 return NULL;
761         CGContextSetCMYKFillColor(_self->ob_itself,
762                                   cyan,
763                                   magenta,
764                                   yellow,
765                                   black,
766                                   alpha);
767         Py_INCREF(Py_None);
768         _res = Py_None;
769         return _res;
770 }
771
772 static PyObject *CGContextRefObj_CGContextSetCMYKStrokeColor(CGContextRefObject *_self, PyObject *_args)
773 {
774         PyObject *_res = NULL;
775         float cyan;
776         float magenta;
777         float yellow;
778         float black;
779         float alpha;
780         if (!PyArg_ParseTuple(_args, "fffff",
781                               &cyan,
782                               &magenta,
783                               &yellow,
784                               &black,
785                               &alpha))
786                 return NULL;
787         CGContextSetCMYKStrokeColor(_self->ob_itself,
788                                     cyan,
789                                     magenta,
790                                     yellow,
791                                     black,
792                                     alpha);
793         Py_INCREF(Py_None);
794         _res = Py_None;
795         return _res;
796 }
797
798 static PyObject *CGContextRefObj_CGContextGetInterpolationQuality(CGContextRefObject *_self, PyObject *_args)
799 {
800         PyObject *_res = NULL;
801         int _rv;
802         if (!PyArg_ParseTuple(_args, ""))
803                 return NULL;
804         _rv = CGContextGetInterpolationQuality(_self->ob_itself);
805         _res = Py_BuildValue("i",
806                              _rv);
807         return _res;
808 }
809
810 static PyObject *CGContextRefObj_CGContextSetInterpolationQuality(CGContextRefObject *_self, PyObject *_args)
811 {
812         PyObject *_res = NULL;
813         int quality;
814         if (!PyArg_ParseTuple(_args, "i",
815                               &quality))
816                 return NULL;
817         CGContextSetInterpolationQuality(_self->ob_itself,
818                                          quality);
819         Py_INCREF(Py_None);
820         _res = Py_None;
821         return _res;
822 }
823
824 static PyObject *CGContextRefObj_CGContextSetCharacterSpacing(CGContextRefObject *_self, PyObject *_args)
825 {
826         PyObject *_res = NULL;
827         float spacing;
828         if (!PyArg_ParseTuple(_args, "f",
829                               &spacing))
830                 return NULL;
831         CGContextSetCharacterSpacing(_self->ob_itself,
832                                      spacing);
833         Py_INCREF(Py_None);
834         _res = Py_None;
835         return _res;
836 }
837
838 static PyObject *CGContextRefObj_CGContextSetTextPosition(CGContextRefObject *_self, PyObject *_args)
839 {
840         PyObject *_res = NULL;
841         float x;
842         float y;
843         if (!PyArg_ParseTuple(_args, "ff",
844                               &x,
845                               &y))
846                 return NULL;
847         CGContextSetTextPosition(_self->ob_itself,
848                                  x,
849                                  y);
850         Py_INCREF(Py_None);
851         _res = Py_None;
852         return _res;
853 }
854
855 static PyObject *CGContextRefObj_CGContextGetTextPosition(CGContextRefObject *_self, PyObject *_args)
856 {
857         PyObject *_res = NULL;
858         CGPoint _rv;
859         if (!PyArg_ParseTuple(_args, ""))
860                 return NULL;
861         _rv = CGContextGetTextPosition(_self->ob_itself);
862         _res = Py_BuildValue("O&",
863                              CGPoint_New, &_rv);
864         return _res;
865 }
866
867 static PyObject *CGContextRefObj_CGContextSetTextMatrix(CGContextRefObject *_self, PyObject *_args)
868 {
869         PyObject *_res = NULL;
870         CGAffineTransform transform;
871         if (!PyArg_ParseTuple(_args, "O&",
872                               CGAffineTransform_Convert, &transform))
873                 return NULL;
874         CGContextSetTextMatrix(_self->ob_itself,
875                                transform);
876         Py_INCREF(Py_None);
877         _res = Py_None;
878         return _res;
879 }
880
881 static PyObject *CGContextRefObj_CGContextGetTextMatrix(CGContextRefObject *_self, PyObject *_args)
882 {
883         PyObject *_res = NULL;
884         CGAffineTransform _rv;
885         if (!PyArg_ParseTuple(_args, ""))
886                 return NULL;
887         _rv = CGContextGetTextMatrix(_self->ob_itself);
888         _res = Py_BuildValue("O&",
889                              CGAffineTransform_New, &_rv);
890         return _res;
891 }
892
893 static PyObject *CGContextRefObj_CGContextSetTextDrawingMode(CGContextRefObject *_self, PyObject *_args)
894 {
895         PyObject *_res = NULL;
896         int mode;
897         if (!PyArg_ParseTuple(_args, "i",
898                               &mode))
899                 return NULL;
900         CGContextSetTextDrawingMode(_self->ob_itself,
901                                     mode);
902         Py_INCREF(Py_None);
903         _res = Py_None;
904         return _res;
905 }
906
907 static PyObject *CGContextRefObj_CGContextSetFontSize(CGContextRefObject *_self, PyObject *_args)
908 {
909         PyObject *_res = NULL;
910         float size;
911         if (!PyArg_ParseTuple(_args, "f",
912                               &size))
913                 return NULL;
914         CGContextSetFontSize(_self->ob_itself,
915                              size);
916         Py_INCREF(Py_None);
917         _res = Py_None;
918         return _res;
919 }
920
921 static PyObject *CGContextRefObj_CGContextSelectFont(CGContextRefObject *_self, PyObject *_args)
922 {
923         PyObject *_res = NULL;
924         char * name;
925         float size;
926         int textEncoding;
927         if (!PyArg_ParseTuple(_args, "sfi",
928                               &name,
929                               &size,
930                               &textEncoding))
931                 return NULL;
932         CGContextSelectFont(_self->ob_itself,
933                             name,
934                             size,
935                             textEncoding);
936         Py_INCREF(Py_None);
937         _res = Py_None;
938         return _res;
939 }
940
941 static PyObject *CGContextRefObj_CGContextShowText(CGContextRefObject *_self, PyObject *_args)
942 {
943         PyObject *_res = NULL;
944         char *cstring__in__;
945         long cstring__len__;
946         int cstring__in_len__;
947         if (!PyArg_ParseTuple(_args, "s#",
948                               &cstring__in__, &cstring__in_len__))
949                 return NULL;
950         cstring__len__ = cstring__in_len__;
951         CGContextShowText(_self->ob_itself,
952                           cstring__in__, cstring__len__);
953         Py_INCREF(Py_None);
954         _res = Py_None;
955         return _res;
956 }
957
958 static PyObject *CGContextRefObj_CGContextShowTextAtPoint(CGContextRefObject *_self, PyObject *_args)
959 {
960         PyObject *_res = NULL;
961         float x;
962         float y;
963         char *cstring__in__;
964         long cstring__len__;
965         int cstring__in_len__;
966         if (!PyArg_ParseTuple(_args, "ffs#",
967                               &x,
968                               &y,
969                               &cstring__in__, &cstring__in_len__))
970                 return NULL;
971         cstring__len__ = cstring__in_len__;
972         CGContextShowTextAtPoint(_self->ob_itself,
973                                  x,
974                                  y,
975                                  cstring__in__, cstring__len__);
976         Py_INCREF(Py_None);
977         _res = Py_None;
978         return _res;
979 }
980
981 static PyObject *CGContextRefObj_CGContextEndPage(CGContextRefObject *_self, PyObject *_args)
982 {
983         PyObject *_res = NULL;
984         if (!PyArg_ParseTuple(_args, ""))
985                 return NULL;
986         CGContextEndPage(_self->ob_itself);
987         Py_INCREF(Py_None);
988         _res = Py_None;
989         return _res;
990 }
991
992 static PyObject *CGContextRefObj_CGContextFlush(CGContextRefObject *_self, PyObject *_args)
993 {
994         PyObject *_res = NULL;
995         if (!PyArg_ParseTuple(_args, ""))
996                 return NULL;
997         CGContextFlush(_self->ob_itself);
998         Py_INCREF(Py_None);
999         _res = Py_None;
1000         return _res;
1001 }
1002
1003 static PyObject *CGContextRefObj_CGContextSynchronize(CGContextRefObject *_self, PyObject *_args)
1004 {
1005         PyObject *_res = NULL;
1006         if (!PyArg_ParseTuple(_args, ""))
1007                 return NULL;
1008         CGContextSynchronize(_self->ob_itself);
1009         Py_INCREF(Py_None);
1010         _res = Py_None;
1011         return _res;
1012 }
1013
1014 static PyObject *CGContextRefObj_CGContextSetShouldAntialias(CGContextRefObject *_self, PyObject *_args)
1015 {
1016         PyObject *_res = NULL;
1017         int shouldAntialias;
1018         if (!PyArg_ParseTuple(_args, "i",
1019                               &shouldAntialias))
1020                 return NULL;
1021         CGContextSetShouldAntialias(_self->ob_itself,
1022                                     shouldAntialias);
1023         Py_INCREF(Py_None);
1024         _res = Py_None;
1025         return _res;
1026 }
1027
1028 #ifndef __LP64__
1029 static PyObject *CGContextRefObj_SyncCGContextOriginWithPort(CGContextRefObject *_self, PyObject *_args)
1030 {
1031         PyObject *_res = NULL;
1032         CGrafPtr port;
1033         if (!PyArg_ParseTuple(_args, "O&",
1034                               GrafObj_Convert, &port))
1035                 return NULL;
1036         SyncCGContextOriginWithPort(_self->ob_itself,
1037                                     port);
1038         Py_INCREF(Py_None);
1039         _res = Py_None;
1040         return _res;
1041 }
1042
1043 static PyObject *CGContextRefObj_ClipCGContextToRegion(CGContextRefObject *_self, PyObject *_args)
1044 {
1045         PyObject *_res = NULL;
1046         Rect portRect;
1047         RgnHandle region;
1048         if (!PyArg_ParseTuple(_args, "O&O&",
1049                               PyMac_GetRect, &portRect,
1050                               ResObj_Convert, &region))
1051                 return NULL;
1052         ClipCGContextToRegion(_self->ob_itself,
1053                               &portRect,
1054                               region);
1055         Py_INCREF(Py_None);
1056         _res = Py_None;
1057         return _res;
1058 }
1059 #endif
1060
1061 static PyMethodDef CGContextRefObj_methods[] = {
1062         {"CGContextSaveGState", (PyCFunction)CGContextRefObj_CGContextSaveGState, 1,
1063          PyDoc_STR("() -> None")},
1064         {"CGContextRestoreGState", (PyCFunction)CGContextRefObj_CGContextRestoreGState, 1,
1065          PyDoc_STR("() -> None")},
1066         {"CGContextScaleCTM", (PyCFunction)CGContextRefObj_CGContextScaleCTM, 1,
1067          PyDoc_STR("(float sx, float sy) -> None")},
1068         {"CGContextTranslateCTM", (PyCFunction)CGContextRefObj_CGContextTranslateCTM, 1,
1069          PyDoc_STR("(float tx, float ty) -> None")},
1070         {"CGContextRotateCTM", (PyCFunction)CGContextRefObj_CGContextRotateCTM, 1,
1071          PyDoc_STR("(float angle) -> None")},
1072         {"CGContextConcatCTM", (PyCFunction)CGContextRefObj_CGContextConcatCTM, 1,
1073          PyDoc_STR("(CGAffineTransform transform) -> None")},
1074         {"CGContextGetCTM", (PyCFunction)CGContextRefObj_CGContextGetCTM, 1,
1075          PyDoc_STR("() -> (CGAffineTransform _rv)")},
1076         {"CGContextSetLineWidth", (PyCFunction)CGContextRefObj_CGContextSetLineWidth, 1,
1077          PyDoc_STR("(float width) -> None")},
1078         {"CGContextSetLineCap", (PyCFunction)CGContextRefObj_CGContextSetLineCap, 1,
1079          PyDoc_STR("(int cap) -> None")},
1080         {"CGContextSetLineJoin", (PyCFunction)CGContextRefObj_CGContextSetLineJoin, 1,
1081          PyDoc_STR("(int join) -> None")},
1082         {"CGContextSetMiterLimit", (PyCFunction)CGContextRefObj_CGContextSetMiterLimit, 1,
1083          PyDoc_STR("(float limit) -> None")},
1084         {"CGContextSetFlatness", (PyCFunction)CGContextRefObj_CGContextSetFlatness, 1,
1085          PyDoc_STR("(float flatness) -> None")},
1086         {"CGContextSetAlpha", (PyCFunction)CGContextRefObj_CGContextSetAlpha, 1,
1087          PyDoc_STR("(float alpha) -> None")},
1088         {"CGContextBeginPath", (PyCFunction)CGContextRefObj_CGContextBeginPath, 1,
1089          PyDoc_STR("() -> None")},
1090         {"CGContextMoveToPoint", (PyCFunction)CGContextRefObj_CGContextMoveToPoint, 1,
1091          PyDoc_STR("(float x, float y) -> None")},
1092         {"CGContextAddLineToPoint", (PyCFunction)CGContextRefObj_CGContextAddLineToPoint, 1,
1093          PyDoc_STR("(float x, float y) -> None")},
1094         {"CGContextAddCurveToPoint", (PyCFunction)CGContextRefObj_CGContextAddCurveToPoint, 1,
1095          PyDoc_STR("(float cp1x, float cp1y, float cp2x, float cp2y, float x, float y) -> None")},
1096         {"CGContextAddQuadCurveToPoint", (PyCFunction)CGContextRefObj_CGContextAddQuadCurveToPoint, 1,
1097          PyDoc_STR("(float cpx, float cpy, float x, float y) -> None")},
1098         {"CGContextClosePath", (PyCFunction)CGContextRefObj_CGContextClosePath, 1,
1099          PyDoc_STR("() -> None")},
1100         {"CGContextAddRect", (PyCFunction)CGContextRefObj_CGContextAddRect, 1,
1101          PyDoc_STR("(CGRect rect) -> None")},
1102         {"CGContextAddArc", (PyCFunction)CGContextRefObj_CGContextAddArc, 1,
1103          PyDoc_STR("(float x, float y, float radius, float startAngle, float endAngle, int clockwise) -> None")},
1104         {"CGContextAddArcToPoint", (PyCFunction)CGContextRefObj_CGContextAddArcToPoint, 1,
1105          PyDoc_STR("(float x1, float y1, float x2, float y2, float radius) -> None")},
1106         {"CGContextIsPathEmpty", (PyCFunction)CGContextRefObj_CGContextIsPathEmpty, 1,
1107          PyDoc_STR("() -> (int _rv)")},
1108         {"CGContextGetPathCurrentPoint", (PyCFunction)CGContextRefObj_CGContextGetPathCurrentPoint, 1,
1109          PyDoc_STR("() -> (CGPoint _rv)")},
1110         {"CGContextGetPathBoundingBox", (PyCFunction)CGContextRefObj_CGContextGetPathBoundingBox, 1,
1111          PyDoc_STR("() -> (CGRect _rv)")},
1112         {"CGContextDrawPath", (PyCFunction)CGContextRefObj_CGContextDrawPath, 1,
1113          PyDoc_STR("(int mode) -> None")},
1114         {"CGContextFillPath", (PyCFunction)CGContextRefObj_CGContextFillPath, 1,
1115          PyDoc_STR("() -> None")},
1116         {"CGContextEOFillPath", (PyCFunction)CGContextRefObj_CGContextEOFillPath, 1,
1117          PyDoc_STR("() -> None")},
1118         {"CGContextStrokePath", (PyCFunction)CGContextRefObj_CGContextStrokePath, 1,
1119          PyDoc_STR("() -> None")},
1120         {"CGContextFillRect", (PyCFunction)CGContextRefObj_CGContextFillRect, 1,
1121          PyDoc_STR("(CGRect rect) -> None")},
1122         {"CGContextStrokeRect", (PyCFunction)CGContextRefObj_CGContextStrokeRect, 1,
1123          PyDoc_STR("(CGRect rect) -> None")},
1124         {"CGContextStrokeRectWithWidth", (PyCFunction)CGContextRefObj_CGContextStrokeRectWithWidth, 1,
1125          PyDoc_STR("(CGRect rect, float width) -> None")},
1126         {"CGContextClearRect", (PyCFunction)CGContextRefObj_CGContextClearRect, 1,
1127          PyDoc_STR("(CGRect rect) -> None")},
1128         {"CGContextClip", (PyCFunction)CGContextRefObj_CGContextClip, 1,
1129          PyDoc_STR("() -> None")},
1130         {"CGContextEOClip", (PyCFunction)CGContextRefObj_CGContextEOClip, 1,
1131          PyDoc_STR("() -> None")},
1132         {"CGContextClipToRect", (PyCFunction)CGContextRefObj_CGContextClipToRect, 1,
1133          PyDoc_STR("(CGRect rect) -> None")},
1134         {"CGContextSetGrayFillColor", (PyCFunction)CGContextRefObj_CGContextSetGrayFillColor, 1,
1135          PyDoc_STR("(float gray, float alpha) -> None")},
1136         {"CGContextSetGrayStrokeColor", (PyCFunction)CGContextRefObj_CGContextSetGrayStrokeColor, 1,
1137          PyDoc_STR("(float gray, float alpha) -> None")},
1138         {"CGContextSetRGBFillColor", (PyCFunction)CGContextRefObj_CGContextSetRGBFillColor, 1,
1139          PyDoc_STR("(float red, float green, float blue, float alpha) -> None")},
1140         {"CGContextSetRGBStrokeColor", (PyCFunction)CGContextRefObj_CGContextSetRGBStrokeColor, 1,
1141          PyDoc_STR("(float red, float green, float blue, float alpha) -> None")},
1142         {"CGContextSetCMYKFillColor", (PyCFunction)CGContextRefObj_CGContextSetCMYKFillColor, 1,
1143          PyDoc_STR("(float cyan, float magenta, float yellow, float black, float alpha) -> None")},
1144         {"CGContextSetCMYKStrokeColor", (PyCFunction)CGContextRefObj_CGContextSetCMYKStrokeColor, 1,
1145          PyDoc_STR("(float cyan, float magenta, float yellow, float black, float alpha) -> None")},
1146         {"CGContextGetInterpolationQuality", (PyCFunction)CGContextRefObj_CGContextGetInterpolationQuality, 1,
1147          PyDoc_STR("() -> (int _rv)")},
1148         {"CGContextSetInterpolationQuality", (PyCFunction)CGContextRefObj_CGContextSetInterpolationQuality, 1,
1149          PyDoc_STR("(int quality) -> None")},
1150         {"CGContextSetCharacterSpacing", (PyCFunction)CGContextRefObj_CGContextSetCharacterSpacing, 1,
1151          PyDoc_STR("(float spacing) -> None")},
1152         {"CGContextSetTextPosition", (PyCFunction)CGContextRefObj_CGContextSetTextPosition, 1,
1153          PyDoc_STR("(float x, float y) -> None")},
1154         {"CGContextGetTextPosition", (PyCFunction)CGContextRefObj_CGContextGetTextPosition, 1,
1155          PyDoc_STR("() -> (CGPoint _rv)")},
1156         {"CGContextSetTextMatrix", (PyCFunction)CGContextRefObj_CGContextSetTextMatrix, 1,
1157          PyDoc_STR("(CGAffineTransform transform) -> None")},
1158         {"CGContextGetTextMatrix", (PyCFunction)CGContextRefObj_CGContextGetTextMatrix, 1,
1159          PyDoc_STR("() -> (CGAffineTransform _rv)")},
1160         {"CGContextSetTextDrawingMode", (PyCFunction)CGContextRefObj_CGContextSetTextDrawingMode, 1,
1161          PyDoc_STR("(int mode) -> None")},
1162         {"CGContextSetFontSize", (PyCFunction)CGContextRefObj_CGContextSetFontSize, 1,
1163          PyDoc_STR("(float size) -> None")},
1164         {"CGContextSelectFont", (PyCFunction)CGContextRefObj_CGContextSelectFont, 1,
1165          PyDoc_STR("(char * name, float size, int textEncoding) -> None")},
1166         {"CGContextShowText", (PyCFunction)CGContextRefObj_CGContextShowText, 1,
1167          PyDoc_STR("(Buffer cstring) -> None")},
1168         {"CGContextShowTextAtPoint", (PyCFunction)CGContextRefObj_CGContextShowTextAtPoint, 1,
1169          PyDoc_STR("(float x, float y, Buffer cstring) -> None")},
1170         {"CGContextEndPage", (PyCFunction)CGContextRefObj_CGContextEndPage, 1,
1171          PyDoc_STR("() -> None")},
1172         {"CGContextFlush", (PyCFunction)CGContextRefObj_CGContextFlush, 1,
1173          PyDoc_STR("() -> None")},
1174         {"CGContextSynchronize", (PyCFunction)CGContextRefObj_CGContextSynchronize, 1,
1175          PyDoc_STR("() -> None")},
1176         {"CGContextSetShouldAntialias", (PyCFunction)CGContextRefObj_CGContextSetShouldAntialias, 1,
1177          PyDoc_STR("(int shouldAntialias) -> None")},
1178 #ifndef __LP64__
1179         {"SyncCGContextOriginWithPort", (PyCFunction)CGContextRefObj_SyncCGContextOriginWithPort, 1,
1180          PyDoc_STR("(CGrafPtr port) -> None")},
1181         {"ClipCGContextToRegion", (PyCFunction)CGContextRefObj_ClipCGContextToRegion, 1,
1182          PyDoc_STR("(Rect portRect, RgnHandle region) -> None")},
1183 #endif
1184         {NULL, NULL, 0}
1185 };
1186
1187 #define CGContextRefObj_getsetlist NULL
1188
1189
1190 #define CGContextRefObj_compare NULL
1191
1192 #define CGContextRefObj_repr NULL
1193
1194 #define CGContextRefObj_hash NULL
1195 #define CGContextRefObj_tp_init 0
1196
1197 #define CGContextRefObj_tp_alloc PyType_GenericAlloc
1198
1199 static PyObject *CGContextRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds)
1200 {
1201         PyObject *_self;
1202         CGContextRef itself;
1203         char *kw[] = {"itself", 0};
1204
1205         if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CGContextRefObj_Convert, &itself)) return NULL;
1206         if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL;
1207         ((CGContextRefObject *)_self)->ob_itself = itself;
1208         return _self;
1209 }
1210
1211 #define CGContextRefObj_tp_free PyObject_Del
1212
1213
1214 PyTypeObject CGContextRef_Type = {
1215         PyObject_HEAD_INIT(NULL)
1216         0, /*ob_size*/
1217         "_CG.CGContextRef", /*tp_name*/
1218         sizeof(CGContextRefObject), /*tp_basicsize*/
1219         0, /*tp_itemsize*/
1220         /* methods */
1221         (destructor) CGContextRefObj_dealloc, /*tp_dealloc*/
1222         0, /*tp_print*/
1223         (getattrfunc)0, /*tp_getattr*/
1224         (setattrfunc)0, /*tp_setattr*/
1225         (cmpfunc) CGContextRefObj_compare, /*tp_compare*/
1226         (reprfunc) CGContextRefObj_repr, /*tp_repr*/
1227         (PyNumberMethods *)0, /* tp_as_number */
1228         (PySequenceMethods *)0, /* tp_as_sequence */
1229         (PyMappingMethods *)0, /* tp_as_mapping */
1230         (hashfunc) CGContextRefObj_hash, /*tp_hash*/
1231         0, /*tp_call*/
1232         0, /*tp_str*/
1233         PyObject_GenericGetAttr, /*tp_getattro*/
1234         PyObject_GenericSetAttr, /*tp_setattro */
1235         0, /*tp_as_buffer*/
1236         Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */
1237         0, /*tp_doc*/
1238         0, /*tp_traverse*/
1239         0, /*tp_clear*/
1240         0, /*tp_richcompare*/
1241         0, /*tp_weaklistoffset*/
1242         0, /*tp_iter*/
1243         0, /*tp_iternext*/
1244         CGContextRefObj_methods, /* tp_methods */
1245         0, /*tp_members*/
1246         CGContextRefObj_getsetlist, /*tp_getset*/
1247         0, /*tp_base*/
1248         0, /*tp_dict*/
1249         0, /*tp_descr_get*/
1250         0, /*tp_descr_set*/
1251         0, /*tp_dictoffset*/
1252         CGContextRefObj_tp_init, /* tp_init */
1253         CGContextRefObj_tp_alloc, /* tp_alloc */
1254         CGContextRefObj_tp_new, /* tp_new */
1255         CGContextRefObj_tp_free, /* tp_free */
1256 };
1257
1258 /* ------------------ End object type CGContextRef ------------------ */
1259
1260
1261 #ifndef __LP64__
1262 static PyObject *CG_CreateCGContextForPort(PyObject *_self, PyObject *_args)
1263 {
1264         PyObject *_res = NULL;
1265         GrafPtr port;
1266         CGContextRef ctx;
1267         OSStatus _err;
1268
1269         if (!PyArg_ParseTuple(_args, "O&", GrafObj_Convert, &port))
1270                 return NULL;
1271
1272         _err = CreateCGContextForPort(port, &ctx);
1273         if (_err != noErr)
1274                 if (_err != noErr) return PyMac_Error(_err);
1275         _res = Py_BuildValue("O&", CGContextRefObj_New, ctx);
1276         return _res;
1277
1278 }
1279 #endif
1280
1281 static PyMethodDef CG_methods[] = {
1282 #ifndef __LP64__
1283         {"CreateCGContextForPort", (PyCFunction)CG_CreateCGContextForPort, 1,
1284          PyDoc_STR("(CGrafPtr) -> CGContextRef")},
1285 #endif
1286         {NULL, NULL, 0}
1287 };
1288
1289
1290
1291
1292 void init_CG(void)
1293 {
1294         PyObject *m;
1295         PyObject *d;
1296
1297
1298
1299
1300         m = Py_InitModule("_CG", CG_methods);
1301         d = PyModule_GetDict(m);
1302         CG_Error = PyMac_GetOSErrException();
1303         if (CG_Error == NULL ||
1304             PyDict_SetItemString(d, "Error", CG_Error) != 0)
1305                 return;
1306         CGContextRef_Type.ob_type = &PyType_Type;
1307         if (PyType_Ready(&CGContextRef_Type) < 0) return;
1308         Py_INCREF(&CGContextRef_Type);
1309         PyModule_AddObject(m, "CGContextRef", (PyObject *)&CGContextRef_Type);
1310         /* Backward-compatible name */
1311         Py_INCREF(&CGContextRef_Type);
1312         PyModule_AddObject(m, "CGContextRefType", (PyObject *)&CGContextRef_Type);
1313 }
1314
1315 /* ========================= End module _CG ========================= */
1316