From e6a16e585cd30aa540550b9ac76ba630daf03fe8 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Wed, 3 Apr 2013 16:21:14 +0000 Subject: Apparently zoom in clip editor was broken Also silenced some warnings in glutil. --- source/blender/editors/screen/glutil.c | 12 ++++++++---- source/blender/editors/space_clip/clip_draw.c | 8 +++++++- 2 files changed, 15 insertions(+), 5 deletions(-) (limited to 'source') diff --git a/source/blender/editors/screen/glutil.c b/source/blender/editors/screen/glutil.c index ec1a085f9da..3469604b3dd 100644 --- a/source/blender/editors/screen/glutil.c +++ b/source/blender/editors/screen/glutil.c @@ -533,8 +533,10 @@ void glaDrawPixelsTexScaled(float x, float y, int img_w, int img_h, int format, components = 3; else if (format == GL_LUMINANCE) components = 1; - else + else { BLI_assert(!"Incompatible format passed to glaDrawPixelsTexScaled"); + return; + } if (type == GL_FLOAT) { /* need to set internal format to higher range float */ @@ -1088,7 +1090,7 @@ void glaDrawImBuf_glsl_ctx(const bContext *C, ImBuf *ibuf, float x, float y, int glColor4f(1.0, 1.0, 1.0, 1.0); if (ibuf->rect_float) { - int format; + int format = 0; if (ibuf->channels == 3) format = GL_RGB; @@ -1097,8 +1099,10 @@ void glaDrawImBuf_glsl_ctx(const bContext *C, ImBuf *ibuf, float x, float y, int else BLI_assert(!"Incompatible number of channels for GLSL display"); - glaDrawPixelsTex(x, y, ibuf->x, ibuf->y, format, GL_FLOAT, - zoomfilter, ibuf->rect_float); + if (format != 0) { + glaDrawPixelsTex(x, y, ibuf->x, ibuf->y, format, GL_FLOAT, + zoomfilter, ibuf->rect_float); + } } else if (ibuf->rect) { /* ibuf->rect is always RGBA */ diff --git a/source/blender/editors/space_clip/clip_draw.c b/source/blender/editors/space_clip/clip_draw.c index 773d6031ee1..b4e2dc364d9 100644 --- a/source/blender/editors/space_clip/clip_draw.c +++ b/source/blender/editors/space_clip/clip_draw.c @@ -279,7 +279,13 @@ static void draw_movieclip_buffer(const bContext *C, SpaceClip *sc, ARegion *ar, filter = GL_NEAREST; } - glaDrawImBuf_glsl_ctx(C, ibuf, x, y, GL_NEAREST); + /* set zoom */ + glPixelZoom(zoomx * width / ibuf->x, zoomy * height / ibuf->y); + + glaDrawImBuf_glsl_ctx(C, ibuf, x, y, filter); + + /* reset zoom */ + glPixelZoom(1.0f, 1.0f); if (ibuf->planes == 32) glDisable(GL_BLEND); -- cgit v1.2.3