rmagick 6.0.0 → 6.1.0
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/.devcontainer/ImageMagick6/devcontainer.json +2 -2
- data/.devcontainer/devcontainer.json +2 -2
- data/.editorconfig +2 -2
- data/.github/workflows/ci.yml +46 -13
- data/.rubocop.yml +7 -0
- data/.rubocop_todo.yml +53 -91
- data/CHANGELOG.md +22 -0
- data/Gemfile +4 -0
- data/README.md +14 -9
- data/Rakefile +36 -13
- data/before_install_linux.sh +3 -1
- data/before_install_osx.sh +8 -4
- data/ext/RMagick/extconf.rb +15 -98
- data/ext/RMagick/rmagick.h +3 -3
- data/ext/RMagick/rmilist.cpp +1 -1
- data/ext/RMagick/rmimage.cpp +2 -0
- data/lib/rmagick/version.rb +1 -1
- data/lib/rmagick_internal.rb +6 -9
- data/lib/rvg/clippath.rb +2 -0
- data/lib/rvg/container.rb +2 -0
- data/lib/rvg/deep_equal.rb +2 -0
- data/lib/rvg/describable.rb +2 -0
- data/lib/rvg/embellishable.rb +2 -0
- data/lib/rvg/misc.rb +2 -0
- data/lib/rvg/paint.rb +2 -0
- data/lib/rvg/pathdata.rb +2 -0
- data/lib/rvg/rvg.rb +2 -0
- data/lib/rvg/stretchable.rb +2 -0
- data/lib/rvg/stylable.rb +2 -0
- data/lib/rvg/text.rb +2 -0
- data/lib/rvg/transformable.rb +2 -0
- data/lib/rvg/units.rb +2 -0
- data/rmagick.gemspec +9 -3
- data/sig/rmagick/_draw_common_methods.rbs +2 -0
- data/sig/rmagick/_image_common_methods.rbs +4 -2
- data/sig/rmagick/draw.rbs +2 -0
- data/sig/rmagick/draw_attribute.rbs +2 -0
- data/sig/rmagick/enum.rbs +6 -4
- data/sig/rmagick/error.rbs +2 -0
- data/sig/rmagick/fill.rbs +2 -0
- data/sig/rmagick/geometry.rbs +3 -1
- data/sig/rmagick/image.rbs +5 -3
- data/sig/rmagick/image_list.rbs +23 -21
- data/sig/rmagick/iptc.rbs +2 -0
- data/sig/rmagick/kernel_info.rbs +2 -0
- data/sig/rmagick/optional_method_arguments.rbs +2 -0
- data/sig/rmagick/pixel.rbs +2 -0
- data/sig/rmagick/struct.rbs +2 -0
- data/sig/rvg/embellishable.rbs +1 -1
- data/sig/rvg/pathdata.rbs +1 -1
- data/sig/rvg/rvg.rbs +1 -1
- data/sig/rvg/stylable.rbs +1 -1
- data/sig/rvg/text.rbs +1 -1
- data/sig/rvg/transformable.rbs +1 -1
- metadata +8 -7
data/Rakefile
CHANGED
@@ -1,12 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'simplecov'
|
2
4
|
require './lib/rmagick/version'
|
3
5
|
require 'fileutils'
|
4
6
|
require 'English'
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
sh "irb -r ./ext/RMagick/extconf.rb -r ./lib/rmagick.rb"
|
9
|
-
end
|
7
|
+
require 'bundler/gem_tasks'
|
8
|
+
require 'rake/extensiontask'
|
9
|
+
require 'rspec/core/rake_task'
|
10
10
|
|
11
11
|
task :config do
|
12
12
|
def version
|
@@ -52,7 +52,7 @@ task push_and_tag: [:build] do
|
|
52
52
|
sh "gem push #{File.join(base, 'pkg', gem_name)}"
|
53
53
|
if $CHILD_STATUS.success?
|
54
54
|
sh "git tag -a -m \"Version #{version}\" #{version_tag}"
|
55
|
-
|
55
|
+
puts "Tagged #{version_tag}."
|
56
56
|
sh 'git push'
|
57
57
|
sh 'git push --tags'
|
58
58
|
else
|
@@ -60,6 +60,7 @@ task push_and_tag: [:build] do
|
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
63
|
+
Rake::Task["release"].clear # Remove `release` task in bundler/gem_tasks
|
63
64
|
desc 'Release'
|
64
65
|
task release: %i[assert_clean_repo push_and_tag]
|
65
66
|
|
@@ -94,18 +95,24 @@ namespace :website do
|
|
94
95
|
File.open(File.join(output_dir, output_file_name), 'w') do |dest|
|
95
96
|
dest.puts <<~END_EXHTMLHEAD
|
96
97
|
<!DOCTYPE public PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
97
|
-
<html xmlns="http://www.w3.org/1999/xhtml">
|
98
|
+
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
|
98
99
|
<head>
|
99
100
|
<meta name="generator" content="ex2html.rb" />
|
100
101
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
101
102
|
<link rel="stylesheet" type="text/css" href="css/popup.css" />
|
103
|
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github.min.css" />
|
104
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
|
105
|
+
<script>
|
106
|
+
hljs.configure({ cssSelector: "pre" });
|
107
|
+
hljs.highlightAll();
|
108
|
+
</script>
|
102
109
|
<title>RMagick example: #{input_file_name}</title>
|
103
110
|
</head>
|
104
111
|
<body>
|
105
112
|
<h1>#{input_file_name}</h1>
|
106
113
|
<div class="bodybox">
|
107
114
|
<div class="bodyfloat">
|
108
|
-
<pre>
|
115
|
+
<pre class="language-ruby">
|
109
116
|
END_EXHTMLHEAD
|
110
117
|
|
111
118
|
src.each do |line|
|
@@ -125,8 +132,8 @@ namespace :website do
|
|
125
132
|
end
|
126
133
|
end
|
127
134
|
|
128
|
-
desc 'Update RMagick website'
|
129
|
-
task :update do
|
135
|
+
desc 'Update RMagick website HTML files'
|
136
|
+
task :"update:html" do
|
130
137
|
unless File.exist?(PATH_TO_LOCAL_WEBSITE_REPOSITORY)
|
131
138
|
puts "Please clone the rmagick.github.io repository to #{PATH_TO_LOCAL_WEBSITE_REPOSITORY}"
|
132
139
|
exit 1
|
@@ -141,6 +148,25 @@ namespace :website do
|
|
141
148
|
file_to_html('doc/ex', file_name, PATH_TO_LOCAL_WEBSITE_REPOSITORY, "#{file_name}.html")
|
142
149
|
end
|
143
150
|
end
|
151
|
+
|
152
|
+
desc 'Update RMagick website image files'
|
153
|
+
task :"update:image" do
|
154
|
+
unless File.exist?(PATH_TO_LOCAL_WEBSITE_REPOSITORY)
|
155
|
+
puts "Please clone the rmagick.github.io repository to #{PATH_TO_LOCAL_WEBSITE_REPOSITORY}"
|
156
|
+
exit 1
|
157
|
+
end
|
158
|
+
|
159
|
+
Rake::Task['install'].invoke
|
160
|
+
|
161
|
+
FileUtils.rm_rf("#{PATH_TO_LOCAL_WEBSITE_REPOSITORY}/ex")
|
162
|
+
FileUtils.cp_r('doc/ex', PATH_TO_LOCAL_WEBSITE_REPOSITORY)
|
163
|
+
|
164
|
+
FileUtils.cd("#{PATH_TO_LOCAL_WEBSITE_REPOSITORY}/ex") do
|
165
|
+
Dir.glob('*.rb').each do |file|
|
166
|
+
sh "ruby #{file}"
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
144
170
|
end
|
145
171
|
|
146
172
|
namespace :rbs do
|
@@ -153,9 +179,6 @@ namespace :rbs do
|
|
153
179
|
end
|
154
180
|
end
|
155
181
|
|
156
|
-
require 'bundler/gem_tasks'
|
157
|
-
require 'rake/extensiontask'
|
158
|
-
require 'rspec/core/rake_task'
|
159
182
|
RSpec::Core::RakeTask.new(:spec)
|
160
183
|
|
161
184
|
Rake::ExtensionTask.new('RMagick2') do |ext|
|
data/before_install_linux.sh
CHANGED
@@ -13,13 +13,15 @@ if [ ! -v IMAGEMAGICK_VERSION ]; then
|
|
13
13
|
exit 1
|
14
14
|
fi
|
15
15
|
|
16
|
+
sudo apt-get update
|
17
|
+
|
16
18
|
# remove all existing imagemagick related packages
|
17
19
|
sudo apt-get autoremove -y imagemagick* libmagick* --purge
|
18
20
|
|
19
21
|
# install build tools, ImageMagick delegates
|
20
22
|
sudo apt-get install -y build-essential libx11-dev libxext-dev zlib1g-dev \
|
21
23
|
liblcms2-dev libpng-dev libjpeg-dev libfreetype6-dev \
|
22
|
-
libtiff5-dev libwebp-dev liblqr-1-0-dev
|
24
|
+
libtiff5-dev libwebp-dev liblqr-1-0-dev libglib2.0-dev gsfonts ghostscript
|
23
25
|
|
24
26
|
project_dir=$(pwd)
|
25
27
|
build_dir="${project_dir}/build-ImageMagick/ImageMagick-${IMAGEMAGICK_VERSION}"
|
data/before_install_osx.sh
CHANGED
@@ -15,10 +15,10 @@ fi
|
|
15
15
|
|
16
16
|
export HOMEBREW_NO_AUTO_UPDATE=true
|
17
17
|
brew uninstall --force imagemagick imagemagick@6
|
18
|
-
brew install wget ghostscript freetype libtool jpeg little-cms2 openexr libomp libpng libtiff liblqr zlib webp zstd
|
18
|
+
brew install wget ghostscript freetype libtool jpeg jpeg-xl little-cms2 openexr libomp libpng libtiff liblqr zlib webp zstd glib
|
19
19
|
|
20
|
-
export LDFLAGS="-L$(brew --prefix jpeg)/lib -L$(brew --prefix little-cms2)/lib -L$(brew --prefix openexr)/lib -L$(brew --prefix libomp)/lib -L$(brew --prefix libpng)/lib -L$(brew --prefix libtiff)/lib -L$(brew --prefix liblqr)/lib -L$(brew --prefix zlib)/lib -L$(brew --prefix webp)/lib -L$(brew --prefix zstd)/lib"
|
21
|
-
export CPPFLAGS="-I$(brew --prefix jpeg)/include -I$(brew --prefix openexr)/include/OpenEXR -I$(brew --prefix libtiff)/include -I$(brew --prefix zlib)/include -I$(brew --prefix zstd)/include -I$(brew --prefix glib)/include/glib-2.0 -I$(brew --prefix glib)/lib/glib-2.0/include"
|
20
|
+
export LDFLAGS="-L$(brew --prefix jpeg)/lib -I$(brew --prefix jpeg-xl)/lib -L$(brew --prefix little-cms2)/lib -L$(brew --prefix openexr)/lib -L$(brew --prefix libomp)/lib -L$(brew --prefix libpng)/lib -L$(brew --prefix libtiff)/lib -L$(brew --prefix liblqr)/lib -L$(brew --prefix zlib)/lib -L$(brew --prefix webp)/lib -L$(brew --prefix zstd)/lib"
|
21
|
+
export CPPFLAGS="-I$(brew --prefix jpeg)/include -I$(brew --prefix jpeg-xl)/include -I$(brew --prefix openexr)/include/OpenEXR -I$(brew --prefix libtiff)/include -I$(brew --prefix zlib)/include -I$(brew --prefix zstd)/include -I$(brew --prefix glib)/include/glib-2.0 -I$(brew --prefix glib)/lib/glib-2.0/include"
|
22
22
|
|
23
23
|
project_dir=$(pwd)
|
24
24
|
build_dir="${project_dir}/build-ImageMagick/ImageMagick-${IMAGEMAGICK_VERSION}"
|
@@ -41,7 +41,11 @@ build_imagemagick() {
|
|
41
41
|
fi
|
42
42
|
|
43
43
|
cd "${build_dir}"
|
44
|
-
./configure
|
44
|
+
./configure \
|
45
|
+
--prefix=/usr/local \
|
46
|
+
"${options}" \
|
47
|
+
--with-gs-font-dir=/opt/homebrew/share/ghostscript/fonts \
|
48
|
+
--without-raw
|
45
49
|
make -j
|
46
50
|
}
|
47
51
|
|
data/ext/RMagick/extconf.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
lib_dir = File.expand_path('../../lib', File.dirname(__FILE__))
|
2
4
|
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
3
|
-
require 'rubygems'
|
4
5
|
require 'mkmf'
|
5
6
|
require 'pkg-config'
|
6
7
|
|
@@ -20,6 +21,7 @@ module RMagick
|
|
20
21
|
ImageMagick-6.Q32
|
21
22
|
ImageMagick-6.Q16
|
22
23
|
ImageMagick-6.Q8
|
24
|
+
ImageMagick-6
|
23
25
|
].freeze
|
24
26
|
|
25
27
|
# ImageMagick 7 packages
|
@@ -32,6 +34,7 @@ module RMagick
|
|
32
34
|
ImageMagick-7.Q32
|
33
35
|
ImageMagick-7.Q16
|
34
36
|
ImageMagick-7.Q8
|
37
|
+
ImageMagick-7
|
35
38
|
].freeze
|
36
39
|
|
37
40
|
attr_reader :headers
|
@@ -106,9 +109,6 @@ module RMagick
|
|
106
109
|
|
107
110
|
else
|
108
111
|
|
109
|
-
check_multiple_imagemagick_versions
|
110
|
-
check_partial_imagemagick_versions
|
111
|
-
|
112
112
|
original_ldflags = $LDFLAGS.dup
|
113
113
|
|
114
114
|
libdir = PKGConfig.libs_only_L($magick_package).chomp.sub('-L', '')
|
@@ -125,11 +125,9 @@ module RMagick
|
|
125
125
|
# if linker does not recognizes '-Wl,-rpath,somewhere' option, it revert to original option
|
126
126
|
$LDFLAGS = "#{original_ldflags} #{ldflags}"
|
127
127
|
end
|
128
|
-
|
129
|
-
configure_archflags_for_osx($magick_package) if RUBY_PLATFORM.include?('darwin') # osx
|
130
|
-
|
131
128
|
end
|
132
|
-
|
129
|
+
|
130
|
+
$CPPFLAGS += ' $(optflags) $(debugflags) -fomit-frame-pointer'
|
133
131
|
end
|
134
132
|
|
135
133
|
def exit_failure(msg)
|
@@ -165,10 +163,14 @@ module RMagick
|
|
165
163
|
|
166
164
|
def determine_imagemagick_package
|
167
165
|
packages = [installed_im7_packages, installed_im6_packages].flatten
|
166
|
+
return if packages.empty?
|
168
167
|
|
169
|
-
|
170
|
-
|
171
|
-
|
168
|
+
msg = "\nDetected ImageMagick packages:\n"
|
169
|
+
Logging.message msg
|
170
|
+
message msg
|
171
|
+
package_paths = packages.map { |package| "- #{PKGConfig.package_config(package).pc_path}" }.join("\n")
|
172
|
+
Logging.message package_paths + "\n\n"
|
173
|
+
message package_paths + "\n\n"
|
172
174
|
|
173
175
|
if installed_im6_packages.any? && installed_im7_packages.any?
|
174
176
|
checking_for('forced use of ImageMagick 6') do
|
@@ -183,8 +185,7 @@ module RMagick
|
|
183
185
|
end
|
184
186
|
|
185
187
|
if packages.length > 1
|
186
|
-
|
187
|
-
msg = "\nWarning: Found more than one ImageMagick installation. This could cause problems at runtime.\n#{package_lines}\n\n"
|
188
|
+
msg = "\nWarning: Found more than one ImageMagick installation. This could cause problems at runtime.\n\n"
|
188
189
|
Logging.message msg
|
189
190
|
message msg
|
190
191
|
end
|
@@ -192,80 +193,6 @@ module RMagick
|
|
192
193
|
packages.first
|
193
194
|
end
|
194
195
|
|
195
|
-
# Seems like lots of people have multiple versions of ImageMagick installed.
|
196
|
-
def check_multiple_imagemagick_versions
|
197
|
-
versions = []
|
198
|
-
path = ENV['PATH'].split(File::PATH_SEPARATOR)
|
199
|
-
path.each do |dir|
|
200
|
-
file = File.join(dir, 'Magick-config')
|
201
|
-
next unless File.executable? file
|
202
|
-
|
203
|
-
vers = `#{file} --version`.chomp.strip
|
204
|
-
prefix = `#{file} --prefix`.chomp.strip
|
205
|
-
versions << [vers, prefix, dir]
|
206
|
-
end
|
207
|
-
versions.uniq!
|
208
|
-
return unless versions.size > 1
|
209
|
-
|
210
|
-
msg = "\nWarning: Found more than one ImageMagick installation. This could cause problems at runtime.\n"
|
211
|
-
versions.each do |vers, prefix, dir|
|
212
|
-
msg << " #{dir}/Magick-config reports version #{vers} is installed in #{prefix}\n"
|
213
|
-
end
|
214
|
-
msg << "Using #{versions[0][0]} from #{versions[0][1]}.\n\n"
|
215
|
-
Logging.message msg
|
216
|
-
message msg
|
217
|
-
end
|
218
|
-
|
219
|
-
# Ubuntu (maybe other systems) comes with a partial installation of
|
220
|
-
# ImageMagick in the prefix /usr (some libraries, no includes, and no
|
221
|
-
# binaries). This causes problems when /usr/lib is in the path (e.g., using
|
222
|
-
# the default Ruby installation).
|
223
|
-
def check_partial_imagemagick_versions
|
224
|
-
prefix = config_string('prefix') || ''
|
225
|
-
matches = [
|
226
|
-
prefix + '/lib/lib?agick*',
|
227
|
-
prefix + '/include/ImageMagick',
|
228
|
-
prefix + '/bin/Magick-config'
|
229
|
-
].map do |file_glob|
|
230
|
-
Dir.glob(file_glob)
|
231
|
-
end
|
232
|
-
matches.delete_if(&:empty?)
|
233
|
-
return unless !matches.empty? && matches.length < 3
|
234
|
-
|
235
|
-
msg = <<~MESSAGE
|
236
|
-
|
237
|
-
Warning: Found a partial ImageMagick installation. Your operating
|
238
|
-
system likely has some built-in ImageMagick libraries but not all of
|
239
|
-
ImageMagick. This will most likely cause problems at both compile and
|
240
|
-
runtime.
|
241
|
-
Found partial installation at: #{prefix}
|
242
|
-
|
243
|
-
MESSAGE
|
244
|
-
|
245
|
-
Logging.message msg
|
246
|
-
message msg
|
247
|
-
end
|
248
|
-
|
249
|
-
# issue #169
|
250
|
-
# set ARCHFLAGS appropriately for OSX
|
251
|
-
def configure_archflags_for_osx(magick_package)
|
252
|
-
return unless PKGConfig.libs_only_L(magick_package) =~ %r{-L(.+)/lib}
|
253
|
-
|
254
|
-
imagemagick_dir = Regexp.last_match(1)
|
255
|
-
command = Dir.glob(File.join(imagemagick_dir, "bin/*")).find { |file| File.executable? file }
|
256
|
-
fileinfo = `file #{command}`
|
257
|
-
|
258
|
-
# default ARCHFLAGS
|
259
|
-
archs = $ARCH_FLAG.scan(/-arch\s+(\S+)/).flatten
|
260
|
-
|
261
|
-
archflags = []
|
262
|
-
archs.each do |arch|
|
263
|
-
archflags << "-arch #{arch}" if fileinfo.include?(arch)
|
264
|
-
end
|
265
|
-
|
266
|
-
$ARCH_FLAG = archflags.join(' ') unless archflags.empty?
|
267
|
-
end
|
268
|
-
|
269
196
|
def search_paths_for_windows
|
270
197
|
msg = 'searching PATH for the ImageMagick library...'
|
271
198
|
Logging.message msg
|
@@ -297,7 +224,6 @@ module RMagick
|
|
297
224
|
end
|
298
225
|
|
299
226
|
def assert_can_compile!
|
300
|
-
assert_minimum_ruby_version!
|
301
227
|
assert_has_dev_libs!
|
302
228
|
|
303
229
|
# Check for compiler. Extract first word so ENV['CXX'] can be a program name with arguments.
|
@@ -305,14 +231,6 @@ module RMagick
|
|
305
231
|
exit_failure "No C++ compiler found in ${ENV['PATH']}. See mkmf.log for details." unless find_executable(cxx)
|
306
232
|
end
|
307
233
|
|
308
|
-
def assert_minimum_ruby_version!
|
309
|
-
supported = checking_for("Ruby version >= #{MIN_RUBY_VERS}") do
|
310
|
-
Gem::Version.new(RUBY_VERSION) >= Gem::Version.new(MIN_RUBY_VERS)
|
311
|
-
end
|
312
|
-
|
313
|
-
exit_failure "Can't install RMagick #{RMAGICK_VERS}. Ruby #{MIN_RUBY_VERS} or later required.\n" unless supported
|
314
|
-
end
|
315
|
-
|
316
234
|
def assert_has_dev_libs!
|
317
235
|
failure_message = <<~END_FAILURE
|
318
236
|
Can't install RMagick #{RMAGICK_VERS}.
|
@@ -325,11 +243,10 @@ module RMagick
|
|
325
243
|
$magick_version = Regexp.last_match(1)
|
326
244
|
exit_failure failure_message unless $magick_version
|
327
245
|
else
|
328
|
-
unless
|
246
|
+
unless ($magick_package = determine_imagemagick_package)
|
329
247
|
exit_failure failure_message
|
330
248
|
end
|
331
249
|
|
332
|
-
$magick_package = determine_imagemagick_package
|
333
250
|
$magick_version = PKGConfig.modversion($magick_package)[/^(\d+\.\d+\.\d+)/]
|
334
251
|
end
|
335
252
|
|
data/ext/RMagick/rmagick.h
CHANGED
@@ -273,8 +273,8 @@ typedef struct
|
|
273
273
|
|
274
274
|
//! Quantum expression adapter.
|
275
275
|
/**
|
276
|
-
*
|
277
|
-
*
|
276
|
+
* ImageMagick defines an enum type for quantum-level expressions,
|
277
|
+
* but they're different types. The QuantumExpressionOperator
|
278
278
|
* type is an adapter type that can be mapped to either one.
|
279
279
|
*/
|
280
280
|
typedef enum _QuantumExpressionOperator
|
@@ -349,7 +349,7 @@ EXTERN VALUE Class_Chromaticity;
|
|
349
349
|
EXTERN VALUE Class_Color;
|
350
350
|
EXTERN VALUE Class_Font;
|
351
351
|
EXTERN VALUE Class_Geometry;
|
352
|
-
EXTERN VALUE Class_GeometryValue; // Defined in
|
352
|
+
EXTERN VALUE Class_GeometryValue; // Defined in rmagick_internal.rb
|
353
353
|
EXTERN VALUE Class_Pixel;
|
354
354
|
EXTERN VALUE Class_Point;
|
355
355
|
EXTERN VALUE Class_PolaroidOptions;
|
data/ext/RMagick/rmilist.cpp
CHANGED
@@ -744,7 +744,7 @@ ImageList_optimize_layers(VALUE self, VALUE method)
|
|
744
744
|
* No Ruby usage (internal function)
|
745
745
|
*
|
746
746
|
* Notes:
|
747
|
-
* - this simply calls ImageList.new() in
|
747
|
+
* - this simply calls ImageList.new() in rmagick_internal.rb
|
748
748
|
*
|
749
749
|
* @return a new imagelist
|
750
750
|
*/
|
data/ext/RMagick/rmimage.cpp
CHANGED
@@ -11600,6 +11600,8 @@ rd_image(VALUE klass ATTRIBUTE_UNUSED, VALUE file, gvl_function_t fp)
|
|
11600
11600
|
rm_check_exception(exception, images, DestroyOnError);
|
11601
11601
|
DestroyExceptionInfo(exception);
|
11602
11602
|
|
11603
|
+
rm_ensure_result(images);
|
11604
|
+
|
11603
11605
|
rm_set_user_artifact(images, info);
|
11604
11606
|
rm_sync_image_options(images, info);
|
11605
11607
|
|
data/lib/rmagick/version.rb
CHANGED
data/lib/rmagick_internal.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# $Id:
|
3
|
+
# $Id: rmagick_internal.rb,v 1.84 2009/09/15 22:08:41 rmagick Exp $
|
4
4
|
#==============================================================================
|
5
5
|
# Copyright (C) 2009 by Timothy P. Hunter
|
6
|
-
# Name:
|
6
|
+
# Name: rmagick_internal.rb
|
7
7
|
# Author: Tim Hunter
|
8
8
|
# Purpose: Extend Ruby to interface with ImageMagick.
|
9
9
|
# Notes: RMagick2.so defines the classes. The code below adds methods
|
@@ -11,12 +11,9 @@
|
|
11
11
|
#==============================================================================
|
12
12
|
|
13
13
|
if RUBY_PLATFORM.match?(/mingw/i)
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
RubyInstaller::Runtime.add_dll_directory(path) if File.exist?(File.join(path, 'CORE_RL_magick_.dll')) || File.exist?(File.join(path, 'CORE_RL_MagickCore_.dll'))
|
18
|
-
end
|
19
|
-
rescue LoadError
|
14
|
+
require 'ruby_installer'
|
15
|
+
ENV['PATH'].split(File::PATH_SEPARATOR).grep(/ImageMagick/i).each do |path|
|
16
|
+
RubyInstaller::Runtime.add_dll_directory(path) if File.exist?(File.join(path, 'CORE_RL_magick_.dll')) || File.exist?(File.join(path, 'CORE_RL_MagickCore_.dll'))
|
20
17
|
end
|
21
18
|
end
|
22
19
|
|
@@ -1616,7 +1613,7 @@ module Magick
|
|
1616
1613
|
if @scene
|
1617
1614
|
img = @images[@scene]
|
1618
1615
|
new_img = img.public_send(meth_id, *args, &block)
|
1619
|
-
img.
|
1616
|
+
img.equal?(new_img) ? self : new_img
|
1620
1617
|
else
|
1621
1618
|
super
|
1622
1619
|
end
|
data/lib/rvg/clippath.rb
CHANGED
data/lib/rvg/container.rb
CHANGED
data/lib/rvg/deep_equal.rb
CHANGED
data/lib/rvg/describable.rb
CHANGED
data/lib/rvg/embellishable.rb
CHANGED
data/lib/rvg/misc.rb
CHANGED
data/lib/rvg/paint.rb
CHANGED
data/lib/rvg/pathdata.rb
CHANGED
data/lib/rvg/rvg.rb
CHANGED
data/lib/rvg/stretchable.rb
CHANGED
data/lib/rvg/stylable.rb
CHANGED
data/lib/rvg/text.rb
CHANGED
data/lib/rvg/transformable.rb
CHANGED
data/lib/rvg/units.rb
CHANGED
data/rmagick.gemspec
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'English'
|
3
4
|
require './lib/rmagick/version'
|
4
5
|
|
@@ -12,6 +13,11 @@ Gem::Specification.new do |s|
|
|
12
13
|
s.homepage = 'https://github.com/rmagick/rmagick'
|
13
14
|
s.license = 'MIT'
|
14
15
|
|
16
|
+
s.metadata['bug_tracker_uri'] = 'https://github.com/rmagick/rmagick/issues'
|
17
|
+
s.metadata['documentation_uri'] = 'https://rmagick.github.io/'
|
18
|
+
s.metadata['changelog_uri'] = 'https://github.com/rmagick/rmagick/blob/main/CHANGELOG.md'
|
19
|
+
s.metadata['rubygems_mfa_required'] = 'true'
|
20
|
+
|
15
21
|
tracked_files = `git ls-files`.split($OUTPUT_RECORD_SEPARATOR)
|
16
22
|
file_exclusion_regex = /\A(doc|benchmarks|examples|spec|Steepfile)/
|
17
23
|
files = tracked_files.reject { |file| file[file_exclusion_regex] }
|
@@ -23,6 +29,6 @@ Gem::Specification.new do |s|
|
|
23
29
|
s.required_ruby_version = ">= #{Magick::MIN_RUBY_VERSION}"
|
24
30
|
s.requirements << "ImageMagick #{Magick::MIN_IM_VERSION} or later"
|
25
31
|
|
26
|
-
s.
|
27
|
-
s.
|
32
|
+
s.add_dependency 'observer', '~> 0.1'
|
33
|
+
s.add_dependency 'pkg-config', '~> 1.4'
|
28
34
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Magick
|
2
4
|
interface _ImageCommonMethods
|
3
5
|
# Magick::Image / Magick::ImageList common methods
|
@@ -20,7 +22,7 @@ module Magick
|
|
20
22
|
def matte_replace: (int x, int y) -> Image
|
21
23
|
def matte_floodfill: (int x, int y) -> Image
|
22
24
|
def matte_fill_to_border: (int x, int y) -> Image
|
23
|
-
def matte_reset!: -> Image
|
25
|
+
def matte_reset!: () -> Image
|
24
26
|
def resize_to_fill: (real ncols, ?real nrows, ?GravityType gravity) -> Image
|
25
27
|
def resize_to_fill!: (real ncols, ?real nrows, ?GravityType gravity) -> Image
|
26
28
|
alias crop_resized resize_to_fill
|
@@ -304,7 +306,7 @@ module Magick
|
|
304
306
|
def raise: (?int width, ?int height, ?bool raised) -> Image
|
305
307
|
def random_threshold_channel: (Geometry | string geometry, *ChannelType channel) -> Image
|
306
308
|
def recolor: (Array[magick_real] color_matrix) -> Image
|
307
|
-
def reduce_noise: (int radius)
|
309
|
+
def reduce_noise: (int radius) -> Image
|
308
310
|
def resample: (?magick_real x_resolution, ?magick_real y_resolution, ?FilterType filter, ?magick_real blur) -> Image
|
309
311
|
def resample!: (?magick_real x_resolution, ?magick_real y_resolution, ?FilterType filter, ?magick_real blur) -> self
|
310
312
|
def resize: (magick_real scale) -> Image
|
data/sig/rmagick/draw.rbs
CHANGED
data/sig/rmagick/enum.rbs
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Magick
|
2
4
|
class Enum
|
3
5
|
def initialize: (interned sym, int val) -> void
|
4
|
-
def to_s: -> String
|
5
|
-
def to_i: -> Integer
|
6
|
+
def to_s: () -> String
|
7
|
+
def to_i: () -> Integer
|
6
8
|
def <=>: (Enum other) -> (-1 | 0 | 1 | nil)
|
7
9
|
def ===: (Enum other) -> bool
|
8
10
|
def |: (Enum other) -> Enum
|
@@ -10,11 +12,11 @@ module Magick
|
|
10
12
|
|
11
13
|
interface _EnumInstanceMethod
|
12
14
|
def initialize: (interned sym, int val) -> void
|
13
|
-
def inspect: -> String
|
15
|
+
def inspect: () -> String
|
14
16
|
end
|
15
17
|
|
16
18
|
interface _EnumClassMethod[T]
|
17
|
-
def values: -> Array[T]
|
19
|
+
def values: () -> Array[T]
|
18
20
|
end
|
19
21
|
|
20
22
|
class GeometryValue < Enum
|
data/sig/rmagick/error.rbs
CHANGED
data/sig/rmagick/fill.rbs
CHANGED
data/sig/rmagick/geometry.rbs
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Magick
|
2
4
|
class Geometry
|
3
5
|
attr_accessor width: Integer | Float
|
@@ -8,7 +10,7 @@ module Magick
|
|
8
10
|
|
9
11
|
def initialize: (?magick_real? width, ?magick_real? height, ?real? x, ?real? y, ?GeometryValue? flag) -> void
|
10
12
|
def self.from_s: (String str) -> Geometry
|
11
|
-
def to_s: -> String
|
13
|
+
def to_s: () -> String
|
12
14
|
end
|
13
15
|
end
|
14
16
|
|