[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28897] trunk/blender: Blender TIFF support

Matt Ebb matt at mke3.net
Fri May 21 05:25:59 CEST 2010


Revision: 28897
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28897
Author:   broken
Date:     2010-05-21 05:25:38 +0200 (Fri, 21 May 2010)

Log Message:
-----------
Blender TIFF support

* Removed dynamic linking libTIFF code and change it to static linking 
(built into the blender executable). Dynamic linking made things a 
fair bit more complicated and wasn't working at all before on OS X - 
the dylib didn't exist and wasn't being copied. Since TIFF is more heavily
depended upon now in Blender, it makes sense to make it less 'optional'
and more in line with other libraries.

I've updated both CMake and scons, and CMake on OS X/64bit works fine.
It's now up to other platform/build system maintainers to enable this for 
their respective platforms (Campbell will check it for linux). For windows,
and non-64bit osx, we need static libtiff libraries in /lib.

I've added options WITH_TIFF for CMake and WITH_BF_TIFF for scons,
so if blender won't build because of this, you should be able to disable 
these options until your build system has been updated.

* Bonus feature: while doing this, I added support for loading 16bit and 32bit 
per channel TIFFs - they get converted to Blender's float buffers. Handy for 
zbrush displacement maps!

Modified Paths:
--------------
    trunk/blender/CMake/macros.cmake
    trunk/blender/CMakeLists.txt
    trunk/blender/config/darwin-config.py
    trunk/blender/config/linux2-config.py
    trunk/blender/config/win32-mingw-config.py
    trunk/blender/config/win32-vc-config.py
    trunk/blender/config/win64-vc-config.py
    trunk/blender/source/blender/blenkernel/BKE_global.h
    trunk/blender/source/blender/blenkernel/CMakeLists.txt
    trunk/blender/source/blender/blenkernel/SConscript
    trunk/blender/source/blender/blenkernel/intern/image.c
    trunk/blender/source/blender/editors/CMakeLists.txt
    trunk/blender/source/blender/editors/space_file/SConscript
    trunk/blender/source/blender/editors/space_file/writeimage.c
    trunk/blender/source/blender/editors/space_image/SConscript
    trunk/blender/source/blender/editors/space_image/image_ops.c
    trunk/blender/source/blender/imbuf/CMakeLists.txt
    trunk/blender/source/blender/imbuf/SConscript
    trunk/blender/source/blender/imbuf/intern/filetype.c
    trunk/blender/source/blender/imbuf/intern/tiff.c
    trunk/blender/source/blender/imbuf/intern/util.c
    trunk/blender/source/blender/makesrna/SConscript
    trunk/blender/source/blender/makesrna/intern/CMakeLists.txt
    trunk/blender/source/blender/makesrna/intern/rna_scene.c
    trunk/blender/source/creator/CMakeLists.txt
    trunk/blender/source/creator/SConscript
    trunk/blender/source/creator/creator.c
    trunk/blender/tools/Blender.py
    trunk/blender/tools/btools.py

Removed Paths:
-------------
    trunk/blender/source/blender/imbuf/intern/dynlibtiff.c
    trunk/blender/source/blender/imbuf/intern/dynlibtiff.h

Modified: trunk/blender/CMake/macros.cmake
===================================================================
--- trunk/blender/CMake/macros.cmake	2010-05-20 20:34:20 UTC (rev 28896)
+++ trunk/blender/CMake/macros.cmake	2010-05-21 03:25:38 UTC (rev 28897)
@@ -61,6 +61,9 @@
   IF(WITH_OPENEXR)
     LINK_DIRECTORIES(${OPENEXR_LIBPATH})
   ENDIF(WITH_OPENEXR)
+  IF(WITH_TIFF)
+    LINK_DIRECTORIES(${TIFF_LIBPATH})
+  ENDIF(WITH_TIFF)
   IF(WITH_QUICKTIME)
     LINK_DIRECTORIES(${QUICKTIME_LIBPATH})
   ENDIF(WITH_QUICKTIME)
@@ -134,6 +137,9 @@
   IF(WITH_QUICKTIME)
     TARGET_LINK_LIBRARIES(${target} ${QUICKTIME_LIB})
   ENDIF(WITH_QUICKTIME)
+  IF(WITH_TIFF)
+    TARGET_LINK_LIBRARIES(${target} ${TIFF_LIBRARY})
+  ENDIF(WITH_TIFF)
   IF(WITH_OPENEXR)
     IF(WIN32)
       FOREACH(loop_var ${OPENEXR_LIB})

Modified: trunk/blender/CMakeLists.txt
===================================================================
--- trunk/blender/CMakeLists.txt	2010-05-20 20:34:20 UTC (rev 28896)
+++ trunk/blender/CMakeLists.txt	2010-05-21 03:25:38 UTC (rev 28897)
@@ -63,6 +63,7 @@
 OPTION(WITH_INTERNATIONAL "Enable I18N   (International fonts and text)" ON)
 OPTION(WITH_ELBEEM        "Enable Elbeem (Fluid Simulation)" ON)
 OPTION(WITH_OPENEXR       "Enable OpenEXR Support (http://www.openexr.com)" ON)
+OPTION(WITH_TIFF          "Enable LibTIFF Support" ON)
 OPTION(WITH_DDS           "Enable DDS Support" ON)
 OPTION(WITH_FFMPEG        "Enable FFMPeg Support (http://ffmpeg.mplayerhq.hu/)" OFF)
 OPTION(WITH_PYTHON        "Enable Embedded Python API" ON)
@@ -410,6 +411,8 @@
 
 	SET(TIFF ${LIBDIR}/tiff)
 	SET(TIFF_INC ${TIFF}/include)
+	SET(TIFF_LIBRARY tiff)
+	SET(TIFF_LIBPATH ${TIFF}/lib)
   
 	SET(WINTAB_INC ${LIBDIR}/wintab/include) 
 
@@ -586,6 +589,8 @@
 
 	SET(TIFF ${LIBDIR}/tiff)
 	SET(TIFF_INC ${TIFF}/include)
+	SET(TIFF_LIBRARY tiff)
+	SET(TIFF_LIBPATH ${TIFF}/lib)
 
 	SET(EXETYPE MACOSX_BUNDLE)
 

Modified: trunk/blender/config/darwin-config.py
===================================================================
--- trunk/blender/config/darwin-config.py	2010-05-20 20:34:20 UTC (rev 28896)
+++ trunk/blender/config/darwin-config.py	2010-05-21 03:25:38 UTC (rev 28897)
@@ -163,8 +163,11 @@
 BF_PNG_LIB = 'png'
 BF_PNG_LIBPATH = '${BF_PNG}/lib'
 
+WITH_BF_TIFF = True
 BF_TIFF = LIBDIR + '/tiff'
 BF_TIFF_INC = '${BF_TIFF}/include'
+BF_TIFF_LIB = 'tiff'
+BF_TIFF_LIBPATH = '${BF_TIFF}/lib'
 
 WITH_BF_ZLIB = True
 BF_ZLIB = '/usr'

Modified: trunk/blender/config/linux2-config.py
===================================================================
--- trunk/blender/config/linux2-config.py	2010-05-20 20:34:20 UTC (rev 28896)
+++ trunk/blender/config/linux2-config.py	2010-05-21 03:25:38 UTC (rev 28897)
@@ -68,8 +68,10 @@
 BF_PNG_INC = '${BF_PNG}/include'
 BF_PNG_LIB = 'png'
 
+WITH_BF_TIFF = True
 BF_TIFF = '/usr'
 BF_TIFF_INC = '${BF_TIFF}/include'
+BF_TIFF_LIB = 'tiff'
 
 WITH_BF_ZLIB = True
 BF_ZLIB = '/usr'

Modified: trunk/blender/config/win32-mingw-config.py
===================================================================
--- trunk/blender/config/win32-mingw-config.py	2010-05-20 20:34:20 UTC (rev 28896)
+++ trunk/blender/config/win32-mingw-config.py	2010-05-21 03:25:38 UTC (rev 28897)
@@ -73,6 +73,7 @@
 BF_PNG_LIB = 'png'
 BF_PNG_LIBPATH = '${BF_PNG}/lib'
 
+WITH_BF_TIFF = True
 BF_TIFF = LIBDIR + '/tiff'
 BF_TIFF_INC = '${BF_TIFF}/include'
 BF_TIFF_LIB = 'libtiff'

Modified: trunk/blender/config/win32-vc-config.py
===================================================================
--- trunk/blender/config/win32-vc-config.py	2010-05-20 20:34:20 UTC (rev 28896)
+++ trunk/blender/config/win32-vc-config.py	2010-05-21 03:25:38 UTC (rev 28897)
@@ -79,6 +79,7 @@
 BF_PNG_LIB = 'libpng_st'
 BF_PNG_LIBPATH = '${BF_PNG}/lib'
 
+WITH_BF_TIFF = True
 BF_TIFF = LIBDIR + '/tiff'
 BF_TIFF_INC = '${BF_TIFF}/include'
 BF_TIFF_LIB = 'libtiff'

Modified: trunk/blender/config/win64-vc-config.py
===================================================================
--- trunk/blender/config/win64-vc-config.py	2010-05-20 20:34:20 UTC (rev 28896)
+++ trunk/blender/config/win64-vc-config.py	2010-05-21 03:25:38 UTC (rev 28897)
@@ -75,6 +75,7 @@
 BF_PNG_LIB = 'libpng'
 BF_PNG_LIBPATH = '${BF_PNG}/lib'
 
+WITH_BF_TIFF = True
 BF_TIFF = LIBDIR + '/tiff'
 BF_TIFF_INC = '${BF_TIFF}/include'
 BF_TIFF_LIB = 'libtiff'

Modified: trunk/blender/source/blender/blenkernel/BKE_global.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_global.h	2010-05-20 20:34:20 UTC (rev 28896)
+++ trunk/blender/source/blender/blenkernel/BKE_global.h	2010-05-21 03:25:38 UTC (rev 28897)
@@ -83,9 +83,6 @@
 	struct VFont *selfont;
 	struct ListBase ttfdata;
 
-	/* libtiff flag used to determine if shared library loaded for libtiff*/
-	int have_libtiff;
-
 	/* this variable is written to / read from FileGlobal->fileflags */
 	int fileflags;
     

Modified: trunk/blender/source/blender/blenkernel/CMakeLists.txt
===================================================================
--- trunk/blender/source/blender/blenkernel/CMakeLists.txt	2010-05-20 20:34:20 UTC (rev 28896)
+++ trunk/blender/source/blender/blenkernel/CMakeLists.txt	2010-05-21 03:25:38 UTC (rev 28897)
@@ -50,6 +50,10 @@
 	ADD_DEFINITIONS(-DWITH_OPENEXR)
 ENDIF(WITH_OPENEXR)
 
+IF(WITH_TIFF)
+	ADD_DEFINITIONS(-DWITH_TIFF)
+ENDIF(WITH_TIFF)
+
 IF(WITH_OPENJPEG)
 	ADD_DEFINITIONS(-DWITH_OPENJPEG)
 ENDIF(WITH_OPENJPEG)

Modified: trunk/blender/source/blender/blenkernel/SConscript
===================================================================
--- trunk/blender/source/blender/blenkernel/SConscript	2010-05-20 20:34:20 UTC (rev 28896)
+++ trunk/blender/source/blender/blenkernel/SConscript	2010-05-21 03:25:38 UTC (rev 28897)
@@ -38,6 +38,9 @@
 if env['WITH_BF_OPENEXR']:
 	defs.append('WITH_OPENEXR')
 
+if env['WITH_BF_TIFF']:
+	defs.append('WITH_TIFF')
+
 if env['WITH_BF_OPENJPEG']:
 	defs.append('WITH_OPENJPEG')
 

Modified: trunk/blender/source/blender/blenkernel/intern/image.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/image.c	2010-05-20 20:34:20 UTC (rev 28896)
+++ trunk/blender/source/blender/blenkernel/intern/image.c	2010-05-21 03:25:38 UTC (rev 28897)
@@ -779,10 +779,12 @@
 		if(!BLI_testextensie(string, ".bmp"))
 			extension= ".bmp";
 	}
-	else if(G.have_libtiff && (imtype==R_TIFF)) {
+#ifdef WITH_TIFF
+	else if(imtype==R_TIFF) {
 		if(!BLI_testextensie(string, ".tif") && 
 			!BLI_testextensie(string, ".tiff")) extension= ".tif";
 	}
+#endif
 #ifdef WITH_OPENEXR
 	else if( ELEM(imtype, R_OPENEXR, R_MULTILAYER)) {
 		if(!BLI_testextensie(string, ".exr"))
@@ -1187,12 +1189,14 @@
 	else if ((imtype==R_BMP)) {
 		ibuf->ftype= BMP;
 	}
-	else if ((G.have_libtiff) && (imtype==R_TIFF)) {
+#ifdef WITH_TIFF
+	else if (imtype==R_TIFF) {
 		ibuf->ftype= TIF;
 
 		if(subimtype & R_TIFF_16BIT)
 			ibuf->ftype |= TIF_16BIT;
 	}
+#endif
 #ifdef WITH_OPENEXR
 	else if (imtype==R_OPENEXR || imtype==R_MULTILAYER) {
 		ibuf->ftype= OPENEXR;

Modified: trunk/blender/source/blender/editors/CMakeLists.txt
===================================================================
--- trunk/blender/source/blender/editors/CMakeLists.txt	2010-05-20 20:34:20 UTC (rev 28896)
+++ trunk/blender/source/blender/editors/CMakeLists.txt	2010-05-21 03:25:38 UTC (rev 28897)
@@ -57,6 +57,10 @@
 	ADD_DEFINITIONS(-DWITH_OPENEXR)
 ENDIF(WITH_OPENEXR)
 
+IF(WITH_TIFF)
+	ADD_DEFINITIONS(-DWITH_TIFF)
+ENDIF(WITH_TIFF)
+
 IF(WITH_OPENJPEG)
 	ADD_DEFINITIONS(-DWITH_OPENJPEG)
 ENDIF(WITH_OPENJPEG)

Modified: trunk/blender/source/blender/editors/space_file/SConscript
===================================================================
--- trunk/blender/source/blender/editors/space_file/SConscript	2010-05-20 20:34:20 UTC (rev 28896)
+++ trunk/blender/source/blender/editors/space_file/SConscript	2010-05-21 03:25:38 UTC (rev 28897)
@@ -12,9 +12,13 @@
 
 if env['WITH_BF_OPENJPEG']:
     defs.append('WITH_OPENJPEG')
+
 if env['WITH_BF_OPENEXR']:
 	defs.append('WITH_OPENEXR')
 
+if env['WITH_BF_TIFF']:
+	defs.append('WITH_TIFF')
+
 if env['OURPLATFORM'] == 'linux2':
     cflags='-pthread'
     incs += ' ../../../extern/binreloc/include'

Modified: trunk/blender/source/blender/editors/space_file/writeimage.c
===================================================================
--- trunk/blender/source/blender/editors/space_file/writeimage.c	2010-05-20 20:34:20 UTC (rev 28896)
+++ trunk/blender/source/blender/editors/space_file/writeimage.c	2010-05-21 03:25:38 UTC (rev 28897)
@@ -143,10 +143,11 @@
 		case R_BMP:
 			strcpy(str, "Save BMP");
 			break;
+#ifdef WITH_TIFF
 		case R_TIFF:
-			if (G.have_libtiff)
-				strcpy(str, "Save TIFF");
+			strcpy(str, "Save TIFF");
 			break;
+#endif
 #ifdef WITH_OPENEXR
 		case R_OPENEXR:
 			strcpy(str, "Save OpenEXR");

Modified: trunk/blender/source/blender/editors/space_image/SConscript
===================================================================
--- trunk/blender/source/blender/editors/space_image/SConscript	2010-05-20 20:34:20 UTC (rev 28896)
+++ trunk/blender/source/blender/editors/space_image/SConscript	2010-05-21 03:25:38 UTC (rev 28897)
@@ -13,6 +13,8 @@
 	defs.append('WITH_LCMS')
 if env['WITH_BF_OPENEXR']:
 	defs.append('WITH_OPENEXR')
+if env['WITH_BF_TIFF']:
+	defs.append('WITH_TIFF')
     
 if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'):
     incs += ' ' + env['BF_PTHREADS_INC']

Modified: trunk/blender/source/blender/editors/space_image/image_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_image/image_ops.c	2010-05-20 20:34:20 UTC (rev 28896)
+++ trunk/blender/source/blender/editors/space_image/image_ops.c	2010-05-21 03:25:38 UTC (rev 28897)
@@ -637,8 +637,9 @@
 		{R_JP2, "JPEG_2000", 0, "Jpeg 2000", ""},
 #endif
 		{R_IRIS, "IRIS", 0, "Iris", ""},
-	//if(G.have_libtiff)
+#ifdef WITH_TIFF
 		{R_TIFF, "TIFF", 0, "Tiff", ""},
+#endif
 		{R_RADHDR, "RADIANCE_HDR", 0, "Radiance HDR", ""},
 		{R_CINEON, "CINEON", 0, "Cineon", ""},
 		{R_DPX, "DPX", 0, "DPX", ""},

Modified: trunk/blender/source/blender/imbuf/CMakeLists.txt
===================================================================
--- trunk/blender/source/blender/imbuf/CMakeLists.txt	2010-05-20 20:34:20 UTC (rev 28896)
+++ trunk/blender/source/blender/imbuf/CMakeLists.txt	2010-05-21 03:25:38 UTC (rev 28897)
@@ -32,7 +32,6 @@
 	../avi ../blenkernel

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list