Add new mm_image_clone_image() API 48/201748/3
authorhj kim <backto.kim@samsung.com>
Tue, 19 Mar 2019 07:05:25 +0000 (16:05 +0900)
committerhj kim <backto.kim@samsung.com>
Wed, 20 Mar 2019 02:08:06 +0000 (11:08 +0900)
Change-Id: I1e34098d9c475f8faec0e07835fc202bc571ff36

common/include/mm_util_image.h
common/mm_util_image.c
magick/mm_util_magick.c [changed mode: 0644->0755]

index 01701cf81c9b667f6cb4051c9785ea82822a6be4..fbeb21fdec10164eac328e9614c7d7ecc35b3e8d 100755 (executable)
@@ -33,7 +33,7 @@ void mm_image_debug_image(mm_util_image_h image, const char *message);
 int mm_image_create_image(unsigned int width, unsigned int height,
                mm_util_color_format_e color, const unsigned char *data, size_t size,
                mm_util_image_h *image);
-
+int mm_image_clone_image(mm_util_image_h src, mm_util_image_h *dst);
 int mm_image_set_delay_time(mm_util_image_h image, unsigned int delay_time);
 int mm_image_get_delay_time(mm_util_image_h image, unsigned int *delay_time);
 /* After @data is used, it must be released using free().*/
index 8e52f04598327f2875655ae2088b8bbed0a3867e..ab538d8eee667085de941e301c8a56c1017d2ac6 100755 (executable)
@@ -86,6 +86,36 @@ int mm_image_create_image(unsigned int width, unsigned int height,
        return MM_UTIL_ERROR_NONE;
 }
 
+int mm_image_clone_image(mm_util_image_h src, mm_util_image_h *dst)
+{
+       mm_image_info_s *_src = (mm_image_info_s *)src;
+       mm_image_info_s *_dst = NULL;
+
+       mm_util_retvm_if(!src, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid src");
+       mm_util_retvm_if(!dst, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid dst");
+
+       _dst = (mm_image_info_s *)calloc(1, sizeof(mm_image_info_s));
+       mm_util_retvm_if((_dst == NULL), MM_UTIL_ERROR_OUT_OF_MEMORY, "Memory allocation failed");
+
+       _dst->width = _src->width;
+       _dst->height = _src->height;
+       _dst->color = _src->color;
+       _dst->size = _src->size;
+
+       _dst->data = calloc(1, _dst->size);
+       if (!_dst->data) {
+               mm_util_error("Memory allocation failed");
+               mm_image_destroy_image(_dst);
+               return MM_UTIL_ERROR_OUT_OF_MEMORY;
+       }
+
+       memcpy(_dst->data, _src->data, _dst->size);
+
+       *dst = (mm_util_image_h)_dst;
+
+       return MM_UTIL_ERROR_NONE;
+}
+
 int mm_image_set_delay_time(mm_util_image_h image, unsigned int delay_time)
 {
        mm_image_info_s *_image = (mm_image_info_s *)image;
old mode 100644 (file)
new mode 100755 (executable)