大規模ソフトウェアを手探るその2 〜カラーパレットに色を追加〜
こんにちは。
前回無事にGpaintをインストールできたので、いよいよ中身をいじっていきます。
まず最初の目標として、下図のカラーパレットに色を追加することにしました。
srcフォルダの中にui.cとcolor_palette.cというファイルがあり、これらが怪しいと思いコードを眺めてみると見るからにカラーパレットを設定しているっぽい部分をui.cに見つけます。
とりあえずこれの定義も含めそっくりそのまま数字を変えて追加してみましたが、変化はありません。行き詰っていたところTAの方に「逆に色の数を減らしてみたらいいんじゃないか」とアドバイスを頂いたのでやってみると、エラーがいくつか出ましたがそのおかげで何が足りていなかったのかがわかりました。
ちなみにこの時のエラーの1つに
(gpaint-2:20038): Gtk-CRITICAL **: gtk_widget_ref: assertion 'GTK_IS_WIDGET (widget)' failed
というものがありましたが、このようなassertion系のエラーはgdb(デバッガ)で
b main→b abort
とブレークポイントを設定してcontinueでabortされる直前まで飛び、whereでそこにいたるまでのプログラムの流れを見ることができます。upで上にたどれます。
結局何が間違っていたのかというとframeとcolor_palette_entryの数字の対応が合っていなかったということで(上図でもframe4に対してcolor_palette_entry1が対応している)、ちゃんと数字を対応させてframe30-entry28、frame31-entry29で追加したところ、無事に右端に2つ(どちらも黒ですが)色が追加されました。
(↑frameとcolor_palette_entryの番号の割り振られ方。なんでこんな分かりにくくしたのか...)
変えたところはというとui.cで上の画像の部分をその定義も含めて番号を変えてまるまるコピペしたのと、color_palette.cで色を定義している配列の最後に2つ分書き加えただけです。こんなもんで色を追加できるんだとちょっと驚きました。
無事に最初の目標は達成できたので次はちょっと難しそうなことをやってみます。