// "gbox32.c" // stack:4k malloc:20k // copyright(C) 2004 Hidemi KAWAI // TAB=4で見てくれたらうれしいです #include #define AUTO_MALLOC 0 /* ちょっとしたマクロ */ #if (!defined(LIB_GBOX_BUF)) #define LIB_GBOX_BUF(gbox) ((void *) ((char *) (gbox) + 64)) #define LIB_GBOX_BUF32(gbox) ((unsigned int *) LIB_GBOX_BUF(gbox)) #endif #define pixel(x, y) *(p + (y) * 100 + (x)) /* この100はグラフィックボックスの横幅 */ void OsaskMain() { struct LIB_WINDOW *window; struct LIB_TEXTBOX *title; struct LIB_GRAPHBOX *gbox; int i, j; unsigned int *p; lib_init(AUTO_MALLOC); window = lib_openwindow(AUTO_MALLOC, 0x0200, 136, 48); title = lib_opentextbox(0x1000, AUTO_MALLOC, 0, 6, 1, 0, 0, window, 0x00c0, 0); lib_putstring_ASCII(0x0000, 0, 0, title, 0, 0, "gbox32"); gbox = lib_opengraphbox(1, AUTO_MALLOC, 4, 0xc6c6c6, 100, 48, 18, 0, window); /* サイズ:100x48 */ /* 位置:(18, 0) */ /* 初期カラー:c6c6c6 */ p = LIB_GBOX_BUF32(gbox); /* 点を打つ */ pixel(12, 34) = 0x123456; /* 座標(12, 34)にカラー0x123456の点を描く */ /* カラーはhtmlとかの#123456と同じ意味です。 r << 16 | g << 8 | b */ /* pixelマクロを使いたくなければ、次のように書いてもかまいません */ /* p[34 * 100 + 12] = 0x123456; */ /* 他にも好きなだけ描画してください */ /* バッファの内容を確実に画面に反映させる */ lib_flushgraphbox(0x8004, window, 18, 0, 100, 48, 0, p); lib_waitsignaltime(0x0001, 0, 0); /* 終了 */ }