はじめに
このページの内容及び、ダウンロードしたものは無保証です。一切の責任を作成者は負いません。自己責任で利用してください。また、サポートも一切行いません。as is でお願いします。
SDL_gui-関数一覧
全体に対する関数
- parts_set_textcolor - テキストの色の設定
- parts_set_windowsize - ウインドウサイズの設定
- text_buffer_allocate_parts - テキストバッファの確保
- draw_parts - 部品の描画
- parts_set_defaultcallback - 部品外のコールバック関数の設定
- checkbox_mark - チェックマーク文字
- free_parts - GUI データの解放
- free_text_buffer_parts - テキストバッファの解放
イベントハンドラ
- mouse_motion_parts - SDL_MOUSEMOTION のハンドラ
- mouse_button_up_parts - SDL_MOUSEBUTTONUP のハンドラ
- mouse_button_down_parts - SDL_MOUSEBUTTONDOWN のハンドラ
- textinput_parts - SDL_TEXTINPUT のハンドラ
- textediting_parts - SDL_TEXTEDITING のハンドラ
- keydown_parts - SDL_KEYDOWN のハンドラ
ダイアログボックス
- message_dlg - メッセージダイアログボックス
- ok_cancel_dlg - 確認ダイアログボックス
- yes_no_dlg - ボタン 3 つのダイアログボックス
部品の登録
- add_parts - 部品の登録
部品 ID チェック
- parts_is_parts - 部品 ID チェック
ゲッター
- parts_get_x - 部品の x 座標を取得
- parts_get_y - 部品の y 座標を取得
- parts_get_width - 部品の幅を取得
- parts_get_height - 部品の高さを取得
- parts_get_text - 部品の表示文字列を取得
- parts_get_font - 部品のフォントを取得
- parts_get_value - 部品に設定されている値を取得
- parts_get_callback - 部品のコールバック関数を取得
- parts_get_draw - 部品の描画カスタマイズ関数を取得
- parts_get_align - 部品のテキスト配置を取得
- parts_get_color - 部品の色を取得
- parts_get_type - 部品の種類を取得
- parts_get_mouse - 部品のマウスの状態を取得
- parts_get_next - 次の部品 ID を取得
- parts_is_hide - 部品が非表示になっているか
- parts_is_disabled - 部品が無効になっているか
セッター
- parts_set_x - 部品の x 座標を設定
- parts_set_y - 部品の y 座標を設定
- parts_set_width - 部品の幅を設定
- parts_set_height - 部品の高さを設定
- parts_set_text - 部品の表示文字列を設定
- parts_set_font - 部品のフォントを設定
- parts_set_value - 部品に設定されている値を設定
- parts_set_callback - 部品のコールバック関数を設定
- parts_set_draw - 部品の描画カスタマイズ関数を設定
- parts_set_color - 部品の色を設定
- parts_set_type - 部品の種類を設定
- parts_set_mouse - 部品のマウスの状態を設定
- parts_set_next - 次の部品 ID を設定
- parts_align_left - 部品のテキストを左揃えにする
- parts_align_center - 部品のテキストを中央揃えにする
- parts_align_right - 部品のテキストを右揃えにする
- parts_hide - 部品を非表示に設定
- parts_unhide - 部品を表示に設定
- parts_disable - 部品を無効に設定
- parts_enable - 部品を有効に設定
デバッグ用関数
- print_parts - 部品情報を表示
GUI 部品全体に対する関数
部品全体に対する設定です。設定すると全ての部品が影響を受けます。
-
GUI 部品に表示するテキストの色を設定する
void parts_set_textcolor(SDL_Color text_color, SDL_Color disable_color)引数SDL_Color text_color : テキストの色を示す SDLColorSDL_Color disable_color : 部品無効時のテキストの色を示す SDLColor戻り値なし説明デフォルトカラーは黒色とディムグレー色です。 -
ウィンドウのサイズを設定する
void parts_set_windowsize(int width, int height)引数int width : ウィンドウの幅int height : ウィンドウの高さ戻り値なし説明デフォルトではサイズは 0 です。 -
テキストバッファを確保する
void text_buffer_allocate_parts(int length)引数int length : 確保するバッファの文字数戻り値なし説明もし、確保できなかった場合、テキストボックスでの編集を行いません。指定された文字数 × 4 バイト分確保します。また、既に確保済みの場合、古い領域を解放して新しく確保し直します。 -
登録されている GUI 部品を描画する
void draw_parts(SDL_Renderer *renderer, Uint32 top)引数SDL_Renderer *renderer : GUI 部品を描画する際に使用するレンダラUint32 top : 描画する部品のルートとなる部品 ID戻り値なし説明指定した部品 ID をルートとする部品を描画します。 -
部品以外をクリックされたときのコールバック関数を設定する
parts_set_defaultcallback(void (*callback)(void))引数void (*callback)(void) : 引数なし、戻り値なしの関数ポインタ戻り値なし説明部品以外をクリックしたときに処理させるためのコールバック関数を設定します。この関数は、マウスプレス時に呼ばれます。 -
チェックボックスのチェックマークに使用する文字を設定する
checkbox_mark(char *mark)引数char *mark : チェックマークに使用する文字列へのポインタ戻り値なし説明デフォルトのチェックマークは"✓"です、 -
登録されている全ての GUI データを解放する
void free_parts(Uint32 top)引数Uint32 top : ルートとなる部品 ID戻り値なし説明指定した部品 ID をルートとする部品のデータを全て解放します。 -
テキストバッファを解放する
void free_text_buffer_parts(void)引数なし戻り値なし説明確保したテキストバッファを解放します。解放した後で、新たに確保することができます。
イベントハンドラ
イベントループの中で呼び出す関数です。テキストボックスを使わなければ、textinput_parts(), textediting_parts(), keydown_parts() は呼び出す必要はありません。
-
イベント SDL_MOUSEMOTION を処理するイベントハンドラ
void mouse_motion_parts(Uint32 top, int x, int y)引数Uint32 top : ルート部品 IDint x : イベントの発生した x 座標(event.button.x)int y : イベントの発生した y 座標(event.button.y)戻り値なし説明マウスが動いたときに発生するイベントのハンドラです。 -
イベント SDL_MOUSEBUTTONUP を処理するイベントハンドラ
void mouse_button_up_parts(Uint32 top, int x, int y)引数Uint32 top : ルート部品 IDint x : イベントの発生した x 座標(event.button.x)int y : イベントの発生した y 座標(event.button.y)戻り値なし説明マウスボタンが放されたときに発生するイベントのハンドラです。 -
イベント SDL_MOUSEBUTTONDOWN を処理するイベントハンドラ
void mouse_button_down_parts(Uint32 top, int x, int y)引数Uint32 top : ルート部品 IDint x : イベントの発生した x 座標(event.button.x)int y : イベントの発生した y 座標(event.button.y)戻り値なし説明マウスのボタンが押されたときに発生するイベントのハンドラです。 -
イベント SDL_TEXTINPUT を処理するイベントハンドラ
void void textinput_parts(char *text)引数char *text : 入力された文字列(event.text.text)戻り値なし説明確定テキストが入力された時に発生するイベントのハンドラです。 -
イベント SDL_TEXTEDITING を処理するイベントハンドラ
void textediting_parts(char *text, Sint32 start, Sint32 length)引数char *text : 変換中文字列(event.edit.text)Sint32 start : 変換中文字列の何文字目か(event.edit.start)Sint32 length : text の文字数(event.edit.length)戻り値なし説明変換中文字列が入力されたときに発生するイベントのハンドラです。 -
イベント SDL_KEYDOWN を処理するイベントハンドラです。
void keydown_parts(Uint32 top, SDL_Keycode sym)引数Uint32 top : ルート部品 IDSDL_Keycode sym : 押されたキーの仮想キーコード(event.key.keysym.sym)戻り値なし説明キーが押されたときに発生するイベントのハンドラです。backspace や delete キーなどの処理を行います。
ダイアログボックス
ダイアログは、ウィンドウ全体を隠し、描画します。関数内でイベントループを行います。なにかボタンが押されるまで呼び出し元には戻りません。
-
メッセージと OK ボタンがあるダイアログ
void message_dlg(SDL_Renderer *renderer, int width, int height, char *message, TTF_Font *font);引数SDL_Renderer *renderer : このレンダラを使って描画するint width : ダイアログの幅int height : ダイアログの高さchar *message : 表示するメッセージTTF_Font *font : テキスト表示に使用するフォント戻り値なし説明メッセージと OK ボタンのあるダイアログボックスを表示します。 -
メッセージと OK ボタン、 Cancel ボタンがあるダイアログ
int ok_cancel_dlg(SDL_Renderer *renderer, int width, int height, char *message, char *ok, char *cancel, TTF_Font *font);引数SDL_Renderer *renderer : このレンダラを使って描画するint width : ダイアログの幅int height : ダイアログの高さchar *message : 表示するメッセージchar *ok : OK ボタンに表示するテキストchar *cancel : Cancel ボタンに表示するテキストTTF_Font *font : テキスト表示に使用するフォント戻り値 int1: OK ボタンが押された
0: cancel ボタンが押された
-3: ダイアログが閉じるボタンで閉じられた(Window 表示時)説明ボタンを 2 つ持つ確認ダイアログボックスを表示します。 -
メッセージと Yes ボタン、 No ボタン、Cancel ボタンがあるダイアログ
int yes_no_dlg(SDL_Renderer *renderer, int width, int height, char *message, char *yes, char *no, char *cancel, TTF_Font *font)引数SDL_Renderer *renderer : このレンダラを使って描画するint width : ダイアログの幅int height : ダイアログの高さchar *message : 表示するメッセージchar *yes : Yes ボタンに表示するテキストchar *no : No ボタンに表示するテキストchar *cancel : Cancel ボタンに表示するテキストTTF_Font *font : テキスト表示に使用するフォント戻り値 int1: Yes ボタンが押された
0: No ボタンが押された
-1: cancel ボタンが押された
-3: ダイアログが閉じるボタンで閉じられた(Window 表示時)説明3 つのボタンを持つダイアログボックスを表示します。
部品の登録
部品を登録する関数は一つだけです。
-
部品の登録
Uint32 add_parts(Uint32 top, SDL_Rect *rect, void *value, PARTS_TYPE type, char *text, TTF_Font *font, SDL_Color *color);引数Uint32 top : ルート部品の ID。0 を指定すると新しいルートを作成するSDL_Rect *rect :部品のエリアを示す SDL_Rect 型へのポインタです。部品の左上の xy 座標、幅、高さのデータです。void *value :部品の種類によって設定すべきものが変わります。そのため、void * 型へキャストしてください。- LABEL, BUTTON, FLATBUTTON
そのままコールバック関数に設定した関数に渡します。数値でも変数へのポインタでも自由に使えます。 - CHECKBOX
チェック状態を示す 0 か 1 を指定します。0 が未チェック状態、1 がチェック状態です。 - RADIOBUTTON
クリックされたボタンの ID を保存する Uint32 型の変数のポインタを指定します。グループにしたいラジオボタンでは、同じ変数のポインタを指定します。 - DROPDOWNLIST
リストの何番目が選択された状態にするかを数値で指定します。リストの先頭が 0 番目になります。 - TEXTINPUT
テキストボックスではこのフィールドは使用しません。NULL を指定してください。
PARTS_TYPE type :部品の種類を指定します。部品の種類は、SDL_gui.h に定義してあるので、以下の定数を使ってください。typedef enum _parts_type { LABEL, // ラベル BUTTON, // ボタン FLATBUTTON, // 平面ボタン CHECKBOX, // チェックボックス RADIOBUTTON, // ラジオボタン DROPDOWNLIST, // ドロップダウンリスト TEXTINPUT // テキストボックス } PARTS_TYPE;char *text :ドロップダウンリストとテキストボックス以外は、部品上に表示する文字列を指定します。- DROPDOWNLIST
リストを表す文字列の配列 (char *[]) を指定します。配列の最後は、NULL を入れてください。char * 型にキャストしてください。 - TEXTINPUT
テキストボックスに入力された文字列を保存する領域のポインタを指定します。予め文字列が設定されていれば、その文字列がテキストボックスに表示されます。テキストボックスの初期状態を空にするには、指定した領域の先頭には終端文字('\0')を入れてください。
TTF_Font *font : テキスト表示に使用するフォントを指定します。SDL_Color *color : 部品の基本色を指定します。戻り値 Uint32登録しだ部品の ID説明この関数には、部品の種類を引数で指定します。指定した種類によって、一部の引数は意味が変わります。 - LABEL, BUTTON, FLATBUTTON
部品 ID チェック
部品 ID が正しいかどうかをチェックします。
-
部品 ID をチェックする
int parts_is_parts(Uint32 parts)引数Uint32 parts: 部品 ID戻り値 int1: 正しい部品 ID です。 0: 部品 ID ではありません.
ゲッター、セッター
GUI データの id フィールド以外の全てのフィールドは、ゲッター/セッターでアクセス可能です。ただし、セッターを使ってフィールドを変更した場合に動作がおかしくなる可能性もあります。殆どがマクロで実装されています。
ゲッター
-
部品の x 座標を取得する
int parts_get_x(Uint32 parts)引数Uint32 parts: 部品 ID戻り値 int部品の x 座標、エラー時 : -1 -
部品の y 座標を取得する
int parts_get_y(Uint32 parts)引数Uint32 parts: 部品 ID戻り値 int部品の y 座標、エラー時 : -1 -
部品の幅を取得する
int parts_get_width(Uint32 parts)引数Uint32 parts: 部品 ID戻り値 int部品の幅、エラー時 : -1 -
部品の高さを取得する
int parts_get_height(Uint32 parts)引数Uint32 parts: 部品 ID戻り値 int部品の高さ、エラー時 : -1 -
部品の表示文字列を取得する
char *parts_get_text(Uint32 parts)引数Uint32 parts: 部品 ID戻り値 char *部員に表示するテキスト、エラー時 NULL -
部品のフォントを取得する
TTF_Font *parts_get_font(Uint32 parts)引数Uint32 parts: 部品 ID戻り値 TTF_Font *部品のフォント、エラー時 NULL -
部品に設定されている値を取得する
void *parts_get_value(Uint32 parts)引数Uint32 parts: 部品 ID戻り値 void *部品に設定されている値、エラー時 NULL -
部品のコールバック関数を取得する
void (*)(Uint32, void *) parts_get_callback(Uint32 parts)引数Uint32 parts: 部品 ID戻り値 void (*)(Uint32, void *)部品のコールバック関数、エラー時 NULL -
部品の描画カスタマイズ関数を取得する
void (*)(SDL_Rendere, Uint32) parts_get_draw(Uint32 parts)引数Uint32 parts: 部品 ID戻り値 void (*)(SDL_Rendere, Uint32)部品の描画カスタマイズ関数、エラー時 NULL -
部品のテキスト配置を取得する
TEXT_ALIGN parts_get_align(Uint32 parts)引数Uint32 parts: 部品 ID戻り値 TEXT_ALIGN部品の文字配置 TEXT_LEFT(左揃え), TEXT_CENTER(中央揃え), TEXT_RIGHT(右揃え)、-1(エラー時) -
部品の色を取得する
SDL_Color parts_get_color(Uint32 parts)引数Uint32 parts: 部品 ID戻り値 SDL_Color部品の色、エラー時、透明な黒色 -
部品の種類を取得する
PARTS_TYPE parts_get_type(Uint32 parts)引数Uint32 parts: 部品 ID戻り値 PARTS_TYPE部品の種類、エラー時 : -1 -
部品のマウスの状態を取得する
int parts_get_mouse(Uint32 parts)引数Uint32 parts: 部品 ID戻り値 int0:マウスポインタは部品の外
1:部品上でマウスのボタンがプレスされた
2:部品の上にマウスがポインタがある
-1: エラー -
次の部品 ID を取得する
Uint32 parts_get_next(Uint32 parts)引数Uint32 parts: 部品 ID戻り値 Uint32次の部品 ID、エラー時: 0 -
部品が非表示になっているか調べる
int parts_is_hide(Uint32 parts)引数Uint32 parts: 部品 ID戻り値 int0: 表示, 1: 非表示、-1: エラー時 -
部品が無効になっているか調べる
int parts_is_disabled(Uint32 parts)引数Uint32 parts: 部品 ID戻り値 int0: 有効, 1: 無効、-1: エラー時
セッター
-
部品の x 座標を設定する
void parts_set_x(Uint32 parts, int x)引数Uint32 parts : 部品 IDint x : 部品の x 座標戻り値なし -
部品の y 座標を設定する
void parts_set_y(Uint32parts, int y)引数Uint32 parts : 部品 IDint y : 部品の y 座標戻り値なし -
部品の幅を設定する
void parts_set_width(Uint32 parts, int width)引数Uint32 parts : 部品 IDint width : 部品の幅戻り値なし -
部品の高さを設定する
void parts_set_height(Uint32 parts, int height)引数Uint32 parts : 部品 IDint height : 部品の高さ戻り値なし -
部品の表示テキストを設定する
void parts_set_text(Uint32 parts, char *text)引数Uint32 parts : 部品 IDchar *text : 部品に表示する文字列戻り値なし -
部品のテキスト表示のフォントを設定する
void parts_set_font(Uint32 parts, TTF_Font *font)引数Uint32 parts : 部品 IDTTF_Font *font : テキスト表示に使用するフォント戻り値なし -
部品の値を設定する
void parts_set_value(Uint32 parts, void *value)引数Uint32 parts : 部品 IDvoid *value : コールバック関数に渡す値戻り値なし -
部品のコールバック関数を設定する
void parts_set_callback(Uint32 parts, void (*callback)(Uint32, void *))引数Uint32 parts : 部品 IDvoid (*callback)(Uint32, void *) : マウスのボタンが話されたときに呼び出されるコールバック関数戻り値なし -
部品の表示をカスタマイズする描画関数を設定する
void parts_set_draw(Uint32 parts, void(*draw)(SDL_Renderer, Uint32))引数Uint32 parts : 部品 IDvoid(*draw)(SDL_Renderer, Uint32) : 描画のカスタマイズ用関数戻り値なし -
部品の色を設定する
void parts_set_color(Uint32 parts, SDL_Color color);引数Uint32 parts : 部品 IDSDL_Color color : 部品の色戻り値なし -
部品の種類を設定する
(通常は使用する必要はありません。使用する場合は十分に注意してください。)
void parts_set_type(Uint32 parts, PARTS_TYPE type)引数Uint32 parts : 部品 IDPARTS_TYPE type : 部品の種類戻り値なし -
マウスの状態を設定する
(通常は使用する必要はありません。使用する場合は十分に注意してください。)
void parts_set_mouse(Uint32 parts, int mouse)引数Uint32 parts : 部品 IDint mouse : 0: 通常, 1: マウスプレス 2:マウスオーバー戻り値なし -
部品にリストの次の部品 ID を設定する
(通常は使用する必要はありません。使用する場合は十分に注意してください。)
void parts_set_next(Uint32 parts, Uint32 next)引数Uint32 parts : 部品 IDUint32 next : この部品の次の部品の部品 ID戻り値なし -
部品の表示テキストを左揃えにする
void parts_align_left(Uint32 parts)引数Uint32 parts : 部品 ID戻り値なし -
部品の表示テキストを中央揃えにする
void parts_align_center(Uint32 parts)引数Uint32 parts : 部品 ID戻り値なし -
部品の表示テキストを右揃えにする
void parts_align_right(Uint32 parts)引数Uint32 parts : 部品 ID戻り値なし -
部品を非表示に設定する
void parts_hide(Uint32 parts)引数Uint32 parts : 部品 ID戻り値なし -
部品を表示に設定する
void parts_unhide(Uint32 parts)引数Uint32 parts : 部品 ID戻り値なし -
部品を無効に設定する
void parts_disable(Uint32 parts)引数Uint32 parts : 部品 ID戻り値なし -
部品を有効に設定する
void parts_enable(Uint32 parts)引数Uint32 parts : 部品 ID戻り値なし
デバッグ用関数
コンパイル時に DEBUG が定義されたときに使用できるデバッグ用の関数です。
-
部品情報を表示する
void print_parts(Uint32 parts)引数Uint32 parts : ルートの部品 ID戻り値なし説明指定したルート部品以下の部品のデータを端末に表示します。
更新履歴
- 2021.11.10 公開