pango 0.20.0
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +662 -0
- data/README +33 -0
- data/Rakefile +86 -0
- data/extconf.rb +68 -0
- data/sample/attribute.rb +82 -0
- data/sample/break.rb +26 -0
- data/sample/gdk_layout.rb +27 -0
- data/sample/glyphstring.rb +61 -0
- data/sample/item.rb +35 -0
- data/sample/label.rb +23 -0
- data/sample/layout.rb +102 -0
- data/sample/pango_cairo.rb +66 -0
- data/sample/parse.rb +33 -0
- data/sample/sample.txt +10 -0
- data/sample/script.rb +21 -0
- data/src/lib/pango.rb +60 -0
- data/src/makeinits.rb +48 -0
- data/src/rbpango.c +27 -0
- data/src/rbpango.h +97 -0
- data/src/rbpangoanalysis.c +197 -0
- data/src/rbpangoattribute.c +557 -0
- data/src/rbpangoattriterator.c +137 -0
- data/src/rbpangoattrlist.c +104 -0
- data/src/rbpangocairo.c +229 -0
- data/src/rbpangocolor.c +121 -0
- data/src/rbpangocontext.c +341 -0
- data/src/rbpangocoverage.c +104 -0
- data/src/rbpangoengine.c +65 -0
- data/src/rbpangofont.c +123 -0
- data/src/rbpangofontdescription.c +300 -0
- data/src/rbpangofontface.c +71 -0
- data/src/rbpangofontfamily.c +74 -0
- data/src/rbpangofontmap.c +104 -0
- data/src/rbpangofontmetrics.c +85 -0
- data/src/rbpangofontset.c +68 -0
- data/src/rbpangofontsetsimple.c +53 -0
- data/src/rbpangoglyphinfo.c +119 -0
- data/src/rbpangoglyphitem.c +129 -0
- data/src/rbpangoglyphstring.c +162 -0
- data/src/rbpangogravity.c +43 -0
- data/src/rbpangoinits.c +71 -0
- data/src/rbpangoitem.c +110 -0
- data/src/rbpangolanguage.c +88 -0
- data/src/rbpangolayout.c +593 -0
- data/src/rbpangolayoutiter.c +202 -0
- data/src/rbpangolayoutline.c +256 -0
- data/src/rbpangologattr.c +107 -0
- data/src/rbpangomain.c +213 -0
- data/src/rbpangomatrix.c +155 -0
- data/src/rbpangorectangle.c +178 -0
- data/src/rbpangorenderer.c +204 -0
- data/src/rbpangoscript.c +80 -0
- data/src/rbpangoscriptiter.c +91 -0
- data/src/rbpangotabarray.c +128 -0
- data/src/rbpangoversion.h +24 -0
- data/test/pango-test-utils.rb +9 -0
- data/test/run-test.rb +27 -0
- data/test/test-attribute.rb +19 -0
- data/test/test-language.rb +7 -0
- data/test/test_layout.rb +20 -0
- metadata +158 -0
@@ -0,0 +1,104 @@
|
|
1
|
+
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
|
+
/************************************************
|
3
|
+
|
4
|
+
rbpangocoverage.c -
|
5
|
+
|
6
|
+
$Author: sakai $
|
7
|
+
$Date: 2007/07/08 02:53:10 $
|
8
|
+
|
9
|
+
Copyright (C) 2005 Masao Mutoh
|
10
|
+
************************************************/
|
11
|
+
|
12
|
+
#include "rbpango.h"
|
13
|
+
|
14
|
+
#define _SELF(self) ((PangoCoverage*)RVAL2BOXED(self, PANGO_TYPE_COVERAGE))
|
15
|
+
|
16
|
+
|
17
|
+
/**********************************/
|
18
|
+
GType
|
19
|
+
pango_coverage_get_type(void)
|
20
|
+
{
|
21
|
+
static GType our_type = 0;
|
22
|
+
|
23
|
+
if (our_type == 0)
|
24
|
+
our_type = g_boxed_type_register_static ("PangoCoverage",
|
25
|
+
(GBoxedCopyFunc)pango_coverage_copy,
|
26
|
+
(GBoxedFreeFunc)pango_coverage_unref);
|
27
|
+
return our_type;
|
28
|
+
}
|
29
|
+
/**********************************/
|
30
|
+
|
31
|
+
static VALUE
|
32
|
+
coverage_initialize(self)
|
33
|
+
VALUE self;
|
34
|
+
{
|
35
|
+
G_INITIALIZE(self, pango_coverage_new());
|
36
|
+
return Qnil;
|
37
|
+
}
|
38
|
+
|
39
|
+
static VALUE
|
40
|
+
coverage_get_level(self, index_)
|
41
|
+
VALUE self, index_;
|
42
|
+
{
|
43
|
+
return GENUM2RVAL(pango_coverage_get(_SELF(self), NUM2INT(index_)),
|
44
|
+
PANGO_TYPE_COVERAGE_LEVEL);
|
45
|
+
}
|
46
|
+
|
47
|
+
static VALUE
|
48
|
+
coverage_max(self, other)
|
49
|
+
VALUE self, other;
|
50
|
+
{
|
51
|
+
pango_coverage_max(_SELF(self), _SELF(other));
|
52
|
+
return self;
|
53
|
+
}
|
54
|
+
|
55
|
+
static VALUE
|
56
|
+
coverage_set(self, index_, level)
|
57
|
+
VALUE self, index_, level;
|
58
|
+
{
|
59
|
+
pango_coverage_set(_SELF(self), NUM2INT(index_),
|
60
|
+
RVAL2GENUM(level, PANGO_TYPE_COVERAGE_LEVEL));
|
61
|
+
return self;
|
62
|
+
}
|
63
|
+
|
64
|
+
static VALUE
|
65
|
+
coverage_to_bytes(self)
|
66
|
+
VALUE self;
|
67
|
+
{
|
68
|
+
guchar* bytes;
|
69
|
+
int n_bytes;
|
70
|
+
VALUE ret;
|
71
|
+
|
72
|
+
pango_coverage_to_bytes(_SELF(self), &bytes, &n_bytes);
|
73
|
+
ret = rb_str_new((const char*)bytes, n_bytes);
|
74
|
+
g_free(bytes);
|
75
|
+
|
76
|
+
return ret;
|
77
|
+
}
|
78
|
+
|
79
|
+
static VALUE
|
80
|
+
coverage_s_from_bytes(self, bytes)
|
81
|
+
VALUE self, bytes;
|
82
|
+
{
|
83
|
+
StringValue(bytes);
|
84
|
+
return BOXED2RVAL(pango_coverage_from_bytes((guchar*)RVAL2CSTR(bytes),
|
85
|
+
RSTRING_LEN(bytes)),
|
86
|
+
PANGO_TYPE_COVERAGE);
|
87
|
+
}
|
88
|
+
|
89
|
+
void
|
90
|
+
Init_pango_coverage()
|
91
|
+
{
|
92
|
+
VALUE pCoverage = G_DEF_CLASS(PANGO_TYPE_COVERAGE, "Coverage", mPango);
|
93
|
+
|
94
|
+
rb_define_method(pCoverage, "initialize", coverage_initialize, 0);
|
95
|
+
rb_define_method(pCoverage, "get_level", coverage_get_level, 0);
|
96
|
+
rb_define_method(pCoverage, "max!", coverage_max, 1);
|
97
|
+
rb_define_method(pCoverage, "set", coverage_set, 2);
|
98
|
+
rb_define_method(pCoverage, "to_bytes", coverage_to_bytes, 0);
|
99
|
+
rb_define_singleton_method(pCoverage, "from_bytes", coverage_s_from_bytes, 1);
|
100
|
+
|
101
|
+
/* PangoCoverageLevel */
|
102
|
+
G_DEF_CLASS(PANGO_TYPE_COVERAGE_LEVEL, "Level", pCoverage);
|
103
|
+
G_DEF_CONSTANTS(pCoverage, PANGO_TYPE_COVERAGE_LEVEL, "PANGO_COVERAGE_");
|
104
|
+
}
|
data/src/rbpangoengine.c
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
|
+
/************************************************
|
3
|
+
|
4
|
+
rbpangoengine.c -
|
5
|
+
|
6
|
+
$Author: mutoh $
|
7
|
+
$Date: 2005/10/15 04:32:01 $
|
8
|
+
|
9
|
+
Copyright (C) 2005 Masao Mutoh
|
10
|
+
************************************************/
|
11
|
+
|
12
|
+
#include "rbpango.h"
|
13
|
+
|
14
|
+
#ifdef PANGO_TYPE_ENGINE
|
15
|
+
|
16
|
+
#define _SELF(self) (PANGO_ENGINE(RVAL2GOBJ(self)))
|
17
|
+
|
18
|
+
/* FIXME
|
19
|
+
static VALUE
|
20
|
+
rbpango_s_engine_list(self)
|
21
|
+
VALUE self;
|
22
|
+
{
|
23
|
+
PangoEngineInfo* engines = g_new(PangoEngineInfo, 1);
|
24
|
+
int i, n;
|
25
|
+
VALUE ary;
|
26
|
+
|
27
|
+
script_engine_list(&engines, &n);
|
28
|
+
ary = rb_ary_new();
|
29
|
+
|
30
|
+
for(i = 0; i < n; i++){
|
31
|
+
rb_ary_push(ary, GOBJ2RVAL(&engines[i]));
|
32
|
+
}
|
33
|
+
return ary;
|
34
|
+
}
|
35
|
+
|
36
|
+
static VALUE
|
37
|
+
rbpango_s_engine_create(self, id)
|
38
|
+
VALUE self, id;
|
39
|
+
{
|
40
|
+
return GOBJ2RVAL(script_engine_create(RVAL2CSTR(id)));
|
41
|
+
}
|
42
|
+
*/
|
43
|
+
/*
|
44
|
+
void script_engine_init (GTypeModule *module);
|
45
|
+
void script_engine_exit (void);
|
46
|
+
PangoEngine* script_engine_create (const char *id);
|
47
|
+
*/
|
48
|
+
|
49
|
+
#endif
|
50
|
+
|
51
|
+
void
|
52
|
+
Init_pango_engine()
|
53
|
+
{
|
54
|
+
#ifdef PANGO_TYPE_ENGINE
|
55
|
+
G_DEF_CLASS(PANGO_TYPE_ENGINE, "Engine", mPango);
|
56
|
+
|
57
|
+
/* FIXME
|
58
|
+
rb_define_singleton_method(engine, "engines", rbpango_s_engine_list, 0);
|
59
|
+
rb_define_singleton_method(engine, "create", rbpango_s_engine_create, 1);
|
60
|
+
*/
|
61
|
+
G_DEF_CLASS(PANGO_TYPE_ENGINE_LANG, "EngineLang", mPango);
|
62
|
+
G_DEF_CLASS(PANGO_TYPE_ENGINE_SHAPE, "EngineShape", mPango);
|
63
|
+
#endif
|
64
|
+
}
|
65
|
+
|
data/src/rbpangofont.c
ADDED
@@ -0,0 +1,123 @@
|
|
1
|
+
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
|
+
/************************************************
|
3
|
+
|
4
|
+
rbpangofont.c -
|
5
|
+
|
6
|
+
$Author: ggc $
|
7
|
+
$Date: 2007/07/13 16:07:33 $
|
8
|
+
|
9
|
+
Copyright (C) 2002-2006 Masao Mutoh
|
10
|
+
************************************************/
|
11
|
+
|
12
|
+
#include "rbpango.h"
|
13
|
+
|
14
|
+
#define _SELF(self) (PANGO_FONT(RVAL2GOBJ(self)))
|
15
|
+
|
16
|
+
static VALUE
|
17
|
+
font_find_shaper(self, language, ch)
|
18
|
+
VALUE self, language, ch;
|
19
|
+
{
|
20
|
+
return GOBJ2RVAL(pango_font_find_shaper(_SELF(self),
|
21
|
+
(PangoLanguage*)RVAL2BOXED(language, PANGO_TYPE_LANGUAGE),
|
22
|
+
NUM2UINT(ch)));
|
23
|
+
}
|
24
|
+
|
25
|
+
static VALUE
|
26
|
+
font_describe(argc, argv, self)
|
27
|
+
int argc;
|
28
|
+
VALUE *argv;
|
29
|
+
VALUE self;
|
30
|
+
{
|
31
|
+
VALUE desc, absolute_size;
|
32
|
+
rb_scan_args(argc, argv, "01", &absolute_size);
|
33
|
+
|
34
|
+
if (NIL_P(absolute_size) || ! RVAL2CBOOL(absolute_size)){
|
35
|
+
desc = BOXED2RVAL(pango_font_describe(_SELF(self)), PANGO_TYPE_FONT_DESCRIPTION);
|
36
|
+
} else {
|
37
|
+
#if PANGO_CHECK_VERSION(1,14,0)
|
38
|
+
desc = BOXED2RVAL(pango_font_describe_with_absolute_size(_SELF(self)),
|
39
|
+
PANGO_TYPE_FONT_DESCRIPTION);
|
40
|
+
#else
|
41
|
+
rb_warning("Pango::Font#describe(absolute) has been supported since GTK+-2.10.x. Use Pango::Font#describe() instead.");
|
42
|
+
desc = BOXED2RVAL(pango_font_describe(_SELF(self)), PANGO_TYPE_FONT_DESCRIPTION);
|
43
|
+
#endif
|
44
|
+
}
|
45
|
+
return desc;
|
46
|
+
}
|
47
|
+
|
48
|
+
static VALUE
|
49
|
+
font_get_coverage(self, language)
|
50
|
+
VALUE self, language;
|
51
|
+
{
|
52
|
+
PangoCoverage* c = pango_font_get_coverage(_SELF(self),
|
53
|
+
(PangoLanguage*)RVAL2BOXED(language, PANGO_TYPE_LANGUAGE));
|
54
|
+
return BOXED2RVAL(c, PANGO_TYPE_COVERAGE);
|
55
|
+
}
|
56
|
+
|
57
|
+
static VALUE
|
58
|
+
font_get_glyph_extents(self, glyph)
|
59
|
+
VALUE self, glyph;
|
60
|
+
{
|
61
|
+
PangoRectangle ink_rect, logical_rect;
|
62
|
+
pango_font_get_glyph_extents(_SELF(self),
|
63
|
+
NUM2UINT(glyph),
|
64
|
+
&ink_rect, &logical_rect);
|
65
|
+
|
66
|
+
return rb_assoc_new(BOXED2RVAL(&ink_rect, PANGO_TYPE_RECTANGLE),
|
67
|
+
BOXED2RVAL(&logical_rect, PANGO_TYPE_RECTANGLE));
|
68
|
+
|
69
|
+
}
|
70
|
+
|
71
|
+
static VALUE
|
72
|
+
font_get_metrics(argc, argv, self)
|
73
|
+
int argc;
|
74
|
+
VALUE *argv;
|
75
|
+
VALUE self;
|
76
|
+
{
|
77
|
+
VALUE language;
|
78
|
+
PangoLanguage* lang = NULL;
|
79
|
+
|
80
|
+
rb_scan_args(argc, argv, "01", &language);
|
81
|
+
|
82
|
+
if (!NIL_P(language))
|
83
|
+
lang = (PangoLanguage*)RVAL2BOXED(language, PANGO_TYPE_LANGUAGE);
|
84
|
+
|
85
|
+
return BOXED2RVAL(pango_font_get_metrics(_SELF(self), lang),
|
86
|
+
PANGO_TYPE_FONT_METRICS);
|
87
|
+
}
|
88
|
+
|
89
|
+
#if PANGO_CHECK_VERSION(1,9,0)
|
90
|
+
static VALUE
|
91
|
+
font_get_font_map(self)
|
92
|
+
VALUE self;
|
93
|
+
{
|
94
|
+
return GOBJ2RVAL(pango_font_get_font_map(_SELF(self)));
|
95
|
+
}
|
96
|
+
#endif
|
97
|
+
|
98
|
+
void
|
99
|
+
Init_pango_font()
|
100
|
+
{
|
101
|
+
VALUE pFont = G_DEF_CLASS(PANGO_TYPE_FONT, "Font", mPango);
|
102
|
+
|
103
|
+
rb_define_method(pFont, "find_shaper", font_find_shaper, 2);
|
104
|
+
rb_define_method(pFont, "describe", font_describe, -1);
|
105
|
+
rb_define_method(pFont, "get_coverage", font_get_coverage, 1);
|
106
|
+
rb_define_method(pFont, "get_glyph_extents", font_get_glyph_extents, 1);
|
107
|
+
rb_define_method(pFont, "metrics", font_get_metrics, -1);
|
108
|
+
|
109
|
+
#if PANGO_CHECK_VERSION(1,9,0)
|
110
|
+
rb_define_method(pFont, "font_map", font_get_font_map, 0);
|
111
|
+
#endif
|
112
|
+
|
113
|
+
G_DEF_CLASS3("PangoXFont", "XFont", mPango);
|
114
|
+
G_DEF_CLASS3("PangoFT2Font", "FT2Font", mPango);
|
115
|
+
G_DEF_CLASS3("PangoFcFont", "FcFont", mPango);
|
116
|
+
G_DEF_CLASS3("PangoXftFont", "XftFont", mPango);
|
117
|
+
G_DEF_CLASS3("PangoCairoFcFont", "CairoFcFont", mPango);
|
118
|
+
G_DEF_CLASS3("PangoCairoFont", "CairoFont", mPango);
|
119
|
+
G_DEF_CLASS3("PangoCairoWin32Font", "CairoWin32Font", mPango);
|
120
|
+
#if PANGO_CHECK_VERSION(1,12,0)
|
121
|
+
G_DEF_CLASS3("PangoATSUIFont", "ATSUIFont", mPango);
|
122
|
+
#endif
|
123
|
+
}
|
@@ -0,0 +1,300 @@
|
|
1
|
+
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
|
+
/************************************************
|
3
|
+
|
4
|
+
rbpangofontdescription.c -
|
5
|
+
|
6
|
+
$Author: ggc $
|
7
|
+
$Date: 2007/07/13 16:07:33 $
|
8
|
+
|
9
|
+
Copyright (C) 2002-2005 Masao Mutoh
|
10
|
+
************************************************/
|
11
|
+
|
12
|
+
#include "rbpango.h"
|
13
|
+
|
14
|
+
#define _SELF(self) ((PangoFontDescription*)RVAL2BOXED(self, PANGO_TYPE_FONT_DESCRIPTION))
|
15
|
+
|
16
|
+
static VALUE
|
17
|
+
font_desc_initialize(int argc, VALUE *argv, VALUE self)
|
18
|
+
{
|
19
|
+
VALUE str;
|
20
|
+
PangoFontDescription *description;
|
21
|
+
|
22
|
+
rb_scan_args(argc, argv, "01", &str);
|
23
|
+
|
24
|
+
if (NIL_P(str)) {
|
25
|
+
description = pango_font_description_new();
|
26
|
+
} else {
|
27
|
+
description = pango_font_description_from_string(RVAL2CSTR(str));
|
28
|
+
}
|
29
|
+
|
30
|
+
G_INITIALIZE(self, description);
|
31
|
+
pango_font_description_free(description);
|
32
|
+
|
33
|
+
return Qnil;
|
34
|
+
}
|
35
|
+
/*
|
36
|
+
PangoFontDescription* pango_font_description_copy
|
37
|
+
(const PangoFontDescription *desc);
|
38
|
+
PangoFontDescription* pango_font_description_copy_static
|
39
|
+
(const PangoFontDescription *desc);
|
40
|
+
*/
|
41
|
+
|
42
|
+
static VALUE
|
43
|
+
font_desc_hash(self)
|
44
|
+
VALUE self;
|
45
|
+
{
|
46
|
+
return UINT2NUM(pango_font_description_hash(_SELF(self)));
|
47
|
+
}
|
48
|
+
|
49
|
+
static VALUE
|
50
|
+
font_desc_equal(self, other)
|
51
|
+
VALUE self, other;
|
52
|
+
{
|
53
|
+
return CBOOL2RVAL(pango_font_description_equal(_SELF(self), _SELF(other)));
|
54
|
+
}
|
55
|
+
|
56
|
+
/* Don't we need this?
|
57
|
+
void pango_font_descriptions_free (PangoFontDescription **descs,
|
58
|
+
int n_descs);
|
59
|
+
*/
|
60
|
+
|
61
|
+
static VALUE
|
62
|
+
font_desc_set_family(self, family)
|
63
|
+
VALUE self, family;
|
64
|
+
{
|
65
|
+
pango_font_description_set_family(_SELF(self), RVAL2CSTR(family));
|
66
|
+
return self;
|
67
|
+
}
|
68
|
+
/* Don't we need this?
|
69
|
+
void pango_font_description_set_family_static
|
70
|
+
(PangoFontDescription *desc,
|
71
|
+
const char *family);
|
72
|
+
*/
|
73
|
+
|
74
|
+
static VALUE
|
75
|
+
font_desc_get_family(self)
|
76
|
+
VALUE self;
|
77
|
+
{
|
78
|
+
return CSTR2RVAL(pango_font_description_get_family(_SELF(self)));
|
79
|
+
}
|
80
|
+
|
81
|
+
static VALUE
|
82
|
+
font_desc_set_style(self, style)
|
83
|
+
VALUE self, style;
|
84
|
+
{
|
85
|
+
pango_font_description_set_style(_SELF(self), RVAL2GENUM(style, PANGO_TYPE_STYLE));
|
86
|
+
return self;
|
87
|
+
}
|
88
|
+
|
89
|
+
static VALUE
|
90
|
+
font_desc_get_style(self)
|
91
|
+
VALUE self;
|
92
|
+
{
|
93
|
+
return GENUM2RVAL(pango_font_description_get_style(_SELF(self)), PANGO_TYPE_STYLE);
|
94
|
+
}
|
95
|
+
|
96
|
+
static VALUE
|
97
|
+
font_desc_set_variant(self, variant)
|
98
|
+
VALUE self, variant;
|
99
|
+
{
|
100
|
+
pango_font_description_set_variant(_SELF(self), RVAL2GENUM(variant, PANGO_TYPE_VARIANT));
|
101
|
+
return self;
|
102
|
+
}
|
103
|
+
|
104
|
+
static VALUE
|
105
|
+
font_desc_get_variant(self)
|
106
|
+
VALUE self;
|
107
|
+
{
|
108
|
+
return GENUM2RVAL(pango_font_description_get_variant(_SELF(self)), PANGO_TYPE_VARIANT);
|
109
|
+
}
|
110
|
+
|
111
|
+
static VALUE
|
112
|
+
font_desc_set_weight(VALUE self, VALUE weight)
|
113
|
+
{
|
114
|
+
pango_font_description_set_weight(_SELF(self),
|
115
|
+
RVAL2GENUM(weight, PANGO_TYPE_WEIGHT));
|
116
|
+
return self;
|
117
|
+
}
|
118
|
+
|
119
|
+
static VALUE
|
120
|
+
font_desc_get_weight(self)
|
121
|
+
VALUE self;
|
122
|
+
{
|
123
|
+
return GENUM2RVAL(pango_font_description_get_weight(_SELF(self)), PANGO_TYPE_WEIGHT);
|
124
|
+
}
|
125
|
+
|
126
|
+
static VALUE
|
127
|
+
font_desc_set_stretch(self, stretch)
|
128
|
+
VALUE self, stretch;
|
129
|
+
{
|
130
|
+
pango_font_description_set_stretch(_SELF(self), RVAL2GENUM(stretch, PANGO_TYPE_STRETCH));
|
131
|
+
return self;
|
132
|
+
}
|
133
|
+
|
134
|
+
static VALUE
|
135
|
+
font_desc_get_stretch(self)
|
136
|
+
VALUE self;
|
137
|
+
{
|
138
|
+
return GENUM2RVAL(pango_font_description_get_stretch(_SELF(self)), PANGO_TYPE_STRETCH);
|
139
|
+
}
|
140
|
+
|
141
|
+
static VALUE
|
142
|
+
font_desc_set_size(self, size)
|
143
|
+
VALUE self, size;
|
144
|
+
{
|
145
|
+
pango_font_description_set_size(_SELF(self), NUM2INT(size));
|
146
|
+
return self;
|
147
|
+
}
|
148
|
+
|
149
|
+
static VALUE
|
150
|
+
font_desc_get_size(self)
|
151
|
+
VALUE self;
|
152
|
+
{
|
153
|
+
return INT2NUM(pango_font_description_get_size(_SELF(self)));
|
154
|
+
}
|
155
|
+
|
156
|
+
#if PANGO_CHECK_VERSION(1,8,0)
|
157
|
+
static VALUE
|
158
|
+
font_desc_set_absolute_size(self, size)
|
159
|
+
VALUE self, size;
|
160
|
+
{
|
161
|
+
pango_font_description_set_absolute_size(_SELF(self), NUM2INT(size));
|
162
|
+
return self;
|
163
|
+
}
|
164
|
+
|
165
|
+
static VALUE
|
166
|
+
font_desc_get_size_is_absolute(self)
|
167
|
+
VALUE self;
|
168
|
+
{
|
169
|
+
return CBOOL2RVAL(pango_font_description_get_size_is_absolute(_SELF(self)));
|
170
|
+
}
|
171
|
+
#endif
|
172
|
+
|
173
|
+
#if PANGO_CHECK_VERSION(1,16,0)
|
174
|
+
static VALUE
|
175
|
+
font_desc_get_gravity(VALUE self)
|
176
|
+
{
|
177
|
+
return GENUM2RVAL(pango_font_description_get_gravity(_SELF(self)), PANGO_TYPE_GRAVITY);
|
178
|
+
}
|
179
|
+
|
180
|
+
static VALUE
|
181
|
+
font_desc_set_gravity(VALUE self, VALUE gravity)
|
182
|
+
{
|
183
|
+
pango_font_description_set_gravity(_SELF(self), RVAL2GENUM(gravity, PANGO_TYPE_GRAVITY));
|
184
|
+
return self;
|
185
|
+
}
|
186
|
+
#endif
|
187
|
+
|
188
|
+
static VALUE
|
189
|
+
font_desc_get_set_fields(self)
|
190
|
+
VALUE self;
|
191
|
+
{
|
192
|
+
return GFLAGS2RVAL(pango_font_description_get_set_fields(_SELF(self)), PANGO_TYPE_FONT_MASK);
|
193
|
+
}
|
194
|
+
|
195
|
+
static VALUE
|
196
|
+
font_desc_unset_fields(self, to_unset)
|
197
|
+
VALUE self, to_unset;
|
198
|
+
{
|
199
|
+
pango_font_description_unset_fields(_SELF(self), RVAL2GFLAGS(to_unset, PANGO_TYPE_FONT_MASK));
|
200
|
+
return self;
|
201
|
+
}
|
202
|
+
|
203
|
+
static VALUE
|
204
|
+
font_desc_merge(self, desc_to_merge, replace_existing)
|
205
|
+
VALUE self, desc_to_merge, replace_existing;
|
206
|
+
{
|
207
|
+
pango_font_description_merge(_SELF(self), _SELF(desc_to_merge),
|
208
|
+
RVAL2CBOOL(replace_existing));
|
209
|
+
return self;
|
210
|
+
}
|
211
|
+
|
212
|
+
/* Don't we need this?
|
213
|
+
void pango_font_description_merge_static
|
214
|
+
(PangoFontDescription *desc,
|
215
|
+
const PangoFontDescription *desc_to_merge,
|
216
|
+
gboolean replace_existing);
|
217
|
+
*/
|
218
|
+
|
219
|
+
static VALUE
|
220
|
+
font_desc_better_match(self, old_match, new_match)
|
221
|
+
VALUE self, old_match, new_match;
|
222
|
+
{
|
223
|
+
return CBOOL2RVAL(pango_font_description_better_match(_SELF(self),
|
224
|
+
_SELF(old_match),
|
225
|
+
_SELF(new_match)));
|
226
|
+
}
|
227
|
+
|
228
|
+
static VALUE
|
229
|
+
font_desc_to_string(self)
|
230
|
+
VALUE self;
|
231
|
+
{
|
232
|
+
return CSTR2RVAL(pango_font_description_to_string(_SELF(self)));
|
233
|
+
}
|
234
|
+
|
235
|
+
static VALUE
|
236
|
+
font_desc_to_filename(self)
|
237
|
+
VALUE self;
|
238
|
+
{
|
239
|
+
return CSTR2RVAL(pango_font_description_to_filename(_SELF(self)));
|
240
|
+
}
|
241
|
+
|
242
|
+
void
|
243
|
+
Init_pango_font_description()
|
244
|
+
{
|
245
|
+
VALUE pFontDesc = G_DEF_CLASS(PANGO_TYPE_FONT_DESCRIPTION, "FontDescription", mPango);
|
246
|
+
|
247
|
+
rb_define_method(pFontDesc, "initialize", font_desc_initialize, -1);
|
248
|
+
rb_define_method(pFontDesc, "hash", font_desc_hash, 0);
|
249
|
+
rb_define_method(pFontDesc, "==", font_desc_equal, 1);
|
250
|
+
rb_define_method(pFontDesc, "set_family", font_desc_set_family, 1);
|
251
|
+
rb_define_method(pFontDesc, "family", font_desc_get_family, 0);
|
252
|
+
rb_define_method(pFontDesc, "set_style", font_desc_set_style, 1);
|
253
|
+
rb_define_method(pFontDesc, "style", font_desc_get_style, 0);
|
254
|
+
rb_define_method(pFontDesc, "set_variant", font_desc_set_variant, 1);
|
255
|
+
rb_define_method(pFontDesc, "variant", font_desc_get_variant, 0);
|
256
|
+
rb_define_method(pFontDesc, "set_weight", font_desc_set_weight, 1);
|
257
|
+
rb_define_method(pFontDesc, "weight", font_desc_get_weight, 0);
|
258
|
+
rb_define_method(pFontDesc, "set_stretch", font_desc_set_stretch, 1);
|
259
|
+
rb_define_method(pFontDesc, "stretch", font_desc_get_stretch, 0);
|
260
|
+
rb_define_method(pFontDesc, "set_size", font_desc_set_size, 1);
|
261
|
+
rb_define_method(pFontDesc, "size", font_desc_get_size, 0);
|
262
|
+
|
263
|
+
#if PANGO_CHECK_VERSION(1,8,0)
|
264
|
+
rb_define_method(pFontDesc, "set_absolute_size", font_desc_set_absolute_size, 1);
|
265
|
+
rb_define_method(pFontDesc, "size_is_absolute?", font_desc_get_size_is_absolute, 0);
|
266
|
+
#endif
|
267
|
+
#if PANGO_CHECK_VERSION(1,16,0)
|
268
|
+
rb_define_method(pFontDesc, "set_gravity", font_desc_set_gravity, 1);
|
269
|
+
rb_define_method(pFontDesc, "gravity", font_desc_get_gravity, 0);
|
270
|
+
#endif
|
271
|
+
rb_define_method(pFontDesc, "set_fields", font_desc_get_set_fields, 0);
|
272
|
+
rb_define_method(pFontDesc, "unset_fields", font_desc_unset_fields, 1);
|
273
|
+
rb_define_method(pFontDesc, "merge", font_desc_merge, 2);
|
274
|
+
rb_define_method(pFontDesc, "better_match", font_desc_better_match, 2);
|
275
|
+
rb_define_method(pFontDesc, "to_str", font_desc_to_string, 0);
|
276
|
+
rb_define_alias(pFontDesc, "to_s", "to_str");
|
277
|
+
rb_define_method(pFontDesc, "to_filename", font_desc_to_filename, 0);
|
278
|
+
|
279
|
+
G_DEF_SETTERS(pFontDesc);
|
280
|
+
|
281
|
+
/* PangoStyle */
|
282
|
+
G_DEF_CLASS(PANGO_TYPE_STYLE, "Style", pFontDesc);
|
283
|
+
G_DEF_CONSTANTS(pFontDesc, PANGO_TYPE_STYLE, "PANGO_");
|
284
|
+
|
285
|
+
/* PangoWeight */
|
286
|
+
G_DEF_CLASS(PANGO_TYPE_WEIGHT, "Weight", pFontDesc);
|
287
|
+
G_DEF_CONSTANTS(pFontDesc, PANGO_TYPE_WEIGHT, "PANGO_");
|
288
|
+
|
289
|
+
/* PangoVariant */
|
290
|
+
G_DEF_CLASS(PANGO_TYPE_VARIANT, "Variant", pFontDesc);
|
291
|
+
G_DEF_CONSTANTS(pFontDesc, PANGO_TYPE_VARIANT, "PANGO_");
|
292
|
+
|
293
|
+
/* PangoStretch */
|
294
|
+
G_DEF_CLASS(PANGO_TYPE_STRETCH, "Stretch", pFontDesc);
|
295
|
+
G_DEF_CONSTANTS(pFontDesc, PANGO_TYPE_STRETCH, "PANGO_");
|
296
|
+
|
297
|
+
/* PangoFontMask */
|
298
|
+
G_DEF_CLASS(PANGO_TYPE_FONT_MASK, "FontMask", pFontDesc);
|
299
|
+
G_DEF_CONSTANTS(pFontDesc, PANGO_TYPE_FONT_MASK, "PANGO_");
|
300
|
+
}
|