flydrawをsurfaceに (ruby/sdl)

flydrawなるものがありました。
いわにぃのブログ
http://blog.livedoor.jp/ti5942/archives/cat_125503.html?p=5
ここでは、おもしろい試みをやってます。
かなり参考になります。
texとか色々なものを組み合わせて、キレイな日本語pdfをめざしてるみたいです。
そこで紹介しているflydrawでやってみます。
flydrawでは、関数の曲線がかけます。
rcairoでは、できません。
まずは
sudo apt-get install flydraw
で、これです。
irbにプログラム全部のコピペで簡単に試せます。

#!usr/bin/env ruby

require 'rubygems'
require 'sdl'
require 'stringio'

eval = <<EOF
new 400,400
range -5,5,-20,20
arrow -5,0,5,0,10,black
arrow 0,-20,0,20,10,black
linewidth 2
plot black,pow(x,3)-12*pow(x,1)
text red,-0.4,0,huge,O
text red,-2.2,0,huge,-2
text red,1.9,1.9,huge,2
text red,0,17,huge,16
text red,-0.8,-15,huge,-16
linewidth 10
point -2*sqrt(3),0,red
point 0,0,red
point 2*sqrt(3),0,red
point -2,16,red
point 2,-16,red
linewidth 1
dline -2,0,-2,16,red
dline -2,16,0,16,red
dline 2,0,2,-16,red
dline 2,-16,0,-16,red
EOF
IO.popen("flydraw","r+") do |io|
io.write(eval)
io.close_write
@image = io.read
end
StringIO.open(@image){|s| @surface = SDL::Surface.loadFromIO(s)}
@surface.saveBMP("/tmp/image.bmp")
`display /tmp/image.bmp`
[PR]
by gaziya | 2011-04-14 11:32