rmagick 3.1.0 → 3.2.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 (80) hide show
  1. checksums.yaml +4 -4
  2. data/.appveyor.yml +4 -4
  3. data/.circleci/config.yml +1 -1
  4. data/.gitignore +1 -0
  5. data/.rubocop_todo.yml +6 -0
  6. data/.travis.yml +26 -8
  7. data/CHANGELOG.md +104 -0
  8. data/before_install_linux.sh +19 -10
  9. data/benchmarks/memory/README.md +50 -0
  10. data/benchmarks/memory/image_new.rb +8 -0
  11. data/benchmarks/memory/rmagick.gnuplot +16 -0
  12. data/doc/ex/coalesce.rb +2 -2
  13. data/doc/ex/drawcomp.rb +3 -3
  14. data/doc/ex/get_pixels.rb +1 -1
  15. data/doc/ex/images/Coffee.png +0 -0
  16. data/doc/ex/images/No.png +0 -0
  17. data/doc/ex/images/Snake.png +0 -0
  18. data/doc/ex/implode.rb +2 -2
  19. data/doc/ex/mask.rb +1 -1
  20. data/doc/ex/matte_fill_to_border.rb +1 -1
  21. data/doc/ex/matte_floodfill.rb +1 -1
  22. data/doc/ex/matte_replace.rb +1 -1
  23. data/doc/ex/stegano.rb +1 -1
  24. data/examples/constitute.rb +1 -1
  25. data/examples/crop_with_gravity.rb +1 -1
  26. data/examples/demo.rb +4 -4
  27. data/examples/find_similar_region.rb +1 -1
  28. data/examples/histogram.rb +3 -3
  29. data/examples/identify.rb +46 -46
  30. data/examples/image_opacity.rb +2 -2
  31. data/examples/vignette.rb +3 -3
  32. data/ext/RMagick/extconf.rb +19 -15
  33. data/ext/RMagick/rmagick.c +1 -2
  34. data/ext/RMagick/rmagick.h +59 -30
  35. data/ext/RMagick/rmdraw.c +62 -274
  36. data/ext/RMagick/rmenum.c +121 -665
  37. data/ext/RMagick/rmfill.c +7 -7
  38. data/ext/RMagick/rmilist.c +91 -7
  39. data/ext/RMagick/rmimage.c +568 -379
  40. data/ext/RMagick/rminfo.c +152 -110
  41. data/ext/RMagick/rmkinfo.c +17 -1
  42. data/ext/RMagick/rmmain.c +75 -74
  43. data/ext/RMagick/rmmontage.c +33 -33
  44. data/ext/RMagick/rmpixel.c +75 -14
  45. data/ext/RMagick/rmstruct.c +5 -5
  46. data/ext/RMagick/rmutil.c +3 -13
  47. data/lib/obsolete.rb +66 -0
  48. data/lib/rmagick/version.rb +1 -1
  49. data/lib/rmagick_internal.rb +54 -41
  50. data/spec/rmagick/image/composite_spec.rb +5 -76
  51. data/spec/rmagick/image/properties_spec.rb +1 -1
  52. data/test/Draw.rb +52 -115
  53. data/test/Enum.rb +153 -1
  54. data/test/Fill.rb +1 -1
  55. data/test/Image1.rb +97 -43
  56. data/test/Image2.rb +140 -36
  57. data/test/Image3.rb +110 -120
  58. data/test/ImageList1.rb +46 -11
  59. data/test/ImageList2.rb +11 -21
  60. data/test/Image_attributes.rb +81 -127
  61. data/test/Import_Export.rb +2 -2
  62. data/test/Info.rb +5 -1
  63. data/test/KernelInfo.rb +67 -0
  64. data/test/Magick.rb +17 -35
  65. data/test/Pixel.rb +193 -24
  66. data/test/PolaroidOptions.rb +1 -1
  67. data/test/Preview.rb +3 -35
  68. data/test/Struct.rb +45 -0
  69. data/test/appearance/Montage.rb +26 -0
  70. data/test/appearance/appearance_assertion.rb +13 -0
  71. data/test/appearance/expected/montage_border_color.jpg +0 -0
  72. data/test/lib/Obsolete.rb +30 -0
  73. data/test/lib/internal/Draw.rb +823 -0
  74. data/test/lib/internal/Geometry.rb +98 -0
  75. data/test/lib/internal/Magick.rb +40 -0
  76. data/test/test_all_basic.rb +16 -17
  77. metadata +27 -5
  78. data/doc/ex/images/Coffee.wmf +0 -0
  79. data/doc/ex/images/No.wmf +0 -0
  80. data/doc/ex/images/Snake.wmf +0 -0
Binary file
@@ -15,7 +15,7 @@ implosion = 0.25
15
15
  8.times do
16
16
  frames << img.implode(implosion)
17
17
  legend.annotate(frames, 0, 0, 10, 20, format('% 4.2f', implosion))
18
- frames.matte = false
18
+ frames.alpha(Magick::DeactivateAlphaChannel)
19
19
  implosion -= 0.10
20
20
  end
21
21
 
@@ -23,7 +23,7 @@ end
23
23
  implosion += 0.10
24
24
  frames << img.implode(implosion)
25
25
  legend.annotate(frames, 0, 0, 10, 20, format('% 4.2f', implosion))
26
- frames.matte = false
26
+ frames.alpha(Magick::DeactivateAlphaChannel)
27
27
  end
28
28
 
29
29
  frames.delay = 10
@@ -26,7 +26,7 @@ end
26
26
  # in the mask image. Assign the mask image to the mask= attribute of the image
27
27
  # being masked.
28
28
 
29
- q.matte = false
29
+ q.alpha(Magick::DeactivateAlphaChannel)
30
30
  img.mask q
31
31
 
32
32
  # Use the #level method to darken the image under the black part of the mask.
@@ -6,7 +6,7 @@ img = Magick::Image.new(200, 200)
6
6
  img.compression = Magick::LZWCompression
7
7
 
8
8
  bg = Magick::Image.read('plasma:fractal') { self.size = '200x200' }
9
- bg[0].matte = false
9
+ bg[0].alpha(Magick::DeactivateAlphaChannel)
10
10
 
11
11
  gc = Magick::Draw.new
12
12
  gc.stroke_width(2)
@@ -6,7 +6,7 @@ img = Magick::Image.new(200, 200)
6
6
  img.compression = Magick::LZWCompression
7
7
 
8
8
  bg = Magick::Image.read('plasma:fractal') { self.size = '200x200' }
9
- bg[0].matte = false
9
+ bg[0].alpha(Magick::DeactivateAlphaChannel)
10
10
 
11
11
  gc = Magick::Draw.new
12
12
  gc.stroke_width(2)
@@ -6,7 +6,7 @@ img = Magick::Image.new(200, 200)
6
6
  img.compression = Magick::LZWCompression
7
7
 
8
8
  bg = Magick::Image.read('plasma:fractal') { self.size = '200x200' }
9
- bg[0].matte = false
9
+ bg[0].alpha(Magick::DeactivateAlphaChannel)
10
10
 
11
11
  gc = Magick::Draw.new
12
12
  gc.stroke_width(2)
@@ -6,7 +6,7 @@ require 'rmagick'
6
6
  # Create a small watermark from the Snake image by
7
7
  # shrinking it and converting it to B&W.
8
8
  begin
9
- watermark = Magick::Image.read('images/Snake.wmf').first
9
+ watermark = Magick::Image.read('images/Snake.png').first
10
10
  watermark.scale!(64.0 / watermark.rows)
11
11
  watermark = watermark.quantize(256, Magick::GRAYColorspace)
12
12
  wmrows = watermark.rows
@@ -4,4 +4,4 @@ require 'rmagick'
4
4
  f = Magick::Image.read('../doc/ex/images/Flower_Hat.jpg').first
5
5
  pixels = f.dispatch(0, 0, f.columns, f.rows, 'RGB')
6
6
  image = Magick::Image.constitute(f.columns, f.rows, 'RGB', pixels)
7
- image.write('constitute.miff')
7
+ image.write('constitute.png')
@@ -38,5 +38,5 @@ montage = pairs.montage do
38
38
  self.tile = '6x3'
39
39
  self.border_width = 1
40
40
  end
41
- montage.write('crop_with_gravity.miff')
41
+ montage.write('crop_with_gravity.png')
42
42
  # montage.display
@@ -261,7 +261,7 @@ begin
261
261
  puts ' wave...'
262
262
  temp = model.copy
263
263
  temp.cur_image[:Label] = 'Wave'
264
- temp.matte = true
264
+ temp.alpha(Magick::ActivateAlphaChannel)
265
265
  temp.background_color = '#000000ff'
266
266
  example << temp.wave(25, 150)
267
267
 
@@ -309,9 +309,9 @@ begin
309
309
 
310
310
  # Write the result to a file
311
311
  montage_image.compression = RLECompression
312
- montage_image.matte = false
313
- puts 'Writing image ./rm_demo_out.miff'
314
- montage_image.write 'rm_demo_out.miff'
312
+ montage_image.alpha(Magick::DeactivateAlphaChannel)
313
+ puts 'Writing image ./rm_demo_out.png'
314
+ montage_image.write 'rm_demo_out.png'
315
315
 
316
316
  # Uncomment the following lines to display image to screen
317
317
  # puts "Displaying image..."
@@ -18,7 +18,7 @@ begin
18
18
  gc.fill('none')
19
19
  gc.rectangle(res[0], res[1], res[0] + target.columns, res[1] + target.rows)
20
20
  gc.draw(img)
21
- img.matte = false
21
+ img.alpha(Magick::DeactivateAlphaChannel)
22
22
  puts "Found similar region. Writing `find_similar_region.gif'..."
23
23
  img.write('find_similar_region.gif')
24
24
  else
@@ -68,7 +68,7 @@ module Magick
68
68
  blue_histogram['Label'] = 'Blue'
69
69
  int_histogram = rgb_histogram.copy
70
70
  int_histogram['Label'] = 'Intensity'
71
- int_histogram.matte = true
71
+ int_histogram.alpha(Magick::ActivateAlphaChannel)
72
72
 
73
73
  rgb_column = PixelColumn.new(HISTOGRAM_ROWS)
74
74
  red_column = PixelColumn.new(HISTOGRAM_ROWS)
@@ -291,7 +291,7 @@ image = image.first
291
291
  # Give the user something to look at while we're working.
292
292
  name = File.basename(filename).sub(/\..*?$/, '')
293
293
  $stdout.sync = true
294
- printf "Creating #{name}_Histogram.miff"
294
+ printf "Creating #{name}_Histogram.png"
295
295
 
296
296
  timer = Thread.new do
297
297
  loop do
@@ -305,7 +305,7 @@ histogram = image.histogram(Magick::Pixel.from_color('white'), Magick::Pixel.fro
305
305
 
306
306
  # Write output file
307
307
  histogram.compression = Magick::ZipCompression
308
- histogram.write("./#{name}_Histogram.miff")
308
+ histogram.write("./#{name}_Histogram.png")
309
309
 
310
310
  Thread.kill(timer)
311
311
  puts 'Done!'
@@ -14,7 +14,7 @@ module Magick
14
14
  puts "\tEndianess: #{endian}\n"
15
15
  puts "\tColorspace: #{colorspace}\n"
16
16
  puts "\tChannelDepth:\n"
17
- color_space = gray? ? Magick::GrayColorspace : colorspace
17
+ color_space = gray? ? Magick::GRAYColorspace : colorspace
18
18
  case color_space
19
19
  when Magick::RGBColorspace
20
20
  puts "\t\tRed: #{channel_depth(Magick::RedChannel)}-bits\n"
@@ -27,7 +27,7 @@ module Magick
27
27
  puts "\t\tYellow: #{channel_depth(Magick::YellowChannel)}-bits\n"
28
28
  puts "\t\tBlack: #{channel_depth(Magick::BlackChannel)}-bits\n"
29
29
  puts "\t\tOpacity: #{channel_depth(Magick::OpacityChannel)}-bits\n" if matte
30
- when Magick::GrayColorspace
30
+ when Magick::GRAYColorspace
31
31
  puts "\t\tGray: #{channel_depth(Magick::GrayChannel)}-bits\n"
32
32
  puts "\t\tOpacity: #{channel_depth(Magick::OpacityChannel)}-bits\n" if matte
33
33
  end
@@ -36,54 +36,54 @@ module Magick
36
36
  case color_space
37
37
  when Magick::RGBColorspace
38
38
  puts "\t\tRed:\n"
39
- puts "\t\t\tMin: " + format("%u (%g)\n", channel_extrema(Magick::RedChannel)[0] / scale, channel_extrema(Magick::RedChannel)[0] / Magick::QuantumRange)
40
- puts "\t\t\tMax: " + format("%u (%g)\n", channel_extrema(Magick::RedChannel)[1] / scale, channel_extrema(Magick::RedChannel)[1] / Magick::QuantumRange)
41
- puts "\t\t\tMean: " + format("%g (%g)\n", channel_mean(Magick::RedChannel)[0] / scale, channel_mean(Magick::RedChannel)[0] / Magick::QuantumRange)
42
- puts "\t\t\tStandard deviation: " + format("%g (%g)\n", channel_mean(Magick::RedChannel)[1] / scale, channel_mean(Magick::RedChannel)[1] / Magick::QuantumRange)
39
+ puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::RedChannel)[0] / scale, channel_extrema(Magick::RedChannel)[0] / Magick::QuantumRange)
40
+ puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::RedChannel)[1] / scale, channel_extrema(Magick::RedChannel)[1] / Magick::QuantumRange)
41
+ puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::RedChannel)[0] / scale, channel_mean(Magick::RedChannel)[0] / Magick::QuantumRange)
42
+ puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::RedChannel)[1] / scale, channel_mean(Magick::RedChannel)[1] / Magick::QuantumRange)
43
43
  puts "\t\tGreen:\n"
44
- puts "\t\t\tMin: " + format("%u (%g)\n", channel_extrema(Magick::GreenChannel)[0] / scale, channel_extrema(Magick::GreenChannel)[0] / Magick::QuantumRange)
45
- puts "\t\t\tMax: " + format("%u (%g)\n", channel_extrema(Magick::GreenChannel)[1] / scale, channel_extrema(Magick::GreenChannel)[1] / Magick::QuantumRange)
46
- puts "\t\t\tMean: " + format("%g (%g)\n", channel_mean(Magick::GreenChannel)[0] / scale, channel_mean(Magick::GreenChannel)[0] / Magick::QuantumRange)
47
- puts "\t\t\tStandard deviation: " + format("%g (%g)\n", channel_mean(Magick::GreenChannel)[1] / scale, channel_mean(Magick::GreenChannel)[1] / Magick::QuantumRange)
44
+ puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::GreenChannel)[0] / scale, channel_extrema(Magick::GreenChannel)[0] / Magick::QuantumRange)
45
+ puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::GreenChannel)[1] / scale, channel_extrema(Magick::GreenChannel)[1] / Magick::QuantumRange)
46
+ puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::GreenChannel)[0] / scale, channel_mean(Magick::GreenChannel)[0] / Magick::QuantumRange)
47
+ puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::GreenChannel)[1] / scale, channel_mean(Magick::GreenChannel)[1] / Magick::QuantumRange)
48
48
  puts "\t\tBlue:\n"
49
- puts "\t\t\tMin: " + format("%u (%g)\n", channel_extrema(Magick::BlueChannel)[0] / scale, channel_extrema(Magick::BlueChannel)[0] / Magick::QuantumRange)
50
- puts "\t\t\tMax: " + format("%u (%g)\n", channel_extrema(Magick::BlueChannel)[1] / scale, channel_extrema(Magick::BlueChannel)[1] / Magick::QuantumRange)
51
- puts "\t\t\tMean: " + format("%g (%g)\n", channel_mean(Magick::BlueChannel)[0] / scale, channel_mean(Magick::BlueChannel)[0] / Magick::QuantumRange)
52
- puts "\t\t\tStandard deviation: " + format("%g (%g)\n", channel_mean(Magick::BlueChannel)[1] / scale, channel_mean(Magick::BlueChannel)[1] / Magick::QuantumRange)
49
+ puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::BlueChannel)[0] / scale, channel_extrema(Magick::BlueChannel)[0] / Magick::QuantumRange)
50
+ puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::BlueChannel)[1] / scale, channel_extrema(Magick::BlueChannel)[1] / Magick::QuantumRange)
51
+ puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::BlueChannel)[0] / scale, channel_mean(Magick::BlueChannel)[0] / Magick::QuantumRange)
52
+ puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::BlueChannel)[1] / scale, channel_mean(Magick::BlueChannel)[1] / Magick::QuantumRange)
53
53
  when Magick::CMYKColorspace
54
54
  puts "\t\tCyan:\n"
55
- puts "\t\t\tMin: " + format("%u (%g)\n", channel_extrema(Magick::CyanChannel)[0] / scale, channel_extrema(Magick::CyanChannel)[0] / Magick::QuantumRange)
56
- puts "\t\t\tMax: " + format("%u (%g)\n", channel_extrema(Magick::CyanChannel)[1] / scale, channel_extrema(Magick::CyanChannel)[1] / Magick::QuantumRange)
57
- puts "\t\t\tMean: " + format("%g (%g)\n", channel_mean(Magick::CyanChannel)[0] / scale, channel_mean(Magick::CyanChannel)[0] / Magick::QuantumRange)
58
- puts "\t\t\tStandard deviation: " + format("%g (%g)\n", channel_mean(Magick::CyanChannel)[1] / scale, channel_mean(Magick::CyanChannel)[1] / Magick::QuantumRange)
55
+ puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::CyanChannel)[0] / scale, channel_extrema(Magick::CyanChannel)[0] / Magick::QuantumRange)
56
+ puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::CyanChannel)[1] / scale, channel_extrema(Magick::CyanChannel)[1] / Magick::QuantumRange)
57
+ puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::CyanChannel)[0] / scale, channel_mean(Magick::CyanChannel)[0] / Magick::QuantumRange)
58
+ puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::CyanChannel)[1] / scale, channel_mean(Magick::CyanChannel)[1] / Magick::QuantumRange)
59
59
  puts "\t\tMagenta:\n"
60
- puts "\t\t\tMin: " + format("%u (%g)\n", channel_extrema(Magick::MagentaChannel)[0] / scale, channel_extrema(Magick::MagentaChannel)[0] / Magick::QuantumRange)
61
- puts "\t\t\tMax: " + format("%u (%g)\n", channel_extrema(Magick::MagentaChannel)[1] / scale, channel_extrema(Magick::MagentaChannel)[1] / Magick::QuantumRange)
62
- puts "\t\t\tMean: " + format("%g (%g)\n", channel_mean(Magick::MagentaChannel)[0] / scale, channel_mean(Magick::MagentaChannel)[0] / Magick::QuantumRange)
63
- puts "\t\t\tStandard deviation: " + format("%g (%g)\n", channel_mean(Magick::MagentaChannel)[1] / scale, channel_mean(Magick::MagentaChannel)[1] / Magick::QuantumRange)
60
+ puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::MagentaChannel)[0] / scale, channel_extrema(Magick::MagentaChannel)[0] / Magick::QuantumRange)
61
+ puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::MagentaChannel)[1] / scale, channel_extrema(Magick::MagentaChannel)[1] / Magick::QuantumRange)
62
+ puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::MagentaChannel)[0] / scale, channel_mean(Magick::MagentaChannel)[0] / Magick::QuantumRange)
63
+ puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::MagentaChannel)[1] / scale, channel_mean(Magick::MagentaChannel)[1] / Magick::QuantumRange)
64
64
  puts "\t\tYellow:\n"
65
- puts "\t\t\tMin: " + format("%u (%g)\n", channel_extrema(Magick::YellowChannel)[0] / scale, channel_extrema(Magick::YellowChannel)[0] / Magick::QuantumRange)
66
- puts "\t\t\tMax: " + format("%u (%g)\n", channel_extrema(Magick::YellowChannel)[1] / scale, channel_extrema(Magick::YellowChannel)[1] / Magick::QuantumRange)
67
- puts "\t\t\tMean: " + format("%g (%g)\n", channel_mean(Magick::YellowChannel)[0] / scale, channel_mean(Magick::YellowChannel)[0] / Magick::QuantumRange)
68
- puts "\t\t\tStandard deviation: " + format("%g (%g)\n", channel_mean(Magick::YellowChannel)[1] / scale, channel_mean(Magick::YellowChannel)[1] / Magick::QuantumRange)
65
+ puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::YellowChannel)[0] / scale, channel_extrema(Magick::YellowChannel)[0] / Magick::QuantumRange)
66
+ puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::YellowChannel)[1] / scale, channel_extrema(Magick::YellowChannel)[1] / Magick::QuantumRange)
67
+ puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::YellowChannel)[0] / scale, channel_mean(Magick::YellowChannel)[0] / Magick::QuantumRange)
68
+ puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::YellowChannel)[1] / scale, channel_mean(Magick::YellowChannel)[1] / Magick::QuantumRange)
69
69
  puts "\t\tBlack:\n"
70
- puts "\t\t\tMin: " + format("%u (%g)\n", channel_extrema(Magick::BlackChannel)[0] / scale, channel_extrema(Magick::BlackChannel)[0] / Magick::QuantumRange)
71
- puts "\t\t\tMax: " + format("%u (%g)\n", channel_extrema(Magick::BlackChannel)[1] / scale, channel_extrema(Magick::BlackChannel)[1] / Magick::QuantumRange)
72
- puts "\t\t\tMean: " + format("%g (%g)\n", channel_mean(Magick::BlackChannel)[0] / scale, channel_mean(Magick::BlackChannel)[0] / Magick::QuantumRange)
73
- puts "\t\t\tStandard deviation: " + format("%g (%g)\n", channel_mean(Magick::BlackChannel)[1] / scale, channel_mean(Magick::BlackChannel)[1] / Magick::QuantumRange)
74
- when Magick::GrayColorspace
70
+ puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::BlackChannel)[0] / scale, channel_extrema(Magick::BlackChannel)[0] / Magick::QuantumRange)
71
+ puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::BlackChannel)[1] / scale, channel_extrema(Magick::BlackChannel)[1] / Magick::QuantumRange)
72
+ puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::BlackChannel)[0] / scale, channel_mean(Magick::BlackChannel)[0] / Magick::QuantumRange)
73
+ puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::BlackChannel)[1] / scale, channel_mean(Magick::BlackChannel)[1] / Magick::QuantumRange)
74
+ when Magick::GRAYColorspace
75
75
  puts "\t\tGray:\n"
76
- puts "\t\t\tMin: " + format("%u (%g)\n", channel_extrema(Magick::GrayChannel)[0] / scale, channel_extrema(Magick::GrayChannel)[0] / Magick::QuantumRange)
77
- puts "\t\t\tMax: " + format("%u (%g)\n", channel_extrema(Magick::GrayChannel)[1] / scale, channel_extrema(Magick::GrayChannel)[1] / Magick::QuantumRange)
78
- puts "\t\t\tMean: " + format("%g (%g)\n", channel_mean(Magick::GrayChannel)[0] / scale, channel_mean(Magick::GrayChannel)[0] / Magick::QuantumRange)
79
- puts "\t\t\tStandard deviation: " + format("%g (%g)\n", channel_mean(Magick::GrayChannel)[1] / scale, channel_mean(Magick::GrayChannel)[1] / Magick::QuantumRange)
76
+ puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::GrayChannel)[0] / scale, channel_extrema(Magick::GrayChannel)[0] / Magick::QuantumRange)
77
+ puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::GrayChannel)[1] / scale, channel_extrema(Magick::GrayChannel)[1] / Magick::QuantumRange)
78
+ puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::GrayChannel)[0] / scale, channel_mean(Magick::GrayChannel)[0] / Magick::QuantumRange)
79
+ puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::GrayChannel)[1] / scale, channel_mean(Magick::GrayChannel)[1] / Magick::QuantumRange)
80
80
  end
81
81
  if matte
82
82
  puts "\t\tOpacity:\n"
83
- puts "\t\t\tMin: " + format("%u (%g)\n", channel_extrema(Magick::OpacityChannel)[0] / scale, channel_extrema(Magick::OpacityChannel)[0] / Magick::QuantumRange)
84
- puts "\t\t\tMax: " + format("%u (%g)\n", channel_extrema(Magick::OpacityChannel)[1] / scale, channel_extrema(Magick::OpacityChannel)[1] / Magick::QuantumRange)
85
- puts "\t\t\tMean:" + format("%u (%g)\n", channel_mean(Magick::OpacityChannel)[0] / scale, channel_mean(Magick::OpacityChannel)[0] / Magick::QuantumRange)
86
- puts "\t\t\tStandard deviation:" + format("%u (%g)\n", channel_mean(Magick::OpacityChannel)[1] / scale, channel_mean(Magick::OpacityChannel)[1] / Magick::QuantumRange)
83
+ puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::OpacityChannel)[0] / scale, channel_extrema(Magick::OpacityChannel)[0] / Magick::QuantumRange)
84
+ puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::OpacityChannel)[1] / scale, channel_extrema(Magick::OpacityChannel)[1] / Magick::QuantumRange)
85
+ puts "\t\t\tMean:" + sprintf("%u (%g)\n", channel_mean(Magick::OpacityChannel)[0] / scale, channel_mean(Magick::OpacityChannel)[0] / Magick::QuantumRange)
86
+ puts "\t\t\tStandard deviation:" + sprintf("%u (%g)\n", channel_mean(Magick::OpacityChannel)[1] / scale, channel_mean(Magick::OpacityChannel)[1] / Magick::QuantumRange)
87
87
  end
88
88
  if class_type == Magick::DirectClass
89
89
  puts "\tColors: #{total_colors}\n"
@@ -101,20 +101,20 @@ module Magick
101
101
  chrom = chromaticity
102
102
  if chrom.red_primary.x != 0.0 || chrom.green_primary.x != 0.0 || chrom.blue_primary.x != 0.0 || chrom.white_point.x != 0.0
103
103
  puts "\tChromaticity:\n"
104
- puts "\t\tred primary: (#{format('%g,%g', chrom.red_primary.x, chrom.red_primary.y)})\n"
105
- puts "\t\tgreen primary: (#{format('%g,%g', chrom.green_primary.x, chrom.green_primary.y)})\n"
106
- puts "\t\tblue primary: (#{format('%g,%g', chrom.blue_primary.x, chrom.blue_primary.y)})\n"
107
- puts "\t\twhite point: (#{format('%g,%g', chrom.white_point.x, chrom.white_point.y)})\n"
104
+ puts "\t\tred primary: (#{sprintf('%g,%g', chrom.red_primary.x, chrom.red_primary.y)})\n"
105
+ puts "\t\tgreen primary: (#{sprintf('%g,%g', chrom.green_primary.x, chrom.green_primary.y)})\n"
106
+ puts "\t\tblue primary: (#{sprintf('%g,%g', chrom.blue_primary.x, chrom.blue_primary.y)})\n"
107
+ puts "\t\twhite point: (#{sprintf('%g,%g', chrom.white_point.x, chrom.white_point.y)})\n"
108
108
  end
109
109
  ex_info = extract_info
110
110
  puts "\tTile geometry: #{ex_info.width}x#{ex_info.height}+#{ex_info.x}+#{ex_info.y}\n" if ex_info.width * ex_info.height != 0.0
111
- puts "\tResolution: #{format('%gx%g', x_resolution, y_resolution)}\n" if x_resolution != 0.0 && y_resolution != 0.0
111
+ puts "\tResolution: #{sprintf('%gx%g', x_resolution, y_resolution)}\n" if x_resolution != 0.0 && y_resolution != 0.0
112
112
  puts "\tUnits: #{units}\n"
113
113
  size = filesize
114
114
  if size >= 1_048_576
115
- puts "\tFilesize: #{format('%.1f', (size / 1_048_576.0))}mb\n"
115
+ puts "\tFilesize: #{sprintf('%.1f', (size / 1_048_576.0))}mb\n"
116
116
  elsif size >= 1024
117
- puts "\tFilesize: #{format('%.0f', (size / 1024.0))}kb\n"
117
+ puts "\tFilesize: #{sprintf('%.0f', (size / 1024.0))}kb\n"
118
118
  else
119
119
  puts "\tFilesize: #{size}b\n"
120
120
  end
@@ -23,6 +23,6 @@ end
23
23
 
24
24
  result = balloons.composite(legend, SouthGravity, OverCompositeOp)
25
25
 
26
- puts '...Writing image_opacity.miff'
27
- result.write 'image_opacity.miff'
26
+ puts '...Writing image_opacity.png'
27
+ result.write 'image_opacity.png'
28
28
  exit
@@ -51,8 +51,8 @@ oval = oval.blur_image(0, 20)
51
51
  # the oval remain opaque. Each gray pixel around the border of the oval has a
52
52
  # varying level of transparency depending on how dark or light it is.
53
53
 
54
- ballerina.matte = true # Ensure the ballerina image's opacity channel is enabled.
55
- oval.matte = false # Force the CopyOpacityCompositeOp to use pixel intensity
54
+ ballerina.alpha(Magick::ActivateAlphaChannel) # Ensure the ballerina image's opacity channel is enabled.
55
+ oval.alpha(Magick::DeactivateAlphaChannel) # Force the CopyOpacityCompositeOp to use pixel intensity
56
56
  # to determine how much transparency to add to the ballerina
57
57
  # pixels.
58
58
 
@@ -74,5 +74,5 @@ end
74
74
 
75
75
  checkerboard = Image.read('pattern:checkerboard') { self.size = "#{ballerina.columns}x#{ballerina.rows}" }
76
76
  vignette = checkerboard[0].composite(ballerina, CenterGravity, OverCompositeOp)
77
- vignette.display
77
+ vignette.write('vignette.png')
78
78
  exit
@@ -9,26 +9,30 @@ module RMagick
9
9
  require 'rmagick/version'
10
10
  RMAGICK_VERS = ::Magick::VERSION
11
11
  MIN_RUBY_VERS = ::Magick::MIN_RUBY_VERSION
12
- MIN_RUBY_VERS_NO = MIN_RUBY_VERS.tr('.', '').to_i
13
12
 
14
13
  attr_reader :headers
15
14
 
16
15
  def initialize
17
16
  @stdout = $stdout.dup
18
17
 
19
- setup_paths_for_homebrew
18
+ setup_pkg_config_path
20
19
  configure_compile_options
21
20
  assert_can_compile!
22
21
  configure_headers
23
22
  end
24
23
 
25
- def setup_paths_for_homebrew
26
- return unless find_executable('brew')
24
+ def setup_pkg_config_path
25
+ if find_executable('brew')
26
+ pkg_config_path = "#{`brew --prefix imagemagick@6`.strip}/lib/pkgconfig"
27
+ elsif find_executable('pacman')
28
+ pkg_config_path = '/usr/lib/imagemagick6/pkgconfig'
29
+ else
30
+ return
31
+ end
27
32
 
28
- brew_pkg_config_path = "#{`brew --prefix imagemagick@6`.strip}/lib/pkgconfig"
29
- pkgconfig_paths = ENV['PKG_CONFIG_PATH'].to_s.split(':')
30
- if File.exist?(brew_pkg_config_path) && !pkgconfig_paths.include?(brew_pkg_config_path)
31
- ENV['PKG_CONFIG_PATH'] = [ENV['PKG_CONFIG_PATH'], brew_pkg_config_path].compact.join(':')
33
+ pkg_config_paths = ENV['PKG_CONFIG_PATH'].to_s.split(':')
34
+ if File.exist?(pkg_config_path) && !pkg_config_paths.include?(pkg_config_path)
35
+ ENV['PKG_CONFIG_PATH'] = [ENV['PKG_CONFIG_PATH'], pkg_config_path].compact.join(':')
32
36
  end
33
37
  end
34
38
 
@@ -45,8 +49,7 @@ module RMagick
45
49
  end
46
50
 
47
51
  def configure_headers
48
- @headers = %w[assert.h ctype.h stdio.h stdlib.h math.h time.h]
49
- headers << 'sys/types.h' if have_header('sys/types.h')
52
+ @headers = %w[assert.h ctype.h stdio.h stdlib.h math.h time.h sys/types.h]
50
53
 
51
54
  if have_header('magick/MagickCore.h')
52
55
  headers << 'magick/MagickCore.h'
@@ -98,7 +101,6 @@ module RMagick
98
101
  $LDFLAGS = %(-L"#{dir_paths[:lib]}")
99
102
 
100
103
  have_library('CORE_RL_magick_')
101
- have_library('X11')
102
104
 
103
105
  else # mswin
104
106
 
@@ -111,9 +113,10 @@ module RMagick
111
113
  $LDFLAGS << %( -libpath:"#{dir_paths[:lib]}")
112
114
 
113
115
  $LOCAL_LIBS = 'CORE_RL_magick_.lib'
114
- have_library('X11')
115
116
 
116
117
  end
118
+
119
+ $CFLAGS << (have_macro('__GNUC__') ? ' -std=gnu99' : ' -std=c99')
117
120
  end
118
121
 
119
122
  # Test for a specific value in an enum type
@@ -285,8 +288,7 @@ END_MINGW
285
288
 
286
289
  def assert_minimum_ruby_version!
287
290
  unless checking_for("Ruby version >= #{MIN_RUBY_VERS}") do
288
- version = RUBY_VERSION.tr('.', '').to_i
289
- version >= MIN_RUBY_VERS_NO
291
+ Gem::Version.new(RUBY_VERSION) >= Gem::Version.new(MIN_RUBY_VERS)
290
292
  end
291
293
  exit_failure "Can't install RMagick #{RMAGICK_VERS}. Ruby #{MIN_RUBY_VERS} or later required.\n"
292
294
  end
@@ -303,7 +305,6 @@ END_MINGW
303
305
  end
304
306
 
305
307
  def create_header_file
306
- have_func('snprintf', headers)
307
308
  [
308
309
  'GetImageChannelEntropy', # 6.9.0-0
309
310
  'SetImageGray' # 6.9.1-10
@@ -318,6 +319,9 @@ END_MINGW
318
319
  if Gem::Version.new($magick_version) >= Gem::Version.new('6.8.9')
319
320
  $defs.push('-DIMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9=1')
320
321
  end
322
+ if Gem::Version.new($magick_version) >= Gem::Version.new('6.9.0')
323
+ $defs.push('-DIMAGEMAGICK_GREATER_THAN_EQUAL_6_9_0=1')
324
+ end
321
325
 
322
326
  create_header
323
327
  end
@@ -179,14 +179,13 @@ MagickInfo_to_format(const MagickInfo *magick_info)
179
179
  * @see MagickInfo_to_format
180
180
  */
181
181
  VALUE
182
- Magick_init_formats(VALUE class)
182
+ Magick_init_formats(VALUE class ATTRIBUTE_UNUSED)
183
183
  {
184
184
  const MagickInfo **magick_info;
185
185
  size_t number_formats, x;
186
186
  VALUE formats;
187
187
  ExceptionInfo *exception;
188
188
 
189
- class = class; // defeat "never referenced" message from icc
190
189
  formats = rb_hash_new();
191
190
 
192
191
  // IM 6.1.3 added an exception argument to GetMagickInfoList
@@ -21,10 +21,7 @@
21
21
  #include <ctype.h>
22
22
  #include <stdlib.h>
23
23
  #include <math.h>
24
- #include <time.h>
25
- #if defined(HAVE_SYS_TYPES_H)
26
24
  #include <sys/types.h>
27
- #endif
28
25
  #include "ruby.h"
29
26
  #include "ruby/io.h"
30
27
 
@@ -52,6 +49,11 @@
52
49
  //! For quoting preprocessor symbols
53
50
  #define Q(q) Q2(q)
54
51
 
52
+ #ifdef __GNUC__
53
+ #define ATTRIBUTE_UNUSED __attribute__((unused))
54
+ #else
55
+ #define ATTRIBUTE_UNUSED
56
+ #endif
55
57
 
56
58
  //! Trace new image creation in bang methods
57
59
  #define UPDATE_DATA_PTR(_obj_, _new_) \
@@ -117,6 +119,12 @@ typedef ImageInfo Info; /**< Make type name match class name */
117
119
  typedef PixelPacket Pixel; /**< Make type name match class name */
118
120
  typedef MagickPixelPacket MagickPixel;
119
121
  typedef PixelPacket PixelColor;
122
+ typedef AlphaChannelType AlphaChannelOption;
123
+ typedef DistortImageMethod DistortMethod;
124
+ typedef FilterTypes FilterType;
125
+ typedef InterpolatePixelMethod PixelInterpolateMethod;
126
+ typedef ImageLayerMethod LayerMethod;
127
+ #define TransparentAlpha 0
120
128
 
121
129
  //! Montage
122
130
  typedef struct
@@ -286,7 +294,7 @@ EXTERN VALUE Class_QuantumExpressionOperator;
286
294
  // Enum classes
287
295
  EXTERN VALUE Class_Enum;
288
296
  EXTERN VALUE Class_AlignType;
289
- EXTERN VALUE Class_AlphaChannelType;
297
+ EXTERN VALUE Class_AlphaChannelOption;
290
298
  EXTERN VALUE Class_AnchorType;
291
299
  EXTERN VALUE Class_ChannelType;
292
300
  EXTERN VALUE Class_ClassType;
@@ -296,19 +304,19 @@ EXTERN VALUE Class_CompositeOperator;
296
304
  EXTERN VALUE Class_CompressionType;
297
305
  EXTERN VALUE Class_DecorationType;
298
306
  EXTERN VALUE Class_DisposeType;
299
- EXTERN VALUE Class_DistortImageMethod;
307
+ EXTERN VALUE Class_DistortMethod;
300
308
  EXTERN VALUE Class_DitherMethod;
301
309
  EXTERN VALUE Class_EndianType;
302
- EXTERN VALUE Class_FilterTypes;
310
+ EXTERN VALUE Class_FilterType;
303
311
  EXTERN VALUE Class_GravityType;
304
312
  EXTERN VALUE Class_ImageType;
305
313
  EXTERN VALUE Class_InterlaceType;
306
- EXTERN VALUE Class_InterpolatePixelMethod;
307
- EXTERN VALUE Class_ImageLayerMethod;
314
+ EXTERN VALUE Class_LayerMethod;
308
315
  EXTERN VALUE Class_MagickFunction;
309
316
  EXTERN VALUE Class_NoiseType;
310
317
  EXTERN VALUE Class_OrientationType;
311
318
  EXTERN VALUE Class_PaintMethod;
319
+ EXTERN VALUE Class_PixelInterpolateMethod;
312
320
  EXTERN VALUE Class_PreviewType;
313
321
  EXTERN VALUE Class_RenderingIntent;
314
322
  EXTERN VALUE Class_ResolutionType;
@@ -430,6 +438,20 @@ EXTERN ID rm_ID_y; /**< "y" */
430
438
  rb_check_frozen(self);\
431
439
  Data_Get_Struct(self, class, ptr);\
432
440
  ptr->attr = R_##type##_to_C_##type(val);\
441
+ return val;\
442
+ }
443
+
444
+ //! define attribute writer when attribute name is different from the field name
445
+ #define DEF_ATTR_WRITERF(class, attr, field, type) \
446
+ VALUE class##_##attr##_eq(VALUE self, VALUE val)\
447
+ {\
448
+ class *ptr;\
449
+ if (rb_obj_is_kind_of(self, Class_Image) == Qtrue) {\
450
+ (void) rm_check_destroyed(self); \
451
+ }\
452
+ rb_check_frozen(self);\
453
+ Data_Get_Struct(self, class, ptr);\
454
+ ptr->field = R_##type##_to_C_##type(val);\
433
455
  return self;\
434
456
  }
435
457
 
@@ -438,6 +460,11 @@ EXTERN ID rm_ID_y; /**< "y" */
438
460
  DEF_ATTR_READER(class, attr, type)\
439
461
  DEF_ATTR_WRITER(class, attr, type)
440
462
 
463
+ //! define attribute accessor when attribute name is different from the field name
464
+ #define DEF_ATTR_ACCESSORF(class, attr, field, type)\
465
+ DEF_ATTR_READERF(class, attr, field, type)\
466
+ DEF_ATTR_WRITERF(class, attr, field, type)
467
+
441
468
  /*
442
469
  * Declare attribute accessors
443
470
  */
@@ -456,8 +483,10 @@ EXTERN ID rm_ID_y; /**< "y" */
456
483
  //! Define a Magick module constant
457
484
  #if MAGICKCORE_QUANTUM_DEPTH == 64
458
485
  #define DEF_CONST(constant) rb_define_const(Module_Magick, #constant, ULL2NUM(constant))
486
+ #define DEF_CONSTV(constant, val) rb_define_const(Module_Magick, #constant, ULL2NUM(val))
459
487
  #else // MAGICKCORE_QUANTUM_DEPTH == 8, 16, 32
460
488
  #define DEF_CONST(constant) rb_define_const(Module_Magick, #constant, UINT2NUM(constant))
489
+ #define DEF_CONSTV(constant, val) rb_define_const(Module_Magick, #constant, UINT2NUM(val))
461
490
  #endif
462
491
 
463
492
 
@@ -573,6 +602,7 @@ extern VALUE ImageList_animate(int, VALUE *, VALUE);
573
602
  extern VALUE ImageList_append(VALUE, VALUE);
574
603
  extern VALUE ImageList_average(VALUE);
575
604
  extern VALUE ImageList_coalesce(VALUE);
605
+ extern VALUE ImageList_combine(int, VALUE *, VALUE);
576
606
  extern VALUE ImageList_composite_layers(int, VALUE *, VALUE);
577
607
  extern VALUE ImageList_deconstruct(VALUE);
578
608
  extern VALUE ImageList_display(VALUE);
@@ -627,7 +657,6 @@ ATTR_ACCESSOR(Info, orientation)
627
657
  ATTR_ACCESSOR(Info, origin)
628
658
  ATTR_ACCESSOR(Info, page)
629
659
  ATTR_ACCESSOR(Info, pen)
630
- // ATTR_ACCESSOR(Info, ping) obsolete
631
660
  ATTR_ACCESSOR(Info, pointsize)
632
661
  ATTR_ACCESSOR(Info, quality)
633
662
  ATTR_ACCESSOR(Info, sampling_factor)
@@ -642,7 +671,6 @@ ATTR_ACCESSOR(Info, transparent_color)
642
671
  ATTR_ACCESSOR(Info, undercolor)
643
672
  ATTR_ACCESSOR(Info, units)
644
673
  ATTR_ACCESSOR(Info, view)
645
- //ATTR_ACCESSOR(Info, verbose)
646
674
 
647
675
  extern VALUE Info_alloc(VALUE);
648
676
 
@@ -875,7 +903,7 @@ extern VALUE Image_map(int, VALUE *, VALUE);
875
903
  extern VALUE Image_marshal_dump(VALUE);
876
904
  extern VALUE Image_marshal_load(VALUE, VALUE);
877
905
  extern VALUE Image_mask(int, VALUE *, VALUE);
878
- extern VALUE Image_matte_flood_fill(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
906
+ extern VALUE Image_matte_flood_fill(int, VALUE *, VALUE);
879
907
  extern VALUE Image_median_filter(int, VALUE *, VALUE);
880
908
  extern VALUE Image_minify(VALUE);
881
909
  extern VALUE Image_minify_bang(VALUE);
@@ -995,6 +1023,7 @@ extern VALUE TextureFill_fill(VALUE, VALUE);
995
1023
  ATTR_ACCESSOR(Pixel, red)
996
1024
  ATTR_ACCESSOR(Pixel, green)
997
1025
  ATTR_ACCESSOR(Pixel, blue)
1026
+ ATTR_ACCESSOR(Pixel, alpha)
998
1027
  ATTR_ACCESSOR(Pixel, opacity)
999
1028
  ATTR_ACCESSOR(Pixel, cyan)
1000
1029
  ATTR_ACCESSOR(Pixel, magenta)
@@ -1032,31 +1061,31 @@ extern VALUE Enum_spaceship(VALUE, VALUE);
1032
1061
  extern VALUE Enum_bitwise_or(VALUE, VALUE);
1033
1062
  extern VALUE Enum_case_eq(VALUE, VALUE);
1034
1063
  extern VALUE Enum_type_initialize(VALUE, VALUE, VALUE);
1064
+ extern VALUE Enum_find(VALUE class, int val);
1035
1065
  extern VALUE Enum_type_each(VALUE);
1036
1066
  extern VALUE rm_enum_new(VALUE, VALUE, VALUE);
1037
- extern VALUE ClassType_new(ClassType);
1038
- extern VALUE ColorspaceType_new(ColorspaceType);
1067
+ extern VALUE ClassType_find(ClassType);
1068
+ extern VALUE ColorspaceType_find(ColorspaceType);
1039
1069
  extern const char *ComplianceType_name(ComplianceType *);
1040
- extern VALUE ComplianceType_new(ComplianceType);
1041
- extern VALUE CompositeOperator_new(CompositeOperator);
1042
- extern VALUE CompressionType_new(CompressionType);
1043
- extern VALUE DisposeType_new(DisposeType);
1044
- extern VALUE EndianType_new(EndianType);
1045
- extern VALUE FilterTypes_new(FilterTypes);
1046
- extern VALUE GravityType_new(GravityType);
1047
- extern VALUE ImageLayerMethod_new(ImageLayerMethod);
1048
- extern VALUE ImageType_new(ImageType);
1049
- extern VALUE InterlaceType_new(InterlaceType);
1050
- extern VALUE InterpolatePixelMethod_new(InterpolatePixelMethod);
1051
- extern VALUE OrientationType_new(OrientationType);
1052
- extern VALUE RenderingIntent_new(RenderingIntent);
1053
- extern VALUE ResolutionType_new(ResolutionType);
1070
+ extern VALUE ComplianceType_find(ComplianceType);
1071
+ extern VALUE CompositeOperator_find(CompositeOperator);
1072
+ extern VALUE CompressionType_find(CompressionType);
1073
+ extern VALUE DisposeType_find(DisposeType);
1074
+ extern VALUE EndianType_find(EndianType);
1075
+ extern VALUE FilterType_find(FilterType);
1076
+ extern VALUE GravityType_find(GravityType);
1077
+ extern VALUE ImageType_find(ImageType);
1078
+ extern VALUE InterlaceType_find(InterlaceType);
1079
+ extern VALUE OrientationType_find(OrientationType);
1080
+ extern VALUE PixelInterpolateMethod_find(PixelInterpolateMethod);
1081
+ extern VALUE RenderingIntent_find(RenderingIntent);
1082
+ extern VALUE ResolutionType_find(ResolutionType);
1054
1083
  extern const char *StorageType_name(StorageType);
1055
- extern VALUE StretchType_new(StretchType);
1084
+ extern VALUE StretchType_find(StretchType);
1056
1085
  extern const char *StretchType_name(StretchType);
1057
- extern VALUE StyleType_new(StyleType);
1086
+ extern VALUE StyleType_find(StyleType);
1058
1087
  extern const char *StyleType_name(StyleType);
1059
- extern VALUE VirtualPixelMethod_new(VirtualPixelMethod);
1088
+ extern VALUE VirtualPixelMethod_find(VirtualPixelMethod);
1060
1089
 
1061
1090
 
1062
1091
  // rmstruct.c