pango 3.1.1 → 3.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +27 -5
  3. data/ext/pango/depend +2 -2
  4. data/ext/pango/extconf.rb +32 -28
  5. data/ext/pango/pango.def +0 -16
  6. data/ext/pango/rb-pango-attr-list.c +64 -0
  7. data/ext/pango/rb-pango-attribute.c +147 -0
  8. data/ext/pango/rb-pango-context.c +79 -0
  9. data/ext/pango/{rbpangoconversions.h → rb-pango-conversions.h} +4 -6
  10. data/ext/pango/rb-pango-private.h +27 -0
  11. data/ext/pango/rb-pango.c +32 -0
  12. data/ext/pango/rb-pango.h +29 -0
  13. data/extconf.rb +25 -9
  14. data/lib/pango.rb +24 -68
  15. data/lib/pango/cairo-loader.rb +63 -0
  16. data/lib/pango/color.rb +31 -0
  17. data/lib/pango/deprecated.rb +37 -0
  18. data/lib/pango/font-description.rb +29 -0
  19. data/lib/pango/language.rb +29 -0
  20. data/lib/pango/layout.rb +41 -0
  21. data/lib/pango/loader.rb +87 -0
  22. data/lib/pango/markup.rb +31 -0
  23. data/lib/pango/matrix.rb +64 -0
  24. data/lib/pango/rectangle.rb +28 -0
  25. data/lib/pango/version.rb +30 -0
  26. data/test/pango-test-utils.rb +7 -7
  27. data/test/run-test.rb +34 -8
  28. data/test/test-attr-list.rb +28 -0
  29. data/test/test-color.rb +1 -3
  30. data/test/test-context.rb +4 -4
  31. data/test/test-enum.rb +37 -0
  32. data/test/test-font-description.rb +31 -0
  33. data/test/test-language.rb +2 -1
  34. data/test/test-layout.rb +12 -0
  35. data/test/test-markup.rb +30 -0
  36. data/test/test-matrix.rb +131 -5
  37. data/test/test-rectangle.rb +16 -3
  38. metadata +42 -56
  39. data/README +0 -32
  40. data/ext/pango/rbpango.c +0 -356
  41. data/ext/pango/rbpango.h +0 -95
  42. data/ext/pango/rbpangoanalysis.c +0 -218
  43. data/ext/pango/rbpangoattribute.c +0 -506
  44. data/ext/pango/rbpangoattriterator.c +0 -141
  45. data/ext/pango/rbpangoattrlist.c +0 -101
  46. data/ext/pango/rbpangocairo.c +0 -122
  47. data/ext/pango/rbpangocairocontext.c +0 -131
  48. data/ext/pango/rbpangocolor.c +0 -120
  49. data/ext/pango/rbpangocontext.c +0 -344
  50. data/ext/pango/rbpangocoverage.c +0 -106
  51. data/ext/pango/rbpangoengine.c +0 -73
  52. data/ext/pango/rbpangofont.c +0 -110
  53. data/ext/pango/rbpangofontdescription.c +0 -282
  54. data/ext/pango/rbpangofontface.c +0 -73
  55. data/ext/pango/rbpangofontfamily.c +0 -79
  56. data/ext/pango/rbpangofontmap.c +0 -102
  57. data/ext/pango/rbpangofontmetrics.c +0 -85
  58. data/ext/pango/rbpangofontset.c +0 -69
  59. data/ext/pango/rbpangofontsetsimple.c +0 -60
  60. data/ext/pango/rbpangoglyphinfo.c +0 -123
  61. data/ext/pango/rbpangoglyphitem.c +0 -125
  62. data/ext/pango/rbpangoglyphstring.c +0 -151
  63. data/ext/pango/rbpangogravity.c +0 -54
  64. data/ext/pango/rbpangoitem.c +0 -95
  65. data/ext/pango/rbpangolanguage.c +0 -94
  66. data/ext/pango/rbpangolayout.c +0 -583
  67. data/ext/pango/rbpangolayoutiter.c +0 -189
  68. data/ext/pango/rbpangolayoutline.c +0 -243
  69. data/ext/pango/rbpangologattr.c +0 -109
  70. data/ext/pango/rbpangomatrix.c +0 -143
  71. data/ext/pango/rbpangoprivate.h +0 -49
  72. data/ext/pango/rbpangorectangle.c +0 -170
  73. data/ext/pango/rbpangorenderer.c +0 -193
  74. data/ext/pango/rbpangoscript.c +0 -84
  75. data/ext/pango/rbpangoscriptiter.c +0 -92
  76. data/ext/pango/rbpangotabarray.c +0 -128
  77. data/sample/attribute.rb +0 -82
  78. data/sample/break.rb +0 -28
  79. data/sample/gdk_layout.rb +0 -27
  80. data/sample/glyphstring.rb +0 -61
  81. data/sample/item.rb +0 -37
  82. data/sample/label.rb +0 -23
  83. data/sample/layout.rb +0 -102
  84. data/sample/pango_cairo.rb +0 -66
  85. data/sample/parse.rb +0 -33
  86. data/sample/sample.txt +0 -10
  87. data/sample/script.rb +0 -23
@@ -1,143 +0,0 @@
1
- /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
- /*
3
- * Copyright (C) 2011 Ruby-GNOME2 Project Team
4
- * Copyright (C) 2005 Masao Mutoh
5
- *
6
- * This library is free software; you can redistribute it and/or
7
- * modify it under the terms of the GNU Lesser General Public
8
- * License as published by the Free Software Foundation; either
9
- * version 2.1 of the License, or (at your option) any later version.
10
- *
11
- * This library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
- * Lesser General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library; if not, write to the Free Software
18
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
- * MA 02110-1301 USA
20
- */
21
-
22
- #include "rbpangoprivate.h"
23
-
24
- #define RG_TARGET_NAMESPACE cMatrix
25
- #define _SELF(self) (RVAL2PANGOMATRIX(self))
26
-
27
- #define ATTR_FLOAT(name)\
28
- static VALUE \
29
- matrix_get_ ## name (VALUE self)\
30
- {\
31
- return rb_float_new(_SELF(self)->name);\
32
- }\
33
- static VALUE \
34
- matrix_set_ ## name (VALUE self, VALUE val)\
35
- {\
36
- _SELF(self)->name = NUM2DBL(val);\
37
- return self;\
38
- }
39
-
40
- #define DEFINE_ACCESSOR(name) \
41
- rbg_define_method(RG_TARGET_NAMESPACE, G_STRINGIFY(name), matrix_get_ ## name, 0);\
42
- rbg_define_method(RG_TARGET_NAMESPACE, G_STRINGIFY(set_ ## name), matrix_set_## name, 1);
43
-
44
- static VALUE
45
- rg_initialize(int argc, VALUE *argv, VALUE self)
46
- {
47
- PangoMatrix matrix = PANGO_MATRIX_INIT;
48
- VALUE xx, xy, yx, yy, x0, y0;
49
-
50
- rb_scan_args(argc, argv, "06", &xx, &xy, &yx, &yy, &x0, &y0);
51
-
52
- if (argc > 0){
53
- matrix.xx = NUM2DBL(xx);
54
- matrix.xy = NUM2DBL(xy);
55
- matrix.yx = NUM2DBL(yx);
56
- matrix.yy = NUM2DBL(yy);
57
- matrix.x0 = NUM2DBL(x0);
58
- matrix.y0 = NUM2DBL(y0);
59
- }
60
- G_INITIALIZE(self, g_boxed_copy(PANGO_TYPE_MATRIX, &matrix));
61
- return Qnil;
62
- }
63
-
64
- static VALUE
65
- rg_translate_bang(VALUE self, VALUE tx, VALUE ty)
66
- {
67
- pango_matrix_translate(_SELF(self), NUM2DBL(tx), NUM2DBL(ty));
68
- return self;
69
- }
70
-
71
- static VALUE
72
- rg_scale_bang(VALUE self, VALUE scale_x, VALUE scale_y)
73
- {
74
- pango_matrix_scale(_SELF(self), NUM2DBL(scale_x), NUM2DBL(scale_y));
75
- return self;
76
- }
77
-
78
- static VALUE
79
- rg_rotate_bang(VALUE self, VALUE degrees)
80
- {
81
- pango_matrix_rotate(_SELF(self), NUM2DBL(degrees));
82
- return self;
83
- }
84
-
85
- #if PANGO_VERSION_CHECK(1,16,0)
86
- static VALUE
87
- rg_gravity(VALUE self)
88
- {
89
- return PANGOGRAVITY2RVAL(pango_gravity_get_for_matrix(_SELF(self)));
90
- }
91
- #endif
92
-
93
- static VALUE
94
- rg_concat_bang(VALUE self, VALUE new_matrix)
95
- {
96
- pango_matrix_concat(_SELF(self), _SELF(new_matrix));
97
- return self;
98
- }
99
-
100
- static VALUE
101
- rg_font_scale_factor(VALUE self)
102
- {
103
- return rb_float_new(pango_matrix_get_font_scale_factor(_SELF(self)));
104
- }
105
-
106
- ATTR_FLOAT(xx);
107
- ATTR_FLOAT(xy);
108
- ATTR_FLOAT(yx);
109
- ATTR_FLOAT(yy);
110
- ATTR_FLOAT(x0);
111
- ATTR_FLOAT(y0);
112
-
113
- static VALUE
114
- rg_to_a(VALUE self)
115
- {
116
- PangoMatrix* matrix = _SELF(self);
117
- return rb_ary_new3(6, INT2NUM(matrix->xx), INT2NUM(matrix->xy), INT2NUM(matrix->yx),
118
- INT2NUM(matrix->yy), INT2NUM(matrix->x0), INT2NUM(matrix->y0));
119
- }
120
-
121
- void
122
- Init_pango_matrix(VALUE mPango)
123
- {
124
- VALUE RG_TARGET_NAMESPACE = G_DEF_CLASS(PANGO_TYPE_MATRIX, "Matrix", mPango);
125
-
126
- RG_DEF_METHOD(initialize, -1);
127
- RG_DEF_METHOD_BANG(translate, 2);
128
- RG_DEF_METHOD_BANG(scale, 2);
129
- RG_DEF_METHOD_BANG(rotate, 1);
130
- RG_DEF_METHOD_BANG(concat, 1);
131
- RG_DEF_METHOD(font_scale_factor, 0);
132
- #if PANGO_VERSION_CHECK(1,16,0)
133
- RG_DEF_METHOD(gravity, 0);
134
- #endif
135
- RG_DEF_METHOD(to_a, 0);
136
-
137
- DEFINE_ACCESSOR(xx);
138
- DEFINE_ACCESSOR(xy);
139
- DEFINE_ACCESSOR(yx);
140
- DEFINE_ACCESSOR(yy);
141
- DEFINE_ACCESSOR(x0);
142
- DEFINE_ACCESSOR(y0);
143
- }
@@ -1,49 +0,0 @@
1
- #ifndef RB_PANGO_PRIVATE_H
2
- #define RB_PANGO_PRIVATE_H
3
-
4
- #include "rbpango.h"
5
-
6
- #ifndef HAVE_RB_ERRINFO
7
- # define rb_errinfo() (ruby_errinfo)
8
- #endif
9
-
10
- G_BEGIN_DECLS
11
-
12
- G_GNUC_INTERNAL void Init_pango_analysis(VALUE mPango);
13
- G_GNUC_INTERNAL void Init_pango_attribute(VALUE mPango);
14
- G_GNUC_INTERNAL void Init_pango_attriterator(VALUE mPango);
15
- G_GNUC_INTERNAL void Init_pango_attrlist(VALUE mPango);
16
- G_GNUC_INTERNAL void Init_pango_cairo(VALUE mPango);
17
- G_GNUC_INTERNAL void Init_pango_cairo_context(VALUE mPango);
18
- G_GNUC_INTERNAL void Init_pango_color(VALUE mPango);
19
- G_GNUC_INTERNAL void Init_pango_context(VALUE mPango);
20
- G_GNUC_INTERNAL void Init_pango_coverage(VALUE mPango);
21
- G_GNUC_INTERNAL void Init_pango_engine(VALUE mPango);
22
- G_GNUC_INTERNAL void Init_pango_font(VALUE mPango);
23
- G_GNUC_INTERNAL void Init_pango_font_description(VALUE mPango);
24
- G_GNUC_INTERNAL void Init_pango_font_face(VALUE mPango);
25
- G_GNUC_INTERNAL void Init_pango_font_family(VALUE mPango);
26
- G_GNUC_INTERNAL void Init_pango_font_map(VALUE mPango);
27
- G_GNUC_INTERNAL void Init_pango_font_metrics(VALUE mPango);
28
- G_GNUC_INTERNAL void Init_pango_fontset(VALUE mPango);
29
- G_GNUC_INTERNAL void Init_pango_fontset_simple(VALUE mPango);
30
- G_GNUC_INTERNAL void Init_pango_glyph_info(VALUE mPango);
31
- G_GNUC_INTERNAL void Init_pango_glyph_item(VALUE mPango);
32
- G_GNUC_INTERNAL void Init_pango_glyph_string(VALUE mPango);
33
- G_GNUC_INTERNAL void Init_pango_gravity(VALUE mPango);
34
- G_GNUC_INTERNAL void Init_pango_item(VALUE mPango);
35
- G_GNUC_INTERNAL void Init_pango_language(VALUE mPango);
36
- G_GNUC_INTERNAL void Init_pango_layout(VALUE mPango);
37
- G_GNUC_INTERNAL void Init_pango_layout_iter(VALUE mPango);
38
- G_GNUC_INTERNAL void Init_pango_layout_line(VALUE mPango);
39
- G_GNUC_INTERNAL void Init_pango_logattr(VALUE mPango);
40
- G_GNUC_INTERNAL void Init_pango_matrix(VALUE mPango);
41
- G_GNUC_INTERNAL void Init_pango_rectangle(VALUE mPango);
42
- G_GNUC_INTERNAL void Init_pangorenderer(VALUE mPango);
43
- G_GNUC_INTERNAL void Init_pango_script(VALUE mPango);
44
- G_GNUC_INTERNAL void Init_pango_script_iter(VALUE mPango);
45
- G_GNUC_INTERNAL void Init_pango_array(VALUE mPango);
46
-
47
- G_END_DECLS
48
-
49
- #endif /* RB_PANGO_PRIVATE_H */
@@ -1,170 +0,0 @@
1
- /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
- /*
3
- * Copyright (C) 2011 Ruby-GNOME2 Project Team
4
- * Copyright (C) 2002,2003 Masao Mutoh
5
- *
6
- * This library is free software; you can redistribute it and/or
7
- * modify it under the terms of the GNU Lesser General Public
8
- * License as published by the Free Software Foundation; either
9
- * version 2.1 of the License, or (at your option) any later version.
10
- *
11
- * This library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
- * Lesser General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library; if not, write to the Free Software
18
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
- * MA 02110-1301 USA
20
- */
21
-
22
- #include "rbpangoprivate.h"
23
-
24
- #define RG_TARGET_NAMESPACE cRectangle
25
- #define _SELF(s) (RVAL2PANGORECTANGLE(s))
26
-
27
- /**********************************/
28
- static PangoRectangle*
29
- pango_rectangle_copy(const PangoRectangle *ref)
30
- {
31
- PangoRectangle* new_ref;
32
- g_return_val_if_fail (ref != NULL, NULL);
33
- new_ref = g_new(PangoRectangle, 1);
34
- *new_ref = *ref;
35
- return new_ref;
36
- }
37
-
38
- GType
39
- pango_rectangle_get_type(void)
40
- {
41
- static GType our_type = 0;
42
-
43
- if (our_type == 0)
44
- our_type = g_boxed_type_register_static ("PangoRectangle",
45
- (GBoxedCopyFunc)pango_rectangle_copy,
46
- (GBoxedFreeFunc)g_free);
47
- return our_type;
48
- }
49
- /**********************************/
50
-
51
- static VALUE
52
- rg_initialize(VALUE self, VALUE x, VALUE y, VALUE width, VALUE height)
53
- {
54
- PangoRectangle rectangle;
55
-
56
- rectangle.x = NUM2INT(x);
57
- rectangle.y = NUM2INT(y);
58
- rectangle.width = NUM2INT(width);
59
- rectangle.height = NUM2INT(height);
60
-
61
- G_INITIALIZE(self, g_boxed_copy(PANGO_TYPE_RECTANGLE, &rectangle));
62
- return Qnil;
63
- }
64
-
65
- static VALUE
66
- rg_x(VALUE self)
67
- {
68
- return INT2NUM(_SELF(self)->x);
69
- }
70
-
71
- static VALUE
72
- rg_y(VALUE self)
73
- {
74
- return INT2NUM(_SELF(self)->y);
75
- }
76
-
77
- static VALUE
78
- rg_width(VALUE self)
79
- {
80
- return INT2NUM(_SELF(self)->width);
81
- }
82
-
83
- static VALUE
84
- rg_height(VALUE self)
85
- {
86
- return INT2NUM(_SELF(self)->height);
87
- }
88
-
89
- static VALUE
90
- rg_set_x(VALUE self, VALUE x)
91
- {
92
- _SELF(self)->x = NUM2INT(x);
93
- return self;
94
- }
95
-
96
- static VALUE
97
- rg_set_y(VALUE self, VALUE y)
98
- {
99
- _SELF(self)->y = NUM2INT(y);
100
- return self;
101
- }
102
- static VALUE
103
- rg_set_width(VALUE self, VALUE width)
104
- {
105
- _SELF(self)->width = NUM2INT(width);
106
- return self;
107
- }
108
-
109
- static VALUE
110
- rg_set_height(VALUE self, VALUE height)
111
- {
112
- _SELF(self)->height = NUM2INT(height);
113
- return self;
114
- }
115
- static VALUE
116
- rg_to_a(VALUE self)
117
- {
118
- PangoRectangle* a = _SELF(self);
119
- return rb_ary_new3(4, INT2FIX(a->x), INT2FIX(a->y),
120
- INT2FIX(a->width), INT2FIX(a->height));
121
- }
122
-
123
- static VALUE
124
- rg_ascent(VALUE self)
125
- {
126
- PangoRectangle* r =_SELF(self);
127
- return INT2NUM(PANGO_ASCENT(*r));
128
- }
129
-
130
- static VALUE
131
- rg_descent(VALUE self)
132
- {
133
- PangoRectangle* r =_SELF(self);
134
- return INT2NUM(PANGO_DESCENT(*r));
135
- }
136
-
137
- static VALUE
138
- rg_lbearing(VALUE self)
139
- {
140
- PangoRectangle* r =_SELF(self);
141
- return INT2NUM(PANGO_LBEARING(*r));
142
- }
143
-
144
- static VALUE
145
- rg_rbearing(VALUE self)
146
- {
147
- PangoRectangle* r =_SELF(self);
148
- return INT2NUM(PANGO_RBEARING(*r));
149
- }
150
-
151
- void
152
- Init_pango_rectangle(VALUE mPango)
153
- {
154
- VALUE RG_TARGET_NAMESPACE = G_DEF_CLASS(PANGO_TYPE_RECTANGLE, "Rectangle", mPango);
155
- RG_DEF_METHOD(initialize, 4);
156
- RG_DEF_METHOD(x, 0);
157
- RG_DEF_METHOD(y, 0);
158
- RG_DEF_METHOD(width, 0);
159
- RG_DEF_METHOD(height, 0);
160
- RG_DEF_METHOD(set_x, 1);
161
- RG_DEF_METHOD(set_y, 1);
162
- RG_DEF_METHOD(set_width, 1);
163
- RG_DEF_METHOD(set_height, 1);
164
- RG_DEF_METHOD(to_a, 0);
165
-
166
- RG_DEF_METHOD(ascent, 0);
167
- RG_DEF_METHOD(descent, 0);
168
- RG_DEF_METHOD(lbearing, 0);
169
- RG_DEF_METHOD(rbearing, 0);
170
- }
@@ -1,193 +0,0 @@
1
- /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
- /*
3
- * Copyright (C) 2011 Ruby-GNOME2 Project Team
4
- * Copyright (C) 2005 Masao Mutoh
5
- *
6
- * This library is free software; you can redistribute it and/or
7
- * modify it under the terms of the GNU Lesser General Public
8
- * License as published by the Free Software Foundation; either
9
- * version 2.1 of the License, or (at your option) any later version.
10
- *
11
- * This library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
- * Lesser General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library; if not, write to the Free Software
18
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
- * MA 02110-1301 USA
20
- */
21
-
22
- #include "rbpangoprivate.h"
23
-
24
- #define RG_TARGET_NAMESPACE cRenderer
25
- #define _SELF(self) (RVAL2PANGORENDERER(self))
26
-
27
- static VALUE
28
- rg_draw_layout(VALUE self, VALUE layout, VALUE x, VALUE y)
29
- {
30
- pango_renderer_draw_layout(_SELF(self),
31
- RVAL2PANGOLAYOUT(layout),
32
- NUM2INT(x), NUM2INT(y));
33
- return self;
34
- }
35
-
36
- static VALUE
37
- rg_draw_layout_line(VALUE self, VALUE line, VALUE x, VALUE y)
38
- {
39
- pango_renderer_draw_layout_line(_SELF(self),
40
- RVAL2PANGOLAYOUTLINE(line),
41
- NUM2INT(x), NUM2INT(y));
42
- return self;
43
- }
44
-
45
- static VALUE
46
- rg_draw_glyphs(VALUE self, VALUE font, VALUE glyphs, VALUE x, VALUE y)
47
- {
48
- pango_renderer_draw_glyphs(_SELF(self),
49
- RVAL2PANGOFONT(font),
50
- RVAL2PANGOGLYPHSTRING(glyphs),
51
- NUM2INT(x), NUM2INT(y));
52
- return self;
53
- }
54
-
55
- static VALUE
56
- rg_draw_rectangle(VALUE self, VALUE part, VALUE x, VALUE y, VALUE width, VALUE height)
57
- {
58
- #ifdef HAVE_PANGO_RENDER_PART_GET_TYPE
59
- pango_renderer_draw_rectangle(_SELF(self), RVAL2PANGORENDERPART(part),
60
- NUM2INT(x), NUM2INT(y), NUM2INT(width), NUM2INT(height));
61
- #else
62
- pango_renderer_draw_rectangle(_SELF(self), NUM2INT(part),
63
- NUM2INT(x), NUM2INT(y), NUM2INT(width), NUM2INT(height));
64
- #endif
65
- return self;
66
- }
67
-
68
- static VALUE
69
- rg_draw_error_underline(VALUE self, VALUE x, VALUE y, VALUE width, VALUE height)
70
- {
71
- pango_renderer_draw_error_underline(_SELF(self),
72
- NUM2INT(x), NUM2INT(y), NUM2INT(width), NUM2INT(height));
73
- return self;
74
- }
75
-
76
- static VALUE
77
- rg_draw_trapezoid(VALUE self, VALUE part, VALUE y1, VALUE x11, VALUE x21, VALUE y2, VALUE x12, VALUE x22)
78
- {
79
- #ifdef HAVE_PANGO_RENDER_PART_GET_TYPE
80
- pango_renderer_draw_trapezoid(_SELF(self),
81
- RVAL2PANGORENDERPART(part),
82
- NUM2DBL(y1), NUM2DBL(x11), NUM2DBL(x21),
83
- NUM2DBL(y2), NUM2DBL(x12), NUM2DBL(x22));
84
- #else
85
- pango_renderer_draw_trapezoid(_SELF(self), NUM2INT(part),
86
- NUM2DBL(y1), NUM2DBL(x11), NUM2DBL(x21),
87
- NUM2DBL(y2), NUM2DBL(x12), NUM2DBL(x22));
88
- #endif
89
- return self;
90
- }
91
-
92
- static VALUE
93
- rg_draw_glyph(VALUE self, VALUE font, VALUE glyph, VALUE x, VALUE y)
94
- {
95
- pango_renderer_draw_glyph(_SELF(self), RVAL2PANGOFONT(font),
96
- NUM2INT(glyph), NUM2INT(x), NUM2INT(y));
97
- return self;
98
- }
99
-
100
- static VALUE
101
- rg_deactivate(VALUE self)
102
- {
103
- pango_renderer_deactivate(_SELF(self));
104
- return self;
105
- }
106
-
107
- static VALUE
108
- rg_activate(VALUE self)
109
- {
110
- pango_renderer_activate(_SELF(self));
111
- if (rb_block_given_p()) {
112
- rb_ensure(rb_yield, self, rg_deactivate, self);
113
- }
114
- return self;
115
- }
116
-
117
- static VALUE
118
- rg_part_changed(VALUE self, VALUE part)
119
- {
120
- #ifdef HAVE_PANGO_RENDER_PART_GET_TYPE
121
- pango_renderer_part_changed(_SELF(self), RVAL2PANGORENDERPART(part));
122
- #else
123
- pango_renderer_part_changed(_SELF(self), NUM2INT(part));
124
- #endif
125
- return self;
126
- }
127
-
128
- static VALUE
129
- rg_set_color(VALUE self, VALUE part, VALUE color)
130
- {
131
- #ifdef HAVE_PANGO_RENDER_PART_GET_TYPE
132
- pango_renderer_set_color(_SELF(self), RVAL2PANGORENDERPART(part),
133
- NIL_P(color) ? NULL : RVAL2PANGOCOLOR(color));
134
- #else
135
- pango_renderer_set_color(_SELF(self), NUM2INT(part),
136
- NIL_P(color) ? NULL : RVAL2PANGOCOLOR(color));
137
- #endif
138
- return self;
139
- }
140
-
141
- static VALUE
142
- rg_get_color(VALUE self, VALUE part)
143
- {
144
- #ifdef HAVE_PANGO_RENDER_PART_GET_TYPE
145
- PangoColor* color = pango_renderer_get_color(_SELF(self),
146
- RVAL2PANGORENDERPART(part));
147
- #else
148
- PangoColor* color = pango_renderer_get_color(_SELF(self),NUM2INT(part));
149
- #endif
150
- return PANGOCOLOR2RVAL(color);
151
- }
152
-
153
- static VALUE
154
- rg_set_matrix(VALUE self, VALUE matrix)
155
- {
156
- pango_renderer_set_matrix(_SELF(self),
157
- NIL_P(matrix) ? NULL : RVAL2PANGOMATRIX(matrix));
158
- return self;
159
- }
160
-
161
- static VALUE
162
- rg_matrix(VALUE self)
163
- {
164
- const PangoMatrix* matrix = pango_renderer_get_matrix(_SELF(self));
165
- return PANGOMATRIX2RVAL((PangoMatrix*)matrix);
166
- }
167
-
168
- void
169
- Init_pangorenderer(VALUE mPango)
170
- {
171
- VALUE RG_TARGET_NAMESPACE = G_DEF_CLASS(PANGO_TYPE_RENDERER, "Renderer", mPango);
172
-
173
- RG_DEF_METHOD(draw_layout, 3);
174
- RG_DEF_METHOD(draw_layout_line, 3);
175
- RG_DEF_METHOD(draw_glyphs, 4);
176
- RG_DEF_METHOD(draw_rectangle, 5);
177
- RG_DEF_METHOD(draw_error_underline, 4);
178
- RG_DEF_METHOD(draw_trapezoid, 7);
179
- RG_DEF_METHOD(draw_glyph, 4);
180
- RG_DEF_METHOD(activate, 0);
181
- RG_DEF_METHOD(deactivate, 0);
182
- RG_DEF_METHOD(part_changed, 1);
183
- RG_DEF_METHOD(set_color, 2);
184
- RG_DEF_METHOD(get_color, 1);
185
- RG_DEF_METHOD(set_matrix, 1);
186
- RG_DEF_METHOD(matrix, 0);
187
-
188
- /* PangoRenderPart */
189
- #ifdef HAVE_PANGO_RENDER_PART_GET_TYPE
190
- G_DEF_CLASS(PANGO_TYPE_RENDER_PART, "Part", RG_TARGET_NAMESPACE);
191
- G_DEF_CONSTANTS(RG_TARGET_NAMESPACE, PANGO_TYPE_RENDER_PART, "PANGO_RENDER_");
192
- #endif
193
- }