趣味で作ってるロボット用ソフトウェア
 All Classes Files Functions Enumerations Enumerator Friends Pages
描画の枠組み

提供する GUI の枠組みについて説明します。

描画は、レイヤー、コンポーネント、サーフェス、という単位で管理していきます。

コンポーネントとサーフェス

サーフェスが画像などを扱う概念です。また、コンポーネントはサーフェスを用いてユーザインターフェースを提供するための概念です。
同じ花の画像を画面にいくつか描画するときに、花の画像そのものを管理するのがサーフェスで、描画するサーフェスの位置などを管理しているのがコンポーネント、といった管理をします。

同じサーフェスを複数のコンポーネントに登録する疑似コード

Image_surface flower("flower.png");
Label flower_left(&flower);
flower_left.set_position(Position<long>(200, 200));
Label flower_right(&flower);
flower_right.set_position(Position<long>(400, 200));

サーフェスでは、ファイルから読み出した画像の他に、文字列画像やアニメーションする画像なども扱います。

レイヤーとコンポーネント

コンポーネントを実際に描画するためには、レイヤーという概念を利用します。
レイヤーにコンポーネントを登録することで、画面に実際にコンポーネントが描画されます。レイヤーは複数用意できるため、表示するレイヤーを切替えて表示内容を切替えることができます。

複数レイヤーを作成する疑似コード

Screen_manager screen_manager(&screen);
Layer front_layer;
screen_manager_.push_front(&front_layer);
Layer back_layer;
screen_manager_.push_back(&back_layer);

レイヤーは、背景と動くオブジェクトを分けて管理したいときなどに利用できます。