forked from bartvdbraak/blender
bugfix [#20990] maker name don't show in render stamp
This commit is contained in:
parent
eafdf42c24
commit
bd0b26f7bb
@ -68,6 +68,9 @@ int next_object(struct Scene *scene, int val, struct Base **base, struct Object
|
||||
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);
|
||||
|
@ -1011,9 +1011,9 @@ static void stampdata(Scene *scene, StampData *stamp_data, int do_prefix)
|
||||
}
|
||||
|
||||
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);
|
||||
|
@ -732,26 +732,47 @@ Object *scene_find_camera_switch(Scene *scene)
|
||||
}
|
||||
#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");
|
||||
|
@ -755,27 +755,6 @@ static void draw_viewport_name(ARegion *ar, View3D *v3d)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
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 @@ static void draw_selected_name(Scene *scene, Object *ob, View3D *v3d)
|
||||
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) {
|
||||
|
Loading…
Reference in New Issue
Block a user