rmagick4j 0.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. data/History.txt +84 -0
  2. data/LICENSE.txt +9 -0
  3. data/Manifest.txt +142 -0
  4. data/README.txt +25 -0
  5. data/Rakefile +109 -0
  6. data/lib/RMagick.rb +1861 -0
  7. data/lib/jhlabs-filters.jar +0 -0
  8. data/lib/magick4j.jar +0 -0
  9. data/lib/rmagick4j/constants.rb +21 -0
  10. data/lib/rmagick4j/draw.rb +86 -0
  11. data/lib/rmagick4j/enum.rb +120 -0
  12. data/lib/rmagick4j/gradient_fill.rb +14 -0
  13. data/lib/rmagick4j/image.rb +289 -0
  14. data/lib/rmagick4j/image_list.rb +21 -0
  15. data/lib/rmagick4j/pixel.rb +170 -0
  16. data/lib/rmagick4j/rmagick4j.rb +19 -0
  17. data/lib/rmagick4j/texture_fill.rb +14 -0
  18. data/lib/rmagick4j/type_metric.rb +8 -0
  19. data/lib/rmagick4j/version.rb +5 -0
  20. data/lib/rvg/clippath.rb +48 -0
  21. data/lib/rvg/container.rb +131 -0
  22. data/lib/rvg/deep_equal.rb +56 -0
  23. data/lib/rvg/describable.rb +53 -0
  24. data/lib/rvg/embellishable.rb +417 -0
  25. data/lib/rvg/misc.rb +739 -0
  26. data/lib/rvg/paint.rb +55 -0
  27. data/lib/rvg/pathdata.rb +131 -0
  28. data/lib/rvg/rvg.rb +283 -0
  29. data/lib/rvg/stretchable.rb +168 -0
  30. data/lib/rvg/stylable.rb +118 -0
  31. data/lib/rvg/text.rb +187 -0
  32. data/lib/rvg/transformable.rb +133 -0
  33. data/lib/rvg/units.rb +66 -0
  34. data/lib/svgsalamander.jar +0 -0
  35. data/test/RMagickTestSuite.rb +129 -0
  36. data/test/eyetests/bullseye.rb +150 -0
  37. data/test/eyetests/tests/draw_arc_basic.rb +16 -0
  38. data/test/eyetests/tests/draw_circle_affine.rb +19 -0
  39. data/test/eyetests/tests/draw_circle_basic.rb +16 -0
  40. data/test/eyetests/tests/draw_ellipse_affine.rb +19 -0
  41. data/test/eyetests/tests/draw_ellipse_basic.rb +16 -0
  42. data/test/eyetests/tests/draw_line_affine.rb +24 -0
  43. data/test/eyetests/tests/draw_line_basic.rb +20 -0
  44. data/test/eyetests/tests/draw_pattern_1.rb +35 -0
  45. data/test/eyetests/tests/draw_polygon_affine.rb +21 -0
  46. data/test/eyetests/tests/draw_polygon_basic.rb +19 -0
  47. data/test/eyetests/tests/draw_polyline_affine.rb +19 -0
  48. data/test/eyetests/tests/draw_polyline_basic.rb +18 -0
  49. data/test/eyetests/tests/draw_rectangle_affine.rb +16 -0
  50. data/test/eyetests/tests/draw_rectangle_basic.rb +16 -0
  51. data/test/eyetests/tests/draw_rmagick_test_01.rb +35 -0
  52. data/test/eyetests/tests/draw_rmagick_test_02.rb +40 -0
  53. data/test/eyetests/tests/draw_rmagick_test_03.rb +17 -0
  54. data/test/eyetests/tests/draw_rmagick_test_04.rb +21 -0
  55. data/test/eyetests/tests/draw_roundrectangle_affine.rb +19 -0
  56. data/test/eyetests/tests/draw_roundrectangle_basic.rb +16 -0
  57. data/test/eyetests/tests/gradient_fill_horizontal_diagonal_fill.rb +9 -0
  58. data/test/eyetests/tests/gradient_fill_horizontal_fill.rb +9 -0
  59. data/test/eyetests/tests/gradient_fill_point_fill.rb +9 -0
  60. data/test/eyetests/tests/gradient_fill_vertical_diagonal_fill.rb +9 -0
  61. data/test/eyetests/tests/gradient_fill_vertical_fill.rb +9 -0
  62. data/test/eyetests/tests/gruff_accumulator_bar.rb +29 -0
  63. data/test/eyetests/tests/gruff_area_1.rb +16 -0
  64. data/test/eyetests/tests/gruff_area_2.rb +27 -0
  65. data/test/eyetests/tests/gruff_bar_1.rb +29 -0
  66. data/test/eyetests/tests/gruff_bar_2.rb +19 -0
  67. data/test/eyetests/tests/gruff_line_1.rb +13 -0
  68. data/test/eyetests/tests/gruff_line_2.rb +20 -0
  69. data/test/eyetests/tests/gruff_net_1.rb +16 -0
  70. data/test/eyetests/tests/gruff_net_2.rb +16 -0
  71. data/test/eyetests/tests/gruff_pie_1.rb +21 -0
  72. data/test/eyetests/tests/gruff_pie_2.rb +22 -0
  73. data/test/eyetests/tests/gruff_scene_1.rb +14 -0
  74. data/test/eyetests/tests/gruff_scene_2.rb +14 -0
  75. data/test/eyetests/tests/gruff_sidebar.rb +32 -0
  76. data/test/eyetests/tests/gruff_sidestacked_bar_1.rb +26 -0
  77. data/test/eyetests/tests/gruff_sidestacked_bar_2.rb +26 -0
  78. data/test/eyetests/tests/gruff_spider_1.rb +22 -0
  79. data/test/eyetests/tests/gruff_spider_2.rb +15 -0
  80. data/test/eyetests/tests/gruff_stacked_bar_1.rb +23 -0
  81. data/test/eyetests/tests/gruff_stacked_bar_2.rb +26 -0
  82. data/test/eyetests/tests/hatch_fill.rb +9 -0
  83. data/test/eyetests/tests/image_list_flatten_images.rb +15 -0
  84. data/test/eyetests/tests/new_image.rb +24 -0
  85. data/test/eyetests/tests/path_a_command_01.rb +16 -0
  86. data/test/eyetests/tests/path_a_command_02.rb +19 -0
  87. data/test/eyetests/tests/path_c_command_01.rb +16 -0
  88. data/test/eyetests/tests/path_c_command_02.rb +16 -0
  89. data/test/eyetests/tests/path_complex_01.rb +16 -0
  90. data/test/eyetests/tests/path_espiral_01.rb +28 -0
  91. data/test/eyetests/tests/path_h_command_01.rb +16 -0
  92. data/test/eyetests/tests/path_h_command_02.rb +16 -0
  93. data/test/eyetests/tests/path_l_command_01.rb +16 -0
  94. data/test/eyetests/tests/path_l_command_02.rb +16 -0
  95. data/test/eyetests/tests/path_m_command_01.rb +16 -0
  96. data/test/eyetests/tests/path_m_command_02.rb +16 -0
  97. data/test/eyetests/tests/path_m_command_03.rb +16 -0
  98. data/test/eyetests/tests/path_q_command_01.rb +16 -0
  99. data/test/eyetests/tests/path_q_command_02.rb +16 -0
  100. data/test/eyetests/tests/path_q_command_03.rb +25 -0
  101. data/test/eyetests/tests/path_s_command_01.rb +16 -0
  102. data/test/eyetests/tests/path_s_command_02.rb +16 -0
  103. data/test/eyetests/tests/path_star_01.rb +16 -0
  104. data/test/eyetests/tests/path_t_command_01.rb +16 -0
  105. data/test/eyetests/tests/path_t_command_02.rb +16 -0
  106. data/test/eyetests/tests/path_v_command_01.rb +16 -0
  107. data/test/eyetests/tests/path_v_command_02.rb +16 -0
  108. data/test/eyetests/tests/store_pixel_smiley.rb +123 -0
  109. data/test/eyetests/tests/texture_fill.rb +11 -0
  110. data/test/gruff_tests/test/gruff_test_case.rb +120 -0
  111. data/test/gruff_tests/test/monkey_gruff.rb +7 -0
  112. data/test/gruff_tests/test/test_accumulator_bar.rb +50 -0
  113. data/test/gruff_tests/test/test_area.rb +134 -0
  114. data/test/gruff_tests/test/test_bar.rb +283 -0
  115. data/test/gruff_tests/test/test_base.rb +8 -0
  116. data/test/gruff_tests/test/test_bullet.rb +26 -0
  117. data/test/gruff_tests/test/test_legend.rb +71 -0
  118. data/test/gruff_tests/test/test_line.rb +493 -0
  119. data/test/gruff_tests/test/test_mini_bar.rb +32 -0
  120. data/test/gruff_tests/test/test_mini_pie.rb +20 -0
  121. data/test/gruff_tests/test/test_mini_side_bar.rb +37 -0
  122. data/test/gruff_tests/test/test_net.rb +230 -0
  123. data/test/gruff_tests/test/test_photo.rb +41 -0
  124. data/test/gruff_tests/test/test_pie.rb +154 -0
  125. data/test/gruff_tests/test/test_scene.rb +100 -0
  126. data/test/gruff_tests/test/test_side_bar.rb +12 -0
  127. data/test/gruff_tests/test/test_sidestacked_bar.rb +89 -0
  128. data/test/gruff_tests/test/test_spider.rb +216 -0
  129. data/test/gruff_tests/test/test_stacked_bar.rb +52 -0
  130. data/test/images/clown.jpg +0 -0
  131. data/test/images/texture.jpg +0 -0
  132. data/test/implemented_methods.rb +18 -0
  133. data/test/spec/draw_spec.rb +24 -0
  134. data/test/spec/image_constants.rb +76 -0
  135. data/test/spec/image_spec.rb +23 -0
  136. data/test/spec/pixel_spec.rb +84 -0
  137. data/test/spec/stories/geometry_runner.rb +13 -0
  138. data/test/spec/stories/geometry_steps.rb +24 -0
  139. data/test/spec/stories/geometry_story.rb +116 -0
  140. data/test/spec/stories/image_filling_runner.rb +13 -0
  141. data/test/spec/stories/image_filling_steps.rb +64 -0
  142. data/test/spec/stories/image_filling_story.rb +41 -0
  143. metadata +215 -0
@@ -0,0 +1,15 @@
1
+ require 'rubygems'
2
+ require 'gruff'
3
+ require File.join(File.dirname(__FILE__), 'new_image.rb')
4
+
5
+
6
+ g = Gruff::Spider.new(2)
7
+ g.title = "Pie Graph Two One Zero"
8
+
9
+ g.data(:Bert, [0])
10
+ g.data(:Adam, [1])
11
+ g.data(:Sam, [2])
12
+
13
+ g.theme_37signals
14
+
15
+ g.write("gruff_spider_2.jpg")
@@ -0,0 +1,23 @@
1
+ require 'rubygems'
2
+ require 'gruff'
3
+ require File.join(File.dirname(__FILE__), 'new_image.rb')
4
+
5
+
6
+ @datasets = [
7
+ [:Jimmy, [25, 36, 86, 39]],
8
+ [:Charles, [80, 54, 67, 54]],
9
+ [:Julie, [22, 29, 35, 38]],
10
+ ]
11
+
12
+ g = Gruff::StackedBar.new
13
+ g.title = "Visual Stacked Bar Graph Test"
14
+ g.labels = {
15
+ 0 => '5/6',
16
+ 1 => '5/15',
17
+ 2 => '5/24',
18
+ 3 => '5/30',
19
+ }
20
+ @datasets.each do |data|
21
+ g.data(data[0], data[1])
22
+ end
23
+ g.write 'gruff_stacked_bar_1.jpg'
@@ -0,0 +1,26 @@
1
+ require 'rubygems'
2
+ require 'gruff'
3
+ require File.join(File.dirname(__FILE__), 'new_image.rb')
4
+
5
+
6
+ @datasets = [
7
+ [:Jimmy, [25, 36, 86, 39]],
8
+ [:Charles, [80, 54, 67, 54]],
9
+ [:Julie, [22, 29, 35, 38]],
10
+ ]
11
+
12
+ g = Gruff::StackedBar.new(400)
13
+ g.title = "Visual Stacked Bar Graph Test"
14
+ g.labels = {
15
+ 0 => '5/6',
16
+ 1 => '5/15',
17
+ 2 => '5/24',
18
+ 3 => '5/30',
19
+ }
20
+ @datasets.each do |data|
21
+ g.data(data[0], data[1])
22
+ end
23
+
24
+ g.theme_rails_keynote
25
+
26
+ g.write 'gruff_stacked_bar_2.jpg'
@@ -0,0 +1,9 @@
1
+ require File.join(File.dirname(__FILE__), 'new_image.rb')
2
+
3
+ include Magick
4
+
5
+ hatch = HatchFill.new('black', 'white', 20)
6
+
7
+ img = Image.new(300, 300, hatch)
8
+
9
+ img.write('hatch_fill.jpg')
@@ -0,0 +1,15 @@
1
+ require File.join(File.dirname(__FILE__), 'new_image.rb')
2
+
3
+ include Magick
4
+
5
+ a = Image.new 200, 200, HatchFill.new('transparent', 'orange')
6
+ b = Image.new 100, 100, HatchFill.new('transparent', 'green', 7)
7
+ c = Image.new 300, 300, GradientFill.new(150, 150, 150, 150, 'orange', 'black')
8
+
9
+ list = ImageList.new
10
+
11
+ list << c
12
+ list << b
13
+ list << a
14
+
15
+ list.flatten_images.write('image_list_flatten_images.jpg')
@@ -0,0 +1,24 @@
1
+ if PLATFORM == 'java'
2
+ require File.join(File.dirname(__FILE__), '..', '..', '..','lib','RMagick')
3
+ else
4
+ require "rubygems"
5
+ require "RMagick"
6
+ end
7
+
8
+ class Magick::Image
9
+ alias_method :old_write, :write
10
+
11
+ def self.load(filename, &add)
12
+ file = File.join(File.expand_path(File.dirname(__FILE__)), '..', '..', 'images', filename)
13
+ self.read file, &add
14
+ end
15
+
16
+ def write(filename)
17
+ engine = (PLATFORM == 'java' ? 'jruby' : 'mri')
18
+ new_filename = filename.sub(/(\.[^\.]*)$/, '.' + engine + '\1')
19
+ change_geometry('300x300') do |columns, rows, image|
20
+ image.resize!(columns, rows)
21
+ end
22
+ old_write File.join(ARGV[0],new_filename)
23
+ end
24
+ end
@@ -0,0 +1,16 @@
1
+ require File.join(File.dirname(__FILE__), 'new_image.rb')
2
+
3
+ include Magick
4
+
5
+ draw = Draw.new
6
+
7
+ draw.fill 'red'
8
+ draw.stroke 'blue'
9
+ draw.stroke_width(5)
10
+ draw.path 'M150,150 h-140 a140,100 45 1,0 140,-140'
11
+
12
+ b = Image.new(300, 300, HatchFill.new('white', 'black'))
13
+
14
+ draw.draw(b)
15
+
16
+ b.write('path_a_command_01.jpg')
@@ -0,0 +1,19 @@
1
+ require File.join(File.dirname(__FILE__), 'new_image.rb')
2
+
3
+ include Magick
4
+
5
+ draw = Draw.new
6
+
7
+ draw.fill 'red'
8
+ draw.stroke 'blue'
9
+ draw.stroke_width(5)
10
+ draw.path 'M0,250 l 50,-25
11
+ a25,50 -30 0,1 50,-25 l 50,-25
12
+ a25,75 -30 0,1 50,-25 l 50,-25
13
+ a25,100 -30 0,1 50,-25 l 50,-25'
14
+
15
+ b = Image.new(300, 300, HatchFill.new('white', 'black'))
16
+
17
+ draw.draw(b)
18
+
19
+ b.write('path_a_command_02.jpg')
@@ -0,0 +1,16 @@
1
+ require File.join(File.dirname(__FILE__), 'new_image.rb')
2
+
3
+ include Magick
4
+
5
+ draw = Draw.new
6
+
7
+ draw.fill 'red'
8
+ draw.stroke 'blue'
9
+ draw.stroke_width(5)
10
+ draw.path 'M100,200 C100,100 250,100 250,200'
11
+
12
+ b = Image.new(300, 300, HatchFill.new('white', 'black'))
13
+
14
+ draw.draw(b)
15
+
16
+ b.write('path_c_command_01.jpg')
@@ -0,0 +1,16 @@
1
+ require File.join(File.dirname(__FILE__), 'new_image.rb')
2
+
3
+ include Magick
4
+
5
+ draw = Draw.new
6
+
7
+ draw.fill 'red'
8
+ draw.stroke 'blue'
9
+ draw.stroke_width(5)
10
+ draw.path 'M50,150 c0,-150 200,150 200,0'
11
+
12
+ b = Image.new(300, 300, HatchFill.new('white', 'black'))
13
+
14
+ draw.draw(b)
15
+
16
+ b.write('path_c_command_02.jpg')
@@ -0,0 +1,16 @@
1
+ require File.join(File.dirname(__FILE__), 'new_image.rb')
2
+
3
+ include Magick
4
+
5
+ draw = Draw.new
6
+
7
+ draw.fill 'GREENYELLOW'
8
+ draw.stroke 'DarkBlue'
9
+ draw.stroke_width(5)
10
+ draw.path 'M150 150 200 200v25C225 225 250 250 200 250S150 275 200 275H100Z'
11
+
12
+ b = Image.new(300, 300, HatchFill.new('white', 'black'))
13
+
14
+ draw.draw(b)
15
+
16
+ b.write('path_complex_01.jpg')
@@ -0,0 +1,28 @@
1
+ require File.join(File.dirname(__FILE__), 'new_image.rb')
2
+
3
+ include Magick
4
+
5
+ draw = Draw.new
6
+
7
+ draw.fill 'red'
8
+ draw.stroke 'blue'
9
+ draw.stroke_width(5)
10
+ draw.path 'M153 334
11
+ C153 334 151 334 151 334
12
+ C151 339 153 344 156 344
13
+ C164 344 171 339 171 334
14
+ C171 322 164 314 156 314
15
+ C142 314 131 322 131 334
16
+ C131 350 142 364 156 364
17
+ C175 364 191 350 191 334
18
+ C191 311 175 294 156 294
19
+ C131 294 111 311 111 334
20
+ C111 361 131 384 156 384
21
+ C186 384 211 361 211 334
22
+ C211 300 186 274 156 274'
23
+
24
+ b = Image.new(500, 500, HatchFill.new('white', 'black'))
25
+
26
+ draw.draw(b)
27
+
28
+ b.write('path_espiral_01.jpg')
@@ -0,0 +1,16 @@
1
+ require File.join(File.dirname(__FILE__), 'new_image.rb')
2
+
3
+ include Magick
4
+
5
+ draw = Draw.new
6
+
7
+ draw.fill 'red'
8
+ draw.stroke 'blue'
9
+ draw.stroke_width(5)
10
+ draw.path 'M50 50 L100 100 0 100M190 190H290V290h-100 100'
11
+
12
+ b = Image.new(300, 300, HatchFill.new('white', 'black'))
13
+
14
+ draw.draw(b)
15
+
16
+ b.write('path_h_command_01.jpg')
@@ -0,0 +1,16 @@
1
+ require File.join(File.dirname(__FILE__), 'new_image.rb')
2
+
3
+ include Magick
4
+
5
+ draw = Draw.new
6
+
7
+ draw.fill 'red'
8
+ draw.stroke 'blue'
9
+ draw.stroke_width(5)
10
+ draw.path 'M50,50 L100,100 0,100M190,190h100v100h-100v-100'
11
+
12
+ b = Image.new(300, 300, HatchFill.new('white', 'black'))
13
+
14
+ draw.draw(b)
15
+
16
+ b.write('path_h_command_02.jpg')
@@ -0,0 +1,16 @@
1
+ require File.join(File.dirname(__FILE__), 'new_image.rb')
2
+
3
+ include Magick
4
+
5
+ draw = Draw.new
6
+
7
+ draw.fill 'red'
8
+ draw.stroke 'blue'
9
+ draw.stroke_width(5)
10
+ draw.path 'M50,50 L100,100 0,100M190,190L290,190L290,290 190,290'
11
+
12
+ b = Image.new(300, 300, HatchFill.new('white', 'black'))
13
+
14
+ draw.draw(b)
15
+
16
+ b.write('path_l_command_01.jpg')
@@ -0,0 +1,16 @@
1
+ require File.join(File.dirname(__FILE__), 'new_image.rb')
2
+
3
+ include Magick
4
+
5
+ draw = Draw.new
6
+
7
+ draw.fill 'red'
8
+ draw.stroke 'blue'
9
+ draw.stroke_width(5)
10
+ draw.path 'M50 50 L100 100 0 100M190 190l100 0 0 100 -100 0'
11
+
12
+ b = Image.new(300, 300, HatchFill.new('white', 'black'))
13
+
14
+ draw.draw(b)
15
+
16
+ b.write('path_l_command_02.jpg')
@@ -0,0 +1,16 @@
1
+ require File.join(File.dirname(__FILE__), 'new_image.rb')
2
+
3
+ include Magick
4
+
5
+ draw = Draw.new
6
+
7
+ draw.fill 'red'
8
+ draw.stroke 'blue'
9
+ draw.stroke_width(5)
10
+ draw.path 'M150 150 200 200 100 200'
11
+
12
+ b = Image.new(300, 300, HatchFill.new('white', 'black'))
13
+
14
+ draw.draw(b)
15
+
16
+ b.write('path_m_command_01.jpg')
@@ -0,0 +1,16 @@
1
+ require File.join(File.dirname(__FILE__), 'new_image.rb')
2
+
3
+ include Magick
4
+
5
+ draw = Draw.new
6
+
7
+ draw.fill 'red'
8
+ draw.stroke 'blue'
9
+ draw.stroke_width(5)
10
+ draw.path 'M50 50 100 100 0 100M190 190 290 190 290 290 190 290'
11
+
12
+ b = Image.new(300, 300, HatchFill.new('white', 'black'))
13
+
14
+ draw.draw(b)
15
+
16
+ b.write('path_m_command_02.jpg')
@@ -0,0 +1,16 @@
1
+ require File.join(File.dirname(__FILE__), 'new_image.rb')
2
+
3
+ include Magick
4
+
5
+ draw = Draw.new
6
+
7
+ draw.fill 'red'
8
+ draw.stroke 'blue'
9
+ draw.stroke_width(5)
10
+ draw.path 'M50 50 100 100 0 100m190 90 100 0 0 100 -100 0'
11
+
12
+ b = Image.new(300, 300, HatchFill.new('white', 'black'))
13
+
14
+ draw.draw(b)
15
+
16
+ b.write('path_m_command_03.jpg')
@@ -0,0 +1,16 @@
1
+ require File.join(File.dirname(__FILE__), 'new_image.rb')
2
+
3
+ include Magick
4
+
5
+ draw = Draw.new
6
+
7
+ draw.fill 'red'
8
+ draw.stroke 'blue'
9
+ draw.stroke_width(5)
10
+ draw.path 'M0,150 Q75,0 150,150 225,300 300,150'
11
+
12
+ b = Image.new(300, 300, HatchFill.new('white', 'black'))
13
+
14
+ draw.draw(b)
15
+
16
+ b.write('path_q_command_01.jpg')
@@ -0,0 +1,16 @@
1
+ require File.join(File.dirname(__FILE__), 'new_image.rb')
2
+
3
+ include Magick
4
+
5
+ draw = Draw.new
6
+
7
+ draw.fill 'red'
8
+ draw.stroke 'blue'
9
+ draw.stroke_width(5)
10
+ draw.path 'M75,150Q150,0 225,150 150,300 75,150M125,150C125,125 175,125 175,150S125,175 125,150'
11
+
12
+ b = Image.new(300, 300, HatchFill.new('white', 'black'))
13
+
14
+ draw.draw(b)
15
+
16
+ b.write('path_q_command_02.jpg')
@@ -0,0 +1,25 @@
1
+ require File.join(File.dirname(__FILE__), 'new_image.rb')
2
+
3
+ include Magick
4
+
5
+ draw = Draw.new
6
+
7
+ draw.pattern('green', 0, 0, 16, 16) do
8
+ draw.stroke('none')
9
+ draw.fill('DarkBlue')
10
+ draw.rectangle(0,0, 16,16)
11
+ draw.fill('yellow')
12
+ draw.stroke('red')
13
+ draw.polygon(0,0, 8,16, 16,0, 0,0)
14
+ end
15
+
16
+ draw.fill 'green'
17
+ draw.stroke 'blue'
18
+ draw.stroke_width(5)
19
+ draw.path 'M50,50 Q-30,100 50,150 100,230 150,150 230,100 150,50 100,-30 50,50'
20
+
21
+ b = Image.new(300, 300, HatchFill.new('white', 'black'))
22
+
23
+ draw.draw(b)
24
+
25
+ b.write('path_q_command_03.jpg')
@@ -0,0 +1,16 @@
1
+ require File.join(File.dirname(__FILE__), 'new_image.rb')
2
+
3
+ include Magick
4
+
5
+ draw = Draw.new
6
+
7
+ draw.fill 'red'
8
+ draw.stroke 'blue'
9
+ draw.stroke_width(5)
10
+ draw.path 'M0,150 C0,0 100,0 100,150S200,300 200,150s100,-150 100,0'
11
+
12
+ b = Image.new(300, 300, HatchFill.new('white', 'black'))
13
+
14
+ draw.draw(b)
15
+
16
+ b.write('path_s_command_01.jpg')