[Bf-blender-cvs] [4fae362] master: De-duplicate stamp callback

Campbell Barton noreply at git.blender.org
Fri Jun 12 15:08:22 CEST 2015


Commit: 4fae3620d0494ccc128c5e169c4a579449e28220
Author: Campbell Barton
Date:   Fri Jun 12 14:34:20 2015 +0200
Branches: master
https://developer.blender.org/rB4fae3620d0494ccc128c5e169c4a579449e28220

De-duplicate stamp callback

===================================================================

M	source/blender/blenkernel/intern/image.c

===================================================================

diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c
index 09934c8..90aa094 100644
--- a/source/blender/blenkernel/intern/image.c
+++ b/source/blender/blenkernel/intern/image.c
@@ -2079,41 +2079,43 @@ void BKE_render_result_stamp_info(Scene *scene, Object *camera, struct RenderRes
 	}
 }
 
-
-void BKE_imbuf_stamp_info(RenderResult *rr, struct ImBuf *ibuf)
+void BKE_stamp_info_callback(void *data, const struct StampData *stamp_data, StampCallback callback)
 {
-	struct StampData *stamp_data = rr->stamp_data;
+	if (!callback || !stamp_data) {
+		return;
+	}
+
+#define CALL(member, value_str) \
+	if (stamp_data->member[0]) { \
+		callback(data, value_str, stamp_data->member); \
+	} ((void)0)
 
-	if (!ibuf || !stamp_data) return;
+	CALL(file, "File");
+	CALL(note, "Note");
+	CALL(date, "Date");
+	CALL(marker, "Marker");
+	CALL(time, "Time");
+	CALL(frame, "Frame");
+	CALL(camera, "Camera");
+	CALL(cameralens, "Lens");
+	CALL(scene, "Scene");
+	CALL(strip, "Strip");
+	CALL(rendertime, "RenderTime");
 
-	if (stamp_data->file[0]) IMB_metadata_change_field(ibuf, "File",        stamp_data->file);
-	if (stamp_data->note[0]) IMB_metadata_change_field(ibuf, "Note",        stamp_data->note);
-	if (stamp_data->date[0]) IMB_metadata_change_field(ibuf, "Date",        stamp_data->date);
-	if (stamp_data->marker[0]) IMB_metadata_change_field(ibuf, "Marker",    stamp_data->marker);
-	if (stamp_data->time[0]) IMB_metadata_change_field(ibuf, "Time",        stamp_data->time);
-	if (stamp_data->frame[0]) IMB_metadata_change_field(ibuf, "Frame",      stamp_data->frame);
-	if (stamp_data->camera[0]) IMB_metadata_change_field(ibuf, "Camera",    stamp_data->camera);
-	if (stamp_data->cameralens[0]) IMB_metadata_change_field(ibuf, "Lens",  stamp_data->cameralens);
-	if (stamp_data->scene[0]) IMB_metadata_change_field(ibuf, "Scene",      stamp_data->scene);
-	if (stamp_data->strip[0]) IMB_metadata_change_field(ibuf, "Strip",      stamp_data->strip);
-	if (stamp_data->rendertime[0]) IMB_metadata_change_field(ibuf, "RenderTime", stamp_data->rendertime);
+#undef CALL
 }
 
-void BKE_stamp_info_callback(void *data, const struct StampData *stamp_data, StampCallback callback)
+/* wrap for callback only */
+static void metadata_change_field(void *data, const char *propname, const char *propvalue)
 {
-	if (!callback || !stamp_data) return;
-
-	if (stamp_data->file[0])       callback(data, "File",       stamp_data->file);
-	if (stamp_data->note[0])       callback(data, "Note",       stamp_data->note);
-	if (stamp_data->date[0])       callback(data, "Date",       stamp_data->date);
-	if (stamp_data->marker[0])     callback(data, "Marker",     stamp_data->marker);
-	if (stamp_data->time[0])       callback(data, "Time",       stamp_data->time);
-	if (stamp_data->frame[0])      callback(data, "Frame",      stamp_data->frame);
-	if (stamp_data->camera[0])     callback(data, "Camera",     stamp_data->camera);
-	if (stamp_data->cameralens[0]) callback(data, "Lens",       stamp_data->cameralens);
-	if (stamp_data->scene[0])      callback(data, "Scene",      stamp_data->scene);
-	if (stamp_data->strip[0])      callback(data, "Strip",      stamp_data->strip);
-	if (stamp_data->rendertime[0]) callback(data, "RenderTime", stamp_data->rendertime);
+	IMB_metadata_change_field(data, propname, propvalue);
+}
+
+void BKE_imbuf_stamp_info(RenderResult *rr, struct ImBuf *ibuf)
+{
+	struct StampData *stamp_data = rr->stamp_data;
+
+	BKE_stamp_info_callback(ibuf, stamp_data, metadata_change_field);
 }




More information about the Bf-blender-cvs mailing list