From 171d6bf509a7aa1eeb423bf66ec0dec0a5dfcc29 Mon Sep 17 00:00:00 2001 From: Lukas Toenne Date: Thu, 1 Mar 2012 11:19:41 +0000 Subject: Fix for Multilayer EXR API. This was using implementation stubs directly in the header file, causing problems with scons in particular. --- source/blender/imbuf/CMakeLists.txt | 4 ++ source/blender/imbuf/SConscript | 2 + .../blender/imbuf/intern/openexr/openexr_multi.h | 37 +++----------- .../blender/imbuf/intern/openexr/openexr_stub.cpp | 58 ++++++++++++++++++++++ 4 files changed, 70 insertions(+), 31 deletions(-) create mode 100644 source/blender/imbuf/intern/openexr/openexr_stub.cpp (limited to 'source/blender/imbuf') diff --git a/source/blender/imbuf/CMakeLists.txt b/source/blender/imbuf/CMakeLists.txt index 4c8a79e6372..649b7cb1c11 100644 --- a/source/blender/imbuf/CMakeLists.txt +++ b/source/blender/imbuf/CMakeLists.txt @@ -104,6 +104,10 @@ set(SRC if(WITH_IMAGE_OPENEXR) add_definitions(-DWITH_OPENEXR) +else() + list(APPEND SRC + intern/openexr/openexr_stub.cpp + ) endif() if(WITH_IMAGE_TIFF) diff --git a/source/blender/imbuf/SConscript b/source/blender/imbuf/SConscript index eae9665d23b..ca56003845f 100644 --- a/source/blender/imbuf/SConscript +++ b/source/blender/imbuf/SConscript @@ -20,6 +20,8 @@ if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): if env['WITH_BF_OPENEXR']: defs.append('WITH_OPENEXR') +else: + sources.append(os.path.join('intern', 'openexr', 'openexr_stub.cpp')) if env['WITH_BF_TIFF']: defs.append('WITH_TIFF') diff --git a/source/blender/imbuf/intern/openexr/openexr_multi.h b/source/blender/imbuf/intern/openexr/openexr_multi.h index 84e3da0baa7..cb18ddd219b 100644 --- a/source/blender/imbuf/intern/openexr/openexr_multi.h +++ b/source/blender/imbuf/intern/openexr/openexr_multi.h @@ -43,7 +43,10 @@ #define EXR_PASS_MAXCHAN 8 -#ifdef WITH_OPENEXR +#ifdef __cplusplus +extern "C" { +#endif + void * IMB_exr_get_handle (void); void IMB_exr_add_channel (void *handle, const char *layname, const char *passname, int xstride, int ystride, float *rect); @@ -64,36 +67,8 @@ void IMB_exr_multilayer_convert (void *handle, void *base, void IMB_exr_close (void *handle); - -#else - -/* ugly... but we only use it on pipeline.c, render module, now */ - -void * IMB_exr_get_handle (void) {return NULL;} -void IMB_exr_add_channel (void *handle, const char *layname, const char *channame, int xstride, int ystride, float *rect) { (void)handle; (void)layname; (void)channame; (void)xstride; (void)ystride; (void)rect; } - -int IMB_exr_begin_read (void *handle, const char *filename, int *width, int *height) { (void)handle; (void)filename; (void)width; (void)height; return 0;} -int IMB_exr_begin_write (void *handle, const char *filename, int width, int height, int compress) { (void)handle; (void)filename; (void)width; (void)height; (void)compress; return 0;} -void IMB_exrtile_begin_write (void *handle, const char *filename, int mipmap, int width, int height, int tilex, int tiley) { (void)handle; (void)filename; (void)mipmap; (void)width; (void)height; (void)tilex; (void)tiley; } - -void IMB_exr_set_channel (void *handle, char *layname, const char *channame, int xstride, int ystride, float *rect) { (void)handle; (void)layname; (void)channame; (void)xstride; (void)ystride; (void)rect; } - -void IMB_exr_read_channels (void *handle) { (void)handle; } -void IMB_exr_write_channels (void *handle) { (void)handle; } -void IMB_exrtile_write_channels (void *handle, int partx, int party, int level) { (void)handle; (void)partx; (void)party; (void)level; } -void IMB_exrtile_clear_channels (void *handle) { (void)handle; } - -void IMB_exr_multilayer_convert (void *handle, void *base, - void * (*addlayer)(void *base, char *str), - void (*addpass)(void *base, void *lay, char *str, float *rect, int totchan, char *chan_id)) - { - (void)handle; (void)base; (void)addlayer; (void)addpass; - } - -void IMB_exr_close (void *handle) { (void)handle; } - +#ifdef __cplusplus +} // extern "C" #endif - - #endif /* __OPENEXR_MULTI_H */ diff --git a/source/blender/imbuf/intern/openexr/openexr_stub.cpp b/source/blender/imbuf/intern/openexr/openexr_stub.cpp new file mode 100644 index 00000000000..29b12a2984b --- /dev/null +++ b/source/blender/imbuf/intern/openexr/openexr_stub.cpp @@ -0,0 +1,58 @@ +/** \file blender/imbuf/intern/openexr/openexr_stub.cpp + * \ingroup openexr + */ +/* +* + * ***** BEGIN GPLLICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * Copyright by Gernot Ziegler . + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): Austin Benesh, Ton Roosendaal (float, half, speedup, cleanup...). + * + * ***** END GPL LICENSE BLOCK ***** + */ + + +#include "openexr_api.h" +#include "openexr_multi.h" + + +void * IMB_exr_get_handle (void) {return NULL;} +void IMB_exr_add_channel (void *handle, const char *layname, const char *channame, int xstride, int ystride, float *rect) { (void)handle; (void)layname; (void)channame; (void)xstride; (void)ystride; (void)rect; } + +int IMB_exr_begin_read (void *handle, const char *filename, int *width, int *height) { (void)handle; (void)filename; (void)width; (void)height; return 0;} +int IMB_exr_begin_write (void *handle, const char *filename, int width, int height, int compress) { (void)handle; (void)filename; (void)width; (void)height; (void)compress; return 0;} +void IMB_exrtile_begin_write (void *handle, const char *filename, int mipmap, int width, int height, int tilex, int tiley) { (void)handle; (void)filename; (void)mipmap; (void)width; (void)height; (void)tilex; (void)tiley; } + +void IMB_exr_set_channel (void *handle, const char *layname, const char *channame, int xstride, int ystride, float *rect) { (void)handle; (void)layname; (void)channame; (void)xstride; (void)ystride; (void)rect; } + +void IMB_exr_read_channels (void *handle) { (void)handle; } +void IMB_exr_write_channels (void *handle) { (void)handle; } +void IMB_exrtile_write_channels (void *handle, int partx, int party, int level) { (void)handle; (void)partx; (void)party; (void)level; } +void IMB_exrtile_clear_channels (void *handle) { (void)handle; } + +void IMB_exr_multilayer_convert (void *handle, void *base, + void * (*addlayer)(void *base, char *str), + void (*addpass)(void *base, void *lay, char *str, float *rect, int totchan, char *chan_id)) + { + (void)handle; (void)base; (void)addlayer; (void)addpass; + } + +void IMB_exr_close (void *handle) { (void)handle; } -- cgit v1.2.3