ruby-libgd 0.2.4 → 0.2.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d0a3de385842f0cf17fc56e102fc0dd9614512227bf9a07dc8b8cd96929dd2a4
4
- data.tar.gz: 3b47534f1017febc504cb328c1d1db1b2fa7f58f5e15047504abff2e119d347b
3
+ metadata.gz: e7aa6764204d6e185d6ba8ba4ed606c5f2a13e9cff220cec8557cc12a99b6ce2
4
+ data.tar.gz: 73916e75296f31ef431b34c22124aef6b293985b2a27d670fcb1073f03bf5bad
5
5
  SHA512:
6
- metadata.gz: de84a2dc1be0454faea9fad0105cf7bda0e4a0684ed90ff62bf91e914e246afcd0ce21b666793b86d198e335324464a31b173b3e7d589d6d01ff8b73c76eee02
7
- data.tar.gz: 2c699498111605b390e3b9c25f9f5a157e806612094fdee1aa0e2ffaf858bb7fecfe0c45e8d3a651f7ea8e7ae2c777f016623c38fa4742c5a9b236351623a669
6
+ metadata.gz: 7f34d5a36d7c1db0daa1770f7406006a17a4bdcf0e778b172581c6f0a9863c62d510fef76535310358a39a57d74e5f2cffff3cbfea3e46b66844832db230b307
7
+ data.tar.gz: e1409b46676c61e39970bfd3f8a5ef773bce0c9dcae07f15ce6a255f609d97a0e6ee29f03036f10f0b50949aa02e94e397e2b5a9bab30140410ad26a85dd0252
data/ext/gd/filter.c CHANGED
@@ -84,6 +84,35 @@ static VALUE gd_image_filter(int argc, VALUE *argv, VALUE self) {
84
84
  else if (strcmp(name, "sepia") == 0) {
85
85
  gd_image_apply_sepia(wrap->img);
86
86
  }
87
+ else if (strcmp(name, "convolve") == 0) {
88
+
89
+ Check_Type(arg1, T_ARRAY);
90
+ if (RARRAY_LEN(arg1) != 3) {
91
+ rb_raise(rb_eArgError, "kernel must be a 3x3 array");
92
+ }
93
+
94
+ float filter[3][3];
95
+
96
+ for (int i = 0; i < 3; i++) {
97
+ VALUE row = rb_ary_entry(arg1, i);
98
+ Check_Type(row, T_ARRAY);
99
+
100
+ if (RARRAY_LEN(row) != 3) {
101
+ rb_raise(rb_eArgError, "kernel must be a 3x3 array");
102
+ }
103
+
104
+ for (int j = 0; j < 3; j++) {
105
+ filter[i][j] = (float)NUM2DBL(rb_ary_entry(row, j));
106
+ }
107
+ }
108
+
109
+ float divisor = NIL_P(arg2) ? 1.0f : (float)NUM2DBL(arg2);
110
+ float offset = NIL_P(arg3) ? 0.0f : (float)NUM2DBL(arg3);
111
+
112
+ if (!gdImageConvolution(wrap->img, filter, divisor, offset)) {
113
+ rb_raise(rb_eRuntimeError, "convolution failed");
114
+ }
115
+ }
87
116
  else {
88
117
  rb_raise(rb_eArgError, "unknown filter");
89
118
  }
data/ext/gd/filter.o CHANGED
Binary file
data/ext/gd/gd.so CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-libgd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Germán Alberto Giménez Silva
@@ -89,7 +89,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
89
89
  - !ruby/object:Gem::Version
90
90
  version: '0'
91
91
  requirements: []
92
- rubygems_version: 4.0.6
92
+ rubygems_version: 4.0.3
93
93
  specification_version: 4
94
94
  summary: Native Ruby bindings for libgd
95
95
  test_files: []