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) {


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to