mrubyでもcairo
rubyにはrcairoがありますが、mrubyでも使えるようにmrbgem作ってみました。
使いそうな関数のみバインディングしてあるので、ソースの最後の定義を確認してみてください。
FreeBSDでcairoのpkgをインストールされた環境でビルドできます。もちろんZRouterでもビルドできます。
元々は小型液晶に画像を表示させるためのエンジンとして作ったのですがpng処理などいれてみたので汎用的に使えると思います。
mrubyビルドするときに以下を入れてください。
conf.gem :github => 'yamori813/mruby-cairo'
線を引いてみる
c = Cairo.new(120, 160)
c.set_source_rgb(1, 0, 0)
c.move_to(0, 0)
c.line_to(100, 100)
c.stroke()
c.save_png("test.png");
四角を書いてみる
c.set_line_width(2)
c.rectangle(10, 10, 30, 30)
丸を書いてみる
c.arc(20, 20, 40, 0, 3.14*2);
文字を書いてみる
c.move_to(10, 30)
c.set_source_rgb(1, 0, 1)
c.font_create("6x13.pcf")
c.set_font_size(13)
c.show_text("mruby demo cairo")
漢字も書けます。文字コードはUTF-8です。
c.move_to(20, 13)
c.set_source_rgb(1, 1, 1)
c.font_create("14x14ja.pcf")
c.set_font_size(14)
c.show_text('漢字')
c.stroke();
フォントはビットマップ形式のpcfファイルが使えるのですがbdfファイルの場合はbdftopcfコマンドで変換して使います。フォントのエンコードはiso10646です。ポイント指定がフォントと違ってると表示されないので注意してください。
アウトラインフォントのttfファイルも使えるようです。表示領域が広い場合はttfで狭い場合はpcfが良いです。
文字列を処理するときにはMRB_UTF8_STRINGを定義してmrubyをコンパイルしておくと良いです。デフォルトは設定されてないので、文字列の部分抜き出しとかキャタクタ単位でなくバイト単位となってしまいます。
conf.cc.defines = %w(MRB_UTF8_STRING)
pngファイルを読み込み
c.print_png(5, 20, "foo.png")
ファイルディスクリプタに書き出す
f = File.open("test.png", "w")
c.write_png(f.fileno)
rcairoは自前での実装があるみたいですが、こちらはほぼ1対1のバインディングです。
結構使えるのではないかと思うので、興味があったら試してみてください。
Author And Source
この問題について(mrubyでもcairo), 我々は、より多くの情報をここで見つけました https://qiita.com/yamori813/items/6b723d1a94abcf682863著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .