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(struct Scene *sc);
|
||||||
struct Object *scene_find_camera_switch(struct Scene *scene); // DURIAN_CAMERA_SWITCH
|
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);
|
struct Base *scene_add_base(struct Scene *sce, struct Object *ob);
|
||||||
void scene_deselect_all(struct Scene *sce);
|
void scene_deselect_all(struct Scene *sce);
|
||||||
void scene_select_base(struct Scene *sce, struct Base *selbase);
|
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) {
|
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>");
|
else strcpy(text, "<none>");
|
||||||
|
|
||||||
if (do_prefix) sprintf(stamp_data->marker, "Marker %s", text);
|
if (do_prefix) sprintf(stamp_data->marker, "Marker %s", text);
|
||||||
|
@ -732,26 +732,47 @@ Object *scene_find_camera_switch(Scene *scene)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static char *get_cfra_marker_name(Scene *scene)
|
char *scene_find_marker_name(Scene *scene, int frame)
|
||||||
{
|
{
|
||||||
ListBase *markers= &scene->markers;
|
ListBase *markers= &scene->markers;
|
||||||
TimeMarker *m1, *m2;
|
TimeMarker *m1, *m2;
|
||||||
|
|
||||||
/* search through markers for match */
|
/* search through markers for match */
|
||||||
for (m1=markers->first, m2=markers->last; m1 && m2; m1=m1->next, m2=m2->prev) {
|
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;
|
return m1->name;
|
||||||
|
|
||||||
if (m1 == m2)
|
if (m1 == m2)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (m2->frame==CFRA)
|
if (m2->frame==frame)
|
||||||
return m2->name;
|
return m2->name;
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
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 *scene_add_base(Scene *sce, Object *ob)
|
||||||
{
|
{
|
||||||
Base *b= MEM_callocN(sizeof(*b), "scene_add_base");
|
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:
|
/* draw info beside axes in bottom left-corner:
|
||||||
* framenum, object name, bone name (if available), marker name (if available)
|
* 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;
|
short offset=30;
|
||||||
|
|
||||||
/* get name of marker on current frame (if available) */
|
/* 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 */
|
/* check if there is an object */
|
||||||
if(ob) {
|
if(ob) {
|
||||||
|
Loading…
Reference in New Issue
Block a user