OSDN Git Service

Changed the implementation of the callback func.
authorShinichiro Nakamura <shinta.main.jp@gmail.com>
Mon, 27 Aug 2012 20:49:49 +0000 (05:49 +0900)
committerShinichiro Nakamura <shinta.main.jp@gmail.com>
Mon, 27 Aug 2012 20:49:49 +0000 (05:49 +0900)
soft/utils/common/tinybmpio/bmpimg.c
soft/utils/common/tinybmpio/bmpimg.h

index 5232a35..694f795 100644 (file)
@@ -180,26 +180,26 @@ static void draw_char(bmpimg_t *p, const int x, const int y, const int size, con
  * @param p BMP画像ハンドラ。
  * @param w 画像横方向サイズ。
  * @param h 画像縦方向サイズ。
- * @param func_pixel_write ピクセル書き込み関数。
- * @param extobj_pixel_write ピクセル書き込み関数に渡すパラメータ。
- * @param func_pixel_read ピクセル読み込み関数。
- * @param extobj_pixel_read ピクセル読み込み関数に渡すパラメータ。
+ * @param writer ピクセル書き込み関数。
+ * @param writer_extobj ピクセル書き込み関数に渡すパラメータ。
+ * @param reader ピクセル読み込み関数。
+ * @param reader_extobj ピクセル読み込み関数に渡すパラメータ。
  */
 void bmpimg_open(
         bmpimg_t *p,
         const int w,
         const int h,
-        void (*func_pixel_write)(const int x, const int y, const uint8_t r, const uint8_t g, const uint8_t b, void *extobj_pixel_write),
-        void *extobj_pixel_write,
-        void (*func_pixel_read)(const int x, const int y, uint8_t *r, uint8_t *g, uint8_t *b, void *extobj_pixel_read),
-        void *extobj_pixel_read)
+        PIXEL_WRITER writer,
+        void *writer_extobj,
+        PIXEL_READER reader,
+        void *reader_extobj)
 {
     p->w = w;
     p->h = h;
-    p->func_pixel_write = func_pixel_write;
-    p->extobj_pixel_write = extobj_pixel_write;
-    p->func_pixel_read = func_pixel_read;
-    p->extobj_pixel_read = extobj_pixel_read;
+    p->writer        = writer;
+    p->writer_extobj = writer_extobj;
+    p->reader        = reader;
+    p->reader_extobj = reader_extobj;
 }
 
 /**
@@ -222,12 +222,12 @@ int bmpimg_draw_box(bmpimg_t *p, const int x1, const int y1, const int x2, const
         return -1;
     }
     for (y = y1; y <= y2; y++) {
-        p->func_pixel_write(x1, y, color->r, color->g, color->b, p->extobj_pixel_write);
-        p->func_pixel_write(x2, y, color->r, color->g, color->b, p->extobj_pixel_write);
+        p->writer(x1, y, color->r, color->g, color->b, p->writer_extobj);
+        p->writer(x2, y, color->r, color->g, color->b, p->writer_extobj);
     }
     for (x = x1; x <= x2; x++) {
-        p->func_pixel_write(x, y1, color->r, color->g, color->b, p->extobj_pixel_write);
-        p->func_pixel_write(x, y2, color->r, color->g, color->b, p->extobj_pixel_write);
+        p->writer(x, y1, color->r, color->g, color->b, p->writer_extobj);
+        p->writer(x, y2, color->r, color->g, color->b, p->writer_extobj);
     }
     return 0;
 }
@@ -253,7 +253,7 @@ int bmpimg_fill_box(bmpimg_t *p, const int x1, const int y1, const int x2, const
     }
     for (y = y1; y <= y2; y++) {
         for (x = x1; x <= x2; x++) {
-            p->func_pixel_write(x, y, color->r, color->g, color->b, p->extobj_pixel_write);
+            p->writer(x, y, color->r, color->g, color->b, p->writer_extobj);
         }
     }
     return 0;
@@ -364,7 +364,7 @@ int bmpimg_draw_line(bmpimg_t *p, const int x1, const int y1, const int x2, cons
  */
 int bmpimg_draw_pixel(bmpimg_t *p, const int x, const int y, bmpcol_t *color)
 {
-    p->func_pixel_write(x, y, color->r, color->g, color->b, p->extobj_pixel_write);
+    p->writer(x, y, color->r, color->g, color->b, p->writer_extobj);
     return 0;
 }
 
@@ -439,34 +439,36 @@ void bmpimg_draw_progressbar(
  * @brief BMPファイルから読み込む。
  *
  * @param p BMP画像ハンドラ。
- * @param filename ファイル名。
+ * @param reader ファイル読み込み関数。
+ * @param reader_extobj ファイル読み込み関数に渡す外部オブジェクト。
  *
  * @retval 0 成功。
  * @retval !0 失敗。
  */
 int bmpimg_bmp_read(
         bmpimg_t *p,
-        int (*func_fread)(void *buf, const uint32_t size, void *extobj_func_fread),
-        void *extobj_func_fread)
+        FILE_READER reader,
+        void *reader_extobj)
 {
-    return bmpfile_read(func_fread, extobj_func_fread, p->func_pixel_write, p->extobj_pixel_write);
+    return bmpfile_read(reader, reader_extobj, p->writer, p->writer_extobj);
 }
 
 /**
  * @brief BMPファイルに書き込む。
  *
  * @param p BMP画像ハンドラ。
- * @param filename ファイル名。
+ * @param writer ファイル書き込み関数。
+ * @param writer_extobj ファイル書き込み関数に渡す外部オブジェクト。
  *
  * @retval 0 成功。
  * @retval !0 失敗。
  */
 int bmpimg_bmp_write(
         bmpimg_t *p,
-        int (*func_fwrite)(const void *buf, const uint32_t size, void *extobj_func_fwrite),
-        void *extobj_func_fwrite)
+        FILE_WRITER writer,
+        void *writer_extobj)
 {
-    return bmpfile_write(p->w, p->h, func_fwrite, extobj_func_fwrite, p->func_pixel_read, p->extobj_pixel_read);
+    return bmpfile_write(p->w, p->h, writer, writer_extobj, p->reader, p->reader_extobj);
 }
 
 /**
index 7d43367..7e99a97 100644 (file)
 
 #include "bmpint.h"
 
+typedef void (*PIXEL_WRITER)(const int x, const int y, const uint8_t r, const uint8_t g, const uint8_t b, void *extobj_pixel_writer);
+typedef void (*PIXEL_READER)(const int x, const int y, uint8_t *r, uint8_t *g, uint8_t *b, void *extobj_pixel_reader);
+typedef int (*FILE_READER)(void *buf, const uint32_t size, void *extobj_func_fread);
+typedef int (*FILE_WRITER)(const void *buf, const uint32_t size, void *extobj_func_fwrite);
+
 /**
  * @brief BMP画像ハンドラの実装。
  */
 typedef struct {
     int w;                  /**< 画像横方向サイズ。 */
     int h;                  /**< 画像縦方向サイズ。 */
-    void (*func_pixel_write)(const int x, const int y, const uint8_t r, const uint8_t g, const uint8_t b, void *extobj_pixel_write);
-    void *extobj_pixel_write;
-    void (*func_pixel_read)(const int x, const int y, uint8_t *r, uint8_t *g, uint8_t *b, void *extobj_pixel_read);
-    void *extobj_pixel_read;
+    PIXEL_WRITER writer;    /**< Pixel Writer. */
+    void *writer_extobj;    /**< External Object for the pixel writer. */
+    PIXEL_READER reader;    /**< Pixel Reader. */
+    void *reader_extobj;    /**< External Object for the pixel reader. */
 } bmpimg_t;
 
 #define BMPIMG_GET_W(BMPIMG)    ((BMPIMG)->w)
@@ -104,19 +109,19 @@ typedef struct {
  * @param p BMP画像ハンドラ。
  * @param w 画像横方向サイズ。
  * @param h 画像縦方向サイズ。
- * @param func_pixel_write ピクセル書き込み関数。
- * @param extobj_pixel_write ピクセル書き込み関数に渡すパラメータ。
- * @param func_pixel_read ピクセル読み込み関数。
- * @param extobj_pixel_read ピクセル読み込み関数に渡すパラメータ。
+ * @param writer ピクセル書き込み関数。
+ * @param writer_extobj ピクセル書き込み関数に渡すパラメータ。
+ * @param reader ピクセル読み込み関数。
+ * @param reader_extobj ピクセル読み込み関数に渡すパラメータ。
  */
 void bmpimg_open(
         bmpimg_t *p,
         const int w,
         const int h,
-        void (*func_pixel_write)(const int x, const int y, const uint8_t r, const uint8_t g, const uint8_t b, void *extobj_pixel_write),
-        void *extobj_pixel_write,
-        void (*func_pixel_read)(const int x, const int y, uint8_t *r, uint8_t *g, uint8_t *b, void *extobj_pixel_read),
-        void *extobj_pixel_read);
+        PIXEL_WRITER writer,
+        void *writer_extobj,
+        PIXEL_READER reader,
+        void *reader_extobj);
 
 /**
  * @brief ボックスを描画する。
@@ -242,29 +247,31 @@ void bmpimg_draw_progressbar(
  * @brief BMPファイルから読み込む。
  *
  * @param p BMP画像ハンドラ。
- * @param filename ファイル名。
+ * @param reader ファイル読み込み関数。
+ * @param reader_extobj ファイル読み込み関数に渡す外部オブジェクト。
  *
  * @retval 0 成功。
  * @retval !0 失敗。
  */
 int bmpimg_bmp_read(
         bmpimg_t *p,
-        int (*func_fread)(void *buf, const uint32_t size, void *extobj_func_fread),
-        void *extobj_func_fread);
+        FILE_READER reader,
+        void *reader_extobj);
 
 /**
  * @brief BMPファイルに書き込む。
  *
  * @param p BMP画像ハンドラ。
- * @param filename ファイル名。
+ * @param writer ファイル書き込み関数。
+ * @param writer_extobj ファイル書き込み関数に渡す外部オブジェクト。
  *
  * @retval 0 成功。
  * @retval !0 失敗。
  */
 int bmpimg_bmp_write(
         bmpimg_t *p,
-        int (*func_fwrite)(const void *buf, const uint32_t size, void *extobj_func_fwrite),
-        void *extobj_func_fwrite);
+        FILE_WRITER writer,
+        void *writer_extobj);
 
 /**
  * @brief BMP画像をクローズする。