* @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;
}
/**
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;
}
}
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;
*/
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;
}
* @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);
}
/**
#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)
* @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 ボックスを描画する。
* @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画像をクローズする。