rmagick 2.0.0 → 2.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 (54) hide show
  1. data/ChangeLog +9 -0
  2. data/README.html +13 -13
  3. data/README.txt +11 -11
  4. data/doc/comtasks.html +25 -4
  5. data/doc/constants.html +8 -8
  6. data/doc/draw.html +112 -116
  7. data/doc/ex/axes.rb +1 -1
  8. data/doc/ex/clip_path.rb +5 -4
  9. data/doc/ex/get_type_metrics.rb +2 -2
  10. data/doc/ex/resize_to_fill.rb +10 -0
  11. data/doc/ex/{crop_resized.rb → resize_to_fit.rb} +2 -2
  12. data/doc/ilist.html +79 -82
  13. data/doc/image1.html +213 -322
  14. data/doc/image2.html +123 -136
  15. data/doc/image3.html +340 -198
  16. data/doc/imageattrs.html +211 -192
  17. data/doc/imusage.html +6 -7
  18. data/doc/index.html +9 -16
  19. data/doc/info.html +90 -61
  20. data/doc/magick.html +6 -6
  21. data/doc/optequiv.html +26 -13
  22. data/doc/rvg.html +22 -23
  23. data/doc/rvgclip.html +15 -16
  24. data/doc/rvggroup.html +23 -23
  25. data/doc/rvgimage.html +18 -19
  26. data/doc/rvgpattern.html +101 -82
  27. data/doc/rvgshape.html +14 -21
  28. data/doc/rvgstyle.html +4 -4
  29. data/doc/rvgtext.html +10 -9
  30. data/doc/rvgtspan.html +12 -11
  31. data/doc/rvgtut.html +4 -4
  32. data/doc/rvguse.html +4 -4
  33. data/doc/rvgxform.html +9 -9
  34. data/doc/struct.html +193 -195
  35. data/doc/usage.html +12 -10
  36. data/examples/constitute.rb +7 -0
  37. data/ext/RMagick/MANIFEST +4 -4
  38. data/ext/RMagick/extconf.rb +54 -42
  39. data/ext/RMagick/rmagick.h +34 -11
  40. data/ext/RMagick/rmdraw.c +6 -6
  41. data/ext/RMagick/rmfill.c +2 -2
  42. data/ext/RMagick/rmilist.c +9 -9
  43. data/ext/RMagick/rmimage.c +110 -106
  44. data/ext/RMagick/rminfo.c +33 -14
  45. data/ext/RMagick/rmmain.c +11 -21
  46. data/ext/RMagick/rmutil.c +51 -11
  47. data/lib/RMagick.rb +25 -18
  48. data/post-clean.rb +3 -3
  49. data/post-install.rb +4 -5
  50. data/rmagick.gemspec +5 -3
  51. data/uninstall.rb +6 -6
  52. metadata +7 -7
  53. data/doc/ex/Adispatch.rb +0 -43
  54. data/doc/ex/Zconstitute.rb +0 -9
@@ -1,6 +1,6 @@
1
- /* $Id: rmimage.c,v 1.269 2007/12/23 21:21:51 rmagick Exp $ */
1
+ /* $Id: rmimage.c,v 1.277 2008/01/08 23:47:33 rmagick Exp $ */
2
2
  /*============================================================================\
3
- | Copyright (C) 2007 by Timothy P. Hunter
3
+ | Copyright (C) 2008 by Timothy P. Hunter
4
4
  | Name: rmimage.c
5
5
  | Author: Tim Hunter
6
6
  | Purpose: Image class method definitions for RMagick
@@ -14,7 +14,7 @@ typedef Image *(flipper_t)(const Image *, ExceptionInfo *);
14
14
  typedef Image *(magnifier_t)(const Image *, ExceptionInfo *);
15
15
  typedef Image *(reader_t)(const Info *, ExceptionInfo *);
16
16
  typedef Image *(scaler_t)(const Image *, const unsigned long, const unsigned long, ExceptionInfo *);
17
- typedef unsigned int (thresholder_t)(Image *, const char *);
17
+ typedef MagickBooleanType (thresholder_t)(Image *, const char *);
18
18
  typedef Image *(xformer_t)(const Image *, const RectangleInfo *, ExceptionInfo *);
19
19
 
20
20
  static VALUE cropper(int, int, VALUE *, VALUE);
@@ -350,10 +350,10 @@ Image_add_profile(VALUE self, VALUE name)
350
350
  long profile_filename_l = 0;
351
351
  const StringInfo *profile;
352
352
 
353
- image = rm_check_frozen_image(self);
353
+ image = rm_check_frozen(self);
354
354
 
355
355
  // ProfileImage issues a warning if something goes wrong.
356
- profile_filename = rb_str2cstr(name, &profile_filename_l);
356
+ profile_filename = rm_str2cstr(name, &profile_filename_l);
357
357
 
358
358
  info = CloneImageInfo(NULL);
359
359
  if (!info)
@@ -408,7 +408,7 @@ Image_alpha_eq(VALUE self, VALUE type)
408
408
  Image *image;
409
409
  AlphaChannelType alpha;
410
410
 
411
- image = rm_check_frozen_image(self);
411
+ image = rm_check_frozen(self);
412
412
 
413
413
  VALUE_TO_ENUM(type, alpha, AlphaChannelType);
414
414
 
@@ -558,7 +558,7 @@ Image_aset(VALUE self, VALUE key_arg, VALUE attr_arg)
558
558
  char *attr;
559
559
  unsigned int okay;
560
560
 
561
- image = rm_check_frozen_image(self);
561
+ image = rm_check_frozen(self);
562
562
 
563
563
  attr = attr_arg == Qnil ? NULL : StringValuePtr(attr_arg);
564
564
 
@@ -705,7 +705,7 @@ Image_auto_orient(VALUE self)
705
705
  VALUE
706
706
  Image_auto_orient_bang(VALUE self)
707
707
  {
708
- (void) rm_check_frozen_image(self);
708
+ (void) rm_check_frozen(self);
709
709
  return auto_orient(True, self);
710
710
  }
711
711
 
@@ -729,7 +729,7 @@ Image_background_color(VALUE self)
729
729
  VALUE
730
730
  Image_background_color_eq(VALUE self, VALUE color)
731
731
  {
732
- Image *image = rm_check_frozen_image(self);
732
+ Image *image = rm_check_frozen(self);
733
733
  Color_to_PixelPacket(&image->background_color, color);
734
734
  return self;
735
735
  }
@@ -791,7 +791,7 @@ VALUE Image_bias_eq(VALUE self, VALUE pct)
791
791
  Image *image;
792
792
  double bias;
793
793
 
794
- image = rm_check_frozen_image(self);
794
+ image = rm_check_frozen(self);
795
795
  bias = rm_percentage(pct);
796
796
  image->bias = bias * QuantumRange;
797
797
 
@@ -865,7 +865,7 @@ Image_black_point_compensation_eq(VALUE self, VALUE arg)
865
865
  Image *image;
866
866
  char *value;
867
867
 
868
- image = rm_check_frozen_image(self);
868
+ image = rm_check_frozen(self);
869
869
  (void) rm_set_property(image, BlackPointCompensationKey, NULL);
870
870
  value = RTEST(arg) ? "true" : "false";
871
871
  (void) rm_set_property(image, BlackPointCompensationKey, value);
@@ -1331,7 +1331,7 @@ Image_border_bang(
1331
1331
  VALUE height,
1332
1332
  VALUE color)
1333
1333
  {
1334
- (void) rm_check_frozen_image(self);
1334
+ (void) rm_check_frozen(self);
1335
1335
  return border(True, self, width, height, color);
1336
1336
  }
1337
1337
 
@@ -1366,7 +1366,7 @@ Image_border_color(VALUE self)
1366
1366
  VALUE
1367
1367
  Image_border_color_eq(VALUE self, VALUE color)
1368
1368
  {
1369
- Image *image = rm_check_frozen_image(self);
1369
+ Image *image = rm_check_frozen(self);
1370
1370
  Color_to_PixelPacket(&image->border_color, color);
1371
1371
  return self;
1372
1372
  }
@@ -1700,7 +1700,7 @@ Image_chromaticity(VALUE self)
1700
1700
  VALUE
1701
1701
  Image_chromaticity_eq(VALUE self, VALUE chroma)
1702
1702
  {
1703
- Image *image = rm_check_frozen_image(self);
1703
+ Image *image = rm_check_frozen(self);
1704
1704
  ChromaticityInfo_to_ChromaticityInfo(&image->chromaticity, chroma);
1705
1705
  return self;
1706
1706
  }
@@ -1737,7 +1737,7 @@ Image_clut_channel(int argc, VALUE *argv, VALUE self)
1737
1737
  ChannelType channels;
1738
1738
  MagickBooleanType okay;
1739
1739
 
1740
- image = rm_check_frozen_image(self);
1740
+ image = rm_check_frozen(self);
1741
1741
 
1742
1742
  // check_destroyed before confirming the arguments
1743
1743
  if (argc >= 1)
@@ -1861,9 +1861,9 @@ static VALUE set_profile(VALUE self, const char *name, VALUE profile)
1861
1861
  long profile_length;
1862
1862
  const StringInfo *profile_data;
1863
1863
 
1864
- image = rm_check_frozen_image(self);
1864
+ image = rm_check_frozen(self);
1865
1865
 
1866
- profile_blob = rb_str2cstr(profile, &profile_length);
1866
+ profile_blob = rm_str2cstr(profile, &profile_length);
1867
1867
 
1868
1868
  GetExceptionInfo(&exception);
1869
1869
  m = GetMagickInfo(name, &exception);
@@ -1894,7 +1894,7 @@ static VALUE set_profile(VALUE self, const char *name, VALUE profile)
1894
1894
  {
1895
1895
  (void)ProfileImage(image, profile_name, profile_data->datum
1896
1896
  , (unsigned long)profile_data->length
1897
- , (MagickBooleanType)False);
1897
+ , (MagickBooleanType)MagickFalse);
1898
1898
  if (image->exception.severity >= ErrorException)
1899
1899
  {
1900
1900
  break;
@@ -2183,7 +2183,7 @@ Image_colorspace_eq(VALUE self, VALUE colorspace)
2183
2183
  Image *image;
2184
2184
  ColorspaceType new_cs;
2185
2185
 
2186
- image = rm_check_frozen_image(self);
2186
+ image = rm_check_frozen(self);
2187
2187
  VALUE_TO_ENUM(colorspace, new_cs, ColorspaceType);
2188
2188
  (void) SetImageColorspace(image, new_cs);
2189
2189
 
@@ -2349,7 +2349,7 @@ VALUE Image_compose_eq(
2349
2349
  VALUE self,
2350
2350
  VALUE compose_arg)
2351
2351
  {
2352
- Image *image = rm_check_frozen_image(self);
2352
+ Image *image = rm_check_frozen(self);
2353
2353
  VALUE_TO_ENUM(compose_arg, image->compose, CompositeOperator);
2354
2354
  return self;
2355
2355
  }
@@ -2622,7 +2622,7 @@ Image_compression(VALUE self)
2622
2622
  VALUE
2623
2623
  Image_compression_eq(VALUE self, VALUE compression)
2624
2624
  {
2625
- Image *image = rm_check_frozen_image(self);
2625
+ Image *image = rm_check_frozen(self);
2626
2626
  VALUE_TO_ENUM(compression, image->compression, CompressionType);
2627
2627
  return self;
2628
2628
  }
@@ -2635,7 +2635,7 @@ Image_compression_eq(VALUE self, VALUE compression)
2635
2635
  VALUE
2636
2636
  Image_compress_colormap_bang(VALUE self)
2637
2637
  {
2638
- Image *image = rm_check_frozen_image(self);
2638
+ Image *image = rm_check_frozen(self);
2639
2639
  (void) CompressImageColormap(image);
2640
2640
  rm_check_image_exception(image, RetainOnError);
2641
2641
 
@@ -2692,13 +2692,13 @@ Image_constitute(VALUE class, VALUE width_arg, VALUE height_arg
2692
2692
  rb_raise(rb_eArgError, "width and height must be non-zero");
2693
2693
  }
2694
2694
 
2695
- map = rb_str2cstr(map_arg, &map_l);
2695
+ map = rm_str2cstr(map_arg, &map_l);
2696
2696
 
2697
2697
  npixels = (long)(width * height * map_l);
2698
- if (RARRAY(pixels_arg)->len != npixels)
2698
+ if (RARRAY_LEN(pixels_arg) != npixels)
2699
2699
  {
2700
2700
  rb_raise(rb_eArgError, "wrong number of array elements (%ld for %ld)"
2701
- , RARRAY(pixels_arg)->len, npixels);
2701
+ , RARRAY_LEN(pixels_arg), npixels);
2702
2702
  }
2703
2703
 
2704
2704
  // Inspect the first element in the pixels array to determine the expected
@@ -3044,7 +3044,7 @@ Image_crop(int argc, VALUE *argv, VALUE self)
3044
3044
  VALUE
3045
3045
  Image_crop_bang(int argc, VALUE *argv, VALUE self)
3046
3046
  {
3047
- (void) rm_check_frozen_image(self);
3047
+ (void) rm_check_frozen(self);
3048
3048
  return cropper(True, argc, argv, self);
3049
3049
  }
3050
3050
 
@@ -3109,7 +3109,7 @@ Image_density_eq(VALUE self, VALUE density_arg)
3109
3109
  int count;
3110
3110
  double x_res, y_res;
3111
3111
 
3112
- image = rm_check_frozen_image(self);
3112
+ image = rm_check_frozen(self);
3113
3113
 
3114
3114
  // Get the Class ID for the Geometry class.
3115
3115
  if (!Class_Geometry)
@@ -3189,7 +3189,7 @@ DEF_ATTR_ACCESSOR(Image, delay, ulong)
3189
3189
  VALUE
3190
3190
  Image_delete_profile(VALUE self, VALUE name)
3191
3191
  {
3192
- Image *image = rm_check_frozen_image(self);
3192
+ Image *image = rm_check_frozen(self);
3193
3193
  (void) ProfileImage(image, StringValuePtr(name), NULL, 0, MagickTrue);
3194
3194
  rm_check_image_exception(image, RetainOnError);
3195
3195
 
@@ -3377,7 +3377,7 @@ Image_dispatch(int argc, VALUE *argv, VALUE self)
3377
3377
  y = NUM2LONG(argv[1]);
3378
3378
  columns = NUM2ULONG(argv[2]);
3379
3379
  rows = NUM2ULONG(argv[3]);
3380
- map = rb_str2cstr(argv[4], &mapL);
3380
+ map = rm_str2cstr(argv[4], &mapL);
3381
3381
  if (argc == 6)
3382
3382
  {
3383
3383
  stg_type = RTEST(argv[5]) ? DoublePixel : QuantumPixel;
@@ -3470,7 +3470,7 @@ Image_dispose(VALUE self)
3470
3470
  VALUE
3471
3471
  Image_dispose_eq(VALUE self, VALUE dispose)
3472
3472
  {
3473
- Image *image = rm_check_frozen_image(self);
3473
+ Image *image = rm_check_frozen(self);
3474
3474
  VALUE_TO_ENUM(dispose, image->dispose, DisposeType);
3475
3475
  return self;
3476
3476
  }
@@ -3561,7 +3561,7 @@ Image_distort(int argc, VALUE *argv, VALUE self)
3561
3561
  break;
3562
3562
  }
3563
3563
 
3564
- npoints = RARRAY(pts)->len;
3564
+ npoints = RARRAY_LEN(pts);
3565
3565
  // Allocate points array from Ruby's memory. If an error occurs Ruby will
3566
3566
  // be able to clean it up.
3567
3567
  points = ALLOC_N(double, npoints);
@@ -3858,7 +3858,7 @@ Image_endian(VALUE self)
3858
3858
  VALUE
3859
3859
  Image_endian_eq(VALUE self, VALUE type)
3860
3860
  {
3861
- Image *image = rm_check_frozen_image(self);
3861
+ Image *image = rm_check_frozen(self);
3862
3862
  VALUE_TO_ENUM(type, image->endian, EndianType);
3863
3863
  return self;
3864
3864
  }
@@ -3955,7 +3955,7 @@ Image_equalize_channel(int argc, VALUE *argv, VALUE self)
3955
3955
  VALUE
3956
3956
  Image_erase_bang(VALUE self)
3957
3957
  {
3958
- Image *image = rm_check_frozen_image(self);
3958
+ Image *image = rm_check_frozen(self);
3959
3959
 
3960
3960
  (void) SetImageBackgroundColor(image);
3961
3961
  rm_check_image_exception(image, RetainOnError);
@@ -4019,7 +4019,7 @@ Image_excerpt(VALUE self, VALUE x, VALUE y, VALUE width, VALUE height)
4019
4019
  VALUE
4020
4020
  Image_excerpt_bang(VALUE self, VALUE x, VALUE y, VALUE width, VALUE height)
4021
4021
  {
4022
- (void) rm_check_frozen_image(self);
4022
+ (void) rm_check_frozen(self);
4023
4023
  return excerpt(True, self, x, y, width, height);
4024
4024
  }
4025
4025
 
@@ -4292,7 +4292,7 @@ Image_extract_info(VALUE self)
4292
4292
  VALUE
4293
4293
  Image_extract_info_eq(VALUE self, VALUE rect)
4294
4294
  {
4295
- Image *image = rm_check_frozen_image(self);
4295
+ Image *image = rm_check_frozen(self);
4296
4296
  Rectangle_to_RectangleInfo(&image->extract_info, rect);
4297
4297
  return self;
4298
4298
  }
@@ -4326,7 +4326,7 @@ Image_filter(VALUE self)
4326
4326
  VALUE
4327
4327
  Image_filter_eq(VALUE self, VALUE filter)
4328
4328
  {
4329
- Image *image = rm_check_frozen_image(self);
4329
+ Image *image = rm_check_frozen(self);
4330
4330
  VALUE_TO_ENUM(filter, image->filter, FilterTypes);
4331
4331
  return self;
4332
4332
  }
@@ -4426,7 +4426,7 @@ Image_flip(VALUE self)
4426
4426
  VALUE
4427
4427
  Image_flip_bang(VALUE self)
4428
4428
  {
4429
- (void) rm_check_frozen_image(self);
4429
+ (void) rm_check_frozen(self);
4430
4430
  return flipflop(True, self, FlipImage);
4431
4431
  }
4432
4432
 
@@ -4448,7 +4448,7 @@ Image_flop(VALUE self)
4448
4448
  VALUE
4449
4449
  Image_flop_bang(VALUE self)
4450
4450
  {
4451
- (void) rm_check_frozen_image(self);
4451
+ (void) rm_check_frozen(self);
4452
4452
  return flipflop(True, self, FlopImage);
4453
4453
  }
4454
4454
 
@@ -4492,7 +4492,7 @@ Image_format_eq(VALUE self, VALUE magick)
4492
4492
  char *mgk;
4493
4493
  ExceptionInfo exception;
4494
4494
 
4495
- image = rm_check_frozen_image(self);
4495
+ image = rm_check_frozen(self);
4496
4496
 
4497
4497
  GetExceptionInfo(&exception);
4498
4498
 
@@ -4609,7 +4609,7 @@ Image_from_blob(VALUE class, VALUE blob_arg)
4609
4609
  class = class; // defeat gcc message
4610
4610
  blob_arg = blob_arg; // defeat gcc message
4611
4611
 
4612
- blob = (void *) rb_str2cstr(blob_arg, &length);
4612
+ blob = (void *) rm_str2cstr(blob_arg, &length);
4613
4613
 
4614
4614
  // Get a new Info object - run the parm block if supplied
4615
4615
  info_obj = rm_info_new();
@@ -4635,7 +4635,7 @@ DEF_ATTR_READER(Image, fuzz, dbl)
4635
4635
  */
4636
4636
  VALUE Image_fuzz_eq(VALUE self, VALUE fuzz)
4637
4637
  {
4638
- Image *image = rm_check_frozen_image(self);
4638
+ Image *image = rm_check_frozen(self);
4639
4639
  image->fuzz = rm_fuzz_to_dbl(fuzz);
4640
4640
  return self;
4641
4641
  }
@@ -4797,7 +4797,7 @@ Image_geometry_eq(
4797
4797
  volatile VALUE geom_str;
4798
4798
  char *geom;
4799
4799
 
4800
- image = rm_check_frozen_image(self);
4800
+ image = rm_check_frozen(self);
4801
4801
 
4802
4802
  if (geometry == Qnil)
4803
4803
  {
@@ -4986,7 +4986,7 @@ Image_import_pixels(int argc, VALUE *argv, VALUE self)
4986
4986
  volatile void *buffer;
4987
4987
  unsigned int okay;
4988
4988
 
4989
- image = rm_check_frozen_image(self);
4989
+ image = rm_check_frozen(self);
4990
4990
 
4991
4991
  switch (argc)
4992
4992
  {
@@ -5017,7 +5017,7 @@ Image_import_pixels(int argc, VALUE *argv, VALUE self)
5017
5017
  // binary pixel data.
5018
5018
  if (rb_respond_to(pixel_arg, rb_intern("to_str")))
5019
5019
  {
5020
- buffer = (void *)rb_str2cstr(pixel_arg, &buffer_l);
5020
+ buffer = (void *)rm_str2cstr(pixel_arg, &buffer_l);
5021
5021
  switch (stg_type)
5022
5022
  {
5023
5023
  case CharPixel:
@@ -5068,14 +5068,14 @@ Image_import_pixels(int argc, VALUE *argv, VALUE self)
5068
5068
  // and raises TypeError if it can't. It usually is possible.
5069
5069
  pixel_ary = rb_Array(pixel_arg);
5070
5070
 
5071
- if (RARRAY(pixel_ary)->len % map_l != 0)
5071
+ if (RARRAY_LEN(pixel_ary) % map_l != 0)
5072
5072
  {
5073
5073
  rb_raise(rb_eArgError, "pixel array must contain an exact multiple of the map length");
5074
5074
  }
5075
- if ((unsigned long)RARRAY(pixel_ary)->len < npixels)
5075
+ if ((unsigned long)RARRAY_LEN(pixel_ary) < npixels)
5076
5076
  {
5077
5077
  rb_raise(rb_eArgError, "pixel array too small (need %lu elements, got %ld)"
5078
- , npixels, RARRAY(pixel_ary)->len);
5078
+ , npixels, RARRAY_LEN(pixel_ary));
5079
5079
  }
5080
5080
 
5081
5081
  if (stg_type == DoublePixel || stg_type == FloatPixel)
@@ -5282,7 +5282,7 @@ Image_interlace(VALUE self)
5282
5282
  VALUE
5283
5283
  Image_interlace_eq(VALUE self, VALUE interlace)
5284
5284
  {
5285
- Image *image = rm_check_frozen_image(self);
5285
+ Image *image = rm_check_frozen(self);
5286
5286
  VALUE_TO_ENUM(interlace, image->interlace, InterlaceType);
5287
5287
  return self;
5288
5288
  }
@@ -5474,7 +5474,7 @@ Image__load(VALUE class, VALUE str)
5474
5474
 
5475
5475
  info = CloneImageInfo(NULL);
5476
5476
 
5477
- blob = rb_str2cstr(str, &length);
5477
+ blob = rm_str2cstr(str, &length);
5478
5478
 
5479
5479
  // Must be as least as big as the 1st 4 fields in DumpedImage
5480
5480
  if (length <= (long)(sizeof(DumpedImage)-MaxTextExtent))
@@ -5573,7 +5573,7 @@ Image_magnify(VALUE self)
5573
5573
  VALUE
5574
5574
  Image_magnify_bang(VALUE self)
5575
5575
  {
5576
- (void) rm_check_frozen_image(self);
5576
+ (void) rm_check_frozen(self);
5577
5577
  return magnify(True, self, MagnifyImage);
5578
5578
  }
5579
5579
 
@@ -5589,7 +5589,7 @@ Image_map(int argc, VALUE *argv, VALUE self)
5589
5589
  Image *image, *new_image;
5590
5590
  Image *map;
5591
5591
  volatile VALUE map_obj, map_arg;
5592
- unsigned int dither = False;
5592
+ unsigned int dither = MagickFalse;
5593
5593
 
5594
5594
  image = rm_check_destroyed(self);
5595
5595
  switch (argc)
@@ -5657,7 +5657,7 @@ Image_mask_eq(VALUE self, VALUE mask)
5657
5657
  PixelPacket *q;
5658
5658
  ExceptionInfo exception;
5659
5659
 
5660
- image = rm_check_frozen_image(self);
5660
+ image = rm_check_frozen(self);
5661
5661
 
5662
5662
  if (mask != Qnil)
5663
5663
  {
@@ -5697,14 +5697,14 @@ Image_mask_eq(VALUE self, VALUE mask)
5697
5697
  q->blue = q->opacity;
5698
5698
  q += 1;
5699
5699
  }
5700
- if (SyncImagePixels(clip_mask) == (MagickBooleanType)False)
5700
+ if (SyncImagePixels(clip_mask) == (MagickBooleanType)MagickFalse)
5701
5701
  {
5702
5702
  (void) DestroyImage(clip_mask);
5703
5703
  rm_magick_error("SyncImagePixels failed", NULL);
5704
5704
  }
5705
5705
  }
5706
5706
 
5707
- if (SetImageStorageClass(clip_mask, DirectClass) == (MagickBooleanType)False)
5707
+ if (SetImageStorageClass(clip_mask, DirectClass) == (MagickBooleanType)MagickFalse)
5708
5708
  {
5709
5709
  (void) DestroyImage(clip_mask);
5710
5710
  rm_magick_error("SetImageStorageClass failed", NULL);
@@ -5764,7 +5764,7 @@ Image_matte_eq(VALUE self, VALUE matte)
5764
5764
 
5765
5765
  return Image_alpha_eq(self, alpha_channel_type);
5766
5766
  #else
5767
- Image *image = rm_check_frozen_image(self);
5767
+ Image *image = rm_check_frozen(self);
5768
5768
  image->matte = RTEST(matte) ? MagickTrue : MagickFalse;
5769
5769
  return matte;
5770
5770
  #endif
@@ -5789,7 +5789,7 @@ Image_matte_color(VALUE self)
5789
5789
  VALUE
5790
5790
  Image_matte_color_eq(VALUE self, VALUE color)
5791
5791
  {
5792
- Image *image = rm_check_frozen_image(self);
5792
+ Image *image = rm_check_frozen(self);
5793
5793
  Color_to_PixelPacket(&image->matte_color, color);
5794
5794
  return self;
5795
5795
  }
@@ -5924,7 +5924,7 @@ Image_minify(VALUE self)
5924
5924
  VALUE
5925
5925
  Image_minify_bang(VALUE self)
5926
5926
  {
5927
- (void) rm_check_frozen_image(self);
5927
+ (void) rm_check_frozen(self);
5928
5928
  return magnify(True, self, MinifyImage);
5929
5929
  }
5930
5930
 
@@ -5984,7 +5984,7 @@ Image_modulate(int argc, VALUE *argv, VALUE self)
5984
5984
  VALUE
5985
5985
  Image_monitor_eq(VALUE self, VALUE monitor)
5986
5986
  {
5987
- Image *image = rm_check_frozen_image(self);
5987
+ Image *image = rm_check_frozen(self);
5988
5988
 
5989
5989
  if (NIL_P(monitor))
5990
5990
  {
@@ -6100,7 +6100,7 @@ VALUE
6100
6100
  Image_negate(int argc, VALUE *argv, VALUE self)
6101
6101
  {
6102
6102
  Image *image, *new_image;
6103
- unsigned int grayscale = False;
6103
+ unsigned int grayscale = MagickFalse;
6104
6104
 
6105
6105
  image = rm_check_destroyed(self);
6106
6106
  if (argc == 1)
@@ -6131,7 +6131,7 @@ Image_negate_channel(int argc, VALUE *argv, VALUE self)
6131
6131
  {
6132
6132
  Image *image, *new_image;
6133
6133
  ChannelType channels;
6134
- unsigned int grayscale = False;
6134
+ unsigned int grayscale = MagickFalse;
6135
6135
 
6136
6136
  image = rm_check_destroyed(self);
6137
6137
  channels = extract_channels(&argc, argv);
@@ -6371,17 +6371,17 @@ VALUE
6371
6371
  Image_opaque(VALUE self, VALUE target, VALUE fill)
6372
6372
  {
6373
6373
  Image *image, *new_image;
6374
- PixelPacket target_pp;
6375
- PixelPacket fill_pp;
6374
+ MagickPixelPacket target_pp;
6375
+ MagickPixelPacket fill_pp;
6376
6376
 
6377
6377
  image = rm_check_destroyed(self);
6378
6378
  new_image = rm_clone_image(image);
6379
6379
 
6380
6380
  // Allow color name or Pixel
6381
- Color_to_PixelPacket(&target_pp, target);
6382
- Color_to_PixelPacket(&fill_pp, fill);
6381
+ Color_to_MagickPixelPacket(image, &target_pp, target);
6382
+ Color_to_MagickPixelPacket(image, &fill_pp, fill);
6383
6383
 
6384
- (void) OpaqueImage(new_image, target_pp, fill_pp);
6384
+ (void) PaintOpaqueImage(new_image, &target_pp, &fill_pp);
6385
6385
  rm_check_image_exception(new_image, DestroyOnError);
6386
6386
 
6387
6387
  return rm_image_new(new_image);
@@ -6479,7 +6479,7 @@ Image_orientation(VALUE self)
6479
6479
  VALUE
6480
6480
  Image_orientation_eq(VALUE self, VALUE orientation)
6481
6481
  {
6482
- Image *image = rm_check_frozen_image(self);
6482
+ Image *image = rm_check_frozen(self);
6483
6483
  VALUE_TO_ENUM(orientation, image->orientation, OrientationType);
6484
6484
  return self;
6485
6485
  }
@@ -6504,7 +6504,7 @@ Image_page(VALUE self)
6504
6504
  VALUE
6505
6505
  Image_page_eq(VALUE self, VALUE rect)
6506
6506
  {
6507
- Image *image = rm_check_frozen_image(self);
6507
+ Image *image = rm_check_frozen(self);
6508
6508
  Rectangle_to_RectangleInfo(&image->page, rect);
6509
6509
  return self;
6510
6510
  }
@@ -6656,7 +6656,7 @@ Image_pixel_interpolation_method(VALUE self)
6656
6656
  VALUE
6657
6657
  Image_pixel_interpolation_method_eq(VALUE self, VALUE method)
6658
6658
  {
6659
- Image *image = rm_check_frozen_image(self);
6659
+ Image *image = rm_check_frozen(self);
6660
6660
  VALUE_TO_ENUM(method, image->interpolate, InterpolatePixelMethod);
6661
6661
  return self;
6662
6662
  }
@@ -7092,7 +7092,7 @@ Image_raise(int argc, VALUE *argv, VALUE self)
7092
7092
  {
7093
7093
  Image *image, *new_image;
7094
7094
  RectangleInfo rect;
7095
- int raised = True; // default
7095
+ int raised = MagickTrue; // default
7096
7096
 
7097
7097
  memset(&rect, 0, sizeof(rect));
7098
7098
  rect.width = 6; // default
@@ -7183,7 +7183,7 @@ rd_image(VALUE class, VALUE file, reader_t reader)
7183
7183
  // Convert arg to string. If an exception occurs raise an error condition.
7184
7184
  file = rb_rescue(rb_String, file, file_arg_rescue, file);
7185
7185
 
7186
- filename = rb_str2cstr(file, &filename_l);
7186
+ filename = rm_str2cstr(file, &filename_l);
7187
7187
  filename_l = min(filename_l, MaxTextExtent-1);
7188
7188
  memcpy(info->filename, filename, (size_t)filename_l);
7189
7189
  info->filename[filename_l] = '\0';
@@ -7219,7 +7219,7 @@ Image_recolor(VALUE self, VALUE color_matrix)
7219
7219
  GetExceptionInfo(&exception);
7220
7220
 
7221
7221
  // Allocate color matrix from Ruby's memory
7222
- len = RARRAY(color_matrix)->len;
7222
+ len = RARRAY_LEN(color_matrix);
7223
7223
  matrix = ALLOC_N(double, len);
7224
7224
 
7225
7225
  for (x = 0; x < len; x++)
@@ -7269,7 +7269,7 @@ Image_read_inline(VALUE self, VALUE content)
7269
7269
 
7270
7270
  self = self; // defeat gcc message
7271
7271
 
7272
- image_data = rb_str2cstr(content, &image_data_l);
7272
+ image_data = rm_str2cstr(content, &image_data_l);
7273
7273
 
7274
7274
  // Search for a comma. If found, we'll set the start of the
7275
7275
  // image data just following the comma. Otherwise we'll assume
@@ -7373,7 +7373,7 @@ Image_rendering_intent(VALUE self)
7373
7373
  VALUE
7374
7374
  Image_rendering_intent_eq(VALUE self, VALUE ri)
7375
7375
  {
7376
- Image *image = rm_check_frozen_image(self);
7376
+ Image *image = rm_check_frozen(self);
7377
7377
  VALUE_TO_ENUM(ri, image->rendering_intent, RenderingIntent);
7378
7378
  return self;
7379
7379
  }
@@ -7467,7 +7467,7 @@ Image_resize(int argc, VALUE *argv, VALUE self)
7467
7467
  VALUE
7468
7468
  Image_resize_bang(int argc, VALUE *argv, VALUE self)
7469
7469
  {
7470
- (void) rm_check_frozen_image(self);
7470
+ (void) rm_check_frozen(self);
7471
7471
  return resize(True, argc, argv, self);
7472
7472
  }
7473
7473
 
@@ -7518,7 +7518,7 @@ rotate(int bang, int argc, VALUE *argv, VALUE self)
7518
7518
  switch (argc)
7519
7519
  {
7520
7520
  case 2:
7521
- arrow = rb_str2cstr(argv[1], &arrow_l);
7521
+ arrow = rm_str2cstr(argv[1], &arrow_l);
7522
7522
  if (arrow_l != 1 || (*arrow != '<' && *arrow != '>'))
7523
7523
  {
7524
7524
  rb_raise(rb_eArgError, "second argument must be '<' or '>', '%s' given", arrow);
@@ -7567,7 +7567,7 @@ Image_rotate(int argc, VALUE *argv, VALUE self)
7567
7567
  VALUE
7568
7568
  Image_rotate_bang(int argc, VALUE *argv, VALUE self)
7569
7569
  {
7570
- (void) rm_check_frozen_image(self);
7570
+ (void) rm_check_frozen(self);
7571
7571
  return rotate(True, argc, argv, self);
7572
7572
  }
7573
7573
 
@@ -7590,7 +7590,7 @@ Image_sample(int argc, VALUE *argv, VALUE self)
7590
7590
  VALUE
7591
7591
  Image_sample_bang(int argc, VALUE *argv, VALUE self)
7592
7592
  {
7593
- (void) rm_check_frozen_image(self);
7593
+ (void) rm_check_frozen(self);
7594
7594
  return scale(True, argc, argv, self, SampleImage);
7595
7595
  }
7596
7596
 
@@ -7611,7 +7611,7 @@ Image_scale(int argc, VALUE *argv, VALUE self)
7611
7611
  VALUE
7612
7612
  Image_scale_bang(int argc, VALUE *argv, VALUE self)
7613
7613
  {
7614
- (void) rm_check_frozen_image(self);
7614
+ (void) rm_check_frozen(self);
7615
7615
  return scale(True, argc, argv, self, ScaleImage);
7616
7616
  }
7617
7617
 
@@ -7693,7 +7693,7 @@ Image_set_channel_depth(VALUE self, VALUE channel_arg, VALUE depth)
7693
7693
  ChannelType channel;
7694
7694
  unsigned long channel_depth;
7695
7695
 
7696
- image = rm_check_frozen_image(self);
7696
+ image = rm_check_frozen(self);
7697
7697
 
7698
7698
  VALUE_TO_ENUM(channel_arg, channel, ChannelType);
7699
7699
  channel_depth = NUM2ULONG(depth);
@@ -7784,7 +7784,7 @@ Image_segment(int argc, VALUE *argv, VALUE self)
7784
7784
  {
7785
7785
  Image *image, *new_image;
7786
7786
  int colorspace = RGBColorspace; // These are the Magick++ defaults
7787
- unsigned int verbose = False;
7787
+ unsigned int verbose = MagickFalse;
7788
7788
  double cluster_threshold = 1.0;
7789
7789
  double smoothing_threshold = 1.5;
7790
7790
 
@@ -7825,7 +7825,7 @@ Image_opacity_eq(VALUE self, VALUE opacity_arg)
7825
7825
  Image *image;
7826
7826
  Quantum opacity;
7827
7827
 
7828
- image = rm_check_frozen_image(self);
7828
+ image = rm_check_frozen(self);
7829
7829
  opacity = APP2QUANTUM(opacity_arg);
7830
7830
  (void) SetImageOpacity(image, opacity);
7831
7831
  rm_check_image_exception(image, RetainOnError);
@@ -7944,7 +7944,7 @@ Image_shade(int argc, VALUE *argv, VALUE self)
7944
7944
  {
7945
7945
  Image *image, *new_image;
7946
7946
  double azimuth = 30.0, elevation = 30.0;
7947
- unsigned int shading=False;
7947
+ unsigned int shading=MagickFalse;
7948
7948
  ExceptionInfo exception;
7949
7949
 
7950
7950
  image = rm_check_destroyed(self);
@@ -8108,7 +8108,7 @@ Image_shave_bang(
8108
8108
  VALUE width,
8109
8109
  VALUE height)
8110
8110
  {
8111
- (void) rm_check_frozen_image(self);
8111
+ (void) rm_check_frozen(self);
8112
8112
  return xform_image(True, self, INT2FIX(0), INT2FIX(0), width, height, ShaveImage);
8113
8113
  }
8114
8114
 
@@ -8189,18 +8189,18 @@ VALUE
8189
8189
  Image_signature(VALUE self)
8190
8190
  {
8191
8191
  Image *image;
8192
- const ImageAttribute *signature;
8192
+ const char *signature;
8193
8193
 
8194
8194
  image = rm_check_destroyed(self);
8195
8195
 
8196
8196
  (void) SignatureImage(image);
8197
- signature = GetImageAttribute(image, "signature");
8197
+ signature = rm_get_property(image, "signature");
8198
8198
  rm_check_image_exception(image, RetainOnError);
8199
8199
  if (!signature)
8200
8200
  {
8201
8201
  return Qnil;
8202
8202
  }
8203
- return rb_str_new(signature->value, 64);
8203
+ return rb_str_new(signature, 64);
8204
8204
  }
8205
8205
 
8206
8206
 
@@ -8263,7 +8263,7 @@ VALUE
8263
8263
  Image_spaceship(VALUE self, VALUE other)
8264
8264
  {
8265
8265
  Image *imageA, *imageB;
8266
- const ImageAttribute *sigA, *sigB;
8266
+ const char *sigA, *sigB;
8267
8267
  int res;
8268
8268
 
8269
8269
  imageA = rm_check_destroyed(self);
@@ -8278,14 +8278,14 @@ Image_spaceship(VALUE self, VALUE other)
8278
8278
 
8279
8279
  (void) SignatureImage(imageA);
8280
8280
  (void) SignatureImage(imageB);
8281
- sigA = GetImageAttribute(imageA, "signature");
8282
- sigB = GetImageAttribute(imageB, "signature");
8281
+ sigA = rm_get_property(imageA, "signature");
8282
+ sigB = rm_get_property(imageB, "signature");
8283
8283
  if (!sigA || !sigB)
8284
8284
  {
8285
8285
  rb_raise(Class_ImageMagickError, "can't get image signature");
8286
8286
  }
8287
8287
 
8288
- res = memcmp(sigA->value, sigB->value, 64);
8288
+ res = memcmp(sigA, sigB, 64);
8289
8289
  res = res > 0 ? 1 : (res < 0 ? -1 : 0); // reduce to 1, -1, 0
8290
8290
 
8291
8291
  return INT2FIX(res);
@@ -8479,7 +8479,7 @@ Image_class_type_eq(VALUE self, VALUE new_class_type)
8479
8479
  ClassType class_type;
8480
8480
  QuantizeInfo qinfo;
8481
8481
 
8482
- image = rm_check_frozen_image(self);
8482
+ image = rm_check_frozen(self);
8483
8483
 
8484
8484
  VALUE_TO_ENUM(new_class_type, class_type, ClassType);
8485
8485
 
@@ -8580,7 +8580,7 @@ Image_store_pixels(
8580
8580
  VALUE
8581
8581
  Image_strip_bang(VALUE self)
8582
8582
  {
8583
- Image *image = rm_check_frozen_image(self);
8583
+ Image *image = rm_check_frozen(self);
8584
8584
  (void) StripImage(image);
8585
8585
  rm_check_image_exception(image, RetainOnError);
8586
8586
  return self;
@@ -8860,7 +8860,7 @@ Image_thumbnail(int argc, VALUE *argv, VALUE self)
8860
8860
  VALUE
8861
8861
  Image_thumbnail_bang(int argc, VALUE *argv, VALUE self)
8862
8862
  {
8863
- (void) rm_check_frozen_image(self);
8863
+ (void) rm_check_frozen(self);
8864
8864
  return thumbnail(True, argc, argv, self);
8865
8865
  }
8866
8866
 
@@ -8880,7 +8880,7 @@ Image_ticks_per_second(VALUE self)
8880
8880
  VALUE
8881
8881
  Image_ticks_per_second_eq(VALUE self, VALUE tps)
8882
8882
  {
8883
- Image *image = rm_check_frozen_image(self);
8883
+ Image *image = rm_check_frozen(self);
8884
8884
  image->ticks_per_second = NUM2ULONG(tps);
8885
8885
  return self;
8886
8886
  }
@@ -9093,7 +9093,7 @@ VALUE
9093
9093
  Image_transparent(int argc, VALUE *argv, VALUE self)
9094
9094
  {
9095
9095
  Image *image, *new_image;
9096
- PixelPacket color;
9096
+ MagickPixelPacket color;
9097
9097
  Quantum opacity = TransparentOpacity;
9098
9098
 
9099
9099
  image = rm_check_destroyed(self);
@@ -9103,7 +9103,7 @@ Image_transparent(int argc, VALUE *argv, VALUE self)
9103
9103
  case 2:
9104
9104
  opacity = APP2QUANTUM(argv[1]);
9105
9105
  case 1:
9106
- Color_to_PixelPacket(&color, argv[0]);
9106
+ Color_to_MagickPixelPacket(image, &color, argv[0]);
9107
9107
  break;
9108
9108
  default:
9109
9109
  rb_raise(rb_eArgError, "wrong number of arguments (%d for 1 or 2)", argc);
@@ -9112,7 +9112,7 @@ Image_transparent(int argc, VALUE *argv, VALUE self)
9112
9112
 
9113
9113
  new_image = rm_clone_image(image);
9114
9114
 
9115
- (void) TransparentImage(new_image, color, opacity);
9115
+ (void) PaintTransparentImage(new_image, &color, opacity);
9116
9116
  rm_check_image_exception(new_image, DestroyOnError);
9117
9117
 
9118
9118
  return rm_image_new(new_image);
@@ -9138,7 +9138,7 @@ Image_transparent_color(VALUE self)
9138
9138
  VALUE
9139
9139
  Image_transparent_color_eq(VALUE self, VALUE color)
9140
9140
  {
9141
- Image *image = rm_check_frozen_image(self);
9141
+ Image *image = rm_check_frozen(self);
9142
9142
  Color_to_PixelPacket(&image->transparent_color, color);
9143
9143
  return self;
9144
9144
  }
@@ -9160,7 +9160,7 @@ Image_transpose(VALUE self)
9160
9160
  VALUE
9161
9161
  Image_transpose_bang(VALUE self)
9162
9162
  {
9163
- (void) rm_check_frozen_image(self);
9163
+ (void) rm_check_frozen(self);
9164
9164
  return crisscross(True, self, TransposeImage);
9165
9165
  }
9166
9166
 
@@ -9180,7 +9180,7 @@ Image_transverse(VALUE self)
9180
9180
  VALUE
9181
9181
  Image_transverse_bang(VALUE self)
9182
9182
  {
9183
- (void) rm_check_frozen_image(self);
9183
+ (void) rm_check_frozen(self);
9184
9184
  return crisscross(True, self, TransverseImage);
9185
9185
  }
9186
9186
 
@@ -9255,7 +9255,7 @@ Image_trim(int argc, VALUE *argv, VALUE self)
9255
9255
  VALUE
9256
9256
  Image_trim_bang(int argc, VALUE *argv, VALUE self)
9257
9257
  {
9258
- (void) rm_check_frozen_image(self);
9258
+ (void) rm_check_frozen(self);
9259
9259
  return trimmer(True, argc, argv, self);
9260
9260
  }
9261
9261
 
@@ -9273,7 +9273,7 @@ VALUE Image_gravity(VALUE self)
9273
9273
 
9274
9274
  VALUE Image_gravity_eq(VALUE self, VALUE gravity)
9275
9275
  {
9276
- Image *image = rm_check_frozen_image(self);
9276
+ Image *image = rm_check_frozen(self);
9277
9277
  VALUE_TO_ENUM(gravity, image->gravity, GravityType);
9278
9278
  return gravity;
9279
9279
  }
@@ -9344,7 +9344,7 @@ Image_units_eq(
9344
9344
  VALUE restype)
9345
9345
  {
9346
9346
  ResolutionType units;
9347
- Image *image = rm_check_frozen_image(self);
9347
+ Image *image = rm_check_frozen(self);
9348
9348
 
9349
9349
  VALUE_TO_ENUM(restype, units, ResolutionType);
9350
9350
 
@@ -9567,7 +9567,7 @@ Image_virtual_pixel_method_eq(VALUE self, VALUE method)
9567
9567
  Image *image;
9568
9568
  VirtualPixelMethod vpm;
9569
9569
 
9570
- image = rm_check_frozen_image(self);
9570
+ image = rm_check_frozen(self);
9571
9571
  VALUE_TO_ENUM(method, vpm, VirtualPixelMethod);
9572
9572
  (void) SetImageVirtualPixelMethod(image, vpm);
9573
9573
  rm_check_image_exception(image, RetainOnError);
@@ -9863,7 +9863,7 @@ Image_write(VALUE self, VALUE file)
9863
9863
  // Convert arg to string. If an exception occurs raise an error condition.
9864
9864
  file = rb_rescue(rb_String, file, file_arg_rescue, file);
9865
9865
 
9866
- filename = rb_str2cstr(file, &filename_l);
9866
+ filename = rm_str2cstr(file, &filename_l);
9867
9867
  filename_l = min(filename_l, MaxTextExtent-1);
9868
9868
  memcpy(info->filename, filename, (size_t)filename_l);
9869
9869
  info->filename[filename_l] = '\0';
@@ -10221,10 +10221,14 @@ static void call_trace_proc(Image *image, char *which)
10221
10221
  n = sprintf(buffer, "%016llx", (unsigned long long)image);
10222
10222
  #elif HAVE_TYPE_UINT64_T
10223
10223
  n = sprintf(buffer, "%016llx", (uint64_t)image);
10224
+ #elif HAVE_TYPE_UINTMAX_T
10225
+ n = sprintf(buffer, "%016llx", (uintmax_t)image);
10224
10226
  #elif HAVE_TYPE___INT64
10225
10227
  n = sprintf(buffer, "%016llx", (__int64)image);
10228
+ #elif SIZEOF_UNSIGNED_LONG == 8
10229
+ n = sprintf(buffer, "%016lx", (unsigned long)image);
10226
10230
  #else
10227
- #error Can't find a 64-bit type.
10231
+ #error "No 64-bit type detected."
10228
10232
  #endif
10229
10233
  #else
10230
10234
  n = sprintf(buffer, "%08lx", (unsigned long)image);