LoginSignup
6
3

More than 3 years have passed since last update.

Cairoの依存ライブラリ

Last updated at Posted at 2017-06-16

小型液晶の表示を制御するために2DのグラフィックライブラリのcairoをOnion Omega(mipeb)用にFreeBSD/ZRouterで最小限の構成でビルドしてみました。

試したバージョンはcairo 1.14.6です。

configureがpkgconfに依存しているので、これを入れる必要がありました。またconfigureの中でpixman,fontconfig,freetype,pngをpkgconfで参照しているので、これも実際は使わないのですがインストールが必要です。

cairoはpixmanというx11から派生したライブラリを使っていて、最低限これがあればビルドできます。これだけでも線や四角や丸のメモリバッファへの描画ができます。またASCIIのフォントを内蔵しているので、英文字も描画できます。余談ですがこのメモリバッファの事を昔のMacではoffscreenとか言ってました。

pixmanにはアーキテクチャ毎の最適化コードがあり、クロスでビルドする時は注意が必要です。またcairo,pixmanともにエンディアンの設定を持っているので、これも要注意でした。

pngを読み込んだり書き込むためにはpngのライブラリが必要になります。pngのライブラリはlibzを使っているので、これも必要です。

フォントを読み込むためにはfreetypeとfontconfigが必要になります。fontconfigはexpat2も使っているので、これも必要です。

freetypeはpngを使うオプションもありますが、なくても大丈夫みたいです。

cairodep_new.png

すべてFreeBSDのportsにあり、それをZRouterにコピーしてMakefileを必要に適宜修正して、do-installでイメージ作成用のディレクトリにコピーするようにしました。コピーはオリジナルのライブラリバイナリを一桁のバージョン付きファイルとしてコピーしてsoファイルをシンボリックリンクで作成しています。

もちろん依存の順にビルドして、リンク時に参照できるようになければいけません。

描画したデータはcairo_image_surface_get_data()でバッファのポインターを取得して拾いだす事ができます。

これで作ったライブラリで、mrubyバインディングを作ってみました。

IMGP0586.JPG

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3