rmagick 3.0.0 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rmagick might be problematic. Click here for more details.

Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.appveyor.yml +32 -6
  3. data/.circleci/config.yml +1 -1
  4. data/.gitignore +1 -0
  5. data/.rubocop.yml +9 -9
  6. data/.rubocop_todo.yml +351 -17
  7. data/.travis.yml +14 -1
  8. data/CHANGELOG.md +55 -0
  9. data/CONTRIBUTING.md +11 -18
  10. data/README.textile +2 -2
  11. data/Rakefile +1 -1
  12. data/before_install_linux.sh +56 -19
  13. data/doc/ex/sparse_color.rb +5 -0
  14. data/doc/magick.html +9 -4
  15. data/doc/rvg.html +2 -2
  16. data/doc/rvgtut.html +1 -1
  17. data/examples/histogram.rb +1 -1
  18. data/ext/RMagick/extconf.rb +90 -264
  19. data/ext/RMagick/rmagick.c +28 -6
  20. data/ext/RMagick/rmagick.h +53 -199
  21. data/ext/RMagick/rmdraw.c +52 -70
  22. data/ext/RMagick/rmenum.c +332 -274
  23. data/ext/RMagick/rmfill.c +62 -112
  24. data/ext/RMagick/rmilist.c +27 -62
  25. data/ext/RMagick/rmimage.c +424 -634
  26. data/ext/RMagick/rminfo.c +46 -37
  27. data/ext/RMagick/rmkinfo.c +47 -42
  28. data/ext/RMagick/rmmain.c +125 -180
  29. data/ext/RMagick/rmmontage.c +5 -5
  30. data/ext/RMagick/rmpixel.c +133 -62
  31. data/ext/RMagick/rmstruct.c +14 -181
  32. data/ext/RMagick/rmutil.c +195 -111
  33. data/lib/rmagick/version.rb +2 -3
  34. data/lib/rvg/deep_equal.rb +1 -1
  35. data/lib/rvg/misc.rb +4 -4
  36. data/lib/rvg/units.rb +2 -2
  37. data/rmagick.gemspec +2 -2
  38. data/spec/rmagick/ImageList1_spec.rb +2 -2
  39. data/spec/rmagick/draw_spec.rb +4 -4
  40. data/spec/rmagick/image/composite_spec.rb +6 -1
  41. data/spec/rmagick/image/properties_spec.rb +8 -8
  42. data/test/Draw.rb +414 -0
  43. data/test/Enum.rb +76 -0
  44. data/test/Fill.rb +93 -0
  45. data/test/Image1.rb +9 -1
  46. data/test/Image2.rb +14 -4
  47. data/test/Image3.rb +73 -3
  48. data/test/ImageList1.rb +22 -9
  49. data/test/ImageList2.rb +41 -9
  50. data/test/Image_attributes.rb +45 -8
  51. data/test/Info.rb +102 -6
  52. data/test/Magick.rb +8 -1
  53. data/test/PolaroidOptions.rb +23 -0
  54. data/test/test_all_basic.rb +4 -0
  55. metadata +28 -8
  56. data/.hound.yml +0 -2
  57. data/wercker.yml +0 -10
@@ -151,7 +151,7 @@ Draw_fill_eq(VALUE self, VALUE fill)
151
151
 
152
152
  rb_check_frozen(self);
153
153
  Data_Get_Struct(self, Draw, draw);
154
- Color_to_PixelPacket(&draw->info->fill, fill);
154
+ Color_to_PixelColor(&draw->info->fill, fill);
155
155
  return self;
156
156
  }
157
157
 
@@ -304,17 +304,17 @@ VALUE
304
304
  Draw_font_weight_eq(VALUE self, VALUE weight)
305
305
  {
306
306
  Draw *draw;
307
- WeightType w;
307
+ size_t w;
308
308
 
309
309
  rb_check_frozen(self);
310
310
  Data_Get_Struct(self, Draw, draw);
311
311
 
312
312
  if (FIXNUM_P(weight))
313
313
  {
314
- w = (WeightType) FIX2INT(weight);
314
+ w = FIX2INT(weight);
315
315
  if (w < 100 || w > 900)
316
316
  {
317
- rb_raise(rb_eArgError, "invalid font weight (%d given)", w);
317
+ rb_raise(rb_eArgError, "invalid font weight (%ld given)", w);
318
318
  }
319
319
  draw->info->weight = w;
320
320
  }
@@ -402,19 +402,12 @@ Draw_gravity_eq(VALUE self, VALUE grav)
402
402
  VALUE
403
403
  Draw_kerning_eq(VALUE self, VALUE kerning)
404
404
  {
405
- #if defined(HAVE_ST_KERNING)
406
405
  Draw *draw;
407
406
 
408
407
  rb_check_frozen(self);
409
408
  Data_Get_Struct(self, Draw, draw);
410
409
  draw->info->kerning = NUM2DBL(kerning);
411
410
  return self;
412
- #else
413
- rm_not_implemented();
414
- return (VALUE)0;
415
- self = self;
416
- kerning = kerning;
417
- #endif
418
411
  }
419
412
 
420
413
 
@@ -434,19 +427,12 @@ Draw_kerning_eq(VALUE self, VALUE kerning)
434
427
  VALUE
435
428
  Draw_interline_spacing_eq(VALUE self, VALUE spacing)
436
429
  {
437
- #if defined(HAVE_ST_INTERLINE_SPACING)
438
430
  Draw *draw;
439
431
 
440
432
  rb_check_frozen(self);
441
433
  Data_Get_Struct(self, Draw, draw);
442
434
  draw->info->interline_spacing = NUM2DBL(spacing);
443
435
  return self;
444
- #else
445
- rm_not_implemented();
446
- return (VALUE)0;
447
- self = self;
448
- spacing = spacing;
449
- #endif
450
436
  }
451
437
 
452
438
 
@@ -466,19 +452,12 @@ Draw_interline_spacing_eq(VALUE self, VALUE spacing)
466
452
  VALUE
467
453
  Draw_interword_spacing_eq(VALUE self, VALUE spacing)
468
454
  {
469
- #if defined(HAVE_ST_INTERWORD_SPACING)
470
455
  Draw *draw;
471
456
 
472
457
  rb_check_frozen(self);
473
458
  Data_Get_Struct(self, Draw, draw);
474
459
  draw->info->interword_spacing = NUM2DBL(spacing);
475
460
  return self;
476
- #else
477
- rm_not_implemented();
478
- return (VALUE)0;
479
- self = self;
480
- spacing = spacing;
481
- #endif
482
461
  }
483
462
 
484
463
 
@@ -594,8 +573,8 @@ Draw_marshal_dump(VALUE self)
594
573
  // rb_hash_aset(ddraw, CSTR2SYM("viewbox"), Import_RectangleInfo(&draw->info->viewbox)); internal
595
574
  rb_hash_aset(ddraw, CSTR2SYM("affine"), Import_AffineMatrix(&draw->info->affine));
596
575
  rb_hash_aset(ddraw, CSTR2SYM("gravity"), INT2FIX(draw->info->gravity));
597
- rb_hash_aset(ddraw, CSTR2SYM("fill"), Pixel_from_PixelPacket(&draw->info->fill));
598
- rb_hash_aset(ddraw, CSTR2SYM("stroke"), Pixel_from_PixelPacket(&draw->info->stroke));
576
+ rb_hash_aset(ddraw, CSTR2SYM("fill"), Pixel_from_PixelColor(&draw->info->fill));
577
+ rb_hash_aset(ddraw, CSTR2SYM("stroke"), Pixel_from_PixelColor(&draw->info->stroke));
599
578
  rb_hash_aset(ddraw, CSTR2SYM("stroke_width"), rb_float_new(draw->info->stroke_width));
600
579
  // rb_hash_aset(ddraw, CSTR2SYM("gradient"), Qnil); // not used yet
601
580
  rb_hash_aset(ddraw, CSTR2SYM("fill_pattern"), image_to_str(draw->info->fill_pattern));
@@ -622,8 +601,8 @@ Draw_marshal_dump(VALUE self)
622
601
  rb_hash_aset(ddraw, CSTR2SYM("pointsize"), rb_float_new(draw->info->pointsize));
623
602
  rb_hash_aset(ddraw, CSTR2SYM("density"), MAGICK_STRING_TO_OBJ(draw->info->density));
624
603
  rb_hash_aset(ddraw, CSTR2SYM("align"), INT2FIX(draw->info->align));
625
- rb_hash_aset(ddraw, CSTR2SYM("undercolor"), Pixel_from_PixelPacket(&draw->info->undercolor));
626
- // rb_hash_aset(ddraw, CSTR2SYM("border_color"), Pixel_from_PixelPacket(&draw->info->border_color)); Montage and Polaroid
604
+ rb_hash_aset(ddraw, CSTR2SYM("undercolor"), Pixel_from_PixelColor(&draw->info->undercolor));
605
+ // rb_hash_aset(ddraw, CSTR2SYM("border_color"), Pixel_from_PixelColor(&draw->info->border_color)); Montage and Polaroid
627
606
  // rb_hash_aset(ddraw, CSTR2SYM("server_name"), MAGICK_STRING_TO_OBJ(draw->info->server_name));
628
607
  // rb_hash_aset(ddraw, CSTR2SYM("dash_pattern"), dash_pattern_to_array(draw->info->dash_pattern)); internal
629
608
  // rb_hash_aset(ddraw, CSTR2SYM("clip_mask"), MAGICK_STRING_TO_OBJ(draw->info->clip_mask)); internal
@@ -633,16 +612,12 @@ Draw_marshal_dump(VALUE self)
633
612
  // rb_hash_aset(ddraw, CSTR2SYM("render"), draw->info->render ? Qtrue : Qfalse); internal
634
613
  // rb_hash_aset(ddraw, CSTR2SYM("element_reference"), Qnil); // not used yet
635
614
  // rb_hash_aset(ddraw, CSTR2SYM("debug"), draw->info->debug ? Qtrue : Qfalse);
636
- #if defined(HAVE_ST_KERNING)
637
615
  rb_hash_aset(ddraw, CSTR2SYM("kerning"), rb_float_new(draw->info->kerning));
638
- #endif
639
- #if defined(HAVE_ST_INTERWORD_SPACING)
640
616
  rb_hash_aset(ddraw, CSTR2SYM("interword_spacing"), rb_float_new(draw->info->interword_spacing));
641
- #endif
642
617
 
643
618
  // Non-DrawInfo fields
644
619
  rb_hash_aset(ddraw, CSTR2SYM("primitives"), draw->primitives);
645
- // rb_hash_aset(ddraw, CSTR2SYM("shadow_color"), Pixel_from_PixelPacket(&draw->shadow_color)); Polaroid-only
620
+ // rb_hash_aset(ddraw, CSTR2SYM("shadow_color"), Pixel_from_PixelColor(&draw->shadow_color)); Polaroid-only
646
621
 
647
622
  return ddraw;
648
623
  }
@@ -665,7 +640,6 @@ VALUE
665
640
  Draw_marshal_load(VALUE self, VALUE ddraw)
666
641
  {
667
642
  Draw *draw;
668
- Pixel *pixel;
669
643
  VALUE val;
670
644
 
671
645
  Data_Get_Struct(self, Draw, draw);
@@ -681,12 +655,10 @@ Draw_marshal_load(VALUE self, VALUE ddraw)
681
655
  draw->info->gravity = (GravityType) FIX2INT(rb_hash_aref(ddraw, CSTR2SYM("gravity")));
682
656
 
683
657
  val = rb_hash_aref(ddraw, CSTR2SYM("fill"));
684
- Data_Get_Struct(val, Pixel, pixel);
685
- draw->info->fill = *pixel;
658
+ Color_to_PixelColor(&draw->info->fill, val);
686
659
 
687
660
  val = rb_hash_aref(ddraw, CSTR2SYM("stroke"));
688
- Data_Get_Struct(val, Pixel, pixel);
689
- draw->info->stroke = *pixel;
661
+ Color_to_PixelColor(&draw->info->stroke, val);
690
662
 
691
663
  draw->info->stroke_width = NUM2DBL(rb_hash_aref(ddraw, CSTR2SYM("stroke_width")));
692
664
  draw->info->fill_pattern = str_to_image(rb_hash_aref(ddraw, CSTR2SYM("fill_pattern")));
@@ -706,17 +678,12 @@ Draw_marshal_load(VALUE self, VALUE ddraw)
706
678
  draw->info->align = (AlignType) FIX2INT(rb_hash_aref(ddraw, CSTR2SYM("align")));
707
679
 
708
680
  val = rb_hash_aref(ddraw, CSTR2SYM("undercolor"));
709
- Data_Get_Struct(val, Pixel, pixel);
710
- draw->info->undercolor = *pixel;
681
+ Color_to_PixelColor(&draw->info->undercolor, val);
711
682
 
712
683
  draw->info->clip_units = FIX2INT(rb_hash_aref(ddraw, CSTR2SYM("clip_units")));
713
684
  draw->info->opacity = NUM2QUANTUM(rb_hash_aref(ddraw, CSTR2SYM("opacity")));
714
- #if defined(HAVE_ST_KERNING)
715
685
  draw->info->kerning = NUM2DBL(rb_hash_aref(ddraw, CSTR2SYM("kerning")));
716
- #endif
717
- #if defined(HAVE_ST_INTERWORD_SPACING)
718
686
  draw->info->interword_spacing = NUM2DBL(rb_hash_aref(ddraw, CSTR2SYM("interword_spacing")));
719
- #endif
720
687
 
721
688
  draw->primitives = rb_hash_aref(ddraw, CSTR2SYM("primitives"));
722
689
 
@@ -817,7 +784,7 @@ Draw_stroke_eq(VALUE self, VALUE stroke)
817
784
 
818
785
  rb_check_frozen(self);
819
786
  Data_Get_Struct(self, Draw, draw);
820
- Color_to_PixelPacket(&draw->info->stroke, stroke);
787
+ Color_to_PixelColor(&draw->info->stroke, stroke);
821
788
  return self;
822
789
  }
823
790
 
@@ -940,7 +907,7 @@ Draw_undercolor_eq(VALUE self, VALUE undercolor)
940
907
 
941
908
  rb_check_frozen(self);
942
909
  Data_Get_Struct(self, Draw, draw);
943
- Color_to_PixelPacket(&draw->info->undercolor, undercolor);
910
+ Color_to_PixelColor(&draw->info->undercolor, undercolor);
944
911
  return self;
945
912
  }
946
913
 
@@ -1123,11 +1090,9 @@ Draw_composite(int argc, VALUE *argv, VALUE self)
1123
1090
  case BlendCompositeOp:
1124
1091
  op = "Blend";
1125
1092
  break;
1126
- #if defined(HAVE_ENUM_BLURCOMPOSITEOP)
1127
1093
  case BlurCompositeOp:
1128
1094
  op = "Blur";
1129
1095
  break;
1130
- #endif
1131
1096
  case BumpmapCompositeOp:
1132
1097
  op = "Bumpmap";
1133
1098
  break;
@@ -1146,15 +1111,15 @@ Draw_composite(int argc, VALUE *argv, VALUE self)
1146
1111
  case ColorizeCompositeOp:
1147
1112
  op = "Colorize";
1148
1113
  break;
1149
- case CopyCompositeOp:
1150
- op = "Copy";
1151
- break;
1152
1114
  case CopyBlackCompositeOp:
1153
1115
  op = "CopyBlack";
1154
1116
  break;
1155
1117
  case CopyBlueCompositeOp:
1156
1118
  op = "CopyBlue";
1157
1119
  break;
1120
+ case CopyCompositeOp:
1121
+ op = "Copy";
1122
+ break;
1158
1123
  case CopyCyanCompositeOp:
1159
1124
  op = "CopyCyan";
1160
1125
  break;
@@ -1176,14 +1141,18 @@ Draw_composite(int argc, VALUE *argv, VALUE self)
1176
1141
  case DarkenCompositeOp:
1177
1142
  op = "Darken";
1178
1143
  break;
1179
- #if defined(HAVE_ENUM_DISTORTCOMPOSITEOP)
1144
+ case DarkenIntensityCompositeOp:
1145
+ op = "DarkenIntensity";
1146
+ break;
1180
1147
  case DistortCompositeOp:
1181
1148
  op = "Distort";
1182
1149
  break;
1183
- #endif
1184
1150
  case DivideCompositeOp:
1185
1151
  op = "Divide";
1186
1152
  break;
1153
+ case DivideSrcCompositeOp:
1154
+ op = "DivideSrc";
1155
+ break;
1187
1156
  case DstCompositeOp:
1188
1157
  op = "Dst";
1189
1158
  break;
@@ -1214,6 +1183,11 @@ Draw_composite(int argc, VALUE *argv, VALUE self)
1214
1183
  case HardLightCompositeOp:
1215
1184
  op = "HardLight";
1216
1185
  break;
1186
+ #if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9)
1187
+ case HardMixCompositeOp:
1188
+ op = "HardMix";
1189
+ break;
1190
+ #endif
1217
1191
  case HueCompositeOp:
1218
1192
  op = "Hue";
1219
1193
  break;
@@ -1223,31 +1197,39 @@ Draw_composite(int argc, VALUE *argv, VALUE self)
1223
1197
  case LightenCompositeOp:
1224
1198
  op = "Lighten";
1225
1199
  break;
1226
- #if defined(HAVE_ENUM_LINEARBURNCOMPOSITEOP)
1200
+ case LightenIntensityCompositeOp:
1201
+ op = "LightenIntensity";
1202
+ break;
1227
1203
  case LinearBurnCompositeOp:
1228
1204
  op = "LinearBurn";
1229
1205
  break;
1230
- #endif
1231
- #if defined(HAVE_ENUM_LINEARDODGECOMPOSITEOP)
1232
1206
  case LinearDodgeCompositeOp:
1233
1207
  op = "LinearDodge";
1234
1208
  break;
1235
- #endif
1236
1209
  case LinearLightCompositeOp:
1237
1210
  op = "LinearLight";
1238
1211
  break;
1239
1212
  case LuminizeCompositeOp:
1240
1213
  op = "Luminize";
1241
1214
  break;
1215
+ case MathematicsCompositeOp:
1216
+ op = "Mathematics";
1217
+ break;
1242
1218
  case MinusCompositeOp:
1243
1219
  op = "Minus";
1244
1220
  break;
1221
+ case MinusSrcCompositeOp:
1222
+ op = "MinusSrc";
1223
+ break;
1245
1224
  case ModulateCompositeOp:
1246
1225
  op = "Modulate";
1247
1226
  break;
1248
1227
  case MultiplyCompositeOp:
1249
1228
  op = "Multiply";
1250
1229
  break;
1230
+ case NoCompositeOp:
1231
+ op = "No";
1232
+ break;
1251
1233
  case OutCompositeOp:
1252
1234
  op = "Out";
1253
1235
  break;
@@ -1257,16 +1239,12 @@ Draw_composite(int argc, VALUE *argv, VALUE self)
1257
1239
  case OverlayCompositeOp:
1258
1240
  op = "Overlay";
1259
1241
  break;
1260
- #if defined(HAVE_ENUM_PEGTOPLIGHTCOMPOSITEOP)
1261
1242
  case PegtopLightCompositeOp:
1262
1243
  op = "PegtopLight";
1263
1244
  break;
1264
- #endif
1265
- #if defined(HAVE_ENUM_PINLIGHTCOMPOSITEOP)
1266
1245
  case PinLightCompositeOp:
1267
1246
  op = "PinLight";
1268
1247
  break;
1269
- #endif
1270
1248
  case PlusCompositeOp:
1271
1249
  op = "Plus";
1272
1250
  break;
@@ -1303,11 +1281,12 @@ Draw_composite(int argc, VALUE *argv, VALUE self)
1303
1281
  case ThresholdCompositeOp:
1304
1282
  op = "Threshold";
1305
1283
  break;
1306
- #if defined(HAVE_ENUM_VIVIDLIGHTCOMPOSITEOP)
1284
+ case UndefinedCompositeOp:
1285
+ op = "Undefined";
1286
+ break;
1307
1287
  case VividLightCompositeOp:
1308
1288
  op = "VividLight";
1309
1289
  break;
1310
- #endif
1311
1290
  case XorCompositeOp:
1312
1291
  op = "Xor";
1313
1292
  break;
@@ -1794,9 +1773,9 @@ PolaroidOptions_initialize(VALUE self)
1794
1773
  Data_Get_Struct(self, Draw, draw);
1795
1774
 
1796
1775
  exception = AcquireExceptionInfo();
1797
- (void) QueryColorDatabase("gray75", &draw->shadow_color, exception);
1776
+ (void) QueryColorCompliance("gray75", AllCompliance, &draw->shadow_color, exception);
1798
1777
  CHECK_EXCEPTION()
1799
- (void) QueryColorDatabase("#dfdfdf", &draw->info->border_color, exception);
1778
+ (void) QueryColorCompliance("#dfdfdf", AllCompliance, &draw->info->border_color, exception);
1800
1779
  CHECK_EXCEPTION()
1801
1780
  DestroyExceptionInfo(exception);
1802
1781
 
@@ -1838,8 +1817,9 @@ PolaroidOptions_shadow_color_eq(VALUE self, VALUE shadow)
1838
1817
  {
1839
1818
  Draw *draw;
1840
1819
 
1820
+ rb_check_frozen(self);
1841
1821
  Data_Get_Struct(self, Draw, draw);
1842
- Color_to_PixelPacket(&draw->shadow_color, shadow);
1822
+ Color_to_PixelColor(&draw->shadow_color, shadow);
1843
1823
  return self;
1844
1824
  }
1845
1825
 
@@ -1859,8 +1839,9 @@ PolaroidOptions_border_color_eq(VALUE self, VALUE border)
1859
1839
  {
1860
1840
  Draw *draw;
1861
1841
 
1842
+ rb_check_frozen(self);
1862
1843
  Data_Get_Struct(self, Draw, draw);
1863
- Color_to_PixelPacket(&draw->info->border_color, border);
1844
+ Color_to_PixelColor(&draw->info->border_color, border);
1864
1845
  return self;
1865
1846
  }
1866
1847
 
@@ -1889,12 +1870,13 @@ get_dummy_tm_img(VALUE klass)
1889
1870
  {
1890
1871
  rb_raise(rb_eNoMemError, "not enough memory to continue");
1891
1872
  }
1892
- image = AcquireImage(info);
1873
+ image = rm_acquire_image(info);
1874
+ (void) DestroyImageInfo(info);
1875
+
1893
1876
  if (!image)
1894
1877
  {
1895
1878
  rb_raise(rb_eNoMemError, "not enough memory to continue");
1896
1879
  }
1897
- (void) DestroyImageInfo(info);
1898
1880
  dummy_img = rm_image_new(image);
1899
1881
 
1900
1882
  rb_cv_set(klass, DUMMY_IMG_CLASS_VAR, dummy_img);
@@ -14,6 +14,8 @@
14
14
 
15
15
 
16
16
  #define ENUMERATORS_CLASS_VAR "@@enumerators"
17
+ #define ENUM_TO_NAME(_enum) case _enum: return #_enum;
18
+ #define ENUM_SET_NAME(_enum) case _enum: name = #_enum; break;
17
19
 
18
20
 
19
21
  static VALUE Enum_type_values(VALUE);
@@ -375,16 +377,10 @@ ClassType_new(ClassType cls)
375
377
 
376
378
  switch(cls)
377
379
  {
380
+ ENUM_SET_NAME(DirectClass)
381
+ ENUM_SET_NAME(PseudoClass)
378
382
  default:
379
- case UndefinedClass:
380
- name = "UndefineClass";
381
- break;
382
- case DirectClass:
383
- name = "DirectClass";
384
- break;
385
- case PseudoClass:
386
- name = "PseudoClass";
387
- break;
383
+ ENUM_SET_NAME(UndefinedClass)
388
384
  }
389
385
 
390
386
  return rm_enum_new(Class_ClassType, ID2SYM(rb_intern(name)), INT2FIX(cls));
@@ -406,76 +402,39 @@ ColorspaceType_new(ColorspaceType cs)
406
402
 
407
403
  switch(cs)
408
404
  {
405
+ ENUM_SET_NAME(RGBColorspace)
406
+ ENUM_SET_NAME(GRAYColorspace)
407
+ ENUM_SET_NAME(TransparentColorspace)
408
+ ENUM_SET_NAME(OHTAColorspace)
409
+ ENUM_SET_NAME(XYZColorspace)
410
+ ENUM_SET_NAME(YCbCrColorspace)
411
+ ENUM_SET_NAME(YCCColorspace)
412
+ ENUM_SET_NAME(YIQColorspace)
413
+ ENUM_SET_NAME(YPbPrColorspace)
414
+ ENUM_SET_NAME(YUVColorspace)
415
+ ENUM_SET_NAME(CMYKColorspace)
416
+ ENUM_SET_NAME(sRGBColorspace)
417
+ ENUM_SET_NAME(Rec601YCbCrColorspace)
418
+ ENUM_SET_NAME(Rec601LumaColorspace)
419
+ ENUM_SET_NAME(Rec709LumaColorspace)
420
+ ENUM_SET_NAME(Rec709YCbCrColorspace)
421
+ ENUM_SET_NAME(CMYColorspace)
422
+ #if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9)
423
+ ENUM_SET_NAME(LuvColorspace)
424
+ ENUM_SET_NAME(HCLColorspace)
425
+ ENUM_SET_NAME(LCHColorspace)
426
+ ENUM_SET_NAME(LMSColorspace)
427
+ ENUM_SET_NAME(LCHabColorspace)
428
+ ENUM_SET_NAME(LCHuvColorspace)
429
+ ENUM_SET_NAME(scRGBColorspace)
430
+ ENUM_SET_NAME(HSIColorspace)
431
+ ENUM_SET_NAME(HSVColorspace)
432
+ ENUM_SET_NAME(HCLpColorspace)
433
+ ENUM_SET_NAME(YDbDrColorspace)
434
+ ENUM_SET_NAME(xyYColorspace)
435
+ #endif
409
436
  default:
410
- case UndefinedColorspace:
411
- name = "UndefinedColorspace";
412
- break;
413
- case RGBColorspace:
414
- name = "RGBColorspace";
415
- break;
416
- case GRAYColorspace:
417
- name = "GRAYColorspace";
418
- break;
419
- case TransparentColorspace:
420
- name = "TransparentColorspace";
421
- break;
422
- case OHTAColorspace:
423
- name = "OHTAColorspace";
424
- break;
425
- case XYZColorspace:
426
- name = "XYZColorspace";
427
- break;
428
- case YCbCrColorspace:
429
- name = "YCbCrColorspace";
430
- break;
431
- case YCCColorspace:
432
- name = "YCCColorspace";
433
- break;
434
- case YIQColorspace:
435
- name = "YIQColorspace";
436
- break;
437
- case YPbPrColorspace:
438
- name = "YPbPrColorspace";
439
- break;
440
- case YUVColorspace:
441
- name = "YUVColorspace";
442
- break;
443
- case CMYKColorspace:
444
- name = "CMYKColorspace";
445
- break;
446
- case sRGBColorspace:
447
- name = "sRGBColorspace";
448
- break;
449
- case HSLColorspace:
450
- name = "HSLColorspace";
451
- break;
452
- case HWBColorspace:
453
- name = "HWBColorspace";
454
- break;
455
- case HSBColorspace:
456
- name = "HSBColorspace";
457
- break;
458
- case LabColorspace:
459
- name = "LabColorspace";
460
- break;
461
- case Rec601YCbCrColorspace:
462
- name = "Rec601YCbCrColorspace";
463
- break;
464
- case Rec601LumaColorspace:
465
- name = "Rec601LumaColorspace";
466
- break;
467
- case Rec709LumaColorspace:
468
- name = "Rec709LumaColorspace";
469
- break;
470
- case Rec709YCbCrColorspace:
471
- name = "Rec709YCbCrColorspace";
472
- break;
473
- case LogColorspace:
474
- name = "LogColorspace";
475
- break;
476
- case CMYColorspace:
477
- name = "CMYColorspace";
478
- break;
437
+ ENUM_SET_NAME(UndefinedColorspace)
479
438
  }
480
439
 
481
440
  return rm_enum_new(Class_ColorspaceType, ID2SYM(rb_intern(name)), INT2FIX(cs));
@@ -483,6 +442,76 @@ ColorspaceType_new(ColorspaceType cs)
483
442
  }
484
443
 
485
444
 
445
+ /**
446
+ * Return the string representation of a ComplianceType value.
447
+ *
448
+ * No Ruby usage (internal function)
449
+ *
450
+ * Notes:
451
+ * - xMagick will OR multiple compliance types so we have to arbitrarily pick
452
+ * one name.
453
+ * - Set the compliance argument to the selected value.
454
+ *
455
+ * @param c the ComplianceType value
456
+ * @return the string
457
+ */
458
+ const char *
459
+ ComplianceType_name(ComplianceType *c)
460
+ {
461
+ if ((*c & (SVGCompliance|X11Compliance|XPMCompliance))
462
+ == (SVGCompliance|X11Compliance|XPMCompliance))
463
+ {
464
+ return "AllCompliance";
465
+ }
466
+ else if (*c & SVGCompliance)
467
+ {
468
+ *c = SVGCompliance;
469
+ return "SVGCompliance";
470
+ }
471
+ else if (*c & X11Compliance)
472
+ {
473
+ *c = X11Compliance;
474
+ return "X11Compliance";
475
+ }
476
+ else if (*c & XPMCompliance)
477
+ {
478
+ *c = XPMCompliance;
479
+ return "XPMCompliance";
480
+ }
481
+ else if (*c == NoCompliance)
482
+ {
483
+ *c = NoCompliance;
484
+ return "NoCompliance";
485
+ }
486
+ else
487
+ {
488
+ *c = UndefinedCompliance;
489
+ return "UndefinedCompliance";
490
+ }
491
+ }
492
+
493
+
494
+ /**
495
+ * Construct a ComplianceType enum object for the specified value.
496
+ *
497
+ * No Ruby usage (internal function)
498
+ *
499
+ * @param compliance the C ComplianceType value
500
+ * @return the Ruby ComplianceType enum object
501
+ */
502
+ VALUE
503
+ ComplianceType_new(ComplianceType compliance)
504
+ {
505
+ const char *name;
506
+
507
+ // Turn off undefined bits
508
+ compliance &= (SVGCompliance|X11Compliance|XPMCompliance);
509
+ name = ComplianceType_name(&compliance);
510
+ return rm_enum_new(Class_ComplianceType, ID2SYM(rb_intern(name)), INT2FIX(compliance));
511
+ }
512
+
513
+
514
+
486
515
  /**
487
516
  * Return the name of a CompositeOperator enum as a string.
488
517
  *
@@ -496,22 +525,15 @@ CompositeOperator_name(CompositeOperator op)
496
525
  {
497
526
  switch (op)
498
527
  {
499
- ENUM_TO_NAME(UndefinedCompositeOp)
500
- ENUM_TO_NAME(NoCompositeOp)
501
528
  ENUM_TO_NAME(AddCompositeOp)
502
529
  ENUM_TO_NAME(AtopCompositeOp)
503
- #if defined(HAVE_ENUM_BLURCOMPOSITEOP)
530
+ ENUM_TO_NAME(BlendCompositeOp)
504
531
  ENUM_TO_NAME(BlurCompositeOp)
505
- #endif
506
532
  ENUM_TO_NAME(BumpmapCompositeOp)
507
533
  ENUM_TO_NAME(ChangeMaskCompositeOp)
508
534
  ENUM_TO_NAME(ClearCompositeOp)
509
535
  ENUM_TO_NAME(ColorBurnCompositeOp)
510
- ENUM_TO_NAME(BlendCompositeOp)
511
536
  ENUM_TO_NAME(ColorDodgeCompositeOp)
512
- ENUM_TO_NAME(ExclusionCompositeOp)
513
- ENUM_TO_NAME(HardLightCompositeOp)
514
- ENUM_TO_NAME(SoftLightCompositeOp)
515
537
  ENUM_TO_NAME(ColorizeCompositeOp)
516
538
  ENUM_TO_NAME(CopyBlueCompositeOp)
517
539
  ENUM_TO_NAME(CopyCompositeOp)
@@ -523,10 +545,10 @@ CompositeOperator_name(CompositeOperator op)
523
545
  ENUM_TO_NAME(CopyOpacityCompositeOp)
524
546
  ENUM_TO_NAME(CopyRedCompositeOp)
525
547
  ENUM_TO_NAME(DarkenCompositeOp)
526
- #if defined(HAVE_ENUM_DISTORTCOMPOSITEOP)
548
+ ENUM_TO_NAME(DarkenIntensityCompositeOp)
527
549
  ENUM_TO_NAME(DistortCompositeOp)
528
- #endif
529
550
  ENUM_TO_NAME(DivideCompositeOp)
551
+ ENUM_TO_NAME(DivideSrcCompositeOp)
530
552
  ENUM_TO_NAME(DstAtopCompositeOp)
531
553
  ENUM_TO_NAME(DstCompositeOp)
532
554
  ENUM_TO_NAME(DstInCompositeOp)
@@ -535,36 +557,35 @@ CompositeOperator_name(CompositeOperator op)
535
557
  ENUM_TO_NAME(DifferenceCompositeOp)
536
558
  ENUM_TO_NAME(DisplaceCompositeOp)
537
559
  ENUM_TO_NAME(DissolveCompositeOp)
560
+ ENUM_TO_NAME(ExclusionCompositeOp)
561
+ ENUM_TO_NAME(HardLightCompositeOp)
562
+ #if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9)
563
+ ENUM_TO_NAME(HardMixCompositeOp)
564
+ #endif
538
565
  ENUM_TO_NAME(HueCompositeOp)
539
566
  ENUM_TO_NAME(InCompositeOp)
540
567
  ENUM_TO_NAME(LightenCompositeOp)
541
- #if defined(HAVE_ENUM_LINEARBURNCOMPOSITEOP)
568
+ ENUM_TO_NAME(LightenIntensityCompositeOp)
542
569
  ENUM_TO_NAME(LinearBurnCompositeOp)
543
- #endif
544
- #if defined(HAVE_ENUM_LINEARDODGECOMPOSITEOP)
545
570
  ENUM_TO_NAME(LinearDodgeCompositeOp)
546
- #endif
547
571
  ENUM_TO_NAME(LinearLightCompositeOp)
548
572
  ENUM_TO_NAME(LuminizeCompositeOp)
549
- #if defined(HAVE_ENUM_MATHEMATICSCOMPOSITEOP)
550
573
  ENUM_TO_NAME(MathematicsCompositeOp)
551
- #endif
552
574
  ENUM_TO_NAME(MinusCompositeOp)
575
+ ENUM_TO_NAME(MinusSrcCompositeOp)
553
576
  ENUM_TO_NAME(ModulateCompositeOp)
554
577
  ENUM_TO_NAME(MultiplyCompositeOp)
578
+ ENUM_TO_NAME(NoCompositeOp)
555
579
  ENUM_TO_NAME(OutCompositeOp)
556
580
  ENUM_TO_NAME(OverCompositeOp)
557
581
  ENUM_TO_NAME(OverlayCompositeOp)
558
- #if defined(HAVE_ENUM_PEGTOPLIGHTCOMPOSITEOP)
559
582
  ENUM_TO_NAME(PegtopLightCompositeOp)
560
- #endif
561
- #if defined(HAVE_ENUM_PINLIGHTCOMPOSITEOP)
562
583
  ENUM_TO_NAME(PinLightCompositeOp)
563
- #endif
564
584
  ENUM_TO_NAME(PlusCompositeOp)
565
585
  ENUM_TO_NAME(ReplaceCompositeOp)
566
586
  ENUM_TO_NAME(SaturateCompositeOp)
567
587
  ENUM_TO_NAME(ScreenCompositeOp)
588
+ ENUM_TO_NAME(SoftLightCompositeOp)
568
589
  ENUM_TO_NAME(SrcAtopCompositeOp)
569
590
  ENUM_TO_NAME(SrcCompositeOp)
570
591
  ENUM_TO_NAME(SrcInCompositeOp)
@@ -572,13 +593,11 @@ CompositeOperator_name(CompositeOperator op)
572
593
  ENUM_TO_NAME(SrcOverCompositeOp)
573
594
  ENUM_TO_NAME(SubtractCompositeOp)
574
595
  ENUM_TO_NAME(ThresholdCompositeOp)
575
- #if defined(HAVE_ENUM_VIVIDLIGHTCOMPOSITEOP)
576
596
  ENUM_TO_NAME(VividLightCompositeOp)
577
- #endif
578
597
  ENUM_TO_NAME(XorCompositeOp)
598
+ default:
599
+ ENUM_TO_NAME(UndefinedCompositeOp)
579
600
  }
580
-
581
- return "UndefinedCompositeOp";
582
601
  }
583
602
 
584
603
 
@@ -611,44 +630,30 @@ CompressionType_name(CompressionType ct)
611
630
  {
612
631
  switch (ct)
613
632
  {
614
- ENUM_TO_NAME(UndefinedCompression)
615
633
  ENUM_TO_NAME(NoCompression)
616
- #if defined(HAVE_ENUM_B44COMPRESSION)
617
634
  ENUM_TO_NAME(B44Compression)
618
- #endif
619
- #if defined(HAVE_ENUM_B44ACOMPRESSION)
620
635
  ENUM_TO_NAME(B44ACompression)
621
- #endif
622
636
  ENUM_TO_NAME(BZipCompression)
623
- #if defined(HAVE_ENUM_DXT1COMPRESSION)
624
637
  ENUM_TO_NAME(DXT1Compression)
625
- #endif
626
- #if defined(HAVE_ENUM_DXT3COMPRESSION)
627
638
  ENUM_TO_NAME(DXT3Compression)
628
- #endif
629
- #if defined(HAVE_ENUM_DXT5COMPRESSION)
630
639
  ENUM_TO_NAME(DXT5Compression)
631
- #endif
632
640
  ENUM_TO_NAME(FaxCompression)
633
641
  ENUM_TO_NAME(Group4Compression)
634
642
  ENUM_TO_NAME(JPEGCompression)
635
643
  ENUM_TO_NAME(JPEG2000Compression)
636
644
  ENUM_TO_NAME(LosslessJPEGCompression)
637
645
  ENUM_TO_NAME(LZWCompression)
638
- #if defined(HAVE_ENUM_PIZCOMPRESSION)
639
646
  ENUM_TO_NAME(PizCompression)
640
- #endif
641
- #if defined(HAVE_ENUM_PXR24COMPRESSION)
642
647
  ENUM_TO_NAME(Pxr24Compression)
643
- #endif
644
648
  ENUM_TO_NAME(RLECompression)
645
649
  ENUM_TO_NAME(ZipCompression)
646
- #if defined(HAVE_ENUM_ZIPSCOMPRESSION)
647
650
  ENUM_TO_NAME(ZipSCompression)
648
- #endif
649
- }
650
-
651
- return "UndefinedCompression";
651
+ ENUM_TO_NAME(LZMACompression)
652
+ ENUM_TO_NAME(JBIG1Compression)
653
+ ENUM_TO_NAME(JBIG2Compression)
654
+ default:
655
+ ENUM_TO_NAME(UndefinedCompression)
656
+ }
652
657
  }
653
658
 
654
659
 
@@ -681,13 +686,12 @@ DisposeType_name(DisposeType type)
681
686
  {
682
687
  switch(type)
683
688
  {
684
- ENUM_TO_NAME(UndefinedDispose)
685
689
  ENUM_TO_NAME(BackgroundDispose)
686
690
  ENUM_TO_NAME(NoneDispose)
687
691
  ENUM_TO_NAME(PreviousDispose)
692
+ default:
693
+ ENUM_TO_NAME(UndefinedDispose)
688
694
  }
689
-
690
- return "UndefinedDispose";
691
695
  }
692
696
 
693
697
 
@@ -707,6 +711,43 @@ DisposeType_new(DisposeType type)
707
711
  }
708
712
 
709
713
 
714
+ /**
715
+ * Return the name of a EndianType enum as a string.
716
+ *
717
+ * No Ruby usage (internal function)
718
+ *
719
+ * @param type the EndianType
720
+ * @return the name
721
+ */
722
+ static const char *
723
+ EndianType_name(EndianType type)
724
+ {
725
+ switch(type)
726
+ {
727
+ ENUM_TO_NAME(LSBEndian)
728
+ ENUM_TO_NAME(MSBEndian)
729
+ default:
730
+ ENUM_TO_NAME(UndefinedEndian)
731
+ }
732
+ }
733
+
734
+
735
+ /**
736
+ * Construct an EndianType enum object.
737
+ *
738
+ * No Ruby usage (internal function)
739
+ *
740
+ * @param type the EndianType
741
+ * @return a new EndianType enumerator
742
+ */
743
+ VALUE
744
+ EndianType_new(EndianType type)
745
+ {
746
+ const char *name = EndianType_name(type);
747
+ return rm_enum_new(Class_EndianType, ID2SYM(rb_intern(name)), INT2FIX(type));
748
+ }
749
+
750
+
710
751
  /**
711
752
  * Return the name of a FilterTypes enum as a string.
712
753
  *
@@ -720,7 +761,6 @@ FilterTypes_name(FilterTypes type)
720
761
  {
721
762
  switch(type)
722
763
  {
723
- ENUM_TO_NAME(UndefinedFilter)
724
764
  ENUM_TO_NAME(PointFilter)
725
765
  ENUM_TO_NAME(BoxFilter)
726
766
  ENUM_TO_NAME(TriangleFilter)
@@ -736,32 +776,27 @@ FilterTypes_name(FilterTypes type)
736
776
  ENUM_TO_NAME(LanczosFilter)
737
777
  ENUM_TO_NAME(BesselFilter)
738
778
  ENUM_TO_NAME(SincFilter)
739
- #if defined(HAVE_ENUM_KAISERFILTER)
740
779
  ENUM_TO_NAME(KaiserFilter)
741
- #endif
742
- #if defined(HAVE_ENUM_WELSHFILTER)
743
780
  ENUM_TO_NAME(WelshFilter)
744
- #endif
745
- #if defined(HAVE_ENUM_PARZENFILTER)
746
781
  ENUM_TO_NAME(ParzenFilter)
747
- #endif
748
- #if defined(HAVE_ENUM_LAGRANGEFILTER)
749
782
  ENUM_TO_NAME(LagrangeFilter)
750
- #endif
751
- #if defined(HAVE_ENUM_BOHMANFILTER)
752
783
  ENUM_TO_NAME(BohmanFilter)
753
- #endif
754
- #if defined(HAVE_ENUM_BARTLETTFILTER)
755
784
  ENUM_TO_NAME(BartlettFilter)
785
+ // ENUM_TO_NAME(JincFilter) is alias of BesselFilter
786
+ ENUM_TO_NAME(SincFastFilter)
787
+ ENUM_TO_NAME(LanczosSharpFilter)
788
+ ENUM_TO_NAME(Lanczos2Filter)
789
+ ENUM_TO_NAME(Lanczos2SharpFilter)
790
+ ENUM_TO_NAME(RobidouxFilter)
791
+ ENUM_TO_NAME(RobidouxSharpFilter)
792
+ ENUM_TO_NAME(CosineFilter)
793
+ ENUM_TO_NAME(SplineFilter)
794
+ #if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9)
795
+ ENUM_TO_NAME(LanczosRadiusFilter)
756
796
  #endif
757
- #if defined(HAVE_ENUM_SENTINELFILTER)
758
- // not a real filter name - defeat gcc warning message
759
- case SentinelFilter:
760
- break;
761
- #endif
797
+ default:
798
+ ENUM_TO_NAME(UndefinedFilter)
762
799
  }
763
-
764
- return "UndefinedFilter";
765
800
  }
766
801
 
767
802
 
@@ -782,86 +817,98 @@ FilterTypes_new(FilterTypes type)
782
817
 
783
818
 
784
819
  /**
785
- * Return the name of a EndianType enum as a string.
820
+ * Return the name of a GravityType enum as a string.
786
821
  *
787
822
  * No Ruby usage (internal function)
788
823
  *
789
- * @param type the EndianType
824
+ * @param type the GravityType
790
825
  * @return the name
791
826
  */
792
827
  static const char *
793
- EndianType_name(EndianType type)
828
+ GravityType_name(GravityType type)
794
829
  {
795
830
  switch(type)
796
831
  {
797
- ENUM_TO_NAME(UndefinedEndian)
798
- ENUM_TO_NAME(LSBEndian)
799
- ENUM_TO_NAME(MSBEndian)
832
+ ENUM_TO_NAME(NorthWestGravity)
833
+ ENUM_TO_NAME(NorthGravity)
834
+ ENUM_TO_NAME(NorthEastGravity)
835
+ ENUM_TO_NAME(WestGravity)
836
+ ENUM_TO_NAME(CenterGravity)
837
+ ENUM_TO_NAME(EastGravity)
838
+ ENUM_TO_NAME(SouthWestGravity)
839
+ ENUM_TO_NAME(SouthGravity)
840
+ ENUM_TO_NAME(SouthEastGravity)
841
+ ENUM_TO_NAME(StaticGravity)
842
+ default:
843
+ ENUM_TO_NAME(UndefinedGravity)
800
844
  }
801
- return "UndefinedEndian";
802
845
  }
803
846
 
804
847
 
805
848
  /**
806
- * Construct an EndianType enum object.
849
+ * Construct an GravityType enum object for the specified value.
807
850
  *
808
851
  * No Ruby usage (internal function)
809
852
  *
810
- * @param type the EndianType
811
- * @return a new EndianType enumerator
853
+ * @param type the GravityType
854
+ * @return a new GravityType enumerator
812
855
  */
813
856
  VALUE
814
- EndianType_new(EndianType type)
857
+ GravityType_new(GravityType type)
815
858
  {
816
- const char *name = EndianType_name(type);
817
- return rm_enum_new(Class_EndianType, ID2SYM(rb_intern(name)), INT2FIX(type));
859
+ const char *name = GravityType_name(type);
860
+ return rm_enum_new(Class_GravityType, ID2SYM(rb_intern(name)), INT2FIX(type));
818
861
  }
819
862
 
820
863
 
821
864
  /**
822
- * Return the name of a GravityType enum as a string.
865
+ * Return the name of a ImageLayerMethod enum as a string.
823
866
  *
824
867
  * No Ruby usage (internal function)
825
868
  *
826
- * @param type the GravityType
869
+ * @param method the ImageLayerMethod
827
870
  * @return the name
828
871
  */
829
872
  static const char *
830
- GravityType_name(GravityType type)
873
+ ImageLayerMethod_name(ImageLayerMethod method)
831
874
  {
832
- switch(type)
875
+ switch(method)
833
876
  {
834
- ENUM_TO_NAME(ForgetGravity)
835
- ENUM_TO_NAME(NorthWestGravity)
836
- ENUM_TO_NAME(NorthGravity)
837
- ENUM_TO_NAME(NorthEastGravity)
838
- ENUM_TO_NAME(WestGravity)
839
- ENUM_TO_NAME(CenterGravity)
840
- ENUM_TO_NAME(EastGravity)
841
- ENUM_TO_NAME(SouthWestGravity)
842
- ENUM_TO_NAME(SouthGravity)
843
- ENUM_TO_NAME(SouthEastGravity)
844
- ENUM_TO_NAME(StaticGravity)
877
+ ENUM_TO_NAME(CompareAnyLayer)
878
+ ENUM_TO_NAME(CompareClearLayer)
879
+ ENUM_TO_NAME(CompareOverlayLayer)
880
+ ENUM_TO_NAME(OptimizeLayer)
881
+ ENUM_TO_NAME(OptimizePlusLayer)
882
+ ENUM_TO_NAME(CoalesceLayer)
883
+ ENUM_TO_NAME(DisposeLayer)
884
+ ENUM_TO_NAME(OptimizeTransLayer)
885
+ ENUM_TO_NAME(OptimizeImageLayer)
886
+ ENUM_TO_NAME(RemoveDupsLayer)
887
+ ENUM_TO_NAME(RemoveZeroLayer)
888
+ ENUM_TO_NAME(CompositeLayer)
889
+ ENUM_TO_NAME(MergeLayer)
890
+ ENUM_TO_NAME(MosaicLayer)
891
+ ENUM_TO_NAME(FlattenLayer)
892
+ ENUM_TO_NAME(TrimBoundsLayer)
893
+ default:
894
+ ENUM_TO_NAME(UndefinedLayer)
845
895
  }
846
-
847
- // Defeat "duplicate case value" error.
848
- return "UndefinedGravity";
849
896
  }
850
897
 
851
898
 
852
899
  /**
853
- * Construct an GravityType enum object for the specified value.
900
+ * Construct an ImageLayerMethod enum object for the specified value.
854
901
  *
855
902
  * No Ruby usage (internal function)
856
903
  *
857
- * @param type the GravityType
858
- * @return a new GravityType enumerator
904
+ * @param method the ImageLayerMethod
905
+ * @return a new ImageLayerMethod enumerator
859
906
  */
860
907
  VALUE
861
- GravityType_new(GravityType type)
908
+ ImageLayerMethod_new(ImageLayerMethod method)
862
909
  {
863
- const char *name = GravityType_name(type);
864
- return rm_enum_new(Class_GravityType, ID2SYM(rb_intern(name)), INT2FIX(type));
910
+ const char *name = ImageLayerMethod_name(method);
911
+ return rm_enum_new(Class_ImageLayerMethod, ID2SYM(rb_intern(name)), INT2FIX(method));
865
912
  }
866
913
 
867
914
 
@@ -878,7 +925,6 @@ ImageType_name(ImageType type)
878
925
  {
879
926
  switch(type)
880
927
  {
881
- ENUM_TO_NAME(UndefinedType)
882
928
  ENUM_TO_NAME(BilevelType)
883
929
  ENUM_TO_NAME(GrayscaleType)
884
930
  ENUM_TO_NAME(GrayscaleMatteType)
@@ -890,9 +936,9 @@ ImageType_name(ImageType type)
890
936
  ENUM_TO_NAME(ColorSeparationMatteType)
891
937
  ENUM_TO_NAME(OptimizeType)
892
938
  ENUM_TO_NAME(PaletteBilevelMatteType)
939
+ default:
940
+ ENUM_TO_NAME(UndefinedType)
893
941
  }
894
-
895
- return "UndefinedType";
896
942
  }
897
943
 
898
944
 
@@ -925,7 +971,6 @@ InterlaceType_name(InterlaceType interlace)
925
971
  {
926
972
  switch(interlace)
927
973
  {
928
- ENUM_TO_NAME(UndefinedInterlace)
929
974
  ENUM_TO_NAME(GIFInterlace)
930
975
  ENUM_TO_NAME(JPEGInterlace)
931
976
  ENUM_TO_NAME(PNGInterlace)
@@ -933,9 +978,9 @@ InterlaceType_name(InterlaceType interlace)
933
978
  ENUM_TO_NAME(LineInterlace)
934
979
  ENUM_TO_NAME(PlaneInterlace)
935
980
  ENUM_TO_NAME(PartitionInterlace)
981
+ default:
982
+ ENUM_TO_NAME(UndefinedInterlace)
936
983
  }
937
-
938
- return "UndefinedInterlace";
939
984
  }
940
985
 
941
986
 
@@ -968,7 +1013,6 @@ InterpolatePixelMethod_name(InterpolatePixelMethod interpolate)
968
1013
  {
969
1014
  switch(interpolate)
970
1015
  {
971
- ENUM_TO_NAME(UndefinedInterpolatePixel)
972
1016
  ENUM_TO_NAME(AverageInterpolatePixel)
973
1017
  ENUM_TO_NAME(BicubicInterpolatePixel)
974
1018
  ENUM_TO_NAME(BilinearInterpolatePixel)
@@ -977,9 +1021,14 @@ InterpolatePixelMethod_name(InterpolatePixelMethod interpolate)
977
1021
  ENUM_TO_NAME(MeshInterpolatePixel)
978
1022
  ENUM_TO_NAME(NearestNeighborInterpolatePixel)
979
1023
  ENUM_TO_NAME(SplineInterpolatePixel)
1024
+ ENUM_TO_NAME(Average9InterpolatePixel)
1025
+ ENUM_TO_NAME(Average16InterpolatePixel)
1026
+ ENUM_TO_NAME(BlendInterpolatePixel)
1027
+ ENUM_TO_NAME(BackgroundInterpolatePixel)
1028
+ ENUM_TO_NAME(CatromInterpolatePixel)
1029
+ default:
1030
+ ENUM_TO_NAME(UndefinedInterpolatePixel)
980
1031
  }
981
-
982
- return "UndefinedInterpolatePixel";
983
1032
  }
984
1033
 
985
1034
 
@@ -999,66 +1048,6 @@ InterpolatePixelMethod_new(InterpolatePixelMethod interpolate)
999
1048
  }
1000
1049
 
1001
1050
 
1002
- /**
1003
- * Return the name of a MagickLayerMethod enum as a string.
1004
- *
1005
- * No Ruby usage (internal function)
1006
- *
1007
- * @param method the MagickLayerMethod
1008
- * @return the name
1009
- */
1010
- static const char *
1011
- LAYERMETHODTYPE_NAME(LAYERMETHODTYPE method)
1012
- {
1013
- switch(method)
1014
- {
1015
- ENUM_TO_NAME(UndefinedLayer)
1016
- ENUM_TO_NAME(CompareAnyLayer)
1017
- ENUM_TO_NAME(CompareClearLayer)
1018
- ENUM_TO_NAME(CompareOverlayLayer)
1019
- ENUM_TO_NAME(OptimizeLayer)
1020
- ENUM_TO_NAME(OptimizePlusLayer)
1021
- ENUM_TO_NAME(CoalesceLayer)
1022
- ENUM_TO_NAME(DisposeLayer)
1023
- ENUM_TO_NAME(OptimizeTransLayer)
1024
- ENUM_TO_NAME(OptimizeImageLayer)
1025
- ENUM_TO_NAME(RemoveDupsLayer)
1026
- ENUM_TO_NAME(RemoveZeroLayer)
1027
- ENUM_TO_NAME(CompositeLayer)
1028
- #if defined(HAVE_ENUM_MERGELAYER)
1029
- ENUM_TO_NAME(MergeLayer)
1030
- #endif
1031
- #if defined(HAVE_ENUM_MOSAICLAYER)
1032
- ENUM_TO_NAME(MosaicLayer)
1033
- #endif
1034
- #if defined(HAVE_ENUM_FLATTENLAYER)
1035
- ENUM_TO_NAME(FlattenLayer)
1036
- #endif
1037
- #if defined(HAVE_ENUM_TRIMBOUNDSLAYER)
1038
- ENUM_TO_NAME(TrimBoundsLayer)
1039
- #endif
1040
- }
1041
-
1042
- return "UndefinedLayer";
1043
- }
1044
-
1045
-
1046
- /**
1047
- * Construct an MagickLayerMethod enum object for the specified value.
1048
- *
1049
- * No Ruby usage (internal function)
1050
- *
1051
- * @param method the MagickLayerMethod
1052
- * @return a new MagickLayerMethod enumerator
1053
- */
1054
- VALUE
1055
- LAYERMETHODTYPE_NEW(LAYERMETHODTYPE method)
1056
- {
1057
- const char *name = LAYERMETHODTYPE_NAME(method);
1058
- return rm_enum_new(CLASS_LAYERMETHODTYPE, ID2SYM(rb_intern(name)), INT2FIX(method));
1059
- }
1060
-
1061
-
1062
1051
  /**
1063
1052
  * Return the name of a OrientationType enum as a string.
1064
1053
  *
@@ -1072,7 +1061,6 @@ OrientationType_name(OrientationType type)
1072
1061
  {
1073
1062
  switch(type)
1074
1063
  {
1075
- ENUM_TO_NAME(UndefinedOrientation)
1076
1064
  ENUM_TO_NAME(TopLeftOrientation)
1077
1065
  ENUM_TO_NAME(TopRightOrientation)
1078
1066
  ENUM_TO_NAME(BottomRightOrientation)
@@ -1081,9 +1069,9 @@ OrientationType_name(OrientationType type)
1081
1069
  ENUM_TO_NAME(RightTopOrientation)
1082
1070
  ENUM_TO_NAME(RightBottomOrientation)
1083
1071
  ENUM_TO_NAME(LeftBottomOrientation)
1072
+ default:
1073
+ ENUM_TO_NAME(UndefinedOrientation)
1084
1074
  }
1085
-
1086
- return "UndefinedOrientation";
1087
1075
  }
1088
1076
 
1089
1077
 
@@ -1116,14 +1104,13 @@ RenderingIntent_name(RenderingIntent intent)
1116
1104
  {
1117
1105
  switch(intent)
1118
1106
  {
1119
- ENUM_TO_NAME(UndefinedIntent)
1120
1107
  ENUM_TO_NAME(SaturationIntent)
1121
1108
  ENUM_TO_NAME(PerceptualIntent)
1122
1109
  ENUM_TO_NAME(AbsoluteIntent)
1123
1110
  ENUM_TO_NAME(RelativeIntent)
1111
+ default:
1112
+ ENUM_TO_NAME(UndefinedIntent)
1124
1113
  }
1125
-
1126
- return "UndefinedIntent";
1127
1114
  }
1128
1115
 
1129
1116
 
@@ -1156,12 +1143,11 @@ ResolutionType_name(ResolutionType type)
1156
1143
  {
1157
1144
  switch(type)
1158
1145
  {
1159
- ENUM_TO_NAME(UndefinedResolution)
1160
1146
  ENUM_TO_NAME(PixelsPerInchResolution)
1161
1147
  ENUM_TO_NAME(PixelsPerCentimeterResolution)
1148
+ default:
1149
+ ENUM_TO_NAME(UndefinedResolution)
1162
1150
  }
1163
-
1164
- return "UndefinedResolution";
1165
1151
  }
1166
1152
 
1167
1153
 
@@ -1194,7 +1180,6 @@ StorageType_name(StorageType type)
1194
1180
  {
1195
1181
  switch (type)
1196
1182
  {
1197
- ENUM_TO_NAME(UndefinedPixel)
1198
1183
  ENUM_TO_NAME(CharPixel)
1199
1184
  ENUM_TO_NAME(DoublePixel)
1200
1185
  ENUM_TO_NAME(FloatPixel)
@@ -1202,9 +1187,93 @@ StorageType_name(StorageType type)
1202
1187
  ENUM_TO_NAME(LongPixel)
1203
1188
  ENUM_TO_NAME(QuantumPixel)
1204
1189
  ENUM_TO_NAME(ShortPixel)
1190
+ default:
1191
+ ENUM_TO_NAME(UndefinedPixel)
1205
1192
  }
1193
+ }
1194
+
1206
1195
 
1207
- return "UndefinedPixel";
1196
+ /**
1197
+ * Return the string representation of a StretchType value.
1198
+ *
1199
+ * No Ruby usage (internal function)
1200
+ *
1201
+ * @param stretch the StretchType value
1202
+ * @return the string
1203
+ */
1204
+ const char *
1205
+ StretchType_name(StretchType stretch)
1206
+ {
1207
+ switch (stretch)
1208
+ {
1209
+ ENUM_TO_NAME(NormalStretch)
1210
+ ENUM_TO_NAME(UltraCondensedStretch)
1211
+ ENUM_TO_NAME(ExtraCondensedStretch)
1212
+ ENUM_TO_NAME(CondensedStretch)
1213
+ ENUM_TO_NAME(SemiCondensedStretch)
1214
+ ENUM_TO_NAME(SemiExpandedStretch)
1215
+ ENUM_TO_NAME(ExpandedStretch)
1216
+ ENUM_TO_NAME(ExtraExpandedStretch)
1217
+ ENUM_TO_NAME(UltraExpandedStretch)
1218
+ ENUM_TO_NAME(AnyStretch)
1219
+ default:
1220
+ ENUM_TO_NAME(UndefinedStretch)
1221
+ }
1222
+ }
1223
+
1224
+
1225
+ /**
1226
+ * Construct a StretchType enum for a specified StretchType value.
1227
+ *
1228
+ * No Ruby usage (internal function)
1229
+ *
1230
+ * @param stretch the C StretchType value
1231
+ * @return a Ruby StretchType enum
1232
+ */
1233
+ VALUE
1234
+ StretchType_new(StretchType stretch)
1235
+ {
1236
+ const char *name = StretchType_name(stretch);
1237
+ return rm_enum_new(Class_StretchType, ID2SYM(rb_intern(name)), INT2FIX(stretch));
1238
+ }
1239
+
1240
+
1241
+ /**
1242
+ * Return the string representation of a StyleType value.
1243
+ *
1244
+ * No Ruby usage (internal function)
1245
+ *
1246
+ * @param style the StyleType value
1247
+ * @return the string
1248
+ */
1249
+ const char *
1250
+ StyleType_name(StyleType style)
1251
+ {
1252
+ switch (style)
1253
+ {
1254
+ ENUM_TO_NAME(NormalStyle)
1255
+ ENUM_TO_NAME(ItalicStyle)
1256
+ ENUM_TO_NAME(ObliqueStyle)
1257
+ ENUM_TO_NAME(AnyStyle)
1258
+ default:
1259
+ ENUM_TO_NAME(UndefinedStyle)
1260
+ }
1261
+ }
1262
+
1263
+
1264
+ /**
1265
+ * Construct a StyleType enum for a specified StyleType value.
1266
+ *
1267
+ * No Ruby usage (internal function)
1268
+ *
1269
+ * @param style the C StyleType value
1270
+ * @return a Ruby StyleType enum
1271
+ */
1272
+ VALUE
1273
+ StyleType_new(StyleType style)
1274
+ {
1275
+ const char *name = StyleType_name(style);
1276
+ return rm_enum_new(Class_StyleType, ID2SYM(rb_intern(name)), INT2FIX(style));
1208
1277
  }
1209
1278
 
1210
1279
 
@@ -1221,7 +1290,6 @@ VirtualPixelMethod_name(VirtualPixelMethod method)
1221
1290
  {
1222
1291
  switch (method)
1223
1292
  {
1224
- ENUM_TO_NAME(UndefinedVirtualPixelMethod)
1225
1293
  ENUM_TO_NAME(EdgeVirtualPixelMethod)
1226
1294
  ENUM_TO_NAME(MirrorVirtualPixelMethod)
1227
1295
  ENUM_TO_NAME(TileVirtualPixelMethod)
@@ -1234,24 +1302,14 @@ VirtualPixelMethod_name(VirtualPixelMethod method)
1234
1302
  ENUM_TO_NAME(BlackVirtualPixelMethod)
1235
1303
  ENUM_TO_NAME(GrayVirtualPixelMethod)
1236
1304
  ENUM_TO_NAME(WhiteVirtualPixelMethod)
1237
- #if defined(HAVE_ENUM_HORIZONTALTILEVIRTUALPIXELMETHOD)
1238
1305
  ENUM_TO_NAME(HorizontalTileVirtualPixelMethod)
1239
- #endif
1240
- #if defined(HAVE_ENUM_VERTICALTILEVIRTUALPIXELMETHOD)
1241
1306
  ENUM_TO_NAME(VerticalTileVirtualPixelMethod)
1242
- #endif
1243
- #if defined(HAVE_ENUM_HORIZONTALTILEEDGEVIRTUALPIXELMETHOD)
1244
1307
  ENUM_TO_NAME(HorizontalTileEdgeVirtualPixelMethod)
1245
- #endif
1246
- #if defined(HAVE_ENUM_VERTICALTILEEDGEVIRTUALPIXELMETHOD)
1247
1308
  ENUM_TO_NAME(VerticalTileEdgeVirtualPixelMethod)
1248
- #endif
1249
- #if defined(HAVE_ENUM_CHECKERTILEVIRTUALPIXELMETHOD)
1250
1309
  ENUM_TO_NAME(CheckerTileVirtualPixelMethod)
1251
- #endif
1310
+ default:
1311
+ ENUM_TO_NAME(UndefinedVirtualPixelMethod)
1252
1312
  }
1253
-
1254
- return "UndefinedVirtualPixelMethod";
1255
1313
  }
1256
1314
 
1257
1315