Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2011-06-25 04:49:53 +0400
committerTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2011-06-25 04:49:53 +0400
commitd65ebf8c847c18f8be568eab4d5c65e7b630a40f (patch)
tree2795070d936c6ec7012a0339ea74d1d4b317c3d4 /source/blender/editors/render/render_opengl.c
parent17ee056fc6d15abc4b69a24ceac0e7f3d4dffa47 (diff)
parenta03707d408b9e37cd11124c93b1516eae9522139 (diff)
Merged changes in the trunk up to revision 37799.
Note for VS2008 plus CMake users: I had to remove OpenEXR debug libs from the "blender" project properties > Linker > Additional Dependencies. Otherwise I got a number of linker errors concerning duplicated symbols between libcmt.lib and libcmtd.lib.
Diffstat (limited to 'source/blender/editors/render/render_opengl.c')
-rw-r--r--source/blender/editors/render/render_opengl.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/source/blender/editors/render/render_opengl.c b/source/blender/editors/render/render_opengl.c
index 98463ce955f..a55f9101a0f 100644
--- a/source/blender/editors/render/render_opengl.c
+++ b/source/blender/editors/render/render_opengl.c
@@ -220,6 +220,11 @@ static void screen_opengl_render_apply(OGLRender *oglrender)
if(oglrender->write_still) {
char name[FILE_MAX];
int ok;
+
+ if(scene->r.planes == 8) {
+ IMB_color_to_bw(ibuf);
+ }
+
BKE_makepicstring(name, scene->r.pic, scene->r.cfra, scene->r.imtype, scene->r.scemode & R_EXTENSION, FALSE);
ok= BKE_write_ibuf(ibuf, name, scene->r.imtype, scene->r.subimtype, scene->r.quality); /* no need to stamp here */
if(ok) printf("OpenGL Render written to '%s'\n", name);
@@ -433,6 +438,19 @@ static int screen_opengl_render_anim_step(bContext *C, wmOperator *op)
ibuf= BKE_image_acquire_ibuf(oglrender->ima, &oglrender->iuser, &lock);
if(ibuf) {
+ short ibuf_free= FALSE;
+
+ /* color -> greyscale */
+ /* editing directly would alter the render view */
+ if(scene->r.planes == 8) {
+ ImBuf *ibuf_bw= IMB_dupImBuf(ibuf);
+ IMB_color_to_bw(ibuf_bw);
+ // IMB_freeImBuf(ibuf); /* owned by the image */
+ ibuf= ibuf_bw;
+
+ ibuf_free= TRUE;
+ }
+
if(BKE_imtype_is_movie(scene->r.imtype)) {
ok= oglrender->mh->append_movie(&scene->r, CFRA, (int*)ibuf->rect, oglrender->sizex, oglrender->sizey, oglrender->reports);
if(ok) {
@@ -453,6 +471,10 @@ static int screen_opengl_render_anim_step(bContext *C, wmOperator *op)
BKE_reportf(op->reports, RPT_INFO, "Saved file: %s", name);
}
}
+
+ if(ibuf_free) {
+ IMB_freeImBuf(ibuf);
+ }
}
BKE_image_release_ibuf(oglrender->ima, lock);