インラインアイコンの作成とセット
概要
外部ファイルではなくプログラムに埋め込んだインラインデータからアイコン画像を作ってウィンドウにセットするGdk::Pixbuf::create_from_inline() を使ってインラインデータから画像(Gdk::PixBuf)を作る。 後は画像をアイコンリストに登録してGtk::Window::set_default_icon_list()を呼ぶだけである。
インラインデータはコマンドラインから gdk-pixbuf-csource コマンドによって作成する。 例えば hoge.png を inline_icon[] という変数名で inline_icon.h にcスタイルで保存するには
gdk-pixbuf-csource --raw --name=inline_icon hoge.png > inline_icon.h
とコマンドラインに打ち込む。
ソース
icon3.cpp#include <gtkmm.h> #include "inline_icon.h" class MainWin : public Gtk::Window { public: MainWin(); virtual ~MainWin(){} }; MainWin::MainWin() { resize( 100, 100 ); show_all_children(); } int main( int argc, char *argv[] ) { Gtk::Main kit( argc, argv ); // デフォルトのアイコンをセット try{ std::vector< Glib::RefPtr< Gdk::Pixbuf > > iconlist; iconlist.push_back( Gdk::Pixbuf::create_from_inline( sizeof( inline_icon ), inline_icon ) ); Gtk::Window::set_default_icon_list( iconlist ); } catch(...) { Glib::exception_handlers_invoke(); exit(1); } MainWin hw; Gtk::Main::run( hw ); return 0; }
コンパイル
必要なコンパイルオプションは pkg-config を使って取得する。g++ icon3.cpp -o icon3 `pkg-config gtkmm-2.4 --cflags --libs`
結果
