doc/ex/PreserveAspectRatio.rb in rmagick-2.13.4 vs doc/ex/PreserveAspectRatio.rb in rmagick-2.14.0

- old
+ new

@@ -1,205 +1,204 @@ require 'rvg/rvg' rvg = Magick::RVG.new(450, 300) do |canvas| - canvas.desc = 'Example Preserve Aspect Ratio' - canvas.background_fill = 'white' + canvas.desc = 'Example Preserve Aspect Ratio' + canvas.background_fill = 'white' - canvas.rect(448, 298, 1, 1).styles(:fill=>'none', :stroke=>'blue') + canvas.rect(448, 298, 1, 1).styles(:fill=>'none', :stroke=>'blue') - # Define the smiley-face - smile = Magick::RVG::Group.new do |grp| - grp.translate(0, 5) - grp.circle(10, 15, 15).styles(:fill=>'yellow', :stroke=>'none') - grp.circle(1.5, 12, 12).styles(:fill=>'black', :stroke=>'none') - grp.circle(1.5, 17, 12).styles(:fill=>'black', :stroke=>'none') - grp.path("M10 19 A 8 8 0 0 0 20 19").styles(:stroke=>'black', :stroke_width=>2) + # Define the smiley-face + smile = Magick::RVG::Group.new do |grp| + grp.translate(0, 5) + grp.circle(10, 15, 15).styles(:fill=>'yellow', :stroke=>'none') + grp.circle(1.5, 12, 12).styles(:fill=>'black', :stroke=>'none') + grp.circle(1.5, 17, 12).styles(:fill=>'black', :stroke=>'none') + grp.path('M10 19 A 8 8 0 0 0 20 19').styles(:stroke=>'black', :stroke_width=>2) + end + + viewport1 = Magick::RVG::Group.new do |grp| + grp.rect(49, 29, 0.5, 0.5).styles(:fill => 'none', :stroke => 'blue') + end + + viewport2 = Magick::RVG::Group.new do |grp| + grp.rect(29, 39, 0.5, 0.5).styles(:fill=>'black', :stroke=>'red') + end + + # SVG to fit + grp = canvas.g.styles(:font_size=>9) do |grp| + grp.text(10, 30, 'SVG to fit') + grp.g.translate(20, 40) do |grp2| + grp2.use(viewport2) + grp2.use(smile) end - viewport1 = Magick::RVG::Group.new do |grp| - grp.rect(49, 29, 0.5, 0.5).styles(:fill => 'none', :stroke => 'blue') + # Viewport 1 + grp.g.translate(10, 120) do |grp2| + grp2.use(viewport1) end + grp.text(10, 110, 'Viewport 1') - viewport2 = Magick::RVG::Group.new do |grp| - grp.rect(29, 39, 0.5, 0.5).styles(:fill=>'black', :stroke=>'red') + # Viewport 2 + grp.g.translate(20, 190) do |grp2| + grp2.rect(29, 50, 0.5, 0.5).styles(:fill => 'none', :stroke => 'blue') end + grp.text(10, 180, 'Viewport 2') - # SVG to fit - grp = canvas.g.styles(:font_size=>9) do |grp| - grp.text(10, 30, "SVG to fit") - grp.g.translate(20, 40) do |grp2| - grp2.use(viewport2) - grp2.use(smile) + # meet-group-1 + grp.g.translate(100, 60) do |grp2| + grp2.text(0, -30, '--------------- meet ---------------') + grp2.g do |grp3| + grp3.text(0, -10, 'xMin*') + grp3.use(viewport1) + + # xMin + grp3.rvg(50, 30).viewbox(0,0,30,40).preserve_aspect_ratio('xMinYMin', 'meet') do |canvas2| + canvas2.rect(29, 39, 0.5, 0.5).styles(:fill => 'black', :stroke => 'red') + canvas2.use(smile) end + end - # Viewport 1 - grp.g.translate(10, 120) do |grp2| - grp2.use(viewport1) + # xMid + grp2.g.translate(70, 0) do |grp3| + grp3.text(0, -10, 'xMid*') + grp3.use(viewport1) + grp3.rvg(50, 30).viewbox(0, 0, 30, 40).preserve_aspect_ratio('xMidYMid', 'meet') do |canvas2| + canvas2.rect(29, 39, 0.5, 0.5).styles(:fill => 'black', :stroke => 'red') + canvas2.use(smile) end - grp.text(10, 110, 'Viewport 1') + end - # Viewport 2 - grp.g.translate(20, 190) do |grp2| - grp2.rect(29, 50, 0.5, 0.5).styles(:fill => 'none', :stroke => 'blue') + # xMax + grp2.g.translate(0, 70) do |grp3| + grp3.text(0, -10, 'xMax*') + grp3.use(viewport1) + grp3.rvg(50, 30).viewbox(0,0,30,40).preserve_aspect_ratio('xMaxYMax', 'meet') do |canvas2| + canvas2.rect(29, 39, 0.5, 0.5).styles(:fill => 'black', :stroke => 'red') + canvas2.use(smile) end - grp.text(10, 180, 'Viewport 2') + end + end - # meet-group-1 - grp.g.translate(100, 60) do |grp2| - grp2.text(0, -30, "--------------- meet ---------------") - grp2.g do |grp3| - grp3.text(0, -10, "xMin*") - grp3.use(viewport1) + # meet-group-2 + grp.g.translate(250, 60) do |grp2| + grp2.text(0, -30, '--------------- meet ---------------') - # xMin - grp3.rvg(50, 30).viewbox(0,0,30,40).preserve_aspect_ratio('xMinYMin', 'meet') do |canvas2| - canvas2.rect(29, 39, 0.5, 0.5).styles(:fill => 'black', :stroke => 'red') - canvas2.use(smile) - end - end + # xMin + grp2.g do |grp3| + grp3.text(0, -10, '*YMin') + grp3.rect(29, 59, 0.5, 0.5).styles(:fill => 'none', :stroke => 'blue') + grp3.rvg(30, 60).viewbox(0,0,30,40).preserve_aspect_ratio('xMinYMin', 'meet') do |canvas2| + canvas2.use(viewport2) + canvas2.use(smile) + end + end - # xMid - grp2.g.translate(70, 0) do |grp3| - grp3.text(0, -10, "xMid*") - grp3.use(viewport1) - grp3.rvg(50, 30).viewbox(0, 0, 30, 40).preserve_aspect_ratio('xMidYMid', 'meet') do |canvas2| - canvas2.rect(29, 39, 0.5, 0.5).styles(:fill => 'black', :stroke => 'red') - canvas2.use(smile) - end - end + # xMid + grp2.g.translate(50, 0) do |grp3| + grp3.text(0, -10, '*YMid') + grp3.rect(29, 59, 0.5, 0.5).styles(:fill => 'none', :stroke => 'blue') + grp3.rvg(30, 60).viewbox(0, 0, 30, 40).preserve_aspect_ratio('xMidYMid', 'meet') do |canvas2| + canvas2.use(viewport2) + canvas2.use(smile) + end + end - # xMax - grp2.g.translate(0, 70) do |grp3| - grp3.text(0, -10, "xMax*") - grp3.use(viewport1) - grp3.rvg(50, 30).viewbox(0,0,30,40).preserve_aspect_ratio('xMaxYMax', 'meet') do |canvas2| - canvas2.rect(29, 39, 0.5, 0.5).styles(:fill => 'black', :stroke => 'red') - canvas2.use(smile) - end - end + # xMax + grp2.g.translate(100, 0) do |grp3| + grp3.text(0, -10, '*YMax') + grp3.rect(29, 59, 0.5, 0.5).styles(:fill => 'none', :stroke => 'blue') + grp3.rvg(30, 60).viewbox(0,0,30,40).preserve_aspect_ratio('xMaxYMax', 'meet') do |canvas2| + canvas2.rect(29, 39, 0.5, 0.5).styles(:fill => 'black', :stroke => 'red') + canvas2.use(smile) end + end + end - # meet-group-2 - grp.g.translate(250, 60) do |grp2| - grp2.text(0, -30, "--------------- meet ---------------") + # slice-group-1 + grp.g.translate(100, 220) do |grp2| + grp2.text(0, -30, '--------------- slice ---------------') - # xMin - grp2.g do |grp3| - grp3.text(0, -10, "*YMin") - grp3.rect(29, 59, 0.5, 0.5).styles(:fill => 'none', :stroke => 'blue') - grp3.rvg(30, 60).viewbox(0,0,30,40).preserve_aspect_ratio('xMinYMin', 'meet') do |canvas2| - canvas2.use(viewport2) - canvas2.use(smile) - end - end + # xMin + grp2.g do |grp3| + grp3.text(0, -10, 'xMin*') + grp3.rect(29, 59, 0.5, 0.5).styles(:fill => 'none', :stroke => 'blue') + grp3.rvg(30, 60) do |canvas2| + canvas2.preserve_aspect_ratio('xMinYMin', 'slice') + canvas2.viewbox(0,0,30,40) + canvas2.use(viewport2) + canvas2.use(smile) + end + end - # xMid - grp2.g.translate(50, 0) do |grp3| - grp3.text(0, -10, "*YMid") - grp3.rect(29, 59, 0.5, 0.5).styles(:fill => 'none', :stroke => 'blue') - grp3.rvg(30, 60).viewbox(0, 0, 30, 40).preserve_aspect_ratio('xMidYMid', 'meet') do |canvas2| - canvas2.use(viewport2) - canvas2.use(smile) - end - end + # xMid + grp2.g do |grp3| + grp3.text(0, -10, 'xMid*') + grp3.translate(50, 0) + grp3.rect(29, 59, 0.5, 0.5).styles(:fill => 'none', :stroke => 'blue') + grp3.rvg(30, 60) do |canvas2| + canvas2.preserve_aspect_ratio('xMidYMid', 'slice') + canvas2.viewbox(0,0,30,40) + canvas2.rect(29, 39, 0.5, 0.5).styles(:fill => 'black', :stroke => 'red') + canvas2.use(smile) + end + end - # xMax - grp2.g.translate(100, 0) do |grp3| - grp3.text(0, -10, "*YMax") - grp3.rect(29, 59, 0.5, 0.5).styles(:fill => 'none', :stroke => 'blue') - grp3.rvg(30, 60).viewbox(0,0,30,40).preserve_aspect_ratio('xMaxYMax', 'meet') do |canvas2| - canvas2.rect(29, 39, 0.5, 0.5).styles(:fill => 'black', :stroke => 'red') - canvas2.use(smile) - end - end + # xMax + grp2.g do |grp3| + grp3.text(0, -10, 'xMax*') + grp3.translate(100, 0) + grp3.rect(29, 59, 0.5, 0.5).styles(:fill => 'none', :stroke => 'blue') + grp3.rvg(30, 60) do |canvas2| + canvas2.preserve_aspect_ratio('xMaxYMax', 'slice') + canvas2.viewbox(0,0,30,40) + canvas2.rect(29, 39, 0.5, 0.5).styles(:fill => 'black', :stroke => 'red') + canvas2.use(smile) end + end + end - # slice-group-1 - grp.g.translate(100, 220) do |grp2| - grp2.text(0, -30, "--------------- slice ---------------") + # slice-group-2 + grp.g.translate(250, 200) do |grp2| + grp2.text(0, -30, '--------------- slice ---------------') - # xMin - grp2.g do |grp3| - grp3.text(0, -10, "xMin*") - grp3.rect(29, 59, 0.5, 0.5).styles(:fill => 'none', :stroke => 'blue') - grp3.rvg(30, 60) do |canvas2| - canvas2.preserve_aspect_ratio('xMinYMin', 'slice') - canvas2.viewbox(0,0,30,40) - canvas2.use(viewport2) - canvas2.use(smile) - end - end + # YMin + grp2.g do |grp3| + grp3.text(0, -10, '*YMin') + grp3.use(viewport1) + grp3.rvg(50, 30) do |canvas2| + canvas2.preserve_aspect_ratio('xMinYMin', 'slice') + canvas2.viewbox(0,0,30,40) + canvas2.rect(29, 39, 0.5, 0.5).styles(:fill => 'black', :stroke => 'red') + canvas2.use(smile) + end + end - # xMid - grp2.g do |grp3| - grp3.text(0, -10, "xMid*") - grp3.translate(50, 0) - grp3.rect(29, 59, 0.5, 0.5).styles(:fill => 'none', :stroke => 'blue') - grp3.rvg(30, 60) do |canvas2| - canvas2.preserve_aspect_ratio('xMidYMid', 'slice') - canvas2.viewbox(0,0,30,40) - canvas2.rect(29, 39, 0.5, 0.5).styles(:fill => 'black', :stroke => 'red') - canvas2.use(smile) - end - end - - # xMax - grp2.g do |grp3| - grp3.text(0, -10, "xMax*") - grp3.translate(100, 0) - grp3.rect(29, 59, 0.5, 0.5).styles(:fill => 'none', :stroke => 'blue') - grp3.rvg(30, 60) do |canvas2| - canvas2.preserve_aspect_ratio('xMaxYMax', 'slice') - canvas2.viewbox(0,0,30,40) - canvas2.rect(29, 39, 0.5, 0.5).styles(:fill => 'black', :stroke => 'red') - canvas2.use(smile) - end - end + # YMid + grp2.g do |grp3| + grp3.text(0, -10, '*YMid') + grp3.translate(70, 0) + grp3.use(viewport1) + grp3.rvg(50, 30) do |canvas2| + canvas2.preserve_aspect_ratio('xMidYMid', 'slice') + canvas2.viewbox(0,0,30,40) + canvas2.rect(29, 39, 0.5, 0.5).styles(:fill => 'black', :stroke => 'red') + canvas2.use(smile) end + end - # slice-group-2 - grp.g.translate(250, 200) do |grp2| - grp2.text(0, -30, "--------------- slice ---------------") - - # YMin - grp2.g do |grp3| - grp3.text(0, -10, "*YMin") - grp3.use(viewport1) - grp3.rvg(50, 30) do |canvas2| - canvas2.preserve_aspect_ratio('xMinYMin', 'slice') - canvas2.viewbox(0,0,30,40) - canvas2.rect(29, 39, 0.5, 0.5).styles(:fill => 'black', :stroke => 'red') - canvas2.use(smile) - end - end - - # YMid - grp2.g do |grp3| - grp3.text(0, -10, "*YMid") - grp3.translate(70, 0) - grp3.use(viewport1) - grp3.rvg(50, 30) do |canvas2| - canvas2.preserve_aspect_ratio('xMidYMid', 'slice') - canvas2.viewbox(0,0,30,40) - canvas2.rect(29, 39, 0.5, 0.5).styles(:fill => 'black', :stroke => 'red') - canvas2.use(smile) - end - end - - # YMax - grp2.g do |grp3| - grp3.text(0, -10, "*YMax") - grp3.translate(140, 0) - grp3.use(viewport1) - grp3.rvg(50, 30) do |canvas2| - canvas2.preserve_aspect_ratio('xMaxYMax', 'slice') - canvas2.viewbox(0,0,30,40) - canvas2.rect(29, 39, 0.5, 0.5).styles(:fill => 'black', :stroke => 'red') - canvas2.use(smile) - end - end + # YMax + grp2.g do |grp3| + grp3.text(0, -10, '*YMax') + grp3.translate(140, 0) + grp3.use(viewport1) + grp3.rvg(50, 30) do |canvas2| + canvas2.preserve_aspect_ratio('xMaxYMax', 'slice') + canvas2.viewbox(0,0,30,40) + canvas2.rect(29, 39, 0.5, 0.5).styles(:fill => 'black', :stroke => 'red') + canvas2.use(smile) end + end end + end end rvg.draw.write('PreserveAspectRatio.gif') -