rmagick 1.15.17 → 2.0.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 (108) hide show
  1. data/ChangeLog +78 -25
  2. data/README.html +117 -188
  3. data/README.txt +116 -181
  4. data/build_tarball.rake +205 -0
  5. data/doc/comtasks.html +2 -2
  6. data/doc/constants.html +118 -44
  7. data/doc/draw.html +57 -99
  8. data/doc/ex/adaptive_threshold.rb +1 -10
  9. data/doc/ex/add_noise.rb +4 -5
  10. data/doc/ex/axes.rb +1 -1
  11. data/doc/ex/bilevel_channel.rb +2 -13
  12. data/doc/ex/bounding_box.rb +3 -4
  13. data/doc/ex/channel.rb +6 -7
  14. data/doc/ex/clip_path.rb +11 -5
  15. data/doc/ex/color_histogram.rb +8 -20
  16. data/doc/ex/composite_layers.rb +53 -0
  17. data/doc/ex/fill_pattern.rb +26 -0
  18. data/doc/ex/get_multiline_type_metrics.rb +26 -37
  19. data/doc/ex/get_type_metrics.rb +25 -25
  20. data/doc/ex/images/notimplemented.gif +0 -0
  21. data/doc/ex/level.rb +1 -1
  22. data/doc/ex/matte_floodfill.rb +5 -6
  23. data/doc/ex/matte_replace.rb +5 -6
  24. data/doc/ex/negate_channel.rb +0 -10
  25. data/doc/ex/opacity.rb +3 -5
  26. data/doc/ex/polaroid.rb +4 -1
  27. data/doc/ex/posterize.rb +1 -12
  28. data/doc/ex/preview.rb +1 -8
  29. data/doc/ex/radial_blur.rb +1 -11
  30. data/doc/ex/raise.rb +1 -4
  31. data/doc/ex/random_threshold_channel.rb +4 -9
  32. data/doc/ex/sepiatone.rb +2 -9
  33. data/doc/ex/shadow.rb +12 -18
  34. data/doc/ex/sketch.rb +2 -9
  35. data/doc/ex/smile.rb +7 -7
  36. data/doc/ex/splice.rb +3 -10
  37. data/doc/ex/stegano.rb +5 -0
  38. data/doc/ex/threshold.rb +2 -2
  39. data/doc/ex/transpose.rb +1 -8
  40. data/doc/ex/transverse.rb +1 -8
  41. data/doc/ex/trim.rb +1 -2
  42. data/doc/ex/viewex.rb +4 -5
  43. data/doc/ex/vignette.rb +1 -8
  44. data/doc/ex/watermark.rb +1 -0
  45. data/doc/ex/wet_floor.rb +8 -14
  46. data/doc/ilist.html +301 -110
  47. data/doc/image1.html +362 -258
  48. data/doc/image2.html +429 -286
  49. data/doc/image3.html +418 -192
  50. data/doc/imageattrs.html +100 -39
  51. data/doc/imusage.html +26 -21
  52. data/doc/index.html +52 -93
  53. data/doc/info.html +160 -64
  54. data/doc/magick.html +37 -71
  55. data/doc/optequiv.html +155 -61
  56. data/doc/rvg.html +3 -3
  57. data/doc/rvgclip.html +2 -2
  58. data/doc/rvggroup.html +2 -2
  59. data/doc/rvgimage.html +3 -3
  60. data/doc/rvgpattern.html +3 -3
  61. data/doc/rvgshape.html +2 -2
  62. data/doc/rvgstyle.html +2 -2
  63. data/doc/rvgtext.html +2 -2
  64. data/doc/rvgtspan.html +4 -4
  65. data/doc/rvgtut.html +4 -4
  66. data/doc/rvguse.html +3 -3
  67. data/doc/rvgxform.html +2 -2
  68. data/doc/struct.html +26 -29
  69. data/doc/usage.html +99 -48
  70. data/examples/crop_with_gravity.rb +46 -0
  71. data/examples/demo.rb +2 -2
  72. data/examples/histogram.rb +11 -11
  73. data/examples/identify.rb +45 -45
  74. data/examples/spinner.rb +3 -2
  75. data/ext/RMagick/MANIFEST +7 -8
  76. data/ext/RMagick/extconf.rb +242 -0
  77. data/ext/RMagick/rmagick.h +136 -222
  78. data/ext/RMagick/rmdraw.c +226 -229
  79. data/ext/RMagick/rmfill.c +69 -118
  80. data/ext/RMagick/rmilist.c +234 -94
  81. data/ext/RMagick/rmimage.c +1719 -2564
  82. data/ext/RMagick/rminfo.c +433 -619
  83. data/ext/RMagick/rmmain.c +249 -487
  84. data/ext/RMagick/rmutil.c +344 -563
  85. data/lib/RMagick.rb +414 -358
  86. data/lib/rvg/clippath.rb +2 -2
  87. data/lib/rvg/container.rb +2 -2
  88. data/lib/rvg/describable.rb +2 -2
  89. data/lib/rvg/embellishable.rb +2 -2
  90. data/lib/rvg/misc.rb +3 -3
  91. data/lib/rvg/paint.rb +2 -7
  92. data/lib/rvg/pathdata.rb +2 -2
  93. data/lib/rvg/rvg.rb +2 -2
  94. data/lib/rvg/stretchable.rb +2 -14
  95. data/lib/rvg/stylable.rb +2 -2
  96. data/lib/rvg/text.rb +2 -2
  97. data/lib/rvg/transformable.rb +2 -2
  98. data/lib/rvg/units.rb +2 -2
  99. data/{metaconfig.in → metaconfig} +0 -1
  100. data/post-setup.rb +1 -1
  101. data/rmagick.gemspec +6 -9
  102. metadata +41 -49
  103. data/Makefile.in +0 -42
  104. data/configure +0 -12358
  105. data/configure.ac +0 -791
  106. data/ext/RMagick/extconf.rb.in +0 -25
  107. data/ext/RMagick/rmagick_config.h.in +0 -285
  108. data/gem_extconf.rb +0 -42
@@ -1,6 +1,6 @@
1
- /* $Id: rmmain.c,v 1.159.2.2.2.3 2008/11/25 23:21:15 rmagick Exp $ */
1
+ /* $Id: rmmain.c,v 1.228 2007/12/26 21:43:52 rmagick Exp $ */
2
2
  /*============================================================================\
3
- | Copyright (C) 2008 by Timothy P. Hunter
3
+ | Copyright (C) 2007 by Timothy P. Hunter
4
4
  | Name: rmmain.c
5
5
  | Author: Tim Hunter
6
6
  | Purpose: Contains all module, class, method declarations.
@@ -21,8 +21,6 @@ static void test_Magick_version(void);
21
21
  static void version_constants(void);
22
22
 
23
23
 
24
- #define MAGICK_MONITOR_CVAR "@@__rmagick_monitor__"
25
- static VALUE Magick_Monitor;
26
24
 
27
25
  /*
28
26
  Method: Magick::colors [ { |colorinfo| } ]
@@ -34,55 +32,9 @@ static VALUE Magick_Monitor;
34
32
  VALUE
35
33
  Magick_colors(VALUE class)
36
34
  {
37
- #if defined(HAVE_GETCOLORINFOARRAY) // GraphicsMagick
38
- ColorInfo **color_ary;
39
- ExceptionInfo exception;
40
- volatile VALUE ary;
41
- int x;
42
-
43
- GetExceptionInfo(&exception);
44
-
45
- color_ary = GetColorInfoArray(&exception);
46
- CHECK_EXCEPTION()
47
- (void) DestroyExceptionInfo(&exception);
48
-
49
-
50
- if (rb_block_given_p())
51
- {
52
- x = 0;
53
- while(color_ary[x])
54
- {
55
- rb_yield(Color_from_ColorInfo(color_ary[x]));
56
- x += 1;
57
- }
58
- magick_free(color_ary);
59
- return class;
60
- }
61
- else
62
- {
63
- ary = rb_ary_new();
64
-
65
- x = 0;
66
- while (color_ary[x])
67
- {
68
- rb_ary_push(ary, Color_from_ColorInfo(color_ary[x]));
69
- x += 1;
70
- }
71
- magick_free(color_ary);
72
- return ary;
73
- }
74
-
75
- #elif defined(HAVE_GETCOLORINFOLIST) // ImageMagick 6.0.0
76
-
77
35
  const ColorInfo **color_info_list;
78
36
  unsigned long number_colors, x;
79
37
  volatile VALUE ary;
80
-
81
- #if defined(HAVE_OLD_GETCOLORINFOLIST)
82
- color_info_list = GetColorInfoList("*", &number_colors);
83
-
84
- #else
85
- // IM 6.1.3 added an exception parm to GetColorInfoList
86
38
  ExceptionInfo exception;
87
39
 
88
40
  GetExceptionInfo(&exception);
@@ -91,12 +43,10 @@ Magick_colors(VALUE class)
91
43
  CHECK_EXCEPTION()
92
44
  (void) DestroyExceptionInfo(&exception);
93
45
 
94
- #endif
95
-
96
46
 
97
47
  if (rb_block_given_p())
98
48
  {
99
- for(x = 0; x < number_colors; x++)
49
+ for (x = 0; x < number_colors; x++)
100
50
  {
101
51
  (void) rb_yield(Color_from_ColorInfo(color_info_list[x]));
102
52
  }
@@ -106,7 +56,7 @@ Magick_colors(VALUE class)
106
56
  else
107
57
  {
108
58
  ary = rb_ary_new2((long) number_colors);
109
- for(x = 0; x < number_colors; x++)
59
+ for (x = 0; x < number_colors; x++)
110
60
  {
111
61
  (void) rb_ary_push(ary, Color_from_ColorInfo(color_info_list[x]));
112
62
  }
@@ -114,45 +64,6 @@ Magick_colors(VALUE class)
114
64
  magick_free(color_info_list);
115
65
  return ary;
116
66
  }
117
-
118
- #else // ImageMagick < 6.0.0
119
-
120
- const ColorInfo *color_list;
121
- ColorInfo *color;
122
- ExceptionInfo exception;
123
- volatile VALUE ary, el;
124
-
125
- GetExceptionInfo(&exception);
126
-
127
- color_list = GetColorInfo("*", &exception);
128
- (void) DestroyExceptionInfo(&exception);
129
-
130
- // The order of the colors list can change in mid-iteration,
131
- // so the only way we can guarantee a single pass thru the list
132
- // is to copy the elements into an array without returning to
133
- // IM. So, we always create a Ruby array and either return it
134
- // or iterate over it.
135
- ary = rb_ary_new();
136
- for (color = (ColorInfo *)color_list; color; color = color->next)
137
- {
138
- rb_ary_push(ary, Color_from_ColorInfo(color));
139
- }
140
-
141
- // If block, iterate over colors
142
- if (rb_block_given_p())
143
- {
144
- while ((el = rb_ary_shift(ary)) != Qnil)
145
- {
146
- rb_yield(el);
147
- }
148
- return class;
149
- }
150
- else
151
- {
152
- return ary;
153
- }
154
-
155
- #endif
156
67
  }
157
68
 
158
69
  /*
@@ -163,17 +74,9 @@ Magick_colors(VALUE class)
163
74
  VALUE
164
75
  Magick_fonts(VALUE class)
165
76
  {
166
- #if defined(HAVE_GETTYPEINFOLIST) // ImageMagick 6.0.0
167
-
168
77
  const TypeInfo **type_info;
169
78
  unsigned long number_types, x;
170
79
  volatile VALUE ary;
171
-
172
- #if defined(HAVE_OLD_GETTYPEINFOLIST)
173
- type_info = GetTypeInfoList("*", &number_types);
174
-
175
- #else
176
- // IM 6.1.3 added an exception argument to GetTypeInfoList
177
80
  ExceptionInfo exception;
178
81
 
179
82
  GetExceptionInfo(&exception);
@@ -181,11 +84,9 @@ Magick_fonts(VALUE class)
181
84
  CHECK_EXCEPTION()
182
85
  (void) DestroyExceptionInfo(&exception);
183
86
 
184
- #endif
185
-
186
87
  if (rb_block_given_p())
187
88
  {
188
- for(x = 0; x < number_types; x++)
89
+ for (x = 0; x < number_types; x++)
189
90
  {
190
91
  (void) rb_yield(Font_from_TypeInfo((TypeInfo *)type_info[x]));
191
92
  }
@@ -195,7 +96,7 @@ Magick_fonts(VALUE class)
195
96
  else
196
97
  {
197
98
  ary = rb_ary_new2((long)number_types);
198
- for(x = 0; x < number_types; x++)
99
+ for (x = 0; x < number_types; x++)
199
100
  {
200
101
  (void) rb_ary_push(ary, Font_from_TypeInfo((TypeInfo *)type_info[x]));
201
102
  }
@@ -203,44 +104,6 @@ Magick_fonts(VALUE class)
203
104
  return ary;
204
105
  }
205
106
 
206
- #else
207
-
208
- const TypeInfo *type_list;
209
- TypeInfo *type, *next;
210
- ExceptionInfo exception;
211
- volatile VALUE ary;
212
-
213
- GetExceptionInfo(&exception);
214
-
215
- type_list = GetTypeInfo("*", &exception);
216
- CHECK_EXCEPTION()
217
- (void) DestroyExceptionInfo(&exception);
218
-
219
- // If block, iterate over fonts
220
- if (rb_block_given_p())
221
- {
222
- for (type = (TypeInfo *)type_list; type; type = next)
223
- {
224
- next = type->next; // Protect against recursive calls to GetTypeInfo
225
- if (! type->stealth)
226
- {
227
- rb_yield(Font_from_TypeInfo(type));
228
- }
229
- }
230
-
231
- return class;
232
- }
233
- else
234
- {
235
- ary = rb_ary_new();
236
- for (type = (TypeInfo *)type_list; type; type = type->next)
237
- {
238
- rb_ary_push(ary, Font_from_TypeInfo(type));
239
- }
240
- return ary;
241
- }
242
-
243
- #endif
244
107
  }
245
108
 
246
109
 
@@ -275,84 +138,28 @@ static VALUE MagickInfo_to_format(MagickInfo *magick_info)
275
138
  VALUE
276
139
  Magick_init_formats(VALUE class)
277
140
  {
278
- #if defined(HAVE_GETMAGICKINFOARRAY) // GraphicsMagick
279
-
280
- MagickInfo *magick_info, *m;
281
- volatile VALUE formats;
282
- ExceptionInfo exception;
283
-
284
- class = class; // defeat "never referenced" message from icc
285
-
286
- formats = rb_hash_new();
287
-
288
- GetExceptionInfo(&exception);
289
- magick_info = (MagickInfo *)GetMagickInfoArray(&exception);
290
- CHECK_EXCEPTION()
291
- (void) DestroyExceptionInfo(&exception);
292
-
293
- for(m = magick_info; m != NULL; m = m->next)
294
- {
295
- rb_hash_aset(formats, rb_str_new2(m->name), MagickInfo_to_format(m));
296
- }
297
-
298
- magick_free(magick_info);
299
- return formats;
300
-
301
- #elif defined(HAVE_GETMAGICKINFOLIST) // ImageMagick 6.0.0
302
-
303
141
  const MagickInfo **magick_info;
304
142
  unsigned long number_formats, x;
305
143
  volatile VALUE formats;
306
- #if !defined(HAVE_OLD_GETMAGICKINFOLIST)
307
144
  ExceptionInfo exception;
308
- #endif
309
145
 
310
146
  class = class; // defeat "never referenced" message from icc
311
147
  formats = rb_hash_new();
312
148
 
313
- #if defined(HAVE_OLD_GETMAGICKINFOLIST)
314
- magick_info = GetMagickInfoList("*", &number_formats);
315
-
316
- #else
317
149
  // IM 6.1.3 added an exception argument to GetMagickInfoList
318
150
  GetExceptionInfo(&exception);
319
151
  magick_info = GetMagickInfoList("*", &number_formats, &exception);
320
152
  CHECK_EXCEPTION()
321
153
  (void) DestroyExceptionInfo(&exception);
322
154
 
323
- #endif
324
155
 
325
- for(x = 0; x < number_formats; x++)
156
+ for (x = 0; x < number_formats; x++)
326
157
  {
327
158
  (void) rb_hash_aset(formats
328
- , rb_str_new2(magick_info[x]->name)
329
- , MagickInfo_to_format((MagickInfo *)magick_info[x]));
330
- }
331
- return formats;
332
-
333
- #else
334
-
335
- MagickInfo *m;
336
- volatile VALUE formats;
337
- ExceptionInfo exception;
338
-
339
- class = class; // defeat "never referenced" message from icc
340
-
341
- formats = rb_hash_new();
342
-
343
- GetExceptionInfo(&exception);
344
- m = (MagickInfo *)GetMagickInfo("*", &exception);
345
- CHECK_EXCEPTION()
346
- (void) DestroyExceptionInfo(&exception);
347
-
348
- for ( ; m != NULL; m = m->next)
349
- {
350
- rb_hash_aset(formats, rb_str_new2(m->name), MagickInfo_to_format(m));
159
+ , rb_str_new2(magick_info[x]->name)
160
+ , MagickInfo_to_format((MagickInfo *)magick_info[x]));
351
161
  }
352
-
353
162
  return formats;
354
-
355
- #endif
356
163
  }
357
164
 
358
165
 
@@ -365,7 +172,6 @@ Magick_init_formats(VALUE class)
365
172
  static VALUE
366
173
  Magick_limit_resource(int argc, VALUE *argv, VALUE class)
367
174
  {
368
- #if defined(HAVE_GETMAGICKRESOURCELIMIT)
369
175
  volatile VALUE resource, limit;
370
176
  ResourceType res = UndefinedResource;
371
177
  char *str;
@@ -404,7 +210,7 @@ Magick_limit_resource(int argc, VALUE *argv, VALUE class)
404
210
  break;
405
211
 
406
212
  default:
407
- str = STRING_PTR(resource);
213
+ str = StringValuePtr(resource);
408
214
  if (*str == '\0')
409
215
  {
410
216
  return class;
@@ -440,84 +246,9 @@ Magick_limit_resource(int argc, VALUE *argv, VALUE class)
440
246
  }
441
247
 
442
248
  return ULONG2NUM(cur_limit);
443
- #else
444
- rm_not_implemented();
445
- return (VALUE)0;
446
- #endif
447
- }
448
-
449
-
450
- /*
451
- This is the exit known to ImageMagick. Retrieve the monitor
452
- proc and call it, passing the 3 exit arguments.
453
- */
454
- static unsigned int
455
- monitor_handler(
456
- const char *text,
457
- const magick_int64_t quantum,
458
- const magick_uint64_t span,
459
- ExceptionInfo *exception)
460
- {
461
- volatile VALUE monitor;
462
- volatile VALUE args[3];
463
-
464
- exception = exception; // defeat "never referenced" message from icc
465
-
466
- if (rb_cvar_defined(Module_Magick, Magick_Monitor) == Qtrue)
467
- {
468
- args[0] = rb_str_new2(text);
469
- // Convert these possibly-64-bit types to 32-bit types that
470
- // Ruby can handle.
471
- args[1] = INT2NUM((long) quantum);
472
- args[2] = UINT2NUM((unsigned long) span);
473
-
474
- monitor = rb_cvar_get(Module_Magick, Magick_Monitor);
475
- (void) rb_funcall2((VALUE)monitor, rm_ID_call, 3, (VALUE *)args);
476
- }
477
-
478
- return True;
479
249
  }
480
250
 
481
- /*
482
- Method: Magick.set_monitor(&monitor)
483
- Purpose: Establish MagickMonitor exit
484
- Notes: use nil argument to turn off monitoring
485
- */
486
- static VALUE
487
- Magick_set_monitor(VALUE class, VALUE monitor)
488
- {
489
-
490
- // 1st time: establish ID, define @@__MAGICK_MONITOR__
491
- // class variable, stow monitor VALUE in it.
492
- if (!Magick_Monitor)
493
- {
494
- Magick_Monitor = rb_intern(MAGICK_MONITOR_CVAR);
495
- rb_define_class_variable(Module_Magick, MAGICK_MONITOR_CVAR, monitor);
496
251
 
497
- #if defined(HAVE_SETIMAGEPROGRESSMONITOR)
498
- rb_warning("Magick.set_monitor is deprecated; use Image#monitor= or Image::Info#monitor= instead.");
499
- #endif
500
-
501
- }
502
-
503
- // If nil, turn off monitoring.
504
- if (monitor == Qnil)
505
- {
506
- (void) SetMonitorHandler(NULL);
507
- }
508
- else
509
- // Otherwise, store monitor in @@__MAGICK_MONITOR__
510
- {
511
- // 1.8.0 deletes rb_cvar_declare and adds another
512
- // parm to rb_cvar_set - if rb_cvar_declare is
513
- // available, use the 3-parm version of rb_cvar_set.
514
- RUBY18(rb_cvar_set(Module_Magick, Magick_Monitor, monitor, 0);)
515
- RUBY16(rb_cvar_set(Module_Magick, Magick_Monitor, monitor);)
516
- (void) SetMonitorHandler((MonitorHandler)&monitor_handler);
517
- }
518
-
519
- return class;
520
- }
521
252
 
522
253
  /*
523
254
  Method Magick.set_cache_threshold(megabytes)
@@ -525,8 +256,6 @@ Magick_set_monitor(VALUE class, VALUE monitor)
525
256
  pixel cache. Once this threshold is exceeded, all
526
257
  subsequent pixels cache operations are to/from disk.
527
258
  Notes: singleton method
528
- Pre-5.5.1 this method called the SetCacheThreshold
529
- function, which is deprecated in 5.5.1.
530
259
  */
531
260
  static VALUE
532
261
  Magick_set_cache_threshold(VALUE class, VALUE threshold)
@@ -555,7 +284,7 @@ Magick_set_log_event_mask(int argc, VALUE *argv, VALUE class)
555
284
  }
556
285
  for (x = 0; x < argc; x++)
557
286
  {
558
- (void) SetLogEventMask(STRING_PTR(argv[x]));
287
+ (void) SetLogEventMask(StringValuePtr(argv[x]));
559
288
  }
560
289
  return class;
561
290
  }
@@ -577,25 +306,30 @@ Magick_set_log_event_mask(int argc, VALUE *argv, VALUE class)
577
306
  static VALUE
578
307
  Magick_set_log_format(VALUE class, VALUE format)
579
308
  {
580
- SetLogFormat(STRING_PTR(format));
309
+ SetLogFormat(StringValuePtr(format));
581
310
  return class;
582
311
  }
583
312
 
584
313
 
585
314
 
586
315
  /*
587
- External: Init_RMagick
316
+ External: Init_RMagick2
588
317
  Purpose: define the classes and constants
589
318
  Arguments: void
590
319
  Returns: void
591
320
  */
592
321
 
593
322
  void
594
- Init_RMagick(void)
323
+ Init_RMagick2(void)
595
324
  {
596
325
  volatile VALUE observable;
597
326
 
327
+ #if defined(HAVE_MagickCoreGenesis)
328
+ MagickCoreGenesis("RMagick", MagickFalse);
329
+ #else
598
330
  InitializeMagick("RMagick");
331
+ #endif
332
+
599
333
  test_Magick_version();
600
334
 
601
335
  Module_Magick = rb_define_module("Magick");
@@ -604,6 +338,7 @@ Init_RMagick(void)
604
338
  /* Create IDs for frequently used methods, etc. */
605
339
  /*-----------------------------------------------------------------------*/
606
340
 
341
+ rm_ID_trace_proc = rb_intern("@trace_proc");
607
342
  rm_ID__dummy_img_ = rb_intern("_dummy_img_");
608
343
  rm_ID_call = rb_intern("call");
609
344
  rm_ID_changed = rb_intern("changed");
@@ -622,7 +357,8 @@ Init_RMagick(void)
622
357
  rm_ID_new = rb_intern("new");
623
358
  rm_ID_push = rb_intern("push");
624
359
  rm_ID_spaceship = rb_intern("<=>");
625
- rm_ID__tmpnam_ = rb_intern("@@_tmpnam_");
360
+ rm_ID__tmpnam_ = rb_intern("_tmpnam_");
361
+ rm_ID_to_i = rb_intern("to_i");
626
362
  rm_ID_to_s = rb_intern("to_s");
627
363
  rm_ID_values = rb_intern("values");
628
364
  rm_ID_width = rb_intern("width");
@@ -637,7 +373,6 @@ Init_RMagick(void)
637
373
  rb_define_module_function(Module_Magick, "fonts", Magick_fonts, 0);
638
374
  rb_define_module_function(Module_Magick, "init_formats", Magick_init_formats, 0);
639
375
  rb_define_module_function(Module_Magick, "limit_resource", Magick_limit_resource, -1);
640
- rb_define_module_function(Module_Magick, "set_monitor", Magick_set_monitor, 1);
641
376
  rb_define_module_function(Module_Magick, "set_cache_threshold", Magick_set_cache_threshold, 1);
642
377
  rb_define_module_function(Module_Magick, "set_log_event_mask", Magick_set_log_event_mask, -1);
643
378
  rb_define_module_function(Module_Magick, "set_log_format", Magick_set_log_format, 1);
@@ -651,14 +386,10 @@ Init_RMagick(void)
651
386
  // Define an alias for Object#display before we override it
652
387
  rb_define_alias(Class_Image, "__display__", "display");
653
388
 
654
- #if defined(HAVE_RB_DEFINE_ALLOC_FUNC)
655
389
  rb_define_alloc_func(Class_Image, Image_alloc);
656
390
  rb_define_method(Class_Image, "initialize", Image_initialize, -1);
657
- #else
658
- rb_define_singleton_method(Class_Image, "new", Image_new, -1);
659
- rb_define_method(Class_Image, "initialize", Image_initialize, 4);
660
- #endif
661
391
 
392
+ rb_define_singleton_method(Class_Image, "combine", Image_combine, -1);
662
393
  rb_define_singleton_method(Class_Image, "constitute", Image_constitute, 4);
663
394
  rb_define_singleton_method(Class_Image, "_load", Image__load, 1);
664
395
  rb_define_singleton_method(Class_Image, "capture", Image_capture, -1);
@@ -667,6 +398,7 @@ Init_RMagick(void)
667
398
  rb_define_singleton_method(Class_Image, "read_inline", Image_read_inline, 1);
668
399
  rb_define_singleton_method(Class_Image, "from_blob", Image_from_blob, 1);
669
400
 
401
+ DCL_ATTR_WRITER(Image, alpha)
670
402
  DCL_ATTR_ACCESSOR(Image, background_color)
671
403
  DCL_ATTR_READER(Image, base_columns)
672
404
  DCL_ATTR_READER(Image, base_filename)
@@ -697,7 +429,8 @@ Init_RMagick(void)
697
429
  DCL_ATTR_ACCESSOR(Image, fuzz)
698
430
  DCL_ATTR_ACCESSOR(Image, gamma)
699
431
  DCL_ATTR_ACCESSOR(Image, geometry)
700
- DCL_ATTR_ACCESSOR(Image, image_type)
432
+ DCL_ATTR_ACCESSOR(Image, gravity)
433
+ DCL_ATTR_READER(Image, image_type)
701
434
  DCL_ATTR_ACCESSOR(Image, interlace)
702
435
  DCL_ATTR_ACCESSOR(Image, iptc_profile)
703
436
  DCL_ATTR_ACCESSOR(Image, iterations) // do not document! Only used by Image#iterations=
@@ -707,7 +440,7 @@ Init_RMagick(void)
707
440
  DCL_ATTR_READER(Image, mean_error_per_pixel)
708
441
  DCL_ATTR_READER(Image, mime_type)
709
442
  DCL_ATTR_WRITER(Image, monitor)
710
- DCL_ATTR_ACCESSOR(Image, montage)
443
+ DCL_ATTR_READER(Image, montage)
711
444
  DCL_ATTR_READER(Image, normalized_mean_error)
712
445
  DCL_ATTR_READER(Image, normalized_maximum_error)
713
446
  DCL_ATTR_READER(Image, number_colors)
@@ -716,9 +449,7 @@ Init_RMagick(void)
716
449
  DCL_ATTR_ACCESSOR(Image, orientation)
717
450
  DCL_ATTR_ACCESSOR(Image, page)
718
451
  DCL_ATTR_ACCESSOR(Image, pixel_interpolation_method)
719
- #if defined(HAVE_IMAGE_QUALITY)
720
452
  DCL_ATTR_READER(Image, quality)
721
- #endif
722
453
  DCL_ATTR_READER(Image, quantum_depth)
723
454
  DCL_ATTR_ACCESSOR(Image, rendering_intent)
724
455
  DCL_ATTR_READER(Image, rows)
@@ -726,7 +457,6 @@ Init_RMagick(void)
726
457
  DCL_ATTR_ACCESSOR(Image, start_loop)
727
458
  DCL_ATTR_ACCESSOR(Image, class_type)
728
459
  DCL_ATTR_ACCESSOR(Image, ticks_per_second)
729
- DCL_ATTR_ACCESSOR(Image, tile_info)
730
460
  DCL_ATTR_READER(Image, total_colors)
731
461
  DCL_ATTR_ACCESSOR(Image, transparent_color)
732
462
  DCL_ATTR_ACCESSOR(Image, units)
@@ -762,13 +492,14 @@ Init_RMagick(void)
762
492
  rb_define_method(Class_Image, "channel", Image_channel, 1);
763
493
  // An alias for compare_channel
764
494
  rb_define_method(Class_Image, "channel_compare", Image_compare_channel, -1);
495
+ rb_define_method(Class_Image, "check_destroyed", Image_check_destroyed, 0);
765
496
  rb_define_method(Class_Image, "compare_channel", Image_compare_channel, -1);
766
497
  rb_define_method(Class_Image, "channel_depth", Image_channel_depth, -1);
767
498
  rb_define_method(Class_Image, "channel_extrema", Image_channel_extrema, -1);
768
499
  rb_define_method(Class_Image, "channel_mean", Image_channel_mean, -1);
769
- rb_define_method(Class_Image, "channel_threshold", Image_channel_threshold, -1);
770
500
  rb_define_method(Class_Image, "charcoal", Image_charcoal, -1);
771
501
  rb_define_method(Class_Image, "chop", Image_chop, 4);
502
+ rb_define_method(Class_Image, "clut_channel", Image_clut_channel, -1);
772
503
  rb_define_method(Class_Image, "clone", Image_clone, 0);
773
504
  rb_define_method(Class_Image, "color_flood_fill", Image_color_flood_fill, 5);
774
505
  rb_define_method(Class_Image, "color_histogram", Image_color_histogram, 0);
@@ -790,11 +521,14 @@ Init_RMagick(void)
790
521
  rb_define_method(Class_Image, "cycle_colormap", Image_cycle_colormap, 1);
791
522
  rb_define_method(Class_Image, "delete_profile", Image_delete_profile, 1);
792
523
  rb_define_method(Class_Image, "despeckle", Image_despeckle, 0);
524
+ rb_define_method(Class_Image, "destroy!", Image_destroy_bang, 0);
525
+ rb_define_method(Class_Image, "destroyed?", Image_destroyed_q, 0);
793
526
  rb_define_method(Class_Image, "difference", Image_difference, 1);
794
527
  rb_define_method(Class_Image, "dispatch", Image_dispatch, -1);
795
528
  rb_define_method(Class_Image, "displace", Image_displace, -1);
796
529
  rb_define_method(Class_Image, "display", Image_display, 0);
797
530
  rb_define_method(Class_Image, "dissolve", Image_dissolve, -1);
531
+ rb_define_method(Class_Image, "distort", Image_distort, -1);
798
532
  rb_define_method(Class_Image, "distortion_channel", Image_distortion_channel, -1);
799
533
  rb_define_method(Class_Image, "_dump", Image__dump, 1);
800
534
  rb_define_method(Class_Image, "dup", Image_dup, 0);
@@ -803,9 +537,13 @@ Init_RMagick(void)
803
537
  rb_define_method(Class_Image, "emboss", Image_emboss, -1);
804
538
  rb_define_method(Class_Image, "enhance", Image_enhance, 0);
805
539
  rb_define_method(Class_Image, "equalize", Image_equalize, 0);
540
+ rb_define_method(Class_Image, "equalize_channel", Image_equalize_channel, -1);
806
541
  rb_define_method(Class_Image, "erase!", Image_erase_bang, 0);
542
+ rb_define_method(Class_Image, "excerpt", Image_excerpt, 4);
543
+ rb_define_method(Class_Image, "excerpt!", Image_excerpt_bang, 4);
807
544
  rb_define_method(Class_Image, "export_pixels", Image_export_pixels, -1);
808
545
  rb_define_method(Class_Image, "export_pixels_to_str", Image_export_pixels_to_str, -1);
546
+ rb_define_method(Class_Image, "extent", Image_extent, -1);
809
547
  rb_define_method(Class_Image, "find_similar_region", Image_find_similar_region, -1);
810
548
  rb_define_method(Class_Image, "flip", Image_flip, 0);
811
549
  rb_define_method(Class_Image, "flip!", Image_flip_bang, 0);
@@ -819,7 +557,7 @@ Init_RMagick(void)
819
557
  rb_define_method(Class_Image, "get_pixels", Image_get_pixels, 4);
820
558
  rb_define_method(Class_Image, "gray?", Image_gray_q, 0);
821
559
  rb_define_method(Class_Image, "grey?", Image_gray_q, 0);
822
- rb_define_method(Class_Image, "grayscale_pseudo_class", Image_grayscale_pseudo_class, -1);
560
+ rb_define_method(Class_Image, "histogram?", Image_histogram_q, 0);
823
561
  rb_define_method(Class_Image, "implode", Image_implode, -1);
824
562
  rb_define_method(Class_Image, "import_pixels", Image_import_pixels, -1);
825
563
  rb_define_method(Class_Image, "initialize_copy", Image_init_copy, 1);
@@ -857,7 +595,6 @@ Init_RMagick(void)
857
595
  rb_define_method(Class_Image, "radial_blur", Image_radial_blur, 1);
858
596
  rb_define_method(Class_Image, "radial_blur_channel", Image_radial_blur_channel, -1);
859
597
  rb_define_method(Class_Image, "raise", Image_raise, -1);
860
- rb_define_method(Class_Image, "random_channel_threshold", Image_random_channel_threshold, 2);
861
598
  rb_define_method(Class_Image, "random_threshold_channel", Image_random_threshold_channel, -1);
862
599
  rb_define_method(Class_Image, "recolor", Image_recolor, 1);
863
600
  rb_define_method(Class_Image, "reduce_noise", Image_reduce_noise, 1);
@@ -871,6 +608,7 @@ Init_RMagick(void)
871
608
  rb_define_method(Class_Image, "scale", Image_scale, -1);
872
609
  rb_define_method(Class_Image, "scale!", Image_scale_bang, -1);
873
610
  rb_define_method(Class_Image, "segment", Image_segment, -1);
611
+ rb_define_method(Class_Image, "separate", Image_separate, -1);
874
612
  rb_define_method(Class_Image, "sepiatone", Image_sepiatone, -1);
875
613
  rb_define_method(Class_Image, "set_channel_depth", Image_set_channel_depth, 2);
876
614
  rb_define_method(Class_Image, "shade", Image_shade, -1);
@@ -887,12 +625,12 @@ Init_RMagick(void)
887
625
  rb_define_method(Class_Image, "<=>", Image_spaceship, 1);
888
626
  rb_define_method(Class_Image, "splice", Image_splice, -1);
889
627
  rb_define_method(Class_Image, "spread", Image_spread, -1);
890
- rb_define_method(Class_Image, "statistics", Image_statistics, 0);
891
628
  rb_define_method(Class_Image, "stegano", Image_stegano, 2);
892
629
  rb_define_method(Class_Image, "stereo", Image_stereo, 1);
893
630
  rb_define_method(Class_Image, "strip!", Image_strip_bang, 0);
894
631
  rb_define_method(Class_Image, "store_pixels", Image_store_pixels, 5);
895
632
  rb_define_method(Class_Image, "swirl", Image_swirl, 1);
633
+ rb_define_method(Class_Image, "sync_profiles", Image_sync_profiles, 0);
896
634
  rb_define_method(Class_Image, "texture_flood_fill", Image_texture_flood_fill, 5);
897
635
  rb_define_method(Class_Image, "threshold", Image_threshold, 1);
898
636
  rb_define_method(Class_Image, "thumbnail", Image_thumbnail, -1);
@@ -905,8 +643,8 @@ Init_RMagick(void)
905
643
  rb_define_method(Class_Image, "transpose!", Image_transpose_bang, 0);
906
644
  rb_define_method(Class_Image, "transverse", Image_transverse, 0);
907
645
  rb_define_method(Class_Image, "transverse!", Image_transverse_bang, 0);
908
- rb_define_method(Class_Image, "trim", Image_trim, 0);
909
- rb_define_method(Class_Image, "trim!", Image_trim_bang, 0);
646
+ rb_define_method(Class_Image, "trim", Image_trim, -1);
647
+ rb_define_method(Class_Image, "trim!", Image_trim_bang, -1);
910
648
  rb_define_method(Class_Image, "unique_colors", Image_unique_colors, 0);
911
649
  rb_define_method(Class_Image, "unsharp_mask", Image_unsharp_mask, -1);
912
650
  rb_define_method(Class_Image, "unsharp_mask_channel", Image_unsharp_mask_channel, -1);
@@ -921,18 +659,15 @@ Init_RMagick(void)
921
659
  /* Class Magick::ImageList methods (see also RMagick.rb) */
922
660
  /*-----------------------------------------------------------------------*/
923
661
 
924
- Class_ImageList = rb_define_class_under(Module_Magick, "ImageList", rb_cArray);
662
+ Class_ImageList = rb_define_class_under(Module_Magick, "ImageList", rb_cObject);
925
663
 
926
664
  // Define an alias for Object#display before we override it
927
665
  rb_define_alias(Class_ImageList, "__display__", "display");
928
-
929
- // Define an alias for Array's "map" method.
930
- rb_define_alias(Class_ImageList, "__ary_map__", "map");
931
-
932
666
  rb_define_method(Class_ImageList, "animate", ImageList_animate, -1);
933
667
  rb_define_method(Class_ImageList, "append", ImageList_append, 1);
934
668
  rb_define_method(Class_ImageList, "average", ImageList_average, 0);
935
669
  rb_define_method(Class_ImageList, "coalesce", ImageList_coalesce, 0);
670
+ rb_define_method(Class_ImageList, "composite_layers", ImageList_composite_layers, -1);
936
671
  rb_define_method(Class_ImageList, "deconstruct", ImageList_deconstruct, 0);
937
672
  rb_define_method(Class_ImageList, "display", ImageList_display, 0);
938
673
  rb_define_method(Class_ImageList, "flatten_images", ImageList_flatten_images, 0);
@@ -951,11 +686,7 @@ Init_RMagick(void)
951
686
  /*-----------------------------------------------------------------------*/
952
687
 
953
688
  Class_Draw = rb_define_class_under(Module_Magick, "Draw", rb_cObject);
954
- #if defined(HAVE_RB_DEFINE_ALLOC_FUNC)
955
689
  rb_define_alloc_func(Class_Draw, Draw_alloc);
956
- #else
957
- rb_define_singleton_method(Class_Draw, "new", Draw_new, 0);
958
- #endif
959
690
 
960
691
  DCL_ATTR_WRITER(Draw, affine)
961
692
  DCL_ATTR_WRITER(Draw, align)
@@ -963,6 +694,7 @@ Init_RMagick(void)
963
694
  DCL_ATTR_WRITER(Draw, density)
964
695
  DCL_ATTR_WRITER(Draw, encoding)
965
696
  DCL_ATTR_WRITER(Draw, fill)
697
+ DCL_ATTR_WRITER(Draw, fill_pattern)
966
698
  DCL_ATTR_WRITER(Draw, font)
967
699
  DCL_ATTR_WRITER(Draw, font_family)
968
700
  DCL_ATTR_WRITER(Draw, font_stretch)
@@ -972,6 +704,7 @@ Init_RMagick(void)
972
704
  DCL_ATTR_WRITER(Draw, pointsize)
973
705
  DCL_ATTR_WRITER(Draw, rotation)
974
706
  DCL_ATTR_WRITER(Draw, stroke)
707
+ DCL_ATTR_WRITER(Draw, stroke_pattern)
975
708
  DCL_ATTR_WRITER(Draw, stroke_width)
976
709
  DCL_ATTR_WRITER(Draw, text_antialias)
977
710
  DCL_ATTR_WRITER(Draw, tile)
@@ -997,11 +730,7 @@ Init_RMagick(void)
997
730
 
998
731
  Class_DrawOptions = rb_define_class_under(Class_Image, "DrawOptions", rb_cObject);
999
732
 
1000
- #if defined(HAVE_RB_DEFINE_ALLOC_FUNC)
1001
733
  rb_define_alloc_func(Class_DrawOptions, DrawOptions_alloc);
1002
- #else
1003
- rb_define_singleton_method(Class_DrawOptions, "new", DrawOptions_new, 0);
1004
- #endif
1005
734
 
1006
735
  rb_define_method(Class_DrawOptions, "initialize", DrawOptions_initialize, 0);
1007
736
 
@@ -1011,6 +740,7 @@ Init_RMagick(void)
1011
740
  SHARE_ATTR_WRITER(DrawOptions, Draw, density)
1012
741
  SHARE_ATTR_WRITER(DrawOptions, Draw, encoding)
1013
742
  SHARE_ATTR_WRITER(DrawOptions, Draw, fill)
743
+ SHARE_ATTR_WRITER(DrawOptions, Draw, fill_pattern)
1014
744
  SHARE_ATTR_WRITER(DrawOptions, Draw, font)
1015
745
  SHARE_ATTR_WRITER(DrawOptions, Draw, font_family)
1016
746
  SHARE_ATTR_WRITER(DrawOptions, Draw, font_stretch)
@@ -1020,6 +750,7 @@ Init_RMagick(void)
1020
750
  SHARE_ATTR_WRITER(DrawOptions, Draw, pointsize)
1021
751
  SHARE_ATTR_WRITER(DrawOptions, Draw, rotation)
1022
752
  SHARE_ATTR_WRITER(DrawOptions, Draw, stroke)
753
+ SHARE_ATTR_WRITER(DrawOptions, Draw, stroke_pattern)
1023
754
  SHARE_ATTR_WRITER(DrawOptions, Draw, stroke_width)
1024
755
  SHARE_ATTR_WRITER(DrawOptions, Draw, text_antialias)
1025
756
  SHARE_ATTR_WRITER(DrawOptions, Draw, tile)
@@ -1040,11 +771,7 @@ Init_RMagick(void)
1040
771
  rb_include_module(Class_Pixel, rb_mComparable);
1041
772
 
1042
773
  // Magick::Pixel has 3 constructors: "new" "from_color", and "from_HSL".
1043
- #if defined(HAVE_RB_DEFINE_ALLOC_FUNC)
1044
774
  rb_define_alloc_func(Class_Pixel, Pixel_alloc);
1045
- #else
1046
- rb_define_singleton_method(Class_Pixel, "new", Pixel_new, -1);
1047
- #endif
1048
775
  rb_define_singleton_method(Class_Pixel, "from_color", Pixel_from_color, 1);
1049
776
  rb_define_singleton_method(Class_Pixel, "from_HSL", Pixel_from_HSL, 1);
1050
777
 
@@ -1082,11 +809,7 @@ Init_RMagick(void)
1082
809
 
1083
810
  Class_Montage = rb_define_class_under(Class_ImageList, "Montage", rb_cObject);
1084
811
 
1085
- #if defined(HAVE_RB_DEFINE_ALLOC_FUNC)
1086
812
  rb_define_alloc_func(Class_Montage, Montage_alloc);
1087
- #else
1088
- rb_define_singleton_method(Class_Montage, "new", Montage_new, 0);
1089
- #endif
1090
813
 
1091
814
  rb_define_method(Class_Montage, "initialize", Montage_initialize, 0);
1092
815
  rb_define_method(Class_Montage, "freeze", rm_no_freeze, 0);
@@ -1116,33 +839,30 @@ Init_RMagick(void)
1116
839
 
1117
840
  Class_Info = rb_define_class_under(Class_Image, "Info", rb_cObject);
1118
841
 
1119
- #if defined(HAVE_RB_DEFINE_ALLOC_FUNC)
1120
842
  rb_define_alloc_func(Class_Info, Info_alloc);
1121
- #else
1122
- rb_define_singleton_method(Class_Info, "new", Info_new, 0);
1123
- #endif
1124
843
 
1125
844
  rb_define_method(Class_Info, "initialize", Info_initialize, 0);
1126
845
  rb_define_method(Class_Info, "channel", Info_channel, -1);
1127
846
  rb_define_method(Class_Info, "freeze", rm_no_freeze, 0);
1128
847
  rb_define_method(Class_Info, "define", Info_define, -1);
1129
- rb_define_method(Class_Info, "[]=", Info_aset, 3);
1130
- rb_define_method(Class_Info, "[]", Info_aref, 2);
848
+ rb_define_method(Class_Info, "[]=", Info_aset, -1);
849
+ rb_define_method(Class_Info, "[]", Info_aref, -1);
1131
850
  rb_define_method(Class_Info, "undefine", Info_undefine, 2);
1132
851
 
1133
852
  DCL_ATTR_ACCESSOR(Info, antialias)
853
+ DCL_ATTR_ACCESSOR(Info, attenuate)
1134
854
  DCL_ATTR_ACCESSOR(Info, authenticate)
1135
855
  DCL_ATTR_ACCESSOR(Info, background_color)
1136
856
  DCL_ATTR_ACCESSOR(Info, border_color)
1137
857
  DCL_ATTR_ACCESSOR(Info, colorspace)
1138
- DCL_ATTR_ACCESSOR(Info, comment) // new in 6.0.0
858
+ DCL_ATTR_ACCESSOR(Info, comment)
1139
859
  DCL_ATTR_ACCESSOR(Info, compression)
1140
- DCL_ATTR_ACCESSOR(Info, delay) // new in 6.0.0
860
+ DCL_ATTR_ACCESSOR(Info, delay)
1141
861
  DCL_ATTR_ACCESSOR(Info, density)
1142
862
  DCL_ATTR_ACCESSOR(Info, depth)
1143
- DCL_ATTR_ACCESSOR(Info, dispose) // new in 6.0.0
863
+ DCL_ATTR_ACCESSOR(Info, dispose)
1144
864
  DCL_ATTR_ACCESSOR(Info, dither)
1145
- DCL_ATTR_ACCESSOR(Info, extract) // new in 5.5.6, replaces tile
865
+ DCL_ATTR_ACCESSOR(Info, extract)
1146
866
  DCL_ATTR_ACCESSOR(Info, filename)
1147
867
  DCL_ATTR_ACCESSOR(Info, fill)
1148
868
  DCL_ATTR_ACCESSOR(Info, font)
@@ -1150,26 +870,27 @@ Init_RMagick(void)
1150
870
  DCL_ATTR_ACCESSOR(Info, fuzz)
1151
871
  DCL_ATTR_ACCESSOR(Info, gravity)
1152
872
  DCL_ATTR_ACCESSOR(Info, group)
873
+ DCL_ATTR_ACCESSOR(Info, image_type)
1153
874
  DCL_ATTR_ACCESSOR(Info, interlace)
1154
- DCL_ATTR_ACCESSOR(Info, label) // new in 6.0.0
875
+ DCL_ATTR_ACCESSOR(Info, label)
1155
876
  DCL_ATTR_ACCESSOR(Info, matte_color)
1156
877
  DCL_ATTR_WRITER(Info, monitor)
1157
878
  DCL_ATTR_ACCESSOR(Info, monochrome)
1158
- DCL_ATTR_ACCESSOR(Info, number_scenes) // new in 5.5.6, replaces subrange
1159
- DCL_ATTR_ACCESSOR(Info, orientation) // new in 6.0.0
879
+ DCL_ATTR_ACCESSOR(Info, number_scenes)
880
+ DCL_ATTR_ACCESSOR(Info, orientation)
1160
881
  DCL_ATTR_ACCESSOR(Info, origin) // new in 6.3.1
1161
882
  DCL_ATTR_ACCESSOR(Info, page)
1162
883
  DCL_ATTR_ACCESSOR(Info, pointsize)
1163
884
  DCL_ATTR_ACCESSOR(Info, quality)
1164
885
  DCL_ATTR_ACCESSOR(Info, sampling_factor)
1165
- DCL_ATTR_ACCESSOR(Info, scene) // new in 5.5.6, replaces subimage
886
+ DCL_ATTR_ACCESSOR(Info, scene)
1166
887
  DCL_ATTR_ACCESSOR(Info, server_name)
1167
888
  DCL_ATTR_ACCESSOR(Info, size)
1168
- DCL_ATTR_ACCESSOR(Info, subimage) // deprecated >=5.5.6, replaced by scene
1169
- DCL_ATTR_ACCESSOR(Info, subrange) // deprecated >=5.5.6, replaced by number_scenes
889
+ DCL_ATTR_ACCESSOR(Info, stroke)
890
+ DCL_ATTR_ACCESSOR(Info, stroke_width)
1170
891
  DCL_ATTR_WRITER(Info, texture)
1171
- DCL_ATTR_ACCESSOR(Info, tile) // deprecated >=5.5.6, replaced by extract and scenes
1172
- DCL_ATTR_ACCESSOR(Info, image_type)
892
+ DCL_ATTR_ACCESSOR(Info, tile_offset)
893
+ DCL_ATTR_ACCESSOR(Info, undercolor)
1173
894
  DCL_ATTR_ACCESSOR(Info, units)
1174
895
  DCL_ATTR_ACCESSOR(Info, view)
1175
896
 
@@ -1180,21 +901,19 @@ Init_RMagick(void)
1180
901
 
1181
902
  Class_PolaroidOptions = rb_define_class_under(Class_Image, "PolaroidOptions", rb_cObject);
1182
903
 
1183
- #if defined(HAVE_RB_DEFINE_ALLOC_FUNC)
1184
904
  rb_define_alloc_func(Class_PolaroidOptions, PolaroidOptions_alloc);
1185
- #else
1186
- rb_define_singleton_method(Class_PolaroidOptions, "new", PolaroidOptions_new, 0);
1187
- #endif
1188
905
 
1189
906
  rb_define_method(Class_PolaroidOptions, "initialize", PolaroidOptions_initialize, 0);
1190
907
 
1191
908
  DCL_ATTR_WRITER(PolaroidOptions, shadow_color)
909
+ DCL_ATTR_WRITER(PolaroidOptions, border_color)
1192
910
  // The other attribute writer methods are implemented by Draw's functions
1193
911
  SHARE_ATTR_WRITER(PolaroidOptions, Draw, align)
1194
912
  SHARE_ATTR_WRITER(PolaroidOptions, Draw, decorate)
1195
913
  SHARE_ATTR_WRITER(PolaroidOptions, Draw, density)
1196
914
  SHARE_ATTR_WRITER(PolaroidOptions, Draw, encoding)
1197
915
  SHARE_ATTR_WRITER(PolaroidOptions, Draw, fill)
916
+ SHARE_ATTR_WRITER(PolaroidOptions, Draw, fill_pattern)
1198
917
  SHARE_ATTR_WRITER(PolaroidOptions, Draw, font)
1199
918
  SHARE_ATTR_WRITER(PolaroidOptions, Draw, font_family)
1200
919
  SHARE_ATTR_WRITER(PolaroidOptions, Draw, font_stretch)
@@ -1203,6 +922,7 @@ Init_RMagick(void)
1203
922
  SHARE_ATTR_WRITER(PolaroidOptions, Draw, gravity)
1204
923
  SHARE_ATTR_WRITER(PolaroidOptions, Draw, pointsize)
1205
924
  SHARE_ATTR_WRITER(PolaroidOptions, Draw, stroke)
925
+ SHARE_ATTR_WRITER(PolaroidOptions, Draw, stroke_pattern)
1206
926
  SHARE_ATTR_WRITER(PolaroidOptions, Draw, stroke_width)
1207
927
  SHARE_ATTR_WRITER(PolaroidOptions, Draw, text_antialias)
1208
928
  SHARE_ATTR_WRITER(PolaroidOptions, Draw, undercolor)
@@ -1215,11 +935,7 @@ Init_RMagick(void)
1215
935
  // class Magick::GradientFill
1216
936
  Class_GradientFill = rb_define_class_under(Module_Magick, "GradientFill", rb_cObject);
1217
937
 
1218
- #if defined(HAVE_RB_DEFINE_ALLOC_FUNC)
1219
938
  rb_define_alloc_func(Class_GradientFill, GradientFill_alloc);
1220
- #else
1221
- rb_define_singleton_method(Class_GradientFill, "new", GradientFill_new, 6);
1222
- #endif
1223
939
 
1224
940
  rb_define_method(Class_GradientFill, "initialize", GradientFill_initialize, 6);
1225
941
  rb_define_method(Class_GradientFill, "fill", GradientFill_fill, 1);
@@ -1227,11 +943,7 @@ Init_RMagick(void)
1227
943
  // class Magick::TextureFill
1228
944
  Class_TextureFill = rb_define_class_under(Module_Magick, "TextureFill", rb_cObject);
1229
945
 
1230
- #if defined(HAVE_RB_DEFINE_ALLOC_FUNC)
1231
946
  rb_define_alloc_func(Class_TextureFill, TextureFill_alloc);
1232
- #else
1233
- rb_define_singleton_method(Class_TextureFill, "new", TextureFill_new, 1);
1234
- #endif
1235
947
 
1236
948
  rb_define_method(Class_TextureFill, "initialize", TextureFill_initialize, 1);
1237
949
  rb_define_method(Class_TextureFill, "fill", TextureFill_fill, 1);
@@ -1242,20 +954,24 @@ Init_RMagick(void)
1242
954
 
1243
955
  Class_ImageMagickError = rb_define_class_under(Module_Magick, "ImageMagickError", rb_eStandardError);
1244
956
  rb_define_method(Class_ImageMagickError, "initialize", ImageMagickError_initialize, -1);
1245
- RUBY16(rb_enable_super(Class_ImageMagickError, "initialize");)
1246
957
  rb_define_attr(Class_ImageMagickError, MAGICK_LOC, True, False);
1247
958
 
1248
959
 
1249
- // Miscellaneous constants
1250
- rb_define_const(Module_Magick, "MaxRGB", INT2FIX(MaxRGB));
1251
- rb_define_const(Module_Magick, "QuantumDepth", INT2FIX(QuantumDepth));
960
+ /*-----------------------------------------------------------------------*/
961
+ /* Class Magick::DestroyedImageError < StandardError */
962
+ /*-----------------------------------------------------------------------*/
963
+ Class_DestroyedImageError = rb_define_class_under(Module_Magick, "DestroyedImageError", rb_eStandardError);
1252
964
 
1253
- version_constants();
1254
965
 
1255
- // Opacity constants
966
+ // Miscellaneous fixed-point constants
967
+ DEF_CONST(MaxRGB);
968
+ DEF_CONST(QuantumRange);
969
+ DEF_CONST(QuantumDepth);
1256
970
  DEF_CONST(OpaqueOpacity);
1257
971
  DEF_CONST(TransparentOpacity);
1258
972
 
973
+ version_constants();
974
+
1259
975
  /*-----------------------------------------------------------------------*/
1260
976
  /* Class Magick::Enum */
1261
977
  /*-----------------------------------------------------------------------*/
@@ -1264,11 +980,7 @@ Init_RMagick(void)
1264
980
  Class_Enum = rb_define_class_under(Module_Magick, "Enum", rb_cObject);
1265
981
  rb_include_module(Class_Enum, rb_mComparable);
1266
982
 
1267
- #if defined(HAVE_RB_DEFINE_ALLOC_FUNC)
1268
983
  rb_define_alloc_func(Class_Enum, Enum_alloc);
1269
- #else
1270
- rb_define_singleton_method(Class_Enum, "new", Enum_new, 2);
1271
- #endif
1272
984
 
1273
985
  rb_define_method(Class_Enum, "initialize", Enum_initialize, 2);
1274
986
  rb_define_method(Class_Enum, "to_s", Enum_to_s, 0);
@@ -1284,6 +996,17 @@ Init_RMagick(void)
1284
996
  ENUMERATOR(RightAlign)
1285
997
  END_ENUM
1286
998
 
999
+ // AlphaChannelType constants
1000
+ #if defined(HAVE_TYPE_ALPHACHANNELTYPE)
1001
+ DEF_ENUM(AlphaChannelType)
1002
+ ENUMERATOR(UndefinedAlphaChannel)
1003
+ ENUMERATOR(ActivateAlphaChannel)
1004
+ ENUMERATOR(DeactivateAlphaChannel)
1005
+ ENUMERATOR(ResetAlphaChannel)
1006
+ ENUMERATOR(SetAlphaChannel)
1007
+ END_ENUM
1008
+ #endif
1009
+
1287
1010
  // AnchorType constants (for Draw#text_anchor - these are not defined by ImageMagick)
1288
1011
  DEF_ENUM(AnchorType)
1289
1012
  ENUMERATOR(StartAnchor)
@@ -1305,15 +1028,9 @@ Init_RMagick(void)
1305
1028
 
1306
1029
  ENUMERATOR(BlackChannel)
1307
1030
  ENUMERATOR(MatteChannel)
1308
- #if defined(HAVE_INDEXCHANNEL)
1309
- ENUMERATOR(IndexChannel) // 5.5.8
1310
- #endif
1311
- #if defined(HAVE_GRAYCHANNEL)
1031
+ ENUMERATOR(IndexChannel)
1312
1032
  ENUMERATOR(GrayChannel)
1313
- #endif
1314
- #if defined(HAVE_ALLCHANNELS)
1315
1033
  ENUMERATOR(AllChannels)
1316
- #endif
1317
1034
 
1318
1035
  // Define alternate names for ChannelType enums for Image::Info#channel=
1319
1036
  // AlphaChannel == OpacityChannel
@@ -1366,30 +1083,13 @@ Init_RMagick(void)
1366
1083
  , INT2FIX(sRGBColorspace)));
1367
1084
  ENUMERATOR(HSLColorspace)
1368
1085
  ENUMERATOR(HWBColorspace)
1369
- #if defined(HAVE_HSBCOLORSPACE)
1370
- ENUMERATOR(HSBColorspace) // IM 6.0.0
1371
- #endif
1372
- #if defined(HAVE_CINEONLOGRGBCOLORSPACE)
1373
- ENUMERATOR(CineonLogRGBColorspace) // GM 1.2
1374
- #endif
1375
- #if defined(HAVE_LABCOLORSPACE)
1376
- ENUMERATOR(LABColorspace) // GM 1.2
1377
- #endif
1378
- #if defined(HAVE_REC601LUMACOLORSPACE)
1379
- ENUMERATOR(Rec601LumaColorspace) // GM 1.2 && IM 6.2.2
1380
- #endif
1381
- #if defined(HAVE_REC601YCBCRCOLORSPACE)
1382
- ENUMERATOR(Rec601YCbCrColorspace) // GM 1.2 && IM 6.2.2
1383
- #endif
1384
- #if defined(HAVE_REC709LUMACOLORSPACE)
1385
- ENUMERATOR(Rec709LumaColorspace) // GM 1.2 && IM 6.2.2
1386
- #endif
1387
- #if defined(HAVE_REC709YCBCRCOLORSPACE)
1388
- ENUMERATOR(Rec709YCbCrColorspace) // GM 1.2 && IM 6.2.2
1389
- #endif
1390
- #if defined(HAVE_LOGCOLORSPACE)
1391
- ENUMERATOR(LogColorspace) // IM 6.2.3
1392
- #endif
1086
+ ENUMERATOR(HSBColorspace)
1087
+ ENUMERATOR(LABColorspace)
1088
+ ENUMERATOR(Rec601LumaColorspace)
1089
+ ENUMERATOR(Rec601YCbCrColorspace)
1090
+ ENUMERATOR(Rec709LumaColorspace)
1091
+ ENUMERATOR(Rec709YCbCrColorspace)
1092
+ ENUMERATOR(LogColorspace)
1393
1093
  END_ENUM
1394
1094
 
1395
1095
  // ComplianceType constants are defined as enums but used as bit flags
@@ -1414,32 +1114,44 @@ Init_RMagick(void)
1414
1114
  ENUMERATOR(NoCompositeOp)
1415
1115
  ENUMERATOR(AddCompositeOp)
1416
1116
  ENUMERATOR(AtopCompositeOp)
1117
+ ENUMERATOR(BlendCompositeOp)
1417
1118
  ENUMERATOR(BumpmapCompositeOp)
1119
+ #if defined(HAVE_ENUM_CHANGEMASKCOMPOSITEOP)
1120
+ ENUMERATOR(ChangeMaskCompositeOp)
1121
+ #endif
1418
1122
  ENUMERATOR(ClearCompositeOp)
1123
+ ENUMERATOR(ColorBurnCompositeOp)
1124
+ ENUMERATOR(ColorDodgeCompositeOp)
1419
1125
  ENUMERATOR(ColorizeCompositeOp)
1126
+ ENUMERATOR(CopyBlackCompositeOp)
1420
1127
  ENUMERATOR(CopyBlueCompositeOp)
1421
1128
  ENUMERATOR(CopyCompositeOp)
1129
+ ENUMERATOR(CopyCyanCompositeOp)
1422
1130
  ENUMERATOR(CopyGreenCompositeOp)
1131
+ ENUMERATOR(CopyMagentaCompositeOp)
1423
1132
  ENUMERATOR(CopyOpacityCompositeOp)
1424
1133
  ENUMERATOR(CopyRedCompositeOp)
1425
- ENUMERATOR(CopyCyanCompositeOp)
1426
- ENUMERATOR(CopyMagentaCompositeOp)
1427
1134
  ENUMERATOR(CopyYellowCompositeOp)
1428
- ENUMERATOR(CopyBlackCompositeOp)
1429
1135
  ENUMERATOR(DarkenCompositeOp)
1430
- ENUMERATOR(DifferenceCompositeOp)
1431
- ENUMERATOR(DisplaceCompositeOp)
1432
- ENUMERATOR(DissolveCompositeOp)
1433
- #if defined(HAVE_DSTCOMPOSITEOP)
1434
- ENUMERATOR(DstAtopCompositeOp) // Added 6.0.2?
1136
+ #if defined(HAVE_ENUM_DIVIDECOMPOSITEOP)
1137
+ ENUMERATOR(DivideCompositeOp)
1138
+ #endif
1139
+ ENUMERATOR(DstAtopCompositeOp)
1435
1140
  ENUMERATOR(DstCompositeOp)
1436
1141
  ENUMERATOR(DstInCompositeOp)
1437
1142
  ENUMERATOR(DstOutCompositeOp)
1438
1143
  ENUMERATOR(DstOverCompositeOp)
1439
- #endif
1144
+ ENUMERATOR(DifferenceCompositeOp)
1145
+ ENUMERATOR(DisplaceCompositeOp)
1146
+ ENUMERATOR(DissolveCompositeOp)
1147
+ ENUMERATOR(ExclusionCompositeOp)
1148
+ ENUMERATOR(HardLightCompositeOp)
1440
1149
  ENUMERATOR(HueCompositeOp)
1441
1150
  ENUMERATOR(InCompositeOp)
1442
1151
  ENUMERATOR(LightenCompositeOp)
1152
+ #if defined(HAVE_ENUM_LINEARLIGHTCOMPOSITEOP)
1153
+ ENUMERATOR(LinearLightCompositeOp)
1154
+ #endif
1443
1155
  ENUMERATOR(LuminizeCompositeOp)
1444
1156
  ENUMERATOR(MinusCompositeOp)
1445
1157
  ENUMERATOR(ModulateCompositeOp)
@@ -1448,30 +1160,18 @@ Init_RMagick(void)
1448
1160
  ENUMERATOR(OverCompositeOp)
1449
1161
  ENUMERATOR(OverlayCompositeOp)
1450
1162
  ENUMERATOR(PlusCompositeOp)
1451
- #if defined(HAVE_REPLACECOMPOSITEOP) // Added 5.5.8
1452
1163
  ENUMERATOR(ReplaceCompositeOp) // synonym for CopyCompositeOp
1453
- #endif
1454
1164
  ENUMERATOR(SaturateCompositeOp)
1455
1165
  ENUMERATOR(ScreenCompositeOp)
1456
- #if defined(HAVE_DSTCOMPOSITEOP)
1166
+ ENUMERATOR(SoftLightCompositeOp)
1457
1167
  ENUMERATOR(SrcAtopCompositeOp)
1458
1168
  ENUMERATOR(SrcCompositeOp)
1459
1169
  ENUMERATOR(SrcInCompositeOp)
1460
1170
  ENUMERATOR(SrcOutCompositeOp)
1461
1171
  ENUMERATOR(SrcOverCompositeOp)
1462
- #endif
1463
1172
  ENUMERATOR(SubtractCompositeOp)
1464
1173
  ENUMERATOR(ThresholdCompositeOp)
1465
1174
  ENUMERATOR(XorCompositeOp)
1466
-
1467
- #if defined(HAVE_COLORDODGECOMPOSITEOP)
1468
- ENUMERATOR(BlendCompositeOp)
1469
- ENUMERATOR(ColorBurnCompositeOp)
1470
- ENUMERATOR(ColorDodgeCompositeOp)
1471
- ENUMERATOR(ExclusionCompositeOp)
1472
- ENUMERATOR(HardLightCompositeOp)
1473
- ENUMERATOR(SoftLightCompositeOp)
1474
- #endif
1475
1175
  END_ENUM
1476
1176
 
1477
1177
  // CompressionType constants
@@ -1482,13 +1182,10 @@ Init_RMagick(void)
1482
1182
  ENUMERATOR(FaxCompression)
1483
1183
  ENUMERATOR(Group4Compression)
1484
1184
  ENUMERATOR(JPEGCompression)
1485
- #if defined(HAVE_JPEG2000COMPRESSION)
1486
1185
  ENUMERATOR(JPEG2000Compression)
1487
- #endif
1488
1186
  ENUMERATOR(LosslessJPEGCompression)
1489
1187
  ENUMERATOR(LZWCompression)
1490
- ENUMERATOR(RLECompression) // preferred
1491
- ENUMERATOR(RunlengthEncodedCompression) // deprecated
1188
+ ENUMERATOR(RLECompression)
1492
1189
  ENUMERATOR(ZipCompression)
1493
1190
  END_ENUM
1494
1191
 
@@ -1508,6 +1205,24 @@ Init_RMagick(void)
1508
1205
  ENUMERATOR(PreviousDispose)
1509
1206
  END_ENUM
1510
1207
 
1208
+ #if defined(HAVE_DISTORTIMAGE)
1209
+ // DistortImage "method" argument values
1210
+ DEF_ENUM(DistortImageMethod)
1211
+ ENUMERATOR(UndefinedDistortion)
1212
+ ENUMERATOR(AffineDistortion)
1213
+ ENUMERATOR(AffineProjectionDistortion)
1214
+ #if defined(HAVE_ENUM_ARCDISTORTION)
1215
+ ENUMERATOR(ArcDistortion)
1216
+ #endif
1217
+ ENUMERATOR(BilinearDistortion)
1218
+ ENUMERATOR(PerspectiveDistortion)
1219
+ #if defined(HAVE_PERSPECTIVEPROJECTIONDISTORTION)
1220
+ ENUMERATOR(PerspectiveProjectionDistortion)
1221
+ #endif
1222
+ ENUMERATOR(ScaleRotateTranslateDistortion)
1223
+ END_ENUM
1224
+ #endif
1225
+
1511
1226
  DEF_ENUM(EndianType)
1512
1227
  ENUMERATOR(UndefinedEndian)
1513
1228
  ENUMERATOR(LSBEndian)
@@ -1532,17 +1247,32 @@ Init_RMagick(void)
1532
1247
  ENUMERATOR(LanczosFilter)
1533
1248
  ENUMERATOR(BesselFilter)
1534
1249
  ENUMERATOR(SincFilter)
1250
+ #if defined(HAVE_ENUM_KAISERFILTER)
1251
+ ENUMERATOR(KaiserFilter)
1252
+ #endif
1253
+ #if defined(HAVE_ENUM_WELSHFILTER)
1254
+ ENUMERATOR(WelshFilter)
1255
+ #endif
1256
+ #if defined(HAVE_ENUM_PARZENFILTER)
1257
+ ENUMERATOR(ParzenFilter)
1258
+ #endif
1259
+ #if defined(HAVE_ENUM_LAGRANGEFILTER)
1260
+ ENUMERATOR(LagrangeFilter)
1261
+ #endif
1262
+ #if defined(HAVE_ENUM_BOHMANFILTER)
1263
+ ENUMERATOR(BohmanFilter)
1264
+ #endif
1265
+ #if defined(HAVE_ENUM_BARTLETTFILTER)
1266
+ ENUMERATOR(BartlettFilter)
1267
+ #endif
1268
+ #if defined(HAVE_ENUM_SENTINELFILTER)
1269
+ ENUMERATOR(SentinelFilter)
1270
+ #endif
1535
1271
  END_ENUM
1536
1272
 
1537
1273
  // GravityType constants
1538
1274
  DEF_ENUM(GravityType)
1539
- #if defined(HAVE_UNDEFINEDGRAVITY)
1540
1275
  ENUMERATOR(UndefinedGravity)
1541
- #else
1542
- // Provide this enumerator in older (pre 6.0.0) versions of ImageMagick
1543
- _enum = rm_enum_new(_cls, ID2SYM(rb_intern("UndefinedGravity")), INT2FIX(0));\
1544
- rb_define_const(Module_Magick, "UndefinedGravity", _enum);
1545
- #endif
1546
1276
  ENUMERATOR(ForgetGravity)
1547
1277
  ENUMERATOR(NorthWestGravity)
1548
1278
  ENUMERATOR(NorthGravity)
@@ -1569,9 +1299,7 @@ Init_RMagick(void)
1569
1299
  ENUMERATOR(ColorSeparationType)
1570
1300
  ENUMERATOR(ColorSeparationMatteType)
1571
1301
  ENUMERATOR(OptimizeType)
1572
- #if defined(HAVE_PALETTEBILEVELMATTETYPE)
1573
1302
  ENUMERATOR(PaletteBilevelMatteType)
1574
- #endif
1575
1303
  END_ENUM
1576
1304
 
1577
1305
  // InterlaceType constants
@@ -1581,9 +1309,17 @@ Init_RMagick(void)
1581
1309
  ENUMERATOR(LineInterlace)
1582
1310
  ENUMERATOR(PlaneInterlace)
1583
1311
  ENUMERATOR(PartitionInterlace)
1312
+ #if defined(HAVE_ENUM_GIFINTERLACE)
1313
+ ENUMERATOR(GIFInterlace)
1314
+ #endif
1315
+ #if defined(HAVE_ENUM_JPEGINTERLACE)
1316
+ ENUMERATOR(JPEGInterlace)
1317
+ #endif
1318
+ #if defined(HAVE_ENUM_PNGINTERLACE)
1319
+ ENUMERATOR(PNGInterlace)
1320
+ #endif
1584
1321
  END_ENUM
1585
1322
 
1586
- #if defined(HAVE_INTERPOLATEPIXELCOLOR)
1587
1323
  DEF_ENUM(InterpolatePixelMethod)
1588
1324
  ENUMERATOR(UndefinedInterpolatePixel)
1589
1325
  ENUMERATOR(AverageInterpolatePixel)
@@ -1593,35 +1329,62 @@ Init_RMagick(void)
1593
1329
  ENUMERATOR(IntegerInterpolatePixel)
1594
1330
  ENUMERATOR(MeshInterpolatePixel)
1595
1331
  ENUMERATOR(NearestNeighborInterpolatePixel)
1596
- END_ENUM
1332
+ #if defined(HAVE_SPLINEINTERPOLATEPIXEL)
1333
+ ENUMERATOR(SplineInterpolatePixel)
1597
1334
  #endif
1335
+ END_ENUM
1598
1336
 
1599
- #if defined(HAVE_COMPAREIMAGELAYERS)
1337
+ #if defined(HAVE_TYPE_IMAGELAYERMETHOD)
1338
+ DEF_ENUM(ImageLayerMethod)
1339
+ #else
1600
1340
  DEF_ENUM(MagickLayerMethod)
1341
+ #endif
1601
1342
  ENUMERATOR(UndefinedLayer)
1602
1343
  ENUMERATOR(CompareAnyLayer)
1603
1344
  ENUMERATOR(CompareClearLayer)
1604
1345
  ENUMERATOR(CompareOverlayLayer)
1605
1346
  ENUMERATOR(OptimizeLayer)
1606
1347
  ENUMERATOR(OptimizePlusLayer)
1607
- #if defined(HAVE_COALESCELAYER)
1608
- // Introduced in IM 6.2.7-0
1609
1348
  ENUMERATOR(CoalesceLayer)
1610
1349
  ENUMERATOR(DisposeLayer)
1350
+ #if defined(HAVE_ENUM_OPTIMIZETRANSLAYER)
1351
+ ENUMERATOR(OptimizeTransLayer)
1611
1352
  #endif
1612
- END_ENUM
1353
+ #if defined(HAVE_ENUM_OPTIMIZEIMAGELAYER)
1354
+ ENUMERATOR(OptimizeImageLayer)
1355
+ #endif
1356
+ #if defined(HAVE_ENUM_REMOVEDUPSLAYER)
1357
+ ENUMERATOR(RemoveDupsLayer)
1613
1358
  #endif
1359
+ #if defined(HAVE_ENUM_REMOVEZEROLAYER)
1360
+ ENUMERATOR(RemoveZeroLayer)
1361
+ #endif
1362
+ #if defined(HAVE_ENUM_COMPOSITELAYER)
1363
+ ENUMERATOR(CompositeLayer)
1364
+ #endif
1365
+ #if defined(HAVE_ENUM_MERGELAYER)
1366
+ ENUMERATOR(MergeLayer)
1367
+ #endif
1368
+ #if defined(HAVE_ENUM_MOSAICLAYER)
1369
+ ENUMERATOR(MosaicLayer)
1370
+ #endif
1371
+ #if defined(HAVE_ENUM_FLATTENLAYER)
1372
+ ENUMERATOR(FlattenLayer)
1373
+ #endif
1374
+ END_ENUM
1614
1375
 
1615
- #if defined(HAVE_COMPAREIMAGECHANNELS)
1616
1376
  DEF_ENUM(MetricType)
1617
1377
  ENUMERATOR(UndefinedMetric)
1378
+ ENUMERATOR(AbsoluteErrorMetric)
1618
1379
  ENUMERATOR(MeanAbsoluteErrorMetric)
1380
+ #if defined(HAVE_ENUM_MEANERRORPERPIXELMETRIC)
1381
+ ENUMERATOR(MeanErrorPerPixelMetric)
1382
+ #endif
1619
1383
  ENUMERATOR(MeanSquaredErrorMetric)
1620
1384
  ENUMERATOR(PeakAbsoluteErrorMetric)
1621
1385
  ENUMERATOR(PeakSignalToNoiseRatioMetric)
1622
1386
  ENUMERATOR(RootMeanSquaredErrorMetric)
1623
1387
  END_ENUM
1624
- #endif
1625
1388
 
1626
1389
  // NoiseType constants
1627
1390
  DEF_ENUM(NoiseType)
@@ -1631,9 +1394,11 @@ Init_RMagick(void)
1631
1394
  ENUMERATOR(ImpulseNoise)
1632
1395
  ENUMERATOR(LaplacianNoise)
1633
1396
  ENUMERATOR(PoissonNoise)
1397
+ #if defined(HAVE_ENUM_RANDOMNOISE)
1398
+ ENUMERATOR(RandomNoise)
1399
+ #endif
1634
1400
  END_ENUM
1635
1401
 
1636
- #if defined(HAVE_IMAGE_ORIENTATION)
1637
1402
  // Orientation constants
1638
1403
  DEF_ENUM(OrientationType)
1639
1404
  ENUMERATOR(UndefinedOrientation)
@@ -1646,7 +1411,6 @@ Init_RMagick(void)
1646
1411
  ENUMERATOR(RightBottomOrientation)
1647
1412
  ENUMERATOR(LeftBottomOrientation)
1648
1413
  END_ENUM
1649
- #endif
1650
1414
 
1651
1415
  // Paint method constants
1652
1416
  DEF_ENUM(PaintMethod)
@@ -1691,24 +1455,20 @@ Init_RMagick(void)
1691
1455
  ENUMERATOR(JPEGPreview)
1692
1456
  END_ENUM
1693
1457
 
1694
- #if defined(HAVE_QUANTUMOPERATORREGIONIMAGE) || defined(HAVE_EVALUATEIMAGECHANNEL)
1695
1458
  DEF_ENUM(QuantumExpressionOperator)
1696
1459
  ENUMERATOR(UndefinedQuantumOperator)
1697
1460
  ENUMERATOR(AddQuantumOperator)
1698
1461
  ENUMERATOR(AndQuantumOperator)
1699
1462
  ENUMERATOR(DivideQuantumOperator)
1700
1463
  ENUMERATOR(LShiftQuantumOperator)
1701
- #if defined(HAVE_MAXEVALUATEOPERATOR)
1702
1464
  ENUMERATOR(MaxQuantumOperator)
1703
1465
  ENUMERATOR(MinQuantumOperator)
1704
- #endif
1705
1466
  ENUMERATOR(MultiplyQuantumOperator)
1706
1467
  ENUMERATOR(OrQuantumOperator)
1707
1468
  ENUMERATOR(RShiftQuantumOperator)
1708
1469
  ENUMERATOR(SubtractQuantumOperator)
1709
1470
  ENUMERATOR(XorQuantumOperator)
1710
1471
  END_ENUM
1711
- #endif
1712
1472
 
1713
1473
  // RenderingIntent
1714
1474
  DEF_ENUM(RenderingIntent)
@@ -1728,17 +1488,13 @@ Init_RMagick(void)
1728
1488
 
1729
1489
  // StorageType
1730
1490
  DEF_ENUM(StorageType)
1731
- #if defined(HAVE_UNDEFINEDGRAVITY) // UndefinedGravity & UndefinedPixel were both introduced in IM 6.0.0
1732
1491
  ENUMERATOR(UndefinedPixel)
1733
- #endif
1734
1492
  ENUMERATOR(CharPixel)
1735
1493
  ENUMERATOR(DoublePixel)
1736
1494
  ENUMERATOR(FloatPixel)
1737
1495
  ENUMERATOR(IntegerPixel)
1738
1496
  ENUMERATOR(LongPixel)
1739
- #if defined(HAVE_QUANTUMPIXEL)
1740
1497
  ENUMERATOR(QuantumPixel)
1741
- #endif
1742
1498
  ENUMERATOR(ShortPixel)
1743
1499
  END_ENUM
1744
1500
 
@@ -1770,9 +1526,22 @@ Init_RMagick(void)
1770
1526
  ENUMERATOR(EdgeVirtualPixelMethod)
1771
1527
  ENUMERATOR(MirrorVirtualPixelMethod)
1772
1528
  ENUMERATOR(TileVirtualPixelMethod)
1773
- #if defined(HAVE_TRANSPARENTVIRTUALPIXELMETHOD)
1774
- ENUMERATOR(BackgroundVirtualPixelMethod)
1775
1529
  ENUMERATOR(TransparentVirtualPixelMethod)
1530
+ ENUMERATOR(BackgroundVirtualPixelMethod)
1531
+ ENUMERATOR(DitherVirtualPixelMethod)
1532
+ ENUMERATOR(RandomVirtualPixelMethod)
1533
+ ENUMERATOR(ConstantVirtualPixelMethod)
1534
+ #if defined(HAVE_ENUM_MASKVIRTUALPIXELMETHOD)
1535
+ ENUMERATOR(MaskVirtualPixelMethod)
1536
+ #endif
1537
+ #if defined(HAVE_ENUM_BLACKVIRTUALPIXELMETHOD)
1538
+ ENUMERATOR(BlackVirtualPixelMethod)
1539
+ #endif
1540
+ #if defined(HAVE_ENUM_GRAYVIRTUALPIXELMETHOD)
1541
+ ENUMERATOR(GrayVirtualPixelMethod)
1542
+ #endif
1543
+ #if defined(HAVE_ENUM_WHITEVIRTUALPIXELMETHOD)
1544
+ ENUMERATOR(WhiteVirtualPixelMethod)
1776
1545
  #endif
1777
1546
  END_ENUM
1778
1547
 
@@ -1796,18 +1565,6 @@ Init_RMagick(void)
1796
1565
  Class_AffineMatrix = rb_struct_define(NULL, "sx", "rx", "ry", "sy", "tx", "ty", NULL);
1797
1566
  rb_define_const(Module_Magick, "AffineMatrix", Class_AffineMatrix);
1798
1567
 
1799
- #if defined(HAVE_GETIMAGESTATISTICS)
1800
- // These classes are defined for >= GM 1.1.
1801
-
1802
- // Magick::Statistics
1803
- Class_Statistics = rb_struct_define(NULL, "red", "green", "blue", "opacity", NULL);
1804
- rb_define_const(Module_Magick, "Statistics", Class_Statistics);
1805
- // Magick::ChannelStatistics
1806
- Class_StatisticsChannel = rb_struct_define(NULL, "max", "min", "mean", "stddev", "var", NULL);
1807
- rb_define_const(Class_Statistics, "Channel", Class_StatisticsChannel);
1808
- #endif
1809
-
1810
-
1811
1568
  // Magick::Primary
1812
1569
  Class_Primary = rb_struct_define(NULL, "x", "y", "z", NULL);
1813
1570
  rb_define_method(Class_Primary, "to_s", PrimaryInfo_to_s, 0);
@@ -1815,11 +1572,11 @@ Init_RMagick(void)
1815
1572
 
1816
1573
  // Magick::Chromaticity
1817
1574
  Class_Chromaticity = rb_struct_define(NULL
1818
- , "red_primary"
1819
- , "green_primary"
1820
- , "blue_primary"
1821
- , "white_point"
1822
- , NULL);
1575
+ , "red_primary"
1576
+ , "green_primary"
1577
+ , "blue_primary"
1578
+ , "white_point"
1579
+ , NULL);
1823
1580
  rb_define_method(Class_Chromaticity, "to_s", ChromaticityInfo_to_s, 0);
1824
1581
  rb_define_const(Module_Magick, "Chromaticity", Class_Chromaticity);
1825
1582
 
@@ -1844,8 +1601,8 @@ Init_RMagick(void)
1844
1601
 
1845
1602
  // Magick::Font
1846
1603
  Class_Font = rb_struct_define(NULL, "name", "description",
1847
- "family", "style", "stretch", "weight",
1848
- "encoding", "foundry", "format", NULL);
1604
+ "family", "style", "stretch", "weight",
1605
+ "encoding", "foundry", "format", NULL);
1849
1606
  rb_define_method(Class_Font, "to_s", Font_to_s, 0);
1850
1607
  rb_define_const(Module_Magick, "Font", Class_Font);
1851
1608
 
@@ -1865,8 +1622,7 @@ Init_RMagick(void)
1865
1622
  /*
1866
1623
  * Static: test_Magick_version
1867
1624
  * Purpose: Ensure the version of ImageMagick we're running with matches
1868
- * the version we were compiled with. We were compiled with MagickLibVersion.
1869
- * GetMagickVersion returns the runtime version.
1625
+ * the version we were compiled with.
1870
1626
  * Notes: Bypass the test by defining the constant RMAGICK_BYPASS_VERSION_TEST
1871
1627
  * to 'true' at the top level, before requiring 'RMagick'
1872
1628
  */
@@ -1874,6 +1630,13 @@ static void test_Magick_version(void)
1874
1630
  {
1875
1631
  unsigned long version_number;
1876
1632
  const char *version_str;
1633
+ const char *web_site =
1634
+ #if defined(MagickHomeURL)
1635
+ MagickHomeURL
1636
+ #else
1637
+ MagickWebSite
1638
+ #endif
1639
+ ;
1877
1640
  int x, n;
1878
1641
  ID bypass = rb_intern("RMAGICK_BYPASS_VERSION_TEST");
1879
1642
 
@@ -1883,11 +1646,7 @@ static void test_Magick_version(void)
1883
1646
  }
1884
1647
 
1885
1648
  version_str = GetMagickVersion(&version_number);
1886
- #if defined(GRAPHICSMAGICK)
1887
- if ((version_number & 0xff0000) != (MagickLibVersion & 0xff0000))
1888
- #else
1889
1649
  if (version_number != MagickLibVersion)
1890
- #endif
1891
1650
  {
1892
1651
  // Extract the string "ImageMagick X.Y.Z"
1893
1652
  n = 0;
@@ -1900,9 +1659,12 @@ static void test_Magick_version(void)
1900
1659
  }
1901
1660
 
1902
1661
  rb_raise(rb_eRuntimeError,
1903
- "This version of RMagick was created to run with %s %s "
1904
- "but %.*s is installed on this system.\n" ,
1905
- MagickPackageName, MagickLibVersionText, x, version_str);
1662
+ "This version of RMagick was created to run with %s %s\n"
1663
+ "but %.*s is installed on this system. You should either\n"
1664
+ " 1) Configure and build RMagick for %.*s, or\n"
1665
+ " 2) download %s %s from %s and install it.\n" ,
1666
+ MagickPackageName, MagickLibVersionText, x, version_str, x, version_str,
1667
+ MagickPackageName, MagickLibVersionText, web_site);
1906
1668
  }
1907
1669
 
1908
1670
  }
@@ -1924,23 +1686,23 @@ static void version_constants(void)
1924
1686
  mgk_version = GetMagickVersion(NULL);
1925
1687
 
1926
1688
  str = rb_str_new2(mgk_version);
1927
- (void) rb_obj_freeze(str);
1689
+ OBJ_FREEZE(str);
1928
1690
  rb_define_const(Module_Magick, "Magick_version", str);
1929
1691
 
1930
- str = rb_str_new2(PACKAGE_STRING);
1931
- (void) rb_obj_freeze(str);
1692
+ str = rb_str_new2(Q(RMAGICK_VERSION_STRING));
1693
+ OBJ_FREEZE(str);
1932
1694
  rb_define_const(Module_Magick, "Version", str);
1933
1695
 
1934
1696
  sprintf(long_version,
1935
- "This is %s ($Date: 2008/11/25 23:21:15 $) Copyright (C) 2008 by Timothy P. Hunter\n"
1936
- "Built with %s\n"
1937
- "Built for %s\n"
1938
- "Web page: http://rmagick.rubyforge.org\n"
1939
- "Email: rmagick@rubyforge.org\n",
1940
- PACKAGE_STRING, mgk_version, RUBY_VERSION_STRING);
1697
+ "This is %s ($Date: 2007/12/26 21:43:52 $) Copyright (C) 2007 by Timothy P. Hunter\n"
1698
+ "Built with %s\n"
1699
+ "Built for %s\n"
1700
+ "Web page: http://rmagick.rubyforge.org\n"
1701
+ "Email: rmagick@rubyforge.org\n",
1702
+ Q(RMAGICK_VERSION_STRING), mgk_version, Q(RUBY_VERSION_STRING));
1941
1703
 
1942
1704
  str = rb_str_new2(long_version);
1943
- (void) rb_obj_freeze(str);
1705
+ OBJ_FREEZE(str);
1944
1706
  rb_define_const(Module_Magick, "Long_version", str);
1945
1707
 
1946
1708
  }