diff options
author | Antony Riakiotakis <kalast@gmail.com> | 2015-02-16 15:02:00 +0300 |
---|---|---|
committer | Antony Riakiotakis <kalast@gmail.com> | 2015-02-16 15:02:00 +0300 |
commit | 5a14dd7476a2c499da61ae0525f97f29cb4c3305 (patch) | |
tree | cee2bdcab4fbbc14a1db0610a3fed65643681cea /source/blender/editors/space_sequencer/sequencer_draw.c | |
parent | 84ea48d58b90218f97025f94e0b924d7aea665cb (diff) | |
parent | 7c3d5a3337313663befef4c603341f6c1adf78b5 (diff) |
Merge branch 'master' into gooseberry
Conflicts:
source/blender/editors/space_sequencer/sequencer_draw.c
Diffstat (limited to 'source/blender/editors/space_sequencer/sequencer_draw.c')
-rw-r--r-- | source/blender/editors/space_sequencer/sequencer_draw.c | 75 |
1 files changed, 41 insertions, 34 deletions
diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c index 1644efb2adf..13a15e19b7e 100644 --- a/source/blender/editors/space_sequencer/sequencer_draw.c +++ b/source/blender/editors/space_sequencer/sequencer_draw.c @@ -971,16 +971,40 @@ static ImBuf *sequencer_make_scope(Scene *scene, ImBuf *ibuf, ImBuf *(*make_scop return scope; } -void draw_image_seq(const bContext *C, Scene *scene, ARegion *ar, SpaceSeq *sseq, int cfra, int frame_ofs, bool draw_overlay, bool draw_overdrop) +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); struct ImBuf *ibuf = NULL; struct ImBuf *scope = NULL; struct View2D *v2d = &ar->v2d; /* int rectx, recty; */ /* UNUSED */ - float viewrectx, viewrecty; - float render_size = 0.0; - float proxy_size = 100.0; + float viewrect[2]; float col[3]; GLuint texid; GLuint last_texid; @@ -1004,30 +1028,7 @@ void draw_image_seq(const bContext *C, Scene *scene, ARegion *ar, SpaceSeq *sseq } } - render_size = sseq->render_size; - if (render_size == 0) { - render_size = scene->r.size; - } - else { - proxy_size = render_size; - } - if (render_size < 0) { - return; - } - - 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; - } - - if ((!draw_overlay || sseq->overlay_type == SEQ_DRAW_OVERLAY_REFERENCE) && !draw_overdrop) { + if ((!draw_overlay || sseq->overlay_type == SEQ_DRAW_OVERLAY_REFERENCE) && !draw_backdrop) { UI_GetThemeColor3fv(TH_SEQ_PREVIEW, col); glClearColor(col[0], col[1], col[2], 0.0); glClear(GL_COLOR_BUFFER_BIT); @@ -1037,6 +1038,10 @@ void draw_image_seq(const bContext *C, Scene *scene, ARegion *ar, SpaceSeq *sseq if (G.is_rendering) return; + if (sseq->render_size == SEQ_PROXY_RENDER_SIZE_NONE) { + return; + } + ibuf = sequencer_ibuf_get(bmain, scene, sseq, cfra, frame_ofs); if (ibuf == NULL) @@ -1045,6 +1050,8 @@ void draw_image_seq(const bContext *C, Scene *scene, ARegion *ar, SpaceSeq *sseq if (ibuf->rect == NULL && ibuf->rect_float == NULL) return; + sequencer_display_size(scene, sseq, viewrect); + if (sseq->mainb != SEQ_DRAW_IMG_IMBUF || sseq->zebra != 0) { SequencerScopes *scopes = &sseq->scopes; @@ -1091,8 +1098,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; @@ -1102,8 +1109,8 @@ void draw_image_seq(const bContext *C, Scene *scene, ARegion *ar, SpaceSeq *sseq /* without this colors can flicker from previous opengl state */ glColor4ub(255, 255, 255, 255); - if (!draw_overdrop) { - UI_view2d_totRect_set(v2d, viewrectx + 0.5f, viewrecty + 0.5f); + if (!draw_backdrop) { + 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 */ @@ -1210,7 +1217,7 @@ void draw_image_seq(const bContext *C, Scene *scene, ARegion *ar, SpaceSeq *sseq else glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, ibuf->x, ibuf->y, 0, format, type, display_buffer); - if (draw_overdrop) { + if (draw_backdrop) { UI_view2d_view_restore(C); } glBegin(GL_QUADS); @@ -1235,7 +1242,7 @@ void draw_image_seq(const bContext *C, Scene *scene, ARegion *ar, SpaceSeq *sseq glTexCoord2f(1.0f, 0.0f); glVertex2f(v2d->tot.xmax, v2d->tot.ymin); } } - else if (draw_overdrop) { + else if (draw_backdrop) { float imagex = (scene->r.size * scene->r.xsch) / 200.0f * sseq->overdrop_zoom; float imagey = (scene->r.size * scene->r.ysch) / 200.0f * sseq->overdrop_zoom; float xofs = BLI_rcti_size_x(&ar->winrct)/2.0f + sseq->overdrop_offset[0]; |