rmagick 7.1.5 → 7.1.7
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/CHANGELOG.md +31 -0
- data/ext/RMagick/extconf.rb +14 -14
- data/ext/RMagick/rmagick.cpp +73 -19
- data/ext/RMagick/rmagick.h +2 -7
- data/ext/RMagick/rmdraw.cpp +0 -40
- data/ext/RMagick/rmimage.cpp +96 -77
- data/ext/RMagick/rmkinfo.cpp +84 -16
- data/ext/RMagick/rmmain.cpp +2 -8
- data/ext/RMagick/rmpixel.cpp +0 -42
- data/ext/RMagick/rmstruct.cpp +1 -1
- data/lib/rmagick/version.rb +1 -1
- data/lib/rmagick_internal.rb +7 -13
- data/sig/rmagick/_image_common_methods.rbs +21 -15
- data/sig/rmagick/image.rbs +4 -4
- data/sig/rmagick/image_list.rbs +10 -7
- data/sig/rmagick/kernel_info.rbs +1 -1
- data/sig/rmagick/pixel.rbs +2 -2
- data/sig/rmagick.rbs +1 -0
- data/sig/rvg/embellishable.rbs +2 -2
- metadata +1 -1
data/ext/RMagick/rmkinfo.cpp
CHANGED
|
@@ -82,14 +82,28 @@ KernelInfo_alloc(VALUE klass)
|
|
|
82
82
|
/**
|
|
83
83
|
* KernelInfo object constructor
|
|
84
84
|
*
|
|
85
|
+
* - Calling it again on an initialized object replaces its kernel and destroys the old one.
|
|
86
|
+
* - A kernel string whose first non-blank character is '@' is rejected: ImageMagick would read the
|
|
87
|
+
* kernel from the file it names. A string that contains a %[fx:@...], %[hex:@...] or
|
|
88
|
+
* %[pixel:@...] escape is rejected as well, by the same check as the other options that name files.
|
|
89
|
+
*
|
|
85
90
|
* @param kernel_string [String] kernel info string representation to be parsed
|
|
86
91
|
* @return [Magick::KernelInfo] self
|
|
92
|
+
* @raise [FrozenError] if the object is frozen
|
|
93
|
+
* @raise [ArgumentError] if the kernel string names a file with '@'
|
|
87
94
|
*/
|
|
88
95
|
VALUE
|
|
89
96
|
KernelInfo_initialize(VALUE self, VALUE kernel_string)
|
|
90
97
|
{
|
|
91
|
-
KernelInfo *kernel;
|
|
92
|
-
char *string
|
|
98
|
+
KernelInfo *kernel, *old_kernel;
|
|
99
|
+
char *string;
|
|
100
|
+
|
|
101
|
+
rb_check_frozen(self);
|
|
102
|
+
string = StringValueCStr(kernel_string);
|
|
103
|
+
if (rm_has_file_reference(string))
|
|
104
|
+
{
|
|
105
|
+
rb_raise(rb_eArgError, "the kernel must not name a file with '@'");
|
|
106
|
+
}
|
|
93
107
|
|
|
94
108
|
#if defined(IMAGEMAGICK_7)
|
|
95
109
|
ExceptionInfo *exception;
|
|
@@ -113,7 +127,12 @@ KernelInfo_initialize(VALUE self, VALUE kernel_string)
|
|
|
113
127
|
rb_raise(rb_eRuntimeError, "failed to parse kernel string");
|
|
114
128
|
}
|
|
115
129
|
|
|
130
|
+
old_kernel = (KernelInfo *)DATA_PTR(self);
|
|
116
131
|
DATA_PTR(self) = kernel;
|
|
132
|
+
if (old_kernel)
|
|
133
|
+
{
|
|
134
|
+
DestroyKernelInfo(old_kernel);
|
|
135
|
+
}
|
|
117
136
|
|
|
118
137
|
return self;
|
|
119
138
|
}
|
|
@@ -145,6 +164,24 @@ get_kernel_info(VALUE self)
|
|
|
145
164
|
}
|
|
146
165
|
|
|
147
166
|
|
|
167
|
+
/**
|
|
168
|
+
* Return the KernelInfo struct of an object that is about to be changed,
|
|
169
|
+
* raising FrozenError if the object is frozen.
|
|
170
|
+
*
|
|
171
|
+
* No Ruby usage (internal function)
|
|
172
|
+
*
|
|
173
|
+
* @param self the KernelInfo object
|
|
174
|
+
* @return the KernelInfo struct
|
|
175
|
+
* @throw FrozenError if the object is frozen
|
|
176
|
+
*/
|
|
177
|
+
static KernelInfo *
|
|
178
|
+
get_unfrozen_kernel_info(VALUE self)
|
|
179
|
+
{
|
|
180
|
+
rb_check_frozen(self);
|
|
181
|
+
return get_kernel_info(self);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
|
|
148
185
|
/**
|
|
149
186
|
* Adds a given amount of the 'Unity' Convolution Kernel to the given pre-scaled and normalized Kernel.
|
|
150
187
|
*
|
|
@@ -153,7 +190,7 @@ get_kernel_info(VALUE self)
|
|
|
153
190
|
VALUE
|
|
154
191
|
KernelInfo_unity_add(VALUE self, VALUE scale)
|
|
155
192
|
{
|
|
156
|
-
GVL_STRUCT_TYPE(UnityAddKernelInfo) args = {
|
|
193
|
+
GVL_STRUCT_TYPE(UnityAddKernelInfo) args = { get_unfrozen_kernel_info(self), NUM2DBL(scale) };
|
|
157
194
|
CALL_FUNC_WITHOUT_GVL(GVL_FUNC(UnityAddKernelInfo), &args);
|
|
158
195
|
return Qnil;
|
|
159
196
|
}
|
|
@@ -164,8 +201,10 @@ KernelInfo_unity_add(VALUE self, VALUE scale)
|
|
|
164
201
|
* of the sum of the kernel values (as per given flags).
|
|
165
202
|
*
|
|
166
203
|
* @param scale [Numeric] scale to use
|
|
167
|
-
* @param flags [Magick::GeometryFlags]
|
|
168
|
-
*
|
|
204
|
+
* @param flags [Magick::GeometryFlags] Magick::NoValue, Magick::NormalizeValue or
|
|
205
|
+
* Magick::CorrelateNormalizeValue. ScaleKernelInfo ignores the other values, including
|
|
206
|
+
* Magick::PercentValue; use {KernelInfo#scale_geometry} for a percentage.
|
|
207
|
+
* @return [nil]
|
|
169
208
|
*/
|
|
170
209
|
VALUE
|
|
171
210
|
KernelInfo_scale(VALUE self, VALUE scale, VALUE flags)
|
|
@@ -174,7 +213,7 @@ KernelInfo_scale(VALUE self, VALUE scale, VALUE flags)
|
|
|
174
213
|
|
|
175
214
|
VALUE_TO_ENUM(flags, geoflags, GeometryFlags);
|
|
176
215
|
|
|
177
|
-
GVL_STRUCT_TYPE(ScaleKernelInfo) args = {
|
|
216
|
+
GVL_STRUCT_TYPE(ScaleKernelInfo) args = { get_unfrozen_kernel_info(self), NUM2DBL(scale), geoflags };
|
|
178
217
|
CALL_FUNC_WITHOUT_GVL(GVL_FUNC(ScaleKernelInfo), &args);
|
|
179
218
|
return Qnil;
|
|
180
219
|
}
|
|
@@ -190,7 +229,7 @@ KernelInfo_scale_geometry(VALUE self, VALUE geometry)
|
|
|
190
229
|
{
|
|
191
230
|
char *geom = StringValueCStr(geometry);
|
|
192
231
|
|
|
193
|
-
GVL_STRUCT_TYPE(ScaleGeometryKernelInfo) args = {
|
|
232
|
+
GVL_STRUCT_TYPE(ScaleGeometryKernelInfo) args = { get_unfrozen_kernel_info(self), geom };
|
|
194
233
|
CALL_FUNC_WITHOUT_GVL(GVL_FUNC(ScaleGeometryKernelInfo), &args);
|
|
195
234
|
|
|
196
235
|
RB_GC_GUARD(geometry);
|
|
@@ -199,19 +238,32 @@ KernelInfo_scale_geometry(VALUE self, VALUE geometry)
|
|
|
199
238
|
}
|
|
200
239
|
|
|
201
240
|
/**
|
|
202
|
-
*
|
|
241
|
+
* Initialize a copy made by clone or dup with a copy of the kernel of the original.
|
|
203
242
|
*
|
|
204
|
-
* @
|
|
243
|
+
* @param orig the original object
|
|
244
|
+
* @return [Magick::KernelInfo] self
|
|
245
|
+
* @raise [FrozenError] if the object is frozen
|
|
205
246
|
*/
|
|
206
247
|
VALUE
|
|
207
|
-
|
|
248
|
+
KernelInfo_init_copy(VALUE self, VALUE orig)
|
|
208
249
|
{
|
|
209
|
-
KernelInfo *kernel
|
|
250
|
+
KernelInfo *kernel, *old_kernel;
|
|
251
|
+
|
|
252
|
+
rb_check_frozen(self);
|
|
253
|
+
kernel = CloneKernelInfo(get_kernel_info(orig));
|
|
210
254
|
if (!kernel)
|
|
211
255
|
{
|
|
212
256
|
rb_raise(rb_eNoMemError, "not enough memory to continue");
|
|
213
257
|
}
|
|
214
|
-
|
|
258
|
+
|
|
259
|
+
old_kernel = (KernelInfo *)DATA_PTR(self);
|
|
260
|
+
DATA_PTR(self) = kernel;
|
|
261
|
+
if (old_kernel)
|
|
262
|
+
{
|
|
263
|
+
DestroyKernelInfo(old_kernel);
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
return self;
|
|
215
267
|
}
|
|
216
268
|
|
|
217
269
|
/**
|
|
@@ -219,6 +271,9 @@ KernelInfo_clone(VALUE self)
|
|
|
219
271
|
* kernels used for special purposes such as gaussian blurring, skeleton
|
|
220
272
|
* pruning, and edge distance determination.
|
|
221
273
|
*
|
|
274
|
+
* - The kernel is parsed from "name:geometry" as KernelInfo.new does, so the
|
|
275
|
+
* arguments that are left out get ImageMagick's defaults.
|
|
276
|
+
*
|
|
222
277
|
* @param what [Magick::KernelInfoType] kernel one of Magick::KernelInfoType enums
|
|
223
278
|
* @param geometry [String] geometry to pass to default kernel
|
|
224
279
|
* @return [Magick::KernelInfo] a new KernelInfo object
|
|
@@ -229,21 +284,32 @@ KernelInfo_builtin(VALUE self, VALUE what, VALUE geometry)
|
|
|
229
284
|
KernelInfo *kernel;
|
|
230
285
|
KernelInfoType kernel_type;
|
|
231
286
|
GeometryInfo info;
|
|
232
|
-
const char *geom_str;
|
|
287
|
+
const char *geom_str, *name;
|
|
288
|
+
char kernel_string[MaxTextExtent];
|
|
289
|
+
int length;
|
|
233
290
|
#if defined(IMAGEMAGICK_7)
|
|
234
291
|
ExceptionInfo *exception;
|
|
235
292
|
#endif
|
|
236
293
|
|
|
237
294
|
VALUE_TO_ENUM(what, kernel_type, KernelInfoType);
|
|
238
295
|
geom_str = StringValueCStr(geometry);
|
|
239
|
-
|
|
296
|
+
// AcquireKernelInfo() reads a list of kernels separated by ';'. ParseGeometry() rejects such a
|
|
297
|
+
// string today, but builtin makes one built-in kernel, so reject ';' explicitly as well.
|
|
298
|
+
if ((ParseGeometry(geom_str, &info) == NoValue && *geom_str) || strchr(geom_str, ';'))
|
|
240
299
|
{
|
|
241
300
|
rb_raise(rb_eArgError, "invalid geometry string");
|
|
242
301
|
}
|
|
243
302
|
|
|
303
|
+
name = CommandOptionToMnemonic(MagickKernelOptions, kernel_type);
|
|
304
|
+
length = snprintf(kernel_string, sizeof(kernel_string), "%s:%s", name, geom_str);
|
|
305
|
+
if (length < 0 || (size_t)length >= sizeof(kernel_string))
|
|
306
|
+
{
|
|
307
|
+
rb_raise(rb_eArgError, "geometry string too long");
|
|
308
|
+
}
|
|
309
|
+
|
|
244
310
|
#if defined(IMAGEMAGICK_7)
|
|
245
311
|
exception = AcquireExceptionInfo();
|
|
246
|
-
kernel =
|
|
312
|
+
kernel = AcquireKernelInfo(kernel_string, exception);
|
|
247
313
|
if (rm_should_raise_exception(exception, DestroyExceptionRetention))
|
|
248
314
|
{
|
|
249
315
|
if (kernel != (KernelInfo *) NULL)
|
|
@@ -253,9 +319,11 @@ KernelInfo_builtin(VALUE self, VALUE what, VALUE geometry)
|
|
|
253
319
|
rm_raise_exception(exception);
|
|
254
320
|
}
|
|
255
321
|
#else
|
|
256
|
-
kernel =
|
|
322
|
+
kernel = AcquireKernelInfo(kernel_string);
|
|
257
323
|
#endif
|
|
258
324
|
|
|
325
|
+
RB_GC_GUARD(geometry);
|
|
326
|
+
|
|
259
327
|
if (!kernel)
|
|
260
328
|
{
|
|
261
329
|
rb_raise(rb_eRuntimeError, "failed to acquire builtin kernel");
|
data/ext/RMagick/rmmain.cpp
CHANGED
|
@@ -267,6 +267,7 @@ Init_RMagick2(void)
|
|
|
267
267
|
rb_define_module_function(Module_Magick, "fonts", RUBY_METHOD_FUNC(Magick_fonts), 0);
|
|
268
268
|
rb_define_module_function(Module_Magick, "init_formats", RUBY_METHOD_FUNC(Magick_init_formats), 0);
|
|
269
269
|
rb_define_module_function(Module_Magick, "limit_resource", RUBY_METHOD_FUNC(Magick_limit_resource), -1);
|
|
270
|
+
rb_define_module_function(Module_Magick, "resource_usage", RUBY_METHOD_FUNC(Magick_resource_usage), 1);
|
|
270
271
|
rb_define_module_function(Module_Magick, "set_cache_threshold", RUBY_METHOD_FUNC(Magick_set_cache_threshold), 1);
|
|
271
272
|
rb_define_module_function(Module_Magick, "set_log_event_mask", RUBY_METHOD_FUNC(Magick_set_log_event_mask), -1);
|
|
272
273
|
rb_define_module_function(Module_Magick, "set_log_format", RUBY_METHOD_FUNC(Magick_set_log_format), 1);
|
|
@@ -436,7 +437,6 @@ Init_RMagick2(void)
|
|
|
436
437
|
rb_define_method(Class_Image, "charcoal", RUBY_METHOD_FUNC(Image_charcoal), -1);
|
|
437
438
|
rb_define_method(Class_Image, "chop", RUBY_METHOD_FUNC(Image_chop), 4);
|
|
438
439
|
rb_define_method(Class_Image, "clut_channel", RUBY_METHOD_FUNC(Image_clut_channel), -1);
|
|
439
|
-
rb_define_method(Class_Image, "clone", RUBY_METHOD_FUNC(Image_clone), 0);
|
|
440
440
|
rb_define_method(Class_Image, "color_flood_fill", RUBY_METHOD_FUNC(Image_color_flood_fill), 5);
|
|
441
441
|
rb_define_method(Class_Image, "color_histogram", RUBY_METHOD_FUNC(Image_color_histogram), 0);
|
|
442
442
|
rb_define_method(Class_Image, "colorize", RUBY_METHOD_FUNC(Image_colorize), -1);
|
|
@@ -476,7 +476,6 @@ Init_RMagick2(void)
|
|
|
476
476
|
rb_define_method(Class_Image, "distort", RUBY_METHOD_FUNC(Image_distort), -1);
|
|
477
477
|
rb_define_method(Class_Image, "distortion_channel", RUBY_METHOD_FUNC(Image_distortion_channel), -1);
|
|
478
478
|
rb_define_method(Class_Image, "_dump", RUBY_METHOD_FUNC(Image__dump), 1);
|
|
479
|
-
rb_define_method(Class_Image, "dup", RUBY_METHOD_FUNC(Image_dup), 0);
|
|
480
479
|
rb_define_method(Class_Image, "each_profile", RUBY_METHOD_FUNC(Image_each_profile), 0);
|
|
481
480
|
rb_define_method(Class_Image, "edge", RUBY_METHOD_FUNC(Image_edge), -1);
|
|
482
481
|
rb_define_method(Class_Image, "emboss", RUBY_METHOD_FUNC(Image_emboss), -1);
|
|
@@ -678,10 +677,8 @@ Init_RMagick2(void)
|
|
|
678
677
|
rb_include_module(Class_Draw, Module_DrawAttribute);
|
|
679
678
|
|
|
680
679
|
rb_define_method(Class_Draw, "annotate", RUBY_METHOD_FUNC(Draw_annotate), 6);
|
|
681
|
-
rb_define_method(Class_Draw, "clone", RUBY_METHOD_FUNC(Draw_clone), 0);
|
|
682
680
|
rb_define_method(Class_Draw, "composite", RUBY_METHOD_FUNC(Draw_composite), -1);
|
|
683
681
|
rb_define_method(Class_Draw, "draw", RUBY_METHOD_FUNC(Draw_draw), 1);
|
|
684
|
-
rb_define_method(Class_Draw, "dup", RUBY_METHOD_FUNC(Draw_dup), 0);
|
|
685
682
|
rb_define_method(Class_Draw, "get_type_metrics", RUBY_METHOD_FUNC(Draw_get_type_metrics), -1);
|
|
686
683
|
rb_define_method(Class_Draw, "get_multiline_type_metrics", RUBY_METHOD_FUNC(Draw_get_multiline_type_metrics), -1);
|
|
687
684
|
rb_define_method(Class_Draw, "initialize", RUBY_METHOD_FUNC(Draw_initialize), 0);
|
|
@@ -747,8 +744,6 @@ Init_RMagick2(void)
|
|
|
747
744
|
rb_define_method(Class_Pixel, "eql?", RUBY_METHOD_FUNC(Pixel_eql_q), 1);
|
|
748
745
|
rb_define_method(Class_Pixel, "initialize", RUBY_METHOD_FUNC(Pixel_initialize), -1);
|
|
749
746
|
rb_define_method(Class_Pixel, "initialize_copy", RUBY_METHOD_FUNC(Pixel_init_copy), 1);
|
|
750
|
-
rb_define_method(Class_Pixel, "clone", RUBY_METHOD_FUNC(Pixel_clone), 0);
|
|
751
|
-
rb_define_method(Class_Pixel, "dup", RUBY_METHOD_FUNC(Pixel_dup), 0);
|
|
752
747
|
rb_define_method(Class_Pixel, "fcmp", RUBY_METHOD_FUNC(Pixel_fcmp), -1);
|
|
753
748
|
rb_define_method(Class_Pixel, "hash", RUBY_METHOD_FUNC(Pixel_hash), 0);
|
|
754
749
|
rb_define_method(Class_Pixel, "intensity", RUBY_METHOD_FUNC(Pixel_intensity), 0);
|
|
@@ -907,8 +902,7 @@ Init_RMagick2(void)
|
|
|
907
902
|
rb_define_method(Class_KernelInfo, "unity_add", RUBY_METHOD_FUNC(KernelInfo_unity_add), 1);
|
|
908
903
|
rb_define_method(Class_KernelInfo, "scale", RUBY_METHOD_FUNC(KernelInfo_scale), 2);
|
|
909
904
|
rb_define_method(Class_KernelInfo, "scale_geometry", RUBY_METHOD_FUNC(KernelInfo_scale_geometry), 1);
|
|
910
|
-
rb_define_method(Class_KernelInfo, "
|
|
911
|
-
rb_define_method(Class_KernelInfo, "dup", RUBY_METHOD_FUNC(KernelInfo_clone), 0);
|
|
905
|
+
rb_define_method(Class_KernelInfo, "initialize_copy", RUBY_METHOD_FUNC(KernelInfo_init_copy), 1);
|
|
912
906
|
|
|
913
907
|
rb_define_singleton_method(Class_KernelInfo, "builtin", RUBY_METHOD_FUNC(KernelInfo_builtin), 2);
|
|
914
908
|
|
data/ext/RMagick/rmpixel.cpp
CHANGED
|
@@ -531,50 +531,8 @@ Pixel_case_eq(VALUE self, VALUE other)
|
|
|
531
531
|
}
|
|
532
532
|
|
|
533
533
|
|
|
534
|
-
/**
|
|
535
|
-
* Clone a Pixel.
|
|
536
|
-
*
|
|
537
|
-
* @return [Magick::Pixel] a clone object
|
|
538
|
-
* @see #dup
|
|
539
|
-
* @see #initialize_copy
|
|
540
|
-
*/
|
|
541
|
-
VALUE
|
|
542
|
-
Pixel_clone(VALUE self)
|
|
543
|
-
{
|
|
544
|
-
VALUE clone;
|
|
545
|
-
|
|
546
|
-
clone = Pixel_dup(self);
|
|
547
|
-
if (OBJ_FROZEN(self))
|
|
548
|
-
{
|
|
549
|
-
OBJ_FREEZE(clone);
|
|
550
|
-
}
|
|
551
|
-
|
|
552
|
-
RB_GC_GUARD(clone);
|
|
553
|
-
|
|
554
|
-
return clone;
|
|
555
|
-
}
|
|
556
534
|
|
|
557
535
|
|
|
558
|
-
/**
|
|
559
|
-
* Duplicate a Pixel.
|
|
560
|
-
*
|
|
561
|
-
* @return [Magick::Pixel] a duplicated object
|
|
562
|
-
* @see #clone
|
|
563
|
-
* @see #initialize_copy
|
|
564
|
-
*/
|
|
565
|
-
VALUE
|
|
566
|
-
Pixel_dup(VALUE self)
|
|
567
|
-
{
|
|
568
|
-
Pixel *pixel;
|
|
569
|
-
VALUE dup;
|
|
570
|
-
|
|
571
|
-
pixel = ALLOC(Pixel);
|
|
572
|
-
memset(pixel, '\0', sizeof(Pixel));
|
|
573
|
-
dup = TypedData_Wrap_Struct(CLASS_OF(self), &rm_pixel_data_type, pixel);
|
|
574
|
-
RB_GC_GUARD(dup);
|
|
575
|
-
|
|
576
|
-
return rb_funcall(dup, rm_ID_initialize_copy, 1, self);
|
|
577
|
-
}
|
|
578
536
|
|
|
579
537
|
|
|
580
538
|
/**
|
data/ext/RMagick/rmstruct.cpp
CHANGED
|
@@ -838,7 +838,7 @@ Import_TypeMetric(TypeMetric *tm)
|
|
|
838
838
|
max_advance = rb_float_new(tm->max_advance);
|
|
839
839
|
bounds = Import_SegmentInfo(&tm->bounds);
|
|
840
840
|
underline_position = rb_float_new(tm->underline_position);
|
|
841
|
-
underline_thickness = rb_float_new(tm->
|
|
841
|
+
underline_thickness = rb_float_new(tm->underline_thickness);
|
|
842
842
|
|
|
843
843
|
RB_GC_GUARD(pixels_per_em);
|
|
844
844
|
RB_GC_GUARD(ascent);
|
data/lib/rmagick/version.rb
CHANGED
data/lib/rmagick_internal.rb
CHANGED
|
@@ -1410,12 +1410,6 @@ module Magick
|
|
|
1410
1410
|
@images.clear
|
|
1411
1411
|
end
|
|
1412
1412
|
|
|
1413
|
-
def clone
|
|
1414
|
-
ditto = dup
|
|
1415
|
-
ditto.freeze if frozen?
|
|
1416
|
-
ditto
|
|
1417
|
-
end
|
|
1418
|
-
|
|
1419
1413
|
# override Enumerable#collect
|
|
1420
1414
|
def collect(&)
|
|
1421
1415
|
current = get_current
|
|
@@ -1507,13 +1501,6 @@ module Magick
|
|
|
1507
1501
|
self
|
|
1508
1502
|
end
|
|
1509
1503
|
|
|
1510
|
-
def dup
|
|
1511
|
-
ditto = self.class.new
|
|
1512
|
-
@images.each { |img| ditto << img }
|
|
1513
|
-
ditto.scene = @scene
|
|
1514
|
-
ditto
|
|
1515
|
-
end
|
|
1516
|
-
|
|
1517
1504
|
def eql?(other)
|
|
1518
1505
|
begin
|
|
1519
1506
|
assert_image_array other
|
|
@@ -1570,6 +1557,13 @@ module Magick
|
|
|
1570
1557
|
@scene = length - 1 if length > 0 # last image in array
|
|
1571
1558
|
end
|
|
1572
1559
|
|
|
1560
|
+
# Called by clone and dup, after the instance variables are copied. The copy
|
|
1561
|
+
# has its own array of the same images.
|
|
1562
|
+
def initialize_copy(other)
|
|
1563
|
+
super
|
|
1564
|
+
@images = @images.dup
|
|
1565
|
+
end
|
|
1566
|
+
|
|
1573
1567
|
def insert(index, *args)
|
|
1574
1568
|
args.each { |image| assert_image image }
|
|
1575
1569
|
current = get_current
|
|
@@ -23,8 +23,8 @@ module Magick
|
|
|
23
23
|
def matte_floodfill: (int x, int y) -> Image
|
|
24
24
|
def matte_fill_to_border: (int x, int y) -> Image
|
|
25
25
|
def matte_reset!: () -> Image
|
|
26
|
-
def resize_to_fill: (real ncols, ?real nrows, ?GravityType gravity) -> Image
|
|
27
|
-
def resize_to_fill!: (real ncols, ?real nrows, ?GravityType gravity) ->
|
|
26
|
+
def resize_to_fill: (real ncols, ?real? nrows, ?GravityType gravity) -> Image
|
|
27
|
+
def resize_to_fill!: (real ncols, ?real? nrows, ?GravityType gravity) -> self
|
|
28
28
|
alias crop_resized resize_to_fill
|
|
29
29
|
alias crop_resized! resize_to_fill!
|
|
30
30
|
def resize_to_fit: (magick_real cols, ?magick_real rows) -> Image
|
|
@@ -147,15 +147,16 @@ module Magick
|
|
|
147
147
|
def alpha: () -> bool
|
|
148
148
|
| (AlphaChannelOption value) -> AlphaChannelOption
|
|
149
149
|
def alpha?: () -> bool
|
|
150
|
-
def artifact: (
|
|
150
|
+
def artifact: (interned artifact) -> String?
|
|
151
151
|
def auto_gamma_channel: (*ChannelType channel) -> Image
|
|
152
152
|
def auto_level_channel: (*ChannelType channel) -> Image
|
|
153
153
|
def auto_orient: () -> Image
|
|
154
|
-
def auto_orient!: () -> self
|
|
154
|
+
def auto_orient!: () -> self?
|
|
155
155
|
def properties: () -> Hash[String, String]
|
|
156
156
|
| () { ([String, String]) -> void } -> self
|
|
157
157
|
def bilevel_channel: (magick_real threshold, *ChannelType channel) -> Image
|
|
158
|
-
def black_threshold: (magick_real red, ?magick_real green, ?magick_real blue
|
|
158
|
+
def black_threshold: (magick_real red, ?magick_real green, ?magick_real blue) -> Image
|
|
159
|
+
| (magick_real red, magick_real green, magick_real blue, alpha: int) -> Image
|
|
159
160
|
def blend: (magick_image overlay, magick_percentage src_percent, ?magick_percentage dst_percent, ?GravityType gravity, ?int x_offset, ?int y_offset) -> Image
|
|
160
161
|
| (magick_image overlay, magick_percentage src_percent, magick_percentage dst_percent, ?int x_offset, ?int y_offset) -> Image
|
|
161
162
|
def blue_shift: (?magick_real factor) -> Image
|
|
@@ -180,7 +181,7 @@ module Magick
|
|
|
180
181
|
def charcoal: (?magick_real radius, ?magick_real sigma) -> Image
|
|
181
182
|
def chop: (int x, int y, int width, int height) -> Image
|
|
182
183
|
def clut_channel: (magick_image clut_image, *ChannelType channel) -> self
|
|
183
|
-
def clone: () -> Image
|
|
184
|
+
def clone: (?freeze: bool?) -> Image
|
|
184
185
|
def color_flood_fill: (magick_color target_color, magick_color fill_color, int xv, int yv, PaintMethod method) -> Image
|
|
185
186
|
def color_histogram: () -> Hash[Pixel, Integer]
|
|
186
187
|
def colorize: (magick_real red, magick_real green, magick_real blue, magick_color target) -> Image
|
|
@@ -203,10 +204,13 @@ module Magick
|
|
|
203
204
|
| (magick_image image, magick_real a, magick_real b, magick_real c, magick_real d, int x_off, int y_off) -> Image
|
|
204
205
|
| (magick_image image, magick_real a, magick_real b, magick_real c, magick_real d, GravityType gravity, int x_off, int y_off) -> Image
|
|
205
206
|
def composite_tiled: (magick_image src, ?CompositeOperator composite_op, *ChannelType channel) -> Image
|
|
207
|
+
| (magick_image src, *ChannelType channel) -> Image
|
|
206
208
|
def composite_tiled!: (magick_image src, ?CompositeOperator composite_op, *ChannelType channel) -> self
|
|
209
|
+
| (magick_image src, *ChannelType channel) -> self
|
|
207
210
|
def compress_colormap!: () -> Image
|
|
208
211
|
def contrast: (?bool sharpen) -> Image
|
|
209
|
-
def contrast_stretch_channel: (magick_percentage black_point, magick_percentage white_point, *ChannelType channel) -> Image
|
|
212
|
+
def contrast_stretch_channel: (magick_percentage black_point, ?magick_percentage white_point, *ChannelType channel) -> Image
|
|
213
|
+
| (magick_percentage black_point, *ChannelType channel) -> Image
|
|
210
214
|
def convolve: (int order_arg, Array[magick_real] kernel_arg) -> Image
|
|
211
215
|
def convolve_channel: (int order_arg, Array[magick_real] kernel_arg, *ChannelType channel) -> Image
|
|
212
216
|
def morphology: (MorphologyMethod method_v, int iterations, KernelInfo kernel_v) -> Image
|
|
@@ -220,7 +224,7 @@ module Magick
|
|
|
220
224
|
| (int x, int y, int width, int height, ?bool reset) -> Image
|
|
221
225
|
def cycle_colormap: (int amount) -> Image
|
|
222
226
|
def decipher: (string passphrase) -> Image
|
|
223
|
-
def define: (
|
|
227
|
+
def define: (interned artifact, (string | Numeric)? value) -> String?
|
|
224
228
|
def deskew: (?magick_percentage threshold, ?int auto_crop_width) -> Image
|
|
225
229
|
def delete_compose_mask: () -> self
|
|
226
230
|
def delete_profile: (string name) -> self
|
|
@@ -228,12 +232,13 @@ module Magick
|
|
|
228
232
|
def difference: (magick_image other) -> [Float, Float, Float]
|
|
229
233
|
def dispatch: (int x, int y, int columns, int rows, string map, ?bool float) -> Array[Integer]
|
|
230
234
|
def displace: (magick_image displacement_map, magick_real x_amp, ?magick_real y_amp, ?GravityType gravity, ?int x_offset, ?int y_offset) -> Image
|
|
235
|
+
| (magick_image displacement_map, magick_real x_amp, magick_real y_amp, int x_offset, ?int y_offset) -> Image
|
|
231
236
|
def dissolve: (magick_image overlay, magick_percentage src_percent, ?magick_percentage dst_percent, ?GravityType gravity, ?int x_offset, ?int y_offset) -> Image
|
|
232
237
|
def distort: (DistortMethod method, Array[magick_real] points, ?bool bestfit) -> Image
|
|
233
238
|
def distortion_channel: (magick_image reconstructed_image, MetricType metric, *ChannelType channel) -> Float
|
|
234
239
|
def _dump: (untyped depth) -> String
|
|
235
240
|
def dup: () -> Image
|
|
236
|
-
def each_profile: () { (String
|
|
241
|
+
def each_profile: () { ([String, String?] profile) -> void } -> untyped
|
|
237
242
|
def edge: (?magick_real radius) -> Image
|
|
238
243
|
def emboss: (?magick_real radius, ?magick_real sigma) -> Image
|
|
239
244
|
def encipher: (string passphrase) -> Image
|
|
@@ -246,13 +251,13 @@ module Magick
|
|
|
246
251
|
def export_pixels: (?int x, ?int y, ?int cols, ?int rows, ?string map) -> Array[Integer]
|
|
247
252
|
def export_pixels_to_str: (?int x, ?int y, ?int cols, ?int rows, ?string map, ?StorageType storage_type) -> String
|
|
248
253
|
def extent: (int width, int height, ?int x, ?int y) -> Image
|
|
249
|
-
def find_similar_region: (magick_image target, int x, int y) -> [Integer, Integer]?
|
|
254
|
+
def find_similar_region: (magick_image target, ?int x, ?int y) -> [Integer, Integer]?
|
|
250
255
|
def flip: () -> Image
|
|
251
256
|
def flip!: () -> self
|
|
252
257
|
def flop: () -> Image
|
|
253
258
|
def flop!: () -> self
|
|
254
259
|
def frame: (?int width, ?int height, ?int x, ?int y, ?int inner_bevel, ?int outer_bevel, ?magick_color color) -> Image
|
|
255
|
-
def function_channel: (MagickFunction function,
|
|
260
|
+
def function_channel: (MagickFunction function, *(magick_real | ChannelType) args) -> Image
|
|
256
261
|
def fx: (string expression, *ChannelType channel) -> Image
|
|
257
262
|
def gamma_channel: (magick_real gamma, *ChannelType channel) -> Image
|
|
258
263
|
def gamma_correct: (magick_real red_gamma, ?magick_real green_gamma, ?magick_real blue_gamma) -> Image
|
|
@@ -275,7 +280,7 @@ module Magick
|
|
|
275
280
|
def magnify!: () -> self
|
|
276
281
|
def mask: (?magick_image image) -> Image?
|
|
277
282
|
def matte_flood_fill: (magick_color color, int x_obj, int y_obj, PaintMethod method, alpha: int) -> Image
|
|
278
|
-
def median_filter: (magick_real radius) -> Image
|
|
283
|
+
def median_filter: (?magick_real radius) -> Image
|
|
279
284
|
def minify: () -> Image
|
|
280
285
|
def minify!: () -> self
|
|
281
286
|
def modulate: (?magick_percentage brightness, ?magick_percentage saturation, ?magick_percentage hue) -> Image
|
|
@@ -300,7 +305,7 @@ module Magick
|
|
|
300
305
|
| (?magick_real angle) { (Image::PolaroidOptions) -> void } -> Image
|
|
301
306
|
def posterize: (?int levels, ?bool dither) -> Image
|
|
302
307
|
def preview: (PreviewType preview) -> Image
|
|
303
|
-
def profile!: (string name, ?
|
|
308
|
+
def profile!: (string name, string? profile) -> self
|
|
304
309
|
def quantum_operator: (QuantumExpressionOperator quantum_expression_op, magick_real rvalue, ?ChannelType channel) -> self
|
|
305
310
|
def radial_blur: (magick_real angle) -> Image
|
|
306
311
|
def radial_blur_channel: (magick_real angle, *ChannelType channel) -> Image
|
|
@@ -330,7 +335,7 @@ module Magick
|
|
|
330
335
|
def segment: (?ColorspaceType colorspace, ?magick_real cluster_threshold, ?magick_real smoothing_threshold, ?bool verbose) -> Image
|
|
331
336
|
def selective_blur_channel: (magick_real radius, magick_real sigma, magick_percentage threshold, *ChannelType channel) -> Image
|
|
332
337
|
def separate: (*ChannelType channel) -> ImageList
|
|
333
|
-
def sepiatone: (magick_real threshold) -> Image
|
|
338
|
+
def sepiatone: (?magick_real threshold) -> Image
|
|
334
339
|
def set_channel_depth: (ChannelType channel, int depth) -> self
|
|
335
340
|
def shade: (?bool shading, ?magick_real azimuth, ?magick_real elevation) -> Image
|
|
336
341
|
def shadow: (?int x_offset, ?int y_offset, ?magick_real sigma, ?magick_percentage alpha) -> Image
|
|
@@ -385,6 +390,7 @@ module Magick
|
|
|
385
390
|
| (magick_image mark, magick_percentage brightness, magick_percentage saturation, GravityType gravity, ?int x_off, ?int y_off) -> Image
|
|
386
391
|
def wave: (?magick_real amplitude, ?magick_real wavelength) -> Image
|
|
387
392
|
def wet_floor: (?magick_real initial, ?magick_real rate) -> Image
|
|
388
|
-
def white_threshold: (magick_real red, ?magick_real green, ?magick_real blue
|
|
393
|
+
def white_threshold: (magick_real red, ?magick_real green, ?magick_real blue) -> Image
|
|
394
|
+
| (magick_real red, magick_real green, magick_real blue, alpha: int) -> Image
|
|
389
395
|
end
|
|
390
396
|
end
|
data/sig/rmagick/image.rbs
CHANGED
|
@@ -11,7 +11,7 @@ module Magick
|
|
|
11
11
|
# If define as Array[Image] implies the possibility of returning nil.
|
|
12
12
|
# it would require consideration of nil in subsequent method calls.
|
|
13
13
|
# So, it defined in Tuple type to avoid allowing unnecessary guard statements to be written.
|
|
14
|
-
def self.constitute: (int witdth_arg, int height_arg, string map_arg, Array[
|
|
14
|
+
def self.constitute: (int witdth_arg, int height_arg, string map_arg, Array[Integer] | Array[Float] pixels_arg) -> Image
|
|
15
15
|
def self._load: (string str) -> Image
|
|
16
16
|
def self.capture: (bool silent, bool frame, bool descend, bool screen, bool borders) -> Image
|
|
17
17
|
| (bool silent, bool frame, bool descend, bool screen, bool borders) { (Image::Info) -> void } -> Image
|
|
@@ -24,8 +24,8 @@ module Magick
|
|
|
24
24
|
def self.from_blob: (string blob) -> [Image]
|
|
25
25
|
| (string blob) { (Image::Info) -> void } -> [Image]
|
|
26
26
|
|
|
27
|
-
def initialize: (int cols, int rows, ?magick_fill fill) -> void
|
|
28
|
-
| (int cols, int rows, ?magick_fill fill) { (Image::Info) -> void } -> void
|
|
27
|
+
def initialize: (int cols, int rows, ?magick_fill? fill) -> void
|
|
28
|
+
| (int cols, int rows, ?magick_fill? fill) { (Image::Info) -> void } -> void
|
|
29
29
|
def <=>: (untyped object) -> (Integer | nil)
|
|
30
30
|
def []: (interned key_arg) -> String?
|
|
31
31
|
def []=: (interned key_arg, String attr_arg) -> self
|
|
@@ -35,7 +35,7 @@ module Magick
|
|
|
35
35
|
def marshal_dump: () -> [String, String]
|
|
36
36
|
def marshal_load: ([string, string] ary) -> self
|
|
37
37
|
def montage: () -> String?
|
|
38
|
-
def quantize: (?int number_colors, ?ColorspaceType colorspace, ?bool dither, ?int tree_depth, ?bool measure_error) -> Image
|
|
38
|
+
def quantize: (?int number_colors, ?ColorspaceType colorspace, ?(DitherMethod | bool) dither, ?int tree_depth, ?bool measure_error) -> Image
|
|
39
39
|
def scene: () -> Integer
|
|
40
40
|
def ticks_per_second=: (int tps) -> int
|
|
41
41
|
def to_blob: () -> String?
|
data/sig/rmagick/image_list.rbs
CHANGED
|
@@ -37,7 +37,7 @@ module Magick
|
|
|
37
37
|
def []=: (int nth, magick_image | Array[Image] image) -> void
|
|
38
38
|
| (Range[Integer] range, magick_image | Array[Image] image) -> void
|
|
39
39
|
| (int start, int length, magick_image | Array[Image] image) -> void
|
|
40
|
-
def at: () -> Image
|
|
40
|
+
def at: (int index) -> Image?
|
|
41
41
|
def each: () -> Enumerator[Image, self]
|
|
42
42
|
| () { (Image) -> void } -> void
|
|
43
43
|
def each_index: () -> Enumerator[Integer, self]
|
|
@@ -54,13 +54,14 @@ module Magick
|
|
|
54
54
|
| () { (Image) -> boolish } -> Integer?
|
|
55
55
|
| () -> ::Enumerator[Image, Integer?]
|
|
56
56
|
def length: () -> Integer
|
|
57
|
+
alias size length
|
|
57
58
|
def rindex: (Image | ImageList | Array[Image] obj) -> ::Integer?
|
|
58
59
|
| () { (Image) -> boolish } -> Integer?
|
|
59
60
|
| () -> ::Enumerator[Image, Integer?]
|
|
60
61
|
def sort!: () -> self
|
|
61
62
|
| () { (Image a, Image b) -> Integer } -> self
|
|
62
63
|
def clear: () -> void
|
|
63
|
-
def clone: () -> ImageList
|
|
64
|
+
def clone: (?freeze: bool?) -> ImageList
|
|
64
65
|
| ...
|
|
65
66
|
def collect: () { (Image) -> Image } -> ImageList
|
|
66
67
|
def collect!: () { (Image) -> Image } -> self
|
|
@@ -83,7 +84,7 @@ module Magick
|
|
|
83
84
|
| () -> self
|
|
84
85
|
def dup: () -> ImageList
|
|
85
86
|
| ...
|
|
86
|
-
def eql?: (
|
|
87
|
+
def eql?: (untyped other) -> bool
|
|
87
88
|
def fill: (Image image, ?int start, ?int length) -> ImageList
|
|
88
89
|
| (Image image, Range[Integer] range) -> ImageList
|
|
89
90
|
| (?int start, ?int length) { (Integer index) -> Image } -> ImageList
|
|
@@ -102,8 +103,8 @@ module Magick
|
|
|
102
103
|
def marshal_dump: () -> Array[(Integer | String)?]
|
|
103
104
|
def marshal_load: (Array[(Integer | String)?] ary) -> void
|
|
104
105
|
def method_missing: (untyped meth_id, *untyped args) ?{ (*untyped, **untyped) -> untyped } -> untyped
|
|
105
|
-
def new_image: (int cols, int rows, ?magick_fill fill) -> self
|
|
106
|
-
| (int cols, int rows, ?magick_fill fill) { (Image::Info) -> void } -> self
|
|
106
|
+
def new_image: (int cols, int rows, ?magick_fill? fill) -> self
|
|
107
|
+
| (int cols, int rows, ?magick_fill? fill) { (Image::Info) -> void } -> self
|
|
107
108
|
def partition: () { (Image) -> boolish } -> [ImageList, ImageList]
|
|
108
109
|
def ping: (*(File | string) files) -> self
|
|
109
110
|
| (*(File | string) files) { (Image::Info) -> void } -> self
|
|
@@ -123,8 +124,8 @@ module Magick
|
|
|
123
124
|
| (int start, int length) -> ImageList?
|
|
124
125
|
| (Range[Integer] range) -> ImageList?
|
|
125
126
|
def slice!: (int index) -> Image?
|
|
126
|
-
| (int start, int length) -> Image?
|
|
127
|
-
| (Range[Integer] range) -> Image?
|
|
127
|
+
| (int start, int length) -> Array[Image]?
|
|
128
|
+
| (Range[Integer] range) -> Array[Image]?
|
|
128
129
|
def ticks_per_second=: (int t) -> void
|
|
129
130
|
def to_a: () -> Array[Image]
|
|
130
131
|
def uniq: () -> ImageList
|
|
@@ -132,6 +133,8 @@ module Magick
|
|
|
132
133
|
def unshift: (Image obj) -> self
|
|
133
134
|
def values_at: (*int index) -> ImageList
|
|
134
135
|
| (Range[Integer] range) -> ImageList
|
|
136
|
+
alias indexes values_at
|
|
137
|
+
alias indices values_at
|
|
135
138
|
|
|
136
139
|
alias __display__ display
|
|
137
140
|
def remap: (?magick_image? remap_image, ?DitherMethod dither_method) -> self
|
data/sig/rmagick/kernel_info.rbs
CHANGED
|
@@ -8,7 +8,7 @@ module Magick
|
|
|
8
8
|
def unity_add: (magick_real scale) -> nil
|
|
9
9
|
def scale: (magick_real scale, GeometryFlags flags) -> nil
|
|
10
10
|
def scale_geometry: (string geometry) -> nil
|
|
11
|
-
def clone: () -> KernelInfo
|
|
11
|
+
def clone: (?freeze: bool?) -> KernelInfo
|
|
12
12
|
def dup: () -> KernelInfo
|
|
13
13
|
end
|
|
14
14
|
end
|
data/sig/rmagick/pixel.rbs
CHANGED
|
@@ -28,13 +28,13 @@ module Magick
|
|
|
28
28
|
attr_writer black: real
|
|
29
29
|
|
|
30
30
|
def self.from_color: (string name) -> Pixel
|
|
31
|
-
def self.from_hsla: (magick_percentage hue, magick_percentage saturation, magick_percentage lightness, magick_percentage alpha) -> Pixel
|
|
31
|
+
def self.from_hsla: (magick_percentage hue, magick_percentage saturation, magick_percentage lightness, ?magick_percentage alpha) -> Pixel
|
|
32
32
|
|
|
33
33
|
def <=>: (untyped other) -> (-1 | 0 | 1 | nil)
|
|
34
34
|
def ===: (untyped other) -> bool
|
|
35
35
|
def eql?: (untyped other) -> bool
|
|
36
36
|
def initialize: (?real red, ?real green, ?real blue, ?real opacity) -> void
|
|
37
|
-
def clone: () -> Pixel
|
|
37
|
+
def clone: (?freeze: bool?) -> Pixel
|
|
38
38
|
def dup: () -> Pixel
|
|
39
39
|
def fcmp: (magick_color other, ?magick_real fuzz, ?ColorspaceType colorspace) -> bool
|
|
40
40
|
def hash: () -> Integer
|
data/sig/rmagick.rbs
CHANGED
|
@@ -38,6 +38,7 @@ module Magick
|
|
|
38
38
|
def self.init_formats: () -> Hash[String, String]
|
|
39
39
|
def self.limit_resource: (interned resource) -> Integer
|
|
40
40
|
| (interned resource, int limit) -> Integer
|
|
41
|
+
def self.resource_usage: (interned resource) -> Integer
|
|
41
42
|
def self.set_cache_threshold: (int threshold) -> self
|
|
42
43
|
def self.set_log_event_mask: (*string args) -> self
|
|
43
44
|
def self.set_log_format: (string format) -> self
|
data/sig/rvg/embellishable.rbs
CHANGED
|
@@ -46,7 +46,7 @@ module Magick
|
|
|
46
46
|
# Define an SVG path. The argument can be either a path string
|
|
47
47
|
# or a PathData object.
|
|
48
48
|
# Use the RVG::ShapeConstructors#path method to create Path objects in a container.
|
|
49
|
-
def initialize: (interned path) -> void
|
|
49
|
+
def initialize: (interned | PathData path) -> void
|
|
50
50
|
end
|
|
51
51
|
|
|
52
52
|
class Rect < Shape
|
|
@@ -139,7 +139,7 @@ module Magick
|
|
|
139
139
|
|
|
140
140
|
# Draws a path defined by an SVG path string or a PathData
|
|
141
141
|
# object.
|
|
142
|
-
def path: (interned path) -> Path
|
|
142
|
+
def path: (interned | PathData path) -> Path
|
|
143
143
|
|
|
144
144
|
# Draws a rectangle whose upper-left corner is [<tt>x</tt>, <tt>y</tt>] and
|
|
145
145
|
# with the specified +width+ and +height+. Unless otherwise
|