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/arcs01.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'rvg/rvg'
|
2
|
+
include Magick
|
3
|
+
|
4
|
+
RVG.dpi = 90
|
5
|
+
|
6
|
+
rvg = RVG.new(12.cm, 5.25.cm).viewbox(0, 0, 1200, 400) do |canvas|
|
7
|
+
canvas.title = "Example arcs01 - arc commands in path data"
|
8
|
+
canvas.desc = <<-END_DESC
|
9
|
+
Picture of a pie chart with two pie wedges and a picture
|
10
|
+
of a line with arc blips
|
11
|
+
END_DESC
|
12
|
+
canvas.background_fill = 'white'
|
13
|
+
canvas.rect(1196, 395, 1, 1).styles(:fill=>'none', :stroke=>'blue', :stroke_width=>1)
|
14
|
+
|
15
|
+
canvas.path("M300,200 h-150 a150,150 0 1,0 150,-150 z").
|
16
|
+
styles(:fill=>'red', :stroke=>'blue', :stroke_width=>5)
|
17
|
+
canvas.path("M275,175 v-150 a150,150 0 0,0 -150,150 z").
|
18
|
+
styles(:fill=>'yellow', :stroke=>'blue', :stroke_width=>5)
|
19
|
+
canvas.path(<<-END_PATH
|
20
|
+
M600,350 l 50,-25
|
21
|
+
a25,25 -30 0,1 50,-25 l 50,-25
|
22
|
+
a25,50 -30 0,1 50,-25 l 50,-25
|
23
|
+
a25,75 -30 0,1 50,-25 l 50,-25
|
24
|
+
a25,100 -30 0,1 50,-25 l 50,-25
|
25
|
+
END_PATH
|
26
|
+
).styles(:fill=>'none', :stroke=>'red', :stroke_width=>5)
|
27
|
+
end
|
28
|
+
|
29
|
+
rvg.draw.write('arcs01.gif')
|
data/doc/ex/arcs02.rb
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'rvg/rvg'
|
2
|
+
include Magick
|
3
|
+
|
4
|
+
RVG.dpi = 90
|
5
|
+
|
6
|
+
PathStyles = {:fill=>'none', :stroke=>'red', :stroke_width=>6}
|
7
|
+
BaseEllipsesStyles = {:font_size=>20, :font_family=>'Verdana',:fill=>'none', :stroke=>'#888', :stroke_width=>2}
|
8
|
+
|
9
|
+
rvg = RVG.new(12.cm, (5.25).cm).viewbox(0, 0, 1200, 525) do |canvas|
|
10
|
+
canvas.title = "Example arcs02 - arc options in paths"
|
11
|
+
canvas.desc = <<-END_DESC
|
12
|
+
Pictures showing the result of setting
|
13
|
+
large-arc-flag and sweep-flag to the four
|
14
|
+
possible combinations of 0 and 1.
|
15
|
+
END_DESC
|
16
|
+
canvas.background_fill = 'white'
|
17
|
+
|
18
|
+
base_ellipses = RVG::Group.new.styles(BaseEllipsesStyles) do |base|
|
19
|
+
base.ellipse(100, 50, 125, 125)
|
20
|
+
base.ellipse(100, 50, 225, 75)
|
21
|
+
base.text(35, 70, "Arc start")
|
22
|
+
base.text(225, 145, "Arc end")
|
23
|
+
end
|
24
|
+
|
25
|
+
canvas.rect(1196, 522, 1, 1).styles(:fill=>'none', :stroke=>'blue', :stroke_width=>1)
|
26
|
+
|
27
|
+
canvas.g.styles(:font_size=>30, :font_family=>'Verdana') do |grp|
|
28
|
+
|
29
|
+
grp.use(base_ellipses)
|
30
|
+
|
31
|
+
grp.g.translate(400,0) do |grp2|
|
32
|
+
grp2.text(50, 210, 'large-arc-flag=0')
|
33
|
+
grp2.text(50, 250, 'sweep-flag=0')
|
34
|
+
grp2.use(base_ellipses)
|
35
|
+
grp2.path("M 125,75 a100,50 0 0,0 100,50").styles(PathStyles)
|
36
|
+
end
|
37
|
+
|
38
|
+
grp.g.translate(800,0) do |grp2|
|
39
|
+
grp2.text(50, 210, 'large-arc-flag=0')
|
40
|
+
grp2.text(50, 250, 'sweep-flag=1')
|
41
|
+
grp2.use(base_ellipses)
|
42
|
+
grp2.path("M 125,75 a100,50 0 0,1 100,50").styles(PathStyles)
|
43
|
+
end
|
44
|
+
|
45
|
+
grp.g.translate(400, 250) do |grp2|
|
46
|
+
grp2.text(50, 210, 'large-arc-flag=1')
|
47
|
+
grp2.text(50, 250, 'sweep-flag=0')
|
48
|
+
grp2.use(base_ellipses)
|
49
|
+
grp2.path("M 125,75 a100,50 0 1,0 100,50").styles(PathStyles)
|
50
|
+
end
|
51
|
+
|
52
|
+
grp.g.translate(800, 250) do |grp2|
|
53
|
+
grp2.text(50, 210, 'large-arc-flag=1')
|
54
|
+
grp2.text(50, 250, 'sweep-flag=1')
|
55
|
+
grp2.use(base_ellipses)
|
56
|
+
grp2.path("M 125,75 a100,50 0 1,1 100,50").styles(PathStyles)
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
rvg.draw.write('arcs02.gif')
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'rvg/rvg'
|
2
|
+
include Magick
|
3
|
+
|
4
|
+
rvg = RVG.new(150, 100) do |canvas|
|
5
|
+
canvas.background_fill = 'white'
|
6
|
+
canvas.text(40, 35).styles(:font_weight=>'bold', :font_size=>28) do |txt|
|
7
|
+
txt.tspan('H')
|
8
|
+
txt.tspan('2').styles(:font_size=>20, :fill=>'red', :baseline_shift=>'sub')
|
9
|
+
txt.tspan('O')
|
10
|
+
end
|
11
|
+
canvas.text(40, 80).styles(:font_style=>'italic', :font_size=>28) do |txt|
|
12
|
+
txt.tspan('e=mc')
|
13
|
+
txt.tspan('2').styles(:font_size=>20, :fill=>'red', :baseline_shift=>'super')
|
14
|
+
end
|
15
|
+
canvas.rect(149, 99).styles(:fill=>'none', :stroke=>'blue')
|
16
|
+
end
|
17
|
+
|
18
|
+
rvg.draw.write('baseline_shift01.gif')
|
19
|
+
|
data/doc/ex/bounding_box.rb
CHANGED
@@ -1,48 +1,42 @@
|
|
1
1
|
#! /usr/local/bin/ruby -w
|
2
2
|
require 'RMagick'
|
3
|
+
include Magick
|
3
4
|
|
4
|
-
|
5
|
-
i.new_image(200, 200) { self.background_color = "#ffffcc" }
|
5
|
+
img = Image.new(200,200) { self.background_color = "#ffffcc" }
|
6
6
|
|
7
7
|
# Draw a blue circle.
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
8
|
+
gc = Draw.new
|
9
|
+
gc.stroke_width(5)
|
10
|
+
gc.stroke("blue")
|
11
|
+
gc.fill_opacity(0)
|
12
|
+
gc.circle(100,100, 100,150)
|
13
|
+
gc.draw(img)
|
14
14
|
|
15
15
|
# Get the bounding box. Use the values to draw
|
16
16
|
# a gray square surrounding the circle. Highlight
|
17
17
|
# the corners with tiny red circles.
|
18
18
|
|
19
|
-
bb =
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
primitives.draw i
|
45
|
-
|
46
|
-
#i.display
|
47
|
-
i.write "bounding_box.gif"
|
19
|
+
bb = img.bounding_box
|
20
|
+
gc = Draw.new
|
21
|
+
gc.stroke("gray50")
|
22
|
+
gc.fill_opacity(0)
|
23
|
+
gc.rectangle(bb.x, bb.y, bb.x+bb.width, bb.y+bb.height)
|
24
|
+
gc.stroke("red")
|
25
|
+
gc.circle(bb.x, bb.y, bb.x+2, bb.y+2)
|
26
|
+
gc.circle(bb.x+bb.width, bb.y, bb.x+bb.width+2, bb.y+2)
|
27
|
+
gc.circle(bb.x, bb.y+bb.height, bb.x+2, bb.y+bb.height+2)
|
28
|
+
gc.circle(bb.x+bb.width, bb.y+bb.height, bb.x+bb.width+2, bb.y+bb.height+2)
|
29
|
+
|
30
|
+
|
31
|
+
gc.fill("black")
|
32
|
+
gc.stroke("transparent")
|
33
|
+
gc.text(bb.x-15, bb.y-5, "\'#{bb.x},#{bb.y}\'")
|
34
|
+
gc.text(bb.x+bb.width-15, bb.y-5, "\'#{bb.x+bb.width},#{bb.y}\'")
|
35
|
+
gc.text(bb.x-15, bb.y+bb.height+15, "\'#{bb.x},#{bb.y+bb.height}\'")
|
36
|
+
gc.text(bb.x+bb.width-15, bb.y+bb.height+15, "\'#{bb.x+bb.width},#{bb.y+bb.height}\'")
|
37
|
+
|
38
|
+
|
39
|
+
gc.draw(img)
|
40
|
+
|
41
|
+
img.write("bounding_box.gif")
|
48
42
|
exit
|
data/doc/ex/circle01.rb
ADDED
@@ -0,0 +1,18 @@
|
|
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 circle01 - circle filled with red and stroked with blue"
|
10
|
+
|
11
|
+
# Show outline of canvas using the 'rect' method
|
12
|
+
canvas.rect(1195, 395, 1, 1).styles(:fill=>'none', :stroke=>'blue', :stroke_width=>2)
|
13
|
+
|
14
|
+
canvas.circle(100, 600, 200).styles(:fill=>'red', :stroke=>'blue', :stroke_width=>10)
|
15
|
+
end
|
16
|
+
|
17
|
+
rvg.draw.write('circle01.gif')
|
18
|
+
|
data/doc/ex/cubic01.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'rvg/rvg'
|
2
|
+
include Magick
|
3
|
+
|
4
|
+
RVG.dpi = 90
|
5
|
+
|
6
|
+
Border = {:fill=>'none', :stroke=>'blue', :stroke_width=>1}
|
7
|
+
Connect = {:fill=>'none', :stroke=>'#888', :stroke_width=>2}
|
8
|
+
SamplePath = {:fill=>'none', :stroke=>'red', :stroke_width=>5}
|
9
|
+
EndPoint = {:fill=>'none', :stroke=>'#888', :stroke_width=>2}
|
10
|
+
CtlPoint = {:fill=>'#888', :stroke=>'none'}
|
11
|
+
AutoCtlPoint = {:fill=>'none', :stroke=>'blue', :stroke_width=>4}
|
12
|
+
Label = {:font_size=>22, :font_family=>'Verdana'}
|
13
|
+
|
14
|
+
rvg = RVG.new(5.cm, 4.cm).viewbox(0, 0, 500, 400) do |canvas|
|
15
|
+
canvas.title = "Example cubic01 - cubic Bezier commands in path data"
|
16
|
+
canvas.desc = <<-END_DESC
|
17
|
+
Picture showing a simple example of path data using both a
|
18
|
+
"C" and an "S" command, along with annotations showing the
|
19
|
+
control points and end points.
|
20
|
+
END_DESC
|
21
|
+
|
22
|
+
canvas.background_fill = 'white'
|
23
|
+
canvas.rect(496, 395, 1, 1).styles(Border)
|
24
|
+
|
25
|
+
canvas.polyline(100,200, 100,100).styles(Connect)
|
26
|
+
canvas.polyline(250,100, 250,200).styles(Connect)
|
27
|
+
canvas.polyline(250,200, 250,300).styles(Connect)
|
28
|
+
canvas.polyline(400,300, 400,200).styles(Connect)
|
29
|
+
|
30
|
+
canvas.path("M100,200 C100,100 250,100 250,200 S400,300 400,200").styles(SamplePath)
|
31
|
+
|
32
|
+
canvas.circle(10, 100, 200).styles(EndPoint)
|
33
|
+
canvas.circle(10, 250, 200).styles(EndPoint)
|
34
|
+
canvas.circle(10, 400, 200).styles(EndPoint)
|
35
|
+
canvas.circle(10, 100, 100).styles(CtlPoint)
|
36
|
+
canvas.circle(10, 250, 100).styles(CtlPoint)
|
37
|
+
canvas.circle(10, 400, 300).styles(CtlPoint)
|
38
|
+
canvas.circle(9, 250, 300).styles(AutoCtlPoint)
|
39
|
+
|
40
|
+
canvas.text(25, 70, 'M100,200 C100,100 250,100 250,200').styles(Label)
|
41
|
+
canvas.text(225, 350, 'S400,300 400,200').styles(Label)
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
rvg.draw.write('cubic01.gif')
|
46
|
+
|
data/doc/ex/cubic02.rb
ADDED
@@ -0,0 +1,95 @@
|
|
1
|
+
require 'rvg/rvg'
|
2
|
+
include Magick
|
3
|
+
|
4
|
+
RVG.dpi = 90
|
5
|
+
|
6
|
+
Border = { :fill=>'none', :stroke=>'blue', :stroke_width=>1 }
|
7
|
+
Connect = { :fill=>'none', :stroke=>'#888888', :stroke_width=>2 }
|
8
|
+
SamplePath = { :fill=>'none', :stroke=>'red', :stroke_width=>5 }
|
9
|
+
EndPoint = { :fill=>'none', :stroke=>'#888888', :stroke_width=>2 }
|
10
|
+
CtlPoint = { :fill=>'#888888', :stroke=>'none' }
|
11
|
+
AutoCtlPoint = { :fill=>'none', :stroke=>'blue', :stroke_width=>4 }
|
12
|
+
Label = { :text_anchor=>'middle', :font_size=>22, :font_family=>'Verdana' }
|
13
|
+
|
14
|
+
rvg = RVG.new(10.cm, 10.cm).viewbox(0, 0, 1000, 1000) do |canvas|
|
15
|
+
canvas.title = 'Example cubic02 - cubic Bezier commands in path data'
|
16
|
+
canvas.desc = <<-END_DESC
|
17
|
+
Picture showing examples of "C" and "S" commands,
|
18
|
+
along with annotations showing the control points
|
19
|
+
and end points
|
20
|
+
END_DESC
|
21
|
+
|
22
|
+
canvas.background_fill = 'white'
|
23
|
+
canvas.rect(996, 996, 1, 1).styles(Border)
|
24
|
+
|
25
|
+
# Path 1
|
26
|
+
canvas.polyline(100,200, 100,100).styles(Connect)
|
27
|
+
canvas.polyline(400,100, 400,200).styles(Connect)
|
28
|
+
canvas.path('M100,200 C100,100 400,100 400,200').styles(SamplePath)
|
29
|
+
canvas.circle(10, 100, 200).styles(EndPoint)
|
30
|
+
canvas.circle(10, 400, 200).styles(EndPoint)
|
31
|
+
canvas.circle(10, 100, 100).styles(CtlPoint)
|
32
|
+
canvas.circle(10, 400, 100).styles(CtlPoint)
|
33
|
+
canvas.text(250, 275, 'M100,200 C100,100 400,100 400,200').styles(Label)
|
34
|
+
|
35
|
+
# Path 2
|
36
|
+
canvas.polyline(100,500, 25,400).styles(Connect)
|
37
|
+
canvas.polyline(475,400, 400,500).styles(Connect)
|
38
|
+
canvas.path("M100,500 C25,400 475,400 400,500").styles(SamplePath)
|
39
|
+
canvas.circle(10, 100, 500).styles(EndPoint)
|
40
|
+
canvas.circle(10, 400, 500).styles(EndPoint)
|
41
|
+
canvas.circle(10, 25, 400).styles(CtlPoint)
|
42
|
+
canvas.circle(10, 475, 400).styles(CtlPoint)
|
43
|
+
canvas.text(250, 575, "M100,500 C25,400 475,400 400,500").styles(Label)
|
44
|
+
|
45
|
+
# Path 3
|
46
|
+
canvas.polyline(100,800, 175,700).styles(Connect)
|
47
|
+
canvas.polyline(325,700, 400,800).styles(Connect)
|
48
|
+
canvas.path("M100,800 C175,700 325,700 400,800").styles(SamplePath)
|
49
|
+
canvas.circle(10, 100, 800).styles(EndPoint)
|
50
|
+
canvas.circle(10, 400, 800).styles(EndPoint)
|
51
|
+
canvas.circle(10, 175, 700).styles(CtlPoint)
|
52
|
+
canvas.circle(10, 325, 700).styles(CtlPoint)
|
53
|
+
canvas.text(250, 875, "M100,800 C175,700 325,700 400,800").styles(Label)
|
54
|
+
|
55
|
+
# Path 4
|
56
|
+
canvas.polyline(600,200, 675,100).styles(Connect)
|
57
|
+
canvas.polyline(975,100, 900,200).styles(Connect)
|
58
|
+
canvas.path("M600,200 C675,100 975,100 900,200").styles(SamplePath)
|
59
|
+
canvas.circle(10, 600, 200).styles(EndPoint)
|
60
|
+
canvas.circle(10, 900, 200).styles(EndPoint)
|
61
|
+
canvas.circle(10, 675, 100).styles(CtlPoint)
|
62
|
+
canvas.circle(10, 975, 100).styles(CtlPoint)
|
63
|
+
canvas.text(750, 275, "M600,200 C675,100 975,100 900,200").styles(Label)
|
64
|
+
|
65
|
+
# Path 5
|
66
|
+
canvas.polyline(600,500, 600,350).styles(Connect)
|
67
|
+
canvas.polyline(900,650, 900,500).styles(Connect)
|
68
|
+
canvas.path("M600,500 C600,350 900,650 900,500").styles(SamplePath)
|
69
|
+
canvas.circle(10, 600, 500).styles(EndPoint)
|
70
|
+
canvas.circle(10, 900, 500).styles(EndPoint)
|
71
|
+
canvas.circle(10, 600, 350).styles(CtlPoint)
|
72
|
+
canvas.circle(10, 900, 650).styles(CtlPoint)
|
73
|
+
canvas.text(750, 575, "M600,500 C600,350 900,650 900,500").styles(Label)
|
74
|
+
|
75
|
+
# Path 6 (C and S command)
|
76
|
+
canvas.polyline(600,800, 625,700).styles(Connect)
|
77
|
+
canvas.polyline(725,700, 750,800).styles(Connect)
|
78
|
+
canvas.polyline(750,800, 775,900).styles(Connect)
|
79
|
+
canvas.polyline(875,900, 900,800).styles(Connect)
|
80
|
+
canvas.path("M600,800 C625,700 725,700 750,800 S875,900 900,800").styles(SamplePath)
|
81
|
+
canvas.circle(10, 600, 800).styles(EndPoint)
|
82
|
+
canvas.circle(10, 750, 800).styles(EndPoint)
|
83
|
+
canvas.circle(10, 900, 800).styles(EndPoint)
|
84
|
+
canvas.circle(10, 625, 700).styles(CtlPoint)
|
85
|
+
canvas.circle(10, 725, 700).styles(CtlPoint)
|
86
|
+
canvas.circle(10, 875, 900).styles(CtlPoint)
|
87
|
+
canvas.circle(10, 775, 900).styles(AutoCtlPoint)
|
88
|
+
canvas.text(750, 945, "M600,800 C625,700 725,700 750,800").styles(Label)
|
89
|
+
canvas.text(750, 975, "S875,900 900,800").styles(Label)
|
90
|
+
|
91
|
+
end
|
92
|
+
|
93
|
+
rvg.draw.write('cubic02.gif')
|
94
|
+
|
95
|
+
|
data/doc/ex/drop_shadow.rb
CHANGED
data/doc/ex/ellipse01.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).viewbox(0, 0, 1200, 400) do |canvas|
|
7
|
+
canvas.background_fill = 'white'
|
8
|
+
canvas.desc = "Example ellipse01 - examples of ellipses"
|
9
|
+
|
10
|
+
# Show outline of canvas using rect method
|
11
|
+
canvas.rect(1195, 395, 1, 1).styles(:fill=>'none', :stroke=>'blue', :stroke_width=>2)
|
12
|
+
|
13
|
+
canvas.g.translate(300, 200) do |grp|
|
14
|
+
grp.ellipse(250, 100).styles(:fill=>'red')
|
15
|
+
end
|
16
|
+
|
17
|
+
canvas.g.translate(900, 200).rotate(-30) do |grp|
|
18
|
+
grp.ellipse(250, 100).styles(:fill=>'none', :stroke=>'blue', :stroke_width=>20)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
rvg.draw.write('ellipse01.gif')
|
23
|
+
|
data/doc/ex/evenodd.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(:clip_rule=>'evenodd', :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('evenodd.gif')
|
44
|
+
|
@@ -0,0 +1,29 @@
|
|
1
|
+
#! /usr/local/bin/ruby -w
|
2
|
+
require 'rvg/rvg'
|
3
|
+
include Magick
|
4
|
+
|
5
|
+
|
6
|
+
rvg = RVG.new(200, 250) do |canvas|
|
7
|
+
canvas.background_fill = 'white'
|
8
|
+
|
9
|
+
canvas.g do |grp|
|
10
|
+
grp.text(10, 30, "default size")
|
11
|
+
grp.text(10, 50, ":font_size=>14").styles(:font_size=>14)
|
12
|
+
grp.text(10, 70, ":font_size=>16").styles(:font_size=>16)
|
13
|
+
grp.text(10,100, ":font_size=>24").styles(:font_size=>24)
|
14
|
+
end
|
15
|
+
|
16
|
+
canvas.g.styles(:font_size=>14) do |grp|
|
17
|
+
grp.text( 8, 120, ":font_family=>'Courier'").styles(:font_family=>'Courier')
|
18
|
+
grp.text(10, 140, ":font_weight=>'bold'").styles(:font_weight=>'bold')
|
19
|
+
grp.text(10, 160, ":font_stretch=>'normal'").styles(:font_stretch=>'normal')
|
20
|
+
grp.text(10, 180, ":font_stretch=>'condensed'").styles(:font_stretch=>'condensed')
|
21
|
+
grp.text(10, 200, ":font_style=>'italic'").styles(:font_style=>'italic')
|
22
|
+
grp.text(10, 220, ":font_weight=>900").styles(:font_weight=>900)
|
23
|
+
end
|
24
|
+
|
25
|
+
canvas.rect(199, 249).styles(:fill=>'none', :stroke=>'blue')
|
26
|
+
end
|
27
|
+
|
28
|
+
rvg.draw.write('font_styles.gif')
|
29
|
+
|