/*!
  \page gui_module_page GUI モジュールの作成

  \section gui_module_abst_section 概要

  画面描画を簡単に行えるような仕組みを検討し、実装します。

  \n
  \section gui_module_detail_section 詳細

  まず、画像リソースをラップしたものをサーフェスと呼ぶことにします。また、サーフェスを指定した位置に描画したり、ボタンとして扱う仕組みは、コンポーネントと呼ぶことにします。

  - サーフェス ... 画像リソース
  - コンポーネント ... サーフェスを用いて描画を行う (ラベル、ボタン、など)

  また、コンポーネントを保持し、順番に描画する仕組みをレイヤーと呼ぶことにします。これらは、以下のように使います。

  \code
// レイヤーへのコンポーネント登録
Surface* text_surface = TextSurface(font, "hello");
Component* label = Label(text_surface);
layer.push_front(label);

// レイヤーの再描画
layer.draw(); \endcode

  また、ユーザ入力は全てのコンポーネントに渡すことにし、ユーザ入力を利用するかどうかは、各コンポーネントの責任とします。

  この枠組みを使うことで、しばらく表示させておきたいコンポーネントを登録しておき、繰り返し再描画する、といった使い方が可能です。\n
  この仕組みを使ったサンプルは、

  - \ref fly_flapp_page

  となっています。\n
  また、各 GUI コンポーネントの作成時に書き出した仕様は以下から参照できます。

  - サーフェス
    - 画像サーフェス
    - 単色サーフェス
    - テキストサーフェス

  - コンポーネント
    - \subpage label_page
    - サーフェス回転用ラベル

  - イベント処理
    - \subpage text_input_page

  \n
  \section gui_module_comment_section コメントページ

  - http://sourceforge.jp/forum/forum.php?forum_id=18515

  \n
*/
