rmagick 4.1.2 → 4.2.3
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rmagick might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +10 -75
- data/.rubocop_todo.yml +114 -70
- data/CHANGELOG.md +51 -0
- data/CODE_OF_CONDUCT.md +122 -7
- data/README.md +16 -8
- data/before_install_linux.sh +1 -1
- data/before_install_osx.sh +2 -2
- data/ext/RMagick/extconf.rb +5 -2
- data/ext/RMagick/rmagick.h +6 -0
- data/ext/RMagick/rmdraw.c +31 -5
- data/ext/RMagick/rmfill.c +4 -1
- data/ext/RMagick/rmilist.c +12 -4
- data/ext/RMagick/rmimage.c +42 -30
- data/ext/RMagick/rminfo.c +11 -3
- data/ext/RMagick/rmmain.c +14 -1
- data/ext/RMagick/rmmontage.c +4 -4
- data/ext/RMagick/rmpixel.c +2 -2
- data/ext/RMagick/rmstruct.c +2 -2
- data/ext/RMagick/rmutil.c +58 -8
- data/lib/rmagick/version.rb +1 -1
- data/lib/rvg/rvg.rb +2 -2
- data/rmagick.gemspec +3 -2
- metadata +21 -7
data/ext/RMagick/rmstruct.c
CHANGED
@@ -285,7 +285,7 @@ Export_ColorInfo(ColorInfo *ci, VALUE st)
|
|
285
285
|
ci->color.green = (MagickRealType) pixel.green;
|
286
286
|
ci->color.blue = (MagickRealType) pixel.blue;
|
287
287
|
#if defined(IMAGEMAGICK_7)
|
288
|
-
ci->color
|
288
|
+
rm_set_pixelinfo_alpha(&ci->color, (MagickRealType) OpaqueAlpha);
|
289
289
|
#else
|
290
290
|
ci->color.opacity = (MagickRealType) OpaqueOpacity;
|
291
291
|
#endif
|
@@ -760,7 +760,7 @@ Import_SegmentInfo(SegmentInfo *segment)
|
|
760
760
|
RB_GC_GUARD(y1);
|
761
761
|
RB_GC_GUARD(x2);
|
762
762
|
RB_GC_GUARD(y2);
|
763
|
-
|
763
|
+
|
764
764
|
return rb_funcall(Class_Segment, rm_ID_new, 4, x1, y1, x2, y2);
|
765
765
|
}
|
766
766
|
|
data/ext/RMagick/rmutil.c
CHANGED
@@ -12,6 +12,11 @@
|
|
12
12
|
|
13
13
|
#include "rmagick.h"
|
14
14
|
#include <errno.h>
|
15
|
+
#if defined(_WIN32)
|
16
|
+
#include <Windows.h>
|
17
|
+
#else
|
18
|
+
#include <pthread.h>
|
19
|
+
#endif
|
15
20
|
|
16
21
|
static VALUE rescue_not_str(VALUE, VALUE ATTRIBUTE_UNUSED) ATTRIBUTE_NORETURN;
|
17
22
|
static void handle_exception(ExceptionInfo *, Image *, ErrorRetention);
|
@@ -853,6 +858,25 @@ rm_magick_error(const char *msg)
|
|
853
858
|
RB_GC_GUARD(mesg);
|
854
859
|
}
|
855
860
|
|
861
|
+
#if defined(IMAGEMAGICK_7)
|
862
|
+
/**
|
863
|
+
* Sets the alpha channel of a pixel color
|
864
|
+
*
|
865
|
+
* No Ruby usage (internal function)
|
866
|
+
*
|
867
|
+
* @param pixel the Pixel
|
868
|
+
* @param value the value
|
869
|
+
*/
|
870
|
+
void
|
871
|
+
rm_set_pixelinfo_alpha(PixelInfo *pixel, const MagickRealType value)
|
872
|
+
{
|
873
|
+
pixel->alpha = value;
|
874
|
+
if (value != (MagickRealType) OpaqueAlpha)
|
875
|
+
{
|
876
|
+
pixel->alpha_trait = BlendPixelTrait;
|
877
|
+
}
|
878
|
+
}
|
879
|
+
#endif
|
856
880
|
|
857
881
|
/**
|
858
882
|
* Initialize a new ImageMagickError object - store the "loc" string in the
|
@@ -1000,7 +1024,16 @@ rm_get_optional_arguments(VALUE img)
|
|
1000
1024
|
optional_method_arguments = rb_const_get_from(Module_Magick, rb_intern("OptionalMethodArguments"));
|
1001
1025
|
argv[0] = img;
|
1002
1026
|
opt_args = rb_class_new_instance(1, argv, optional_method_arguments);
|
1003
|
-
|
1027
|
+
|
1028
|
+
if (rb_proc_arity(rb_block_proc()) == 0)
|
1029
|
+
{
|
1030
|
+
rb_warn("passing a block without an image argument is deprecated");
|
1031
|
+
rb_obj_instance_eval(0, NULL, opt_args);
|
1032
|
+
}
|
1033
|
+
else
|
1034
|
+
{
|
1035
|
+
rb_yield(opt_args);
|
1036
|
+
}
|
1004
1037
|
}
|
1005
1038
|
|
1006
1039
|
RB_GC_GUARD(optional_method_arguments);
|
@@ -1530,14 +1563,15 @@ rm_progress_monitor(
|
|
1530
1563
|
VALUE rval;
|
1531
1564
|
VALUE method, offset, span;
|
1532
1565
|
|
1533
|
-
//
|
1534
|
-
|
1535
|
-
|
1536
|
-
// Check stack length manually instead of ruby_stack_check() for old Ruby.
|
1537
|
-
if (ruby_stack_length(NULL) > RUBY_VM_THREAD_MACHINE_STACK_SIZE_MIN)
|
1566
|
+
// Check running thread.
|
1567
|
+
if (rm_current_thread_id() != rm_main_thread_id)
|
1538
1568
|
{
|
1539
|
-
//
|
1540
|
-
//
|
1569
|
+
// ImageMagick might call back in a different thread than Ruby is running in.
|
1570
|
+
// If it is a different thread, it would not have a Ruby GVL and
|
1571
|
+
// it could not retrieve properly Ruby stack.
|
1572
|
+
|
1573
|
+
// Unfortunately, there is no API available to check if the current thread has a GVL,
|
1574
|
+
// so the thread id was checked in here.
|
1541
1575
|
return MagickTrue;
|
1542
1576
|
}
|
1543
1577
|
|
@@ -1868,3 +1902,19 @@ rm_raise_exception(ExceptionInfo *exception)
|
|
1868
1902
|
rm_magick_error(msg);
|
1869
1903
|
}
|
1870
1904
|
|
1905
|
+
/**
|
1906
|
+
* Get current thread id.
|
1907
|
+
*
|
1908
|
+
* No Ruby usage (internal function)
|
1909
|
+
*
|
1910
|
+
* @return thread id
|
1911
|
+
*/
|
1912
|
+
unsigned long long
|
1913
|
+
rm_current_thread_id()
|
1914
|
+
{
|
1915
|
+
#if defined(_WIN32)
|
1916
|
+
return (unsigned long long)GetCurrentThreadId();
|
1917
|
+
#else
|
1918
|
+
return (unsigned long long)pthread_self();
|
1919
|
+
#endif
|
1920
|
+
}
|
data/lib/rmagick/version.rb
CHANGED
data/lib/rvg/rvg.rb
CHANGED
@@ -85,7 +85,7 @@ module Magick
|
|
85
85
|
@background_image.change_geometry(Magick::Geometry.new(width, height)) do |new_cols, new_rows|
|
86
86
|
bg_image = @background_image.resize(new_cols, new_rows)
|
87
87
|
if bg_image.columns != width || bg_image.rows != height
|
88
|
-
bg = Magick::Image.new(width, height) {
|
88
|
+
bg = Magick::Image.new(width, height) { |options| options.background_color = bgcolor }
|
89
89
|
bg_image = bg.composite!(bg_image, Magick::CenterGravity, Magick::OverCompositeOp)
|
90
90
|
end
|
91
91
|
bg_image
|
@@ -96,7 +96,7 @@ module Magick
|
|
96
96
|
end
|
97
97
|
else
|
98
98
|
bgcolor = bgfill
|
99
|
-
canvas = Magick::Image.new(Integer(@width), Integer(@height)) {
|
99
|
+
canvas = Magick::Image.new(Integer(@width), Integer(@height)) { |options| options.background_color = bgcolor }
|
100
100
|
end
|
101
101
|
canvas[:desc] = @desc if @desc
|
102
102
|
canvas[:title] = @title if @title
|
data/rmagick.gemspec
CHANGED
@@ -31,8 +31,9 @@ Gem::Specification.new do |s|
|
|
31
31
|
s.add_development_dependency 'rspec', '~> 3.8'
|
32
32
|
s.add_development_dependency 'rspec_junit_formatter', '~> 0.4.1'
|
33
33
|
if RUBY_PLATFORM !~ /mswin|mingw/
|
34
|
-
s.add_development_dependency 'rubocop', '~> 0.
|
35
|
-
s.add_development_dependency 'rubocop-rspec', '~> 1.
|
34
|
+
s.add_development_dependency 'rubocop', '~> 0.81.0'
|
35
|
+
s.add_development_dependency 'rubocop-rspec', '~> 1.38.1'
|
36
|
+
s.add_development_dependency 'rubocop-performance', '~> 1.5.2'
|
36
37
|
end
|
37
38
|
s.add_development_dependency 'simplecov', '~> 0.16.1'
|
38
39
|
s.add_development_dependency 'yard', '~> 0.9.24'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rmagick
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tim Hunter
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2021-10-10 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: pry
|
@@ -75,28 +75,42 @@ dependencies:
|
|
75
75
|
requirements:
|
76
76
|
- - "~>"
|
77
77
|
- !ruby/object:Gem::Version
|
78
|
-
version: 0.
|
78
|
+
version: 0.81.0
|
79
79
|
type: :development
|
80
80
|
prerelease: false
|
81
81
|
version_requirements: !ruby/object:Gem::Requirement
|
82
82
|
requirements:
|
83
83
|
- - "~>"
|
84
84
|
- !ruby/object:Gem::Version
|
85
|
-
version: 0.
|
85
|
+
version: 0.81.0
|
86
86
|
- !ruby/object:Gem::Dependency
|
87
87
|
name: rubocop-rspec
|
88
88
|
requirement: !ruby/object:Gem::Requirement
|
89
89
|
requirements:
|
90
90
|
- - "~>"
|
91
91
|
- !ruby/object:Gem::Version
|
92
|
-
version: 1.
|
92
|
+
version: 1.38.1
|
93
93
|
type: :development
|
94
94
|
prerelease: false
|
95
95
|
version_requirements: !ruby/object:Gem::Requirement
|
96
96
|
requirements:
|
97
97
|
- - "~>"
|
98
98
|
- !ruby/object:Gem::Version
|
99
|
-
version: 1.
|
99
|
+
version: 1.38.1
|
100
|
+
- !ruby/object:Gem::Dependency
|
101
|
+
name: rubocop-performance
|
102
|
+
requirement: !ruby/object:Gem::Requirement
|
103
|
+
requirements:
|
104
|
+
- - "~>"
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: 1.5.2
|
107
|
+
type: :development
|
108
|
+
prerelease: false
|
109
|
+
version_requirements: !ruby/object:Gem::Requirement
|
110
|
+
requirements:
|
111
|
+
- - "~>"
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: 1.5.2
|
100
114
|
- !ruby/object:Gem::Dependency
|
101
115
|
name: simplecov
|
102
116
|
requirement: !ruby/object:Gem::Requirement
|
@@ -206,7 +220,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
206
220
|
version: '0'
|
207
221
|
requirements:
|
208
222
|
- ImageMagick 6.7.7 or later
|
209
|
-
rubygems_version: 3.
|
223
|
+
rubygems_version: 3.2.22
|
210
224
|
signing_key:
|
211
225
|
specification_version: 4
|
212
226
|
summary: Ruby binding to ImageMagick
|