rmagick 5.3.0 → 5.4.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.
@@ -16,15 +16,21 @@
16
16
  //! Suppress warnings about deprecated functions on Windows
17
17
  #define _CRT_SECURE_NO_DEPRECATE 1
18
18
 
19
- #include <assert.h>
20
- #include <stdio.h>
21
- #include <ctype.h>
22
- #include <stdlib.h>
23
- #include <math.h>
24
- #include <sys/types.h>
25
- #include "ruby.h"
26
- #include "ruby/io.h"
27
- #include "rmagick_gvl.h"
19
+ // ruby.h contains a C++ template, which cannot be included in extern "C".
20
+ // Therefore, it includes the header in advance.
21
+ #include "ruby/defines.h"
22
+
23
+ extern "C" {
24
+ #include <assert.h>
25
+ #include <stdio.h>
26
+ #include <ctype.h>
27
+ #include <stdlib.h>
28
+ #include <math.h>
29
+ #include <sys/types.h>
30
+ #include "ruby.h"
31
+ #include "ruby/io.h"
32
+ #include "rmagick_gvl.h"
33
+ }
28
34
 
29
35
  #if defined(__MINGW32__)
30
36
  // Ruby defines wrong format specifiers for MinGW. So this defines original macro in here.
@@ -45,10 +51,6 @@
45
51
  #endif
46
52
 
47
53
  #if defined(__GNUC__)
48
- #pragma GCC diagnostic push
49
- #pragma GCC diagnostic ignored "-Wdeclaration-after-statement"
50
- #pragma GCC diagnostic ignored "-Wunknown-pragmas"
51
-
52
54
  #if __GNUC__ > 6
53
55
  #pragma GCC diagnostic ignored "-Wimplicit-fallthrough"
54
56
  #endif
@@ -316,7 +318,7 @@ typedef enum _QuantumExpressionOperator
316
318
 
317
319
 
318
320
  /** This implements the "omitted storage class model" for external variables.
319
- * (Ref: Harbison & Steele.) The rmmain.c file defines MAIN, which causes
321
+ * (Ref: Harbison & Steele.) The rmmain.cpp file defines MAIN, which causes
320
322
  * the single defining declarations to be generated. No other source files
321
323
  * define MAIN and therefore generate referencing declarations.
322
324
  */
@@ -442,7 +444,7 @@ extern const rb_data_type_t rm_kernel_info_data_type;
442
444
  Define simple attribute accessor methods (boolean, int, string, and double types)
443
445
  */
444
446
  #define C_boolean_to_R_boolean(attr) (attr) ? Qtrue : Qfalse /**< C boolean -> Ruby boolean */
445
- #define R_boolean_to_C_boolean(attr) RTEST(attr) /**< C boolean <- Ruby boolean */
447
+ #define R_boolean_to_C_boolean(attr) (MagickBooleanType)RTEST(attr) /**< C boolean <- Ruby boolean */
446
448
  #define C_int_to_R_int(attr) INT2FIX(attr) /**< C int -> Ruby int */
447
449
  #define R_int_to_C_int(attr) NUM2INT(attr) /**< C int <- Ruby int */
448
450
  #define C_long_to_R_long(attr) LONG2NUM(attr) /**< C long -> Ruby long */
@@ -454,47 +456,47 @@ extern const rb_data_type_t rm_kernel_info_data_type;
454
456
  #define R_dbl_to_C_dbl(attr) NUM2DBL(attr) /**< C double <- Ruby double */
455
457
 
456
458
  //! define attribute reader
457
- #define IMPLEMENT_TYPED_ATTR_READER(class, attr, type, data_type) \
459
+ #define IMPLEMENT_TYPED_ATTR_READER(klass, attr, type, data_type) \
458
460
  {\
459
- class *ptr;\
461
+ klass *ptr;\
460
462
  if (rb_obj_is_kind_of(self, Class_Image) == Qtrue) {\
461
463
  rm_check_destroyed(self); \
462
464
  }\
463
- TypedData_Get_Struct(self, class, data_type, ptr);\
465
+ TypedData_Get_Struct(self, klass, data_type, ptr);\
464
466
  return C_##type##_to_R_##type(ptr->attr);\
465
467
  }
466
468
 
467
469
  //! define attribute reader when attribute name is different from the field name
468
- #define IMPLEMENT_TYPED_ATTR_READERF(class, attr, field, type, data_type) \
470
+ #define IMPLEMENT_TYPED_ATTR_READERF(klass, attr, field, type, data_type) \
469
471
  {\
470
- class *ptr;\
472
+ klass *ptr;\
471
473
  rm_check_destroyed(self); \
472
- TypedData_Get_Struct(self, class, data_type, ptr);\
474
+ TypedData_Get_Struct(self, klass, data_type, ptr);\
473
475
  return C_##type##_to_R_##type(ptr->field);\
474
476
  }
475
477
 
476
478
  //! define attribute writer
477
- #define IMPLEMENT_TYPED_ATTR_WRITER(class, attr, type, data_type) \
479
+ #define IMPLEMENT_TYPED_ATTR_WRITER(klass, attr, type, data_type) \
478
480
  {\
479
- class *ptr;\
481
+ klass *ptr;\
480
482
  if (rb_obj_is_kind_of(self, Class_Image) == Qtrue) {\
481
483
  rm_check_destroyed(self); \
482
484
  }\
483
485
  rb_check_frozen(self);\
484
- TypedData_Get_Struct(self, class, data_type, ptr);\
486
+ TypedData_Get_Struct(self, klass, data_type, ptr);\
485
487
  ptr->attr = R_##type##_to_C_##type(val);\
486
488
  return val;\
487
489
  }
488
490
 
489
491
  //! define attribute writer when attribute name is different from the field name
490
- #define IMPLEMENT_TYPED_ATTR_WRITERF(class, attr, field, type, data_type) \
492
+ #define IMPLEMENT_TYPED_ATTR_WRITERF(klass, attr, field, type, data_type) \
491
493
  {\
492
- class *ptr;\
494
+ klass *ptr;\
493
495
  if (rb_obj_is_kind_of(self, Class_Image) == Qtrue) {\
494
496
  rm_check_destroyed(self); \
495
497
  }\
496
498
  rb_check_frozen(self);\
497
- TypedData_Get_Struct(self, class, data_type, ptr);\
499
+ TypedData_Get_Struct(self, klass, data_type, ptr);\
498
500
  ptr->field = R_##type##_to_C_##type(val);\
499
501
  return self;\
500
502
  }
@@ -504,15 +506,15 @@ extern const rb_data_type_t rm_kernel_info_data_type;
504
506
  * Declare attribute accessors
505
507
  */
506
508
  //! declare attribute reader
507
- #define ATTR_READER(class, attr) \
508
- extern VALUE class##_##attr(VALUE);
509
+ #define ATTR_READER(klass, attr) \
510
+ extern VALUE klass##_##attr(VALUE);
509
511
  //! declare attribute writer
510
- #define ATTR_WRITER(class, attr) \
511
- extern VALUE class##_##attr##_eq(VALUE, VALUE);
512
+ #define ATTR_WRITER(klass, attr) \
513
+ extern VALUE klass##_##attr##_eq(VALUE, VALUE);
512
514
  //! declare attribute accessor
513
- #define ATTR_ACCESSOR(class, attr) \
514
- ATTR_READER(class, attr)\
515
- ATTR_WRITER(class, attr)
515
+ #define ATTR_ACCESSOR(klass, attr) \
516
+ ATTR_READER(klass, attr)\
517
+ ATTR_WRITER(klass, attr)
516
518
 
517
519
 
518
520
  //! Define a Magick module constant
@@ -544,11 +546,13 @@ extern const rb_data_type_t rm_kernel_info_data_type;
544
546
  // the same source file.
545
547
 
546
548
 
547
- // rmmain.c
549
+ extern "C" {
550
+
551
+ // rmmain.cpp
548
552
  extern void Init_RMagick2(void);
549
553
 
550
554
 
551
- // rmagick.c
555
+ // rmagick.cpp
552
556
  extern VALUE Magick_colors(VALUE);
553
557
  extern VALUE Magick_fonts(VALUE);
554
558
  extern VALUE Magick_init_formats(VALUE);
@@ -557,7 +561,7 @@ extern VALUE Magick_set_cache_threshold(VALUE, VALUE);
557
561
  extern VALUE Magick_set_log_event_mask(int, VALUE *, VALUE);
558
562
  extern VALUE Magick_set_log_format(VALUE, VALUE);
559
563
 
560
- // rmdraw.c
564
+ // rmdraw.cpp
561
565
  ATTR_WRITER(Draw, affine)
562
566
  ATTR_WRITER(Draw, align)
563
567
  ATTR_WRITER(Draw, border_color)
@@ -608,7 +612,7 @@ ATTR_WRITER(PolaroidOptions, shadow_color);
608
612
  ATTR_WRITER(PolaroidOptions, border_color);
609
613
 
610
614
 
611
- // rmmontage.c
615
+ // rmmontage.cpp
612
616
  ATTR_WRITER(Montage, background_color)
613
617
  ATTR_WRITER(Montage, border_color)
614
618
  ATTR_WRITER(Montage, border_width)
@@ -631,7 +635,7 @@ extern VALUE Montage_alloc(VALUE);
631
635
  extern VALUE rm_montage_new(void);
632
636
 
633
637
 
634
- // rmilist.c
638
+ // rmilist.cpp
635
639
  extern VALUE ImageList_animate(int, VALUE *, VALUE);
636
640
  extern VALUE ImageList_append(VALUE, VALUE);
637
641
  extern VALUE ImageList_average(VALUE);
@@ -653,7 +657,7 @@ extern VALUE ImageList_write(VALUE, VALUE);
653
657
  extern VALUE rm_imagelist_from_images(Image *);
654
658
 
655
659
 
656
- // rminfo.c
660
+ // rminfo.cpp
657
661
  ATTR_ACCESSOR(Info, antialias)
658
662
  ATTR_ACCESSOR(Info, attenuate)
659
663
  ATTR_ACCESSOR(Info, authenticate)
@@ -715,7 +719,7 @@ extern VALUE rm_info_new(void);
715
719
  extern DisposeType rm_dispose_to_enum(const char *);
716
720
  extern GravityType rm_gravity_to_enum(const char *);
717
721
 
718
- // rmkinfo.c
722
+ // rmkinfo.cpp
719
723
 
720
724
  extern VALUE KernelInfo_alloc(VALUE);
721
725
 
@@ -728,7 +732,7 @@ extern VALUE KernelInfo_clone(VALUE);
728
732
  extern VALUE KernelInfo_builtin(VALUE, VALUE, VALUE);
729
733
 
730
734
 
731
- // rmimage.c
735
+ // rmimage.cpp
732
736
  ATTR_ACCESSOR(Image, background_color)
733
737
  ATTR_READER(Image, base_columns)
734
738
  ATTR_READER(Image, base_filename)
@@ -1031,7 +1035,7 @@ extern VALUE rm_image_new(Image *);
1031
1035
  extern void rm_image_destroy(void *);
1032
1036
 
1033
1037
 
1034
- // rmfill.c
1038
+ // rmfill.cpp
1035
1039
  extern VALUE GradientFill_alloc(VALUE);
1036
1040
  extern VALUE GradientFill_initialize(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
1037
1041
  extern VALUE GradientFill_fill(VALUE, VALUE);
@@ -1041,7 +1045,7 @@ extern VALUE TextureFill_initialize(VALUE, VALUE);
1041
1045
  extern VALUE TextureFill_fill(VALUE, VALUE);
1042
1046
 
1043
1047
 
1044
- // rmpixel.c
1048
+ // rmpixel.cpp
1045
1049
 
1046
1050
 
1047
1051
  ATTR_ACCESSOR(Pixel, red)
@@ -1072,7 +1076,7 @@ extern VALUE Pixel_to_hsla(VALUE);
1072
1076
  extern VALUE Pixel_to_s(VALUE);
1073
1077
 
1074
1078
 
1075
- // rmenum.c
1079
+ // rmenum.cpp
1076
1080
  extern VALUE Enum_alloc(VALUE);
1077
1081
  extern VALUE Enum_initialize(VALUE, VALUE, VALUE);
1078
1082
  extern VALUE Enum_to_s(VALUE);
@@ -1081,7 +1085,7 @@ extern VALUE Enum_spaceship(VALUE, VALUE);
1081
1085
  extern VALUE Enum_bitwise_or(VALUE, VALUE);
1082
1086
  extern VALUE Enum_case_eq(VALUE, VALUE);
1083
1087
  extern VALUE Enum_type_initialize(VALUE, VALUE, VALUE);
1084
- extern VALUE Enum_find(VALUE class, int val);
1088
+ extern VALUE Enum_find(VALUE, int);
1085
1089
  extern VALUE Enum_type_each(VALUE);
1086
1090
  extern VALUE rm_enum_new(VALUE, VALUE, VALUE);
1087
1091
  extern VALUE ClassType_find(ClassType);
@@ -1108,7 +1112,7 @@ extern const char *StyleType_name(StyleType);
1108
1112
  extern VALUE VirtualPixelMethod_find(VirtualPixelMethod);
1109
1113
 
1110
1114
 
1111
- // rmstruct.c
1115
+ // rmstruct.cpp
1112
1116
  extern VALUE ChromaticityInfo_to_s(VALUE);
1113
1117
  extern VALUE ChromaticityInfo_new(ChromaticityInfo *);
1114
1118
  extern void Color_to_PixelColor(PixelColor *, VALUE);
@@ -1143,7 +1147,7 @@ extern void Export_TypeInfo(TypeInfo *, VALUE);
1143
1147
  extern VALUE Import_TypeMetric(TypeMetric *);
1144
1148
 
1145
1149
 
1146
- // rmutil.c
1150
+ // rmutil.cpp
1147
1151
  extern VALUE ImageMagickError_initialize(int, VALUE *, VALUE);
1148
1152
  extern void *magick_malloc(const size_t);
1149
1153
  extern void *magick_safe_malloc(const size_t, const size_t);
@@ -1164,7 +1168,7 @@ extern void rm_check_ary_len(VALUE, long);
1164
1168
  extern VALUE rm_check_ary_type(VALUE ary);
1165
1169
  extern Image *rm_check_destroyed(VALUE);
1166
1170
  extern Image *rm_check_frozen(VALUE);
1167
- extern char *rm_str2cstr(VALUE, long *);
1171
+ extern char *rm_str2cstr(VALUE, size_t *);
1168
1172
  extern int rm_check_num2dbl(VALUE);
1169
1173
  extern double rm_fuzz_to_dbl(VALUE);
1170
1174
  extern Quantum rm_app2quantum(VALUE);
@@ -1209,9 +1213,26 @@ extern void rm_error_handler(const ExceptionType, const char *, const char *);
1209
1213
  extern void rm_warning_handler(const ExceptionType, const char *, const char *);
1210
1214
  extern MagickBooleanType rm_should_raise_exception(ExceptionInfo *, const ExceptionRetention);
1211
1215
  extern void rm_raise_exception(ExceptionInfo *);
1216
+ extern VALUE rm_io_path(VALUE);
1212
1217
  #if defined(IMAGEMAGICK_6)
1213
1218
  extern void rm_check_image_exception(Image *, ErrorRetention);
1214
1219
  #endif
1215
1220
 
1221
+ #if !defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_9_0)
1222
+ /* UnityAddKernelInfo() was private function until IM 6.9 */
1223
+ MagickExport void UnityAddKernelInfo(KernelInfo *kernel, const double scale);
1224
+ /* ScaleKernelInfo() was private function until IM 6.9 */
1225
+ MagickExport void ScaleKernelInfo(KernelInfo *kernel, const double scaling_factor, const GeometryFlags normalize_flags);
1216
1226
  #endif
1217
1227
 
1228
+ #if (RUBY_VERSION_MAJOR == 2 && RUBY_VERSION_MINOR < 7)
1229
+ #define RESCUE_FUNC(func) (VALUE (*)(ANYARGS))(func)
1230
+ #define RESCUE_EXCEPTION_HANDLER_FUNC(func) (VALUE (*)(ANYARGS))(func)
1231
+ #else
1232
+ #define RESCUE_FUNC(func) (VALUE(*)(VALUE))(func)
1233
+ #define RESCUE_EXCEPTION_HANDLER_FUNC(func) (VALUE(*)(VALUE, VALUE))(func)
1234
+ #endif
1235
+
1236
+ } // extern "C"
1237
+
1238
+ #endif
@@ -5,8 +5,8 @@
5
5
  *
6
6
  * Changes since Nov. 2009 copyright &copy; by Benjamin Thomas and Omer Bar-or
7
7
  *
8
- * @file rmdraw.c
9
- * @version $Id: rmdraw.c,v 1.83 2009/12/20 02:33:33 baror Exp $
8
+ * @file rmdraw.cpp
9
+ * @version $Id: rmdraw.cpp,v 1.83 2009/12/20 02:33:33 baror Exp $
10
10
  * @author Tim Hunter
11
11
  ******************************************************************************/
12
12
 
@@ -295,7 +295,7 @@ Draw_font_weight_eq(VALUE self, VALUE weight)
295
295
  w = FIX2INT(weight);
296
296
  if (w < 100 || w > 900)
297
297
  {
298
- rb_raise(rb_eArgError, "invalid font weight (%"RMIuSIZE" given)", w);
298
+ rb_raise(rb_eArgError, "invalid font weight (%" RMIuSIZE " given)", w);
299
299
  }
300
300
  draw->info->weight = w;
301
301
  }
@@ -480,7 +480,7 @@ Image *str_to_image(VALUE str)
480
480
 
481
481
  info = CloneImageInfo(NULL);
482
482
  exception = AcquireExceptionInfo();
483
- GVL_STRUCT_TYPE(BlobToImage) args = { info, RSTRING_PTR(str), RSTRING_LEN(str), exception };
483
+ GVL_STRUCT_TYPE(BlobToImage) args = { info, RSTRING_PTR(str), (size_t)RSTRING_LEN(str), exception };
484
484
  image = (Image *)CALL_FUNC_WITHOUT_GVL(GVL_FUNC(BlobToImage), &args);
485
485
  DestroyImageInfo(info);
486
486
  CHECK_EXCEPTION();
@@ -595,8 +595,8 @@ Draw_marshal_load(VALUE self, VALUE ddraw)
595
595
  draw->info->stroke_width = NUM2DBL(rb_hash_aref(ddraw, CSTR2SYM("stroke_width")));
596
596
  draw->info->fill_pattern = str_to_image(rb_hash_aref(ddraw, CSTR2SYM("fill_pattern")));
597
597
  draw->info->stroke_pattern = str_to_image(rb_hash_aref(ddraw, CSTR2SYM("stroke_pattern")));
598
- draw->info->stroke_antialias = RTEST(rb_hash_aref(ddraw, CSTR2SYM("stroke_antialias")));
599
- draw->info->text_antialias = RTEST(rb_hash_aref(ddraw, CSTR2SYM("text_antialias")));
598
+ draw->info->stroke_antialias = (MagickBooleanType)RTEST(rb_hash_aref(ddraw, CSTR2SYM("stroke_antialias")));
599
+ draw->info->text_antialias = (MagickBooleanType)RTEST(rb_hash_aref(ddraw, CSTR2SYM("text_antialias")));
600
600
  draw->info->decorate = (DecorationType) FIX2INT(rb_hash_aref(ddraw, CSTR2SYM("decorate")));
601
601
  OBJ_TO_MAGICK_STRING(draw->info->font, rb_hash_aref(ddraw, CSTR2SYM("font")));
602
602
  OBJ_TO_MAGICK_STRING(draw->info->family, rb_hash_aref(ddraw, CSTR2SYM("family")));
@@ -612,7 +612,7 @@ Draw_marshal_load(VALUE self, VALUE ddraw)
612
612
  val = rb_hash_aref(ddraw, CSTR2SYM("undercolor"));
613
613
  Color_to_PixelColor(&draw->info->undercolor, val);
614
614
 
615
- draw->info->clip_units = FIX2INT(rb_hash_aref(ddraw, CSTR2SYM("clip_units")));
615
+ draw->info->clip_units = (ClipPathUnits)FIX2INT(rb_hash_aref(ddraw, CSTR2SYM("clip_units")));
616
616
  #if defined(IMAGEMAGICK_7)
617
617
  draw->info->alpha = NUM2QUANTUM(rb_hash_aref(ddraw, CSTR2SYM("alpha")));
618
618
  #else
@@ -957,7 +957,7 @@ Draw_clone(VALUE self)
957
957
  * @param image [Magick::Image, Magick::ImageList] Either an imagelist or an image. If an
958
958
  * imagelist, uses the current image.
959
959
  *
960
- * @overload composite(x, y, width, height, image, operator = Magick::OverCompositeOp)
960
+ * @overload composite(x, y, width, height, image, composite_op = Magick::OverCompositeOp)
961
961
  * - The "image" argument can be either an ImageList object or an Image
962
962
  * argument.
963
963
  * @param x [Float] x position
@@ -966,7 +966,7 @@ Draw_clone(VALUE self)
966
966
  * @param height [Float] the height
967
967
  * @param image [Magick::Image, Magick::ImageList] Either an imagelist or an image. If an
968
968
  * imagelist, uses the current image.
969
- * @param operator [Magick::CompositeOperator] the operator
969
+ * @param composite_op [Magick::CompositeOperator] the operator
970
970
  *
971
971
  * @return [Magick::Draw] self
972
972
  */
@@ -976,7 +976,7 @@ Draw_composite(int argc, VALUE *argv, VALUE self)
976
976
  Draw *draw;
977
977
  const char *op;
978
978
  double x, y, width, height;
979
- CompositeOperator cop;
979
+ CompositeOperator composite_op;
980
980
  VALUE image;
981
981
  Image *comp_img;
982
982
  struct TmpFile_Name *tmpfile_name;
@@ -998,16 +998,16 @@ Draw_composite(int argc, VALUE *argv, VALUE self)
998
998
  width = NUM2DBL(argv[2]);
999
999
  height = NUM2DBL(argv[3]);
1000
1000
 
1001
- cop = OverCompositeOp;
1001
+ composite_op = OverCompositeOp;
1002
1002
  if (argc == 6)
1003
1003
  {
1004
- VALUE_TO_ENUM(argv[5], cop, CompositeOperator);
1004
+ VALUE_TO_ENUM(argv[5], composite_op, CompositeOperator);
1005
1005
  }
1006
1006
 
1007
- op = CommandOptionToMnemonic(MagickComposeOptions, cop);
1007
+ op = CommandOptionToMnemonic(MagickComposeOptions, composite_op);
1008
1008
  if (rm_strcasecmp("Unrecognized", op) == 0)
1009
1009
  {
1010
- rb_raise(rb_eArgError, "unknown composite operator (%d)", cop);
1010
+ rb_raise(rb_eArgError, "unknown composite operator (%d)", composite_op);
1011
1011
  }
1012
1012
 
1013
1013
  TypedData_Get_Struct(self, Draw, &rm_draw_data_type, draw);
@@ -1018,7 +1018,7 @@ Draw_composite(int argc, VALUE *argv, VALUE self)
1018
1018
  // Add the temp filename to the filename array.
1019
1019
  // Use Magick storage since we need to keep the list around
1020
1020
  // until destroy_Draw is called.
1021
- tmpfile_name = magick_malloc(sizeof(struct TmpFile_Name) + rm_strnlen_s(name, sizeof(name)));
1021
+ tmpfile_name = (struct TmpFile_Name *)magick_malloc(sizeof(struct TmpFile_Name) + rm_strnlen_s(name, sizeof(name)));
1022
1022
  strcpy(tmpfile_name->name, name);
1023
1023
  tmpfile_name->next = draw->tmpfile_ary;
1024
1024
  draw->tmpfile_ary = tmpfile_name;
@@ -1235,14 +1235,14 @@ Draw_inspect(VALUE self)
1235
1235
  *
1236
1236
  * @return [Magick::Draw] a new Draw object
1237
1237
  */
1238
- VALUE Draw_alloc(VALUE class)
1238
+ VALUE Draw_alloc(VALUE klass)
1239
1239
  {
1240
1240
  Draw *draw;
1241
1241
  VALUE draw_obj;
1242
1242
 
1243
1243
  draw = ALLOC(Draw);
1244
1244
  memset(draw, 0, sizeof(Draw));
1245
- draw_obj = TypedData_Wrap_Struct(class, &rm_draw_data_type, draw);
1245
+ draw_obj = TypedData_Wrap_Struct(klass, &rm_draw_data_type, draw);
1246
1246
 
1247
1247
  RB_GC_GUARD(draw_obj);
1248
1248
 
@@ -1388,14 +1388,14 @@ new_DrawOptions(void)
1388
1388
  * @return [Magick::Image::DrawOptions] a new DrawOptions object
1389
1389
  */
1390
1390
  VALUE
1391
- DrawOptions_alloc(VALUE class)
1391
+ DrawOptions_alloc(VALUE klass)
1392
1392
  {
1393
1393
  Draw *draw_options;
1394
1394
  VALUE draw_options_obj;
1395
1395
 
1396
1396
  draw_options = ALLOC(Draw);
1397
1397
  memset(draw_options, 0, sizeof(Draw));
1398
- draw_options_obj = TypedData_Wrap_Struct(class, &rm_draw_data_type, draw_options);
1398
+ draw_options_obj = TypedData_Wrap_Struct(klass, &rm_draw_data_type, draw_options);
1399
1399
 
1400
1400
  RB_GC_GUARD(draw_options_obj);
1401
1401
 
@@ -1433,12 +1433,12 @@ DrawOptions_initialize(VALUE self)
1433
1433
  * Allocate a new Magick::Image::PolaroidOptions object.
1434
1434
  *
1435
1435
  * - Internally a PolaroidOptions object is the same as a Draw object. The
1436
- * methods are implemented by Draw methods in rmdraw.c.
1436
+ * methods are implemented by Draw methods in rmdraw.cpp.
1437
1437
  *
1438
1438
  * @return [Magick::Image::PolaroidOptions] a new PolaroidOptions object
1439
1439
  */
1440
1440
  VALUE
1441
- PolaroidOptions_alloc(VALUE class)
1441
+ PolaroidOptions_alloc(VALUE klass)
1442
1442
  {
1443
1443
  VALUE polaroid_obj;
1444
1444
  ImageInfo *image_info;
@@ -1452,7 +1452,7 @@ PolaroidOptions_alloc(VALUE class)
1452
1452
  draw->info = CloneDrawInfo(image_info, (DrawInfo *) NULL);
1453
1453
  (void) DestroyImageInfo(image_info);
1454
1454
 
1455
- polaroid_obj = TypedData_Wrap_Struct(class, &rm_draw_data_type, draw);
1455
+ polaroid_obj = TypedData_Wrap_Struct(klass, &rm_draw_data_type, draw);
1456
1456
 
1457
1457
  RB_GC_GUARD(polaroid_obj);
1458
1458
 
@@ -1612,7 +1612,7 @@ get_type_metrics(int argc, VALUE *argv, VALUE self, gvl_function_t fp)
1612
1612
  VALUE t;
1613
1613
  TypeMetric metrics;
1614
1614
  char *text = NULL;
1615
- long text_l;
1615
+ size_t text_l;
1616
1616
  MagickBooleanType okay;
1617
1617
  #if defined(IMAGEMAGICK_7)
1618
1618
  ExceptionInfo *exception;
@@ -1667,7 +1667,8 @@ get_type_metrics(int argc, VALUE *argv, VALUE self, gvl_function_t fp)
1667
1667
  #else
1668
1668
  GVL_STRUCT_TYPE(get_type_metrics) args = { image, draw->info, &metrics };
1669
1669
  #endif
1670
- okay = (MagickBooleanType)CALL_FUNC_WITHOUT_GVL(fp, &args);
1670
+ void *ret = CALL_FUNC_WITHOUT_GVL(fp, &args);
1671
+ okay = reinterpret_cast<MagickBooleanType &>(ret);
1671
1672
 
1672
1673
  magick_free(draw->info->text);
1673
1674
  draw->info->text = NULL;