}
/* encodes color image to bmp image */
-static int _write_bmp(mm_image_info_s *decoded, const char *filename, void **memory, size_t *src_size)
+static int __write_bmp(mm_util_image_h decoded, const char *file_path, void **buffer, size_t *src_size)
{
+ mm_image_info_s *_decoded = (mm_image_info_s *)decoded;
bmpfile_t *bmp;
rgb_pixel_t pixel = { 0, 0, 0, 0 };
uint16_t row, col;
uint8_t *image;
- mm_util_retvm_if((decoded == NULL), MM_UTIL_ERROR_INVALID_PARAMETER, "invalid color image");
- mm_util_retvm_if(!MMUTIL_STRING_VALID(filename) && (memory == NULL || src_size == NULL), MM_UTIL_ERROR_INVALID_PARAMETER, "invalid bmp image");
+ mm_util_retvm_if(!decoded, MM_UTIL_ERROR_INVALID_PARAMETER, "invalid image src");
+ mm_util_retvm_if(!MMUTIL_STRING_VALID(file_path) && (!buffer || !src_size), MM_UTIL_ERROR_INVALID_PARAMETER, "invalid parameter");
+ mm_util_retvm_if(_decoded->color != MM_UTIL_COLOR_RGBA, MM_UTIL_ERROR_NOT_SUPPORTED_FORMAT, "not supported color [%d]", _decoded->color);
+
+ mm_util_fenter();
/* header of bmp image is create at 'bmp' */
- if ((bmp = bmp_create(decoded->width, decoded->height, BYTES_PER_PIXEL * 8)) == NULL) {
+ if ((bmp = bmp_create(_decoded->width, _decoded->height, BYTES_PER_PIXEL * 8)) == NULL) {
mm_util_error("Invalid depth value.");
return MM_UTIL_ERROR_INVALID_OPERATION;
}
/* pixcels of bmp image is stored at 'bmp' */
- image = (uint8_t *) decoded->data;
- for (row = 0; row != decoded->height; row++) {
- for (col = 0; col != decoded->width; col++) {
- size_t z = (row * decoded->width + col) * BYTES_PER_PIXEL;
+ image = (uint8_t *) _decoded->data;
+ for (row = 0; row != _decoded->height; row++) {
+ for (col = 0; col != _decoded->width; col++) {
+ size_t z = (row * _decoded->width + col) * BYTES_PER_PIXEL;
pixel.red = image[z];
pixel.green = image[z + 1];
pixel.blue = image[z + 2];
}
}
- /* write 'bmp' to file or memory */
- if (MMUTIL_STRING_VALID(filename)) {
- if (bmp_save(bmp, filename) == false) {
+ /* write 'bmp' to file or buffer */
+ if (MMUTIL_STRING_VALID(file_path)) {
+ mm_util_sec_debug("Save to file [%s]", file_path);
+ if (bmp_save(bmp, file_path) == false) {
mm_util_error("Saving bmp was failed.");
bmp_destroy(bmp);
return MM_UTIL_ERROR_INVALID_OPERATION;
}
} else {
- if (bmp_save2(bmp, memory, src_size) == false) {
+ mm_util_sec_debug("Save to buffer");
+ if (bmp_save2(bmp, buffer, src_size) == false) {
mm_util_error("Saving bmp was failed.");
bmp_destroy(bmp);
- MMUTIL_SAFE_FREE(*memory);
+ MMUTIL_SAFE_FREE(*buffer);
*src_size = 0;
return MM_UTIL_ERROR_INVALID_OPERATION;
}
}
bmp_destroy(bmp);
+
+ mm_util_fleave();
+
return MM_UTIL_ERROR_NONE;
}
return __read_bmp(NULL, memory, src_size, decoded);
}
-int mm_util_encode_bmp_to_file(mm_image_info_s *decoded, const char *filename)
+int mm_util_encode_bmp_to_file(mm_util_image_h decoded, const char *file_path)
{
- int ret = MM_UTIL_ERROR_NONE;
-
- mm_util_retvm_if(!MMUTIL_STRING_VALID(filename), MM_UTIL_ERROR_INVALID_PARAMETER, "invalid bmp image");
- mm_util_retvm_if((decoded == NULL), MM_UTIL_ERROR_INVALID_PARAMETER, "invalid color image");
-
- mm_util_fenter();
-
- ret = _write_bmp(decoded, filename, NULL, NULL);
- if (ret != MM_UTIL_ERROR_NONE)
- mm_util_error("_write_bmp failed (%d)", ret);
-
- mm_util_fleave();
+ mm_util_retvm_if(!MMUTIL_STRING_VALID(file_path), MM_UTIL_ERROR_INVALID_PARAMETER, "invalid file_path");
- return ret;
+ return __write_bmp(decoded, file_path, NULL, NULL);
}
-int mm_util_encode_bmp_to_memory(mm_image_info_s *decoded, void **buffer, size_t *size)
+int mm_util_encode_bmp_to_memory(mm_util_image_h decoded, void **buffer, size_t *size)
{
- int ret = MM_UTIL_ERROR_NONE;
-
- mm_util_retvm_if((decoded == NULL), MM_UTIL_ERROR_INVALID_PARAMETER, "invalid color image");
- mm_util_retvm_if((buffer == NULL || size == NULL), MM_UTIL_ERROR_INVALID_PARAMETER, "invalid bmp image");
-
- mm_util_fenter();
-
- ret = _write_bmp(decoded, NULL, buffer, size);
- if (ret != MM_UTIL_ERROR_NONE)
- mm_util_error("_write_bmp failed (%d)", ret);
-
- mm_util_fleave();
+ mm_util_retvm_if(!buffer, MM_UTIL_ERROR_INVALID_PARAMETER, "invalid buffer");
+ mm_util_retvm_if(!size, MM_UTIL_ERROR_INVALID_PARAMETER, "invalid size");
- return ret;
+ return __write_bmp(decoded, NULL, buffer, size);
}