cleanup: split VSE view-size into own function

This commit is contained in:
Campbell Barton 2015-02-16 13:19:22 +11:00
parent 5c747e7196
commit 7975c0d35a

@ -952,6 +952,32 @@ static ImBuf *sequencer_make_scope(Scene *scene, ImBuf *ibuf, ImBuf *(*make_scop
return scope;
}
static void sequencer_display_size(Scene *scene, SpaceSeq *sseq, float r_viewrect[2])
{
float render_size, proxy_size;
if (sseq->render_size == SEQ_PROXY_RENDER_SIZE_SCENE) {
render_size = (float)scene->r.size / 100.0f;
proxy_size = 1.0f;
}
else {
render_size = (float)sseq->render_size / 100.0f;
proxy_size = render_size;
}
r_viewrect[0] = (render_size * (float)scene->r.xsch);
r_viewrect[1] = (render_size * (float)scene->r.ysch);
/* rectx = viewrectx + 0.5f; */ /* UNUSED */
/* recty = viewrecty + 0.5f; */ /* UNUSED */
if (sseq->mainb == SEQ_DRAW_IMG_IMBUF) {
r_viewrect[0] *= scene->r.xasp / scene->r.yasp;
r_viewrect[0] /= proxy_size;
r_viewrect[1] /= proxy_size;
}
}
void draw_image_seq(const bContext *C, Scene *scene, ARegion *ar, SpaceSeq *sseq, int cfra, int frame_ofs, bool draw_overlay, bool draw_backdrop)
{
struct Main *bmain = CTX_data_main(C);
@ -959,9 +985,7 @@ void draw_image_seq(const bContext *C, Scene *scene, ARegion *ar, SpaceSeq *sseq
struct ImBuf *scope = NULL;
struct View2D *v2d = &ar->v2d;
/* int rectx, recty; */ /* UNUSED */
float viewrectx, viewrecty;
float render_size;
float proxy_size;
float viewrect[2];
float col[3];
GLuint texid;
GLuint last_texid;
@ -1007,28 +1031,7 @@ void draw_image_seq(const bContext *C, Scene *scene, ARegion *ar, SpaceSeq *sseq
if (ibuf->rect == NULL && ibuf->rect_float == NULL)
return;
if (sseq->render_size == SEQ_PROXY_RENDER_SIZE_SCENE) {
render_size = scene->r.size;
proxy_size = 100.0f;
}
else {
render_size = sseq->render_size;
proxy_size = render_size;
}
viewrectx = (render_size * (float)scene->r.xsch) / 100.0f;
viewrecty = (render_size * (float)scene->r.ysch) / 100.0f;
/* rectx = viewrectx + 0.5f; */ /* UNUSED */
/* recty = viewrecty + 0.5f; */ /* UNUSED */
if (sseq->mainb == SEQ_DRAW_IMG_IMBUF) {
viewrectx *= scene->r.xasp / scene->r.yasp;
viewrectx /= proxy_size / 100.0f;
viewrecty /= proxy_size / 100.0f;
}
sequencer_display_size(scene, sseq, viewrect);
if (sseq->mainb != SEQ_DRAW_IMG_IMBUF || sseq->zebra != 0) {
SequencerScopes *scopes = &sseq->scopes;
@ -1076,8 +1079,8 @@ void draw_image_seq(const bContext *C, Scene *scene, ARegion *ar, SpaceSeq *sseq
/* future files may have new scopes we don't catch above */
if (scope) {
scopes->reference_ibuf = ibuf;
viewrectx = scope->x;
viewrecty = scope->y;
viewrect[0] = scope->x;
viewrect[1] = scope->y;
}
else {
scopes->reference_ibuf = NULL;
@ -1088,7 +1091,7 @@ void draw_image_seq(const bContext *C, Scene *scene, ARegion *ar, SpaceSeq *sseq
glColor4ub(255, 255, 255, 255);
if (!draw_backdrop) {
UI_view2d_totRect_set(v2d, viewrectx + 0.5f, viewrecty + 0.5f);
UI_view2d_totRect_set(v2d, viewrect[0] + 0.5f, viewrect[1] + 0.5f);
UI_view2d_curRect_validate(v2d);
/* setting up the view - actual drawing starts here */
@ -1227,7 +1230,7 @@ void draw_image_seq(const bContext *C, Scene *scene, ARegion *ar, SpaceSeq *sseq
}
else if (draw_backdrop) {
float aspect = BLI_rcti_size_x(&ar->winrct) / (float)BLI_rcti_size_y(&ar->winrct);
float image_aspect = viewrectx / viewrecty;
float image_aspect = viewrect[0] / viewrect[1];
float imagex, imagey;
if (aspect >= image_aspect) {