diff options
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_image.h | 1 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/image.c | 18 |
2 files changed, 18 insertions, 1 deletions
diff --git a/source/blender/blenkernel/BKE_image.h b/source/blender/blenkernel/BKE_image.h index a6a709c204b..cbf692afd70 100644 --- a/source/blender/blenkernel/BKE_image.h +++ b/source/blender/blenkernel/BKE_image.h @@ -69,6 +69,7 @@ void BKE_imbuf_stamp_info(struct RenderResult *rr, struct ImBuf *ibuf); void BKE_stamp_info_from_imbuf(struct RenderResult *rr, struct ImBuf *ibuf); void BKE_stamp_info_callback(void *data, struct StampData *stamp_data, StampCallback callback, bool noskip); void BKE_render_result_stamp_data(struct RenderResult *rr, const char *key, const char *value); +struct StampData *BKE_stamp_data_copy(const struct StampData *stamp_data); void BKE_stamp_data_free(struct StampData *stamp_data); void BKE_image_stamp_buf( struct Scene *scene, struct Object *camera, const struct StampData *stamp_data_template, diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c index 5ab843e60c3..2a04c81230e 100644 --- a/source/blender/blenkernel/intern/image.c +++ b/source/blender/blenkernel/intern/image.c @@ -2181,7 +2181,23 @@ void BKE_render_result_stamp_data(RenderResult *rr, const char *key, const char BLI_addtail(&stamp_data->custom_fields, field); } -void BKE_stamp_data_free(struct StampData *stamp_data) +StampData *BKE_stamp_data_copy(const StampData *stamp_data) +{ + if (stamp_data == NULL) { + return NULL; + } + + StampData *stamp_datan = MEM_dupallocN(stamp_data); + BLI_duplicatelist(&stamp_datan->custom_fields, &stamp_data->custom_fields); + + LISTBASE_FOREACH(StampDataCustomField *, custom_fieldn, &stamp_datan->custom_fields) { + custom_fieldn->value = MEM_dupallocN(custom_fieldn->value); + } + + return stamp_datan; +} + +void BKE_stamp_data_free(StampData *stamp_data) { if (stamp_data == NULL) { return; |