X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=soft%2Futils%2Flcdtool%2Fmain.c;h=b114d5e20d43e8a4d4389f06eabbb85cb29e6165;hb=6449ae7b4b80d0468a37099df1941cb285615b02;hp=2afff5746dbc0d354c90042678b66607254f3bf3;hpb=71d2019465570bd335ec9f1eb7c6631726e89fd7;p=bluetank%2Fbluetank.git diff --git a/soft/utils/lcdtool/main.c b/soft/utils/lcdtool/main.c index 2afff57..b114d5e 100644 --- a/soft/utils/lcdtool/main.c +++ b/soft/utils/lcdtool/main.c @@ -3,21 +3,11 @@ #include #include "bmpimg.h" #include "lcdimg.h" +#include "canvas.h" int main(int argc, char **argv); /** - * @brief 独自に規定したキャンバス構造。 - * @details - * このサンプルでは、汎用プラットフォーム向けなのでメモリ上に画像を格納する。 - */ -typedef struct { - int w; /**< 横方向サイズ。 */ - int h; /**< 縦方向サイズ。 */ - bmpcol_t *buffer; /**< バッファへのポインタ。 */ -} canvas_t; - -/** * @brief ストリームからデータを読み込む。 * @details * インターフェースでは、何からどのように読み込むかについて一切感知していない。 @@ -49,59 +39,6 @@ int func_fwrite(const void *buf, const unsigned int size, void *extobj) return fwrite(buf, size, 1, fp); } -/** - * @brief ピクセル値を書き込む。 - * @details - * インターフェースでは、何にどのように書き込むかについて一切感知していない。 - * この関数では、何にどのように書き込むかについて解決する。 - * - * @param x X座標。 - * @param y Y座標。 - * @param r 赤。 - * @param g 緑。 - * @param b 青。 - * @param extobj ユーザが指定した拡張オブジェクト。 - */ -void func_pixel_write(const int x, const int y, const uint8_t r, const uint8_t g, const uint8_t b, void *extobj) -{ - canvas_t *canvas = (canvas_t *)extobj; - bmpcol_t *buffer = canvas->buffer + (canvas->w * y) + x; - buffer->r = r; - buffer->g = g; - buffer->b = b; -} - -/** - * @brief ピクセル値を読み込む。 - * @details - * インターフェースでは、何からどのように読み込むかについて一切感知していない。 - * この関数では、何からどのように読み込むかについて解決する。 - * - * @param x X座標。 - * @param y Y座標。 - * @param r 赤。 - * @param g 緑。 - * @param b 青。 - * @param extobj ユーザが指定した拡張オブジェクト。 - */ -void func_pixel_read(const int x, const int y, uint8_t *r, uint8_t *g, uint8_t *b, void *extobj) -{ - canvas_t *canvas = (canvas_t *)extobj; - bmpcol_t *buffer = canvas->buffer + (canvas->w * y) + x; - *r = buffer->r; - *g = buffer->g; - *b = buffer->b; -} - -void lcdimg_drawer(const int px, const int py, bool on, void *extobj) -{ - canvas_t *canvas = (canvas_t *)extobj; - bmpcol_t *buffer = canvas->buffer + (canvas->w * py) + px; - buffer->r = on ? 255 : 16; - buffer->g = on ? 255 : 16; - buffer->b = on ? 255 : 16; -} - int main(int argc, char **argv) { const int imgw = 240; @@ -124,7 +61,7 @@ int main(int argc, char **argv) * ピクセル入出力関数を渡して初期化する。 * ユーザが指定可能な拡張オブジェクトに、独自に規定したキャンバスを渡しておく。 */ - bmpimg_open(&bmpimg, imgw, imgh, func_pixel_write, &canvas, func_pixel_read, &canvas); + bmpimg_open(&bmpimg, imgw, imgh, canvas_pixel_writer, &canvas, canvas_pixel_reader, &canvas); lcdimg = lcdimg_open(8, 2); lcdimg_text(lcdimg, 0, 0, 'T'); @@ -132,7 +69,7 @@ int main(int argc, char **argv) lcdimg_text(lcdimg, 2, 0, 's'); lcdimg_text(lcdimg, 3, 0, 't'); - lcdimg_draw(lcdimg, lcdimg_drawer, &canvas); + lcdimg_draw(lcdimg, canvas_drawer, &canvas); fp = fopen("lcdimg.bmp", "wb"); if (fp != NULL) {