rmagick 5.5.0 → 6.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.devcontainer/ImageMagick6/devcontainer.json +1 -1
- data/.devcontainer/devcontainer.json +1 -1
- data/.github/workflows/ci.yml +27 -32
- data/.rubocop.yml +39 -9
- data/.rubocop_todo.yml +333 -194
- data/CHANGELOG.md +41 -0
- data/Gemfile +9 -15
- data/README.md +6 -6
- data/Rakefile +27 -12
- data/before_install_linux.sh +1 -11
- data/before_install_osx.sh +9 -7
- data/ext/RMagick/extconf.rb +38 -64
- data/ext/RMagick/rmagick.h +6 -13
- data/ext/RMagick/rmdraw.cpp +0 -10
- data/ext/RMagick/rmimage.cpp +21 -50
- data/ext/RMagick/rmmain.cpp +12 -27
- data/ext/RMagick/rmpixel.cpp +2 -2
- data/ext/RMagick/rmutil.cpp +27 -18
- data/lib/rmagick/version.rb +3 -3
- data/lib/rmagick.rb +1 -1
- data/lib/rmagick_internal.rb +49 -46
- data/lib/rvg/container.rb +3 -3
- data/lib/rvg/embellishable.rb +1 -1
- data/lib/rvg/misc.rb +9 -9
- data/lib/rvg/rvg.rb +4 -6
- data/lib/rvg/stylable.rb +2 -2
- data/lib/rvg/units.rb +1 -0
- data/rmagick.gemspec +5 -2
- data/sig/rmagick/_image_common_methods.rbs +0 -2
- data/sig/rmagick/enum.rbs +6 -0
- data/sig/rmagick/image.rbs +2 -0
- data/sig/rmagick/image_list.rbs +2 -0
- metadata +18 -15
data/ext/RMagick/rmimage.cpp
CHANGED
@@ -288,17 +288,11 @@ DEFINE_GVL_STUB2(WriteImage, const ImageInfo *, Image *);
|
|
288
288
|
DEFINE_GVL_STUB4(GetImageChannelEntropy, const Image *, const ChannelType, double *, ExceptionInfo *);
|
289
289
|
#endif
|
290
290
|
|
291
|
-
#if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9)
|
292
291
|
DEFINE_GVL_STUB3(RotationalBlurImage, const Image *, const double, ExceptionInfo *);
|
293
|
-
#else
|
294
|
-
DEFINE_GVL_STUB3(RadialBlurImage, const Image *, const double, ExceptionInfo *);
|
295
|
-
#endif
|
296
292
|
|
297
293
|
#if defined(IMAGEMAGICK_7)
|
298
|
-
#elif defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9)
|
299
|
-
DEFINE_GVL_STUB4(RotationalBlurImageChannel, const Image *, const ChannelType, const double, ExceptionInfo *);
|
300
294
|
#else
|
301
|
-
DEFINE_GVL_STUB4(
|
295
|
+
DEFINE_GVL_STUB4(RotationalBlurImageChannel, const Image *, const ChannelType, const double, ExceptionInfo *);
|
302
296
|
#endif
|
303
297
|
|
304
298
|
/**
|
@@ -2327,6 +2321,7 @@ Image_capture(int argc, VALUE *argv, VALUE self ATTRIBUTE_UNUSED)
|
|
2327
2321
|
rm_ensure_result(new_image);
|
2328
2322
|
|
2329
2323
|
rm_set_user_artifact(new_image, image_info);
|
2324
|
+
rm_sync_image_options(new_image, image_info);
|
2330
2325
|
|
2331
2326
|
RB_GC_GUARD(info_obj);
|
2332
2327
|
|
@@ -7307,6 +7302,7 @@ Image_from_blob(VALUE klass ATTRIBUTE_UNUSED, VALUE blob_arg)
|
|
7307
7302
|
|
7308
7303
|
rm_ensure_result(images);
|
7309
7304
|
rm_set_user_artifact(images, info);
|
7305
|
+
rm_sync_image_options(images, info);
|
7310
7306
|
|
7311
7307
|
RB_GC_GUARD(info_obj);
|
7312
7308
|
|
@@ -7963,26 +7959,7 @@ Image_gray_q(VALUE self)
|
|
7963
7959
|
#if defined(HAVE_SETIMAGEGRAY)
|
7964
7960
|
return has_attribute(self, (MagickBooleanType (*)(const Image *, ExceptionInfo *))SetImageGray);
|
7965
7961
|
#else
|
7966
|
-
#if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9)
|
7967
7962
|
return has_attribute(self, IsGrayImage);
|
7968
|
-
#else
|
7969
|
-
// For ImageMagick 6.7
|
7970
|
-
Image *image;
|
7971
|
-
ColorspaceType colorspace;
|
7972
|
-
VALUE ret;
|
7973
|
-
|
7974
|
-
image = rm_check_destroyed(self);
|
7975
|
-
colorspace = image->colorspace;
|
7976
|
-
if (image->colorspace == sRGBColorspace || image->colorspace == TransparentColorspace) {
|
7977
|
-
// Workaround
|
7978
|
-
// If image colorspace has non-RGBColorspace, IsGrayImage() always return false.
|
7979
|
-
image->colorspace = RGBColorspace;
|
7980
|
-
}
|
7981
|
-
|
7982
|
-
ret = has_attribute(self, IsGrayImage);
|
7983
|
-
image->colorspace = colorspace;
|
7984
|
-
return ret;
|
7985
|
-
#endif
|
7986
7963
|
#endif
|
7987
7964
|
}
|
7988
7965
|
|
@@ -9931,6 +9908,8 @@ Image_initialize(int argc, VALUE *argv, VALUE self)
|
|
9931
9908
|
CALL_FUNC_WITHOUT_GVL(GVL_FUNC(SetImageExtent), &args);
|
9932
9909
|
#endif
|
9933
9910
|
|
9911
|
+
rm_sync_image_options(image, info);
|
9912
|
+
|
9934
9913
|
// If the caller did not supply a fill argument, call SetImageBackgroundColor
|
9935
9914
|
// to fill the image using the background color. The background color can
|
9936
9915
|
// be set by specifying it when creating the Info parm block.
|
@@ -10671,11 +10650,11 @@ Image_pixel_color(int argc, VALUE *argv, VALUE self)
|
|
10671
10650
|
DestroyExceptionInfo(exception);
|
10672
10651
|
|
10673
10652
|
#if defined(IMAGEMAGICK_7)
|
10674
|
-
old_color.red = GetPixelRed(image, old_pixel);
|
10675
|
-
old_color.green = GetPixelGreen(image, old_pixel);
|
10676
|
-
old_color.blue = GetPixelBlue(image, old_pixel);
|
10677
|
-
old_color.alpha = GetPixelAlpha(image, old_pixel);
|
10678
|
-
old_color.black = GetPixelBlack(image, old_pixel);
|
10653
|
+
old_color.red = GetPixelRed(image, old_pixel) + 0.5;
|
10654
|
+
old_color.green = GetPixelGreen(image, old_pixel) + 0.5;
|
10655
|
+
old_color.blue = GetPixelBlue(image, old_pixel) + 0.5;
|
10656
|
+
old_color.alpha = GetPixelAlpha(image, old_pixel) + 0.5;
|
10657
|
+
old_color.black = GetPixelBlack(image, old_pixel) + 0.5;
|
10679
10658
|
return Pixel_from_PixelPacket(&old_color);
|
10680
10659
|
#else
|
10681
10660
|
old_color = *old_pixel;
|
@@ -10750,11 +10729,11 @@ Image_pixel_color(int argc, VALUE *argv, VALUE self)
|
|
10750
10729
|
if (pixel)
|
10751
10730
|
{
|
10752
10731
|
#if defined(IMAGEMAGICK_7)
|
10753
|
-
old_color.red = GetPixelRed(image, pixel);
|
10754
|
-
old_color.green = GetPixelGreen(image, pixel);
|
10755
|
-
old_color.blue = GetPixelBlue(image, pixel);
|
10756
|
-
old_color.alpha = GetPixelAlpha(image, pixel);
|
10757
|
-
old_color.black = GetPixelBlack(image, pixel);
|
10732
|
+
old_color.red = GetPixelRed(image, pixel) + 0.5;
|
10733
|
+
old_color.green = GetPixelGreen(image, pixel) + 0.5;
|
10734
|
+
old_color.blue = GetPixelBlue(image, pixel) + 0.5;
|
10735
|
+
old_color.alpha = GetPixelAlpha(image, pixel) + 0.5;
|
10736
|
+
old_color.black = GetPixelBlack(image, pixel) + 0.5;
|
10758
10737
|
|
10759
10738
|
SetPixelRed(image, new_color.red, pixel);
|
10760
10739
|
SetPixelGreen(image, new_color.green, pixel);
|
@@ -11185,11 +11164,9 @@ Image_quantum_operator(int argc, VALUE *argv, VALUE self)
|
|
11185
11164
|
case SumQuantumOperator:
|
11186
11165
|
qop = SumEvaluateOperator;
|
11187
11166
|
break;
|
11188
|
-
#if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9)
|
11189
11167
|
case RootMeanSquareQuantumOperator:
|
11190
11168
|
qop = RootMeanSquareEvaluateOperator;
|
11191
11169
|
break;
|
11192
|
-
#endif
|
11193
11170
|
}
|
11194
11171
|
|
11195
11172
|
exception = AcquireExceptionInfo();
|
@@ -11307,15 +11284,9 @@ Image_radial_blur(VALUE self, VALUE angle_obj)
|
|
11307
11284
|
image = rm_check_destroyed(self);
|
11308
11285
|
exception = AcquireExceptionInfo();
|
11309
11286
|
|
11310
|
-
#if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9)
|
11311
11287
|
GVL_STRUCT_TYPE(RotationalBlurImage) args = { image, angle, exception };
|
11312
11288
|
void *ret = CALL_FUNC_WITHOUT_GVL(GVL_FUNC(RotationalBlurImage), &args);
|
11313
11289
|
new_image = reinterpret_cast<decltype(new_image)>(ret);
|
11314
|
-
#else
|
11315
|
-
GVL_STRUCT_TYPE(RadialBlurImage) args = { image, angle, exception };
|
11316
|
-
void *ret = CALL_FUNC_WITHOUT_GVL(GVL_FUNC(RadialBlurImage), &args);
|
11317
|
-
new_image = reinterpret_cast<decltype(new_image)>(ret);
|
11318
|
-
#endif
|
11319
11290
|
rm_check_exception(exception, new_image, DestroyOnError);
|
11320
11291
|
DestroyExceptionInfo(exception);
|
11321
11292
|
|
@@ -11366,12 +11337,9 @@ Image_radial_blur_channel(int argc, VALUE *argv, VALUE self)
|
|
11366
11337
|
new_image = (Image *)CALL_FUNC_WITHOUT_GVL(GVL_FUNC(RotationalBlurImage), &args);
|
11367
11338
|
CHANGE_RESULT_CHANNEL_MASK(new_image);
|
11368
11339
|
END_CHANNEL_MASK(image);
|
11369
|
-
#
|
11340
|
+
#else
|
11370
11341
|
GVL_STRUCT_TYPE(RotationalBlurImageChannel) args = { image, channels, angle, exception };
|
11371
11342
|
new_image = (Image *)CALL_FUNC_WITHOUT_GVL(GVL_FUNC(RotationalBlurImageChannel), &args);
|
11372
|
-
#else
|
11373
|
-
GVL_STRUCT_TYPE(RadialBlurImageChannel) args = { image, channels, angle, exception };
|
11374
|
-
new_image = (Image *)CALL_FUNC_WITHOUT_GVL(GVL_FUNC(RadialBlurImageChannel), &args);
|
11375
11343
|
#endif
|
11376
11344
|
rm_check_exception(exception, new_image, DestroyOnError);
|
11377
11345
|
DestroyExceptionInfo(exception);
|
@@ -11630,9 +11598,11 @@ rd_image(VALUE klass ATTRIBUTE_UNUSED, VALUE file, gvl_function_t fp)
|
|
11630
11598
|
#endif
|
11631
11599
|
|
11632
11600
|
rm_check_exception(exception, images, DestroyOnError);
|
11633
|
-
rm_set_user_artifact(images, info);
|
11634
11601
|
DestroyExceptionInfo(exception);
|
11635
11602
|
|
11603
|
+
rm_set_user_artifact(images, info);
|
11604
|
+
rm_sync_image_options(images, info);
|
11605
|
+
|
11636
11606
|
RB_GC_GUARD(info_obj);
|
11637
11607
|
|
11638
11608
|
return array_from_images(images);
|
@@ -11774,9 +11744,10 @@ Image_read_inline(VALUE self ATTRIBUTE_UNUSED, VALUE content)
|
|
11774
11744
|
magick_free((void *)blob);
|
11775
11745
|
|
11776
11746
|
rm_check_exception(exception, images, DestroyOnError);
|
11777
|
-
|
11778
11747
|
DestroyExceptionInfo(exception);
|
11748
|
+
|
11779
11749
|
rm_set_user_artifact(images, info);
|
11750
|
+
rm_sync_image_options(images, info);
|
11780
11751
|
|
11781
11752
|
RB_GC_GUARD(info_obj);
|
11782
11753
|
|
data/ext/RMagick/rmmain.cpp
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
#define MAIN // Define external variables
|
15
15
|
#include "rmagick.h"
|
16
16
|
|
17
|
-
#if defined(HAVE_SETMAGICKALIGNEDMEMORYMETHODS)
|
17
|
+
#if defined(HAVE_SETMAGICKALIGNEDMEMORYMETHODS)
|
18
18
|
#if defined(HAVE_POSIX_MEMALIGN) || defined(HAVE__ALIGNED_MSIZE)
|
19
19
|
#define USE_RM_ALIGNED_MALLOC 1
|
20
20
|
|
@@ -1019,10 +1019,8 @@ Init_RMagick2(void)
|
|
1019
1019
|
ENUMERATOR(ShapeAlphaChannel)
|
1020
1020
|
ENUMERATOR(TransparentAlphaChannel)
|
1021
1021
|
ENUMERATOR(BackgroundAlphaChannel)
|
1022
|
-
#if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9)
|
1023
1022
|
ENUMERATOR(AssociateAlphaChannel)
|
1024
1023
|
ENUMERATOR(DisassociateAlphaChannel)
|
1025
|
-
#endif
|
1026
1024
|
#if defined(IMAGEMAGICK_7)
|
1027
1025
|
ENUMERATOR(OnAlphaChannel)
|
1028
1026
|
ENUMERATOR(OffAlphaChannel)
|
@@ -1052,7 +1050,12 @@ Init_RMagick2(void)
|
|
1052
1050
|
ENUMERATOR(BlackChannel)
|
1053
1051
|
ENUMERATOR(IndexChannel)
|
1054
1052
|
ENUMERATOR(GrayChannel)
|
1053
|
+
ENUMERATOR(CompositeChannels)
|
1055
1054
|
ENUMERATOR(AllChannels)
|
1055
|
+
ENUMERATOR(TrueAlphaChannel)
|
1056
|
+
ENUMERATOR(RGBChannels)
|
1057
|
+
ENUMERATOR(GrayChannels)
|
1058
|
+
ENUMERATOR(SyncChannels)
|
1056
1059
|
ENUMERATORV(AlphaChannel, OpacityChannel)
|
1057
1060
|
ENUMERATORV(DefaultChannels, 0xff & ~OpacityChannel)
|
1058
1061
|
ENUMERATORV(HueChannel, RedChannel)
|
@@ -1090,7 +1093,6 @@ Init_RMagick2(void)
|
|
1090
1093
|
ENUMERATOR(Rec709YCbCrColorspace)
|
1091
1094
|
ENUMERATOR(LogColorspace)
|
1092
1095
|
ENUMERATOR(CMYColorspace)
|
1093
|
-
#if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9)
|
1094
1096
|
ENUMERATOR(LuvColorspace)
|
1095
1097
|
ENUMERATOR(HCLColorspace)
|
1096
1098
|
ENUMERATOR(LCHColorspace)
|
@@ -1103,7 +1105,6 @@ Init_RMagick2(void)
|
|
1103
1105
|
ENUMERATOR(HCLpColorspace)
|
1104
1106
|
ENUMERATOR(YDbDrColorspace)
|
1105
1107
|
ENUMERATORV(XyYColorspace, xyYColorspace)
|
1106
|
-
#endif
|
1107
1108
|
#if defined(IMAGEMAGICK_7)
|
1108
1109
|
#if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_7_0_8)
|
1109
1110
|
ENUMERATOR(LinearGRAYColorspace)
|
@@ -1196,9 +1197,7 @@ Init_RMagick2(void)
|
|
1196
1197
|
ENUMERATOR(UndefinedCompositeOp)
|
1197
1198
|
ENUMERATOR(VividLightCompositeOp)
|
1198
1199
|
ENUMERATOR(XorCompositeOp)
|
1199
|
-
#if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9)
|
1200
1200
|
ENUMERATOR(HardMixCompositeOp)
|
1201
|
-
#endif
|
1202
1201
|
#if defined(IMAGEMAGICK_7)
|
1203
1202
|
ENUMERATOR(CopyAlphaCompositeOp)
|
1204
1203
|
#else
|
@@ -1242,6 +1241,7 @@ Init_RMagick2(void)
|
|
1242
1241
|
|
1243
1242
|
// DisposeType constants
|
1244
1243
|
DEF_ENUM(DisposeType)
|
1244
|
+
ENUMERATOR(UnrecognizedDispose)
|
1245
1245
|
ENUMERATOR(UndefinedDispose)
|
1246
1246
|
ENUMERATOR(BackgroundDispose)
|
1247
1247
|
ENUMERATOR(NoneDispose)
|
@@ -1318,9 +1318,7 @@ Init_RMagick2(void)
|
|
1318
1318
|
ENUMERATOR(RobidouxSharpFilter)
|
1319
1319
|
ENUMERATOR(CosineFilter)
|
1320
1320
|
ENUMERATOR(SplineFilter)
|
1321
|
-
#if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9)
|
1322
1321
|
ENUMERATOR(LanczosRadiusFilter)
|
1323
|
-
#endif
|
1324
1322
|
ENUMERATORV(WelchFilter, WelshFilter)
|
1325
1323
|
ENUMERATORV(HannFilter, HanningFilter)
|
1326
1324
|
END_ENUM
|
@@ -1412,9 +1410,7 @@ Init_RMagick2(void)
|
|
1412
1410
|
ENUMERATOR(RootMeanSquaredErrorMetric)
|
1413
1411
|
ENUMERATOR(NormalizedCrossCorrelationErrorMetric)
|
1414
1412
|
ENUMERATOR(FuzzErrorMetric)
|
1415
|
-
#if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9)
|
1416
1413
|
ENUMERATOR(PerceptualHashErrorMetric)
|
1417
|
-
#endif
|
1418
1414
|
#if defined(IMAGEMAGICK_7)
|
1419
1415
|
ENUMERATOR(UndefinedErrorMetric)
|
1420
1416
|
ENUMERATOR(MeanErrorPerPixelErrorMetric)
|
@@ -1546,9 +1542,7 @@ Init_RMagick2(void)
|
|
1546
1542
|
ENUMERATOR(ExponentialQuantumOperator)
|
1547
1543
|
ENUMERATOR(MedianQuantumOperator)
|
1548
1544
|
ENUMERATOR(SumQuantumOperator)
|
1549
|
-
#if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9)
|
1550
1545
|
ENUMERATOR(RootMeanSquareQuantumOperator)
|
1551
|
-
#endif
|
1552
1546
|
END_ENUM
|
1553
1547
|
|
1554
1548
|
// RenderingIntent
|
@@ -1673,9 +1667,7 @@ Init_RMagick2(void)
|
|
1673
1667
|
ENUMERATOR(CorrelateNormalizeValue)
|
1674
1668
|
ENUMERATOR(AreaValue)
|
1675
1669
|
ENUMERATOR(DecimalValue)
|
1676
|
-
#if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9)
|
1677
1670
|
ENUMERATOR(SeparatorValue)
|
1678
|
-
#endif
|
1679
1671
|
ENUMERATOR(AllValues)
|
1680
1672
|
END_ENUM
|
1681
1673
|
|
@@ -1744,9 +1736,7 @@ Init_RMagick2(void)
|
|
1744
1736
|
ENUMERATOR(OctagonalKernel)
|
1745
1737
|
ENUMERATOR(EuclideanKernel)
|
1746
1738
|
ENUMERATOR(UserDefinedKernel)
|
1747
|
-
#if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9)
|
1748
1739
|
ENUMERATOR(BinomialKernel)
|
1749
|
-
#endif
|
1750
1740
|
END_ENUM
|
1751
1741
|
|
1752
1742
|
/*-----------------------------------------------------------------------*/
|
@@ -1822,25 +1812,20 @@ Init_RMagick2(void)
|
|
1822
1812
|
* were compiled with.
|
1823
1813
|
*
|
1824
1814
|
* No Ruby usage (internal function)
|
1825
|
-
*
|
1826
|
-
* Notes:
|
1827
|
-
* - Bypass the test by defining the constant RMAGICK_BYPASS_VERSION_TEST to
|
1828
|
-
* 'true' at the top level, before requiring 'rmagick'
|
1829
1815
|
*/
|
1830
1816
|
static void
|
1831
1817
|
test_Magick_version(void)
|
1832
1818
|
{
|
1833
1819
|
size_t version_number;
|
1834
1820
|
const char *version_str;
|
1835
|
-
ID bypass = rb_intern("RMAGICK_BYPASS_VERSION_TEST");
|
1836
1821
|
|
1837
|
-
|
1838
|
-
|
1839
|
-
|
1840
|
-
|
1822
|
+
/* ImageMagick versions are defined as major, minor and patch, each of which are defined as a value in 1 byte. */
|
1823
|
+
/* ImageMagick 6.9.12 has `#define MagickLibVersion 0x69C` */
|
1824
|
+
/* It use only major and minor versions. */
|
1825
|
+
size_t mask_major_minor_version = 0xFFFFFFF0;
|
1841
1826
|
|
1842
1827
|
version_str = GetMagickVersion(&version_number);
|
1843
|
-
if (version_number != MagickLibVersion)
|
1828
|
+
if ((version_number & mask_major_minor_version) != (MagickLibVersion & mask_major_minor_version))
|
1844
1829
|
{
|
1845
1830
|
int n, x;
|
1846
1831
|
|
data/ext/RMagick/rmpixel.cpp
CHANGED
@@ -1191,7 +1191,7 @@ rm_set_magick_pixel_packet(Pixel *pixel, MagickPixel *pp)
|
|
1191
1191
|
/**
|
1192
1192
|
* Return the color name corresponding to the pixel values.
|
1193
1193
|
*
|
1194
|
-
* @overload to_color(compliance = Magick::AllCompliance, alpha = false, depth = Magick::MAGICKCORE_QUANTUM_DEPTH, hex =
|
1194
|
+
* @overload to_color(compliance = Magick::AllCompliance, alpha = false, depth = Magick::MAGICKCORE_QUANTUM_DEPTH, hex = true)
|
1195
1195
|
* @param compliance [Magick::ComplianceType] A ComplianceType constant
|
1196
1196
|
* @param alpha [Boolean] If false, the pixel's alpha attribute is ignored
|
1197
1197
|
* @param depth [Numeric] An image depth
|
@@ -1205,7 +1205,7 @@ Pixel_to_color(int argc, VALUE *argv, VALUE self)
|
|
1205
1205
|
Image *image;
|
1206
1206
|
Pixel *pixel;
|
1207
1207
|
MagickPixel mpp;
|
1208
|
-
MagickBooleanType hex =
|
1208
|
+
MagickBooleanType hex = MagickTrue;
|
1209
1209
|
char name[MaxTextExtent];
|
1210
1210
|
ExceptionInfo *exception;
|
1211
1211
|
ComplianceType compliance = AllCompliance;
|
data/ext/RMagick/rmutil.cpp
CHANGED
@@ -21,6 +21,11 @@
|
|
21
21
|
static VALUE rescue_not_str(VALUE, VALUE ATTRIBUTE_UNUSED) ATTRIBUTE_NORETURN;
|
22
22
|
static void handle_exception(ExceptionInfo *, Image *, ErrorRetention);
|
23
23
|
|
24
|
+
#if defined(IMAGEMAGICK_7)
|
25
|
+
DEFINE_GVL_STUB3(TransformImageColorspace, Image *, const ColorspaceType, ExceptionInfo *);
|
26
|
+
#else
|
27
|
+
DEFINE_GVL_STUB2(TransformImageColorspace, Image *, const ColorspaceType);
|
28
|
+
#endif
|
24
29
|
|
25
30
|
DEFINE_GVL_STUB5(CloneImage, const Image *, const size_t, const size_t, const MagickBooleanType, ExceptionInfo *);
|
26
31
|
|
@@ -367,7 +372,6 @@ double
|
|
367
372
|
rm_percentage2(VALUE arg, double max, bool only_positive)
|
368
373
|
{
|
369
374
|
double pct;
|
370
|
-
char *end;
|
371
375
|
|
372
376
|
if (!rm_check_num2dbl(arg))
|
373
377
|
{
|
@@ -590,23 +594,27 @@ rm_cur_image(VALUE img)
|
|
590
594
|
VALUE
|
591
595
|
rm_pixelcolor_to_color_name(Image *image, PixelColor *color)
|
592
596
|
{
|
593
|
-
|
594
|
-
char
|
595
|
-
ExceptionInfo *exception;
|
597
|
+
MagickPixel mpp;
|
598
|
+
char tuple[MaxTextExtent];
|
596
599
|
|
597
|
-
exception = AcquireExceptionInfo();
|
598
|
-
|
599
|
-
pp = *color;
|
600
600
|
#if defined(IMAGEMAGICK_7)
|
601
|
-
|
602
|
-
|
601
|
+
mpp = *color;
|
602
|
+
mpp.alpha_trait = BlendPixelTrait;
|
603
|
+
mpp.colorspace = image->colorspace;
|
604
|
+
#else
|
605
|
+
rm_init_magickpixel(image, &mpp);
|
606
|
+
mpp.red = GetPixelRed(color);
|
607
|
+
mpp.green = GetPixelGreen(color);
|
608
|
+
mpp.blue = GetPixelBlue(color);
|
609
|
+
mpp.opacity = GetPixelOpacity(color);
|
610
|
+
mpp.index = (MagickRealType) 0.0;
|
611
|
+
mpp.matte = MagickTrue;
|
603
612
|
#endif
|
613
|
+
mpp.depth = image->depth;
|
604
614
|
|
605
|
-
|
606
|
-
CHECK_EXCEPTION();
|
607
|
-
DestroyExceptionInfo(exception);
|
615
|
+
GetColorTuple(&mpp, MagickTrue, tuple);
|
608
616
|
|
609
|
-
return rb_str_new2(
|
617
|
+
return rb_str_new2(tuple);
|
610
618
|
}
|
611
619
|
|
612
620
|
|
@@ -1057,13 +1065,14 @@ void rm_sync_image_options(Image *image, Info *info)
|
|
1057
1065
|
{
|
1058
1066
|
#if defined(IMAGEMAGICK_7)
|
1059
1067
|
exception = AcquireExceptionInfo();
|
1060
|
-
|
1061
|
-
|
1062
|
-
|
1063
|
-
// why the exception is being ignored here.
|
1068
|
+
GVL_STRUCT_TYPE(TransformImageColorspace) args = { image, info->colorspace, exception };
|
1069
|
+
CALL_FUNC_WITHOUT_GVL(GVL_FUNC(TransformImageColorspace), &args);
|
1070
|
+
CHECK_EXCEPTION();
|
1064
1071
|
DestroyExceptionInfo(exception);
|
1065
1072
|
#else
|
1066
|
-
|
1073
|
+
GVL_STRUCT_TYPE(TransformImageColorspace) args = { image, info->colorspace };
|
1074
|
+
CALL_FUNC_WITHOUT_GVL(GVL_FUNC(TransformImageColorspace), &args);
|
1075
|
+
rm_check_image_exception(image, RetainOnError);
|
1067
1076
|
#endif
|
1068
1077
|
}
|
1069
1078
|
|
data/lib/rmagick/version.rb
CHANGED
data/lib/rmagick.rb
CHANGED