Linux で SWIM を使用するには、SWIM が Linux のフレーム バッファー メモリに直接アクセスできる必要があります。これを行うには、/dev/fb デバイスにアクセスし、SWMO が使用されるデバイスに仮想メモリをマッピングします。以下の基本的なコード スニペットは、その方法を示しています。
#define サイズ 240
#define YSIZE 320
int fbdev;
Uint16 *fb;/* フレームバッファが 16 ビットデータであると仮定 */
/* オープンフレームバッファデバイス */
fbdev = open("/dev/fb0", O_RDWR);
/* mmap'd ポインタをフレームバッファに取得 */
fb = (Uint16 *) mmap(0, XSIZE * YSIZE * sizeof(Uint16), PROT_WRITE, MAP_SHARED, fbdev, 0);
このコードが実行されると、変数「fb」は、Linuxアプリケーションに直接書き込んだり読み取ったりできるメモリ内の使用可能なフレームバッファを指します。
次のステップは、ディスプレイのサイズに合わせてSWIMウィンドウを初期化することです。
SWIM_WINDOW_T勝1;
/* 背景が黒で境界線のないウィンドウを作成します */
if (swim_window_open(&win1, XSIZE, YSIZE, fb, 0, 0, XSIZE - 1, YSIZE - 1, 0, WHITE, BLACK, WHITE) == 0) {
fprintf(stderr, "チャットウィンドウを開くときにエラーが発生しました\n");
閉じる (fbdev);
-1 を返します。
}
/* 使用するフォントを選択 */
swim_set_font(&win1, (FONT_T *)&font_winfreesys14x16 );
/* 使用するペンの色を設定します */
swim_set_pen_color(&win1、白);
タイトルバーはウィンドウに簡単に追加できます。
swim_set_title(&s1, "SWIMウィンドウデモ", LIGHTGRAY);
ウィンドウ内のすべてのオブジェクトは、論理ウィンドウ座標を使用して描画されます。ピクセル/線とテキストの位置は互いに独立しているため、テキストを描画してから線を描画し、再度テキストを描画すると、線が描画される前に前のテキスト出力が終了した場所に次のテキストが配置されます。
/* シンプルなボックスを描きます */
swim_put_line(&win1, 10, 10, 50, 10);
swim_put_line(&win1, 50, 10, 50, 50);
swim_put_line(&win1, 50, 50, 10, 50);
swim_put_line(&win1, 10, 50, 10, 10);
Linuxでは、フレームバッファデバイスを閉じてアプリケーションを終了します。
閉じる (fbdev);
SWIMライブラリとアプリケーションノートは 、こちらからご覧いただけます。