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
@@ -3,15 +3,30 @@
3
3
  *
4
4
  * Copyright © RMagick Project
5
5
  *
6
- * @file rmkinfo.c
7
- * @version $Id: rmkinfo.c,v 1.0 2011/11/29 15:33:14 naquad Exp $
6
+ * @file rmkinfo.cpp
7
+ * @version $Id: rmkinfo.cpp,v 1.0 2011/11/29 15:33:14 naquad Exp $
8
8
  * @author Naquad
9
9
  ****************************************************************************/
10
10
 
11
11
  #include "rmagick.h"
12
12
 
13
+ static void rm_kernel_info_destroy(void *kernel);
14
+ static size_t rm_kernel_info_memsize(const void *ptr);
15
+
16
+ const rb_data_type_t rm_kernel_info_data_type = {
17
+ "Magick::KernelInfo",
18
+ { NULL, rm_kernel_info_destroy, rm_kernel_info_memsize, },
19
+ 0, 0,
20
+ RUBY_TYPED_FROZEN_SHAREABLE,
21
+ };
22
+
23
+ DEFINE_GVL_VOID_STUB2(UnityAddKernelInfo, KernelInfo *, const double);
24
+ DEFINE_GVL_VOID_STUB3(ScaleKernelInfo, KernelInfo *, const double, const GeometryFlags);
25
+ DEFINE_GVL_VOID_STUB2(ScaleGeometryKernelInfo, KernelInfo *, const char *);
26
+
27
+
13
28
  /**
14
- * If there's a kernel info, delete it before destroying the KernelInfo
29
+ * If there's a kernel info, delete it before destroying the KernelInfo
15
30
  *
16
31
  * No Ruby usage (internal function)
17
32
  *
@@ -25,15 +40,28 @@ rm_kernel_info_destroy(void *kernel)
25
40
  DestroyKernelInfo((KernelInfo*)kernel);
26
41
  }
27
42
 
43
+ /**
44
+ * Get KernelInfo object size.
45
+ *
46
+ * No Ruby usage (internal function)
47
+ *
48
+ * @param ptr pointer to the KernelInfo object
49
+ */
50
+ static size_t
51
+ rm_kernel_info_memsize(const void *ptr)
52
+ {
53
+ return sizeof(KernelInfo);
54
+ }
55
+
28
56
  /**
29
57
  * Create a KernelInfo object.
30
58
  *
31
59
  * @return [Magick::KernelInfo] a new KernelInfo object
32
60
  */
33
61
  VALUE
34
- KernelInfo_alloc(VALUE class)
62
+ KernelInfo_alloc(VALUE klass)
35
63
  {
36
- return Data_Wrap_Struct(class, NULL, rm_kernel_info_destroy, NULL);
64
+ return TypedData_Wrap_Struct(klass, &rm_kernel_info_data_type, NULL);
37
65
  }
38
66
 
39
67
  /**
@@ -89,10 +117,8 @@ KernelInfo_unity_add(VALUE self, VALUE scale)
89
117
  if (!FIXNUM_P(scale))
90
118
  Check_Type(scale, T_FLOAT);
91
119
 
92
- /* UnityAddKernelInfo() was private function until IM 6.9 */
93
- MagickExport void UnityAddKernelInfo(KernelInfo *kernel, const double scale);
94
-
95
- UnityAddKernelInfo((KernelInfo*)DATA_PTR(self), NUM2DBL(scale));
120
+ GVL_STRUCT_TYPE(UnityAddKernelInfo) args = { (KernelInfo*)DATA_PTR(self), NUM2DBL(scale) };
121
+ CALL_FUNC_WITHOUT_GVL(GVL_FUNC(UnityAddKernelInfo), &args);
96
122
  return Qnil;
97
123
  }
98
124
 
@@ -118,10 +144,8 @@ KernelInfo_scale(VALUE self, VALUE scale, VALUE flags)
118
144
  else
119
145
  rb_raise(rb_eArgError, "expected Integer or Magick::GeometryFlags to specify flags");
120
146
 
121
- /* ScaleKernelInfo() was private function until IM 6.9 */
122
- MagickExport void ScaleKernelInfo(KernelInfo *kernel, const double scaling_factor, const GeometryFlags normalize_flags);
123
-
124
- ScaleKernelInfo((KernelInfo*)DATA_PTR(self), NUM2DBL(scale), geoflags);
147
+ GVL_STRUCT_TYPE(ScaleKernelInfo) args = { (KernelInfo*)DATA_PTR(self), NUM2DBL(scale), geoflags };
148
+ CALL_FUNC_WITHOUT_GVL(GVL_FUNC(ScaleKernelInfo), &args);
125
149
  return Qnil;
126
150
  }
127
151
 
@@ -135,7 +159,8 @@ VALUE
135
159
  KernelInfo_scale_geometry(VALUE self, VALUE geometry)
136
160
  {
137
161
  Check_Type(geometry, T_STRING);
138
- ScaleGeometryKernelInfo((KernelInfo*)DATA_PTR(self), StringValueCStr(geometry));
162
+ GVL_STRUCT_TYPE(ScaleGeometryKernelInfo) args = { (KernelInfo*)DATA_PTR(self), StringValueCStr(geometry) };
163
+ CALL_FUNC_WITHOUT_GVL(GVL_FUNC(ScaleGeometryKernelInfo), &args);
139
164
  return Qnil;
140
165
  }
141
166
 
@@ -148,7 +173,7 @@ VALUE
148
173
  KernelInfo_clone(VALUE self)
149
174
  {
150
175
  KernelInfo *kernel = CloneKernelInfo((KernelInfo*)DATA_PTR(self));
151
- return Data_Wrap_Struct(Class_KernelInfo, NULL, rm_kernel_info_destroy, kernel);
176
+ return TypedData_Wrap_Struct(Class_KernelInfo, &rm_kernel_info_data_type, kernel);
152
177
  }
153
178
 
154
179
  /**
@@ -194,5 +219,5 @@ KernelInfo_builtin(VALUE self, VALUE what, VALUE geometry)
194
219
  rb_raise(rb_eRuntimeError, "failed to acquire builtin kernel");
195
220
  }
196
221
 
197
- return Data_Wrap_Struct(self, NULL, rm_kernel_info_destroy, kernel);
222
+ return TypedData_Wrap_Struct(self, &rm_kernel_info_data_type, kernel);
198
223
  }