2024年3月20日水曜日

gc9a01pyで円、楕円、三角を簡単に書けるようにする

gc9a01pyは大変有難いライブラリだが、四角と直線と点しか描けないのが弱点。
さすがに不便なので、円、楕円、三角を足した。
https://github.com/matsuura-h/gc9a01py/tree/main
以下は、ランダムに三角を表示している例。

効率のよい描画ロジックを1から作るのは大変なので、LovyanGFXのコードを参考にした。
CからPythonへの移植だが、すべてを手打ちすると大変なので、https://www.codeconvert.ai/c-to-python-converterで自動変換し、自動ではうまく動かない部分を手直しする。
ほとんどのコードはうまく自動変換できるけど、以下の2パターンだけはNGだった。

  1. do-while
    1. 対処方法:while Trueに書き直して、条件文を末尾にif not <condition>: breakとして追加する
  2. 入れ子になったインクリメントやデクリメント
    1. 対処方法:インクリメントやデクリメントを前出しもしくは後出しにする
一つ困っていることとして、gc9a01pyはMITライセンスだが、LovyanGFXはFreeBSDライセンスになっている。
こういうとき、どうやってライセンスを処理すればよいのだろうか?
また、私が移植した部分と元のコードは一体どのように扱うとよいのだろうか?
下手にpull reqestを送ってrusshughesさんやLovyan03さんの迷惑になったら申し訳ないので、とりあえず自分のリポジトリにforkを作って公開してみた。
よい方法をご存知の方がいたら、是非教えてください。

0 件のコメント:

コメントを投稿