rmagick 1.7.4 → 1.8.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 (130) hide show
  1. data/ChangeLog +10 -2
  2. data/README.html +284 -290
  3. data/README.txt +298 -307
  4. data/configure +180 -11
  5. data/configure.ac +18 -2
  6. data/doc/comtasks.html +1 -1
  7. data/doc/constants.html +15 -10
  8. data/doc/css/ref.css +67 -0
  9. data/doc/draw.html +1 -1
  10. data/doc/ex/InitialCoords.rb +24 -0
  11. data/doc/ex/NewCoordSys.rb +33 -0
  12. data/doc/ex/OrigCoordSys.rb +19 -0
  13. data/doc/ex/PreserveAspectRatio.rb +206 -0
  14. data/doc/ex/RotateScale.rb +38 -0
  15. data/doc/ex/Skew.rb +39 -0
  16. data/doc/ex/Use01.rb +17 -0
  17. data/doc/ex/Use02.rb +22 -0
  18. data/doc/ex/Use03.rb +17 -0
  19. data/doc/ex/ViewBox.rb +34 -0
  20. data/doc/ex/arcs01.rb +29 -0
  21. data/doc/ex/arcs02.rb +62 -0
  22. data/doc/ex/baseline_shift01.rb +19 -0
  23. data/doc/ex/bounding_box.rb +31 -37
  24. data/doc/ex/circle01.rb +18 -0
  25. data/doc/ex/cubic01.rb +46 -0
  26. data/doc/ex/cubic02.rb +95 -0
  27. data/doc/ex/drop_shadow.rb +1 -1
  28. data/doc/ex/ellipse01.rb +23 -0
  29. data/doc/ex/evenodd.rb +44 -0
  30. data/doc/ex/font_styles.rb +29 -0
  31. data/doc/ex/group.rb +27 -0
  32. data/doc/ex/image.rb +47 -0
  33. data/doc/ex/images/big-duck.gif +0 -0
  34. data/doc/ex/images/duck.gif +0 -0
  35. data/doc/ex/images/duck0.gif +0 -0
  36. data/doc/ex/images/duck1.gif +0 -0
  37. data/doc/ex/images/duck10.gif +0 -0
  38. data/doc/ex/images/duck11.gif +0 -0
  39. data/doc/ex/images/duck12.gif +0 -0
  40. data/doc/ex/images/duck13.gif +0 -0
  41. data/doc/ex/images/duck14.gif +0 -0
  42. data/doc/ex/images/duck15.gif +0 -0
  43. data/doc/ex/images/duck2.gif +0 -0
  44. data/doc/ex/images/duck3.gif +0 -0
  45. data/doc/ex/images/duck4.gif +0 -0
  46. data/doc/ex/images/duck5.gif +0 -0
  47. data/doc/ex/images/duck6.gif +0 -0
  48. data/doc/ex/images/duck7.gif +0 -0
  49. data/doc/ex/images/duck8.gif +0 -0
  50. data/doc/ex/images/duck9.gif +0 -0
  51. data/doc/ex/line01.rb +24 -0
  52. data/doc/ex/nested_rvg.rb +22 -0
  53. data/doc/ex/nonzero.rb +44 -0
  54. data/doc/ex/polygon01.rb +24 -0
  55. data/doc/ex/polyline01.rb +24 -0
  56. data/doc/ex/quad01.rb +37 -0
  57. data/doc/ex/rect01.rb +16 -0
  58. data/doc/ex/rect02.rb +23 -0
  59. data/doc/ex/rvg_clippath.rb +15 -0
  60. data/doc/ex/rvg_linecap.rb +44 -0
  61. data/doc/ex/rvg_linejoin.rb +42 -0
  62. data/doc/ex/rvg_opacity.rb +20 -0
  63. data/doc/ex/rvg_pattern.rb +27 -0
  64. data/doc/ex/rvg_stroke_dasharray.rb +13 -0
  65. data/doc/ex/sepiatone.rb +15 -0
  66. data/doc/ex/shadow.rb +37 -0
  67. data/doc/ex/smile.rb +9 -9
  68. data/doc/ex/stroke_fill.rb +12 -0
  69. data/doc/ex/text01.rb +18 -0
  70. data/doc/ex/text_styles.rb +22 -0
  71. data/doc/ex/texture_fill_to_border.rb +3 -3
  72. data/doc/ex/texture_floodfill.rb +3 -2
  73. data/doc/ex/tref01.rb +26 -0
  74. data/doc/ex/triangle01.rb +17 -0
  75. data/doc/ex/tspan01.rb +19 -0
  76. data/doc/ex/tspan02.rb +20 -0
  77. data/doc/ex/tspan03.rb +22 -0
  78. data/doc/ex/writing_mode01.rb +28 -0
  79. data/doc/ex/writing_mode02.rb +27 -0
  80. data/doc/ilist.html +1 -1
  81. data/doc/image1.html +66 -30
  82. data/doc/image2.html +1 -1
  83. data/doc/image3.html +274 -49
  84. data/doc/imageattrs.html +87 -10
  85. data/doc/imusage.html +1 -1
  86. data/doc/index.html +80 -39
  87. data/doc/info.html +149 -13
  88. data/doc/magick.html +1 -1
  89. data/doc/rvg.html +890 -0
  90. data/doc/rvgclip.html +249 -0
  91. data/doc/rvggroup.html +305 -0
  92. data/doc/rvgimage.html +288 -0
  93. data/doc/rvgpattern.html +456 -0
  94. data/doc/rvgshape.html +376 -0
  95. data/doc/rvgstyle.html +269 -0
  96. data/doc/rvgtext.html +464 -0
  97. data/doc/rvgtspan.html +237 -0
  98. data/doc/rvgtut.html +512 -0
  99. data/doc/rvguse.html +145 -0
  100. data/doc/rvgxform.html +294 -0
  101. data/doc/struct.html +9 -71
  102. data/doc/usage.html +22 -7
  103. data/ext/RMagick/MANIFEST +94 -2
  104. data/ext/RMagick/rmagick.h +10 -4
  105. data/ext/RMagick/rmagick_config.h.in +8 -2
  106. data/ext/RMagick/rmdraw.c +2 -2
  107. data/ext/RMagick/rmfill.c +2 -2
  108. data/ext/RMagick/rmilist.c +3 -3
  109. data/ext/RMagick/rmimage.c +152 -5
  110. data/ext/RMagick/rminfo.c +208 -2
  111. data/ext/RMagick/rmmain.c +14 -5
  112. data/ext/RMagick/rmutil.c +83 -22
  113. data/lib/RMagick.rb +2 -2
  114. data/lib/rvg/clippath.rb +46 -0
  115. data/lib/rvg/container.rb +129 -0
  116. data/lib/rvg/deep_equal.rb +54 -0
  117. data/lib/rvg/describable.rb +51 -0
  118. data/lib/rvg/embellishable.rb +395 -0
  119. data/lib/rvg/misc.rb +729 -0
  120. data/lib/rvg/paint.rb +48 -0
  121. data/lib/rvg/pathdata.rb +129 -0
  122. data/lib/rvg/rvg.rb +279 -0
  123. data/lib/rvg/stretchable.rb +150 -0
  124. data/lib/rvg/stylable.rb +116 -0
  125. data/lib/rvg/text.rb +185 -0
  126. data/lib/rvg/transformable.rb +131 -0
  127. data/lib/rvg/units.rb +64 -0
  128. data/rmagick.gemspec +1 -1
  129. data/uninstall.rb +3 -2
  130. metadata +96 -3
@@ -0,0 +1,27 @@
1
+ require 'rvg/rvg'
2
+ include Magick
3
+
4
+ RVG.dpi = 90
5
+
6
+ rvg = RVG.new(6.cm, 4.cm).viewbox(0,0,600,400) do |canvas|
7
+ canvas.background_fill = 'white'
8
+ canvas.rect(595,395,1,1).styles(:stroke=>'blue', :fill=>'none', :stroke_width=>2)
9
+
10
+ # Define a stick figure.
11
+ stick = RVG::Group.new.styles(:stroke=>'black', :fill=>'none', :stroke_width=>6) do |fig|
12
+ fig.circle(42, 50, 50).styles(:stroke=>'red')
13
+ fig.polyline(30,40, 50,40, 45,60, 50,40, 65,40).styles(:stroke_width=>4)
14
+ fig.polyline(10,100, 50,130, 90,100)
15
+ fig.line(50,97, 50, 155)
16
+ fig.polyline(10,200, 50,155, 90,200)
17
+ end
18
+
19
+ # Draw 12 copies.
20
+ 2.times {|y|
21
+ 6.times {|x|
22
+ canvas.use(stick, x*100, y*200)
23
+ }
24
+ }
25
+ end
26
+
27
+ rvg.draw.write('group.gif')
@@ -0,0 +1,47 @@
1
+ require 'rvg/rvg'
2
+ include Magick
3
+
4
+ rvg = RVG.new(525, 270) do |canvas|
5
+ canvas.background_fill = 'white'
6
+ canvas.rect(524, 269).styles(:fill=>'none', :stroke=>'blue', :stroke_width=>1)
7
+
8
+ hat = ::Magick::Image.read('images/Flower_Hat.jpg').first
9
+
10
+ canvas.image(hat, 100, 75, 25, 40).preserve_aspect_ratio('none')
11
+ canvas.rect(100, 75, 25, 40).styles(:fill => 'none', :stroke => 'blue')
12
+
13
+ canvas.image(hat, 100, 75, 150, 40).preserve_aspect_ratio('xMinYMin', 'meet')
14
+ canvas.rect(100, 75, 150, 40).styles(:fill => 'none', :stroke => 'blue')
15
+
16
+ canvas.image(hat, 100, 75, 275, 40).preserve_aspect_ratio('xMidYMid', 'meet')
17
+ canvas.rect(100, 75, 275, 40).styles(:fill => 'none', :stroke => 'blue')
18
+
19
+ canvas.image(hat, 100, 75, 400, 40).preserve_aspect_ratio('xMaxYMax', 'meet')
20
+ canvas.rect(100, 75, 400, 40).styles(:fill => 'none', :stroke => 'blue')
21
+
22
+ canvas.image(hat, 100, 75, 150, 155).preserve_aspect_ratio('xMinYMin', 'slice')
23
+ canvas.rect(100, 75, 150, 155).styles(:fill => 'none', :stroke => 'blue')
24
+
25
+ canvas.image(hat, 100, 75, 275, 155).preserve_aspect_ratio('xMidYMid', 'slice')
26
+ canvas.rect(100, 75, 275, 155).styles(:fill => 'none', :stroke => 'blue')
27
+
28
+ canvas.image(hat, 100, 75, 400, 155).preserve_aspect_ratio('xMaxYMax', 'slice')
29
+ canvas.rect(100, 75, 400, 155).styles(:fill => 'none', :stroke => 'blue')
30
+
31
+ canvas.line(150, 20, 305, 20)
32
+ canvas.line(345, 20, 500, 20)
33
+ canvas.line(150, 250, 305, 250)
34
+ canvas.line(340, 250, 500, 250)
35
+ canvas.g.styles(:stroke=>'none') do |t|
36
+ t.text(310, 23, 'meet')
37
+ t.text(60, 140, 'none')
38
+ t.text(170, 140, 'xMinYMin')
39
+ t.text(300, 140, 'xMidYMid')
40
+ t.text(425, 140, 'xMaxYMax')
41
+ t.text(310, 253, 'slice')
42
+ end
43
+
44
+ end
45
+
46
+ rvg.draw.write('image.gif')
47
+
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,24 @@
1
+ require 'rvg/rvg'
2
+ include Magick
3
+
4
+ RVG.dpi = 90
5
+
6
+ rvg = RVG.new(12.cm, 4.cm).viewbox(0, 0, 1200, 400) do |canvas|
7
+ canvas.background_fill = 'white'
8
+ canvas.desc = "Example line01 - lines expressed in user coordinates"
9
+
10
+ # Show outline of canvas using the 'rect' method
11
+ canvas.rect(1195, 395, 1, 1).styles(:fill=>'none', :stroke=>'blue', :stroke_width=>2)
12
+
13
+ canvas.g.styles(:stroke=>'green') do |grp|
14
+ grp.line(100, 300, 300, 100).styles(:stroke_width=>5)
15
+ grp.line(300, 300, 500, 100).styles(:stroke_width=>10)
16
+ grp.line(500, 300, 700, 100).styles(:stroke_width=>15)
17
+ grp.line(700, 300, 900, 100).styles(:stroke_width=>20)
18
+ grp.line(900, 300, 1100, 100).styles(:stroke_width=>25)
19
+ end
20
+
21
+ end
22
+
23
+ rvg.draw.write('line01.gif')
24
+
@@ -0,0 +1,22 @@
1
+ #! /usr/local/bin/ruby -w
2
+
3
+ require 'rvg/rvg'
4
+ include Magick
5
+
6
+ target = RVG.new.viewbox(0,0,200,200) do |targ|
7
+ targ.g.styles(:stroke_width=>20, :stroke=>'#ff5600', :fill=>'#abd600') do |grp|
8
+ grp.circle(90, 100, 100)
9
+ grp.circle(60, 100, 100)
10
+ grp.circle(30, 100, 100)
11
+ end
12
+ end
13
+
14
+ rvg = RVG.new(258, 100) do |canvas|
15
+ canvas.background_fill = '#51396b'
16
+ canvas.use(target, 0, 0, 100, 100)
17
+ canvas.use(target, 100, 16.6667, 66.7, 66.7)
18
+ canvas.use(target, 166.6667, 25, 50, 50)
19
+ canvas.use(target, 216.6667, 30, 40, 40)
20
+ end
21
+
22
+ rvg.draw.write('nested_rvg.gif')
@@ -0,0 +1,44 @@
1
+ #! /usr/local/bin/ruby -w
2
+ require 'rvg/rvg'
3
+ include Magick
4
+
5
+ RVG.dpi = 90
6
+
7
+ rvg = RVG.new(12.cm, 4.cm).viewbox(0, 0, 1200, 400) do |canvas|
8
+ canvas.background_fill = 'white'
9
+ canvas.desc = "Example fillrule - nonzero - demonstrates fill_rule=>'nonzero'"
10
+
11
+ canvas.rect(1195, 393, 1, 1).styles(:fill=>'none', :stroke=>'blue')
12
+
13
+ triangle = RVG::Group.new do |defs|
14
+ defs.path("M 16,0 L -8,9 v-18 z").styles(:fill=>'black', :stroke=>'none')
15
+ end
16
+
17
+ canvas.g.styles(:fill_rule=>'nonzero', :fill=>'red', :stroke=>'black', :stroke_width=>3) do |grp|
18
+ grp.path("M 250,75 L 323,301 131,161 369,161 177,301 z")
19
+ grp.use(triangle).translate(306.21, 249).rotate(72)
20
+ grp.use(triangle).translate(175.16,193.2).rotate(216)
21
+ grp.use(triangle).translate(314.26,161).rotate(0)
22
+ grp.use(triangle).translate(221.16,268.8).rotate(144)
23
+ grp.use(triangle).translate(233.21,126.98).rotate(288)
24
+ grp.path("M 600,81 A 107,107 0 0,1 600,295 A 107,107 0 0,1 600,81 z" +
25
+ "M 600,139 A 49,49 0 0,1 600,237 A 49,49 0 0,1 600,139 z")
26
+ grp.use(triangle).translate(600,188).rotate(0).translate(107,0).rotate(90)
27
+ grp.use(triangle).translate(600,188).rotate(120).translate(107,0).rotate(90)
28
+ grp.use(triangle).translate(600,188).rotate(240).translate(107,0).rotate(90)
29
+ grp.use(triangle).translate(600,188).rotate(60).translate(49,0).rotate(90)
30
+ grp.use(triangle).translate(600,188).rotate(180).translate(49,0).rotate(90)
31
+ grp.use(triangle).translate(600,188).rotate(300).translate(49,0).rotate(90)
32
+ grp.path("M 950,81 A 107,107 0 0,1 950,295 A 107,107 0 0,1 950,81 z" +
33
+ "M 950,139 A 49,49 0 0,0 950,237 A 49,49 0 0,0 950,139 z")
34
+ grp.use(triangle).translate(950,188).rotate(0).translate(107,0).rotate(90)
35
+ grp.use(triangle).translate(950,188).rotate(120).translate(107,0).rotate(90)
36
+ grp.use(triangle).translate(950,188).rotate(240).translate(107,0).rotate(90)
37
+ grp.use(triangle).translate(950,188).rotate(60).translate(49,0).rotate(-90)
38
+ grp.use(triangle).translate(950,188).rotate(180).translate(49,0).rotate(-90)
39
+ grp.use(triangle).translate(950,188).rotate(300).translate(49,0).rotate(-90)
40
+ end
41
+ end
42
+
43
+ rvg.draw.write('nonzero.gif')
44
+
@@ -0,0 +1,24 @@
1
+ require 'rvg/rvg'
2
+ include Magick
3
+
4
+ RVG.dpi = 90
5
+
6
+ rvg = RVG.new(12.cm, 4.cm).viewbox(0, 0, 1200, 400) do |canvas|
7
+ canvas.background_fill = 'white'
8
+ canvas.desc = "Example polygon01 - star and hexagon"
9
+
10
+ # Show outline of canvas using the 'rect' method
11
+ canvas.rect(1195, 395, 1, 1).styles(:fill=>'none', :stroke=>'blue', :stroke_width=>2)
12
+
13
+ canvas.polygon(350,75,379,161,469,161,397,215,
14
+ 423,301,350,250,277,301,303,215,
15
+ 231,161,321,161).styles(:fill=>'red', :stroke=>'blue', :stroke_width=>10)
16
+
17
+ canvas.polygon(850,75,958,137.5,958,262.5,
18
+ 850,325,742,262.6,742,137.5).
19
+ styles(:fill=>'lime', :stroke=>'blue', :stroke_width=>10)
20
+
21
+ end
22
+
23
+ rvg.draw.write('polygon01.gif')
24
+
@@ -0,0 +1,24 @@
1
+ require 'rvg/rvg'
2
+ include Magick
3
+
4
+ RVG.dpi = 90
5
+
6
+ rvg = RVG.new(12.cm, 4.cm).viewbox(0, 0, 1200, 400) do |canvas|
7
+ canvas.background_fill = 'white'
8
+ canvas.desc = "Example polyline01 - increasingly larger bars"
9
+
10
+ # Show outline of canvas using the 'rect' method
11
+ canvas.rect(1195, 395, 1, 1).styles(:fill=>'none', :stroke=>'blue', :stroke_width=>2)
12
+
13
+ canvas.polyline(50,375,
14
+ 150,375,150,325,250,325,250,375,
15
+ 350,375,350,250,450,250,450,375,
16
+ 550,375,550,175,650,175,650,375,
17
+ 750,375,750,100,850,100,850,375,
18
+ 950,375,950,25,1050,25,1050,375,
19
+ 1150,375).styles(:fill=>'none', :stroke=>'blue', :stroke_width=>10)
20
+
21
+ end
22
+
23
+ rvg.draw.write('polyline01.gif')
24
+
@@ -0,0 +1,37 @@
1
+ require 'rvg/rvg'
2
+ include Magick
3
+
4
+ RVG.dpi = 90
5
+
6
+ rvg = RVG.new(12.cm, 6.cm).viewbox(0, 0, 1200, 600) do |canvas|
7
+ canvas.title = "Example quad01 - quadratic Bezier commands in path data"
8
+ canvas.desc = <<-END_DESC
9
+ Picture showing a "Q" a "T" command, along with annotations showing the
10
+ control points and end points
11
+ END_DESC
12
+ canvas.background_fill = 'white'
13
+ canvas.rect(1195, 592, 1, 1).styles(:fill=>'none', :stroke=>'blue', :stroke_width=>1)
14
+
15
+ canvas.path("M200,300 Q400,50 600,300 T1000,300").
16
+ styles(:fill=>'none', :stroke=>'red', :stroke_width=>5)
17
+
18
+ # End points
19
+ canvas.g.styles(:fill=>'black') do |grp|
20
+ grp.circle(10, 200, 300)
21
+ grp.circle(10, 600, 300)
22
+ grp.circle(10, 1000, 300)
23
+ end
24
+
25
+ # Control points and lines from end points to control points
26
+ canvas.g.styles(:fill=>'#888') do |grp|
27
+ grp.circle(10, 400, 50)
28
+ grp.circle(10, 800, 550)
29
+ end
30
+
31
+ canvas.path("M200,300 L400,50 L600,300 L800,550 L1000,300").
32
+ styles(:fill=>'none', :stroke=>'#888', :stroke_width=>2)
33
+
34
+ end
35
+
36
+ rvg.draw.write('quad01.gif')
37
+
@@ -0,0 +1,16 @@
1
+ require 'rvg/rvg'
2
+ include Magick
3
+
4
+ RVG.dpi = 90
5
+ rvg = RVG.new(12.cm, 4.cm) do |canvas|
6
+ canvas.viewbox(0, 0, 1200, 400)
7
+ canvas.background_fill = 'white'
8
+ canvas.desc = "Example rect01 - rectangle with sharp corners"
9
+ # Show outline of canvas using 'rect' element
10
+ canvas.rect(1195, 395, 1, 1).styles(:fill=>'none', :stroke=>'blue', :stroke_width=>2)
11
+
12
+ canvas.rect(400, 200, 400, 100).styles(:fill=>'yellow', :stroke=>'navy', :stroke_width=>10)
13
+ end
14
+
15
+ rvg.draw.write('rect01.gif')
16
+
@@ -0,0 +1,23 @@
1
+ require 'rvg/rvg'
2
+ include Magick
3
+
4
+ RVG.dpi = 90
5
+
6
+ rvg = RVG.new(12.cm, 4.cm) do |canvas|
7
+ canvas.viewbox(0, 0, 1200, 400)
8
+ canvas.background_fill = 'white'
9
+ canvas.desc = "Example rect02 - rounded rectangles"
10
+
11
+ # Show outline of canvas using 'rect' method
12
+ canvas.rect(1195, 395, 1, 1).styles(:fill=>'none', :stroke=>'blue', :stroke_width=>2)
13
+
14
+ canvas.rect(400, 200, 100, 100).round(50).styles(:fill=>'green')
15
+
16
+ canvas.g.translate(700, 210).rotate(-30) do |grp|
17
+ grp.rect(400, 200, 0, 0).round(50).styles(:fill=>'none', :stroke=>'purple', :stroke_width=>30)
18
+ end
19
+
20
+ end
21
+
22
+ rvg.draw.write('rect02.gif')
23
+
@@ -0,0 +1,15 @@
1
+ require 'rvg/rvg'
2
+ include Magick
3
+
4
+ hat = Image.read('images/Flower_Hat.jpg').first
5
+ rvg = RVG.new(hat.columns, hat.rows) do |canvas|
6
+ keyhole = RVG::ClipPath.new do |path|
7
+ path.circle(60, canvas.width/2, 80)
8
+ path.polygon(canvas.width/2-10, 60, 40, 230, 160, 230, canvas.width/2+10, 60)
9
+ end
10
+ canvas.image(hat, nil, nil, 20, 20).styles(:clip_path=>keyhole)
11
+
12
+ end
13
+
14
+ rvg.draw.write('rvg_clippath.gif')
15
+
@@ -0,0 +1,44 @@
1
+ #! /usr/local/bin/ruby -w
2
+ require 'rvg/rvg'
3
+ include Magick
4
+
5
+ RVG.dpi = 90
6
+
7
+ BUTT = {:stroke=>'black', :stroke_width=>70, :stroke_linecap=>'butt'}
8
+ ROUND = {:stroke=>'black', :stroke_width=>70, :stroke_linecap=>'round'}
9
+ SQUARE = {:stroke=>'black', :stroke_width=>70, :stroke_linecap=>'square'}
10
+ THIN = {:stroke=>'#ffcccc', :stroke_width=>5}
11
+ TEXT = {:text_anchor=>'middle', :font_size=>50, :font_family=>'Verdana'}
12
+ CIRCLE = {:fill=>'#ffcccc', :stroke=>'none'}
13
+
14
+ rvg = RVG.new(12.cm, 2.cm).viewbox(0, 0, 1200, 200) do |canvas|
15
+ canvas.background_fill = 'white'
16
+ canvas.desc = "Example linecap - demonstrates three stroke-linecap values"
17
+
18
+ canvas.g.translate(200, 75) do |butt|
19
+ butt.line(-125, 0, 125, 0).styles(BUTT)
20
+ butt.line(-125, 0, 125, 0).styles(THIN)
21
+ butt.circle(8, -125, 0).styles(CIRCLE)
22
+ butt.circle(8, 125, 0).styles(CIRCLE)
23
+ butt.text(0, 90, "'butt' cap").styles(TEXT)
24
+ end
25
+ canvas.g.translate(600, 75) do |round|
26
+ round.line(-125, 0, 125, 0).styles(ROUND)
27
+ round.line(-125, 0, 125, 0).styles(THIN)
28
+ round.circle(8, -125, 0).styles(CIRCLE)
29
+ round.circle(8, 125, 0).styles(CIRCLE)
30
+ round.text(0, 90, "'round' cap").styles(TEXT)
31
+ end
32
+
33
+ canvas.g.translate(1000, 75) do |square|
34
+ square.line(-125, 0, 125, 0).styles(SQUARE)
35
+ square.line(-125, 0, 125, 0).styles(THIN)
36
+ square.circle(8, -125, 0).styles(CIRCLE)
37
+ square.circle(8, 125, 0).styles(CIRCLE)
38
+ square.text(0, 90, "'square' cap").styles(TEXT)
39
+ end
40
+ canvas.rect(1192, 195, 1, 1).styles(:stroke=>'blue', :fill=>'none')
41
+ end
42
+
43
+ rvg.draw.write('rvg_linecap.gif')
44
+
@@ -0,0 +1,42 @@
1
+ require 'rvg/rvg'
2
+ include Magick
3
+
4
+ RVG.dpi = 90
5
+
6
+ MITER = {:stroke=>'black', :stroke_width=>70, :fill=>'none', :stroke_linejoin=>'miter'}
7
+ ROUND = {:stroke=>'black', :stroke_width=>70, :fill=>'none', :stroke_linejoin=>'round'}
8
+ BEVEL = {:stroke=>'black', :stroke_width=>70, :fill=>'none', :stroke_linejoin=>'bevel'}
9
+ THIN = {:stroke=>'#ffcccc', :stroke_width=>5, :fill=>'none'}
10
+ TEXT = {:text_anchor=>'middle', :font_size=>50, :font_family=>'Verdana'}
11
+ CIRCLE = {:fill=>'#ffcccc', :stroke=>'none'}
12
+
13
+ rvg = RVG.new(12.cm, 3.5.cm).viewbox(0, 0, 1200, 350) do |canvas|
14
+ canvas.desc = 'Example linecap - demonstrates three stroke-linecap values'
15
+ canvas.background_fill = 'white'
16
+
17
+ canvas.g.translate(200, 75) do |miter|
18
+ miter.path("M -125,150 L 0,0 L 125,150").styles(MITER)
19
+ miter.path("M -125,150 L 0,0 L 125,150").styles(THIN)
20
+ miter.circle(8).styles(CIRCLE)
21
+ miter.text(0, 230, "'miter' join").styles(TEXT)
22
+ end
23
+
24
+ canvas.g.translate(600, 75) do |round|
25
+ round.path("M -125,150 L 0,0 L 125,150").styles(ROUND)
26
+ round.path("M -125,150 L 0,0 L 125,150").styles(THIN)
27
+ round.circle(8).styles(CIRCLE)
28
+ round.text(0, 230, "'round' join").styles(TEXT)
29
+ end
30
+
31
+ canvas.g.translate(1000, 75) do |bevel|
32
+ bevel.path("M -125,150 L 0,0 L 125,150").styles(BEVEL)
33
+ bevel.path("M -125,150 L 0,0 L 125,150").styles(THIN)
34
+ bevel.circle(8).styles(CIRCLE)
35
+ bevel.text(0, 230, "'bevel' join").styles(TEXT)
36
+ end
37
+
38
+ canvas.rect(1192, 345, 1, 1).styles(:stroke=>'blue', :fill=>'none')
39
+ end
40
+
41
+ rvg.draw.write('rvg_linejoin.gif')
42
+
@@ -0,0 +1,20 @@
1
+ #! /usr/local/bin/ruby -w
2
+ require 'rvg/rvg'
3
+ include Magick
4
+
5
+ FONT_STYLES = {:font_size=>20, :font_weight=>'bold', :fill=>'white'}
6
+
7
+ rvg = RVG.new(450, 150) do |canvas|
8
+ canvas.background_fill = 'white'
9
+ canvas.rect(400, 50, 25, 50)
10
+ canvas.circle(40, 100, 75).styles(:opacity=>0.25, :stroke=>'blue', :fill=>'#00ff00',:stroke_width=>8)
11
+ canvas.text(83, 83, '0.25').styles(FONT_STYLES)
12
+ canvas.circle(40, 225, 75).styles(:opacity=>0.50, :stroke=>'blue', :fill=>'#00ff00',:stroke_width=>8)
13
+ canvas.text(208, 83, '0.50').styles(FONT_STYLES)
14
+ canvas.circle(40, 350, 75).styles(:opacity=>0.75, :stroke=>'blue', :fill=>'#00ff00',:stroke_width=>8)
15
+ canvas.text(333, 83, '0.75').styles(FONT_STYLES)
16
+ canvas.rect(449,149).styles(:fill=>'none',:stroke=>'blue')
17
+ end
18
+
19
+ rvg.draw.write('rvg_opacity.gif')
20
+