[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26641] trunk/blender/source/blender: bugfix [#20990] maker name don't show in render stamp

Campbell Barton ideasman42 at gmail.com
Sat Feb 6 15:56:26 CET 2010


Revision: 26641
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26641
Author:   campbellbarton
Date:     2010-02-06 15:56:25 +0100 (Sat, 06 Feb 2010)

Log Message:
-----------
bugfix [#20990] maker name don't show in render stamp

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_scene.h
    trunk/blender/source/blender/blenkernel/intern/image.c
    trunk/blender/source/blender/blenkernel/intern/scene.c
    trunk/blender/source/blender/editors/space_view3d/view3d_draw.c

Modified: trunk/blender/source/blender/blenkernel/BKE_scene.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_scene.h	2010-02-06 14:32:50 UTC (rev 26640)
+++ trunk/blender/source/blender/blenkernel/BKE_scene.h	2010-02-06 14:56:25 UTC (rev 26641)
@@ -68,6 +68,9 @@
 struct Object *scene_find_camera(struct Scene *sc);
 struct Object *scene_find_camera_switch(struct Scene *scene); // DURIAN_CAMERA_SWITCH
 
+char *scene_find_marker_name(struct Scene *scene, int frame);
+char *scene_find_last_marker_name(struct Scene *scene, int frame);
+
 struct Base *scene_add_base(struct Scene *sce, struct Object *ob);
 void scene_deselect_all(struct Scene *sce);
 void scene_select_base(struct Scene *sce, struct Base *selbase);

Modified: trunk/blender/source/blender/blenkernel/intern/image.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/image.c	2010-02-06 14:32:50 UTC (rev 26640)
+++ trunk/blender/source/blender/blenkernel/intern/image.c	2010-02-06 14:56:25 UTC (rev 26641)
@@ -1011,9 +1011,9 @@
 	}
 	
 	if (scene->r.stamp & R_STAMP_MARKER) {
-		TimeMarker *marker = NULL; // XXX get_frame_marker(scene->r.cfra);
+		char *name = scene_find_last_marker_name(scene, CFRA);
 	
-		if (marker) strcpy(text, marker->name);
+		if (name)	strcpy(text, name);
 		else 		strcpy(text, "<none>");
 		
 		if (do_prefix)		sprintf(stamp_data->marker, "Marker %s", text);

Modified: trunk/blender/source/blender/blenkernel/intern/scene.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/scene.c	2010-02-06 14:32:50 UTC (rev 26640)
+++ trunk/blender/source/blender/blenkernel/intern/scene.c	2010-02-06 14:56:25 UTC (rev 26641)
@@ -732,26 +732,47 @@
 }
 #endif
 
-static char *get_cfra_marker_name(Scene *scene)
+char *scene_find_marker_name(Scene *scene, int frame)
 {
 	ListBase *markers= &scene->markers;
 	TimeMarker *m1, *m2;
 
 	/* search through markers for match */
 	for (m1=markers->first, m2=markers->last; m1 && m2; m1=m1->next, m2=m2->prev) {
-		if (m1->frame==CFRA)
+		if (m1->frame==frame)
 			return m1->name;
 
 		if (m1 == m2)
 			break;
 
-		if (m2->frame==CFRA)
+		if (m2->frame==frame)
 			return m2->name;
 	}
 
 	return NULL;
 }
 
+/* return the current marker for this frame,
+we can have more then 1 marker per frame, this just returns the first :/ */
+char *scene_find_last_marker_name(Scene *scene, int frame)
+{
+	TimeMarker *marker, *best_marker = NULL;
+	int best_frame = -MAXFRAME*2;
+	for (marker= scene->markers.first; marker; marker= marker->next) {
+		if (marker->frame==frame) {
+			return marker;
+		}
+
+		if ( marker->frame > best_frame && marker->frame < frame) {
+			best_marker = marker;
+			best_frame = marker->frame;
+		}
+	}
+
+	return best_marker ? best_marker->name : NULL;
+}
+
+
 Base *scene_add_base(Scene *sce, Object *ob)
 {
 	Base *b= MEM_callocN(sizeof(*b), "scene_add_base");

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_draw.c	2010-02-06 14:32:50 UTC (rev 26640)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_draw.c	2010-02-06 14:56:25 UTC (rev 26641)
@@ -755,27 +755,6 @@
 	}
 }
 
-
-static char *get_cfra_marker_name(Scene *scene)
-{
-	ListBase *markers= &scene->markers;
-	TimeMarker *m1, *m2;
-	
-	/* search through markers for match */
-	for (m1=markers->first, m2=markers->last; m1 && m2; m1=m1->next, m2=m2->prev) {
-		if (m1->frame==CFRA)
-			return m1->name;
-		
-		if (m1 == m2)
-			break;		
-		
-		if (m2->frame==CFRA)
-			return m2->name;
-	}
-	
-	return NULL;
-}
-
 /* draw info beside axes in bottom left-corner: 
 * 	framenum, object name, bone name (if available), marker name (if available)
 */
@@ -785,7 +764,7 @@
 	short offset=30;
 	
 	/* get name of marker on current frame (if available) */
-	markern= get_cfra_marker_name(scene);
+	markern= scene_find_marker_name(scene, CFRA);
 	
 	/* check if there is an object */
 	if(ob) {





More information about the Bf-blender-cvs mailing list