non vorrei lavorare

昔はおもにプログラミングやガジェット系、今は?

InkscapeをmacOSでビルドして動かせなかったが学べたこと

こんばんは、土曜日なのに、長男は小学校の土曜授業の日で、さらに次男は新入園児に歓迎会で休みのなかった@kjunichiです。

tl;dr

背景

MacBook ProSSDをきれいにしたので、ドロー系ツールを入れようとした気がしたが、 Electronで作った3DマスコットアプリのgopheronにgRPCでRaspberry Piの温度を表示するという

の説明図を書くためにInkscapeを思い出した。

最新版をmacOSな環境に入れようとしたら、 なんとmacOSのバイナリがなかったというところから、Linuxのバイナリが出来てるなら、BSD系とはいえ、 ドローツールなのでビルドくらい余裕だと思った。

ところが、Homebrewではすでにv7系のImageMagickがインストールされているが、 Inkscapeはv6系のみに対応したコードになっていたのが悲劇の始まりw

ImageMagickのv6からv7の変更対応

以下、Inkscapeで勉強させてもらったImageMacikのv6からv7のAPIの変更点。

Magick::MatteChannelはMagick::AlphaChannelに

- else if (!strcmp(_layerName, "Matte Channel"))        layer = Magick::MatteChannel;       
+   else if (!strcmp(_layerName, "Alpha Channel"))        layer = Magick::AlphaChannel;       
-             "<_item value='Matte Channel'>" N_("Matte Channel") "</_item>\n"
+               "<_item value='Alpha Channel'>" N_("Alpha Channel") "</_item>\n"

Magick::Geometryのコンストラクタの引数が変更になった

-        image->crop(Magick::Geometry(width, height, _left, _top, false, false));
+        image->crop(Magick::Geometry(width, height, _left, _top));

Magick::Color::scaleDoubleToQuantumの可視性が変更になり、パブリックに使えなくなった

- Magick::Quantum black_point = Magick::Color::scaleDoubleToQuantum(_black_point / 100.0);
-  Magick::Quantum white_point = Magick::Color::scaleDoubleToQuantum(_white_point / 100.0);
+   Magick::Quantum black_point = static_cast<Magick::Quantum>(_black_point / 100.0);
+   Magick::Quantum white_point = static_cast<Magick::Quantum>(_white_point / 100.0);

まとめ

  • Matte系がAlpha系に変更
  • CI向けのDockerファイルが公開されているので、これをベースにDockerで動かしてXquartzに表示することであまり困らなそうw

関連記事

12年前の記事