cairo 1.15.13-x64-mingw32 → 1.15.14-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/NEWS +24 -0
- data/README.rdoc +11 -40
- data/Rakefile +4 -2
- data/ext/cairo/rb_cairo.h +1 -1
- data/ext/cairo/rb_cairo_context.c +35 -3
- data/ext/cairo/rb_cairo_font_options.c +5 -6
- data/ext/cairo/rb_cairo_private.h +2 -2
- data/ext/cairo/rb_cairo_scaled_font.c +11 -2
- data/ext/cairo/rb_cairo_surface.c +89 -48
- data/lib/2.2/cairo.so +0 -0
- data/lib/2.3/cairo.so +0 -0
- data/lib/2.4/cairo.so +0 -0
- data/lib/2.5/cairo.so +0 -0
- data/test/{cairo-test-utils.rb → helper.rb} +4 -5
- data/test/run-test.rb +3 -10
- data/test/test_context.rb +6 -6
- data/test/test_font_extents.rb +1 -1
- data/test/test_font_face.rb +1 -1
- data/test/test_font_options.rb +1 -1
- data/test/test_image_surface.rb +2 -2
- data/test/test_pdf_surface.rb +1 -1
- data/test/test_quartz_image_surface.rb +1 -1
- data/test/test_raster_source_pattern.rb +13 -13
- data/test/test_recording_surface.rb +2 -2
- data/test/test_region.rb +1 -1
- data/test/test_scaled_font.rb +1 -1
- data/test/test_script_device.rb +1 -1
- data/test/test_script_surface.rb +1 -1
- data/test/test_surface.rb +5 -5
- data/test/test_svg_surface.rb +1 -1
- data/test/test_tee_surface.rb +2 -2
- data/test/test_text_cluster.rb +1 -1
- data/test/test_text_extents.rb +1 -1
- data/test/test_text_to_glyphs_data.rb +1 -1
- data/test/test_xml_device.rb +1 -1
- data/test/test_xml_surface.rb +2 -2
- data/vendor/local/bin/fc-cache.exe +0 -0
- data/vendor/local/bin/fc-cat.exe +0 -0
- data/vendor/local/bin/fc-conflist.exe +0 -0
- data/vendor/local/bin/fc-list.exe +0 -0
- data/vendor/local/bin/fc-match.exe +0 -0
- data/vendor/local/bin/fc-pattern.exe +0 -0
- data/vendor/local/bin/fc-query.exe +0 -0
- data/vendor/local/bin/fc-scan.exe +0 -0
- data/vendor/local/bin/fc-validate.exe +0 -0
- data/vendor/local/bin/libcairo-2.dll +0 -0
- data/vendor/local/bin/libcairo-gobject-2.dll +0 -0
- data/vendor/local/bin/libcairo-script-interpreter-2.dll +0 -0
- data/vendor/local/bin/libfontconfig-1.dll +0 -0
- data/vendor/local/bin/libfreetype-6.dll +0 -0
- data/vendor/local/bin/libpixman-1-0.dll +0 -0
- data/vendor/local/bin/libpng-config +1 -1
- data/vendor/local/bin/libpng16-16.dll +0 -0
- data/vendor/local/bin/libpng16-config +1 -1
- data/vendor/local/bin/libxml2-2.dll +0 -0
- data/vendor/local/bin/png-fix-itxt.exe +0 -0
- data/vendor/local/bin/pngfix.exe +0 -0
- data/vendor/local/bin/xmlcatalog.exe +0 -0
- data/vendor/local/bin/xmllint.exe +0 -0
- data/vendor/local/bin/zlib1211.dll +0 -0
- data/vendor/local/include/freetype2/freetype/config/ftconfig.h +82 -3
- data/vendor/local/include/freetype2/freetype/config/ftheader.h +43 -85
- data/vendor/local/include/freetype2/freetype/config/ftoption.h +43 -56
- data/vendor/local/include/freetype2/freetype/config/ftstdlib.h +1 -1
- data/vendor/local/include/freetype2/freetype/freetype.h +185 -85
- data/vendor/local/include/freetype2/freetype/ftadvanc.h +1 -1
- data/vendor/local/include/freetype2/freetype/ftbbox.h +2 -2
- data/vendor/local/include/freetype2/freetype/ftbdf.h +1 -1
- data/vendor/local/include/freetype2/freetype/ftbitmap.h +2 -2
- data/vendor/local/include/freetype2/freetype/ftbzip2.h +1 -1
- data/vendor/local/include/freetype2/freetype/ftcache.h +1 -16
- data/vendor/local/include/freetype2/freetype/ftchapters.h +3 -0
- data/vendor/local/include/freetype2/freetype/ftcid.h +2 -2
- data/vendor/local/include/freetype2/freetype/ftdriver.h +1225 -0
- data/vendor/local/include/freetype2/freetype/fterrdef.h +1 -1
- data/vendor/local/include/freetype2/freetype/fterrors.h +1 -1
- data/vendor/local/include/freetype2/freetype/ftfntfmt.h +1 -1
- data/vendor/local/include/freetype2/freetype/ftgasp.h +6 -1
- data/vendor/local/include/freetype2/freetype/ftglyph.h +3 -3
- data/vendor/local/include/freetype2/freetype/ftgxval.h +5 -5
- data/vendor/local/include/freetype2/freetype/ftgzip.h +4 -1
- data/vendor/local/include/freetype2/freetype/ftimage.h +18 -18
- data/vendor/local/include/freetype2/freetype/ftincrem.h +2 -13
- data/vendor/local/include/freetype2/freetype/ftlcdfil.h +5 -18
- data/vendor/local/include/freetype2/freetype/ftlist.h +1 -1
- data/vendor/local/include/freetype2/freetype/ftlzw.h +1 -1
- data/vendor/local/include/freetype2/freetype/ftmac.h +1 -1
- data/vendor/local/include/freetype2/freetype/ftmm.h +99 -11
- data/vendor/local/include/freetype2/freetype/ftmodapi.h +12 -11
- data/vendor/local/include/freetype2/freetype/ftmoderr.h +1 -1
- data/vendor/local/include/freetype2/freetype/ftotval.h +1 -1
- data/vendor/local/include/freetype2/freetype/ftoutln.h +4 -7
- data/vendor/local/include/freetype2/freetype/ftparams.h +205 -0
- data/vendor/local/include/freetype2/freetype/ftpfr.h +4 -4
- data/vendor/local/include/freetype2/freetype/ftrender.h +2 -2
- data/vendor/local/include/freetype2/freetype/ftsizes.h +1 -1
- data/vendor/local/include/freetype2/freetype/ftsnames.h +8 -42
- data/vendor/local/include/freetype2/freetype/ftstroke.h +6 -6
- data/vendor/local/include/freetype2/freetype/ftsynth.h +1 -1
- data/vendor/local/include/freetype2/freetype/ftsystem.h +1 -1
- data/vendor/local/include/freetype2/freetype/fttrigon.h +1 -1
- data/vendor/local/include/freetype2/freetype/fttypes.h +2 -2
- data/vendor/local/include/freetype2/freetype/ftwinfnt.h +2 -2
- data/vendor/local/include/freetype2/freetype/t1tables.h +10 -1
- data/vendor/local/include/freetype2/freetype/ttnameid.h +2 -2
- data/vendor/local/include/freetype2/freetype/tttables.h +1 -1
- data/vendor/local/include/freetype2/freetype/tttags.h +1 -1
- data/vendor/local/include/freetype2/ft2build.h +1 -1
- data/vendor/local/include/libpng16/png.h +40 -40
- data/vendor/local/include/libpng16/pngconf.h +15 -14
- data/vendor/local/include/libpng16/pnglibconf.h +1 -1
- data/vendor/local/include/png.h +40 -40
- data/vendor/local/include/pngconf.h +15 -14
- data/vendor/local/include/pnglibconf.h +1 -1
- data/vendor/local/lib/libcairo-gobject.dll.a +0 -0
- data/vendor/local/lib/libcairo-gobject.la +1 -1
- data/vendor/local/lib/libcairo-script-interpreter.a +0 -0
- data/vendor/local/lib/libcairo-script-interpreter.dll.a +0 -0
- data/vendor/local/lib/libcairo.a +0 -0
- data/vendor/local/lib/libcairo.dll.a +0 -0
- data/vendor/local/lib/libfontconfig.dll.a +0 -0
- data/vendor/local/lib/libfreetype.a +0 -0
- data/vendor/local/lib/libfreetype.dll.a +0 -0
- data/vendor/local/lib/libfreetype.la +3 -3
- data/vendor/local/lib/libpixman-1.dll.a +0 -0
- data/vendor/local/lib/libpng.a +0 -0
- data/vendor/local/lib/libpng.dll.a +0 -0
- data/vendor/local/lib/libpng.la +2 -2
- data/vendor/local/lib/libpng16.a +0 -0
- data/vendor/local/lib/libpng16.dll.a +0 -0
- data/vendor/local/lib/libpng16.la +2 -2
- data/vendor/local/lib/libxml2.dll.a +0 -0
- data/vendor/local/lib/libz.dll.a +0 -0
- data/vendor/local/lib/pkgconfig/freetype2.pc +2 -2
- data/vendor/local/lib/pkgconfig/libpng.pc +1 -1
- data/vendor/local/lib/pkgconfig/libpng16.pc +1 -1
- data/vendor/local/share/aclocal/freetype2.m4 +1 -1
- data/vendor/local/share/license/freetype/README +9 -9
- data/vendor/local/share/license/freetype/README.git +1 -1
- data/vendor/local/share/license/libpng/README +2 -2
- data/vendor/local/share/man/man3/libpng.3 +50 -54
- data/vendor/local/share/man/man3/libpngpf.3 +8 -4
- metadata +9 -14
- data/vendor/local/bin/freetype-config +0 -211
- data/vendor/local/include/freetype2/freetype/ftautoh.h +0 -533
- data/vendor/local/include/freetype2/freetype/ftcffdrv.h +0 -321
- data/vendor/local/include/freetype2/freetype/ftpcfdrv.h +0 -105
- data/vendor/local/include/freetype2/freetype/ftttdrv.h +0 -328
- data/vendor/local/include/freetype2/freetype/ttunpat.h +0 -63
- data/vendor/local/share/man/man1/freetype-config.1 +0 -146
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 232fcc3fde1ee933c7456acd422b0a6d6b9de07c640cdefbed5647602e178d2a
|
4
|
+
data.tar.gz: df1c0b24473693309c40ad86a145be61ac65274d83c152bbea3d32b491c82989
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0c6ee18a5c3c36b3858d7468207abad3743450b866dadfb3b9fd78f7358257766fc62b179c16505e309011558cc0d5276ecc87c8176dbd58a3c102559dcad1ba
|
7
|
+
data.tar.gz: ad430e2bb2cf2d66583a0dd6b04708e26275b4dea2377894b3de4fe899e65fbdfd0a058e3b4e62cbc5cbca4fcd872505e976fbc6f4e737a31304a8c4a384a6b7
|
data/NEWS
CHANGED
@@ -1,3 +1,27 @@
|
|
1
|
+
Release 1.15.14 (2018-08-20) Kouhei Sutou <kou@cozmixng.org>
|
2
|
+
============================================================
|
3
|
+
|
4
|
+
Improvements
|
5
|
+
------------
|
6
|
+
|
7
|
+
* Added Cairo::Surface.create {}. Cairo::Surface.new {} is deprecated.
|
8
|
+
|
9
|
+
* Added Cairo::Context.create {}. Cairo::Context.new {} is deprecated.
|
10
|
+
|
11
|
+
* Windows: Added support for installing a normal gem (not fat gem)
|
12
|
+
by "gem install --platform ruby". If you use Bundler, use "bundle
|
13
|
+
config --local force_ruby_platform true" and "bundle exec ruby -rdevkit".
|
14
|
+
|
15
|
+
* Changed to use SPDX license ID in gemspec.
|
16
|
+
|
17
|
+
Fixes
|
18
|
+
-----
|
19
|
+
|
20
|
+
* Fixed a bug that CRFONTOPTIOSN2RVAL() doesn't copy the target
|
21
|
+
options.
|
22
|
+
* Other CR*2RVAL() copy or refer the target objects. So
|
23
|
+
CRFONTOPTIONS2RVAL() must copy for consistency.
|
24
|
+
|
1
25
|
Release 1.15.13 (2018-05-01) Kouhei Sutou <kou@cozmixng.org>
|
2
26
|
============================================================
|
3
27
|
|
data/README.rdoc
CHANGED
@@ -8,12 +8,12 @@ rcairo
|
|
8
8
|
|
9
9
|
Ruby bindings for cairo // cairo extension for Ruby
|
10
10
|
|
11
|
-
|
11
|
+
https://cairographics.org/
|
12
12
|
|
13
13
|
== Dependencies
|
14
14
|
|
15
|
-
* ruby >=
|
16
|
-
* cairo >= 1.2.0
|
15
|
+
* ruby >= 2.2.1
|
16
|
+
* cairo >= 1.2.0
|
17
17
|
|
18
18
|
== Install
|
19
19
|
|
@@ -27,56 +27,27 @@ This way is recommended.
|
|
27
27
|
|
28
28
|
For experimental users.
|
29
29
|
|
30
|
-
|
30
|
+
Add the following to your Gemfile:
|
31
31
|
|
32
|
-
|
33
|
-
% tar xvzf rcairo-X.Y.Z.tar.gz
|
32
|
+
gem "cairo", github: "rcairo/rcairo"
|
34
33
|
|
35
|
-
|
36
|
-
% cd rcairo-X.Y.Z
|
37
|
-
% ruby extconf.rb # to check for dependencies and create Makefiles
|
38
|
-
% make # to compile
|
34
|
+
Then run the following command:
|
39
35
|
|
40
|
-
|
41
|
-
# The samples in the samples folder should be able
|
42
|
-
# to run before installation except text-on-path.rb
|
43
|
-
# and text2.rb. They uses Ruby/Pango with rcairo
|
44
|
-
# support. So you need to install rcairo and build
|
45
|
-
# Ruby/Pango with it before you run them.
|
46
|
-
|
47
|
-
Options to extconf.rb:
|
48
|
-
|
49
|
-
* --without-vendor-override: Use system libraries instead of those found in
|
50
|
-
vendor/local for compiling
|
51
|
-
|
52
|
-
== Windows
|
53
|
-
|
54
|
-
cairo-X.Y.Z-x86-mingw32.gem includes cairo related binaries.
|
55
|
-
|
56
|
-
* cairo related binaries:
|
57
|
-
http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/
|
58
|
-
|
59
|
-
* cairo-X.Y.Z-a_win32.zip
|
60
|
-
* cairo-dev-X.Y.Z-a_win32.zip
|
61
|
-
* libpng-X.Y.Z-a_win32.zip
|
62
|
-
* zlib-X.Y.Z-a_win32.zip
|
63
|
-
* expat_X.Y.Z-a_win32.zip
|
64
|
-
* fontconfig_X.Y.Z-a_win32.zip
|
65
|
-
* freetype_X.Y.Z-a_win32.zip
|
36
|
+
% bundle install
|
66
37
|
|
67
38
|
== Documents
|
68
39
|
|
69
40
|
* Reference manual:
|
70
|
-
|
41
|
+
https://rcairo.github.io/doc/
|
71
42
|
* Repository of the reference manual:
|
72
|
-
|
43
|
+
https://github.com/rcairo/doc
|
73
44
|
* An article for rcairo on Rubyst Magazine a.k.a. RubiMa (in Japanese):
|
74
|
-
|
45
|
+
https://magazine.rubyist.net/articles/0019/0019-cairo.html
|
75
46
|
|
76
47
|
== Source
|
77
48
|
|
78
49
|
There is the rcairo repository at GitHub:
|
79
|
-
|
50
|
+
https://github.com/rcairo/rcairo
|
80
51
|
|
81
52
|
== Mailing list
|
82
53
|
|
data/Rakefile
CHANGED
@@ -54,6 +54,8 @@ Rake::ExtensionTask.new("cairo", spec) do |ext|
|
|
54
54
|
ext.cross_compile = true
|
55
55
|
ext.cross_compiling do |_spec|
|
56
56
|
if /mingw|mswin/ =~ _spec.platform.to_s
|
57
|
+
_spec.metadata.delete("msys2_mingw_dependencies")
|
58
|
+
|
57
59
|
binary_files = []
|
58
60
|
Find.find(binary_dir) do |name|
|
59
61
|
next unless File.file?(name)
|
@@ -440,8 +442,8 @@ end
|
|
440
442
|
|
441
443
|
windows_task = WindowsTask.new(spec) do |task|
|
442
444
|
zlib_version = "1.2.11"
|
443
|
-
libpng_version = "1.6.
|
444
|
-
freetype_version = "2.
|
445
|
+
libpng_version = "1.6.35"
|
446
|
+
freetype_version = "2.9.1"
|
445
447
|
task.packages = [
|
446
448
|
{
|
447
449
|
# We should use the same version as Ruby Installer.
|
data/ext/cairo/rb_cairo.h
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
* $Author: kou $
|
6
6
|
* $Date: 2008-09-26 13:52:08 $
|
7
7
|
*
|
8
|
-
* Copyright 2005-
|
8
|
+
* Copyright 2005-2018 Kouhei Sutou <kou@cozmixng.org>
|
9
9
|
* Copyright 2005 Øyvind Kolås <pippin@freedesktop.org>
|
10
10
|
* Copyright 2004-2005 MenTaLguY <mental@rydia.com>
|
11
11
|
*
|
@@ -25,6 +25,7 @@
|
|
25
25
|
|
26
26
|
VALUE rb_cCairo_Context;
|
27
27
|
|
28
|
+
static ID cr_id_new;
|
28
29
|
static ID cr_id_surface, cr_id_source;
|
29
30
|
static ID cr_id_plus, cr_id_minus, cr_id_multi, cr_id_div;
|
30
31
|
static cairo_user_data_key_t cr_object_holder_key;
|
@@ -141,6 +142,22 @@ cr_get_reference_count (VALUE self)
|
|
141
142
|
return UINT2NUM (reference_count);
|
142
143
|
}
|
143
144
|
|
145
|
+
static VALUE
|
146
|
+
cr_s_create (int argc, VALUE *argv, VALUE klass)
|
147
|
+
{
|
148
|
+
VALUE rb_cr;
|
149
|
+
rb_cr = rb_funcallv (klass, cr_id_new, argc, argv);
|
150
|
+
if (rb_block_given_p ())
|
151
|
+
{
|
152
|
+
return rb_ensure (rb_yield, rb_cr,
|
153
|
+
cr_destroy_with_destroy_check, rb_cr);
|
154
|
+
}
|
155
|
+
else
|
156
|
+
{
|
157
|
+
return rb_cr;
|
158
|
+
}
|
159
|
+
}
|
160
|
+
|
144
161
|
static VALUE
|
145
162
|
cr_s_wrap (VALUE self, VALUE pointer)
|
146
163
|
{
|
@@ -1230,11 +1247,22 @@ cr_set_font_options (VALUE self, VALUE options)
|
|
1230
1247
|
static VALUE
|
1231
1248
|
cr_get_font_options (VALUE self)
|
1232
1249
|
{
|
1233
|
-
cairo_font_options_t *options
|
1250
|
+
cairo_font_options_t *options;
|
1251
|
+
VALUE rb_options;
|
1252
|
+
|
1253
|
+
options = cairo_font_options_create ();
|
1234
1254
|
rb_cairo_check_status (cairo_font_options_status (options));
|
1255
|
+
|
1256
|
+
/* TODO: Use rb_ensure() */
|
1257
|
+
rb_options = CRFONTOPTIONS2RVAL (options);
|
1258
|
+
cairo_font_options_destroy (options);
|
1259
|
+
|
1260
|
+
options = RVAL2CRFONTOPTIONS (rb_options);
|
1235
1261
|
cairo_get_font_options (_SELF, options);
|
1262
|
+
cr_check_status (_SELF);
|
1236
1263
|
rb_cairo_check_status (cairo_font_options_status (options));
|
1237
|
-
|
1264
|
+
|
1265
|
+
return rb_options;
|
1238
1266
|
}
|
1239
1267
|
|
1240
1268
|
static VALUE
|
@@ -1663,6 +1691,8 @@ cr_destroy_all_guarded_contexts_at_end (VALUE data)
|
|
1663
1691
|
void
|
1664
1692
|
Init_cairo_context (void)
|
1665
1693
|
{
|
1694
|
+
cr_id_new = rb_intern ("new");
|
1695
|
+
|
1666
1696
|
cr_id_surface = rb_intern ("surface");
|
1667
1697
|
cr_id_source = rb_intern ("source");
|
1668
1698
|
|
@@ -1679,6 +1709,8 @@ Init_cairo_context (void)
|
|
1679
1709
|
rb_cairo__initialize_gc_guard_holder_class (rb_cCairo_Context);
|
1680
1710
|
rb_set_end_proc(cr_destroy_all_guarded_contexts_at_end, Qnil);
|
1681
1711
|
|
1712
|
+
rb_define_singleton_method (rb_cCairo_Context, "create", cr_s_create, -1);
|
1713
|
+
|
1682
1714
|
/* For integrate other libraries such as a FFI based library. */
|
1683
1715
|
rb_define_singleton_method (rb_cCairo_Context, "wrap", cr_s_wrap, 1);
|
1684
1716
|
|
@@ -50,8 +50,11 @@ rb_cairo_font_options_to_ruby_object (cairo_font_options_t *options)
|
|
50
50
|
{
|
51
51
|
if (options)
|
52
52
|
{
|
53
|
+
cairo_font_options_t *copied_options;
|
54
|
+
copied_options = cairo_font_options_copy (options);
|
55
|
+
cr_options_check_status (copied_options);
|
53
56
|
return Data_Wrap_Struct (rb_cCairo_FontOptions, NULL,
|
54
|
-
cr_options_free,
|
57
|
+
cr_options_free, copied_options);
|
55
58
|
}
|
56
59
|
else
|
57
60
|
{
|
@@ -79,11 +82,7 @@ cr_options_create (VALUE self)
|
|
79
82
|
static VALUE
|
80
83
|
cr_options_copy (VALUE self)
|
81
84
|
{
|
82
|
-
|
83
|
-
|
84
|
-
options = cairo_font_options_copy (_SELF (self));
|
85
|
-
cr_options_check_status (options);
|
86
|
-
return CRFONTOPTIONS2RVAL (options);
|
85
|
+
return CRFONTOPTIONS2RVAL (_SELF (self));
|
87
86
|
}
|
88
87
|
|
89
88
|
static VALUE
|
@@ -5,7 +5,7 @@
|
|
5
5
|
* $Author: kou $
|
6
6
|
* $Date: 2008-08-17 07:21:42 $
|
7
7
|
*
|
8
|
-
* Copyright 2005-
|
8
|
+
* Copyright 2005-2018 Kouhei Sutou <kou@cozmixng.org>
|
9
9
|
*
|
10
10
|
* This file is made available under the same terms as Ruby
|
11
11
|
*
|
@@ -126,6 +126,6 @@ VALUE rb_cairo__invoke_callback (cr_callback_func_t func, VALUE user_data);
|
|
126
126
|
|
127
127
|
extern VALUE rb_cairo__cFFIPointer;
|
128
128
|
|
129
|
-
|
129
|
+
VALUE rb_cairo__surface_yield_and_finish (VALUE self);
|
130
130
|
|
131
131
|
#endif
|
@@ -181,12 +181,21 @@ static VALUE
|
|
181
181
|
cr_scaled_font_get_font_options (VALUE self)
|
182
182
|
{
|
183
183
|
cairo_font_options_t *options;
|
184
|
+
VALUE rb_options;
|
184
185
|
|
185
|
-
options = cairo_font_options_create();
|
186
|
+
options = cairo_font_options_create ();
|
187
|
+
rb_cairo_check_status (cairo_font_options_status (options));
|
188
|
+
|
189
|
+
/* TODO: Use rb_ensure() */
|
190
|
+
rb_options = CRFONTOPTIONS2RVAL (options);
|
191
|
+
cairo_font_options_destroy (options);
|
192
|
+
|
193
|
+
options = RVAL2CRFONTOPTIONS (rb_options);
|
186
194
|
cairo_scaled_font_get_font_options (_SELF (self), options);
|
187
195
|
cr_scaled_font_check_status (_SELF (self));
|
188
196
|
rb_cairo_check_status (cairo_font_options_status (options));
|
189
|
-
|
197
|
+
|
198
|
+
return rb_options;
|
190
199
|
}
|
191
200
|
|
192
201
|
#if CAIRO_CHECK_VERSION(1, 7, 2)
|
@@ -2,7 +2,7 @@
|
|
2
2
|
/*
|
3
3
|
* Ruby Cairo Binding
|
4
4
|
*
|
5
|
-
* Copyright 2005-
|
5
|
+
* Copyright 2005-2018 Kouhei Sutou <kou@cozmixng.org>
|
6
6
|
* Copyright 2014 Patrick Hanevold <patrick.hanevold@gmail.com>
|
7
7
|
* Copyright 2005 Øyvind Kolås <pippin@freedesktop.org>
|
8
8
|
* Copyright 2004-2005 MenTaLguY <mental@rydia.com>
|
@@ -90,6 +90,7 @@ VALUE rb_cCairo_SkiaSurface = Qnil;
|
|
90
90
|
VALUE rb_cCairo_SubSurface = Qnil;
|
91
91
|
VALUE rb_cCairo_CoglSurface = Qnil;
|
92
92
|
|
93
|
+
static ID cr_id_new;
|
93
94
|
static ID cr_id_parse;
|
94
95
|
static ID cr_id_size;
|
95
96
|
static ID cr_id_set_unit;
|
@@ -217,6 +218,67 @@ cr_surface_get_klass (cairo_surface_t *surface)
|
|
217
218
|
return klass;
|
218
219
|
}
|
219
220
|
|
221
|
+
static void
|
222
|
+
rb_cairo_surface_adjust_memory_usage (cairo_surface_t *surface,
|
223
|
+
cairo_bool_t new)
|
224
|
+
{
|
225
|
+
#ifdef HAVE_RB_GC_ADJUST_MEMORY_USAGE
|
226
|
+
if (cairo_surface_get_type (surface) == CAIRO_SURFACE_TYPE_IMAGE)
|
227
|
+
{
|
228
|
+
ssize_t memory_usage_diff;
|
229
|
+
memory_usage_diff =
|
230
|
+
cairo_image_surface_get_stride (surface) *
|
231
|
+
cairo_image_surface_get_height (surface);
|
232
|
+
if (!new)
|
233
|
+
memory_usage_diff = -memory_usage_diff;
|
234
|
+
rb_gc_adjust_memory_usage (memory_usage_diff);
|
235
|
+
}
|
236
|
+
#endif
|
237
|
+
}
|
238
|
+
|
239
|
+
static void
|
240
|
+
cr_surface_destroy_raw (cairo_surface_t *surface)
|
241
|
+
{
|
242
|
+
rb_cairo_surface_adjust_memory_usage (surface, CR_FALSE);
|
243
|
+
cairo_surface_destroy (surface);
|
244
|
+
}
|
245
|
+
|
246
|
+
static VALUE
|
247
|
+
cr_surface_destroy (VALUE self)
|
248
|
+
{
|
249
|
+
cairo_surface_t *surface;
|
250
|
+
|
251
|
+
surface = _SELF;
|
252
|
+
cr_surface_destroy_raw (surface);
|
253
|
+
DATA_PTR (self) = NULL;
|
254
|
+
|
255
|
+
return self;
|
256
|
+
}
|
257
|
+
|
258
|
+
static VALUE
|
259
|
+
cr_surface_destroy_with_destroy_check (VALUE self)
|
260
|
+
{
|
261
|
+
if (_SELF)
|
262
|
+
cr_surface_destroy (self);
|
263
|
+
return Qnil;
|
264
|
+
}
|
265
|
+
|
266
|
+
static VALUE
|
267
|
+
cr_surface_create (int argc, VALUE *argv, VALUE klass)
|
268
|
+
{
|
269
|
+
VALUE rb_surface;
|
270
|
+
rb_surface = rb_funcallv (klass, cr_id_new, argc, argv);
|
271
|
+
if (rb_block_given_p ())
|
272
|
+
{
|
273
|
+
return rb_ensure (rb_cairo__surface_yield_and_finish, rb_surface,
|
274
|
+
cr_surface_destroy_with_destroy_check, rb_surface);
|
275
|
+
}
|
276
|
+
else
|
277
|
+
{
|
278
|
+
return rb_surface;
|
279
|
+
}
|
280
|
+
}
|
281
|
+
|
220
282
|
static VALUE
|
221
283
|
cr_surface_image_supported_p (VALUE klass)
|
222
284
|
{
|
@@ -349,24 +411,6 @@ cr_surface_xml_supported_p (VALUE klass)
|
|
349
411
|
#endif
|
350
412
|
}
|
351
413
|
|
352
|
-
static void
|
353
|
-
rb_cairo_surface_adjust_memory_usage (cairo_surface_t *surface,
|
354
|
-
cairo_bool_t new)
|
355
|
-
{
|
356
|
-
#ifdef HAVE_RB_GC_ADJUST_MEMORY_USAGE
|
357
|
-
if (cairo_surface_get_type (surface) == CAIRO_SURFACE_TYPE_IMAGE)
|
358
|
-
{
|
359
|
-
ssize_t memory_usage_diff;
|
360
|
-
memory_usage_diff =
|
361
|
-
cairo_image_surface_get_stride (surface) *
|
362
|
-
cairo_image_surface_get_height (surface);
|
363
|
-
if (!new)
|
364
|
-
memory_usage_diff = -memory_usage_diff;
|
365
|
-
rb_gc_adjust_memory_usage (memory_usage_diff);
|
366
|
-
}
|
367
|
-
#endif
|
368
|
-
}
|
369
|
-
|
370
414
|
/* constructor/de-constructor */
|
371
415
|
cairo_surface_t *
|
372
416
|
rb_cairo_surface_from_ruby_object (VALUE obj)
|
@@ -402,9 +446,7 @@ cr_surface_free (void *ptr)
|
|
402
446
|
if (!surface)
|
403
447
|
return;
|
404
448
|
|
405
|
-
|
406
|
-
|
407
|
-
cairo_surface_destroy (surface);
|
449
|
+
cr_surface_destroy_raw (surface);
|
408
450
|
}
|
409
451
|
|
410
452
|
VALUE
|
@@ -453,18 +495,6 @@ cr_surface_initialize (int argc, VALUE *argv, VALUE self)
|
|
453
495
|
}
|
454
496
|
|
455
497
|
/* Surface manipulation */
|
456
|
-
static VALUE
|
457
|
-
cr_surface_destroy (VALUE self)
|
458
|
-
{
|
459
|
-
cairo_surface_t *surface;
|
460
|
-
|
461
|
-
surface = _SELF;
|
462
|
-
cairo_surface_destroy (surface);
|
463
|
-
DATA_PTR (self) = NULL;
|
464
|
-
|
465
|
-
return self;
|
466
|
-
}
|
467
|
-
|
468
498
|
static VALUE
|
469
499
|
cr_surface_get_reference_count (VALUE self)
|
470
500
|
{
|
@@ -497,20 +527,25 @@ cr_surface_finish (VALUE self)
|
|
497
527
|
return self;
|
498
528
|
}
|
499
529
|
|
500
|
-
|
530
|
+
VALUE
|
501
531
|
rb_cairo__surface_yield_and_finish (VALUE self)
|
502
532
|
{
|
533
|
+
VALUE rb_result;
|
503
534
|
cairo_surface_t *surface;
|
504
535
|
|
505
|
-
rb_yield (self);
|
536
|
+
rb_result = rb_yield (self);
|
506
537
|
|
507
538
|
surface = _SELF;
|
539
|
+
if (!surface)
|
540
|
+
return rb_result;
|
508
541
|
if (cairo_surface_status (surface) != CAIRO_STATUS_SUCCESS)
|
509
|
-
return;
|
542
|
+
return rb_result;
|
510
543
|
if (cairo_surface_get_user_data (surface, &cr_finished_key))
|
511
|
-
return;
|
544
|
+
return rb_result;
|
512
545
|
|
513
546
|
cr_surface_finish (self);
|
547
|
+
|
548
|
+
return rb_result;
|
514
549
|
}
|
515
550
|
|
516
551
|
static VALUE
|
@@ -632,14 +667,6 @@ cr_surface_unmap_image (VALUE self, VALUE rb_mapped_image)
|
|
632
667
|
#endif
|
633
668
|
|
634
669
|
#if CAIRO_CHECK_VERSION(1, 10, 0)
|
635
|
-
static VALUE
|
636
|
-
cr_surface_destroy_with_destroy_check (VALUE self)
|
637
|
-
{
|
638
|
-
if (DATA_PTR (self))
|
639
|
-
cr_surface_destroy (self);
|
640
|
-
return Qnil;
|
641
|
-
}
|
642
|
-
|
643
670
|
static VALUE
|
644
671
|
cr_surface_create_sub_rectangle_surface (VALUE self, VALUE x, VALUE y,
|
645
672
|
VALUE width, VALUE height)
|
@@ -782,11 +809,22 @@ cr_surface_supported_mime_type_p (VALUE self, VALUE rb_mime_type)
|
|
782
809
|
static VALUE
|
783
810
|
cr_surface_get_font_options (VALUE self)
|
784
811
|
{
|
785
|
-
cairo_font_options_t *options
|
812
|
+
cairo_font_options_t *options;
|
813
|
+
VALUE rb_options;
|
814
|
+
|
815
|
+
options = cairo_font_options_create ();
|
816
|
+
rb_cairo_check_status (cairo_font_options_status (options));
|
817
|
+
|
818
|
+
/* TODO: Use rb_ensure() */
|
819
|
+
rb_options = CRFONTOPTIONS2RVAL (options);
|
820
|
+
cairo_font_options_destroy (options);
|
821
|
+
|
822
|
+
options = RVAL2CRFONTOPTIONS (rb_options);
|
786
823
|
cairo_surface_get_font_options (_SELF, options);
|
787
824
|
rb_cairo_surface_check_status (_SELF);
|
788
825
|
rb_cairo_check_status (cairo_font_options_status (options));
|
789
|
-
|
826
|
+
|
827
|
+
return rb_options;
|
790
828
|
}
|
791
829
|
|
792
830
|
static VALUE
|
@@ -1967,6 +2005,7 @@ cr_finish_all_guarded_surfaces_at_end (VALUE data)
|
|
1967
2005
|
void
|
1968
2006
|
Init_cairo_surface (void)
|
1969
2007
|
{
|
2008
|
+
cr_id_new = rb_intern ("new");
|
1970
2009
|
cr_id_parse = rb_intern ("parse");
|
1971
2010
|
cr_id_size = rb_intern ("size");
|
1972
2011
|
cr_id_set_unit = rb_intern ("unit=");
|
@@ -1982,6 +2021,8 @@ Init_cairo_surface (void)
|
|
1982
2021
|
rb_cairo__initialize_gc_guard_holder_class (rb_cCairo_Surface);
|
1983
2022
|
rb_set_end_proc(cr_finish_all_guarded_surfaces_at_end, Qnil);
|
1984
2023
|
|
2024
|
+
rb_define_singleton_method (rb_cCairo_Surface, "create",
|
2025
|
+
cr_surface_create, -1);
|
1985
2026
|
rb_define_singleton_method (rb_cCairo_Surface, "image_supported?",
|
1986
2027
|
cr_surface_image_supported_p, 0);
|
1987
2028
|
rb_define_singleton_method (rb_cCairo_Surface, "pdf_supported?",
|