ยปCore Development>Code coverage>Mac/Modules/cg/cgsupport.py

Python code coverage for Mac/Modules/cg/cgsupport.py

#countcontent
1n/a# This script generates a Python interface for an Apple Macintosh Manager.
2n/a# It uses the "bgen" package to generate C code.
3n/a# The function specifications are generated by scanning the mamager's header file,
4n/a# using the "scantools" package (customized for this particular manager).
5n/a
6n/a#error missing SetActionFilter
7n/a
8n/aimport string
9n/a
10n/a# Declarations that change for each manager
11n/aMODNAME = '_CG' # The name of the module
12n/a
13n/a# The following is *usually* unchanged but may still require tuning
14n/aMODPREFIX = 'CG' # The prefix for module-wide routines
15n/aINPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner
16n/aOUTPUTFILE = MODNAME + "module.c" # The file generated by this program
17n/a
18n/afrom macsupport import *
19n/a
20n/aCGrafPtr = OpaqueByValueType("CGrafPtr", "GrafObj")
21n/aRgnHandle = OpaqueByValueType("RgnHandle", "ResObj")
22n/a
23n/a# Create the type objects
24n/a
25n/aincludestuff = includestuff + """
26n/a#include <ApplicationServices/ApplicationServices.h>
27n/a
28n/aextern int GrafObj_Convert(PyObject *, GrafPtr *);
29n/a
30n/a/*
31n/a** Manual converters
32n/a*/
33n/a
34n/aPyObject *CGPoint_New(CGPoint *itself)
35n/a{
36n/a
37n/a return Py_BuildValue("(ff)",
38n/a itself->x,
39n/a itself->y);
40n/a}
41n/a
42n/aint
43n/aCGPoint_Convert(PyObject *v, CGPoint *p_itself)
44n/a{
45n/a if( !PyArg_Parse(v, "(ff)",
46n/a &p_itself->x,
47n/a &p_itself->y) )
48n/a return 0;
49n/a return 1;
50n/a}
51n/a
52n/aPyObject *CGRect_New(CGRect *itself)
53n/a{
54n/a
55n/a return Py_BuildValue("(ffff)",
56n/a itself->origin.x,
57n/a itself->origin.y,
58n/a itself->size.width,
59n/a itself->size.height);
60n/a}
61n/a
62n/aint
63n/aCGRect_Convert(PyObject *v, CGRect *p_itself)
64n/a{
65n/a if( !PyArg_Parse(v, "(ffff)",
66n/a &p_itself->origin.x,
67n/a &p_itself->origin.y,
68n/a &p_itself->size.width,
69n/a &p_itself->size.height) )
70n/a return 0;
71n/a return 1;
72n/a}
73n/a
74n/aPyObject *CGAffineTransform_New(CGAffineTransform *itself)
75n/a{
76n/a
77n/a return Py_BuildValue("(ffffff)",
78n/a itself->a,
79n/a itself->b,
80n/a itself->c,
81n/a itself->d,
82n/a itself->tx,
83n/a itself->ty);
84n/a}
85n/a
86n/aint
87n/aCGAffineTransform_Convert(PyObject *v, CGAffineTransform *p_itself)
88n/a{
89n/a if( !PyArg_Parse(v, "(ffffff)",
90n/a &p_itself->a,
91n/a &p_itself->b,
92n/a &p_itself->c,
93n/a &p_itself->d,
94n/a &p_itself->tx,
95n/a &p_itself->ty) )
96n/a return 0;
97n/a return 1;
98n/a}
99n/a"""
100n/a
101n/aclass MyOpaqueByValueType(OpaqueByValueType):
102n/a """Sort of a mix between OpaqueByValueType and OpaqueType."""
103n/a def mkvalueArgs(self, name):
104n/a return "%s, &%s" % (self.new, name)
105n/a
106n/aCGPoint = MyOpaqueByValueType('CGPoint', 'CGPoint')
107n/aCGRect = MyOpaqueByValueType('CGRect', 'CGRect')
108n/aCGAffineTransform = MyOpaqueByValueType('CGAffineTransform', 'CGAffineTransform')
109n/a
110n/achar_ptr = Type("char *", "s")
111n/a
112n/aCGTextEncoding = int
113n/aCGLineCap = int
114n/aCGLineJoin = int
115n/aCGTextDrawingMode = int
116n/aCGPathDrawingMode = int
117n/aCGInterpolationQuality = int
118n/a
119n/a# The real objects
120n/aCGContextRef = OpaqueByValueType("CGContextRef", "CGContextRefObj")
121n/a
122n/a
123n/aclass MyObjectDefinition(PEP253Mixin, GlobalObjectDefinition):
124n/a def outputStructMembers(self):
125n/a ObjectDefinition.outputStructMembers(self)
126n/a def outputCleanupStructMembers(self):
127n/a Output("CGContextRelease(self->ob_itself);")
128n/a
129n/a
130n/a# Create the generator groups and link them
131n/amodule = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff)
132n/a
133n/aCGContextRef_object = MyObjectDefinition('CGContextRef', 'CGContextRefObj', 'CGContextRef')
134n/a
135n/a
136n/a# ADD object here
137n/a
138n/amodule.addobject(CGContextRef_object)
139n/a
140n/a
141n/a
142n/aFunction = FunctionGenerator
143n/aMethod = MethodGenerator
144n/a
145n/aCGContextRef_methods = []
146n/a
147n/a# ADD _methods initializer here
148n/aexecfile(INPUTFILE)
149n/a
150n/a# manual method, lives in Quickdraw.h
151n/af = Method(void, 'SyncCGContextOriginWithPort',
152n/a (CGContextRef, 'ctx', InMode),
153n/a (CGrafPtr, 'port', InMode),
154n/a)
155n/aCGContextRef_methods.append(f)
156n/a
157n/a# manual method, lives in Quickdraw.h
158n/af = Method(void, 'ClipCGContextToRegion',
159n/a (CGContextRef, 'ctx', InMode),
160n/a (Rect, 'portRect', InMode),
161n/a (RgnHandle, 'region', InMode),
162n/a)
163n/aCGContextRef_methods.append(f)
164n/a
165n/a
166n/aCreateCGContextForPort_body = """\
167n/aGrafPtr port;
168n/aCGContextRef ctx;
169n/aOSStatus _err;
170n/a
171n/aif (!PyArg_ParseTuple(_args, "O&", GrafObj_Convert, &port))
172n/a return NULL;
173n/a
174n/a_err = CreateCGContextForPort(port, &ctx);
175n/aif (_err != noErr)
176n/a if (_err != noErr) return PyMac_Error(_err);
177n/a_res = Py_BuildValue("O&", CGContextRefObj_New, ctx);
178n/areturn _res;
179n/a"""
180n/a
181n/af = ManualGenerator("CreateCGContextForPort", CreateCGContextForPort_body);
182n/af.docstring = lambda: "(CGrafPtr) -> CGContextRef"
183n/amodule.add(f)
184n/a
185n/a
186n/a# ADD add forloop here
187n/afor f in CGContextRef_methods:
188n/a CGContextRef_object.add(f)
189n/a
190n/a# generate output (open the output file as late as possible)
191n/aSetOutputFileName(OUTPUTFILE)
192n/amodule.generate()