File: typemap

package info (click to toggle)
perlftlib 1.2-16
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 180 kB
  • ctags: 185
  • sloc: perl: 1,941; makefile: 104
file content (175 lines) | stat: -rw-r--r-- 4,072 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
# typemap for perl 5 interface to FreeType Ver1.0
#
# written by Takuya SHIOZAKI (tshiozak@makino.ise.chuo-u.ac.jp)
#

TYPEMAP
TT_Fixed		T_LONG
TT_FWord		T_SHORT
TT_UFWord		T_U_SHORT
TT_Short		T_SHORT
TT_UShort		T_U_SHORT
TT_LONG			T_LONG
TT_ULong		T_U_LONG
TT_F2Dot14		T_SHORT
TT_F26Dot6		T_LONG
TT_Pos			T_LONG
TT_UnitVector		T_UnitVector
TT_Vector		T_Vector
TT_Matrix		T_Matrix
TT_Outline		T_Outline
TT_BBox			T_BBox
TT_Glyph_Metrics	T_Glyph_Metrics
#TT_Big_Glyph_Metrics	T_Big_Glyph_Metrics
TT_Instance_Metrics	T_Instance_Metrics
TT_Raster_Map		T_Raster_Map
#TT_Header		T_Header
#TT_Horizontal_Header	T_Horizontal_Header
#TT_OS2			T_OS2
#TT_Postscript		T_Postscript
#TT_Hdmx_Record		T_Hdmx_Record
#TT_Hdmx		T_Hdmx
TT_Face_Properties	T_Face_Properties
TT_Engine		T_Handle
TT_Stream		T_Handle
TT_Face			T_Handle
TT_Instance		T_Handle
TT_Glyph		T_Handle
TT_CharMap		T_Handle
TT_Error		T_INT

INPUT
T_Handle
	{
		void **ptrImage;
		int na;
		if (SvTYPE($arg) == SVt_PV &&
		    ((ptrImage = (void **)SvPV($arg, na)),
		     na == sizeof($var.z)))
			$var.z = *ptrImage;
		else
			croak(\"Illegal Handle for $var.\");
	}
#T_Face_Properties
#	/* NO NEED */
T_UnitVector
	if (SvROK($arg) && SvTYPE(SvRV($arg)) == SVt_PVHV) {
		HV *obj = (HV*)SvRV($arg);
		FETCH_OBJ_IV(obj, &$var, x, $var);
		FETCH_OBJ_IV(obj, &$var, y, $var);
	}
	else
		croak(\"Illegal Object for $var.\");
T_Vector
	if (SvROK($arg) && SvTYPE(SvRV($arg)) == SVt_PVHV) {
		HV *obj = (HV*)SvRV($arg);
		FETCH_OBJ_IV(obj, &$var, x, $var);
		FETCH_OBJ_IV(obj, &$var, y, $var);
	}
	else
		croak(\"Illegal Object for $var.\");
T_Matrix
	if (SvROK($arg) && SvTYPE(SvRV($arg)) == SVt_PVHV) {
		HV *obj = (HV*)SvRV($arg);
		FETCH_OBJ_IV(obj, &$var, xx, $var);
		FETCH_OBJ_IV(obj, &$var, xy, $var);
		FETCH_OBJ_IV(obj, &$var, yx, $var);
		FETCH_OBJ_IV(obj, &$var, yy, $var);
	}
	else
		croak(\"Illegal Object for $var.\");
T_Outline
	if (SvROK($arg) && SvTYPE(SvRV($arg)) == SVt_PVHV) {
		HV *obj = (HV*)SvRV($arg);
		conv_hash_obj_to_outline(&$var, obj);
	}
	else
		croak(\"Illegal Object for $var.\");
#T_BBox
#	/* NO NEED */
#T_Glyph_Metrics
#	/* NO NEED */
#T_Instance_Metrics
#	/* NO NEED */
T_Raster_Map
	if (SvROK($arg) && SvTYPE(SvRV($arg)) == SVt_PVHV) {
		HV *obj = (HV*)SvRV($arg);
		SV *sv;
		int na;
		FETCH_OBJ_IV(obj, &$var, rows, $var);
		FETCH_OBJ_IV(obj, &$var, cols, $var);
		FETCH_OBJ_IV(obj, &$var, width, $var);
		FETCH_OBJ_IV(obj, &$var, flow, $var);
#		FETCH_OBJ_IV(obj, &$var, size, $var);
		FETCH_OBJ(obj, bitmap, sv, $var);
		$var.bitmap = SvPV(sv, na);
		$var.size = na;
	}
	else
		croak(\"Illegal Object for $var.\");

OUTPUT
T_Handle
	sv_setpvn($arg, (char*)&$var, sizeof(&$var));

T_Face_Properties
	sv_setsv($arg,
		newRV_noinc((SV*)conv_face_properties_to_hash_obj(&$var)));

T_UnitVector
	{
		HV *obj = newHV();

		STORE_OBJ_IV(obj, &$var, x);
		STORE_OBJ_IV(obj, &$var, y);
		sv_setsv($arg, newRV_noinc((SV*)obj));
	}
T_Vector
	{
		HV *obj = newHV();

		STORE_OBJ_IV(obj, &$var, x);
		STORE_OBJ_IV(obj, &$var, y);
		sv_setsv($arg, newRV_noinc((SV*)obj));
	}
T_Matrix
	{
		HV *obj = newHV();

		STORE_OBJ_IV(obj, &$var, xx);
		STORE_OBJ_IV(obj, &$var, xy);
		STORE_OBJ_IV(obj, &$var, yx);
		STORE_OBJ_IV(obj, &$var, yy);
		sv_setsv($arg, newRV_noinc((SV*)obj));
	}
T_Outline
	sv_setsv($arg,
		newRV_noinc((SV*)conv_outline_to_hash_obj(&$var)));
T_BBox
	sv_setsv($arg, newRV_noinc((SV*)conv_bbox_to_hash_obj(&$var)));
T_Glyph_Metrics
	{
		HV *obj = newHV();

		STORE_OBJ(obj, bbox,
			newRV_noinc((SV*)conv_bbox_to_hash_obj(&$var.bbox)));
		STORE_OBJ_IV(obj, &$var, bearingX);
		STORE_OBJ_IV(obj, &$var, bearingY);
		STORE_OBJ_IV(obj, &$var, advance);
		sv_setsv($arg, newRV_noinc((SV*)obj));
	}
T_Instance_Metrics
	{
		HV *obj = newHV();

		STORE_OBJ_IV(obj, &$var, pointSize);
		STORE_OBJ_IV(obj, &$var, x_ppem);
		STORE_OBJ_IV(obj, &$var, y_ppem);
		STORE_OBJ_IV(obj, &$var, x_scale);
		STORE_OBJ_IV(obj, &$var, y_scale);
		STORE_OBJ_IV(obj, &$var, x_resolution);
		STORE_OBJ_IV(obj, &$var, y_resolution);
		sv_setsv($arg, newRV_noinc((SV*)obj));
	}
#T_Raster_Map
#	/* NO NEED */