トップ 最新

かってきままな日々

2020-02-27 (Th) [長年日記]

_ 矢印を掴む

矢印ができた。

線分の部分を掴むのは、昨日の式そのままでいけた。

あと、三角形の部分は、三角形の中ならどこを掴んでも掴めるようにした。

三角形の各辺のベクトルと、各頂点からクリックした点までのベクトルで、 それぞれ外積を計算して、全部正 or 全部負ならクリックした点は三角形の内側、と判定。 いちおう行けてそうではある。

あとは、ハンドルを掴んで変形できるようにもした。 三角形の部分の段差側のハンドルを移動させた時の計算がなかなかうまくいかず… 「tan? いや違う sin だわ。」何分か悩んで「いや cos だった orz」などと 試行錯誤。

で。矢印はできたので、ついでに undo/redo 機能も作った。 構想から想定してあったので、全然たいした手間はかからなかった。

次に作ろうと思ってるのが、テキスト。 今までの図形描画とはかなり勝手が違う。

pango 必須かな。日本語入力も必要だし。もちろんカーソル描画も必要。

日本語入力は、pango_attr_list_splice() で何とかなりそう。ドキュメントに

This operation proves useful for, for instance, inserting a pre-edit string in the middle of an edit buffer.

と書いてあるので、これでいいのだろう。

あとはカーソル。pango_layout_get_cursor_pos() にデータ中の位置を渡すと カーソル描画位置が返ってくるらしい。ただ、何故か幅 0 なんだそうな。意味解らん…