OSDN Git Service

Added the image canvas object.
[bluetank/bluetank.git] / soft / utils / lcdtool / main.c
index 2afff57..b114d5e 100644 (file)
@@ -3,21 +3,11 @@
 #include <stdlib.h>
 #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) {