pango 3.0.8 → 3.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Rakefile +3 -3
- data/ext/pango/rbpangoattribute.c +7 -0
- data/ext/pango/rbpangoattrlist.c +2 -2
- data/ext/pango/rbpangocontext.c +49 -14
- data/ext/pango/rbpangoglyphinfo.c +5 -5
- data/test/test-context.rb +113 -0
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 511180db9799f946c4a9662318093d662e099876
|
4
|
+
data.tar.gz: 7f213c633a383ba61bd139f634adbeb3c74caa0c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 96e4cdbdd2cf927f4c29882047d0f84cc729d6e15f78163949b41c4b8f6fa2b3ec4c5408cc45f807ebb38aed032283ea9f68d5c9aa394e2352f88bf73b31a1ca
|
7
|
+
data.tar.gz: 0011b70b858328b54735d5905e83f9a47029bfd806c58e5ce7e3b6e0e36bf5498842ab104cd1ee98113f23e7902e71b41d67c9675b488e1c8963ed1da047bf30
|
data/Rakefile
CHANGED
@@ -48,9 +48,9 @@ package_task = GNOME2::Rake::PackageTask.new do |package|
|
|
48
48
|
},
|
49
49
|
{
|
50
50
|
:name => "harfbuzz",
|
51
|
-
:
|
51
|
+
:download_site => :freedesktop,
|
52
52
|
:label => "HarfBuzz",
|
53
|
-
:version => "1.
|
53
|
+
:version => "1.3.0",
|
54
54
|
:compression_method => "bz2",
|
55
55
|
:windows => {
|
56
56
|
:configure_args => [
|
@@ -64,7 +64,7 @@ package_task = GNOME2::Rake::PackageTask.new do |package|
|
|
64
64
|
:name => "pango",
|
65
65
|
:download_site => :gnome,
|
66
66
|
:label => "pango",
|
67
|
-
:version => "1.40.
|
67
|
+
:version => "1.40.1",
|
68
68
|
:compression_method => "xz",
|
69
69
|
:windows => {
|
70
70
|
:configure_args => [
|
@@ -229,6 +229,12 @@ attr_shape_value(VALUE self)
|
|
229
229
|
return rb_ary_new3(2, attr_shape_ink_rect(self), attr_shape_logical_rect(self));
|
230
230
|
}
|
231
231
|
|
232
|
+
static VALUE
|
233
|
+
attr_shape_data(VALUE self)
|
234
|
+
{
|
235
|
+
return (VALUE)(((PangoAttrShape *)RVAL2ATTR(self))->data);
|
236
|
+
}
|
237
|
+
|
232
238
|
/*
|
233
239
|
* Initialize methods
|
234
240
|
*/
|
@@ -464,6 +470,7 @@ Init_pango_attribute(VALUE mPango)
|
|
464
470
|
rbg_define_method(tmpklass, "ink_rect", attr_shape_ink_rect, 0);
|
465
471
|
rbg_define_method(tmpklass, "logical_rect", attr_shape_logical_rect, 0);
|
466
472
|
rbg_define_method(tmpklass, "value", attr_shape_value, 0);
|
473
|
+
rbg_define_method(tmpklass, "data", attr_shape_data, 0);
|
467
474
|
MAKE_ATTR(PANGO_ATTR_SCALE, AttrScale, pattrfloat, 1);
|
468
475
|
/* PangoScale */
|
469
476
|
rb_define_const(tmpklass, "XX_SMALL", rb_float_new(PANGO_SCALE_XX_SMALL));
|
data/ext/pango/rbpangoattrlist.c
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
2
|
/*
|
3
|
-
* Copyright (C) 2011
|
3
|
+
* Copyright (C) 2011-2016 Ruby-GNOME2 Project Team
|
4
4
|
* Copyright (C) 2002-2005 Masao Mutoh
|
5
5
|
*
|
6
6
|
* This library is free software; you can redistribute it and/or
|
@@ -64,7 +64,7 @@ rg_splice(VALUE self, VALUE other, VALUE pos, VALUE len)
|
|
64
64
|
static gboolean
|
65
65
|
filter_func(PangoAttribute *attr, gpointer data)
|
66
66
|
{
|
67
|
-
return
|
67
|
+
return RVAL2CBOOL(rb_funcall((VALUE)data, id_call, 1, ATTR2RVAL(attr)));
|
68
68
|
}
|
69
69
|
|
70
70
|
static VALUE
|
data/ext/pango/rbpangocontext.c
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
2
|
/*
|
3
|
-
* Copyright (C) 2011
|
3
|
+
* Copyright (C) 2011-2016 Ruby-GNOME2 Project Team
|
4
4
|
* Copyright (C) 2002-2005 Masao Mutoh
|
5
5
|
*
|
6
6
|
* This library is free software; you can redistribute it and/or
|
@@ -21,6 +21,8 @@
|
|
21
21
|
|
22
22
|
#include "rbpangoprivate.h"
|
23
23
|
|
24
|
+
static ID id_call;
|
25
|
+
|
24
26
|
#define RG_TARGET_NAMESPACE cContext
|
25
27
|
#define _SELF(self) (RVAL2PANGOCONTEXT(self))
|
26
28
|
|
@@ -33,26 +35,26 @@ rg_itemize(int argc, VALUE *argv, VALUE self)
|
|
33
35
|
rb_scan_args(argc, argv, "42", &arg1, &arg2, &arg3, &arg4, &arg5, &arg6);
|
34
36
|
|
35
37
|
if (TYPE(arg1) == T_STRING) {
|
36
|
-
list = pango_itemize(_SELF(self),
|
37
|
-
RVAL2CSTR(arg1), /* text */
|
38
|
-
NUM2INT(arg2), /* start_index */
|
38
|
+
list = pango_itemize(_SELF(self),
|
39
|
+
RVAL2CSTR(arg1), /* text */
|
40
|
+
NUM2INT(arg2), /* start_index */
|
39
41
|
NUM2INT(arg3), /* length */
|
40
42
|
RVAL2PANGOATTRLIST(arg4), /* attrs */
|
41
43
|
NIL_P(arg5) ? NULL : RVAL2PANGOATTRITERATOR(arg5)); /* cached_iter */
|
42
44
|
} else {
|
43
45
|
#ifdef HAVE_PANGO_ITEMIZE_WITH_BASE_DIR
|
44
|
-
list = pango_itemize_with_base_dir(_SELF(self),
|
46
|
+
list = pango_itemize_with_base_dir(_SELF(self),
|
45
47
|
RVAL2PANGODIRECTION(arg1), /* base_dir */
|
46
|
-
RVAL2CSTR(arg2), /* text */
|
47
|
-
NUM2INT(arg3), /* start_index */
|
48
|
+
RVAL2CSTR(arg2), /* text */
|
49
|
+
NUM2INT(arg3), /* start_index */
|
48
50
|
NUM2INT(arg4), /* length */
|
49
51
|
RVAL2PANGOATTRLIST(arg5), /* attrs */
|
50
52
|
NIL_P(arg6) ? NULL : RVAL2PANGOATTRITERATOR(arg6)); /* cached_iter */
|
51
53
|
#else
|
52
54
|
rb_warn("Pango::Context#itemize(base_dir, text, start_index, length, attrs, cached_iter) isn't supported on this environment.");
|
53
|
-
list = pango_itemize(_SELF(self),
|
54
|
-
RVAL2CSTR(arg1), /* text */
|
55
|
-
NUM2INT(arg2), /* start_index */
|
55
|
+
list = pango_itemize(_SELF(self),
|
56
|
+
RVAL2CSTR(arg1), /* text */
|
57
|
+
NUM2INT(arg2), /* start_index */
|
56
58
|
NUM2INT(arg3), /* length */
|
57
59
|
RVAL2PANGOATTRLIST(arg4), /* attrs */
|
58
60
|
NIL_P(arg5) ? NULL : RVAL2PANGOATTRITERATOR(arg5)); /* cached_iter */
|
@@ -111,7 +113,7 @@ rg_language(VALUE self)
|
|
111
113
|
static VALUE
|
112
114
|
rg_set_language(VALUE self, VALUE lang)
|
113
115
|
{
|
114
|
-
pango_context_set_language(_SELF(self),
|
116
|
+
pango_context_set_language(_SELF(self),
|
115
117
|
RVAL2PANGOLANGUAGE(lang));
|
116
118
|
return self;
|
117
119
|
}
|
@@ -167,7 +169,7 @@ rg_matrix(VALUE self)
|
|
167
169
|
static VALUE
|
168
170
|
rg_set_matrix(VALUE self, VALUE matrix)
|
169
171
|
{
|
170
|
-
pango_context_set_matrix(_SELF(self),
|
172
|
+
pango_context_set_matrix(_SELF(self),
|
171
173
|
RVAL2PANGOMATRIX(matrix));
|
172
174
|
return self;
|
173
175
|
}
|
@@ -192,8 +194,8 @@ rg_get_metrics(int argc, VALUE *argv, VALUE self)
|
|
192
194
|
|
193
195
|
rb_scan_args(argc, argv, "11", &desc, &lang);
|
194
196
|
|
195
|
-
return PANGOFONTMETRICS2RVAL(pango_context_get_metrics(_SELF(self),
|
196
|
-
RVAL2PANGOFONTDESCRIPTION(desc),
|
197
|
+
return PANGOFONTMETRICS2RVAL(pango_context_get_metrics(_SELF(self),
|
198
|
+
RVAL2PANGOFONTDESCRIPTION(desc),
|
197
199
|
NIL_P(lang) ? NULL : RVAL2PANGOLANGUAGE(lang)));
|
198
200
|
}
|
199
201
|
|
@@ -253,6 +255,36 @@ rg_resolution(VALUE self)
|
|
253
255
|
{
|
254
256
|
return rb_float_new(pango_cairo_context_get_resolution(_SELF(self)));
|
255
257
|
}
|
258
|
+
|
259
|
+
static void
|
260
|
+
shape_renderer_callback(cairo_t *cr,
|
261
|
+
PangoAttrShape *attr,
|
262
|
+
gboolean do_path,
|
263
|
+
gpointer data)
|
264
|
+
{
|
265
|
+
VALUE rb_cr;
|
266
|
+
VALUE rb_attr;
|
267
|
+
VALUE rb_do_path;
|
268
|
+
VALUE rb_callback;
|
269
|
+
|
270
|
+
rb_cr = CRCONTEXT2RVAL(cr);
|
271
|
+
rb_attr = ATTR2RVAL((PangoAttribute *)attr);
|
272
|
+
rb_do_path = CBOOL2RVAL(do_path);
|
273
|
+
rb_callback = (VALUE)data;
|
274
|
+
rb_funcall(rb_callback, id_call, 3, rb_cr, rb_attr, rb_do_path);
|
275
|
+
}
|
276
|
+
|
277
|
+
static VALUE
|
278
|
+
rg_set_shape_renderer(VALUE self)
|
279
|
+
{
|
280
|
+
VALUE func = rb_block_proc();
|
281
|
+
rb_iv_set(self, "@shape_renderer", func);
|
282
|
+
pango_cairo_context_set_shape_renderer(_SELF(self),
|
283
|
+
shape_renderer_callback,
|
284
|
+
(gpointer)func,
|
285
|
+
NULL);
|
286
|
+
return self;
|
287
|
+
}
|
256
288
|
#endif
|
257
289
|
|
258
290
|
static VALUE
|
@@ -267,6 +299,8 @@ Init_pango_context(VALUE mPango)
|
|
267
299
|
{
|
268
300
|
VALUE RG_TARGET_NAMESPACE = G_DEF_CLASS(PANGO_TYPE_CONTEXT, "Context", mPango);
|
269
301
|
|
302
|
+
id_call = rb_intern("call");
|
303
|
+
|
270
304
|
RG_DEF_METHOD(itemize, -1);
|
271
305
|
|
272
306
|
#ifdef PANGO_ENABLE_BACKEND
|
@@ -298,6 +332,7 @@ Init_pango_context(VALUE mPango)
|
|
298
332
|
RG_DEF_METHOD(font_options, 0);
|
299
333
|
RG_DEF_METHOD(set_resolution, 1);
|
300
334
|
RG_DEF_METHOD(resolution, 0);
|
335
|
+
RG_DEF_METHOD(set_shape_renderer, 0);
|
301
336
|
#endif
|
302
337
|
|
303
338
|
/* This will remove 2 or 3 releases later since 0.14.0. */
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
2
|
/*
|
3
|
-
* Copyright (C) 2011 Ruby-GNOME2 Project Team
|
3
|
+
* Copyright (C) 2011-2016 Ruby-GNOME2 Project Team
|
4
4
|
* Copyright (C) 2005 Masao Mutoh
|
5
5
|
*
|
6
6
|
* This library is free software; you can redistribute it and/or
|
@@ -83,11 +83,11 @@ rg_geometry(VALUE self)
|
|
83
83
|
static VALUE
|
84
84
|
rg_set_geometry(VALUE self, VALUE width, VALUE x_offset, VALUE y_offset)
|
85
85
|
{
|
86
|
-
PangoGlyphGeometry geo = _SELF(self)->geometry;
|
86
|
+
PangoGlyphGeometry *geo = &(_SELF(self)->geometry);
|
87
87
|
|
88
|
-
geo
|
89
|
-
geo
|
90
|
-
geo
|
88
|
+
geo->width = NUM2INT(width);
|
89
|
+
geo->x_offset = NUM2INT(x_offset);
|
90
|
+
geo->y_offset = NUM2INT(y_offset);
|
91
91
|
|
92
92
|
return self;
|
93
93
|
}
|
@@ -0,0 +1,113 @@
|
|
1
|
+
# Copyright (C) 2016 Ruby-GNOME2 Project Team
|
2
|
+
#
|
3
|
+
# This library is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of the GNU Lesser General Public
|
5
|
+
# License as published by the Free Software Foundation; either
|
6
|
+
# version 2.1 of the License, or (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This library is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
11
|
+
# Lesser General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU Lesser General Public
|
14
|
+
# License along with this library; if not, write to the Free Software
|
15
|
+
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
16
|
+
|
17
|
+
class TestContext < Test::Unit::TestCase
|
18
|
+
include PangoTestUtils
|
19
|
+
|
20
|
+
def setup
|
21
|
+
font_map = Pango::CairoFontMap.default
|
22
|
+
@context = font_map.create_context
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_set_font_map
|
26
|
+
font_map = Pango::CairoFontMap.default
|
27
|
+
@context.font_map = font_map
|
28
|
+
assert_equal(font_map, @context.font_map)
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_set_font_description
|
32
|
+
description = Pango::FontDescription.new("monospace")
|
33
|
+
description.size = 10 * Pango::SCALE
|
34
|
+
@context.font_description = description
|
35
|
+
assert_equal("monospace 10", @context.font_description.to_s)
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_set_language
|
39
|
+
@context.language = Pango::Language.new("fr")
|
40
|
+
assert_equal("fr", @context.language.to_s)
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_set_base_dir
|
44
|
+
@context.base_dir = Pango::Context::DIRECTION_LTR
|
45
|
+
assert_equal(Pango::Context::DIRECTION_LTR, @context.base_dir)
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_set_gravity
|
49
|
+
@context.gravity_hint = Pango::Gravity::HINT_STRONG
|
50
|
+
assert_equal(Pango::Gravity::HINT_STRONG, @context.gravity_hint)
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_set_matrix
|
54
|
+
matrix = Pango::Matrix.new(0.1, 0.2, 0.3, 0.4, 0.5, 0.6)
|
55
|
+
@context.matrix = matrix
|
56
|
+
assert_equal(0.1, @context.matrix.xx)
|
57
|
+
assert_equal(0.2, @context.matrix.xy)
|
58
|
+
assert_equal(0.3, @context.matrix.yx)
|
59
|
+
assert_equal(0.4, @context.matrix.yy)
|
60
|
+
assert_equal(0.5, @context.matrix.x0)
|
61
|
+
assert_equal(0.6, @context.matrix.y0)
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_load_font
|
65
|
+
description = Pango::FontDescription.new("monospace")
|
66
|
+
description.size = 10 * Pango::SCALE
|
67
|
+
font = @context.load_font(description)
|
68
|
+
assert_equal(10,
|
69
|
+
(font.describe.size.to_f / Pango::SCALE).round)
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_load_fontset
|
73
|
+
description = Pango::FontDescription.new("monospace")
|
74
|
+
description.size = 10 * Pango::SCALE
|
75
|
+
language = Pango::Language.new("fr")
|
76
|
+
fontset = @context.load_fontset(description, language)
|
77
|
+
a_unicode = GLib::UTF8.get_char("a")
|
78
|
+
font = fontset.get_font(a_unicode)
|
79
|
+
assert_equal(10,
|
80
|
+
(font.describe.size.to_f / Pango::SCALE).round)
|
81
|
+
end
|
82
|
+
|
83
|
+
def test_get_metrics
|
84
|
+
description = Pango::FontDescription.new("monospace")
|
85
|
+
description.size = 10 * Pango::SCALE
|
86
|
+
language = Pango::Language.new("fr")
|
87
|
+
metrics = @context.get_metrics(description, language)
|
88
|
+
assert do
|
89
|
+
metrics.ascent > metrics.descent
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def test_families
|
94
|
+
family_names = @context.families.collect(&:name)
|
95
|
+
assert do
|
96
|
+
family_names.include?("Monospace")
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
def test_font_options
|
101
|
+
options = Cairo::FontOptions.new
|
102
|
+
options.antialias = Cairo::Antialias::BEST
|
103
|
+
@context.font_options = options
|
104
|
+
assert_equal(Cairo::Antialias::BEST,
|
105
|
+
@context.font_options.antialias)
|
106
|
+
end
|
107
|
+
|
108
|
+
def test_resolution
|
109
|
+
dpi = 72
|
110
|
+
@context.resolution = dpi
|
111
|
+
assert_equal(dpi, @context.resolution)
|
112
|
+
end
|
113
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pango
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- The Ruby-GNOME2 Project Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-08-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cairo
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 3.0.
|
33
|
+
version: 3.0.9
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 3.0.
|
40
|
+
version: 3.0.9
|
41
41
|
description: Ruby/Pango is a Ruby binding of pango-1.x.
|
42
42
|
email: ruby-gnome2-devel-en@lists.sourceforge.net
|
43
43
|
executables: []
|
@@ -106,6 +106,7 @@ files:
|
|
106
106
|
- test/test-analysis.rb
|
107
107
|
- test/test-attribute.rb
|
108
108
|
- test/test-color.rb
|
109
|
+
- test/test-context.rb
|
109
110
|
- test/test-language.rb
|
110
111
|
- test/test-layout.rb
|
111
112
|
- test/test-log-attr.rb
|
@@ -124,7 +125,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
124
125
|
requirements:
|
125
126
|
- - ">="
|
126
127
|
- !ruby/object:Gem::Version
|
127
|
-
version: 1.
|
128
|
+
version: 2.1.0
|
128
129
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
129
130
|
requirements:
|
130
131
|
- - ">="
|