File: PangoFont.xs

package info (click to toggle)
libpango-perl 1.227-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 572 kB
  • sloc: perl: 1,116; ansic: 35; makefile: 9
file content (418 lines) | stat: -rw-r--r-- 12,680 bytes parent folder | download | duplicates (4)
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
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
/*
 * Copyright (c) 2003-2005, 2014 by the gtk2-perl team (see the AUTHORS
 * file for a full list of authors)
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *
 * See the LICENSE file in the top-level directory of this distribution for
 * the full license terms.
 *
 */

#include "pango-perl.h"

MODULE = Pango::Font	PACKAGE = Pango

### some constants...
double
scale (class)
    ALIAS:
	Pango::scale_xx_small = 1
	Pango::scale_x_small  = 2
	Pango::scale_small    = 3
	Pango::scale_medium   = 4
	Pango::scale_large    = 5
	Pango::scale_x_large  = 6
	Pango::scale_xx_large = 7
    CODE:
	switch (ix) {
		case 0: RETVAL = (double)PANGO_SCALE; break;
		case 1: RETVAL = PANGO_SCALE_XX_SMALL; break;
		case 2: RETVAL = PANGO_SCALE_X_SMALL; break;
		case 3: RETVAL = PANGO_SCALE_SMALL; break;
		case 4: RETVAL = PANGO_SCALE_MEDIUM; break;
		case 5: RETVAL = PANGO_SCALE_LARGE; break;
		case 6: RETVAL = PANGO_SCALE_X_LARGE; break;
		case 7: RETVAL = PANGO_SCALE_XX_LARGE; break;
		default:
			RETVAL = 0.0;
			g_assert_not_reached ();
	}
    OUTPUT:
	RETVAL

double
PANGO_PIXELS (class, d)
	double d
    ALIAS:
	Pango::pixels = 1
    C_ARGS:
	d
    CLEANUP:
	PERL_UNUSED_VAR (ix);

MODULE = Pango::Font	PACKAGE = Pango::FontDescription	PREFIX = pango_font_description_

=for object Pango::FontDescription - Pango object to represent a description of a font

=cut

##PangoFontDescription* pango_font_description_new (void)
PangoFontDescription_own *
pango_font_description_new (class)
    C_ARGS:
	/* void */

## guint pango_font_description_hash (const PangoFontDescription *desc)
guint
pango_font_description_hash (desc)
	PangoFontDescription *desc

## gboolean pango_font_description_equal (const PangoFontDescription *desc1, const PangoFontDescription *desc2)
gboolean
pango_font_description_equal (desc1, desc2)
	PangoFontDescription *desc1
	PangoFontDescription *desc2

# should be taken care of automagically
## void pango_font_description_free (PangoFontDescription *desc)
## void pango_font_descriptions_free (PangoFontDescription **descs, int n_descs)

## void pango_font_description_set_family (PangoFontDescription *desc, const char *family)
void
pango_font_description_set_family (desc, family)
	PangoFontDescription *desc
	const char *family

## void pango_font_description_set_family_static (PangoFontDescription *desc, const char *family)
void
pango_font_description_set_family_static (desc, family)
	PangoFontDescription *desc
	const char *family

## void pango_font_description_get_family (PangoFontDescription *desc, )
const char *
pango_font_description_get_family (desc)
	PangoFontDescription *desc

## void pango_font_description_set_style (PangoFontDescription *desc, PangoStyle style)
void
pango_font_description_set_style (desc, style)
	PangoFontDescription *desc
	PangoStyle style

## PangoStyle pango_font_description_get_style (const PangoFontDescription *desc)
PangoStyle
pango_font_description_get_style (desc)
	PangoFontDescription *desc

## void pango_font_description_set_variant (PangoFontDescription *desc, PangoVariant variant)
void
pango_font_description_set_variant (desc, variant)
	PangoFontDescription *desc
	PangoVariant variant

## PangoVariant pango_font_description_get_variant (const PangoFontDescription *desc)
PangoVariant
pango_font_description_get_variant (desc)
	PangoFontDescription *desc

## void pango_font_description_set_weight (PangoFontDescription *desc, PangoWeight weight)
void
pango_font_description_set_weight (desc, weight)
	PangoFontDescription *desc
	PangoWeight weight

## PangoWeight pango_font_description_get_weight (const PangoFontDescription *desc)
PangoWeight
pango_font_description_get_weight (desc)
	PangoFontDescription *desc

## void pango_font_description_set_stretch (PangoFontDescription *desc, PangoStretch stretch)
void
pango_font_description_set_stretch (desc, stretch)
	PangoFontDescription *desc
	PangoStretch stretch

## PangoStretch pango_font_description_get_stretch (const PangoFontDescription *desc)
PangoStretch
pango_font_description_get_stretch (desc)
	PangoFontDescription *desc

## void pango_font_description_set_size (PangoFontDescription *desc, gint size)
void
pango_font_description_set_size (desc, size)
	PangoFontDescription *desc
	gint size

## gint pango_font_description_get_size (const PangoFontDescription *desc)
gint
pango_font_description_get_size (desc)
	PangoFontDescription *desc

## PangoFontMask pango_font_description_get_set_fields (const PangoFontDescription *desc)
PangoFontMask
pango_font_description_get_set_fields (desc)
	PangoFontDescription *desc

## void pango_font_description_unset_fields (PangoFontDescription *desc, PangoFontMask to_unset)
void
pango_font_description_unset_fields (desc, to_unset)
	PangoFontDescription *desc
	PangoFontMask to_unset

## void pango_font_description_merge (PangoFontDescription *desc, const PangoFontDescription *desc_to_merge, gboolean replace_existing)
void
pango_font_description_merge (desc, desc_to_merge, replace_existing)
	PangoFontDescription *desc
	PangoFontDescription *desc_to_merge
	gboolean replace_existing

## void pango_font_description_merge_static (PangoFontDescription *desc, const PangoFontDescription *desc_to_merge, gboolean replace_existing)
void
pango_font_description_merge_static (desc, desc_to_merge, replace_existing)
	PangoFontDescription *desc
	PangoFontDescription *desc_to_merge
	gboolean replace_existing

## gboolean pango_font_description_better_match (const PangoFontDescription *desc, const PangoFontDescription *old_match, const PangoFontDescription *new_match)
gboolean
pango_font_description_better_match (desc, old_match, new_match)
	PangoFontDescription *desc
	PangoFontDescription_ornull *old_match
	PangoFontDescription *new_match


##PangoFontDescription *pango_font_description_from_string (const char *str)
PangoFontDescription_own *
pango_font_description_from_string (class, str)
	const char * str
    C_ARGS:
	str

## char * pango_font_description_to_string (const PangoFontDescription *desc)
char *
pango_font_description_to_string (desc)
	PangoFontDescription *desc
    CLEANUP:
	g_free (RETVAL);

## char * pango_font_description_to_filename (const PangoFontDescription *desc)
char *
pango_font_description_to_filename (desc)
	PangoFontDescription *desc
    CLEANUP:
	g_free (RETVAL);

#if PANGO_CHECK_VERSION (1, 8, 0)

void pango_font_description_set_absolute_size (PangoFontDescription *desc, double size);

gboolean pango_font_description_get_size_is_absolute (const PangoFontDescription *desc);

#endif

#if PANGO_CHECK_VERSION (1, 16, 0)

void pango_font_description_set_gravity (PangoFontDescription *desc, PangoGravity gravity);

PangoGravity pango_font_description_get_gravity (const PangoFontDescription *desc);

#endif

MODULE = Pango::Font	PACKAGE = Pango::FontMetrics	PREFIX = pango_font_metrics_

=for object Pango::FontMetrics - object for Pango containing overall metric information for a font

=cut

# should happen automagicly
## void pango_font_metrics_unref (PangoFontMetrics *metrics)

## int pango_font_metrics_get_ascent (PangoFontMetrics *metrics)
int
pango_font_metrics_get_ascent (metrics)
	PangoFontMetrics *metrics

## int pango_font_metrics_get_descent (PangoFontMetrics *metrics)
int
pango_font_metrics_get_descent (metrics)
	PangoFontMetrics *metrics

## int pango_font_metrics_get_approximate_char_width (PangoFontMetrics *metrics)
int
pango_font_metrics_get_approximate_char_width (metrics)
	PangoFontMetrics *metrics

## int pango_font_metrics_get_approximate_digit_width (PangoFontMetrics *metrics)
int
pango_font_metrics_get_approximate_digit_width (metrics)
	PangoFontMetrics *metrics

#if PANGO_CHECK_VERSION (1, 6, 0)

## int pango_font_metrics_get_underline_position (PangoFontMetrics *metrics)
int
pango_font_metrics_get_underline_position (metrics)
	PangoFontMetrics *metrics

## int pango_font_metrics_get_underline_thickness (PangoFontMetrics *metrics)
int
pango_font_metrics_get_underline_thickness (metrics)
	PangoFontMetrics *metrics

## int pango_font_metrics_get_strikethrough_position (PangoFontMetrics *metrics)
int
pango_font_metrics_get_strikethrough_position (metrics)
	PangoFontMetrics *metrics

## int pango_font_metrics_get_strikethrough_thickness (PangoFontMetrics *metrics)
int
pango_font_metrics_get_strikethrough_thickness (metrics)
	PangoFontMetrics *metrics

#endif

MODULE = Pango::Font	PACKAGE = Pango::FontFamily	PREFIX = pango_font_family_

=for object Pango::FontFamily - Pango object representing a family of related font faces

=cut

BOOT:
	gperl_object_set_no_warn_unreg_subclass (PANGO_TYPE_FONT_FAMILY, TRUE);

## void pango_font_family_list_faces (PangoFontFamily *family, PangoFontFace ***faces, int *n_faces)
=for apidoc
=for apidoc @faces = $family->list_faces
Lists the different font faces that make up family. The faces in a family
share a common design, but differ in slant, weight, width and other aspects.
=cut
void
pango_font_family_list_faces (family)
	PangoFontFamily *family
    PREINIT:
	PangoFontFace ** faces = NULL;
	int n_faces;
    PPCODE:
	pango_font_family_list_faces(family, &faces, &n_faces);
	if (n_faces > 0) {
		int i;
		EXTEND(SP,n_faces);
		for (i = 0 ; i < n_faces ; i++)
			PUSHs(sv_2mortal(newSVPangoFontFace(faces[i])));
		g_free (faces);
	}


const char * pango_font_family_get_name (PangoFontFamily * family)

#if PANGO_CHECK_VERSION(1, 4, 0)

gboolean pango_font_family_is_monospace (PangoFontFamily * family)

#endif

MODULE = Pango::Font	PACKAGE = Pango::FontFace	PREFIX = pango_font_face_

=for object Pango::FontFace - object for Pango representing a group of fonts varying only in size

=cut

#
# PangoFontFace
#

BOOT:
	gperl_object_set_no_warn_unreg_subclass (PANGO_TYPE_FONT_FACE, TRUE);

 ## PangoFontDescription *pango_font_face_describe (PangoFontFace *face);
PangoFontDescription_own * pango_font_face_describe (PangoFontFace *face);

 ## G_CONST_RETURN char *pango_font_face_get_face_name (PangoFontFace *face);
const char *pango_font_face_get_face_name (PangoFontFace *face);

#if PANGO_CHECK_VERSION(1, 4, 0)

 ## void pango_font_face_list_sizes (PangoFontFace  *face, int **sizes, int *n_sizes);
=for apidoc
=for signature @sizes = $face->list_sizes
List the sizes available for a bitmapped font.  For scalable fonts, this will
return an empty list.
=cut
void
pango_font_face_list_sizes (PangoFontFace *face)
    PREINIT:
	int *sizes=NULL, n_sizes, i;
    PPCODE:
	pango_font_face_list_sizes (face, &sizes, &n_sizes);
	if (n_sizes > 0) {
		EXTEND (SP, n_sizes);
		for (i = 0 ; i < n_sizes ; i++)
			PUSHs (sv_2mortal (newSViv (sizes[i])));
		g_free (sizes);
	}

#endif

#if PANGO_CHECK_VERSION(1, 18, 0)

gboolean pango_font_face_is_synthesized (PangoFontFace *face);

#endif

MODULE = Pango::Font	PACKAGE = Pango::Font	PREFIX = pango_font_

=for object Pango::Font - a rendering-system independent font representation

=cut

## PangoFontMetrics * pango_font_get_metrics (PangoFont *font, PangoLanguage *language)
PangoFontMetrics *
pango_font_get_metrics (font, language)
	PangoFont *font
	PangoLanguage *language

## PangoFontDescription* pango_font_describe (PangoFont *font)
PangoFontDescription_own *
pango_font_describe (font)
	PangoFont *font

#if PANGO_CHECK_VERSION(1, 14, 0)

 ## PangoFontDescription *pango_font_describe_with_absolute_size (PangoFont *font);
PangoFontDescription_own *pango_font_describe_with_absolute_size (PangoFont *font);

#endif

## void pango_font_get_glyph_extents (PangoFont *font, PangoGlyph glyph, PangoRectangle *ink_rect, PangoRectangle *logical_rect)
void
pango_font_get_glyph_extents (font, glyph)
	PangoFont *font
	PangoGlyph glyph
    PREINIT:
	PangoRectangle ink_rect;
	PangoRectangle logical_rect;
    PPCODE:
	pango_font_get_glyph_extents (font, glyph, &ink_rect, &logical_rect);
	EXTEND (sp, 2);
	PUSHs (sv_2mortal (newSVPangoRectangle (&ink_rect)));
	PUSHs (sv_2mortal (newSVPangoRectangle (&logical_rect)));

#if PANGO_CHECK_VERSION(1, 10, 0)

PangoFontMap * pango_font_get_font_map (PangoFont *font);

#endif

### no typemaps for this stuff.
### it looks like it would only be useful from C, though.
### PangoCoverage * pango_font_get_coverage (PangoFont *font, PangoLanguage *language)
### PangoEngineShape * pango_font_find_shaper (PangoFont *font, PangoLanguage *language, guint32 ch)