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
@@ -0,0 +1,46 @@
1
+ #! /usr/local/bin/ruby -w
2
+
3
+ #=======================================================#
4
+ # Thanks to Robert Wagner for the idea of allowing a #
5
+ # GravityType instead of the x- and y-offset arguments! #
6
+ #=======================================================#
7
+
8
+ # Demo the use of the GravityType argument to Image#crop.
9
+
10
+ require 'RMagick'
11
+ include Magick
12
+
13
+ shorts = Image.read('../doc/ex/images/Shorts.jpg').first
14
+
15
+ regwidth = shorts.columns/2
16
+ regheight = shorts.rows/2
17
+
18
+ mask = Image.new(regwidth, regheight) { self.background_color = 'white'}
19
+ mask.opacity = 0.50 * TransparentOpacity
20
+
21
+ black = Image.new(shorts.columns, shorts.rows) {self.background_color = 'black'}
22
+ pairs = ImageList.new
23
+
24
+ [NorthWestGravity, NorthGravity, NorthEastGravity,
25
+ WestGravity, CenterGravity, EastGravity,
26
+ SouthWestGravity, SouthGravity, SouthEastGravity].each do |gravity|
27
+ pattern = shorts.composite(mask, gravity, OverCompositeOp)
28
+ cropped = shorts.crop(gravity, regwidth, regheight)
29
+ result = black.composite(cropped, gravity, OverCompositeOp)
30
+ result.border_color = "white"
31
+ pairs << pattern
32
+ pairs << result
33
+ end
34
+
35
+ # Montage into a single image
36
+ montage = pairs.montage {
37
+ self.geometry = "#{pairs.columns}x#{pairs.rows}+0+0"
38
+ self.tile = "6x3"
39
+ self.border_width = 1
40
+ }
41
+ montage.write('crop_with_gravity.miff')
42
+ #montage.display
43
+
44
+
45
+
46
+
@@ -17,12 +17,12 @@ Font = "Helvetica"
17
17
  begin
18
18
  puts "Read images..."
19
19
 
20
- model = ImageList.new("images/model.miff")
20
+ model = ImageList.new("../doc/ex/images/model.miff")
21
21
  model.border_color = "black"
22
22
  model.background_color = "black"
23
23
  model.cur_image[:Label] = "RMagick"
24
24
 
25
- smile = ImageList.new("images/smile.miff")
25
+ smile = ImageList.new("../doc/ex/images/smile.miff")
26
26
  smile.border_color = "black"
27
27
  smile.cur_image[:Label] = "Smile"
28
28
 
@@ -9,14 +9,14 @@ class PixelColumn < Array
9
9
  super
10
10
  fill {Magick::Pixel.new}
11
11
  end
12
-
12
+
13
13
  def reset(bg)
14
14
  each {|pixel| pixel.reset(bg)}
15
15
  end
16
16
  end
17
17
 
18
18
  module Magick
19
-
19
+
20
20
  class Pixel
21
21
  def reset(bg)
22
22
  self.red = bg.red
@@ -25,7 +25,7 @@ module Magick
25
25
  self.opacity = bg.opacity
26
26
  end
27
27
  end
28
-
28
+
29
29
  class Image
30
30
 
31
31
  private
@@ -82,28 +82,28 @@ module Magick
82
82
 
83
83
  yf = Float(y)
84
84
  if yf >= HISTOGRAM_ROWS - (red[x] * scale)
85
- red_column[y].red = MaxRGB
85
+ red_column[y].red = QuantumRange
86
86
  red_column[y].green = 0
87
87
  red_column[y].blue = 0
88
- rgb_column[y].red = MaxRGB
88
+ rgb_column[y].red = QuantumRange
89
89
  end
90
90
  if yf >= HISTOGRAM_ROWS - (green[x] * scale)
91
- green_column[y].green = MaxRGB
91
+ green_column[y].green = QuantumRange
92
92
  green_column[y].red = 0
93
93
  green_column[y].blue = 0
94
- rgb_column[y].green = MaxRGB
94
+ rgb_column[y].green = QuantumRange
95
95
  end
96
96
  if yf >= HISTOGRAM_ROWS - (blue[x] * scale)
97
- blue_column[y].blue = MaxRGB
97
+ blue_column[y].blue = QuantumRange
98
98
  blue_column[y].red = 0
99
99
  blue_column[y].green = 0
100
- rgb_column[y].blue = MaxRGB
100
+ rgb_column[y].blue = QuantumRange
101
101
  end
102
102
  if yf >= HISTOGRAM_ROWS - (int[x] * scale)
103
103
  int_column[y].opacity = TransparentOpacity
104
104
  end
105
105
  end
106
-
106
+
107
107
  rgb_histogram.store_pixels( x, 0, 1, HISTOGRAM_ROWS, rgb_column)
108
108
  red_histogram.store_pixels( x, 0, 1, HISTOGRAM_ROWS, red_column)
109
109
  green_histogram.store_pixels(x, 0, 1, HISTOGRAM_ROWS, green_column)
@@ -228,7 +228,7 @@ Colors: #{number_colors}
228
228
  # Scale to chart size. When computing the scale, add some "air" between
229
229
  # the max frequency and the top of the histogram. This makes a prettier chart.
230
230
  # The RGBA and intensity histograms are all drawn to the same scale.
231
-
231
+
232
232
  max = [red.max, green.max, blue.max, alpha.max, int.max].max
233
233
  scale = HISTOGRAM_ROWS / (max*AIR_FACTOR)
234
234
 
@@ -12,11 +12,11 @@ module Magick
12
12
  puts "\tGeometry: #{columns}x#{rows}\n"
13
13
  puts "\tClass: #{class_type.to_s}\n"
14
14
  puts "\tType: #{image_type.to_s}\n"
15
- puts "\tEndianess: #{endian}\n"
15
+ puts "\tEndianess: #{endian}\n"
16
16
  puts "\tColorspace: #{colorspace}\n"
17
17
  puts "\tChannelDepth:\n"
18
18
  color_space = gray? ? Magick::GrayColorspace : colorspace
19
- case color_space
19
+ case color_space
20
20
  when Magick::RGBColorspace
21
21
  puts "\t\tRed: #{channel_depth(Magick::RedChannel)}-bits\n"
22
22
  puts "\t\tGreen: #{channel_depth(Magick::GreenChannel)}-bits\n"
@@ -32,59 +32,59 @@ module Magick
32
32
  puts "\t\tGray: #{channel_depth(Magick::GrayChannel)}-bits\n"
33
33
  puts "\t\tOpacity: #{channel_depth(Magick::OpacityChannel)}-bits\n" if matte
34
34
  end
35
- scale = Magick::MaxRGB / (Magick::MaxRGB >> (Magick::QuantumDepth-channel_depth))
35
+ scale = Magick::QuantumRange / (Magick::QuantumRange >> (Magick::QuantumDepth-channel_depth))
36
36
  puts "\tChannel statistics:\n"
37
37
  case color_space
38
38
  when Magick::RGBColorspace
39
39
  puts "\t\tRed:\n"
40
- puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::RedChannel)[0]/scale, channel_extrema(Magick::RedChannel)[0]/Magick::MaxRGB)
41
- puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::RedChannel)[1]/scale, channel_extrema(Magick::RedChannel)[1]/Magick::MaxRGB)
42
- puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::RedChannel)[0]/scale, channel_mean(Magick::RedChannel)[0]/Magick::MaxRGB)
43
- puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::RedChannel)[1]/scale, channel_mean(Magick::RedChannel)[1]/Magick::MaxRGB)
40
+ puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::RedChannel)[0]/scale, channel_extrema(Magick::RedChannel)[0]/Magick::QuantumRange)
41
+ puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::RedChannel)[1]/scale, channel_extrema(Magick::RedChannel)[1]/Magick::QuantumRange)
42
+ puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::RedChannel)[0]/scale, channel_mean(Magick::RedChannel)[0]/Magick::QuantumRange)
43
+ puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::RedChannel)[1]/scale, channel_mean(Magick::RedChannel)[1]/Magick::QuantumRange)
44
44
  puts "\t\tGreen:\n"
45
- puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::GreenChannel)[0]/scale, channel_extrema(Magick::GreenChannel)[0]/Magick::MaxRGB)
46
- puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::GreenChannel)[1]/scale, channel_extrema(Magick::GreenChannel)[1]/Magick::MaxRGB)
47
- puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::GreenChannel)[0]/scale, channel_mean(Magick::GreenChannel)[0]/Magick::MaxRGB)
48
- puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::GreenChannel)[1]/scale, channel_mean(Magick::GreenChannel)[1]/Magick::MaxRGB)
45
+ puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::GreenChannel)[0]/scale, channel_extrema(Magick::GreenChannel)[0]/Magick::QuantumRange)
46
+ puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::GreenChannel)[1]/scale, channel_extrema(Magick::GreenChannel)[1]/Magick::QuantumRange)
47
+ puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::GreenChannel)[0]/scale, channel_mean(Magick::GreenChannel)[0]/Magick::QuantumRange)
48
+ puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::GreenChannel)[1]/scale, channel_mean(Magick::GreenChannel)[1]/Magick::QuantumRange)
49
49
  puts "\t\tBlue:\n"
50
- puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::BlueChannel)[0]/scale, channel_extrema(Magick::BlueChannel)[0]/Magick::MaxRGB)
51
- puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::BlueChannel)[1]/scale, channel_extrema(Magick::BlueChannel)[1]/Magick::MaxRGB)
52
- puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::BlueChannel)[0]/scale, channel_mean(Magick::BlueChannel)[0]/Magick::MaxRGB)
53
- puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::BlueChannel)[1]/scale, channel_mean(Magick::BlueChannel)[1]/Magick::MaxRGB)
50
+ puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::BlueChannel)[0]/scale, channel_extrema(Magick::BlueChannel)[0]/Magick::QuantumRange)
51
+ puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::BlueChannel)[1]/scale, channel_extrema(Magick::BlueChannel)[1]/Magick::QuantumRange)
52
+ puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::BlueChannel)[0]/scale, channel_mean(Magick::BlueChannel)[0]/Magick::QuantumRange)
53
+ puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::BlueChannel)[1]/scale, channel_mean(Magick::BlueChannel)[1]/Magick::QuantumRange)
54
54
  when Magick::CMYKColorspace
55
55
  puts "\t\tCyan:\n"
56
- puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::CyanChannel)[0]/scale, channel_extrema(Magick::CyanChannel)[0]/Magick::MaxRGB)
57
- puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::CyanChannel)[1]/scale, channel_extrema(Magick::CyanChannel)[1]/Magick::MaxRGB)
58
- puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::CyanChannel)[0]/scale, channel_mean(Magick::CyanChannel)[0]/Magick::MaxRGB)
59
- puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::CyanChannel)[1]/scale, channel_mean(Magick::CyanChannel)[1]/Magick::MaxRGB)
56
+ puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::CyanChannel)[0]/scale, channel_extrema(Magick::CyanChannel)[0]/Magick::QuantumRange)
57
+ puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::CyanChannel)[1]/scale, channel_extrema(Magick::CyanChannel)[1]/Magick::QuantumRange)
58
+ puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::CyanChannel)[0]/scale, channel_mean(Magick::CyanChannel)[0]/Magick::QuantumRange)
59
+ puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::CyanChannel)[1]/scale, channel_mean(Magick::CyanChannel)[1]/Magick::QuantumRange)
60
60
  puts "\t\tMagenta:\n"
61
- puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::MagentaChannel)[0]/scale, channel_extrema(Magick::MagentaChannel)[0]/Magick::MaxRGB)
62
- puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::MagentaChannel)[1]/scale, channel_extrema(Magick::MagentaChannel)[1]/Magick::MaxRGB)
63
- puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::MagentaChannel)[0]/scale, channel_mean(Magick::MagentaChannel)[0]/Magick::MaxRGB)
64
- puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::MagentaChannel)[1]/scale, channel_mean(Magick::MagentaChannel)[1]/Magick::MaxRGB)
61
+ puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::MagentaChannel)[0]/scale, channel_extrema(Magick::MagentaChannel)[0]/Magick::QuantumRange)
62
+ puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::MagentaChannel)[1]/scale, channel_extrema(Magick::MagentaChannel)[1]/Magick::QuantumRange)
63
+ puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::MagentaChannel)[0]/scale, channel_mean(Magick::MagentaChannel)[0]/Magick::QuantumRange)
64
+ puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::MagentaChannel)[1]/scale, channel_mean(Magick::MagentaChannel)[1]/Magick::QuantumRange)
65
65
  puts "\t\tYellow:\n"
66
- puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::YellowChannel)[0]/scale, channel_extrema(Magick::YellowChannel)[0]/Magick::MaxRGB)
67
- puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::YellowChannel)[1]/scale, channel_extrema(Magick::YellowChannel)[1]/Magick::MaxRGB)
68
- puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::YellowChannel)[0]/scale, channel_mean(Magick::YellowChannel)[0]/Magick::MaxRGB)
69
- puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::YellowChannel)[1]/scale, channel_mean(Magick::YellowChannel)[1]/Magick::MaxRGB)
66
+ puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::YellowChannel)[0]/scale, channel_extrema(Magick::YellowChannel)[0]/Magick::QuantumRange)
67
+ puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::YellowChannel)[1]/scale, channel_extrema(Magick::YellowChannel)[1]/Magick::QuantumRange)
68
+ puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::YellowChannel)[0]/scale, channel_mean(Magick::YellowChannel)[0]/Magick::QuantumRange)
69
+ puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::YellowChannel)[1]/scale, channel_mean(Magick::YellowChannel)[1]/Magick::QuantumRange)
70
70
  puts "\t\tBlack:\n"
71
- puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::BlackChannel)[0]/scale, channel_extrema(Magick::BlackChannel)[0]/Magick::MaxRGB)
72
- puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::BlackChannel)[1]/scale, channel_extrema(Magick::BlackChannel)[1]/Magick::MaxRGB)
73
- puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::BlackChannel)[0]/scale, channel_mean(Magick::BlackChannel)[0]/Magick::MaxRGB)
74
- puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::BlackChannel)[1]/scale, channel_mean(Magick::BlackChannel)[1]/Magick::MaxRGB)
71
+ puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::BlackChannel)[0]/scale, channel_extrema(Magick::BlackChannel)[0]/Magick::QuantumRange)
72
+ puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::BlackChannel)[1]/scale, channel_extrema(Magick::BlackChannel)[1]/Magick::QuantumRange)
73
+ puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::BlackChannel)[0]/scale, channel_mean(Magick::BlackChannel)[0]/Magick::QuantumRange)
74
+ puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::BlackChannel)[1]/scale, channel_mean(Magick::BlackChannel)[1]/Magick::QuantumRange)
75
75
  when Magick::GrayColorspace
76
76
  puts "\t\tGray:\n"
77
- puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::GrayChannel)[0]/scale, channel_extrema(Magick::GrayChannel)[0]/Magick::MaxRGB)
78
- puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::GrayChannel)[1]/scale, channel_extrema(Magick::GrayChannel)[1]/Magick::MaxRGB)
79
- puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::GrayChannel)[0]/scale, channel_mean(Magick::GrayChannel)[0]/Magick::MaxRGB)
80
- puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::GrayChannel)[1]/scale, channel_mean(Magick::GrayChannel)[1]/Magick::MaxRGB)
77
+ puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::GrayChannel)[0]/scale, channel_extrema(Magick::GrayChannel)[0]/Magick::QuantumRange)
78
+ puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::GrayChannel)[1]/scale, channel_extrema(Magick::GrayChannel)[1]/Magick::QuantumRange)
79
+ puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::GrayChannel)[0]/scale, channel_mean(Magick::GrayChannel)[0]/Magick::QuantumRange)
80
+ puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::GrayChannel)[1]/scale, channel_mean(Magick::GrayChannel)[1]/Magick::QuantumRange)
81
81
  end
82
82
  if matte
83
83
  puts "\t\tOpacity:\n"
84
- puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::OpacityChannel)[0]/scale, channel_extrema(Magick::OpacityChannel)[0]/Magick::MaxRGB)
85
- puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::OpacityChannel)[1]/scale, channel_extrema(Magick::OpacityChannel)[1]/Magick::MaxRGB)
86
- puts "\t\t\tMean:" + sprintf("%u (%g)\n", channel_mean(Magick::OpacityChannel)[0]/scale, channel_mean(Magick::OpacityChannel)[0]/Magick::MaxRGB)
87
- puts "\t\t\tStandard deviation:" + sprintf("%u (%g)\n", channel_mean(Magick::OpacityChannel)[1]/scale, channel_mean(Magick::OpacityChannel)[1]/Magick::MaxRGB)
84
+ puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::OpacityChannel)[0]/scale, channel_extrema(Magick::OpacityChannel)[0]/Magick::QuantumRange)
85
+ puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::OpacityChannel)[1]/scale, channel_extrema(Magick::OpacityChannel)[1]/Magick::QuantumRange)
86
+ puts "\t\t\tMean:" + sprintf("%u (%g)\n", channel_mean(Magick::OpacityChannel)[0]/scale, channel_mean(Magick::OpacityChannel)[0]/Magick::QuantumRange)
87
+ puts "\t\t\tStandard deviation:" + sprintf("%u (%g)\n", channel_mean(Magick::OpacityChannel)[1]/scale, channel_mean(Magick::OpacityChannel)[1]/Magick::QuantumRange)
88
88
  end
89
89
  if class_type == Magick::DirectClass
90
90
  puts "\tColors: #{total_colors}\n"
@@ -157,21 +157,21 @@ module Magick
157
157
  exif_attrs.each do |attr|
158
158
  puts "\t\t#{attr[0]}: #{attr[1]}\n"
159
159
  end
160
- end
160
+ end
161
161
  end
162
162
  puts "\tTainted: True\n" if changed?
163
163
  puts "\tTainted: False\n" unless changed?
164
164
  puts "\tVersion: #{Magick::Version}\n"
165
165
  puts "\t #{Magick::Magick_version}\n"
166
- end
166
+ end
167
167
  end
168
168
  end
169
169
 
170
170
  if ARGV.length == 0
171
171
  puts <<-'END_USAGE'
172
- This example displays information about the specified image file(s)
173
- that is similar to ImageMagick/GraphicsMagick's identify command.
174
-
172
+ This example displays information about the specified image file(s)
173
+ that is similar to ImageMagick/GraphicsMagick's identify command.
174
+
175
175
  Usage:
176
176
  ruby identify.rb filename [filename...]
177
177
  END_USAGE
@@ -183,5 +183,5 @@ ilist.each do |img|
183
183
  img.identify
184
184
  end
185
185
 
186
- exit
186
+ exit
187
187
 
@@ -22,18 +22,19 @@ frame = Magick::Image.new(DIM, DIM) {self.background_color = 'transparent'}
22
22
  spinner = Magick::ImageList.new
23
23
 
24
24
  # 'level' is the change from darkest gray to white
25
- level = Magick::MaxRGB / 2 / NFRAMES
25
+ level = Magick::QuantumRange / 2 / NFRAMES
26
26
 
27
27
  NFRAMES.times do |x|
28
28
  gc = Magick::Draw.new
29
29
  gc.translate(DIM/2, DIM/2)
30
30
  gc.stroke('none')
31
- intensity = 0.58 * Magick::MaxRGB
31
+ intensity = 0.58 * Magick::QuantumRange
32
32
  fill_color = Magick::Pixel.new(intensity, intensity, intensity).to_color
33
33
  gc.fill(fill_color)
34
34
  angle = x * (360/NFRAMES)
35
35
  NFRAMES.times do
36
36
  gc.rotate(angle)
37
+ intensity = [intensity, Magick::QuantumRange].min
37
38
  fill_color = Magick::Pixel.new(intensity, intensity, intensity).to_color
38
39
  gc.fill(fill_color)
39
40
  gc.roundrectangle(7, -1, 15, 0, 1, 1)
@@ -1,4 +1,4 @@
1
- MANIFEST for RMagick-1.15.17 - 19:07:42 12/05/08
1
+ MANIFEST for RMagick-2.0.0 - 09:19:16 12/27/07
2
2
 
3
3
  doc/ilist.html
4
4
  doc/scripts/stripeTables.js
@@ -101,6 +101,7 @@ doc/ex/motion_blur.rb
101
101
  doc/ex/viewex.rb
102
102
  doc/ex/line01.rb
103
103
  doc/ex/swirl.rb
104
+ doc/ex/fill_pattern.rb
104
105
  doc/ex/qbezierpath.rb
105
106
  doc/ex/get_type_metrics.rb
106
107
  doc/ex/border.rb
@@ -225,6 +226,7 @@ doc/ex/equalize.rb
225
226
  doc/ex/map.rb
226
227
  doc/ex/get_pixels.rb
227
228
  doc/ex/polyline.rb
229
+ doc/ex/composite_layers.rb
228
230
  doc/ex/text01.rb
229
231
  doc/ex/crop.rb
230
232
  doc/ex/quantize-m.rb
@@ -290,18 +292,18 @@ doc/magick.html
290
292
  doc/rvgxform.html
291
293
  doc/rvguse.html
292
294
  doc/rvgstyle.html
295
+ ext/RMagick/extconf.rb
293
296
  ext/RMagick/rminfo.c
294
297
  ext/RMagick/rmmain.c
295
298
  ext/RMagick/rmfill.c
296
299
  ext/RMagick/rmimage.c
297
- ext/RMagick/rmagick_config.h.in
298
300
  ext/RMagick/rmdraw.c
299
301
  ext/RMagick/rmilist.c
300
302
  ext/RMagick/MANIFEST
301
303
  ext/RMagick/rmutil.c
302
304
  ext/RMagick/rmagick.h
303
- ext/RMagick/extconf.rb.in
304
305
  post-setup.rb
306
+ examples/crop_with_gravity.rb
305
307
  examples/describe.rb
306
308
  examples/thumbnail.rb
307
309
  examples/find_similar_region.rb
@@ -331,15 +333,12 @@ lib/rvg/transformable.rb
331
333
  lib/rvg/deep_equal.rb
332
334
  lib/rvg/rvg.rb
333
335
  lib/rvg/stretchable.rb
334
- gem_extconf.rb
335
336
  README-Mac-OSX.txt
336
337
  post-clean.rb
337
- metaconfig.in
338
338
  post-install.rb
339
+ build_tarball.rake
339
340
  ChangeLog
340
341
  rmagick.gemspec
341
342
  uninstall.rb
342
- Makefile.in
343
+ metaconfig
343
344
  README.html
344
- configure.ac
345
- configure
@@ -0,0 +1,242 @@
1
+ require "mkmf"
2
+ require "date"
3
+
4
+ RMAGICK_VERS = "2.0.0"
5
+ MIN_RUBY_VERS = "1.8.2"
6
+ MIN_RUBY_VERS_NO = MIN_RUBY_VERS.tr(".","").to_i
7
+ MIN_IM_VERS = "6.3.0"
8
+ MIN_IM_VERS_NO = MIN_IM_VERS.tr(".","").to_i
9
+
10
+ SUMMARY = <<"END_SUMMARY"
11
+
12
+
13
+ #{"=" * 70}
14
+ #{DateTime.now.strftime("%a %d%b%y %T")}
15
+ This installation of RMagick #{RMAGICK_VERS} is configured
16
+ for Ruby #{RUBY_VERSION} (#{RUBY_PLATFORM}) and ImageMagick #{`Magick-config --version`.chomp}.
17
+ #{"=" * 70}
18
+
19
+
20
+ END_SUMMARY
21
+
22
+
23
+
24
+
25
+ # Test for a specific value in an enum type
26
+ def have_enum_value(enum, value, headers=nil, &b)
27
+ checking_for "#{enum}.#{value}" do
28
+ if try_compile(<<"SRC", &b)
29
+ #{COMMON_HEADERS}
30
+ #{cpp_include(headers)}
31
+ /*top*/
32
+ int main() { #{enum} t = #{value}; t = t; return 0; }
33
+ SRC
34
+ $defs.push(format("-DHAVE_ENUM_%s", value.upcase))
35
+ true
36
+ else
37
+ false
38
+ end
39
+ end
40
+ end
41
+
42
+
43
+
44
+
45
+ def have_new_rb_cvar_set(headers=nil, &b)
46
+ checking_for "rb_cvar_set with 3 arguments" do
47
+ if try_compile(<<"SRC", &b)
48
+ #{COMMON_HEADERS}
49
+ #{cpp_include(headers)}
50
+ /*top*/
51
+ int main() { rb_cvar_set(rb_cArray, rb_intern("x"), INT2FIX(0)); return 0; }
52
+ SRC
53
+ $defs.push("-DHAVE_NEW_RB_CVAR_SET")
54
+ true
55
+ else
56
+ false
57
+ end
58
+ end
59
+ end
60
+
61
+
62
+
63
+
64
+ # Test for multiple values of the same enum type
65
+ def have_enum_values(enum, values, headers=nil, &b)
66
+ values.each do |value|
67
+ have_enum_value(enum, value, headers, &b)
68
+ end
69
+ end
70
+
71
+
72
+
73
+
74
+ def exit_failure(msg)
75
+ Logging::message msg
76
+ message msg+"\n"
77
+ exit(1)
78
+ end
79
+
80
+
81
+
82
+
83
+ unless checking_for("Ruby version >= #{MIN_RUBY_VERS}") do
84
+ version = RUBY_VERSION.tr(".","").to_i
85
+ version >= MIN_RUBY_VERS_NO
86
+ end
87
+ exit_failure "Can't install RMagick #{RMAGICK_VERS}. Ruby #{MIN_RUBY_VERS} or later required.\n"
88
+ end
89
+
90
+
91
+ # Check for Magick-config
92
+ unless find_executable("Magick-config")
93
+ exit_failure "Can't install RMagick #{RMAGICK_VERS}. Can't find Magick-config in #{ENV['PATH']}\n"
94
+ end
95
+
96
+
97
+ # Ensure minimum ImageMagick version
98
+ unless checking_for("ImageMagick version >= #{MIN_IM_VERS}") do
99
+ version = `Magick-config --version`.chomp.tr(".","").to_i
100
+ version >= MIN_IM_VERS_NO
101
+ end
102
+ exit_failure "Can't install RMagick #{RMAGICK_VERS}. You must have ImageMagick #{MIN_IM_VERS} or later.\n"
103
+ end
104
+
105
+ # Ensure ImageMagick is not configured for HDRI
106
+ unless checking_for("HDRI disabled version of ImageMagick") do
107
+ not (`Magick-config --version`["HDRI"])
108
+ end
109
+ exit_failure "\nCan't install RMagick #{RMAGICK_VERS}."+
110
+ "\nRMagick does not work when ImageMagick is configured for High Dynamic Range Images."+
111
+ "\nDon't use the --enable-hdri option when configuring ImageMagick.\n"
112
+ end
113
+
114
+ # Save flags
115
+ $CFLAGS = ENV["CFLAGS"].to_s + " " + `Magick-config --cflags`.chomp
116
+ $CPPFLAGS = `Magick-config --cppflags`.chomp
117
+ $LDFLAGS = `Magick-config --ldflags`.chomp
118
+ $LOCAL_LIBS = `Magick-config --libs`.chomp
119
+
120
+ #headers = %w{assert.h ctype.h errno.h float.h limits.h math.h stdarg.h stddef.h stdint.h stdio.h stdlib.h string.h time.h}
121
+ headers = %w{assert.h ctype.h stdint.h stdio.h stdlib.h math.h time.h}
122
+ headers << "sys/types.h" if have_header("sys/types.h")
123
+
124
+
125
+ unless have_header("magick/MagickCore.h")
126
+ exit_failure "Can't install RMagick #{RMAGICK_VERS}. Can't find MagickCore.h.\n"
127
+ else
128
+ headers << "magick/MagickCore.h"
129
+ end
130
+
131
+ unless have_library("Magick", "InitializeMagick", headers)
132
+ exit_failure "Can't install RMagick #{RMAGICK_VERS}. " +
133
+ "Can't find libMagick or one of the dependent libraries. " +
134
+ "Check the mkmf.log file for more detailed information.\n"
135
+ end
136
+
137
+ have_func("snprintf", headers)
138
+
139
+
140
+ ["AcquireQuantumMemory", # 6.3.5-9
141
+ "ClutImageChannel", # 6.3.5-8
142
+ "CompositeLayers", # 6.3.3-?
143
+ "ConvertHSLToRGB", # 6.3.5-9
144
+ "ConvertRGBToHSL", # 6.3.5-9
145
+ "DistortImage", # 6.3.5
146
+ "EqualizeImageChannel", # 6.3.6-9
147
+ "ExcerptImage", # 6.3.5-8
148
+ "ExtentImage", # 6.3.1
149
+ "GetImageProperty", # 6.3.1
150
+ "GetNextImageProperty", # 6.3.1
151
+ "IsHistogramImage", # 6.3.5
152
+ "LinearStretchImage", # 6.3.1
153
+ "MagickCoreGenesis", # 6.3.4
154
+ "PolaroidImage", # 6.3.1-6
155
+ "RecolorImage", # 6.3.1-3
156
+ "ResetImagePage", # 6.3.3
157
+ "ResizeQuantumMemory", # 6.3.5-9
158
+ "SetImageAlphaChannel", # 6.3.6-9
159
+ "SetImageProperty", # 6.3.1
160
+ "SetImageRegistry", # 6.3.4-?
161
+ "SyncImageProfiles", # 6.3.2
162
+ ].each do |func|
163
+ have_func(func, headers)
164
+ end
165
+
166
+
167
+ have_type("AlphaChannelType", headers) # 6.3.5
168
+ have_type("ImageLayerMethod", headers) # 6.3.6 replaces MagickLayerMethod
169
+ have_type("long double", headers)
170
+ have_type("unsigned long long", headers)
171
+ have_type("uint64_t", headers)
172
+ have_type("__int64", headers)
173
+ check_sizeof("Image *", headers)
174
+
175
+
176
+ have_enum_values("CompositeOperator", ["ChangeMaskCompositeOp", # 6.3.3
177
+ "LinearLightCompositeOp", # 6.3.5
178
+ "DivideCompositeOp"], headers) # 6.3.5
179
+ have_enum_values("DistortImageMethod", ["ArcDistortion", # 6.3.5-5
180
+ "PerspectiveProjectionDistortion"], headers) # 6.3.5-9
181
+ have_enum_values("FilterTypes", ["KaiserFilter", # 6.3.6
182
+ "SentinelFilter", # 6.3.6
183
+ "WelshFilter", # 6.3.6-4
184
+ "ParzenFilter", # 6.3.6-4
185
+ "LagrangeFilter", # 6.3.7-2
186
+ "BohmanFilter", # 6.3.7-2
187
+ "BartlettFilter"], headers) # 6.3.7-2
188
+ have_enum_value("InterpolatePixelMethod", "SplineInterpolatePixel", headers) # 6.3.5
189
+ have_enum_values("InterlaceType", ["GIFInterlace", # 6.3.4
190
+ "JPEGInterlace", # 6.3.4
191
+ "PNGInterlace"], headers) # 6.3.4
192
+ have_enum_values("MagickLayerMethod", ["OptimizeTransLayer", # 6.3.3-4
193
+ "RemoveDupsLayer", # 6.3.3-6
194
+ "RemoveZeroLayer", # 6.3.3-6
195
+ "CompositeLayer", # 6.3.3-6
196
+ "FlattenLayer", # 6.3.6-2
197
+ "MergeLayer", # 6.3.6
198
+ "MosaicLayer", # 6.3.6-2
199
+ "OptimizeImageLayer"], headers) # 6.3.3-?
200
+ have_enum_value("MetricType", "MeanErrorPerPixelMetric", headers) # 6.3.4-?
201
+ have_enum_value("NoiseType", "RandomNoise", headers) # 6.3.5-0
202
+ have_enum_values("VirtualPixelMethod", ["MaskVirtualPixelMethod", # 6.3.3
203
+ "BlackVirtualPixelMethod", # 6.3.5
204
+ "GrayVirtualPixelMethod", # 6.3.5
205
+ "WhiteVirtualPixelMethod"], headers) # 6.3.5
206
+
207
+
208
+ # Now test Ruby 1.9.0 features. intern.h depends on stdarg.h.
209
+ if have_header("stdarg.h")
210
+ $CPPFLAGS << " -DHAVE_STDARG_PROTOTYPES=1"
211
+ end
212
+
213
+ headers = ["ruby.h", "rubyio.h"]
214
+
215
+ if have_header("intern.h")
216
+ headers << "intern.h"
217
+ elsif have_header("ruby/intern.h")
218
+ headers << "ruby/intern.h"
219
+ else
220
+ exit_failure "Can't find intern.h"
221
+ end
222
+ have_func("rb_frame_this_func", headers)
223
+ have_new_rb_cvar_set(headers)
224
+
225
+
226
+
227
+ # Miscellaneous constants
228
+ $defs.push("-DRUBY_VERSION_STRING=\"ruby #{RUBY_VERSION}\"")
229
+ $defs.push("-DRMAGICK_VERSION_STRING=\"RMagick #{RMAGICK_VERS}\"")
230
+
231
+ create_header()
232
+ # Prior to 1.8.5 mkmf duplicated the symbols on the command line and in the
233
+ # extconf.h header. Suppress that behavior by removing the symbol array.
234
+ $defs = []
235
+
236
+ # Force re-compilation if the generated Makefile changed.
237
+ $config_h = "Makefile rmagick.h"
238
+
239
+ create_makefile("RMagick2")
240
+
241
+ Logging::message SUMMARY
242
+ message SUMMARY