ยปCore Development>Code coverage>Mac/Modules/fm/_Fmmodule.c

Python code coverage for Mac/Modules/fm/_Fmmodule.c

#countcontent
1n/a
2n/a/* =========================== Module _Fm =========================== */
3n/a
4n/a#include "Python.h"
5n/a
6n/a#ifndef __LP64__
7n/a
8n/a
9n/a#include "pymactoolbox.h"
10n/a
11n/a/* Macro to test whether a weak-loaded CFM function exists */
12n/a#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\
13n/a PyErr_SetString(PyExc_NotImplementedError, \
14n/a "Not available in this shared library/OS version"); \
15n/a return NULL; \
16n/a }} while(0)
17n/a
18n/a
19n/a#include <Carbon/Carbon.h>
20n/a
21n/a
22n/a/*
23n/a** Parse/generate ComponentDescriptor records
24n/a*/
25n/astatic PyObject *
26n/aFMRec_New(FMetricRec *itself)
27n/a{
28n/a
29n/a return Py_BuildValue("O&O&O&O&O&",
30n/a PyMac_BuildFixed, itself->ascent,
31n/a PyMac_BuildFixed, itself->descent,
32n/a PyMac_BuildFixed, itself->leading,
33n/a PyMac_BuildFixed, itself->widMax,
34n/a ResObj_New, itself->wTabHandle);
35n/a}
36n/a
37n/a#if 0
38n/a/* Not needed... */
39n/astatic int
40n/aFMRec_Convert(PyObject *v, FMetricRec *p_itself)
41n/a{
42n/a return PyArg_ParseTuple(v, "O&O&O&O&O&",
43n/a PyMac_GetFixed, &itself->ascent,
44n/a PyMac_GetFixed, &itself->descent,
45n/a PyMac_GetFixed, &itself->leading,
46n/a PyMac_GetFixed, &itself->widMax,
47n/a ResObj_Convert, &itself->wTabHandle);
48n/a}
49n/a#endif
50n/a
51n/a
52n/astatic PyObject *Fm_Error;
53n/a
54n/astatic PyObject *Fm_GetFontName(PyObject *_self, PyObject *_args)
55n/a{
56n/a PyObject *_res = NULL;
57n/a short familyID;
58n/a Str255 name;
59n/a#ifndef GetFontName
60n/a PyMac_PRECHECK(GetFontName);
61n/a#endif
62n/a if (!PyArg_ParseTuple(_args, "h",
63n/a &familyID))
64n/a return NULL;
65n/a GetFontName(familyID,
66n/a name);
67n/a _res = Py_BuildValue("O&",
68n/a PyMac_BuildStr255, name);
69n/a return _res;
70n/a}
71n/a
72n/astatic PyObject *Fm_GetFNum(PyObject *_self, PyObject *_args)
73n/a{
74n/a PyObject *_res = NULL;
75n/a Str255 name;
76n/a short familyID;
77n/a#ifndef GetFNum
78n/a PyMac_PRECHECK(GetFNum);
79n/a#endif
80n/a if (!PyArg_ParseTuple(_args, "O&",
81n/a PyMac_GetStr255, name))
82n/a return NULL;
83n/a GetFNum(name,
84n/a &familyID);
85n/a _res = Py_BuildValue("h",
86n/a familyID);
87n/a return _res;
88n/a}
89n/a
90n/astatic PyObject *Fm_RealFont(PyObject *_self, PyObject *_args)
91n/a{
92n/a PyObject *_res = NULL;
93n/a Boolean _rv;
94n/a short fontNum;
95n/a short size;
96n/a#ifndef RealFont
97n/a PyMac_PRECHECK(RealFont);
98n/a#endif
99n/a if (!PyArg_ParseTuple(_args, "hh",
100n/a &fontNum,
101n/a &size))
102n/a return NULL;
103n/a _rv = RealFont(fontNum,
104n/a size);
105n/a _res = Py_BuildValue("b",
106n/a _rv);
107n/a return _res;
108n/a}
109n/a
110n/astatic PyObject *Fm_SetFScaleDisable(PyObject *_self, PyObject *_args)
111n/a{
112n/a PyObject *_res = NULL;
113n/a Boolean fscaleDisable;
114n/a#ifndef SetFScaleDisable
115n/a PyMac_PRECHECK(SetFScaleDisable);
116n/a#endif
117n/a if (!PyArg_ParseTuple(_args, "b",
118n/a &fscaleDisable))
119n/a return NULL;
120n/a SetFScaleDisable(fscaleDisable);
121n/a Py_INCREF(Py_None);
122n/a _res = Py_None;
123n/a return _res;
124n/a}
125n/a
126n/astatic PyObject *Fm_FontMetrics(PyObject *_self, PyObject *_args)
127n/a{
128n/a PyObject *_res = NULL;
129n/a FMetricRec theMetrics;
130n/a#ifndef FontMetrics
131n/a PyMac_PRECHECK(FontMetrics);
132n/a#endif
133n/a if (!PyArg_ParseTuple(_args, ""))
134n/a return NULL;
135n/a FontMetrics(&theMetrics);
136n/a _res = Py_BuildValue("O&",
137n/a FMRec_New, &theMetrics);
138n/a return _res;
139n/a}
140n/a
141n/astatic PyObject *Fm_SetFractEnable(PyObject *_self, PyObject *_args)
142n/a{
143n/a PyObject *_res = NULL;
144n/a Boolean fractEnable;
145n/a#ifndef SetFractEnable
146n/a PyMac_PRECHECK(SetFractEnable);
147n/a#endif
148n/a if (!PyArg_ParseTuple(_args, "b",
149n/a &fractEnable))
150n/a return NULL;
151n/a SetFractEnable(fractEnable);
152n/a Py_INCREF(Py_None);
153n/a _res = Py_None;
154n/a return _res;
155n/a}
156n/a
157n/astatic PyObject *Fm_GetDefFontSize(PyObject *_self, PyObject *_args)
158n/a{
159n/a PyObject *_res = NULL;
160n/a short _rv;
161n/a#ifndef GetDefFontSize
162n/a PyMac_PRECHECK(GetDefFontSize);
163n/a#endif
164n/a if (!PyArg_ParseTuple(_args, ""))
165n/a return NULL;
166n/a _rv = GetDefFontSize();
167n/a _res = Py_BuildValue("h",
168n/a _rv);
169n/a return _res;
170n/a}
171n/a
172n/astatic PyObject *Fm_IsOutline(PyObject *_self, PyObject *_args)
173n/a{
174n/a PyObject *_res = NULL;
175n/a Boolean _rv;
176n/a Point numer;
177n/a Point denom;
178n/a#ifndef IsOutline
179n/a PyMac_PRECHECK(IsOutline);
180n/a#endif
181n/a if (!PyArg_ParseTuple(_args, "O&O&",
182n/a PyMac_GetPoint, &numer,
183n/a PyMac_GetPoint, &denom))
184n/a return NULL;
185n/a _rv = IsOutline(numer,
186n/a denom);
187n/a _res = Py_BuildValue("b",
188n/a _rv);
189n/a return _res;
190n/a}
191n/a
192n/astatic PyObject *Fm_SetOutlinePreferred(PyObject *_self, PyObject *_args)
193n/a{
194n/a PyObject *_res = NULL;
195n/a Boolean outlinePreferred;
196n/a#ifndef SetOutlinePreferred
197n/a PyMac_PRECHECK(SetOutlinePreferred);
198n/a#endif
199n/a if (!PyArg_ParseTuple(_args, "b",
200n/a &outlinePreferred))
201n/a return NULL;
202n/a SetOutlinePreferred(outlinePreferred);
203n/a Py_INCREF(Py_None);
204n/a _res = Py_None;
205n/a return _res;
206n/a}
207n/a
208n/astatic PyObject *Fm_GetOutlinePreferred(PyObject *_self, PyObject *_args)
209n/a{
210n/a PyObject *_res = NULL;
211n/a Boolean _rv;
212n/a#ifndef GetOutlinePreferred
213n/a PyMac_PRECHECK(GetOutlinePreferred);
214n/a#endif
215n/a if (!PyArg_ParseTuple(_args, ""))
216n/a return NULL;
217n/a _rv = GetOutlinePreferred();
218n/a _res = Py_BuildValue("b",
219n/a _rv);
220n/a return _res;
221n/a}
222n/a
223n/astatic PyObject *Fm_SetPreserveGlyph(PyObject *_self, PyObject *_args)
224n/a{
225n/a PyObject *_res = NULL;
226n/a Boolean preserveGlyph;
227n/a#ifndef SetPreserveGlyph
228n/a PyMac_PRECHECK(SetPreserveGlyph);
229n/a#endif
230n/a if (!PyArg_ParseTuple(_args, "b",
231n/a &preserveGlyph))
232n/a return NULL;
233n/a SetPreserveGlyph(preserveGlyph);
234n/a Py_INCREF(Py_None);
235n/a _res = Py_None;
236n/a return _res;
237n/a}
238n/a
239n/astatic PyObject *Fm_GetPreserveGlyph(PyObject *_self, PyObject *_args)
240n/a{
241n/a PyObject *_res = NULL;
242n/a Boolean _rv;
243n/a#ifndef GetPreserveGlyph
244n/a PyMac_PRECHECK(GetPreserveGlyph);
245n/a#endif
246n/a if (!PyArg_ParseTuple(_args, ""))
247n/a return NULL;
248n/a _rv = GetPreserveGlyph();
249n/a _res = Py_BuildValue("b",
250n/a _rv);
251n/a return _res;
252n/a}
253n/a
254n/astatic PyObject *Fm_GetSysFont(PyObject *_self, PyObject *_args)
255n/a{
256n/a PyObject *_res = NULL;
257n/a short _rv;
258n/a#ifndef GetSysFont
259n/a PyMac_PRECHECK(GetSysFont);
260n/a#endif
261n/a if (!PyArg_ParseTuple(_args, ""))
262n/a return NULL;
263n/a _rv = GetSysFont();
264n/a _res = Py_BuildValue("h",
265n/a _rv);
266n/a return _res;
267n/a}
268n/a
269n/astatic PyObject *Fm_GetAppFont(PyObject *_self, PyObject *_args)
270n/a{
271n/a PyObject *_res = NULL;
272n/a short _rv;
273n/a#ifndef GetAppFont
274n/a PyMac_PRECHECK(GetAppFont);
275n/a#endif
276n/a if (!PyArg_ParseTuple(_args, ""))
277n/a return NULL;
278n/a _rv = GetAppFont();
279n/a _res = Py_BuildValue("h",
280n/a _rv);
281n/a return _res;
282n/a}
283n/a
284n/astatic PyObject *Fm_QDTextBounds(PyObject *_self, PyObject *_args)
285n/a{
286n/a PyObject *_res = NULL;
287n/a char *inText__in__;
288n/a int inText__len__;
289n/a int inText__in_len__;
290n/a Rect bounds;
291n/a#ifndef QDTextBounds
292n/a PyMac_PRECHECK(QDTextBounds);
293n/a#endif
294n/a if (!PyArg_ParseTuple(_args, "s#",
295n/a &inText__in__, &inText__in_len__))
296n/a return NULL;
297n/a inText__len__ = inText__in_len__;
298n/a QDTextBounds(inText__len__, inText__in__,
299n/a &bounds);
300n/a _res = Py_BuildValue("O&",
301n/a PyMac_BuildRect, &bounds);
302n/a return _res;
303n/a}
304n/a
305n/astatic PyMethodDef Fm_methods[] = {
306n/a {"GetFontName", (PyCFunction)Fm_GetFontName, 1,
307n/a PyDoc_STR("(short familyID) -> (Str255 name)")},
308n/a {"GetFNum", (PyCFunction)Fm_GetFNum, 1,
309n/a PyDoc_STR("(Str255 name) -> (short familyID)")},
310n/a {"RealFont", (PyCFunction)Fm_RealFont, 1,
311n/a PyDoc_STR("(short fontNum, short size) -> (Boolean _rv)")},
312n/a {"SetFScaleDisable", (PyCFunction)Fm_SetFScaleDisable, 1,
313n/a PyDoc_STR("(Boolean fscaleDisable) -> None")},
314n/a {"FontMetrics", (PyCFunction)Fm_FontMetrics, 1,
315n/a PyDoc_STR("() -> (FMetricRec theMetrics)")},
316n/a {"SetFractEnable", (PyCFunction)Fm_SetFractEnable, 1,
317n/a PyDoc_STR("(Boolean fractEnable) -> None")},
318n/a {"GetDefFontSize", (PyCFunction)Fm_GetDefFontSize, 1,
319n/a PyDoc_STR("() -> (short _rv)")},
320n/a {"IsOutline", (PyCFunction)Fm_IsOutline, 1,
321n/a PyDoc_STR("(Point numer, Point denom) -> (Boolean _rv)")},
322n/a {"SetOutlinePreferred", (PyCFunction)Fm_SetOutlinePreferred, 1,
323n/a PyDoc_STR("(Boolean outlinePreferred) -> None")},
324n/a {"GetOutlinePreferred", (PyCFunction)Fm_GetOutlinePreferred, 1,
325n/a PyDoc_STR("() -> (Boolean _rv)")},
326n/a {"SetPreserveGlyph", (PyCFunction)Fm_SetPreserveGlyph, 1,
327n/a PyDoc_STR("(Boolean preserveGlyph) -> None")},
328n/a {"GetPreserveGlyph", (PyCFunction)Fm_GetPreserveGlyph, 1,
329n/a PyDoc_STR("() -> (Boolean _rv)")},
330n/a {"GetSysFont", (PyCFunction)Fm_GetSysFont, 1,
331n/a PyDoc_STR("() -> (short _rv)")},
332n/a {"GetAppFont", (PyCFunction)Fm_GetAppFont, 1,
333n/a PyDoc_STR("() -> (short _rv)")},
334n/a {"QDTextBounds", (PyCFunction)Fm_QDTextBounds, 1,
335n/a PyDoc_STR("(Buffer inText) -> (Rect bounds)")},
336n/a {NULL, NULL, 0}
337n/a};
338n/a
339n/a#else /* __LP64__ */
340n/a
341n/astatic PyMethodDef Fm_methods[] = {
342n/a {NULL, NULL, 0}
343n/a};
344n/a
345n/a#endif /* __LP64__ */
346n/a
347n/avoid init_Fm(void)
348n/a{
349n/a PyObject *m;
350n/a#ifndef __LP64__
351n/a PyObject *d;
352n/a#endif /* __LP64__ */
353n/a
354n/a
355n/a
356n/a
357n/a m = Py_InitModule("_Fm", Fm_methods);
358n/a#ifndef __LP64__
359n/a d = PyModule_GetDict(m);
360n/a Fm_Error = PyMac_GetOSErrException();
361n/a if (Fm_Error == NULL ||
362n/a PyDict_SetItemString(d, "Error", Fm_Error) != 0)
363n/a return;
364n/a#endif /* __LP64__ */
365n/a}
366n/a
367n/a/* ========================= End module _Fm ========================= */
368n/a