rmagick 1.7.4 → 1.8.0
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.
Potentially problematic release.
This version of rmagick might be problematic. Click here for more details.
- data/ChangeLog +10 -2
- data/README.html +284 -290
- data/README.txt +298 -307
- data/configure +180 -11
- data/configure.ac +18 -2
- data/doc/comtasks.html +1 -1
- data/doc/constants.html +15 -10
- data/doc/css/ref.css +67 -0
- data/doc/draw.html +1 -1
- data/doc/ex/InitialCoords.rb +24 -0
- data/doc/ex/NewCoordSys.rb +33 -0
- data/doc/ex/OrigCoordSys.rb +19 -0
- data/doc/ex/PreserveAspectRatio.rb +206 -0
- data/doc/ex/RotateScale.rb +38 -0
- data/doc/ex/Skew.rb +39 -0
- data/doc/ex/Use01.rb +17 -0
- data/doc/ex/Use02.rb +22 -0
- data/doc/ex/Use03.rb +17 -0
- data/doc/ex/ViewBox.rb +34 -0
- data/doc/ex/arcs01.rb +29 -0
- data/doc/ex/arcs02.rb +62 -0
- data/doc/ex/baseline_shift01.rb +19 -0
- data/doc/ex/bounding_box.rb +31 -37
- data/doc/ex/circle01.rb +18 -0
- data/doc/ex/cubic01.rb +46 -0
- data/doc/ex/cubic02.rb +95 -0
- data/doc/ex/drop_shadow.rb +1 -1
- data/doc/ex/ellipse01.rb +23 -0
- data/doc/ex/evenodd.rb +44 -0
- data/doc/ex/font_styles.rb +29 -0
- data/doc/ex/group.rb +27 -0
- data/doc/ex/image.rb +47 -0
- data/doc/ex/images/big-duck.gif +0 -0
- data/doc/ex/images/duck.gif +0 -0
- data/doc/ex/images/duck0.gif +0 -0
- data/doc/ex/images/duck1.gif +0 -0
- data/doc/ex/images/duck10.gif +0 -0
- data/doc/ex/images/duck11.gif +0 -0
- data/doc/ex/images/duck12.gif +0 -0
- data/doc/ex/images/duck13.gif +0 -0
- data/doc/ex/images/duck14.gif +0 -0
- data/doc/ex/images/duck15.gif +0 -0
- data/doc/ex/images/duck2.gif +0 -0
- data/doc/ex/images/duck3.gif +0 -0
- data/doc/ex/images/duck4.gif +0 -0
- data/doc/ex/images/duck5.gif +0 -0
- data/doc/ex/images/duck6.gif +0 -0
- data/doc/ex/images/duck7.gif +0 -0
- data/doc/ex/images/duck8.gif +0 -0
- data/doc/ex/images/duck9.gif +0 -0
- data/doc/ex/line01.rb +24 -0
- data/doc/ex/nested_rvg.rb +22 -0
- data/doc/ex/nonzero.rb +44 -0
- data/doc/ex/polygon01.rb +24 -0
- data/doc/ex/polyline01.rb +24 -0
- data/doc/ex/quad01.rb +37 -0
- data/doc/ex/rect01.rb +16 -0
- data/doc/ex/rect02.rb +23 -0
- data/doc/ex/rvg_clippath.rb +15 -0
- data/doc/ex/rvg_linecap.rb +44 -0
- data/doc/ex/rvg_linejoin.rb +42 -0
- data/doc/ex/rvg_opacity.rb +20 -0
- data/doc/ex/rvg_pattern.rb +27 -0
- data/doc/ex/rvg_stroke_dasharray.rb +13 -0
- data/doc/ex/sepiatone.rb +15 -0
- data/doc/ex/shadow.rb +37 -0
- data/doc/ex/smile.rb +9 -9
- data/doc/ex/stroke_fill.rb +12 -0
- data/doc/ex/text01.rb +18 -0
- data/doc/ex/text_styles.rb +22 -0
- data/doc/ex/texture_fill_to_border.rb +3 -3
- data/doc/ex/texture_floodfill.rb +3 -2
- data/doc/ex/tref01.rb +26 -0
- data/doc/ex/triangle01.rb +17 -0
- data/doc/ex/tspan01.rb +19 -0
- data/doc/ex/tspan02.rb +20 -0
- data/doc/ex/tspan03.rb +22 -0
- data/doc/ex/writing_mode01.rb +28 -0
- data/doc/ex/writing_mode02.rb +27 -0
- data/doc/ilist.html +1 -1
- data/doc/image1.html +66 -30
- data/doc/image2.html +1 -1
- data/doc/image3.html +274 -49
- data/doc/imageattrs.html +87 -10
- data/doc/imusage.html +1 -1
- data/doc/index.html +80 -39
- data/doc/info.html +149 -13
- data/doc/magick.html +1 -1
- data/doc/rvg.html +890 -0
- data/doc/rvgclip.html +249 -0
- data/doc/rvggroup.html +305 -0
- data/doc/rvgimage.html +288 -0
- data/doc/rvgpattern.html +456 -0
- data/doc/rvgshape.html +376 -0
- data/doc/rvgstyle.html +269 -0
- data/doc/rvgtext.html +464 -0
- data/doc/rvgtspan.html +237 -0
- data/doc/rvgtut.html +512 -0
- data/doc/rvguse.html +145 -0
- data/doc/rvgxform.html +294 -0
- data/doc/struct.html +9 -71
- data/doc/usage.html +22 -7
- data/ext/RMagick/MANIFEST +94 -2
- data/ext/RMagick/rmagick.h +10 -4
- data/ext/RMagick/rmagick_config.h.in +8 -2
- data/ext/RMagick/rmdraw.c +2 -2
- data/ext/RMagick/rmfill.c +2 -2
- data/ext/RMagick/rmilist.c +3 -3
- data/ext/RMagick/rmimage.c +152 -5
- data/ext/RMagick/rminfo.c +208 -2
- data/ext/RMagick/rmmain.c +14 -5
- data/ext/RMagick/rmutil.c +83 -22
- data/lib/RMagick.rb +2 -2
- data/lib/rvg/clippath.rb +46 -0
- data/lib/rvg/container.rb +129 -0
- data/lib/rvg/deep_equal.rb +54 -0
- data/lib/rvg/describable.rb +51 -0
- data/lib/rvg/embellishable.rb +395 -0
- data/lib/rvg/misc.rb +729 -0
- data/lib/rvg/paint.rb +48 -0
- data/lib/rvg/pathdata.rb +129 -0
- data/lib/rvg/rvg.rb +279 -0
- data/lib/rvg/stretchable.rb +150 -0
- data/lib/rvg/stylable.rb +116 -0
- data/lib/rvg/text.rb +185 -0
- data/lib/rvg/transformable.rb +131 -0
- data/lib/rvg/units.rb +64 -0
- data/rmagick.gemspec +1 -1
- data/uninstall.rb +3 -2
- metadata +96 -3
data/doc/ex/group.rb
ADDED
@@ -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')
|
data/doc/ex/image.rb
ADDED
@@ -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
|
Binary file
|
data/doc/ex/line01.rb
ADDED
@@ -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')
|
data/doc/ex/nonzero.rb
ADDED
@@ -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
|
+
|
data/doc/ex/polygon01.rb
ADDED
@@ -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
|
+
|
data/doc/ex/quad01.rb
ADDED
@@ -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
|
+
|
data/doc/ex/rect01.rb
ADDED
@@ -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
|
+
|
data/doc/ex/rect02.rb
ADDED
@@ -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
|
+
|