rmagick 4.2.2 → 5.4.4

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.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/.devcontainer/Dockerfile +14 -0
  3. data/.devcontainer/ImageMagick6/devcontainer.json +11 -0
  4. data/.devcontainer/devcontainer.json +11 -0
  5. data/.devcontainer/setup-repo.sh +10 -0
  6. data/.devcontainer/setup-user.sh +45 -0
  7. data/.editorconfig +1 -1
  8. data/.github/workflows/ci.yml +59 -24
  9. data/.gitignore +3 -0
  10. data/.rubocop_todo.yml +0 -1
  11. data/.yardopts +1 -1
  12. data/CHANGELOG.md +131 -0
  13. data/README.md +12 -17
  14. data/Rakefile +53 -81
  15. data/before_install_linux.sh +4 -4
  16. data/before_install_osx.sh +7 -6
  17. data/ext/RMagick/extconf.rb +94 -45
  18. data/ext/RMagick/{rmagick.c → rmagick.cpp} +19 -22
  19. data/ext/RMagick/rmagick.h +90 -60
  20. data/ext/RMagick/rmagick_gvl.h +224 -0
  21. data/ext/RMagick/{rmdraw.c → rmdraw.cpp} +160 -146
  22. data/ext/RMagick/{rmenum.c → rmenum.cpp} +69 -50
  23. data/ext/RMagick/{rmfill.c → rmfill.cpp} +81 -20
  24. data/ext/RMagick/{rmilist.c → rmilist.cpp} +184 -93
  25. data/ext/RMagick/{rmimage.c → rmimage.cpp} +1276 -731
  26. data/ext/RMagick/{rminfo.c → rminfo.cpp} +119 -131
  27. data/ext/RMagick/{rmkinfo.c → rmkinfo.cpp} +41 -16
  28. data/ext/RMagick/rmmain.cpp +1957 -0
  29. data/ext/RMagick/{rmmontage.c → rmmontage.cpp} +49 -28
  30. data/ext/RMagick/{rmpixel.c → rmpixel.cpp} +109 -84
  31. data/ext/RMagick/{rmstruct.c → rmstruct.cpp} +12 -12
  32. data/ext/RMagick/{rmutil.c → rmutil.cpp} +52 -91
  33. data/lib/rmagick/version.rb +3 -1
  34. data/lib/rmagick.rb +2 -0
  35. data/lib/rmagick_internal.rb +9 -48
  36. data/lib/rvg/rvg.rb +2 -2
  37. data/rmagick.gemspec +8 -7
  38. metadata +54 -23
  39. data/.codeclimate.yml +0 -63
  40. data/deprecated/RMagick.rb +0 -6
  41. data/ext/RMagick/rmmain.c +0 -1951
@@ -5,8 +5,8 @@
5
5
  *
6
6
  * Changes since Nov. 2009 copyright © by Benjamin Thomas and Omer Bar-or
7
7
  *
8
- * @file rmutil.c
9
- * @version $Id: rmutil.c,v 1.182 2009/12/21 10:34:58 baror Exp $
8
+ * @file rmutil.cpp
9
+ * @version $Id: rmutil.cpp,v 1.182 2009/12/21 10:34:58 baror Exp $
10
10
  * @author Tim Hunter
11
11
  ******************************************************************************/
12
12
 
@@ -22,6 +22,9 @@ static VALUE rescue_not_str(VALUE, VALUE ATTRIBUTE_UNUSED) ATTRIBUTE_NORETURN;
22
22
  static void handle_exception(ExceptionInfo *, Image *, ErrorRetention);
23
23
 
24
24
 
25
+ DEFINE_GVL_STUB5(CloneImage, const Image *, const size_t, const size_t, const MagickBooleanType, ExceptionInfo *);
26
+
27
+
25
28
  /**
26
29
  * ImageMagick safe version of malloc.
27
30
  *
@@ -249,7 +252,7 @@ rm_check_ary_type(VALUE ary)
249
252
  VALUE checked = rb_check_array_type(ary);
250
253
  if (NIL_P(checked))
251
254
  {
252
- rb_raise(rb_eTypeError, "wrong argument type %"RMIsVALUE" was given. (must respond to :to_ary)", rb_obj_class(ary));
255
+ rb_raise(rb_eTypeError, "wrong argument type %" RMIsVALUE " was given. (must respond to :to_ary)", rb_obj_class(ary));
253
256
  }
254
257
  return checked;
255
258
  }
@@ -269,7 +272,7 @@ rm_check_destroyed(VALUE obj)
269
272
  {
270
273
  Image *image;
271
274
 
272
- Data_Get_Struct(obj, Image, image);
275
+ TypedData_Get_Struct(obj, Image, &rm_image_data_type, image);
273
276
  if (!image)
274
277
  {
275
278
  rb_raise(Class_DestroyedImageError, "destroyed image");
@@ -316,16 +319,16 @@ rm_no_freeze(VALUE obj)
316
319
  * No Ruby usage (internal function)
317
320
  *
318
321
  * @param str the Ruby string
319
- * @param len pointer to a long in which to store the number of characters
322
+ * @param len pointer to a size_t in which to store the number of characters
320
323
  * @return a C string version of str
321
324
  */
322
325
  char *
323
- rm_str2cstr(VALUE str, long *len)
326
+ rm_str2cstr(VALUE str, size_t *len)
324
327
  {
325
328
  StringValue(str);
326
329
  if (len)
327
330
  {
328
- *len = RSTRING_LEN(str);
331
+ *len = (size_t)RSTRING_LEN(str);
329
332
  }
330
333
  return RSTRING_PTR(str);
331
334
  }
@@ -370,7 +373,7 @@ rm_percentage(VALUE arg, double max)
370
373
  char *pct_str;
371
374
  long pct_long;
372
375
 
373
- arg = rb_rescue(rb_str_to_str, arg, rescue_not_str, arg);
376
+ arg = rb_rescue(RESCUE_FUNC(rb_str_to_str), arg, RESCUE_EXCEPTION_HANDLER_FUNC(rescue_not_str), arg);
374
377
  pct_str = StringValueCStr(arg);
375
378
  errno = 0;
376
379
  pct_long = strtol(pct_str, &end, 10);
@@ -451,7 +454,7 @@ rescue_not_dbl(VALUE ignored ATTRIBUTE_UNUSED, VALUE raised_exc ATTRIBUTE_UNUSED
451
454
  int
452
455
  rm_check_num2dbl(VALUE obj)
453
456
  {
454
- return FIX2INT(rb_rescue(check_num2dbl, obj, rescue_not_dbl, (VALUE)0));
457
+ return FIX2INT(rb_rescue(RESCUE_FUNC(check_num2dbl), obj, RESCUE_EXCEPTION_HANDLER_FUNC(rescue_not_dbl), (VALUE)0));
455
458
  }
456
459
 
457
460
 
@@ -469,7 +472,7 @@ rm_str_to_pct(VALUE str)
469
472
  long pct;
470
473
  char *pct_str, *end;
471
474
 
472
- str = rb_rescue(rb_str_to_str, str, rescue_not_str, str);
475
+ str = rb_rescue(RESCUE_FUNC(rb_str_to_str), str, RESCUE_EXCEPTION_HANDLER_FUNC(rescue_not_str), str);
473
476
  pct_str = StringValueCStr(str);
474
477
  errno = 0;
475
478
  pct = strtol(pct_str, &end, 10);
@@ -513,7 +516,7 @@ rm_fuzz_to_dbl(VALUE fuzz_arg)
513
516
  char *fuzz_str;
514
517
 
515
518
  // Convert to string, issue error message if failure.
516
- fuzz_arg = rb_rescue(rb_str_to_str, fuzz_arg, rescue_not_str, fuzz_arg);
519
+ fuzz_arg = rb_rescue(RESCUE_FUNC(rb_str_to_str), fuzz_arg, RESCUE_EXCEPTION_HANDLER_FUNC(rescue_not_str), fuzz_arg);
517
520
  fuzz_str = StringValueCStr(fuzz_arg);
518
521
  errno = 0;
519
522
  fuzz = strtod(fuzz_str, &end);
@@ -780,7 +783,7 @@ rm_write_temp_image(Image *image, char *temp_name, size_t temp_name_l)
780
783
  snprintf(temp_name, temp_name_l, "mpri:%d", id);
781
784
 
782
785
  // Omit "mpri:" from filename to form the key
783
- okay = SetImageRegistry(ImageRegistryType, temp_name+5, image, exception);
786
+ okay = (MagickBooleanType)SetImageRegistry(ImageRegistryType, temp_name+5, image, exception);
784
787
  CHECK_EXCEPTION();
785
788
  DestroyExceptionInfo(exception);
786
789
  if (!okay)
@@ -858,6 +861,25 @@ rm_magick_error(const char *msg)
858
861
  RB_GC_GUARD(mesg);
859
862
  }
860
863
 
864
+ #if defined(IMAGEMAGICK_7)
865
+ /**
866
+ * Sets the alpha channel of a pixel color
867
+ *
868
+ * No Ruby usage (internal function)
869
+ *
870
+ * @param pixel the Pixel
871
+ * @param value the value
872
+ */
873
+ void
874
+ rm_set_pixelinfo_alpha(PixelInfo *pixel, const MagickRealType value)
875
+ {
876
+ pixel->alpha = value;
877
+ if (value != (MagickRealType) OpaqueAlpha)
878
+ {
879
+ pixel->alpha_trait = BlendPixelTrait;
880
+ }
881
+ }
882
+ #endif
861
883
 
862
884
  /**
863
885
  * Initialize a new ImageMagickError object - store the "loc" string in the
@@ -889,7 +911,7 @@ ImageMagickError_initialize(int argc, VALUE *argv, VALUE self)
889
911
  }
890
912
 
891
913
  rb_call_super(super_argc, (const VALUE *)super_argv);
892
- rb_iv_set(self, "@"MAGICK_LOC, extra);
914
+ rb_iv_set(self, "@" MAGICK_LOC, extra);
893
915
 
894
916
  RB_GC_GUARD(extra);
895
917
 
@@ -1006,14 +1028,7 @@ rm_get_optional_arguments(VALUE img)
1006
1028
  argv[0] = img;
1007
1029
  opt_args = rb_class_new_instance(1, argv, optional_method_arguments);
1008
1030
 
1009
- if (rb_proc_arity(rb_block_proc()) == 0)
1010
- {
1011
- rb_obj_instance_eval(0, NULL, opt_args);
1012
- }
1013
- else
1014
- {
1015
- rb_yield(opt_args);
1016
- }
1031
+ rb_yield(opt_args);
1017
1032
  }
1018
1033
 
1019
1034
  RB_GC_GUARD(optional_method_arguments);
@@ -1253,7 +1268,7 @@ void rm_sync_image_options(Image *image, Info *info)
1253
1268
  /**
1254
1269
  * Replicate old (ImageMagick < 6.3.2) EXIF:* functionality using
1255
1270
  * GetImageProperty by returning the exif entries as a single string, separated
1256
- * by \n's. Do this so that RMagick.rb works no matter which version of
1271
+ * by \n's. Do this so that RMagick works no matter which version of
1257
1272
  * ImageMagick is in use.
1258
1273
  *
1259
1274
  * No Ruby usage (internal function)
@@ -1317,7 +1332,7 @@ rm_exif_by_entry(Image *image)
1317
1332
  return Qnil;
1318
1333
  }
1319
1334
 
1320
- str = xmalloc(len);
1335
+ str = (char *)xmalloc(len);
1321
1336
  len = 0;
1322
1337
 
1323
1338
  // Copy the exif properties and values into the string.
@@ -1372,7 +1387,7 @@ rm_exif_by_entry(Image *image)
1372
1387
  /**
1373
1388
  * Replicate old (ImageMagick < 6.3.2) EXIF:! functionality using
1374
1389
  * GetImageProperty by returning the exif entries as a single string, separated
1375
- * by \n's. Do this so that RMagick.rb works no matter which version of
1390
+ * by \n's. Do this so that RMagick works no matter which version of
1376
1391
  * ImageMagick is in use.
1377
1392
  *
1378
1393
  * No Ruby usage (internal function)
@@ -1435,7 +1450,7 @@ rm_exif_by_number(Image *image)
1435
1450
  return Qnil;
1436
1451
  }
1437
1452
 
1438
- str = xmalloc(len);
1453
+ str = (char *)xmalloc(len);
1439
1454
  len = 0;
1440
1455
 
1441
1456
  // Copy the exif properties and values into the string.
@@ -1506,7 +1521,8 @@ rm_clone_image(Image *image)
1506
1521
  ExceptionInfo *exception;
1507
1522
 
1508
1523
  exception = AcquireExceptionInfo();
1509
- clone = CloneImage(image, 0, 0, MagickTrue, exception);
1524
+ GVL_STRUCT_TYPE(CloneImage) args = { image, 0, 0, MagickTrue, exception };
1525
+ clone = (Image *)CALL_FUNC_WITHOUT_GVL(GVL_FUNC(CloneImage), &args);
1510
1526
  if (!clone)
1511
1527
  {
1512
1528
  rb_raise(rb_eNoMemError, "not enough memory to continue");
@@ -1518,64 +1534,6 @@ rm_clone_image(Image *image)
1518
1534
  }
1519
1535
 
1520
1536
 
1521
- /**
1522
- * SetImage(Info)ProgressMonitor exit.
1523
- *
1524
- * No Ruby usage (internal function)
1525
- *
1526
- * Notes:
1527
- * - ImageMagick's "tag" argument is unused. We pass along the method name
1528
- * instead.
1529
- *
1530
- * @param tag ImageMagick argument (unused)
1531
- * @param of the offset type
1532
- * @param sp the size type
1533
- * @param client_data pointer to the progress method to call
1534
- * @return true if calling client_data returns a non-nil value, otherwise false
1535
- */
1536
- MagickBooleanType
1537
- rm_progress_monitor(
1538
- const char *tag ATTRIBUTE_UNUSED,
1539
- const MagickOffsetType of,
1540
- const MagickSizeType sp,
1541
- void *client_data)
1542
- {
1543
- VALUE rval;
1544
- VALUE method, offset, span;
1545
-
1546
- // Check running thread.
1547
- if (rm_current_thread_id() != rm_main_thread_id)
1548
- {
1549
- // ImageMagick might call back in a different thread than Ruby is running in.
1550
- // If it is a different thread, it would not have a Ruby GVL and
1551
- // it could not retrieve properly Ruby stack.
1552
-
1553
- // Unfortunately, there is no API available to check if the current thread has a GVL,
1554
- // so the thread id was checked in here.
1555
- return MagickTrue;
1556
- }
1557
-
1558
- #if defined(HAVE_LONG_LONG) // defined in Ruby's defines.h
1559
- offset = rb_ll2inum(of);
1560
- span = rb_ull2inum(sp);
1561
- #else
1562
- offset = rb_int2big((long)of);
1563
- span = rb_uint2big((unsigned long)sp);
1564
- #endif
1565
-
1566
- method = rb_id2str(rb_frame_this_func());
1567
-
1568
- rval = rb_funcall((VALUE)client_data, rm_ID_call, 3, method, offset, span);
1569
-
1570
- RB_GC_GUARD(rval);
1571
- RB_GC_GUARD(method);
1572
- RB_GC_GUARD(offset);
1573
- RB_GC_GUARD(span);
1574
-
1575
- return RTEST(rval) ? MagickTrue : MagickFalse;
1576
- }
1577
-
1578
-
1579
1537
  /**
1580
1538
  * Remove the ImageMagick links between images in an scene sequence.
1581
1539
  *
@@ -1883,18 +1841,21 @@ rm_raise_exception(ExceptionInfo *exception)
1883
1841
  }
1884
1842
 
1885
1843
  /**
1886
- * Get current thread id.
1844
+ * Get IO path.
1887
1845
  *
1888
1846
  * No Ruby usage (internal function)
1889
1847
  *
1890
- * @return thread id
1848
+ * @param io An IO object
1849
+ * @return string of the path
1891
1850
  */
1892
- unsigned long long
1893
- rm_current_thread_id()
1851
+ VALUE
1852
+ rm_io_path(VALUE io)
1894
1853
  {
1895
- #if defined(_WIN32)
1896
- return (unsigned long long)GetCurrentThreadId();
1854
+ #ifdef HAVE_RB_IO_PATH
1855
+ return rb_io_path(io);
1897
1856
  #else
1898
- return (unsigned long long)pthread_self();
1857
+ rb_io_t *fptr;
1858
+ GetOpenFile(io, fptr);
1859
+ return fptr->pathv;
1899
1860
  #endif
1900
1861
  }
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Magick
2
- VERSION = '4.2.2'
4
+ VERSION = '5.4.4'
3
5
  MIN_RUBY_VERSION = '2.3.0'
4
6
  MIN_IM_VERSION = '6.7.7'
5
7
  end
data/lib/rmagick.rb CHANGED
@@ -1 +1,3 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rmagick_internal.rb'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # $Id: RMagick.rb,v 1.84 2009/09/15 22:08:41 rmagick Exp $
2
4
  #==============================================================================
3
5
  # Copyright (C) 2009 by Timothy P. Hunter
@@ -12,7 +14,7 @@ if RUBY_PLATFORM =~ /mingw/i
12
14
  begin
13
15
  require 'ruby_installer'
14
16
  ENV['PATH'].split(File::PATH_SEPARATOR).grep(/ImageMagick/i).each do |path|
15
- RubyInstaller::Runtime.add_dll_directory(path)
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'))
16
18
  end
17
19
  rescue LoadError
18
20
  end
@@ -23,9 +25,6 @@ require 'observer'
23
25
  require 'RMagick2.so'
24
26
 
25
27
  module Magick
26
- @formats = nil
27
- @trace_proc = nil
28
- @exit_block_set_up = nil
29
28
  IMAGEMAGICK_VERSION = Magick::Magick_version.split[1].split('-').first
30
29
 
31
30
  class << self
@@ -53,45 +52,13 @@ module Magick
53
52
  # => {"3FR"=>" r-+", "3G2"=>" r-+", "3GP"=>" r-+", "A"=>"*rw+",
54
53
  # ...
55
54
  def formats
56
- @formats ||= init_formats
55
+ formats = init_formats
57
56
 
58
57
  if block_given?
59
- @formats.each { |k, v| yield k, v }
58
+ formats.each { |k, v| yield k, v }
60
59
  self
61
60
  else
62
- @formats
63
- end
64
- end
65
-
66
- # If the Magick module attribute +trace_proc+ is set to a Proc object,
67
- # RMagick calls the proc whenever an image is created or destroyed.
68
- #
69
- # You can use this proc to keep track of which images your program has created
70
- # and which have been destroyed.
71
- #
72
- # @param p [Proc] The proc object.
73
- # The following value will be passed into the proc object.
74
- # - +which+ - A symbol that indicates which operation the proc is being called for.
75
- # If the proc is called for an image creation, the value is +:c+.
76
- # If called for an image destruction, the value is +:d+.
77
- # - +description+ - A string describing the image. This is the same string that
78
- # would be returned by calling the image's inspect method.
79
- # - +id+ - A unique identifier for the image. This identifier is not the same as the object's +object_id+.
80
- # - +method+ - The name of the method responsible for creating or destroying the image.
81
- #
82
- # @example
83
- # Magick.trace_proc = proc do |which, description, id, method|
84
- # ...
85
- # end
86
- def trace_proc=(p)
87
- m = Mutex.new
88
- m.synchronize do
89
- if @trace_proc.nil? && !p.nil? && !@exit_block_set_up
90
- at_exit { @trace_proc = nil }
91
- @exit_block_set_up = true
92
- end
93
-
94
- @trace_proc = p
61
+ formats
95
62
  end
96
63
  end
97
64
  end
@@ -109,7 +76,7 @@ module Magick
109
76
  MinimumGeometry = GeometryValue.new(:MinimumGeometry, 6).freeze
110
77
 
111
78
  class Geometry
112
- FLAGS = ['', '%', '!', '<', '>', '@', '^']
79
+ FLAGS = ['', '%', '!', '<', '>', '@', '^'].freeze
113
80
  RFLAGS = {
114
81
  '%' => PercentGeometry,
115
82
  '!' => AspectGeometry,
@@ -117,7 +84,7 @@ module Magick
117
84
  '>' => GreaterGeometry,
118
85
  '@' => AreaGeometry,
119
86
  '^' => MinimumGeometry
120
- }
87
+ }.freeze
121
88
 
122
89
  attr_accessor :width, :height, :x, :y, :flag
123
90
 
@@ -173,7 +140,7 @@ module Magick
173
140
 
174
141
  # Convert object to a geometry string
175
142
  def to_s
176
- str = ''
143
+ str = String.new
177
144
  if @width > 0
178
145
  fmt = @width.truncate == @width ? '%d' : '%.2f'
179
146
  str << sprintf(fmt, @width)
@@ -804,12 +771,6 @@ module Magick
804
771
  module Post_ObjectData_Descriptor
805
772
  Confirmed_ObjectData_Size = '9:10'
806
773
  end
807
-
808
- # Make all constants above immutable
809
- constants.each do |record|
810
- rec = const_get(record)
811
- rec.constants.each { |ds| rec.const_get(ds).freeze }
812
- end
813
774
  end # module Magick::IPTC
814
775
 
815
776
  # Ruby-level Magick::Image methods
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) { self.background_color = bgcolor }
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)) { self.background_color = bgcolor }
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
@@ -15,21 +15,22 @@ Gem::Specification.new do |s|
15
15
 
16
16
  tracked_files = `git ls-files`.split($OUTPUT_RECORD_SEPARATOR)
17
17
  file_exclusion_regex = %r{\A(doc|benchmarks|examples|spec|lib/rvg/to_c.rb)}
18
- files = tracked_files.reject { |file| file[file_exclusion_regex] }
19
- test_files = files.grep(%r{^(test|spec|features)/})
18
+ files = tracked_files.reject { |file| file[file_exclusion_regex] }
20
19
 
21
- s.files = files
22
- s.test_files = test_files
23
- s.require_paths << 'ext' << 'deprecated'
20
+ s.files = files
21
+ s.require_paths << 'ext'
24
22
 
25
23
  s.extensions = %w[ext/RMagick/extconf.rb]
26
24
  s.required_ruby_version = ">= #{Magick::MIN_RUBY_VERSION}"
27
25
  s.requirements << "ImageMagick #{Magick::MIN_IM_VERSION} or later"
28
26
 
29
- s.add_development_dependency 'pry', '~> 0.12.2'
27
+ s.add_runtime_dependency 'pkg-config', '~> 1.4'
28
+ s.add_runtime_dependency 'observer', '~> 0.1'
29
+
30
+ s.add_development_dependency 'pry', '~> 0.14'
30
31
  s.add_development_dependency 'rake-compiler', '~> 1.0'
31
32
  s.add_development_dependency 'rspec', '~> 3.8'
32
- s.add_development_dependency 'rspec_junit_formatter', '~> 0.4.1'
33
+ s.add_development_dependency 'rspec_junit_formatter', '~> 0.6.0'
33
34
  if RUBY_PLATFORM !~ /mswin|mingw/
34
35
  s.add_development_dependency 'rubocop', '~> 0.81.0'
35
36
  s.add_development_dependency 'rubocop-rspec', '~> 1.38.1'
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.2.2
4
+ version: 5.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Hunter
@@ -11,22 +11,50 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2021-02-23 00:00:00.000000000 Z
14
+ date: 2024-02-15 00:00:00.000000000 Z
15
15
  dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: pkg-config
18
+ requirement: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - "~>"
21
+ - !ruby/object:Gem::Version
22
+ version: '1.4'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '1.4'
30
+ - !ruby/object:Gem::Dependency
31
+ name: observer
32
+ requirement: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - "~>"
35
+ - !ruby/object:Gem::Version
36
+ version: '0.1'
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '0.1'
16
44
  - !ruby/object:Gem::Dependency
17
45
  name: pry
18
46
  requirement: !ruby/object:Gem::Requirement
19
47
  requirements:
20
48
  - - "~>"
21
49
  - !ruby/object:Gem::Version
22
- version: 0.12.2
50
+ version: '0.14'
23
51
  type: :development
24
52
  prerelease: false
25
53
  version_requirements: !ruby/object:Gem::Requirement
26
54
  requirements:
27
55
  - - "~>"
28
56
  - !ruby/object:Gem::Version
29
- version: 0.12.2
57
+ version: '0.14'
30
58
  - !ruby/object:Gem::Dependency
31
59
  name: rake-compiler
32
60
  requirement: !ruby/object:Gem::Requirement
@@ -61,14 +89,14 @@ dependencies:
61
89
  requirements:
62
90
  - - "~>"
63
91
  - !ruby/object:Gem::Version
64
- version: 0.4.1
92
+ version: 0.6.0
65
93
  type: :development
66
94
  prerelease: false
67
95
  version_requirements: !ruby/object:Gem::Requirement
68
96
  requirements:
69
97
  - - "~>"
70
98
  - !ruby/object:Gem::Version
71
- version: 0.4.1
99
+ version: 0.6.0
72
100
  - !ruby/object:Gem::Dependency
73
101
  name: rubocop
74
102
  requirement: !ruby/object:Gem::Requirement
@@ -146,7 +174,11 @@ extensions:
146
174
  - ext/RMagick/extconf.rb
147
175
  extra_rdoc_files: []
148
176
  files:
149
- - ".codeclimate.yml"
177
+ - ".devcontainer/Dockerfile"
178
+ - ".devcontainer/ImageMagick6/devcontainer.json"
179
+ - ".devcontainer/devcontainer.json"
180
+ - ".devcontainer/setup-repo.sh"
181
+ - ".devcontainer/setup-user.sh"
150
182
  - ".editorconfig"
151
183
  - ".github/ISSUE_TEMPLATE.md"
152
184
  - ".github/workflows/ci.yml"
@@ -164,22 +196,22 @@ files:
164
196
  - Rakefile
165
197
  - before_install_linux.sh
166
198
  - before_install_osx.sh
167
- - deprecated/RMagick.rb
168
199
  - ext/RMagick/extconf.rb
169
- - ext/RMagick/rmagick.c
200
+ - ext/RMagick/rmagick.cpp
170
201
  - ext/RMagick/rmagick.h
171
- - ext/RMagick/rmdraw.c
172
- - ext/RMagick/rmenum.c
173
- - ext/RMagick/rmfill.c
174
- - ext/RMagick/rmilist.c
175
- - ext/RMagick/rmimage.c
176
- - ext/RMagick/rminfo.c
177
- - ext/RMagick/rmkinfo.c
178
- - ext/RMagick/rmmain.c
179
- - ext/RMagick/rmmontage.c
180
- - ext/RMagick/rmpixel.c
181
- - ext/RMagick/rmstruct.c
182
- - ext/RMagick/rmutil.c
202
+ - ext/RMagick/rmagick_gvl.h
203
+ - ext/RMagick/rmdraw.cpp
204
+ - ext/RMagick/rmenum.cpp
205
+ - ext/RMagick/rmfill.cpp
206
+ - ext/RMagick/rmilist.cpp
207
+ - ext/RMagick/rmimage.cpp
208
+ - ext/RMagick/rminfo.cpp
209
+ - ext/RMagick/rmkinfo.cpp
210
+ - ext/RMagick/rmmain.cpp
211
+ - ext/RMagick/rmmontage.cpp
212
+ - ext/RMagick/rmpixel.cpp
213
+ - ext/RMagick/rmstruct.cpp
214
+ - ext/RMagick/rmutil.cpp
183
215
  - lib/rmagick.rb
184
216
  - lib/rmagick/version.rb
185
217
  - lib/rmagick_internal.rb
@@ -207,7 +239,6 @@ rdoc_options: []
207
239
  require_paths:
208
240
  - lib
209
241
  - ext
210
- - deprecated
211
242
  required_ruby_version: !ruby/object:Gem::Requirement
212
243
  requirements:
213
244
  - - ">="
@@ -220,7 +251,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
220
251
  version: '0'
221
252
  requirements:
222
253
  - ImageMagick 6.7.7 or later
223
- rubygems_version: 3.1.4
254
+ rubygems_version: 3.4.10
224
255
  signing_key:
225
256
  specification_version: 4
226
257
  summary: Ruby binding to ImageMagick
data/.codeclimate.yml DELETED
@@ -1,63 +0,0 @@
1
- engines:
2
- cppcheck:
3
- enabled: true
4
- checks:
5
- variableScope:
6
- enabled: false
7
- toomanyconfigs:
8
- enabled: false
9
- invalidPrintfArgType_sint:
10
- enabled: false
11
- redundantAssignment:
12
- enabled: false
13
- selfAssignment:
14
- enabled: false
15
- unreachableCode:
16
- enabled: false
17
- unsignedLessThanZero:
18
- enabled: false
19
- toomanyconfigs:
20
- enabled: false
21
- complex-definition:
22
- enabled: false
23
-
24
- markdownlint:
25
- enabled: true
26
- checks:
27
- # Line length
28
- MD013:
29
- enabled: false
30
- # Emphasis used instead of a header
31
- MD036:
32
- enabled: false
33
- # Hard tabs
34
- MD010:
35
- enabled: false
36
- # Dollar signs used before commands without showing output
37
- MD014:
38
- enabled: false
39
- # Headers should be surrounded by blank lines
40
- MD022:
41
- enabled: false
42
- # Multiple consecutive blank lines
43
- MD012:
44
- enabled: false
45
- # Bare URL used
46
- MD034:
47
- enabled: false
48
- # Ordered list item prefix
49
- MD029:
50
- enabled: false
51
- # Lists should be surrounded by blank lines
52
- MD032:
53
- enabled: false
54
- # Code block style
55
- MD046:
56
- enabled: false
57
- # Header style
58
- MD003:
59
- enabled: false
60
- # Spaces after list markers
61
- MD030:
62
- enabled: false
63
-
@@ -1,6 +0,0 @@
1
- # This file is added to the require_paths in rmagick.gemspec
2
- # That should be removed as well when this file is removed
3
-
4
- warn '[DEPRECATION] requiring "RMagick" is deprecated. Use "rmagick" instead'
5
-
6
- require 'rmagick_internal'