rmagick 2.16.0 → 3.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 (238) hide show
  1. checksums.yaml +5 -5
  2. data/.appveyor.yml +19 -0
  3. data/.circleci/config.yml +56 -0
  4. data/.rubocop.yml +8 -335
  5. data/.rubocop_todo.yml +255 -0
  6. data/.ruby-version +1 -0
  7. data/.travis.yml +6 -49
  8. data/CHANGELOG.md +23 -0
  9. data/CONTRIBUTING.md +34 -0
  10. data/Gemfile +0 -6
  11. data/README.textile +11 -3
  12. data/Rakefile +23 -15
  13. data/before_install_linux.sh +12 -15
  14. data/doc/ex/InitialCoords.rb +4 -4
  15. data/doc/ex/NewCoordSys.rb +4 -4
  16. data/doc/ex/OrigCoordSys.rb +2 -2
  17. data/doc/ex/PreserveAspectRatio.rb +34 -34
  18. data/doc/ex/RotateScale.rb +7 -7
  19. data/doc/ex/Skew.rb +7 -7
  20. data/doc/ex/Use01.rb +1 -1
  21. data/doc/ex/Use02.rb +4 -4
  22. data/doc/ex/Use03.rb +2 -2
  23. data/doc/ex/ViewBox.rb +4 -4
  24. data/doc/ex/affine.rb +5 -5
  25. data/doc/ex/affine_transform.rb +3 -3
  26. data/doc/ex/arc.rb +9 -9
  27. data/doc/ex/arcpath.rb +2 -2
  28. data/doc/ex/arcs01.rb +6 -6
  29. data/doc/ex/arcs02.rb +8 -8
  30. data/doc/ex/axes.rb +11 -11
  31. data/doc/ex/baseline_shift01.rb +5 -5
  32. data/doc/ex/bilevel_channel.rb +1 -1
  33. data/doc/ex/blur_image.rb +1 -1
  34. data/doc/ex/border.rb +1 -1
  35. data/doc/ex/bounding_box.rb +11 -11
  36. data/doc/ex/cbezier1.rb +12 -12
  37. data/doc/ex/cbezier2.rb +13 -13
  38. data/doc/ex/cbezier3.rb +13 -13
  39. data/doc/ex/cbezier4.rb +13 -13
  40. data/doc/ex/cbezier5.rb +13 -13
  41. data/doc/ex/cbezier6.rb +19 -19
  42. data/doc/ex/channel.rb +2 -2
  43. data/doc/ex/chop.rb +2 -2
  44. data/doc/ex/circle.rb +7 -7
  45. data/doc/ex/circle01.rb +2 -2
  46. data/doc/ex/clip_path.rb +6 -6
  47. data/doc/ex/coalesce.rb +6 -6
  48. data/doc/ex/color_fill_to_border.rb +8 -8
  49. data/doc/ex/color_floodfill.rb +8 -8
  50. data/doc/ex/color_histogram.rb +2 -2
  51. data/doc/ex/color_reset.rb +2 -2
  52. data/doc/ex/colors.rb +4 -4
  53. data/doc/ex/compose_mask.rb +2 -2
  54. data/doc/ex/composite.rb +39 -39
  55. data/doc/ex/composite_layers.rb +1 -2
  56. data/doc/ex/contrast.rb +3 -3
  57. data/doc/ex/crop.rb +2 -2
  58. data/doc/ex/crop_with_gravity.rb +5 -5
  59. data/doc/ex/cubic01.rb +12 -12
  60. data/doc/ex/cubic02.rb +22 -22
  61. data/doc/ex/cycle_colormap.rb +3 -3
  62. data/doc/ex/dissolve.rb +0 -0
  63. data/doc/ex/drawcomp.rb +8 -9
  64. data/doc/ex/drop_shadow.rb +4 -4
  65. data/doc/ex/ellipse.rb +9 -9
  66. data/doc/ex/ellipse01.rb +3 -3
  67. data/doc/ex/enhance.rb +2 -2
  68. data/doc/ex/evenodd.rb +19 -19
  69. data/doc/ex/fill_pattern.rb +3 -3
  70. data/doc/ex/flatten_images.rb +1 -1
  71. data/doc/ex/font_styles.rb +13 -13
  72. data/doc/ex/fonts.rb +2 -6
  73. data/doc/ex/frame.rb +1 -1
  74. data/doc/ex/get_multiline_type_metrics.rb +3 -3
  75. data/doc/ex/get_pixels.rb +4 -6
  76. data/doc/ex/get_type_metrics.rb +26 -25
  77. data/doc/ex/gradientfill.rb +2 -2
  78. data/doc/ex/grav.rb +12 -12
  79. data/doc/ex/gravity.rb +14 -16
  80. data/doc/ex/group.rb +11 -11
  81. data/doc/ex/hatchfill.rb +2 -2
  82. data/doc/ex/image.rb +9 -9
  83. data/doc/ex/implode.rb +2 -2
  84. data/doc/ex/line.rb +10 -10
  85. data/doc/ex/line01.rb +7 -7
  86. data/doc/ex/mask.rb +0 -0
  87. data/doc/ex/matte_fill_to_border.rb +3 -3
  88. data/doc/ex/matte_floodfill.rb +2 -2
  89. data/doc/ex/matte_replace.rb +3 -3
  90. data/doc/ex/median_filter.rb +2 -2
  91. data/doc/ex/mono.rb +2 -2
  92. data/doc/ex/morph.rb +1 -1
  93. data/doc/ex/mosaic.rb +7 -5
  94. data/doc/ex/motion_blur.rb +1 -1
  95. data/doc/ex/negate_channel.rb +0 -0
  96. data/doc/ex/nested_rvg.rb +2 -2
  97. data/doc/ex/nonzero.rb +19 -19
  98. data/doc/ex/opacity.rb +9 -9
  99. data/doc/ex/path.rb +17 -17
  100. data/doc/ex/pattern1.rb +4 -4
  101. data/doc/ex/pattern2.rb +2 -2
  102. data/doc/ex/polaroid.rb +0 -1
  103. data/doc/ex/polygon.rb +7 -7
  104. data/doc/ex/polygon01.rb +7 -7
  105. data/doc/ex/polyline.rb +7 -7
  106. data/doc/ex/polyline01.rb +8 -8
  107. data/doc/ex/posterize.rb +0 -0
  108. data/doc/ex/qbezierpath.rb +16 -16
  109. data/doc/ex/quad01.rb +6 -6
  110. data/doc/ex/quantize-m.rb +2 -2
  111. data/doc/ex/random_threshold_channel.rb +1 -1
  112. data/doc/ex/rect01.rb +2 -2
  113. data/doc/ex/rect02.rb +3 -3
  114. data/doc/ex/rectangle.rb +6 -6
  115. data/doc/ex/reduce_noise.rb +2 -2
  116. data/doc/ex/remap.rb +0 -0
  117. data/doc/ex/resize_to_fill.rb +0 -0
  118. data/doc/ex/resize_to_fit.rb +0 -0
  119. data/doc/ex/roll.rb +1 -1
  120. data/doc/ex/rotate.rb +8 -8
  121. data/doc/ex/rotate_f.rb +1 -1
  122. data/doc/ex/roundrect.rb +6 -6
  123. data/doc/ex/rubyname.rb +4 -4
  124. data/doc/ex/rvg_clippath.rb +3 -3
  125. data/doc/ex/rvg_linecap.rb +7 -7
  126. data/doc/ex/rvg_linejoin.rb +7 -7
  127. data/doc/ex/rvg_opacity.rb +5 -5
  128. data/doc/ex/rvg_pattern.rb +8 -8
  129. data/doc/ex/rvg_stroke_dasharray.rb +2 -2
  130. data/doc/ex/sepiatone.rb +0 -0
  131. data/doc/ex/shadow.rb +6 -6
  132. data/doc/ex/shear.rb +2 -2
  133. data/doc/ex/skewx.rb +8 -8
  134. data/doc/ex/skewy.rb +9 -9
  135. data/doc/ex/smile.rb +5 -4
  136. data/doc/ex/sparse_color.rb +0 -4
  137. data/doc/ex/splice.rb +1 -1
  138. data/doc/ex/stegano.rb +4 -5
  139. data/doc/ex/stroke_dasharray.rb +10 -10
  140. data/doc/ex/stroke_fill.rb +2 -2
  141. data/doc/ex/stroke_linecap.rb +12 -12
  142. data/doc/ex/stroke_linejoin.rb +12 -12
  143. data/doc/ex/stroke_width.rb +11 -11
  144. data/doc/ex/swirl.rb +2 -2
  145. data/doc/ex/text.rb +6 -6
  146. data/doc/ex/text01.rb +4 -4
  147. data/doc/ex/text_align.rb +5 -5
  148. data/doc/ex/text_antialias.rb +2 -2
  149. data/doc/ex/text_styles.rb +8 -8
  150. data/doc/ex/text_undercolor.rb +4 -4
  151. data/doc/ex/texture_fill_to_border.rb +8 -8
  152. data/doc/ex/texture_floodfill.rb +8 -8
  153. data/doc/ex/texturefill.rb +2 -2
  154. data/doc/ex/threshold.rb +2 -2
  155. data/doc/ex/to_blob.rb +1 -1
  156. data/doc/ex/translate.rb +8 -8
  157. data/doc/ex/transparent.rb +6 -6
  158. data/doc/ex/transpose.rb +0 -0
  159. data/doc/ex/transverse.rb +0 -0
  160. data/doc/ex/tref01.rb +6 -6
  161. data/doc/ex/triangle01.rb +2 -2
  162. data/doc/ex/trim.rb +2 -2
  163. data/doc/ex/tspan01.rb +5 -5
  164. data/doc/ex/tspan02.rb +5 -5
  165. data/doc/ex/tspan03.rb +5 -5
  166. data/doc/ex/unsharp_mask.rb +3 -3
  167. data/doc/ex/viewex.rb +5 -5
  168. data/doc/ex/vignette.rb +0 -0
  169. data/doc/ex/watermark.rb +6 -6
  170. data/doc/ex/wet_floor.rb +2 -2
  171. data/doc/ex/writing_mode01.rb +12 -12
  172. data/doc/ex/writing_mode02.rb +12 -12
  173. data/examples/constitute.rb +1 -1
  174. data/examples/crop_with_gravity.rb +5 -5
  175. data/examples/demo.rb +6 -7
  176. data/examples/describe.rb +8 -10
  177. data/examples/find_similar_region.rb +3 -3
  178. data/examples/histogram.rb +192 -201
  179. data/examples/identify.rb +62 -73
  180. data/examples/image_opacity.rb +0 -1
  181. data/examples/import_export.rb +1 -1
  182. data/examples/pattern_fill.rb +3 -4
  183. data/examples/rotating_text.rb +5 -4
  184. data/examples/spinner.rb +5 -5
  185. data/examples/thumbnail.rb +3 -3
  186. data/examples/vignette.rb +5 -5
  187. data/ext/RMagick/extconf.rb +213 -230
  188. data/ext/RMagick/rmagick.c +1 -0
  189. data/ext/RMagick/rmagick.h +26 -29
  190. data/ext/RMagick/rmdraw.c +3 -38
  191. data/ext/RMagick/rmenum.c +36 -0
  192. data/ext/RMagick/rmimage.c +166 -10
  193. data/ext/RMagick/rminfo.c +7 -2
  194. data/ext/RMagick/rmkinfo.c +247 -0
  195. data/ext/RMagick/rmmain.c +96 -0
  196. data/ext/RMagick/rmutil.c +4 -0
  197. data/lib/rmagick/version.rb +3 -3
  198. data/lib/rmagick_internal.rb +226 -308
  199. data/lib/rvg/clippath.rb +2 -4
  200. data/lib/rvg/container.rb +25 -22
  201. data/lib/rvg/deep_equal.rb +11 -11
  202. data/lib/rvg/describable.rb +2 -2
  203. data/lib/rvg/embellishable.rb +60 -66
  204. data/lib/rvg/misc.rb +122 -128
  205. data/lib/rvg/pathdata.rb +15 -17
  206. data/lib/rvg/rvg.rb +41 -44
  207. data/lib/rvg/stretchable.rb +22 -28
  208. data/lib/rvg/stylable.rb +10 -10
  209. data/lib/rvg/text.rb +164 -165
  210. data/lib/rvg/transformable.rb +15 -15
  211. data/lib/rvg/units.rb +2 -2
  212. data/rmagick.gemspec +9 -33
  213. data/spec/rmagick/draw_spec.rb +5 -6
  214. data/spec/rmagick/image/blue_shift_spec.rb +1 -3
  215. data/spec/rmagick/image/channel_entropy_spec.rb +9 -0
  216. data/spec/rmagick/image/composite_spec.rb +2 -4
  217. data/spec/rmagick/image/constitute_spec.rb +2 -4
  218. data/spec/rmagick/image/dispatch_spec.rb +1 -3
  219. data/spec/rmagick/image/from_blob_spec.rb +1 -3
  220. data/spec/rmagick/image/ping_spec.rb +1 -3
  221. data/spec/rmagick/image/properties_spec.rb +0 -2
  222. data/spec/rmagick/image/read_spec.rb +28 -0
  223. data/spec/spec_helper.rb +7 -1
  224. data/spec/support/issue_200/app.rb +8 -0
  225. data/test/Image1.rb +70 -70
  226. data/test/Image2.rb +369 -361
  227. data/test/Image3.rb +64 -63
  228. data/test/ImageList1.rb +796 -792
  229. data/test/ImageList2.rb +43 -44
  230. data/test/Image_attributes.rb +26 -48
  231. data/test/Import_Export.rb +71 -77
  232. data/test/Info.rb +30 -31
  233. data/test/Magick.rb +47 -46
  234. data/test/Pixel.rb +24 -24
  235. data/test/Preview.rb +7 -6
  236. data/test/test_all_basic.rb +15 -7
  237. data/test/tmpnam_test.rb +3 -3
  238. metadata +57 -18
@@ -16,15 +16,15 @@ end
16
16
 
17
17
  # Create a image that will hold the alphabet images in 5 rows and 5 columns.
18
18
  cells = Magick::ImageList.new
19
- cells.new_image buttons.columns*5, buttons.rows*5 do
19
+ cells.new_image buttons.columns * 5, buttons.rows * 5 do
20
20
  self.background_color = '#000000ff' # transparent
21
21
  end
22
22
  cells.matte = true
23
23
 
24
- offset = Magick::Rectangle.new(0,0,0,0)
24
+ offset = Magick::Rectangle.new(0, 0, 0, 0)
25
25
 
26
26
  # Create 2 arrays from which we can randomly choose row,col pairs
27
- row = [0]*5 + [1]*5 + [2]*5 + [3]*5 + [4]*5
27
+ row = [0] * 5 + [1] * 5 + [2] * 5 + [3] * 5 + [4] * 5
28
28
  col = (0..4).to_a * 5
29
29
 
30
30
  # The coalesce method composites the 2nd image over the 1st, the 3rd image
@@ -41,8 +41,8 @@ srand 1234
41
41
  y = col.delete_at n
42
42
 
43
43
  button = buttons[i]
44
- offset.x = x*button.columns
45
- offset.y = y*button.rows
44
+ offset.x = x * button.columns
45
+ offset.y = y * button.rows
46
46
  button.page = offset
47
47
  button.matte = true
48
48
  cells << button
@@ -50,7 +50,7 @@ end
50
50
 
51
51
  puts 'This may take a few seconds...'
52
52
  cells.delay = 10
53
- cells.iterations = 10000
53
+ cells.iterations = 10_000
54
54
  res = cells.coalesce
55
55
  res.write 'coalesce_anim.gif'
56
56
  res[25].write 'coalesce.gif'
@@ -3,27 +3,27 @@ require 'rmagick'
3
3
 
4
4
  # Demonstrate the Image#color_fill_to_border method
5
5
 
6
- before = Magick::Image.new(200,200) do
6
+ before = Magick::Image.new(200, 200) do
7
7
  self.background_color = 'white'
8
8
  self.border_color = 'black'
9
9
  end
10
- before.border!(1,1,'black')
10
+ before.border!(1, 1, 'black')
11
11
 
12
12
  circle = Magick::Draw.new
13
13
  circle.fill('transparent')
14
14
  circle.stroke('black')
15
15
  circle.stroke_width(2)
16
- circle.circle(100,100,180,100)
16
+ circle.circle(100, 100, 180, 100)
17
17
  circle.fill('plum1')
18
18
  circle.stroke('transparent')
19
- circle.circle( 60,100, 40,100)
20
- circle.circle(140,100,120,100)
21
- circle.circle(100, 60,100, 40)
22
- circle.circle(100,140,100,120)
19
+ circle.circle(60, 100, 40, 100)
20
+ circle.circle(140, 100, 120, 100)
21
+ circle.circle(100, 60, 100, 40)
22
+ circle.circle(100, 140, 100, 120)
23
23
  circle.draw(before)
24
24
 
25
25
  before.write('color_fill_to_border_before.gif')
26
26
 
27
- after = before.color_fill_to_border(100,100, 'aquamarine')
27
+ after = before.color_fill_to_border(100, 100, 'aquamarine')
28
28
  after.write('color_fill_to_border_after.gif')
29
29
  exit
@@ -3,26 +3,26 @@ require 'rmagick'
3
3
 
4
4
  # Demonstrate the Image#color_floodfill method
5
5
 
6
- before = Magick::Image.new(200,200) { self.background_color = 'white' }
7
- before.border!(1,1,'black')
6
+ before = Magick::Image.new(200, 200) { self.background_color = 'white' }
7
+ before.border!(1, 1, 'black')
8
8
 
9
9
  circle = Magick::Draw.new
10
10
  circle.fill('transparent')
11
11
  circle.stroke_width(2)
12
12
  circle.stroke('black')
13
- circle.circle(100,100,180,100)
13
+ circle.circle(100, 100, 180, 100)
14
14
  circle.fill('plum1')
15
15
  circle.stroke('transparent')
16
- circle.circle( 60,100, 40,100)
17
- circle.circle(140,100,120,100)
18
- circle.circle(100, 60,100, 40)
19
- circle.circle(100,140,100,120)
16
+ circle.circle(60, 100, 40, 100)
17
+ circle.circle(140, 100, 120, 100)
18
+ circle.circle(100, 60, 100, 40)
19
+ circle.circle(100, 140, 100, 120)
20
20
  circle.draw(before)
21
21
 
22
22
  before.write('color_floodfill_before.gif')
23
23
 
24
24
  aquamarine = Magick::Pixel.from_color('aquamarine')
25
- after = before.color_floodfill(100,100, aquamarine)
25
+ after = before.color_floodfill(100, 100, aquamarine)
26
26
 
27
27
  after.write('color_floodfill_after.gif')
28
28
  exit
@@ -11,9 +11,9 @@ img = img.quantize(NUM_COLORS)
11
11
  hist = img.color_histogram
12
12
 
13
13
  # sort pixels by increasing count
14
- pixels = hist.keys.sort_by {|pixel| hist[pixel] }
14
+ pixels = hist.keys.sort_by { |pixel| hist[pixel] }
15
15
 
16
- scale = HIST_HEIGHT / (hist.values.max*1.025) # put 2.5% air at the top
16
+ scale = HIST_HEIGHT / (hist.values.max * 1.025) # put 2.5% air at the top
17
17
 
18
18
  gc = Magick::Draw.new
19
19
  gc.stroke_width(1)
@@ -3,9 +3,9 @@ require 'rmagick'
3
3
 
4
4
  # Demonstrate the Image#color_reset! method
5
5
 
6
- f = Magick::Image.new(100,100) { self.background_color = 'white' }
6
+ f = Magick::Image.new(100, 100) { self.background_color = 'white' }
7
7
  red = Magick::Pixel.from_color('red')
8
8
  f.color_reset!(red)
9
- #f.display
9
+ # f.display
10
10
  f.write('color_reset.gif')
11
11
  exit
@@ -20,8 +20,8 @@ colors do |c|
20
20
  self.background_color = c.color
21
21
  self.border_color = 'gray50'
22
22
  end
23
- rgb = sprintf('#%02x%02x%02x', c.color.red&0xff, c.color.green&0xff, c.color.blue&0xff)
24
- rgb += sprintf('%02x', c.color.opacity&0xff) if c.color.opacity != 0
23
+ rgb = format('#%02x%02x%02x', c.color.red & 0xff, c.color.green & 0xff, c.color.blue & 0xff)
24
+ rgb += format('%02x', c.color.opacity & 0xff) if c.color.opacity != 0
25
25
  m = /(.*?)Compliance/.match c.compliance.to_s
26
26
  colors.cur_image['Label'] = "#{c.name} (#{rgb}) #{m[1]}"
27
27
  end
@@ -44,7 +44,7 @@ end
44
44
  # Add the title at the top, over the 'null:'
45
45
  # tiles we added at the very beginning.
46
46
  title = Draw.new
47
- title.annotate(montage, 0,0,0,20, 'Named Colors') do
47
+ title.annotate(montage, 0, 0, 0, 20, 'Named Colors') do
48
48
  self.fill = 'white'
49
49
  self.stroke = 'transparent'
50
50
  self.pointsize = 32
@@ -58,7 +58,7 @@ montage.write('colors.miff')
58
58
 
59
59
  # Make a small sample of the full montage to display in the HTML file.
60
60
  sample = montage[8].crop(55, 325, 495, 110)
61
- sample.page = Rectangle.new(495,110)
61
+ sample.page = Rectangle.new(495, 110)
62
62
  sample.write('colors.gif')
63
63
 
64
64
  exit
@@ -1,8 +1,8 @@
1
1
  require 'rmagick'
2
2
 
3
3
  background = Magick::Image.read('images/Flower_Hat.jpg').first
4
- source = Magick::Image.read('pattern:checkerboard') {self.size = "#{background.columns}x#{background.rows}"}.first
5
- mask = Magick::Image.new(background.columns, background.rows) {self.background_color = 'black'}
4
+ source = Magick::Image.read('pattern:checkerboard') { self.size = "#{background.columns}x#{background.rows}" }.first
5
+ mask = Magick::Image.new(background.columns, background.rows) { self.background_color = 'black' }
6
6
 
7
7
  # Make a mask
8
8
  gc = Magick::Draw.new
@@ -15,114 +15,114 @@ img = Image.new(COLS, ROWS)
15
15
  triangle = Draw.new
16
16
  triangle.fill(COLOR_A)
17
17
  triangle.stroke('transparent')
18
- triangle.polygon(0,0, COLS,0, 0,ROWS, 0,0)
18
+ triangle.polygon(0, 0, COLS, 0, 0, ROWS, 0, 0)
19
19
  triangle.draw(img)
20
- image_A = img.transparent('white', TransparentOpacity)
21
- image_A['Label'] = 'A'
20
+ image_a = img.transparent('white', TransparentOpacity)
21
+ image_a['Label'] = 'A'
22
22
 
23
23
  img = Image.new(COLS, ROWS)
24
24
  triangle = Draw.new
25
25
  triangle.fill(COLOR_B)
26
26
  triangle.stroke('transparent')
27
- triangle.polygon(0,0, COLS,ROWS, COLS,0, 0,0)
27
+ triangle.polygon(0, 0, COLS, ROWS, COLS, 0, 0, 0)
28
28
  triangle.draw(img)
29
- image_B = img.transparent('white', TransparentOpacity)
30
- image_B['Label'] = 'B'
29
+ image__b = img.transparent('white', TransparentOpacity)
30
+ image__b['Label'] = 'B'
31
31
 
32
32
  list = ImageList.new
33
- null = Image.read('xc:white') { self.size = Geometry.new(COLS,ROWS) }
33
+ null = Image.read('xc:white') { self.size = Geometry.new(COLS, ROWS) }
34
34
  null = null.first.transparent('white', TransparentOpacity)
35
35
  null.border_color = 'transparent'
36
- granite = Image.read('granite:')
36
+ granite = Image.read('granite:')
37
37
 
38
38
  list << null.copy
39
- list << image_A
40
- list << image_B
39
+ list << image_a
40
+ list << image__b
41
41
  list << null.copy
42
42
 
43
- list << image_B.composite(image_A, CenterGravity, OverCompositeOp)
43
+ list << image__b.composite(image_a, CenterGravity, OverCompositeOp)
44
44
  list.cur_image['Label'] = 'A over B'
45
- list << image_A.composite(image_B, CenterGravity, OverCompositeOp)
45
+ list << image_a.composite(image__b, CenterGravity, OverCompositeOp)
46
46
  list.cur_image['Label'] = 'B over A'
47
47
 
48
- list << image_B.composite(image_A, CenterGravity, InCompositeOp)
48
+ list << image__b.composite(image_a, CenterGravity, InCompositeOp)
49
49
  list.cur_image['Label'] = 'A in B'
50
- list << image_A.composite(image_B, CenterGravity, InCompositeOp)
50
+ list << image_a.composite(image__b, CenterGravity, InCompositeOp)
51
51
  list.cur_image['Label'] = 'B in A'
52
52
 
53
- list << image_B.composite(image_A, CenterGravity, OutCompositeOp)
53
+ list << image__b.composite(image_a, CenterGravity, OutCompositeOp)
54
54
  list.cur_image['Label'] = 'A out B'
55
- list << image_A.composite(image_B, CenterGravity, OutCompositeOp)
55
+ list << image_a.composite(image__b, CenterGravity, OutCompositeOp)
56
56
  list.cur_image['Label'] = 'B out A'
57
57
 
58
- list << image_B.composite(image_A, CenterGravity, AtopCompositeOp)
58
+ list << image__b.composite(image_a, CenterGravity, AtopCompositeOp)
59
59
  list.cur_image['Label'] = 'A atop B'
60
- list << image_A.composite(image_B, CenterGravity, AtopCompositeOp)
60
+ list << image_a.composite(image__b, CenterGravity, AtopCompositeOp)
61
61
  list.cur_image['Label'] = 'B atop A'
62
62
 
63
- list << image_B.composite(image_A, CenterGravity, XorCompositeOp)
63
+ list << image__b.composite(image_a, CenterGravity, XorCompositeOp)
64
64
  list.cur_image['Label'] = 'A xor B'
65
65
 
66
- list << image_B.composite(image_A, CenterGravity, MultiplyCompositeOp)
66
+ list << image__b.composite(image_a, CenterGravity, MultiplyCompositeOp)
67
67
  list.cur_image['Label'] = 'A multiply B'
68
68
 
69
- list << image_B.composite(image_A, CenterGravity, ScreenCompositeOp)
69
+ list << image__b.composite(image_a, CenterGravity, ScreenCompositeOp)
70
70
  list.cur_image['Label'] = 'A screen B'
71
71
 
72
- list << image_B.composite(image_A, CenterGravity, DarkenCompositeOp)
72
+ list << image__b.composite(image_a, CenterGravity, DarkenCompositeOp)
73
73
  list.cur_image['Label'] = 'A darken B'
74
74
 
75
- list << image_B.composite(image_A, CenterGravity, LightenCompositeOp)
75
+ list << image__b.composite(image_a, CenterGravity, LightenCompositeOp)
76
76
  list.cur_image['Label'] = 'A lighten B'
77
77
 
78
- list << image_B.composite(image_A, CenterGravity, PlusCompositeOp)
78
+ list << image__b.composite(image_a, CenterGravity, PlusCompositeOp)
79
79
  list.cur_image['Label'] = 'A plus B'
80
80
 
81
- list << image_B.composite(image_A, CenterGravity, MinusCompositeOp)
81
+ list << image__b.composite(image_a, CenterGravity, MinusCompositeOp)
82
82
  list.cur_image['Label'] = 'A minus B'
83
83
 
84
- list << image_B.composite(image_A, CenterGravity, AddCompositeOp)
84
+ list << image__b.composite(image_a, CenterGravity, AddCompositeOp)
85
85
  list.cur_image['Label'] = 'A add B'
86
86
 
87
- list << image_B.composite(image_A, CenterGravity, SubtractCompositeOp)
87
+ list << image__b.composite(image_a, CenterGravity, SubtractCompositeOp)
88
88
  list.cur_image['Label'] = 'A subtract B'
89
89
 
90
- list << image_B.composite(image_A, CenterGravity, DifferenceCompositeOp)
90
+ list << image__b.composite(image_a, CenterGravity, DifferenceCompositeOp)
91
91
  list.cur_image['Label'] = 'A difference B'
92
92
 
93
- list << image_B.composite(image_A, CenterGravity, HueCompositeOp)
93
+ list << image__b.composite(image_a, CenterGravity, HueCompositeOp)
94
94
  list.cur_image['Label'] = 'A hue B'
95
95
 
96
- list << image_B.composite(image_A, CenterGravity, SaturateCompositeOp)
96
+ list << image__b.composite(image_a, CenterGravity, SaturateCompositeOp)
97
97
  list.cur_image['Label'] = 'A saturate B'
98
98
 
99
- list << image_B.composite(image_A, CenterGravity, LuminizeCompositeOp)
99
+ list << image__b.composite(image_a, CenterGravity, LuminizeCompositeOp)
100
100
  list.cur_image['Label'] = 'A luminize B'
101
101
 
102
- list << image_B.composite(image_A, CenterGravity, ColorizeCompositeOp)
102
+ list << image__b.composite(image_a, CenterGravity, ColorizeCompositeOp)
103
103
  list.cur_image['Label'] = 'A colorize B'
104
104
 
105
- list << image_B.composite(image_A, CenterGravity, BumpmapCompositeOp)
105
+ list << image__b.composite(image_a, CenterGravity, BumpmapCompositeOp)
106
106
  list.cur_image['Label'] = 'A bumpmap B'
107
107
 
108
- list << image_B.composite(image_A, CenterGravity, DissolveCompositeOp)
108
+ list << image__b.composite(image_a, CenterGravity, DissolveCompositeOp)
109
109
  list.cur_image['Label'] = 'A dissolve B'
110
110
 
111
- list << image_B.composite(image_A, CenterGravity, ThresholdCompositeOp)
111
+ list << image__b.composite(image_a, CenterGravity, ThresholdCompositeOp)
112
112
  list.cur_image['Label'] = 'A threshold B'
113
113
 
114
- list << image_B.composite(image_A, CenterGravity, ModulateCompositeOp)
114
+ list << image__b.composite(image_a, CenterGravity, ModulateCompositeOp)
115
115
  list.cur_image['Label'] = 'A modulate B'
116
116
 
117
- list << image_A.composite(image_B, CenterGravity, ModulateCompositeOp)
117
+ list << image_a.composite(image__b, CenterGravity, ModulateCompositeOp)
118
118
  list.cur_image['Label'] = 'B modulate A'
119
119
 
120
- list << image_B.composite(image_A, CenterGravity, OverlayCompositeOp)
120
+ list << image__b.composite(image_a, CenterGravity, OverlayCompositeOp)
121
121
  list.cur_image['Label'] = 'A overlay B'
122
122
 
123
123
  montage = list.montage do
124
124
  self.geometry = Geometry.new(COLS, ROWS, 3, 3)
125
- rows = (list.size+3) / 4
125
+ rows = (list.size + 3) / 4
126
126
  self.tile = Geometry.new(4, rows)
127
127
  self.texture = granite[0]
128
128
  self.fill = 'white'
@@ -20,7 +20,7 @@ gc.stroke = 'black'
20
20
  gc.stroke_width = 1
21
21
 
22
22
  23.times do
23
- ruby << Magick::Image.new(100, 100) {self.background_color = 'none'}
23
+ ruby << Magick::Image.new(100, 100) { self.background_color = 'none' }
24
24
  gc.annotate(ruby, 0, 0, 0, 0, 'Ruby')
25
25
  gc.rotation = 15
26
26
  end
@@ -43,7 +43,6 @@ begin
43
43
  result.delay = 10
44
44
  result.write('composite_layers.gif')
45
45
  result[0].write('composite_layers1.gif')
46
-
47
46
  rescue NotImplementedError
48
47
  result = Magick::Image.read('images/notimplemented.gif').first
49
48
  result.resize!(100, 100)
@@ -18,12 +18,12 @@ f = 1
18
18
  img << img.contrast
19
19
 
20
20
  # Annotate the previous image
21
- legend.annotate(img[f-1], 0,0,7,10, f.to_s)
21
+ legend.annotate(img[f - 1], 0, 0, 7, 10, f.to_s)
22
22
  f += 1
23
23
  end
24
24
 
25
25
  # Annotate the last image
26
- legend.annotate(img, 0,0,7,10, f.to_s)
26
+ legend.annotate(img, 0, 0, 7, 10, f.to_s)
27
27
 
28
28
  # Montage into a single image
29
29
  imgs = img.montage do
@@ -32,5 +32,5 @@ imgs = img.montage do
32
32
  end
33
33
 
34
34
  imgs.write('contrast.jpg')
35
- #imgs.display
35
+ # imgs.display
36
36
  exit
@@ -14,14 +14,14 @@ rect = Magick::Draw.new
14
14
  rect.stroke('transparent')
15
15
  rect.fill('white')
16
16
  rect.fill_opacity(0.25)
17
- rect.rectangle(23, 81, 107+23, 139+81)
17
+ rect.rectangle(23, 81, 107 + 23, 139 + 81)
18
18
  rect.draw(img)
19
19
 
20
20
  img.write('crop_before.png')
21
21
 
22
22
  # Create a image to use as a background for
23
23
  # the "after" image.
24
- bg = Magick::Image.new(img.columns, img.rows) {self.background_color='none'}
24
+ bg = Magick::Image.new(img.columns, img.rows) { self.background_color = 'none' }
25
25
 
26
26
  # Composite the the "after" (chopped) image on the background
27
27
  bg = bg.composite(chopped, 23, 81, Magick::OverCompositeOp)
@@ -12,13 +12,13 @@ include Magick
12
12
 
13
13
  shorts = Image.read('images/Shorts.jpg').first
14
14
 
15
- regwidth = shorts.columns/2
16
- regheight = shorts.rows/2
15
+ regwidth = shorts.columns / 2
16
+ regheight = shorts.rows / 2
17
17
 
18
- mask = Image.new(regwidth, regheight) { self.background_color = 'white'}
18
+ mask = Image.new(regwidth, regheight) { self.background_color = 'white' }
19
19
  mask.opacity = 0.50 * TransparentOpacity
20
20
 
21
- black = Image.new(shorts.columns, shorts.rows) {self.background_color = 'black'}
21
+ black = Image.new(shorts.columns, shorts.rows) { self.background_color = 'black' }
22
22
  pairs = ImageList.new
23
23
 
24
24
  [NorthWestGravity, NorthGravity, NorthEastGravity,
@@ -39,4 +39,4 @@ montage = pairs.montage do
39
39
  self.border_width = 1
40
40
  end
41
41
  montage.write('crop_with_gravity.miff')
42
- #montage.display
42
+ # montage.display
@@ -2,13 +2,13 @@ require 'rvg/rvg'
2
2
 
3
3
  Magick::RVG.dpi = 90
4
4
 
5
- Border = {:fill=>'none', :stroke=>'blue', :stroke_width=>1}
6
- Connect = {:fill=>'none', :stroke=>'#888', :stroke_width=>2}
7
- SamplePath = {:fill=>'none', :stroke=>'red', :stroke_width=>5}
8
- EndPoint = {:fill=>'none', :stroke=>'#888', :stroke_width=>2}
9
- CtlPoint = {:fill=>'#888', :stroke=>'none'}
10
- AutoCtlPoint = {:fill=>'none', :stroke=>'blue', :stroke_width=>4}
11
- Label = {:font_size=>22, :font_family=>'Verdana', :font_weight=>'normal', :font_style=>'normal'}
5
+ Border = { fill: 'none', stroke: 'blue', stroke_width: 1 }
6
+ Connect = { fill: 'none', stroke: '#888', stroke_width: 2 }
7
+ SamplePath = { fill: 'none', stroke: 'red', stroke_width: 5 }
8
+ EndPoint = { fill: 'none', stroke: '#888', stroke_width: 2 }
9
+ CtlPoint = { fill: '#888', stroke: 'none' }
10
+ AutoCtlPoint = { fill: 'none', stroke: 'blue', stroke_width: 4 }
11
+ Label = { font_size: 22, font_family: 'Verdana', font_weight: 'normal', font_style: 'normal' }
12
12
 
13
13
  rvg = Magick::RVG.new(5.cm, 4.cm).viewbox(0, 0, 500, 400) do |canvas|
14
14
  canvas.title = 'Example cubic01 - cubic Bezier commands in path data'
@@ -16,15 +16,15 @@ rvg = Magick::RVG.new(5.cm, 4.cm).viewbox(0, 0, 500, 400) do |canvas|
16
16
  Picture showing a simple example of path data using both a
17
17
  "C" and an "S" command, along with annotations showing the
18
18
  control points and end points.
19
- END_DESC
19
+ END_DESC
20
20
 
21
21
  canvas.background_fill = 'white'
22
22
  canvas.rect(496, 395, 1, 1).styles(Border)
23
23
 
24
- canvas.polyline(100,200, 100,100).styles(Connect)
25
- canvas.polyline(250,100, 250,200).styles(Connect)
26
- canvas.polyline(250,200, 250,300).styles(Connect)
27
- canvas.polyline(400,300, 400,200).styles(Connect)
24
+ canvas.polyline(100, 200, 100, 100).styles(Connect)
25
+ canvas.polyline(250, 100, 250, 200).styles(Connect)
26
+ canvas.polyline(250, 200, 250, 300).styles(Connect)
27
+ canvas.polyline(400, 300, 400, 200).styles(Connect)
28
28
 
29
29
  canvas.path('M100,200 C100,100 250,100 250,200 S400,300 400,200').styles(SamplePath)
30
30