rmagick 4.2.6 → 5.5.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 +1 -1
- data/.devcontainer/{ImageMagick7/devcontainer.json → devcontainer.json} +2 -2
- data/.devcontainer/setup-user.sh +1 -1
- data/.editorconfig +1 -1
- data/.github/workflows/ci.yml +87 -9
- data/.gitignore +4 -0
- data/.rubocop_todo.yml +16 -9
- data/.yardopts +1 -1
- data/CHANGELOG.md +130 -0
- data/Gemfile +20 -0
- data/README.md +10 -17
- data/Rakefile +63 -80
- data/before_install_linux.sh +3 -3
- data/before_install_osx.sh +6 -5
- data/ext/RMagick/extconf.rb +112 -52
- data/ext/RMagick/{rmagick.c → rmagick.cpp} +19 -22
- data/ext/RMagick/rmagick.h +88 -59
- data/ext/RMagick/rmagick_gvl.h +224 -0
- data/ext/RMagick/{rmdraw.c → rmdraw.cpp} +170 -159
- data/ext/RMagick/{rmenum.c → rmenum.cpp} +69 -50
- data/ext/RMagick/{rmfill.c → rmfill.cpp} +85 -24
- data/ext/RMagick/{rmilist.c → rmilist.cpp} +191 -93
- data/ext/RMagick/{rmimage.c → rmimage.cpp} +1543 -989
- data/ext/RMagick/{rminfo.c → rminfo.cpp} +140 -152
- data/ext/RMagick/{rmkinfo.c → rmkinfo.cpp} +46 -34
- data/ext/RMagick/rmmain.cpp +1923 -0
- data/ext/RMagick/{rmmontage.c → rmmontage.cpp} +50 -29
- data/ext/RMagick/{rmpixel.c → rmpixel.cpp} +108 -83
- data/ext/RMagick/{rmstruct.c → rmstruct.cpp} +6 -6
- data/ext/RMagick/{rmutil.c → rmutil.cpp} +62 -161
- data/lib/rmagick/version.rb +3 -1
- data/lib/rmagick.rb +2 -0
- data/lib/rmagick_internal.rb +76 -110
- data/lib/rvg/embellishable.rb +6 -2
- data/lib/rvg/misc.rb +7 -7
- data/lib/rvg/rvg.rb +2 -0
- data/lib/rvg/stretchable.rb +2 -2
- data/lib/rvg/transformable.rb +1 -1
- data/rmagick.gemspec +4 -13
- data/sig/rmagick/_draw_common_methods.rbs +64 -0
- data/sig/rmagick/_image_common_methods.rbs +389 -0
- data/sig/rmagick/draw.rbs +38 -0
- data/sig/rmagick/draw_attribute.rbs +28 -0
- data/sig/rmagick/enum.rbs +814 -0
- data/sig/rmagick/error.rbs +11 -0
- data/sig/rmagick/fill.rbs +21 -0
- data/sig/rmagick/geometry.rbs +14 -0
- data/sig/rmagick/image.rbs +194 -0
- data/sig/rmagick/image_list.rbs +181 -0
- data/sig/rmagick/iptc.rbs +101 -0
- data/sig/rmagick/kernel_info.rbs +12 -0
- data/sig/rmagick/optional_method_arguments.rbs +10 -0
- data/sig/rmagick/pixel.rbs +46 -0
- data/sig/rmagick/struct.rbs +90 -0
- data/sig/rmagick.rbs +43 -0
- data/sig/rvg/clippath.rbs +34 -0
- data/sig/rvg/container.rbs +78 -0
- data/sig/rvg/deep_equal.rbs +48 -0
- data/sig/rvg/describable.rbs +30 -0
- data/sig/rvg/embellishable.rbs +226 -0
- data/sig/rvg/misc.rbs +145 -0
- data/sig/rvg/paint.rbs +55 -0
- data/sig/rvg/pathdata.rbs +77 -0
- data/sig/rvg/rvg.rbs +125 -0
- data/sig/rvg/stretchable.rbs +56 -0
- data/sig/rvg/stylable.rbs +66 -0
- data/sig/rvg/text.rbs +118 -0
- data/sig/rvg/transformable.rbs +59 -0
- data/sig/rvg/units.rbs +33 -0
- metadata +59 -129
- data/.codeclimate.yml +0 -63
- data/deprecated/RMagick.rb +0 -6
- data/ext/RMagick/rmmain.c +0 -1951
@@ -5,15 +5,22 @@
|
|
5
5
|
*
|
6
6
|
* Changes since Nov. 2009 copyright © by Benjamin Thomas and Omer Bar-or
|
7
7
|
*
|
8
|
-
* @file rmmontage.
|
9
|
-
* @version $Id: rmmontage.
|
8
|
+
* @file rmmontage.cpp
|
9
|
+
* @version $Id: rmmontage.cpp,v 1.5 2009/12/20 02:33:33 baror Exp $
|
10
10
|
* @author Tim Hunter
|
11
11
|
******************************************************************************/
|
12
12
|
|
13
13
|
#include "rmagick.h"
|
14
14
|
|
15
|
+
static void Montage_destroy(void *obj);
|
16
|
+
static size_t Montage_memsize(const void *obj);
|
15
17
|
|
16
|
-
|
18
|
+
const rb_data_type_t rm_montage_data_type = {
|
19
|
+
"Magick::ImageList::Montage",
|
20
|
+
{ NULL, Montage_destroy, Montage_memsize, },
|
21
|
+
0, 0,
|
22
|
+
RUBY_TYPED_FROZEN_SHAREABLE,
|
23
|
+
};
|
17
24
|
|
18
25
|
|
19
26
|
/**
|
@@ -28,9 +35,9 @@
|
|
28
35
|
* @param obj the montage object
|
29
36
|
*/
|
30
37
|
static void
|
31
|
-
|
38
|
+
Montage_destroy(void *obj)
|
32
39
|
{
|
33
|
-
Montage *montage = obj;
|
40
|
+
Montage *montage = (Montage *)obj;
|
34
41
|
|
35
42
|
// If we saved a temporary texture image, delete it now.
|
36
43
|
if (montage->info && montage->info->texture != NULL)
|
@@ -48,13 +55,27 @@ destroy_Montage(void *obj)
|
|
48
55
|
}
|
49
56
|
|
50
57
|
|
58
|
+
/**
|
59
|
+
* Get Montage object size.
|
60
|
+
*
|
61
|
+
* No Ruby usage (internal function)
|
62
|
+
*
|
63
|
+
* @param ptr pointer to the Montage object
|
64
|
+
*/
|
65
|
+
static size_t
|
66
|
+
Montage_memsize(const void *ptr)
|
67
|
+
{
|
68
|
+
return sizeof(Montage);
|
69
|
+
}
|
70
|
+
|
71
|
+
|
51
72
|
/**
|
52
73
|
* Create a new Montage object.
|
53
74
|
*
|
54
75
|
* @return [Magick::ImageList::Montage] a new Montage object
|
55
76
|
*/
|
56
77
|
VALUE
|
57
|
-
Montage_alloc(VALUE
|
78
|
+
Montage_alloc(VALUE klass)
|
58
79
|
{
|
59
80
|
MontageInfo *montage_info;
|
60
81
|
Montage *montage;
|
@@ -79,7 +100,7 @@ Montage_alloc(VALUE class)
|
|
79
100
|
montage = ALLOC(Montage);
|
80
101
|
montage->info = montage_info;
|
81
102
|
montage->compose = OverCompositeOp;
|
82
|
-
montage_obj =
|
103
|
+
montage_obj = TypedData_Wrap_Struct(klass, &rm_montage_data_type, montage);
|
83
104
|
|
84
105
|
RB_GC_GUARD(montage_obj);
|
85
106
|
|
@@ -98,7 +119,7 @@ Montage_background_color_eq(VALUE self, VALUE color)
|
|
98
119
|
{
|
99
120
|
Montage *montage;
|
100
121
|
|
101
|
-
|
122
|
+
TypedData_Get_Struct(self, Montage, &rm_montage_data_type, montage);
|
102
123
|
Color_to_PixelColor(&montage->info->background_color, color);
|
103
124
|
return color;
|
104
125
|
}
|
@@ -115,7 +136,7 @@ Montage_border_color_eq(VALUE self, VALUE color)
|
|
115
136
|
{
|
116
137
|
Montage *montage;
|
117
138
|
|
118
|
-
|
139
|
+
TypedData_Get_Struct(self, Montage, &rm_montage_data_type, montage);
|
119
140
|
Color_to_PixelColor(&montage->info->border_color, color);
|
120
141
|
return color;
|
121
142
|
}
|
@@ -132,7 +153,7 @@ Montage_border_width_eq(VALUE self, VALUE width)
|
|
132
153
|
{
|
133
154
|
Montage *montage;
|
134
155
|
|
135
|
-
|
156
|
+
TypedData_Get_Struct(self, Montage, &rm_montage_data_type, montage);
|
136
157
|
montage->info->border_width = NUM2ULONG(width);
|
137
158
|
return width;
|
138
159
|
}
|
@@ -149,7 +170,7 @@ Montage_compose_eq(VALUE self, VALUE compose)
|
|
149
170
|
{
|
150
171
|
Montage *montage;
|
151
172
|
|
152
|
-
|
173
|
+
TypedData_Get_Struct(self, Montage, &rm_montage_data_type, montage);
|
153
174
|
VALUE_TO_ENUM(compose, montage->compose, CompositeOperator);
|
154
175
|
return compose;
|
155
176
|
}
|
@@ -166,7 +187,7 @@ Montage_filename_eq(VALUE self, VALUE filename)
|
|
166
187
|
{
|
167
188
|
Montage *montage;
|
168
189
|
|
169
|
-
|
190
|
+
TypedData_Get_Struct(self, Montage, &rm_montage_data_type, montage);
|
170
191
|
strlcpy(montage->info->filename, StringValueCStr(filename), sizeof(montage->info->filename));
|
171
192
|
return filename;
|
172
193
|
}
|
@@ -183,7 +204,7 @@ Montage_fill_eq(VALUE self, VALUE color)
|
|
183
204
|
{
|
184
205
|
Montage *montage;
|
185
206
|
|
186
|
-
|
207
|
+
TypedData_Get_Struct(self, Montage, &rm_montage_data_type, montage);
|
187
208
|
Color_to_PixelColor(&montage->info->fill, color);
|
188
209
|
return color;
|
189
210
|
}
|
@@ -200,7 +221,7 @@ Montage_font_eq(VALUE self, VALUE font)
|
|
200
221
|
{
|
201
222
|
Montage *montage;
|
202
223
|
|
203
|
-
|
224
|
+
TypedData_Get_Struct(self, Montage, &rm_montage_data_type, montage);
|
204
225
|
magick_clone_string(&montage->info->font, StringValueCStr(font));
|
205
226
|
|
206
227
|
return font;
|
@@ -214,7 +235,7 @@ Montage_font_eq(VALUE self, VALUE font)
|
|
214
235
|
* <width>x<height>+<outer-bevel-width>+<inner-bevel-width>
|
215
236
|
* or a Geometry object
|
216
237
|
*
|
217
|
-
* @param frame_arg [String] the frame geometry
|
238
|
+
* @param frame_arg [Magick::Geometry, String] the frame geometry
|
218
239
|
* @see https://www.imagemagick.org/Magick++/Geometry.html
|
219
240
|
*/
|
220
241
|
VALUE
|
@@ -223,7 +244,7 @@ Montage_frame_eq(VALUE self, VALUE frame_arg)
|
|
223
244
|
Montage *montage;
|
224
245
|
VALUE frame;
|
225
246
|
|
226
|
-
|
247
|
+
TypedData_Get_Struct(self, Montage, &rm_montage_data_type, montage);
|
227
248
|
frame = rb_String(frame_arg);
|
228
249
|
magick_clone_string(&montage->info->frame, StringValueCStr(frame));
|
229
250
|
|
@@ -240,8 +261,8 @@ Montage_frame_eq(VALUE self, VALUE frame_arg)
|
|
240
261
|
* <width>x<height>+<outer-bevel-width>+<inner-bevel-width>
|
241
262
|
* or a Geometry object
|
242
263
|
*
|
243
|
-
* @param geometry_arg [String] the geometry
|
244
|
-
* @return [String] the given geometry
|
264
|
+
* @param geometry_arg [Magick::Geometry, String] the geometry
|
265
|
+
* @return [Magick::Geometry, String] the given geometry
|
245
266
|
* @see https://www.imagemagick.org/Magick++/Geometry.html
|
246
267
|
*/
|
247
268
|
VALUE
|
@@ -250,7 +271,7 @@ Montage_geometry_eq(VALUE self, VALUE geometry_arg)
|
|
250
271
|
Montage *montage;
|
251
272
|
VALUE geometry;
|
252
273
|
|
253
|
-
|
274
|
+
TypedData_Get_Struct(self, Montage, &rm_montage_data_type, montage);
|
254
275
|
geometry = rb_String(geometry_arg);
|
255
276
|
magick_clone_string(&montage->info->geometry, StringValueCStr(geometry));
|
256
277
|
|
@@ -271,7 +292,7 @@ Montage_gravity_eq(VALUE self, VALUE gravity)
|
|
271
292
|
{
|
272
293
|
Montage *montage;
|
273
294
|
|
274
|
-
|
295
|
+
TypedData_Get_Struct(self, Montage, &rm_montage_data_type, montage);
|
275
296
|
VALUE_TO_ENUM(gravity, montage->info->gravity, GravityType);
|
276
297
|
return gravity;
|
277
298
|
}
|
@@ -301,7 +322,7 @@ Montage_matte_color_eq(VALUE self, VALUE color)
|
|
301
322
|
{
|
302
323
|
Montage *montage;
|
303
324
|
|
304
|
-
|
325
|
+
TypedData_Get_Struct(self, Montage, &rm_montage_data_type, montage);
|
305
326
|
Color_to_PixelColor(&montage->info->matte_color, color);
|
306
327
|
return color;
|
307
328
|
}
|
@@ -318,7 +339,7 @@ Montage_pointsize_eq(VALUE self, VALUE size)
|
|
318
339
|
{
|
319
340
|
Montage *montage;
|
320
341
|
|
321
|
-
|
342
|
+
TypedData_Get_Struct(self, Montage, &rm_montage_data_type, montage);
|
322
343
|
montage->info->pointsize = NUM2DBL(size);
|
323
344
|
return size;
|
324
345
|
}
|
@@ -335,7 +356,7 @@ Montage_shadow_eq(VALUE self, VALUE shadow)
|
|
335
356
|
{
|
336
357
|
Montage *montage;
|
337
358
|
|
338
|
-
|
359
|
+
TypedData_Get_Struct(self, Montage, &rm_montage_data_type, montage);
|
339
360
|
montage->info->shadow = (MagickBooleanType) RTEST(shadow);
|
340
361
|
return shadow;
|
341
362
|
}
|
@@ -352,7 +373,7 @@ Montage_stroke_eq(VALUE self, VALUE color)
|
|
352
373
|
{
|
353
374
|
Montage *montage;
|
354
375
|
|
355
|
-
|
376
|
+
TypedData_Get_Struct(self, Montage, &rm_montage_data_type, montage);
|
356
377
|
Color_to_PixelColor(&montage->info->stroke, color);
|
357
378
|
return color;
|
358
379
|
}
|
@@ -372,7 +393,7 @@ Montage_texture_eq(VALUE self, VALUE texture)
|
|
372
393
|
Image *texture_image;
|
373
394
|
char temp_name[MaxTextExtent];
|
374
395
|
|
375
|
-
|
396
|
+
TypedData_Get_Struct(self, Montage, &rm_montage_data_type, montage);
|
376
397
|
|
377
398
|
// If we had a previously defined temp texture image,
|
378
399
|
// remove it now in preparation for this new one.
|
@@ -401,8 +422,8 @@ Montage_texture_eq(VALUE self, VALUE texture)
|
|
401
422
|
* <width>x<height>+<outer-bevel-width>+<inner-bevel-width>
|
402
423
|
* or a Geometry object
|
403
424
|
*
|
404
|
-
* @param tile_arg [String] the tile geometry
|
405
|
-
* @return [String] the given tile geometry
|
425
|
+
* @param tile_arg [Magick::Geometry, String] the tile geometry
|
426
|
+
* @return [Magick::Geometry, String] the given tile geometry
|
406
427
|
* @see https://www.imagemagick.org/Magick++/Geometry.html
|
407
428
|
*/
|
408
429
|
VALUE
|
@@ -411,7 +432,7 @@ Montage_tile_eq(VALUE self, VALUE tile_arg)
|
|
411
432
|
Montage *montage;
|
412
433
|
VALUE tile;
|
413
434
|
|
414
|
-
|
435
|
+
TypedData_Get_Struct(self, Montage, &rm_montage_data_type, montage);
|
415
436
|
tile = rb_String(tile_arg);
|
416
437
|
magick_clone_string(&montage->info->tile, StringValueCStr(tile));
|
417
438
|
|
@@ -432,7 +453,7 @@ Montage_title_eq(VALUE self, VALUE title)
|
|
432
453
|
{
|
433
454
|
Montage *montage;
|
434
455
|
|
435
|
-
|
456
|
+
TypedData_Get_Struct(self, Montage, &rm_montage_data_type, montage);
|
436
457
|
magick_clone_string(&montage->info->title, StringValueCStr(title));
|
437
458
|
return title;
|
438
459
|
}
|