diff options
409 files changed, 3604 insertions, 14371 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index bad6b878d54..71a52c0c928 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -166,9 +166,9 @@ TEST_SSE_SUPPORT() # For alternate Python locations the commandline can be used to override detected/default cache settings, e.g: # On Unix: -# cmake -D PYTHON_LIB=/usr/local/lib/python3.1/config/libpython3.1.so -D PYTHON_INC=/usr/local/include/python3.1 -G "Unix Makefiles" ../blender +# cmake -D PYTHON_LIBRARY=/usr/local/lib/python3.1/config/libpython3.1.so -D PYTHON_INCLUDE_DIRS=/usr/local/include/python3.1 -G "Unix Makefiles" ../blender # On Macs: -# cmake -D PYTHON_INC=/System/Library/Frameworks/Python.framework/Versions/3.1/include/python3.1 -D PYTHON_LIBPATH=/System/Library/Frameworks/Python.framework/Versions/3.1/lib/python3.1/config -G Xcode ../blender +# cmake -D PYTHON_INCLUDE_DIRS=/System/Library/Frameworks/Python.framework/Versions/3.1/include/python3.1 -D PYTHON_LIBPATH=/System/Library/Frameworks/Python.framework/Versions/3.1/lib/python3.1/config -G Xcode ../blender # # When changing any of this remember to update the notes in doc/build_systems/cmake.txt @@ -227,11 +227,11 @@ if(UNIX AND NOT APPLE) # find_package(PythonLibs) set(PYTHON /usr) set(PYTHON_VERSION 3.1) - set(PYTHON_INC "${PYTHON}/include/python${PYTHON_VERSION}" CACHE STRING "") - mark_as_advanced(PYTHON_INC) + set(PYTHON_INCLUDE_DIRS "${PYTHON}/include/python${PYTHON_VERSION}" CACHE STRING "") + mark_as_advanced(PYTHON_INCLUDE_DIRS) # set(PYTHON_BINARY python) # not used yet - set(PYTHON_LIB python${PYTHON_VERSION} CACHE STRING "") - mark_as_advanced(PYTHON_LIB) + set(PYTHON_LIBRARY python${PYTHON_VERSION} CACHE STRING "") + mark_as_advanced(PYTHON_LIBRARY) set(PYTHON_LIBPATH ${PYTHON}/lib CACHE STRING "") mark_as_advanced(PYTHON_LIBPATH) # find_package(PythonInterp) # not used yet @@ -246,6 +246,7 @@ if(UNIX AND NOT APPLE) mark_as_advanced(SDLMAIN_LIBRARY) mark_as_advanced(SDL_INCLUDE_DIR) mark_as_advanced(SDL_LIBRARY) + mark_as_advanced(SDL_LIBRARY_TEMP) # unset(SDLMAIN_LIBRARY CACHE) if(NOT SDL_FOUND) set(WITH_SDL OFF) @@ -411,12 +412,12 @@ elseif(WIN32) endif() set(PNG "${LIBDIR}/png") - set(PNG_INC "${PNG}/include") - set(PNG_LIBPATH ${PNG}/lib) + set(PNG_INCLUDE_DIR "${PNG}/include") + set(PNG_LIBPATH ${PNG}/lib) # not cmake defined set(JPEG "${LIBDIR}/jpeg") - set(JPEG_INC "${JPEG}/include") - set(JPEG_LIBPATH ${JPEG}/lib) + set(JPEG_INCLUDE_DIR "${JPEG}/include") + set(JPEG_LIBPATH ${JPEG}/lib) # not cmake defined set(WINTAB_INC ${LIBDIR}/wintab/include) @@ -495,10 +496,10 @@ elseif(WIN32) else() set(PNG_LIBRARIES libpng_st) endif() - set(JPEG_LIBRARY libjpeg) + set(JPEG_LIBRARIES libjpeg) set(ZLIB ${LIBDIR}/zlib) - set(ZLIB_INC ${ZLIB}/include) + set(ZLIB_INCLUDE_DIRS ${ZLIB}/include) set(ZLIB_LIBPATH ${ZLIB}/lib) if(CMAKE_CL_64) set(ZLIB_LIBRARIES libz) @@ -527,7 +528,7 @@ elseif(WIN32) set(OPENCOLLADA ${LIBDIR}/opencollada) set(OPENCOLLADA_INC ${OPENCOLLADA}/include) set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib) - set(OPENCOLLADA_LIB OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils OpenCOLLADAStreamWriter MathMLSolver GeneratedSaxParser xml2 buffer ftoa) + set(OPENCOLLADA_LIB OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils OpenCOLLADAStreamWriter MathMLSolver GeneratedSaxParser xml2 buffer ftoa UTF) set(PCRE_LIB pcre) endif() @@ -576,9 +577,9 @@ elseif(WIN32) if(WITH_PYTHON) set(PYTHON ${LIBDIR}/python) set(PYTHON_VERSION 3.1) - set(PYTHON_INC "${PYTHON}/include/python${PYTHON_VERSION}") + set(PYTHON_INCLUDE_DIRS "${PYTHON}/include/python${PYTHON_VERSION}") # set(PYTHON_BINARY python) # not used yet - set(PYTHON_LIB python31) + set(PYTHON_LIBRARY python31) set(PYTHON_LIBPATH ${PYTHON}/lib) endif() @@ -613,11 +614,11 @@ elseif(WIN32) set(GETTEXT_LIB intl) endif() - set(JPEG_LIBRARY libjpeg) + set(JPEG_LIBRARIES libjpeg) set(PNG_LIBRARIES png) set(ZLIB ${LIBDIR}/zlib) - set(ZLIB_INC ${ZLIB}/include) + set(ZLIB_INCLUDE_DIRS ${ZLIB}/include) set(ZLIB_LIBPATH ${ZLIB}/lib) set(ZLIB_LIBRARIES z) @@ -683,9 +684,9 @@ elseif(WIN32) if(WITH_PYTHON) set(PYTHON ${LIBDIR}/python) set(PYTHON_VERSION 3.1) - set(PYTHON_INC "${PYTHON}/include/python${PYTHON_VERSION}") + set(PYTHON_INCLUDE_DIRS "${PYTHON}/include/python${PYTHON_VERSION}") # set(PYTHON_BINARY python) # not used yet - set(PYTHON_LIB python31mw) + set(PYTHON_LIBRARY python31mw) set(PYTHON_LIBPATH ${PYTHON}/lib) endif() @@ -737,9 +738,9 @@ elseif(APPLE) # we use precompiled libraries for py 3.1 and up by default set(PYTHON ${LIBDIR}/python) - set(PYTHON_INC "${PYTHON}/include/python${PYTHON_VERSION}") + set(PYTHON_INCLUDE_DIRS "${PYTHON}/include/python${PYTHON_VERSION}") # set(PYTHON_BINARY "${PYTHON}/bin/python${PYTHON_VERSION}") # not used yet - set(PYTHON_LIB python${PYTHON_VERSION}) + set(PYTHON_LIBRARY python${PYTHON_VERSION}) set(PYTHON_LIBPATH "${PYTHON}/lib/python${PYTHON_VERSION}") # set(PYTHON_LINKFLAGS "-u _PyMac_Error") # won't build with this enabled else() @@ -747,9 +748,9 @@ elseif(APPLE) set(PYTHON /System/Library/Frameworks/Python.framework/Versions/) set(PYTHON_VERSION 3.1) - set(PYTHON_INC "${PYTHON}${PYTHON_VERSION}/include/python${PYTHON_VERSION}") + set(PYTHON_INCLUDE_DIRS "${PYTHON}${PYTHON_VERSION}/include/python${PYTHON_VERSION}") # set(PYTHON_BINARY ${PYTHON}${PYTHON_VERSION}/bin/python${PYTHON_VERSION}) # not used yet - set(PYTHON_LIB "") + set(PYTHON_LIBRARY "") set(PYTHON_LIBPATH ${PYTHON}${PYTHON_VERSION}/lib/python${PYTHON_VERSION}/config) set(PYTHON_LINKFLAGS "-u _PyMac_Error -framework System -framework Python") endif() @@ -769,10 +770,10 @@ elseif(APPLE) endif() set(PNG_LIBRARIES png) - set(JPEG_LIBRARY jpeg) + set(JPEG_LIBRARIES jpeg) set(ZLIB /usr) - set(ZLIB_INC "${ZLIB}/include") + set(ZLIB_INCLUDE_DIRS "${ZLIB}/include") set(ZLIB_LIBRARIES z bz2) set(FREETYPE ${LIBDIR}/freetype) @@ -852,11 +853,11 @@ elseif(APPLE) endif() set(PNG "${LIBDIR}/png") - set(PNG_INC "${PNG}/include") + set(PNG_INCLUDE_DIR "${PNG}/include") set(PNG_LIBPATH ${PNG}/lib) set(JPEG "${LIBDIR}/jpeg") - set(JPEG_INC "${JPEG}/include") + set(JPEG_INCLUDE_DIR "${JPEG}/include") set(JPEG_LIBPATH ${JPEG}/lib) if(WITH_IMAGE_TIFF) diff --git a/Makefile b/Makefile deleted file mode 100644 index d92edf2c02c..00000000000 --- a/Makefile +++ /dev/null @@ -1,60 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2002 by Wouter van Heyst -# All rights reserved. -# -# The Original Code is: revision 1.1 -# -# Contributor(s): Hans Lambermont, GSR -# -# ***** END GPL LICENSE BLOCK ***** -# -# Toplevel Makefile for blender. Bounces make to subdirectories. -# Available targets: 'all' 'debug' 'release' - -# If the user wants to override some of the build -# vars they can put it in the file user-def.mk which -# will get included if it exists (please do not commit -# user-def.mk to the revision control server). -sinclude user-def.mk - -# To build without openAL, set it as an environment variable, -# or put it uncommented in user-def.mk: -# export NAN_NO_OPENAL=true - -export NANBLENDERHOME=$(shell pwd) -MAKEFLAGS=-I$(NANBLENDERHOME)/build_files/make --no-print-directory - -SOURCEDIR = -ifeq ($(FREE_WINDOWS),true) - DIRS ?= $(NANBLENDERHOME)/build_files/make/dlltool extern intern source po -else - DIRS ?= extern intern source po -endif - -include build_files/make/nan_subdirs.mk - -.PHONY: release -release: - @echo "====> $(MAKE) $@ in $(SOURCEDIR)/$@" ;\ - $(MAKE) -C $@ $@ || exit 1; - - diff --git a/SConstruct b/SConstruct index 48397347073..03e61cd06b6 100644 --- a/SConstruct +++ b/SConstruct @@ -142,7 +142,6 @@ if not env: print "Could not create a build environment" Exit() - cc = B.arguments.get('CC', None) cxx = B.arguments.get('CXX', None) if cc: diff --git a/build_files/cmake/cmake_consistency_check.py b/build_files/cmake/cmake_consistency_check.py index 7a3ac9eaa79..0998d221b00 100644 --- a/build_files/cmake/cmake_consistency_check.py +++ b/build_files/cmake/cmake_consistency_check.py @@ -128,6 +128,10 @@ def cmake_get_src(f): raise Exception("strict formatting not kept '*)' %s:%d" % (f, i)) break + # replace dirs + l = l.replace("${CMAKE_CURRENT_SOURCE_DIR}", cmake_base) + + if not l: pass elif l.startswith("$"): @@ -202,11 +206,14 @@ for hf in sorted(source_list(base, is_c_header)): import traceback for files in (global_c, global_h): for f in sorted(files): - i = 1 - try: - for l in open(f, "r", encoding="utf8"): - i += 1 - except: - print("Non utf8: %s:%d" % (f, i)) - if i > 1: - traceback.print_exc() + if os.path.exists(f): + # ignore outside of our source tree + if "extern" not in f: + i = 1 + try: + for l in open(f, "r", encoding="utf8"): + i += 1 + except: + print("Non utf8: %s:%d" % (f, i)) + if i > 1: + traceback.print_exc() diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index 2b044e4df1f..b700fdf2cfa 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -121,21 +121,21 @@ macro(setup_liblinks target) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${PLATFORM_LINKFLAGS} ") - target_link_libraries(${target} ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY} ${JPEG_LIBRARY} ${PNG_LIBRARIES} ${ZLIB_LIBRARIES} ${LLIBS}) + target_link_libraries(${target} ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY} ${JPEG_LIBRARIES} ${PNG_LIBRARIES} ${ZLIB_LIBRARIES} ${LLIBS}) # since we are using the local libs for python when compiling msvc projects, we need to add _d when compiling debug versions if(WITH_PYTHON) target_link_libraries(${target} ${PYTHON_LINKFLAGS}) if(WIN32 AND NOT UNIX) - target_link_libraries(${target} debug ${PYTHON_LIB}_d) - target_link_libraries(${target} optimized ${PYTHON_LIB}) + target_link_libraries(${target} debug ${PYTHON_LIBRARY}_d) + target_link_libraries(${target} optimized ${PYTHON_LIBRARY}) else() - target_link_libraries(${target} ${PYTHON_LIB}) + target_link_libraries(${target} ${PYTHON_LIBRARY}) endif() endif() - target_link_libraries(${target} ${OPENGL_glu_LIBRARY} ${JPEG_LIB} ${PNG_LIB} ${ZLIB_LIB}) + target_link_libraries(${target} ${OPENGL_glu_LIBRARY} ${JPEG_LIBRARIES} ${PNG_LIBRARIES} ${ZLIB_LIBRARIES}) target_link_libraries(${target} ${FREETYPE_LIBRARY}) if(WITH_INTERNATIONAL) diff --git a/build_files/make/example_scripts/linux_nanmakefiles.sh b/build_files/make/example_scripts/linux_nanmakefiles.sh deleted file mode 100755 index aa8d8820681..00000000000 --- a/build_files/make/example_scripts/linux_nanmakefiles.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/sh - -# -# This is an example script to build things with the Nan Makefiles -# -# - -rm -f /tmp/.nanguess -export MAKE=make -export NANBLENDERHOME=`pwd` -export MAKEFLAGS="-w -I $NANBLENDERHOME/source --no-print-directory" -export HMAKE="$NANBLENDERHOME/source/tools/hmake/hmake" - -export NAN_PYTHON=/soft/python-2.2.2b1/progeny1 -export NAN_PYTHON_VERSION=2.2 -export NAN_OPENAL=/usr/local -export NAN_JPEG=/usr/local -export NAN_PNG=/usr/local -export NAN_SDL=/usr/local -export NAN_ODE=/usr/local -export NAN_ZLIB=/usr/local -export NAN_FREETYPE=/usr/local - -export NAN_MOZILLA_INC=/usr/local/include/mozilla-1.0.1/ -export NAN_MOZILLA_LIB=/usr/local/lib/mozilla-1.0.1/ -#export NAN_NSPR=/scratch/irulan/mein/nspr-4.2.2/mozilla/nsprpub/dist/ -export CPPFLAGS="$CPPFLAGS" -export CFLAGS="$CFLAGS" -export INTERNATIONAL=true - -$HMAKE -C intern/ -if [ $? -eq 0 ]; then - $HMAKE -C source/ -fi -$HMAKE -C release - -#cd release -#make diff --git a/build_files/make/example_scripts/macos_nanmakefiles.sh b/build_files/make/example_scripts/macos_nanmakefiles.sh deleted file mode 100755 index d2cce204a53..00000000000 --- a/build_files/make/example_scripts/macos_nanmakefiles.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash - -rm -f /tmp/.nanguess -export MAKE=make -export NANBLENDERHOME=`pwd` -export MAKEFLAGS="-w -I $NANBLENDERHOME/source --no-print-directory" -export HMAKE="$NANBLENDERHOME/source/tools/hmake/hmake" -echo -echo NANBLENDERHOME : ${NANBLENDERHOME} - -export NAN_PYTHON=/sw - -$HMAKE -C intern/ -if [ $? -eq 0 ]; then - $HMAKE -C source/ -fi -cd release -make diff --git a/build_files/make/example_scripts/sunos_nanmakefiles.sh b/build_files/make/example_scripts/sunos_nanmakefiles.sh deleted file mode 100755 index 25dd17bebb1..00000000000 --- a/build_files/make/example_scripts/sunos_nanmakefiles.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/sh -# This is an example build script for SunOS5.8 - -rm -f /tmp/.nanguess -export MAKE=make -export NANBLENDERHOME=`pwd` -export MAKEFLAGS="-w -I $NANBLENDERHOME/source --no-print-directory" -export HMAKE="$NANBLENDERHOME/source/tools/hmake/hmake" - -export NAN_PYTHON=/soft/python-2.2.2b1/SunOS5.8 -export NAN_PYTHON_VERSION=2.2 -export NAN_OPENAL=/usr/local -export NAN_JPEG=/usr/local -export NAN_PNG=/usr/local -export NAN_SDL=/usr/local -export NAN_ODE=/usr/local -export NAN_OPENSSL=/soft/ssl/openssl-0.9.6e -export NAN_ZLIB=/usr/local -export NAN_FREETYPE=/usr/local - -export NAN_MOZILLA_INC=/usr/local/include/mozilla-1.0.1/ -export NAN_MOZILLA_LIB=/usr/local/lib/mozilla-1.0.1/ -export NAN_NSPR=/scratch/irulan/mein/nspr-4.2.2/mozilla/nsprpub/dist/ -export CPPFLAGS="$CPPFLAGS" -export CFLAGS="$CFLAGS" -export INTERNATIONAL=true - -$HMAKE -C intern/ -if [ $? -eq 0 ]; then - $HMAKE -C source/ -fi -$HMAKE -C release - -#cd release -#make diff --git a/build_files/make/nan_compile.mk b/build_files/make/nan_compile.mk deleted file mode 100644 index c512c030476..00000000000 --- a/build_files/make/nan_compile.mk +++ /dev/null @@ -1,476 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): GSR, Stefan Gartner -# -# ***** END GPL LICENSE BLOCK ***** -# -# Compile and archive - -include nan_definitions.mk - -CPPFLAGS ?= $(NAN_CPPFLAGS) - -# common parts --------------------------------------------------- -CFLAGS += -DWITH_PYTHON -CCFLAGS += -DWITH_PYTHON - -# Uncomment next lines to enable integrated game engine -ifneq ($(NAN_NO_KETSJI), true) - CFLAGS += -DWITH_GAMEENGINE - ifeq ($(NAN_USE_BULLET), true) - CFLAGS += -DUSE_BULLET - CCFLAGS += -DUSE_BULLET - endif -else - CPPFLAGS += -DNO_KETSJI -endif - -ifeq ($(BF_PROFILE), true) - CFLAGS += -pg - CCFLAGS += -pg -endif - -ifeq ($(WITH_BF_OPENMP), true) - CFLAGS += -fopenmp - CCFLAGS += -fopenmp -endif - -ifdef NAN_DEBUG - CFLAGS += $(NAN_DEBUG) - CCFLAGS += $(NAN_DEBUG) -endif - -REL_CFLAGS += -DNDEBUG -REL_CCFLAGS += -DNDEBUG -DBG_CFLAGS += -g -DBG_CCFLAGS += -g - -# OS dependent parts --------------------------------------------------- - -ifeq ($(OS),darwin) - CC ?= gcc - CCC ?= g++ - ifeq ($(MACOSX_DEPLOYMENT_TARGET), 10.4) - CC = gcc-4.0 - CCC = g++-4.0 - else - ifeq ($(MACOSX_DEPLOYMENT_TARGET), 10.5) - CC = gcc-4.2 - CCC = g++-4.2 - endif - endif - ifeq ($(CPU),powerpc) - CFLAGS += -pipe -fPIC -mcpu=7450 -mtune=G5 -funsigned-char -fno-strict-aliasing - CCFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing - else - CFLAGS += -pipe -fPIC -funsigned-char - CCFLAGS += -pipe -fPIC -funsigned-char - endif - - CFLAGS += -arch $(MACOSX_ARCHITECTURE) #-isysroot $(MACOSX_SDK) -mmacosx-version-min=$(MACOSX_MIN_VERS) - CCFLAGS += -arch $(MACOSX_ARCHITECTURE) #-isysroot $(MACOSX_SDK) -mmacosx-version-min=$(MACOSX_MIN_VERS) - - ifeq ($(MACOSX_ARCHITECTURE), $(findstring $(MACOSX_ARCHITECTURE), "i386 x86_64")) - REL_CFLAGS += -O2 -ftree-vectorize -msse -msse2 -msse3 - REL_CCFLAGS += -O2 -ftree-vectorize -msse -msse2 -msse3 - else - REL_CFLAGS += -O2 - REL_CCFLAGS += -O2 - endif - - CPPFLAGS += -D_THREAD_SAFE - - ifeq ($(WITH_COCOA), true) - CPPFLAGS += -DGHOST_COCOA - endif - ifeq ($(USE_QTKIT), true) - CPPFLAGS += -DUSE_QTKIT - endif - - NAN_DEPEND = true - OPENGL_HEADERS = /System/Library/Frameworks/OpenGL.framework - AR = ar - ARFLAGS = ruv - RANLIB = ranlib - ARFLAGSQUIET = ru -endif - -ifeq ($(OS),freebsd) - CC ?= gcc - CCC ?= g++ - JAVAC = javac - JAVAH = javah - CFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing - CCFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing - REL_CFLAGS += -O2 - REL_CCFLAGS += -O2 - CPPFLAGS += -D_THREAD_SAFE - NAN_DEPEND = true - OPENGL_HEADERS = /usr/X11R6/include - JAVA_HEADERS = /usr/local/jdk1.3.1/include - JAVA_SYSTEM_HEADERS = /usr/local/jdk1.3.1/include/freebsd - AR = ar - ARFLAGS = ruv - ARFLAGSQUIET = ru -endif - -ifeq ($(OS),irix) - ifeq ($(IRIX_USE_GCC),true) - CC ?= gcc - CCC ?= g++ - CFLAGS += -fPIC -funsigned-char -fno-strict-aliasing -mabi=n32 -mips4 - CCFLAGS += -fPIC -fpermissive -funsigned-char -fno-strict-aliasing -mabi=n32 -mips4 - REL_CFLAGS += -O2 - REL_CCFLAGS += -O2 - DBG_CFLAGS += -g3 -gdwarf-2 -ggdb - DBG_CCFLAGS += -g3 -gdwarf-2 -ggdb - else - CC ?= cc - CCC ?= CC - CFLAGS += -n32 -mips3 -Xcpluscomm - CCFLAGS += -n32 -mips3 -Xcpluscomm -LANG:std - ifdef MIPS73_ISOHEADERS - CCFLAGS += -LANG:libc_in_namespace_std=off -I$(MIPS73_ISOHEADERS) - else - CCFLAGS += -LANG:libc_in_namespace_std=off - endif - REL_CFLAGS += -n32 -mips3 -O2 -OPT:Olimit=0 - REL_CCFLAGS += -n32 -mips3 -O2 -OPT:Olimit=0 - endif - OPENGL_HEADERS = /usr/include - NAN_DEPEND = true - AR = CC - ARFLAGS = -ar -o - ARFLAGSQUIET = -ar -o -endif - -ifeq ($(OS),linux) - CC ?= gcc - CCC ?= g++ -# CFLAGS += -pipe -# CCFLAGS += -pipe - CFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE - CCFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE - REL_CFLAGS += -O2 - REL_CCFLAGS += -O2 - NAN_DEPEND = true - ifeq ($(WITH_BF_RAYOPTIMIZATION), true) - CCFLAGS += -msse - endif - ifeq ($(CPU),alpha) - CFLAGS += -mieee - endif - OPENGL_HEADERS = /usr/X11R6/include - AR = ar - ARFLAGS = ruv - ARFLAGSQUIET = ru -endif - -ifeq ($(OS),openbsd) - CC ?= gcc - CCC ?= g++ - CFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing - CCFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing - REL_CFLAGS += -O2 - REL_CCFLAGS += -O2 - NAN_DEPEND = true - CPPFLAGS += -D__FreeBSD__ - OPENGL_HEADERS = /usr/X11R6/include - AR = ar - ARFLAGS = ruv - ARFLAGSQUIET = ru -endif - -ifeq ($(OS),solaris) - # Adding gcc flag to $CC is not good, however if its not there makesdna wont build - Campbell - ifeq (x86_64, $(findstring x86_64, $(CPU))) - CC ?= gcc -m64 - CCC ?= g++ -m64 - else - CC ?= gcc - CCC ?= g++ - #CC ?= cc - #CCC ?= CC - endif - - JAVAC = javac - JAVAH = javah - CFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing - CCFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing -# CFLAGS += "-fast -xdepend -xarch=v8plus -xO3 -xlibmil -KPIC -DPIC -xchar=unsigned" -# CCFLAGS += "-fast -xdepend -xarch=v8plus -xO3 -xlibmil -xlibmopt -features=tmplife -norunpath -KPIC -DPIC -xchar=unsigned" - - # Note, you might still want to compile a 32 bit binary if you have a 64bit system. if so remove the following lines -# ifeq ($(findstring 64,$(CPU)), 64) -# CFLAGS += -m64 -# CCFLAGS += -m64 -# endif - - REL_CFLAGS += -O2 - REL_CCFLAGS += -O2 - - NAN_DEPEND = true -# ifeq ($(CPU),sparc) - ifeq ($(findstring sparc,$(CPU)), sparc) - OPENGL_HEADERS = /usr/openwin/share/include - CPPFLAGS += -DSUN_OGL_NO_VERTEX_MACROS - JAVA_HEADERS = /usr/java/include - JAVA_SYSTEM_HEADERS = /usr/java/include/solaris - else - # OPENGL_HEADERS = /usr/X11/include/mesa - OPENGL_HEADERS = /usr/X11/include/ - endif - AR = ar - ARFLAGS = ruv - ARFLAGSQUIET = ru -endif - -ifeq ($(OS),windows) - ifeq ($(FREE_WINDOWS),true) - CC ?= gcc - CCC ?= g++ - CFLAGS += -pipe -mno-cygwin -mwindows -funsigned-char -fno-strict-aliasing - CCFLAGS += -pipe -mno-cygwin -mwindows -funsigned-char -fno-strict-aliasing - CPPFLAGS += -DFREE_WINDOWS - REL_CFLAGS += -O2 - REL_CCFLAGS += -O2 - NAN_DEPEND = true - #OPENGL_HEADERS = /usr/include/w32api - OPENGL_HEADERS = ./ - AR = ar - ARFLAGS = ruv - ARFLAGSQUIET = ru - WINRC = $(wildcard *.rc) - RANLIB = ranlib - else - CC ?= $(SRCHOME)/tools/cygwin/cl_wrapper.pl - CCC ?= $(SRCHOME)/tools/cygwin/cl_wrapper.pl - JAVAC = $(SRCHOME)/tools/cygwin/java_wrapper.pl -c - JAVAH = $(SRCHOME)/tools/cygwin/java_wrapper.pl -h - REL_CFLAGS += /O2 - REL_CCFLAGS += /O2 -GX - DBG_CFLAGS += /Fd$(DIR)/debug/ - DBG_CCFLAGS += /Fd$(DIR)/debug/ - CFLAGS += /MT - CCFLAGS += /MT - NAN_DEPEND = true - OPENGL_HEADERS = . - CPPFLAGS += -DWIN32 -D_WIN32 -D__WIN32 - CPPFLAGS += -D_M_IX86 - CPPFLAGS += -I"/cygdrive/c/Program Files/Microsoft Visual Studio/VC98/include" - JAVA_HEADERS = /cygdrive/c/j2sdk1.4.0-beta3/include - JAVA_SYSTEM_HEADERS = /cygdrive/c/j2sdk1.4.0-beta3/include/win32 - CPP = $(SRCHOME)/tools/cygwin/cl_wrapper.pl - AR = ar - ARFLAGS = ruv - ARFLAGSQUIET = ru - WINRC = $(wildcard *.rc) - endif -endif - -ifeq (debug, $(findstring debug, $(MAKECMDGOALS))) - export DEBUG_DIR=debug/ -endif - -ifneq (x$(DEBUG_DIR), x) - CFLAGS +=$(DBG_CFLAGS) - CCFLAGS+=$(DBG_CCFLAGS) -else - CFLAGS +=$(REL_CFLAGS) - CCFLAGS+=$(REL_CCFLAGS) -endif - -# Note: include nan_warn's LEVEL_*_WARNINGS after CC/OS have been set. -include nan_warn.mk - -# compile rules - -default: all - -$(DIR)/$(DEBUG_DIR)%.o: %.c - ifdef NAN_DEPEND - @set -e; $(CC) -M $(CPPFLAGS) $< 2>/dev/null \ - | sed 's@\($*\)\.o[ :]*@$(DIR)/$(DEBUG_DIR)\1.o : @g' \ - > $(DIR)/$(DEBUG_DIR)$*.d; \ - [ -s $(DIR)/$(DEBUG_DIR)$*.d ] || $(RM) $(DIR)/$(DEBUG_DIR)$*.d - endif - ifdef NAN_QUIET - @echo " -- $< -- " - @$(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@ - else - $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@ - endif - -$(DIR)/$(DEBUG_DIR)%.o: %.cpp - ifdef NAN_DEPEND - @set -e; $(CCC) -M $(CPPFLAGS) $< 2>/dev/null \ - | sed 's@\($*\)\.o[ :]*@$(DIR)/$(DEBUG_DIR)\1.o : @g' \ - > $(DIR)/$(DEBUG_DIR)$*.d; \ - [ -s $(DIR)/$(DEBUG_DIR)$*.d ] || $(RM) $(DIR)/$(DEBUG_DIR)$*.d - endif - ifdef NAN_QUIET - @echo " -- $< -- " - @$(CCC) -c $(CCFLAGS) $(CPPFLAGS) $< -o $@ - else - $(CCC) -c $(CCFLAGS) $(CPPFLAGS) $< -o $@ - endif - -$(DIR)/$(DEBUG_DIR)%.o: %.mm - ifdef NAN_DEPEND - @set -e; $(CC) -M $(CPPFLAGS) $< 2>/dev/null \ - | sed 's@\($*\)\.o[ :]*@$(DIR)/$(DEBUG_DIR)\1.o : @g' \ - > $(DIR)/$(DEBUG_DIR)$*.d; \ - [ -s $(DIR)/$(DEBUG_DIR)$*.d ] || $(RM) $(DIR)/$(DEBUG_DIR)$*.d - endif - ifdef NAN_QUIET - @echo " -- $< -- " - @$(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@ - else - $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@ - endif - -$(DIR)/$(DEBUG_DIR)%.o: %.m - ifdef NAN_DEPEND - @set -e; $(CC) -M $(CPPFLAGS) $< 2>/dev/null \ - | sed 's@\($*\)\.o[ :]*@$(DIR)/$(DEBUG_DIR)\1.o : @g' \ - > $(DIR)/$(DEBUG_DIR)$*.d; \ - [ -s $(DIR)/$(DEBUG_DIR)$*.d ] || $(RM) $(DIR)/$(DEBUG_DIR)$*.d - endif - ifdef NAN_QUIET - @echo " -- $< -- " - @$(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@ - else - $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@ - endif - - -$(DIR)/$(DEBUG_DIR)%.res: %.rc -ifeq ($(FREE_WINDOWS),true) - windres $< -O coff -o $@ -else - $(SRCHOME)/tools/cygwin/cl_wrapper.pl - rc /fo$@ $< -endif - -$(DIR)/$(DEBUG_DIR)%.class: %.java - ifdef JARS - $(JAVAC) -verbose -g -deprecation -sourcepath . -classpath "$(JARS)" -d $(DIR)/$(DEBUG_DIR) $< - else - $(JAVAC) -verbose -g -deprecation -d $(DIR)/$(DEBUG_DIR) $< - endif - -$(DIR)/$(DEBUG_DIR)%.h: $(DIR)/$(DEBUG_DIR)%.class - $(JAVAH) -classpath $(DIR)/$(DEBUG_DIR) -d $(DIR)/$(DEBUG_DIR) -jni $* - -%.h: - @echo "WARNING: Fake header creation rule used, dependencies will be remade" - -CSRCS ?= $(wildcard *.c) -CCSRCS ?= $(wildcard *.cpp) -JSRCS ?= $(wildcard *.java) - -ifdef NAN_DEPEND --include $(CSRCS:%.c=$(DIR)/$(DEBUG_DIR)%.d) $(CCSRCS:%.cpp=$(DIR)/$(DEBUG_DIR)%.d) $(OCCSRCS:$.mm=$(DIR)/$(DEBUG_DIR)%.d) $(OCSRCS:$.m=$(DIR)/$(DEBUG_DIR)%.d) -endif - -OBJS_AR := $(OBJS) -OBJS_AR += $(CSRCS:%.c=%.o) -OBJS_AR += $(CCSRCS:%.cpp=%.o) -OBJS_AR += $(OCCSRCS:%.mm=%.o) -OBJS_AR += $(OCSRCS:%.m=%.o) -OBJS_AR += $(WINRC:%.rc=%.res) - -OBJS += $(CSRCS:%.c=$(DIR)/$(DEBUG_DIR)%.o) -OBJS += $(CCSRCS:%.cpp=$(DIR)/$(DEBUG_DIR)%.o) -OBJS += $(OCCSRCS:%.mm=$(DIR)/$(DEBUG_DIR)%.o) -OBJS += $(OCSRCS:%.m=$(DIR)/$(DEBUG_DIR)%.o) -OBJS += $(WINRC:%.rc=$(DIR)/$(DEBUG_DIR)%.res) - -JCLASS += $(JSRCS:%.java=$(DIR)/$(DEBUG_DIR)%.class) - -LIB_a = $(DIR)/$(DEBUG_DIR)lib$(LIBNAME).a - -$(LIB_a): $(OBJS) - # $OBJS can be empty except for some spaces - ifneq (x, x$(strip $(OBJS))) - ifdef NAN_PARANOID - @$(RM) $(LIB_a) - ifdef NAN_QUIET - @echo " -- lib: lib$(LIBNAME).a -- " - @cd $(DIR)/$(DEBUG_DIR); $(AR) $(ARFLAGSQUIET) $@ $(OBJS_AR) - else - cd $(DIR)/$(DEBUG_DIR); $(AR) $(ARFLAGS) $@ $(OBJS_AR) - endif - else - ifdef NAN_QUIET - @echo " -- lib: lib$(LIBNAME).a -- " - @$(AR) $(ARFLAGSQUIET) $@ $? - else - $(AR) $(ARFLAGS) $@ $? - endif - endif - ifdef RANLIB - $(RANLIB) $@ - endif - endif - -ALLTARGETS ?= $(LIB_a) - -all debug :: makedir $(ALLTARGETS) - -lib: $(LIB_a) - -creator: $(OBJS) - @echo "====> make creator subtarget in `pwd | sed 's/^.*develop\///'`" - @$(MAKE) makedir DIR=$(DIR)/$(DEBUG_DIR)cre - @$(MAKE) lib CSRCS="$(CRE_CSRCS)" LIBNAME=$(LIBNAME)$@ - -publisher: $(OBJS) - @echo "====> make publisher subtarget in `pwd | sed 's/^.*develop\///'`" - @$(MAKE) makedir DIR=$(DIR)/$(DEBUG_DIR)pub - @$(MAKE) lib CSRCS="$(PUB_CSRCS)" LIBNAME=$(LIBNAME)$@ - -player: $(OBJS) - @echo "====> make player subtarget in `pwd | sed 's/^.*develop\///'`" - @$(MAKE) makedir DIR=$(DIR)/player/$(DEBUG_DIR) - @$(MAKE) lib CSRCS="$(SAP_CSRCS)" LIBNAME=$(LIBNAME)$@ - -clean:: optclean debugclean - -optclean:: - @-[ ! -d $(DIR) ] || ( cd $(DIR) && \ - $(RM) *.o *.a *.d *.res ii_files/*.ii *.class *.h ) - -debugclean:: - @-[ ! -d $(DIR)/debug ] || ( cd $(DIR)/debug && \ - $(RM) *.o *.a *.d *.res ii_files/*.ii *.class *.h ) - -.PHONY: makedir -makedir:: - @# don't use mkdir -p. Cygwin will try to make network paths and fail - @[ -d $(DIR) ] || mkdir $(DIR) - @[ -d $(DIR)/debug ] || mkdir $(DIR)/debug - diff --git a/build_files/make/nan_definitions.mk b/build_files/make/nan_definitions.mk deleted file mode 100644 index 307bf19153b..00000000000 --- a/build_files/make/nan_definitions.mk +++ /dev/null @@ -1,653 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): GSR, Stefan Gartner -# -# ***** END GPL LICENSE BLOCK ***** -# -# set some defaults when these are not overruled (?=) by environment variables -# - -sinclude ../../user-def.mk - -# This warning only takes place once in source/ -ifeq (debug, $(findstring debug, $(MAKECMDGOALS))) - ifeq (all, $(findstring all, $(MAKECMDGOALS))) - export ERRTXT = "ERROR: all and debug targets cannot be used together anymore" - export ERRTXT += "Use something like ..make all && make debug.. instead" - endif -endif - -ifdef ERRTXT -$(error $(ERRTXT)) -endif - -ifndef CONFIG_GUESS - ifeq (debug, $(findstring debug, $(MAKECMDGOALS))) - export DEBUG_DIR = debug/ - export ALL_OR_DEBUG = debug - endif - ifeq (all, $(findstring all, $(MAKECMDGOALS))) - export ALL_OR_DEBUG ?= all - endif - - # First generic defaults for all platforms which should be constant. - # Note: ?= lets these defaults be overruled by environment variables, - export SRCHOME ?= $(NANBLENDERHOME)/source - export CONFIG_GUESS := $(shell ${SRCHOME}/tools/guess/guessconfig) - export OS := $(shell echo ${CONFIG_GUESS} | sed -e 's/-.*//') - export OS_VERSION := $(shell echo ${CONFIG_GUESS} | sed -e 's/^[^-]*-//' -e 's/-[^-]*//') - export CPU := $(shell echo ${CONFIG_GUESS} | sed -e 's/^[^-]*-[^-]*-//') - export MAKE_START := $(shell date "+%H:%M:%S %d-%b-%Y") - export NAN_LIBDIR ?= $(NANBLENDERHOME)/../lib - export NAN_OBJDIR ?= $(NANBLENDERHOME)/obj - # Library Config_Guess DIRectory - export LCGDIR = $(NAN_LIBDIR)/$(CONFIG_GUESS) - # Object Config_Guess DIRectory - export OCGDIR = $(NAN_OBJDIR)/$(CONFIG_GUESS) - - # Determines what targets are built - export WITH_BF_DYNAMICOPENGL ?= true - export WITH_BF_STATICOPENGL ?= false - export WITH_BF_BLENDERGAMEENGINE ?= true - export WITH_BF_BLENDERPLAYER ?= true - ifeq ($(NAN_NO_PLUGIN), true) - export WITH_BF_WEBPLUGIN = false - else - export WITH_BF_WEBPLUGIN ?= false - endif - - export NAN_MOTO ?= $(LCGDIR)/moto - export NAN_ITASC ?= $(LCGDIR)/itasc - - export BF_PROFILE ?= false - export NAN_USE_BULLET ?= true - export NAN_BULLET2 ?= $(LCGDIR)/bullet2 - export NAN_DECIMATION ?= $(LCGDIR)/decimation - export NAN_GUARDEDALLOC ?= $(LCGDIR)/guardedalloc - export NAN_IKSOLVER ?= $(LCGDIR)/iksolver - export NAN_BSP ?= $(LCGDIR)/bsp - export NAN_BOOLOP ?= $(LCGDIR)/boolop - export NAN_AUDASPACE ?= $(LCGDIR)/audaspace - export NAN_STRING ?= $(LCGDIR)/string - export NAN_MEMUTIL ?= $(LCGDIR)/memutil - export NAN_CONTAINER ?= $(LCGDIR)/container - export NAN_ACTION ?= $(LCGDIR)/action - export NAN_GHOST ?= $(LCGDIR)/ghost - export NAN_TEST_VERBOSITY ?= 1 - export NAN_OPENNL ?= $(LCGDIR)/opennl - export NAN_ELBEEM ?= $(LCGDIR)/elbeem - export NAN_SMOKE ?= $(LCGDIR)/smoke - export NAN_SUPERLU ?= $(LCGDIR)/superlu - export NAN_GLEW ?= $(LCGDIR)/glew - ifeq ($(FREE_WINDOWS), true) - export NAN_FFMPEG ?= $(LCGDIR)/gcc/ffmpeg - export NAN_FFMPEGLIBS ?= $(NAN_FFMPEG)/lib/libavformat.a $(NAN_FFMPEG)/lib/libavutil.a $(NAN_FFMPEG)/lib/libavcodec.a $(NAN_FFMPEG)/lib/libavdevice.a - else - export NAN_FFMPEG ?= $(LCGDIR)/ffmpeg - ifeq ($(OS), darwin) - export NAN_FFMPEGLIBS ?= $(NAN_FFMPEG)/lib/libavformat.a $(NAN_FFMPEG)/lib/libavcodec.a $(NAN_FFMPEG)/lib/libswscale.a $(NAN_FFMPEG)/lib/libavutil.a $(NAN_FFMPEG)/lib/libavdevice.a $(NAN_FFMPEG)/lib/libmp3lame.a $(NAN_FFMPEG)/lib/libx264.a $(NAN_FFMPEG)/lib/libxvidcore.a $(NAN_FFMPEG)/lib/libtheora.a $(NAN_FFMPEG)/lib/libtheoradec.a $(NAN_FFMPEG)/lib/libtheoraenc.a $(NAN_FFMPEG)/lib/libvorbis.a $(NAN_FFMPEG)/lib/libvorbisenc.a $(NAN_FFMPEG)/lib/libvorbisfile.a $(NAN_FFMPEG)/lib/libogg.a -lbz2 - else - export NAN_FFMPEGLIBS ?= $(NAN_FFMPEG)/lib/libavformat.a $(NAN_FFMPEG)/lib/libavcodec.a $(NAN_FFMPEG)/lib/libswscale.a $(NAN_FFMPEG)/lib/libavutil.a $(NAN_FFMPEG)/lib/libavdevice.a - endif - endif - export NAN_FFMPEGCFLAGS ?= -I$(NAN_FFMPEG)/include -I$(NANBLENDERHOME)/extern/ffmpeg - - export WITH_OPENEXR ?= true - export WITH_DDS ?= true - export WITH_OPENJPEG ?= true - export WITH_LZO ?= true - export WITH_LZMA ?= true - export NAN_LZO ?= $(LCGDIR)/lzo - export NAN_LZMA ?= $(LCGDIR)/lzma - export WITH_OPENAL ?= false - export WITH_JACK ?= false - export WITH_SNDFILE ?= false - export WITH_FFTW3 ?= false - - ifeq ($(WITH_OPENAL), true) - export NAN_OPENAL ?= /usr - endif - - ifeq ($(WITH_JACK), true) - export NAN_JACK ?= $(LCGDIR)/jack - export NAN_JACKCFLAGS ?= -I$(NAN_JACK)/include/jack - export NAN_JACKLIBS ?= $(NAN_JACK)/lib/libjack.a - endif - - ifeq ($(WITH_SNDFILE),true) - export NAN_SNDFILE ?= $(LCGDIR)/sndfile - export NAN_SNDFILECFLAGS ?= -I$(NAN_SNDFILE)/include - export NAN_SNDFILELIBS ?= $(NAN_SNDFILE)/lib/libsndfile.a $(NAN_SNDFILE)/lib/libFLAC.a $(NAN_SNDFILE)/lib/libogg.a - endif - - ifeq ($(NAN_USE_FFMPEG_CONFIG), true) - export NAN_FFMPEG = $(shell pkg-config --variable=prefix libavcodec) # Assume they are all in the same prefix - export NAN_FFMPEGLIBS = $(shell pkg-config --libs libavcodec libavdevice libavformat libswscale libavutil) - export NAN_FFMPEGCFLAGS = $(shell pkg-config --cflags libavcodec libavdevice libavformat libswscale libavutil) - endif - - ifeq ($(WITH_OPENCOLLADA), true) - export BF_OPENCOLLADA ?= $(LCGDIR)/opencollada - export BF_OPENCOLLADA_INC ?= $(BF_OPENCOLLADA)/include - export BF_OPENCOLLADA_LIBS ?= $(BF_OPENCOLLADA)/lib/libOpenCOLLADASaxFrameworkLoader.a $(BF_OPENCOLLADA)/lib/libOpenCOLLADAFramework.a $(BF_OPENCOLLADA)/lib/libOpenCOLLADABaseUtils.a $(BF_OPENCOLLADA)/lib/libOpenCOLLADAStreamWriter.a $(BF_OPENCOLLADA)/lib/libMathMLSolver.a $(BF_OPENCOLLADA)/lib/libGeneratedSaxParser.a $(BF_OPENCOLLADA)/lib/libUTF.a -lxml2 - export BF_PCRE ?= $(LCGDIR)/pcre - export BF_PCRE_LIBS ?= $(BF_PCRE)/lib/libpcre.a - endif - - export WITH_TIFF ?= true - - #enable raytracing optimization (currently only for i386 and x86_64) - ifeq ($(CPU),powerpc) - export WITH_BF_RAYOPTIMIZATION ?= false - else - export WITH_BF_RAYOPTIMIZATION ?= true - endif - - export WITH_LCMS ?= false - export WITH_CINEON ?= true - export WITH_HDR ?= true - - # Compare recreated .mo files with committed ones - export BF_VERIFY_MO_FILES ?= true - - # Platform Dependent settings go below: - ifeq ($(OS),darwin) - - export ID = $(shell whoami) - export HOST = $(shell hostname -s) - - # set target arch & os version - # architecture defaults to host arch, can be ppc, ppc64, i386, x86_64 - ifeq ($(CPU),powerpc) - export MACOSX_ARCHITECTURE ?= ppc - else - export MACOSX_ARCHITECTURE ?= i386 - endif - # target os version defaults to 10.4 for ppc & i386 (32 bit), 10.5 for ppc64, x86_64 - ifeq (64,$(findstring 64, $(MACOSX_ARCHITECTURE))) - export MACOSX_MIN_VERS ?= 10.5 - export MACOSX_DEPLOYMENT_TARGET ?= 10.5 - export MACOSX_SDK ?= /Developer/SDKs/MacOSX10.5.sdk - else - export MACOSX_MIN_VERS ?= 10.4 - export MACOSX_DEPLOYMENT_TARGET ?= 10.4 - export MACOSX_SDK ?= /Developer/SDKs/MacOSX10.4u.sdk - endif - - # useful for crosscompiling - ifeq ($(MACOSX_ARCHITECTURE),$(findstring $(MACOSX_ARCHITECTURE), "ppc ppc64")) - export CPU = powerpc - export LCGDIR = $(NAN_LIBDIR)/$(OS)-$(OS_VERSION)-$(CPU) - export OCGDIR = $(NAN_OBJDIR)/$(OS)-$(OS_VERSION)-$(CPU) - endif - ifeq ($(MACOSX_ARCHITECTURE),$(findstring $(MACOSX_ARCHITECTURE),"i386 x86_64")) - export CPU = i386 - export LCGDIR = $(NAN_LIBDIR)/$(OS)-$(OS_VERSION)-$(CPU) - export OCGDIR = $(NAN_OBJDIR)/$(OS)-$(OS_VERSION)-$(CPU) - endif - - export NAN_PYTHON_VERSION = 3.1 - - ifeq ($(NAN_PYTHON_VERSION),3.1) - export PY_FRAMEWORK ?= 0 - export NAN_PYTHON ?= $(LCGDIR)/python - export NAN_PYTHON_LIB ?= $(NAN_PYTHON)/lib/python$(NAN_PYTHON_VERSION)/libpython$(NAN_PYTHON_VERSION).a - else - export PY_FRAMEWORK ?= 1 - ifdef PY_FRAMEWORK - export NAN_PYTHON_VERSION ?= 3.1 - export NAN_PYTHON ?= /System/Library/Frameworks/Python.framework/Versions/$(NAN_PYTHON_VERSION) - export NAN_PYTHON_BINARY ?= $(NAN_PYTHON)/bin/python$(NAN_PYTHON_VERSION) - export NAN_PYTHON_LIB ?= -framework Python - else - export NAN_PYTHON ?= /sw - export NAN_PYTHON_BINARY ?= $(NAN_PYTHON)/bin/python$(NAN_PYTHON_VERSION) - export NAN_PYTHON_LIB ?= $(NAN_PYTHON)/lib/python$(NAN_PYTHON_VERSION)/config/libpython$(NAN_PYTHON_VERSION).a - endif - endif - - export NAN_OPENAL ?= $(LCGDIR)/openal - export NAN_JPEG ?= $(LCGDIR)/jpeg - export NAN_PNG ?= $(LCGDIR)/png - export NAN_TIFF ?= $(LCGDIR)/tiff - export NAN_TERRAPLAY ?= $(LCGDIR)/terraplay - export NAN_MESA ?= /usr/src/Mesa-3.1 - export NAN_ZLIB ?= $(LCGDIR)/zlib - export NAN_NSPR ?= $(LCGDIR)/nspr - export NAN_FREETYPE ?= $(LCGDIR)/freetype - export NAN_GETTEXT ?= $(LCGDIR)/gettext - export NAN_GETTEXT_LIB ?= $(NAN_GETTEXT)/lib/libintl.a - ifeq (($CPU), i386) - export NAN_GETTEXT_LIB += $(NAN_GETTEXT)/lib/libintl.a - endif - export NAN_SDL ?= $(LCGDIR)/sdl - export NAN_SDLCFLAGS ?= -I$(NAN_SDL)/include - export NAN_SDLLIBS ?= $(NAN_SDL)/lib/libSDL.a -framework Cocoa -framework IOKit - - export NAN_OPENEXR ?= $(LCGDIR)/openexr - export NAN_OPENEXR_INC ?= -I$(NAN_OPENEXR)/include -I$(NAN_OPENEXR)/include/OpenEXR - export NAN_OPENEXR_LIBS ?= $(NAN_OPENEXR)/lib/libIlmImf.a $(NAN_OPENEXR)/lib/libHalf.a $(NAN_OPENEXR)/lib/libIex.a $(NAN_OPENEXR)/lib/libIlmThread.a - - export NAN_NO_KETSJI=false - - #ifeq ($(CPU), i386) - # export WITH_OPENAL=false - #endif - - # Location of MOZILLA/Netscape header files... - export NAN_MOZILLA_INC ?= $(LCGDIR)/mozilla/include - export NAN_MOZILLA_LIB ?= $(LCGDIR)/mozilla/lib/ - # Will fall back to look in NAN_MOZILLA_INC/nspr and NAN_MOZILLA_LIB - # if this is not set. - - export NAN_BUILDINFO ?= true - # Be paranoid regarding library creation (do not update archives) - export NAN_PARANOID ?= true - - # enable quicktime by default on OS X - export WITH_QUICKTIME ?= true - - # enable l10n - export INTERNATIONAL ?= true - - export NAN_SAMPLERATE ?= $(LCGDIR)/samplerate - export NAN_SAMPLERATE_LIBS ?= $(NAN_SAMPLERATE)/lib/libsamplerate.a - - # enable building with Cocoa - export WITH_COCOA ?= false - export USE_QTKIT ?= false - # use cocoa and qtkit for 64bit builds - ifeq (64, $(findstring 64, $(MACOSX_ARCHITECTURE))) - export WITH_COCOA = true - export USE_QTKIT = true - endif - - export BF_PCRE = $(LCGDIR)/opencollada - export BF_OPENCOLLADA_LIBS = $(BF_OPENCOLLADA)/lib/libOpenCOLLADASaxFrameworkLoader.a $(BF_OPENCOLLADA)/lib/libOpenCOLLADAFramework.a $(BF_OPENCOLLADA)/lib/libOpenCOLLADABaseUtils.a $(BF_OPENCOLLADA)/lib/libOpenCOLLADAStreamWriter.a $(BF_OPENCOLLADA)/lib/libMathMLSolver.a $(BF_OPENCOLLADA)/lib/libGeneratedSaxParser.a $(BF_OPENCOLLADA)/lib/libUTF.a $(BF_OPENCOLLADA)/lib/libftoa.a $(BF_OPENCOLLADA)/lib/libbuffer.a -lxml2 - - else - ifeq ($(OS),freebsd) - - export ID = $(shell whoami) - export HOST = $(shell hostname -s) - export FREEDESKTOP ?= true - - export BF_PREFIX ?= /usr/local - export NAN_PYTHON ?= /usr/local - export NAN_PYTHON_VERSION ?= 3.1 - export NAN_PYTHON_BINARY ?= $(NAN_PYTHON)/bin/python$(NAN_PYTHON_VERSION) - export NAN_PYTHON_LIB ?= $(NAN_PYTHON)/lib/python$(NAN_PYTHON_VERSION)/config/libpython$(NAN_PYTHON_VERSION).a - export NAN_OPENAL ?= /usr/local - export NAN_JPEG ?= /usr/local - export NAN_PNG ?= /usr/local - export NAN_TIFF ?= /usr/local - export NAN_TERRAPLAY ?= $(LCGDIR)/terraplay - export NAN_MESA ?= /usr/src/Mesa-3.1 - export NAN_ZLIB ?= /usr - export NAN_NSPR ?= /usr/local - export NAN_FREETYPE ?= $(LCGDIR)/freetype - export NAN_GETTEXT ?= $(LCGDIR)/gettext - export NAN_SDL ?= $(shell sdl-config --prefix) - export NAN_SDLLIBS ?= $(shell sdl-config --libs) - export NAN_SDLCFLAGS ?= $(shell sdl-config --cflags) - - # Location of MOZILLA/Netscape header files... - export NAN_MOZILLA_INC ?= $(LCGDIR)/mozilla/include - export NAN_MOZILLA_LIB ?= $(LCGDIR)/mozilla/lib/ - # Will fall back to look in NAN_MOZILLA_INC/nspr and NAN_MOZILLA_LIB - # if this is not set. - - export NAN_BUILDINFO ?= true - # Be paranoid regarding library creation (do not update archives) - export NAN_PARANOID ?= true - - # enable l10n - # export INTERNATIONAL ?= true - - else - ifeq ($(OS),irix) - - export ID = $(shell whoami) - export HOST = $(shell /usr/bsd/hostname -s) - #export NAN_NO_KETSJI=true - export NAN_JUST_BLENDERDYNAMIC=true - - export BF_PREFIX ?= /usr/local - export NAN_PYTHON_VERSION ?= 3.1 - ifeq ($(IRIX_USE_GCC), true) - export NAN_PYTHON ?= $(LCGDIR)/python_gcc - else - export NAN_PYTHON ?= $(LCGDIR)/python - endif - export NAN_PYTHON_BINARY ?= $(NAN_PYTHON)/bin/python$(NAN_PYTHON_VERSION) - export NAN_PYTHON_LIB ?= $(NAN_PYTHON)/lib/python$(NAN_PYTHON_VERSION)/config/libpython$(NAN_PYTHON_VERSION).a -lpthread - export NAN_OPENAL ?= $(LCGDIR)/openal - export NAN_JPEG ?= $(LCGDIR)/jpeg - export NAN_PNG ?= $(LCGDIR)/png - export NAN_TIFF ?= $(LCGDIR)/tiff - export NAN_TERRAPLAY ?= $(LCGDIR)/terraplay - export NAN_MESA ?= /usr/src/Mesa-3.1 - export NAN_ZLIB ?= $(LCGDIR)/zlib - export NAN_NSPR ?= $(LCGDIR)/nspr - export NAN_FREETYPE ?= $(LCGDIR)/freetype - export NAN_ICONV ?= $(LCGDIR)/iconv - export NAN_GETTEXT ?= $(LCGDIR)/gettext - export NAN_GETTEXT_LIB ?= $(NAN_GETTEXT)/lib/libintl.a $(NAN_ICONV)/lib/libiconv.a - export NAN_SDL ?= $(LCGDIR)/sdl - export NAN_SDLLIBS ?= $(NAN_SDL)/lib/libSDL.a - export NAN_SDLCFLAGS ?= -I$(NAN_SDL)/include/SDL - export NAN_FFMPEG ?= $(LCGDIR)/ffmpeg - export NAN_FFMPEGLIBS = $(NAN_FFMPEG)/lib/libavformat.a $(NAN_FFMPEG)/lib/libavcodec.a $(NAN_FFMPEG)/lib/libswscale.a $(NAN_FFMPEG)/lib/libavutil.a $(NAN_FFMPEG)/lib/libavdevice.a $(NAN_FFMPEG)/lib/libogg.a $(NAN_FFMPEG)/lib/libfaad.a $(NAN_FFMPEG)/lib/libmp3lame.a $(NAN_FFMPEG)/lib/libvorbis.a $(NAN_FFMPEG)/lib/libx264.a $(NAN_FFMPEG)/lib/libfaac.a $(NAN_ZLIB)/lib/libz.a - export NAN_FFMPEGCFLAGS ?= -I$(NAN_FFMPEG)/include -I$(NANBLENDERHOME)/extern/ffmpeg - - ifeq ($(IRIX_USE_GCC), true) - export NAN_OPENEXR ?= $(LCGDIR)/openexr/gcc - else - export NAN_OPENEXR ?= $(LCGDIR)/openexr - endif - export NAN_OPENEXR_INC ?= -I$(NAN_OPENEXR)/include -I$(NAN_OPENEXR)/include/OpenEXR - export NAN_OPENEXR_LIBS ?= $(NAN_OPENEXR)/lib/libIlmImf.a $(NAN_OPENEXR)/lib/libHalf.a $(NAN_OPENEXR)/lib/libIex.a $(NAN_OPENEXR)/lib/libIlmThread.a - - # Location of MOZILLA/Netscape header files... - export NAN_MOZILLA_INC ?= $(LCGDIR)/mozilla/include - export NAN_MOZILLA_LIB ?= $(LCGDIR)/mozilla/lib/ - # Will fall back to look in NAN_MOZILLA_INC/nspr and NAN_MOZILLA_LIB - # if this is not set. - - export NAN_BUILDINFO ?= true - # Be paranoid regarding library creation (do not update archives) - export NAN_PARANOID ?= true - - # enable l10n - export INTERNATIONAL ?= true - - # Different endianess will make it fail, rely on other platforms for checks - export BF_VERIFY_MO_FILES = false - - else - ifeq ($(OS),linux) - - export ID = $(shell whoami) - export HOST = $(shell hostname -s) - export FREEDESKTOP ?= true - - export BF_PREFIX ?= /usr/local - export NAN_PYTHON ?= /usr - export NAN_PYTHON_VERSION ?= 3.1 - export NAN_PYTHON_BINARY ?= $(NAN_PYTHON)/bin/python$(NAN_PYTHON_VERSION) - # Next line if for static python, nan_link.mk uses -lpython$(NAN_PYTHON_VERSION) - #export NAN_PYTHON_LIB ?= $(NAN_PYTHON)/lib/python$(NAN_PYTHON_VERSION)/config/libpython$(NAN_PYTHON_VERSION).a - export NAN_OPENAL ?= /usr - export NAN_JPEG ?= /usr - export NAN_PNG ?= /usr - export NAN_TIFF ?= /usr - export NAN_TERRAPLAY ?= $(LCGDIR)/terraplay - export NAN_MESA ?= /usr - export NAN_ZLIB ?= /usr - export NAN_NSPR ?= $(LCGDIR)/nspr - export NAN_FREETYPE ?= /usr - export NAN_GETTEXT ?= /usr - export NAN_SDL ?= $(shell sdl-config --prefix) - export NAN_SDLLIBS ?= $(shell sdl-config --libs) - export NAN_SDLCFLAGS ?= $(shell sdl-config --cflags) - export NAN_SAMPLERATE ?= /usr - - ifeq ($(WITH_OPENEXR), true) - export NAN_OPENEXR ?= $(shell pkg-config --variable=prefix OpenEXR ) - export NAN_OPENEXR_INC ?= $(shell pkg-config --cflags OpenEXR ) - export NAN_OPENEXR_LIBS ?= $(addprefix ${NAN_OPENEXR}/lib/lib,$(addsuffix .a,$(shell pkg-config --libs-only-l OpenEXR | sed -s "s/-l//g" ))) - endif - - ifeq ($(WITH_FFTW3), true) - export BF_FFTW3 ?= $(shell pkg-config --variable=prefix fftw3 ) - export BF_FFTW3_INC ?= $(shell pkg-config --variable=includedir fftw3 ) - export BF_FFTW3_LIBS ?= $(shell pkg-config --libs fftw3 ) - endif - - # Uncomment the following line to use Mozilla inplace of netscape - - # Location of MOZILLA/Netscape header files... - export NAN_MOZILLA_INC ?= /usr/include/mozilla - export NAN_MOZILLA_LIB ?= $(LCGDIR)/mozilla/lib/ - # Will fall back to look in NAN_MOZILLA_INC/nspr and NAN_MOZILLA_LIB - # if this is not set. - - export NAN_BUILDINFO ?= true - # Be paranoid regarding library creation (do not update archives) - export NAN_PARANOID ?= true - - # l10n - export INTERNATIONAL ?= true - - export WITH_BINRELOC ?= true - - # enable ffmpeg support - ifndef NAN_NO_FFMPEG - export WITH_FFMPEG ?= true - endif - - ifeq ($(CPU), powerpc) - # Different endianess will make it fail, rely on other platforms for checks - export BF_VERIFY_MO_FILES = false - endif - - else - ifeq ($(OS),openbsd) - - export ID = $(shell whoami) - export HOST = $(shell hostname -s) - export FREEDESKTOP ?= true - - export BF_PREFIX ?= /usr/local - export NAN_PYTHON ?= $(LCGDIR)/python - export NAN_PYTHON_VERSION ?= 3.1 - export NAN_PYTHON_BINARY ?= $(NAN_PYTHON)/bin/python$(NAN_PYTHON_VERSION) - export NAN_PYTHON_LIB ?= $(NAN_PYTHON)/lib/python$(NAN_PYTHON_VERSION)/config/libpython$(NAN_PYTHON_VERSION).a - export NAN_OPENAL ?= $(LCGDIR)/openal - export NAN_JPEG ?= $(LCGDIR)/jpeg - export NAN_PNG ?= $(LCGDIR)/png - export NAN_TIFF ?= $(LCGDIR)/tiff - export NAN_TERRAPLAY ?= $(LCGDIR)/terraplay - export NAN_MESA ?= /usr/src/Mesa-3.1 - export NAN_ZLIB ?= $(LCGDIR)/zlib - export NAN_NSPR ?= $(LCGDIR)/nspr - export NAN_FREETYPE ?= $(LCGDIR)/freetype - export NAN_GETTEXT ?= $(LCGDIR)/gettext - export NAN_SDL ?= $(shell sdl-config --prefix) - export NAN_SDLLIBS ?= $(shell sdl-config --libs) - export NAN_SDLCFLAGS ?= $(shell sdl-config --cflags) - - # Location of MOZILLA/Netscape header files... - export NAN_MOZILLA_INC ?= $(LCGDIR)/mozilla/include - export NAN_MOZILLA_LIB ?= $(LCGDIR)/mozilla/lib/ - # Will fall back to look in NAN_MOZILLA_INC/nspr and NAN_MOZILLA_LIB - # if this is not set. - - export NAN_BUILDINFO ?= true - # Be paranoid regarding library creation (do not update archives) - export NAN_PARANOID ?= true - - # l10n - #export INTERNATIONAL ?= true - - else - ifeq ($(OS),solaris) - - export ID = $(shell /usr/ucb/whoami) - export HOST = $(shell hostname) - - export BF_PREFIX ?= /usr/local - export NAN_PYTHON ?= $(LCGDIR)/python - export NAN_PYTHON_VERSION ?= 3.1 - export NAN_PYTHON_BINARY ?= $(NAN_PYTHON)/bin/python$(NAN_PYTHON_VERSION) - export NAN_PYTHON_LIB ?= $(NAN_PYTHON)/lib/python$(NAN_PYTHON_VERSION)/config/libpython$(NAN_PYTHON_VERSION).a - export NAN_OPENAL ?= $(LCGDIR)/openal - export NAN_JPEG ?= $(LCGDIR)/jpeg - export NAN_PNG ?= $(LCGDIR)/png - export NAN_TIFF ?= /usr - export NAN_TERRAPLAY ?= - export NAN_MESA ?= /usr/X11 - export NAN_ZLIB ?= $(LCGDIR)/zlib - export NAN_NSPR ?= $(LCGDIR)/nspr - export NAN_FREETYPE ?= $(LCGDIR)/freetype - export NAN_GETTEXT ?= $(LCGDIR)/gettext - export NAN_GETTEXT_LIB ?= $(NAN_GETTEXT)/lib/libintl.a $(NAN_GETTEXT)/lib/libiconv.a - export NAN_SDL ?= $(LCGDIR)/sdl - export NAN_SDLCFLAGS ?= -I$(NAN_SDL)/include/SDL - export NAN_SDLLIBS ?= $(NAN_SDL)/lib/libSDL.a - - # this only exists at the moment for i386-64 CPU Types at the moment - export NAN_OPENEXR ?= $(LCGDIR)/openexr - export NAN_OPENEXR_INC ?= -I$(NAN_OPENEXR)/include -I$(NAN_OPENEXR)/include/OpenEXR - export NAN_OPENEXR_LIBS ?= $(NAN_OPENEXR)/lib/libIlmImf.a $(NAN_OPENEXR)/lib/libHalf.a $(NAN_OPENEXR)/lib/libIex.a $(NAN_OPENEXR)/lib/libIlmThread.a -lrt - - # Location of MOZILLA/Netscape header files... - export NAN_MOZILLA_INC ?= $(LCGDIR)/mozilla/include - export NAN_MOZILLA_LIB ?= $(LCGDIR)/mozilla/lib/ - # Will fall back to look in NAN_MOZILLA_INC/nspr and NAN_MOZILLA_LIB - # if this is not set. - - export NAN_BUILDINFO ?= true - # Be paranoid regarding library creation (do not update archives) - export NAN_PARANOID ?= true - - # l10n - #export INTERNATIONAL ?= true - - else - ifeq ($(OS),windows) - - export ID = $(LOGNAME) - export NAN_PYTHON ?= $(LCGDIR)/python - export NAN_ICONV ?= $(LCGDIR)/iconv - export NAN_PYTHON_VERSION ?= 3.1 - export NAN_OPENAL ?= $(LCGDIR)/openal - export NAN_JPEG ?= $(LCGDIR)/jpeg - export NAN_PNG ?= $(LCGDIR)/png - export NAN_TIFF ?= $(LCGDIR)/tiff - export NAN_TERRAPLAY ?= $(LCGDIR)/terraplay - export NAN_MESA ?= /usr/src/Mesa-3.1 - export NAN_ZLIB ?= $(LCGDIR)/zlib - export NAN_NSPR ?= $(LCGDIR)/nspr - export NAN_GETTEXT ?= $(LCGDIR)/gettext - ifeq ($(FREE_WINDOWS), true) - export NAN_GETTEXT_LIB ?= $(NAN_GETTEXT)/lib/freegettext.a $(NAN_ICONV)/lib/freeiconv.a - export NAN_PYTHON_BINARY ?= $(NAN_PYTHON)/bin/python$(NAN_PYTHON_VERSION) - export NAN_PYTHON_LIB ?= $(NAN_PYTHON)/lib/lib25_vs2005/libpython31.a # NOT TESTED, PROBABLY BROKEN - export NAN_FREETYPE ?= $(LCGDIR)/gcc/freetype - export NAN_SDL ?= $(LCGDIR)/gcc/sdl - export NAN_OPENEXR ?= $(LCGDIR)/gcc/openexr - export NAN_OPENEXR_INC ?= -I$(NAN_OPENEXR)/include -I$(NAN_OPENEXR)/include/OpenEXR - export NAN_OPENEXR_LIBS ?= $(NAN_OPENEXR)/lib/libIlmImf.a $(NAN_OPENEXR)/lib/libHalf.a $(NAN_OPENEXR)/lib/libIex.a - export NAN_PTHREADS ?= $(LCGDIR)/pthreads - else - export NAN_GETTEXT_LIB ?= $(NAN_GETTEXT)/lib/gnu_gettext.lib $(NAN_ICONV)/lib/iconv.lib - export NAN_PYTHON_BINARY ?= python - export NAN_PYTHON_LIB ?= $(NAN_PYTHON)/lib/python31.lib # NOT TESTED, PROBABLY BROKEN - export NAN_FREETYPE ?= $(LCGDIR)/freetype - export NAN_SDL ?= $(LCGDIR)/sdl - export NAN_OPENEXR ?= $(LCGDIR)/openexr - export NAN_OPENEXR_INC ?= -I$(NAN_OPENEXR)/include -I$(NAN_OPENEXR)/include/IlmImf -I$(NAN_OPENEXR)/include/Imath -I$(NAN_OPENEXR)/include/Iex - export NAN_OPENEXR_LIBS ?= $(NAN_OPENEXR)/lib/IlmImf.lib $(NAN_OPENEXR)/lib/Half.lib $(NAN_OPENEXR)/lib/Iex.lib - endif - export NAN_SDLCFLAGS ?= -I$(NAN_SDL)/include - - export NAN_WINTAB ?= $(LCGDIR)/wintab - - # Location of MOZILLA/Netscape header files... - export NAN_MOZILLA_INC ?= $(LCGDIR)/mozilla/include - export NAN_MOZILLA_LIB ?= $(LCGDIR)/mozilla/lib/ - # Will fall back to look in NAN_MOZILLA_INC/nspr and NAN_MOZILLA_LIB - # if this is not set. - export NAN_PYTHON_BINARY ?= python - export NAN_BUILDINFO ?= true - # Be paranoid regarding library creation (do not update archives) - export NAN_PARANOID ?= true - - # l10n - export INTERNATIONAL ?= true - - # enable quicktime support - # export WITH_QUICKTIME ?= true - - else # Platform not listed above - - export NAN_PYTHON ?= $(LCGDIR)/python - export NAN_PYTHON_VERSION ?= 3.1 - export NAN_PYTHON_BINARY ?= python - export NAN_PYTHON_LIB ?= $(NAN_PYTHON)/lib/python$(NAN_PYTHON_VERSION)/config/libpython$(NAN_PYTHON_VERSION).a - - export NAN_OPENAL ?= $(LCGDIR)/openal - export NAN_JPEG ?= $(LCGDIR)/jpeg - export NAN_PNG ?= $(LCGDIR)/png - export NAN_TIFF ?= $(LCGDIR)/tiff - export NAN_SDL ?= $(LCGDIR)/sdl - export NAN_TERRAPLAY ?= $(LCGDIR)/terraplay - export NAN_MESA ?= /usr/src/Mesa-3.1 - export NAN_ZLIB ?= $(LCGDIR)/zlib - export NAN_NSPR ?= $(LCGDIR)/nspr - export NAN_FREETYPE ?= $(LCGDIR)/freetype - export NAN_GETTEXT ?= $(LCGDIR)/gettext - export NAN_SDL ?= $(shell sdl-config --prefix) - export NAN_SDLLIBS ?= $(shell sdl-config --libs) - export NAN_SDLCFLAGS ?= $(shell sdl-config --cflags) - - # Location of MOZILLA/Netscape header files... - export NAN_MOZILLA_INC ?= $(LCGDIR)/mozilla/include - export NAN_MOZILLA_LIB ?= $(LCGDIR)/mozilla/lib/ - # Will fall back to look in NAN_MOZILLA_INC/nspr and NAN_MOZILLA_LIB - # if this is not set. - - export NAN_BUILDINFO ?= true - # Be paranoid regarding library creation (do not update archives) - export NAN_PARANOID ?= true - - # l10n - #export INTERNATIONAL ?= true - - endif # windows + fallback - endif # solaris - endif # openbsd - endif # linux - endif # irix - endif # freebsd - endif # darwin - - # default tiff libs - export NAN_TIFF_LIBS ?= $(NAN_TIFF)/lib/libtiff.a - - # default path to lcms, may be overidden in platform sections above or in user-def.mk - export BF_LCMS ?= $(LCGDIR)/lcms - export BF_LCMS_INC ?= $(BF_LCMS)/include - export BF_LCMS_LIBS ?= $(BF_LCMS)/lib/liblcms.a - -endif # CONFIG_GUESS - -# Don't want to build the gameengine? -ifeq ($(NAN_NO_KETSJI), true) - export NAN_JUST_BLENDERDYNAMIC=true -endif diff --git a/build_files/make/nan_link.mk b/build_files/make/nan_link.mk deleted file mode 100644 index 43fba13f45b..00000000000 --- a/build_files/make/nan_link.mk +++ /dev/null @@ -1,202 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): GSR -# -# ***** END GPL LICENSE BLOCK ***** -# -# linking only - -include nan_definitions.mk - -ifdef NAN_DEBUG - LDFLAGS += $(NAN_DEBUG) -endif - -DBG_LDFLAGS += -g - -ifneq (x$(DEBUG_DIR), x) - LDFLAGS+=$(DBG_LDFLAGS) -else - LDFLAGS+=$(REL_LDFLAGS) -endif - -######################## OS dependencies (alphabetic!) ################ - -# default (overriden by windows) -SOEXT = .so - -ifeq ($(OS),darwin) - LLIBS += -lGLU -lGL - LLIBS += -lz -lstdc++ - ifdef USE_OSX10.4STUBS - LLIBS +=-lSystemStubs - endif - ifeq ($(WITH_COCOA), true) - LLIBS += -framework Cocoa - endif - LLIBS += -framework Carbon -framework AGL -framework OpenGL - ifeq ($(WITH_QUICKTIME), true) - ifeq ($(USE_QTKIT), true) - LLIBS += -framework QTKit - else - LLIBS += -framework QuickTime - endif - endif - LLIBS += -framework CoreAudio - LLIBS += -framework AudioUnit -framework AudioToolbox - LDFLAGS += -L/System/Library/Frameworks/OpenGL.framework/Libraries - # useful for crosscompiling - LDFLAGS += -arch $(MACOSX_ARCHITECTURE) #-isysroot $(MACOSX_SDK) -mmacosx-version-min=$(MACOSX_MIN_VERS) - - DBG_LDFLAGS += -L/System/Library/Frameworks/OpenGL.framework/Libraries -endif - -ifeq ($(OS),freebsd) - LLIBS = -L/usr/X11R6/lib -lX11 -lXmu -lXi -lm -lutil -lz -pthread -lc_r - DADD = -lGL -lGLU - DYNLDFLAGS = -shared $(LDFLAGS) - LOPTS = -Wl,--export-dynamic -endif - -ifeq ($(OS),irix) - ifeq ($(IRIX_USE_GCC), true) - LDFLAGS += -mabi=n32 -mips4 - DBG_LDFLAGS += -LD_LAYOUT:lgot_buffer=40 - else - LDFLAGS += -n32 -mips3 - LDFLAGS += -woff 84,171 - endif - LLIBS = -lmovieGL -lGLU -lGL -lXmu -lXext -lXi -lX11 -lc -lm -ldmedia - LLIBS += -lcl -laudio - ifneq ($(IRIX_USE_GCC), true) - LLIBS += -lCio -ldb - endif - LLIBS += -lz -lpthread - DYNLDFLAGS = -shared $(LDFLAGS) -endif - -ifeq ($(OS),linux) - ifeq ($(CPU),alpha) - COMMENT = "MESA 3.1" - LLIBS = -lGL -lGLU -L/usr/X11R6/lib/ -lXmu -lXext -lX11 - LLIBS += -lc -lm -ldl -lutil - LOPTS = -export-dynamic - endif - ifeq ($(CPU),$(findstring $(CPU), "i386 x86_64 ia64 parisc64 powerpc sparc64")) - COMMENT = "MESA 3.1" - LLIBS = -L$(NAN_MESA)/lib -L/usr/X11R6/lib -lXext -lX11 -lXi - LLIBS += -lutil -lc -lm -ldl -lpthread - LLIBS += -L$(NAN_PYTHON)/lib -Wl,-rpath -Wl,$(NAN_PYTHON)/lib -lpython$(NAN_PYTHON_VERSION) - LOPTS = -export-dynamic - DADD = -lGL -lGLU - SADD = $(NAN_MESA)/lib/libGL.a $(NAN_MESA)/lib/libGLU.a - DYNLDFLAGS = -shared $(LDFLAGS) - endif - LLIBS += -lz -endif - -ifeq ($(OS),openbsd) - SADD = /usr/local/lib/libGL.a /usr/local/lib/libGLU.a - SADD += /usr/X11R6/lib/libXmu.a /usr/X11R6/lib/libXext.a - SADD += /usr/X11R6/lib/libX11.a /usr/lib/libm.a -pthread -endif - -ifeq ($(OS),solaris) - ifeq (x86_64, $(findstring x86_64, $(CPU))) - LLIBS = -lrt - LLIBS += -L$(NAN_MESA)/lib/amd64 - else - LLIBS += -L$(NAN_MESA)/lib - endif - - LLIBS += $(NAN_ZLIB)/lib/libz.a -lGLU -lGL -lXmu -lXext -lXi -lX11 -lc -lm -ldl -lsocket -lnsl - DYNLDFLAGS = -shared $(LDFLAGS) -endif - -ifeq ($(OS),windows) - EXT = .exe - SOEXT = .dll - ifeq ($(FREE_WINDOWS),true) - MINGWLIB = /usr/lib/w32api - LDFLAGS += -mwindows -mno-cygwin -mconsole - DADD += -L/usr/lib/w32api -lnetapi32 -lopengl32 -lglu32 -lshfolder - DADD += -L/usr/lib/w32api -lwinmm -lwsock32 - else - DADD = kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib - DADD += advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib - DADD += vfw32.lib winmm.lib opengl32.lib glu32.lib largeint.lib dxguid.lib - DADD += libcmt.lib - LOPTS = /link - LOPTS += /NODEFAULTLIB:"libc" - LOPTS += /NODEFAULTLIB:"libcd" - LOPTS += /NODEFAULTLIB:"libcp" - LOPTS += /NODEFAULTLIB:"libcpd" - LOPTS += /NODEFAULTLIB:"python31" - LOPTS += /NODEFAULTLIB:"msvcrt" - LOPTS += /SUBSYSTEM:CONSOLE - LDFLAGS += /MT - DYNLDFLAGS = /LD - endif -endif - -ifneq ($(OS), irix) - LLIBS += $(NAN_SDLLIBS) -endif - -ifeq ($(WITH_ICONV),true) - LLIBS += $(NAN_ICONV_LIBS) -endif - -ifeq ($(WITH_FFMPEG),true) - LLIBS += $(NAN_FFMPEGLIBS) -endif - -ifeq ($(INTERNATIONAL),true) - LLIBS += $(NAN_GETTEXT_LIB) -endif - -ifeq ($(WITH_BF_OPENMP),true) - LLIBS += -lgomp -endif - -ifeq ($(WITH_FFTW3),true) - LLIBS += $(BF_FFTW3_LIBS) -endif - -ifeq ($(WITH_OPENCOLLADA),true) - LLIBS += $(BF_OPENCOLLADA_LIBS) -endif - -ifeq ($(WITH_TIFF),true) - LLIBS += $(NAN_TIFF_LIBS) -endif - -ifeq ($(WITH_LCMS),true) - LLIBS += $(BF_LCMS_LIBS) -endif - -LLIBS += $(NAN_PYTHON_LIB) diff --git a/build_files/make/nan_subdirs.mk b/build_files/make/nan_subdirs.mk deleted file mode 100644 index 58200a28b67..00000000000 --- a/build_files/make/nan_subdirs.mk +++ /dev/null @@ -1,78 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): GSR -# -# ***** END GPL LICENSE BLOCK ***** -# -# Bounce make to subdirectories. -# Set DIRS, SOURCEDIR. Optionally also reacts on DIR, TESTDIRS. -# - -default: all - -# do not add install here. install target can only be used in intern/ -# top level Makefiles -all debug clean:: -ifdef quicky - @for i in $(quicky); do \ - echo "====> $(MAKE) $@ in $$i";\ - $(MAKE) -C $$i $@ quicky= || exit 1;\ - done - $(MAKE) -C source link || exit 1 - @echo "${quicky}" -else - ifdef DIR - @# Make sure object toplevels are there - @[ -d $(NAN_OBJDIR) ] || mkdir -p $(NAN_OBJDIR) - @[ -d $(LCGDIR) ] || mkdir -p $(LCGDIR) - @[ -d $(OCGDIR) ] || mkdir -p $(OCGDIR) - @[ -d $(OCGDIR)/intern ] || mkdir -p $(OCGDIR)/intern - @[ -d $(OCGDIR)/extern ] || mkdir -p $(OCGDIR)/extern - @# Create object directory - @[ -d $(DIR) ] || mkdir -p $(DIR) - endif - ifdef SOURCEDIR - @for i in $(DIRS); do \ - echo "====> $(MAKE) $@ in $(SOURCEDIR)/$$i" ;\ - $(MAKE) -C $$i $@ || exit 1; \ - done - else - @for i in $(DIRS); do \ - echo "====> $(MAKE) $@ in $$i" ;\ - $(MAKE) -C $$i $@ || exit 1; \ - done - endif -endif - -test:: - ifdef TESTDIRS - @for i in $(TESTDIRS); do \ - echo "====> $(MAKE) $@ in $(SOURCEDIR)/$$i" ;\ - $(MAKE) -C $$i $@ || exit 1; \ - done - endif - diff --git a/build_files/make/nan_warn.mk b/build_files/make/nan_warn.mk deleted file mode 100644 index c195fb333ab..00000000000 --- a/build_files/make/nan_warn.mk +++ /dev/null @@ -1,167 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): GSR -# -# ***** END GPL LICENSE BLOCK ***** -# -# NaN compiler and linker warning levels -# On some platforms, you will be flooded with system include file warnings. -# Use hmake to filter those away. -# - -# Force the correct redefinition -LEVEL_1_C_WARNINGS = -FIX_NAN_WARN1A -LEVEL_1_CPP_WARNINGS = -FIX_NAN_WARN1B -LEVEL_2_C_WARNINGS = -FIX_NAN_WARN2A -LEVEL_2_CPP_WARNINGS = -FIX_NAN_WARN2B -FIX_STUBS_WARNINGS = -FIX_NAN_WARN3 - -######################################################################## -# Level 1: basic C warnings. -ifeq (gcc, $(findstring gcc,$(CC))) - LEVEL_1_C_WARNINGS = -Wall - LEVEL_1_C_WARNINGS += -Wno-char-subscripts -else - ifeq (cc, $(findstring cc,$(CC))) - ifeq ($(OS),irix) - # MIPSpro Compilers - # - # Irix warning info - # - # 1001 # the source file does not end w/ a newline - # 1110 # unreachable statement - # 1201 # trailing comma in enums is nonstandard - # 1209 # constant controlling expressions - # 1355 # extra semicolon is ignored - # 1424 # unreferenced template paramaters - # 1681 # virtual function override - # 3201 # unreferenced formal paramaters - # - LEVEL_1_C_WARNINGS = -fullwarn -woff 1001,1110,1201,1209,1355,1424,1681,3201 - endif - endif - ifeq ($(OS),windows) - # Microsoft Compilers and cl_wrapper.pl - LEVEL_1_C_WARNINGS = -Wall - endif -endif - -# Level 1: basic CPP warnings. -ifeq (g++, $(findstring g++,$(CCC))) - LEVEL_1_CPP_WARNINGS = -Wall - LEVEL_1_CPP_WARNINGS += -Wno-reorder -else - ifeq (CC, $(findstring CC,$(CCC))) - ifeq ($(OS),irix) - # MIPSpro Compilers - # see warning descriptions above - LEVEL_1_CPP_WARNINGS = -woff 1001,1110,1201,1209,1355,1424,1681,3201 - endif - endif - ifeq ($(OS),windows) - # Microsoft Compilers and cl_wrapper.pl - LEVEL_1_CPP_WARNINGS = -Wall - endif -endif - -######################################################################## -# Level 2: paranoia level C warnings. -# DO NOT REUSE LEVEL_1_ DEFINES. -ifeq (gcc, $(findstring gcc,$(CC))) - LEVEL_2_C_WARNINGS = -Wall - LEVEL_2_C_WARNINGS += -W - # deliberately enable char-subscript warnings - LEVEL_2_C_WARNINGS += -Wshadow - LEVEL_2_C_WARNINGS += -Wpointer-arith - LEVEL_2_C_WARNINGS += -Wbad-function-cast - LEVEL_2_C_WARNINGS += -Wcast-qual - LEVEL_2_C_WARNINGS += -Wcast-align - LEVEL_2_C_WARNINGS += -Waggregate-return - LEVEL_2_C_WARNINGS += -Wstrict-prototypes - LEVEL_2_C_WARNINGS += -Wmissing-prototypes - LEVEL_2_C_WARNINGS += -Wmissing-declarations - LEVEL_2_C_WARNINGS += -Wnested-externs - LEVEL_2_C_WARNINGS += -Wredundant-decls -else - ifeq (cc, $(findstring cc,$(CC))) - ifeq ($(OS),irix) - # MIPSpro Compilers - # see warning descriptions above - LEVEL_2_C_WARNINGS = -fullwarn -woff 1001,1209,1424,3201 - endif - ifeq ($(OS),solaris) - # Forte / Sun WorkShop Compilers - LEVEL_2_C_WARNINGS = -v - endif - endif - ifeq ($(OS),windows) - # Microsoft Compilers and cl_wrapper.pl - LEVEL_2_C_WARNINGS = -Wall - endif -endif - -# Level 2: paranoia level CPP warnings. -# DO NOT REUSE LEVEL_1_ DEFINES. -ifeq (g++, $(findstring g++,$(CCC))) - LEVEL_2_CPP_WARNINGS = -Wall - LEVEL_2_CPP_WARNINGS += -W - # deliberately enable char-subscript warnings - LEVEL_2_CPP_WARNINGS += -Wshadow - LEVEL_2_CPP_WARNINGS += -Wpointer-arith - LEVEL_2_CPP_WARNINGS += -Wcast-qual - LEVEL_2_CPP_WARNINGS += -Wcast-align - # deliberately disable aggregate-return warnings - LEVEL_2_CPP_WARNINGS += -Wredundant-decls - LEVEL_2_CPP_WARNINGS += -Wreorder - LEVEL_2_CPP_WARNINGS += -Wctor-dtor-privacy - LEVEL_2_CPP_WARNINGS += -Wnon-virtual-dtor - #LEVEL_2_CPP_WARNINGS += -Wold-style-cast - LEVEL_2_CPP_WARNINGS += -Woverloaded-virtual - LEVEL_2_CPP_WARNINGS += -Wsign-promo - LEVEL_2_CPP_WARNINGS += -Wsynth -else - ifeq (CC, $(findstring CC,$(CCC))) - ifeq ($(OS),irix) - # MIPSpro Compilers - # see warning descriptions above - LEVEL_2_CPP_WARNINGS = -fullwarn -woff 1209,1424,3201 - endif - endif - ifeq ($(OS),windows) - # Microsoft Compilers and cl_wrapper.pl - LEVEL_2_CPP_WARNINGS = -Wall - endif -endif - -######################################################################## -# stubs warning fix -ifeq (gcc, $(findstring gcc,$(CC))) - FIX_STUBS_WARNINGS = -Wno-unused -else - FIX_STUBS_WARNINGS = -endif - diff --git a/build_files/scons/config/linux2-config.py b/build_files/scons/config/linux2-config.py index 07ff30763c0..5afc2234c7b 100644 --- a/build_files/scons/config/linux2-config.py +++ b/build_files/scons/config/linux2-config.py @@ -193,6 +193,8 @@ CCFLAGS = ['-pipe','-fPIC','-funsigned-char','-fno-strict-aliasing','-D_LARGEFIL CPPFLAGS = [] CXXFLAGS = ['-pipe','-fPIC','-funsigned-char','-fno-strict-aliasing','-D_LARGEFILE_SOURCE', '-D_FILE_OFFSET_BITS=64','-D_LARGEFILE64_SOURCE'] +# g++ 4.6, only needed for bullet +CXXFLAGS += ['-fpermissive'] if WITH_BF_FFMPEG: # libavutil needs UINT64_C() CXXFLAGS += ['-D__STDC_CONSTANT_MACROS', ] diff --git a/build_files/scons/config/win32-vc-config.py b/build_files/scons/config/win32-vc-config.py index a2d5c5af712..219e7e0bce3 100644 --- a/build_files/scons/config/win32-vc-config.py +++ b/build_files/scons/config/win32-vc-config.py @@ -146,7 +146,7 @@ BF_COLLADA_LIB = 'bf_collada' BF_OPENCOLLADA = LIBDIR + '/opencollada' BF_OPENCOLLADA_INC = '${BF_OPENCOLLADA}/include' -BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser MathMLSolver xml2 pcre buffer ftoa' +BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser MathMLSolver xml2 pcre buffer ftoa UTF' BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib' WITH_BF_LCMS = False diff --git a/build_files/scons/config/win64-vc-config.py b/build_files/scons/config/win64-vc-config.py index 5660b4c8988..950f9257b99 100644 --- a/build_files/scons/config/win64-vc-config.py +++ b/build_files/scons/config/win64-vc-config.py @@ -148,7 +148,7 @@ BF_COLLADA_LIB = 'bf_collada' BF_OPENCOLLADA = LIBDIR + '/opencollada' BF_OPENCOLLADA_INC = '${BF_OPENCOLLADA}/include' -BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser MathMLSolver xml2 pcre buffer ftoa' +BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser MathMLSolver xml2 pcre buffer ftoa UTF' BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib' WITH_BF_LCMS = False diff --git a/doc/build_systems/README.windows-gcc b/doc/build_systems/README.windows-gcc deleted file mode 100644 index 78018eabbc0..00000000000 --- a/doc/build_systems/README.windows-gcc +++ /dev/null @@ -1,123 +0,0 @@ -An updated version of this guide can be found at: - -http://www.blender3d.org/cms/Building_with_Cygwin.524.0.html - -Introduction ------------- - -Here are some basic instructions for building -blender for windows using gcc under cygwin. -Please note that the resulting executable does not -depend on cygwin and can be distrubuted to machines -that don't have cygwin installed. - -The instructions are: - -1. Download cygwin (www.cygwin.com) and use the setup program - to install packages for gcc, gcc-mingw, gcc-g++, w32api, make, cvs, - python, perl, gettext, and gettext-devel (and maybe others... the - dependency list is bound to change over time and hopefully these - instructions will keep up with the changes). All of the following - commands will be entered at the cygwin prompt so launch - cygwin now. - -2. Create a directory to put your sources and then enter that - directory, e.g.: - mkdir bf-blender - cd bf-blender - - *********WARNING: if the directory path you are in contains a space in - it you will get errors in trying to compile the code. Change directorys - to a one that does not contain a space in the path before creating the - above directory ********* - - -Please note that a backslash at the end of a line in the following -means that the command spans two lines. If you wish to type the command as -one line, exclude the '\'. - -3. Checkout the blender module from the bf-blender tree using cvs - (use password anonymous): - cvs -d:pserver:anonymous@cvs.blender.org:/cvsroot/bf-blender login - cvs -z3 -d:pserver:anonymous@cvs.blender.org:/cvsroot/bf-blender \ - co blender - -4. Checkout the lib/windows module from bf-blender using cvs: - cvs -z3 -d:pserver:anonymous@cvs.blender.org:/cvsroot/bf-blender \ - co lib/windows - -5. Enter the newly created blender directory: - cd blender - -6. To prepare the build system to use only the free tools we must - set some environment variables. This is done by creating a - file called "user-def.mk" in the blender directory and - inserting the following line with notepad or your favorite - text editor: - export FREE_WINDOWS=true - - The quickest way to do this though is to issue the following - command: - echo 'export FREE_WINDOWS=true' > user-def.mk - -7. Time to build... issue the command: - make - -8. Wait for it to finish (there is this mysterious place called - 'outside' that I am told is nice to go to while waiting for a - compile to finish). - -9. After it finishes compiling, if you would like to run your freshly compiled - blender, type make release. Then change directorys to obj/233.a/ and move - the zip file to where you want to use it, unzip the file, enter the directory - and run your brand new blender. - - -Getting Help ------------- -If you have problems, come by #blendercompilers on irc.freenode.net -or post questions to the "Compiling, Libraries, Modules" forum -at www.blender.org. There is also the very useful bf-committers -mailing list, what you can subscribe to here: - -http://www.blender.org/mailman/listinfo/bf-committers -(as a bonus you can get info about the most recent features that -are coming down the pipe ...) - -This said, the most common fix to a problem will -probably involve installing an additional cygwin package, -so keep that cygwin setup program close by ... - -Some final notes ----------------- - -- The build will take a long time, even on a fast machine - (a clean build takes almost an hour on my Athlon 1800+ - based laptop). -- If the build is successful you will find it has created - the program obj/windows/bin/blender.exe -- The executable generated by gcc will generally be slower - that an msvc++ generated executable at rendering, but the - OpenGL speed should be about the same. -- Sound is disabled -- If you want to clean your sources issue a 'make clean' - in the top blender directory. -- If you want to update your sources when somebody has - added a new awesome feature, you will want to go to the - topmost blender directory and issue the following command: - cvs -z3 update -P -d - It would probably be best to clean your sources before - re-building (see previous note). -- This is a work in progress, so some things may not be working - right or it may not support all of the cutting edge features. -- Want to make a fancy zipped up blender package to give - to your buddies? Try "make release" ... read the output - to find out where the zip file was placed (note: you will - probably need the zip/unzip packages from cygwin to do - this). -- You can make a debug executable using 'make debug'. The - debug executable will be larger and slower that the - regular executable, but when used with the gnu debugger - (gdb) it can help debug a blender problem (for example, - it can locate the line of code that caused blender to - crash). diff --git a/doc/build_systems/cmake.txt b/doc/build_systems/cmake.txt index a49ff629b5b..1ff621c6e96 100644 --- a/doc/build_systems/cmake.txt +++ b/doc/build_systems/cmake.txt @@ -132,9 +132,9 @@ $Id$ The commandline can be used to override detected/default settings, e.g: On Unix: - cmake -D PYTHON_LIB=/usr/local/lib/python3.1/config/libpython3.1.so -D PYTHON_INC=/usr/local/include/python3.1 -G "Unix Makefiles" ../blender + cmake -D PYTHON_LIBRARY=/usr/local/lib/python3.1/config/libpython3.1.so -D PYTHON_INCLUDE_DIRS=/usr/local/include/python3.1 -G "Unix Makefiles" ../blender On Macs: - cmake -D PYTHON_INC=/System/Library/Frameworks/Python.framework/Versions/3.1/include/python3.1 -G Xcode ../blender + cmake -D PYTHON_INCLUDE_DIRS=/System/Library/Frameworks/Python.framework/Versions/3.1/include/python3.1 -G Xcode ../blender Mote that this should only be needed once per build directory generation because it will keep the overrides in CMakeCache.txt for subsequent runs. diff --git a/doc/manpage/blender.1 b/doc/manpage/blender.1 index 8338b41559e..2c301d982e1 100644 --- a/doc/manpage/blender.1 +++ b/doc/manpage/blender.1 @@ -1,4 +1,4 @@ -.TH "BLENDER" "1" "January 20, 2011" "Blender Blender 2\&.56 (sub 0) " +.TH "BLENDER" "1" "January 27, 2011" "Blender Blender 2\&.56 (sub 0) " .SH NAME blender \- a 3D modelling and rendering package @@ -305,6 +305,12 @@ Run blender with an interactive console .br .TP +.B \-\-addons +.br +Comma separated list of addons (no spaces) +.br + +.TP .B \-v or \-\-version .br Print Blender version and exit @@ -371,6 +377,7 @@ Arguments are executed in the order they are given. eg \fIBLENDER_SYSTEM_DATAFILES\fR Directory for system wide data files. \fIBLENDER_SYSTEM_PYTHON\fR Directory for system python libraries. \fITMP\fR or \fITMPDIR\fR Store temporary files here. + \fISDL_AUDIODRIVER\fR LibSDL audio driver \- alsa, esd, dma. \fIPYTHONHOME\fR Path to the python directory, eg. /usr/lib/python. .br .br diff --git a/doc/python_api/sphinx_doc_gen.sh b/doc/python_api/sphinx_doc_gen.sh index ae7fad58c23..90116b43414 100755 --- a/doc/python_api/sphinx_doc_gen.sh +++ b/doc/python_api/sphinx_doc_gen.sh @@ -20,7 +20,7 @@ SSH_UPLOAD_FULL=$SSH_UPLOAD/"blender_python_api_"$BLENDER_VERSION SPHINXBASE=doc/python_api/ # dont delete existing docs, now partial updates are used for quick builds. -$BLENDER --background --python $SPHINXBASE/sphinx_doc_gen.py +$BLENDER --background --factory-startup --python $SPHINXBASE/sphinx_doc_gen.py # html sphinx-build $SPHINXBASE/sphinx-in $SPHINXBASE/sphinx-out diff --git a/extern/Eigen2/Eigen/Core b/extern/Eigen2/Eigen/Core index f5e315a2c9d..060c60f1306 100644 --- a/extern/Eigen2/Eigen/Core +++ b/extern/Eigen2/Eigen/Core @@ -59,6 +59,7 @@ #include <cstring> #include <string> #include <limits> +#include <cstddef> #if (defined(_CPPUNWIND) || defined(__EXCEPTIONS)) && !defined(EIGEN_NO_EXCEPTIONS) #define EIGEN_EXCEPTIONS diff --git a/extern/Makefile b/extern/Makefile deleted file mode 100644 index 4a2e7a6d59b..00000000000 --- a/extern/Makefile +++ /dev/null @@ -1,72 +0,0 @@ -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2002 by Hans Lambermont -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# Bounces make to subdirectories. Also installs after succesful all target. - -include nan_definitions.mk - -SOURCEDIR = extern -DIR = $(OCGDIR)/extern -DIRS = glew/src - -# Cloth requires it -ifeq ($(NAN_USE_BULLET), true) - DIRS += bullet2 -endif - -ifeq ($(WITH_BINRELOC), true) - DIRS += binreloc -endif - -ifeq ($(WITH_OPENJPEG), true) - ifndef BF_OPENJPEG - DIRS += libopenjpeg - endif -endif - -ifeq ($(WITH_LZO), true) - DIRS += lzo/minilzo -endif - -ifeq ($(WITH_LZMA), true) - DIRS += lzma -endif - -TARGET = solid - -all:: - @[ -d $(OCGDIR)/extern ] || mkdir -p $(OCGDIR)/extern - @for i in $(DIRS); do \ - echo "====> $(MAKE) $@ in $(SOURCEDIR)/$$i" ;\ - $(MAKE) -C $$i install || exit 1; \ - done - -clean test debug:: - @[ -d $(OCGDIR)/extern ] || mkdir -p $(OCGDIR)/extern - @for i in $(DIRS); do \ - echo "====> $(MAKE) $@ in $(SOURCEDIR)/$$i" ;\ - $(MAKE) -C $$i $@ || exit 1; \ - done diff --git a/extern/binreloc/Makefile b/extern/binreloc/Makefile deleted file mode 100644 index 21343ab4803..00000000000 --- a/extern/binreloc/Makefile +++ /dev/null @@ -1,38 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2008 by The Blender Foundation -# All rights reserved. -# -# - -LIBNAME = binreloc -DIR = $(OCGDIR)/extern/$(LIBNAME) - -include nan_definitions.mk - -CPPFLAGS += -DENABLE_BINRELOC -I./include - - -include nan_compile.mk - -install: $(ALL_OR_DEBUG) - @[ -d $(DIR) ] || mkdir $(DIR) - @[ -d $(DIR)/include ] || mkdir $(DIR)/include - @../../intern/tools/cpifdiff.sh include/*.h $(DIR)/include/ diff --git a/extern/bullet2/CMakeLists.txt b/extern/bullet2/CMakeLists.txt index 5f8901a646c..a8f8801af70 100644 --- a/extern/bullet2/CMakeLists.txt +++ b/extern/bullet2/CMakeLists.txt @@ -319,4 +319,9 @@ set(SRC src/btBulletDynamicsCommon.h ) +if(CMAKE_COMPILER_IS_GNUCC) + # needed for gcc 4.6+ + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive") +endif() + blender_add_lib(extern_bullet "${SRC}" "${INC}") diff --git a/extern/bullet2/Makefile b/extern/bullet2/Makefile deleted file mode 100644 index d974569e63d..00000000000 --- a/extern/bullet2/Makefile +++ /dev/null @@ -1,65 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2002 by Hans Lambermont -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): -# -# ***** END GPL LICENSE BLOCK ***** -LIBNAME = bullet2 -include nan_definitions.mk -SOURCEDIR = extern/$(LIBNAME) -DIR = $(OCGDIR)/extern/$(LIBNAME) -DIRS = src -DISTDIR = src - -BULLETDIRS = \ -LinearMath \ -BulletCollision/BroadphaseCollision \ -BulletCollision/CollisionShapes \ -BulletCollision/NarrowPhaseCollision \ -BulletCollision/Gimpact \ -BulletCollision//CollisionDispatch \ -BulletDynamics/ConstraintSolver \ -BulletDynamics/Vehicle \ -BulletDynamics/Dynamics \ -BulletSoftBody - -include nan_subdirs.mk - -CP = $(NANBLENDERHOME)/intern/tools/cpifdiff.sh - -install: $(ALL_OR_DEBUG) - @[ -d $(NAN_BULLET2) ] || mkdir -p $(NAN_BULLET2) - @[ -d $(NAN_BULLET2)/include ] || mkdir -p $(NAN_BULLET2)/include - @for i in $(BULLETDIRS); do \ - [ -d $(NAN_BULLET2)/include/$$i ] || mkdir -p $(NAN_BULLET2)/include/$$i; \ - $(CP) $(DISTDIR)/$$i/*.h $(NAN_BULLET2)/include/$$i; \ - done - @[ -d $(NAN_BULLET2)/lib ] || mkdir -p $(NAN_BULLET2)/lib - @$(CP) $(DISTDIR)/*.h $(NAN_BULLET2)/include - @$(CP) $(OCGDIR)/extern/bullet2/libbullet2.a $(NAN_BULLET2)/lib -ifeq ($(OS),darwin) - ranlib $(NAN_BULLET2)/lib/libbullet2.a -endif diff --git a/extern/bullet2/src/Makefile b/extern/bullet2/src/Makefile deleted file mode 100644 index 554179558d9..00000000000 --- a/extern/bullet2/src/Makefile +++ /dev/null @@ -1,72 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# - -LIBNAME = bullet2 -DIR = $(OCGDIR)/extern/$(LIBNAME) - -BULLETDIRS = \ -LinearMath \ -BulletCollision/BroadphaseCollision \ -BulletCollision/CollisionShapes \ -BulletCollision/NarrowPhaseCollision \ -BulletCollision/CollisionDispatch \ -BulletCollision/Gimpact \ -BulletDynamics/ConstraintSolver \ -BulletDynamics/Vehicle \ -BulletDynamics/Dynamics \ -BulletSoftBody - -CCSRCS = $(wildcard \ -LinearMath/*.cpp \ -BulletCollision/BroadphaseCollision/*.cpp \ -BulletCollision/CollisionShapes/*.cpp \ -BulletCollision/NarrowPhaseCollision/*.cpp \ -BulletCollision/CollisionDispatch/*.cpp \ -BulletCollision/Gimpact/*.cpp \ -BulletDynamics/ConstraintSolver/*.cpp \ -BulletDynamics/Vehicle/*.cpp \ -BulletDynamics/Dynamics/*.cpp \ -BulletSoftBody/*.cpp) - -CPPFLAGS += -D_LIB -I. -IBulletCollision -IBulletDynamics -ILinearMath - -all debug:: objdirs - -include nan_compile.mk - -.PHONY: objdirs clean -objdirs: - @for i in $(BULLETDIRS); do \ - [ -d $(DIR)/$(DEBUG_DIR)$$i ] || mkdir -p $(DIR)/$(DEBUG_DIR)$$i; \ - done - -clean:: - rm -rf $(DIR) - rm -rf $(NAN_BULLET2)/lib/libbullet2.a - rm -rf $(NAN_BULLET2)/include diff --git a/extern/glew/src/Makefile b/extern/glew/src/Makefile deleted file mode 100644 index ebcecae45c8..00000000000 --- a/extern/glew/src/Makefile +++ /dev/null @@ -1,56 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# -# $Id$ -# -# ***** BEGIN GPL/BL DUAL LICENSE 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. The Blender -# Foundation also sells licenses for use in proprietary software under -# the Blender License. See http://www.blender.org/BL/ for information -# about this. -# -# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): GSR -# -# ***** END GPL/BL DUAL LICENSE BLOCK ***** -# -# - -LIBNAME = glew -DIR = $(OCGDIR)/extern/$(LIBNAME) - -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -CPPFLAGS += -I../include - -CSRCS = glew.c -CCSRCS = -include nan_compile.mk - -install: $(ALL_OR_DEBUG) - @[ -d $(NAN_GLEW) ] || mkdir -p $(NAN_GLEW) - @[ -d $(NAN_GLEW)/include/GL ] || mkdir -p $(NAN_GLEW)/include/GL - @[ -d $(NAN_GLEW)/lib/$(DEBUG_DIR) ] || mkdir -p $(NAN_GLEW)/lib/$(DEBUG_DIR) - @$(NANBLENDERHOME)/intern/tools/cpifdiff.sh $(DIR)/$(DEBUG_DIR)lib$(LIBNAME).a $(NAN_GLEW)/lib/$(DEBUG_DIR) -ifeq ($(OS),darwin) - ranlib $(NAN_GLEW)/lib/$(DEBUG_DIR)lib$(LIBNAME).a -endif - @$(NANBLENDERHOME)/intern/tools/cpifdiff.sh ../include/GL/*.h $(NAN_GLEW)/include/GL - diff --git a/extern/libopenjpeg/Makefile b/extern/libopenjpeg/Makefile deleted file mode 100644 index 15d9d9c7c01..00000000000 --- a/extern/libopenjpeg/Makefile +++ /dev/null @@ -1,43 +0,0 @@ -# -# $Id: Makefile 14444 2008-04-16 22:40:48Z hos $ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = openjpeg -DIR = $(OCGDIR)/extern/$(LIBNAME) - -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -TCSRCS = $(wildcard *.c) -CSRCS = $(filter-out t1_generate_luts.c,$(TCSRCS)) - -include nan_compile.mk -CPPFLAGS += -I. - -install: all debug - diff --git a/extern/lzma/Makefile b/extern/lzma/Makefile deleted file mode 100644 index 11d70dc7847..00000000000 --- a/extern/lzma/Makefile +++ /dev/null @@ -1,46 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL/BL DUAL LICENSE 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. The Blender -# Foundation also sells licenses for use in proprietary software under -# the Blender License. See http://www.blender.org/BL/ for information -# about this. -# -# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): -# -# ***** END GPL/BL DUAL LICENSE BLOCK ***** -# -# - -LIBNAME = lzma -DIR = $(OCGDIR)/extern/$(LIBNAME) - -include nan_compile.mk - -install: $(ALL_OR_DEBUG) - @[ -d $(NAN_LZMA) ] || mkdir -p $(NAN_LZMA) - @[ -d $(NAN_LZMA)/lib/$(DEBUG_DIR) ] || mkdir -p $(NAN_LZMA)/lib/$(DEBUG_DIR) - @$(NANBLENDERHOME)/intern/tools/cpifdiff.sh $(DIR)/$(DEBUG_DIR)lib$(LIBNAME).a $(NAN_LZMA)/lib/$(DEBUG_DIR) -ifeq ($(OS),darwin) - ranlib $(NAN_LZMA)/lib/$(DEBUG_DIR)lib$(LIBNAME).a -endif - @$(NANBLENDERHOME)/intern/tools/cpifdiff.sh *.h $(NAN_LZMA) diff --git a/extern/lzo/minilzo/Makefile b/extern/lzo/minilzo/Makefile deleted file mode 100644 index 11e51f3ad96..00000000000 --- a/extern/lzo/minilzo/Makefile +++ /dev/null @@ -1,40 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2009 Blender Foundation -# All rights reserved. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** - -LIBNAME = minilzo -DIR = $(OCGDIR)/extern/$(LIBNAME) - -include nan_compile.mk - -install: $(ALL_OR_DEBUG) - @[ -d $(NAN_LZO) ] || mkdir -p $(NAN_LZO) - @[ -d $(NAN_LZO)/minilzo ] || mkdir -p $(NAN_LZO)/minilzo - @[ -d $(NAN_LZO)/lib/$(DEBUG_DIR) ] || mkdir -p $(NAN_LZO)/lib/$(DEBUG_DIR) - @$(NANBLENDERHOME)/intern/tools/cpifdiff.sh $(DIR)/$(DEBUG_DIR)lib$(LIBNAME).a $(NAN_LZO)/lib/$(DEBUG_DIR) -ifeq ($(OS),darwin) - ranlib $(NAN_LZO)/lib/$(DEBUG_DIR)lib$(LIBNAME).a -endif - @$(NANBLENDERHOME)/intern/tools/cpifdiff.sh *.h $(NAN_LZO)/minilzo diff --git a/intern/Makefile b/intern/Makefile deleted file mode 100644 index ed0b0cfff28..00000000000 --- a/intern/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# Bounces make to subdirectories. Also installs after succesful all target. - -SOURCEDIR = intern - -# include nan_subdirs.mk - -ALLDIRS = string ghost guardedalloc moto container memutil -ALLDIRS += decimation iksolver itasc bsp opennl elbeem boolop smoke audaspace - -all:: - @for i in $(ALLDIRS); do \ - echo "====> $(MAKE) $@ in $(SOURCEDIR)/$$i" ;\ - $(MAKE) -C $$i install || exit 1; \ - done -clean test debug:: - @for i in $(ALLDIRS); do \ - echo "====> $(MAKE) $@ in $(SOURCEDIR)/$$i" ;\ - $(MAKE) -C $$i $@ || exit 1; \ - done - diff --git a/intern/audaspace/CMakeLists.txt b/intern/audaspace/CMakeLists.txt index 5748b7b03d9..74f483eab05 100644 --- a/intern/audaspace/CMakeLists.txt +++ b/intern/audaspace/CMakeLists.txt @@ -231,7 +231,7 @@ if(WITH_FFTW3 AND FALSE) endif() if(WITH_PYTHON) - list(APPEND INC Python ${PYTHON_INC}) + list(APPEND INC Python ${PYTHON_INCLUDE_DIRS}) set(PYTHONSRC Python/AUD_PyAPI.cpp diff --git a/intern/audaspace/FX/Makefile b/intern/audaspace/FX/Makefile deleted file mode 100644 index bda0e2bdab6..00000000000 --- a/intern/audaspace/FX/Makefile +++ /dev/null @@ -1,43 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = aud_fx -DIR = $(OCGDIR)/intern/audaspace - -include nan_compile.mk - -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -CPPFLAGS += -I../ffmpeg -CPPFLAGS += -I../intern -CPPFLAGS += -I../SDL -CPPFLAGS += -I../SRC -CPPFLAGS += -I.. -CPPFLAGS += -I. diff --git a/intern/audaspace/Makefile b/intern/audaspace/Makefile deleted file mode 100644 index 2f7bd8c79ff..00000000000 --- a/intern/audaspace/Makefile +++ /dev/null @@ -1,120 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): GSR -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -include nan_definitions.mk - -LIBNAME = audaspace -SOURCEDIR = intern/audaspace -DIR = $(OCGDIR)/$(SOURCEDIR) -DIRS = intern -DIRS += FX -DIRS += SDL -DIRS += SRC -DIRS += Python - -ifeq ($(WITH_FFMPEG),true) - DIRS += ffmpeg -endif - -ifeq ($(WITH_OPENAL),true) - DIRS += OpenAL -endif - -ifeq ($(WITH_JACK),true) - DIRS += jack -endif - -ifeq ($(WITH_SNDFILE),true) - DIRS += sndfile -endif - -# Not in use currently, see also source/Makefile and r31375 -#ifeq ($(WITH_FFTW3),true) -# DIRS += fftw -#endif - -include nan_subdirs.mk - -install: $(ALL_OR_DEBUG) - @[ -d $(NAN_AUDASPACE) ] || mkdir $(NAN_AUDASPACE) - @[ -d $(NAN_AUDASPACE)/include ] || mkdir $(NAN_AUDASPACE)/include - @[ -d $(NAN_AUDASPACE)/lib/$(DEBUG_DIR) ] || mkdir $(NAN_AUDASPACE)/lib/$(DEBUG_DIR) - @../tools/cpifdiff.sh $(DIR)/$(DEBUG_DIR)libaudaspace.a $(DIR)/$(DEBUG_DIR)libaud_sdl.a $(DIR)/$(DEBUG_DIR)libaud_python.a $(DIR)/$(DEBUG_DIR)libaud_fx.a $(DIR)/$(DEBUG_DIR)libaud_src.a $(NAN_AUDASPACE)/lib/$(DEBUG_DIR) - -ifeq ($(WITH_FFMPEG),true) - @../tools/cpifdiff.sh $(DIR)/$(DEBUG_DIR)libaud_ffmpeg.a $(NAN_AUDASPACE)/lib/$(DEBUG_DIR) -endif - -ifeq ($(WITH_OPENAL),true) - @../tools/cpifdiff.sh $(DIR)/$(DEBUG_DIR)libaud_openal.a $(NAN_AUDASPACE)/lib/$(DEBUG_DIR) -endif - -ifeq ($(WITH_JACK),true) - @../tools/cpifdiff.sh $(DIR)/$(DEBUG_DIR)libaud_jack.a $(NAN_AUDASPACE)/lib/$(DEBUG_DIR) -endif - -ifeq ($(WITH_SNDFILE),true) - @../tools/cpifdiff.sh $(DIR)/$(DEBUG_DIR)libaud_sndfile.a $(NAN_AUDASPACE)/lib/$(DEBUG_DIR) -endif - -#ifeq ($(WITH_FFTW3),true) -# @../tools/cpifdiff.sh $(DIR)/$(DEBUG_DIR)libaud_fftw.a $(NAN_AUDASPACE)/lib/$(DEBUG_DIR) -#endif - -ifeq ($(OS),darwin) - ranlib $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaudaspace.a - ranlib $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaud_src.a - ranlib $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaud_fx.a - ranlib $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaud_sdl.a - -ifeq ($(WITH_FFMPEG),true) - ranlib $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaud_ffmpeg.a -endif - -ifeq ($(WITH_OPENAL),true) - ranlib $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaud_openal.a -endif - -ifeq ($(WITH_JACK),true) - ranlib $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaud_jack.a -endif - -ifeq ($(WITH_SNDFILE),true) - ranlib $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaud_sndfile.a -endif - -#ifeq ($(WITH_FFTW3),true) -# ranlib $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaud_fftw.a -#endif - -endif - @../tools/cpifdiff.sh intern/*.h $(NAN_AUDASPACE)/include/ diff --git a/intern/audaspace/OpenAL/Makefile b/intern/audaspace/OpenAL/Makefile deleted file mode 100644 index 4cf9f66b06c..00000000000 --- a/intern/audaspace/OpenAL/Makefile +++ /dev/null @@ -1,39 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = aud_openal -DIR = $(OCGDIR)/intern/audaspace - -include nan_compile.mk - -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -CPPFLAGS += -I../intern -CPPFLAGS += -I. diff --git a/intern/audaspace/Python/Makefile b/intern/audaspace/Python/Makefile deleted file mode 100644 index a66f86549f5..00000000000 --- a/intern/audaspace/Python/Makefile +++ /dev/null @@ -1,76 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2010 by Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): Ton -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = aud_python -DIR = $(OCGDIR)/intern/audaspace - -include nan_compile.mk - -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION) - -ifeq ($(WITH_SDL),true) - CPPFLAGS += -DWITH_SDL - CPPFLAGS += $(NAN_SDLCFLAGS) -endif - -ifeq ($(WITH_OPENAL),true) - CPPFLAGS += -DWITH_OPENAL - CPPFLAGS += -I../OpenAL -endif - -ifeq ($(WITH_JACK),true) - CPPFLAGS += -DWITH_JACK - CPPFLAGS += $(NAN_JACKCFLAGS) - CPPFLAGS += -I../jack -endif - -ifeq ($(WITH_FFMPEG),true) - CPPFLAGS += -DWITH_FFMPEG - CPPFLAGS += $(NAN_FFMPEGCFLAGS) -endif - -ifeq ($(WITH_SNDFILE),true) - CPPFLAGS += -DWITH_SNDFILE - CPPFLAGS += -I../sndfile - CPPFLAGS += -I$(NAN_SNDFILE)/include -endif - -CPPFLAGS += -I$(NAN_SAMPLERATE)/include/ -CPPFLAGS += -I../ffmpeg -CPPFLAGS += -I../FX -CPPFLAGS += -I../SDL -CPPFLAGS += -I../SRC -CPPFLAGS += -I../intern -CPPFLAGS += -I.. -CPPFLAGS += -I. diff --git a/intern/audaspace/SDL/Makefile b/intern/audaspace/SDL/Makefile deleted file mode 100644 index 02a4068f3dc..00000000000 --- a/intern/audaspace/SDL/Makefile +++ /dev/null @@ -1,41 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = aud_sdl -DIR = $(OCGDIR)/intern/audaspace - -include nan_compile.mk - -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -CPPFLAGS += $(NAN_SDLCFLAGS) -CPPFLAGS += -I../intern -CPPFLAGS += -I.. -CPPFLAGS += -I. diff --git a/intern/audaspace/SRC/Makefile b/intern/audaspace/SRC/Makefile deleted file mode 100644 index 0959ebb4bfa..00000000000 --- a/intern/audaspace/SRC/Makefile +++ /dev/null @@ -1,44 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = aud_src -DIR = $(OCGDIR)/intern/audaspace - -include nan_compile.mk - -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -CPPFLAGS += -I$(NAN_SAMPLERATE)/include -CPPFLAGS += -I../ffmpeg -CPPFLAGS += -I../FX -CPPFLAGS += -I../SDL -CPPFLAGS += -I../intern -CPPFLAGS += -I.. -CPPFLAGS += -I. diff --git a/intern/audaspace/ffmpeg/Makefile b/intern/audaspace/ffmpeg/Makefile deleted file mode 100644 index 492ac83f532..00000000000 --- a/intern/audaspace/ffmpeg/Makefile +++ /dev/null @@ -1,41 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = aud_ffmpeg -DIR = $(OCGDIR)/intern/audaspace - -include nan_compile.mk - -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -CPPFLAGS += $(NAN_FFMPEGCFLAGS) -CPPFLAGS += -I../intern -CPPFLAGS += -I.. -CPPFLAGS += -I. diff --git a/intern/audaspace/fftw/Makefile b/intern/audaspace/fftw/Makefile deleted file mode 100644 index c2d069d068c..00000000000 --- a/intern/audaspace/fftw/Makefile +++ /dev/null @@ -1,42 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = aud_fftw -DIR = $(OCGDIR)/intern/audaspace - -include nan_compile.mk - -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -CPPFLAGS += -I../intern -CPPFLAGS += -I../FX -CPPFLAGS += -I.. -CPPFLAGS += -I. -CPPFLAGS += -I$(BF_FFTW3)/include diff --git a/intern/audaspace/intern/Makefile b/intern/audaspace/intern/Makefile deleted file mode 100644 index b89a8bcd397..00000000000 --- a/intern/audaspace/intern/Makefile +++ /dev/null @@ -1,74 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = audaspace -DIR = $(OCGDIR)/intern/audaspace - -include nan_compile.mk - -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION) - -ifeq ($(WITH_SDL),true) - CPPFLAGS += -DWITH_SDL - CPPFLAGS += $(NAN_SDLCFLAGS) -endif - -ifeq ($(WITH_OPENAL),true) - CPPFLAGS += -DWITH_OPENAL - CPPFLAGS += -I../OpenAL -endif - -ifeq ($(WITH_JACK),true) - CPPFLAGS += -DWITH_JACK - CPPFLAGS += $(NAN_JACKCFLAGS) - CPPFLAGS += -I../jack -endif - -ifeq ($(WITH_FFMPEG),true) - CPPFLAGS += -DWITH_FFMPEG - CPPFLAGS += $(NAN_FFMPEGCFLAGS) -endif - -ifeq ($(WITH_SNDFILE),true) - CPPFLAGS += -DWITH_SNDFILE - CPPFLAGS += -I../sndfile - CPPFLAGS += -I$(NAN_SNDFILE)/include -endif - -CPPFLAGS += -I$(NAN_SAMPLERATE)/include/ -CPPFLAGS += -I../ffmpeg -CPPFLAGS += -I../FX -CPPFLAGS += -I../SDL -CPPFLAGS += -I../SRC -CPPFLAGS += -I../Python -CPPFLAGS += -I.. -CPPFLAGS += -I. diff --git a/intern/audaspace/jack/Makefile b/intern/audaspace/jack/Makefile deleted file mode 100644 index 23cadf559c0..00000000000 --- a/intern/audaspace/jack/Makefile +++ /dev/null @@ -1,44 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): GSR -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = aud_jack -DIR = $(OCGDIR)/intern/audaspace - -include nan_compile.mk - -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -# If we are here, jack is enable. -CPPFLAGS += -DWITH_JACK -CPPFLAGS += $(NAN_JACKCFLAGS) - -CPPFLAGS += -I../intern -CPPFLAGS += -I.. -CPPFLAGS += -I. diff --git a/intern/audaspace/sndfile/Makefile b/intern/audaspace/sndfile/Makefile deleted file mode 100644 index 0012a11203e..00000000000 --- a/intern/audaspace/sndfile/Makefile +++ /dev/null @@ -1,41 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = aud_sndfile -DIR = $(OCGDIR)/intern/audaspace - -include nan_compile.mk - -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -CPPFLAGS += -I$(NAN_SNDFILE)/include -CPPFLAGS += -I../intern -CPPFLAGS += -I.. -CPPFLAGS += -I. diff --git a/intern/boolop/Makefile b/intern/boolop/Makefile deleted file mode 100644 index a7a08f665c7..00000000000 --- a/intern/boolop/Makefile +++ /dev/null @@ -1,55 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): Hans Lambermont, GSR -# -# ***** END GPL LICENSE BLOCK ***** -# bsp main makefile. -# - -include nan_definitions.mk - -LIBNAME = boolop -SOURCEDIR = intern/$(LIBNAME) -DIR = $(OCGDIR)/$(SOURCEDIR) -DIRS = intern -# not yet TESTDIRS = test - -include nan_subdirs.mk - -install: $(ALL_OR_DEBUG) - @[ -d $(NAN_BOOLOP) ] || mkdir $(NAN_BOOLOP) - @[ -d $(NAN_BOOLOP)/include ] || mkdir $(NAN_BOOLOP)/include - @[ -d $(NAN_BOOLOP)/lib/$(DEBUG_DIR) ] || mkdir $(NAN_BOOLOP)/lib/$(DEBUG_DIR) - @../tools/cpifdiff.sh $(DIR)/$(DEBUG_DIR)libboolop.a $(NAN_BOOLOP)/lib/$(DEBUG_DIR) -ifeq ($(OS),darwin) - ranlib $(NAN_BOOLOP)/lib/$(DEBUG_DIR)libboolop.a -endif - @../tools/cpifdiff.sh extern/*.h $(NAN_BOOLOP)/include/ - - - - diff --git a/intern/boolop/intern/Makefile b/intern/boolop/intern/Makefile deleted file mode 100644 index 6fc8d448a10..00000000000 --- a/intern/boolop/intern/Makefile +++ /dev/null @@ -1,48 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# string intern Makefile -# - -LIBNAME = boolop -DIR = $(OCGDIR)/intern/$(LIBNAME) -DIRS = common - -include nan_compile.mk - -CCFLAGS += $(LEVEL_2_CPP_WARNINGS) - -CPPFLAGS += -I../extern -CPPFLAGS += -I$(NAN_MOTO)/include -CPPFLAGS += -I$(NAN_MEMUTIL)/include -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I$(NAN_CONTAINER)/include -CPPFLAGS += -I../../../source/blender/makesdna -CPPFLAGS += -I../../../source/blender/blenlib -CPPFLAGS += -Icommon - - diff --git a/intern/bsp/Makefile b/intern/bsp/Makefile deleted file mode 100644 index cd1653206a6..00000000000 --- a/intern/bsp/Makefile +++ /dev/null @@ -1,53 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): Hans Lambermont, GSR -# -# ***** END GPL LICENSE BLOCK ***** -# bsp main makefile. -# - -include nan_definitions.mk - -LIBNAME = bsp -SOURCEDIR = intern/$(LIBNAME) -DIR = $(OCGDIR)/$(SOURCEDIR) -DIRS = intern -# not yet TESTDIRS = test - -include nan_subdirs.mk - -install: $(ALL_OR_DEBUG) - @[ -d $(NAN_BSP) ] || mkdir $(NAN_BSP) - @[ -d $(NAN_BSP)/include ] || mkdir $(NAN_BSP)/include - @[ -d $(NAN_BSP)/lib/$(DEBUG_DIR) ] || mkdir $(NAN_BSP)/lib/$(DEBUG_DIR) - @../tools/cpifdiff.sh $(DIR)/$(DEBUG_DIR)libbsp.a $(NAN_BSP)/lib/$(DEBUG_DIR) -ifeq ($(OS),darwin) - ranlib $(NAN_BSP)/lib/$(DEBUG_DIR)libbsp.a -endif - @../tools/cpifdiff.sh extern/*.h $(NAN_BSP)/include/ - - diff --git a/intern/bsp/intern/Makefile b/intern/bsp/intern/Makefile deleted file mode 100644 index 99a21fda7d4..00000000000 --- a/intern/bsp/intern/Makefile +++ /dev/null @@ -1,45 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# string intern Makefile -# - -LIBNAME = bsp -DIR = $(OCGDIR)/intern/$(LIBNAME) -DIRS = common - -include nan_compile.mk - -CCFLAGS += $(LEVEL_2_CPP_WARNINGS) - -CPPFLAGS += -I../extern -CPPFLAGS += -I$(NAN_MOTO)/include -CPPFLAGS += -I$(NAN_MEMUTIL)/include -CPPFLAGS += -I$(NAN_CONTAINER)/include -CPPFLAGS += -Icommon - - diff --git a/intern/bsp/test/BSP_GhostTest/Makefile b/intern/bsp/test/BSP_GhostTest/Makefile deleted file mode 100644 index 801c34bab83..00000000000 --- a/intern/bsp/test/BSP_GhostTest/Makefile +++ /dev/null @@ -1,53 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# BSP_GhostTest Makefile -# - -LIBNAME = BSP_GhostTest -SOURCEDIR = intern/bsp/test/$(LIBNAME) -DIR = $(OCGDIR)/$(SOURCEDIR) - -include nan_compile.mk - -CCFLAGS += $(LEVEL_2_CPP_WARNINGS) - -CPPFLAGS += -I$(OPENGL_HEADERS) -CPPFLAGS += -I$(NAN_BSP)/include -CPPFLAGS += -I$(NAN_MEMUTIL)/include -CPPFLAGS += -I$(NAN_CONTAINER)/include -CPPFLAGS += -I$(NAN_MOTO)/include -CPPFLAGS += -I$(NAN_GHOST)/include -CPPFLAGS += -I$(NAN_STRING)/include -CPPFLAGS += -I../../extern/ - -ifeq ($(OS),windows) - CPPFLAGS += -I$(NAN_LIBDIR)/windows/glut-3.7/include -endif - - - diff --git a/intern/bsp/test/Makefile b/intern/bsp/test/Makefile deleted file mode 100644 index 91e4497b267..00000000000 --- a/intern/bsp/test/Makefile +++ /dev/null @@ -1,69 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# bsp test makefile. -# - -LIBNAME = bsp -SOURCEDIR = intern/$(LIBNAME)/test -DIR = $(OCGDIR)/$(SOURCEDIR) - -include nan_compile.mk - -DIRS = BSP_GhostTest - -include nan_subdirs.mk - -include nan_link.mk - -LIBS = $(OCGDIR)/intern/$(LIBNAME)/test/BSP_GhostTest/$(DEBUG_DIR)libBSP_GhostTest.a -LIBS += $(OCGDIR)/intern/$(LIBNAME)/$(DEBUG_DIR)libbsp.a - -SLIBS += $(NAN_MOTO)/lib/$(DEBUG_DIR)libmoto.a -SLIBS += $(NAN_GHOST)/lib/$(DEBUG_DIR)libghost.a -SLIBS += $(NAN_STRING)/lib/$(DEBUG_DIR)libstring.a - -ifeq ($(OS),$(findstring $(OS), "darwin linux freebsd openbsd")) - LLIBS = -L/usr/X11R6/lib -lglut -pthread -lXi -lXmu -endif - -all debug:: $(LIBS) $(DIR)/$(DEBUG_DIR)BSPGhostTest - -$(DIR)/$(DEBUG_DIR)BSPGhostTest: - @echo "****> linking $@ in $(DIR)" - $(CCC) $(LDFLAGS) -o $(DIR)/$(DEBUG_DIR)BSPGhostTest $(LIBS) $(SLIBS) $(LLIBS) $(DADD) - -clean:: - $(RM) $(DIR)/BSPGhostTest $(DIR)/debug/BSPGhostTest - -test:: all - $(DIR)/BSPGhostTest - - - - - diff --git a/intern/container/Makefile b/intern/container/Makefile deleted file mode 100644 index 8a9c038f0ee..00000000000 --- a/intern/container/Makefile +++ /dev/null @@ -1,49 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): Hans Lambermont, GSR -# -# ***** END GPL LICENSE BLOCK ***** -# container main makefile. -# - -include nan_definitions.mk - -LIBNAME = container -SOURCEDIR = intern/$(LIBNAME) -DIR = $(OCGDIR)/$(SOURCEDIR) -DIRS = intern -#not yet TESTDIRS = test - -include nan_subdirs.mk - -install: $(ALL_OR_DEBUG) - @[ -d $(NAN_CONTAINER) ] || mkdir $(NAN_CONTAINER) - @[ -d $(NAN_CONTAINER)/include ] || mkdir $(NAN_CONTAINER)/include - @[ -d $(NAN_CONTAINER)/lib/$(DEBUG_DIR) ] || mkdir $(NAN_CONTAINER)/lib/$(DEBUG_DIR) - @../tools/cpifdiff.sh $(DIR)/$(DEBUG_DIR)libcontainer.a $(NAN_CONTAINER)/lib/$(DEBUG_DIR) - @../tools/cpifdiff.sh *.h $(NAN_CONTAINER)/include/ - diff --git a/intern/container/intern/Makefile b/intern/container/intern/Makefile deleted file mode 100644 index 8bca6936d6b..00000000000 --- a/intern/container/intern/Makefile +++ /dev/null @@ -1,39 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# container intern Makefile -# - -LIBNAME = container -DIR = $(OCGDIR)/intern/$(LIBNAME) - -include nan_compile.mk - -CCFLAGS += $(LEVEL_2_CPP_WARNINGS) - -CPPFLAGS += -I.. - diff --git a/intern/decimation/Makefile b/intern/decimation/Makefile deleted file mode 100644 index 7ff87fa018b..00000000000 --- a/intern/decimation/Makefile +++ /dev/null @@ -1,52 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): Hans Lambermont, GSR -# -# ***** END GPL LICENSE BLOCK ***** -# decimation main makefile. -# - -include nan_definitions.mk - -LIBNAME = decimation -SOURCEDIR = intern/$(LIBNAME) -DIR = $(OCGDIR)/$(SOURCEDIR) -DIRS = intern -TESTDIRS = test - -include nan_subdirs.mk - -install: $(ALL_OR_DEBUG) - @[ -d $(NAN_DECIMATION) ] || mkdir $(NAN_DECIMATION) - @[ -d $(NAN_DECIMATION)/include ] || mkdir $(NAN_DECIMATION)/include - @[ -d $(NAN_DECIMATION)/lib/$(DEBUG_DIR) ] || mkdir $(NAN_DECIMATION)/lib/$(DEBUG_DIR) - @../tools/cpifdiff.sh $(DIR)/$(DEBUG_DIR)libdecimation.a $(NAN_DECIMATION)/lib/$(DEBUG_DIR) -ifeq ($(OS),darwin) - ranlib $(NAN_DECIMATION)/lib/$(DEBUG_DIR)libdecimation.a -endif - @../tools/cpifdiff.sh extern/*.h $(NAN_DECIMATION)/include/ - diff --git a/intern/decimation/intern/Makefile b/intern/decimation/intern/Makefile deleted file mode 100644 index 49720b2d975..00000000000 --- a/intern/decimation/intern/Makefile +++ /dev/null @@ -1,42 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# decimation intern Makefile -# - -LIBNAME = decimation -DIR = $(OCGDIR)/intern/$(LIBNAME) - -include nan_compile.mk - -CCFLAGS += $(NAN_LEVEL_2_CPP_WARNINGS) - -CPPFLAGS += -I$(NAN_MOTO)/include -CPPFLAGS += -I$(NAN_MEMUTIL)/include -CPPFLAGS += -I$(NAN_CONTAINER)/include - - diff --git a/intern/elbeem/CMakeLists.txt b/intern/elbeem/CMakeLists.txt index 44a4eb1f278..dd23e854a25 100644 --- a/intern/elbeem/CMakeLists.txt +++ b/intern/elbeem/CMakeLists.txt @@ -26,8 +26,8 @@ set(INC extern - ${PNG_INC} - ${ZLIB_INC} + ${PNG_INCLUDE_DIR} + ${ZLIB_INCLUDE_DIRS} ) set(SRC diff --git a/intern/elbeem/Makefile b/intern/elbeem/Makefile deleted file mode 100644 index e7e8a8baa64..00000000000 --- a/intern/elbeem/Makefile +++ /dev/null @@ -1,54 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): Hans Lambermont, GSR -# -# ***** END GPL LICENSE BLOCK ***** -# elbeem main makefile. -# - -include nan_definitions.mk - -unexport NAN_QUIET - -LIBNAME = elbeem -SOURCEDIR = intern/$(LIBNAME) -DIR = $(OCGDIR)/$(SOURCEDIR) -DIRS = intern -#not ready yet TESTDIRS = test - -include nan_subdirs.mk - -install: $(ALL_OR_DEBUG) - @[ -d $(NAN_ELBEEM) ] || mkdir $(NAN_ELBEEM) - @[ -d $(NAN_ELBEEM)/include ] || mkdir $(NAN_ELBEEM)/include - @[ -d $(NAN_ELBEEM)/lib/$(DEBUG_DIR) ] || mkdir $(NAN_ELBEEM)/lib/$(DEBUG_DIR) - @../tools/cpifdiff.sh $(DIR)/$(DEBUG_DIR)libelbeem.a $(NAN_ELBEEM)/lib/$(DEBUG_DIR) -ifeq ($(OS),darwin) - ranlib $(NAN_ELBEEM)/lib/$(DEBUG_DIR)libelbeem.a -endif - @../tools/cpifdiff.sh extern/*.h $(NAN_ELBEEM)/include/ - diff --git a/intern/elbeem/intern/Makefile b/intern/elbeem/intern/Makefile deleted file mode 100644 index ec92a5dd5a8..00000000000 --- a/intern/elbeem/intern/Makefile +++ /dev/null @@ -1,54 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# elbeem intern Makefile -# - -LIBNAME = elbeem -DIR = $(OCGDIR)/intern/$(LIBNAME) - -include nan_compile.mk - -unexport NAN_QUIET - -CCFLAGS += $(LEVEL_2_CPP_WARNINGS) - -ifeq ($(WITH_BF_OPENMP),true) - CPPFLAGS += -DPARALLEL -endif - -CPPFLAGS += -DNOGUI -DELBEEM_BLENDER -CPPFLAGS += -I. -CPPFLAGS += -I../extern -CPPFLAGS += $(NAN_SDLCFLAGS) -CPPFLAGS += -I$(NAN_PNG)/include -CPPFLAGS += -I$(NAN_PNG)/include/libpng - -# zlib -ifeq ($(OS),$(findstring $(OS), "solaris windows")) - CPPFLAGS += -I$(NAN_ZLIB)/include -endif diff --git a/intern/ghost/CMakeLists.txt b/intern/ghost/CMakeLists.txt index 7c2a2ddb870..b77236acf41 100644 --- a/intern/ghost/CMakeLists.txt +++ b/intern/ghost/CMakeLists.txt @@ -55,6 +55,7 @@ set(SRC GHOST_IEvent.h GHOST_IEventConsumer.h GHOST_ISystem.h + GHOST_ISystemPaths.h GHOST_ITimerTask.h GHOST_IWindow.h GHOST_Path-api.h @@ -78,6 +79,7 @@ set(SRC intern/GHOST_ModifierKeys.h intern/GHOST_NDOFManager.h intern/GHOST_System.h + intern/GHOST_SystemPaths.h intern/GHOST_TimerManager.h intern/GHOST_TimerTask.h intern/GHOST_Window.h @@ -151,6 +153,7 @@ elseif(WIN32) intern/GHOST_SystemWin32.h intern/GHOST_SystemPathsWin32.h intern/GHOST_WindowWin32.h + intern/GHOST_TaskbarWin32.h ) endif() diff --git a/intern/ghost/Makefile b/intern/ghost/Makefile deleted file mode 100644 index e983c3a9cee..00000000000 --- a/intern/ghost/Makefile +++ /dev/null @@ -1,52 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): Hans Lambermont, GSR -# -# ***** END GPL LICENSE BLOCK ***** -# ghost main makefile. -# - -include nan_definitions.mk - -LIBNAME = ghost -SOURCEDIR = intern/$(LIBNAME) -DIR = $(OCGDIR)/$(SOURCEDIR) -DIRS = intern -TESTDIRS = test - -include nan_subdirs.mk - -install: $(ALL_OR_DEBUG) - @[ -d $(NAN_GHOST) ] || mkdir $(NAN_GHOST) - @[ -d $(NAN_GHOST)/include ] || mkdir $(NAN_GHOST)/include - @[ -d $(NAN_GHOST)/lib/$(DEBUG_DIR) ] || mkdir $(NAN_GHOST)/lib/$(DEBUG_DIR) - @../tools/cpifdiff.sh $(DIR)/$(DEBUG_DIR)libghost.a $(NAN_GHOST)/lib/$(DEBUG_DIR) -ifeq ($(OS),darwin) - ranlib $(NAN_GHOST)/lib/$(DEBUG_DIR)libghost.a -endif - @../tools/cpifdiff.sh *.h $(NAN_GHOST)/include/ - diff --git a/intern/ghost/intern/GHOST_SystemWin32.cpp b/intern/ghost/intern/GHOST_SystemWin32.cpp index df968d30cb1..24f9e96b109 100644 --- a/intern/ghost/intern/GHOST_SystemWin32.cpp +++ b/intern/ghost/intern/GHOST_SystemWin32.cpp @@ -144,8 +144,10 @@ GHOST_SystemWin32::GHOST_SystemWin32() GHOST_ASSERT(m_displayManager, "GHOST_SystemWin32::GHOST_SystemWin32(): m_displayManager==0\n"); m_displayManager->initialize(); - // Check if current keyboard layout uses AltGr - this->keyboardAltGr(); + // Check if current keyboard layout uses AltGr and save keylayout ID for + // specialized handling if keys like VK_OEM_*. I.e. french keylayout + // generates VK_OEM_8 for their exclamation key (key left of right shift) + this->handleKeyboardChange(); // Require COM for GHOST_DropTargetWin32 created in GHOST_WindowWin32. OleInitialize(0); } @@ -478,6 +480,20 @@ void GHOST_SystemWin32::handleModifierKeys(GHOST_IWindow *window, WPARAM wParam, } } +//! note: this function can be extended to include other exotic cases as they arise. +// This function was added in response to bug [#25715] +GHOST_TKey GHOST_SystemWin32::processSpecialKey(GHOST_IWindow *window, WPARAM wParam, LPARAM lParam) const +{ + GHOST_TKey key = GHOST_kKeyUnknown; + switch(PRIMARYLANGID(m_langId)) { + case LANG_FRENCH: + if(wParam==VK_OEM_8) key = GHOST_kKey1; // on 'normal' shift + 1 to create '!' we also get GHOST_kKey1. ASCII will be '!'. + break; + } + + return key; +} + GHOST_TKey GHOST_SystemWin32::convertKey(GHOST_IWindow *window, WPARAM wParam, LPARAM lParam) const { GHOST_SystemWin32 *system = (GHOST_SystemWin32 *)getSystem(); @@ -621,6 +637,9 @@ GHOST_TKey GHOST_SystemWin32::convertKey(GHOST_IWindow *window, WPARAM wParam, L case VK_NUMLOCK: key = GHOST_kKeyNumLock; break; case VK_SCROLL: key = GHOST_kKeyScrollLock; break; case VK_CAPITAL: key = GHOST_kKeyCapsLock; break; + case VK_OEM_8: + key = ((GHOST_SystemWin32*)getSystem())->processSpecialKey(window, wParam, lParam); + break; default: key = GHOST_kKeyUnknown; break; @@ -719,6 +738,10 @@ GHOST_EventKey* GHOST_SystemWin32::processKeyEvent(GHOST_IWindow *window, bool k } event = new GHOST_EventKey(getSystem()->getMilliSeconds(), keyDown ? GHOST_kEventKeyDown: GHOST_kEventKeyUp, window, key, ascii); + +#ifdef BF_GHOST_DEBUG + std::cout << ascii << std::endl; +#endif } else { event = 0; @@ -812,7 +835,7 @@ LRESULT WINAPI GHOST_SystemWin32::s_wndProc(HWND hwnd, UINT msg, WPARAM wParam, switch (msg) { // we need to check if new key layout has AltGr case WM_INPUTLANGCHANGE: - system->keyboardAltGr(); + system->handleKeyboardChange(); break; //////////////////////////////////////////////////////////////////////// // Keyboard events, processed @@ -851,7 +874,7 @@ LRESULT WINAPI GHOST_SystemWin32::s_wndProc(HWND hwnd, UINT msg, WPARAM wParam, * specifies a character code generated by a dead key. A dead key is a key that * generates a character, such as the umlaut (double-dot), that is combined with * another character to form a composite character. For example, the umlaut-O - * character (Ö) is generated by typing the dead key for the umlaut character, and + * character (Ö) is generated by typing the dead key for the umlaut character, and * then typing the O key. */ case WM_SYSDEADCHAR: diff --git a/intern/ghost/intern/GHOST_SystemWin32.h b/intern/ghost/intern/GHOST_SystemWin32.h index 29f4e64efa0..90431494992 100644 --- a/intern/ghost/intern/GHOST_SystemWin32.h +++ b/intern/ghost/intern/GHOST_SystemWin32.h @@ -282,6 +282,15 @@ protected: */ static GHOST_EventKey* processKeyEvent(GHOST_IWindow *window, bool keyDown, WPARAM wParam, LPARAM lParam); + /** + * Process special keys (VK_OEM_*), to see if current key layout + * gives us anything special, like ! on french AZERTY. + * @param window The window receiving the event (the active window). + * @param wParam The wParam from the wndproc + * @param lParam The lParam from the wndproc + */ + virtual GHOST_TKey processSpecialKey(GHOST_IWindow *window, WPARAM wParam, LPARAM lParam) const; + /** * Creates a window event. * @param type The type of event to create. @@ -311,7 +320,7 @@ protected: /** * Check current key layout for AltGr */ - inline virtual void keyboardAltGr(void); + inline virtual void handleKeyboardChange(void); /** * Windows call back routine for our window class. @@ -338,6 +347,8 @@ protected: __int64 m_start; /** AltGr on current keyboard layout. */ bool m_hasAltGr; + /** language identifier. */ + WORD m_langId; /** holding hook handle for low-level keyboard handling */ HHOOK m_llKeyboardHook; bool m_prevKeyStatus[255]; /* VK_* codes 0x01-0xFF, with 0xFF reserved */ @@ -354,11 +365,15 @@ inline void GHOST_SystemWin32::storeModifierKeys(const GHOST_ModifierKeys& keys) m_modifierKeys = keys; } -inline void GHOST_SystemWin32::keyboardAltGr(void) +inline void GHOST_SystemWin32::handleKeyboardChange(void) { HKL keylayout = GetKeyboardLayout(0); // get keylayout for current thread int i; SHORT s; + + // save the language identifier. + m_langId = LOWORD(keylayout); + for(m_hasAltGr = false, i = 32; i < 256; ++i) { s = VkKeyScanEx((char)i, keylayout); // s == -1 means no key that translates passed char code diff --git a/intern/ghost/intern/GHOST_TaskbarWin32.h b/intern/ghost/intern/GHOST_TaskbarWin32.h new file mode 100644 index 00000000000..26e6a80c8e8 --- /dev/null +++ b/intern/ghost/intern/GHOST_TaskbarWin32.h @@ -0,0 +1,73 @@ +#ifndef GHOST_TASKBARWIN32_H_ +#define GHOST_TASKBARWIN32_H_ +#ifndef WIN32 +#error WIN32 only! +#endif // WIN32 + +#include <windows.h> +#include <shlobj.h> + +/* MinGW needs it */ +#ifdef FREE_WINDOWS +#ifdef WINVER +#undef WINVER +#endif +#define WINVER 0x0501 +#endif /* FREE_WINDOWS */ + +// ITaskbarList, ITaskbarList2 and ITaskbarList3 might be missing, present here in that case. +// Note, ITaskbarList3 is supported only since Windows 7, though. Check for that is done in +// GHOST_WindowWin32 +#ifndef __ITaskbarList_INTERFACE_DEFINED__ +#define __ITaskbarList_INTERFACE_DEFINED__ + extern "C" {const GUID CLSID_TaskbarList = {0x56FDF344, 0xFD6D, 0x11D0, {0x95, 0x8A, 0x00, 0x60, 0x97, 0xC9, 0xA0, 0x90} }; + const GUID IID_ITaskbarList = {0x56FDF342, 0xFD6D, 0x11D0, {0x95, 0x8A, 0x00, 0x60, 0x97, 0xC9, 0xA0, 0x90} }; } + class ITaskbarList : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE HrInit (void) = 0; + virtual HRESULT STDMETHODCALLTYPE AddTab (HWND hwnd) = 0; + virtual HRESULT STDMETHODCALLTYPE DeleteTab (HWND hwnd) = 0; + virtual HRESULT STDMETHODCALLTYPE ActivateTab (HWND hwnd) = 0; + virtual HRESULT STDMETHODCALLTYPE SetActiveAlt (HWND hwnd) = 0; + }; +#endif /* ITaskbarList */ + +#ifndef __ITaskbarList2_INTERFACE_DEFINED__ +#define __ITaskbarList2_INTERFACE_DEFINED__ + extern "C" {const GUID IID_ITaskbarList2 = {0x602D4995, 0xB13A, 0x429b, {0xA6, 0x6E, 0x19, 0x35, 0xE4, 0x4F, 0x43, 0x17} }; } + class ITaskbarList2 : public ITaskbarList + { + public: + virtual HRESULT STDMETHODCALLTYPE MarkFullscreenWindow(HWND hwnd, BOOL fFullscreen) = 0; + }; +#endif /* ITaskbarList2 */ + +#ifndef __ITaskbarList3_INTERFACE_DEFINED__ +#define __ITaskbarList3_INTERFACE_DEFINED__ +typedef enum THUMBBUTTONFLAGS {THBF_ENABLED = 0, THBF_DISABLED = 0x1, THBF_DISMISSONCLICK = 0x2, THBF_NOBACKGROUND = 0x4, THBF_HIDDEN = 0x8, THBF_NONINTERACTIVE = 0x10} THUMBBUTTONFLAGS; +typedef enum THUMBBUTTONMASK {THB_BITMAP = 0x1, THB_ICON = 0x2, THB_TOOLTIP = 0x4, THB_FLAGS = 0x8} THUMBBUTTONMASK; +typedef struct THUMBBUTTON {THUMBBUTTONMASK dwMask; UINT iId; UINT iBitmap; HICON hIcon; WCHAR szTip[260]; THUMBBUTTONFLAGS dwFlags; } THUMBBUTTON; +typedef enum TBPFLAG {TBPF_NOPROGRESS = 0, TBPF_INDETERMINATE = 0x1, TBPF_NORMAL = 0x2, TBPF_ERROR = 0x4, TBPF_PAUSED = 0x8 } TBPFLAG; +#define THBN_CLICKED 0x1800 + extern "C" {const GUID IID_ITaskList3 = { 0xEA1AFB91, 0x9E28, 0x4B86, {0x90, 0xE9, 0x9E, 0x9F, 0x8A, 0x5E, 0xEF, 0xAF} };} + + class ITaskbarList3 : public ITaskbarList2 + { + public: + virtual HRESULT STDMETHODCALLTYPE SetProgressValue (HWND hwnd, ULONGLONG ullCompleted, ULONGLONG ullTotal) = 0; + virtual HRESULT STDMETHODCALLTYPE SetProgressState (HWND hwnd, TBPFLAG tbpFlags) = 0; + virtual HRESULT STDMETHODCALLTYPE RegisterTab (HWND hwndTab, HWND hwndMDI) = 0; + virtual HRESULT STDMETHODCALLTYPE UnregisterTab (HWND hwndTab) = 0; + virtual HRESULT STDMETHODCALLTYPE SetTabOrder (HWND hwndTab, HWND hwndInsertBefore) = 0; + virtual HRESULT STDMETHODCALLTYPE SetTabActive (HWND hwndTab, HWND hwndMDI, DWORD dwReserved) = 0; + virtual HRESULT STDMETHODCALLTYPE ThumbBarAddButtons (HWND hwnd, UINT cButtons, THUMBBUTTON * pButton) = 0; + virtual HRESULT STDMETHODCALLTYPE ThumbBarUpdateButtons (HWND hwnd, UINT cButtons, THUMBBUTTON * pButton) = 0; + virtual HRESULT STDMETHODCALLTYPE ThumbBarSetImageList (HWND hwnd, HIMAGELIST himl) = 0; + virtual HRESULT STDMETHODCALLTYPE SetOverlayIcon (HWND hwnd, HICON hIcon, LPCWSTR pszDescription) = 0; + virtual HRESULT STDMETHODCALLTYPE SetThumbnailTooltip (HWND hwnd, LPCWSTR pszTip) = 0; + virtual HRESULT STDMETHODCALLTYPE SetThumbnailClip (HWND hwnd, RECT *prcClip) = 0; + }; +#endif /* ITaskbarList3 */ + +#endif /*GHOST_TASKBARWIN32_H_*/ diff --git a/intern/ghost/intern/GHOST_WindowWin32.cpp b/intern/ghost/intern/GHOST_WindowWin32.cpp index 3512f9c4aeb..7afd3fef832 100644 --- a/intern/ghost/intern/GHOST_WindowWin32.cpp +++ b/intern/ghost/intern/GHOST_WindowWin32.cpp @@ -139,33 +139,67 @@ GHOST_WindowWin32::GHOST_WindowWin32( m_stereo(stereoVisual), m_nextWindow(NULL) { + OSVERSIONINFOEX versionInfo; + bool hasMinVersionForTaskbar = false; + + ZeroMemory(&versionInfo, sizeof(OSVERSIONINFOEX)); + + versionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); + + if(!GetVersionEx((OSVERSIONINFO *)&versionInfo)) { + versionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + if(GetVersionEx((OSVERSIONINFO*)&versionInfo)) { + if((versionInfo.dwMajorVersion==6 && versionInfo.dwMinorVersion>=1) || versionInfo.dwMajorVersion >= 7) { + hasMinVersionForTaskbar = true; + } + } + } else { + if((versionInfo.dwMajorVersion==6 && versionInfo.dwMinorVersion>=1) || versionInfo.dwMajorVersion >= 7) { + hasMinVersionForTaskbar = true; + } + } + if (state != GHOST_kWindowStateFullScreen) { RECT rect; + MONITORINFO monitor; GHOST_TUns32 tw, th; width += GetSystemMetrics(SM_CXSIZEFRAME)*2; height += GetSystemMetrics(SM_CYSIZEFRAME)*2 + GetSystemMetrics(SM_CYCAPTION); + rect.left = left; + rect.right = left + width; + rect.top = top; + rect.bottom = top + height; + + monitor.cbSize=sizeof(monitor); + monitor.dwFlags=0; + // take taskbar into account - SystemParametersInfo(SPI_GETWORKAREA,0,&rect,0); - th = rect.bottom - rect.top; - tw = rect.right - rect.left; + GetMonitorInfo(MonitorFromRect(&rect,MONITOR_DEFAULTTONEAREST),&monitor); + + th = monitor.rcWork.bottom - monitor.rcWork.top; + tw = monitor.rcWork.right - monitor.rcWork.left; if(tw < width) { width = tw; - left = rect.left; + left = monitor.rcWork.left; } - else if(left < rect.left) - left = rect.left; + else if(monitor.rcWork.right < left + (int)width) + left = monitor.rcWork.right - width; + else if(left < monitor.rcWork.left) + left = monitor.rcWork.left; if(th < height) { height = th; - top = rect.top; + top = monitor.rcWork.top; } - else if(top < rect.top) - top = rect.top; + else if(monitor.rcWork.bottom < top + (int)height) + top = monitor.rcWork.bottom - height; + else if(top < monitor.rcWork.top) + top = monitor.rcWork.top; m_hWnd = ::CreateWindow( s_windowClassName, // pointer to registered class name @@ -294,11 +328,22 @@ GHOST_WindowWin32::GHOST_WindowWin32( } } } + + if(hasMinVersionForTaskbar) + CoCreateInstance(CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER, IID_ITaskbarList ,(LPVOID*)&m_Bar); + else + m_Bar=NULL; } GHOST_WindowWin32::~GHOST_WindowWin32() { + if(m_Bar) + { + m_Bar->SetProgressState(m_hWnd, TBPF_NOPROGRESS); + m_Bar->Release(); + }; + if (m_wintab) { GHOST_WIN32_WTClose fpWTClose = ( GHOST_WIN32_WTClose ) ::GetProcAddress( m_wintab, "WTClose" ); if (fpWTClose) { @@ -1089,6 +1134,23 @@ GHOST_TSuccess GHOST_WindowWin32::setWindowCustomCursorShape(GHOST_TUns8 *bitmap } +GHOST_TSuccess GHOST_WindowWin32::setProgressBar(float progress) +{ + /*SetProgressValue sets state to TBPF_NORMAL automaticly*/ + if(m_Bar && S_OK == m_Bar->SetProgressValue(m_hWnd,10000*progress,10000)) + return GHOST_kSuccess; + + return GHOST_kFailure; +} + +GHOST_TSuccess GHOST_WindowWin32::endProgressBar() +{ + if(m_Bar && S_OK == m_Bar->SetProgressState(m_hWnd,TBPF_NOPROGRESS)) + return GHOST_kSuccess; + + return GHOST_kFailure; +} + /* Ron Fosner's code for weighting pixel formats and forcing software. See http://www.opengl.org/resources/faq/technical/weight.cpp */ diff --git a/intern/ghost/intern/GHOST_WindowWin32.h b/intern/ghost/intern/GHOST_WindowWin32.h index a4d31f87ffa..c3b7fdbd3f3 100644 --- a/intern/ghost/intern/GHOST_WindowWin32.h +++ b/intern/ghost/intern/GHOST_WindowWin32.h @@ -39,7 +39,18 @@ #include "GHOST_Window.h" +/* MinGW needs it */ +#ifdef FREE_WINDOWS +#ifdef WINVER +#undef WINVER +#endif +#define WINVER 0x0501 +#endif + + + #include <windows.h> +#include "GHOST_TaskbarWin32.h" #include <wintab.h> @@ -218,6 +229,17 @@ public: virtual GHOST_TSuccess invalidate(); /** + * Sets the progress bar value displayed in the window/application icon + * @param progress The progress % + */ + virtual GHOST_TSuccess setProgressBar(float progress); + + /** + * Hides the progress bar in the icon + */ + virtual GHOST_TSuccess endProgressBar(); + + /** * Returns the name of the window class. * @return The name of the window class. */ @@ -324,6 +346,9 @@ protected: /** HCURSOR structure of the custom cursor */ HCURSOR m_customCursor; + /** ITaskbarList3 structure for progress bar*/ + ITaskbarList3 * m_Bar; + static LPCSTR s_windowClassName; static const int s_maxTitleLength; diff --git a/intern/ghost/intern/Makefile b/intern/ghost/intern/Makefile deleted file mode 100644 index 016577f4e80..00000000000 --- a/intern/ghost/intern/Makefile +++ /dev/null @@ -1,74 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): GSR -# -# ***** END GPL LICENSE BLOCK ***** -# ghost intern Makefile -# - -LIBNAME = ghost -DIR = $(OCGDIR)/intern/$(LIBNAME) - -CCSRCS = GHOST_Buttons.cpp GHOST_System.cpp GHOST_Window.cpp -CCSRCS += GHOST_EventManager.cpp GHOST_EventPrinter.cpp GHOST_WindowManager.cpp -CCSRCS += GHOST_ISystem.cpp GHOST_ISystemPaths.cpp GHOST_ModifierKeys.cpp GHOST_TimerManager.cpp -CCSRCS += GHOST_Rect.cpp GHOST_DisplayManager.cpp GHOST_C-api.cpp -CCSRCS += GHOST_CallbackEventConsumer.cpp -CCSRCS += GHOST_NDOFManager.cpp GHOST_Path-api.cpp - -ifeq ($(OS),$(findstring $(OS), "darwin")) - ifeq ($(WITH_COCOA), true) - OCCSRCS += $(wildcard *Cocoa.mm) - CPPFLAGS += -DGHOST_COCOA - ifeq ($(WITH_QUICKTIME), true) - CPPFLAGS += -DWITH_QUICKTIME - endif - else - CCSRCS += $(wildcard *Carbon.cpp) - endif -endif - -ifeq ($(OS),$(findstring $(OS), "windows")) - CPPFLAGS += -I$(NAN_WINTAB)/include - CCSRCS += $(wildcard *Win32.cpp) -endif - -ifeq ($(OS),$(findstring $(OS), "freebsd irix linux openbsd solaris")) - CCSRCS += $(wildcard *X11.cpp) -endif - -include nan_compile.mk - -#CCFLAGS += $(LEVEL_2_CPP_WARNINGS) - -CPPFLAGS += -I$(NAN_STRING)/include -CPPFLAGS += -I$(NAN_MEMUTIL)/include -CPPFLAGS += -I.. -CPPFLAGS += -I$(OPENGL_HEADERS) -CPPFLAGS += -I../../../source/blender/imbuf -CPPFLAGS += -I../../../source/blender/makesdna -CPPFLAGS += -DPREFIX=\"$(BF_PREFIX)\" diff --git a/intern/ghost/test/Makefile b/intern/ghost/test/Makefile deleted file mode 100644 index d4250cecf26..00000000000 --- a/intern/ghost/test/Makefile +++ /dev/null @@ -1,83 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# GHOST test applications makefile. -# This bounces to test application directories. -# - -LIBNAME = ghost -SOURCEDIR = intern/$(LIBNAME)/test -DIR = $(OCGDIR)/$(SOURCEDIR) -DIRS = gears multitest - -include nan_subdirs.mk - -include nan_compile.mk -include nan_link.mk - -OCGGHOST = $(OCGDIR)/intern/$(LIBNAME) -GEARDIR = $(OCGGHOST)/test/$(DEBUG_DIR)gears.app - -LIBS = $(OCGGHOST)/$(DEBUG_DIR)libghost.a -SLIBS += $(LCGDIR)/string/lib/libstring.a - -all debug:: $(LIBS) - @echo "****> linking $@ in $(SOURCEDIR)" -ifeq ($(OS),darwin) - $(CCC) $(LDFLAGS) -o $(DIR)/$(DEBUG_DIR)gears $(DIR)/$(DEBUG_DIR)GHOST_Test.o $(LIBS) $(SLIBS) $(LLIBS) $(DADD) $(LOPTS) - @# set up directory structure for the OSX application bundle - @[ -d $(OCGGHOST)/test/ ] || mkdir $(OCGGHOST)/test/ - @[ -d $(OCGGHOST)/test/debug ] || mkdir $(OCGGHOST)/test/debug - @[ -d $(GEARDIR) ] || mkdir $(GEARDIR) - @[ -d $(GEARDIR)/Contents ] || mkdir $(GEARDIR)/Contents - @[ -d $(GEARDIR)/Contents/MacOS ] || mkdir $(GEARDIR)/Contents/MacOS - @[ -d $(GEARDIR)/Contents/Resources ] || mkdir $(GEARDIR)/Contents/Resources - @[ -d $(GEARDIR)/Contents/Resources/English.lproj ] || mkdir $(GEARDIR)/Contents/Resources/English.lproj - @[ -d $(GEARDIR)/Contents/Resources/English.lproj/MainMenu.nib ] || mkdir $(GEARDIR)/Contents/Resources/English.lproj/MainMenu.nib - @# copy the files into the bundle directory tree - cp -f $(DIR)/$(DEBUG_DIR)gears $(GEARDIR)/Contents/MacOS - cp -f gears/resources/osx/PkgInfo $(GEARDIR)/Contents/ - cp -f gears/resources/osx/Info.plist $(GEARDIR)/Contents/ - cp -f gears/resources/osx/English.lproj/InfoPlist.strings $(GEARDIR)/Contents/Resources/English.lproj - cp -f gears/resources/osx/English.lproj/MainMenu.nib/classes.nib $(GEARDIR)/Contents/Resources/English.lproj - cp -f gears/resources/osx/English.lproj/MainMenu.nib/info.nib $(GEARDIR)/Contents/Resources/English.lproj - cp -f gears/resources/osx/English.lproj/MainMenu.nib/objects.nib $(GEARDIR)/Contents/Resources/English.lproj -else - $(CCC) $(LDFLAGS) -o $(DIR)/$(DEBUG_DIR)gears_cpp $(DIR)/$(DEBUG_DIR)GHOST_Test.o $(LIBS) $(SLIBS) $(LLIBS) $(DADD) $(LOPTS) - $(CCC) $(LDFLAGS) -o $(DIR)/$(DEBUG_DIR)gears_c $(DIR)/$(DEBUG_DIR)GHOST_C-Test.o $(LIBS) $(SLIBS) $(LLIBS) $(DADD) $(LOPTS) -endif - -clean:: - @# mac stuff. well ok, only the binary - @rm -f $(DIR)/gears $(DIR)/debug/gears - @# others - @rm -f $(DIR)/gears_c $(DIR)/debug/gears_c - @rm -f $(DIR)/gears_cpp $(DIR)/debug/gears_cpp - -test:: all - $(DIR)/gears_cpp - $(DIR)/gears_c diff --git a/intern/ghost/test/gears/Makefile b/intern/ghost/test/gears/Makefile deleted file mode 100644 index 23e76778f69..00000000000 --- a/intern/ghost/test/gears/Makefile +++ /dev/null @@ -1,45 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# GHOST gears test application Makefile -# - -LIBNAME = gearstest -DIR = $(OCGDIR)/intern/ghost/test - -# we don't want a library here, only object files: -ALLTARGETS = $(OBJS) - -include nan_compile.mk - -CFLAGS += $(LEVEL_2_C_WARNINGS) -CCFLAGS += $(LEVEL_2_CPP_WARNINGS) - -CPPFLAGS += -I$(OPENGL_HEADERS) -CPPFLAGS += -I$(NAN_STRING)/include -CPPFLAGS += -I../.. - diff --git a/intern/ghost/test/multitest/Makefile b/intern/ghost/test/multitest/Makefile deleted file mode 100644 index 1ecbcd98e2b..00000000000 --- a/intern/ghost/test/multitest/Makefile +++ /dev/null @@ -1,55 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# GHOST gears test application Makefile -# - -DIR = $(OCGDIR)/intern/ghost/test - -# we don't want a library here, only object files: -ALLTARGETS = $(OBJS) - -include nan_compile.mk -include nan_link.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -CPPFLAGS += -I$(OPENGL_HEADERS) -CPPFLAGS += -I$(NAN_STRING)/include -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I../.. - -OCGGHOST = $(OCGDIR)/intern/ghost - -LIBS = $(OCGGHOST)/$(DEBUG_DIR)libghost.a -SLIBS += $(LCGDIR)/string/lib/libstring.a -SLIBS += $(LCGDIR)/guardedalloc/lib/libguardedalloc.a - -all:: - @echo "- link $(DIR)/$(DEBUG_DIR)multitest -" - @$(CCC) $(LDFLAGS) -o $(DIR)/$(DEBUG_DIR)multitest $(OBJS) $(LIBS) $(SLIBS) $(LLIBS) $(DADD) $(LOPTS) diff --git a/intern/guardedalloc/Makefile b/intern/guardedalloc/Makefile deleted file mode 100644 index 55894d54c8e..00000000000 --- a/intern/guardedalloc/Makefile +++ /dev/null @@ -1,52 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): Hans Lambermont, GSR -# -# ***** END GPL LICENSE BLOCK ***** -# decimation main makefile. -# - -include nan_definitions.mk - -LIBNAME = guardedalloc -SOURCEDIR = intern/$(LIBNAME) -DIR = $(OCGDIR)/$(SOURCEDIR) -DIRS = intern -TESTDIRS = test - -include nan_subdirs.mk - -install: $(ALL_OR_DEBUG) - @[ -d $(NAN_GUARDEDALLOC) ] || mkdir $(NAN_GUARDEDALLOC) - @[ -d $(NAN_GUARDEDALLOC)/include ] || mkdir $(NAN_GUARDEDALLOC)/include - @[ -d $(NAN_GUARDEDALLOC)/lib/$(DEBUG_DIR) ] || mkdir $(NAN_GUARDEDALLOC)/lib/$(DEBUG_DIR) - @../tools/cpifdiff.sh $(DIR)/$(DEBUG_DIR)libguardedalloc.a $(NAN_GUARDEDALLOC)/lib/$(DEBUG_DIR) -ifeq ($(OS),darwin) - ranlib $(NAN_GUARDEDALLOC)/lib/$(DEBUG_DIR)libguardedalloc.a -endif - @../tools/cpifdiff.sh *.h $(NAN_GUARDEDALLOC)/include/ - diff --git a/intern/guardedalloc/intern/Makefile b/intern/guardedalloc/intern/Makefile deleted file mode 100644 index a55d6375014..00000000000 --- a/intern/guardedalloc/intern/Makefile +++ /dev/null @@ -1,39 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# guardedalloc intern Makefile -# - -LIBNAME = guardedalloc -DIR = $(OCGDIR)/intern/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(NAN_LEVEL_2_C_WARNINGS) - -CPPFLAGS += -I.. - diff --git a/intern/guardedalloc/intern/mallocn.c b/intern/guardedalloc/intern/mallocn.c index d1e88748de4..83aceb12344 100644 --- a/intern/guardedalloc/intern/mallocn.c +++ b/intern/guardedalloc/intern/mallocn.c @@ -57,7 +57,7 @@ /* Only for debugging: * lets you count the allocations so as to find the allocator of unfreed memory - * in situations where the leak is pradictable */ + * in situations where the leak is predictable */ // #define DEBUG_MEMCOUNTER diff --git a/intern/guardedalloc/test/Makefile b/intern/guardedalloc/test/Makefile deleted file mode 100644 index a0feb359940..00000000000 --- a/intern/guardedalloc/test/Makefile +++ /dev/null @@ -1,52 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# Test the guarded memory module -# - -LIBNAME = guardedalloc -SOURCEDIR = intern/$(LIBNAME)/test -DIR = $(OCGDIR)/$(SOURCEDIR) -DIRS = simpletest - -include nan_subdirs.mk - -include nan_compile.mk -include nan_link.mk - -TESTLIBS = $(OCGDIR)/intern/$(LIBNAME)/$(DEBUG_DIR)lib$(LIBNAME).a - -all debug:: - @echo "****> linking $@ in $(SOURCEDIR)" - $(CC) $(LDFLAGS) -o $(DIR)/$(DEBUG_DIR)memtest $(DIR)/memtest.o $(TESTLIBS) - -clean:: - $(RM) $(DIR)/memtest $(DIR)/debug/memtest - -test:: $(DIR)/memtest - $(DIR)/memtest $(NAN_TEST_VERBOSITY) - diff --git a/intern/guardedalloc/test/simpletest/Makefile b/intern/guardedalloc/test/simpletest/Makefile deleted file mode 100644 index 2ee39564b75..00000000000 --- a/intern/guardedalloc/test/simpletest/Makefile +++ /dev/null @@ -1,41 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# Test the guarded memory module -# - -LIBNAME = guardedalloc -DIR = $(OCGDIR)/intern/$(LIBNAME)/test - -# we don't want a library here, only object files: -ALLTARGETS = $(OBJS) - -include nan_compile.mk - -# this module's header -CPPFLAGS = -I../.. - diff --git a/intern/iksolver/Makefile b/intern/iksolver/Makefile deleted file mode 100644 index 09e6e3a1c2a..00000000000 --- a/intern/iksolver/Makefile +++ /dev/null @@ -1,52 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): Hans Lambermont, GSR -# -# ***** END GPL LICENSE BLOCK ***** -# iksolver main makefile. -# - -include nan_definitions.mk - -LIBNAME = iksolver -SOURCEDIR = intern/$(LIBNAME) -DIR = $(OCGDIR)/$(SOURCEDIR) -DIRS = intern -TESTDIRS = test - -include nan_subdirs.mk - -install: $(ALL_OR_DEBUG) - @[ -d $(NAN_IKSOLVER) ] || mkdir $(NAN_IKSOLVER) - @[ -d $(NAN_IKSOLVER)/include ] || mkdir $(NAN_IKSOLVER)/include - @[ -d $(NAN_IKSOLVER)/lib/$(DEBUG_DIR) ] || mkdir $(NAN_IKSOLVER)/lib/$(DEBUG_DIR) - @../tools/cpifdiff.sh $(DIR)/$(DEBUG_DIR)libiksolver.a $(NAN_IKSOLVER)/lib/$(DEBUG_DIR) -ifeq ($(OS),darwin) - ranlib $(NAN_IKSOLVER)/lib/$(DEBUG_DIR)libiksolver.a -endif - @../tools/cpifdiff.sh extern/*.h $(NAN_IKSOLVER)/include/ - diff --git a/intern/iksolver/intern/Makefile b/intern/iksolver/intern/Makefile deleted file mode 100644 index 8c90a9d5759..00000000000 --- a/intern/iksolver/intern/Makefile +++ /dev/null @@ -1,42 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# iksolver intern Makefile -# - -LIBNAME = iksolver -DIR = $(OCGDIR)/intern/$(LIBNAME) -CCSRCS = IK_QJacobianSolver.cpp IK_QSegment.cpp IK_Solver.cpp IK_QJacobian.cpp -CCSRCS += IK_QTask.cpp - -include nan_compile.mk - -CCFLAGS += $(LEVEL_2_CPP_WARNINGS) - -CPPFLAGS += -I$(NAN_MOTO)/include -CPPFLAGS += -I$(NAN_MEMUTIL)/include - diff --git a/intern/iksolver/test/Makefile b/intern/iksolver/test/Makefile deleted file mode 100644 index ed867ba2a73..00000000000 --- a/intern/iksolver/test/Makefile +++ /dev/null @@ -1,68 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# iksolver test makefile. -# - -LIBNAME = iksolver -SOURCEDIR = intern/$(LIBNAME)/test -DIR = $(OCGDIR)/$(SOURCEDIR) - -include nan_compile.mk - -DIRS = ik_glut_test - -include nan_subdirs.mk - -include nan_link.mk - -LIBS = $(OCGDIR)/intern/$(LIBNAME)/test/ik_glut_test/intern/$(DEBUG_DIR)libintern.a -LIBS += $(OCGDIR)/intern/$(LIBNAME)/test/ik_glut_test/common/$(DEBUG_DIR)libcommon.a -LIBS += $(OCGDIR)/intern/$(LIBNAME)/$(DEBUG_DIR)libiksolver.a - -SLIBS += $(NAN_MOTO)/lib/$(DEBUG_DIR)libmoto.a - -ifeq ($(OS),$(findstring $(OS), "darwin linux freebsd openbsd")) - LLIBS = -L/usr/X11R6/lib -lglut -pthread -endif - -ifeq ($(OS),$(findstring $(OS), "solaris")) - LLIBS = -L/usr/openwin/lib -lglut -lX11 -lGL -lGLU -lXmu -endif - -all debug:: $(LIBS) $(DIR)/$(DEBUG_DIR)iksolvertest - -$(DIR)/$(DEBUG_DIR)iksolvertest: - @echo "****> linking $@ in $(DIR)" - $(CCC) $(LDFLAGS) -o $(DIR)/$(DEBUG_DIR)iksolvertest $(LIBS) $(SLIBS) $(LLIBS) $(DADD) - -clean:: - $(RM) $(DIR)/iksolvertest $(DIR)/debug/iksolvertest - -test:: all - $(DIR)/iksolvertest - diff --git a/intern/iksolver/test/ik_glut_test/Makefile b/intern/iksolver/test/ik_glut_test/Makefile deleted file mode 100644 index 55f7d9ee659..00000000000 --- a/intern/iksolver/test/ik_glut_test/Makefile +++ /dev/null @@ -1,39 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# iksolver subdir bouncer. Pure waste. -# - -include nan_definitions.mk - -LIBNAME = ik_glut_test -SOURCEDIR = intern/iksolver/test/$(LIBNAME) -DIR = $(OCGDIR)/$(SOURCEDIR) -DIRS = common intern - -include nan_subdirs.mk - diff --git a/intern/iksolver/test/ik_glut_test/common/Makefile b/intern/iksolver/test/ik_glut_test/common/Makefile deleted file mode 100644 index df0286040cd..00000000000 --- a/intern/iksolver/test/ik_glut_test/common/Makefile +++ /dev/null @@ -1,41 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# iksolver test intern Makefile -# - -LIBNAME = common -SOURCEDIR = intern/iksolver/test/ik_glut_test/$(LIBNAME) -DIR = $(OCGDIR)/$(SOURCEDIR) - -include nan_compile.mk - -CCFLAGS += $(LEVEL_2_CPP_WARNINGS) - -CPPFLAGS += -I$(NAN_MOTO)/include -CPPFLAGS += -I$(NAN_MEMUTIL)/include - diff --git a/intern/iksolver/test/ik_glut_test/intern/Makefile b/intern/iksolver/test/ik_glut_test/intern/Makefile deleted file mode 100644 index 8bb1d0ccd36..00000000000 --- a/intern/iksolver/test/ik_glut_test/intern/Makefile +++ /dev/null @@ -1,48 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# iksolver test intern Makefile -# - -LIBNAME = intern -SOURCEDIR = intern/iksolver/test/ik_glut_test/$(LIBNAME) -DIR = $(OCGDIR)/$(SOURCEDIR) - -include nan_compile.mk - -CCFLAGS += $(LEVEL_2_CPP_WARNINGS) - -CPPFLAGS += -I$(OPENGL_HEADERS) -CPPFLAGS += -I../../../extern -CPPFLAGS += -I../common -CPPFLAGS += -I$(NAN_MOTO)/include -CPPFLAGS += -I$(NAN_MEMUTIL)/include - -ifeq ($(OS),windows) - CPPFLAGS += -I$(NAN_LIBDIR)/windows/glut-3.7/include -endif - diff --git a/intern/itasc/Makefile b/intern/itasc/Makefile deleted file mode 100644 index 2be46a017df..00000000000 --- a/intern/itasc/Makefile +++ /dev/null @@ -1,53 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): Hans Lambermont -# -# ***** END GPL LICENSE BLOCK ***** -# iksolver main makefile. -# - -include nan_definitions.mk - -LIBNAME = itasc -SOURCEDIR = intern/$(LIBNAME) -DIR = $(OCGDIR)/$(SOURCEDIR) -DIRS = kdl -include nan_subdirs.mk -include nan_compile.mk - -CPPFLAGS += -I. -CPPFLAGS += -I../../extern/Eigen2 - -install: $(ALL_OR_DEBUG) - @[ -d $(NAN_ITASC) ] || mkdir $(NAN_ITASC) - @[ -d $(NAN_ITASC)/lib/$(DEBUG_DIR) ] || mkdir $(NAN_ITASC)/lib/$(DEBUG_DIR) - @../tools/cpifdiff.sh $(DIR)/$(DEBUG_DIR)libitasc.a $(DIR)/$(DEBUG_DIR)libitasc_kdl.a $(DIR)/$(DEBUG_DIR)libitasc_kdl_util.a $(NAN_ITASC)/lib/$(DEBUG_DIR) -ifeq ($(OS),darwin) - ranlib $(NAN_ITASC)/lib/$(DEBUG_DIR)libitasc.a - ranlib $(NAN_ITASC)/lib/$(DEBUG_DIR)libitasc_kdl.a - ranlib $(NAN_ITASC)/lib/$(DEBUG_DIR)libitasc_kdl_util.a -endif -############################## -include nan_subdirs.mk diff --git a/intern/itasc/kdl/Makefile b/intern/itasc/kdl/Makefile deleted file mode 100644 index 058f93da4e1..00000000000 --- a/intern/itasc/kdl/Makefile +++ /dev/null @@ -1,43 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): Hans Lambermont -# -# ***** END GPL LICENSE BLOCK ***** -# iksolver main makefile. -# - -include nan_definitions.mk - -LIBNAME = itasc_kdl -# Yep, same dir than parent (itasc instead of $(LIBNAME)) -DIR = $(OCGDIR)/intern/itasc -DIRS = utilities -SOURCEDIR = intern/$(LIBNAME)/kdl - -include nan_subdirs.mk -include nan_compile.mk - -CPPFLAGS += -I. -CPPFLAGS += -I../../../extern/Eigen2 diff --git a/intern/itasc/kdl/utilities/Makefile b/intern/itasc/kdl/utilities/Makefile deleted file mode 100644 index 8ee08089e10..00000000000 --- a/intern/itasc/kdl/utilities/Makefile +++ /dev/null @@ -1,40 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): Hans Lambermont -# -# ***** END GPL LICENSE BLOCK ***** -# iksolver main makefile. -# - -include nan_definitions.mk - -LIBNAME = itasc_kdl_util -# Same dir than parent (itasc instead of $(LIBNAME)) -DIR = $(OCGDIR)/intern/itasc - -include nan_compile.mk - -CPPFLAGS += -I. -CPPFLAGS += -I../../../../extern/Eigen2 diff --git a/intern/memutil/Makefile b/intern/memutil/Makefile deleted file mode 100644 index 50aa0528f31..00000000000 --- a/intern/memutil/Makefile +++ /dev/null @@ -1,52 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): Hans Lambermont, GSR -# -# ***** END GPL LICENSE BLOCK ***** -# memutil main makefile. -# - -include nan_definitions.mk - -LIBNAME = memutil -SOURCEDIR = intern/$(LIBNAME) -DIR = $(OCGDIR)/$(SOURCEDIR) -DIRS = intern -#not yet TESTDIRS = test - -include nan_subdirs.mk - -install: $(ALL_OR_DEBUG) - @[ -d $(NAN_MEMUTIL) ] || mkdir $(NAN_MEMUTIL) - @[ -d $(NAN_MEMUTIL)/include ] || mkdir $(NAN_MEMUTIL)/include - @[ -d $(NAN_MEMUTIL)/lib/$(DEBUG_DIR) ] || mkdir $(NAN_MEMUTIL)/lib/$(DEBUG_DIR) - @../tools/cpifdiff.sh $(DIR)/$(DEBUG_DIR)libmemutil.a $(NAN_MEMUTIL)/lib/$(DEBUG_DIR) -ifeq ($(OS),darwin) - ranlib $(NAN_MEMUTIL)/lib/$(DEBUG_DIR)libmemutil.a -endif - @../tools/cpifdiff.sh *.h $(NAN_MEMUTIL)/include/ - diff --git a/intern/memutil/intern/MEM_CacheLimiterC-Api.cpp b/intern/memutil/intern/MEM_CacheLimiterC-Api.cpp index 50700e39203..e8f11957c74 100644 --- a/intern/memutil/intern/MEM_CacheLimiterC-Api.cpp +++ b/intern/memutil/intern/MEM_CacheLimiterC-Api.cpp @@ -20,6 +20,8 @@ * */ +#include <cstddef> + #include "MEM_CacheLimiter.h" #include "MEM_CacheLimiterC-Api.h" diff --git a/intern/memutil/intern/Makefile b/intern/memutil/intern/Makefile deleted file mode 100644 index b77c2310b75..00000000000 --- a/intern/memutil/intern/Makefile +++ /dev/null @@ -1,39 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# memutil intern Makefile -# - -LIBNAME = memutil -DIR = $(OCGDIR)/intern/$(LIBNAME) - -include nan_compile.mk - -CCFLAGS += $(LEVEL_2_CPP_WARNINGS) - -CPPFLAGS += -I.. -I../.. - diff --git a/intern/moto/Makefile b/intern/moto/Makefile deleted file mode 100644 index 3ad4fde9c4e..00000000000 --- a/intern/moto/Makefile +++ /dev/null @@ -1,52 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): Hans Lambermont, GSR -# -# ***** END GPL LICENSE BLOCK ***** -# moto main makefile. -# - -include nan_definitions.mk - -LIBNAME = moto -SOURCEDIR = intern/$(LIBNAME) -DIR = $(OCGDIR)/$(SOURCEDIR) -DIRS = intern -#not ready yet TESTDIRS = test - -include nan_subdirs.mk - -install: $(ALL_OR_DEBUG) - @[ -d $(NAN_MOTO) ] || mkdir $(NAN_MOTO) - @[ -d $(NAN_MOTO)/include ] || mkdir $(NAN_MOTO)/include - @[ -d $(NAN_MOTO)/lib/$(DEBUG_DIR) ] || mkdir $(NAN_MOTO)/lib/$(DEBUG_DIR) - @../tools/cpifdiff.sh $(DIR)/$(DEBUG_DIR)libmoto.a $(NAN_MOTO)/lib/$(DEBUG_DIR) -ifeq ($(OS),darwin) - ranlib $(NAN_MOTO)/lib/$(DEBUG_DIR)libmoto.a -endif - @../tools/cpifdiff.sh include/*.h $(NAN_MOTO)/include/ - diff --git a/intern/moto/intern/Makefile b/intern/moto/intern/Makefile deleted file mode 100644 index a867fcadf96..00000000000 --- a/intern/moto/intern/Makefile +++ /dev/null @@ -1,39 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# moto intern Makefile -# - -LIBNAME = moto -DIR = $(OCGDIR)/intern/$(LIBNAME) - -include nan_compile.mk - -CCFLAGS += $(LEVEL_2_CPP_WARNINGS) - -CPPFLAGS += -I../include - diff --git a/intern/opennl/Makefile b/intern/opennl/Makefile deleted file mode 100644 index 023491792db..00000000000 --- a/intern/opennl/Makefile +++ /dev/null @@ -1,60 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): Hans Lambermont, GSR -# -# ***** END GPL LICENSE BLOCK ***** -# opennl main makefile. -# - -include nan_definitions.mk - -LIBNAME = opennl -LIBNAME_SLU = superlu -SOURCEDIR = intern/$(LIBNAME) -SOURCEDIR_SLU = intern/$(LIBNAME_SLU) -DIR = $(OCGDIR)/$(SOURCEDIR) -DIR_SLU = $(OCGDIR)/$(SOURCEDIR_SLU) -DIRS = intern superlu - -include nan_subdirs.mk - -install: $(ALL_OR_DEBUG) - @[ -d $(NAN_OPENNL) ] || mkdir $(NAN_OPENNL) - @[ -d $(NAN_OPENNL)/include ] || mkdir $(NAN_OPENNL)/include - @[ -d $(NAN_OPENNL)/lib/$(DEBUG_DIR) ] || mkdir $(NAN_OPENNL)/lib/$(DEBUG_DIR) - @../tools/cpifdiff.sh $(DIR)/$(DEBUG_DIR)libopennl.a $(NAN_OPENNL)/lib/$(DEBUG_DIR) -ifeq ($(OS),darwin) - ranlib $(NAN_OPENNL)/lib/$(DEBUG_DIR)libopennl.a -endif - @../tools/cpifdiff.sh extern/*.h $(NAN_OPENNL)/include/ - @[ -d $(NAN_SUPERLU) ] || mkdir $(NAN_SUPERLU) - @[ -d $(NAN_SUPERLU)/lib/$(DEBUG_DIR) ] || mkdir $(NAN_SUPERLU)/lib/$(DEBUG_DIR) - @../tools/cpifdiff.sh $(DIR_SLU)/$(DEBUG_DIR)libsuperlu.a $(NAN_SUPERLU)/lib/$(DEBUG_DIR) -ifeq ($(OS),darwin) - ranlib $(NAN_SUPERLU)/lib/$(DEBUG_DIR)libsuperlu.a -endif - diff --git a/intern/opennl/intern/Makefile b/intern/opennl/intern/Makefile deleted file mode 100644 index 04b158aaec0..00000000000 --- a/intern/opennl/intern/Makefile +++ /dev/null @@ -1,40 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# opennl intern Makefile -# - -LIBNAME = opennl -DIR = $(OCGDIR)/intern/$(LIBNAME) - -include nan_compile.mk - -CCFLAGS += $(NAN_LEVEL_2_CPP_WARNINGS) - -CPPFLAGS += -I../superlu -I../extern - - diff --git a/intern/opennl/superlu/Makefile b/intern/opennl/superlu/Makefile deleted file mode 100644 index 46b1066a676..00000000000 --- a/intern/opennl/superlu/Makefile +++ /dev/null @@ -1,37 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# opennl intern Makefile -# - -LIBNAME = superlu -DIR = $(OCGDIR)/intern/$(LIBNAME) - -include nan_compile.mk - -CCFLAGS += $(NAN_LEVEL_2_CPP_WARNINGS) - diff --git a/intern/smoke/CMakeLists.txt b/intern/smoke/CMakeLists.txt index ec4f0d4ca6d..486ef92f638 100644 --- a/intern/smoke/CMakeLists.txt +++ b/intern/smoke/CMakeLists.txt @@ -28,8 +28,8 @@ set(INC intern ../memutil ../../extern/bullet2/src - ${PNG_INC} - ${ZLIB_INC} + ${PNG_INCLUDE_DIR} + ${ZLIB_INCLUDE_DIRS} ) set(SRC diff --git a/intern/smoke/Makefile b/intern/smoke/Makefile deleted file mode 100644 index e5144a9c3f8..00000000000 --- a/intern/smoke/Makefile +++ /dev/null @@ -1,54 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): Hans Lambermont, GSR -# -# ***** END GPL LICENSE BLOCK ***** -# smoke main makefile. -# - -include nan_definitions.mk - -unexport NAN_QUIET - -LIBNAME = smoke -SOURCEDIR = intern/$(LIBNAME) -DIR = $(OCGDIR)/$(SOURCEDIR) -DIRS = intern -#not ready yet TESTDIRS = test - -include nan_subdirs.mk - -install: $(ALL_OR_DEBUG) - @[ -d $(NAN_SMOKE) ] || mkdir $(NAN_SMOKE) - @[ -d $(NAN_SMOKE)/include ] || mkdir $(NAN_SMOKE)/include - @[ -d $(NAN_SMOKE)/lib/$(DEBUG_DIR) ] || mkdir $(NAN_SMOKE)/lib/$(DEBUG_DIR) - @../tools/cpifdiff.sh $(DIR)/$(DEBUG_DIR)lib$(LIBNAME).a $(NAN_SMOKE)/lib/$(DEBUG_DIR) -ifeq ($(OS),darwin) - ranlib $(NAN_SMOKE)/lib/$(DEBUG_DIR)lib$(LIBNAME).a -endif - @../tools/cpifdiff.sh extern/*.h $(NAN_SMOKE)/include/ - diff --git a/intern/smoke/intern/Makefile b/intern/smoke/intern/Makefile deleted file mode 100644 index 760b1627a91..00000000000 --- a/intern/smoke/intern/Makefile +++ /dev/null @@ -1,57 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# smoke intern Makefile -# - -LIBNAME = smoke -DIR = $(OCGDIR)/intern/$(LIBNAME) - -include nan_compile.mk - -unexport NAN_QUIET - -CCFLAGS += $(LEVEL_2_CPP_WARNINGS) - -ifeq ($(WITH_BF_OPENMP),true) - CPPFLAGS += -DPARALLEL -endif - -ifeq ($(WITH_FFTW3),true) - CPPFLAGS += -DFFTW3=1 - CPPFLAGS += $(BF_FFTW3_INC) -endif - -CPPFLAGS += -I. -CPPFLAGS += -I../extern -CPPFLAGS += -I$(NAN_PNG)/include -CPPFLAGS += -I$(NAN_PNG)/include/libpng - -# zlib -ifeq ($(OS),$(findstring $(OS), "solaris windows")) - CPPFLAGS += -I$(NAN_ZLIB)/include -endif diff --git a/intern/string/Makefile b/intern/string/Makefile deleted file mode 100644 index 7972defd406..00000000000 --- a/intern/string/Makefile +++ /dev/null @@ -1,52 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): Hans Lambermont, GSR -# -# ***** END GPL LICENSE BLOCK ***** -# string main makefile. -# - -include nan_definitions.mk - -LIBNAME = string -SOURCEDIR = intern/$(LIBNAME) -DIR = $(OCGDIR)/$(SOURCEDIR) -DIRS = intern -# not yet TESTDIRS = test - -include nan_subdirs.mk - -install: $(ALL_OR_DEBUG) - @[ -d $(NAN_STRING) ] || mkdir $(NAN_STRING) - @[ -d $(NAN_STRING)/include ] || mkdir $(NAN_STRING)/include - @[ -d $(NAN_STRING)/lib/$(DEBUG_DIR) ] || mkdir $(NAN_STRING)/lib/$(DEBUG_DIR) - @../tools/cpifdiff.sh $(DIR)/$(DEBUG_DIR)libstring.a $(NAN_STRING)/lib/$(DEBUG_DIR) -ifeq ($(OS),darwin) - ranlib $(NAN_STRING)/lib/$(DEBUG_DIR)libstring.a -endif - @../tools/cpifdiff.sh *.h $(NAN_STRING)/include/ - diff --git a/intern/string/intern/Makefile b/intern/string/intern/Makefile deleted file mode 100644 index 4a461fb03b3..00000000000 --- a/intern/string/intern/Makefile +++ /dev/null @@ -1,39 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# string intern Makefile -# - -LIBNAME = string -DIR = $(OCGDIR)/intern/$(LIBNAME) - -include nan_compile.mk - -CCFLAGS += $(LEVEL_2_CPP_WARNINGS) - -CPPFLAGS += -I.. - diff --git a/po/Makefile b/po/Makefile deleted file mode 100644 index bbd1caa68ad..00000000000 --- a/po/Makefile +++ /dev/null @@ -1,63 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# $Id$ -# -# ***** BEGIN GPL LICENSE 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2002 by Stichting Blender Foundation, -# Amsterdam, the Netherlands. -# All rights reserved. -# -# The Original Code is: revision 1.3 -# -# Contributor(s): Wouter van Heyst, GSR -# -# ***** END GPL LICENSE BLOCK ***** -# -# po Makefile for blender. Compiles the translations in the place -# where release can pick them up. - -PO_FILES = $(wildcard *.po) - -LINGUAS = $(basename $(PO_FILES)) - -SOURCEDIR = blender/po - -include nan_definitions.mk - -ifeq ($(OS), darwin) - DIR = $(OCGDIR)/bin/blender.app/Contents/Resources/locale/ -else - DIR = $(OCGDIR)/bin/.blender/locale/ -endif - -LINGUAS_DEST= $(foreach LINGUA, $(LINGUAS),$(DIR)$(LINGUA)/LC_MESSAGES/blender.mo) - -$(DIR)%/LC_MESSAGES/blender.mo: %.po - mkdir -p $(@D) - msgfmt -o $@ $< -ifeq ($(BF_VERIFY_MO_FILES), true) - @cmp $@ $(NANBLENDERHOME)/release/bin/.blender/locale/$(basename $<)/LC_MESSAGES/blender.mo \ - || ( echo Mismatch between generated and commited $(basename $<).mo catalog && \ - rm -f $@ && false ) -endif - -all debug:: $(LINGUAS_DEST) -# Just trigger the deps - -clean:: - rm -rf $(DIR) diff --git a/release/Makefile b/release/Makefile deleted file mode 100644 index f1440c309e4..00000000000 --- a/release/Makefile +++ /dev/null @@ -1,209 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** - -include nan_definitions.mk - -export VERSION := $(shell ./getversion.py) - -BLENDNAME=blender-$(VERSION)-$(CONFIG_GUESS)-py$(NAN_PYTHON_VERSION)$(TYPE) -export DISTDIR=$(NAN_OBJDIR)/$(BLENDNAME) -export CONFDIR=$(DISTDIR)/.blender - -ifeq ($(OS),$(findstring $(OS), "freebsd irix linux openbsd solaris")) - TAR="tar" - TARFLAGS="cf" - EXT0="" - EXT1=".tar" - COMPRESS="bzip2" - COMPRESSFLAGS="-f" - EXT2=".bz2" - ifeq ($(OS), solaris) - ifeq ($(CPU), i386) - NOPLUGINS?=true - endif - endif - # don"t build plugins on irix if using gcc - ifeq ($(OS), irix) - ifeq ($(IRIX_USE_GCC), true) - NOPLUGINS?=true - endif - endif -endif - -ifeq ($(OS),windows) - TAR="zip" - TARFLAGS="-r9" - EXT0=".exe" - EXT1=".zip" - NOPLUGINS?=true - NOSTRIP?=true -endif - -ifeq ($(OS),darwin) - TAR="tar" - TARFLAGS="cf" - EXT0=".app" - EXT1=".tar" - COMPRESS="bzip2" - COMPRESSFLAGS="-f" - EXT2=".bz2" -endif - -release: all - -all: - @$(MAKE) pkg TYPE="" -ifeq ($(WITH_BF_STATICOPENGL), true) - @$(MAKE) pkg TYPE="-static" -endif - -# OS independent targets below: - -dist: all - -package: version makedirs - -install: package - @#echo "****> Install text" - @cp text/readme.html $(DISTDIR) - @cp text/*.txt $(DISTDIR) - ifeq ($(FREEDESKTOP), true) - @#echo "****> Install freedesktop icons" - @mkdir $(DISTDIR)/icons - @mkdir $(DISTDIR)/icons/16x16 - @cp freedesktop/icons/16x16/blender.png $(DISTDIR)/icons/16x16 - @mkdir $(DISTDIR)/icons/22x22 - @cp freedesktop/icons/22x22/blender.png $(DISTDIR)/icons/22x22 - @mkdir $(DISTDIR)/icons/32x32 - @cp freedesktop/icons/32x32/blender.png $(DISTDIR)/icons/32x32 - @mkdir $(DISTDIR)/icons/scalable - @cp freedesktop/icons/scalable/blender.svg $(DISTDIR)/icons/scalable - endif - @echo "----> Make Config dir .blender" - @mkdir -p $(CONFDIR) - @# possible overruling .txt text documents - @[ ! -d $(CONFIG_GUESS)/text ] || \ - cp -f $(CONFIG_GUESS)/text/*.txt $(DISTDIR) -#on OS X the contents of the .blender dir is already inside the bundle - ifneq ($(OS), darwin) - @[ ! -d $(OCGDIR)/bin/.blender ] || \ - cp -r $(OCGDIR)/bin/.blender $(DISTDIR) - @cp $(NANBLENDERHOME)/release/bin/.blender/.Blanguages $(CONFDIR) - @cp $(NANBLENDERHOME)/release/bin/.blender/.bfont.ttf $(CONFDIR) - endif - @echo "----> Copy blender$(EXT0) executable" - ifeq ($(TYPE),-static) - @cp $(OCGDIR)/bin/blenderstatic$(EXT0) $(DISTDIR)/blender$(EXT0) - else - ifeq ($(OS),darwin) - @cp -r $(OCGDIR)/bin/blender$(EXT0) $(DISTDIR)/Blender$(EXT0) - else - @cp $(OCGDIR)/bin/blender$(EXT0) $(DISTDIR)/blender$(EXT0) - endif - @if [ -f $(OCGDIR)/bin/blenderplayer$(EXTO) ]; then \ - cp $(OCGDIR)/bin/blenderplayer$(EXTO) \ - $(DISTDIR)/blenderplayer$(EXTO) ; \ - fi - endif - -ifneq ($(NOPLUGINS),true) - @echo "----> Copy and compile plugins" - @cp -r plugins $(DISTDIR)/plugins - @mkdir -p $(DISTDIR)/plugins/include - @cp ../source/blender/blenpluginapi/*.h $(DISTDIR)/plugins/include/ - @chmod 755 $(DISTDIR)/plugins/bmake - @$(MAKE) -C $(DISTDIR)/plugins all > /dev/null || exit 1; - @rm -f $(DISTDIR)/plugins/*/*.o - -#on OS X the plugins move to the installation directory - ifneq ($(OS),darwin) - @mkdir -p $(CONFDIR)/plugins/sequence - @mkdir -p $(CONFDIR)/plugins/texture - @mv $(DISTDIR)/plugins/sequence/*.so $(CONFDIR)/plugins/sequence - @mv $(DISTDIR)/plugins/texture/*.so $(CONFDIR)/plugins/texture - endif -endif - - @echo "----> Copy python infrastructure" - @[ ! -d scripts ] || cp -r scripts $(CONFDIR)/scripts - - ifeq ($(OS),darwin) - @echo "----> Copy python modules" - @mkdir $(CONFDIR)/python/ - @unzip -q $(LCGDIR)/release/python_ppc.zip -d $(CONFDIR)/python/ - endif - - ifeq ($(OS),darwin) - @echo "----> Move .blender to .app/Contents/MacOS/" - @rm -fr $(DISTDIR)/blender$(EXT0)/Contents/MacOS/.blender - @mv $(DISTDIR)/.blender $(DISTDIR)/blender$(EXT0)/Contents/MacOS/ - endif - - ifneq ($(NOSTRIP),true) - @echo "----> Strip blender executable" - ifeq ($(OS),darwin) - @strip -x $(DISTDIR)/blender$(EXT0)/Contents/MacOS/blender - else - @strip -x $(DISTDIR)/blender$(EXT0) - @if [ -f $(DISTDIR)/blenderplayer$(EXTO) ]; then \ - strip -x $(DISTDIR)/blenderplayer$(EXT0) ; \ - fi - endif - endif - @[ ! -x $(CONFIG_GUESS)/specific.sh ] || (\ - echo "**--> Execute specific.sh in $(CONFIG_GUESS)/" && \ - cd $(CONFIG_GUESS) && ./specific.sh ) - @echo "----> Cleaning .svn metadata directories" - @find $(DISTDIR) -type d -name ".svn" | xargs rm -fr - -pkg: install - @echo "----> Create distribution file $(BLENDNAME)$(EXT1)" - @#enable the next sleep if you get 'tar file changed while reading' - @#sleep 10 - rm -f $(NAN_OBJDIR)/$(VERSION)/$(BLENDNAME)$(EXT1)* - @cd $(NAN_OBJDIR) && $(TAR) $(TARFLAGS) $(VERSION)/$(BLENDNAME)$(EXT1) $(BLENDNAME) - ifdef COMPRESS - @echo "----> Compressing distribution to $(BLENDNAME)$(EXT1)$(EXT2)" - @$(COMPRESS) $(COMPRESSFLAGS) $(NAN_OBJDIR)/$(VERSION)/$(BLENDNAME)$(EXT1) - endif - @#echo "****> Clean up temporary distribution directory" - @#rm -fr $(DISTDIR) - @echo "****> $(NAN_OBJDIR)/$(VERSION)/$(BLENDNAME)$(EXT1)$(EXT2) is ready" - -version: FORCE - @echo "*---> Create $(BLENDNAME) package" - -makedirs: FORCE - @echo "****> Create package directory $(VERSION) if necessary" - @[ -d $(NAN_OBJDIR)/$(VERSION) ] || mkdir $(NAN_OBJDIR)/$(VERSION) - @echo "****> Remove and recreate temporary distribution directory" - @rm -fr $(DISTDIR) - @mkdir $(DISTDIR) - -FORCE: diff --git a/release/getversion.py b/release/getversion.py deleted file mode 100755 index 667214a2ca3..00000000000 --- a/release/getversion.py +++ /dev/null @@ -1,64 +0,0 @@ -#!/usr/bin/env python -# -*- mode: python; tab-width: 4; indent-tabs-mode: t; -*- -# vim: tabstop=4 -# $Id$ -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2008 by the Blender Foundation -# All rights reserved. -# -# The Original Code is: see repository. -# -# Contributor(s): see repository. - -# <pep8-80 compliant> - -import sys -import os -import re - -nanblenderhome = os.getenv("NANBLENDERHOME") - -if nanblenderhome is None: - nanblenderhome = os.path.dirname(os.path.abspath(sys.argv[0])) + "/.." - -config = nanblenderhome + "/source/blender/blenkernel/BKE_blender.h" - -infile = open(config) - -major = None -minor = None - -for line in infile.readlines(): - m = re.search("#define BLENDER_VERSION\s+(\d+)", line) - if m: - major = m.group(1) - m = re.search("#define BLENDER_SUBVERSION\s+(\d+)", line) - if m: - minor = m.group(1) - if minor and major: - major = float(major) / 100.0 - break - -infile.close() - -# Major was changed to float, but minor is still a string -# Note: removed returning minor, messes up install path code in BLI module -if major: - print "%.2f" % major -else: - print "unknownversion" diff --git a/release/scripts/io/netrender/client.py b/release/scripts/io/netrender/client.py index 24e0baa0df3..583a825f909 100644 --- a/release/scripts/io/netrender/client.py +++ b/release/scripts/io/netrender/client.py @@ -215,7 +215,7 @@ def clientSendJobBlender(conn, scene, anim = False): for object in bpy.data.objects: for modifier in object.modifiers: if modifier.type == 'FLUID_SIMULATION' and modifier.settings.type == "DOMAIN": - addFluidFiles(job, bpy.path.abspath(modifier.settings.path)) + addFluidFiles(job, bpy.path.abspath(modifier.settings.filepath)) elif modifier.type == "CLOTH": addPointCache(job, object, modifier.point_cache, default_path) elif modifier.type == "SOFT_BODY": @@ -365,7 +365,6 @@ def compatible(module): except: pass del module -#compatible("properties_render") compatible("properties_world") compatible("properties_material") compatible("properties_data_mesh") diff --git a/release/scripts/io/netrender/slave.py b/release/scripts/io/netrender/slave.py index 378871566a8..b05de0afeb9 100644 --- a/release/scripts/io/netrender/slave.py +++ b/release/scripts/io/netrender/slave.py @@ -170,6 +170,10 @@ def render_slave(engine, netsettings, threads): if not os.path.exists(JOB_PREFIX): os.mkdir(JOB_PREFIX) + # set tempdir for fsaa temp files + # have to set environ var because render is done in a subprocess and that's the easiest way to propagate the setting + os.environ["TMP"] = JOB_PREFIX + if job.type == netrender.model.JOB_BLENDER: job_path = job.files[0].filepath # path of main file diff --git a/release/scripts/io/netrender/ui.py b/release/scripts/io/netrender/ui.py index 7bdd5e94fef..fffb8a74e2a 100644 --- a/release/scripts/io/netrender/ui.py +++ b/release/scripts/io/netrender/ui.py @@ -71,11 +71,11 @@ def verify_address(netsettings): global LAST_ADDRESS_TEST init_file() - if LAST_ADDRESS_TEST + 5 < time.time(): + if LAST_ADDRESS_TEST + 30 < time.time(): LAST_ADDRESS_TEST = time.time() try: - conn = clientConnection(netsettings.server_address, netsettings.server_port, scan = False) + conn = clientConnection(netsettings.server_address, netsettings.server_port, scan = False, timeout = 1) except: conn = None diff --git a/release/scripts/io/netrender/utils.py b/release/scripts/io/netrender/utils.py index 1d1bf3143be..e18d915dae0 100644 --- a/release/scripts/io/netrender/utils.py +++ b/release/scripts/io/netrender/utils.py @@ -130,7 +130,7 @@ def clientScan(report = None): return ("", 8000) # return default values -def clientConnection(address, port, report = None, scan = True): +def clientConnection(address, port, report = None, scan = True, timeout = 5): if address == "[default]": # calling operator from python is fucked, scene isn't in context # if bpy: @@ -144,7 +144,7 @@ def clientConnection(address, port, report = None, scan = True): return None try: - conn = http.client.HTTPConnection(address, port, timeout = 5) + conn = http.client.HTTPConnection(address, port, timeout = timeout) if conn: if clientVerifyVersion(conn): @@ -202,7 +202,10 @@ def hashData(data): def prefixPath(prefix_directory, file_path, prefix_path, force = False): - if os.path.isabs(file_path): + if (os.path.isabs(file_path) or + len(file_path) >= 3 and (file_path[1:3] == ":/" or file_path[1:3] == ":\\") or # Windows absolute path don't count as absolute on unix, have to handle them myself + file_path[0] == "/" or file_path[0] == "\\"): # and vice versa + # if an absolute path, make sure path exists, if it doesn't, use relative local path full_path = file_path if force or not os.path.exists(full_path): @@ -256,6 +259,10 @@ def _getResults(server_address, server_port, job_id, resolution_x, resolution_y, render.resolution_x = int(resolution_x) render.resolution_y = int(resolution_y) render.resolution_percentage = int(resolution_percentage) + + render.use_full_sample = False + render.use_compositing = False + render.use_border = False def getFileInfo(filepath, infos): diff --git a/release/scripts/keyingsets/keyingsets_builtins.py b/release/scripts/keyingsets/keyingsets_builtins.py index 30b00d969c3..8a10342d6a5 100644 --- a/release/scripts/keyingsets/keyingsets_builtins.py +++ b/release/scripts/keyingsets/keyingsets_builtins.py @@ -190,6 +190,136 @@ class BUILTIN_KSI_Available(bpy.types.KeyingSetInfo): ############################### +# All properties that are likely to get animated in a character rig +class BUILTIN_KSI_WholeCharacter(bpy.types.KeyingSetInfo): + bl_label = "Whole Character" + + # these prefixes should be avoided, as they are not really bones + # that animators should be touching (or need to touch) + badBonePrefixes = ( + 'DEF', + 'GEO', + 'MCH', + 'ORG', + 'COR', + 'VIS', + # ... more can be added here as you need in your own rigs ... + ) + + # poll - pose-mode on active object only + def poll(ksi, context): + return ((context.active_object) and (context.active_object.pose) and + (context.active_object.mode == 'POSE')) + + # iterator - all bones regardless of selection + def iterator(ksi, context, ks): + for bone in context.active_object.pose.bones: + if not bone.name.startswith(BUILTIN_KSI_WholeCharacter.badBonePrefixes): + ksi.generate(context, ks, bone) + + # generator - all unlocked bone transforms + custom properties + def generate(ksi, context, ks, bone): + # loc, rot, scale - only include unlocked ones + ksi.doLoc(ks, bone) + + if bone.rotation_mode in ('QUATERNION', 'AXIS_ANGLE'): + ksi.doRot4d(ks, bone) + else: + ksi.doRot3d(ks, bone) + ksi.doScale(ks, bone) + + # custom props? + ksi.doCustomProps(ks, bone) + + # ---------------- + + # helper to add some bone's property to the Keying Set + def addProp(ksi, ks, bone, prop, index=-1, use_groups=True): + # add the property name to the base path + id_path = bone.path_from_id() + id_block = bone.id_data + + if prop.startswith('['): + # custom properties + path = id_path + prop + else: + # standard transforms/properties + path = path_add_property(id_path, prop) + + # add Keying Set entry for this... + if use_groups: + ks.paths.add(id_block, path, index, group_method='NAMED', group_name=bone.name) + else: + ks.paths.add(id_block, path, index) + + # ---------------- + + # location properties + def doLoc(ksi, ks, bone): + if bone.lock_location == (False, False, False): + ksi.addProp(ks, bone, "location") + else: + for i in range(3): + if not bone.lock_location[i]: + ksi.addProp(ks, bone, "location", i) + + # rotation properties + def doRot4d(ksi, ks, bone): + # rotation mode affects the property used + if bone.rotation_mode == 'QUATERNION': + prop = "rotation_quaternion" + elif bone.rotation_mode == 'AXIS_ANGLE': + prop = "rotation_axis_angle" + + # add rotation properties if they will + if bone.lock_rotations_4d: + # can check individually + if (bone.lock_rotation == (False, False, False)) and (bone.lock_rotation_w == False): + ksi.addProp(ks, bone, prop) + else: + if bone.lock_rotation_w == False: + ksi.addProp(ks, bone, prop, 0) # w = 0 + + for i in range(3): + if not bone.lock_rotation[i]: + ksi.addProp(ks, bone, prop, i+1) # i+1, since here x,y,z = 1,2,3, and w=0 + elif True not in bone.lock_rotation: + # if axis-angle rotations get locked as eulers, then it's too messy to allow anything + # other than all open unless we keyframe the whole lot + ksi.addProp(ks, bone, prop) + + def doRot3d(ksi, ks, bone): + if bone.lock_rotation == (False, False, False): + ksi.addProp(ks, bone, "rotation_euler") + else: + for i in range(3): + if not bone.lock_rotation[i]: + ksi.addProp(ks, bone, "rotation_euler", i) + + # scale properties + def doScale(ksi, ks, bone): + if bone.lock_scale == (0,0,0): + ksi.addProp(ks, bone, "scale") + else: + for i in range(3): + if not bone.lock_scale[i]: + ksi.addProp(ks, bone, "scale", i) + + # ---------------- + + # custom properties + def doCustomProps(ksi, ks, bone): + # go over all custom properties for bone + for prop,val in bone.items(): + # ignore special "_RNA_UI" used for UI editing + if prop == "_RNA_UI": + continue + + # for now, just add all of 'em + ksi.addProp(ks, bone, '["%s"]' % (prop)) + +############################### + classes = [ BUILTIN_KSI_Location, BUILTIN_KSI_Rotation, @@ -199,6 +329,8 @@ classes = [ BUILTIN_KSI_LocScale, BUILTIN_KSI_LocRotScale, BUILTIN_KSI_RotScale, + + BUILTIN_KSI_WholeCharacter, BUILTIN_KSI_VisualLoc, BUILTIN_KSI_VisualRot, diff --git a/release/scripts/modules/add_object_utils.py b/release/scripts/modules/add_object_utils.py index 8c52a63bf13..01a1a73aedf 100644 --- a/release/scripts/modules/add_object_utils.py +++ b/release/scripts/modules/add_object_utils.py @@ -48,7 +48,7 @@ def add_object_align_init(context, operator): else: operator.properties.view_align = view_align - if operator.properties.is_property_set("rotation") and not view_align_force: + if operator and operator.properties.is_property_set("rotation") and not view_align_force: rotation = mathutils.Euler(operator.properties.rotation).to_matrix().resize4x4() else: if view_align and space_data: diff --git a/release/scripts/op/add_mesh_torus.py b/release/scripts/op/add_mesh_torus.py index 0dc2668aa37..53460ff264d 100644 --- a/release/scripts/op/add_mesh_torus.py +++ b/release/scripts/op/add_mesh_torus.py @@ -105,8 +105,10 @@ class AddTorus(bpy.types.Operator): # generic transform props view_align = BoolProperty(name="Align to View", default=False) - location = FloatVectorProperty(name="Location") - rotation = FloatVectorProperty(name="Rotation") + location = FloatVectorProperty(name="Location", + subtype='TRANSLATION') + rotation = FloatVectorProperty(name="Rotation", + subtype='EULER') def execute(self, context): diff --git a/release/scripts/presets/framerate/23.98.py b/release/scripts/presets/framerate/23.98.py new file mode 100644 index 00000000000..498a5180d73 --- /dev/null +++ b/release/scripts/presets/framerate/23.98.py @@ -0,0 +1,3 @@ +import bpy +bpy.context.scene.render.fps = 24 +bpy.context.scene.render.fps_base = 1.001 diff --git a/release/scripts/presets/framerate/24.py b/release/scripts/presets/framerate/24.py new file mode 100644 index 00000000000..6fcdcb1284a --- /dev/null +++ b/release/scripts/presets/framerate/24.py @@ -0,0 +1,3 @@ +import bpy +bpy.context.scene.render.fps = 24 +bpy.context.scene.render.fps_base = 1 diff --git a/release/scripts/presets/framerate/25.py b/release/scripts/presets/framerate/25.py new file mode 100644 index 00000000000..20973919720 --- /dev/null +++ b/release/scripts/presets/framerate/25.py @@ -0,0 +1,3 @@ +import bpy +bpy.context.scene.render.fps = 25 +bpy.context.scene.render.fps_base = 1 diff --git a/release/scripts/presets/framerate/29.97.py b/release/scripts/presets/framerate/29.97.py new file mode 100644 index 00000000000..8f7ad67a7ee --- /dev/null +++ b/release/scripts/presets/framerate/29.97.py @@ -0,0 +1,3 @@ +import bpy +bpy.context.scene.render.fps = 30 +bpy.context.scene.render.fps_base = 1.001 diff --git a/release/scripts/presets/framerate/30.py b/release/scripts/presets/framerate/30.py new file mode 100644 index 00000000000..bc83df19ac8 --- /dev/null +++ b/release/scripts/presets/framerate/30.py @@ -0,0 +1,3 @@ +import bpy +bpy.context.scene.render.fps = 30 +bpy.context.scene.render.fps_base = 1 diff --git a/release/scripts/presets/framerate/50.py b/release/scripts/presets/framerate/50.py new file mode 100644 index 00000000000..08dfaa89c6e --- /dev/null +++ b/release/scripts/presets/framerate/50.py @@ -0,0 +1,3 @@ +import bpy +bpy.context.scene.render.fps = 50 +bpy.context.scene.render.fps_base = 1 diff --git a/release/scripts/presets/framerate/59.94.py b/release/scripts/presets/framerate/59.94.py new file mode 100644 index 00000000000..5c44841a9ef --- /dev/null +++ b/release/scripts/presets/framerate/59.94.py @@ -0,0 +1,3 @@ +import bpy +bpy.context.scene.render.fps = 60 +bpy.context.scene.render.fps_base = 1.001 diff --git a/release/scripts/presets/framerate/60.py b/release/scripts/presets/framerate/60.py new file mode 100644 index 00000000000..30f2db7cdad --- /dev/null +++ b/release/scripts/presets/framerate/60.py @@ -0,0 +1,3 @@ +import bpy +bpy.context.scene.render.fps = 60 +bpy.context.scene.render.fps_base = 1 diff --git a/release/scripts/presets/framerate/Custom.py b/release/scripts/presets/framerate/Custom.py new file mode 100644 index 00000000000..001d19a2280 --- /dev/null +++ b/release/scripts/presets/framerate/Custom.py @@ -0,0 +1 @@ +import bpy diff --git a/release/scripts/templates/addon_add_object.py b/release/scripts/templates/addon_add_object.py index 44073f998ab..00db3a55291 100644 --- a/release/scripts/templates/addon_add_object.py +++ b/release/scripts/templates/addon_add_object.py @@ -22,12 +22,14 @@ def add_object(self, context): scale_x = self.scale.x scale_y = self.scale.y - verts = [Vector((-1 * scale_x, 1 * scale_y, 0)), - Vector(( 1 * scale_x, 1 * scale_y, 0)), - Vector(( 1 * scale_x, -1 * scale_y, 0)), - Vector((-1 * scale_x, -1 * scale_y, 0)),] + verts = [Vector((-1 * scale_x, 1 * scale_y, 0)), + Vector((1 * scale_x, 1 * scale_y, 0)), + Vector((1 * scale_x, -1 * scale_y, 0)), + Vector((-1 * scale_x, -1 * scale_y, 0)), + ] + edges = [] - faces = [[0,1,2,3]] + faces = [[0, 1, 2, 3]] mesh_data = bpy.data.meshes.new(name='New Object Mesh') mesh_data.from_pydata(verts, edges, faces) @@ -42,14 +44,14 @@ class OBJECT_OT_add_object(bpy.types.Operator, AddObjectHelper): bl_options = {'REGISTER', 'UNDO'} scale = FloatVectorProperty(name='scale', - default=(1,1,1), + default=(1.0, 1.0, 1.0), subtype='TRANSLATION', description='scaling') def execute(self, context): - + add_object(self, context) - + return {'FINISHED'} @@ -61,9 +63,11 @@ def add_object_button(self, context): text="Add Object", icon="PLUGIN") + def register(): bpy.types.INFO_MT_mesh_add.append(add_object_button) + def unregister(): bpy.types.INFO_MT_mesh_add.remove(add_object_button) diff --git a/release/scripts/templates/background_job.py b/release/scripts/templates/background_job.py index bf29de63830..f199ee5ad50 100644 --- a/release/scripts/templates/background_job.py +++ b/release/scripts/templates/background_job.py @@ -1,16 +1,21 @@ # This script is an example of how you can run blender from the command line (in background mode with no interface) # to automate tasks, in this example it creates a text object, camera and light, then renders and/or saves it. # This example also shows how you can parse command line options to python scripts. -# +# # Example usage for this test. -# blender -b -P $HOME/background_job.py -- --text="Hello World" --render="/tmp/hello" --save="/tmp/hello.blend" -# -# Notice all python args are after the "--" argument. +# blender --background --factory-startup --python $HOME/background_job.py -- --text="Hello World" --render="/tmp/hello" --save="/tmp/hello.blend" +# +# Notice: +# '--factory-startup' is used to avoid the user default settings from interfearing with automated scene generation. +# '--' causes blender to ignore all following arguments so python can use them. +# +# See blender --help for details. import bpy + def example_function(body_text, save_path, render_path): - + scene = bpy.context.scene # Clear existing objects. @@ -31,7 +36,7 @@ def example_function(body_text, save_path, render_path): cam_ob = bpy.data.objects.new(name="MyCam", object_data=cam_data) scene.objects.link(cam_ob) # add the camera data to the scene (creating a new object) scene.camera = cam_ob # set the active camera - cam_ob.location = 0.0, 0.0, 10.0 + cam_ob.location = 0.0, 0.0, 10.0 # Lamp lamp_data = bpy.data.lamps.new("MyLamp", 'POINT') @@ -63,23 +68,23 @@ def example_function(body_text, save_path, render_path): import sys # to get command line args import optparse # to parse options for us and print a nice help message + def main(): - + # get the args passed to blender after "--", all of which are ignored by blender specifically # so python may receive its own arguments argv = sys.argv if "--" not in argv: - argv = [] # as if no args are passed - else: - argv = argv[argv.index("--") + 1:] # get all args after "--" - + argv = [] # as if no args are passed + else: + argv = argv[argv.index("--") + 1:] # get all args after "--" + # When --help or no args are given, print this help usage_text = "Run blender in background mode with this script:" usage_text += " blender -b -P " + __file__ + " -- [options]" - + parser = optparse.OptionParser(usage=usage_text) - # Example background utility, add some text and renders or saves it (with options) # Possible types are: string, int, long, choice, float and complex. @@ -88,8 +93,8 @@ def main(): parser.add_option("-s", "--save", dest="save_path", help="Save the generated file to the specified path", metavar='FILE') parser.add_option("-r", "--render", dest="render_path", help="Render an image to the specified path", metavar='FILE') - options, args = parser.parse_args(argv) # In this example we wont use the args - + options, args = parser.parse_args(argv) # In this example we wont use the args + if not argv: parser.print_help() return @@ -98,7 +103,7 @@ def main(): print("Error: --text=\"some string\" argument not given, aborting.") parser.print_help() return - + # Run the example function example_function(options.body_text, options.save_path, options.render_path) diff --git a/release/scripts/templates/builtin_keyingset.py b/release/scripts/templates/builtin_keyingset.py index 878e2747b74..799f305d8b4 100644 --- a/release/scripts/templates/builtin_keyingset.py +++ b/release/scripts/templates/builtin_keyingset.py @@ -1,28 +1,29 @@ import bpy from keyingsets_utils import * + class BUILTIN_KSI_hello(bpy.types.KeyingSetInfo): bl_label = "Hello World KeyingSet" # poll - test for whether Keying Set can be used at all def poll(ksi, context): return (context.active_object) or (context.selected_objects) - + # iterator - go over all relevant data, calling generate() def iterator(ksi, context, ks): for ob in context.selected_objects: ksi.generate(context, ks, ob) - + # generator - populate Keying Set with property paths to use def generate(ksi, context, ks, data): id_block = data.id_data - + ks.paths.add(id_block, "location") - + for i in range(5): ks.paths.add(id_block, "layers", i, group_method='NAMED', group_name="5x Hello Layers") - + ks.paths.add(id_block, "show_x_ray", group_method='NONE') - -# manually register + +# manually register bpy.types.register(BUILTIN_KSI_hello) diff --git a/release/scripts/templates/gamelogic.py b/release/scripts/templates/gamelogic.py index 0a419955b81..c6d15850a4e 100644 --- a/release/scripts/templates/gamelogic.py +++ b/release/scripts/templates/gamelogic.py @@ -9,6 +9,7 @@ import bge # for functions like getWindowWidth(), getWindowHeight() # import Rasterizer + def main(): cont = bge.logic.getCurrentController() @@ -18,7 +19,6 @@ def main(): # for scripts that deal with spacial logic own_pos = own.worldPosition - # Some example functions, remove to write your own script. # check for a positive sensor, will run on any object without errors. print('Logic info for KX_GameObject', own.name) @@ -52,14 +52,12 @@ def main(): # sens_key = cont.sensors['key_sensor'] # actu_motion = cont.actuators['motion'] - # Loop through all other objects in the scene sce = bge.logic.getCurrentScene() print('Scene Objects:', sce.name) for ob in sce.objects: print(' ', ob.name, ob.worldPosition) - # Example where collision objects are checked for their properties # adding to our objects "life" property """ diff --git a/release/scripts/templates/gamelogic_basic.py b/release/scripts/templates/gamelogic_basic.py index c5578a0add9..dbfcf948b18 100644 --- a/release/scripts/templates/gamelogic_basic.py +++ b/release/scripts/templates/gamelogic_basic.py @@ -1,5 +1,6 @@ import bge + def main(): cont = bge.logic.getCurrentController() diff --git a/release/scripts/templates/gamelogic_module.py b/release/scripts/templates/gamelogic_module.py index 70bd4d9b45b..fcc8a8839c9 100644 --- a/release/scripts/templates/gamelogic_module.py +++ b/release/scripts/templates/gamelogic_module.py @@ -12,6 +12,7 @@ import bge # inside the function if you intend to use the module # with multiple objects. + def main(cont): own = cont.owner diff --git a/release/scripts/templates/operator_export.py b/release/scripts/templates/operator_export.py index ef8acfeb3a3..4f950b11d01 100644 --- a/release/scripts/templates/operator_export.py +++ b/release/scripts/templates/operator_export.py @@ -1,5 +1,6 @@ import bpy + def write_some_data(context, filepath, use_some_setting): print("running write_some_data...") f = open(filepath, 'w') @@ -18,9 +19,9 @@ from bpy.props import * class ExportSomeData(bpy.types.Operator, ExportHelper): '''This appiers in the tooltip of the operator and in the generated docs.''' - bl_idname = "export.some_data" # this is important since its how bpy.ops.export.some_data is constructed + bl_idname = "export.some_data" # this is important since its how bpy.ops.export.some_data is constructed bl_label = "Export Some Data" - + # ExportHelper mixin class uses this filename_ext = ".txt" @@ -28,7 +29,7 @@ class ExportSomeData(bpy.types.Operator, ExportHelper): # List of operator properties, the attributes will be assigned # to the class instance from the operator settings before calling. - use_setting = BoolProperty(name="Example Boolean", description="Example Tooltip", default= True) + use_setting = BoolProperty(name="Example Boolean", description="Example Tooltip", default=True) type = bpy.props.EnumProperty(items=(('OPT_A', "First Option", "Description one"), ('OPT_B', "Second Option", "Description two.")), name="Example Enum", diff --git a/release/scripts/templates/operator_mesh_add.py b/release/scripts/templates/operator_mesh_add.py index 677fa855951..db614f3a74c 100644 --- a/release/scripts/templates/operator_mesh_add.py +++ b/release/scripts/templates/operator_mesh_add.py @@ -58,8 +58,10 @@ class AddBox(bpy.types.Operator): # generic transform props view_align = BoolProperty(name="Align to View", default=False) - location = FloatVectorProperty(name="Location") - rotation = FloatVectorProperty(name="Rotation") + location = FloatVectorProperty(name="Location", + subtype='TRANSLATION') + rotation = FloatVectorProperty(name="Rotation", + subtype='EULER') def execute(self, context): diff --git a/release/scripts/templates/operator_modal.py b/release/scripts/templates/operator_modal.py index 6283626e7b1..026b5fd2d16 100644 --- a/release/scripts/templates/operator_modal.py +++ b/release/scripts/templates/operator_modal.py @@ -1,6 +1,7 @@ import bpy from bpy.props import * + class ModalOperator(bpy.types.Operator): '''Move an object with the mouse, example.''' bl_idname = "object.modal_operator" diff --git a/release/scripts/templates/operator_modal_draw.py b/release/scripts/templates/operator_modal_draw.py index e159bc0f9c5..52259e4b8e7 100644 --- a/release/scripts/templates/operator_modal_draw.py +++ b/release/scripts/templates/operator_modal_draw.py @@ -2,10 +2,11 @@ import bpy import bgl import blf + def draw_callback_px(self, context): print("mouse points", len(self.mouse_path)) - font_id = 0 # XXX, need to find out how best to get this. + font_id = 0 # XXX, need to find out how best to get this. # draw some text blf.position(font_id, 15, 30, 0) diff --git a/release/scripts/templates/operator_modal_view3d.py b/release/scripts/templates/operator_modal_view3d.py index 55b58596f17..eacd335c1da 100644 --- a/release/scripts/templates/operator_modal_view3d.py +++ b/release/scripts/templates/operator_modal_view3d.py @@ -2,6 +2,7 @@ import bpy from mathutils import Vector from bpy.props import FloatVectorProperty + class ViewOperator(bpy.types.Operator): '''Translate the view using mouse events.''' bl_idname = "view3d.modal_operator" @@ -9,7 +10,6 @@ class ViewOperator(bpy.types.Operator): offset = FloatVectorProperty(name="Offset", size=3) - def execute(self, context): v3d = context.space_data rv3d = v3d.region_3d diff --git a/release/scripts/templates/operator_simple.py b/release/scripts/templates/operator_simple.py index 853bfa666eb..6a887a70bdc 100644 --- a/release/scripts/templates/operator_simple.py +++ b/release/scripts/templates/operator_simple.py @@ -1,11 +1,13 @@ import bpy + def main(context): for ob in context.scene.objects: print(ob) + class SimpleOperator(bpy.types.Operator): - '''''' + '''Tooltip''' bl_idname = "object.simple_operator" bl_label = "Simple Object Operator" diff --git a/release/scripts/templates/operator_uv.py b/release/scripts/templates/operator_uv.py index e0cf8dd5db4..73392466aa7 100644 --- a/release/scripts/templates/operator_uv.py +++ b/release/scripts/templates/operator_uv.py @@ -1,5 +1,6 @@ import bpy + def main(context): obj = context.active_object mesh = obj.data @@ -8,7 +9,6 @@ def main(context): if is_editmode: bpy.ops.object.mode_set(mode='OBJECT', toggle=False) - if not mesh.uv_textures: uvtex = bpy.ops.mesh.uv_texture_add() else: @@ -22,7 +22,6 @@ def main(context): # apply the location of the vertex as a UV uvs[j][:] = mesh.vertices[v_idx].co.xy - if is_editmode: bpy.ops.object.mode_set(mode='EDIT', toggle=False) diff --git a/release/scripts/templates/panel_simple.py b/release/scripts/templates/panel_simple.py index 7c73e58a3e5..160bd1ef0bf 100644 --- a/release/scripts/templates/panel_simple.py +++ b/release/scripts/templates/panel_simple.py @@ -1,5 +1,6 @@ import bpy + class OBJECT_PT_hello(bpy.types.Panel): bl_label = "Hello World Panel" bl_space_type = "PROPERTIES" diff --git a/release/scripts/ui/properties_data_mesh.py b/release/scripts/ui/properties_data_mesh.py index 52d886ff0a9..79e1ba2c6c1 100644 --- a/release/scripts/ui/properties_data_mesh.py +++ b/release/scripts/ui/properties_data_mesh.py @@ -33,6 +33,7 @@ class MESH_MT_vertex_group_specials(bpy.types.Menu): layout.operator("object.vertex_group_copy_to_linked", icon='LINK_AREA') layout.operator("object.vertex_group_copy_to_selected", icon='LINK_AREA') layout.operator("object.vertex_group_mirror", icon='ARROW_LEFTRIGHT') + layout.operator("object.vertex_group_remove", icon='X', text="Delete All").all=True class MESH_MT_shape_key_specials(bpy.types.Menu): diff --git a/release/scripts/ui/properties_game.py b/release/scripts/ui/properties_game.py index 856ae624566..cb0dbc03912 100644 --- a/release/scripts/ui/properties_game.py +++ b/release/scripts/ui/properties_game.py @@ -217,7 +217,9 @@ class RENDER_PT_game_player(RenderButtonsPanel, bpy.types.Panel): gs = context.scene.game_settings - layout.prop(gs, "show_fullscreen") + row = layout.row() + row.prop(gs, "show_fullscreen") + row.prop(gs, "show_mouse") split = layout.split() diff --git a/release/scripts/ui/properties_physics_cloth.py b/release/scripts/ui/properties_physics_cloth.py index 26670438b3f..f33804c4c6d 100644 --- a/release/scripts/ui/properties_physics_cloth.py +++ b/release/scripts/ui/properties_physics_cloth.py @@ -47,7 +47,7 @@ class PhysicButtonsPanel(): def poll(cls, context): ob = context.object rd = context.scene.render - return (ob and ob.type == 'MESH') and (not rd.use_game_engine) + return (ob and ob.type == 'MESH') and (not rd.use_game_engine) and (context.cloth) class PHYSICS_PT_cloth(PhysicButtonsPanel, bpy.types.Panel): @@ -59,21 +59,6 @@ class PHYSICS_PT_cloth(PhysicButtonsPanel, bpy.types.Panel): md = context.cloth ob = context.object - split = layout.split() - - if md: - # remove modifier + settings - split.context_pointer_set("modifier", md) - split.operator("object.modifier_remove", text="Remove") - - row = split.row(align=True) - row.prop(md, "show_render", text="") - row.prop(md, "show_viewport", text="") - else: - # add modifier - split.operator("object.modifier_add", text="Add").type = 'CLOTH' - split.label() - if md: cloth = md.settings diff --git a/release/scripts/ui/properties_physics_common.py b/release/scripts/ui/properties_physics_common.py index 71bf8ae9590..30b9061e982 100644 --- a/release/scripts/ui/properties_physics_common.py +++ b/release/scripts/ui/properties_physics_common.py @@ -20,9 +20,60 @@ import bpy -#cachetype can be 'PSYS' 'HAIR' 'SMOKE' etc +class PhysicButtonsPanel(): + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "physics" + + @classmethod + def poll(cls, context): + rd = context.scene.render + return (context.object) and (not rd.use_game_engine) + +def physics_add(self, layout, md, name, type, typeicon, toggles): + sub = layout.row(align=True) + if md: + sub.context_pointer_set("modifier", md) + sub.operator("object.modifier_remove", text=name, icon='X') + if(toggles): + sub.prop(md, "show_render", text="") + sub.prop(md, "show_viewport", text="") + else: + sub.operator("object.modifier_add", text=name, icon=typeicon).type = type + +class PHYSICS_PT_add(PhysicButtonsPanel, bpy.types.Panel): + bl_label = "" + bl_options = {'HIDE_HEADER'} + + def draw(self, context): + ob = context.object + + layout = self.layout + layout.label("Enable physics for:") + split = layout.split() + col = split.column() + + if(context.object.field.type == 'NONE'): + col.operator("object.forcefield_toggle", text="Force Field", icon='FORCE_FORCE') + else: + col.operator("object.forcefield_toggle", text="Force Field", icon='X') + + if(ob.type == 'MESH'): + physics_add(self, col, context.collision, "Collision", 'COLLISION', 'MOD_PHYSICS', False); + physics_add(self, col, context.cloth, "Cloth", 'CLOTH', 'MOD_CLOTH', True); + + col = split.column() + + if(ob.type == 'MESH' or ob.type == 'LATTICE'or ob.type == 'CURVE'): + physics_add(self, col, context.soft_body, "Soft Body", 'SOFT_BODY', 'MOD_SOFT', True); + + if(ob.type == 'MESH'): + physics_add(self, col, context.fluid, "Fluid", 'FLUID_SIMULATION', 'MOD_FLUIDSIM', True); + physics_add(self, col, context.smoke, "Smoke", 'SMOKE', 'MOD_SMOKE', True); +#cachetype can be 'PSYS' 'HAIR' 'SMOKE' etc + def point_cache_ui(self, context, cache, enabled, cachetype): layout = self.layout diff --git a/release/scripts/ui/properties_physics_field.py b/release/scripts/ui/properties_physics_field.py index b5005a78c01..584cdaad108 100644 --- a/release/scripts/ui/properties_physics_field.py +++ b/release/scripts/ui/properties_physics_field.py @@ -37,6 +37,12 @@ class PhysicButtonsPanel(): class PHYSICS_PT_field(PhysicButtonsPanel, bpy.types.Panel): bl_label = "Force Fields" + + @classmethod + def poll(cls, context): + ob = context.object + rd = context.scene.render + return (not rd.use_game_engine) and (ob.field) and (ob.field.type != 'NONE') def draw(self, context): layout = self.layout @@ -164,7 +170,7 @@ class PHYSICS_PT_collision(PhysicButtonsPanel, bpy.types.Panel): def poll(cls, context): ob = context.object rd = context.scene.render - return (ob and ob.type == 'MESH') and (not rd.use_game_engine) + return (ob and ob.type == 'MESH') and (not rd.use_game_engine) and (context.collision) def draw(self, context): layout = self.layout @@ -173,24 +179,7 @@ class PHYSICS_PT_collision(PhysicButtonsPanel, bpy.types.Panel): split = layout.split() - if md: - # remove modifier + settings - split.context_pointer_set("modifier", md) - split.operator("object.modifier_remove", text="Remove") - col = split.column() - - #row = split.row(align=True) - #row.prop(md, "show_render", text="") - #row.prop(md, "show_viewport", text="") - - coll = md.settings - - else: - # add modifier - split.operator("object.modifier_add", text="Add").type = 'COLLISION' - split.label() - - coll = None + coll = md.settings if coll: settings = context.object.collision diff --git a/release/scripts/ui/properties_physics_fluid.py b/release/scripts/ui/properties_physics_fluid.py index 177d1c54746..88eb926dfa0 100644 --- a/release/scripts/ui/properties_physics_fluid.py +++ b/release/scripts/ui/properties_physics_fluid.py @@ -29,7 +29,7 @@ class PhysicButtonsPanel(): def poll(cls, context): ob = context.object rd = context.scene.render - return (ob and ob.type == 'MESH') and (not rd.use_game_engine) + return (ob and ob.type == 'MESH') and (not rd.use_game_engine) and (context.fluid) class PHYSICS_PT_fluid(PhysicButtonsPanel, bpy.types.Panel): @@ -40,25 +40,9 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, bpy.types.Panel): md = context.fluid - split = layout.split() - if md: - # remove modifier + settings - split.context_pointer_set("modifier", md) - split.operator("object.modifier_remove", text="Remove") - - row = split.row(align=True) - row.prop(md, "show_render", text="") - row.prop(md, "show_viewport", text="") - fluid = md.settings - - else: - # add modifier - split.operator("object.modifier_add", text="Add").type = 'FLUID_SIMULATION' - split.label() - - if md: + row = layout.row() if fluid is None: row.label("built without fluids") diff --git a/release/scripts/ui/properties_physics_smoke.py b/release/scripts/ui/properties_physics_smoke.py index 71dd47fe524..0ca5f03f832 100644 --- a/release/scripts/ui/properties_physics_smoke.py +++ b/release/scripts/ui/properties_physics_smoke.py @@ -33,7 +33,7 @@ class PhysicButtonsPanel(): def poll(cls, context): ob = context.object rd = context.scene.render - return (ob and ob.type == 'MESH') and (not rd.use_game_engine) + return (ob and ob.type == 'MESH') and (not rd.use_game_engine) and (context.smoke) class PHYSICS_PT_smoke(PhysicButtonsPanel, bpy.types.Panel): @@ -45,22 +45,6 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel, bpy.types.Panel): md = context.smoke ob = context.object - split = layout.split() - - if md: - # remove modifier + settings - split.context_pointer_set("modifier", md) - split.operator("object.modifier_remove", text="Remove") - - row = split.row(align=True) - row.prop(md, "show_render", text="") - row.prop(md, "show_viewport", text="") - - else: - # add modifier - split.operator("object.modifier_add", text="Add").type = 'SMOKE' - split.label() - if md: layout.prop(md, "smoke_type", expand=True) diff --git a/release/scripts/ui/properties_physics_softbody.py b/release/scripts/ui/properties_physics_softbody.py index a07c6a8e43b..343b198fa84 100644 --- a/release/scripts/ui/properties_physics_softbody.py +++ b/release/scripts/ui/properties_physics_softbody.py @@ -39,7 +39,7 @@ class PhysicButtonsPanel(): rd = context.scene.render # return (ob and ob.type == 'MESH') and (not rd.use_game_engine) # i really hate touching things i do not understand completely .. but i think this should read (bjornmose) - return (ob and (ob.type == 'MESH' or ob.type == 'LATTICE'or ob.type == 'CURVE')) and (not rd.use_game_engine) + return (ob and (ob.type == 'MESH' or ob.type == 'LATTICE'or ob.type == 'CURVE')) and (not rd.use_game_engine) and (context.soft_body) class PHYSICS_PT_softbody(PhysicButtonsPanel, bpy.types.Panel): @@ -51,21 +51,6 @@ class PHYSICS_PT_softbody(PhysicButtonsPanel, bpy.types.Panel): md = context.soft_body ob = context.object - split = layout.split() - - if md: - # remove modifier + settings - split.context_pointer_set("modifier", md) - split.operator("object.modifier_remove", text="Remove") - - row = split.row(align=True) - row.prop(md, "show_render", text="") - row.prop(md, "show_viewport", text="") - else: - # add modifier - split.operator("object.modifier_add", text="Add").type = 'SOFT_BODY' - split.column() - if md: softbody = md.settings diff --git a/release/scripts/ui/properties_render.py b/release/scripts/ui/properties_render.py index 1b287ce4fdb..70fda787e9b 100644 --- a/release/scripts/ui/properties_render.py +++ b/release/scripts/ui/properties_render.py @@ -34,6 +34,13 @@ class RENDER_MT_ffmpeg_presets(bpy.types.Menu): draw = bpy.types.Menu.draw_preset +class RENDER_MT_framerate_presets(bpy.types.Menu): + bl_label = "Frame Rate Presets" + preset_subdir = "framerate" + preset_operator = "script.execute_preset" + draw = bpy.types.Menu.draw_preset + + class RenderButtonsPanel(): bl_space_type = 'PROPERTIES' bl_region_type = 'WINDOW' @@ -847,8 +854,29 @@ class RENDER_PT_dimensions(RenderButtonsPanel, bpy.types.Panel): sub.prop(scene, "frame_step", text="Step") sub.label(text="Frame Rate:") - sub.prop(rd, "fps") - sub.prop(rd, "fps_base", text="/") + if rd.fps_base == 1: + fps_rate = round(rd.fps / rd.fps_base) + else: + fps_rate = round(rd.fps / rd.fps_base, 2) + + # TODO: Change the following to iterate over existing presets + if (fps_rate in (23.98, 24, 25, 29.97, 30, 50, 59.94, 60)): + custom_framerate = False + else: + custom_framerate = True + + if custom_framerate == True: + fps_label_text = "Custom (" + str(fps_rate) + " fps)" + else: + fps_label_text = str(fps_rate) + " fps" + + sub.menu("RENDER_MT_framerate_presets", text=fps_label_text) + + if (bpy.types.RENDER_MT_framerate_presets.bl_label == "Custom") or (custom_framerate == True): + sub.prop(rd, "fps") + sub.prop(rd, "fps_base", text="/") + subrow = sub.row(align=True) + subrow.label(text="Time Remapping:") subrow = sub.row(align=True) subrow.prop(rd, "frame_map_old", text="Old") subrow.prop(rd, "frame_map_new", text="New") diff --git a/release/scripts/ui/properties_texture.py b/release/scripts/ui/properties_texture.py index 701fa1eb336..bd9f1a3b13f 100644 --- a/release/scripts/ui/properties_texture.py +++ b/release/scripts/ui/properties_texture.py @@ -994,11 +994,6 @@ class TEXTURE_PT_influence(TextureSlotPanel, bpy.types.Panel): # color is used on grayscale textures even when use_rgb_to_intensity is disabled. col.prop(tex, "color", text="") - if isinstance(idblock, bpy.types.Material): - sub = layout.row() - sub.prop(tex, "bump_method", text="Bump Method") - sub.active = tex.use_map_normal - col = split.column() col.prop(tex, "invert", text="Negative") col.prop(tex, "use_stencil") @@ -1006,6 +1001,21 @@ class TEXTURE_PT_influence(TextureSlotPanel, bpy.types.Panel): if isinstance(idblock, bpy.types.Material) or isinstance(idblock, bpy.types.World): col.prop(tex, "default_value", text="DVar", slider=True) + if isinstance(idblock, bpy.types.Material): + row = layout.row() + row.label(text="Bump Mapping:") + + row = layout.row() + # only show bump settings if activated but not for normalmap images + row.active = tex.use_map_normal and not( tex.texture.type == 'IMAGE' and tex.texture.use_normal_map ) + + col = row.column() + col.prop(tex, "bump_method", text="Method") + + col = row.column() + col.prop(tex, "bump_objectspace", text="Space") + col.active = tex.bump_method in ('BUMP_DEFAULT', 'BUMP_BEST_QUALITY') + class TEXTURE_PT_custom_props(TextureButtonsPanel, PropertyPanel, bpy.types.Panel): COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} diff --git a/release/scripts/ui/space_view3d_toolbar.py b/release/scripts/ui/space_view3d_toolbar.py index 8d9d1212eee..9261324366b 100644 --- a/release/scripts/ui/space_view3d_toolbar.py +++ b/release/scripts/ui/space_view3d_toolbar.py @@ -34,6 +34,13 @@ def draw_repeat_tools(context, layout): col.operator("screen.repeat_last") col.operator("screen.repeat_history", text="History...") +# Keyframing tools +def draw_keyframing_tools(context, layout): + col = layout.column(align=True) + col.label(text="Keyframes:") + row = col.row() + row.operator("anim.keyframe_insert_menu", text="Insert") + row.operator("anim.keyframe_delete_v3d", text="Remove") # Grease Pencil tools def draw_gpencil_tools(context, layout): @@ -81,11 +88,13 @@ class VIEW3D_PT_tools_objectmode(View3DPanel, bpy.types.Panel): col.label(text="Shading:") col.operator("object.shade_smooth", text="Smooth") col.operator("object.shade_flat", text="Flat") - + + draw_keyframing_tools(context, layout) + col = layout.column(align=True) - col.label(text="Keyframes:") - col.operator("anim.keyframe_insert_menu", text="Insert") - col.operator("anim.keyframe_delete_v3d", text="Remove") + col.label(text="Motion Paths:") + col.operator("object.paths_calculate", text="Calculate Paths") + col.operator("object.paths_clear", text="Clear Paths") draw_repeat_tools(context, layout) @@ -396,11 +405,12 @@ class VIEW3D_PT_tools_posemode(View3DPanel, bpy.types.Panel): col = layout.column(align=True) col.operator("poselib.pose_add", text="Add To Library") + draw_keyframing_tools(context, layout) + col = layout.column(align=True) - col.label(text="Keyframes:") - - col.operator("anim.keyframe_insert_menu", text="Insert") - col.operator("anim.keyframe_delete_v3d", text="Remove") + col.label(text="Motion Paths:") + col.operator("pose.paths_calculate", text="Calculate Paths") + col.operator("pose.paths_clear", text="Clear Paths") draw_repeat_tools(context, layout) diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 46e1405df84..1929f19f38f 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -35,4 +35,4 @@ if(WINDOWS) add_subdirectory(icons) endif() -add_subdirectory(test) +add_subdirectory(tests) diff --git a/source/Makefile b/source/Makefile deleted file mode 100644 index 683818d22d9..00000000000 --- a/source/Makefile +++ /dev/null @@ -1,633 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): GSR -# -# ***** END GPL LICENSE BLOCK ***** -# -# Top level makefile. Start looping through subdirs and link.... -# - -ifndef NANENV - export NANENV := $(shell env | grep NAN_) -endif - -include nan_definitions.mk - -DIRS = creator blender kernel - -ifneq ($(NAN_NO_KETSJI),true) - DIRS += gameengine -endif - -ifeq ($(OS),windows) - DIRS += icons -endif - -########## buildinfo kludge ################### -CPPFLAGS += -I../Physics/common -CPPFLAGS += -I../Physics/Dummy -ifdef NAN_BUILDINFO - BUILDINFO_O = $(DIR)/$(DEBUG_DIR)buildinfo.o - BUILDINFO_C = $(SRCHOME)/creator/buildinfo.c - BUILDINFO_INC = -I$(SRCHOME)/blender/blenkernel - BUILD_DATE := $(shell date "+%Y-%m-%d") - BUILD_TIME := $(shell date "+%H:%M:%S") - BUILD_REV := $(shell svnversion) -endif - -############# set pyplayerlib ################## - - -############# libraries ################## -# COMLIB COMmon LIBraries for all targets -# BPLIB Browser Plugin LIBraries -# SPLIB1 Standalone Player LIBraries (pre COMLIB) -# SPLIB Standalone Player LIBraries (post COMLIB) -# PULIB PUblisher LIBraries -# GRPLIB Gui and Render LIBraries for Publisher -# LLIBS dynamic system libraries -# SADD Static OpenGL libraries -# DADD Dynamic OpenGL libraries -# NSPLUGLIB PLUGin LIBraries for ns-style api -# PLUGAPPLIB libs that form the application to be plugged in -# Note: the order is important here - - -GRPLIB = $(OCGDIR)/creator/$(DEBUG_DIR)libcreator.a -GRPLIB += $(OCGDIR)/blender/windowmanager/$(DEBUG_DIR)libwindowmanager.a -GRPLIB += $(NAN_GHOST)/lib/$(DEBUG_DIR)libghost.a -GRPLIB += $(NAN_STRING)/lib/$(DEBUG_DIR)libstring.a -GRPLIB += $(OCGDIR)/blender/render/$(DEBUG_DIR)librender.a -GRPLIB += $(OCGDIR)/blender/render/$(DEBUG_DIR)librender_raytrace.a - -# nlin: the reason that some libraries appear more than once below is -# to handle circular dependencies in linking among libraries... some -# linkers (e.g. under Linux) need libs to be specified multiple times -# to properly resolve circular dependencies. ugly, but it works... -# the repeat entries could probably be trimmed down. -COMLIB = $(OCGDIR)/blender/blenkernel/$(DEBUG_DIR)libblenkernel.a -COMLIB += $(OCGDIR)/blender/blenloader/$(DEBUG_DIR)libblenloader.a -COMLIB += $(OCGDIR)/blender/blenpluginapi/$(DEBUG_DIR)libblenpluginapi.a -COMLIB += $(OCGDIR)/blender/nodes_shd/$(DEBUG_DIR)libnodes_shd.a -COMLIB += $(OCGDIR)/blender/nodes_cmp/$(DEBUG_DIR)libnodes_cmp.a -COMLIB += $(OCGDIR)/blender/nodes_tex/$(DEBUG_DIR)libnodes_tex.a -COMLIB += $(OCGDIR)/blender/nodes/$(DEBUG_DIR)libnodes.a -COMLIB += $(OCGDIR)/blender/imbuf/$(DEBUG_DIR)libimbuf.a -COMLIB += $(OCGDIR)/blender/ikplugin/$(DEBUG_DIR)libikplugin.a -COMLIB += $(OCGDIR)/blender/modifiers/$(DEBUG_DIR)libmodifiers.a -COMLIB += $(NAN_IKSOLVER)/lib/$(DEBUG_DIR)libiksolver.a -COMLIB += $(NAN_ITASC)/lib/$(DEBUG_DIR)libitasc.a -COMLIB += $(NAN_ITASC)/lib/$(DEBUG_DIR)libitasc_kdl.a -COMLIB += $(NAN_ITASC)/lib/$(DEBUG_DIR)libitasc_kdl_util.a -COMLIB += $(NAN_MOTO)/lib/$(DEBUG_DIR)libmoto.a -COMLIB += $(NAN_SUPERLU)/lib/$(DEBUG_DIR)libsuperlu.a -COMLIB += $(OCGDIR)/blender/avi/$(DEBUG_DIR)libavi.a -COMLIB += $(NAN_JPEG)/lib/libjpeg.a -COMLIB += $(OCGDIR)/blender/gpu/$(DEBUG_DIR)libgpu.a -COMLIB += $(NAN_GLEW)/lib/$(DEBUG_DIR)libglew.a -COMLIB += $(OCGDIR)/blender/blenfont/$(DEBUG_DIR)libblenfont.a -COMLIB += $(OCGDIR)/blender/python/$(DEBUG_DIR)libpython.a -COMLIB += $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaudaspace.a -COMLIB += $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaud_python.a -COMLIB += $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaudaspace.a -COMLIB += $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaud_src.a -COMLIB += $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaud_fx.a -COMLIB += $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaud_sdl.a -ifeq ($(WITH_FFMPEG),true) - COMLIB += $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaud_ffmpeg.a -endif -ifeq ($(WITH_OPENAL),true) - COMLIB += $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaud_openal.a -endif -ifeq ($(WITH_JACK),true) - COMLIB += $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaud_jack.a -endif -ifeq ($(WITH_SNDFILE),true) - COMLIB += $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaud_sndfile.a -endif -# Not in use currently, see also intern/audaspace/Makefile and r31375 -#ifeq ($(WITH_FFTW3),true) -# COMLIB += $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaud_fftw.a -#endif -COMLIB += $(NAN_SAMPLERATE)/lib/$(DEBUG_DIR)libsamplerate.a -COMLIB += $(NAN_LZO)/lib/$(DEBUG_DIR)libminilzo.a -COMLIB += $(NAN_LZMA)/lib/$(DEBUG_DIR)liblzma.a -COMLIB += $(NAN_BSP)/lib/$(DEBUG_DIR)libbsp.a -COMLIB += $(NAN_BOOLOP)/lib/$(DEBUG_DIR)libboolop.a -COMLIB += $(NAN_MOTO)/lib/$(DEBUG_DIR)libmoto.a -COMLIB += $(NAN_DECIMATION)/lib/$(DEBUG_DIR)libdecimation.a -COMLIB += $(NAN_GHOST)/lib/$(DEBUG_DIR)libghost.a - - -ifneq ($(NAN_NO_KETSJI),true) - COMLIB += $(OCGDIR)/gameengine/bloutines/$(DEBUG_DIR)libbloutines.a - COMLIB += $(OCGDIR)/gameengine/blconverter/$(DEBUG_DIR)libblconverter.a - COMLIB += $(OCGDIR)/gameengine/blphys/common/$(DEBUG_DIR)libcommon.a - COMLIB += $(OCGDIR)/gameengine/ketsji/$(DEBUG_DIR)libketsji.a - COMLIB += $(OCGDIR)/gameengine/blconverter/$(DEBUG_DIR)libblconverter.a - COMLIB += $(OCGDIR)/gameengine/blconverter/$(DEBUG_DIR)libblconverter.a - COMLIB += $(OCGDIR)/gameengine/blphys/dummy/$(DEBUG_DIR)libdummy.a - COMLIB += $(OCGDIR)/gameengine/blphys/common/$(DEBUG_DIR)libcommon.a - COMLIB += $(OCGDIR)/gameengine/blphys/dummy/$(DEBUG_DIR)libdummy.a - COMLIB += $(OCGDIR)/gameengine/ketsji/$(DEBUG_DIR)libketsji.a - COMLIB += $(OCGDIR)/gameengine/blphys/common/$(DEBUG_DIR)libcommon.a - COMLIB += $(OCGDIR)/gameengine/blphys/dummy/$(DEBUG_DIR)libdummy.a - COMLIB += $(OCGDIR)/gameengine/blphys/blbullet/$(DEBUG_DIR)libblbullet.a - COMLIB += $(OCGDIR)/gameengine/blphys/common/$(DEBUG_DIR)libcommon.a - COMLIB += $(OCGDIR)/gameengine/blphys/dummy/$(DEBUG_DIR)libdummy.a - COMLIB += $(OCGDIR)/gameengine/ketsji/$(DEBUG_DIR)libketsji.a - COMLIB += $(OCGDIR)/gameengine/logic/$(DEBUG_DIR)liblogic.a - COMLIB += $(OCGDIR)/gameengine/logic/Joystick/$(DEBUG_DIR)libJoystick.a - COMLIB += $(OCGDIR)/gameengine/rasterizer/$(DEBUG_DIR)librasterizer.a - COMLIB += $(OCGDIR)/gameengine/OpenGLrasterizer/$(DEBUG_DIR)libOpenGLrasterizer.a - COMLIB += $(OCGDIR)/gameengine/expression/$(DEBUG_DIR)libexpression.a - COMLIB += $(OCGDIR)/gameengine/scenegraph/$(DEBUG_DIR)libscenegraph.a - COMLIB += $(OCGDIR)/gameengine/videotex/$(DEBUG_DIR)libvideotex.a - COMLIB += $(NAN_MOTO)/lib/libmoto.a - COMLIB += $(NAN_SND_LIBS) - COMLIB += $(OCGDIR)/kernel/gen_system/$(DEBUG_DIR)libgen_system.a - COMLIB += $(OCGDIR)/kernel/gen_messaging/$(DEBUG_DIR)libgen_messaging.a - COMLIB += $(OCGDIR)/gameengine/ketsji/KXNetwork/$(DEBUG_DIR)libKXNetwork.a - COMLIB += $(OCGDIR)/gameengine/Network/$(DEBUG_DIR)libNetwork.a - COMLIB += $(OCGDIR)/gameengine/Network/LoopBackNetwork/$(DEBUG_DIR)libLoopBackNetwork.a - COMLIB += $(NAN_BULLET2)/lib/libbullet2.a -endif - -# Cloth requires bullet2, gameegine does not matter anymore -#COMLIB += $(NAN_BULLET2)/lib/libbullet2.a - -COMLIB += $(OCGDIR)/blender/makesdna/$(DEBUG_DIR)libdna.a -COMLIB += $(NAN_GUARDEDALLOC)/lib/libguardedalloc.a -COMLIB += $(NAN_MEMUTIL)/lib/libmemutil.a -COMLIB += $(NAN_PNG)/lib/libpng.a -COMLIB += $(OCGDIR)/blender/python/$(DEBUG_DIR)libpython.a # This was a PULIB up to circa r25248 -COMLIB += $(OCGDIR)/blender/gen_python/$(DEBUG_DIR)libgen_python.a -COMLIB += $(OCGDIR)/blender/blenlib/$(DEBUG_DIR)libblenlib.a - - -ifeq ($(WITH_QUICKTIME), true) - COMLIB += $(OCGDIR)/blender/blenderqt/$(DEBUG_DIR)libblenderqt.a -endif - -ifeq ($(WITH_OPENEXR), true) - COMLIB += $(OCGDIR)/blender/imbuf/openexr/$(DEBUG_DIR)libopenexr.a -endif - -ifeq ($(WITH_OPENJPEG), true) - ifndef BF_OPENJPEG_LIBS - COMLIB += $(OCGDIR)/extern/openjpeg/$(DEBUG_DIR)libopenjpeg.a - else - COMLIB += $(BF_OPENJPEG_LIBS) - endif -endif - -ifeq ($(WITH_CINEON), true) - COMLIB += $(OCGDIR)/blender/imbuf/cineon/$(DEBUG_DIR)libcineon.a -endif - -ifeq ($(WITH_DDS), true) - COMLIB += $(OCGDIR)/blender/imbuf/dds/$(DEBUG_DIR)libdds.a -endif - -ifeq ($(WITH_BINRELOC), true) - COMLIB += $(OCGDIR)/extern/binreloc/$(DEBUG_DIR)libbinreloc.a -endif - -ifeq ($(WITH_OPENCOLLADA), true) - COMLIB += $(OCGDIR)/blender/bf_collada/$(DEBUG_DIR)/libbf_collada.a - COMLIB += $(BF_PCRE_LIBS) -endif - -ifeq ($(OS), windows) - ifeq ($(FREE_WINDOWS), true) - COMLIB += $(NAN_FREETYPE)/lib/libfreetype.a - else - COMLIB += $(NAN_FREETYPE)/lib/freetype2ST.lib - endif -else - ifeq ($(OS), irix) - COMLIB += $(NAN_FREETYPE)/lib/libfreetype.a - else - COMLIB += $(NAN_FREETYPE)/lib/libfreetype.a - endif -endif - -ifeq ($(OS), irix) - COMLIB += $(NAN_SDL)/lib/libSDL.a -endif - -ifeq ($(OS), windows) - ifeq ($(FREE_WINDOWS), true) - COMLIB += $(NAN_SDL)/lib/libSDL.a - COMLIB += $(NAN_PTHREADS)/lib/libpthreadGC2.a - else - COMLIB += $(NAN_SDL)/lib/SDL.lib - endif -endif - -ifeq ($(WITH_OPENEXR), true) - COMLIB += $(NAN_OPENEXR_LIBS) -endif - -# note: space_api.a in begin of editors, screen.a in end -PULIB = $(NAN_MOTO)/lib/libmoto.a -PULIB += $(OCGDIR)/blender/readblenfile/$(DEBUG_DIR)libreadblenfile.a -PULIB += $(OCGDIR)/blender/ed_space/$(DEBUG_DIR)libed_space.a -PULIB += $(OCGDIR)/blender/ed_sound/$(DEBUG_DIR)libed_sound.a -PULIB += $(OCGDIR)/blender/ed_action/$(DEBUG_DIR)libed_action.a -PULIB += $(OCGDIR)/blender/ed_nla/$(DEBUG_DIR)libed_nla.a -PULIB += $(OCGDIR)/blender/ed_script/$(DEBUG_DIR)libed_script.a -PULIB += $(OCGDIR)/blender/ed_text/$(DEBUG_DIR)libed_text.a -PULIB += $(OCGDIR)/blender/ed_logic/$(DEBUG_DIR)libed_logic.a -PULIB += $(OCGDIR)/blender/ed_sequencer/$(DEBUG_DIR)libed_sequencer.a -PULIB += $(OCGDIR)/blender/ed_file/$(DEBUG_DIR)libed_file.a -PULIB += $(OCGDIR)/blender/ed_console/$(DEBUG_DIR)libed_console.a -PULIB += $(OCGDIR)/blender/ed_info/$(DEBUG_DIR)libed_info.a -PULIB += $(OCGDIR)/blender/ed_buttons/$(DEBUG_DIR)libed_buttons.a -PULIB += $(OCGDIR)/blender/ed_graph/$(DEBUG_DIR)libed_graph.a -PULIB += $(OCGDIR)/blender/ed_node/$(DEBUG_DIR)libed_node.a -PULIB += $(OCGDIR)/blender/ed_outliner/$(DEBUG_DIR)libed_outliner.a -PULIB += $(OCGDIR)/blender/ed_time/$(DEBUG_DIR)libed_time.a -PULIB += $(OCGDIR)/blender/ed_render/$(DEBUG_DIR)libed_render.a -PULIB += $(OCGDIR)/blender/ed_view3d/$(DEBUG_DIR)libed_view3d.a -PULIB += $(OCGDIR)/blender/ed_interface/$(DEBUG_DIR)libed_interface.a -PULIB += $(OCGDIR)/blender/ed_object/$(DEBUG_DIR)libed_object.a -PULIB += $(OCGDIR)/blender/ed_curve/$(DEBUG_DIR)libed_curve.a -PULIB += $(OCGDIR)/blender/ed_metaball/$(DEBUG_DIR)libed_metaball.a -PULIB += $(OCGDIR)/blender/ed_armature/$(DEBUG_DIR)libed_armature.a -PULIB += $(OCGDIR)/blender/ed_mesh/$(DEBUG_DIR)libed_mesh.a -PULIB += $(OCGDIR)/blender/ed_sculpt_paint/$(DEBUG_DIR)libed_sculpt_paint.a -PULIB += $(OCGDIR)/blender/ed_physics/$(DEBUG_DIR)libed_physics.a -PULIB += $(OCGDIR)/blender/ed_animation/$(DEBUG_DIR)libed_animation.a -PULIB += $(OCGDIR)/blender/ed_transform/$(DEBUG_DIR)libed_transform.a -PULIB += $(OCGDIR)/blender/ed_util/$(DEBUG_DIR)libed_util.a -PULIB += $(OCGDIR)/blender/ed_datafiles/$(DEBUG_DIR)libed_datafiles.a -PULIB += $(OCGDIR)/blender/ed_image/$(DEBUG_DIR)libed_image.a -PULIB += $(OCGDIR)/blender/ed_uvedit/$(DEBUG_DIR)libed_uvedit.a -PULIB += $(OCGDIR)/blender/ed_screen/$(DEBUG_DIR)libed_screen.a -PULIB += $(OCGDIR)/blender/ed_userpref/$(DEBUG_DIR)libed_userpref.a -PULIB += $(OCGDIR)/blender/ed_gpencil/$(DEBUG_DIR)libed_gpencil.a -PULIB += $(OCGDIR)/blender/ed_opsound/$(DEBUG_DIR)libed_opsound.a -PULIB += $(OCGDIR)/blender/windowmanager/$(DEBUG_DIR)libwindowmanager.a -PULIB += $(OCGDIR)/blender/makesrna/$(DEBUG_DIR)librna.a -# note, no idea but it suddenly doesn't compile :( -PULIB += $(OCGDIR)/blender/blenlib/$(DEBUG_DIR)libblenlib.a -PULIB += $(NAN_OPENNL)/lib/$(DEBUG_DIR)libopennl.a -PULIB += $(NAN_ELBEEM)/lib/$(DEBUG_DIR)libelbeem.a -PULIB += $(NAN_SMOKE)/lib/$(DEBUG_DIR)libsmoke.a - -ifeq ($(NAN_NO_KETSJI),true) - PULIB += $(NAN_MOTO)/lib/$(DEBUG_DIR)libmoto.a - PULIB += $(OCGDIR)/kernel/gen_system/$(DEBUG_DIR)libgen_system.a - PULIB += $(OCGDIR)/kernel/gen_messaging/$(DEBUG_DIR)libgen_messaging.a - COMLIB += $(NAN_SND_LIBS) -endif - -SPLIB1 = $(OCGDIR)/gameengine/GamePlayer/ghost/$(DEBUG_DIR)libghost.a -SPLIB1 += $(OCGDIR)/gameengine/GamePlayer/common/$(DEBUG_DIR)libcommon.a -SPLIB1 += $(OCGDIR)/gameengine/blconverter/$(DEBUG_DIR)libblconverter.a -SPLIB1 += $(NAN_STRING)/lib/$(DEBUG_DIR)libstring.a -SPLIB1 += $(NAN_GHOST)/lib/$(DEBUG_DIR)libghost.a - -SPLIB = $(OCGDIR)/blender/readblenfile/$(DEBUG_DIR)libreadblenfile.a -# this is used for the plugin. It uses some things from libz.a, -# but somehow it consistently fails to resolve these symbols... or -# can I just not check them? nm claims they aren't... -SPLIB += $(OCGDIR)/blender/blenkernel/blenkernel_blc/$(DEBUG_DIR)libblenkernel_blc.a -SPLIB += $(OCGDIR)/blender/makesrna/$(DEBUG_DIR)librna.a -SPLIB += $(OCGDIR)/blender/blenlib/$(DEBUG_DIR)libblenlib.a - -# These three need to be explicitly mentioned on the cl, because -# if they are offered as a lib, they are optimized away. (nzc) -NSPLUGLIB = $(OCGDIR)/gameengine/GamePlayer/netscape/src/$(DEBUG_DIR)UnixShell.o -NSPLUGLIB += $(OCGDIR)/gameengine/GamePlayer/netscape/src/$(DEBUG_DIR)stubs.o -NSPLUGLIB += $(OCGDIR)/gameengine/GamePlayer/netscape/src/$(DEBUG_DIR)winstubs.o -NSPLUGLIB += $(OCGDIR)/gameengine/GamePlayer/netscape/src/$(DEBUG_DIR)Blender3DPlugin_native_implementation.o - -# Here you can configure what sort of test to make for the plugin. -# PLUGTESTLIB = $(OCGDIR)/gameengine/GamePlayer/netscape/test/$(DEBUG_DIR)libns_api_test_stub.a -# PLUGTESTLIB = $(OCGDIR)/gameengine/GamePlayer/netscape/test/$(DEBUG_DIR)libns_api_test_colorcycle.a -# PLUGTESTLIB = $(OCGDIR)/gameengine/GamePlayer/netscape/test/$(DEBUG_DIR)libns_api_test_gears.a -PLUGTESTLIB = $(OCGDIR)/gameengine/GamePlayer/netscape/test/$(DEBUG_DIR)libns_api_test_threaded_gears.a - -# XPCOM is done only for Linux for now -ifeq ($(OS),$(findstring $(OS), "linux")) - ifeq ($(CPU),i386) - NSPLUGLIB += $(OCGDIR)/gameengine/GamePlayer/netscape/src/$(DEBUG_DIR)XPH_xpcom_hooks.o - endif -endif - -PLUGAPPLIB = $(OCGDIR)/gameengine/GamePlayer/netscape/src/$(DEBUG_DIR)libplugin_ketsji_hooks.a - -ifeq ($(OS),$(findstring $(OS), "freebsd linux irix solaris")) - NSPLUGLIB += $(OCGDIR)/gameengine/GamePlayer/netscape/src/$(DEBUG_DIR)PLG_X11_windowing.o - PLUGAPPLIB += $(OCGDIR)/gameengine/GamePlayer/common/unix/$(DEBUG_DIR)libunix.a -endif -ifeq ($(OS),$(findstring $(OS), "windows")) - NSPLUGLIB += $(OCGDIR)/gameengine/GamePlayer/netscape/src/$(DEBUG_DIR)PLG_MSWindows_windowing.o - NSPLUGLIB += $(OCGDIR)/gameengine/GamePlayer/netscape/src/$(DEBUG_DIR)npB3DPlg.res - PLUGAPPLIB += $(OCGDIR)/gameengine/GamePlayer/common/windows/$(DEBUG_DIR)libwindows.a -endif - -PLUGAPPLIB += $(OCGDIR)/gameengine/GamePlayer/common/$(DEBUG_DIR)libcommon.a - -ifeq ($(OS),$(findstring $(OS), "linux")) - ifeq ($(CPU),i386) - PLUGAPPLIB_XPLINK = $(OCGDIR)/gameengine/GamePlayer/netscape/src/$(DEBUG_DIR)_Blender3DPlugin_implementation_.o - endif -endif - -# A bit silly... but needed to resolve symbols. -PLUGREMLIB = $(NAN_STRING)/lib/$(DEBUG_DIR)libstring.a - -######################## OS dependencies (alphabetic!) ################ - -include nan_link.mk - -ifeq ($(NAN_JUST_BLENDERDYNAMIC),true) - BINTARGETS = blenderdynamic -endif - -ifeq ($(WITH_BF_DYNAMICOPENGL), true) - BINTARGETS += blenderdynamic -endif - -ifeq ($(WITH_BF_STATICOPENGL), true) - BINTARGETS += blenderstatic -endif - -ifeq ($(WITH_BF_BLENDERPLAYER), true) - export WITH_BF_GAMEENGINE=true - BINTARGETS += blenderplayer -endif - -ifeq ($(WITH_BF_WEBPLUGIN), true) - BINTARGETS += plugin - ifeq ($(OS),linux) - ifeq ($(CPU),i386) - BINTARGETS += xplink - endif - endif -endif - -ifeq ($(WITH_OPENAL),true) - ifeq ($(OS),$(findstring $(OS), "freebsd linux windows")) - ifeq ($(CPU),$(findstring $(CPU), "i386 powerpc x86_64 parisc64")) - NAN_SND_LIBS += $(NAN_OPENAL)/lib/libopenal.a - else - ifeq ($(OS),windows) - NAN_SND_LIBS += $(NAN_OPENAL)/lib/openal_static.lib - endif - endif - else - ifeq ($(OS),darwin) - NAN_SND_LIBS += $(NAN_OPENAL)/lib/libopenal.a - else - ifeq ($(OS), solaris) - NAN_SND_LIBS += $(NAN_OPENAL)/lib/libopenal.a - endif - endif - endif -endif - -ifeq ($(WITH_JACK),true) - ifeq ($(OS),$(findstring $(OS), "linux")) - NAN_SND_LIBS += $(NAN_JACKLIBS) - endif -endif - -ifeq ($(WITH_SNDFILE),true) - ifeq ($(OS),$(findstring $(OS), "linux darwin")) - NAN_SND_LIBS += $(NAN_SNDFILELIBS) - endif -endif - -ifeq ($(OS),windows) - - # Might need to change this to $(NAN_MOZILLA_LIB)/nspr4.lib - NSPLUGLIB += $(NAN_NSPR)/lib/nspr4.lib - - BINTARGETS = blenderdynamic - ifeq ($(FREE_WINDOWS),true) - ifneq ($(NAN_NO_KETSJI),true) - BINTARGETS += blenderplayer - endif - else - BINTARGETS += blenderplayer - BINTARGETS += blenderdynplayer - BINTARGETS += plugin - endif - - PULIB += $(OCGDIR)/blender/icons/$(DEBUG_DIR)winblender.res - PULIB += $(NAN_ZLIB)/lib/libz.a - SPLIB += $(OCGDIR)/blender/icons/$(DEBUG_DIR)winblender.res - SPLIB += $(NAN_ZLIB)/lib/libz.a -endif - - -# prepare for NAN_BUILDINFO compile at the *sigh* link rules below - -ifdef NAN_BUILDINFO - CSRCS = - ALLTARGETS = - include nan_compile.mk -endif - -################## target rules ######################## - -all debug :: - @echo "****> Make $@ by $(ID)@$(HOST) at $(MAKE_START) on $(CONFIG_GUESS)" -ifdef NANENV - @for n in $(NANENV); do \ - echo " $$n"; \ - done -endif - -DIR = $(OCGDIR) -SOURCEDIR = source - -include nan_subdirs.mk - -################## target rules ######################## - -all:: link - -debug debuglink:: - @$(MAKE) link DEBUG_DIR="debug/" NANENV=$(NANENV) - -clean:: linkclean debuglinkclean - -link: $(BINTARGETS) - @echo "****> Build SVN rev $(BUILD_REV), $(MAKE_START) - `date '+%H:%M:%S %d-%b-%Y'`" -ifdef NANENV - @for n in $(NANENV); do \ - echo " $$n"; \ - done -endif - -linkclean: - @$(RM) -r $(DIR)/blenderstatic* \ - $(DIR)/blenderplayer* \ - $(DIR)/bin/* - -debuglinkclean: - @$(RM) -r $(DIR)/debug/blenderstatic* \ - $(DIR)/debug/blenderplayer* \ - $(DIR)/debug/bin/* - -# Shortcut for Tinderbox release builds. Mortals don't use this. -release: - @$(MAKE) -C ../release/ all || exit 1; - -############### Linker rules ############### - -blenderstatic: $(DIR)/$(DEBUG_DIR)bin/blenderstatic -blenderdynamic: $(DIR)/$(DEBUG_DIR)bin/blender$(EXT) -blenderplayer: $(DIR)/$(DEBUG_DIR)bin/blenderplayer$(EXT) -blenderdynplayer: $(DIR)/$(DEBUG_DIR)bin/blenderdynplayer$(EXT) - -# XPCOM connector only for linux so far... -ifeq ($(OS),linux) - xplink: $(DIR)/$(DEBUG_DIR)bin/Blender3DPlugin$(SOEXT) -endif - -# Moz/NS plugin: -ifeq ($(OS),$(findstring $(OS), "freebsd linux irix solaris")) - plugin: $(DIR)/$(DEBUG_DIR)bin/npBlender3DPlugin$(SOEXT) - ptest: $(DIR)/$(DEBUG_DIR)bin/npTestPlugin$(SOEXT) -endif -# Windows needs a 8.3 name... Why? Dunno... -ifeq ($(OS),windows) - ifneq ($(FREE_WINDOWS),true) - plugin: $(DIR)/$(DEBUG_DIR)npB3DPlg$(SOEXT) - endif -endif - -$(DIR)/$(DEBUG_DIR)bin/blenderstatic: $(OBJS) $(GRPLIB) $(PULIB) $(COMLIB) - @echo "****> Link $@" -ifdef NAN_BUILDINFO - $(CCC) $(CCFLAGS) $(REL_CCFLAGS) -DBUILD_DATE='"$(BUILD_DATE)"' -DBUILD_TIME='"$(BUILD_TIME)"' -DBUILD_REV='"$(BUILD_REV)"' -DBUILD_PLATFORM='"$(CONFIG_GUESS)"' -DBUILD_TYPE='"static"' $(BUILDINFO_INC) $(BUILDINFO_C) -c -o $(BUILDINFO_O) -DNAN_BUILDINFO -endif - mkdir -p $(DIR)/$(DEBUG_DIR)bin - $(CCC) $(CCFLAGS) $(LDFLAGS) -o $(DIR)/$(DEBUG_DIR)bin/blenderstatic $(BUILDINFO_O) $(OBJS) $(GRPLIB) $(PULIB) $(COMLIB) $(LLIBS) $(SADD) $(LOPTS) -ifdef NAN_BUILDINFO - /bin/rm $(BUILDINFO_O) -endif -ifeq ($(OS), darwin) - @$(MAKE) -C darwin/ APPLICATION=blenderstatic -endif - -$(DIR)/$(DEBUG_DIR)bin/blender$(EXT): $(OBJS) $(GRPLIB) $(PULIB) $(COMLIB) - @echo "****> Link $@" -ifdef NAN_BUILDINFO - $(CCC) $(CCFLAGS) $(REL_CCFLAGS) -DBUILD_DATE='"$(BUILD_DATE)"' -DBUILD_TIME='"$(BUILD_TIME)"' -DBUILD_REV='"$(BUILD_REV)"' -DBUILD_PLATFORM='"$(CONFIG_GUESS)"' -DBUILD_TYPE='"dynamic"' $(BUILDINFO_INC) $(BUILDINFO_C) -c -o $(BUILDINFO_O) -DNAN_BUILDINFO -endif - mkdir -p $(DIR)/$(DEBUG_DIR)bin - $(CCC) $(CCFLAGS) $(LDFLAGS) -o $(DIR)/$(DEBUG_DIR)bin/blender$(EXT) $(BUILDINFO_O) $(OBJS) $(GRPLIB) $(PULIB) $(COMLIB) $(LLIBS) $(DADD) $(LOPTS) -ifdef NAN_BUILDINFO - /bin/rm $(BUILDINFO_O) -endif -ifeq ($(OS), darwin) - @$(MAKE) -C darwin/ APPLICATION=blender -endif - -$(DIR)/$(DEBUG_DIR)bin/blenderplayer$(EXT): $(OBJS) $(SPLIB1) $(COMLIB) $(SPLIB) - @echo "****> Link $@" -ifdef NAN_BUILDINFO - $(CCC) $(CCFLAGS) $(REL_CCFLAGS) -DBUILD_DATE='"$(BUILD_DATE)"' -DBUILD_TIME='"$(BUILD_TIME)"' -DBUILD_REV='"$(BUILD_REV)"' -DBUILD_PLATFORM='"$(CONFIG_GUESS)"' -DBUILD_TYPE='"dynamic"' $(BUILDINFO_INC) $(BUILDINFO_C) -c -o $(BUILDINFO_O) -DNAN_BUILDINFO -endif - mkdir -p $(DIR)/$(DEBUG_DIR)bin - $(CCC) $(CCFLAGS) $(LDFLAGS) -o $(DIR)/$(DEBUG_DIR)bin/blenderplayer$(EXT) $(BUILDINFO_O) $(OBJS) $(SPLIB1) $(COMLIB) $(SPLIB) $(LLIBS) $(DADD) $(LOPTS) -ifdef NAN_BUILDINFO - /bin/rm $(BUILDINFO_O) -endif -ifeq ($(OS), darwin) - @$(MAKE) -C darwin/ APPLICATION=blenderplayer -endif - -$(DIR)/$(DEBUG_DIR)bin/blenderdynplayer$(EXT): $(OBJS) $(COMLIB) $(SPLIB) - @echo "****> Link $@" -ifdef NAN_BUILDINFO - $(CCC) $(CCFLAGS) $(REL_CCFLAGS) -DBUILD_DATE='"$(BUILD_DATE)"' -DBUILD_TIME='"$(BUILD_TIME)"' -DBUILD_REV='"$(BUILD_REV)"' -DBUILD_PLATFORM='"$(CONFIG_GUESS)"' -DBUILD_TYPE='"dynamic"' $(BUILDINFO_INC) $(BUILDINFO_C) -c -o $(BUILDINFO_O) -DNAN_BUILDINFO -endif - mkdir -p $(DIR)/$(DEBUG_DIR)bin - $(CCC) $(CCFLAGS) $(LDFLAGS) -o $(DIR)/$(DEBUG_DIR)bin/blenderdynplayer$(EXT) $(BUILDINFO_O) $(OBJS) $(SPLIB1) $(COMLIB) $(SPLIB) $(LLIBS) $(DADD) $(LOPTS) -ifdef NAN_BUILDINFO - /bin/rm $(BUILDINFO_O) -endif -ifeq ($(OS), darwin) - @$(MAKE) -C darwin/ APPLICATION=blenderplayer -endif - -$(DIR)/$(DEBUG_DIR)bin/Blender3DPlugin$(SOEXT): $(PLUGAPPLIB_XPLINK) - @echo "****> Link $@" -ifdef NAN_BUILDINFO - $(CCC) $(CCFLAGS) $(REL_CCFLAGS) -DBUILD_DATE='"$(BUILD_DATE)"' -DBUILD_TIME='"$(BUILD_TIME)"' -DBUILD_REV='"$(BUILD_REV)"' -DBUILD_PLATFORM='"$(CONFIG_GUESS)"' -DBUILD_TYPE='"dynamic"' $(BUILDINFO_INC) $(BUILDINFO_C) -c -o $(BUILDINFO_O) -DNAN_BUILDINFO -endif - mkdir -p $(DIR)/$(DEBUG_DIR)bin - $(CCC) $(CCFLAGS) $(DYNLDFLAGS) -o $@ $(PLUGAPPLIB_XPLINK) $(LOPTS) -ifdef NAN_BUILDINFO - /bin/rm $(BUILDINFO_O) -endif - -# Windows build needs a def file? Why? For exposing functions from the -# dll to the outside world. However, this is alsi done internally.. -DEFFILE = ./gameengine/GamePlayer/netscape/src/npB3DPlg.def - -# Windows needs a specific name format for dll.s so we give it one. -$(DIR)/$(DEBUG_DIR)npB3DPlg$(SOEXT): $(NSPLUGLIB) $(PLUGAPPLIB) $(COMLIB) $(SPLIB) - @echo "****> Link $@" -ifdef NAN_BUILDINFO - $(CCC) $(CCFLAGS) $(REL_CCFLAGS) -DBUILD_DATE='"$(BUILD_DATE)"' -DBUILD_TIME='"$(BUILD_TIME)"' -DBUILD_REV='"$(BUILD_REV)"' -DBUILD_PLATFORM='"$(CONFIG_GUESS)"' -DBUILD_TYPE='"dynamic"' $(BUILDINFO_INC) $(BUILDINFO_C) -c -o $(BUILDINFO_O) -DNAN_BUILDINFO -endif -# $(CCC) $(DYNLDFLAGS) -o $@ $(NSPLUGLIB) $(PLUGAPPLIB) $(COMLIB) $(SPLIB) $(PLUGREMLIB) $(LLIBS) $(DADD) $(LOPTS) - $(CCC) $(DYNLDFLAGS) -o $@ $(NSPLUGLIB) $(PLUGAPPLIB) $(COMLIB) $(SPLIB) $(PLUGREMLIB) $(LLIBS) $(DADD) $(LOPTS) /def:$(DEFFILE) -ifdef NAN_BUILDINFO - /bin/rm $(BUILDINFO_O) -endif - -$(DIR)/$(DEBUG_DIR)bin/npBlender3DPlugin$(SOEXT): $(NSPLUGLIB) $(PLUGAPPLIB) $(COMLIB) $(SPLIB) - @echo "****> Link $@" -ifdef NAN_BUILDINFO - $(CCC) $(CCFLAGS) $(REL_CCFLAGS) -DBUILD_DATE='"$(BUILD_DATE)"' -DBUILD_TIME='"$(BUILD_TIME)"' -DBUILD_REV='"$(BUILD_REV)"' -DBUILD_PLATFORM='"$(CONFIG_GUESS)"' -DBUILD_TYPE='"dynamic"' $(BUILDINFO_INC) $(BUILDINFO_C) -c -o $(BUILDINFO_O) -DNAN_BUILDINFO -endif - mkdir -p $(DIR)/$(DEBUG_DIR)bin - $(CCC) $(DYNLDFLAGS) -o $@ $(NSPLUGLIB) $(PLUGAPPLIB) $(COMLIB) $(SPLIB) $(PLUGREMLIB) $(LLIBS) $(DADD) $(LOPTS) -ifdef NAN_BUILDINFO - /bin/rm $(BUILDINFO_O) -endif - -$(DIR)/$(DEBUG_DIR)bin/npTestPlugin$(SOEXT): $(NSPLUGLIB) - @echo "****> Link $@" -ifdef NAN_BUILDINFO - $(CCC) $(CCFLAGS) $(REL_CCFLAGS) -DBUILD_DATE='"$(BUILD_DATE)"' -DBUILD_TIME='"$(BUILD_TIME)"' -DBUILD_REV='"$(BUILD_REV)"' -DBUILD_PLATFORM='"$(CONFIG_GUESS)"' -DBUILD_TYPE='"dynamic"' $(BUILDINFO_INC) $(BUILDINFO_C) -c -o $(BUILDINFO_O) -DNAN_BUILDINFO -endif - mkdir -p $(DIR)/$(DEBUG_DIR)bin - $(CCC) $(DYNLDFLAGS) -o $@ $(NSPLUGLIB) $(PLUGTESTLIB) $(LLIBS) $(DADD) $(LOPTS) -ifdef NAN_BUILDINFO - /bin/rm $(BUILDINFO_O) -endif diff --git a/source/blender/Makefile b/source/blender/Makefile deleted file mode 100644 index 8052c175f8e..00000000000 --- a/source/blender/Makefile +++ /dev/null @@ -1,56 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -include nan_definitions.mk - -DIRS = windowmanager editors blenloader readblenfile -DIRS += avi imbuf render blenlib blenkernel blenpluginapi -DIRS += makesdna makesrna -DIRS += python nodes modifiers gpu -DIRS += blenfont ikplugin - -ifeq ($(WITH_QUICKTIME), true) - DIRS += quicktime -endif - -ifeq ($(WITH_OPENJPEG), true) - CFLAGS += -DWITH_OPENJPEG -I../../../../extern/libopenjpeg -endif - -ifeq ($(WITH_OPENCOLLADA), true) - DIRS += collada -endif - - -DIR = $(OCGDIR)/blender -SOURCEDIR = source/blender -TESTDIRS = deflate streamglue - -include nan_subdirs.mk diff --git a/source/blender/avi/CMakeLists.txt b/source/blender/avi/CMakeLists.txt index 5153cc5b68d..77a43e5560e 100644 --- a/source/blender/avi/CMakeLists.txt +++ b/source/blender/avi/CMakeLists.txt @@ -27,7 +27,7 @@ set(INC . ../../../intern/guardedalloc - ${JPEG_INC} + ${JPEG_INCLUDE_DIR} ) set(SRC diff --git a/source/blender/avi/Makefile b/source/blender/avi/Makefile deleted file mode 100644 index 96a6573cc67..00000000000 --- a/source/blender/avi/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Bounces make to subdirectories. - -SOURCEDIR = source/blender/avi -DIRS = intern - -include nan_subdirs.mk diff --git a/source/blender/avi/intern/Makefile b/source/blender/avi/intern/Makefile deleted file mode 100644 index 8d1af9adb28..00000000000 --- a/source/blender/avi/intern/Makefile +++ /dev/null @@ -1,51 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = avi -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL1_C_WARNINGS) - -ifeq ($(CPU),$(findstring $(CPU), "powerpc mips sparc")) - CPPFLAGS += -DWORDS_BIGENDIAN -else - # alpha i386 - CPPFLAGS += -DWORDS_LITTLEENDIAN -endif - -# the JPEG library -CPPFLAGS += -I$(NAN_JPEG)/include -# path to the guarded memory allocator -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -# our own include -CPPFLAGS += -I.. - diff --git a/source/blender/blenfont/Makefile b/source/blender/blenfont/Makefile deleted file mode 100644 index df1bbb72110..00000000000 --- a/source/blender/blenfont/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2009 Blender Foundation -# All rights reserved. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** - -SOURCEDIR = source/blender/blenfont -DIRS = intern - -include nan_subdirs.mk - -ifeq ($(INTERNATIONAL), true) - CPPFLAGS += -DINTERNATIONAL -endif diff --git a/source/blender/blenfont/intern/Makefile b/source/blender/blenfont/intern/Makefile deleted file mode 100644 index d3a6e656028..00000000000 --- a/source/blender/blenfont/intern/Makefile +++ /dev/null @@ -1,74 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2008 Blender Foundation. -# All rights reserved. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = blenfont -DIR = $(OCGDIR)/blender/blenfont - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) -#CFLAGS += -O2 -Wall -Wno-char-subscripts - -# OpenGL and Freetype2 -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += $(OGL_CPPFLAGS) -CPPFLAGS += -I$(NAN_FREETYPE)/include - -ifeq ($(OS), windows) - CPPFLAGS += -I$(NAN_ICONV)/include - ifeq ($(FREE_WINDOWS), true) - CPPFLAGS += -I$(NAN_FREETYPE)/include/freetype2 - CPPFLAGS += -DUSE_GETTEXT_DLL - endif -else - CPPFLAGS += -I$(NAN_FREETYPE)/include/freetype2 -endif - -ifeq ($(OS),linux) - ifeq ($(CPU),alpha) - CPPFLAGS += -I$(NAN_MESA)/include - endif - ifeq ($(CPU),i386) - CPPFLAGS += -I$(NAN_MESA)/include - endif - ifeq ($(CPU),powerpc) - CPPFLAGS += -I/usr/src/MesaCVS/include - endif -endif - -# Modules -CPPFLAGS += -I../../editors/include -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../blenkernel - -# Memory allocator -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - -# Our own headers -CPPFLAGS += -I.. diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h index 5b33d9e1c53..5ce6c522e90 100644 --- a/source/blender/blenkernel/BKE_DerivedMesh.h +++ b/source/blender/blenkernel/BKE_DerivedMesh.h @@ -492,6 +492,8 @@ DerivedMesh *mesh_create_derived_no_deform_render(struct Scene *scene, struct Ob /* for gameengine */ DerivedMesh *mesh_create_derived_no_virtual(struct Scene *scene, struct Object *ob, float (*vertCos)[3], CustomDataMask dataMask); +DerivedMesh *mesh_create_derived_physics(struct Scene *scene, struct Object *ob, float (*vertCos)[3], + CustomDataMask dataMask); DerivedMesh *editmesh_get_derived_base(struct Object *, struct EditMesh *em); DerivedMesh *editmesh_get_derived_cage(struct Scene *scene, struct Object *, diff --git a/source/blender/blenkernel/BKE_multires.h b/source/blender/blenkernel/BKE_multires.h index f924905bfde..5cafd24c1fd 100644 --- a/source/blender/blenkernel/BKE_multires.h +++ b/source/blender/blenkernel/BKE_multires.h @@ -80,7 +80,7 @@ int multires_mdisp_corners(struct MDisps *s); void multires_mdisp_smooth_bounds(struct MDisps *disps); /* update multires data after topology changing */ -void multires_topology_changed(struct Object *ob); +void multires_topology_changed(struct Scene *scene, struct Object *ob); /**** interpolation stuff ****/ void old_mdisps_bilinear(float out[3], float (*disps)[3], int st, float u, float v); diff --git a/source/blender/blenkernel/CMakeLists.txt b/source/blender/blenkernel/CMakeLists.txt index 44427c43fc4..9057820fb65 100644 --- a/source/blender/blenkernel/CMakeLists.txt +++ b/source/blender/blenkernel/CMakeLists.txt @@ -50,7 +50,7 @@ set(INC ../../../intern/opennl/extern ../../../intern/smoke/extern ../../../source/blender/windowmanager # XXX - BAD LEVEL CALL WM_api.h - ${ZLIB_INC} + ${ZLIB_INCLUDE_DIRS} ) set(SRC @@ -275,7 +275,7 @@ if(WITH_LCMS) endif() if(WITH_PYTHON) - list(APPEND INC ../python ${PYTHON_INC}) + list(APPEND INC ../python ${PYTHON_INCLUDE_DIRS}) add_definitions(-DWITH_PYTHON) endif() diff --git a/source/blender/blenkernel/Makefile b/source/blender/blenkernel/Makefile deleted file mode 100644 index dc5f0a91da6..00000000000 --- a/source/blender/blenkernel/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Bounces make to subdirectories. - -SOURCEDIR = source/blender/blenkernel -DIRS = intern - -include nan_subdirs.mk diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index c733a560620..a2ef625c6e6 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -2358,6 +2358,16 @@ DerivedMesh *mesh_create_derived_no_virtual(Scene *scene, Object *ob, float (*ve return final; } +DerivedMesh *mesh_create_derived_physics(Scene *scene, Object *ob, float (*vertCos)[3], + CustomDataMask dataMask) +{ + DerivedMesh *final; + + mesh_calc_modifiers(scene, ob, vertCos, NULL, &final, 0, -1, 1, dataMask, -1, 0); + + return final; +} + DerivedMesh *mesh_create_derived_no_deform_render(Scene *scene, Object *ob, float (*vertCos)[3], CustomDataMask dataMask) diff --git a/source/blender/blenkernel/intern/Makefile b/source/blender/blenkernel/intern/Makefile deleted file mode 100644 index 53a9999758c..00000000000 --- a/source/blender/blenkernel/intern/Makefile +++ /dev/null @@ -1,156 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = blenkernel -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -# OpenGL and Python -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) -CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION) - -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I../../../../intern/memutil -CPPFLAGS += -I$(NAN_AUDASPACE)/include -# Reference to the types in makesdna and imbuf -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../ikplugin -# This mod uses the BLI and BLO module -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../python -CPPFLAGS += -I../../blenfont -# This is bad level, remove eventually -CPPFLAGS += -I../../windowmanager -# also avi is used -CPPFLAGS += -I../../avi -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - -# we still refer to /include a bit... -CPPFLAGS += -I../../editors/include - -# to include the render stuff: -CPPFLAGS += -I../../render/extern/include - -# for sound -#CPPFLAGS += -I../../../kernel/gen_system -CPPFLAGS += $(NAN_SDLCFLAGS) - -CPPFLAGS += -I$(NAN_IKSOLVER)/include -CPPFLAGS += -I$(NAN_DECIMATION)/include -CPPFLAGS += -I$(NAN_ELBEEM)/include -CPPFLAGS += -I$(NAN_OPENNL)/include -CPPFLAGS += -I$(NAN_BSP)/include -CPPFLAGS += -I$(NAN_SMOKE)/include - -# path to zlib -CPPFLAGS += -I$(NAN_ZLIB)/include - -#path to nodes -CPPFLAGS += -I../../nodes - -#path to gpu -CPPFLAGS += -I../../gpu - -#modifiers got moved -CPPFLAGS += -I../../modifiers - -# path to our own external headerfiles -CPPFLAGS += -I.. - -CPPFLAGS += -I$(NAN_FREETYPE)/include -CPPFLAGS += -I$(NAN_FREETYPE)/include/freetype2 - -# path to bullet2, for cloth -ifeq ($(NAN_USE_BULLET), true) - CPPFLAGS += -I$(NAN_BULLET2)/include -endif - -# lzo and lzma, for pointcache -ifeq ($(WITH_LZO),true) - CPPFLAGS += -I$(NAN_LZO)/minilzo - CPPFLAGS += -DWITH_LZO -endif - -ifeq ($(WITH_LZO),true) - CPPFLAGS += -I$(NAN_LZMA) - CPPFLAGS += -DWITH_LZMA -endif - -ifeq ($(WITH_FFMPEG),true) - CPPFLAGS += -DWITH_FFMPEG - CPPFLAGS += $(NAN_FFMPEGCFLAGS) -endif - -ifeq ($(WITH_OPENEXR), true) - CPPFLAGS += -DWITH_OPENEXR -endif - -ifeq ($(WITH_DDS), true) - CPPFLAGS += -DWITH_DDS -endif - -ifeq ($(WITH_OPENJPEG), true) - CPPFLAGS += -DWITH_OPENJPEG -endif - -ifeq ($(WITH_QUICKTIME), true) - CPPFLAGS += -I../../quicktime - CPPFLAGS += -DWITH_QUICKTIME -endif - -ifeq ($(WITH_TIFF), true) - CPPFLAGS += -DWITH_TIFF -endif - -ifeq ($(WITH_CINEON), true) - CPPFLAGS += -DWITH_CINEON -endif - -ifeq ($(WITH_HDR), true) - CPPFLAGS += -DWITH_HDR -endif - -ifeq ($(OS), darwin) - ifeq ($(WITH_BF_OPENMP), true) - CPPFLAGS += -DPARALLEL=1 - endif -endif - -ifeq ($(WITH_LCMS), true) - CPPFLAGS += -DWITH_LCMS - CPPFLAGS += -I$(BF_LCMS_INC) -endif diff --git a/source/blender/blenkernel/intern/constraint.c b/source/blender/blenkernel/intern/constraint.c index c497132fa99..c61f3ba3683 100644 --- a/source/blender/blenkernel/intern/constraint.c +++ b/source/blender/blenkernel/intern/constraint.c @@ -372,7 +372,7 @@ void constraint_mat_convertspace (Object *ob, bPoseChannel *pchan, float mat[][4 else { /* objects */ if (from==CONSTRAINT_SPACE_WORLD && to==CONSTRAINT_SPACE_LOCAL) { - /* check if object has a parent - otherwise this won't work */ + /* check if object has a parent */ if (ob->parent) { /* 'subtract' parent's effects from owner */ mul_m4_m4m4(diff_mat, ob->parentinv, ob->parent->obmat); @@ -380,6 +380,18 @@ void constraint_mat_convertspace (Object *ob, bPoseChannel *pchan, float mat[][4 copy_m4_m4(tempmat, mat); mul_m4_m4m4(mat, tempmat, imat); } + else { + /* Local space in this case will have to be defined as local to the owner's + * transform-property-rotated axes. So subtract this rotation component. + */ + object_to_mat4(ob, diff_mat); + normalize_m4(diff_mat); + zero_v3(diff_mat[3]); + + invert_m4_m4(imat, diff_mat); + copy_m4_m4(tempmat, mat); + mul_m4_m4m4(mat, tempmat, imat); + } } else if (from==CONSTRAINT_SPACE_LOCAL && to==CONSTRAINT_SPACE_WORLD) { /* check that object has a parent - otherwise this won't work */ @@ -389,6 +401,17 @@ void constraint_mat_convertspace (Object *ob, bPoseChannel *pchan, float mat[][4 mul_m4_m4m4(diff_mat, ob->parentinv, ob->parent->obmat); mul_m4_m4m4(mat, tempmat, diff_mat); } + else { + /* Local space in this case will have to be defined as local to the owner's + * transform-property-rotated axes. So add back this rotation component. + */ + object_to_mat4(ob, diff_mat); + normalize_m4(diff_mat); + zero_v3(diff_mat[3]); + + copy_m4_m4(tempmat, mat); + mul_m4_m4m4(mat, tempmat, diff_mat); + } } } } diff --git a/source/blender/blenkernel/intern/key.c b/source/blender/blenkernel/intern/key.c index 0955ccd170e..a3c8ea0c194 100644 --- a/source/blender/blenkernel/intern/key.c +++ b/source/blender/blenkernel/intern/key.c @@ -154,10 +154,6 @@ Key *copy_key(Key *key) keyn= copy_libblock(key); -#if 0 // XXX old animation system - keyn->ipo= copy_ipo(key->ipo); -#endif // XXX old animation system - BLI_duplicatelist(&keyn->block, &key->block); kb= key->block.first; @@ -185,10 +181,6 @@ void make_local_key(Key *key) key->id.lib= 0; new_id(0, (ID *)key, 0); - -#if 0 // XXX old animation system - make_local_ipo(key->ipo); -#endif // XXX old animation system } /* Sort shape keys and Ipo curves after a change. This assumes that at most diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c index 995c08fe481..5ee41246bf9 100644 --- a/source/blender/blenkernel/intern/material.c +++ b/source/blender/blenkernel/intern/material.c @@ -821,7 +821,7 @@ static void do_init_render_material(Material *ma, int r_mode, float *amb) /* always get derivatives for these textures */ if ELEM3(mtex->tex->type, TEX_IMAGE, TEX_PLUGIN, TEX_ENVMAP) ma->texco |= TEXCO_OSA; - else if(mtex->texflag & MTEX_NEW_BUMP) ma->texco |= TEXCO_OSA; + else if(mtex->texflag & (MTEX_COMPAT_BUMP|MTEX_3TAP_BUMP|MTEX_5TAP_BUMP)) ma->texco |= TEXCO_OSA; if(ma->texco & (TEXCO_ORCO|TEXCO_REFL|TEXCO_NORM|TEXCO_STRAND|TEXCO_STRESS)) needuv= 1; else if(ma->texco & (TEXCO_GLOB|TEXCO_UV|TEXCO_OBJECT|TEXCO_SPEED)) needuv= 1; diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c index 0fb19685f25..c67abc47e6f 100644 --- a/source/blender/blenkernel/intern/multires.c +++ b/source/blender/blenkernel/intern/multires.c @@ -1720,11 +1720,15 @@ void multiresModifier_prepare_join(Scene *scene, Object *ob, Object *to_ob) } /* update multires data after topology changing */ -void multires_topology_changed(Object *ob) +void multires_topology_changed(Scene *scene, Object *ob) { Mesh *me= (Mesh*)ob->data; MDisps *mdisp= NULL, *cur= NULL; int i, grid= 0, corners; + MultiresModifierData *mmd= get_multires_modifier(scene, ob); + + if(mmd) + multires_set_tot_mdisps(me, mmd->totlvl); CustomData_external_read(&me->fdata, &me->id, CD_MASK_MDISPS, me->totface); mdisp= CustomData_get_layer(&me->fdata, CD_MDISPS); diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c index a6f03c0c3ec..85c82dbf9bc 100644 --- a/source/blender/blenkernel/intern/node.c +++ b/source/blender/blenkernel/intern/node.c @@ -3119,7 +3119,7 @@ static int node_animation_properties(bNodeTree *ntree, bNode *node) /* check to see if any of the node's properties have fcurves */ RNA_pointer_create((ID *)ntree, &RNA_Node, node, &ptr); - lb = RNA_struct_defined_properties(ptr.type); + lb = RNA_struct_type_properties(ptr.type); for (link=lb->first; link; link=link->next) { int driven, len=1, index; diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 4c436e8411f..90e61be3356 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -1029,7 +1029,7 @@ Object *add_only_object(int type, const char *name) unit_m4(ob->parentinv); unit_m4(ob->obmat); ob->dt= OB_TEXTURE; - ob->empty_drawtype= OB_ARROWS; + ob->empty_drawtype= OB_PLAINAXES; ob->empty_drawsize= 1.0; if(type==OB_CAMERA || type==OB_LAMP) { @@ -2078,7 +2078,7 @@ void where_is_object_time(Scene *scene, Object *ob, float ctime) } /* solve constraints */ - if (ob->constraints.first && !(ob->flag & OB_NO_CONSTRAINTS)) { + if (ob->constraints.first && !(ob->transflag & OB_NO_CONSTRAINTS)) { bConstraintOb *cob; cob= constraints_make_evalob(scene, ob, NULL, CONSTRAINT_OBTYPE_OBJECT); diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c index 87c39abd561..11ea82803eb 100644 --- a/source/blender/blenkernel/intern/particle.c +++ b/source/blender/blenkernel/intern/particle.c @@ -1001,6 +1001,8 @@ static float interpolate_particle_value(float v1, float v2, float v3, float v4, value= w[0]*v1 + w[1]*v2 + w[2]*v3; if(four) value += w[3]*v4; + + CLAMP(value, 0.f, 1.f); return value; } @@ -1467,7 +1469,7 @@ void psys_interpolate_face(MVert *mvert, MFace *mface, MTFace *tface, float (*or } else { VECCOPY(orco, vec); - if(ornor) + if(ornor && nor) VECCOPY(ornor, nor); } } @@ -1959,7 +1961,7 @@ static void do_kink(ParticleKey *state, ParticleKey *par, float *par_rot, float { float y_vec[3]={0.f,1.f,0.f}; float z_vec[3]={0.f,0.f,1.f}; - float vec_one[3], radius, state_co[3]; + float vec_one[3], state_co[3]; float inp_y, inp_z, length; if(par_rot) { @@ -1968,7 +1970,7 @@ static void do_kink(ParticleKey *state, ParticleKey *par, float *par_rot, float } mul_v3_fl(par_vec, -1.f); - radius= normalize_v3_v3(vec_one, par_vec); + normalize_v3_v3(vec_one, par_vec); inp_y=dot_v3v3(y_vec, vec_one); inp_z=dot_v3v3(z_vec, vec_one); @@ -2743,7 +2745,6 @@ void psys_cache_child_paths(ParticleSimulationData *sim, float cfra, int editupd { ParticleThread *pthreads; ParticleThreadContext *ctx; - /*ParticleCacheKey **cache;*/ /*UNUSED*/ ListBase threads; int i, totchild, totparent, totthread; @@ -2762,7 +2763,7 @@ void psys_cache_child_paths(ParticleSimulationData *sim, float cfra, int editupd totparent= ctx->totparent; if(editupdate && sim->psys->childcache && totchild == sim->psys->totchildcache) { - /*cache = sim->psys->childcache;*/ /*UNUSED*/ + ; /* just overwrite the existing cache */ } else { /* clear out old and create new empty path cache */ @@ -3100,6 +3101,7 @@ void psys_cache_edit_paths(Scene *scene, Object *ob, PTCacheEdit *edit, float cf /* should init_particle_interpolation set this ? */ if(pset->brushtype==PE_BRUSH_WEIGHT){ pind.hkey[0] = NULL; + /* pa != NULL since the weight brush is only available for hair */ pind.hkey[1] = pa->hair; } @@ -3955,7 +3957,6 @@ void psys_get_particle_on_path(ParticleSimulationData *sim, int p, ParticleKey * float t, frs_sec = sim->scene->r.frs_sec; float co[3], orco[3]; float hairmat[4][4]; - /*int totparent = 0;*/ /*UNUSED*/ int totpart = psys->totpart; int totchild = psys->totchild; short between = 0, edit = 0; @@ -3965,11 +3966,8 @@ void psys_get_particle_on_path(ParticleSimulationData *sim, int p, ParticleKey * float *cpa_fuv; int cpa_num; short cpa_from; - //if(psys_in_edit_mode(scene, psys)){ - // if((psys->edit_path->flag & PSYS_EP_SHOW_CHILD)==0) - // totchild=0; - // edit=1; - //} + /* initialize keys to zero */ + memset(keys, 0, 4*sizeof(ParticleKey)); t=state->time; CLAMP(t, 0.0, 1.0); @@ -4011,12 +4009,6 @@ void psys_get_particle_on_path(ParticleSimulationData *sim, int p, ParticleKey * t = psys_get_child_time(psys, cpa, -state->time, NULL, NULL); if(totchild && part->from!=PART_FROM_PARTICLE && part->childtype==PART_CHILD_FACES){ -#if 0 /* totparent is UNUSED */ - totparent=(int)(totchild*part->parents*0.3); - - if(G.rendering && part->child_nbr && part->ren_child_nbr) - totparent*=(float)part->child_nbr/(float)part->ren_child_nbr; -#endif /* part->parents could still be 0 so we can't test with totparent */ between=1; } diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c index 62bfde601f6..a0948e61708 100644 --- a/source/blender/blenkernel/intern/particle_system.c +++ b/source/blender/blenkernel/intern/particle_system.c @@ -221,8 +221,19 @@ static void realloc_particles(ParticleSimulationData *sim, int new_totpart) if(totpart) { newpars= MEM_callocN(totpart*sizeof(ParticleData), "particles"); - if(psys->part->phystype == PART_PHYS_BOIDS) + if(newpars == NULL) + return; + + if(psys->part->phystype == PART_PHYS_BOIDS) { newboids= MEM_callocN(totpart*sizeof(BoidParticle), "boid particles"); + + if(newboids == NULL) { + /* allocation error! */ + if(newpars) + MEM_freeN(newpars); + return; + } + } } if(psys->particles) { @@ -3402,8 +3413,6 @@ static void dynamics_step(ParticleSimulationData *sim, float cfra) BoidBrainData bbd; PARTICLE_P; float timestep; - /* current time */ - /* float ctime; */ /*UNUSED*/ /* frame & time changes */ float dfra, dtime; float birthtime, dietime; @@ -3412,7 +3421,6 @@ static void dynamics_step(ParticleSimulationData *sim, float cfra) dfra= cfra - psys->cfra; timestep = psys_get_timestep(sim); - /*ctime= cfra*timestep;*/ /*UNUSED*/ dtime= dfra*timestep; if(dfra<0.0){ @@ -3675,7 +3683,7 @@ static void particles_fluid_step(ParticleSimulationData *sim, int UNUSED(cfra)) if( fluidmd && fluidmd->fss) { FluidsimSettings *fss= fluidmd->fss; ParticleSettings *part = psys->part; - ParticleData *pa=0; + ParticleData *pa=NULL; const char *suffix = "fluidsurface_particles_####"; const char *suffix2 = ".gz"; char filename[256]; diff --git a/source/blender/blenkernel/intern/pointcache.c b/source/blender/blenkernel/intern/pointcache.c index 0044c86f4f7..65bf055886e 100644 --- a/source/blender/blenkernel/intern/pointcache.c +++ b/source/blender/blenkernel/intern/pointcache.c @@ -1932,7 +1932,7 @@ int BKE_ptcache_write(PTCacheID *pid, unsigned int cfra) cache->flag |= PTCACHE_FRAMES_SKIPPED; /* Update timeline cache display */ - if(cache->cached_frames) + if(cfra && cache->cached_frames) cache->cached_frames[cfra-cache->startframe] = 1; BKE_ptcache_update_info(pid); diff --git a/source/blender/blenkernel/intern/seqcache.c b/source/blender/blenkernel/intern/seqcache.c index 122e186bcd7..78cd4bb51fe 100644 --- a/source/blender/blenkernel/intern/seqcache.c +++ b/source/blender/blenkernel/intern/seqcache.c @@ -232,8 +232,9 @@ void seq_stripelem_cache_put( key->cfra = cfra - seq->start; key->type = type; - /* we want our own version */ - IMB_refImBuf(i); + /* Normally we want our own version, but start and end stills are duplicates of the original. */ + if(ELEM(type, SEQ_STRIPELEM_IBUF_STARTSTILL, SEQ_STRIPELEM_IBUF_ENDSTILL)==0) + IMB_refImBuf(i); e = (seqCacheEntry*) BLI_mempool_alloc(entrypool); diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 9ffc04c5191..beda03e2257 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -1705,13 +1705,13 @@ static void copy_to_ibuf_still(SeqRenderData context, Sequence * seq, float nr, if (nr == 0) { seq_stripelem_cache_put( context, seq, seq->start, - SEQ_STRIPELEM_IBUF_STARTSTILL, ibuf); + SEQ_STRIPELEM_IBUF_STARTSTILL, IMB_dupImBuf(ibuf)); } if (nr == seq->len - 1) { seq_stripelem_cache_put( context, seq, seq->start, - SEQ_STRIPELEM_IBUF_ENDSTILL, ibuf); + SEQ_STRIPELEM_IBUF_ENDSTILL, IMB_dupImBuf(ibuf)); } } @@ -1952,6 +1952,8 @@ static ImBuf * seq_render_scene_strip_impl( seq->scene->r.cfra = oldcfra; seq->scene->camera= oldcamera; + if(frame != oldcfra) + scene_update_for_newframe(context.bmain, seq->scene, seq->scene->lay); #ifdef DURIAN_CAMERA_SWITCH /* stooping to new low's in hackyness :( */ diff --git a/source/blender/blenkernel/intern/texture.c b/source/blender/blenkernel/intern/texture.c index 11c0ce74b4a..de08a3b1813 100644 --- a/source/blender/blenkernel/intern/texture.c +++ b/source/blender/blenkernel/intern/texture.c @@ -630,7 +630,7 @@ void default_mtex(MTex *mtex) mtex->size[1]= 1.0; mtex->size[2]= 1.0; mtex->tex= 0; - mtex->texflag= MTEX_NEW_BUMP; + mtex->texflag= MTEX_3TAP_BUMP | MTEX_BUMP_OBJECTSPACE; mtex->colormodel= 0; mtex->r= 1.0; mtex->g= 0.0; diff --git a/source/blender/blenlib/BLI_math_vector.h b/source/blender/blenlib/BLI_math_vector.h index 35b7939329a..5a5d518940d 100644 --- a/source/blender/blenlib/BLI_math_vector.h +++ b/source/blender/blenlib/BLI_math_vector.h @@ -176,6 +176,7 @@ void mul_vn_fl(float *array, const int size, const float f); void mul_vn_vn_fl(float *array_tar, const float *array_src, const int size, const float f); void add_vn_vn(float *array_tar, const float *array_src, const int size); void add_vn_vnvn(float *array_tar, const float *array_src_a, const float *array_src_b, const int size); +void sub_vn_vn(float *array_tar, const float *array_src, const int size); void sub_vn_vnvn(float *array_tar, const float *array_src_a, const float *array_src_b, const int size); void fill_vni(int *array_tar, const int size, const int val); void fill_vn(float *array_tar, const int size, const float val); diff --git a/source/blender/blenlib/CMakeLists.txt b/source/blender/blenlib/CMakeLists.txt index 23125a67875..4006b879526 100644 --- a/source/blender/blenlib/CMakeLists.txt +++ b/source/blender/blenlib/CMakeLists.txt @@ -31,7 +31,7 @@ set(INC ../gpu ../../../intern/ghost ../../../intern/guardedalloc - ${ZLIB_INC} + ${ZLIB_INCLUDE_DIRS} ${FREETYPE_INCLUDE_DIRS} ${ZLIB_INC} ) diff --git a/source/blender/blenlib/Makefile b/source/blender/blenlib/Makefile deleted file mode 100644 index d4dcfaeeabf..00000000000 --- a/source/blender/blenlib/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Bounces make to subdirectories. - -SOURCEDIR = source/blender/blenlib -DIRS = intern - -include nan_subdirs.mk diff --git a/source/blender/blenlib/intern/Makefile b/source/blender/blenlib/intern/Makefile deleted file mode 100644 index 018fd3477df..00000000000 --- a/source/blender/blenlib/intern/Makefile +++ /dev/null @@ -1,62 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = blenlib -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -# path to SDNA types -CPPFLAGS += -I../../makesdna -# path to our own external headerfiles -CPPFLAGS += -I.. -# path to the guarded memory allocator -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -# path to freetype font stuff -CPPFLAGS += -I$(NAN_FREETYPE)/include -CPPFLAGS += -I$(NAN_FREETYPE)/include/freetype2 -# path to blenkernel -CPPFLAGS += -I$(SRCHOME)/blender/blenkernel -CPPFLAGS += -I../../editors/include/ -# path to zlib -CPPFLAGS += -I$(NAN_ZLIB)/include - -CPPFLAGS += -I../../gpu - -CPPFLAGS += -I$(NAN_GHOST)/include - -ifdef NAN_PTHREADS - CPPFLAGS += -I$(NAN_PTHREADS)/include -endif -ifeq ($(OS),linux) - CPPFLAGS += -I$(OCGDIR)/extern/binreloc/include -endif diff --git a/source/blender/blenlib/intern/math_vector.c b/source/blender/blenlib/intern/math_vector.c index 539d3fb97f6..37a68cb0fca 100644 --- a/source/blender/blenlib/intern/math_vector.c +++ b/source/blender/blenlib/intern/math_vector.c @@ -407,6 +407,14 @@ void add_vn_vnvn(float *array_tar, const float *array_src_a, const float *array_ while(i--) { *(tar--) = *(src_a--) + *(src_b--); } } +void sub_vn_vn(float *array_tar, const float *array_src, const int size) +{ + float *tar= array_tar + (size-1); + const float *src= array_src + (size-1); + int i= size; + while(i--) { *(tar--) -= *(src--); } +} + void sub_vn_vnvn(float *array_tar, const float *array_src_a, const float *array_src_b, const int size) { float *tar= array_tar + (size-1); diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index 0e46a9df4fc..aa5a775c746 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -1319,10 +1319,10 @@ int BLI_testextensie(const char *str, const char *ext) { short a, b; int retval; - + a= strlen(str); b= strlen(ext); - + if(a==0 || b==0 || b>=a) { retval = 0; } else if (BLI_strcasecmp(ext, str + a - b)) { @@ -1330,7 +1330,7 @@ int BLI_testextensie(const char *str, const char *ext) } else { retval = 1; } - + return (retval); } diff --git a/source/blender/blenloader/CMakeLists.txt b/source/blender/blenloader/CMakeLists.txt index e51fb35a4ac..4d8ac9bc4b6 100644 --- a/source/blender/blenloader/CMakeLists.txt +++ b/source/blender/blenloader/CMakeLists.txt @@ -33,7 +33,7 @@ set(INC ../makesrna ../render/extern/include ../../../intern/guardedalloc - ${ZLIB_INC} + ${ZLIB_INCLUDE_DIRS} ) set(SRC diff --git a/source/blender/blenloader/Makefile b/source/blender/blenloader/Makefile deleted file mode 100644 index 069bad4d371..00000000000 --- a/source/blender/blenloader/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Bounces make to subdirectories. - -SOURCEDIR = source/blender/blenloader -DIRS = intern - -include nan_subdirs.mk diff --git a/source/blender/blenloader/intern/Makefile b/source/blender/blenloader/intern/Makefile deleted file mode 100644 index fe178ea2610..00000000000 --- a/source/blender/blenloader/intern/Makefile +++ /dev/null @@ -1,69 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = blenloader -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -# CFLAGS += $(LEVEL_2_C_WARNINGS) - -# OpenGL and Python -CPPFLAGS += $(OGL_CPPFLAGS) -CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION) - -# zlib -ifeq ($(OS),$(findstring $(OS), "solaris windows")) - CPPFLAGS += -I$(NAN_ZLIB)/include -endif - -# streaming write function -CPPFLAGS += -I../../writestreamglue -CPPFLAGS += -I../../readstreamglue - -# initiate a streaming read pipe -CPPFLAGS += -I../../readblenfile - -# This mod uses the GEN, DNA, BLI and BKE modules -CPPFLAGS += -I../../../kernel/gen_messaging -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../blenlib -# path to the guarded memory allocator -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../render/extern/include/ -CPPFLAGS += -I../../python - -# we still refer to /include a bit... -CPPFLAGS += -I../../editors/include - -# path to our own external headerfiles -CPPFLAGS += -I.. diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index a5077af5647..f8f36fc1703 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -1040,7 +1040,7 @@ void blo_freefiledata(FileData *fd) int BLO_has_bfile_extension(char *str) { - return (BLI_testextensie(str, ".ble") || BLI_testextensie(str, ".blend")||BLI_testextensie(str, ".blend.gz")); + return (BLI_testextensie(str, ".ble") || BLI_testextensie(str, ".blend") || BLI_testextensie(str, ".blend.gz")); } int BLO_is_a_library(const char *path, char *dir, char *group) @@ -5293,7 +5293,11 @@ static void direct_link_screen(FileData *fd, bScreen *sc) for(cl= sconsole->history.first; cl; cl= cl_next) { cl_next= cl->next; cl->line= newdataadr(fd, cl->line); - if (cl->line == NULL) { + if (cl->line) { + /* the allocted length is not written, so reset here */ + cl->len_alloc= cl->len + 1; + } + else { BLI_remlink(&sconsole->history, cl); MEM_freeN(cl); } @@ -10137,12 +10141,15 @@ static void do_versions(FileData *fd, Library *lib, Main *main) for(a=0; a<MAX_MTEX; a++) { if(ma->mtex[a]) { tex= ma->mtex[a]->tex; - if(!tex) - ma->mtex[a]->texflag |= MTEX_NEW_BUMP; - else { + if(!tex) { + ma->mtex[a]->texflag |= MTEX_3TAP_BUMP; + ma->mtex[a]->texflag |= MTEX_BUMP_OBJECTSPACE; + } else { tex= (Tex*)newlibadr(fd, ma->id.lib, tex); - if(tex && tex->type == 0) /* invalid type */ - ma->mtex[a]->texflag |= MTEX_NEW_BUMP; + if(tex && tex->type == 0) { /* invalid type */ + ma->mtex[a]->texflag |= MTEX_3TAP_BUMP; + ma->mtex[a]->texflag |= MTEX_BUMP_OBJECTSPACE; + } } } } diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index ba275ae7f48..63a83258692 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -2154,6 +2154,7 @@ static void write_screens(WriteData *wd, ListBase *scrbase) ConsoleLine *cl; for (cl=con->history.first; cl; cl=cl->next) { + /* 'len_alloc' is invalid on write, set from 'len' on read */ writestruct(wd, DATA, "ConsoleLine", 1, cl); writedata(wd, DATA, cl->len+1, cl->line); } diff --git a/source/blender/blenpluginapi/Makefile b/source/blender/blenpluginapi/Makefile deleted file mode 100644 index c91161d8cfd..00000000000 --- a/source/blender/blenpluginapi/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Bounces make to subdirectories. - -SOURCEDIR = source/blender/blenpluginapi -DIRS = intern - -include nan_subdirs.mk diff --git a/source/blender/blenpluginapi/intern/Makefile b/source/blender/blenpluginapi/intern/Makefile deleted file mode 100644 index 696462f3f46..00000000000 --- a/source/blender/blenpluginapi/intern/Makefile +++ /dev/null @@ -1,50 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = blenpluginapi -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -# path to our own external headerfiles. On win2k this needs to be -# longer, to avoid the util.h include problem -CPPFLAGS += -I.. -CPPFLAGS += -I../.. - -# also do dna -CPPFLAGS += -I../../makesdna -# path to blenlib -CPPFLAGS += -I../../blenlib -# path to imbuf -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - diff --git a/source/blender/collada/ArmatureExporter.cpp b/source/blender/collada/ArmatureExporter.cpp index 255fb03da10..1427c333175 100644 --- a/source/blender/collada/ArmatureExporter.cpp +++ b/source/blender/collada/ArmatureExporter.cpp @@ -265,9 +265,9 @@ void ArmatureExporter::add_joints_element(ListBase *defbase, COLLADASW::JointsElement joints(mSW); COLLADASW::InputList &input = joints.getInputList(); - input.push_back(COLLADASW::Input(COLLADASW::JOINT, // constant declared in COLLADASWInputList.h + input.push_back(COLLADASW::Input(COLLADASW::InputSemantic::JOINT, // constant declared in COLLADASWInputList.h COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, joints_source_id))); - input.push_back(COLLADASW::Input(COLLADASW::BINDMATRIX, + input.push_back(COLLADASW::Input(COLLADASW::InputSemantic::BINDMATRIX, COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, inv_bind_mat_source_id))); joints.add(); } @@ -425,9 +425,9 @@ void ArmatureExporter::add_vertex_weights_element(const std::string& weights_sou COLLADASW::InputList &input = weights.getInputList(); int offset = 0; - input.push_back(COLLADASW::Input(COLLADASW::JOINT, // constant declared in COLLADASWInputList.h + input.push_back(COLLADASW::Input(COLLADASW::InputSemantic::JOINT, // constant declared in COLLADASWInputList.h COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, joints_source_id), offset++)); - input.push_back(COLLADASW::Input(COLLADASW::WEIGHT, + input.push_back(COLLADASW::Input(COLLADASW::InputSemantic::WEIGHT, COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, weights_source_id), offset++)); weights.setCount(me->totvert); diff --git a/source/blender/collada/DocumentExporter.cpp b/source/blender/collada/DocumentExporter.cpp index 66a0b0cbdd4..ea91a42581a 100644 --- a/source/blender/collada/DocumentExporter.cpp +++ b/source/blender/collada/DocumentExporter.cpp @@ -296,10 +296,11 @@ public: class AnimationExporter: COLLADASW::LibraryAnimations { Scene *scene; + COLLADASW::StreamWriter *sw; public: - AnimationExporter(COLLADASW::StreamWriter *sw): COLLADASW::LibraryAnimations(sw) {} + AnimationExporter(COLLADASW::StreamWriter *sw): COLLADASW::LibraryAnimations(sw) { this->sw = sw; } void exportAnimations(Scene *sce) { @@ -357,22 +358,22 @@ protected: openAnimation(anim_id, COLLADABU::Utils::EMPTY_STRING); // create input source - std::string input_id = create_source_from_fcurve(Sampler::INPUT, fcu, anim_id, axis_name); + std::string input_id = create_source_from_fcurve(COLLADASW::InputSemantic::INPUT, fcu, anim_id, axis_name); // create output source - std::string output_id = create_source_from_fcurve(Sampler::OUTPUT, fcu, anim_id, axis_name); + std::string output_id = create_source_from_fcurve(COLLADASW::InputSemantic::OUTPUT, fcu, anim_id, axis_name); // create interpolations source std::string interpolation_id = create_interpolation_source(fcu->totvert, anim_id, axis_name); std::string sampler_id = std::string(anim_id) + SAMPLER_ID_SUFFIX; - COLLADASW::LibraryAnimations::Sampler sampler(sampler_id); + COLLADASW::LibraryAnimations::Sampler sampler(sw, sampler_id); std::string empty; - sampler.addInput(Sampler::INPUT, COLLADABU::URI(empty, input_id)); - sampler.addInput(Sampler::OUTPUT, COLLADABU::URI(empty, output_id)); + sampler.addInput(COLLADASW::InputSemantic::INPUT, COLLADABU::URI(empty, input_id)); + sampler.addInput(COLLADASW::InputSemantic::OUTPUT, COLLADABU::URI(empty, output_id)); // this input is required - sampler.addInput(Sampler::INTERPOLATION, COLLADABU::URI(empty, interpolation_id)); + sampler.addInput(COLLADASW::InputSemantic::INTERPOLATION, COLLADABU::URI(empty, interpolation_id)); addSampler(sampler); @@ -533,28 +534,28 @@ protected: openAnimation(anim_id, COLLADABU::Utils::EMPTY_STRING); // create input source - std::string input_id = create_source_from_vector(Sampler::INPUT, fra, is_rot, anim_id, axis_name); + std::string input_id = create_source_from_vector(COLLADASW::InputSemantic::INPUT, fra, is_rot, anim_id, axis_name); // create output source std::string output_id; if (axis == -1) output_id = create_xyz_source(v, fra.size(), anim_id); else - output_id = create_source_from_array(Sampler::OUTPUT, v, fra.size(), is_rot, anim_id, axis_name); + output_id = create_source_from_array(COLLADASW::InputSemantic::OUTPUT, v, fra.size(), is_rot, anim_id, axis_name); // create interpolations source std::string interpolation_id = create_interpolation_source(fra.size(), anim_id, axis_name); std::string sampler_id = std::string(anim_id) + SAMPLER_ID_SUFFIX; - COLLADASW::LibraryAnimations::Sampler sampler(sampler_id); + COLLADASW::LibraryAnimations::Sampler sampler(sw, sampler_id); std::string empty; - sampler.addInput(Sampler::INPUT, COLLADABU::URI(empty, input_id)); - sampler.addInput(Sampler::OUTPUT, COLLADABU::URI(empty, output_id)); + sampler.addInput(COLLADASW::InputSemantic::INPUT, COLLADABU::URI(empty, input_id)); + sampler.addInput(COLLADASW::InputSemantic::OUTPUT, COLLADABU::URI(empty, output_id)); // TODO create in/out tangents source // this input is required - sampler.addInput(Sampler::INTERPOLATION, COLLADABU::URI(empty, interpolation_id)); + sampler.addInput(COLLADASW::InputSemantic::INTERPOLATION, COLLADABU::URI(empty, interpolation_id)); addSampler(sampler); @@ -574,18 +575,18 @@ protected: return COLLADABU::Math::Utils::radToDegF(angle); } - std::string get_semantic_suffix(Sampler::Semantic semantic) + std::string get_semantic_suffix(COLLADASW::InputSemantic::Semantics semantic) { switch(semantic) { - case Sampler::INPUT: + case COLLADASW::InputSemantic::INPUT: return INPUT_SOURCE_ID_SUFFIX; - case Sampler::OUTPUT: + case COLLADASW::InputSemantic::OUTPUT: return OUTPUT_SOURCE_ID_SUFFIX; - case Sampler::INTERPOLATION: + case COLLADASW::InputSemantic::INTERPOLATION: return INTERPOLATION_SOURCE_ID_SUFFIX; - case Sampler::IN_TANGENT: + case COLLADASW::InputSemantic::IN_TANGENT: return INTANGENT_SOURCE_ID_SUFFIX; - case Sampler::OUT_TANGENT: + case COLLADASW::InputSemantic::OUT_TANGENT: return OUTTANGENT_SOURCE_ID_SUFFIX; default: break; @@ -594,13 +595,13 @@ protected: } void add_source_parameters(COLLADASW::SourceBase::ParameterNameList& param, - Sampler::Semantic semantic, bool is_rot, const char *axis) + COLLADASW::InputSemantic::Semantics semantic, bool is_rot, const char *axis) { switch(semantic) { - case Sampler::INPUT: + case COLLADASW::InputSemantic::INPUT: param.push_back("TIME"); break; - case Sampler::OUTPUT: + case COLLADASW::InputSemantic::OUTPUT: if (is_rot) { param.push_back("ANGLE"); } @@ -615,8 +616,8 @@ protected: } } break; - case Sampler::IN_TANGENT: - case Sampler::OUT_TANGENT: + case COLLADASW::InputSemantic::IN_TANGENT: + case COLLADASW::InputSemantic::OUT_TANGENT: param.push_back("X"); param.push_back("Y"); break; @@ -625,14 +626,14 @@ protected: } } - void get_source_values(BezTriple *bezt, Sampler::Semantic semantic, bool rotation, float *values, int *length) + void get_source_values(BezTriple *bezt, COLLADASW::InputSemantic::Semantics semantic, bool rotation, float *values, int *length) { switch (semantic) { - case Sampler::INPUT: + case COLLADASW::InputSemantic::INPUT: *length = 1; values[0] = convert_time(bezt->vec[1][0]); break; - case Sampler::OUTPUT: + case COLLADASW::InputSemantic::OUTPUT: *length = 1; if (rotation) { values[0] = convert_angle(bezt->vec[1][1]); @@ -641,8 +642,8 @@ protected: values[0] = bezt->vec[1][1]; } break; - case Sampler::IN_TANGENT: - case Sampler::OUT_TANGENT: + case COLLADASW::InputSemantic::IN_TANGENT: + case COLLADASW::InputSemantic::OUT_TANGENT: // XXX *length = 2; break; @@ -652,7 +653,7 @@ protected: } } - std::string create_source_from_fcurve(Sampler::Semantic semantic, FCurve *fcu, const std::string& anim_id, const char *axis_name) + std::string create_source_from_fcurve(COLLADASW::InputSemantic::Semantics semantic, FCurve *fcu, const std::string& anim_id, const char *axis_name) { std::string source_id = anim_id + get_semantic_suffix(semantic); @@ -686,7 +687,7 @@ protected: return source_id; } - std::string create_source_from_array(Sampler::Semantic semantic, float *v, int tot, bool is_rot, const std::string& anim_id, const char *axis_name) + std::string create_source_from_array(COLLADASW::InputSemantic::Semantics semantic, float *v, int tot, bool is_rot, const std::string& anim_id, const char *axis_name) { std::string source_id = anim_id + get_semantic_suffix(semantic); @@ -703,7 +704,7 @@ protected: for (int i = 0; i < tot; i++) { float val = v[i]; - if (semantic == Sampler::INPUT) + if (semantic == COLLADASW::InputSemantic::INPUT) val = convert_time(val); else if (is_rot) val = convert_angle(val); @@ -715,7 +716,7 @@ protected: return source_id; } - std::string create_source_from_vector(Sampler::Semantic semantic, std::vector<float> &fra, bool is_rot, const std::string& anim_id, const char *axis_name) + std::string create_source_from_vector(COLLADASW::InputSemantic::Semantics semantic, std::vector<float> &fra, bool is_rot, const std::string& anim_id, const char *axis_name) { std::string source_id = anim_id + get_semantic_suffix(semantic); @@ -733,7 +734,7 @@ protected: std::vector<float>::iterator it; for (it = fra.begin(); it != fra.end(); it++) { float val = *it; - if (semantic == Sampler::INPUT) + if (semantic == COLLADASW::InputSemantic::INPUT) val = convert_time(val); else if (is_rot) val = convert_angle(val); @@ -748,7 +749,7 @@ protected: // only used for sources with OUTPUT semantic std::string create_xyz_source(float *v, int tot, const std::string& anim_id) { - Sampler::Semantic semantic = Sampler::OUTPUT; + COLLADASW::InputSemantic::Semantics semantic = COLLADASW::InputSemantic::OUTPUT; std::string source_id = anim_id + get_semantic_suffix(semantic); COLLADASW::FloatSourceF source(mSW); @@ -774,7 +775,7 @@ protected: std::string create_interpolation_source(int tot, const std::string& anim_id, const char *axis_name) { - std::string source_id = anim_id + get_semantic_suffix(Sampler::INTERPOLATION); + std::string source_id = anim_id + get_semantic_suffix(COLLADASW::InputSemantic::INTERPOLATION); COLLADASW::NameSource source(mSW); source.setId(source_id); diff --git a/source/blender/collada/DocumentImporter.cpp b/source/blender/collada/DocumentImporter.cpp index 6dbffd5232c..fef1285ae52 100644 --- a/source/blender/collada/DocumentImporter.cpp +++ b/source/blender/collada/DocumentImporter.cpp @@ -1,4 +1,4 @@ -/** +/* * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** @@ -120,22 +120,37 @@ private: //public: /** Constructor. */ - DocumentImporter::DocumentImporter(bContext *C, const char *filename) : mFilename(filename), mContext(C), - armature_importer(&unit_converter, &mesh_importer, &anim_importer, CTX_data_scene(C)), - mesh_importer(&unit_converter, &armature_importer, CTX_data_scene(C)), - anim_importer(&unit_converter, &armature_importer, CTX_data_scene(C)) {} + DocumentImporter::DocumentImporter(bContext *C, const char *filename) : + mImportStage(General), + mFilename(filename), + mContext(C), + armature_importer(&unit_converter, &mesh_importer, &anim_importer, CTX_data_scene(C)), + mesh_importer(&unit_converter, &armature_importer, CTX_data_scene(C)), + anim_importer(&unit_converter, &armature_importer, CTX_data_scene(C)) + {} /** Destructor. */ DocumentImporter::~DocumentImporter() {} bool DocumentImporter::import() { + /** TODO Add error handler (implement COLLADASaxFWL::IErrorHandler */ COLLADASaxFWL::Loader loader; COLLADAFW::Root root(&loader, this); - // XXX report error if (!root.loadDocument(mFilename)) return false; + + /** TODO set up scene graph and such here */ + + mImportStage = Controller; + + COLLADASaxFWL::Loader loader2; + COLLADAFW::Root root2(&loader2, this); + + if (!root2.loadDocument(mFilename)) + return false; + return true; } @@ -155,6 +170,10 @@ private: /** This method is called after the last write* method. No other methods will be called after this.*/ void DocumentImporter::finish() { + if(mImportStage!=General) + return; + + /** TODO Break up and put into 2-pass parsing of DAE */ std::vector<const COLLADAFW::VisualScene*>::iterator it; for (it = vscenes.begin(); it != vscenes.end(); it++) { PointerRNA sceneptr, unit_settings; @@ -439,6 +458,9 @@ private: @return The writer should return true, if writing succeeded, false otherwise.*/ bool DocumentImporter::writeVisualScene ( const COLLADAFW::VisualScene* visualScene ) { + if(mImportStage!=General) + return true; + // this method called on post process after writeGeometry, writeMaterial, etc. // for each <node> in <visual_scene>: @@ -459,6 +481,9 @@ private: @return The writer should return true, if writing succeeded, false otherwise.*/ bool DocumentImporter::writeLibraryNodes ( const COLLADAFW::LibraryNodes* libraryNodes ) { + if(mImportStage!=General) + return true; + Scene *sce = CTX_data_scene(mContext); const COLLADAFW::NodePointerArray& nodes = libraryNodes->getNodes(); @@ -474,6 +499,9 @@ private: @return The writer should return true, if writing succeeded, false otherwise.*/ bool DocumentImporter::writeGeometry ( const COLLADAFW::Geometry* geom ) { + if(mImportStage!=General) + return true; + return mesh_importer.write_geometry(geom); } @@ -481,6 +509,9 @@ private: @return The writer should return true, if writing succeeded, false otherwise.*/ bool DocumentImporter::writeMaterial( const COLLADAFW::Material* cmat ) { + if(mImportStage!=General) + return true; + const std::string& str_mat_id = cmat->getOriginalId(); Material *ma = add_material((char*)str_mat_id.c_str()); @@ -655,6 +686,8 @@ private: bool DocumentImporter::writeEffect( const COLLADAFW::Effect* effect ) { + if(mImportStage!=General) + return true; const COLLADAFW::UniqueId& uid = effect->getUniqueId(); if (uid_effect_map.find(uid) == uid_effect_map.end()) { @@ -682,6 +715,9 @@ private: @return The writer should return true, if writing succeeded, false otherwise.*/ bool DocumentImporter::writeCamera( const COLLADAFW::Camera* camera ) { + if(mImportStage!=General) + return true; + Camera *cam = NULL; std::string cam_id, cam_name; @@ -794,6 +830,9 @@ private: @return The writer should return true, if writing succeeded, false otherwise.*/ bool DocumentImporter::writeImage( const COLLADAFW::Image* image ) { + if(mImportStage!=General) + return true; + // XXX maybe it is necessary to check if the path is absolute or relative const std::string& filepath = image->getImageURI().toNativePath(); const char *filename = (const char*)mFilename.c_str(); @@ -816,6 +855,9 @@ private: @return The writer should return true, if writing succeeded, false otherwise.*/ bool DocumentImporter::writeLight( const COLLADAFW::Light* light ) { + if(mImportStage!=General) + return true; + Lamp *lamp = NULL; std::string la_id, la_name; @@ -911,6 +953,9 @@ private: // this function is called only for animations that pass COLLADAFW::validate bool DocumentImporter::writeAnimation( const COLLADAFW::Animation* anim ) { + if(mImportStage!=General) + return true; + // return true; return anim_importer.write_animation(anim); } @@ -918,6 +963,9 @@ private: // called on post-process stage after writeVisualScenes bool DocumentImporter::writeAnimationList( const COLLADAFW::AnimationList* animationList ) { + if(mImportStage!=General) + return true; + // return true; return anim_importer.write_animation_list(animationList); } @@ -932,6 +980,9 @@ private: // this is called on postprocess, before writeVisualScenes bool DocumentImporter::writeController( const COLLADAFW::Controller* controller ) { + if(mImportStage!=General) + return true; + return armature_importer.write_controller(controller); } diff --git a/source/blender/collada/DocumentImporter.h b/source/blender/collada/DocumentImporter.h index a2c5e664623..114c2839d49 100644 --- a/source/blender/collada/DocumentImporter.h +++ b/source/blender/collada/DocumentImporter.h @@ -1,4 +1,4 @@ -/** +/* * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** @@ -46,32 +46,15 @@ struct Main; struct bContext; +/** Importer class. */ class DocumentImporter : COLLADAFW::IWriter { - private: - - std::string mFilename; - - bContext *mContext; - - UnitConverter unit_converter; - ArmatureImporter armature_importer; - MeshImporter mesh_importer; - AnimationImporter anim_importer; - - std::map<COLLADAFW::UniqueId, Image*> uid_image_map; - std::map<COLLADAFW::UniqueId, Material*> uid_material_map; - std::map<COLLADAFW::UniqueId, Material*> uid_effect_map; - std::map<COLLADAFW::UniqueId, Camera*> uid_camera_map; - std::map<COLLADAFW::UniqueId, Lamp*> uid_lamp_map; - std::map<Material*, TexIndexTextureArrayMap> material_texture_mapping_map; - std::map<COLLADAFW::UniqueId, Object*> object_map; - std::map<COLLADAFW::UniqueId, COLLADAFW::Node*> node_map; - std::vector<const COLLADAFW::VisualScene*> vscenes; - std::vector<Object*> libnode_ob; - - std::map<COLLADAFW::UniqueId, COLLADAFW::Node*> root_map; // find root joint by child joint uid, for bone tree evaluation during resampling public: + //! Enumeration to keep denote the stage of import + enum ImportStage { + General, //!< First pass to collect all data except controller + Controller, //!< Second pass to collect controller data + }; /** Constructor */ DocumentImporter(bContext *C, const char *filename); @@ -134,6 +117,31 @@ class DocumentImporter : COLLADAFW::IWriter bool writeKinematicsScene(const COLLADAFW::KinematicsScene*); + private: + + /** Current import stage we're in. */ + ImportStage mImportStage; + std::string mFilename; + + bContext *mContext; + + UnitConverter unit_converter; + ArmatureImporter armature_importer; + MeshImporter mesh_importer; + AnimationImporter anim_importer; + + std::map<COLLADAFW::UniqueId, Image*> uid_image_map; + std::map<COLLADAFW::UniqueId, Material*> uid_material_map; + std::map<COLLADAFW::UniqueId, Material*> uid_effect_map; + std::map<COLLADAFW::UniqueId, Camera*> uid_camera_map; + std::map<COLLADAFW::UniqueId, Lamp*> uid_lamp_map; + std::map<Material*, TexIndexTextureArrayMap> material_texture_mapping_map; + std::map<COLLADAFW::UniqueId, Object*> object_map; + std::map<COLLADAFW::UniqueId, COLLADAFW::Node*> node_map; + std::vector<const COLLADAFW::VisualScene*> vscenes; + std::vector<Object*> libnode_ob; + + std::map<COLLADAFW::UniqueId, COLLADAFW::Node*> root_map; // find root joint by child joint uid, for bone tree evaluation during resampling }; diff --git a/source/blender/collada/GeometryExporter.cpp b/source/blender/collada/GeometryExporter.cpp index 7b5b5397955..73ad6f475de 100644 --- a/source/blender/collada/GeometryExporter.cpp +++ b/source/blender/collada/GeometryExporter.cpp @@ -92,9 +92,9 @@ void GeometryExporter::operator()(Object *ob) // <vertices> COLLADASW::Vertices verts(mSW); - verts.setId(getIdBySemantics(geom_id, COLLADASW::VERTEX)); + verts.setId(getIdBySemantics(geom_id, COLLADASW::InputSemantic::VERTEX)); COLLADASW::InputList &input_list = verts.getInputList(); - COLLADASW::Input input(COLLADASW::POSITION, getUrlBySemantics(geom_id, COLLADASW::POSITION)); + COLLADASW::Input input(COLLADASW::InputSemantic::POSITION, getUrlBySemantics(geom_id, COLLADASW::InputSemantic::POSITION)); input_list.push_back(input); verts.add(); @@ -168,10 +168,10 @@ void GeometryExporter::createPolylist(int material_index, COLLADASW::InputList &til = polylist.getInputList(); // creates <input> in <polylist> for vertices - COLLADASW::Input input1(COLLADASW::VERTEX, getUrlBySemantics(geom_id, COLLADASW::VERTEX), 0); + COLLADASW::Input input1(COLLADASW::InputSemantic::VERTEX, getUrlBySemantics(geom_id, COLLADASW::InputSemantic::VERTEX), 0); // creates <input> in <polylist> for normals - COLLADASW::Input input2(COLLADASW::NORMAL, getUrlBySemantics(geom_id, COLLADASW::NORMAL), 1); + COLLADASW::Input input2(COLLADASW::InputSemantic::NORMAL, getUrlBySemantics(geom_id, COLLADASW::InputSemantic::NORMAL), 1); til.push_back(input1); til.push_back(input2); @@ -181,7 +181,7 @@ void GeometryExporter::createPolylist(int material_index, for (i = 0; i < num_layers; i++) { // char *name = CustomData_get_layer_name(&me->fdata, CD_MTFACE, i); - COLLADASW::Input input3(COLLADASW::TEXCOORD, + COLLADASW::Input input3(COLLADASW::InputSemantic::TEXCOORD, makeUrl(makeTexcoordSourceId(geom_id, i)), 2, // offset always 2, this is only until we have optimized UV sets i // set number equals UV layer index @@ -190,7 +190,7 @@ void GeometryExporter::createPolylist(int material_index, } if (has_color) { - COLLADASW::Input input4(COLLADASW::COLOR, getUrlBySemantics(geom_id, COLLADASW::COLOR), has_uvs ? 3 : 2); + COLLADASW::Input input4(COLLADASW::InputSemantic::COLOR, getUrlBySemantics(geom_id, COLLADASW::InputSemantic::COLOR), has_uvs ? 3 : 2); til.push_back(input4); } @@ -240,8 +240,8 @@ void GeometryExporter::createVertsSource(std::string geom_id, Mesh *me) MVert *verts = me->mvert; COLLADASW::FloatSourceF source(mSW); - source.setId(getIdBySemantics(geom_id, COLLADASW::POSITION)); - source.setArrayId(getIdBySemantics(geom_id, COLLADASW::POSITION) + + source.setId(getIdBySemantics(geom_id, COLLADASW::InputSemantic::POSITION)); + source.setArrayId(getIdBySemantics(geom_id, COLLADASW::InputSemantic::POSITION) + ARRAY_ID_SUFFIX); source.setAccessorCount(totverts); source.setAccessorStride(3); @@ -274,8 +274,8 @@ void GeometryExporter::createVertexColorSource(std::string geom_id, Mesh *me) totcolor += f->v4 ? 4 : 3; COLLADASW::FloatSourceF source(mSW); - source.setId(getIdBySemantics(geom_id, COLLADASW::COLOR)); - source.setArrayId(getIdBySemantics(geom_id, COLLADASW::COLOR) + ARRAY_ID_SUFFIX); + source.setId(getIdBySemantics(geom_id, COLLADASW::InputSemantic::COLOR)); + source.setArrayId(getIdBySemantics(geom_id, COLLADASW::InputSemantic::COLOR) + ARRAY_ID_SUFFIX); source.setAccessorCount(totcolor); source.setAccessorStride(3); @@ -302,7 +302,7 @@ std::string GeometryExporter::makeTexcoordSourceId(std::string& geom_id, int lay { char suffix[20]; sprintf(suffix, "-%d", layer_index); - return getIdBySemantics(geom_id, COLLADASW::TEXCOORD) + suffix; + return getIdBySemantics(geom_id, COLLADASW::InputSemantic::TEXCOORD) + suffix; } //creates <source> for texcoords @@ -373,8 +373,8 @@ void GeometryExporter::createNormalsSource(std::string geom_id, Mesh *me, std::v #endif COLLADASW::FloatSourceF source(mSW); - source.setId(getIdBySemantics(geom_id, COLLADASW::NORMAL)); - source.setArrayId(getIdBySemantics(geom_id, COLLADASW::NORMAL) + + source.setId(getIdBySemantics(geom_id, COLLADASW::InputSemantic::NORMAL)); + source.setArrayId(getIdBySemantics(geom_id, COLLADASW::InputSemantic::NORMAL) + ARRAY_ID_SUFFIX); source.setAccessorCount((unsigned long)nor.size()); source.setAccessorStride(3); @@ -444,12 +444,12 @@ void GeometryExporter::create_normals(std::vector<Normal> &nor, std::vector<Face } } -std::string GeometryExporter::getIdBySemantics(std::string geom_id, COLLADASW::Semantics type, std::string other_suffix) { +std::string GeometryExporter::getIdBySemantics(std::string geom_id, COLLADASW::InputSemantic::Semantics type, std::string other_suffix) { return geom_id + getSuffixBySemantic(type) + other_suffix; } -COLLADASW::URI GeometryExporter::getUrlBySemantics(std::string geom_id, COLLADASW::Semantics type, std::string other_suffix) { +COLLADASW::URI GeometryExporter::getUrlBySemantics(std::string geom_id, COLLADASW::InputSemantic::Semantics type, std::string other_suffix) { std::string id(getIdBySemantics(geom_id, type, other_suffix)); return COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, id); diff --git a/source/blender/collada/GeometryExporter.h b/source/blender/collada/GeometryExporter.h index 27c837418b1..b3013f7dadc 100644 --- a/source/blender/collada/GeometryExporter.h +++ b/source/blender/collada/GeometryExporter.h @@ -83,9 +83,9 @@ public: void create_normals(std::vector<Normal> &nor, std::vector<Face> &ind, Mesh *me); - std::string getIdBySemantics(std::string geom_id, COLLADASW::Semantics type, std::string other_suffix = ""); + std::string getIdBySemantics(std::string geom_id, COLLADASW::InputSemantic::Semantics type, std::string other_suffix = ""); - COLLADASW::URI getUrlBySemantics(std::string geom_id, COLLADASW::Semantics type, std::string other_suffix = ""); + COLLADASW::URI getUrlBySemantics(std::string geom_id, COLLADASW::InputSemantic::Semantics type, std::string other_suffix = ""); COLLADASW::URI makeUrl(std::string id); diff --git a/source/blender/collada/Makefile b/source/blender/collada/Makefile deleted file mode 100644 index d4cc18d22b6..00000000000 --- a/source/blender/collada/Makefile +++ /dev/null @@ -1,42 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2008 Blender Foundation. -# All rights reserved. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = bf_collada -DIR = $(OCGDIR)/blender/bf_collada - -include nan_compile.mk - -CCFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I../makesdna -I../blenlib -I../blenkernel -I../editors/include -CPPFLAGS += -I../windowmanager -I../makesrna -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I$(BF_OPENCOLLADA)/include/COLLADABaseUtils -CPPFLAGS += -I$(BF_OPENCOLLADA)/include/COLLADAFramework -CPPFLAGS += -I$(BF_OPENCOLLADA)/include/COLLADAStreamWriter -CPPFLAGS += -I$(BF_OPENCOLLADA)/include/COLLADASaxFrameworkLoader diff --git a/source/blender/collada/MeshImporter.cpp b/source/blender/collada/MeshImporter.cpp index 0f997a616e4..5faaf123bc7 100644 --- a/source/blender/collada/MeshImporter.cpp +++ b/source/blender/collada/MeshImporter.cpp @@ -315,16 +315,19 @@ bool MeshImporter::is_nice_mesh(COLLADAFW::Mesh *mesh) void MeshImporter::read_vertices(COLLADAFW::Mesh *mesh, Mesh *me) { - // vertices - me->totvert = mesh->getPositions().getFloatValues()->getCount() / 3; + // vertices + COLLADAFW::MeshVertexData& pos = mesh->getPositions(); + int stride = pos.getStride(0); + if(stride==0) stride = 3; + + me->totvert = mesh->getPositions().getFloatValues()->getCount() / stride; me->mvert = (MVert*)CustomData_add_layer(&me->vdata, CD_MVERT, CD_CALLOC, NULL, me->totvert); - COLLADAFW::MeshVertexData& pos = mesh->getPositions(); MVert *mvert; int i; for (i = 0, mvert = me->mvert; i < me->totvert; i++, mvert++) { - get_vector(mvert->co, pos, i); + get_vector(mvert->co, pos, i, stride); } } @@ -634,10 +637,10 @@ void MeshImporter::read_faces(COLLADAFW::Mesh *mesh, Mesh *me, int new_tris) geom_uid_mat_mapping_map[mesh->getUniqueId()] = mat_prim_map; } -void MeshImporter::get_vector(float v[3], COLLADAFW::MeshVertexData& arr, int i) +void MeshImporter::get_vector(float v[3], COLLADAFW::MeshVertexData& arr, int i, int stride) { - i *= 3; - + i *= stride; + switch(arr.getType()) { case COLLADAFW::MeshVertexData::DATA_TYPE_FLOAT: { @@ -647,6 +650,7 @@ void MeshImporter::get_vector(float v[3], COLLADAFW::MeshVertexData& arr, int i) v[0] = (*values)[i++]; v[1] = (*values)[i++]; v[2] = (*values)[i]; + } break; case COLLADAFW::MeshVertexData::DATA_TYPE_DOUBLE: @@ -668,13 +672,13 @@ bool MeshImporter::flat_face(unsigned int *nind, COLLADAFW::MeshVertexData& nor, { float a[3], b[3]; - get_vector(a, nor, *nind); + get_vector(a, nor, *nind, 3); normalize_v3(a); nind++; for (int i = 1; i < count; i++, nind++) { - get_vector(b, nor, *nind); + get_vector(b, nor, *nind, 3); normalize_v3(b); float dp = dot_v3v3(a, b); diff --git a/source/blender/collada/MeshImporter.h b/source/blender/collada/MeshImporter.h index c5ab6e94561..19a6ab96ddf 100644 --- a/source/blender/collada/MeshImporter.h +++ b/source/blender/collada/MeshImporter.h @@ -118,7 +118,7 @@ private: // TODO: import uv set names void read_faces(COLLADAFW::Mesh *mesh, Mesh *me, int new_tris); - void get_vector(float v[3], COLLADAFW::MeshVertexData& arr, int i); + void get_vector(float v[3], COLLADAFW::MeshVertexData& arr, int i, int stride); bool flat_face(unsigned int *nind, COLLADAFW::MeshVertexData& nor, int count); diff --git a/source/blender/editors/Makefile b/source/blender/editors/Makefile deleted file mode 100644 index 168d919e6de..00000000000 --- a/source/blender/editors/Makefile +++ /dev/null @@ -1,71 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) Blender Foundation. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Bounces make to subdirectories. - -SOURCEDIR = source/blender/editors -DIRS = armature \ - mesh \ - animation \ - object \ - sculpt_paint \ - datafiles \ - transform \ - screen \ - curve \ - metaball \ - gpencil \ - physics \ - render \ - uvedit \ - space_outliner \ - space_time \ - space_view3d \ - interface \ - util \ - space_api \ - space_console \ - space_graph \ - space_image \ - space_node \ - space_buttons \ - space_info \ - space_file \ - space_sound \ - space_action \ - space_nla \ - space_script \ - space_text \ - space_sequencer \ - space_logic \ - space_userpref \ - sound - -include nan_subdirs.mk diff --git a/source/blender/editors/animation/Makefile b/source/blender/editors/animation/Makefile deleted file mode 100644 index f120091e917..00000000000 --- a/source/blender/editors/animation/Makefile +++ /dev/null @@ -1,54 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_animation -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -# not very neat.... -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../python -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - -# own include - -CPPFLAGS += -I../include diff --git a/source/blender/editors/armature/Makefile b/source/blender/editors/armature/Makefile deleted file mode 100644 index 707ceb55246..00000000000 --- a/source/blender/editors/armature/Makefile +++ /dev/null @@ -1,57 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_armature -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -CPPFLAGS += -I$(NAN_OPENNL)/include - -# not very neat.... -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../python -CPPFLAGS += -I../../gpu -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - -# own include - -CPPFLAGS += -I../include diff --git a/source/blender/editors/armature/editarmature.c b/source/blender/editors/armature/editarmature.c index e0172b603b7..3a7e10698cf 100644 --- a/source/blender/editors/armature/editarmature.c +++ b/source/blender/editors/armature/editarmature.c @@ -5082,7 +5082,7 @@ static int pose_clear_transform_generic_exec(bContext *C, wmOperator *op, return OPERATOR_CANCELLED; } - /* only clear those channels that are not locked */ + /* only clear relevant transforms for selected bones */ CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) { /* run provided clearing function */ diff --git a/source/blender/editors/curve/Makefile b/source/blender/editors/curve/Makefile deleted file mode 100644 index d9c51c7420e..00000000000 --- a/source/blender/editors/curve/Makefile +++ /dev/null @@ -1,56 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_curve -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I$(NAN_ELBEEM)/include - -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../gpu -CPPFLAGS += -I../../render/extern/include - -# own include - -CPPFLAGS += -I../include diff --git a/source/blender/editors/datafiles/Makefile b/source/blender/editors/datafiles/Makefile deleted file mode 100644 index c76014df60e..00000000000 --- a/source/blender/editors/datafiles/Makefile +++ /dev/null @@ -1,49 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_datafiles -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(OPENGL_HEADERS) - -# not very neat.... -CPPFLAGS += -I../../../blenkernel -CPPFLAGS += -I../../../blenlib -CPPFLAGS += -I../../../makesdna -CPPFLAGS += -I../../../imbuf -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - -# own include - -CPPFLAGS += -I../include diff --git a/source/blender/editors/gpencil/Makefile b/source/blender/editors/gpencil/Makefile deleted file mode 100644 index f3e781a0369..00000000000 --- a/source/blender/editors/gpencil/Makefile +++ /dev/null @@ -1,56 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_gpencil -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I$(NAN_ELBEEM)/include - -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../gpu -CPPFLAGS += -I../../render/extern/include - -# own include - -CPPFLAGS += -I../include diff --git a/source/blender/editors/include/ED_util.h b/source/blender/editors/include/ED_util.h index 626ca4bd1e8..1cbf1d0e998 100644 --- a/source/blender/editors/include/ED_util.h +++ b/source/blender/editors/include/ED_util.h @@ -78,5 +78,8 @@ void undo_editmode_step (struct bContext *C, int step); void apply_keyb_grid(int shift, int ctrl, float *val, float fac1, float fac2, float fac3, int invert); int GetButStringLength(const char *str); +/* where else to go ? */ +void unpack_menu(struct bContext *C, const char *opname, const char *id_name, const char *abs_name, const char *folder, struct PackedFile *pf); + #endif /* ED_UTIL_H */ diff --git a/source/blender/editors/interface/Makefile b/source/blender/editors/interface/Makefile deleted file mode 100644 index 7b5d4e60fbd..00000000000 --- a/source/blender/editors/interface/Makefile +++ /dev/null @@ -1,61 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_interface -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../blenfont -CPPFLAGS += -I../../python -CPPFLAGS += -I../../gpu - -# own include - -CPPFLAGS += -I../include - -ifeq ($(INTERNATIONAL), true) - CPPFLAGS += -DINTERNATIONAL -endif - diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index 43919617047..52e9ae6894e 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -1703,7 +1703,7 @@ int ui_set_but_string(bContext *C, uiBut *but, const char *str) } else if(but->type == IDPOIN) { /* ID pointer */ - but->idpoin_func(C, (char*)str, but->idpoin_idpp); + but->idpoin_func(C, str, but->idpoin_idpp); return 1; } else if(but->type == TEX) { @@ -2574,18 +2574,18 @@ static uiBut *ui_def_but_rna(uiBlock *block, int type, int retval, const char *s RNA_property_enum_items(block->evil_C, ptr, prop, &item, &totitem, &free); for(i=0; i<totitem; i++) { if(item[i].identifier[0] && item[i].value == (int)max) { - str= (char*)item[i].name; + str= item[i].name; icon= item[i].icon; } } if(!str) - str= (char*)RNA_property_ui_name(prop); + str= RNA_property_ui_name(prop); if(free) MEM_freeN(item); } else { - str= (char*)RNA_property_ui_name(prop); + str= RNA_property_ui_name(prop); icon= RNA_property_ui_icon(prop); } } @@ -2600,7 +2600,7 @@ static uiBut *ui_def_but_rna(uiBlock *block, int type, int retval, const char *s for(i=0; i<totitem; i++) { if(item[i].identifier[0] && item[i].value == (int)max) { if(item[i].description[0]) - tip= (char*)item[i].description; + tip= item[i].description; break; } } @@ -2611,7 +2611,7 @@ static uiBut *ui_def_but_rna(uiBlock *block, int type, int retval, const char *s } if(!tip) - tip= (char*)RNA_property_ui_description(prop); + tip= RNA_property_ui_description(prop); if(min == max || a1 == -1 || a2 == -1) { if(proptype == PROP_INT) { @@ -2654,7 +2654,7 @@ static uiBut *ui_def_but_rna(uiBlock *block, int type, int retval, const char *s } else { printf("ui_def_but_rna: property not found: %s.%s\n", RNA_struct_identifier(ptr->type), propname); - str= (char*)propname; + str= propname; } /* now create button */ diff --git a/source/blender/editors/interface/interface_draw.c b/source/blender/editors/interface/interface_draw.c index cf6b0652b22..4ea0c01d15c 100644 --- a/source/blender/editors/interface/interface_draw.c +++ b/source/blender/editors/interface/interface_draw.c @@ -1576,6 +1576,7 @@ void uiDrawBoxShadow(unsigned char alpha, float minx, float miny, float maxx, fl void ui_dropshadow(rctf *rct, float radius, float aspect, int select) { + int i; float rad; float a; char alpha= 2; @@ -1586,9 +1587,10 @@ void ui_dropshadow(rctf *rct, float radius, float aspect, int select) rad= (rct->ymax-rct->ymin-10.0f)/2.0f; else rad= radius; - - if(select) a= 12.0f*aspect; else a= 12.0f*aspect; - for(; a>0.0f; a-=aspect) { + + i= 12; + if(select) a= i*aspect; else a= i*aspect; + for(; i--; a-=aspect) { /* alpha ranges from 2 to 20 or so */ glColor4ub(0, 0, 0, alpha); alpha+= 2; diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index d49e7866268..b802098ff10 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -4115,7 +4115,7 @@ static int ui_but_menu(bContext *C, uiBut *but) button_timers_tooltip_remove(C, but); if(but->rnaprop) - name= (char*)RNA_property_ui_name(but->rnaprop); + name= RNA_property_ui_name(but->rnaprop); else if (but->optype) name= but->optype->name; else @@ -5238,8 +5238,15 @@ static int ui_handle_button_event(bContext *C, wmEvent *event, uiBut *but) retval= WM_UI_HANDLER_CONTINUE; } else if(data->state == BUTTON_STATE_MENU_OPEN) { + /* check for exit because of mouse-over another button */ switch(event->type) { - case MOUSEMOVE: { + case MOUSEMOVE: + + if(data->menu && data->menu->region) + if(ui_mouse_inside_region(data->menu->region, event->x, event->y)) + break; + + { uiBut *bt= ui_but_find_mouse_over(ar, event->x, event->y); if(bt && bt->active != data) { diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c index d67946752da..18bee084f40 100644 --- a/source/blender/editors/interface/interface_layout.c +++ b/source/blender/editors/interface/interface_layout.c @@ -26,6 +26,7 @@ #include <math.h> #include <stdlib.h> #include <string.h> +#include <assert.h> #include "MEM_guardedalloc.h" @@ -345,7 +346,7 @@ static void ui_item_array(uiLayout *layout, uiBlock *block, const char *name, in uiBlockSetCurLayout(block, sub); /* create label */ - if(strcmp(name, "") != 0) + if(name[0]) uiDefBut(block, LABEL, 0, name, 0, 0, w, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, ""); /* create buttons */ @@ -464,12 +465,12 @@ static void ui_item_enum_expand(uiLayout *layout, uiBlock *block, PointerRNA *pt if(!item[a].identifier[0]) continue; - name= (!uiname || uiname[0])? (char*)item[a].name: ""; + name= (!uiname || uiname[0])? item[a].name: ""; icon= item[a].icon; value= item[a].value; itemw= ui_text_icon_width(block->curlayout, name, icon, 0); - if(icon && strcmp(name, "") != 0 && !icon_only) + if(icon && name[0] && !icon_only) but= uiDefIconTextButR(block, ROW, 0, icon, name, 0, 0, itemw, h, ptr, identifier, -1, 0, value, -1, -1, NULL); else if(icon) but= uiDefIconButR(block, ROW, 0, icon, 0, 0, itemw, h, ptr, identifier, -1, 0, value, -1, -1, NULL); @@ -508,7 +509,7 @@ static uiBut *ui_item_with_label(uiLayout *layout, uiBlock *block, const char *n sub= uiLayoutRow(layout, 0); uiBlockSetCurLayout(block, sub); - if(strcmp(name, "") != 0) { + if(name[0]) { /* XXX UI_GetStringWidth is not accurate labelw= UI_GetStringWidth(name); CLAMP(labelw, w/4, 3*w/4);*/ @@ -596,7 +597,7 @@ static void ui_item_disabled(uiLayout *layout, const char *name) w= ui_text_icon_width(layout, name, 0, 0); - but= uiDefBut(block, LABEL, 0, (char*)name, 0, 0, w, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, ""); + but= uiDefBut(block, LABEL, 0, name, 0, 0, w, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, ""); but->flag |= UI_BUT_DISABLED; but->lock = 1; but->lockstr = ""; @@ -628,13 +629,15 @@ PointerRNA uiItemFullO(uiLayout *layout, const char *idname, const char *name, i if (flag & UI_ITEM_R_NO_BG) uiBlockSetEmboss(block, UI_EMBOSSN); - if(icon && strcmp(name, "") != 0) - but= uiDefIconTextButO(block, BUT, ot->idname, context, icon, (char*)name, 0, 0, w, UI_UNIT_Y, NULL); + if(icon && name[0]) + but= uiDefIconTextButO(block, BUT, ot->idname, context, icon, name, 0, 0, w, UI_UNIT_Y, NULL); else if(icon) but= uiDefIconButO(block, BUT, ot->idname, context, icon, 0, 0, w, UI_UNIT_Y, NULL); else - but= uiDefButO(block, BUT, ot->idname, context, (char*)name, 0, 0, w, UI_UNIT_Y, NULL); - + but= uiDefButO(block, BUT, ot->idname, context, name, 0, 0, w, UI_UNIT_Y, NULL); + + assert(but->optype != NULL); + /* text alignment for toolbar buttons */ if((layout->root->type == UI_LAYOUT_TOOLBAR) && !icon) but->flag |= UI_TEXT_LEFT; @@ -680,7 +683,7 @@ static const char *ui_menu_enumpropname(uiLayout *layout, const char *opname, co RNA_property_enum_items(layout->root->block->evil_C, &ptr, prop, &item, &totitem, &free); if(RNA_enum_name(item, retval, &name)) { if(free) MEM_freeN(item); - return (char*)name; + return name; } if(free) @@ -740,10 +743,10 @@ void uiItemsFullEnumO(uiLayout *layout, const char *opname, const char *propname tptr.data= IDP_CopyProperty(properties); RNA_enum_set(&tptr, propname, item[i].value); - uiItemFullO(column, opname, (char*)item[i].name, item[i].icon, tptr.data, context, flag); + uiItemFullO(column, opname, item[i].name, item[i].icon, tptr.data, context, flag); } else - uiItemEnumO(column, opname, (char*)item[i].name, item[i].icon, propname, item[i].value); + uiItemEnumO(column, opname, item[i].name, item[i].icon, propname, item[i].value); } else { if(item[i].name) { @@ -753,7 +756,7 @@ void uiItemsFullEnumO(uiLayout *layout, const char *opname, const char *propname block->flag |= UI_BLOCK_NO_FLIP; } - uiItemL(column, (char*)item[i].name, ICON_NULL); + uiItemL(column, item[i].name, ICON_NULL); bt= block->buttons.last; bt->flag= UI_TEXT_LEFT; } @@ -889,7 +892,7 @@ static void ui_item_rna_size(uiLayout *layout, const char *name, int icon, Point h += len*UI_UNIT_Y; } else if(ui_layout_vary_direction(layout) == UI_ITEM_VARY_X) { - if(type == PROP_BOOLEAN && strcmp(name, "") != 0) + if(type == PROP_BOOLEAN && name[0]) w += UI_UNIT_X/5; else if(type == PROP_ENUM) w += UI_UNIT_X/4; @@ -917,7 +920,7 @@ void uiItemFullR(uiLayout *layout, PointerRNA *ptr, PropertyRNA *prop, int index /* set name and icon */ if(!name) - name= (char*)RNA_property_ui_name(prop); + name= RNA_property_ui_name(prop); if(icon == ICON_NULL) icon= RNA_property_ui_icon(prop); @@ -959,9 +962,9 @@ void uiItemFullR(uiLayout *layout, PointerRNA *ptr, PropertyRNA *prop, int index ui_item_array(layout, block, name, icon, ptr, prop, len, 0, 0, w, h, expand, slider, toggle, icon_only); /* enum item */ else if(type == PROP_ENUM && index == RNA_ENUM_VALUE) { - char *identifier= (char*)RNA_property_identifier(prop); + const char *identifier= RNA_property_identifier(prop); - if(icon && strcmp(name, "") != 0 && !icon_only) + if(icon && name[0] && !icon_only) uiDefIconTextButR(block, ROW, 0, icon, name, 0, 0, w, h, ptr, identifier, -1, 0, value, -1, -1, NULL); else if(icon) uiDefIconButR(block, ROW, 0, icon, 0, 0, w, h, ptr, identifier, -1, 0, value, -1, -1, NULL); @@ -981,7 +984,7 @@ void uiItemFullR(uiLayout *layout, PointerRNA *ptr, PropertyRNA *prop, int index } /* single button */ else { - but= uiDefAutoButR(block, ptr, prop, index, (char*)name, icon, 0, 0, w, h); + but= uiDefAutoButR(block, ptr, prop, index, name, icon, 0, 0, w, h); if(slider && but->type==NUM) but->type= NUMSLI; @@ -1046,7 +1049,7 @@ void uiItemEnumR_string(uiLayout *layout, struct PointerRNA *ptr, const char *pr for(a=0; item[a].identifier; a++) { if(item[a].value == ivalue) { - uiItemFullR(layout, ptr, prop, RNA_ENUM_VALUE, ivalue, 0, name ? name : (char*)item[a].name, icon ? icon : item[a].icon); + uiItemFullR(layout, ptr, prop, RNA_ENUM_VALUE, ivalue, 0, name ? name : item[a].name, icon ? icon : item[a].icon); break; } } @@ -1078,7 +1081,7 @@ void uiItemsEnumR(uiLayout *layout, struct PointerRNA *ptr, const char *propname for(i=0; i<totitem; i++) { if(item[i].identifier[0]) { - uiItemEnumR(column, (char*)item[i].name, ICON_NULL, ptr, propname, item[i].value); + uiItemEnumR(column, item[i].name, ICON_NULL, ptr, propname, item[i].value); } else { if(item[i].name) { @@ -1088,7 +1091,7 @@ void uiItemsEnumR(uiLayout *layout, struct PointerRNA *ptr, const char *propname block->flag |= UI_BLOCK_NO_FLIP; } - uiItemL(column, (char*)item[i].name, ICON_NULL); + uiItemL(column, item[i].name, ICON_NULL); bt= block->buttons.last; bt->flag= UI_TEXT_LEFT; } @@ -1285,7 +1288,7 @@ void uiItemPointerR(uiLayout *layout, struct PointerRNA *ptr, const char *propna icon= RNA_struct_ui_icon(icontype); } if(!name) - name= (char*)RNA_property_ui_name(prop); + name= RNA_property_ui_name(prop); /* create button */ block= uiLayoutGetBlock(layout); @@ -1330,11 +1333,11 @@ static void ui_item_menu(uiLayout *layout, const char *name, int icon, uiMenuCre w -= 10; if(name[0] && icon) - but= uiDefIconTextMenuBut(block, func, arg, icon, (char*)name, 0, 0, w, h, ""); + but= uiDefIconTextMenuBut(block, func, arg, icon, name, 0, 0, w, h, ""); else if(icon) but= uiDefIconMenuBut(block, func, arg, icon, 0, 0, w, h, ""); else - but= uiDefMenuBut(block, func, arg, (char*)name, 0, 0, w, h, ""); + but= uiDefMenuBut(block, func, arg, name, 0, 0, w, h, ""); if(argN) { /* ugly .. */ but->poin= (char*)but; @@ -1384,7 +1387,7 @@ static uiBut *uiItemL_(uiLayout *layout, const char *name, int icon) w= ui_text_icon_width(layout, name, icon, 0); - if(icon && strcmp(name, "") != 0) + if(icon && name[0]) but= uiDefIconTextBut(block, LABEL, 0, icon, name, 0, 0, w, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, ""); else if(icon) but= uiDefIconBut(block, LABEL, 0, icon, 0, 0, w, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, ""); @@ -1426,12 +1429,12 @@ void uiItemV(uiLayout *layout, const char *name, int icon, int argval) w= ui_text_icon_width(layout, name, icon, 0); - if(icon && strcmp(name, "") != 0) - uiDefIconTextButF(block, BUTM, 0, icon, (char*)name, 0, 0, w, UI_UNIT_Y, retvalue, 0.0, 0.0, 0, argval, ""); + if(icon && name[0]) + uiDefIconTextButF(block, BUTM, 0, icon, name, 0, 0, w, UI_UNIT_Y, retvalue, 0.0, 0.0, 0, argval, ""); else if(icon) uiDefIconButF(block, BUTM, 0, icon, 0, 0, w, UI_UNIT_Y, retvalue, 0.0, 0.0, 0, argval, ""); else - uiDefButF(block, BUTM, 0, (char*)name, 0, 0, w, UI_UNIT_Y, retvalue, 0.0, 0.0, 0, argval, ""); + uiDefButF(block, BUTM, 0, name, 0, 0, w, UI_UNIT_Y, retvalue, 0.0, 0.0, 0, argval, ""); } /* separator item */ @@ -1510,7 +1513,7 @@ void uiItemMenuEnumR(uiLayout *layout, struct PointerRNA *ptr, const char *propn } if(!name) - name= (char*)RNA_property_ui_name(prop); + name= RNA_property_ui_name(prop); if(layout->root->type == UI_LAYOUT_MENU && !icon) icon= ICON_BLANK1; diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c index 4b855b88ece..e8a383dbe15 100644 --- a/source/blender/editors/interface/interface_regions.c +++ b/source/blender/editors/interface/interface_regions.c @@ -2231,7 +2231,7 @@ uiPopupMenu *uiPupMenuBegin(bContext *C, const char *title, int icon) uiDefIconTextBut(pup->block, LABEL, 0, icon, titlestr, 0, 0, 200, MENU_BUTTON_HEIGHT, NULL, 0.0, 0.0, 0, 0, ""); } else { - but= uiDefBut(pup->block, LABEL, 0, (char*)title, 0, 0, 200, MENU_BUTTON_HEIGHT, NULL, 0.0, 0.0, 0, 0, ""); + but= uiDefBut(pup->block, LABEL, 0, title, 0, 0, 200, MENU_BUTTON_HEIGHT, NULL, 0.0, 0.0, 0, 0, ""); but->flag= UI_TEXT_LEFT; } } diff --git a/source/blender/editors/interface/interface_utils.c b/source/blender/editors/interface/interface_utils.c index 9a6a54bb8ef..842dc40a39f 100644 --- a/source/blender/editors/interface/interface_utils.c +++ b/source/blender/editors/interface/interface_utils.c @@ -82,7 +82,7 @@ uiBut *uiDefAutoButR(uiBlock *block, PointerRNA *ptr, PropertyRNA *prop, int ind but= uiDefButR(block, NUM, 0, name, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL); break; case PROP_ENUM: - if(icon && name && strcmp(name, "") == 0) + if(icon && name && name[0] == '\0') but= uiDefIconButR(block, MENU, 0, icon, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL); else if(icon) but= uiDefIconTextButR(block, MENU, 0, icon, NULL, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL); @@ -90,7 +90,7 @@ uiBut *uiDefAutoButR(uiBlock *block, PointerRNA *ptr, PropertyRNA *prop, int ind but= uiDefButR(block, MENU, 0, NULL, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL); break; case PROP_STRING: - if(icon && name && strcmp(name, "") == 0) + if(icon && name && name[0] == '\0') but= uiDefIconButR(block, TEX, 0, icon, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL); else if(icon) but= uiDefIconTextButR(block, TEX, 0, icon, name, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL); diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c index 4224b0b080f..b62108136be 100644 --- a/source/blender/editors/interface/interface_widgets.c +++ b/source/blender/editors/interface/interface_widgets.c @@ -1110,7 +1110,10 @@ static void widget_draw_text_icon(uiFontStyle *fstyle, uiWidgetColors *wcol, uiB if(but==NULL) return; /* clip but->drawstr to fit in available space */ - if (ELEM4(but->type, NUM, NUMABS, NUMSLI, SLI)) { + if (but->editstr && but->pos >= 0) { + ui_text_leftclip(fstyle, but, rect); + } + else if (ELEM4(but->type, NUM, NUMABS, NUMSLI, SLI)) { ui_text_label_rightclip(fstyle, but, rect); } else if (ELEM(but->type, TEX, SEARCH_MENU)) { diff --git a/source/blender/editors/interface/view2d.c b/source/blender/editors/interface/view2d.c index ae414c6e557..3c74c38dfb6 100644 --- a/source/blender/editors/interface/view2d.c +++ b/source/blender/editors/interface/view2d.c @@ -255,8 +255,6 @@ void UI_view2d_region_reinit(View2D *v2d, short type, int winx, int winy) /* absolutely no scrollers allowed */ v2d->scroll= 0; - /* pixel offsets need to be applied for smooth UI controls */ - v2d->flag |= (V2D_PIXELOFS_X|V2D_PIXELOFS_Y); } break; @@ -980,10 +978,6 @@ void UI_view2d_view_ortho(View2D *v2d) /* pixel offsets (-0.375f) are needed to get 1:1 correspondance with pixels for smooth UI drawing, * but only applied where requsted */ - /* XXX ton: fix this! */ - xofs= 0.0; // (v2d->flag & V2D_PIXELOFS_X) ? 0.375f : 0.0f; - yofs= 0.0; // (v2d->flag & V2D_PIXELOFS_Y) ? 0.375f : 0.0f; - /* XXX brecht: instead of zero at least use a tiny offset, otherwise * pixel rounding is effectively random due to float inaccuracy */ xofs= 0.001f*(v2d->cur.xmax - v2d->cur.xmin)/(v2d->mask.xmax - v2d->mask.xmin); @@ -992,6 +986,19 @@ void UI_view2d_view_ortho(View2D *v2d) /* apply mask-based adjustments to cur rect (due to scrollers), to eliminate scaling artifacts */ view2d_map_cur_using_mask(v2d, &curmasked); + curmasked.xmin-= xofs; curmasked.xmax-=xofs; + curmasked.ymin-= yofs; curmasked.ymax-=yofs; + + /* XXX ton: this flag set by outliner, for icons */ + if(v2d->flag & V2D_PIXELOFS_X) { + curmasked.xmin= floor(curmasked.xmin) + 0.001f; + curmasked.xmax= floor(curmasked.xmax) + 0.001f; + } + if(v2d->flag & V2D_PIXELOFS_Y) { + curmasked.ymin= floor(curmasked.ymin) + 0.001f; + curmasked.ymax= floor(curmasked.ymax) + 0.001f; + } + /* set matrix on all appropriate axes */ wmOrtho2(curmasked.xmin-xofs, curmasked.xmax-xofs, curmasked.ymin-yofs, curmasked.ymax-yofs); diff --git a/source/blender/editors/mesh/Makefile b/source/blender/editors/mesh/Makefile deleted file mode 100644 index be57f72329a..00000000000 --- a/source/blender/editors/mesh/Makefile +++ /dev/null @@ -1,56 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_mesh -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I$(NAN_ELBEEM)/include - -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../gpu -CPPFLAGS += -I../../render/extern/include - -# own include - -CPPFLAGS += -I../include diff --git a/source/blender/editors/mesh/editmesh.c b/source/blender/editors/mesh/editmesh.c index 581a678b5c4..d1efb60b618 100644 --- a/source/blender/editors/mesh/editmesh.c +++ b/source/blender/editors/mesh/editmesh.c @@ -1311,7 +1311,7 @@ void load_editMesh(Scene *scene, Object *obedit) mesh_calc_normals(me->mvert, me->totvert, me->mface, me->totface, NULL); /* topology could be changed, ensure mdisps are ok */ - multires_topology_changed(obedit); + multires_topology_changed(scene, obedit); } void remake_editMesh(Scene *scene, Object *ob) diff --git a/source/blender/editors/mesh/editmesh_lib.c b/source/blender/editors/mesh/editmesh_lib.c index 72c0e7a9a64..9ec50fdd6b3 100644 --- a/source/blender/editors/mesh/editmesh_lib.c +++ b/source/blender/editors/mesh/editmesh_lib.c @@ -360,7 +360,7 @@ void EM_editselection_plane(float *plane, EditSelection *ese) however selecting different edges can swap the direction of the y axis. this makes it less likely for the y axis of the manipulator (running along the edge).. to flip less often. - at least its more pradictable */ + at least its more predictable */ if (eed->v2->co[1] > eed->v1->co[1]) /*check which to do first */ sub_v3_v3v3(plane, eed->v2->co, eed->v1->co); else diff --git a/source/blender/editors/mesh/editmesh_mods.c b/source/blender/editors/mesh/editmesh_mods.c index 818f92c73c6..6488dc17fb4 100644 --- a/source/blender/editors/mesh/editmesh_mods.c +++ b/source/blender/editors/mesh/editmesh_mods.c @@ -3220,7 +3220,7 @@ void MESH_OT_faces_select_linked_flat(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* props */ - RNA_def_float(ot->srna, "sharpness", 0.0f, 0.0f, FLT_MAX, "sharpness", "", 0.0f, 180.0f); + RNA_def_float(ot->srna, "sharpness", 135.0f, 0.0f, FLT_MAX, "sharpness", "", 0.0f, 180.0f); } void select_non_manifold(EditMesh *em, wmOperator *op ) diff --git a/source/blender/editors/mesh/mesh_data.c b/source/blender/editors/mesh/mesh_data.c index 424d2b273e6..5f03edb38a2 100644 --- a/source/blender/editors/mesh/mesh_data.c +++ b/source/blender/editors/mesh/mesh_data.c @@ -316,6 +316,7 @@ void MESH_OT_uv_texture_add(wmOperatorType *ot) static int drop_named_image_invoke(bContext *C, wmOperator *op, wmEvent *event) { Scene *scene= CTX_data_scene(C); + View3D *v3d= CTX_wm_view3d(C); Base *base= ED_view3d_give_base_under_cursor(C, event->mval); Image *ima= NULL; Mesh *me; @@ -367,6 +368,10 @@ static int drop_named_image_invoke(bContext *C, wmOperator *op, wmEvent *event) me->edit_mesh= NULL; } + /* dummie drop support; ensure view shows a result :) */ + if(v3d) + v3d->flag2 |= V3D_SOLID_TEX; + WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data); return OPERATOR_FINISHED; diff --git a/source/blender/editors/mesh/mesh_ops.c b/source/blender/editors/mesh/mesh_ops.c index b2cb3e06de3..e0a91048a2c 100644 --- a/source/blender/editors/mesh/mesh_ops.c +++ b/source/blender/editors/mesh/mesh_ops.c @@ -247,7 +247,7 @@ void ED_keymap_mesh(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "MESH_OT_select_linked_pick", LKEY, KM_PRESS, 0, 0); RNA_boolean_set(WM_keymap_add_item(keymap, "MESH_OT_select_linked_pick", LKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "deselect", 1); - RNA_float_set(WM_keymap_add_item(keymap, "MESH_OT_faces_select_linked_flat", FKEY, KM_PRESS, (KM_CTRL|KM_SHIFT|KM_ALT), 0)->ptr,"sharpness",135.0); + WM_keymap_add_item(keymap, "MESH_OT_faces_select_linked_flat", FKEY, KM_PRESS, (KM_CTRL|KM_SHIFT|KM_ALT), 0); WM_keymap_add_item(keymap, "MESH_OT_select_similar", GKEY, KM_PRESS, KM_SHIFT, 0); diff --git a/source/blender/editors/metaball/Makefile b/source/blender/editors/metaball/Makefile deleted file mode 100644 index c28ef59e9db..00000000000 --- a/source/blender/editors/metaball/Makefile +++ /dev/null @@ -1,56 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_metaball -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I$(NAN_ELBEEM)/include - -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../gpu -CPPFLAGS += -I../../render/extern/include - -# own include - -CPPFLAGS += -I../include diff --git a/source/blender/editors/object/Makefile b/source/blender/editors/object/Makefile deleted file mode 100644 index 4694653b115..00000000000 --- a/source/blender/editors/object/Makefile +++ /dev/null @@ -1,56 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_object -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(OPENGL_HEADERS) - -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../python -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../ikplugin -CPPFLAGS += -I../../gpu -CPPFLAGS += -I../../render/extern/include - -# own include - -CPPFLAGS += -I../include diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c index 1465c231f41..94955e3c815 100644 --- a/source/blender/editors/object/object_edit.c +++ b/source/blender/editors/object/object_edit.c @@ -50,6 +50,7 @@ #include "DNA_property_types.h" #include "DNA_scene_types.h" #include "DNA_object_types.h" +#include "DNA_object_force.h" #include "DNA_meshdata_types.h" #include "DNA_vfont_types.h" @@ -59,6 +60,7 @@ #include "BKE_constraint.h" #include "BKE_context.h" #include "BKE_curve.h" +#include "BKE_effect.h" #include "BKE_depsgraph.h" #include "BKE_font.h" #include "BKE_image.h" @@ -1500,6 +1502,39 @@ void copy_attr_menu(Main *bmain, Scene *scene, View3D *v3d) copy_attr(bmain, scene, v3d, event); } +/* ******************* force field toggle operator ***************** */ + +static int forcefield_toggle_exec(bContext *C, wmOperator *UNUSED(op)) +{ + Object *ob = CTX_data_active_object(C); + + if(ob->pd == NULL) + ob->pd = object_add_collision_fields(PFIELD_FORCE); + + if(ob->pd->forcefield == 0) + ob->pd->forcefield = PFIELD_FORCE; + else + ob->pd->forcefield = 0; + + return OPERATOR_FINISHED; +} + +void OBJECT_OT_forcefield_toggle(wmOperatorType *ot) +{ + + /* identifiers */ + ot->name= "Toggle Force Field"; + ot->description = "Toggle object's force field"; + ot->idname= "OBJECT_OT_forcefield_toggle"; + + /* api callbacks */ + ot->exec= forcefield_toggle_exec; + ot->poll= ED_operator_object_active_editable; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + /* ********************************************** */ /* Motion Paths */ diff --git a/source/blender/editors/object/object_intern.h b/source/blender/editors/object/object_intern.h index 6c0a154090f..ca441e8d634 100644 --- a/source/blender/editors/object/object_intern.h +++ b/source/blender/editors/object/object_intern.h @@ -84,6 +84,7 @@ void OBJECT_OT_shade_smooth(struct wmOperatorType *ot); void OBJECT_OT_shade_flat(struct wmOperatorType *ot); void OBJECT_OT_paths_calculate(struct wmOperatorType *ot); void OBJECT_OT_paths_clear(struct wmOperatorType *ot); +void OBJECT_OT_forcefield_toggle(struct wmOperatorType *ot); void OBJECT_OT_game_property_new(struct wmOperatorType *ot); void OBJECT_OT_game_property_remove(struct wmOperatorType *ot); diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c index 903c40026f7..6662d5b5f0a 100644 --- a/source/blender/editors/object/object_ops.c +++ b/source/blender/editors/object/object_ops.c @@ -77,6 +77,7 @@ void ED_operatortypes_object(void) WM_operatortype_append(OBJECT_OT_shade_flat); WM_operatortype_append(OBJECT_OT_paths_calculate); WM_operatortype_append(OBJECT_OT_paths_clear); + WM_operatortype_append(OBJECT_OT_forcefield_toggle); WM_operatortype_append(OBJECT_OT_parent_set); WM_operatortype_append(OBJECT_OT_parent_no_inverse_set); diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c index 704efb59d3d..b2edd786d50 100644 --- a/source/blender/editors/object/object_relations.c +++ b/source/blender/editors/object/object_relations.c @@ -1301,6 +1301,8 @@ static int make_links_data_exec(bContext *C, wmOperator *op) } CTX_DATA_END; + DAG_scene_sort(bmain, CTX_data_scene(C)); + DAG_ids_flush_update(bmain, 0); WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, CTX_wm_view3d(C)); return OPERATOR_FINISHED; diff --git a/source/blender/editors/object/object_transform.c b/source/blender/editors/object/object_transform.c index 60ea557d36d..1af022c3c6e 100644 --- a/source/blender/editors/object/object_transform.c +++ b/source/blender/editors/object/object_transform.c @@ -66,31 +66,179 @@ /*************************** Clear Transformation ****************************/ -static int object_location_clear_exec(bContext *C, wmOperator *UNUSED(op)) +/* clear location of object */ +static void object_clear_loc(Object *ob) +{ + /* clear location if not locked */ + if ((ob->protectflag & OB_LOCK_LOCX)==0) + ob->loc[0]= ob->dloc[0]= 0.0f; + if ((ob->protectflag & OB_LOCK_LOCY)==0) + ob->loc[1]= ob->dloc[1]= 0.0f; + if ((ob->protectflag & OB_LOCK_LOCZ)==0) + ob->loc[2]= ob->dloc[2]= 0.0f; +} + +/* clear rotation of object */ +static void object_clear_rot(Object *ob) +{ + /* clear rotations that aren't locked */ + if (ob->protectflag & (OB_LOCK_ROTX|OB_LOCK_ROTY|OB_LOCK_ROTZ|OB_LOCK_ROTW)) { + if (ob->protectflag & OB_LOCK_ROT4D) { + /* perform clamping on a component by component basis */ + if (ob->rotmode == ROT_MODE_AXISANGLE) { + if ((ob->protectflag & OB_LOCK_ROTW) == 0) + ob->rotAngle= ob->drotAngle= 0.0f; + if ((ob->protectflag & OB_LOCK_ROTX) == 0) + ob->rotAxis[0]= ob->drotAxis[0]= 0.0f; + if ((ob->protectflag & OB_LOCK_ROTY) == 0) + ob->rotAxis[1]= ob->drotAxis[1]= 0.0f; + if ((ob->protectflag & OB_LOCK_ROTZ) == 0) + ob->rotAxis[2]= ob->drotAxis[2]= 0.0f; + + /* check validity of axis - axis should never be 0,0,0 (if so, then we make it rotate about y) */ + if (IS_EQ(ob->rotAxis[0], ob->rotAxis[1]) && IS_EQ(ob->rotAxis[1], ob->rotAxis[2])) + ob->rotAxis[1] = 1.0f; + if (IS_EQ(ob->drotAxis[0], ob->drotAxis[1]) && IS_EQ(ob->drotAxis[1], ob->drotAxis[2])) + ob->drotAxis[1]= 1.0f; + } + else if (ob->rotmode == ROT_MODE_QUAT) { + if ((ob->protectflag & OB_LOCK_ROTW) == 0) + ob->quat[0]= ob->dquat[0]= 1.0f; + if ((ob->protectflag & OB_LOCK_ROTX) == 0) + ob->quat[1]= ob->dquat[1]= 0.0f; + if ((ob->protectflag & OB_LOCK_ROTY) == 0) + ob->quat[2]= ob->dquat[2]= 0.0f; + if ((ob->protectflag & OB_LOCK_ROTZ) == 0) + ob->quat[3]= ob->dquat[3]= 0.0f; + + // TODO: does this quat need normalising now? + } + else { + /* the flag may have been set for the other modes, so just ignore the extra flag... */ + if ((ob->protectflag & OB_LOCK_ROTX) == 0) + ob->rot[0]= ob->drot[0]= 0.0f; + if ((ob->protectflag & OB_LOCK_ROTY) == 0) + ob->rot[1]= ob->drot[1]= 0.0f; + if ((ob->protectflag & OB_LOCK_ROTZ) == 0) + ob->rot[2]= ob->drot[2]= 0.0f; + } + } + else { + /* perform clamping using euler form (3-components) */ + // FIXME: deltas are not handled for these cases yet... + float eul[3], oldeul[3], quat1[4] = {0}; + + if (ob->rotmode == ROT_MODE_QUAT) { + QUATCOPY(quat1, ob->quat); + quat_to_eul(oldeul, ob->quat); + } + else if (ob->rotmode == ROT_MODE_AXISANGLE) { + axis_angle_to_eulO(oldeul, EULER_ORDER_DEFAULT, ob->rotAxis, ob->rotAngle); + } + else { + copy_v3_v3(oldeul, ob->rot); + } + + eul[0]= eul[1]= eul[2]= 0.0f; + + if (ob->protectflag & OB_LOCK_ROTX) + eul[0]= oldeul[0]; + if (ob->protectflag & OB_LOCK_ROTY) + eul[1]= oldeul[1]; + if (ob->protectflag & OB_LOCK_ROTZ) + eul[2]= oldeul[2]; + + if (ob->rotmode == ROT_MODE_QUAT) { + eul_to_quat(ob->quat, eul); + /* quaternions flip w sign to accumulate rotations correctly */ + if ((quat1[0]<0.0f && ob->quat[0]>0.0f) || (quat1[0]>0.0f && ob->quat[0]<0.0f)) { + mul_qt_fl(ob->quat, -1.0f); + } + } + else if (ob->rotmode == ROT_MODE_AXISANGLE) { + eulO_to_axis_angle(ob->rotAxis, &ob->rotAngle,eul, EULER_ORDER_DEFAULT); + } + else { + copy_v3_v3(ob->rot, eul); + } + } + } // Duplicated in source/blender/editors/armature/editarmature.c + else { + if (ob->rotmode == ROT_MODE_QUAT) { + ob->quat[1]=ob->quat[2]=ob->quat[3]= 0.0f; + ob->quat[0]= 1.0f; + + ob->dquat[1]=ob->dquat[2]=ob->dquat[3]= 0.0f; + ob->dquat[0]= 1.0f; + } + else if (ob->rotmode == ROT_MODE_AXISANGLE) { + /* by default, make rotation of 0 radians around y-axis (roll) */ + ob->rotAxis[0]=ob->rotAxis[2]=ob->rotAngle= 0.0f; + ob->rotAxis[1]= 1.0f; + + ob->drotAxis[0]=ob->drotAxis[2]=ob->drotAngle= 0.0f; + ob->drotAxis[1]= 1.0f; + } + else { + ob->rot[0]= ob->rot[1]= ob->rot[2]= 0.0f; + + ob->drot[0]= ob->drot[1]= ob->drot[2]= 0.0f; + } + } +} + +/* clear scale of object */ +static void object_clear_scale(Object *ob) +{ + /* clear scale factors which are not locked */ + if ((ob->protectflag & OB_LOCK_SCALEX)==0) { + ob->dsize[0]= 0.0f; + ob->size[0]= 1.0f; + } + if ((ob->protectflag & OB_LOCK_SCALEY)==0) { + ob->dsize[1]= 0.0f; + ob->size[1]= 1.0f; + } + if ((ob->protectflag & OB_LOCK_SCALEZ)==0) { + ob->dsize[2]= 0.0f; + ob->size[2]= 1.0f; + } +} + +/* --------------- */ + +/* generic exec for clear-transform operators */ +static int object_clear_transform_generic_exec(bContext *C, wmOperator *op, + void (*clear_func)(Object*), const char default_ksName[]) { Main *bmain = CTX_data_main(C); - Scene *scene = CTX_data_scene(C); + Scene *scene= CTX_data_scene(C); + KeyingSet *ks; + + /* sanity checks */ + if ELEM(NULL, clear_func, default_ksName) { + BKE_report(op->reports, RPT_ERROR, "Programming error: missing clear transform func or Keying Set Name"); + return OPERATOR_CANCELLED; + } /* get KeyingSet to use */ - KeyingSet *ks = ANIM_get_keyingset_for_autokeying(scene, "Location"); + ks = ANIM_get_keyingset_for_autokeying(scene, default_ksName); - /* clear location of selected objects if not in weight-paint mode */ - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { + /* operate on selected objects only if they aren't in weight-paint mode + * (so that object-transform clearing won't be applied at same time as bone-clearing) + */ + CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) + { if (!(ob->mode & OB_MODE_WEIGHT_PAINT)) { - /* clear location if not locked */ - if ((ob->protectflag & OB_LOCK_LOCX)==0) - ob->loc[0]= ob->dloc[0]= 0.0f; - if ((ob->protectflag & OB_LOCK_LOCY)==0) - ob->loc[1]= ob->dloc[1]= 0.0f; - if ((ob->protectflag & OB_LOCK_LOCZ)==0) - ob->loc[2]= ob->dloc[2]= 0.0f; - + /* run provided clearing function */ + clear_func(ob); + /* auto keyframing */ if (autokeyframe_cfra_can_key(scene, &ob->id)) { ListBase dsources = {NULL, NULL}; /* now insert the keyframe(s) using the Keying Set - * 1) add datasource override for the PoseChannel + * 1) add datasource override for the Object * 2) insert keyframes * 3) free the extra info */ @@ -98,9 +246,10 @@ static int object_location_clear_exec(bContext *C, wmOperator *UNUSED(op)) ANIM_apply_keyingset(C, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA); BLI_freelistN(&dsources); } + + /* tag for updates */ + ob->recalc |= OB_RECALC_OB; } - - ob->recalc |= OB_RECALC_OB; } CTX_DATA_END; @@ -112,6 +261,14 @@ static int object_location_clear_exec(bContext *C, wmOperator *UNUSED(op)) return OPERATOR_FINISHED; } +/* --------------- */ + + +static int object_location_clear_exec(bContext *C, wmOperator *op) +{ + return object_clear_transform_generic_exec(C, op, object_clear_loc, "Location"); +} + void OBJECT_OT_location_clear(wmOperatorType *ot) { /* identifiers */ @@ -127,134 +284,9 @@ void OBJECT_OT_location_clear(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } -static int object_rotation_clear_exec(bContext *C, wmOperator *UNUSED(op)) +static int object_rotation_clear_exec(bContext *C, wmOperator *op) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); - - /* get KeyingSet to use */ - KeyingSet *ks = ANIM_get_keyingset_for_autokeying(scene, "Rotation"); - - /* clear rotation of selected objects if not in weight-paint mode */ - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { - if(!(ob->mode & OB_MODE_WEIGHT_PAINT)) { - /* clear rotations that aren't locked */ - if (ob->protectflag & (OB_LOCK_ROTX|OB_LOCK_ROTY|OB_LOCK_ROTZ|OB_LOCK_ROTW)) { - if (ob->protectflag & OB_LOCK_ROT4D) { - /* perform clamping on a component by component basis */ - if (ob->rotmode == ROT_MODE_AXISANGLE) { - if ((ob->protectflag & OB_LOCK_ROTW) == 0) - ob->rotAngle= 0.0f; - if ((ob->protectflag & OB_LOCK_ROTX) == 0) - ob->rotAxis[0]= 0.0f; - if ((ob->protectflag & OB_LOCK_ROTY) == 0) - ob->rotAxis[1]= 0.0f; - if ((ob->protectflag & OB_LOCK_ROTZ) == 0) - ob->rotAxis[2]= 0.0f; - - /* check validity of axis - axis should never be 0,0,0 (if so, then we make it rotate about y) */ - if (IS_EQ(ob->rotAxis[0], ob->rotAxis[1]) && IS_EQ(ob->rotAxis[1], ob->rotAxis[2])) - ob->rotAxis[1] = 1.0f; - } - else if (ob->rotmode == ROT_MODE_QUAT) { - if ((ob->protectflag & OB_LOCK_ROTW) == 0) - ob->quat[0]= 1.0f; - if ((ob->protectflag & OB_LOCK_ROTX) == 0) - ob->quat[1]= 0.0f; - if ((ob->protectflag & OB_LOCK_ROTY) == 0) - ob->quat[2]= 0.0f; - if ((ob->protectflag & OB_LOCK_ROTZ) == 0) - ob->quat[3]= 0.0f; - } - else { - /* the flag may have been set for the other modes, so just ignore the extra flag... */ - if ((ob->protectflag & OB_LOCK_ROTX) == 0) - ob->rot[0]= 0.0f; - if ((ob->protectflag & OB_LOCK_ROTY) == 0) - ob->rot[1]= 0.0f; - if ((ob->protectflag & OB_LOCK_ROTZ) == 0) - ob->rot[2]= 0.0f; - } - } - else { - /* perform clamping using euler form (3-components) */ - float eul[3], oldeul[3], quat1[4] = {0}; - - if (ob->rotmode == ROT_MODE_QUAT) { - QUATCOPY(quat1, ob->quat); - quat_to_eul( oldeul,ob->quat); - } - else if (ob->rotmode == ROT_MODE_AXISANGLE) { - axis_angle_to_eulO( oldeul, EULER_ORDER_DEFAULT,ob->rotAxis, ob->rotAngle); - } - else { - copy_v3_v3(oldeul, ob->rot); - } - - eul[0]= eul[1]= eul[2]= 0.0f; - - if (ob->protectflag & OB_LOCK_ROTX) - eul[0]= oldeul[0]; - if (ob->protectflag & OB_LOCK_ROTY) - eul[1]= oldeul[1]; - if (ob->protectflag & OB_LOCK_ROTZ) - eul[2]= oldeul[2]; - - if (ob->rotmode == ROT_MODE_QUAT) { - eul_to_quat( ob->quat,eul); - /* quaternions flip w sign to accumulate rotations correctly */ - if ((quat1[0]<0.0f && ob->quat[0]>0.0f) || (quat1[0]>0.0f && ob->quat[0]<0.0f)) { - mul_qt_fl(ob->quat, -1.0f); - } - } - else if (ob->rotmode == ROT_MODE_AXISANGLE) { - eulO_to_axis_angle( ob->rotAxis, &ob->rotAngle,eul, EULER_ORDER_DEFAULT); - } - else { - copy_v3_v3(ob->rot, eul); - } - } - } // Duplicated in source/blender/editors/armature/editarmature.c - else { - if (ob->rotmode == ROT_MODE_QUAT) { - ob->quat[1]=ob->quat[2]=ob->quat[3]= 0.0f; - ob->quat[0]= 1.0f; - } - else if (ob->rotmode == ROT_MODE_AXISANGLE) { - /* by default, make rotation of 0 radians around y-axis (roll) */ - ob->rotAxis[0]=ob->rotAxis[2]=ob->rotAngle= 0.0f; - ob->rotAxis[1]= 1.0f; - } - else { - ob->rot[0]= ob->rot[1]= ob->rot[2]= 0.0f; - } - } - - /* auto keyframing */ - if (autokeyframe_cfra_can_key(scene, &ob->id)) { - ListBase dsources = {NULL, NULL}; - - /* now insert the keyframe(s) using the Keying Set - * 1) add datasource override for the PoseChannel - * 2) insert keyframes - * 3) free the extra info - */ - ANIM_relative_keyingset_add_source(&dsources, &ob->id, NULL, NULL); - ANIM_apply_keyingset(C, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA); - BLI_freelistN(&dsources); - } - } - - ob->recalc |= OB_RECALC_OB; - } - CTX_DATA_END; - - /* this is needed so children are also updated */ - DAG_ids_flush_update(bmain, 0); - - WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); - - return OPERATOR_FINISHED; + return object_clear_transform_generic_exec(C, op, object_clear_rot, "Rotation"); } void OBJECT_OT_rotation_clear(wmOperatorType *ot) @@ -272,55 +304,9 @@ void OBJECT_OT_rotation_clear(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } -static int object_scale_clear_exec(bContext *C, wmOperator *UNUSED(op)) +static int object_scale_clear_exec(bContext *C, wmOperator *op) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); - - /* get KeyingSet to use */ - KeyingSet *ks = ANIM_get_keyingset_for_autokeying(scene, "Scaling"); - - /* clear scales of selected objects if not in weight-paint mode */ - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { - if(!(ob->mode & OB_MODE_WEIGHT_PAINT)) { - /* clear scale factors which are not locked */ - if ((ob->protectflag & OB_LOCK_SCALEX)==0) { - ob->dsize[0]= 0.0f; - ob->size[0]= 1.0f; - } - if ((ob->protectflag & OB_LOCK_SCALEY)==0) { - ob->dsize[1]= 0.0f; - ob->size[1]= 1.0f; - } - if ((ob->protectflag & OB_LOCK_SCALEZ)==0) { - ob->dsize[2]= 0.0f; - ob->size[2]= 1.0f; - } - - /* auto keyframing */ - if (autokeyframe_cfra_can_key(scene, &ob->id)) { - ListBase dsources = {NULL, NULL}; - - /* now insert the keyframe(s) using the Keying Set - * 1) add datasource override for the PoseChannel - * 2) insert keyframes - * 3) free the extra info - */ - ANIM_relative_keyingset_add_source(&dsources, &ob->id, NULL, NULL); - ANIM_apply_keyingset(C, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA); - BLI_freelistN(&dsources); - } - } - ob->recalc |= OB_RECALC_OB; - } - CTX_DATA_END; - - /* this is needed so children are also updated */ - DAG_ids_flush_update(bmain, 0); - - WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); - - return OPERATOR_FINISHED; + return object_clear_transform_generic_exec(C, op, object_clear_scale, "Scaling"); } void OBJECT_OT_scale_clear(wmOperatorType *ot) @@ -338,14 +324,18 @@ void OBJECT_OT_scale_clear(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } +/* --------------- */ + static int object_origin_clear_exec(bContext *C, wmOperator *UNUSED(op)) { Main *bmain= CTX_data_main(C); - float *v1, *v3, mat[3][3]; - int armature_clear= 0; + float *v1, *v3; + float mat[3][3]; - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { - if(ob->parent) { + CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) + { + if (ob->parent) { + /* vectors pointed to by v1 and v3 will get modified */ v1= ob->loc; v3= ob->parentinv[3]; @@ -357,8 +347,7 @@ static int object_origin_clear_exec(bContext *C, wmOperator *UNUSED(op)) } CTX_DATA_END; - if(armature_clear==0) /* in this case flush was done */ - DAG_ids_flush_update(bmain, 0); + DAG_ids_flush_update(bmain, 0); WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); diff --git a/source/blender/editors/physics/Makefile b/source/blender/editors/physics/Makefile deleted file mode 100644 index 9ffc3a5b372..00000000000 --- a/source/blender/editors/physics/Makefile +++ /dev/null @@ -1,62 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_physics -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I$(NAN_ELBEEM)/include - -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../gpu -CPPFLAGS += -I../../render/extern/include - -# own include - -CPPFLAGS += -I../include - -ifeq ($(OS), darwin) - ifeq ($(WITH_BF_OPENMP), true) - CPPFLAGS += -DPARALLEL=1 - endif -endif diff --git a/source/blender/editors/physics/particle_edit.c b/source/blender/editors/physics/particle_edit.c index 93e652023cf..5cf6864cdc8 100644 --- a/source/blender/editors/physics/particle_edit.c +++ b/source/blender/editors/physics/particle_edit.c @@ -484,13 +484,10 @@ static int key_inside_test(PEData *data, float co[3]) static int point_is_selected(PTCacheEditPoint *point) { KEY_K; - int sel; if(point->flag & PEP_HIDE) return 0; - sel= 0; - LOOP_SELECTED_KEYS { return 1; } @@ -773,6 +770,9 @@ static void PE_mirror_particle(Object *ob, DerivedMesh *dm, ParticleSystem *psys if(!mpa) { if(!edit->mirror_cache) PE_update_mirror_cache(ob, psys); + + if(!edit->mirror_cache) + return; /* something went wrong! */ mi= edit->mirror_cache[i]; if(mi == -1) @@ -847,6 +847,9 @@ static void PE_apply_mirror(Object *ob, ParticleSystem *psys) if(!edit->mirror_cache) PE_update_mirror_cache(ob, psys); + if(!edit->mirror_cache) + return; /* something went wrong */ + /* we delay settings the PARS_EDIT_RECALC for mirrored particles * to avoid doing mirror twice */ LOOP_POINTS { @@ -2080,6 +2083,15 @@ static int remove_tagged_particles(Object *ob, ParticleSystem *psys, int mirror) if(new_totpart) { npa= new_pars= MEM_callocN(new_totpart * sizeof(ParticleData), "ParticleData array"); npoint= new_points= MEM_callocN(new_totpart * sizeof(PTCacheEditPoint), "PTCacheEditKey array"); + + if(ELEM(NULL, new_pars, new_points)) { + /* allocation error! */ + if(new_pars) + MEM_freeN(new_pars); + if(new_points) + MEM_freeN(new_points); + return 0; + } } pa= psys->particles; @@ -3246,14 +3258,12 @@ static int brush_add(PEData *data, short number) ParticleKey key3[3]; KDTreeNearest ptn[3]; int w, maxw; - float maxd, mind, dd, totw=0.0, weight[3]; + float maxd, totw=0.0, weight[3]; psys_particle_on_dm(psmd->dm,psys->part->from,pa->num,pa->num_dmcache,pa->fuv,pa->foffset,co1,0,0,0,0,0); maxw= BLI_kdtree_find_n_nearest(tree,3,co1,NULL,ptn); maxd= ptn[maxw-1].dist; - mind= ptn[0].dist; - dd= maxd - mind; for(w=0; w<maxw; w++) { weight[w]= (float)pow(2.0, (double)(-6.0f * ptn[w].dist / maxd)); diff --git a/source/blender/editors/render/Makefile b/source/blender/editors/render/Makefile deleted file mode 100644 index 8f523b7f5d4..00000000000 --- a/source/blender/editors/render/Makefile +++ /dev/null @@ -1,67 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_render -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -ifeq ($(WITH_QUICKTIME),true) - CPPFLAGS += -I../../quicktime - CPPFLAGS += -DWITH_QUICKTIME -endif - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I$(NAN_ELBEEM)/include - -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../gpu -CPPFLAGS += -I../../render/extern/include - -# own include - -CPPFLAGS += -I../include - -ifeq ($(OS), darwin) - ifeq ($(WITH_BF_OPENMP), true) - CPPFLAGS += -DPARALLEL=1 - endif -endif diff --git a/source/blender/editors/screen/Makefile b/source/blender/editors/screen/Makefile deleted file mode 100644 index 2ab35a32888..00000000000 --- a/source/blender/editors/screen/Makefile +++ /dev/null @@ -1,67 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_screen -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -# not very neat.... -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../python -CPPFLAGS += -I../../render/extern/include -CPPFLAGS += -I../../blenfont -CPPFLAGS += -I../../gpu -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - -# own include - -CPPFLAGS += -I../include - -ifeq ($(WITH_OPENEXR), true) - CPPFLAGS += -DWITH_OPENEXR -endif - -ifeq ($(OS), darwin) - ifeq ($(WITH_BF_OPENMP), true) - CPPFLAGS += -DPARALLEL=1 - endif -endif diff --git a/source/blender/editors/sculpt_paint/Makefile b/source/blender/editors/sculpt_paint/Makefile deleted file mode 100644 index f9f39fea7eb..00000000000 --- a/source/blender/editors/sculpt_paint/Makefile +++ /dev/null @@ -1,56 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_sculpt_paint -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I$(NAN_ELBEEM)/include - -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../gpu -CPPFLAGS += -I../../render/extern/include - -# own include - -CPPFLAGS += -I../include diff --git a/source/blender/editors/sound/Makefile b/source/blender/editors/sound/Makefile deleted file mode 100644 index f51e15627a2..00000000000 --- a/source/blender/editors/sound/Makefile +++ /dev/null @@ -1,53 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_opsound -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - -CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION) - -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I$(NAN_AUDASPACE)/include - -# own include - -CPPFLAGS += -I../include diff --git a/source/blender/editors/sound/sound_ops.c b/source/blender/editors/sound/sound_ops.c index cd6c7e4305d..004fb33f0dd 100644 --- a/source/blender/editors/sound/sound_ops.c +++ b/source/blender/editors/sound/sound_ops.c @@ -29,6 +29,7 @@ #include <string.h> #include <stdlib.h> #include <stdio.h> +#include <stddef.h> #include "MEM_guardedalloc.h" @@ -44,6 +45,7 @@ #include "BKE_context.h" #include "BKE_global.h" +#include "BKE_main.h" #include "BKE_report.h" #include "BKE_packedFile.h" #include "BKE_sound.h" @@ -59,6 +61,8 @@ #include "AUD_C-API.h" +#include "ED_util.h" + #include "sound_intern.h" /******************** open sound operator ********************/ @@ -202,72 +206,17 @@ void SOUND_OT_pack(wmOperatorType *ot) /********************* unpack operator *********************/ -// XXX this function is in image_ops.c too, exactly the same, should be moved to a generally accessible position -static void unpack_menu(bContext *C, const char *opname, const char *abs_name, const char *folder, PackedFile *pf) -{ - uiPopupMenu *pup; - uiLayout *layout; - char line[FILE_MAX + 100]; - char local_name[FILE_MAXDIR + FILE_MAX], fi[FILE_MAX]; - - strcpy(local_name, abs_name); - BLI_splitdirstring(local_name, fi); - sprintf(local_name, "//%s/%s", folder, fi); - - pup= uiPupMenuBegin(C, "Unpack file", ICON_NULL); - layout= uiPupMenuLayout(pup); - - uiItemEnumO(layout, opname, "Remove Pack", 0, "method", PF_REMOVE); - - if(strcmp(abs_name, local_name)) { - switch(checkPackedFile(local_name, pf)) { - case PF_NOFILE: - sprintf(line, "Create %s", local_name); - uiItemEnumO(layout, opname, line, 0, "method", PF_WRITE_LOCAL); - break; - case PF_EQUAL: - sprintf(line, "Use %s (identical)", local_name); - uiItemEnumO(layout, opname, line, 0, "method", PF_USE_LOCAL); - break; - case PF_DIFFERS: - sprintf(line, "Use %s (differs)", local_name); - uiItemEnumO(layout, opname, line, 0, "method", PF_USE_LOCAL); - sprintf(line, "Overwrite %s", local_name); - uiItemEnumO(layout, opname, line, 0, "method", PF_WRITE_LOCAL); - break; - } - } - - switch(checkPackedFile(abs_name, pf)) { - case PF_NOFILE: - sprintf(line, "Create %s", abs_name); - uiItemEnumO(layout, opname, line, 0, "method", PF_WRITE_ORIGINAL); - break; - case PF_EQUAL: - sprintf(line, "Use %s (identical)", abs_name); - uiItemEnumO(layout, opname, line, 0, "method", PF_USE_ORIGINAL); - break; - case PF_DIFFERS: - sprintf(line, "Use %s (differs)", local_name); - uiItemEnumO(layout, opname, line, 0, "method", PF_USE_ORIGINAL); - sprintf(line, "Overwrite %s", local_name); - uiItemEnumO(layout, opname, line, 0, "method", PF_WRITE_ORIGINAL); - break; - } - - uiPupMenuEnd(C, pup); -} - -static int unpack_exec(bContext *C, wmOperator *op) +static int sound_unpack_exec(bContext *C, wmOperator *op) { int method= RNA_enum_get(op->ptr, "method"); - Editing* ed = CTX_data_scene(C)->ed; bSound* sound; - if(!ed || !ed->act_seq || ed->act_seq->type != SEQ_SOUND) - return OPERATOR_CANCELLED; - - sound = ed->act_seq->sound; + /* find the suppplied image by name */ + if (RNA_property_is_set(op->ptr, "id")) { + char sndname[22]; + RNA_string_get(op->ptr, "id", sndname); + sound = BLI_findstring(&CTX_data_main(C)->sound, sndname, offsetof(ID, name) + 2); + } if(!sound || !sound->packedfile) return OPERATOR_CANCELLED; @@ -280,11 +229,14 @@ static int unpack_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -static int unpack_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event)) +static int sound_unpack_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event)) { Editing* ed = CTX_data_scene(C)->ed; bSound* sound; + if(RNA_property_is_set(op->ptr, "id")) + return sound_unpack_exec(C, op); + if(!ed || !ed->act_seq || ed->act_seq->type != SEQ_SOUND) return OPERATOR_CANCELLED; @@ -296,7 +248,7 @@ static int unpack_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event)) if(G.fileflags & G_AUTOPACK) BKE_report(op->reports, RPT_WARNING, "AutoPack is enabled, so image will be packed again on file save."); - unpack_menu(C, "SOUND_OT_unpack", sound->name, "audio", sound->packedfile); + unpack_menu(C, "SOUND_OT_unpack", sound->id.name+2, sound->name, "audio", sound->packedfile); return OPERATOR_FINISHED; } @@ -309,8 +261,8 @@ void SOUND_OT_unpack(wmOperatorType *ot) ot->idname= "SOUND_OT_unpack"; /* api callbacks */ - ot->exec= unpack_exec; - ot->invoke= unpack_invoke; + ot->exec= sound_unpack_exec; + ot->invoke= sound_unpack_invoke; ot->poll= sound_poll; /* flags */ @@ -318,6 +270,7 @@ void SOUND_OT_unpack(wmOperatorType *ot) /* properties */ RNA_def_enum(ot->srna, "method", unpack_method_items, PF_USE_LOCAL, "Method", "How to unpack."); + RNA_def_string(ot->srna, "id", "", 21, "Sound Name", "Sound datablock name to unpack."); /* XXX, weark!, will fail with library, name collisions */ } /* ******************************************************* */ diff --git a/source/blender/editors/space_action/Makefile b/source/blender/editors/space_action/Makefile deleted file mode 100644 index 19aeb54cc2f..00000000000 --- a/source/blender/editors/space_action/Makefile +++ /dev/null @@ -1,54 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_action -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -# not very neat.... -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../python -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - -# own include - -CPPFLAGS += -I../include diff --git a/source/blender/editors/space_api/Makefile b/source/blender/editors/space_api/Makefile deleted file mode 100644 index deaa46a9582..00000000000 --- a/source/blender/editors/space_api/Makefile +++ /dev/null @@ -1,50 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_space -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -# not very neat.... -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - -# own include - -CPPFLAGS += -I../include diff --git a/source/blender/editors/space_buttons/Makefile b/source/blender/editors/space_buttons/Makefile deleted file mode 100644 index 28758fb168b..00000000000 --- a/source/blender/editors/space_buttons/Makefile +++ /dev/null @@ -1,55 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_buttons -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -# not very neat.... -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../python -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I../../render/extern/include - -# own include - -CPPFLAGS += -I../include diff --git a/source/blender/editors/space_console/Makefile b/source/blender/editors/space_console/Makefile deleted file mode 100644 index 4ae157507e0..00000000000 --- a/source/blender/editors/space_console/Makefile +++ /dev/null @@ -1,53 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2009 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** - -LIBNAME = ed_console -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -# not very neat.... -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenfont -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - -# own include - -CPPFLAGS += -I../include diff --git a/source/blender/editors/space_file/Makefile b/source/blender/editors/space_file/Makefile deleted file mode 100644 index 4597ffa3f6b..00000000000 --- a/source/blender/editors/space_file/Makefile +++ /dev/null @@ -1,76 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_file -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -# not very neat.... -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../render/extern/include -CPPFLAGS += -I../../python -CPPFLAGS += -I../../blenfont -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - -# own include - -CPPFLAGS += -I../include - -ifeq ($(WITH_OPENJPEG),true) - CPPFLAGS += -DWITH_OPENJPEG -endif - -ifeq ($(WITH_OPENEXR), true) - CPPFLAGS += -DWITH_OPENEXR -endif - -ifeq ($(WITH_TIFF), true) - CPPFLAGS += -DWITH_TIFF -endif - -ifeq ($(WITH_CINEON), true) - CPPFLAGS += -DWITH_CINEON -endif - -ifeq ($(WITH_HDR), true) - CPPFLAGS += -DWITH_HDR -endif diff --git a/source/blender/editors/space_file/file_draw.c b/source/blender/editors/space_file/file_draw.c index e9e036a65cb..54a462ad84a 100644 --- a/source/blender/editors/space_file/file_draw.c +++ b/source/blender/editors/space_file/file_draw.c @@ -256,6 +256,8 @@ static int get_file_icon(struct direntry *file) } else if (file->flags & BLENDERFILE) return ICON_FILE_BLEND; + else if (file->flags & BLENDERFILE_BACKUP) + return ICON_FILE_BLEND; else if (file->flags & IMAGEFILE) return ICON_FILE_IMAGE; else if (file->flags & MOVIEFILE) diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c index e16b2f650eb..ec4733c171c 100644 --- a/source/blender/editors/space_file/filelist.c +++ b/source/blender/editors/space_file/filelist.c @@ -722,10 +722,38 @@ void filelist_setfilter_types(struct FileList* filelist, const char *filter_glob BLI_strncpy(filelist->filter_glob, filter_glob, sizeof(filelist->filter_glob)); } +static int file_is_blend_backup(const char *str) +{ + short a, b; + int retval= 0; + + a= strlen(str); + b= 7; + + if(a==0 || b>=a); + else { + char *loc; + + if(a > b+1) + b++; + + /* allow .blend1 .blend2 .blend32 */ + loc= BLI_strcasestr(str+a-b, ".blend"); + + if(loc) + retval= 1; + } + + return (retval); +} + + static int file_extension_type(char *relname) { if(BLO_has_bfile_extension(relname)) { return BLENDERFILE; + } else if(file_is_blend_backup(relname)) { + return BLENDERFILE_BACKUP; } else if(BLI_testextensie(relname, ".py")) { return PYSCRIPTFILE; } else if(BLI_testextensie(relname, ".txt") @@ -757,7 +785,7 @@ int ED_file_extension_icon(char *relname) { int type= file_extension_type(relname); - if (type == BLENDERFILE) + if (type == BLENDERFILE || type==BLENDERFILE_BACKUP) return ICON_FILE_BLEND; else if (type == IMAGEFILE) return ICON_FILE_IMAGE; diff --git a/source/blender/editors/space_graph/Makefile b/source/blender/editors/space_graph/Makefile deleted file mode 100644 index 1ac744af239..00000000000 --- a/source/blender/editors/space_graph/Makefile +++ /dev/null @@ -1,58 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_graph -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) -CPPFLAGS += -I$(NAN_AUDASPACE)/include -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - -# not very neat.... -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../python - -# own include -CPPFLAGS += -I../include diff --git a/source/blender/editors/space_image/Makefile b/source/blender/editors/space_image/Makefile deleted file mode 100644 index 87e706246de..00000000000 --- a/source/blender/editors/space_image/Makefile +++ /dev/null @@ -1,77 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_image -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -# not very neat.... -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenfont -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../python -CPPFLAGS += -I../../render/extern/include -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - -# own include - -CPPFLAGS += -I../include - -ifeq ($(WITH_OPENEXR), true) - CPPFLAGS += -DWITH_OPENEXR -endif - -ifeq ($(WITH_TIFF), true) - CPPFLAGS += -DWITH_TIFF -endif - -ifeq ($(WITH_LCMS), true) - CPPFLAGS += -DWITH_LCMS - CPPFLAGS += -I$(BF_LCMS_INC) -endif - -ifeq ($(WITH_CINEON), true) - CPPFLAGS += -DWITH_CINEON -endif - -ifeq ($(WITH_HDR), true) - CPPFLAGS += -DWITH_HDR -endif - diff --git a/source/blender/editors/space_image/image_buttons.c b/source/blender/editors/space_image/image_buttons.c index 7509903246b..e68d9f66986 100644 --- a/source/blender/editors/space_image/image_buttons.c +++ b/source/blender/editors/space_image/image_buttons.c @@ -781,15 +781,21 @@ void uiTemplateImage(uiLayout *layout, bContext *C, PointerRNA *ptr, const char if(!ptr->data) return; - + prop= RNA_struct_find_property(ptr, propname); if(!prop) { printf("uiTemplateImage: property not found: %s.%s\n", RNA_struct_identifier(ptr->type), propname); return; } + if(RNA_property_type(prop) != PROP_POINTER) { + printf("uiTemplateImage: expected pointer property for %s.%s\n", RNA_struct_identifier(ptr->type), propname); + return; + } + block= uiLayoutGetBlock(layout); + imaptr= RNA_property_pointer_get(ptr, prop); ima= imaptr.data; iuser= userptr->data; diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c index cd54a899f35..f5675ebfbe8 100644 --- a/source/blender/editors/space_image/image_ops.c +++ b/source/blender/editors/space_image/image_ops.c @@ -65,6 +65,7 @@ #include "ED_screen.h" #include "ED_space_api.h" #include "ED_uvedit.h" +#include "ED_util.h" #include "UI_interface.h" #include "UI_resources.h" @@ -1429,104 +1430,15 @@ void IMAGE_OT_pack(wmOperatorType *ot) /********************* unpack operator *********************/ -static void unpack_menu(bContext *C, const char *opname, Image *ima, const char *folder, PackedFile *pf) -{ - PointerRNA props_ptr; - uiPopupMenu *pup; - uiLayout *layout; - char line[FILE_MAXDIR + FILE_MAXFILE + 100]; - char local_name[FILE_MAXDIR + FILE_MAX], fi[FILE_MAX]; - char *abs_name = ima->name; - - strcpy(local_name, abs_name); - BLI_splitdirstring(local_name, fi); - sprintf(local_name, "//%s/%s", folder, fi); - - pup= uiPupMenuBegin(C, "Unpack file", ICON_NULL); - layout= uiPupMenuLayout(pup); - - sprintf(line, "Remove Pack"); - props_ptr= uiItemFullO(layout, opname, line, ICON_NULL, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); - RNA_enum_set(&props_ptr, "method", PF_REMOVE); - RNA_string_set(&props_ptr, "image", ima->id.name+2); - - if(strcmp(abs_name, local_name)) { - switch(checkPackedFile(local_name, pf)) { - case PF_NOFILE: - sprintf(line, "Create %s", local_name); - props_ptr= uiItemFullO(layout, opname, line, ICON_NULL, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); - RNA_enum_set(&props_ptr, "method", PF_WRITE_LOCAL); - RNA_string_set(&props_ptr, "image", ima->id.name+2); - - break; - case PF_EQUAL: - sprintf(line, "Use %s (identical)", local_name); - //uiItemEnumO(layout, opname, line, 0, "method", PF_USE_LOCAL); - props_ptr= uiItemFullO(layout, opname, line, ICON_NULL, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); - RNA_enum_set(&props_ptr, "method", PF_USE_LOCAL); - RNA_string_set(&props_ptr, "image", ima->id.name+2); - - break; - case PF_DIFFERS: - sprintf(line, "Use %s (differs)", local_name); - //uiItemEnumO(layout, opname, line, 0, "method", PF_USE_LOCAL); - props_ptr= uiItemFullO(layout, opname, line, ICON_NULL, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); - RNA_enum_set(&props_ptr, "method", PF_USE_LOCAL); - RNA_string_set(&props_ptr, "image", ima->id.name); - - sprintf(line, "Overwrite %s", local_name); - //uiItemEnumO(layout, opname, line, 0, "method", PF_WRITE_LOCAL); - props_ptr= uiItemFullO(layout, opname, line, ICON_NULL, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); - RNA_enum_set(&props_ptr, "method", PF_WRITE_LOCAL); - RNA_string_set(&props_ptr, "image", ima->id.name+2); - - - break; - } - } - - switch(checkPackedFile(abs_name, pf)) { - case PF_NOFILE: - sprintf(line, "Create %s", abs_name); - //uiItemEnumO(layout, opname, line, 0, "method", PF_WRITE_ORIGINAL); - props_ptr= uiItemFullO(layout, opname, line, ICON_NULL, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); - RNA_enum_set(&props_ptr, "method", PF_WRITE_ORIGINAL); - RNA_string_set(&props_ptr, "image", ima->id.name+2); - break; - case PF_EQUAL: - sprintf(line, "Use %s (identical)", abs_name); - //uiItemEnumO(layout, opname, line, 0, "method", PF_USE_ORIGINAL); - props_ptr= uiItemFullO(layout, opname, line, ICON_NULL, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); - RNA_enum_set(&props_ptr, "method", PF_USE_ORIGINAL); - RNA_string_set(&props_ptr, "image", ima->id.name+2); - break; - case PF_DIFFERS: - sprintf(line, "Use %s (differs)", local_name); - //uiItemEnumO(layout, opname, line, 0, "method", PF_USE_ORIGINAL); - props_ptr= uiItemFullO(layout, opname, line, ICON_NULL, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); - RNA_enum_set(&props_ptr, "method", PF_USE_ORIGINAL); - RNA_string_set(&props_ptr, "image", ima->id.name+2); - - sprintf(line, "Overwrite %s", local_name); - //uiItemEnumO(layout, opname, line, 0, "method", PF_WRITE_ORIGINAL); - props_ptr= uiItemFullO(layout, opname, line, ICON_NULL, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); - RNA_enum_set(&props_ptr, "method", PF_WRITE_ORIGINAL); - RNA_string_set(&props_ptr, "image", ima->id.name+2); - break; - } - - uiPupMenuEnd(C, pup); -} - -static int unpack_exec(bContext *C, wmOperator *op) +static int image_unpack_exec(bContext *C, wmOperator *op) { Image *ima= CTX_data_edit_image(C); int method= RNA_enum_get(op->ptr, "method"); /* find the suppplied image by name */ - if (RNA_property_is_set(op->ptr, "image")) { + if (RNA_property_is_set(op->ptr, "id")) { char imaname[22]; - RNA_string_get(op->ptr, "image", imaname); + RNA_string_get(op->ptr, "id", imaname); ima = BLI_findstring(&CTX_data_main(C)->image, imaname, offsetof(ID, name) + 2); if (!ima) ima = CTX_data_edit_image(C); } @@ -1549,12 +1461,12 @@ static int unpack_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -static int unpack_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event)) +static int image_unpack_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event)) { Image *ima= CTX_data_edit_image(C); - if(RNA_property_is_set(op->ptr, "image")) - return unpack_exec(C, op); + if(RNA_property_is_set(op->ptr, "id")) + return image_unpack_exec(C, op); if(!ima || !ima->packedfile) return OPERATOR_CANCELLED; @@ -1566,8 +1478,8 @@ static int unpack_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event)) if(G.fileflags & G_AUTOPACK) BKE_report(op->reports, RPT_WARNING, "AutoPack is enabled, so image will be packed again on file save."); - - unpack_menu(C, "IMAGE_OT_unpack", ima, "textures", ima->packedfile); + + unpack_menu(C, "IMAGE_OT_unpack", ima->id.name+2, ima->name, "textures", ima->packedfile); return OPERATOR_FINISHED; } @@ -1580,15 +1492,15 @@ void IMAGE_OT_unpack(wmOperatorType *ot) ot->idname= "IMAGE_OT_unpack"; /* api callbacks */ - ot->exec= unpack_exec; - ot->invoke= unpack_invoke; + ot->exec= image_unpack_exec; + ot->invoke= image_unpack_invoke; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ RNA_def_enum(ot->srna, "method", unpack_method_items, PF_USE_LOCAL, "Method", "How to unpack."); - RNA_def_string(ot->srna, "image", "", 21, "Image Name", "Image datablock name to unpack."); + RNA_def_string(ot->srna, "id", "", 21, "Image Name", "Image datablock name to unpack."); /* XXX, weark!, will fail with library, name collisions */ } /******************** sample image operator ********************/ diff --git a/source/blender/editors/space_info/Makefile b/source/blender/editors/space_info/Makefile deleted file mode 100644 index 46feeec8613..00000000000 --- a/source/blender/editors/space_info/Makefile +++ /dev/null @@ -1,55 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_info -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -# not very neat.... -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../python -CPPFLAGS += -I../../blenfont -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - -# own include - -CPPFLAGS += -I../include diff --git a/source/blender/editors/space_logic/Makefile b/source/blender/editors/space_logic/Makefile deleted file mode 100644 index 9b72e132be8..00000000000 --- a/source/blender/editors/space_logic/Makefile +++ /dev/null @@ -1,55 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_logic -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -# not very neat.... -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../python -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I../interface - -# own include - -CPPFLAGS += -I../include diff --git a/source/blender/editors/space_logic/logic_window.c b/source/blender/editors/space_logic/logic_window.c index ec8f21065f5..9e615d0d1aa 100644 --- a/source/blender/editors/space_logic/logic_window.c +++ b/source/blender/editors/space_logic/logic_window.c @@ -4097,14 +4097,19 @@ static void draw_actuator_motion(uiLayout *layout, PointerRNA *ptr) static void draw_actuator_parent(uiLayout *layout, PointerRNA *ptr) { - uiLayout *row; + uiLayout *row, *subrow; uiItemR(layout, ptr, "mode", 0, NULL, ICON_NULL); - uiItemR(layout, ptr, "object", 0, NULL, ICON_NULL); - row = uiLayoutRow(layout, 0); - uiItemR(row, ptr, "use_compound", 0, NULL, ICON_NULL); - uiItemR(row, ptr, "use_ghost", 0, NULL, ICON_NULL); + if (RNA_enum_get(ptr, "mode") == ACT_PARENT_SET) { + uiItemR(layout, ptr, "object", 0, NULL, ICON_NULL); + + row = uiLayoutRow(layout, 0); + uiItemR(row, ptr, "use_compound", 0, NULL, ICON_NULL); + subrow= uiLayoutRow(row, 0); + uiLayoutSetActive(subrow, RNA_boolean_get(ptr, "use_compound")==1); + uiItemR(subrow, ptr, "use_ghost", 0, NULL, ICON_NULL); + } } static void draw_actuator_property(uiLayout *layout, PointerRNA *ptr) diff --git a/source/blender/editors/space_nla/Makefile b/source/blender/editors/space_nla/Makefile deleted file mode 100644 index fd940081c16..00000000000 --- a/source/blender/editors/space_nla/Makefile +++ /dev/null @@ -1,54 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_nla -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -# not very neat.... -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../python -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - -# own include - -CPPFLAGS += -I../include diff --git a/source/blender/editors/space_node/Makefile b/source/blender/editors/space_node/Makefile deleted file mode 100644 index 6c12149a43f..00000000000 --- a/source/blender/editors/space_node/Makefile +++ /dev/null @@ -1,56 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_node -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -# not very neat.... -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../nodes -CPPFLAGS += -I../../render/extern/include -CPPFLAGS += -I../../python -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - -# own include - -CPPFLAGS += -I../include diff --git a/source/blender/editors/space_outliner/Makefile b/source/blender/editors/space_outliner/Makefile deleted file mode 100644 index bd6725c5b71..00000000000 --- a/source/blender/editors/space_outliner/Makefile +++ /dev/null @@ -1,54 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_outliner -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -# not very neat.... -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../python -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - -# own include - -CPPFLAGS += -I../include diff --git a/source/blender/editors/space_outliner/outliner.c b/source/blender/editors/space_outliner/outliner.c index dad85626886..b0fe529a4c6 100644 --- a/source/blender/editors/space_outliner/outliner.c +++ b/source/blender/editors/space_outliner/outliner.c @@ -2560,9 +2560,12 @@ static int outliner_item_activate(bContext *C, wmOperator *op, wmEvent *event) TreeElement *te; float fmval[2]; int extend= RNA_boolean_get(op->ptr, "extend"); - + UI_view2d_region_to_view(&ar->v2d, event->x - ar->winrct.xmin, event->y - ar->winrct.ymin, fmval, fmval+1); - + + if(!ELEM3(soops->outlinevis, SO_DATABLOCKS, SO_USERDEF, SO_KEYMAP) && !(soops->flag & SO_HIDE_RESTRICTCOLS) && fmval[0] > ar->v2d.cur.xmax - OL_TOG_RESTRICT_VIEWX) + return OPERATOR_CANCELLED; + for(te= soops->tree.first; te; te= te->next) { if(do_outliner_item_activate(C, scene, ar, soops, te, extend, fmval)) break; } @@ -5713,6 +5716,8 @@ void draw_outliner(const bContext *C) /* update size of tot-rect (extents of data/viewable area) */ UI_view2d_totRect_set(v2d, sizex, sizey); + /* force display to pixel coords */ + v2d->flag |= (V2D_PIXELOFS_X|V2D_PIXELOFS_Y); /* set matrix for 2d-view controls */ UI_view2d_view_ortho(v2d); diff --git a/source/blender/editors/space_script/CMakeLists.txt b/source/blender/editors/space_script/CMakeLists.txt index ddfd3a69d9e..1427e814b41 100644 --- a/source/blender/editors/space_script/CMakeLists.txt +++ b/source/blender/editors/space_script/CMakeLists.txt @@ -39,7 +39,7 @@ set(SRC ) if(WITH_PYTHON) - list(APPEND INC ${PYTHON_INC} ../../python) + list(APPEND INC ${PYTHON_INCLUDE_DIRS} ../../python) add_definitions(-DWITH_PYTHON) endif() diff --git a/source/blender/editors/space_script/Makefile b/source/blender/editors/space_script/Makefile deleted file mode 100644 index 35462b8c255..00000000000 --- a/source/blender/editors/space_script/Makefile +++ /dev/null @@ -1,54 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_script -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -# not very neat.... -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../python -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - -# own include - -CPPFLAGS += -I../include diff --git a/source/blender/editors/space_sequencer/Makefile b/source/blender/editors/space_sequencer/Makefile deleted file mode 100644 index bd2b837d499..00000000000 --- a/source/blender/editors/space_sequencer/Makefile +++ /dev/null @@ -1,58 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_sequencer -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION) - -# not very neat.... -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../python -CPPFLAGS += -I../../blenfont -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I$(NAN_AUDASPACE)/include - -# own include - -CPPFLAGS += -I../include diff --git a/source/blender/editors/space_sound/Makefile b/source/blender/editors/space_sound/Makefile deleted file mode 100644 index 9afda815f59..00000000000 --- a/source/blender/editors/space_sound/Makefile +++ /dev/null @@ -1,56 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_sound -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION) - -# not very neat.... -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../python -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - -# own include - -CPPFLAGS += -I../include diff --git a/source/blender/editors/space_text/CMakeLists.txt b/source/blender/editors/space_text/CMakeLists.txt index 800a18b95e1..8c18630ab7d 100644 --- a/source/blender/editors/space_text/CMakeLists.txt +++ b/source/blender/editors/space_text/CMakeLists.txt @@ -41,7 +41,7 @@ set(SRC ) if(WITH_PYTHON) - list(APPEND INC ${PYTHON_INC} ../../python) + list(APPEND INC ${PYTHON_INCLUDE_DIRS} ../../python) add_definitions(-DWITH_PYTHON) endif() diff --git a/source/blender/editors/space_text/Makefile b/source/blender/editors/space_text/Makefile deleted file mode 100644 index 8bc12852e18..00000000000 --- a/source/blender/editors/space_text/Makefile +++ /dev/null @@ -1,55 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_text -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -# not very neat.... -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../blenfont -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../python -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - -# own include - -CPPFLAGS += -I../include diff --git a/source/blender/editors/space_text/text_ops.c b/source/blender/editors/space_text/text_ops.c index 95cb8078f7c..7eb0ab67d8e 100644 --- a/source/blender/editors/space_text/text_ops.c +++ b/source/blender/editors/space_text/text_ops.c @@ -2002,15 +2002,21 @@ static void screen_skip(SpaceText *st, ARegion *ar, int lines) if(st->top<0) st->top= 0; } +/* quick enum for tsc->zone (scroller handles) */ +enum { + SCROLLHANDLE_BAR, + SCROLLHANDLE_MIN_OUTSIDE, + SCROLLHANDLE_MAX_OUTSIDE +} TextScrollerHandle_Zone; + typedef struct TextScroll { short old[2]; - short hold[2]; short delta[2]; int first; - int characters; - int lines; int scrollbar; + + int zone; } TextScroll; static int scroll_exec(bContext *C, wmOperator *op) @@ -2035,40 +2041,42 @@ static void scroll_apply(bContext *C, wmOperator *op, wmEvent *event) SpaceText *st= CTX_wm_space_text(C); ARegion *ar= CTX_wm_region(C); TextScroll *tsc= op->customdata; - short *mval= event->mval; + short mval[2]= {event->x, event->y}; + short txtdelta[2] = {0, 0}; text_update_character_width(st); if(tsc->first) { tsc->old[0]= mval[0]; tsc->old[1]= mval[1]; - tsc->hold[0]= mval[0]; - tsc->hold[1]= mval[1]; tsc->first= 0; } + tsc->delta[0]+= mval[0] - tsc->old[0]; + tsc->delta[1]+= mval[1] - tsc->old[1]; + if(!tsc->scrollbar) { - tsc->delta[0]= (tsc->hold[0]-mval[0])/st->cwidth; - tsc->delta[1]= (mval[1]-tsc->hold[1])/st->lheight; + txtdelta[0]= -tsc->delta[0]/st->cwidth; + txtdelta[1]= tsc->delta[1]/st->lheight; + + tsc->delta[0]%= st->cwidth; + tsc->delta[1]%= st->lheight; + } + else { + txtdelta[1]= -tsc->delta[1]*st->pix_per_line; + tsc->delta[1]+= txtdelta[1]/st->pix_per_line; } - else - tsc->delta[1]= (tsc->hold[1]-mval[1])*st->pix_per_line; - - if(tsc->delta[0] || tsc->delta[1]) { - screen_skip(st, ar, tsc->delta[1]); - tsc->lines += tsc->delta[1]; + if(txtdelta[0] || txtdelta[1]) { + screen_skip(st, ar, txtdelta[1]); if(st->wordwrap) { st->left= 0; } else { - st->left+= tsc->delta[0]; + st->left+= txtdelta[0]; if(st->left<0) st->left= 0; } - - tsc->hold[0]= mval[0]; - tsc->hold[1]= mval[1]; ED_area_tag_redraw(CTX_wm_area(C)); } @@ -2087,13 +2095,30 @@ static void scroll_exit(bContext *C, wmOperator *op) static int scroll_modal(bContext *C, wmOperator *op, wmEvent *event) { + TextScroll *tsc= op->customdata; + SpaceText *st= CTX_wm_space_text(C); + ARegion *ar= CTX_wm_region(C); + switch(event->type) { case MOUSEMOVE: - scroll_apply(C, op, event); + if(tsc->zone == SCROLLHANDLE_BAR) + scroll_apply(C, op, event); break; case LEFTMOUSE: case RIGHTMOUSE: case MIDDLEMOUSE: + if(ELEM(tsc->zone, SCROLLHANDLE_MIN_OUTSIDE, SCROLLHANDLE_MAX_OUTSIDE)) { + int last; + + st->top+= st->viewlines * (tsc->zone==SCROLLHANDLE_MIN_OUTSIDE ? 1 : -1); + + last= text_get_total_lines(st, ar); + last= last - (st->viewlines/2); + + CLAMP(st->top, 0, last); + + ED_area_tag_redraw(CTX_wm_area(C)); + } scroll_exit(C, op); return OPERATOR_FINISHED; } @@ -2118,6 +2143,7 @@ static int scroll_invoke(bContext *C, wmOperator *op, wmEvent *event) tsc= MEM_callocN(sizeof(TextScroll), "TextScroll"); tsc->first= 1; + tsc->zone= SCROLLHANDLE_BAR; op->customdata= tsc; st->flags|= ST_SCROLL_SELECT; @@ -2125,11 +2151,11 @@ static int scroll_invoke(bContext *C, wmOperator *op, wmEvent *event) if (event->type == MOUSEPAN) { text_update_character_width(st); - tsc->hold[0] = event->prevx; - tsc->hold[1] = event->prevy; + tsc->old[0] = event->x; + tsc->old[1] = event->x; /* Sensitivity of scroll set to 4pix per line/char */ - event->mval[0] = event->prevx + (event->x - event->prevx)*st->cwidth/4; - event->mval[1] = event->prevy + (event->y - event->prevy)*st->lheight/4; + tsc->delta[0] = (event->x - event->prevx)*st->cwidth/4; + tsc->delta[1] = (event->y - event->prevy)*st->lheight/4; tsc->first = 0; tsc->scrollbar = 0; scroll_apply(C, op, event); @@ -2160,7 +2186,7 @@ void TEXT_OT_scroll(wmOperatorType *ot) ot->poll= text_space_edit_poll; /* flags */ - ot->flag= OPTYPE_BLOCKING; + ot->flag= OPTYPE_BLOCKING|OPTYPE_GRAB_POINTER; /* properties */ RNA_def_int(ot->srna, "lines", 1, INT_MIN, INT_MAX, "Lines", "Number of lines to scroll.", -100, 100); @@ -2174,18 +2200,32 @@ static int scroll_bar_invoke(bContext *C, wmOperator *op, wmEvent *event) ARegion *ar= CTX_wm_region(C); TextScroll *tsc; short *mval= event->mval; + int zone= -1; if(RNA_property_is_set(op->ptr, "lines")) return scroll_exec(C, op); /* verify we are in the right zone */ - if(!(mval[0]>ar->winx-TXT_SCROLL_WIDTH && mval[0]<ar->winx-TXT_SCROLL_SPACE - && mval[1]>TXT_SCROLL_SPACE && mval[1]<ar->winy)) + if(mval[0]>st->txtbar.xmin && mval[0]<st->txtbar.xmax) { + if(mval[1]>=st->txtbar.ymin && mval[1]<=st->txtbar.ymax) { + /* mouse inside scroll handle */ + zone = SCROLLHANDLE_BAR; + } + else if(mval[1]>TXT_SCROLL_SPACE && mval[1]<ar->winy-TXT_SCROLL_SPACE) { + if(mval[1]<st->txtbar.ymin) zone= SCROLLHANDLE_MIN_OUTSIDE; + else zone= SCROLLHANDLE_MAX_OUTSIDE; + } + } + + if(zone == -1) { + /* we are outside slider - nothing to do */ return OPERATOR_PASS_THROUGH; + } tsc= MEM_callocN(sizeof(TextScroll), "TextScroll"); tsc->first= 1; tsc->scrollbar= 1; + tsc->zone= zone; op->customdata= tsc; st->flags|= ST_SCROLL_SELECT; diff --git a/source/blender/editors/space_time/Makefile b/source/blender/editors/space_time/Makefile deleted file mode 100644 index 958c3018f82..00000000000 --- a/source/blender/editors/space_time/Makefile +++ /dev/null @@ -1,54 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_time -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -# not very neat.... -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../python -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - -# own include - -CPPFLAGS += -I../include diff --git a/source/blender/editors/space_time/space_time.c b/source/blender/editors/space_time/space_time.c index 4a45b6b6cbb..8a692a60777 100644 --- a/source/blender/editors/space_time/space_time.c +++ b/source/blender/editors/space_time/space_time.c @@ -466,15 +466,15 @@ static void time_main_area_draw(const bContext *C, ARegion *ar) UI_view2d_grid_draw(v2d, grid, (V2D_VERTICAL_LINES|V2D_VERTICAL_AXIS)); UI_view2d_grid_free(grid); - /* keyframes */ - if(!G.rendering) /* ANIM_nla_mapping_apply_fcurve() modifies curve data while rendering, possible race condition */ - time_draw_keyframes(C, stime, ar); - /* current frame */ if ((stime->flag & TIME_DRAWFRAMES)==0) flag |= DRAWCFRA_UNIT_SECONDS; if (stime->flag & TIME_CFRA_NUM) flag |= DRAWCFRA_SHOW_NUMBOX; ANIM_draw_cfra(C, v2d, flag); + /* keyframes */ + if(!G.rendering) /* ANIM_nla_mapping_apply_fcurve() modifies curve data while rendering, possible race condition */ + time_draw_keyframes(C, stime, ar); + /* markers */ UI_view2d_view_orthoSpecial(ar, v2d, 1); draw_markers_time(C, 0); diff --git a/source/blender/editors/space_userpref/Makefile b/source/blender/editors/space_userpref/Makefile deleted file mode 100644 index 8510c355ab4..00000000000 --- a/source/blender/editors/space_userpref/Makefile +++ /dev/null @@ -1,55 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_userpref -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -# not very neat.... -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../python -CPPFLAGS += -I../../blenfont -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - -# own include - -CPPFLAGS += -I../include diff --git a/source/blender/editors/space_view3d/Makefile b/source/blender/editors/space_view3d/Makefile deleted file mode 100644 index 58d88194c22..00000000000 --- a/source/blender/editors/space_view3d/Makefile +++ /dev/null @@ -1,61 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_view3d -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - - -# not very neat.... -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../python -CPPFLAGS += -I../../gpu -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../render/extern/include -CPPFLAGS += -I../../blenfont -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I$(NAN_SMOKE)/include -ifneq ($(NAN_NO_KETSJI),true) - CPPFLAGS += -I../../../kernel/gen_system -endif - -# own include -CPPFLAGS += -I../include diff --git a/source/blender/editors/transform/Makefile b/source/blender/editors/transform/Makefile deleted file mode 100644 index 9d23b763cd6..00000000000 --- a/source/blender/editors/transform/Makefile +++ /dev/null @@ -1,53 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_transform -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../imbuf - -# own include - -CPPFLAGS += -I../include diff --git a/source/blender/editors/util/Makefile b/source/blender/editors/util/Makefile deleted file mode 100644 index 8535b3fb402..00000000000 --- a/source/blender/editors/util/Makefile +++ /dev/null @@ -1,54 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_util -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -# not very neat.... -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../python -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - -# own include - -CPPFLAGS += -I../include diff --git a/source/blender/editors/util/ed_util.c b/source/blender/editors/util/ed_util.c index f7a4966821a..081bda60ba2 100644 --- a/source/blender/editors/util/ed_util.c +++ b/source/blender/editors/util/ed_util.c @@ -27,18 +27,23 @@ */ #include <stdlib.h> +#include <string.h> #include <math.h> #include "MEM_guardedalloc.h" #include "DNA_object_types.h" #include "DNA_scene_types.h" +#include "DNA_packedFile_types.h" #include "BLI_blenlib.h" #include "BLI_editVert.h" #include "BKE_context.h" +#include "BKE_global.h" #include "BKE_main.h" +#include "BKE_utildefines.h" +#include "BKE_packedFile.h" #include "ED_armature.h" #include "ED_mesh.h" @@ -48,6 +53,11 @@ #include "UI_interface.h" +#include "WM_types.h" +#include "RNA_access.h" + + + /* ********* general editor util funcs, not BKE stuff please! ********* */ void ED_editors_init(bContext *C) @@ -161,3 +171,91 @@ int GetButStringLength(const char *str) return rt + 15; } + +void unpack_menu(bContext *C, const char *opname, const char *id_name, const char *abs_name, const char *folder, struct PackedFile *pf) +{ + PointerRNA props_ptr; + uiPopupMenu *pup; + uiLayout *layout; + char line[FILE_MAXDIR + FILE_MAXFILE + 100]; + + pup= uiPupMenuBegin(C, "Unpack file", ICON_NULL); + layout= uiPupMenuLayout(pup); + + sprintf(line, "Remove Pack"); + props_ptr= uiItemFullO(layout, opname, line, ICON_NULL, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); + RNA_enum_set(&props_ptr, "method", PF_REMOVE); + RNA_string_set(&props_ptr, "id", id_name); + + if(G.relbase_valid) { + char local_name[FILE_MAXDIR + FILE_MAX], fi[FILE_MAX]; + + BLI_strncpy(local_name, abs_name, sizeof(local_name)); + BLI_splitdirstring(local_name, fi); + sprintf(local_name, "//%s/%s", folder, fi); + if(strcmp(abs_name, local_name)!=0) { + switch(checkPackedFile(local_name, pf)) { + case PF_NOFILE: + sprintf(line, "Create %s", local_name); + props_ptr= uiItemFullO(layout, opname, line, ICON_NULL, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); + RNA_enum_set(&props_ptr, "method", PF_WRITE_LOCAL); + RNA_string_set(&props_ptr, "id", id_name); + + break; + case PF_EQUAL: + sprintf(line, "Use %s (identical)", local_name); + //uiItemEnumO(layout, opname, line, 0, "method", PF_USE_LOCAL); + props_ptr= uiItemFullO(layout, opname, line, ICON_NULL, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); + RNA_enum_set(&props_ptr, "method", PF_USE_LOCAL); + RNA_string_set(&props_ptr, "id", id_name); + + break; + case PF_DIFFERS: + sprintf(line, "Use %s (differs)", local_name); + //uiItemEnumO(layout, opname, line, 0, "method", PF_USE_LOCAL); + props_ptr= uiItemFullO(layout, opname, line, ICON_NULL, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); + RNA_enum_set(&props_ptr, "method", PF_USE_LOCAL); + RNA_string_set(&props_ptr, "id", id_name); + + sprintf(line, "Overwrite %s", local_name); + //uiItemEnumO(layout, opname, line, 0, "method", PF_WRITE_LOCAL); + props_ptr= uiItemFullO(layout, opname, line, ICON_NULL, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); + RNA_enum_set(&props_ptr, "method", PF_WRITE_LOCAL); + RNA_string_set(&props_ptr, "id", id_name); + break; + } + } + } + + switch(checkPackedFile(abs_name, pf)) { + case PF_NOFILE: + sprintf(line, "Create %s", abs_name); + //uiItemEnumO(layout, opname, line, 0, "method", PF_WRITE_ORIGINAL); + props_ptr= uiItemFullO(layout, opname, line, ICON_NULL, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); + RNA_enum_set(&props_ptr, "method", PF_WRITE_ORIGINAL); + RNA_string_set(&props_ptr, "id", id_name); + break; + case PF_EQUAL: + sprintf(line, "Use %s (identical)", abs_name); + //uiItemEnumO(layout, opname, line, 0, "method", PF_USE_ORIGINAL); + props_ptr= uiItemFullO(layout, opname, line, ICON_NULL, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); + RNA_enum_set(&props_ptr, "method", PF_USE_ORIGINAL); + RNA_string_set(&props_ptr, "id", id_name); + break; + case PF_DIFFERS: + sprintf(line, "Use %s (differs)", abs_name); + //uiItemEnumO(layout, opname, line, 0, "method", PF_USE_ORIGINAL); + props_ptr= uiItemFullO(layout, opname, line, ICON_NULL, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); + RNA_enum_set(&props_ptr, "method", PF_USE_ORIGINAL); + RNA_string_set(&props_ptr, "id", id_name); + + sprintf(line, "Overwrite %s", abs_name); + //uiItemEnumO(layout, opname, line, 0, "method", PF_WRITE_ORIGINAL); + props_ptr= uiItemFullO(layout, opname, line, ICON_NULL, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); + RNA_enum_set(&props_ptr, "method", PF_WRITE_ORIGINAL); + RNA_string_set(&props_ptr, "id", id_name); + break; + } + + uiPupMenuEnd(C, pup); +} diff --git a/source/blender/editors/uvedit/Makefile b/source/blender/editors/uvedit/Makefile deleted file mode 100644 index e4b9ae72ccb..00000000000 --- a/source/blender/editors/uvedit/Makefile +++ /dev/null @@ -1,55 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2007 Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -LIBNAME = ed_uvedit -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -# not very neat.... -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../gpu -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I$(NAN_OPENNL)/include - -# own include - -CPPFLAGS += -I../include - diff --git a/source/blender/editors/uvedit/uvedit_parametrizer.c b/source/blender/editors/uvedit/uvedit_parametrizer.c index 3f27ee52034..dc5e17b5fae 100644 --- a/source/blender/editors/uvedit/uvedit_parametrizer.c +++ b/source/blender/editors/uvedit/uvedit_parametrizer.c @@ -4360,7 +4360,7 @@ void param_pack(ParamHandle *handle, float margin) } if(margin>0.0f) { - /* multiply the margin by the area to give pradictable results not dependant on UV scale, + /* multiply the margin by the area to give predictable results not dependant on UV scale, * ...Without using the area running pack multiple times also gives a bad feedback loop. * multiply by 0.1 so the margin value from the UI can be from 0.0 to 1.0 but not give a massive margin */ margin = (margin*(float)area) * 0.1; diff --git a/source/blender/freestyle/CMakeLists.txt b/source/blender/freestyle/CMakeLists.txt index 3b051f3804a..a4a94883b01 100644 --- a/source/blender/freestyle/CMakeLists.txt +++ b/source/blender/freestyle/CMakeLists.txt @@ -31,7 +31,7 @@ set(INC ../python ../python/intern ../render/extern/include ../render/intern/include ../include ../src ../../../extern/glew/include ../../../intern/guardedalloc ../freestyle - ${PYTHON_INC} + ${PYTHON_INCLUDE_DIRS} ${PNG_INC} ) diff --git a/source/blender/gpu/Makefile b/source/blender/gpu/Makefile deleted file mode 100644 index eaa8a69bfdd..00000000000 --- a/source/blender/gpu/Makefile +++ /dev/null @@ -1,37 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL/BL DUAL LICENSE 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. The Blender -# Foundation also sells licenses for use in proprietary software under -# the Blender License. See http://www.blender.org/BL/ for information -# about this. -# -# 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL/BL DUAL LICENSE BLOCK ***** -# -# Makes module object directory and bounces make to subdirectories. - -SOURCEDIR = source/blender/gpu -DIRS = intern - -include nan_subdirs.mk diff --git a/source/blender/gpu/intern/Makefile b/source/blender/gpu/intern/Makefile deleted file mode 100644 index 088b56edbab..00000000000 --- a/source/blender/gpu/intern/Makefile +++ /dev/null @@ -1,54 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL/BL DUAL LICENSE 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. The Blender -# Foundation also sells licenses for use in proprietary software under -# the Blender License. See http://www.blender.org/BL/ for information -# about this. -# -# 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL/BL DUAL LICENSE BLOCK ***** -# - -LIBNAME = gpu -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -ifeq ($(OS),$(findstring $(OS), "darwin freebsd linux openbsd solaris windows")) - CFLAGS += -funsigned-char -endif - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(OPENGL_HEADERS) - -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I$(NAN_SMOKE)/include -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I../ - diff --git a/source/blender/gpu/intern/gpu_material.c b/source/blender/gpu/intern/gpu_material.c index 6f8719c60d3..c57499890ee 100644 --- a/source/blender/gpu/intern/gpu_material.c +++ b/source/blender/gpu/intern/gpu_material.c @@ -48,11 +48,13 @@ #include "BKE_colortools.h" #include "BKE_DerivedMesh.h" #include "BKE_global.h" +#include "BKE_image.h" #include "BKE_main.h" #include "BKE_node.h" #include "BKE_scene.h" #include "BKE_texture.h" +#include "IMB_imbuf_types.h" #include "GPU_extensions.h" #include "GPU_material.h" @@ -955,7 +957,7 @@ static void do_material_tex(GPUShadeInput *shi) rgbnor = 0; if(tex && tex->type == TEX_IMAGE && tex->ima) { - GPU_link(mat, "mtex_image", texco, GPU_image(tex->ima, &tex->iuser), &tin, &trgb, &tnor); + GPU_link(mat, "mtex_image", texco, GPU_image(tex->ima, &tex->iuser), &tin, &trgb); rgbnor= TEX_RGB; if(tex->imaflag & TEX_USEALPHA) @@ -1024,29 +1026,86 @@ static void do_material_tex(GPUShadeInput *shi) } if(!(mat->scene->gm.flag & GAME_GLSL_NO_EXTRA_TEX) && (mtex->mapto & MAP_NORM)) { - if((tex->type==TEX_IMAGE) && (tex->imaflag & TEX_NORMALMAP)) { - if(mtex->norfac < 0.0f) - GPU_link(mat, "mtex_negate_texnormal", tnor, &tnor); - - if(mtex->normapspace == MTEX_NSPACE_TANGENT) - GPU_link(mat, "mtex_nspace_tangent", GPU_attribute(CD_TANGENT, ""), shi->vn, tnor, &newnor); - else - newnor = tnor; - - norfac = MIN2(fabsf(mtex->norfac), 1.0); - if(norfac == 1.0f && !GPU_link_changed(stencil)) { - shi->vn = newnor; - } - else { + if(tex->type==TEX_IMAGE) { + if(tex->imaflag & TEX_NORMALMAP) { + /* normalmap image */ + GPU_link(mat, "mtex_normal", texco, GPU_image(tex->ima, &tex->iuser), &tnor ); + + if(mtex->norfac < 0.0f) + GPU_link(mat, "mtex_negate_texnormal", tnor, &tnor); + + if(mtex->normapspace == MTEX_NSPACE_TANGENT) + GPU_link(mat, "mtex_nspace_tangent", GPU_attribute(CD_TANGENT, ""), shi->vn, tnor, &newnor); + else + newnor = tnor; + + norfac = MIN2(fabsf(mtex->norfac), 1.0); + + if(norfac == 1.0f && !GPU_link_changed(stencil)) { + shi->vn = newnor; + } + else { + tnorfac = GPU_uniform(&norfac); + + if(GPU_link_changed(stencil)) + GPU_link(mat, "math_multiply", tnorfac, stencil, &tnorfac); + + GPU_link(mat, "mtex_blend_normal", tnorfac, shi->vn, newnor, &shi->vn); + } + + } else if( mtex->texflag & (MTEX_3TAP_BUMP|MTEX_5TAP_BUMP)) { + /* ntap bumpmap image */ + float hScale = 0.1f; // compatibility adjustment factor for all bumpspace types + float hScaleTex = 13.0f; // factor for scaling texspace bumps + + GPUNodeLink *surf_pos = GPU_builtin(GPU_VIEW_POSITION); + GPUNodeLink *vR1, *vR2, *fDet; + GPUNodeLink *dBs, *dBt, *vN; + + if( mtex->texflag & MTEX_BUMP_TEXTURESPACE ) + hScale = hScaleTex; + norfac = hScale * mtex->norfac; tnorfac = GPU_uniform(&norfac); - + if(GPU_link_changed(stencil)) GPU_link(mat, "math_multiply", tnorfac, stencil, &tnorfac); - - GPU_link(mat, "mtex_blend_normal", tnorfac, shi->vn, newnor, &shi->vn); + + if( mtex->texflag & MTEX_BUMP_OBJECTSPACE ) + GPU_link( mat, "mtex_bump_init_objspace", + surf_pos, shi->vn, + GPU_builtin(GPU_VIEW_MATRIX), GPU_builtin(GPU_INVERSE_VIEW_MATRIX), GPU_builtin(GPU_OBJECT_MATRIX), GPU_builtin(GPU_INVERSE_OBJECT_MATRIX), + &vR1, &vR2, &fDet, &vN ); + else + GPU_link( mat, "mtex_bump_init_viewspace", + surf_pos, shi->vn, + &vR1, &vR2, &fDet, &vN ); + + if( mtex->texflag & MTEX_3TAP_BUMP ) + GPU_link( mat, "mtex_bump_tap3", + texco, GPU_image(tex->ima, &tex->iuser), tnorfac, + &dBs, &dBt ); + else + GPU_link( mat, "mtex_bump_tap5", + texco, GPU_image(tex->ima, &tex->iuser), tnorfac, + &dBs, &dBt ); + + if( mtex->texflag & MTEX_BUMP_TEXTURESPACE ) { + float ima_x= 512.0f, ima_y= 512.f; // prevent calling textureSize, glsl 1.3 only + ImBuf *ibuf= BKE_image_get_ibuf(tex->ima, &tex->iuser); + if(ibuf) + ima_x= ibuf->x; ima_y= ibuf->y; + + GPU_link( mat, "mtex_bump_apply_texspace", + fDet, dBs, dBt, vR1, vR2, vN, GPU_image(tex->ima, &tex->iuser), texco, + GPU_uniform(&ima_x), GPU_uniform(&ima_y), &shi->vn ); + } else + GPU_link( mat, "mtex_bump_apply", + fDet, dBs, dBt, vR1, vR2, vN, + &shi->vn ); + } } - + GPU_link(mat, "vec_math_negate", shi->vn, &orn); GPU_link(mat, "texco_refl", shi->vn, shi->view, &shi->ref); } diff --git a/source/blender/gpu/intern/gpu_shader_material.glsl b/source/blender/gpu/intern/gpu_shader_material.glsl index cfd35f59478..6c2b2e68a2c 100644 --- a/source/blender/gpu/intern/gpu_shader_material.glsl +++ b/source/blender/gpu/intern/gpu_shader_material.glsl @@ -641,9 +641,9 @@ void valtorgb(float fac, sampler1D colormap, out vec4 outcol, out float outalpha outalpha = outcol.a; } -void rgbtobw(vec4 color, out float outval) +void rgbtobw(vec4 color, out float outval) { - outval = color.r*0.35 + color.g*0.45 + color.b*0.2; + outval = color.r*0.35 + color.g*0.45 + color.b*0.2; /* keep these factors in sync with texture.h:RGBTOBW */ } void invert(float fac, vec4 col, out vec4 outcol) @@ -1090,14 +1090,122 @@ void mtex_2d_mapping(vec3 vec, out vec3 outvec) outvec = vec3(vec.xy*0.5 + vec2(0.5, 0.5), vec.z); } -void mtex_image(vec3 vec, sampler2D ima, out float value, out vec4 color, out vec3 normal) +void mtex_image(vec3 texco, sampler2D ima, out float value, out vec4 color) { - color = texture2D(ima, vec.xy); + color = texture2D(ima, texco.xy); value = 1.0; - +} + +void mtex_normal(vec3 texco, sampler2D ima, out vec3 normal) +{ + vec4 color = texture2D(ima, texco.xy); normal = 2.0*(vec3(color.r, -color.g, color.b) - vec3(0.5, -0.5, 0.5)); } +void mtex_bump_init_viewspace( vec3 surf_pos, vec3 surf_norm, + out vec3 vR1, out vec3 vR2, out float fDet, out vec3 vN ) +{ + vec3 vSigmaS = dFdx( surf_pos ); + vec3 vSigmaT = dFdy( surf_pos ); + vN = surf_norm; /* normalized interpolated vertex normal */ + + vR1 = cross( vSigmaT , vN ); + vR2 = cross( vN , vSigmaS ) ; + fDet = dot ( vSigmaS , vR1 ); +} + +/** helper method to extract the upper left 3x3 matrix from a 4x4 matrix */ +mat3 to_mat3(mat4 m4) +{ + mat3 m3; + m3[0] = m4[0].xyz; + m3[1] = m4[1].xyz; + m3[2] = m4[2].xyz; + return m3; +} + +void mtex_bump_init_objspace( vec3 surf_pos, vec3 surf_norm, + mat4 mView, mat4 mViewInv, mat4 mObj, mat4 mObjInv, + out vec3 vR1, out vec3 vR2, out float fDet, out vec3 vN ) +{ + mat3 obj2view = to_mat3(mView * mObj); + mat3 view2obj = to_mat3(mObjInv * mViewInv); + + vec3 vSigmaS = view2obj * dFdx( surf_pos ); + vec3 vSigmaT = view2obj * dFdy( surf_pos ); + vN = normalize( surf_norm * obj2view ); + + vR1 = cross( vSigmaT , vN ); + vR2 = cross( vN , vSigmaS ) ; + fDet = dot ( vSigmaS , vR1 ); + + /* transform back */ + vR1 = vR1 * view2obj; + vR2 = vR2 * view2obj; + vN = vN * view2obj; + +} + +void mtex_bump_tap3( vec3 texco, sampler2D ima, float hScale, + out float dBs, out float dBt ) +{ + vec2 STll = texco.xy; + vec2 STlr = texco.xy + dFdx(texco.xy) ; + vec2 STul = texco.xy + dFdy(texco.xy) ; + + float Hll,Hlr,Hul; + rgbtobw( texture2D(ima, STll), Hll ); + rgbtobw( texture2D(ima, STlr), Hlr ); + rgbtobw( texture2D(ima, STul), Hul ); + + dBs = hScale * (Hlr - Hll); + dBt = hScale * (Hul - Hll); +} + +void mtex_bump_tap5( vec3 texco, sampler2D ima, float hScale, + out float dBs, out float dBt ) +{ + vec2 TexDx = dFdx(texco.xy); + vec2 TexDy = dFdy(texco.xy); + + vec2 STc = texco.xy; + vec2 STl = texco.xy - 0.5 * TexDx ; + vec2 STr = texco.xy + 0.5 * TexDx ; + vec2 STd = texco.xy - 0.5 * TexDy ; + vec2 STu = texco.xy + 0.5 * TexDy ; + + float Hc,Hl,Hr,Hd,Hu; + rgbtobw( texture2D(ima, STc), Hc ); + rgbtobw( texture2D(ima, STl), Hl ); + rgbtobw( texture2D(ima, STr), Hr ); + rgbtobw( texture2D(ima, STd), Hd ); + rgbtobw( texture2D(ima, STu), Hu ); + + dBs = hScale * (Hr - Hl); + dBt = hScale * (Hu - Hd); +} + +void mtex_bump_apply( float fDet, float dBs, float dBt, vec3 vR1, vec3 vR2, vec3 vN, + out vec3 perturbed_norm ) +{ + vec3 vSurfGrad = sign(fDet) * ( dBs * vR1 + dBt * vR2 ); + perturbed_norm = normalize( abs(fDet) * vN - vSurfGrad ); + +} + +void mtex_bump_apply_texspace( float fDet, float dBs, float dBt, vec3 vR1, vec3 vR2, vec3 vN, + sampler2D ima, vec3 texco, float ima_x, float ima_y, out vec3 perturbed_norm ) +{ + vec2 TexDx = dFdx(texco.xy); + vec2 TexDy = dFdy(texco.xy); + + vec3 vSurfGrad = sign(fDet) * ( + dBs / length( vec2(ima_x*TexDx.x, ima_y*TexDx.y) ) * normalize(vR1) + + dBt / length( vec2(ima_x*TexDy.x, ima_y*TexDy.y) ) * normalize(vR2) ); + perturbed_norm = normalize( vN - vSurfGrad ); + +} + void mtex_negate_texnormal(vec3 normal, out vec3 outnormal) { outnormal = vec3(-normal.x, -normal.y, normal.z); diff --git a/source/blender/gpu/intern/gpu_shader_material.glsl.c b/source/blender/gpu/intern/gpu_shader_material.glsl.c index e996578dc89..36cf4dd3497 100644 --- a/source/blender/gpu/intern/gpu_shader_material.glsl.c +++ b/source/blender/gpu/intern/gpu_shader_material.glsl.c @@ -1,723 +1,822 @@ /* DataToC output of file <gpu_shader_material_glsl> */ -int datatoc_gpu_shader_material_glsl_size= 34245; +int datatoc_gpu_shader_material_glsl_size= 37417; char datatoc_gpu_shader_material_glsl[]= { - 10,102,108,111, 97, -116, 32,101,120,112, 95, 98,108,101,110,100,101,114, 40,102,108,111, 97,116, 32,102, 41, 10,123, 10, 9,114,101,116,117,114,110, - 32,112,111,119, 40, 50, 46, 55, 49, 56, 50, 56, 49, 56, 50, 56, 52, 54, 44, 32,102, 41, 59, 10,125, 10, 10,118,111,105,100, 32, -114,103, 98, 95,116,111, 95,104,115,118, 40,118,101, 99, 52, 32,114,103, 98, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117, -116, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32, 99,109, 97,120, 44, 32, 99,109,105,110, 44, 32,104, 44, 32,115, 44, - 32,118, 44, 32, 99,100,101,108,116, 97, 59, 10, 9,118,101, 99, 51, 32, 99, 59, 10, 10, 9, 99,109, 97,120, 32, 61, 32,109, 97, -120, 40,114,103, 98, 91, 48, 93, 44, 32,109, 97,120, 40,114,103, 98, 91, 49, 93, 44, 32,114,103, 98, 91, 50, 93, 41, 41, 59, 10, - 9, 99,109,105,110, 32, 61, 32,109,105,110, 40,114,103, 98, 91, 48, 93, 44, 32,109,105,110, 40,114,103, 98, 91, 49, 93, 44, 32, -114,103, 98, 91, 50, 93, 41, 41, 59, 10, 9, 99,100,101,108,116, 97, 32, 61, 32, 99,109, 97,120, 45, 99,109,105,110, 59, 10, 10, - 9,118, 32, 61, 32, 99,109, 97,120, 59, 10, 9,105,102, 32, 40, 99,109, 97,120, 33, 61, 48, 46, 48, 41, 10, 9, 9,115, 32, 61, - 32, 99,100,101,108,116, 97, 47, 99,109, 97,120, 59, 10, 9,101,108,115,101, 32,123, 10, 9, 9,115, 32, 61, 32, 48, 46, 48, 59, - 10, 9, 9,104, 32, 61, 32, 48, 46, 48, 59, 10, 9,125, 10, 10, 9,105,102, 32, 40,115, 32, 61, 61, 32, 48, 46, 48, 41, 32,123, - 10, 9, 9,104, 32, 61, 32, 48, 46, 48, 59, 10, 9,125, 10, 9,101,108,115,101, 32,123, 10, 9, 9, 99, 32, 61, 32, 40,118,101, - 99, 51, 40, 99,109, 97,120, 44, 32, 99,109, 97,120, 44, 32, 99,109, 97,120, 41, 32, 45, 32,114,103, 98, 46,120,121,122, 41, 47, - 99,100,101,108,116, 97, 59, 10, 10, 9, 9,105,102, 32, 40,114,103, 98, 46,120, 61, 61, 99,109, 97,120, 41, 32,104, 32, 61, 32, - 99, 91, 50, 93, 32, 45, 32, 99, 91, 49, 93, 59, 10, 9, 9,101,108,115,101, 32,105,102, 32, 40,114,103, 98, 46,121, 61, 61, 99, -109, 97,120, 41, 32,104, 32, 61, 32, 50, 46, 48, 32, 43, 32, 99, 91, 48, 93, 32, 45, 32, 32, 99, 91, 50, 93, 59, 10, 9, 9,101, -108,115,101, 32,104, 32, 61, 32, 52, 46, 48, 32, 43, 32, 99, 91, 49, 93, 32, 45, 32, 99, 91, 48, 93, 59, 10, 10, 9, 9,104, 32, - 47, 61, 32, 54, 46, 48, 59, 10, 10, 9, 9,105,102, 32, 40,104, 60, 48, 46, 48, 41, 10, 9, 9, 9,104, 32, 43, 61, 32, 49, 46, - 48, 59, 10, 9,125, 10, 10, 9,111,117,116, 99,111,108, 32, 61, 32,118,101, 99, 52, 40,104, 44, 32,115, 44, 32,118, 44, 32,114, -103, 98, 46,119, 41, 59, 10,125, 10, 10,118,111,105,100, 32,104,115,118, 95,116,111, 95,114,103, 98, 40,118,101, 99, 52, 32,104, -115,118, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,105, 44, - 32,102, 44, 32,112, 44, 32,113, 44, 32,116, 44, 32,104, 44, 32,115, 44, 32,118, 59, 10, 9,118,101, 99, 51, 32,114,103, 98, 59, - 10, 10, 9,104, 32, 61, 32,104,115,118, 91, 48, 93, 59, 10, 9,115, 32, 61, 32,104,115,118, 91, 49, 93, 59, 10, 9,118, 32, 61, - 32,104,115,118, 91, 50, 93, 59, 10, 10, 9,105,102, 40,115, 61, 61, 48, 46, 48, 41, 32,123, 10, 9, 9,114,103, 98, 32, 61, 32, -118,101, 99, 51, 40,118, 44, 32,118, 44, 32,118, 41, 59, 10, 9,125, 10, 9,101,108,115,101, 32,123, 10, 9, 9,105,102, 40,104, - 61, 61, 49, 46, 48, 41, 10, 9, 9, 9,104, 32, 61, 32, 48, 46, 48, 59, 10, 9, 9, 10, 9, 9,104, 32, 42, 61, 32, 54, 46, 48, - 59, 10, 9, 9,105, 32, 61, 32,102,108,111,111,114, 40,104, 41, 59, 10, 9, 9,102, 32, 61, 32,104, 32, 45, 32,105, 59, 10, 9, - 9,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,102, 44, 32,102, 44, 32,102, 41, 59, 10, 9, 9,112, 32, 61, 32,118, 42, 40, 49, - 46, 48, 45,115, 41, 59, 10, 9, 9,113, 32, 61, 32,118, 42, 40, 49, 46, 48, 45, 40,115, 42,102, 41, 41, 59, 10, 9, 9,116, 32, - 61, 32,118, 42, 40, 49, 46, 48, 45, 40,115, 42, 40, 49, 46, 48, 45,102, 41, 41, 41, 59, 10, 9, 9, 10, 9, 9,105,102, 32, 40, -105, 32, 61, 61, 32, 48, 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,118, 44, 32,116, 44, 32,112, 41, 59, 10, 9, - 9,101,108,115,101, 32,105,102, 32, 40,105, 32, 61, 61, 32, 49, 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,113, - 44, 32,118, 44, 32,112, 41, 59, 10, 9, 9,101,108,115,101, 32,105,102, 32, 40,105, 32, 61, 61, 32, 50, 46, 48, 41, 32,114,103, - 98, 32, 61, 32,118,101, 99, 51, 40,112, 44, 32,118, 44, 32,116, 41, 59, 10, 9, 9,101,108,115,101, 32,105,102, 32, 40,105, 32, - 61, 61, 32, 51, 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,112, 44, 32,113, 44, 32,118, 41, 59, 10, 9, 9,101, -108,115,101, 32,105,102, 32, 40,105, 32, 61, 61, 32, 52, 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,116, 44, 32, -112, 44, 32,118, 41, 59, 10, 9, 9,101,108,115,101, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,118, 44, 32,112, 44, 32,113, - 41, 59, 10, 9,125, 10, 10, 9,111,117,116, 99,111,108, 32, 61, 32,118,101, 99, 52, 40,114,103, 98, 44, 32,104,115,118, 46,119, - 41, 59, 10,125, 10, 10,102,108,111, 97,116, 32,115,114,103, 98, 95,116,111, 95,108,105,110,101, 97,114,114,103, 98, 40,102,108, -111, 97,116, 32, 99, 41, 10,123, 10, 9,105,102, 40, 99, 32, 60, 32, 48, 46, 48, 52, 48, 52, 53, 41, 10, 9, 9,114,101,116,117, -114,110, 32, 40, 99, 32, 60, 32, 48, 46, 48, 41, 63, 32, 48, 46, 48, 58, 32, 99, 32, 42, 32, 40, 49, 46, 48, 47, 49, 50, 46, 57, - 50, 41, 59, 10, 9,101,108,115,101, 10, 9, 9,114,101,116,117,114,110, 32,112,111,119, 40, 40, 99, 32, 43, 32, 48, 46, 48, 53, - 53, 41, 42, 40, 49, 46, 48, 47, 49, 46, 48, 53, 53, 41, 44, 32, 50, 46, 52, 41, 59, 10,125, 10, 10,102,108,111, 97,116, 32,108, -105,110,101, 97,114,114,103, 98, 95,116,111, 95,115,114,103, 98, 40,102,108,111, 97,116, 32, 99, 41, 10,123, 10, 9,105,102, 40, - 99, 32, 60, 32, 48, 46, 48, 48, 51, 49, 51, 48, 56, 41, 10, 9, 9,114,101,116,117,114,110, 32, 40, 99, 32, 60, 32, 48, 46, 48, - 41, 63, 32, 48, 46, 48, 58, 32, 99, 32, 42, 32, 49, 50, 46, 57, 50, 59, 10, 9,101,108,115,101, 10, 9, 9,114,101,116,117,114, -110, 32, 49, 46, 48, 53, 53, 32, 42, 32,112,111,119, 40, 99, 44, 32, 49, 46, 48, 47, 50, 46, 52, 41, 32, 45, 32, 48, 46, 48, 53, - 53, 59, 10,125, 10, 10,118,111,105,100, 32,115,114,103, 98, 95,116,111, 95,108,105,110,101, 97,114,114,103, 98, 40,118,101, 99, - 52, 32, 99,111,108, 95,102,114,111,109, 44, 32,111,117,116, 32,118,101, 99, 52, 32, 99,111,108, 95,116,111, 41, 10,123, 10, 9, - 99,111,108, 95,116,111, 46,114, 32, 61, 32,115,114,103, 98, 95,116,111, 95,108,105,110,101, 97,114,114,103, 98, 40, 99,111,108, - 95,102,114,111,109, 46,114, 41, 59, 10, 9, 99,111,108, 95,116,111, 46,103, 32, 61, 32,115,114,103, 98, 95,116,111, 95,108,105, -110,101, 97,114,114,103, 98, 40, 99,111,108, 95,102,114,111,109, 46,103, 41, 59, 10, 9, 99,111,108, 95,116,111, 46, 98, 32, 61, - 32,115,114,103, 98, 95,116,111, 95,108,105,110,101, 97,114,114,103, 98, 40, 99,111,108, 95,102,114,111,109, 46, 98, 41, 59, 10, - 9, 99,111,108, 95,116,111, 46, 97, 32, 61, 32, 99,111,108, 95,102,114,111,109, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32, -108,105,110,101, 97,114,114,103, 98, 95,116,111, 95,115,114,103, 98, 40,118,101, 99, 52, 32, 99,111,108, 95,102,114,111,109, 44, - 32,111,117,116, 32,118,101, 99, 52, 32, 99,111,108, 95,116,111, 41, 10,123, 10, 9, 99,111,108, 95,116,111, 46,114, 32, 61, 32, -108,105,110,101, 97,114,114,103, 98, 95,116,111, 95,115,114,103, 98, 40, 99,111,108, 95,102,114,111,109, 46,114, 41, 59, 10, 9, - 99,111,108, 95,116,111, 46,103, 32, 61, 32,108,105,110,101, 97,114,114,103, 98, 95,116,111, 95,115,114,103, 98, 40, 99,111,108, - 95,102,114,111,109, 46,103, 41, 59, 10, 9, 99,111,108, 95,116,111, 46, 98, 32, 61, 32,108,105,110,101, 97,114,114,103, 98, 95, -116,111, 95,115,114,103, 98, 40, 99,111,108, 95,102,114,111,109, 46, 98, 41, 59, 10, 9, 99,111,108, 95,116,111, 46, 97, 32, 61, - 32, 99,111,108, 95,102,114,111,109, 46, 97, 59, 10,125, 10, 10, 35,100,101,102,105,110,101, 32, 77, 95, 80, 73, 32, 51, 46, 49, - 52, 49, 53, 57, 50, 54, 53, 51, 53, 56, 57, 55, 57, 51, 50, 51, 56, 52, 54, 10, 10, 47, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 32, 83, 72, 65, 68, 69, 82, 32, 78, 79, 68, 69, 83, 32, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 47, 10, - 10,118,111,105,100, 32,118, 99,111,108, 95, 97,116,116,114,105, 98,117,116,101, 40,118,101, 99, 52, 32, 97,116,116,118, 99,111, -108, 44, 32,111,117,116, 32,118,101, 99, 52, 32,118, 99,111,108, 41, 10,123, 10, 9,118, 99,111,108, 32, 61, 32,118,101, 99, 52, - 40, 97,116,116,118, 99,111,108, 46,120, 47, 50, 53, 53, 46, 48, 44, 32, 97,116,116,118, 99,111,108, 46,121, 47, 50, 53, 53, 46, - 48, 44, 32, 97,116,116,118, 99,111,108, 46,122, 47, 50, 53, 53, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10,125, 10, 10,118,111,105, -100, 32,117,118, 95, 97,116,116,114,105, 98,117,116,101, 40,118,101, 99, 50, 32, 97,116,116,117,118, 44, 32,111,117,116, 32,118, -101, 99, 51, 32,117,118, 41, 10,123, 10, 9,117,118, 32, 61, 32,118,101, 99, 51, 40, 97,116,116,117,118, 42, 50, 46, 48, 32, 45, - 32,118,101, 99, 50, 40, 49, 46, 48, 44, 32, 49, 46, 48, 41, 44, 32, 48, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,103, -101,111,109, 40,118,101, 99, 51, 32, 99,111, 44, 32,118,101, 99, 51, 32,110,111,114, 44, 32,109, 97,116, 52, 32,118,105,101,119, -105,110,118,109, 97,116, 44, 32,118,101, 99, 51, 32, 97,116,116,111,114, 99,111, 44, 32,118,101, 99, 50, 32, 97,116,116,117,118, - 44, 32,118,101, 99, 52, 32, 97,116,116,118, 99,111,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,103,108,111, 98, 97,108, 44, - 32,111,117,116, 32,118,101, 99, 51, 32,108,111, 99, 97,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,118,105,101,119, 44, 32, -111,117,116, 32,118,101, 99, 51, 32,111,114, 99,111, 44, 32,111,117,116, 32,118,101, 99, 51, 32,117,118, 44, 32,111,117,116, 32, -118,101, 99, 51, 32,110,111,114,109, 97,108, 44, 32,111,117,116, 32,118,101, 99, 52, 32,118, 99,111,108, 44, 32,111,117,116, 32, -102,108,111, 97,116, 32,102,114,111,110,116, 98, 97, 99,107, 41, 10,123, 10, 9,108,111, 99, 97,108, 32, 61, 32, 99,111, 59, 10, - 9,118,105,101,119, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,108,111, 99, 97,108, 41, 59, 10, 9,103,108,111, 98, 97, -108, 32, 61, 32, 40,118,105,101,119,105,110,118,109, 97,116, 42,118,101, 99, 52, 40,108,111, 99, 97,108, 44, 32, 49, 46, 48, 41, - 41, 46,120,121,122, 59, 10, 9,111,114, 99,111, 32, 61, 32, 97,116,116,111,114, 99,111, 59, 10, 9,117,118, 95, 97,116,116,114, -105, 98,117,116,101, 40, 97,116,116,117,118, 44, 32,117,118, 41, 59, 10, 9,110,111,114,109, 97,108, 32, 61, 32, 45,110,111,114, -109, 97,108,105,122,101, 40,110,111,114, 41, 59, 9, 47, 42, 32, 98,108,101,110,100,101,114, 32,114,101,110,100,101,114, 32,110, -111,114,109, 97,108, 32,105,115, 32,110,101,103, 97,116,101,100, 32, 42, 47, 10, 9,118, 99,111,108, 95, 97,116,116,114,105, 98, -117,116,101, 40, 97,116,116,118, 99,111,108, 44, 32,118, 99,111,108, 41, 59, 10, 9,102,114,111,110,116, 98, 97, 99,107, 32, 61, - 32, 49, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,112,112,105,110,103, 40,118,101, 99, 51, 32,118,101, 99, 44, 32, -109, 97,116, 52, 32,109, 97,116, 44, 32,118,101, 99, 51, 32,109,105,110,118,101, 99, 44, 32,118,101, 99, 51, 32,109, 97,120,118, -101, 99, 44, 32,102,108,111, 97,116, 32,100,111,109,105,110, 44, 32,102,108,111, 97,116, 32,100,111,109, 97,120, 44, 32,111,117, -116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 41, 10,123, 10, 9,111,117,116,118,101, 99, 32, 61, 32, 40,109, 97,116, 32, - 42, 32,118,101, 99, 52, 40,118,101, 99, 44, 32, 49, 46, 48, 41, 41, 46,120,121,122, 59, 10, 9,105,102, 40,100,111,109,105,110, - 32, 61, 61, 32, 49, 46, 48, 41, 10, 9, 9,111,117,116,118,101, 99, 32, 61, 32,109, 97,120, 40,111,117,116,118,101, 99, 44, 32, -109,105,110,118,101, 99, 41, 59, 10, 9,105,102, 40,100,111,109, 97,120, 32, 61, 61, 32, 49, 46, 48, 41, 10, 9, 9,111,117,116, -118,101, 99, 32, 61, 32,109,105,110, 40,111,117,116,118,101, 99, 44, 32,109, 97,120,118,101, 99, 41, 59, 10,125, 10, 10,118,111, -105,100, 32, 99, 97,109,101,114, 97, 40,118,101, 99, 51, 32, 99,111, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118, -105,101,119, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,100,101,112,116,104, 44, 32,111,117,116, 32,102,108,111, - 97,116, 32,111,117,116,100,105,115,116, 41, 10,123, 10, 9,111,117,116,100,101,112,116,104, 32, 61, 32, 97, 98,115, 40, 99,111, - 46,122, 41, 59, 10, 9,111,117,116,100,105,115,116, 32, 61, 32,108,101,110,103,116,104, 40, 99,111, 41, 59, 10, 9,111,117,116, -118,105,101,119, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40, 99,111, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97, -116,104, 95, 97,100,100, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111, -117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32,118, 97,108, - 49, 32, 43, 32,118, 97,108, 50, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,115,117, 98,116,114, 97, 99,116, 40, -102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97, -116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32,118, 97,108, 49, 32, 45, 32,118, 97,108, - 50, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,109,117,108,116,105,112,108,121, 40,102,108,111, 97,116, 32,118, - 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97, -108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32,118, 97,108, 49, 32, 42, 32,118, 97,108, 50, 59, 10,125, 10, 10,118, -111,105,100, 32,109, 97,116,104, 95,100,105,118,105,100,101, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97, -116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,105,102, 32, - 40,118, 97,108, 50, 32, 61, 61, 32, 48, 46, 48, 41, 10, 9, 9,111,117,116,118, 97,108, 32, 61, 32, 48, 46, 48, 59, 10, 9,101, -108,115,101, 10, 9, 9,111,117,116,118, 97,108, 32, 61, 32,118, 97,108, 49, 32, 47, 32,118, 97,108, 50, 59, 10,125, 10, 10,118, -111,105,100, 32,109, 97,116,104, 95,115,105,110,101, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111, - 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32,115,105,110, 40,118, 97,108, 41, 59, - 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95, 99,111,115,105,110,101, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32, -111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32, 99,111, -115, 40,118, 97,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,116, 97,110,103,101,110,116, 40,102,108,111, - 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116, -118, 97,108, 32, 61, 32,116, 97,110, 40,118, 97,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95, 97,115,105, -110, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, - 10, 9,105,102, 32, 40,118, 97,108, 32, 60, 61, 32, 49, 46, 48, 32, 38, 38, 32,118, 97,108, 32, 62, 61, 32, 45, 49, 46, 48, 41, - 10, 9, 9,111,117,116,118, 97,108, 32, 61, 32, 97,115,105,110, 40,118, 97,108, 41, 59, 10, 9,101,108,115,101, 10, 9, 9,111, -117,116,118, 97,108, 32, 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95, 97, 99,111,115, 40,102, -108,111, 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,105, -102, 32, 40,118, 97,108, 32, 60, 61, 32, 49, 46, 48, 32, 38, 38, 32,118, 97,108, 32, 62, 61, 32, 45, 49, 46, 48, 41, 10, 9, 9, -111,117,116,118, 97,108, 32, 61, 32, 97, 99,111,115, 40,118, 97,108, 41, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116,118, - 97,108, 32, 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95, 97,116, 97,110, 40,102,108,111, 97, -116, 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, - 97,108, 32, 61, 32, 97,116, 97,110, 40,118, 97,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,112,111,119, - 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, - 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,105,102, 32, 40,118, 97,108, 49, 32, 62, 61, 32, 48, 46, 48, 41, 10, 9, - 9,111,117,116,118, 97,108, 32, 61, 32,112,111,119, 40,118, 97,108, 49, 44, 32,118, 97,108, 50, 41, 59, 10, 9,101,108,115,101, - 10, 9, 9,111,117,116,118, 97,108, 32, 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,108,111, -103, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108, -111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,105,102, 40,118, 97,108, 49, 32, 62, 32, 48, 46, 48, 32, 32, 38, 38, - 32,118, 97,108, 50, 32, 62, 32, 48, 46, 48, 41, 10, 9, 9,111,117,116,118, 97,108, 61, 32,108,111,103, 50, 40,118, 97,108, 49, - 41, 32, 47, 32,108,111,103, 50, 40,118, 97,108, 50, 41, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116,118, 97,108, 61, 32, - 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,109, 97,120, 40,102,108,111, 97,116, 32,118, 97,108, 49, - 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10, -123, 10, 9,111,117,116,118, 97,108, 32, 61, 32,109, 97,120, 40,118, 97,108, 49, 44, 32,118, 97,108, 50, 41, 59, 10,125, 10, 10, -118,111,105,100, 32,109, 97,116,104, 95,109,105,110, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32, -118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97, -108, 32, 61, 32,109,105,110, 40,118, 97,108, 49, 44, 32,118, 97,108, 50, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116, -104, 95,114,111,117,110,100, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116, -118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 61, 32,102,108,111,111,114, 40,118, 97,108, 32, 43, 32, 48, 46, 53, 41, - 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,108,101,115,115, 95,116,104, 97,110, 40,102,108,111, 97,116, 32,118, - 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97, -108, 41, 10,123, 10, 9,105,102, 40,118, 97,108, 49, 32, 60, 32,118, 97,108, 50, 41, 10, 9, 9,111,117,116,118, 97,108, 32, 61, - 32, 49, 46, 48, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116,118, 97,108, 32, 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118, -111,105,100, 32,109, 97,116,104, 95,103,114,101, 97,116,101,114, 95,116,104, 97,110, 40,102,108,111, 97,116, 32,118, 97,108, 49, - 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10, -123, 10, 9,105,102, 40,118, 97,108, 49, 32, 62, 32,118, 97,108, 50, 41, 10, 9, 9,111,117,116,118, 97,108, 32, 61, 32, 49, 46, - 48, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116,118, 97,108, 32, 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, - 32,115,113,117,101,101,122,101, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,102,108,111, 97,116, 32,119,105,100,116,104, 44, - 32,102,108,111, 97,116, 32, 99,101,110,116,101,114, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, - 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32, 49, 46, 48, 47, 40, 49, 46, 48, 32, 43, 32,112,111,119, 40, 50, 46, 55, 49, - 56, 50, 56, 49, 56, 51, 44, 32, 45, 40, 40,118, 97,108, 45, 99,101,110,116,101,114, 41, 42,119,105,100,116,104, 41, 41, 41, 59, - 10,125, 10, 10,118,111,105,100, 32,118,101, 99, 95,109, 97,116,104, 95, 97,100,100, 40,118,101, 99, 51, 32,118, 49, 44, 32,118, -101, 99, 51, 32,118, 50, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 44, 32,111,117,116, 32,102,108,111, - 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118,101, 99, 32, 61, 32,118, 49, 32, 43, 32,118, 50, 59, 10, - 9,111,117,116,118, 97,108, 32, 61, 32, 40, 97, 98,115, 40,111,117,116,118,101, 99, 91, 48, 93, 41, 32, 43, 32, 97, 98,115, 40, -111,117,116,118,101, 99, 91, 49, 93, 41, 32, 43, 32, 97, 98,115, 40,111,117,116,118,101, 99, 91, 50, 93, 41, 41, 47, 51, 46, 48, - 59, 10,125, 10, 10,118,111,105,100, 32,118,101, 99, 95,109, 97,116,104, 95,115,117, 98, 40,118,101, 99, 51, 32,118, 49, 44, 32, -118,101, 99, 51, 32,118, 50, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 44, 32,111,117,116, 32,102,108, -111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118,101, 99, 32, 61, 32,118, 49, 32, 45, 32,118, 50, 59, - 10, 9,111,117,116,118, 97,108, 32, 61, 32, 40, 97, 98,115, 40,111,117,116,118,101, 99, 91, 48, 93, 41, 32, 43, 32, 97, 98,115, - 40,111,117,116,118,101, 99, 91, 49, 93, 41, 32, 43, 32, 97, 98,115, 40,111,117,116,118,101, 99, 91, 50, 93, 41, 41, 47, 51, 46, - 48, 59, 10,125, 10, 10,118,111,105,100, 32,118,101, 99, 95,109, 97,116,104, 95, 97,118,101,114, 97,103,101, 40,118,101, 99, 51, - 32,118, 49, 44, 32,118,101, 99, 51, 32,118, 50, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 44, 32,111, -117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118,101, 99, 32, 61, 32,118, 49, 32, - 43, 32,118, 50, 59, 10, 9,111,117,116,118, 97,108, 32, 61, 32,108,101,110,103,116,104, 40,111,117,116,118,101, 99, 41, 59, 10, - 9,111,117,116,118,101, 99, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,111,117,116,118,101, 99, 41, 59, 10,125, 10, 10, -118,111,105,100, 32,118,101, 99, 95,109, 97,116,104, 95,100,111,116, 40,118,101, 99, 51, 32,118, 49, 44, 32,118,101, 99, 51, 32, + 10,102,108,111, 97,116, 32,101,120, +112, 95, 98,108,101,110,100,101,114, 40,102,108,111, 97,116, 32,102, 41, 10,123, 10, 9,114,101,116,117,114,110, 32,112,111,119, + 40, 50, 46, 55, 49, 56, 50, 56, 49, 56, 50, 56, 52, 54, 44, 32,102, 41, 59, 10,125, 10, 10,118,111,105,100, 32,114,103, 98, 95, +116,111, 95,104,115,118, 40,118,101, 99, 52, 32,114,103, 98, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, + 41, 10,123, 10, 9,102,108,111, 97,116, 32, 99,109, 97,120, 44, 32, 99,109,105,110, 44, 32,104, 44, 32,115, 44, 32,118, 44, 32, + 99,100,101,108,116, 97, 59, 10, 9,118,101, 99, 51, 32, 99, 59, 10, 10, 9, 99,109, 97,120, 32, 61, 32,109, 97,120, 40,114,103, + 98, 91, 48, 93, 44, 32,109, 97,120, 40,114,103, 98, 91, 49, 93, 44, 32,114,103, 98, 91, 50, 93, 41, 41, 59, 10, 9, 99,109,105, +110, 32, 61, 32,109,105,110, 40,114,103, 98, 91, 48, 93, 44, 32,109,105,110, 40,114,103, 98, 91, 49, 93, 44, 32,114,103, 98, 91, + 50, 93, 41, 41, 59, 10, 9, 99,100,101,108,116, 97, 32, 61, 32, 99,109, 97,120, 45, 99,109,105,110, 59, 10, 10, 9,118, 32, 61, + 32, 99,109, 97,120, 59, 10, 9,105,102, 32, 40, 99,109, 97,120, 33, 61, 48, 46, 48, 41, 10, 9, 9,115, 32, 61, 32, 99,100,101, +108,116, 97, 47, 99,109, 97,120, 59, 10, 9,101,108,115,101, 32,123, 10, 9, 9,115, 32, 61, 32, 48, 46, 48, 59, 10, 9, 9,104, + 32, 61, 32, 48, 46, 48, 59, 10, 9,125, 10, 10, 9,105,102, 32, 40,115, 32, 61, 61, 32, 48, 46, 48, 41, 32,123, 10, 9, 9,104, + 32, 61, 32, 48, 46, 48, 59, 10, 9,125, 10, 9,101,108,115,101, 32,123, 10, 9, 9, 99, 32, 61, 32, 40,118,101, 99, 51, 40, 99, +109, 97,120, 44, 32, 99,109, 97,120, 44, 32, 99,109, 97,120, 41, 32, 45, 32,114,103, 98, 46,120,121,122, 41, 47, 99,100,101,108, +116, 97, 59, 10, 10, 9, 9,105,102, 32, 40,114,103, 98, 46,120, 61, 61, 99,109, 97,120, 41, 32,104, 32, 61, 32, 99, 91, 50, 93, + 32, 45, 32, 99, 91, 49, 93, 59, 10, 9, 9,101,108,115,101, 32,105,102, 32, 40,114,103, 98, 46,121, 61, 61, 99,109, 97,120, 41, + 32,104, 32, 61, 32, 50, 46, 48, 32, 43, 32, 99, 91, 48, 93, 32, 45, 32, 32, 99, 91, 50, 93, 59, 10, 9, 9,101,108,115,101, 32, +104, 32, 61, 32, 52, 46, 48, 32, 43, 32, 99, 91, 49, 93, 32, 45, 32, 99, 91, 48, 93, 59, 10, 10, 9, 9,104, 32, 47, 61, 32, 54, + 46, 48, 59, 10, 10, 9, 9,105,102, 32, 40,104, 60, 48, 46, 48, 41, 10, 9, 9, 9,104, 32, 43, 61, 32, 49, 46, 48, 59, 10, 9, +125, 10, 10, 9,111,117,116, 99,111,108, 32, 61, 32,118,101, 99, 52, 40,104, 44, 32,115, 44, 32,118, 44, 32,114,103, 98, 46,119, + 41, 59, 10,125, 10, 10,118,111,105,100, 32,104,115,118, 95,116,111, 95,114,103, 98, 40,118,101, 99, 52, 32,104,115,118, 44, 32, +111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,105, 44, 32,102, 44, 32, +112, 44, 32,113, 44, 32,116, 44, 32,104, 44, 32,115, 44, 32,118, 59, 10, 9,118,101, 99, 51, 32,114,103, 98, 59, 10, 10, 9,104, + 32, 61, 32,104,115,118, 91, 48, 93, 59, 10, 9,115, 32, 61, 32,104,115,118, 91, 49, 93, 59, 10, 9,118, 32, 61, 32,104,115,118, + 91, 50, 93, 59, 10, 10, 9,105,102, 40,115, 61, 61, 48, 46, 48, 41, 32,123, 10, 9, 9,114,103, 98, 32, 61, 32,118,101, 99, 51, + 40,118, 44, 32,118, 44, 32,118, 41, 59, 10, 9,125, 10, 9,101,108,115,101, 32,123, 10, 9, 9,105,102, 40,104, 61, 61, 49, 46, + 48, 41, 10, 9, 9, 9,104, 32, 61, 32, 48, 46, 48, 59, 10, 9, 9, 10, 9, 9,104, 32, 42, 61, 32, 54, 46, 48, 59, 10, 9, 9, +105, 32, 61, 32,102,108,111,111,114, 40,104, 41, 59, 10, 9, 9,102, 32, 61, 32,104, 32, 45, 32,105, 59, 10, 9, 9,114,103, 98, + 32, 61, 32,118,101, 99, 51, 40,102, 44, 32,102, 44, 32,102, 41, 59, 10, 9, 9,112, 32, 61, 32,118, 42, 40, 49, 46, 48, 45,115, + 41, 59, 10, 9, 9,113, 32, 61, 32,118, 42, 40, 49, 46, 48, 45, 40,115, 42,102, 41, 41, 59, 10, 9, 9,116, 32, 61, 32,118, 42, + 40, 49, 46, 48, 45, 40,115, 42, 40, 49, 46, 48, 45,102, 41, 41, 41, 59, 10, 9, 9, 10, 9, 9,105,102, 32, 40,105, 32, 61, 61, + 32, 48, 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,118, 44, 32,116, 44, 32,112, 41, 59, 10, 9, 9,101,108,115, +101, 32,105,102, 32, 40,105, 32, 61, 61, 32, 49, 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,113, 44, 32,118, 44, + 32,112, 41, 59, 10, 9, 9,101,108,115,101, 32,105,102, 32, 40,105, 32, 61, 61, 32, 50, 46, 48, 41, 32,114,103, 98, 32, 61, 32, +118,101, 99, 51, 40,112, 44, 32,118, 44, 32,116, 41, 59, 10, 9, 9,101,108,115,101, 32,105,102, 32, 40,105, 32, 61, 61, 32, 51, + 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,112, 44, 32,113, 44, 32,118, 41, 59, 10, 9, 9,101,108,115,101, 32, +105,102, 32, 40,105, 32, 61, 61, 32, 52, 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,116, 44, 32,112, 44, 32,118, + 41, 59, 10, 9, 9,101,108,115,101, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,118, 44, 32,112, 44, 32,113, 41, 59, 10, 9, +125, 10, 10, 9,111,117,116, 99,111,108, 32, 61, 32,118,101, 99, 52, 40,114,103, 98, 44, 32,104,115,118, 46,119, 41, 59, 10,125, + 10, 10,102,108,111, 97,116, 32,115,114,103, 98, 95,116,111, 95,108,105,110,101, 97,114,114,103, 98, 40,102,108,111, 97,116, 32, + 99, 41, 10,123, 10, 9,105,102, 40, 99, 32, 60, 32, 48, 46, 48, 52, 48, 52, 53, 41, 10, 9, 9,114,101,116,117,114,110, 32, 40, + 99, 32, 60, 32, 48, 46, 48, 41, 63, 32, 48, 46, 48, 58, 32, 99, 32, 42, 32, 40, 49, 46, 48, 47, 49, 50, 46, 57, 50, 41, 59, 10, + 9,101,108,115,101, 10, 9, 9,114,101,116,117,114,110, 32,112,111,119, 40, 40, 99, 32, 43, 32, 48, 46, 48, 53, 53, 41, 42, 40, + 49, 46, 48, 47, 49, 46, 48, 53, 53, 41, 44, 32, 50, 46, 52, 41, 59, 10,125, 10, 10,102,108,111, 97,116, 32,108,105,110,101, 97, +114,114,103, 98, 95,116,111, 95,115,114,103, 98, 40,102,108,111, 97,116, 32, 99, 41, 10,123, 10, 9,105,102, 40, 99, 32, 60, 32, + 48, 46, 48, 48, 51, 49, 51, 48, 56, 41, 10, 9, 9,114,101,116,117,114,110, 32, 40, 99, 32, 60, 32, 48, 46, 48, 41, 63, 32, 48, + 46, 48, 58, 32, 99, 32, 42, 32, 49, 50, 46, 57, 50, 59, 10, 9,101,108,115,101, 10, 9, 9,114,101,116,117,114,110, 32, 49, 46, + 48, 53, 53, 32, 42, 32,112,111,119, 40, 99, 44, 32, 49, 46, 48, 47, 50, 46, 52, 41, 32, 45, 32, 48, 46, 48, 53, 53, 59, 10,125, + 10, 10,118,111,105,100, 32,115,114,103, 98, 95,116,111, 95,108,105,110,101, 97,114,114,103, 98, 40,118,101, 99, 52, 32, 99,111, +108, 95,102,114,111,109, 44, 32,111,117,116, 32,118,101, 99, 52, 32, 99,111,108, 95,116,111, 41, 10,123, 10, 9, 99,111,108, 95, +116,111, 46,114, 32, 61, 32,115,114,103, 98, 95,116,111, 95,108,105,110,101, 97,114,114,103, 98, 40, 99,111,108, 95,102,114,111, +109, 46,114, 41, 59, 10, 9, 99,111,108, 95,116,111, 46,103, 32, 61, 32,115,114,103, 98, 95,116,111, 95,108,105,110,101, 97,114, +114,103, 98, 40, 99,111,108, 95,102,114,111,109, 46,103, 41, 59, 10, 9, 99,111,108, 95,116,111, 46, 98, 32, 61, 32,115,114,103, + 98, 95,116,111, 95,108,105,110,101, 97,114,114,103, 98, 40, 99,111,108, 95,102,114,111,109, 46, 98, 41, 59, 10, 9, 99,111,108, + 95,116,111, 46, 97, 32, 61, 32, 99,111,108, 95,102,114,111,109, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,108,105,110,101, + 97,114,114,103, 98, 95,116,111, 95,115,114,103, 98, 40,118,101, 99, 52, 32, 99,111,108, 95,102,114,111,109, 44, 32,111,117,116, + 32,118,101, 99, 52, 32, 99,111,108, 95,116,111, 41, 10,123, 10, 9, 99,111,108, 95,116,111, 46,114, 32, 61, 32,108,105,110,101, + 97,114,114,103, 98, 95,116,111, 95,115,114,103, 98, 40, 99,111,108, 95,102,114,111,109, 46,114, 41, 59, 10, 9, 99,111,108, 95, +116,111, 46,103, 32, 61, 32,108,105,110,101, 97,114,114,103, 98, 95,116,111, 95,115,114,103, 98, 40, 99,111,108, 95,102,114,111, +109, 46,103, 41, 59, 10, 9, 99,111,108, 95,116,111, 46, 98, 32, 61, 32,108,105,110,101, 97,114,114,103, 98, 95,116,111, 95,115, +114,103, 98, 40, 99,111,108, 95,102,114,111,109, 46, 98, 41, 59, 10, 9, 99,111,108, 95,116,111, 46, 97, 32, 61, 32, 99,111,108, + 95,102,114,111,109, 46, 97, 59, 10,125, 10, 10, 35,100,101,102,105,110,101, 32, 77, 95, 80, 73, 32, 51, 46, 49, 52, 49, 53, 57, + 50, 54, 53, 51, 53, 56, 57, 55, 57, 51, 50, 51, 56, 52, 54, 10, 10, 47, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 32, 83, 72, + 65, 68, 69, 82, 32, 78, 79, 68, 69, 83, 32, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 47, 10, 10,118,111,105, +100, 32,118, 99,111,108, 95, 97,116,116,114,105, 98,117,116,101, 40,118,101, 99, 52, 32, 97,116,116,118, 99,111,108, 44, 32,111, +117,116, 32,118,101, 99, 52, 32,118, 99,111,108, 41, 10,123, 10, 9,118, 99,111,108, 32, 61, 32,118,101, 99, 52, 40, 97,116,116, +118, 99,111,108, 46,120, 47, 50, 53, 53, 46, 48, 44, 32, 97,116,116,118, 99,111,108, 46,121, 47, 50, 53, 53, 46, 48, 44, 32, 97, +116,116,118, 99,111,108, 46,122, 47, 50, 53, 53, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,117,118, + 95, 97,116,116,114,105, 98,117,116,101, 40,118,101, 99, 50, 32, 97,116,116,117,118, 44, 32,111,117,116, 32,118,101, 99, 51, 32, +117,118, 41, 10,123, 10, 9,117,118, 32, 61, 32,118,101, 99, 51, 40, 97,116,116,117,118, 42, 50, 46, 48, 32, 45, 32,118,101, 99, + 50, 40, 49, 46, 48, 44, 32, 49, 46, 48, 41, 44, 32, 48, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,103,101,111,109, 40, +118,101, 99, 51, 32, 99,111, 44, 32,118,101, 99, 51, 32,110,111,114, 44, 32,109, 97,116, 52, 32,118,105,101,119,105,110,118,109, + 97,116, 44, 32,118,101, 99, 51, 32, 97,116,116,111,114, 99,111, 44, 32,118,101, 99, 50, 32, 97,116,116,117,118, 44, 32,118,101, + 99, 52, 32, 97,116,116,118, 99,111,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,103,108,111, 98, 97,108, 44, 32,111,117,116, + 32,118,101, 99, 51, 32,108,111, 99, 97,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,118,105,101,119, 44, 32,111,117,116, 32, +118,101, 99, 51, 32,111,114, 99,111, 44, 32,111,117,116, 32,118,101, 99, 51, 32,117,118, 44, 32,111,117,116, 32,118,101, 99, 51, + 32,110,111,114,109, 97,108, 44, 32,111,117,116, 32,118,101, 99, 52, 32,118, 99,111,108, 44, 32,111,117,116, 32,102,108,111, 97, +116, 32,102,114,111,110,116, 98, 97, 99,107, 41, 10,123, 10, 9,108,111, 99, 97,108, 32, 61, 32, 99,111, 59, 10, 9,118,105,101, +119, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,108,111, 99, 97,108, 41, 59, 10, 9,103,108,111, 98, 97,108, 32, 61, 32, + 40,118,105,101,119,105,110,118,109, 97,116, 42,118,101, 99, 52, 40,108,111, 99, 97,108, 44, 32, 49, 46, 48, 41, 41, 46,120,121, +122, 59, 10, 9,111,114, 99,111, 32, 61, 32, 97,116,116,111,114, 99,111, 59, 10, 9,117,118, 95, 97,116,116,114,105, 98,117,116, +101, 40, 97,116,116,117,118, 44, 32,117,118, 41, 59, 10, 9,110,111,114,109, 97,108, 32, 61, 32, 45,110,111,114,109, 97,108,105, +122,101, 40,110,111,114, 41, 59, 9, 47, 42, 32, 98,108,101,110,100,101,114, 32,114,101,110,100,101,114, 32,110,111,114,109, 97, +108, 32,105,115, 32,110,101,103, 97,116,101,100, 32, 42, 47, 10, 9,118, 99,111,108, 95, 97,116,116,114,105, 98,117,116,101, 40, + 97,116,116,118, 99,111,108, 44, 32,118, 99,111,108, 41, 59, 10, 9,102,114,111,110,116, 98, 97, 99,107, 32, 61, 32, 49, 46, 48, + 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,112,112,105,110,103, 40,118,101, 99, 51, 32,118,101, 99, 44, 32,109, 97,116, 52, + 32,109, 97,116, 44, 32,118,101, 99, 51, 32,109,105,110,118,101, 99, 44, 32,118,101, 99, 51, 32,109, 97,120,118,101, 99, 44, 32, +102,108,111, 97,116, 32,100,111,109,105,110, 44, 32,102,108,111, 97,116, 32,100,111,109, 97,120, 44, 32,111,117,116, 32,118,101, + 99, 51, 32,111,117,116,118,101, 99, 41, 10,123, 10, 9,111,117,116,118,101, 99, 32, 61, 32, 40,109, 97,116, 32, 42, 32,118,101, + 99, 52, 40,118,101, 99, 44, 32, 49, 46, 48, 41, 41, 46,120,121,122, 59, 10, 9,105,102, 40,100,111,109,105,110, 32, 61, 61, 32, + 49, 46, 48, 41, 10, 9, 9,111,117,116,118,101, 99, 32, 61, 32,109, 97,120, 40,111,117,116,118,101, 99, 44, 32,109,105,110,118, +101, 99, 41, 59, 10, 9,105,102, 40,100,111,109, 97,120, 32, 61, 61, 32, 49, 46, 48, 41, 10, 9, 9,111,117,116,118,101, 99, 32, + 61, 32,109,105,110, 40,111,117,116,118,101, 99, 44, 32,109, 97,120,118,101, 99, 41, 59, 10,125, 10, 10,118,111,105,100, 32, 99, + 97,109,101,114, 97, 40,118,101, 99, 51, 32, 99,111, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,105,101,119, 44, + 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,100,101,112,116,104, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111, +117,116,100,105,115,116, 41, 10,123, 10, 9,111,117,116,100,101,112,116,104, 32, 61, 32, 97, 98,115, 40, 99,111, 46,122, 41, 59, + 10, 9,111,117,116,100,105,115,116, 32, 61, 32,108,101,110,103,116,104, 40, 99,111, 41, 59, 10, 9,111,117,116,118,105,101,119, + 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40, 99,111, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95, 97, +100,100, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102, +108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32,118, 97,108, 49, 32, 43, 32, +118, 97,108, 50, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,115,117, 98,116,114, 97, 99,116, 40,102,108,111, 97, +116, 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117, +116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32,118, 97,108, 49, 32, 45, 32,118, 97,108, 50, 59, 10,125, + 10, 10,118,111,105,100, 32,109, 97,116,104, 95,109,117,108,116,105,112,108,121, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, + 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, + 10, 9,111,117,116,118, 97,108, 32, 61, 32,118, 97,108, 49, 32, 42, 32,118, 97,108, 50, 59, 10,125, 10, 10,118,111,105,100, 32, +109, 97,116,104, 95,100,105,118,105,100,101, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97, +108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,105,102, 32, 40,118, 97,108, + 50, 32, 61, 61, 32, 48, 46, 48, 41, 10, 9, 9,111,117,116,118, 97,108, 32, 61, 32, 48, 46, 48, 59, 10, 9,101,108,115,101, 10, + 9, 9,111,117,116,118, 97,108, 32, 61, 32,118, 97,108, 49, 32, 47, 32,118, 97,108, 50, 59, 10,125, 10, 10,118,111,105,100, 32, +109, 97,116,104, 95,115,105,110,101, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111, +117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32,115,105,110, 40,118, 97,108, 41, 59, 10,125, 10, 10, +118,111,105,100, 32,109, 97,116,104, 95, 99,111,115,105,110,101, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,111,117,116, 32, +102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32, 99,111,115, 40,118, 97, +108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,116, 97,110,103,101,110,116, 40,102,108,111, 97,116, 32,118, + 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, + 61, 32,116, 97,110, 40,118, 97,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95, 97,115,105,110, 40,102,108, +111, 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,105,102, + 32, 40,118, 97,108, 32, 60, 61, 32, 49, 46, 48, 32, 38, 38, 32,118, 97,108, 32, 62, 61, 32, 45, 49, 46, 48, 41, 10, 9, 9,111, +117,116,118, 97,108, 32, 61, 32, 97,115,105,110, 40,118, 97,108, 41, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116,118, 97, +108, 32, 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95, 97, 99,111,115, 40,102,108,111, 97,116, + 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,105,102, 32, 40,118, + 97,108, 32, 60, 61, 32, 49, 46, 48, 32, 38, 38, 32,118, 97,108, 32, 62, 61, 32, 45, 49, 46, 48, 41, 10, 9, 9,111,117,116,118, + 97,108, 32, 61, 32, 97, 99,111,115, 40,118, 97,108, 41, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116,118, 97,108, 32, 61, + 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95, 97,116, 97,110, 40,102,108,111, 97,116, 32,118, 97, +108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, + 32, 97,116, 97,110, 40,118, 97,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,112,111,119, 40,102,108,111, + 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111, +117,116,118, 97,108, 41, 10,123, 10, 9,105,102, 32, 40,118, 97,108, 49, 32, 62, 61, 32, 48, 46, 48, 41, 10, 9, 9,111,117,116, +118, 97,108, 32, 61, 32,112,111,119, 40,118, 97,108, 49, 44, 32,118, 97,108, 50, 41, 59, 10, 9,101,108,115,101, 10, 9, 9,111, +117,116,118, 97,108, 32, 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,108,111,103, 40,102,108, +111, 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32, +111,117,116,118, 97,108, 41, 10,123, 10, 9,105,102, 40,118, 97,108, 49, 32, 62, 32, 48, 46, 48, 32, 32, 38, 38, 32,118, 97,108, + 50, 32, 62, 32, 48, 46, 48, 41, 10, 9, 9,111,117,116,118, 97,108, 61, 32,108,111,103, 50, 40,118, 97,108, 49, 41, 32, 47, 32, +108,111,103, 50, 40,118, 97,108, 50, 41, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116,118, 97,108, 61, 32, 48, 46, 48, 59, + 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,109, 97,120, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108, +111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111, +117,116,118, 97,108, 32, 61, 32,109, 97,120, 40,118, 97,108, 49, 44, 32,118, 97,108, 50, 41, 59, 10,125, 10, 10,118,111,105,100, + 32,109, 97,116,104, 95,109,105,110, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, + 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32, +109,105,110, 40,118, 97,108, 49, 44, 32,118, 97,108, 50, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,114,111, +117,110,100, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, + 10,123, 10, 9,111,117,116,118, 97,108, 61, 32,102,108,111,111,114, 40,118, 97,108, 32, 43, 32, 48, 46, 53, 41, 59, 10,125, 10, + 10,118,111,105,100, 32,109, 97,116,104, 95,108,101,115,115, 95,116,104, 97,110, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, + 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, + 10, 9,105,102, 40,118, 97,108, 49, 32, 60, 32,118, 97,108, 50, 41, 10, 9, 9,111,117,116,118, 97,108, 32, 61, 32, 49, 46, 48, + 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116,118, 97,108, 32, 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32, +109, 97,116,104, 95,103,114,101, 97,116,101,114, 95,116,104, 97,110, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108, +111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,105, +102, 40,118, 97,108, 49, 32, 62, 32,118, 97,108, 50, 41, 10, 9, 9,111,117,116,118, 97,108, 32, 61, 32, 49, 46, 48, 59, 10, 9, +101,108,115,101, 10, 9, 9,111,117,116,118, 97,108, 32, 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,115,113,117, +101,101,122,101, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,102,108,111, 97,116, 32,119,105,100,116,104, 44, 32,102,108,111, + 97,116, 32, 99,101,110,116,101,114, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9, +111,117,116,118, 97,108, 32, 61, 32, 49, 46, 48, 47, 40, 49, 46, 48, 32, 43, 32,112,111,119, 40, 50, 46, 55, 49, 56, 50, 56, 49, + 56, 51, 44, 32, 45, 40, 40,118, 97,108, 45, 99,101,110,116,101,114, 41, 42,119,105,100,116,104, 41, 41, 41, 59, 10,125, 10, 10, +118,111,105,100, 32,118,101, 99, 95,109, 97,116,104, 95, 97,100,100, 40,118,101, 99, 51, 32,118, 49, 44, 32,118,101, 99, 51, 32, 118, 50, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111, -117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118,101, 99, 32, 61, 32,118,101, 99, 51, 40, 48, 44, 32, 48, 44, 32, 48, 41, - 59, 10, 9,111,117,116,118, 97,108, 32, 61, 32,100,111,116, 40,118, 49, 44, 32,118, 50, 41, 59, 10,125, 10, 10,118,111,105,100, - 32,118,101, 99, 95,109, 97,116,104, 95, 99,114,111,115,115, 40,118,101, 99, 51, 32,118, 49, 44, 32,118,101, 99, 51, 32,118, 50, - 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116, -118, 97,108, 41, 10,123, 10, 9,111,117,116,118,101, 99, 32, 61, 32, 99,114,111,115,115, 40,118, 49, 44, 32,118, 50, 41, 59, 10, - 9,111,117,116,118, 97,108, 32, 61, 32,108,101,110,103,116,104, 40,111,117,116,118,101, 99, 41, 59, 10,125, 10, 10,118,111,105, -100, 32,118,101, 99, 95,109, 97,116,104, 95,110,111,114,109, 97,108,105,122,101, 40,118,101, 99, 51, 32,118, 44, 32,111,117,116, - 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10, -123, 10, 9,111,117,116,118, 97,108, 32, 61, 32,108,101,110,103,116,104, 40,118, 41, 59, 10, 9,111,117,116,118,101, 99, 32, 61, - 32,110,111,114,109, 97,108,105,122,101, 40,118, 41, 59, 10,125, 10, 10,118,111,105,100, 32,118,101, 99, 95,109, 97,116,104, 95, -110,101,103, 97,116,101, 40,118,101, 99, 51, 32,118, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118, 41, 10,123, 10, - 9,111,117,116,118, 32, 61, 32, 45,118, 59, 10,125, 10, 10,118,111,105,100, 32,110,111,114,109, 97,108, 40,118,101, 99, 51, 32, -100,105,114, 44, 32,118,101, 99, 51, 32,110,111,114, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,110,111,114, 44, 32, -111,117,116, 32,102,108,111, 97,116, 32,111,117,116,100,111,116, 41, 10,123, 10, 9,111,117,116,110,111,114, 32, 61, 32,100,105, -114, 59, 10, 9,111,117,116,100,111,116, 32, 61, 32, 45,100,111,116, 40,100,105,114, 44, 32,110,111,114, 41, 59, 10,125, 10, 10, -118,111,105,100, 32, 99,117,114,118,101,115, 95,118,101, 99, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 51, 32, -118,101, 99, 44, 32,115, 97,109,112,108,101,114, 49, 68, 32, 99,117,114,118,101,109, 97,112, 44, 32,111,117,116, 32,118,101, 99, - 51, 32,111,117,116,118,101, 99, 41, 10,123, 10, 9,111,117,116,118,101, 99, 46,120, 32, 61, 32,116,101,120,116,117,114,101, 49, - 68, 40, 99,117,114,118,101,109, 97,112, 44, 32, 40,118,101, 99, 46,120, 32, 43, 32, 49, 46, 48, 41, 42, 48, 46, 53, 41, 46,120, - 59, 10, 9,111,117,116,118,101, 99, 46,121, 32, 61, 32,116,101,120,116,117,114,101, 49, 68, 40, 99,117,114,118,101,109, 97,112, - 44, 32, 40,118,101, 99, 46,121, 32, 43, 32, 49, 46, 48, 41, 42, 48, 46, 53, 41, 46,121, 59, 10, 9,111,117,116,118,101, 99, 46, -122, 32, 61, 32,116,101,120,116,117,114,101, 49, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32, 40,118,101, 99, 46,122, 32, 43, - 32, 49, 46, 48, 41, 42, 48, 46, 53, 41, 46,122, 59, 10, 10, 9,105,102, 32, 40,102, 97, 99, 32, 33, 61, 32, 49, 46, 48, 41, 10, - 9, 9,111,117,116,118,101, 99, 32, 61, 32, 40,111,117,116,118,101, 99, 42,102, 97, 99, 41, 32, 43, 32, 40,118,101, 99, 42, 40, - 49, 46, 48, 45,102, 97, 99, 41, 41, 59, 10, 10,125, 10, 10,118,111,105,100, 32, 99,117,114,118,101,115, 95,114,103, 98, 40,102, -108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 44, 32,115, 97,109,112,108,101,114, 49, 68, 32, 99,117, -114,118,101,109, 97,112, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,111,117,116, 99, -111,108, 46,114, 32, 61, 32,116,101,120,116,117,114,101, 49, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,116,101,120,116,117, -114,101, 49, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32, 99,111,108, 46,114, 41, 46, 97, 41, 46,114, 59, 10, 9,111,117,116, - 99,111,108, 46,103, 32, 61, 32,116,101,120,116,117,114,101, 49, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,116,101,120,116, -117,114,101, 49, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32, 99,111,108, 46,103, 41, 46, 97, 41, 46,103, 59, 10, 9,111,117, -116, 99,111,108, 46, 98, 32, 61, 32,116,101,120,116,117,114,101, 49, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,116,101,120, -116,117,114,101, 49, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32, 99,111,108, 46, 98, 41, 46, 97, 41, 46, 98, 59, 10, 10, 9, -105,102, 32, 40,102, 97, 99, 32, 33, 61, 32, 49, 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 32, 61, 32, 40,111,117,116, 99, -111,108, 42,102, 97, 99, 41, 32, 43, 32, 40, 99,111,108, 42, 40, 49, 46, 48, 45,102, 97, 99, 41, 41, 59, 10, 10, 9,111,117,116, - 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,115,101,116, 95,118, 97,108,117,101, - 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, - 9,111,117,116,118, 97,108, 32, 61, 32,118, 97,108, 59, 10,125, 10, 10,118,111,105,100, 32,115,101,116, 95,114,103, 98, 40,118, -101, 99, 51, 32, 99,111,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,111,117,116, - 99,111,108, 32, 61, 32, 99,111,108, 59, 10,125, 10, 10,118,111,105,100, 32,115,101,116, 95,114,103, 98, 97, 40,118,101, 99, 52, - 32, 99,111,108, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,111,117,116, 99,111,108, - 32, 61, 32, 99,111,108, 59, 10,125, 10, 10,118,111,105,100, 32,115,101,116, 95,118, 97,108,117,101, 95,122,101,114,111, 40,111, -117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32, 48, 46, 48, - 59, 10,125, 10, 10,118,111,105,100, 32,115,101,116, 95,118, 97,108,117,101, 95,111,110,101, 40,111,117,116, 32,102,108,111, 97, -116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32, 49, 46, 48, 59, 10,125, 10, 10,118,111, -105,100, 32,115,101,116, 95,114,103, 98, 95,122,101,114,111, 40,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118, 97,108, 41, - 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32,118,101, 99, 51, 40, 48, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32, -115,101,116, 95,114,103, 98, 97, 95,122,101,114,111, 40,111,117,116, 32,118,101, 99, 52, 32,111,117,116,118, 97,108, 41, 10,123, - 10, 9,111,117,116,118, 97,108, 32, 61, 32,118,101, 99, 52, 40, 48, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,105, -120, 95, 98,108,101,110,100, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, - 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, - 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,111,117,116, 99,111,108, - 32, 61, 32,109,105,120, 40, 99,111,108, 49, 44, 32, 99,111,108, 50, 44, 32,102, 97, 99, 41, 59, 10, 9,111,117,116, 99,111,108, - 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95, 97,100,100, 40,102,108,111, - 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117, -116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, - 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,111,117,116, 99,111,108, 32, 61, 32,109,105,120, 40, 99,111,108, 49, - 44, 32, 99,111,108, 49, 32, 43, 32, 99,111,108, 50, 44, 32,102, 97, 99, 41, 59, 10, 9,111,117,116, 99,111,108, 46, 97, 32, 61, - 32, 99,111,108, 49, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,109,117,108,116, 40,102,108,111, 97,116, 32, -102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118, -101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, - 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,111,117,116, 99,111,108, 32, 61, 32,109,105,120, 40, 99,111,108, 49, 44, 32, 99, -111,108, 49, 32, 42, 32, 99,111,108, 50, 44, 32,102, 97, 99, 41, 59, 10, 9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111, -108, 49, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,115, 99,114,101,101,110, 40,102,108,111, 97,116, 32,102, +117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118,101, 99, 32, 61, 32,118, 49, 32, 43, 32,118, 50, 59, 10, 9,111,117,116, +118, 97,108, 32, 61, 32, 40, 97, 98,115, 40,111,117,116,118,101, 99, 91, 48, 93, 41, 32, 43, 32, 97, 98,115, 40,111,117,116,118, +101, 99, 91, 49, 93, 41, 32, 43, 32, 97, 98,115, 40,111,117,116,118,101, 99, 91, 50, 93, 41, 41, 47, 51, 46, 48, 59, 10,125, 10, + 10,118,111,105,100, 32,118,101, 99, 95,109, 97,116,104, 95,115,117, 98, 40,118,101, 99, 51, 32,118, 49, 44, 32,118,101, 99, 51, + 32,118, 50, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32, +111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118,101, 99, 32, 61, 32,118, 49, 32, 45, 32,118, 50, 59, 10, 9,111,117, +116,118, 97,108, 32, 61, 32, 40, 97, 98,115, 40,111,117,116,118,101, 99, 91, 48, 93, 41, 32, 43, 32, 97, 98,115, 40,111,117,116, +118,101, 99, 91, 49, 93, 41, 32, 43, 32, 97, 98,115, 40,111,117,116,118,101, 99, 91, 50, 93, 41, 41, 47, 51, 46, 48, 59, 10,125, + 10, 10,118,111,105,100, 32,118,101, 99, 95,109, 97,116,104, 95, 97,118,101,114, 97,103,101, 40,118,101, 99, 51, 32,118, 49, 44, + 32,118,101, 99, 51, 32,118, 50, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 44, 32,111,117,116, 32,102, +108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118,101, 99, 32, 61, 32,118, 49, 32, 43, 32,118, 50, + 59, 10, 9,111,117,116,118, 97,108, 32, 61, 32,108,101,110,103,116,104, 40,111,117,116,118,101, 99, 41, 59, 10, 9,111,117,116, +118,101, 99, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,111,117,116,118,101, 99, 41, 59, 10,125, 10, 10,118,111,105,100, + 32,118,101, 99, 95,109, 97,116,104, 95,100,111,116, 40,118,101, 99, 51, 32,118, 49, 44, 32,118,101, 99, 51, 32,118, 50, 44, 32, +111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97, +108, 41, 10,123, 10, 9,111,117,116,118,101, 99, 32, 61, 32,118,101, 99, 51, 40, 48, 44, 32, 48, 44, 32, 48, 41, 59, 10, 9,111, +117,116,118, 97,108, 32, 61, 32,100,111,116, 40,118, 49, 44, 32,118, 50, 41, 59, 10,125, 10, 10,118,111,105,100, 32,118,101, 99, + 95,109, 97,116,104, 95, 99,114,111,115,115, 40,118,101, 99, 51, 32,118, 49, 44, 32,118,101, 99, 51, 32,118, 50, 44, 32,111,117, +116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, + 10,123, 10, 9,111,117,116,118,101, 99, 32, 61, 32, 99,114,111,115,115, 40,118, 49, 44, 32,118, 50, 41, 59, 10, 9,111,117,116, +118, 97,108, 32, 61, 32,108,101,110,103,116,104, 40,111,117,116,118,101, 99, 41, 59, 10,125, 10, 10,118,111,105,100, 32,118,101, + 99, 95,109, 97,116,104, 95,110,111,114,109, 97,108,105,122,101, 40,118,101, 99, 51, 32,118, 44, 32,111,117,116, 32,118,101, 99, + 51, 32,111,117,116,118,101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111, +117,116,118, 97,108, 32, 61, 32,108,101,110,103,116,104, 40,118, 41, 59, 10, 9,111,117,116,118,101, 99, 32, 61, 32,110,111,114, +109, 97,108,105,122,101, 40,118, 41, 59, 10,125, 10, 10,118,111,105,100, 32,118,101, 99, 95,109, 97,116,104, 95,110,101,103, 97, +116,101, 40,118,101, 99, 51, 32,118, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118, 41, 10,123, 10, 9,111,117,116, +118, 32, 61, 32, 45,118, 59, 10,125, 10, 10,118,111,105,100, 32,110,111,114,109, 97,108, 40,118,101, 99, 51, 32,100,105,114, 44, + 32,118,101, 99, 51, 32,110,111,114, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,110,111,114, 44, 32,111,117,116, 32, +102,108,111, 97,116, 32,111,117,116,100,111,116, 41, 10,123, 10, 9,111,117,116,110,111,114, 32, 61, 32,100,105,114, 59, 10, 9, +111,117,116,100,111,116, 32, 61, 32, 45,100,111,116, 40,100,105,114, 44, 32,110,111,114, 41, 59, 10,125, 10, 10,118,111,105,100, + 32, 99,117,114,118,101,115, 95,118,101, 99, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 51, 32,118,101, 99, 44, + 32,115, 97,109,112,108,101,114, 49, 68, 32, 99,117,114,118,101,109, 97,112, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117, +116,118,101, 99, 41, 10,123, 10, 9,111,117,116,118,101, 99, 46,120, 32, 61, 32,116,101,120,116,117,114,101, 49, 68, 40, 99,117, +114,118,101,109, 97,112, 44, 32, 40,118,101, 99, 46,120, 32, 43, 32, 49, 46, 48, 41, 42, 48, 46, 53, 41, 46,120, 59, 10, 9,111, +117,116,118,101, 99, 46,121, 32, 61, 32,116,101,120,116,117,114,101, 49, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32, 40,118, +101, 99, 46,121, 32, 43, 32, 49, 46, 48, 41, 42, 48, 46, 53, 41, 46,121, 59, 10, 9,111,117,116,118,101, 99, 46,122, 32, 61, 32, +116,101,120,116,117,114,101, 49, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32, 40,118,101, 99, 46,122, 32, 43, 32, 49, 46, 48, + 41, 42, 48, 46, 53, 41, 46,122, 59, 10, 10, 9,105,102, 32, 40,102, 97, 99, 32, 33, 61, 32, 49, 46, 48, 41, 10, 9, 9,111,117, +116,118,101, 99, 32, 61, 32, 40,111,117,116,118,101, 99, 42,102, 97, 99, 41, 32, 43, 32, 40,118,101, 99, 42, 40, 49, 46, 48, 45, +102, 97, 99, 41, 41, 59, 10, 10,125, 10, 10,118,111,105,100, 32, 99,117,114,118,101,115, 95,114,103, 98, 40,102,108,111, 97,116, + 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 44, 32,115, 97,109,112,108,101,114, 49, 68, 32, 99,117,114,118,101,109, + 97,112, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,111,117,116, 99,111,108, 46,114, + 32, 61, 32,116,101,120,116,117,114,101, 49, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,116,101,120,116,117,114,101, 49, 68, + 40, 99,117,114,118,101,109, 97,112, 44, 32, 99,111,108, 46,114, 41, 46, 97, 41, 46,114, 59, 10, 9,111,117,116, 99,111,108, 46, +103, 32, 61, 32,116,101,120,116,117,114,101, 49, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,116,101,120,116,117,114,101, 49, + 68, 40, 99,117,114,118,101,109, 97,112, 44, 32, 99,111,108, 46,103, 41, 46, 97, 41, 46,103, 59, 10, 9,111,117,116, 99,111,108, + 46, 98, 32, 61, 32,116,101,120,116,117,114,101, 49, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,116,101,120,116,117,114,101, + 49, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32, 99,111,108, 46, 98, 41, 46, 97, 41, 46, 98, 59, 10, 10, 9,105,102, 32, 40, +102, 97, 99, 32, 33, 61, 32, 49, 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 32, 61, 32, 40,111,117,116, 99,111,108, 42,102, + 97, 99, 41, 32, 43, 32, 40, 99,111,108, 42, 40, 49, 46, 48, 45,102, 97, 99, 41, 41, 59, 10, 10, 9,111,117,116, 99,111,108, 46, + 97, 32, 61, 32, 99,111,108, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,115,101,116, 95,118, 97,108,117,101, 40,102,108,111, + 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116, +118, 97,108, 32, 61, 32,118, 97,108, 59, 10,125, 10, 10,118,111,105,100, 32,115,101,116, 95,114,103, 98, 40,118,101, 99, 51, 32, + 99,111,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,111,117,116, 99,111,108, 32, + 61, 32, 99,111,108, 59, 10,125, 10, 10,118,111,105,100, 32,115,101,116, 95,114,103, 98, 97, 40,118,101, 99, 52, 32, 99,111,108, + 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,111,117,116, 99,111,108, 32, 61, 32, 99, +111,108, 59, 10,125, 10, 10,118,111,105,100, 32,115,101,116, 95,118, 97,108,117,101, 95,122,101,114,111, 40,111,117,116, 32,102, +108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32, 48, 46, 48, 59, 10,125, 10, + 10,118,111,105,100, 32,115,101,116, 95,118, 97,108,117,101, 95,111,110,101, 40,111,117,116, 32,102,108,111, 97,116, 32,111,117, +116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32, 49, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,115, +101,116, 95,114,103, 98, 95,122,101,114,111, 40,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9, +111,117,116,118, 97,108, 32, 61, 32,118,101, 99, 51, 40, 48, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,115,101,116, 95, +114,103, 98, 97, 95,122,101,114,111, 40,111,117,116, 32,118,101, 99, 52, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117, +116,118, 97,108, 32, 61, 32,118,101, 99, 52, 40, 48, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95, 98,108, +101,110,100, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99, +111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99, +108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,111,117,116, 99,111,108, 32, 61, 32,109, +105,120, 40, 99,111,108, 49, 44, 32, 99,111,108, 50, 44, 32,102, 97, 99, 41, 59, 10, 9,111,117,116, 99,111,108, 46, 97, 32, 61, + 32, 99,111,108, 49, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95, 97,100,100, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, - 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, - 99, 59, 10, 10, 9,111,117,116, 99,111,108, 32, 61, 32,118,101, 99, 52, 40, 49, 46, 48, 41, 32, 45, 32, 40,118,101, 99, 52, 40, -102, 97, 99,109, 41, 32, 43, 32,102, 97, 99, 42, 40,118,101, 99, 52, 40, 49, 46, 48, 41, 32, 45, 32, 99,111,108, 50, 41, 41, 42, - 40,118,101, 99, 52, 40, 49, 46, 48, 41, 32, 45, 32, 99,111,108, 49, 41, 59, 10, 9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, - 99,111,108, 49, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,111,118,101,114,108, 97,121, 40,102,108,111, 97, -116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, - 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, - 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, - 32,102, 97, 99, 59, 10, 10, 9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 10, 10, 9,105,102, 40,111,117,116, 99, -111,108, 46,114, 32, 60, 32, 48, 46, 53, 41, 10, 9, 9,111,117,116, 99,111,108, 46,114, 32, 42, 61, 32,102, 97, 99,109, 32, 43, - 32, 50, 46, 48, 42,102, 97, 99, 42, 99,111,108, 50, 46,114, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116, 99,111,108, 46, -114, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99, 42, 40, 49, 46, 48, 32, 45, - 32, 99,111,108, 50, 46,114, 41, 41, 42, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46,114, 41, 59, 10, 10, 9,105,102, - 40,111,117,116, 99,111,108, 46,103, 32, 60, 32, 48, 46, 53, 41, 10, 9, 9,111,117,116, 99,111,108, 46,103, 32, 42, 61, 32,102, - 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99, 42, 99,111,108, 50, 46,103, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117, -116, 99,111,108, 46,103, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99, 42, 40, - 49, 46, 48, 32, 45, 32, 99,111,108, 50, 46,103, 41, 41, 42, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46,103, 41, 59, - 10, 10, 9,105,102, 40,111,117,116, 99,111,108, 46, 98, 32, 60, 32, 48, 46, 53, 41, 10, 9, 9,111,117,116, 99,111,108, 46, 98, - 32, 42, 61, 32,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99, 42, 99,111,108, 50, 46, 98, 59, 10, 9,101,108,115,101, - 10, 9, 9,111,117,116, 99,111,108, 46, 98, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42, -102, 97, 99, 42, 40, 49, 46, 48, 32, 45, 32, 99,111,108, 50, 46, 98, 41, 41, 42, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111, -108, 46, 98, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,115,117, 98, 40,102,108,111, 97,116, 32,102, 97, 99, 44, + 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,111,117,116, 99,111,108, 32, 61, 32,109,105,120, 40, 99,111,108, 49, 44, 32, 99,111, +108, 49, 32, 43, 32, 99,111,108, 50, 44, 32,102, 97, 99, 41, 59, 10, 9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, + 49, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,109,117,108,116, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32, 111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,111,117,116, 99,111,108, 32, 61, 32,109,105,120, 40, 99,111,108, 49, 44, 32, 99,111,108, 49, 32, - 45, 32, 99,111,108, 50, 44, 32,102, 97, 99, 41, 59, 10, 9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, - 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,100,105,118, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, + 42, 32, 99,111,108, 50, 44, 32,102, 97, 99, 41, 59, 10, 9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, + 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,115, 99,114,101,101,110, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32, +118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111, +117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, + 49, 46, 48, 41, 59, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10, + 9,111,117,116, 99,111,108, 32, 61, 32,118,101, 99, 52, 40, 49, 46, 48, 41, 32, 45, 32, 40,118,101, 99, 52, 40,102, 97, 99,109, + 41, 32, 43, 32,102, 97, 99, 42, 40,118,101, 99, 52, 40, 49, 46, 48, 41, 32, 45, 32, 99,111,108, 50, 41, 41, 42, 40,118,101, 99, + 52, 40, 49, 46, 48, 41, 32, 45, 32, 99,111,108, 49, 41, 59, 10, 9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, + 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,111,118,101,114,108, 97,121, 40,102,108,111, 97,116, 32,102, 97, + 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, + 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, + 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, + 59, 10, 10, 9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 10, 10, 9,105,102, 40,111,117,116, 99,111,108, 46,114, + 32, 60, 32, 48, 46, 53, 41, 10, 9, 9,111,117,116, 99,111,108, 46,114, 32, 42, 61, 32,102, 97, 99,109, 32, 43, 32, 50, 46, 48, + 42,102, 97, 99, 42, 99,111,108, 50, 46,114, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116, 99,111,108, 46,114, 32, 61, 32, + 49, 46, 48, 32, 45, 32, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99, 42, 40, 49, 46, 48, 32, 45, 32, 99,111,108, + 50, 46,114, 41, 41, 42, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46,114, 41, 59, 10, 10, 9,105,102, 40,111,117,116, + 99,111,108, 46,103, 32, 60, 32, 48, 46, 53, 41, 10, 9, 9,111,117,116, 99,111,108, 46,103, 32, 42, 61, 32,102, 97, 99,109, 32, + 43, 32, 50, 46, 48, 42,102, 97, 99, 42, 99,111,108, 50, 46,103, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116, 99,111,108, + 46,103, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99, 42, 40, 49, 46, 48, 32, + 45, 32, 99,111,108, 50, 46,103, 41, 41, 42, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46,103, 41, 59, 10, 10, 9,105, +102, 40,111,117,116, 99,111,108, 46, 98, 32, 60, 32, 48, 46, 53, 41, 10, 9, 9,111,117,116, 99,111,108, 46, 98, 32, 42, 61, 32, +102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99, 42, 99,111,108, 50, 46, 98, 59, 10, 9,101,108,115,101, 10, 9, 9,111, +117,116, 99,111,108, 46, 98, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99, 42, + 40, 49, 46, 48, 32, 45, 32, 99,111,108, 50, 46, 98, 41, 41, 42, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46, 98, 41, + 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,115,117, 98, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99, 111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, - 41, 59, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10, 9,111,117, -116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 10, 10, 9,105,102, 40, 99,111,108, 50, 46,114, 32, 33, 61, 32, 48, 46, 48, 41, - 32,111,117,116, 99,111,108, 46,114, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 46,114, 32, 43, 32,102, 97, 99, 42, -111,117,116, 99,111,108, 46,114, 47, 99,111,108, 50, 46,114, 59, 10, 9,105,102, 40, 99,111,108, 50, 46,103, 32, 33, 61, 32, 48, - 46, 48, 41, 32,111,117,116, 99,111,108, 46,103, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 46,103, 32, 43, 32,102, - 97, 99, 42,111,117,116, 99,111,108, 46,103, 47, 99,111,108, 50, 46,103, 59, 10, 9,105,102, 40, 99,111,108, 50, 46, 98, 32, 33, - 61, 32, 48, 46, 48, 41, 32,111,117,116, 99,111,108, 46, 98, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 46, 98, 32, - 43, 32,102, 97, 99, 42,111,117,116, 99,111,108, 46, 98, 47, 99,111,108, 50, 46, 98, 59, 10,125, 10, 10,118,111,105,100, 32,109, -105,120, 95,100,105,102,102, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, + 41, 59, 10, 9,111,117,116, 99,111,108, 32, 61, 32,109,105,120, 40, 99,111,108, 49, 44, 32, 99,111,108, 49, 32, 45, 32, 99,111, +108, 50, 44, 32,102, 97, 99, 41, 59, 10, 9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 10,125, 10, + 10,118,111,105,100, 32,109,105,120, 95,100,105,118, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111, +108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10, +123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9, +102,108,111, 97,116, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10, 9,111,117,116, 99,111,108, + 32, 61, 32, 99,111,108, 49, 59, 10, 10, 9,105,102, 40, 99,111,108, 50, 46,114, 32, 33, 61, 32, 48, 46, 48, 41, 32,111,117,116, + 99,111,108, 46,114, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 46,114, 32, 43, 32,102, 97, 99, 42,111,117,116, 99, +111,108, 46,114, 47, 99,111,108, 50, 46,114, 59, 10, 9,105,102, 40, 99,111,108, 50, 46,103, 32, 33, 61, 32, 48, 46, 48, 41, 32, +111,117,116, 99,111,108, 46,103, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 46,103, 32, 43, 32,102, 97, 99, 42,111, +117,116, 99,111,108, 46,103, 47, 99,111,108, 50, 46,103, 59, 10, 9,105,102, 40, 99,111,108, 50, 46, 98, 32, 33, 61, 32, 48, 46, + 48, 41, 32,111,117,116, 99,111,108, 46, 98, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 46, 98, 32, 43, 32,102, 97, + 99, 42,111,117,116, 99,111,108, 46, 98, 47, 99,111,108, 50, 46, 98, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,100, +105,102,102, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99, +111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99, +108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,111,117,116, 99,111,108, 32, 61, 32,109, +105,120, 40, 99,111,108, 49, 44, 32, 97, 98,115, 40, 99,111,108, 49, 32, 45, 32, 99,111,108, 50, 41, 44, 32,102, 97, 99, 41, 59, + 10, 9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, + 95,100, 97,114,107, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, + 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, + 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,111,117,116, 99,111,108, 46,114, +103, 98, 32, 61, 32,109,105,110, 40, 99,111,108, 49, 46,114,103, 98, 44, 32, 99,111,108, 50, 46,114,103, 98, 42,102, 97, 99, 41, + 59, 10, 9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,109,105, +120, 95,108,105,103,104,116, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,111,117,116, 99,111,108, - 32, 61, 32,109,105,120, 40, 99,111,108, 49, 44, 32, 97, 98,115, 40, 99,111,108, 49, 32, 45, 32, 99,111,108, 50, 41, 44, 32,102, - 97, 99, 41, 59, 10, 9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 10,125, 10, 10,118,111,105,100, - 32,109,105,120, 95,100, 97,114,107, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32, + 46,114,103, 98, 32, 61, 32,109, 97,120, 40, 99,111,108, 49, 46,114,103, 98, 44, 32, 99,111,108, 50, 46,114,103, 98, 42,102, 97, + 99, 41, 59, 10, 9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32, +109,105,120, 95,100,111,100,103,101, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32, 118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,111,117,116, 99, -111,108, 46,114,103, 98, 32, 61, 32,109,105,110, 40, 99,111,108, 49, 46,114,103, 98, 44, 32, 99,111,108, 50, 46,114,103, 98, 42, -102, 97, 99, 41, 59, 10, 9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 10,125, 10, 10,118,111,105, -100, 32,109,105,120, 95,108,105,103,104,116, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, - 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, - 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,111,117, -116, 99,111,108, 46,114,103, 98, 32, 61, 32,109, 97,120, 40, 99,111,108, 49, 46,114,103, 98, 44, 32, 99,111,108, 50, 46,114,103, - 98, 42,102, 97, 99, 41, 59, 10, 9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 10,125, 10, 10,118, -111,105,100, 32,109,105,120, 95,100,111,100,103,101, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111, -108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10, -123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9, -111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 10, 10, 9,105,102, 40,111,117,116, 99,111,108, 46,114, 32, 33, 61, 32, - 48, 46, 48, 41, 32,123, 10, 9, 9,102,108,111, 97,116, 32,116,109,112, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 42, 99, -111,108, 50, 46,114, 59, 10, 9, 9,105,102, 40,116,109,112, 32, 60, 61, 32, 48, 46, 48, 41, 10, 9, 9, 9,111,117,116, 99,111, -108, 46,114, 32, 61, 32, 49, 46, 48, 59, 10, 9, 9,101,108,115,101, 32,105,102, 40, 40,116,109,112, 32, 61, 32,111,117,116, 99, -111,108, 46,114, 47,116,109,112, 41, 32, 62, 32, 49, 46, 48, 41, 10, 9, 9, 9,111,117,116, 99,111,108, 46,114, 32, 61, 32, 49, - 46, 48, 59, 10, 9, 9,101,108,115,101, 10, 9, 9, 9,111,117,116, 99,111,108, 46,114, 32, 61, 32,116,109,112, 59, 10, 9,125, - 10, 9,105,102, 40,111,117,116, 99,111,108, 46,103, 32, 33, 61, 32, 48, 46, 48, 41, 32,123, 10, 9, 9,102,108,111, 97,116, 32, -116,109,112, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 42, 99,111,108, 50, 46,103, 59, 10, 9, 9,105,102, 40,116,109,112, - 32, 60, 61, 32, 48, 46, 48, 41, 10, 9, 9, 9,111,117,116, 99,111,108, 46,103, 32, 61, 32, 49, 46, 48, 59, 10, 9, 9,101,108, -115,101, 32,105,102, 40, 40,116,109,112, 32, 61, 32,111,117,116, 99,111,108, 46,103, 47,116,109,112, 41, 32, 62, 32, 49, 46, 48, - 41, 10, 9, 9, 9,111,117,116, 99,111,108, 46,103, 32, 61, 32, 49, 46, 48, 59, 10, 9, 9,101,108,115,101, 10, 9, 9, 9,111, -117,116, 99,111,108, 46,103, 32, 61, 32,116,109,112, 59, 10, 9,125, 10, 9,105,102, 40,111,117,116, 99,111,108, 46, 98, 32, 33, - 61, 32, 48, 46, 48, 41, 32,123, 10, 9, 9,102,108,111, 97,116, 32,116,109,112, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, - 42, 99,111,108, 50, 46, 98, 59, 10, 9, 9,105,102, 40,116,109,112, 32, 60, 61, 32, 48, 46, 48, 41, 10, 9, 9, 9,111,117,116, - 99,111,108, 46, 98, 32, 61, 32, 49, 46, 48, 59, 10, 9, 9,101,108,115,101, 32,105,102, 40, 40,116,109,112, 32, 61, 32,111,117, -116, 99,111,108, 46, 98, 47,116,109,112, 41, 32, 62, 32, 49, 46, 48, 41, 10, 9, 9, 9,111,117,116, 99,111,108, 46, 98, 32, 61, - 32, 49, 46, 48, 59, 10, 9, 9,101,108,115,101, 10, 9, 9, 9,111,117,116, 99,111,108, 46, 98, 32, 61, 32,116,109,112, 59, 10, - 9,125, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95, 98,117,114,110, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118, -101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117, -116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, - 46, 48, 41, 59, 10, 9,102,108,111, 97,116, 32,116,109,112, 44, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, - 99, 59, 10, 10, 9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 10, 10, 9,116,109,112, 32, 61, 32,102, 97, 99,109, - 32, 43, 32,102, 97, 99, 42, 99,111,108, 50, 46,114, 59, 10, 9,105,102, 40,116,109,112, 32, 60, 61, 32, 48, 46, 48, 41, 10, 9, - 9,111,117,116, 99,111,108, 46,114, 32, 61, 32, 48, 46, 48, 59, 10, 9,101,108,115,101, 32,105,102, 40, 40,116,109,112, 32, 61, - 32, 40, 49, 46, 48, 32, 45, 32, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46,114, 41, 47,116,109,112, 41, 41, 32, 60, - 32, 48, 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 46,114, 32, 61, 32, 48, 46, 48, 59, 10, 9,101,108,115,101, 32,105,102, - 40,116,109,112, 32, 62, 32, 49, 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 46,114, 32, 61, 32, 49, 46, 48, 59, 10, 9,101, -108,115,101, 10, 9, 9,111,117,116, 99,111,108, 46,114, 32, 61, 32,116,109,112, 59, 10, 10, 9,116,109,112, 32, 61, 32,102, 97, - 99,109, 32, 43, 32,102, 97, 99, 42, 99,111,108, 50, 46,103, 59, 10, 9,105,102, 40,116,109,112, 32, 60, 61, 32, 48, 46, 48, 41, - 10, 9, 9,111,117,116, 99,111,108, 46,103, 32, 61, 32, 48, 46, 48, 59, 10, 9,101,108,115,101, 32,105,102, 40, 40,116,109,112, - 32, 61, 32, 40, 49, 46, 48, 32, 45, 32, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46,103, 41, 47,116,109,112, 41, 41, - 32, 60, 32, 48, 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 46,103, 32, 61, 32, 48, 46, 48, 59, 10, 9,101,108,115,101, 32, -105,102, 40,116,109,112, 32, 62, 32, 49, 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 46,103, 32, 61, 32, 49, 46, 48, 59, 10, - 9,101,108,115,101, 10, 9, 9,111,117,116, 99,111,108, 46,103, 32, 61, 32,116,109,112, 59, 10, 10, 9,116,109,112, 32, 61, 32, -102, 97, 99,109, 32, 43, 32,102, 97, 99, 42, 99,111,108, 50, 46, 98, 59, 10, 9,105,102, 40,116,109,112, 32, 60, 61, 32, 48, 46, - 48, 41, 10, 9, 9,111,117,116, 99,111,108, 46, 98, 32, 61, 32, 48, 46, 48, 59, 10, 9,101,108,115,101, 32,105,102, 40, 40,116, -109,112, 32, 61, 32, 40, 49, 46, 48, 32, 45, 32, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46, 98, 41, 47,116,109,112, - 41, 41, 32, 60, 32, 48, 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 46, 98, 32, 61, 32, 48, 46, 48, 59, 10, 9,101,108,115, -101, 32,105,102, 40,116,109,112, 32, 62, 32, 49, 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 46, 98, 32, 61, 32, 49, 46, 48, - 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116, 99,111,108, 46, 98, 32, 61, 32,116,109,112, 59, 10,125, 10, 10,118,111,105, -100, 32,109,105,120, 95,104,117,101, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32, -118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, - 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,102,108,111, 97, -116, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10, 9,111,117,116, 99,111,108, 32, 61, 32, 99, -111,108, 49, 59, 10, 10, 9,118,101, 99, 52, 32,104,115,118, 44, 32,104,115,118, 50, 44, 32,116,109,112, 59, 10, 9,114,103, 98, - 95,116,111, 95,104,115,118, 40, 99,111,108, 50, 44, 32,104,115,118, 50, 41, 59, 10, 10, 9,105,102, 40,104,115,118, 50, 46,121, - 32, 33, 61, 32, 48, 46, 48, 41, 32,123, 10, 9, 9,114,103, 98, 95,116,111, 95,104,115,118, 40,111,117,116, 99,111,108, 44, 32, -104,115,118, 41, 59, 10, 9, 9,104,115,118, 46,120, 32, 61, 32,104,115,118, 50, 46,120, 59, 10, 9, 9,104,115,118, 95,116,111, - 95,114,103, 98, 40,104,115,118, 44, 32,116,109,112, 41, 59, 32, 10, 10, 9, 9,111,117,116, 99,111,108, 32, 61, 32,109,105,120, - 40,111,117,116, 99,111,108, 44, 32,116,109,112, 44, 32,102, 97, 99, 41, 59, 10, 9, 9,111,117,116, 99,111,108, 46, 97, 32, 61, - 32, 99,111,108, 49, 46, 97, 59, 10, 9,125, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,115, 97,116, 40,102,108,111, 97, +111,108, 32, 61, 32, 99,111,108, 49, 59, 10, 10, 9,105,102, 40,111,117,116, 99,111,108, 46,114, 32, 33, 61, 32, 48, 46, 48, 41, + 32,123, 10, 9, 9,102,108,111, 97,116, 32,116,109,112, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 42, 99,111,108, 50, 46, +114, 59, 10, 9, 9,105,102, 40,116,109,112, 32, 60, 61, 32, 48, 46, 48, 41, 10, 9, 9, 9,111,117,116, 99,111,108, 46,114, 32, + 61, 32, 49, 46, 48, 59, 10, 9, 9,101,108,115,101, 32,105,102, 40, 40,116,109,112, 32, 61, 32,111,117,116, 99,111,108, 46,114, + 47,116,109,112, 41, 32, 62, 32, 49, 46, 48, 41, 10, 9, 9, 9,111,117,116, 99,111,108, 46,114, 32, 61, 32, 49, 46, 48, 59, 10, + 9, 9,101,108,115,101, 10, 9, 9, 9,111,117,116, 99,111,108, 46,114, 32, 61, 32,116,109,112, 59, 10, 9,125, 10, 9,105,102, + 40,111,117,116, 99,111,108, 46,103, 32, 33, 61, 32, 48, 46, 48, 41, 32,123, 10, 9, 9,102,108,111, 97,116, 32,116,109,112, 32, + 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 42, 99,111,108, 50, 46,103, 59, 10, 9, 9,105,102, 40,116,109,112, 32, 60, 61, 32, + 48, 46, 48, 41, 10, 9, 9, 9,111,117,116, 99,111,108, 46,103, 32, 61, 32, 49, 46, 48, 59, 10, 9, 9,101,108,115,101, 32,105, +102, 40, 40,116,109,112, 32, 61, 32,111,117,116, 99,111,108, 46,103, 47,116,109,112, 41, 32, 62, 32, 49, 46, 48, 41, 10, 9, 9, + 9,111,117,116, 99,111,108, 46,103, 32, 61, 32, 49, 46, 48, 59, 10, 9, 9,101,108,115,101, 10, 9, 9, 9,111,117,116, 99,111, +108, 46,103, 32, 61, 32,116,109,112, 59, 10, 9,125, 10, 9,105,102, 40,111,117,116, 99,111,108, 46, 98, 32, 33, 61, 32, 48, 46, + 48, 41, 32,123, 10, 9, 9,102,108,111, 97,116, 32,116,109,112, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 42, 99,111,108, + 50, 46, 98, 59, 10, 9, 9,105,102, 40,116,109,112, 32, 60, 61, 32, 48, 46, 48, 41, 10, 9, 9, 9,111,117,116, 99,111,108, 46, + 98, 32, 61, 32, 49, 46, 48, 59, 10, 9, 9,101,108,115,101, 32,105,102, 40, 40,116,109,112, 32, 61, 32,111,117,116, 99,111,108, + 46, 98, 47,116,109,112, 41, 32, 62, 32, 49, 46, 48, 41, 10, 9, 9, 9,111,117,116, 99,111,108, 46, 98, 32, 61, 32, 49, 46, 48, + 59, 10, 9, 9,101,108,115,101, 10, 9, 9, 9,111,117,116, 99,111,108, 46, 98, 32, 61, 32,116,109,112, 59, 10, 9,125, 10,125, + 10, 10,118,111,105,100, 32,109,105,120, 95, 98,117,114,110, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, + 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, + 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, + 10, 9,102,108,111, 97,116, 32,116,109,112, 44, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10, + 9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 10, 10, 9,116,109,112, 32, 61, 32,102, 97, 99,109, 32, 43, 32,102, + 97, 99, 42, 99,111,108, 50, 46,114, 59, 10, 9,105,102, 40,116,109,112, 32, 60, 61, 32, 48, 46, 48, 41, 10, 9, 9,111,117,116, + 99,111,108, 46,114, 32, 61, 32, 48, 46, 48, 59, 10, 9,101,108,115,101, 32,105,102, 40, 40,116,109,112, 32, 61, 32, 40, 49, 46, + 48, 32, 45, 32, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46,114, 41, 47,116,109,112, 41, 41, 32, 60, 32, 48, 46, 48, + 41, 10, 9, 9,111,117,116, 99,111,108, 46,114, 32, 61, 32, 48, 46, 48, 59, 10, 9,101,108,115,101, 32,105,102, 40,116,109,112, + 32, 62, 32, 49, 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 46,114, 32, 61, 32, 49, 46, 48, 59, 10, 9,101,108,115,101, 10, + 9, 9,111,117,116, 99,111,108, 46,114, 32, 61, 32,116,109,112, 59, 10, 10, 9,116,109,112, 32, 61, 32,102, 97, 99,109, 32, 43, + 32,102, 97, 99, 42, 99,111,108, 50, 46,103, 59, 10, 9,105,102, 40,116,109,112, 32, 60, 61, 32, 48, 46, 48, 41, 10, 9, 9,111, +117,116, 99,111,108, 46,103, 32, 61, 32, 48, 46, 48, 59, 10, 9,101,108,115,101, 32,105,102, 40, 40,116,109,112, 32, 61, 32, 40, + 49, 46, 48, 32, 45, 32, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46,103, 41, 47,116,109,112, 41, 41, 32, 60, 32, 48, + 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 46,103, 32, 61, 32, 48, 46, 48, 59, 10, 9,101,108,115,101, 32,105,102, 40,116, +109,112, 32, 62, 32, 49, 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 46,103, 32, 61, 32, 49, 46, 48, 59, 10, 9,101,108,115, +101, 10, 9, 9,111,117,116, 99,111,108, 46,103, 32, 61, 32,116,109,112, 59, 10, 10, 9,116,109,112, 32, 61, 32,102, 97, 99,109, + 32, 43, 32,102, 97, 99, 42, 99,111,108, 50, 46, 98, 59, 10, 9,105,102, 40,116,109,112, 32, 60, 61, 32, 48, 46, 48, 41, 10, 9, + 9,111,117,116, 99,111,108, 46, 98, 32, 61, 32, 48, 46, 48, 59, 10, 9,101,108,115,101, 32,105,102, 40, 40,116,109,112, 32, 61, + 32, 40, 49, 46, 48, 32, 45, 32, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46, 98, 41, 47,116,109,112, 41, 41, 32, 60, + 32, 48, 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 46, 98, 32, 61, 32, 48, 46, 48, 59, 10, 9,101,108,115,101, 32,105,102, + 40,116,109,112, 32, 62, 32, 49, 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 46, 98, 32, 61, 32, 49, 46, 48, 59, 10, 9,101, +108,115,101, 10, 9, 9,111,117,116, 99,111,108, 46, 98, 32, 61, 32,116,109,112, 59, 10,125, 10, 10,118,111,105,100, 32,109,105, +120, 95,104,117,101, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, + 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, + 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,102,108,111, 97,116, 32,102, 97, + 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10, 9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, + 10, 10, 9,118,101, 99, 52, 32,104,115,118, 44, 32,104,115,118, 50, 44, 32,116,109,112, 59, 10, 9,114,103, 98, 95,116,111, 95, +104,115,118, 40, 99,111,108, 50, 44, 32,104,115,118, 50, 41, 59, 10, 10, 9,105,102, 40,104,115,118, 50, 46,121, 32, 33, 61, 32, + 48, 46, 48, 41, 32,123, 10, 9, 9,114,103, 98, 95,116,111, 95,104,115,118, 40,111,117,116, 99,111,108, 44, 32,104,115,118, 41, + 59, 10, 9, 9,104,115,118, 46,120, 32, 61, 32,104,115,118, 50, 46,120, 59, 10, 9, 9,104,115,118, 95,116,111, 95,114,103, 98, + 40,104,115,118, 44, 32,116,109,112, 41, 59, 32, 10, 10, 9, 9,111,117,116, 99,111,108, 32, 61, 32,109,105,120, 40,111,117,116, + 99,111,108, 44, 32,116,109,112, 44, 32,102, 97, 99, 41, 59, 10, 9, 9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, + 49, 46, 97, 59, 10, 9,125, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,115, 97,116, 40,102,108,111, 97,116, 32,102, 97, + 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, + 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, + 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, + 59, 10, 10, 9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 10, 10, 9,118,101, 99, 52, 32,104,115,118, 44, 32,104, +115,118, 50, 59, 10, 9,114,103, 98, 95,116,111, 95,104,115,118, 40,111,117,116, 99,111,108, 44, 32,104,115,118, 41, 59, 10, 10, + 9,105,102, 40,104,115,118, 46,121, 32, 33, 61, 32, 48, 46, 48, 41, 32,123, 10, 9, 9,114,103, 98, 95,116,111, 95,104,115,118, + 40, 99,111,108, 50, 44, 32,104,115,118, 50, 41, 59, 10, 10, 9, 9,104,115,118, 46,121, 32, 61, 32,102, 97, 99,109, 42,104,115, +118, 46,121, 32, 43, 32,102, 97, 99, 42,104,115,118, 50, 46,121, 59, 10, 9, 9,104,115,118, 95,116,111, 95,114,103, 98, 40,104, +115,118, 44, 32,111,117,116, 99,111,108, 41, 59, 10, 9,125, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,118, 97,108, 40, +102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, + 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, + 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 32, 61, 32, 49, + 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10, 9,118,101, 99, 52, 32,104,115,118, 44, 32,104,115,118, 50, 59, 10, 9,114,103, 98, + 95,116,111, 95,104,115,118, 40, 99,111,108, 49, 44, 32,104,115,118, 41, 59, 10, 9,114,103, 98, 95,116,111, 95,104,115,118, 40, + 99,111,108, 50, 44, 32,104,115,118, 50, 41, 59, 10, 10, 9,104,115,118, 46,122, 32, 61, 32,102, 97, 99,109, 42,104,115,118, 46, +122, 32, 43, 32,102, 97, 99, 42,104,115,118, 50, 46,122, 59, 10, 9,104,115,118, 95,116,111, 95,114,103, 98, 40,104,115,118, 44, + 32,111,117,116, 99,111,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95, 99,111,108,111,114, 40,102,108,111, 97, 116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10, 9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 10, 10, 9,118,101, 99, 52, 32,104,115, -118, 44, 32,104,115,118, 50, 59, 10, 9,114,103, 98, 95,116,111, 95,104,115,118, 40,111,117,116, 99,111,108, 44, 32,104,115,118, - 41, 59, 10, 10, 9,105,102, 40,104,115,118, 46,121, 32, 33, 61, 32, 48, 46, 48, 41, 32,123, 10, 9, 9,114,103, 98, 95,116,111, - 95,104,115,118, 40, 99,111,108, 50, 44, 32,104,115,118, 50, 41, 59, 10, 10, 9, 9,104,115,118, 46,121, 32, 61, 32,102, 97, 99, -109, 42,104,115,118, 46,121, 32, 43, 32,102, 97, 99, 42,104,115,118, 50, 46,121, 59, 10, 9, 9,104,115,118, 95,116,111, 95,114, -103, 98, 40,104,115,118, 44, 32,111,117,116, 99,111,108, 41, 59, 10, 9,125, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95, -118, 97,108, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99, -111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99, -108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, - 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10, 9,118,101, 99, 52, 32,104,115,118, 44, 32,104,115,118, 50, 59, 10, - 9,114,103, 98, 95,116,111, 95,104,115,118, 40, 99,111,108, 49, 44, 32,104,115,118, 41, 59, 10, 9,114,103, 98, 95,116,111, 95, -104,115,118, 40, 99,111,108, 50, 44, 32,104,115,118, 50, 41, 59, 10, 10, 9,104,115,118, 46,122, 32, 61, 32,102, 97, 99,109, 42, -104,115,118, 46,122, 32, 43, 32,102, 97, 99, 42,104,115,118, 50, 46,122, 59, 10, 9,104,115,118, 95,116,111, 95,114,103, 98, 40, -104,115,118, 44, 32,111,117,116, 99,111,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95, 99,111,108,111,114, 40, +118, 44, 32,104,115,118, 50, 44, 32,116,109,112, 59, 10, 9,114,103, 98, 95,116,111, 95,104,115,118, 40, 99,111,108, 50, 44, 32, +104,115,118, 50, 41, 59, 10, 10, 9,105,102, 40,104,115,118, 50, 46,121, 32, 33, 61, 32, 48, 46, 48, 41, 32,123, 10, 9, 9,114, +103, 98, 95,116,111, 95,104,115,118, 40,111,117,116, 99,111,108, 44, 32,104,115,118, 41, 59, 10, 9, 9,104,115,118, 46,120, 32, + 61, 32,104,115,118, 50, 46,120, 59, 10, 9, 9,104,115,118, 46,121, 32, 61, 32,104,115,118, 50, 46,121, 59, 10, 9, 9,104,115, +118, 95,116,111, 95,114,103, 98, 40,104,115,118, 44, 32,116,109,112, 41, 59, 32, 10, 10, 9, 9,111,117,116, 99,111,108, 32, 61, + 32,109,105,120, 40,111,117,116, 99,111,108, 44, 32,116,109,112, 44, 32,102, 97, 99, 41, 59, 10, 9, 9,111,117,116, 99,111,108, + 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 10, 9,125, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,115,111,102,116, + 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, + 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109, +112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 32, 61, 32, + 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10, 9,118,101, 99, 52, 32,111,110,101, 61, 32,118,101, 99, 52, 40, 49, 46, 48, 41, + 59, 10, 9,118,101, 99, 52, 32,115, 99,114, 61, 32,111,110,101, 32, 45, 32, 40,111,110,101, 32, 45, 32, 99,111,108, 50, 41, 42, + 40,111,110,101, 32, 45, 32, 99,111,108, 49, 41, 59, 10, 9,111,117,116, 99,111,108, 32, 61, 32,102, 97, 99,109, 42, 99,111,108, + 49, 32, 43, 32,102, 97, 99, 42, 40, 40,111,110,101, 32, 45, 32, 99,111,108, 49, 41, 42, 99,111,108, 50, 42, 99,111,108, 49, 32, + 43, 32, 99,111,108, 49, 42,115, 99,114, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,108,105,110,101, 97,114, 40, 102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, - 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 32, 61, 32, 49, - 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10, 9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 10, 10, 9,118,101, 99, - 52, 32,104,115,118, 44, 32,104,115,118, 50, 44, 32,116,109,112, 59, 10, 9,114,103, 98, 95,116,111, 95,104,115,118, 40, 99,111, -108, 50, 44, 32,104,115,118, 50, 41, 59, 10, 10, 9,105,102, 40,104,115,118, 50, 46,121, 32, 33, 61, 32, 48, 46, 48, 41, 32,123, - 10, 9, 9,114,103, 98, 95,116,111, 95,104,115,118, 40,111,117,116, 99,111,108, 44, 32,104,115,118, 41, 59, 10, 9, 9,104,115, -118, 46,120, 32, 61, 32,104,115,118, 50, 46,120, 59, 10, 9, 9,104,115,118, 46,121, 32, 61, 32,104,115,118, 50, 46,121, 59, 10, - 9, 9,104,115,118, 95,116,111, 95,114,103, 98, 40,104,115,118, 44, 32,116,109,112, 41, 59, 32, 10, 10, 9, 9,111,117,116, 99, -111,108, 32, 61, 32,109,105,120, 40,111,117,116, 99,111,108, 44, 32,116,109,112, 44, 32,102, 97, 99, 41, 59, 10, 9, 9,111,117, -116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 10, 9,125, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95, -115,111,102,116, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, - 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, - 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,102,108,111, 97,116, 32,102, 97, 99, -109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10, 9,118,101, 99, 52, 32,111,110,101, 61, 32,118,101, 99, 52, 40, - 49, 46, 48, 41, 59, 10, 9,118,101, 99, 52, 32,115, 99,114, 61, 32,111,110,101, 32, 45, 32, 40,111,110,101, 32, 45, 32, 99,111, -108, 50, 41, 42, 40,111,110,101, 32, 45, 32, 99,111,108, 49, 41, 59, 10, 9,111,117,116, 99,111,108, 32, 61, 32,102, 97, 99,109, - 42, 99,111,108, 49, 32, 43, 32,102, 97, 99, 42, 40, 40,111,110,101, 32, 45, 32, 99,111,108, 49, 41, 42, 99,111,108, 50, 42, 99, -111,108, 49, 32, 43, 32, 99,111,108, 49, 42,115, 99,114, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,108,105,110, -101, 97,114, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99, -111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99, -108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 10, 9,111,117,116, 99,111,108, 32, 61, 32, - 99,111,108, 49, 59, 10, 10, 9,105,102, 40, 99,111,108, 50, 46,114, 32, 62, 32, 48, 46, 53, 41, 10, 9, 9,111,117,116, 99,111, -108, 46,114, 61, 32, 99,111,108, 49, 46,114, 32, 43, 32,102, 97, 99, 42, 40, 50, 46, 48, 42, 40, 99,111,108, 50, 46,114, 32, 45, - 32, 48, 46, 53, 41, 41, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116, 99,111,108, 46,114, 61, 32, 99,111,108, 49, 46,114, - 32, 43, 32,102, 97, 99, 42, 40, 50, 46, 48, 42, 40, 99,111,108, 50, 46,114, 41, 32, 45, 32, 49, 46, 48, 41, 59, 10, 10, 9,105, -102, 40, 99,111,108, 50, 46,103, 32, 62, 32, 48, 46, 53, 41, 10, 9, 9,111,117,116, 99,111,108, 46,103, 61, 32, 99,111,108, 49, - 46,103, 32, 43, 32,102, 97, 99, 42, 40, 50, 46, 48, 42, 40, 99,111,108, 50, 46,103, 32, 45, 32, 48, 46, 53, 41, 41, 59, 10, 9, -101,108,115,101, 10, 9, 9,111,117,116, 99,111,108, 46,103, 61, 32, 99,111,108, 49, 46,103, 32, 43, 32,102, 97, 99, 42, 40, 50, - 46, 48, 42, 40, 99,111,108, 50, 46,103, 41, 32, 45, 32, 49, 46, 48, 41, 59, 10, 10, 9,105,102, 40, 99,111,108, 50, 46, 98, 32, - 62, 32, 48, 46, 53, 41, 10, 9, 9,111,117,116, 99,111,108, 46, 98, 61, 32, 99,111,108, 49, 46, 98, 32, 43, 32,102, 97, 99, 42, - 40, 50, 46, 48, 42, 40, 99,111,108, 50, 46, 98, 32, 45, 32, 48, 46, 53, 41, 41, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117, -116, 99,111,108, 46, 98, 61, 32, 99,111,108, 49, 46, 98, 32, 43, 32,102, 97, 99, 42, 40, 50, 46, 48, 42, 40, 99,111,108, 50, 46, - 98, 41, 32, 45, 32, 49, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,118, 97,108,116,111,114,103, 98, 40,102,108,111, 97, -116, 32,102, 97, 99, 44, 32,115, 97,109,112,108,101,114, 49, 68, 32, 99,111,108,111,114,109, 97,112, 44, 32,111,117,116, 32,118, -101, 99, 52, 32,111,117,116, 99,111,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116, 97,108,112,104, 97, 41, 10, -123, 10, 9,111,117,116, 99,111,108, 32, 61, 32,116,101,120,116,117,114,101, 49, 68, 40, 99,111,108,111,114,109, 97,112, 44, 32, -102, 97, 99, 41, 59, 10, 9,111,117,116, 97,108,112,104, 97, 32, 61, 32,111,117,116, 99,111,108, 46, 97, 59, 10,125, 10, 10,118, -111,105,100, 32,114,103, 98,116,111, 98,119, 40,118,101, 99, 52, 32, 99,111,108,111,114, 44, 32,111,117,116, 32,102,108,111, 97, -116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32, 99,111,108,111,114, 46,114, 42, 48, 46, - 51, 53, 32, 43, 32, 99,111,108,111,114, 46,103, 42, 48, 46, 52, 53, 32, 43, 32, 99,111,108,111,114, 46, 98, 42, 48, 46, 50, 59, - 10,125, 10, 10,118,111,105,100, 32,105,110,118,101,114,116, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, - 99,111,108, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,111,117,116, 99,111,108, 46, -120,121,122, 32, 61, 32,109,105,120, 40, 99,111,108, 46,120,121,122, 44, 32,118,101, 99, 51, 40, 49, 46, 48, 44, 32, 49, 46, 48, - 44, 32, 49, 46, 48, 41, 32, 45, 32, 99,111,108, 46,120,121,122, 44, 32,102, 97, 99, 41, 59, 10, 9,111,117,116, 99,111,108, 46, -119, 32, 61, 32, 99,111,108, 46,119, 59, 10,125, 10, 10,118,111,105,100, 32,104,117,101, 95,115, 97,116, 40,102,108,111, 97,116, - 32,104,117,101, 44, 32,102,108,111, 97,116, 32,115, 97,116, 44, 32,102,108,111, 97,116, 32,118, 97,108,117,101, 44, 32,102,108, -111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99, -111,108, 41, 10,123, 10, 9,118,101, 99, 52, 32,104,115,118, 59, 10, 10, 9,114,103, 98, 95,116,111, 95,104,115,118, 40, 99,111, -108, 44, 32,104,115,118, 41, 59, 10, 10, 9,104,115,118, 91, 48, 93, 32, 43, 61, 32, 40,104,117,101, 32, 45, 32, 48, 46, 53, 41, - 59, 10, 9,105,102, 40,104,115,118, 91, 48, 93, 62, 49, 46, 48, 41, 32,104,115,118, 91, 48, 93, 45, 61, 49, 46, 48, 59, 32,101, -108,115,101, 32,105,102, 40,104,115,118, 91, 48, 93, 60, 48, 46, 48, 41, 32,104,115,118, 91, 48, 93, 43, 61, 32, 49, 46, 48, 59, - 10, 9,104,115,118, 91, 49, 93, 32, 42, 61, 32,115, 97,116, 59, 10, 9,105,102, 40,104,115,118, 91, 49, 93, 62, 49, 46, 48, 41, - 32,104,115,118, 91, 49, 93, 61, 32, 49, 46, 48, 59, 32,101,108,115,101, 32,105,102, 40,104,115,118, 91, 49, 93, 60, 48, 46, 48, - 41, 32,104,115,118, 91, 49, 93, 61, 32, 48, 46, 48, 59, 10, 9,104,115,118, 91, 50, 93, 32, 42, 61, 32,118, 97,108,117,101, 59, - 10, 9,105,102, 40,104,115,118, 91, 50, 93, 62, 49, 46, 48, 41, 32,104,115,118, 91, 50, 93, 61, 32, 49, 46, 48, 59, 32,101,108, -115,101, 32,105,102, 40,104,115,118, 91, 50, 93, 60, 48, 46, 48, 41, 32,104,115,118, 91, 50, 93, 61, 32, 48, 46, 48, 59, 10, 10, - 9,104,115,118, 95,116,111, 95,114,103, 98, 40,104,115,118, 44, 32,111,117,116, 99,111,108, 41, 59, 10, 10, 9,111,117,116, 99, -111,108, 32, 61, 32,109,105,120, 40, 99,111,108, 44, 32,111,117,116, 99,111,108, 44, 32,102, 97, 99, 41, 59, 10,125, 10, 10,118, -111,105,100, 32,115,101,112, 97,114, 97,116,101, 95,114,103, 98, 40,118,101, 99, 52, 32, 99,111,108, 44, 32,111,117,116, 32,102, -108,111, 97,116, 32,114, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,103, 44, 32,111,117,116, 32,102,108,111, 97,116, 32, 98, - 41, 10,123, 10, 9,114, 32, 61, 32, 99,111,108, 46,114, 59, 10, 9,103, 32, 61, 32, 99,111,108, 46,103, 59, 10, 9, 98, 32, 61, - 32, 99,111,108, 46, 98, 59, 10,125, 10, 10,118,111,105,100, 32, 99,111,109, 98,105,110,101, 95,114,103, 98, 40,102,108,111, 97, -116, 32,114, 44, 32,102,108,111, 97,116, 32,103, 44, 32,102,108,111, 97,116, 32, 98, 44, 32,111,117,116, 32,118,101, 99, 52, 32, - 99,111,108, 41, 10,123, 10, 9, 99,111,108, 32, 61, 32,118,101, 99, 52, 40,114, 44, 32,103, 44, 32, 98, 44, 32, 49, 46, 48, 41, - 59, 10,125, 10, 10,118,111,105,100, 32,111,117,116,112,117,116, 95,110,111,100,101, 40,118,101, 99, 52, 32,114,103, 98, 44, 32, -102,108,111, 97,116, 32, 97,108,112,104, 97, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116,114,103, 98, 41, 10,123, 10, - 9,111,117,116,114,103, 98, 32, 61, 32,118,101, 99, 52, 40,114,103, 98, 46,114,103, 98, 44, 32, 97,108,112,104, 97, 41, 59, 10, -125, 10, 10, 47, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 32, 84, 69, 88, 84, 85, 82, 69, 83, 32, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 47, 10, 10,118,111,105,100, 32,116,101,120,116,117,114,101, 95,102,108,105,112, 95, 98,108,101, -110,100, 40,118,101, 99, 51, 32,118,101, 99, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 41, 10,123, 10, - 9,111,117,116,118,101, 99, 32, 61, 32,118,101, 99, 46,121,120,122, 59, 10,125, 10, 10,118,111,105,100, 32,116,101,120,116,117, -114,101, 95, 98,108,101,110,100, 95,108,105,110, 40,118,101, 99, 51, 32,118,101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, - 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32, 40, 49, 46, 48, 43,118,101, 99, 46,120, 41, - 47, 50, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,116,101,120,116,117,114,101, 95, 98,108,101,110,100, 95,113,117, 97,100, - 40,118,101, 99, 51, 32,118,101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9, -111,117,116,118, 97,108, 32, 61, 32,109, 97,120, 40, 40, 49, 46, 48, 43,118,101, 99, 46,120, 41, 47, 50, 46, 48, 44, 32, 48, 46, - 48, 41, 59, 10, 9,111,117,116,118, 97,108, 32, 42, 61, 32,111,117,116,118, 97,108, 59, 10,125, 10, 10,118,111,105,100, 32,116, -101,120,116,117,114,101, 95,119,111,111,100, 95,115,105,110, 40,118,101, 99, 51, 32,118,101, 99, 44, 32,111,117,116, 32,102,108, -111, 97,116, 32,118, 97,108,117,101, 44, 32,111,117,116, 32,118,101, 99, 52, 32, 99,111,108,111,114, 44, 32,111,117,116, 32,118, -101, 99, 51, 32,110,111,114,109, 97,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32, 97, 32, 61, 32,115,113,114,116, 40,118,101, - 99, 46,120, 42,118,101, 99, 46,120, 32, 43, 32,118,101, 99, 46,121, 42,118,101, 99, 46,121, 32, 43, 32,118,101, 99, 46,122, 42, -118,101, 99, 46,122, 41, 42, 50, 48, 46, 48, 59, 10, 9,102,108,111, 97,116, 32,119,105, 32, 61, 32, 48, 46, 53, 32, 43, 32, 48, - 46, 53, 42,115,105,110, 40, 97, 41, 59, 10, 10, 9,118, 97,108,117,101, 32, 61, 32,119,105, 59, 10, 9, 99,111,108,111,114, 32, - 61, 32,118,101, 99, 52, 40,119,105, 44, 32,119,105, 44, 32,119,105, 44, 32, 49, 46, 48, 41, 59, 10, 9,110,111,114,109, 97,108, - 32, 61, 32,118,101, 99, 51, 40, 48, 46, 48, 44, 32, 48, 46, 48, 44, 32, 48, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32, -116,101,120,116,117,114,101, 95,105,109, 97,103,101, 40,118,101, 99, 51, 32,118,101, 99, 44, 32,115, 97,109,112,108,101,114, 50, - 68, 32,105,109, 97, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,118, 97,108,117,101, 44, 32,111,117,116, 32,118,101, 99, 52, - 32, 99,111,108,111,114, 44, 32,111,117,116, 32,118,101, 99, 51, 32,110,111,114,109, 97,108, 41, 10,123, 10, 9, 99,111,108,111, -114, 32, 61, 32,116,101,120,116,117,114,101, 50, 68, 40,105,109, 97, 44, 32, 40,118,101, 99, 46,120,121, 32, 43, 32,118,101, 99, - 50, 40, 49, 46, 48, 44, 32, 49, 46, 48, 41, 41, 42, 48, 46, 53, 41, 59, 10, 9,118, 97,108,117,101, 32, 61, 32, 49, 46, 48, 59, - 10, 10, 9,110,111,114,109, 97,108, 46,120, 32, 61, 32, 50, 46, 48, 42, 40, 99,111,108,111,114, 46,114, 32, 45, 32, 48, 46, 53, - 41, 59, 10, 9,110,111,114,109, 97,108, 46,121, 32, 61, 32, 50, 46, 48, 42, 40, 48, 46, 53, 32, 45, 32, 99,111,108,111,114, 46, -103, 41, 59, 10, 9,110,111,114,109, 97,108, 46,122, 32, 61, 32, 50, 46, 48, 42, 40, 99,111,108,111,114, 46, 98, 32, 45, 32, 48, - 46, 53, 41, 59, 10,125, 10, 10, 47, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 32, 77, 84, 69, 88, 32, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 47, 10, 10,118,111,105,100, 32,116,101,120, 99,111, 95,111,114, 99,111, 40, -118,101, 99, 51, 32, 97,116,116,111,114, 99,111, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,114, 99,111, 41, 10,123, 10, 9, -111,114, 99,111, 32, 61, 32, 97,116,116,111,114, 99,111, 59, 10,125, 10, 10,118,111,105,100, 32,116,101,120, 99,111, 95,117,118, - 40,118,101, 99, 50, 32, 97,116,116,117,118, 44, 32,111,117,116, 32,118,101, 99, 51, 32,117,118, 41, 10,123, 10, 9, 47, 42, 32, -100,105,115, 97, 98,108,101,100, 32,102,111,114, 32,110,111,119, 44, 32,119,111,114,107,115, 32,116,111,103,101,116,104,101,114, - 32,119,105,116,104, 32,108,101, 97,118,105,110,103, 32,111,117,116, 32,109,116,101,120, 95, 50,100, 95,109, 97,112,112,105,110, -103, 10, 9, 32, 32, 32,117,118, 32, 61, 32,118,101, 99, 51, 40, 97,116,116,117,118, 42, 50, 46, 48, 32, 45, 32,118,101, 99, 50, - 40, 49, 46, 48, 44, 32, 49, 46, 48, 41, 44, 32, 48, 46, 48, 41, 59, 32, 42, 47, 10, 9,117,118, 32, 61, 32,118,101, 99, 51, 40, - 97,116,116,117,118, 44, 32, 48, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,116,101,120, 99,111, 95,110,111,114,109, 40, -118,101, 99, 51, 32,110,111,114,109, 97,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,110,111,114,109, 97,108, 41, - 10,123, 10, 9, 47, 42, 32, 99,111,114,114,101,115,112,111,110,100,115, 32,116,111, 32,115,104,105, 45, 62,111,114,110, 44, 32, -119,104,105, 99,104, 32,105,115, 32,110,101,103, 97,116,101,100, 32,115,111, 32, 99, 97,110, 99,101,108,115, 10, 9, 32, 32, 32, -111,117,116, 32, 98,108,101,110,100,101,114, 32,110,111,114,109, 97,108, 32,110,101,103, 97,116,105,111,110, 32, 42, 47, 10, 9, -111,117,116,110,111,114,109, 97,108, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,110,111,114,109, 97,108, 41, 59, 10,125, - 10, 10,118,111,105,100, 32,116,101,120, 99,111, 95,116, 97,110,103,101,110,116, 40,118,101, 99, 51, 32,116, 97,110,103,101,110, -116, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,116, 97,110,103,101,110,116, 41, 10,123, 10, 9,111,117,116,116, 97, -110,103,101,110,116, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,116, 97,110,103,101,110,116, 41, 59, 10,125, 10, 10,118, -111,105,100, 32,116,101,120, 99,111, 95,103,108,111, 98, 97,108, 40,109, 97,116, 52, 32,118,105,101,119,105,110,118,109, 97,116, - 44, 32,118,101, 99, 51, 32, 99,111, 44, 32,111,117,116, 32,118,101, 99, 51, 32,103,108,111, 98, 97,108, 41, 10,123, 10, 9,103, -108,111, 98, 97,108, 32, 61, 32, 40,118,105,101,119,105,110,118,109, 97,116, 42,118,101, 99, 52, 40, 99,111, 44, 32, 49, 46, 48, - 41, 41, 46,120,121,122, 59, 10,125, 10, 10,118,111,105,100, 32,116,101,120, 99,111, 95,111, 98,106,101, 99,116, 40,109, 97,116, - 52, 32,118,105,101,119,105,110,118,109, 97,116, 44, 32,109, 97,116, 52, 32,111, 98,105,110,118,109, 97,116, 44, 32,118,101, 99, - 51, 32, 99,111, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111, 98,106,101, 99,116, 41, 10,123, 10, 9,111, 98,106,101, 99,116, - 32, 61, 32, 40,111, 98,105,110,118,109, 97,116, 42, 40,118,105,101,119,105,110,118,109, 97,116, 42,118,101, 99, 52, 40, 99,111, - 44, 32, 49, 46, 48, 41, 41, 41, 46,120,121,122, 59, 10,125, 10, 10,118,111,105,100, 32,116,101,120, 99,111, 95,114,101,102,108, - 40,118,101, 99, 51, 32,118,110, 44, 32,118,101, 99, 51, 32,118,105,101,119, 44, 32,111,117,116, 32,118,101, 99, 51, 32,114,101, -102, 41, 10,123, 10, 9,114,101,102, 32, 61, 32,118,105,101,119, 32, 45, 32, 50, 46, 48, 42,100,111,116, 40,118,110, 44, 32,118, -105,101,119, 41, 42,118,110, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,110,111,114,109, 40,118,101, 99, 51, - 32,110,111,114,109, 97,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,110,111,114,109, 97,108, 41, 10,123, 10, 9, - 47, 42, 32, 98,108,101,110,100,101,114, 32,114,101,110,100,101,114, 32,110,111,114,109, 97,108, 32,105,115, 32,110,101,103, 97, -116,101,100, 32, 42, 47, 10, 9,111,117,116,110,111,114,109, 97,108, 32, 61, 32, 45,110,111,114,109, 97,108,105,122,101, 40,110, -111,114,109, 97,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95, 98,108,101,110,100, 40,118, -101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, - 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, - 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 10, 9,102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 10, - 9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,116, 59, 10, 10, 9,105,110, 99,111,108, 32, 61, 32,102, 97, 99,116, - 42,116,101,120, 99,111,108, 32, 43, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 59, 10,125, 10, 10,118,111,105,100, 32,109, -116,101,120, 95,114,103, 98, 95,109,117,108, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101, -120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117, -116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 10, 9,102, - 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,103, 59, 10, 10, - 9,105,110, 99,111,108, 32, 61, 32, 40,102, 97, 99,109, 32, 43, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 41, 42,111,117, -116, 99,111,108, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,115, 99,114,101,101,110, 40,118,101, - 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, - 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10, -123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 10, 9,102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 10, 9, -102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,103, 59, 10, 10, 9,105,110, 99,111,108, 32, 61, 32,118,101, 99, 51, 40, - 49, 46, 48, 41, 32, 45, 32, 40,118,101, 99, 51, 40,102, 97, 99,109, 41, 32, 43, 32,102, 97, 99,116, 42, 40,118,101, 99, 51, 40, - 49, 46, 48, 41, 32, 45, 32,116,101,120, 99,111,108, 41, 41, 42, 40,118,101, 99, 51, 40, 49, 46, 48, 41, 32, 45, 32,111,117,116, - 99,111,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,111,118,101,114,108, 97,121, 40,118, -101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, - 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, - 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 10, 9,102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 10, - 9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,103, 59, 10, 10, 9,105,102, 40,111,117,116, 99,111,108, 46,114, 32, - 60, 32, 48, 46, 53, 41, 10, 9, 9,105,110, 99,111,108, 46,114, 32, 61, 32,111,117,116, 99,111,108, 46,114, 42, 40,102, 97, 99, -109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99,116, 42,116,101,120, 99,111,108, 46,114, 41, 59, 10, 9,101,108,115,101, 10, 9, 9, -105,110, 99,111,108, 46,114, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99,116, - 42, 40, 49, 46, 48, 32, 45, 32,116,101,120, 99,111,108, 46,114, 41, 41, 42, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, - 46,114, 41, 59, 10, 10, 9,105,102, 40,111,117,116, 99,111,108, 46,103, 32, 60, 32, 48, 46, 53, 41, 10, 9, 9,105,110, 99,111, -108, 46,103, 32, 61, 32,111,117,116, 99,111,108, 46,103, 42, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99,116, 42, -116,101,120, 99,111,108, 46,103, 41, 59, 10, 9,101,108,115,101, 10, 9, 9,105,110, 99,111,108, 46,103, 32, 61, 32, 49, 46, 48, - 32, 45, 32, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99,116, 42, 40, 49, 46, 48, 32, 45, 32,116,101,120, 99,111, -108, 46,103, 41, 41, 42, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46,103, 41, 59, 10, 10, 9,105,102, 40,111,117,116, - 99,111,108, 46, 98, 32, 60, 32, 48, 46, 53, 41, 10, 9, 9,105,110, 99,111,108, 46, 98, 32, 61, 32,111,117,116, 99,111,108, 46, - 98, 42, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99,116, 42,116,101,120, 99,111,108, 46, 98, 41, 59, 10, 9,101, -108,115,101, 10, 9, 9,105,110, 99,111,108, 46, 98, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40,102, 97, 99,109, 32, 43, 32, 50, 46, - 48, 42,102, 97, 99,116, 42, 40, 49, 46, 48, 32, 45, 32,116,101,120, 99,111,108, 46, 98, 41, 41, 42, 40, 49, 46, 48, 32, 45, 32, -111,117,116, 99,111,108, 46, 98, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,115,117, 98, 40, -118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32, -102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, - 41, 10,123, 10, 9,105,110, 99,111,108, 32, 61, 32, 45,102, 97, 99,116, 42,102, 97, 99,103, 42,116,101,120, 99,111,108, 32, 43, - 32,111,117,116, 99,111,108, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95, 97,100,100, 40,118,101, - 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, - 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10, -123, 10, 9,105,110, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,102, 97, 99,103, 42,116,101,120, 99,111,108, 32, 43, 32,111,117, -116, 99,111,108, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,100,105,118, 40,118,101, 99, 51, 32, -111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, - 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9, -102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 10, 9,102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 10, 9,102, 97, 99, -109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,116, 59, 10, 10, 9,105,102, 40,116,101,120, 99,111,108, 46,114, 32, 33, 61, 32, 48, - 46, 48, 41, 32,105,110, 99,111,108, 46,114, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 46,114, 32, 43, 32,102, 97, - 99,116, 42,111,117,116, 99,111,108, 46,114, 47,116,101,120, 99,111,108, 46,114, 59, 10, 9,105,102, 40,116,101,120, 99,111,108, - 46,103, 32, 33, 61, 32, 48, 46, 48, 41, 32,105,110, 99,111,108, 46,103, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, - 46,103, 32, 43, 32,102, 97, 99,116, 42,111,117,116, 99,111,108, 46,103, 47,116,101,120, 99,111,108, 46,103, 59, 10, 9,105,102, - 40,116,101,120, 99,111,108, 46, 98, 32, 33, 61, 32, 48, 46, 48, 41, 32,105,110, 99,111,108, 46, 98, 32, 61, 32,102, 97, 99,109, - 42,111,117,116, 99,111,108, 46, 98, 32, 43, 32,102, 97, 99,116, 42,111,117,116, 99,111,108, 46, 98, 47,116,101,120, 99,111,108, - 46, 98, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,100,105,102,102, 40,118,101, 99, 51, 32,111, -117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32, -102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102, -108,111, 97,116, 32,102, 97, 99,109, 59, 10, 10, 9,102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 10, 9,102, 97, 99,109, - 32, 61, 32, 49, 46, 48, 45,102, 97, 99,116, 59, 10, 10, 9,105,110, 99,111,108, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99, -111,108, 32, 43, 32,102, 97, 99,116, 42, 97, 98,115, 40,116,101,120, 99,111,108, 32, 45, 32,111,117,116, 99,111,108, 41, 59, 10, -125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,100, 97,114,107, 40,118,101, 99, 51, 32,111,117,116, 99,111, + 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 10, 9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, + 59, 10, 10, 9,105,102, 40, 99,111,108, 50, 46,114, 32, 62, 32, 48, 46, 53, 41, 10, 9, 9,111,117,116, 99,111,108, 46,114, 61, + 32, 99,111,108, 49, 46,114, 32, 43, 32,102, 97, 99, 42, 40, 50, 46, 48, 42, 40, 99,111,108, 50, 46,114, 32, 45, 32, 48, 46, 53, + 41, 41, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116, 99,111,108, 46,114, 61, 32, 99,111,108, 49, 46,114, 32, 43, 32,102, + 97, 99, 42, 40, 50, 46, 48, 42, 40, 99,111,108, 50, 46,114, 41, 32, 45, 32, 49, 46, 48, 41, 59, 10, 10, 9,105,102, 40, 99,111, +108, 50, 46,103, 32, 62, 32, 48, 46, 53, 41, 10, 9, 9,111,117,116, 99,111,108, 46,103, 61, 32, 99,111,108, 49, 46,103, 32, 43, + 32,102, 97, 99, 42, 40, 50, 46, 48, 42, 40, 99,111,108, 50, 46,103, 32, 45, 32, 48, 46, 53, 41, 41, 59, 10, 9,101,108,115,101, + 10, 9, 9,111,117,116, 99,111,108, 46,103, 61, 32, 99,111,108, 49, 46,103, 32, 43, 32,102, 97, 99, 42, 40, 50, 46, 48, 42, 40, + 99,111,108, 50, 46,103, 41, 32, 45, 32, 49, 46, 48, 41, 59, 10, 10, 9,105,102, 40, 99,111,108, 50, 46, 98, 32, 62, 32, 48, 46, + 53, 41, 10, 9, 9,111,117,116, 99,111,108, 46, 98, 61, 32, 99,111,108, 49, 46, 98, 32, 43, 32,102, 97, 99, 42, 40, 50, 46, 48, + 42, 40, 99,111,108, 50, 46, 98, 32, 45, 32, 48, 46, 53, 41, 41, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116, 99,111,108, + 46, 98, 61, 32, 99,111,108, 49, 46, 98, 32, 43, 32,102, 97, 99, 42, 40, 50, 46, 48, 42, 40, 99,111,108, 50, 46, 98, 41, 32, 45, + 32, 49, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,118, 97,108,116,111,114,103, 98, 40,102,108,111, 97,116, 32,102, 97, + 99, 44, 32,115, 97,109,112,108,101,114, 49, 68, 32, 99,111,108,111,114,109, 97,112, 44, 32,111,117,116, 32,118,101, 99, 52, 32, +111,117,116, 99,111,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116, 97,108,112,104, 97, 41, 10,123, 10, 9,111, +117,116, 99,111,108, 32, 61, 32,116,101,120,116,117,114,101, 49, 68, 40, 99,111,108,111,114,109, 97,112, 44, 32,102, 97, 99, 41, + 59, 10, 9,111,117,116, 97,108,112,104, 97, 32, 61, 32,111,117,116, 99,111,108, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32, +114,103, 98,116,111, 98,119, 40,118,101, 99, 52, 32, 99,111,108,111,114, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117, +116,118, 97,108, 41, 32, 32, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32, 99,111,108,111,114, 46,114, 42, 48, 46, 51, 53, + 32, 43, 32, 99,111,108,111,114, 46,103, 42, 48, 46, 52, 53, 32, 43, 32, 99,111,108,111,114, 46, 98, 42, 48, 46, 50, 59, 32, 47, + 42, 32,107,101,101,112, 32,116,104,101,115,101, 32,102, 97, 99,116,111,114,115, 32,105,110, 32,115,121,110, 99, 32,119,105,116, +104, 32,116,101,120,116,117,114,101, 46,104, 58, 82, 71, 66, 84, 79, 66, 87, 32, 42, 47, 10,125, 10, 10,118,111,105,100, 32,105, +110,118,101,114,116, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 44, 32,111,117,116, 32,118, +101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,111,117,116, 99,111,108, 46,120,121,122, 32, 61, 32,109,105,120, 40, + 99,111,108, 46,120,121,122, 44, 32,118,101, 99, 51, 40, 49, 46, 48, 44, 32, 49, 46, 48, 44, 32, 49, 46, 48, 41, 32, 45, 32, 99, +111,108, 46,120,121,122, 44, 32,102, 97, 99, 41, 59, 10, 9,111,117,116, 99,111,108, 46,119, 32, 61, 32, 99,111,108, 46,119, 59, + 10,125, 10, 10,118,111,105,100, 32,104,117,101, 95,115, 97,116, 40,102,108,111, 97,116, 32,104,117,101, 44, 32,102,108,111, 97, +116, 32,115, 97,116, 44, 32,102,108,111, 97,116, 32,118, 97,108,117,101, 44, 32,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118, +101, 99, 52, 32, 99,111,108, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,118,101, 99, + 52, 32,104,115,118, 59, 10, 10, 9,114,103, 98, 95,116,111, 95,104,115,118, 40, 99,111,108, 44, 32,104,115,118, 41, 59, 10, 10, + 9,104,115,118, 91, 48, 93, 32, 43, 61, 32, 40,104,117,101, 32, 45, 32, 48, 46, 53, 41, 59, 10, 9,105,102, 40,104,115,118, 91, + 48, 93, 62, 49, 46, 48, 41, 32,104,115,118, 91, 48, 93, 45, 61, 49, 46, 48, 59, 32,101,108,115,101, 32,105,102, 40,104,115,118, + 91, 48, 93, 60, 48, 46, 48, 41, 32,104,115,118, 91, 48, 93, 43, 61, 32, 49, 46, 48, 59, 10, 9,104,115,118, 91, 49, 93, 32, 42, + 61, 32,115, 97,116, 59, 10, 9,105,102, 40,104,115,118, 91, 49, 93, 62, 49, 46, 48, 41, 32,104,115,118, 91, 49, 93, 61, 32, 49, + 46, 48, 59, 32,101,108,115,101, 32,105,102, 40,104,115,118, 91, 49, 93, 60, 48, 46, 48, 41, 32,104,115,118, 91, 49, 93, 61, 32, + 48, 46, 48, 59, 10, 9,104,115,118, 91, 50, 93, 32, 42, 61, 32,118, 97,108,117,101, 59, 10, 9,105,102, 40,104,115,118, 91, 50, + 93, 62, 49, 46, 48, 41, 32,104,115,118, 91, 50, 93, 61, 32, 49, 46, 48, 59, 32,101,108,115,101, 32,105,102, 40,104,115,118, 91, + 50, 93, 60, 48, 46, 48, 41, 32,104,115,118, 91, 50, 93, 61, 32, 48, 46, 48, 59, 10, 10, 9,104,115,118, 95,116,111, 95,114,103, + 98, 40,104,115,118, 44, 32,111,117,116, 99,111,108, 41, 59, 10, 10, 9,111,117,116, 99,111,108, 32, 61, 32,109,105,120, 40, 99, +111,108, 44, 32,111,117,116, 99,111,108, 44, 32,102, 97, 99, 41, 59, 10,125, 10, 10,118,111,105,100, 32,115,101,112, 97,114, 97, +116,101, 95,114,103, 98, 40,118,101, 99, 52, 32, 99,111,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,114, 44, 32,111,117, +116, 32,102,108,111, 97,116, 32,103, 44, 32,111,117,116, 32,102,108,111, 97,116, 32, 98, 41, 10,123, 10, 9,114, 32, 61, 32, 99, +111,108, 46,114, 59, 10, 9,103, 32, 61, 32, 99,111,108, 46,103, 59, 10, 9, 98, 32, 61, 32, 99,111,108, 46, 98, 59, 10,125, 10, + 10,118,111,105,100, 32, 99,111,109, 98,105,110,101, 95,114,103, 98, 40,102,108,111, 97,116, 32,114, 44, 32,102,108,111, 97,116, + 32,103, 44, 32,102,108,111, 97,116, 32, 98, 44, 32,111,117,116, 32,118,101, 99, 52, 32, 99,111,108, 41, 10,123, 10, 9, 99,111, +108, 32, 61, 32,118,101, 99, 52, 40,114, 44, 32,103, 44, 32, 98, 44, 32, 49, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32, +111,117,116,112,117,116, 95,110,111,100,101, 40,118,101, 99, 52, 32,114,103, 98, 44, 32,102,108,111, 97,116, 32, 97,108,112,104, + 97, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116,114,103, 98, 41, 10,123, 10, 9,111,117,116,114,103, 98, 32, 61, 32, +118,101, 99, 52, 40,114,103, 98, 46,114,103, 98, 44, 32, 97,108,112,104, 97, 41, 59, 10,125, 10, 10, 47, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 32, 84, 69, 88, 84, 85, 82, 69, 83, 32, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 47, 10, + 10,118,111,105,100, 32,116,101,120,116,117,114,101, 95,102,108,105,112, 95, 98,108,101,110,100, 40,118,101, 99, 51, 32,118,101, + 99, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 41, 10,123, 10, 9,111,117,116,118,101, 99, 32, 61, 32, +118,101, 99, 46,121,120,122, 59, 10,125, 10, 10,118,111,105,100, 32,116,101,120,116,117,114,101, 95, 98,108,101,110,100, 95,108, +105,110, 40,118,101, 99, 51, 32,118,101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, + 10, 9,111,117,116,118, 97,108, 32, 61, 32, 40, 49, 46, 48, 43,118,101, 99, 46,120, 41, 47, 50, 46, 48, 59, 10,125, 10, 10,118, +111,105,100, 32,116,101,120,116,117,114,101, 95, 98,108,101,110,100, 95,113,117, 97,100, 40,118,101, 99, 51, 32,118,101, 99, 44, + 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32,109, + 97,120, 40, 40, 49, 46, 48, 43,118,101, 99, 46,120, 41, 47, 50, 46, 48, 44, 32, 48, 46, 48, 41, 59, 10, 9,111,117,116,118, 97, +108, 32, 42, 61, 32,111,117,116,118, 97,108, 59, 10,125, 10, 10,118,111,105,100, 32,116,101,120,116,117,114,101, 95,119,111,111, +100, 95,115,105,110, 40,118,101, 99, 51, 32,118,101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,118, 97,108,117,101, 44, + 32,111,117,116, 32,118,101, 99, 52, 32, 99,111,108,111,114, 44, 32,111,117,116, 32,118,101, 99, 51, 32,110,111,114,109, 97,108, + 41, 10,123, 10, 9,102,108,111, 97,116, 32, 97, 32, 61, 32,115,113,114,116, 40,118,101, 99, 46,120, 42,118,101, 99, 46,120, 32, + 43, 32,118,101, 99, 46,121, 42,118,101, 99, 46,121, 32, 43, 32,118,101, 99, 46,122, 42,118,101, 99, 46,122, 41, 42, 50, 48, 46, + 48, 59, 10, 9,102,108,111, 97,116, 32,119,105, 32, 61, 32, 48, 46, 53, 32, 43, 32, 48, 46, 53, 42,115,105,110, 40, 97, 41, 59, + 10, 10, 9,118, 97,108,117,101, 32, 61, 32,119,105, 59, 10, 9, 99,111,108,111,114, 32, 61, 32,118,101, 99, 52, 40,119,105, 44, + 32,119,105, 44, 32,119,105, 44, 32, 49, 46, 48, 41, 59, 10, 9,110,111,114,109, 97,108, 32, 61, 32,118,101, 99, 51, 40, 48, 46, + 48, 44, 32, 48, 46, 48, 44, 32, 48, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,116,101,120,116,117,114,101, 95,105,109, + 97,103,101, 40,118,101, 99, 51, 32,118,101, 99, 44, 32,115, 97,109,112,108,101,114, 50, 68, 32,105,109, 97, 44, 32,111,117,116, + 32,102,108,111, 97,116, 32,118, 97,108,117,101, 44, 32,111,117,116, 32,118,101, 99, 52, 32, 99,111,108,111,114, 44, 32,111,117, +116, 32,118,101, 99, 51, 32,110,111,114,109, 97,108, 41, 10,123, 10, 9, 99,111,108,111,114, 32, 61, 32,116,101,120,116,117,114, +101, 50, 68, 40,105,109, 97, 44, 32, 40,118,101, 99, 46,120,121, 32, 43, 32,118,101, 99, 50, 40, 49, 46, 48, 44, 32, 49, 46, 48, + 41, 41, 42, 48, 46, 53, 41, 59, 10, 9,118, 97,108,117,101, 32, 61, 32, 49, 46, 48, 59, 10, 10, 9,110,111,114,109, 97,108, 46, +120, 32, 61, 32, 50, 46, 48, 42, 40, 99,111,108,111,114, 46,114, 32, 45, 32, 48, 46, 53, 41, 59, 10, 9,110,111,114,109, 97,108, + 46,121, 32, 61, 32, 50, 46, 48, 42, 40, 48, 46, 53, 32, 45, 32, 99,111,108,111,114, 46,103, 41, 59, 10, 9,110,111,114,109, 97, +108, 46,122, 32, 61, 32, 50, 46, 48, 42, 40, 99,111,108,111,114, 46, 98, 32, 45, 32, 48, 46, 53, 41, 59, 10,125, 10, 10, 47, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 32, 77, 84, 69, 88, 32, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 47, 10, 10,118,111,105,100, 32,116,101,120, 99,111, 95,111,114, 99,111, 40,118,101, 99, 51, 32, 97,116,116,111,114, + 99,111, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,114, 99,111, 41, 10,123, 10, 9,111,114, 99,111, 32, 61, 32, 97,116,116, +111,114, 99,111, 59, 10,125, 10, 10,118,111,105,100, 32,116,101,120, 99,111, 95,117,118, 40,118,101, 99, 50, 32, 97,116,116,117, +118, 44, 32,111,117,116, 32,118,101, 99, 51, 32,117,118, 41, 10,123, 10, 9, 47, 42, 32,100,105,115, 97, 98,108,101,100, 32,102, +111,114, 32,110,111,119, 44, 32,119,111,114,107,115, 32,116,111,103,101,116,104,101,114, 32,119,105,116,104, 32,108,101, 97,118, +105,110,103, 32,111,117,116, 32,109,116,101,120, 95, 50,100, 95,109, 97,112,112,105,110,103, 10, 9, 32, 32, 32,117,118, 32, 61, + 32,118,101, 99, 51, 40, 97,116,116,117,118, 42, 50, 46, 48, 32, 45, 32,118,101, 99, 50, 40, 49, 46, 48, 44, 32, 49, 46, 48, 41, + 44, 32, 48, 46, 48, 41, 59, 32, 42, 47, 10, 9,117,118, 32, 61, 32,118,101, 99, 51, 40, 97,116,116,117,118, 44, 32, 48, 46, 48, + 41, 59, 10,125, 10, 10,118,111,105,100, 32,116,101,120, 99,111, 95,110,111,114,109, 40,118,101, 99, 51, 32,110,111,114,109, 97, +108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,110,111,114,109, 97,108, 41, 10,123, 10, 9, 47, 42, 32, 99,111,114, +114,101,115,112,111,110,100,115, 32,116,111, 32,115,104,105, 45, 62,111,114,110, 44, 32,119,104,105, 99,104, 32,105,115, 32,110, +101,103, 97,116,101,100, 32,115,111, 32, 99, 97,110, 99,101,108,115, 10, 9, 32, 32, 32,111,117,116, 32, 98,108,101,110,100,101, +114, 32,110,111,114,109, 97,108, 32,110,101,103, 97,116,105,111,110, 32, 42, 47, 10, 9,111,117,116,110,111,114,109, 97,108, 32, + 61, 32,110,111,114,109, 97,108,105,122,101, 40,110,111,114,109, 97,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,116,101,120, + 99,111, 95,116, 97,110,103,101,110,116, 40,118,101, 99, 51, 32,116, 97,110,103,101,110,116, 44, 32,111,117,116, 32,118,101, 99, + 51, 32,111,117,116,116, 97,110,103,101,110,116, 41, 10,123, 10, 9,111,117,116,116, 97,110,103,101,110,116, 32, 61, 32,110,111, +114,109, 97,108,105,122,101, 40,116, 97,110,103,101,110,116, 41, 59, 10,125, 10, 10,118,111,105,100, 32,116,101,120, 99,111, 95, +103,108,111, 98, 97,108, 40,109, 97,116, 52, 32,118,105,101,119,105,110,118,109, 97,116, 44, 32,118,101, 99, 51, 32, 99,111, 44, + 32,111,117,116, 32,118,101, 99, 51, 32,103,108,111, 98, 97,108, 41, 10,123, 10, 9,103,108,111, 98, 97,108, 32, 61, 32, 40,118, +105,101,119,105,110,118,109, 97,116, 42,118,101, 99, 52, 40, 99,111, 44, 32, 49, 46, 48, 41, 41, 46,120,121,122, 59, 10,125, 10, + 10,118,111,105,100, 32,116,101,120, 99,111, 95,111, 98,106,101, 99,116, 40,109, 97,116, 52, 32,118,105,101,119,105,110,118,109, + 97,116, 44, 32,109, 97,116, 52, 32,111, 98,105,110,118,109, 97,116, 44, 32,118,101, 99, 51, 32, 99,111, 44, 32,111,117,116, 32, +118,101, 99, 51, 32,111, 98,106,101, 99,116, 41, 10,123, 10, 9,111, 98,106,101, 99,116, 32, 61, 32, 40,111, 98,105,110,118,109, + 97,116, 42, 40,118,105,101,119,105,110,118,109, 97,116, 42,118,101, 99, 52, 40, 99,111, 44, 32, 49, 46, 48, 41, 41, 41, 46,120, +121,122, 59, 10,125, 10, 10,118,111,105,100, 32,116,101,120, 99,111, 95,114,101,102,108, 40,118,101, 99, 51, 32,118,110, 44, 32, +118,101, 99, 51, 32,118,105,101,119, 44, 32,111,117,116, 32,118,101, 99, 51, 32,114,101,102, 41, 10,123, 10, 9,114,101,102, 32, + 61, 32,118,105,101,119, 32, 45, 32, 50, 46, 48, 42,100,111,116, 40,118,110, 44, 32,118,105,101,119, 41, 42,118,110, 59, 10,125, + 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,110,111,114,109, 40,118,101, 99, 51, 32,110,111,114,109, 97,108, 44, 32,111, +117,116, 32,118,101, 99, 51, 32,111,117,116,110,111,114,109, 97,108, 41, 10,123, 10, 9, 47, 42, 32, 98,108,101,110,100,101,114, + 32,114,101,110,100,101,114, 32,110,111,114,109, 97,108, 32,105,115, 32,110,101,103, 97,116,101,100, 32, 42, 47, 10, 9,111,117, +116,110,111,114,109, 97,108, 32, 61, 32, 45,110,111,114,109, 97,108,105,122,101, 40,110,111,114,109, 97,108, 41, 59, 10,125, 10, + 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95, 98,108,101,110,100, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, + 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, + 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32, +102, 97, 99,109, 59, 10, 10, 9,102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, + 48, 45,102, 97, 99,116, 59, 10, 10, 9,105,110, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 32, 43, 32, +102, 97, 99,109, 42,111,117,116, 99,111,108, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,109,117, +108, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97, +116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99, +111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 10, 9,102, 97, 99,116, 32, 42, 61, 32,102, 97, 99, +103, 59, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,103, 59, 10, 10, 9,105,110, 99,111,108, 32, 61, 32, 40, +102, 97, 99,109, 32, 43, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 41, 42,111,117,116, 99,111,108, 59, 10,125, 10, 10,118, +111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,115, 99,114,101,101,110, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, + 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32, +102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, + 97, 99,109, 59, 10, 10, 9,102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, + 45,102, 97, 99,103, 59, 10, 10, 9,105,110, 99,111,108, 32, 61, 32,118,101, 99, 51, 40, 49, 46, 48, 41, 32, 45, 32, 40,118,101, + 99, 51, 40,102, 97, 99,109, 41, 32, 43, 32,102, 97, 99,116, 42, 40,118,101, 99, 51, 40, 49, 46, 48, 41, 32, 45, 32,116,101,120, + 99,111,108, 41, 41, 42, 40,118,101, 99, 51, 40, 49, 46, 48, 41, 32, 45, 32,111,117,116, 99,111,108, 41, 59, 10,125, 10, 10,118, +111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,111,118,101,114,108, 97,121, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, + 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, + 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32, +102, 97, 99,109, 59, 10, 10, 9,102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, + 48, 45,102, 97, 99,103, 59, 10, 10, 9,105,102, 40,111,117,116, 99,111,108, 46,114, 32, 60, 32, 48, 46, 53, 41, 10, 9, 9,105, +110, 99,111,108, 46,114, 32, 61, 32,111,117,116, 99,111,108, 46,114, 42, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, + 99,116, 42,116,101,120, 99,111,108, 46,114, 41, 59, 10, 9,101,108,115,101, 10, 9, 9,105,110, 99,111,108, 46,114, 32, 61, 32, + 49, 46, 48, 32, 45, 32, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99,116, 42, 40, 49, 46, 48, 32, 45, 32,116,101, +120, 99,111,108, 46,114, 41, 41, 42, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46,114, 41, 59, 10, 10, 9,105,102, 40, +111,117,116, 99,111,108, 46,103, 32, 60, 32, 48, 46, 53, 41, 10, 9, 9,105,110, 99,111,108, 46,103, 32, 61, 32,111,117,116, 99, +111,108, 46,103, 42, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99,116, 42,116,101,120, 99,111,108, 46,103, 41, 59, + 10, 9,101,108,115,101, 10, 9, 9,105,110, 99,111,108, 46,103, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40,102, 97, 99,109, 32, 43, + 32, 50, 46, 48, 42,102, 97, 99,116, 42, 40, 49, 46, 48, 32, 45, 32,116,101,120, 99,111,108, 46,103, 41, 41, 42, 40, 49, 46, 48, + 32, 45, 32,111,117,116, 99,111,108, 46,103, 41, 59, 10, 10, 9,105,102, 40,111,117,116, 99,111,108, 46, 98, 32, 60, 32, 48, 46, + 53, 41, 10, 9, 9,105,110, 99,111,108, 46, 98, 32, 61, 32,111,117,116, 99,111,108, 46, 98, 42, 40,102, 97, 99,109, 32, 43, 32, + 50, 46, 48, 42,102, 97, 99,116, 42,116,101,120, 99,111,108, 46, 98, 41, 59, 10, 9,101,108,115,101, 10, 9, 9,105,110, 99,111, +108, 46, 98, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99,116, 42, 40, 49, 46, + 48, 32, 45, 32,116,101,120, 99,111,108, 46, 98, 41, 41, 42, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46, 98, 41, 59, + 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,115,117, 98, 40,118,101, 99, 51, 32,111,117,116, 99,111, 108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97, -116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, - 32,102, 97, 99,109, 44, 32, 99,111,108, 59, 10, 10, 9,102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 10, 9,102, 97, 99, -109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,116, 59, 10, 10, 9, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111, -108, 46,114, 59, 10, 9,105,102, 40, 99,111,108, 32, 60, 32,111,117,116, 99,111,108, 46,114, 41, 32,105,110, 99,111,108, 46,114, - 32, 61, 32, 99,111,108, 59, 32,101,108,115,101, 32,105,110, 99,111,108, 46,114, 32, 61, 32,111,117,116, 99,111,108, 46,114, 59, - 10, 9, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 46,103, 59, 10, 9,105,102, 40, 99,111,108, 32, 60, - 32,111,117,116, 99,111,108, 46,103, 41, 32,105,110, 99,111,108, 46,103, 32, 61, 32, 99,111,108, 59, 32,101,108,115,101, 32,105, -110, 99,111,108, 46,103, 32, 61, 32,111,117,116, 99,111,108, 46,103, 59, 10, 9, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116, -101,120, 99,111,108, 46, 98, 59, 10, 9,105,102, 40, 99,111,108, 32, 60, 32,111,117,116, 99,111,108, 46, 98, 41, 32,105,110, 99, -111,108, 46, 98, 32, 61, 32, 99,111,108, 59, 32,101,108,115,101, 32,105,110, 99,111,108, 46, 98, 32, 61, 32,111,117,116, 99,111, -108, 46, 98, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,108,105,103,104,116, 40,118,101, 99, 51, - 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, - 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, - 9,102,108,111, 97,116, 32,102, 97, 99,109, 44, 32, 99,111,108, 59, 10, 10, 9,102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, - 59, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,116, 59, 10, 10, 9, 99,111,108, 32, 61, 32,102, 97, 99,116, - 42,116,101,120, 99,111,108, 46,114, 59, 10, 9,105,102, 40, 99,111,108, 32, 62, 32,111,117,116, 99,111,108, 46,114, 41, 32,105, -110, 99,111,108, 46,114, 32, 61, 32, 99,111,108, 59, 32,101,108,115,101, 32,105,110, 99,111,108, 46,114, 32, 61, 32,111,117,116, - 99,111,108, 46,114, 59, 10, 9, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 46,103, 59, 10, 9,105,102, - 40, 99,111,108, 32, 62, 32,111,117,116, 99,111,108, 46,103, 41, 32,105,110, 99,111,108, 46,103, 32, 61, 32, 99,111,108, 59, 32, -101,108,115,101, 32,105,110, 99,111,108, 46,103, 32, 61, 32,111,117,116, 99,111,108, 46,103, 59, 10, 9, 99,111,108, 32, 61, 32, -102, 97, 99,116, 42,116,101,120, 99,111,108, 46, 98, 59, 10, 9,105,102, 40, 99,111,108, 32, 62, 32,111,117,116, 99,111,108, 46, - 98, 41, 32,105,110, 99,111,108, 46, 98, 32, 61, 32, 99,111,108, 59, 32,101,108,115,101, 32,105,110, 99,111,108, 46, 98, 32, 61, - 32,111,117,116, 99,111,108, 46, 98, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,104,117,101, 40, -118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32, -102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, - 41, 10,123, 10, 9,118,101, 99, 52, 32, 99,111,108, 59, 10, 10, 9,109,105,120, 95,104,117,101, 40,102, 97, 99,116, 42,102, 97, - 99,103, 44, 32,118,101, 99, 52, 40,111,117,116, 99,111,108, 44, 32, 49, 46, 48, 41, 44, 32,118,101, 99, 52, 40,116,101,120, 99, -111,108, 44, 32, 49, 46, 48, 41, 44, 32, 99,111,108, 41, 59, 10, 9,105,110, 99,111,108, 46,114,103, 98, 32, 61, 32, 99,111,108, - 46,114,103, 98, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,115, 97,116, 40,118,101, 99, 51, 32, -111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, - 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9, -118,101, 99, 52, 32, 99,111,108, 59, 10, 10, 9,109,105,120, 95,115, 97,116, 40,102, 97, 99,116, 42,102, 97, 99,103, 44, 32,118, -101, 99, 52, 40,111,117,116, 99,111,108, 44, 32, 49, 46, 48, 41, 44, 32,118,101, 99, 52, 40,116,101,120, 99,111,108, 44, 32, 49, - 46, 48, 41, 44, 32, 99,111,108, 41, 59, 10, 9,105,110, 99,111,108, 46,114,103, 98, 32, 61, 32, 99,111,108, 46,114,103, 98, 59, - 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,118, 97,108, 40,118,101, 99, 51, 32,111,117,116, 99,111, +116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,105,110, 99,111,108, + 32, 61, 32, 45,102, 97, 99,116, 42,102, 97, 99,103, 42,116,101,120, 99,111,108, 32, 43, 32,111,117,116, 99,111,108, 59, 10,125, + 10, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95, 97,100,100, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, + 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32, +102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,105,110, 99,111,108, 32, 61, + 32,102, 97, 99,116, 42,102, 97, 99,103, 42,116,101,120, 99,111,108, 32, 43, 32,111,117,116, 99,111,108, 59, 10,125, 10, 10,118, +111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,100,105,118, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, + 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99, +103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, + 59, 10, 10, 9,102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, + 99,116, 59, 10, 10, 9,105,102, 40,116,101,120, 99,111,108, 46,114, 32, 33, 61, 32, 48, 46, 48, 41, 32,105,110, 99,111,108, 46, +114, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 46,114, 32, 43, 32,102, 97, 99,116, 42,111,117,116, 99,111,108, 46, +114, 47,116,101,120, 99,111,108, 46,114, 59, 10, 9,105,102, 40,116,101,120, 99,111,108, 46,103, 32, 33, 61, 32, 48, 46, 48, 41, + 32,105,110, 99,111,108, 46,103, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 46,103, 32, 43, 32,102, 97, 99,116, 42, +111,117,116, 99,111,108, 46,103, 47,116,101,120, 99,111,108, 46,103, 59, 10, 9,105,102, 40,116,101,120, 99,111,108, 46, 98, 32, + 33, 61, 32, 48, 46, 48, 41, 32,105,110, 99,111,108, 46, 98, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 46, 98, 32, + 43, 32,102, 97, 99,116, 42,111,117,116, 99,111,108, 46, 98, 47,116,101,120, 99,111,108, 46, 98, 59, 10,125, 10, 10,118,111,105, +100, 32,109,116,101,120, 95,114,103, 98, 95,100,105,102,102, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, + 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, + 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, + 10, 10, 9,102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99, +116, 59, 10, 10, 9,105,110, 99,111,108, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 32, 43, 32,102, 97, 99,116, 42, + 97, 98,115, 40,116,101,120, 99,111,108, 32, 45, 32,111,117,116, 99,111,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116, +101,120, 95,114,103, 98, 95,100, 97,114,107, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101, +120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117, +116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 44, 32, 99,111,108, + 59, 10, 10, 9,102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, + 99,116, 59, 10, 10, 9, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 46,114, 59, 10, 9,105,102, 40, 99, +111,108, 32, 60, 32,111,117,116, 99,111,108, 46,114, 41, 32,105,110, 99,111,108, 46,114, 32, 61, 32, 99,111,108, 59, 32,101,108, +115,101, 32,105,110, 99,111,108, 46,114, 32, 61, 32,111,117,116, 99,111,108, 46,114, 59, 10, 9, 99,111,108, 32, 61, 32,102, 97, + 99,116, 42,116,101,120, 99,111,108, 46,103, 59, 10, 9,105,102, 40, 99,111,108, 32, 60, 32,111,117,116, 99,111,108, 46,103, 41, + 32,105,110, 99,111,108, 46,103, 32, 61, 32, 99,111,108, 59, 32,101,108,115,101, 32,105,110, 99,111,108, 46,103, 32, 61, 32,111, +117,116, 99,111,108, 46,103, 59, 10, 9, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 46, 98, 59, 10, 9, +105,102, 40, 99,111,108, 32, 60, 32,111,117,116, 99,111,108, 46, 98, 41, 32,105,110, 99,111,108, 46, 98, 32, 61, 32, 99,111,108, + 59, 32,101,108,115,101, 32,105,110, 99,111,108, 46, 98, 32, 61, 32,111,117,116, 99,111,108, 46, 98, 59, 10,125, 10, 10,118,111, +105,100, 32,109,116,101,120, 95,114,103, 98, 95,108,105,103,104,116, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118, +101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, + 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99, +109, 44, 32, 99,111,108, 59, 10, 10, 9,102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 10, 9,102, 97, 99,109, 32, 61, 32, + 49, 46, 48, 45,102, 97, 99,116, 59, 10, 10, 9, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 46,114, 59, + 10, 9,105,102, 40, 99,111,108, 32, 62, 32,111,117,116, 99,111,108, 46,114, 41, 32,105,110, 99,111,108, 46,114, 32, 61, 32, 99, +111,108, 59, 32,101,108,115,101, 32,105,110, 99,111,108, 46,114, 32, 61, 32,111,117,116, 99,111,108, 46,114, 59, 10, 9, 99,111, +108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 46,103, 59, 10, 9,105,102, 40, 99,111,108, 32, 62, 32,111,117,116, + 99,111,108, 46,103, 41, 32,105,110, 99,111,108, 46,103, 32, 61, 32, 99,111,108, 59, 32,101,108,115,101, 32,105,110, 99,111,108, + 46,103, 32, 61, 32,111,117,116, 99,111,108, 46,103, 59, 10, 9, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111, +108, 46, 98, 59, 10, 9,105,102, 40, 99,111,108, 32, 62, 32,111,117,116, 99,111,108, 46, 98, 41, 32,105,110, 99,111,108, 46, 98, + 32, 61, 32, 99,111,108, 59, 32,101,108,115,101, 32,105,110, 99,111,108, 46, 98, 32, 61, 32,111,117,116, 99,111,108, 46, 98, 59, + 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,104,117,101, 40,118,101, 99, 51, 32,111,117,116, 99,111, 108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97, 116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,118,101, 99, 52, 32, - 99,111,108, 59, 10, 10, 9,109,105,120, 95,118, 97,108, 40,102, 97, 99,116, 42,102, 97, 99,103, 44, 32,118,101, 99, 52, 40,111, + 99,111,108, 59, 10, 10, 9,109,105,120, 95,104,117,101, 40,102, 97, 99,116, 42,102, 97, 99,103, 44, 32,118,101, 99, 52, 40,111, 117,116, 99,111,108, 44, 32, 49, 46, 48, 41, 44, 32,118,101, 99, 52, 40,116,101,120, 99,111,108, 44, 32, 49, 46, 48, 41, 44, 32, 99,111,108, 41, 59, 10, 9,105,110, 99,111,108, 46,114,103, 98, 32, 61, 32, 99,111,108, 46,114,103, 98, 59, 10,125, 10, 10,118, -111,105,100, 32,109,116,101,120, 95,114,103, 98, 95, 99,111,108,111,114, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32, -118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, - 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,118,101, 99, 52, 32, 99,111,108, - 59, 10, 10, 9,109,105,120, 95, 99,111,108,111,114, 40,102, 97, 99,116, 42,102, 97, 99,103, 44, 32,118,101, 99, 52, 40,111,117, -116, 99,111,108, 44, 32, 49, 46, 48, 41, 44, 32,118,101, 99, 52, 40,116,101,120, 99,111,108, 44, 32, 49, 46, 48, 41, 44, 32, 99, -111,108, 41, 59, 10, 9,105,110, 99,111,108, 46,114,103, 98, 32, 61, 32, 99,111,108, 46,114,103, 98, 59, 10,125, 10, 10,118,111, -105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95,118, 97,114,115, 40,105,110,111,117,116, 32,102,108,111, 97,116, 32,102, - 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,102, 97, 99,109, 41, - 10,123, 10, 9,102, 97, 99,116, 32, 42, 61, 32, 97, 98,115, 40,102, 97, 99,103, 41, 59, 10, 9,102, 97, 99,109, 32, 61, 32, 49, - 46, 48, 45,102, 97, 99,116, 59, 10, 10, 9,105,102, 40,102, 97, 99,103, 32, 60, 32, 48, 46, 48, 41, 32,123, 10, 9, 9,102,108, -111, 97,116, 32,116,109,112, 32, 61, 32,102, 97, 99,116, 59, 10, 9, 9,102, 97, 99,116, 32, 61, 32,102, 97, 99,109, 59, 10, 9, - 9,102, 97, 99,109, 32, 61, 32,116,109,112, 59, 10, 9,125, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108, -117,101, 95, 98,108,101,110,100, 40,102,108,111, 97,116, 32,111,117,116, 99,111,108, 44, 32,102,108,111, 97,116, 32,116,101,120, - 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, - 32,102,108,111, 97,116, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 9,109,116, -101,120, 95,118, 97,108,117,101, 95,118, 97,114,115, 40,102, 97, 99,116, 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,109, 41, 59, - 10, 10, 9,105,110, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 32, 43, 32,102, 97, 99,109, 42,111,117, -116, 99,111,108, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95,109,117,108, 40,102,108,111, - 97,116, 32,111,117,116, 99,111,108, 44, 32,102,108,111, 97,116, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, - 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110, 99,111,108, - 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 9,109,116,101,120, 95,118, 97,108,117,101, 95,118, 97,114, -115, 40,102, 97, 99,116, 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,109, 41, 59, 10, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, - 48, 32, 45, 32,102, 97, 99,103, 59, 10, 9,105,110, 99,111,108, 32, 61, 32, 40,102, 97, 99,109, 32, 43, 32,102, 97, 99,116, 42, -116,101,120, 99,111,108, 41, 42,111,117,116, 99,111,108, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108, -117,101, 95,115, 99,114,101,101,110, 40,102,108,111, 97,116, 32,111,117,116, 99,111,108, 44, 32,102,108,111, 97,116, 32,116,101, -120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117, -116, 32,102,108,111, 97,116, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 9,109, -116,101,120, 95,118, 97,108,117,101, 95,118, 97,114,115, 40,102, 97, 99,116, 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,109, 41, - 59, 10, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99,103, 59, 10, 9,105,110, 99,111,108, 32, 61, 32, - 49, 46, 48, 32, 45, 32, 40,102, 97, 99,109, 32, 43, 32,102, 97, 99,116, 42, 40, 49, 46, 48, 32, 45, 32,116,101,120, 99,111,108, - 41, 41, 42, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95, -118, 97,108,117,101, 95,115,117, 98, 40,102,108,111, 97,116, 32,111,117,116, 99,111,108, 44, 32,102,108,111, 97,116, 32,116,101, +111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,115, 97,116, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, + 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99, +103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,118,101, 99, 52, 32, 99,111,108, 59, 10, + 10, 9,109,105,120, 95,115, 97,116, 40,102, 97, 99,116, 42,102, 97, 99,103, 44, 32,118,101, 99, 52, 40,111,117,116, 99,111,108, + 44, 32, 49, 46, 48, 41, 44, 32,118,101, 99, 52, 40,116,101,120, 99,111,108, 44, 32, 49, 46, 48, 41, 44, 32, 99,111,108, 41, 59, + 10, 9,105,110, 99,111,108, 46,114,103, 98, 32, 61, 32, 99,111,108, 46,114,103, 98, 59, 10,125, 10, 10,118,111,105,100, 32,109, +116,101,120, 95,114,103, 98, 95,118, 97,108, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101, 120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117, -116, 32,102,108,111, 97,116, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 9,109, -116,101,120, 95,118, 97,108,117,101, 95,118, 97,114,115, 40,102, 97, 99,116, 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,109, 41, - 59, 10, 10, 9,102, 97, 99,116, 32, 61, 32, 45,102, 97, 99,116, 59, 10, 9,105,110, 99,111,108, 32, 61, 32,102, 97, 99,116, 42, -116,101,120, 99,111,108, 32, 43, 32,111,117,116, 99,111,108, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97, -108,117,101, 95, 97,100,100, 40,102,108,111, 97,116, 32,111,117,116, 99,111,108, 44, 32,102,108,111, 97,116, 32,116,101,120, 99, -111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32, -102,108,111, 97,116, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 9,109,116,101, -120, 95,118, 97,108,117,101, 95,118, 97,114,115, 40,102, 97, 99,116, 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,109, 41, 59, 10, - 10, 9,102, 97, 99,116, 32, 61, 32,102, 97, 99,116, 59, 10, 9,105,110, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, - 99,111,108, 32, 43, 32,111,117,116, 99,111,108, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, - 95,100,105,118, 40,102,108,111, 97,116, 32,111,117,116, 99,111,108, 44, 32,102,108,111, 97,116, 32,116,101,120, 99,111,108, 44, - 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,102,108,111, - 97,116, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 9,109,116,101,120, 95,118, - 97,108,117,101, 95,118, 97,114,115, 40,102, 97, 99,116, 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,109, 41, 59, 10, 10, 9,105, -102, 40,116,101,120, 99,111,108, 32, 33, 61, 32, 48, 46, 48, 41, 10, 9, 9,105,110, 99,111,108, 32, 61, 32,102, 97, 99,109, 42, -111,117,116, 99,111,108, 32, 43, 32,102, 97, 99,116, 42,111,117,116, 99,111,108, 47,116,101,120, 99,111,108, 59, 10, 9,101,108, -115,101, 10, 9, 9,105,110, 99,111,108, 32, 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, - 97,108,117,101, 95,100,105,102,102, 40,102,108,111, 97,116, 32,111,117,116, 99,111,108, 44, 32,102,108,111, 97,116, 32,116,101, -120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117, -116, 32,102,108,111, 97,116, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 9,109, -116,101,120, 95,118, 97,108,117,101, 95,118, 97,114,115, 40,102, 97, 99,116, 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,109, 41, - 59, 10, 10, 9,105,110, 99,111,108, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 32, 43, 32,102, 97, 99,116, 42, 97, - 98,115, 40,116,101,120, 99,111,108, 32, 45, 32,111,117,116, 99,111,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101, -120, 95,118, 97,108,117,101, 95,100, 97,114,107, 40,102,108,111, 97,116, 32,111,117,116, 99,111,108, 44, 32,102,108,111, 97,116, - 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, - 32,111,117,116, 32,102,108,111, 97,116, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, - 10, 9,109,116,101,120, 95,118, 97,108,117,101, 95,118, 97,114,115, 40,102, 97, 99,116, 44, 32,102, 97, 99,103, 44, 32,102, 97, - 99,109, 41, 59, 10, 10, 9,102,108,111, 97,116, 32, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 59, 10, - 9,105,102, 40, 99,111,108, 32, 60, 32,111,117,116, 99,111,108, 41, 32,105,110, 99,111,108, 32, 61, 32, 99,111,108, 59, 32,101, -108,115,101, 32,105,110, 99,111,108, 32, 61, 32,111,117,116, 99,111,108, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, - 95,118, 97,108,117,101, 95,108,105,103,104,116, 40,102,108,111, 97,116, 32,111,117,116, 99,111,108, 44, 32,102,108,111, 97,116, - 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, - 32,111,117,116, 32,102,108,111, 97,116, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, - 10, 9,109,116,101,120, 95,118, 97,108,117,101, 95,118, 97,114,115, 40,102, 97, 99,116, 44, 32,102, 97, 99,103, 44, 32,102, 97, - 99,109, 41, 59, 10, 10, 9,102,108,111, 97,116, 32, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 59, 10, - 9,105,102, 40, 99,111,108, 32, 62, 32,111,117,116, 99,111,108, 41, 32,105,110, 99,111,108, 32, 61, 32, 99,111,108, 59, 32,101, -108,115,101, 32,105,110, 99,111,108, 32, 61, 32,111,117,116, 99,111,108, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, - 95,118, 97,108,117,101, 95, 99,108, 97,109,112, 95,112,111,115,105,116,105,118,101, 40,102,108,111, 97,116, 32,102, 97, 99, 44, - 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,102, 97, 99, 41, 10,123, 10, 9,111,117,116,102, 97, 99, 32, 61, 32,109, - 97,120, 40,102, 97, 99, 44, 32, 48, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, - 95, 99,108, 97,109,112, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,102, - 97, 99, 41, 10,123, 10, 9,111,117,116,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, - 49, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,104, 97,114, 95,100,105,118,105,100,101, 40,102,108, -111, 97,116, 32,104, 97,114, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,104, 97,114, 41, 10,123, 10, 9,111,117, -116,104, 97,114, 32, 61, 32,104, 97,114, 47, 49, 50, 56, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,104, - 97,114, 95,109,117,108,116,105,112,108,121, 95, 99,108, 97,109,112, 40,102,108,111, 97,116, 32,104, 97,114, 44, 32,111,117,116, - 32,102,108,111, 97,116, 32,111,117,116,104, 97,114, 41, 10,123, 10, 9,104, 97,114, 32, 42, 61, 32, 49, 50, 56, 46, 48, 59, 10, - 10, 9,105,102, 40,104, 97,114, 32, 60, 32, 49, 46, 48, 41, 32,111,117,116,104, 97,114, 32, 61, 32, 49, 46, 48, 59, 10, 9,101, -108,115,101, 32,105,102, 40,104, 97,114, 32, 62, 32, 53, 49, 49, 46, 48, 41, 32,111,117,116,104, 97,114, 32, 61, 32, 53, 49, 49, - 46, 48, 59, 10, 9,101,108,115,101, 32,111,117,116,104, 97,114, 32, 61, 32,104, 97,114, 59, 10,125, 10, 10,118,111,105,100, 32, -109,116,101,120, 95, 97,108,112,104, 97, 95,102,114,111,109, 95, 99,111,108, 40,118,101, 99, 52, 32, 99,111,108, 44, 32,111,117, -116, 32,102,108,111, 97,116, 32, 97,108,112,104, 97, 41, 10,123, 10, 9, 97,108,112,104, 97, 32, 61, 32, 99,111,108, 46, 97, 59, - 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95, 97,108,112,104, 97, 95,116,111, 95, 99,111,108, 40,118,101, 99, 52, 32, - 99,111,108, 44, 32,102,108,111, 97,116, 32, 97,108,112,104, 97, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111, -108, 41, 10,123, 10, 9,111,117,116, 99,111,108, 32, 61, 32,118,101, 99, 52, 40, 99,111,108, 46,114,103, 98, 44, 32, 97,108,112, -104, 97, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98,116,111,105,110,116, 40,118,101, 99, 52, 32, -114,103, 98, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110,116,101,110,115,105,116,121, 41, 10,123, 10, 9,105,110,116, -101,110,115,105,116,121, 32, 61, 32,100,111,116, 40,118,101, 99, 51, 40, 48, 46, 51, 53, 44, 32, 48, 46, 52, 53, 44, 32, 48, 46, - 50, 41, 44, 32,114,103, 98, 46,114,103, 98, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, - 95,105,110,118,101,114,116, 40,102,108,111, 97,116, 32,105,110,118, 97,108,117,101, 44, 32,111,117,116, 32,102,108,111, 97,116, - 32,111,117,116,118, 97,108,117,101, 41, 10,123, 10, 9,111,117,116,118, 97,108,117,101, 32, 61, 32, 49, 46, 48, 32, 45, 32,105, -110,118, 97,108,117,101, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,105,110,118,101,114,116, 40, -118,101, 99, 52, 32,105,110,114,103, 98, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116,114,103, 98, 41, 10,123, 10, 9, -111,117,116,114,103, 98, 32, 61, 32,118,101, 99, 52, 40,118,101, 99, 51, 40, 49, 46, 48, 41, 32, 45, 32,105,110,114,103, 98, 46, -114,103, 98, 44, 32,105,110,114,103, 98, 46, 97, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117, -101, 95,115,116,101,110, 99,105,108, 40,102,108,111, 97,116, 32,115,116,101,110, 99,105,108, 44, 32,102,108,111, 97,116, 32,105, -110,116,101,110,115,105,116,121, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,115,116,101,110, 99,105,108, 44, 32, -111,117,116, 32,102,108,111, 97,116, 32,111,117,116,105,110,116,101,110,115,105,116,121, 41, 10,123, 10, 9,102,108,111, 97,116, - 32,102, 97, 99,116, 32, 61, 32,105,110,116,101,110,115,105,116,121, 59, 10, 9,111,117,116,105,110,116,101,110,115,105,116,121, - 32, 61, 32,105,110,116,101,110,115,105,116,121, 42,115,116,101,110, 99,105,108, 59, 10, 9,111,117,116,115,116,101,110, 99,105, -108, 32, 61, 32,115,116,101,110, 99,105,108, 42,102, 97, 99,116, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,114, -103, 98, 95,115,116,101,110, 99,105,108, 40,102,108,111, 97,116, 32,115,116,101,110, 99,105,108, 44, 32,118,101, 99, 52, 32,114, -103, 98, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,115,116,101,110, 99,105,108, 44, 32,111,117,116, 32,118,101, - 99, 52, 32,111,117,116,114,103, 98, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,116, 32, 61, 32,114,103, 98, 46, 97, - 59, 10, 9,111,117,116,114,103, 98, 32, 61, 32,118,101, 99, 52, 40,114,103, 98, 46,114,103, 98, 44, 32,114,103, 98, 46, 97, 42, -115,116,101,110, 99,105,108, 41, 59, 10, 9,111,117,116,115,116,101,110, 99,105,108, 32, 61, 32,115,116,101,110, 99,105,108, 42, -102, 97, 99,116, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,109, 97,112,112,105,110,103, 95,111,102,115, 40,118, -101, 99, 51, 32,116,101,120, 99,111, 44, 32,118,101, 99, 51, 32,111,102,115, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117, -116,116,101,120, 99,111, 41, 10,123, 10, 9,111,117,116,116,101,120, 99,111, 32, 61, 32,116,101,120, 99,111, 32, 43, 32,111,102, -115, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,109, 97,112,112,105,110,103, 95,115,105,122,101, 40,118,101, 99, - 51, 32,116,101,120, 99,111, 44, 32,118,101, 99, 51, 32,115,105,122,101, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116, -116,101,120, 99,111, 41, 10,123, 10, 9,111,117,116,116,101,120, 99,111, 32, 61, 32,115,105,122,101, 42,116,101,120, 99,111, 59, - 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95, 50,100, 95,109, 97,112,112,105,110,103, 40,118,101, 99, 51, 32,118,101, - 99, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 41, 10,123, 10, 9,111,117,116,118,101, 99, 32, 61, 32, -118,101, 99, 51, 40,118,101, 99, 46,120,121, 42, 48, 46, 53, 32, 43, 32,118,101, 99, 50, 40, 48, 46, 53, 44, 32, 48, 46, 53, 41, - 44, 32,118,101, 99, 46,122, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,105,109, 97,103,101, 40,118,101, 99, - 51, 32,118,101, 99, 44, 32,115, 97,109,112,108,101,114, 50, 68, 32,105,109, 97, 44, 32,111,117,116, 32,102,108,111, 97,116, 32, -118, 97,108,117,101, 44, 32,111,117,116, 32,118,101, 99, 52, 32, 99,111,108,111,114, 44, 32,111,117,116, 32,118,101, 99, 51, 32, -110,111,114,109, 97,108, 41, 10,123, 10, 9, 99,111,108,111,114, 32, 61, 32,116,101,120,116,117,114,101, 50, 68, 40,105,109, 97, - 44, 32,118,101, 99, 46,120,121, 41, 59, 10, 9,118, 97,108,117,101, 32, 61, 32, 49, 46, 48, 59, 10, 9, 10, 9,110,111,114,109, - 97,108, 32, 61, 32, 50, 46, 48, 42, 40,118,101, 99, 51, 40, 99,111,108,111,114, 46,114, 44, 32, 45, 99,111,108,111,114, 46,103, - 44, 32, 99,111,108,111,114, 46, 98, 41, 32, 45, 32,118,101, 99, 51, 40, 48, 46, 53, 44, 32, 45, 48, 46, 53, 44, 32, 48, 46, 53, - 41, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,110,101,103, 97,116,101, 95,116,101,120,110,111,114,109, 97, +116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,118,101, 99, 52, 32, 99,111,108, 59, 10, 10, 9,109,105,120, + 95,118, 97,108, 40,102, 97, 99,116, 42,102, 97, 99,103, 44, 32,118,101, 99, 52, 40,111,117,116, 99,111,108, 44, 32, 49, 46, 48, + 41, 44, 32,118,101, 99, 52, 40,116,101,120, 99,111,108, 44, 32, 49, 46, 48, 41, 44, 32, 99,111,108, 41, 59, 10, 9,105,110, 99, +111,108, 46,114,103, 98, 32, 61, 32, 99,111,108, 46,114,103, 98, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,114, +103, 98, 95, 99,111,108,111,114, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111, +108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118, +101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,118,101, 99, 52, 32, 99,111,108, 59, 10, 10, 9,109,105,120, 95, 99,111, +108,111,114, 40,102, 97, 99,116, 42,102, 97, 99,103, 44, 32,118,101, 99, 52, 40,111,117,116, 99,111,108, 44, 32, 49, 46, 48, 41, + 44, 32,118,101, 99, 52, 40,116,101,120, 99,111,108, 44, 32, 49, 46, 48, 41, 44, 32, 99,111,108, 41, 59, 10, 9,105,110, 99,111, +108, 46,114,103, 98, 32, 61, 32, 99,111,108, 46,114,103, 98, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97, +108,117,101, 95,118, 97,114,115, 40,105,110,111,117,116, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, + 32,102, 97, 99,103, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,102, 97, 99,109, 41, 10,123, 10, 9,102, 97, 99,116, 32, 42, + 61, 32, 97, 98,115, 40,102, 97, 99,103, 41, 59, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,116, 59, 10, 10, + 9,105,102, 40,102, 97, 99,103, 32, 60, 32, 48, 46, 48, 41, 32,123, 10, 9, 9,102,108,111, 97,116, 32,116,109,112, 32, 61, 32, +102, 97, 99,116, 59, 10, 9, 9,102, 97, 99,116, 32, 61, 32,102, 97, 99,109, 59, 10, 9, 9,102, 97, 99,109, 32, 61, 32,116,109, +112, 59, 10, 9,125, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95, 98,108,101,110,100, 40,102, +108,111, 97,116, 32,111,117,116, 99,111,108, 44, 32,102,108,111, 97,116, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, + 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110, 99, +111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 9,109,116,101,120, 95,118, 97,108,117,101, 95,118, + 97,114,115, 40,102, 97, 99,116, 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,109, 41, 59, 10, 10, 9,105,110, 99,111,108, 32, 61, + 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 32, 43, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 59, 10,125, 10, 10,118, +111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95,109,117,108, 40,102,108,111, 97,116, 32,111,117,116, 99,111,108, 44, + 32,102,108,111, 97,116, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, + 32,102, 97, 99,103, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, + 32,102, 97, 99,109, 59, 10, 9,109,116,101,120, 95,118, 97,108,117,101, 95,118, 97,114,115, 40,102, 97, 99,116, 44, 32,102, 97, + 99,103, 44, 32,102, 97, 99,109, 41, 59, 10, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99,103, 59, 10, + 9,105,110, 99,111,108, 32, 61, 32, 40,102, 97, 99,109, 32, 43, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 41, 42,111,117, +116, 99,111,108, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95,115, 99,114,101,101,110, 40, +102,108,111, 97,116, 32,111,117,116, 99,111,108, 44, 32,102,108,111, 97,116, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97, +116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110, + 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 9,109,116,101,120, 95,118, 97,108,117,101, 95, +118, 97,114,115, 40,102, 97, 99,116, 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,109, 41, 59, 10, 10, 9,102, 97, 99,109, 32, 61, + 32, 49, 46, 48, 32, 45, 32,102, 97, 99,103, 59, 10, 9,105,110, 99,111,108, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40,102, 97, 99, +109, 32, 43, 32,102, 97, 99,116, 42, 40, 49, 46, 48, 32, 45, 32,116,101,120, 99,111,108, 41, 41, 42, 40, 49, 46, 48, 32, 45, 32, +111,117,116, 99,111,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95,115,117, 98, 40, +102,108,111, 97,116, 32,111,117,116, 99,111,108, 44, 32,102,108,111, 97,116, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97, +116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110, + 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 9,109,116,101,120, 95,118, 97,108,117,101, 95, +118, 97,114,115, 40,102, 97, 99,116, 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,109, 41, 59, 10, 10, 9,102, 97, 99,116, 32, 61, + 32, 45,102, 97, 99,116, 59, 10, 9,105,110, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 32, 43, 32,111, +117,116, 99,111,108, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95, 97,100,100, 40,102,108, +111, 97,116, 32,111,117,116, 99,111,108, 44, 32,102,108,111, 97,116, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32, +102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110, 99,111, +108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 9,109,116,101,120, 95,118, 97,108,117,101, 95,118, 97, +114,115, 40,102, 97, 99,116, 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,109, 41, 59, 10, 10, 9,102, 97, 99,116, 32, 61, 32,102, + 97, 99,116, 59, 10, 9,105,110, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 32, 43, 32,111,117,116, 99, +111,108, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95,100,105,118, 40,102,108,111, 97,116, + 32,111,117,116, 99,111,108, 44, 32,102,108,111, 97,116, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99, +116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110, 99,111,108, 41, 10, +123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 9,109,116,101,120, 95,118, 97,108,117,101, 95,118, 97,114,115, 40, +102, 97, 99,116, 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,109, 41, 59, 10, 10, 9,105,102, 40,116,101,120, 99,111,108, 32, 33, + 61, 32, 48, 46, 48, 41, 10, 9, 9,105,110, 99,111,108, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 32, 43, 32,102, + 97, 99,116, 42,111,117,116, 99,111,108, 47,116,101,120, 99,111,108, 59, 10, 9,101,108,115,101, 10, 9, 9,105,110, 99,111,108, + 32, 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95,100,105,102,102, 40, +102,108,111, 97,116, 32,111,117,116, 99,111,108, 44, 32,102,108,111, 97,116, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97, +116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110, + 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 9,109,116,101,120, 95,118, 97,108,117,101, 95, +118, 97,114,115, 40,102, 97, 99,116, 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,109, 41, 59, 10, 10, 9,105,110, 99,111,108, 32, + 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 32, 43, 32,102, 97, 99,116, 42, 97, 98,115, 40,116,101,120, 99,111,108, 32, + 45, 32,111,117,116, 99,111,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95,100, 97, +114,107, 40,102,108,111, 97,116, 32,111,117,116, 99,111,108, 44, 32,102,108,111, 97,116, 32,116,101,120, 99,111,108, 44, 32,102, +108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,102,108,111, 97,116, + 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 9,109,116,101,120, 95,118, 97,108, +117,101, 95,118, 97,114,115, 40,102, 97, 99,116, 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,109, 41, 59, 10, 10, 9,102,108,111, + 97,116, 32, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 59, 10, 9,105,102, 40, 99,111,108, 32, 60, 32, +111,117,116, 99,111,108, 41, 32,105,110, 99,111,108, 32, 61, 32, 99,111,108, 59, 32,101,108,115,101, 32,105,110, 99,111,108, 32, + 61, 32,111,117,116, 99,111,108, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95,108,105,103, +104,116, 40,102,108,111, 97,116, 32,111,117,116, 99,111,108, 44, 32,102,108,111, 97,116, 32,116,101,120, 99,111,108, 44, 32,102, +108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,102,108,111, 97,116, + 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 9,109,116,101,120, 95,118, 97,108, +117,101, 95,118, 97,114,115, 40,102, 97, 99,116, 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,109, 41, 59, 10, 10, 9,102,108,111, + 97,116, 32, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 59, 10, 9,105,102, 40, 99,111,108, 32, 62, 32, +111,117,116, 99,111,108, 41, 32,105,110, 99,111,108, 32, 61, 32, 99,111,108, 59, 32,101,108,115,101, 32,105,110, 99,111,108, 32, + 61, 32,111,117,116, 99,111,108, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95, 99,108, 97, +109,112, 95,112,111,115,105,116,105,118,101, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, + 32,111,117,116,102, 97, 99, 41, 10,123, 10, 9,111,117,116,102, 97, 99, 32, 61, 32,109, 97,120, 40,102, 97, 99, 44, 32, 48, 46, + 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95, 99,108, 97,109,112, 40,102,108,111, + 97,116, 32,102, 97, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,102, 97, 99, 41, 10,123, 10, 9,111,117,116, +102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10,125, 10, 10,118, +111,105,100, 32,109,116,101,120, 95,104, 97,114, 95,100,105,118,105,100,101, 40,102,108,111, 97,116, 32,104, 97,114, 44, 32,111, +117,116, 32,102,108,111, 97,116, 32,111,117,116,104, 97,114, 41, 10,123, 10, 9,111,117,116,104, 97,114, 32, 61, 32,104, 97,114, + 47, 49, 50, 56, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,104, 97,114, 95,109,117,108,116,105,112,108, +121, 95, 99,108, 97,109,112, 40,102,108,111, 97,116, 32,104, 97,114, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116, +104, 97,114, 41, 10,123, 10, 9,104, 97,114, 32, 42, 61, 32, 49, 50, 56, 46, 48, 59, 10, 10, 9,105,102, 40,104, 97,114, 32, 60, + 32, 49, 46, 48, 41, 32,111,117,116,104, 97,114, 32, 61, 32, 49, 46, 48, 59, 10, 9,101,108,115,101, 32,105,102, 40,104, 97,114, + 32, 62, 32, 53, 49, 49, 46, 48, 41, 32,111,117,116,104, 97,114, 32, 61, 32, 53, 49, 49, 46, 48, 59, 10, 9,101,108,115,101, 32, +111,117,116,104, 97,114, 32, 61, 32,104, 97,114, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95, 97,108,112,104, 97, + 95,102,114,111,109, 95, 99,111,108, 40,118,101, 99, 52, 32, 99,111,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32, 97,108, +112,104, 97, 41, 10,123, 10, 9, 97,108,112,104, 97, 32, 61, 32, 99,111,108, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,109, +116,101,120, 95, 97,108,112,104, 97, 95,116,111, 95, 99,111,108, 40,118,101, 99, 52, 32, 99,111,108, 44, 32,102,108,111, 97,116, + 32, 97,108,112,104, 97, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,111,117,116, 99, +111,108, 32, 61, 32,118,101, 99, 52, 40, 99,111,108, 46,114,103, 98, 44, 32, 97,108,112,104, 97, 41, 59, 10,125, 10, 10,118,111, +105,100, 32,109,116,101,120, 95,114,103, 98,116,111,105,110,116, 40,118,101, 99, 52, 32,114,103, 98, 44, 32,111,117,116, 32,102, +108,111, 97,116, 32,105,110,116,101,110,115,105,116,121, 41, 10,123, 10, 9,105,110,116,101,110,115,105,116,121, 32, 61, 32,100, +111,116, 40,118,101, 99, 51, 40, 48, 46, 51, 53, 44, 32, 48, 46, 52, 53, 44, 32, 48, 46, 50, 41, 44, 32,114,103, 98, 46,114,103, + 98, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95,105,110,118,101,114,116, 40,102,108, +111, 97,116, 32,105,110,118, 97,108,117,101, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108,117,101, 41, + 10,123, 10, 9,111,117,116,118, 97,108,117,101, 32, 61, 32, 49, 46, 48, 32, 45, 32,105,110,118, 97,108,117,101, 59, 10,125, 10, + 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,105,110,118,101,114,116, 40,118,101, 99, 52, 32,105,110,114,103, 98, + 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116,114,103, 98, 41, 10,123, 10, 9,111,117,116,114,103, 98, 32, 61, 32,118, +101, 99, 52, 40,118,101, 99, 51, 40, 49, 46, 48, 41, 32, 45, 32,105,110,114,103, 98, 46,114,103, 98, 44, 32,105,110,114,103, 98, + 46, 97, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95,115,116,101,110, 99,105,108, 40, +102,108,111, 97,116, 32,115,116,101,110, 99,105,108, 44, 32,102,108,111, 97,116, 32,105,110,116,101,110,115,105,116,121, 44, 32, +111,117,116, 32,102,108,111, 97,116, 32,111,117,116,115,116,101,110, 99,105,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32, +111,117,116,105,110,116,101,110,115,105,116,121, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,116, 32, 61, 32,105,110, +116,101,110,115,105,116,121, 59, 10, 9,111,117,116,105,110,116,101,110,115,105,116,121, 32, 61, 32,105,110,116,101,110,115,105, +116,121, 42,115,116,101,110, 99,105,108, 59, 10, 9,111,117,116,115,116,101,110, 99,105,108, 32, 61, 32,115,116,101,110, 99,105, +108, 42,102, 97, 99,116, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,115,116,101,110, 99,105,108, + 40,102,108,111, 97,116, 32,115,116,101,110, 99,105,108, 44, 32,118,101, 99, 52, 32,114,103, 98, 44, 32,111,117,116, 32,102,108, +111, 97,116, 32,111,117,116,115,116,101,110, 99,105,108, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116,114,103, 98, 41, + 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,116, 32, 61, 32,114,103, 98, 46, 97, 59, 10, 9,111,117,116,114,103, 98, 32, + 61, 32,118,101, 99, 52, 40,114,103, 98, 46,114,103, 98, 44, 32,114,103, 98, 46, 97, 42,115,116,101,110, 99,105,108, 41, 59, 10, + 9,111,117,116,115,116,101,110, 99,105,108, 32, 61, 32,115,116,101,110, 99,105,108, 42,102, 97, 99,116, 59, 10,125, 10, 10,118, +111,105,100, 32,109,116,101,120, 95,109, 97,112,112,105,110,103, 95,111,102,115, 40,118,101, 99, 51, 32,116,101,120, 99,111, 44, + 32,118,101, 99, 51, 32,111,102,115, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,116,101,120, 99,111, 41, 10,123, 10, + 9,111,117,116,116,101,120, 99,111, 32, 61, 32,116,101,120, 99,111, 32, 43, 32,111,102,115, 59, 10,125, 10, 10,118,111,105,100, + 32,109,116,101,120, 95,109, 97,112,112,105,110,103, 95,115,105,122,101, 40,118,101, 99, 51, 32,116,101,120, 99,111, 44, 32,118, +101, 99, 51, 32,115,105,122,101, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,116,101,120, 99,111, 41, 10,123, 10, 9, +111,117,116,116,101,120, 99,111, 32, 61, 32,115,105,122,101, 42,116,101,120, 99,111, 59, 10,125, 10, 10,118,111,105,100, 32,109, +116,101,120, 95, 50,100, 95,109, 97,112,112,105,110,103, 40,118,101, 99, 51, 32,118,101, 99, 44, 32,111,117,116, 32,118,101, 99, + 51, 32,111,117,116,118,101, 99, 41, 10,123, 10, 9,111,117,116,118,101, 99, 32, 61, 32,118,101, 99, 51, 40,118,101, 99, 46,120, +121, 42, 48, 46, 53, 32, 43, 32,118,101, 99, 50, 40, 48, 46, 53, 44, 32, 48, 46, 53, 41, 44, 32,118,101, 99, 46,122, 41, 59, 10, +125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,105,109, 97,103,101, 40,118,101, 99, 51, 32,116,101,120, 99,111, 44, 32,115, + 97,109,112,108,101,114, 50, 68, 32,105,109, 97, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,118, 97,108,117,101, 44, 32,111, +117,116, 32,118,101, 99, 52, 32, 99,111,108,111,114, 41, 10,123, 10, 9, 99,111,108,111,114, 32, 61, 32,116,101,120,116,117,114, +101, 50, 68, 40,105,109, 97, 44, 32,116,101,120, 99,111, 46,120,121, 41, 59, 10, 9,118, 97,108,117,101, 32, 61, 32, 49, 46, 48, + 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,110,111,114,109, 97,108, 40,118,101, 99, 51, 32,116,101,120, 99,111, + 44, 32,115, 97,109,112,108,101,114, 50, 68, 32,105,109, 97, 44, 32,111,117,116, 32,118,101, 99, 51, 32,110,111,114,109, 97,108, + 41, 10,123, 10, 32, 32, 32, 32,118,101, 99, 52, 32, 99,111,108,111,114, 32, 61, 32,116,101,120,116,117,114,101, 50, 68, 40,105, +109, 97, 44, 32,116,101,120, 99,111, 46,120,121, 41, 59, 10, 9,110,111,114,109, 97,108, 32, 61, 32, 50, 46, 48, 42, 40,118,101, + 99, 51, 40, 99,111,108,111,114, 46,114, 44, 32, 45, 99,111,108,111,114, 46,103, 44, 32, 99,111,108,111,114, 46, 98, 41, 32, 45, + 32,118,101, 99, 51, 40, 48, 46, 53, 44, 32, 45, 48, 46, 53, 44, 32, 48, 46, 53, 41, 41, 59, 10,125, 10, 10,118,111,105,100, 32, +109,116,101,120, 95, 98,117,109,112, 95,105,110,105,116, 95,118,105,101,119,115,112, 97, 99,101, 40, 32,118,101, 99, 51, 32,115, +117,114,102, 95,112,111,115, 44, 32,118,101, 99, 51, 32,115,117,114,102, 95,110,111,114,109, 44, 10, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,111,117,116, 32,118,101, 99, 51, 32,118, 82, 49, 44, 32,111,117,116, 32, +118,101, 99, 51, 32,118, 82, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,102, 68,101,116, 44, 32,111,117,116, 32,118,101, + 99, 51, 32,118, 78, 32, 41, 32, 10,123, 10, 9,118,101, 99, 51, 32,118, 83,105,103,109, 97, 83, 32, 61, 32,100, 70,100,120, 40, + 32,115,117,114,102, 95,112,111,115, 32, 41, 59, 10, 9,118,101, 99, 51, 32,118, 83,105,103,109, 97, 84, 32, 61, 32,100, 70,100, +121, 40, 32,115,117,114,102, 95,112,111,115, 32, 41, 59, 10, 9,118, 78, 32, 61, 32,115,117,114,102, 95,110,111,114,109, 59, 32, + 47, 42, 32,110,111,114,109, 97,108,105,122,101,100, 32,105,110,116,101,114,112,111,108, 97,116,101,100, 32,118,101,114,116,101, +120, 32,110,111,114,109, 97,108, 32, 42, 47, 10, 9, 10, 9,118, 82, 49, 32, 61, 32, 99,114,111,115,115, 40, 32,118, 83,105,103, +109, 97, 84, 32, 44, 32,118, 78, 32, 41, 59, 10, 9,118, 82, 50, 32, 61, 32, 99,114,111,115,115, 40, 32,118, 78, 32, 44, 32,118, + 83,105,103,109, 97, 83, 32, 41, 32, 59, 10, 9,102, 68,101,116, 32, 61, 32,100,111,116, 32, 40, 32,118, 83,105,103,109, 97, 83, + 32, 44, 32,118, 82, 49, 32, 41, 59, 10,125, 10, 10, 47, 42, 42, 32,104,101,108,112,101,114, 32,109,101,116,104,111,100, 32,116, +111, 32,101,120,116,114, 97, 99,116, 32,116,104,101, 32,117,112,112,101,114, 32,108,101,102,116, 32, 51,120, 51, 32,109, 97,116, +114,105,120, 32,102,114,111,109, 32, 97, 32, 52,120, 52, 32,109, 97,116,114,105,120, 32, 42, 47, 10,109, 97,116, 51, 32,116,111, + 95,109, 97,116, 51, 40,109, 97,116, 52, 32,109, 52, 41, 10,123, 10, 9,109, 97,116, 51, 32,109, 51, 59, 10, 9,109, 51, 91, 48, + 93, 32, 61, 32,109, 52, 91, 48, 93, 46,120,121,122, 59, 10, 9,109, 51, 91, 49, 93, 32, 61, 32,109, 52, 91, 49, 93, 46,120,121, +122, 59, 10, 9,109, 51, 91, 50, 93, 32, 61, 32,109, 52, 91, 50, 93, 46,120,121,122, 59, 10, 9,114,101,116,117,114,110, 32,109, + 51, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95, 98,117,109,112, 95,105,110,105,116, 95,111, 98,106,115,112, 97, + 99,101, 40, 32,118,101, 99, 51, 32,115,117,114,102, 95,112,111,115, 44, 32,118,101, 99, 51, 32,115,117,114,102, 95,110,111,114, +109, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32,109, 97,116, 52, 32,109, 86,105,101,119, 44, 32,109, 97,116, 52, 32,109, 86,105,101,119, 73,110,118, 44, 32,109, 97,116, 52, + 32,109, 79, 98,106, 44, 32,109, 97,116, 52, 32,109, 79, 98,106, 73,110,118, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,111,117,116, 32,118,101, 99, 51, 32,118, 82, 49, 44, + 32,111,117,116, 32,118,101, 99, 51, 32,118, 82, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,102, 68,101,116, 44, 32,111, +117,116, 32,118,101, 99, 51, 32,118, 78, 32, 41, 32, 10,123, 10, 9,109, 97,116, 51, 32,111, 98,106, 50,118,105,101,119, 32, 61, + 32,116,111, 95,109, 97,116, 51, 40,109, 86,105,101,119, 32, 42, 32,109, 79, 98,106, 41, 59, 10, 9,109, 97,116, 51, 32,118,105, +101,119, 50,111, 98,106, 32, 61, 32,116,111, 95,109, 97,116, 51, 40,109, 79, 98,106, 73,110,118, 32, 42, 32,109, 86,105,101,119, + 73,110,118, 41, 59, 10, 9, 10, 9,118,101, 99, 51, 32,118, 83,105,103,109, 97, 83, 32, 61, 32,118,105,101,119, 50,111, 98,106, + 32, 42, 32,100, 70,100,120, 40, 32,115,117,114,102, 95,112,111,115, 32, 41, 59, 10, 9,118,101, 99, 51, 32,118, 83,105,103,109, + 97, 84, 32, 61, 32,118,105,101,119, 50,111, 98,106, 32, 42, 32,100, 70,100,121, 40, 32,115,117,114,102, 95,112,111,115, 32, 41, + 59, 10, 9,118, 78, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40, 32,115,117,114,102, 95,110,111,114,109, 32, 42, 32,111, + 98,106, 50,118,105,101,119, 32, 41, 59, 10, 10, 9,118, 82, 49, 32, 61, 32, 99,114,111,115,115, 40, 32,118, 83,105,103,109, 97, + 84, 32, 44, 32,118, 78, 32, 41, 59, 10, 9,118, 82, 50, 32, 61, 32, 99,114,111,115,115, 40, 32,118, 78, 32, 44, 32,118, 83,105, +103,109, 97, 83, 32, 41, 32, 59, 10, 9,102, 68,101,116, 32, 61, 32,100,111,116, 32, 40, 32,118, 83,105,103,109, 97, 83, 32, 44, + 32,118, 82, 49, 32, 41, 59, 10, 9, 10, 9, 9, 47, 42, 32,116,114, 97,110,115,102,111,114,109, 32, 98, 97, 99,107, 32, 42, 47, + 10, 9,118, 82, 49, 32, 61, 32,118, 82, 49, 32, 42, 32,118,105,101,119, 50,111, 98,106, 59, 10, 9,118, 82, 50, 32, 61, 32,118, + 82, 50, 32, 42, 32,118,105,101,119, 50,111, 98,106, 59, 10, 9,118, 78, 32, 61, 32,118, 78, 32, 42, 32,118,105,101,119, 50,111, + 98,106, 59, 10, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95, 98,117,109,112, 95,116, 97,112, 51, 40, 32,118,101, 99, + 51, 32,116,101,120, 99,111, 44, 32,115, 97,109,112,108,101,114, 50, 68, 32,105,109, 97, 44, 32,102,108,111, 97,116, 32,104, 83, + 99, 97,108,101, 44, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,111,117,116, 32, +102,108,111, 97,116, 32,100, 66,115, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,100, 66,116, 32, 41, 32, 10,123, 10, 9,118, +101, 99, 50, 32, 83, 84,108,108, 32, 61, 32,116,101,120, 99,111, 46,120,121, 59, 10, 9,118,101, 99, 50, 32, 83, 84,108,114, 32, + 61, 32,116,101,120, 99,111, 46,120,121, 32, 43, 32,100, 70,100,120, 40,116,101,120, 99,111, 46,120,121, 41, 32, 59, 10, 9,118, +101, 99, 50, 32, 83, 84,117,108, 32, 61, 32,116,101,120, 99,111, 46,120,121, 32, 43, 32,100, 70,100,121, 40,116,101,120, 99,111, + 46,120,121, 41, 32, 59, 10, 9, 10, 9,102,108,111, 97,116, 32, 72,108,108, 44, 72,108,114, 44, 72,117,108, 59, 10, 9,114,103, + 98,116,111, 98,119, 40, 32,116,101,120,116,117,114,101, 50, 68, 40,105,109, 97, 44, 32, 83, 84,108,108, 41, 44, 32, 72,108,108, + 32, 41, 59, 10, 9,114,103, 98,116,111, 98,119, 40, 32,116,101,120,116,117,114,101, 50, 68, 40,105,109, 97, 44, 32, 83, 84,108, +114, 41, 44, 32, 72,108,114, 32, 41, 59, 10, 9,114,103, 98,116,111, 98,119, 40, 32,116,101,120,116,117,114,101, 50, 68, 40,105, +109, 97, 44, 32, 83, 84,117,108, 41, 44, 32, 72,117,108, 32, 41, 59, 10, 9, 10, 9,100, 66,115, 32, 61, 32,104, 83, 99, 97,108, +101, 32, 42, 32, 40, 72,108,114, 32, 45, 32, 72,108,108, 41, 59, 10, 9,100, 66,116, 32, 61, 32,104, 83, 99, 97,108,101, 32, 42, + 32, 40, 72,117,108, 32, 45, 32, 72,108,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95, 98,117,109,112, 95, +116, 97,112, 53, 40, 32,118,101, 99, 51, 32,116,101,120, 99,111, 44, 32,115, 97,109,112,108,101,114, 50, 68, 32,105,109, 97, 44, + 32,102,108,111, 97,116, 32,104, 83, 99, 97,108,101, 44, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32,111,117,116, 32,102,108,111, 97,116, 32,100, 66,115, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,100, 66, +116, 32, 41, 32, 10,123, 10, 9,118,101, 99, 50, 32, 84,101,120, 68,120, 32, 61, 32,100, 70,100,120, 40,116,101,120, 99,111, 46, +120,121, 41, 59, 10, 9,118,101, 99, 50, 32, 84,101,120, 68,121, 32, 61, 32,100, 70,100,121, 40,116,101,120, 99,111, 46,120,121, + 41, 59, 10, 10, 9,118,101, 99, 50, 32, 83, 84, 99, 32, 61, 32,116,101,120, 99,111, 46,120,121, 59, 10, 9,118,101, 99, 50, 32, + 83, 84,108, 32, 61, 32,116,101,120, 99,111, 46,120,121, 32, 45, 32, 48, 46, 53, 32, 42, 32, 84,101,120, 68,120, 32, 59, 10, 9, +118,101, 99, 50, 32, 83, 84,114, 32, 61, 32,116,101,120, 99,111, 46,120,121, 32, 43, 32, 48, 46, 53, 32, 42, 32, 84,101,120, 68, +120, 32, 59, 10, 9,118,101, 99, 50, 32, 83, 84,100, 32, 61, 32,116,101,120, 99,111, 46,120,121, 32, 45, 32, 48, 46, 53, 32, 42, + 32, 84,101,120, 68,121, 32, 59, 10, 9,118,101, 99, 50, 32, 83, 84,117, 32, 61, 32,116,101,120, 99,111, 46,120,121, 32, 43, 32, + 48, 46, 53, 32, 42, 32, 84,101,120, 68,121, 32, 59, 10, 9, 10, 9,102,108,111, 97,116, 32, 72, 99, 44, 72,108, 44, 72,114, 44, + 72,100, 44, 72,117, 59, 10, 9,114,103, 98,116,111, 98,119, 40, 32,116,101,120,116,117,114,101, 50, 68, 40,105,109, 97, 44, 32, + 83, 84, 99, 41, 44, 32, 72, 99, 32, 41, 59, 10, 9,114,103, 98,116,111, 98,119, 40, 32,116,101,120,116,117,114,101, 50, 68, 40, +105,109, 97, 44, 32, 83, 84,108, 41, 44, 32, 72,108, 32, 41, 59, 10, 9,114,103, 98,116,111, 98,119, 40, 32,116,101,120,116,117, +114,101, 50, 68, 40,105,109, 97, 44, 32, 83, 84,114, 41, 44, 32, 72,114, 32, 41, 59, 10, 9,114,103, 98,116,111, 98,119, 40, 32, +116,101,120,116,117,114,101, 50, 68, 40,105,109, 97, 44, 32, 83, 84,100, 41, 44, 32, 72,100, 32, 41, 59, 10, 9,114,103, 98,116, +111, 98,119, 40, 32,116,101,120,116,117,114,101, 50, 68, 40,105,109, 97, 44, 32, 83, 84,117, 41, 44, 32, 72,117, 32, 41, 59, 10, + 9, 10, 9,100, 66,115, 32, 61, 32,104, 83, 99, 97,108,101, 32, 42, 32, 40, 72,114, 32, 45, 32, 72,108, 41, 59, 10, 9,100, 66, +116, 32, 61, 32,104, 83, 99, 97,108,101, 32, 42, 32, 40, 72,117, 32, 45, 32, 72,100, 41, 59, 10,125, 10, 10,118,111,105,100, 32, +109,116,101,120, 95, 98,117,109,112, 95, 97,112,112,108,121, 40, 32,102,108,111, 97,116, 32,102, 68,101,116, 44, 32,102,108,111, + 97,116, 32,100, 66,115, 44, 32,102,108,111, 97,116, 32,100, 66,116, 44, 32,118,101, 99, 51, 32,118, 82, 49, 44, 32,118,101, 99, + 51, 32,118, 82, 50, 44, 32,118,101, 99, 51, 32,118, 78, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32,111,117,116, 32,118,101, 99, 51, 32,112,101,114,116,117,114, 98,101,100, 95,110,111,114,109, 32, 41, 32, + 10,123, 10, 9,118,101, 99, 51, 32,118, 83,117,114,102, 71,114, 97,100, 32, 61, 32,115,105,103,110, 40,102, 68,101,116, 41, 32, + 42, 32, 40, 32,100, 66,115, 32, 42, 32,118, 82, 49, 32, 43, 32,100, 66,116, 32, 42, 32,118, 82, 50, 32, 41, 59, 10, 9,112,101, +114,116,117,114, 98,101,100, 95,110,111,114,109, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40, 32, 97, 98,115, 40,102, 68, +101,116, 41, 32, 42, 32,118, 78, 32, 45, 32,118, 83,117,114,102, 71,114, 97,100, 32, 41, 59, 10, 9, 10,125, 10, 10,118,111,105, +100, 32,109,116,101,120, 95, 98,117,109,112, 95, 97,112,112,108,121, 95,116,101,120,115,112, 97, 99,101, 40, 32,102,108,111, 97, +116, 32,102, 68,101,116, 44, 32,102,108,111, 97,116, 32,100, 66,115, 44, 32,102,108,111, 97,116, 32,100, 66,116, 44, 32,118,101, + 99, 51, 32,118, 82, 49, 44, 32,118,101, 99, 51, 32,118, 82, 50, 44, 32,118,101, 99, 51, 32,118, 78, 44, 10, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115, 97,109,112,108,101, +114, 50, 68, 32,105,109, 97, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111, 44, 32,102,108,111, 97,116, 32,105,109, 97, 95,120, + 44, 32,102,108,111, 97,116, 32,105,109, 97, 95,121, 44, 32,111,117,116, 32,118,101, 99, 51, 32,112,101,114,116,117,114, 98,101, +100, 95,110,111,114,109, 32, 41, 32, 10,123, 10, 9,118,101, 99, 50, 32, 84,101,120, 68,120, 32, 61, 32,100, 70,100,120, 40,116, +101,120, 99,111, 46,120,121, 41, 59, 10, 9,118,101, 99, 50, 32, 84,101,120, 68,121, 32, 61, 32,100, 70,100,121, 40,116,101,120, + 99,111, 46,120,121, 41, 59, 10, 10, 9,118,101, 99, 51, 32,118, 83,117,114,102, 71,114, 97,100, 32, 61, 32,115,105,103,110, 40, +102, 68,101,116, 41, 32, 42, 32, 40, 32, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,100, 66,115, 32, 47, 32,108,101, +110,103,116,104, 40, 32,118,101, 99, 50, 40,105,109, 97, 95,120, 42, 84,101,120, 68,120, 46,120, 44, 32,105,109, 97, 95,121, 42, + 84,101,120, 68,120, 46,121, 41, 32, 41, 32, 42, 32,110,111,114,109, 97,108,105,122,101, 40,118, 82, 49, 41, 32, 43, 32, 10, 9, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,100, 66,116, 32, 47, 32,108,101,110,103,116,104, 40, 32,118,101, 99, 50, 40,105, +109, 97, 95,120, 42, 84,101,120, 68,121, 46,120, 44, 32,105,109, 97, 95,121, 42, 84,101,120, 68,121, 46,121, 41, 32, 41, 32, 42, + 32,110,111,114,109, 97,108,105,122,101, 40,118, 82, 50, 41, 32, 41, 59, 10, 9,112,101,114,116,117,114, 98,101,100, 95,110,111, +114,109, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40, 32,118, 78, 32, 45, 32,118, 83,117,114,102, 71,114, 97,100, 32, 41, + 59, 10, 9, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,110,101,103, 97,116,101, 95,116,101,120,110,111,114,109, 97, 108, 40,118,101, 99, 51, 32,110,111,114,109, 97,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,110,111,114,109, 97, 108, 41, 10,123, 10, 9,111,117,116,110,111,114,109, 97,108, 32, 61, 32,118,101, 99, 51, 40, 45,110,111,114,109, 97,108, 46,120, 44, 32, 45,110,111,114,109, 97,108, 46,121, 44, 32,110,111,114,109, 97,108, 46,122, 41, 59, 10,125, 10, 10,118,111,105,100, 32, diff --git a/source/blender/ikplugin/Makefile b/source/blender/ikplugin/Makefile deleted file mode 100644 index 28726586cc8..00000000000 --- a/source/blender/ikplugin/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Bounces make to subdirectories. - -SOURCEDIR = source/blender/ikplugin -DIRS = intern - -include nan_subdirs.mk diff --git a/source/blender/ikplugin/intern/Makefile b/source/blender/ikplugin/intern/Makefile deleted file mode 100644 index 12e2366b28e..00000000000 --- a/source/blender/ikplugin/intern/Makefile +++ /dev/null @@ -1,54 +0,0 @@ -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = ikplugin -DIR = $(OCGDIR)/blender/ikplugin - -include nan_compile.mk - -CFLAGS += -DWITH_IK_ITASC -CPPFLAGS += -DWITH_IK_ITASC - -CFLAGS += $(LEVEL_1_C_WARNINGS) -CFLAGS += -I$(NAN_GUARDEDALLOC)/include -CFLAGS += -I../../makesdna -CFLAGS += -I../../blenkernel -CFLAGS += -I../../blenlib -CFLAGS += -I../../include -CFLAGS += -I../../../../intern/itasc -CFLAGS += -I../../../../extern/Eigen2 -CFLAGS += -I.. - -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I$(NAN_IKSOLVER)/include -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../include -CPPFLAGS += -I../../../../intern/itasc -CPPFLAGS += -I../../../../extern/Eigen2 -CPPFLAGS += -I.. diff --git a/source/blender/imbuf/CMakeLists.txt b/source/blender/imbuf/CMakeLists.txt index c86e786ba1e..f007305e148 100644 --- a/source/blender/imbuf/CMakeLists.txt +++ b/source/blender/imbuf/CMakeLists.txt @@ -32,9 +32,9 @@ set(INC ../makesdna ../../../intern/memutil ../../../intern/guardedalloc - ${JPEG_INC} - ${PNG_INC} - ${ZLIB_INC} + ${JPEG_INCLUDE_DIR} + ${PNG_INCLUDE_DIR} + ${ZLIB_INCLUDE_DIRS} ) set(SRC diff --git a/source/blender/imbuf/Makefile b/source/blender/imbuf/Makefile deleted file mode 100644 index 78eea89173f..00000000000 --- a/source/blender/imbuf/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Bounces make to subdirectories. - -SOURCEDIR = source/blender/imbuf -DIRS = intern - -include nan_subdirs.mk diff --git a/source/blender/imbuf/intern/Makefile b/source/blender/imbuf/intern/Makefile deleted file mode 100644 index 8e7272100b9..00000000000 --- a/source/blender/imbuf/intern/Makefile +++ /dev/null @@ -1,100 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = imbuf -DIR = $(OCGDIR)/blender/imbuf -SOURCEDIR = source/blender/imbuf/intern - -include nan_subdirs.mk -include nan_compile.mk -include nan_definitions.mk - -DIRS = - -ifeq ($(WITH_CINEON), true) - DIRS += cineon - CPPFLAGS += -DWITH_CINEON -endif - -ifeq ($(WITH_OPENEXR), true) - DIRS += openexr - CFLAGS += -DWITH_OPENEXR -endif - -ifeq ($(WITH_DDS), true) - DIRS += dds - CPPFLAGS += -DWITH_DDS -endif - -ifeq ($(WITH_OPENJPEG), true) - ifndef BF_OPENJPEG_INC - CFLAGS += -DWITH_OPENJPEG -I../../../../extern/libopenjpeg - else - CFLAGS += -DWITH_OPENJPEG -I$(BF_OPENJPEG_INC) - endif -endif - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_JPEG)/include -CPPFLAGS += -I$(NAN_PNG)/include -CPPFLAGS += -I$(NAN_ZLIB)/include -CPPFLAGS += -I../../include -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../avi -CPPFLAGS += -I../../quicktime -# path to the guarded memory allocator -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I$(NAN_MEMUTIL)/include -# This is not really needed, but until /include is cleaned, it must be -# there for proper compilation. -# - No, it is also needed in antialias, for listbase (nzc) -CPPFLAGS += -I../../makesdna -# external interface of this module -CPPFLAGS += -I.. - -ifeq ($(WITH_QUICKTIME), true) - CPPFLAGS += -DWITH_QUICKTIME -endif - -ifeq ($(WITH_FFMPEG), true) - CPPFLAGS += -DWITH_FFMPEG - CPPFLAGS += $(NAN_FFMPEGCFLAGS) -endif - -ifeq ($(WITH_TIFF), true) - CPPFLAGS += -DWITH_TIFF - CPPFLAGS += -I$(NAN_TIFF)/include -endif - -ifeq ($(WITH_HDR), true) - CPPFLAGS += -DWITH_HDR -endif diff --git a/source/blender/imbuf/intern/cineon/Makefile b/source/blender/imbuf/intern/cineon/Makefile deleted file mode 100644 index 6e940d530a9..00000000000 --- a/source/blender/imbuf/intern/cineon/Makefile +++ /dev/null @@ -1,57 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = cineon -DIR = $(OCGDIR)/blender/imbuf/cineon -SOURCEDIR = source/blender/imbuf/intern/cineon - -include nan_compile.mk -include nan_definitions.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_JPEG)/include -CPPFLAGS += -I$(NAN_PNG)/include -CPPFLAGS += -I$(NAN_ZLIB)/include -CPPFLAGS += -I$(NAN_TIFF)/include -CPPFLAGS += -I../../../include -CPPFLAGS += -I../../../blenkernel -CPPFLAGS += -I../../../blenlib -CPPFLAGS += -I../../../avi -CPPFLAGS += -I../../../quicktime -# path to the guarded memory allocator -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I$(NAN_MEMUTIL)/include -# This is not really needed, but until /include is cleaned, it must be -# there for proper compilation. -# - No, it is also needed in antialias, for listbase (nzc) -CPPFLAGS += -I../../../makesdna -# external interface of this module -CPPFLAGS += -I../.. diff --git a/source/blender/imbuf/intern/dds/Makefile b/source/blender/imbuf/intern/dds/Makefile deleted file mode 100644 index d4f04382899..00000000000 --- a/source/blender/imbuf/intern/dds/Makefile +++ /dev/null @@ -1,60 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = dds -DIR = $(OCGDIR)/blender/imbuf/dds -SOURCEDIR = source/blender/imbuf/intern/dds - -include nan_compile.mk -include nan_definitions.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_JPEG)/include -CPPFLAGS += -I$(NAN_PNG)/include -CPPFLAGS += -I$(NAN_ZLIB)/include -CPPFLAGS += -I$(NAN_TIFF)/include -CPPFLAGS += -I../../../include -CPPFLAGS += -I../../../blenkernel -CPPFLAGS += -I../../../blenlib -CPPFLAGS += -I../../../avi -CPPFLAGS += -I../../../quicktime -# path to the guarded memory allocator -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I$(NAN_MEMUTIL)/include -# This is not really needed, but until /include is cleaned, it must be -# there for proper compilation. -# - No, it is also needed in antialias, for listbase (nzc) -CPPFLAGS += -I../../../makesdna -# external interface of this module -CPPFLAGS += -I../.. -CPPFLAGS += -I.. -CPPFLAGS += -I. -CPPFLAGS += -DWITH_DDS diff --git a/source/blender/imbuf/intern/openexr/Makefile b/source/blender/imbuf/intern/openexr/Makefile deleted file mode 100644 index 820b2aeb003..00000000000 --- a/source/blender/imbuf/intern/openexr/Makefile +++ /dev/null @@ -1,48 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): Gernot Ziegler <gz@lysator.liu.se> -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = openexr -DIR = $(OCGDIR)/blender/imbuf/openexr - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -# If compiling the API, WITH_OPENEXR must be set. -CPPFLAGS += -DWITH_OPENEXR - -CPPFLAGS += -I../../../makesdna -CPPFLAGS += -I../../../blenkernel -CPPFLAGS += -I../../../blenlib -CPPFLAGS += -I../../../imbuf -CPPFLAGS += -I../../../imbuf/intern -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += $(NAN_OPENEXR_INC) -CPPFLAGS += -I. diff --git a/source/blender/imbuf/intern/openexr/openexr_api.cpp b/source/blender/imbuf/intern/openexr/openexr_api.cpp index 25afdf95f05..7f334a9f1ad 100644 --- a/source/blender/imbuf/intern/openexr/openexr_api.cpp +++ b/source/blender/imbuf/intern/openexr/openexr_api.cpp @@ -28,6 +28,7 @@ #include <stdlib.h> #include <stdio.h> +#include <stddef.h> #include <string> diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index e7302fff6df..97b22cb9324 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -497,6 +497,7 @@ typedef struct GameData { #define GAME_GLSL_NO_EXTRA_TEX (1 << 11) #define GAME_IGNORE_DEPRECATION_WARNINGS (1 << 12) #define GAME_ENABLE_ANIMATION_RECORD (1 << 13) +#define GAME_SHOW_MOUSE (1 << 14) /* GameData.matmode */ #define GAME_MAT_TEXFACE 0 diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h index 8c681dc87b7..9238f52a615 100644 --- a/source/blender/makesdna/DNA_space_types.h +++ b/source/blender/makesdna/DNA_space_types.h @@ -698,7 +698,7 @@ enum FileSortTypeE { #define EDITING (1<<0) #define ACTIVEFILE (1<<1) #define BLENDERFILE (1<<2) -#define PSXFILE (1<<3) +#define BLENDERFILE_BACKUP (1<<3) #define IMAGEFILE (1<<4) #define MOVIEFILE (1<<5) #define PYSCRIPTFILE (1<<6) diff --git a/source/blender/makesdna/DNA_texture_types.h b/source/blender/makesdna/DNA_texture_types.h index 4d11890f5a5..41eebca821c 100644 --- a/source/blender/makesdna/DNA_texture_types.h +++ b/source/blender/makesdna/DNA_texture_types.h @@ -454,7 +454,11 @@ typedef struct TexMapping { #define MTEX_VIEWSPACE 16 #define MTEX_DUPLI_MAPTO 32 #define MTEX_OB_DUPLI_ORIG 64 -#define MTEX_NEW_BUMP 128 +#define MTEX_COMPAT_BUMP 128 +#define MTEX_3TAP_BUMP 256 +#define MTEX_5TAP_BUMP 512 +#define MTEX_BUMP_OBJECTSPACE 1024 +#define MTEX_BUMP_TEXTURESPACE 2048 /* blendtype */ #define MTEX_BLEND 0 diff --git a/source/blender/makesdna/Makefile b/source/blender/makesdna/Makefile deleted file mode 100644 index f83a6288e8d..00000000000 --- a/source/blender/makesdna/Makefile +++ /dev/null @@ -1,39 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# -# This module does not build normal .o's, but a DNA.c file, to be -# compiled with the rest of the sources. To speed things up a little, -# the compilation is done here. -# -# Bounces make to subdirectories. - -SOURCEDIR = source/blender/makesdna -DIRS = intern - -include nan_subdirs.mk diff --git a/source/blender/makesdna/intern/Makefile b/source/blender/makesdna/intern/Makefile deleted file mode 100644 index 55b0c42acda..00000000000 --- a/source/blender/makesdna/intern/Makefile +++ /dev/null @@ -1,87 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = dna -DIR = $(OCGDIR)/blender/makesdna -CSRCS = DNA.c $(wildcard dna_*.c) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(OPENGL_HEADERS) -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I.. - -ifeq ($(OS),windows) - # Windows needs these extra libs because of winstuff... It is not - # _really_ needed, but it is the easiest fix for now. If you have - # some spare time, try to trace down the exact dep. Then again, you - # could also spend that time making the sdna system more robust. - ifneq ($(FREE_WINDOWS),true) - WINLIBS = kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib - WINLIBS += advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib - WINLIBS += winmm.lib opengl32.lib glu32.lib largeint.lib - WINLIBS += /link /nodefaultlib:libc - else - LDFLAGS += -mwindows -mno-cygwin - endif -endif - -ifeq ($(OS), darwin) - LDFLAGS += -arch $(MACOSX_ARCHITECTURE) #-isysroot $(MACOSX_SDK) -mmacosx-version-min=$(MACOSX_MIN_VERS) -endif - -clean:: - @$(RM) $(DIR)/makesdna* $(DIR)/DNA.c - @$(RM) $(DIR)/debug/makesdna* $(DIR)/debug/DNA.c - -# TODO include right .mk for ldflags - -# A small note: we do not use the debug version of the alloc lib. That -# is done quite intentionally. If there is a bug in that lib, it needs -# to be fixed by the module maintainer. -DNAOBJS = $(filter-out %DNA.o, $(OBJS)) - -$(DIR)/$(DEBUG_DIR)makesdna: $(DNAOBJS) $(DIR)/$(DEBUG_DIR)makesdna.o $(NAN_GUARDEDALLOC)/lib/libguardedalloc.a - $(CC) $(LDFLAGS) -o $@ $^ - -$(DIR)/$(DEBUG_DIR)DNA.c: $(DIR)/$(DEBUG_DIR)makesdna - ifeq ($(OS),windows) - $(SRCHOME)/tools/cygwin/cl_wrapper.pl - $(DIR)/$(DEBUG_DIR)makesdna \ - $(DIR)/$(DEBUG_DIR)DNA.c - else - $(DIR)/$(DEBUG_DIR)makesdna $(DIR)/$(DEBUG_DIR)DNA.c - endif - -$(DIR)/$(DEBUG_DIR)makesdna.o: makesdna.c $(wildcard ../*.h) - $(CC) -c $(CFLAGS) $(CPPFLAGS) makesdna.c -o $@ - diff --git a/source/blender/makesrna/Makefile b/source/blender/makesrna/Makefile deleted file mode 100644 index 2b025949d77..00000000000 --- a/source/blender/makesrna/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# Contributor(s): Blender Foundation (2008). -# -# ***** END GPL LICENSE BLOCK ***** -# -# This module does not build normal .o's, but a RNA.c file, to be -# compiled with the rest of the sources. -# - -SOURCEDIR = source/blender/makesrna -DIRS = intern - -include nan_subdirs.mk diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h index ab8b9e124dd..7e3e2bf501c 100644 --- a/source/blender/makesrna/RNA_access.h +++ b/source/blender/makesrna/RNA_access.h @@ -634,10 +634,13 @@ int RNA_struct_idprops_register_check(StructRNA *type); PropertyRNA *RNA_struct_find_property(PointerRNA *ptr, const char *identifier); -const struct ListBase *RNA_struct_defined_properties(StructRNA *srna); + +/* lower level functions for access to type properties */ +const struct ListBase *RNA_struct_type_properties(StructRNA *srna); +PropertyRNA *RNA_struct_type_find_property(StructRNA *srna, const char *identifier); FunctionRNA *RNA_struct_find_function(PointerRNA *ptr, const char *identifier); -const struct ListBase *RNA_struct_defined_functions(StructRNA *srna); +const struct ListBase *RNA_struct_type_functions(StructRNA *srna); char *RNA_struct_name_get_alloc(PointerRNA *ptr, char *fixedbuf, int fixedlen); diff --git a/source/blender/makesrna/RNA_types.h b/source/blender/makesrna/RNA_types.h index 5acc0798e93..45f6e321d69 100644 --- a/source/blender/makesrna/RNA_types.h +++ b/source/blender/makesrna/RNA_types.h @@ -187,6 +187,12 @@ typedef enum PropertyFlag { * most common case is functions that return arrays where the array */ PROP_THICK_WRAP = 1<<23, + /* Reject values outside limits, use for python api only so far + * this is for use when silently clamping string length will give + * bad behavior later. Could also enforce this for INT's and other types. + * note: currently no support for function arguments or non utf8 paths (filepaths) */ + PROP_NEVER_CLAMP = 1<<26, + /* internal flags */ PROP_BUILTIN = 1<<7, PROP_EXPORT = 1<<8, diff --git a/source/blender/makesrna/intern/Makefile b/source/blender/makesrna/intern/Makefile deleted file mode 100644 index 2ff2c0d7eb3..00000000000 --- a/source/blender/makesrna/intern/Makefile +++ /dev/null @@ -1,159 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# Contributor(s): Blender Foundation (2008). -# -# ***** END GPL LICENSE BLOCK ***** -# - -LIBNAME = rna -DIR = $(OCGDIR)/blender/makesrna - -ALLRNA = $(wildcard rna_*.c) -DEFRNA = $(filter-out %rna_define.c, $(filter-out %rna_access.c, $(ALLRNA))) - -GENRNA = $(filter-out %_api.c, $(DEFRNA)) -GENSRCS = $(patsubst rna_%.c, rna_%_gen.c, $(GENRNA)) -GENTARGET = $(patsubst %.c, $(DIR)/$(DEBUG_DIR)%.c, $(GENSRCS)) - -MAKESRCS = $(DEFRNA) makesrna.c rna_define.c -MAKEOBJS = $(patsubst %.c, $(DIR)/$(DEBUG_DIR)%.o, $(notdir $(MAKESRCS))) - -CSRCS = $(GENSRCS) rna_access.c - -include nan_compile.mk - -ifdef NAN_DEPEND --include $(MAKESRCS:%.c=$(DIR)/$(DEBUG_DIR)%.d) -endif - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION) - -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I$(NAN_MEMUTIL)/include -CPPFLAGS += -I../../../../intern/audaspace/intern -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenfont -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../ikplugin -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../editors/include -CPPFLAGS += -I../../gpu -CPPFLAGS += -I../../render/extern/include -CPPFLAGS += -I.. -CPPFLAGS += -I. - -ifeq ($(WITH_FFMPEG),true) - CPPFLAGS += -DWITH_FFMPEG - CPPFLAGS += $(NAN_FFMPEGCFLAGS) -endif - -ifeq ($(WITH_OPENEXR), true) - CPPFLAGS += -DWITH_OPENEXR -endif - -ifeq ($(WITH_DDS), true) - CPPFLAGS += -DWITH_DDS -endif - -ifeq ($(WITH_OPENJPEG), true) - CPPFLAGS += -DWITH_OPENJPEG -endif - -ifeq ($(WITH_QUICKTIME), true) - CPPFLAGS += -DWITH_QUICKTIME -I../../quicktime -endif - -ifeq ($(WITH_SDL),true) - CPPFLAGS += -DWITH_SDL -endif - -ifeq ($(WITH_JACK),true) - CPPFLAGS += -DWITH_JACK -endif - -ifeq ($(WITH_OPENAL),true) - CPPFLAGS += -DWITH_OPENAL -endif - -ifeq ($(WITH_TIFF),true) - CPPFLAGS += -DWITH_TIFF -endif - -ifeq ($(WITH_LCMS),true) - CPPFLAGS += -DWITH_LCMS -endif - -ifeq ($(WITH_CINEON),true) - CPPFLAGS += -DWITH_CINEON -endif - -ifeq ($(WITH_HDR),true) - CPPFLAGS += -DWITH_HDR -endif - -ifeq ($(OS),windows) - # Windows needs these extra libs because of winstuff... It is not - # _really_ needed, but it is the easiest fix for now. If you have - # some spare time, try to trace down the exact dep. - ifneq ($(FREE_WINDOWS),true) - WINLIBS = kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib - WINLIBS += advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib - WINLIBS += winmm.lib opengl32.lib glu32.lib largeint.lib - WINLIBS += /link /nodefaultlib:libc - else - LDFLAGS += -mwindows -mno-cygwin - endif -endif - -ifeq ($(OS), darwin) - LDFLAGS += -arch $(MACOSX_ARCHITECTURE) #-isysroot $(MACOSX_SDK) -mmacosx-version-min=$(MACOSX_MIN_VERS) -endif - -clean:: - @$(RM) $(DIR)/makesrna* $(DIR)/rna* - @$(RM) $(DIR)/debug/makesrna* $(DIR)/debug/rna* - -# TODO include right .mk for ldflags - -# A small note: we do not use the debug version of the alloc lib. That -# is done quite intentionally. If there is a bug in that lib, it needs -# to be fixed by the module maintainer. - -$(DIR)/$(DEBUG_DIR)makesrna: $(MAKEOBJS) $(OCGDIR)/blender/makesdna/$(DEBUG_DIR)libdna.a $(NAN_GUARDEDALLOC)/lib/libguardedalloc.a - $(CC) $(LDFLAGS) -o $@ $(WINLIBS) $^ - -$(DIR)/$(DEBUG_DIR)rna_phony_gen.c: $(DIR)/$(DEBUG_DIR)makesrna - ifeq ($(OS),windows) - $(SRCHOME)/tools/cygwin/cl_wrapper.pl - $(DIR)/$(DEBUG_DIR)makesrna \ - $(DIR)/$(DEBUG_DIR) - else - $(DIR)/$(DEBUG_DIR)makesrna $(DIR)/$(DEBUG_DIR) - endif - @touch $@ - -$(GENTARGET): $(DIR)/$(DEBUG_DIR)rna_phony_gen.c - -$(DIR)/$(DEBUG_DIR)makesrna.o: makesrna.c $(wildcard rna_*.c) - $(CC) -c $(CFLAGS) $(CPPFLAGS) makesrna.c -o $@ - diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index cc2e5fc909f..e6802d03ec4 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -569,11 +569,17 @@ PropertyRNA *RNA_struct_find_nested(PointerRNA *ptr, StructRNA *srna) return prop; } -const struct ListBase *RNA_struct_defined_properties(StructRNA *srna) +/* low level direct access to type->properties, note this ignores parent classes so should be used with care */ +const struct ListBase *RNA_struct_type_properties(StructRNA *srna) { return &srna->cont.properties; } +PropertyRNA *RNA_struct_type_find_property(StructRNA *srna, const char *identifier) +{ + return BLI_findstring_ptr(&srna->cont.properties, identifier, offsetof(PropertyRNA, identifier)); +} + FunctionRNA *RNA_struct_find_function(PointerRNA *ptr, const char *identifier) { #if 1 @@ -610,7 +616,7 @@ FunctionRNA *RNA_struct_find_function(PointerRNA *ptr, const char *identifier) #endif } -const struct ListBase *RNA_struct_defined_functions(StructRNA *srna) +const struct ListBase *RNA_struct_type_functions(StructRNA *srna) { return &srna->functions; } diff --git a/source/blender/makesrna/intern/rna_actuator.c b/source/blender/makesrna/intern/rna_actuator.c index 3c71319a322..378209bb2e7 100644 --- a/source/blender/makesrna/intern/rna_actuator.c +++ b/source/blender/makesrna/intern/rna_actuator.c @@ -999,7 +999,7 @@ static void rna_def_property_actuator(BlenderRNA *brna) RNA_def_property_update(prop, NC_LOGIC, NULL); prop= RNA_def_property(srna, "value", PROP_STRING, PROP_NONE); - RNA_def_property_ui_text(prop, "Value", "The value to use, use \"\" around strings"); + RNA_def_property_ui_text(prop, "Value", "The name of the property or the value to use (use \"\" around strings)"); RNA_def_property_update(prop, NC_LOGIC, NULL); /* Copy Mode */ @@ -1700,7 +1700,7 @@ static void rna_def_parent_actuator(BlenderRNA *brna) prop= RNA_def_property(srna, "use_ghost", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_PARENT_GHOST); - RNA_def_property_ui_text(prop, "Ghost", "Make this object ghost while parented (only if not compound)"); + RNA_def_property_ui_text(prop, "Ghost", "Make this object ghost while parented"); RNA_def_property_update(prop, NC_LOGIC, NULL); } diff --git a/source/blender/makesrna/intern/rna_animation.c b/source/blender/makesrna/intern/rna_animation.c index a28017e50f6..9bed1b5cd5a 100644 --- a/source/blender/makesrna/intern/rna_animation.c +++ b/source/blender/makesrna/intern/rna_animation.c @@ -458,7 +458,7 @@ static void rna_def_keyingset_info(BlenderRNA *brna) prop= RNA_def_property(srna, "bl_idname", PROP_STRING, PROP_NONE); RNA_def_property_string_sdna(prop, NULL, "idname"); - RNA_def_property_flag(prop, PROP_REGISTER); + RNA_def_property_flag(prop, PROP_REGISTER|PROP_NEVER_CLAMP); /* Name */ prop= RNA_def_property(srna, "bl_label", PROP_STRING, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_constraint.c b/source/blender/makesrna/intern/rna_constraint.c index 112526cec46..692ebb59240 100644 --- a/source/blender/makesrna/intern/rna_constraint.c +++ b/source/blender/makesrna/intern/rna_constraint.c @@ -79,7 +79,7 @@ EnumPropertyItem space_pchan_items[] = { EnumPropertyItem space_object_items[] = { {0, "WORLD", 0, "World Space", ""}, - {1, "LOCAL", 0, "Local (Without Parent) Space", ""}, + {1, "LOCAL", 0, "Local Space", ""}, {0, NULL, 0, NULL, NULL}}; EnumPropertyItem constraint_ik_type_items[] ={ diff --git a/source/blender/makesrna/intern/rna_key.c b/source/blender/makesrna/intern/rna_key.c index d4021dc1cec..beceb66986d 100644 --- a/source/blender/makesrna/intern/rna_key.c +++ b/source/blender/makesrna/intern/rna_key.c @@ -57,6 +57,7 @@ static Key *rna_ShapeKey_find_key(ID *id) case ID_KE: return (Key*)id; case ID_LT: return ((Lattice*)id)->key; case ID_ME: return ((Mesh*)id)->key; + case ID_OB: return ob_get_key((Object*)id); default: return NULL; } } @@ -143,12 +144,9 @@ PointerRNA rna_object_shapekey_index_get(ID *id, int value) Key *key= rna_ShapeKey_find_key(id); KeyBlock *kb= NULL; PointerRNA ptr; - int a; - if(key && value < key->totkey) - for(a=0, kb=key->block.first; kb; kb=kb->next, a++) - if(a == value) - break; + if (key && value < key->totkey) + kb = BLI_findlink(&key->block, value); RNA_pointer_create(id, &RNA_ShapeKey, kb, &ptr); @@ -158,13 +156,11 @@ PointerRNA rna_object_shapekey_index_get(ID *id, int value) int rna_object_shapekey_index_set(ID *id, PointerRNA value, int current) { Key *key= rna_ShapeKey_find_key(id); - KeyBlock *kb; - int a; - if(key) - for(a=0, kb=key->block.first; kb; kb=kb->next, a++) - if(kb == value.data) - return a; + if (key) { + int a = BLI_findindex(&key->block, value.data); + if (a >= 0) return a; + } return current; } @@ -286,17 +282,17 @@ static void rna_ShapeKey_data_begin(CollectionPropertyIterator *iter, PointerRNA Curve *cu; Nurb *nu; int tot= kb->totelem, size= key->elemsize; - + if(GS(key->from->name) == ID_CU) { cu= (Curve*)key->from; nu= cu->nurb.first; - + if(nu->bezt) { tot /= 3; size *= 3; } } - + rna_iterator_array_begin(iter, (void*)kb->data, size, tot, 0, NULL); } @@ -307,15 +303,15 @@ static int rna_ShapeKey_data_length(PointerRNA *ptr) Curve *cu; Nurb *nu; int tot= kb->totelem; - + if(GS(key->from->name) == ID_CU) { cu= (Curve*)key->from; nu= cu->nurb.first; - + if(nu->bezt) tot /= 3; } - + return tot; } @@ -325,11 +321,11 @@ static PointerRNA rna_ShapeKey_data_get(CollectionPropertyIterator *iter) StructRNA *type; Curve *cu; Nurb *nu; - + if(GS(key->from->name) == ID_CU) { cu= (Curve*)key->from; nu= cu->nurb.first; - + if(nu->bezt) type= &RNA_ShapeKeyBezierPoint; else @@ -365,6 +361,82 @@ static void rna_Key_update_data(Main *bmain, Scene *scene, PointerRNA *ptr) } } +static KeyBlock *rna_ShapeKeyData_find_keyblock(Key *key, float *point) +{ + KeyBlock *kb; + + /* sanity checks */ + if (ELEM(NULL, key, point)) + return NULL; + + /* we'll need to manually search through the keyblocks and check + * if the point is somewhere in the middle of each block's data + */ + for (kb = key->block.first; kb; kb = kb->next) { + if (kb->data) { + float *start = (float *)kb->data; + float *end; + + /* easy cases first */ + if ((start == NULL) || (start > point)) { + /* there's no chance point is in array */ + continue; + } + else if (start == point) { + /* exact match - point is first in array */ + return kb; + } + + /* determine where end of array is + * - elemsize is in bytes, so use char* cast to get array in terms of bytes + */ + end = (float *)((char *)start + (key->elemsize * kb->totelem)); + + /* if point's address is less than the end, then it is somewhere between start and end, so in array */ + if (end > point) { + /* we've found the owner of the point data */ + return kb; + } + } + } + + return NULL; +} + +static int rna_ShapeKeyPoint_get_index(Key *key, KeyBlock *kb, float *point) +{ + /* if we frame the data array and point pointers as char*, then the difference between + * them will be in bytes. Thus, dividing through by key->elemsize (number of bytes per point) + * gives us the offset of point from start of array. + */ + char *start = (char *)kb->data; + char *pt = (char *)point; + + return (int)(pt - start) / key->elemsize; +} + +static char *rna_ShapeKeyPoint_path(PointerRNA *ptr) +{ + ID *id = (ID *)ptr->id.data; + Key *key = rna_ShapeKey_find_key(ptr->id.data); + KeyBlock *kb; + float *point = (float *)ptr->data; + + /* if we can get a key block, we can construct a path */ + kb = rna_ShapeKeyData_find_keyblock(key, point); + + if (kb) { + int index = rna_ShapeKeyPoint_get_index(key, kb, point); + + if (GS(id->name) == ID_KE) + return BLI_sprintfN("keys[\"%s\"].data[%d]", kb->name, index); + else + return BLI_sprintfN("shape_keys.keys[\"%s\"].data[%d]", kb->name, index); + } + else + return NULL; // XXX: there's really no way to resolve this... +} + #else static void rna_def_keydata(BlenderRNA *brna) @@ -374,6 +446,7 @@ static void rna_def_keydata(BlenderRNA *brna) srna= RNA_def_struct(brna, "ShapeKeyPoint", NULL); RNA_def_struct_ui_text(srna, "Shape Key Point", "Point in a shape key"); + RNA_def_struct_path_func(srna, "rna_ShapeKeyPoint_path"); prop= RNA_def_property(srna, "co", PROP_FLOAT, PROP_TRANSLATION); RNA_def_property_array(prop, 3); @@ -383,6 +456,7 @@ static void rna_def_keydata(BlenderRNA *brna) srna= RNA_def_struct(brna, "ShapeKeyCurvePoint", NULL); RNA_def_struct_ui_text(srna, "Shape Key Curve Point", "Point in a shape key for curves"); + RNA_def_struct_path_func(srna, "rna_ShapeKeyPoint_path"); /* there's nothing type specific here, so this is fine for now */ prop= RNA_def_property(srna, "co", PROP_FLOAT, PROP_TRANSLATION); RNA_def_property_array(prop, 3); @@ -397,6 +471,7 @@ static void rna_def_keydata(BlenderRNA *brna) srna= RNA_def_struct(brna, "ShapeKeyBezierPoint", NULL); RNA_def_struct_ui_text(srna, "Shape Key Bezier Point", "Point in a shape key for bezier curves"); + RNA_def_struct_path_func(srna, "rna_ShapeKeyPoint_path"); /* there's nothing type specific here, so this is fine for now */ prop= RNA_def_property(srna, "co", PROP_FLOAT, PROP_TRANSLATION); RNA_def_property_array(prop, 3); diff --git a/source/blender/makesrna/intern/rna_material.c b/source/blender/makesrna/intern/rna_material.c index aecb89a0fee..3d9eaa0b141 100644 --- a/source/blender/makesrna/intern/rna_material.c +++ b/source/blender/makesrna/intern/rna_material.c @@ -378,9 +378,17 @@ static void rna_def_material_mtex(BlenderRNA *brna) static EnumPropertyItem prop_bump_method_items[] = { {0, "BUMP_ORIGINAL", 0, "Original", ""}, - {MTEX_NEW_BUMP, "BUMP_IMPROVED", 0, "Improved", ""}, + {MTEX_COMPAT_BUMP, "BUMP_COMPATIBLE", 0, "Compatible", ""}, + {MTEX_3TAP_BUMP, "BUMP_DEFAULT", 0, "Default", ""}, + {MTEX_5TAP_BUMP, "BUMP_BEST_QUALITY", 0, "Best Quality", ""}, {0, NULL, 0, NULL, NULL}}; + static EnumPropertyItem prop_bump_space_items[] = { + {0, "BUMP_VIEWSPACE", 0, "ViewSpace", ""}, + {MTEX_BUMP_OBJECTSPACE, "BUMP_OBJECTSPACE", 0, "ObjectSpace", ""}, + {MTEX_BUMP_TEXTURESPACE, "BUMP_TEXTURESPACE", 0, "TextureSpace", ""}, + {0, NULL, 0, NULL, NULL}}; + srna= RNA_def_struct(brna, "MaterialTextureSlot", "TextureSlot"); RNA_def_struct_sdna(srna, "MTex"); RNA_def_struct_ui_text(srna, "Material Texture Slot", "Texture slot for textures in a Material datablock"); @@ -687,6 +695,12 @@ static void rna_def_material_mtex(BlenderRNA *brna) RNA_def_property_enum_items(prop, prop_bump_method_items); RNA_def_property_ui_text(prop, "Bump Method", "Method to use for bump mapping"); RNA_def_property_update(prop, 0, "rna_Material_update"); + + prop= RNA_def_property(srna, "bump_objectspace", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_bitflag_sdna(prop, NULL, "texflag"); + RNA_def_property_enum_items(prop, prop_bump_space_items); + RNA_def_property_ui_text(prop, "Bump Space", "Space to apply bump mapping in"); + RNA_def_property_update(prop, 0, "rna_Material_update"); } static void rna_def_material_colors(StructRNA *srna) @@ -964,7 +978,7 @@ static void rna_def_material_raytra(BlenderRNA *brna) prop= RNA_def_property(srna, "ior", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "ang"); - RNA_def_property_range(prop, 1.0f, 3.0f); + RNA_def_property_range(prop, 0.25f, 4.0f); RNA_def_property_ui_text(prop, "IOR", "Sets angular index of refraction for raytraced refraction"); RNA_def_property_update(prop, 0, "rna_Material_update"); @@ -1834,7 +1848,6 @@ void RNA_def_material(BlenderRNA *brna) } -/* curve.splines */ static void rna_def_texture_slots(BlenderRNA *brna, PropertyRNA *cprop, const char *structname, const char *structname_slots) { StructRNA *srna; @@ -1849,13 +1862,11 @@ static void rna_def_texture_slots(BlenderRNA *brna, PropertyRNA *cprop, const ch /* functions */ func= RNA_def_function(srna, "add", "rna_mtex_texture_slots_add"); - RNA_def_function_ui_description(func, "Add a number of points to this spline."); RNA_def_function_flag(func, FUNC_USE_SELF_ID|FUNC_NO_SELF|FUNC_USE_CONTEXT|FUNC_USE_REPORTS); parm= RNA_def_pointer(func, "mtex", structname, "", "The newly initialized mtex."); RNA_def_function_return(func, parm); func= RNA_def_function(srna, "create", "rna_mtex_texture_slots_create"); - RNA_def_function_ui_description(func, "Add a number of points to this spline."); RNA_def_function_flag(func, FUNC_USE_SELF_ID|FUNC_NO_SELF|FUNC_USE_CONTEXT|FUNC_USE_REPORTS); parm= RNA_def_int(func, "index", 0, 0, INT_MAX, "Index", "Slot index to initialize.", 0, INT_MAX); RNA_def_property_flag(parm, PROP_REQUIRED); @@ -1863,7 +1874,6 @@ static void rna_def_texture_slots(BlenderRNA *brna, PropertyRNA *cprop, const ch RNA_def_function_return(func, parm); func= RNA_def_function(srna, "clear", "rna_mtex_texture_slots_clear"); - RNA_def_function_ui_description(func, "Add a number of points to this spline."); RNA_def_function_flag(func, FUNC_USE_SELF_ID|FUNC_NO_SELF|FUNC_USE_CONTEXT|FUNC_USE_REPORTS); parm= RNA_def_int(func, "index", 0, 0, INT_MAX, "Index", "Slot index to clar.", 0, INT_MAX); RNA_def_property_flag(parm, PROP_REQUIRED); diff --git a/source/blender/makesrna/intern/rna_mesh.c b/source/blender/makesrna/intern/rna_mesh.c index 08065b90530..6760000c702 100644 --- a/source/blender/makesrna/intern/rna_mesh.c +++ b/source/blender/makesrna/intern/rna_mesh.c @@ -961,10 +961,29 @@ static char *rna_VertexGroupElement_path(PointerRNA *ptr) MDeformVert *dvert; int a, b; - for(a=0, dvert=me->dvert; a<me->totvert; a++, dvert++) - for(b=0; b<dvert->totweight; b++) + /* sanity check: make sure that mesh pointer is valid */ + if (me == NULL) + return NULL; + else if (GS(me->id.name) != ID_ME) { + /* if object pointer, try to resolve the object's data to mesh pointer */ + if (GS(me->id.name) == ID_OB) { + Object *ob = (Object *)me; + + if (ob->type == OB_MESH) + me = (Mesh *)ob->data; + else + return NULL; /* nothing can be done */ + } + else + return NULL; /* nothing can be done */ + } + + for(a=0, dvert=me->dvert; a<me->totvert; a++, dvert++) { + for(b=0; b<dvert->totweight; b++) { if(dw == &dvert->dw[b]) return BLI_sprintfN("vertices[%d].groups[%d]", a, b); + } + } return NULL; } diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c index d94ce58b15f..33a6856db73 100644 --- a/source/blender/makesrna/intern/rna_modifier.c +++ b/source/blender/makesrna/intern/rna_modifier.c @@ -666,7 +666,7 @@ static void rna_def_modifier_lattice(BlenderRNA *brna) prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE); RNA_def_property_string_sdna(prop, NULL, "name"); - RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name"); + RNA_def_property_ui_text(prop, "Vertex Group", "Name of Vertex Group which determines influence of modifier per point"); RNA_def_property_string_funcs(prop, NULL, NULL, "rna_LatticeModifier_vgroup_set"); RNA_def_property_update(prop, 0, "rna_Modifier_update"); } @@ -698,7 +698,7 @@ static void rna_def_modifier_curve(BlenderRNA *brna) prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE); RNA_def_property_string_sdna(prop, NULL, "name"); - RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name"); + RNA_def_property_ui_text(prop, "Vertex Group", "Name of Vertex Group which determines influence of modifier per point"); RNA_def_property_string_funcs(prop, NULL, NULL, "rna_CurveModifier_vgroup_set"); RNA_def_property_update(prop, 0, "rna_Modifier_update"); @@ -1014,7 +1014,7 @@ static void rna_def_modifier_armature(BlenderRNA *brna) prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE); RNA_def_property_string_sdna(prop, NULL, "defgrp_name"); - RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name"); + RNA_def_property_ui_text(prop, "Vertex Group", "Name of Vertex Group which determines influence of modifier per point"); RNA_def_property_string_funcs(prop, NULL, NULL, "rna_ArmatureModifier_vgroup_set"); RNA_def_property_update(prop, 0, "rna_Modifier_update"); @@ -1057,7 +1057,7 @@ static void rna_def_modifier_hook(BlenderRNA *brna) prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE); RNA_def_property_string_sdna(prop, NULL, "name"); - RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name"); + RNA_def_property_ui_text(prop, "Vertex Group", "Name of Vertex Group which determines influence of modifier per point"); RNA_def_property_string_funcs(prop, NULL, NULL, "rna_HookModifier_vgroup_set"); RNA_def_property_update(prop, 0, "rna_Modifier_update"); } @@ -1275,7 +1275,7 @@ static void rna_def_modifier_displace(BlenderRNA *brna) prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE); RNA_def_property_string_sdna(prop, NULL, "defgrp_name"); - RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name"); + RNA_def_property_ui_text(prop, "Vertex Group", "Name of Vertex Group which determines influence of modifier per point"); RNA_def_property_string_funcs(prop, NULL, NULL, "rna_DisplaceModifier_vgroup_set"); RNA_def_property_update(prop, 0, "rna_Modifier_update"); @@ -1438,7 +1438,7 @@ static void rna_def_modifier_smooth(BlenderRNA *brna) prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE); RNA_def_property_string_sdna(prop, NULL, "defgrp_name"); - RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name"); + RNA_def_property_ui_text(prop, "Vertex Group", "Name of Vertex Group which determines influence of modifier per point"); RNA_def_property_string_funcs(prop, NULL, NULL, "rna_SmoothModifier_vgroup_set"); RNA_def_property_update(prop, 0, "rna_Modifier_update"); } diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index 35e19c6b6b7..2196da32aa3 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -157,7 +157,7 @@ static void rna_Object_internal_update(Main *bmain, Scene *scene, PointerRNA *pt static void rna_Object_matrix_world_update(Main *bmain, Scene *scene, PointerRNA *ptr) { - /* dont use compat so we get pradictable rotation */ + /* dont use compat so we get predictable rotation */ object_apply_mat4(ptr->id.data, ((Object *)ptr->id.data)->obmat, FALSE, TRUE); rna_Object_internal_update(bmain, scene, ptr); } @@ -192,7 +192,7 @@ static void rna_Object_matrix_local_set(PointerRNA *ptr, const float values[16]) copy_m4_m4(ob->obmat, (float(*)[4])values); } - /* dont use compat so we get pradictable rotation */ + /* dont use compat so we get predictable rotation */ object_apply_mat4(ob, ob->obmat, FALSE, FALSE); } @@ -1675,9 +1675,9 @@ static void rna_def_object(BlenderRNA *brna) PropertyRNA *prop; static EnumPropertyItem empty_drawtype_items[] = { + {OB_PLAINAXES, "PLAIN_AXES", 0, "Plain Axes", ""}, {OB_ARROWS, "ARROWS", 0, "Arrows", ""}, {OB_SINGLE_ARROW, "SINGLE_ARROW", 0, "Single Arrow", ""}, - {OB_PLAINAXES, "PLAIN_AXES", 0, "Plain Axes", ""}, {OB_CIRCLE, "CIRCLE", 0, "Circle", ""}, {OB_CUBE, "CUBE", 0, "Cube", ""}, {OB_EMPTY_SPHERE, "SPHERE", 0, "Sphere", ""}, diff --git a/source/blender/makesrna/intern/rna_pose.c b/source/blender/makesrna/intern/rna_pose.c index 7b1a46dd6e2..709945c7891 100644 --- a/source/blender/makesrna/intern/rna_pose.c +++ b/source/blender/makesrna/intern/rna_pose.c @@ -569,7 +569,7 @@ static void rna_PoseChannel_matrix_basis_get(PointerRNA *ptr, float *values) static void rna_PoseChannel_matrix_basis_set(PointerRNA *ptr, const float *values) { bPoseChannel *pchan= (bPoseChannel*)ptr->data; - pchan_apply_mat4(pchan, (float (*)[4])values, FALSE); /* no compat for pradictable result */ + pchan_apply_mat4(pchan, (float (*)[4])values, FALSE); /* no compat for predictable result */ } #else diff --git a/source/blender/makesrna/intern/rna_render.c b/source/blender/makesrna/intern/rna_render.c index 5d1fc51a70f..6344ddca06e 100644 --- a/source/blender/makesrna/intern/rna_render.c +++ b/source/blender/makesrna/intern/rna_render.c @@ -271,7 +271,7 @@ static void rna_def_render_engine(BlenderRNA *brna) prop= RNA_def_property(srna, "bl_idname", PROP_STRING, PROP_NONE); RNA_def_property_string_sdna(prop, NULL, "type->idname"); - RNA_def_property_flag(prop, PROP_REGISTER); + RNA_def_property_flag(prop, PROP_REGISTER|PROP_NEVER_CLAMP); prop= RNA_def_property(srna, "bl_label", PROP_STRING, PROP_NONE); RNA_def_property_string_sdna(prop, NULL, "type->name"); diff --git a/source/blender/makesrna/intern/rna_rna.c b/source/blender/makesrna/intern/rna_rna.c index ec037ce59fa..d0a4647efc3 100644 --- a/source/blender/makesrna/intern/rna_rna.c +++ b/source/blender/makesrna/intern/rna_rna.c @@ -321,14 +321,15 @@ int rna_builtin_properties_lookup_string(PointerRNA *ptr, const char *key, Point return TRUE; } } + else { + for(prop=srna->cont.properties.first; prop; prop=prop->next) { + if(!(prop->flag & PROP_BUILTIN) && strcmp(prop->identifier, key)==0) { + propptr.type= &RNA_Property; + propptr.data= prop; - for(prop=srna->cont.properties.first; prop; prop=prop->next) { - if(!(prop->flag & PROP_BUILTIN) && strcmp(prop->identifier, key)==0) { - propptr.type= &RNA_Property; - propptr.data= prop; - - *r_ptr= propptr; - return TRUE; + *r_ptr= propptr; + return TRUE; + } } } } while((srna=srna->base)); diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 0e7e82f22c3..3d10b4e4ca2 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -2128,6 +2128,10 @@ static void rna_def_scene_game_data(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "flag", GAME_SHOW_PHYSICS); RNA_def_property_ui_text(prop, "Show Physics Visualization", "Show a visualization of physics bounds and interactions"); + prop= RNA_def_property(srna, "show_mouse", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", GAME_SHOW_MOUSE); + RNA_def_property_ui_text(prop, "Show Mouse", "Start player with a visible mouse cursor"); + prop= RNA_def_property(srna, "use_frame_rate", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", GAME_ENABLE_ALL_FRAMES); RNA_def_property_ui_text(prop, "Use Frame Rate", "Respect the frame rate rather than rendering as many frames as possible"); diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index 327bbd25db2..8b3734a7c46 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -2302,6 +2302,21 @@ static void rna_def_space_node(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "flag", SNODE_BACKDRAW); RNA_def_property_ui_text(prop, "Backdrop", "Use active Viewer Node output as backdrop for compositing nodes"); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_NODE_VIEW, NULL); + + prop= RNA_def_property(srna, "backdrop_zoom", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "zoom"); + RNA_def_property_ui_text(prop, "Backdrop Zoom", "Backdrop zoom factor"); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_NODE_VIEW, NULL); + + prop= RNA_def_property(srna, "backdrop_x", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "xof"); + RNA_def_property_ui_text(prop, "Backdrop X", "Backdrop X offset"); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_NODE_VIEW, NULL); + + prop= RNA_def_property(srna, "backdrop_y", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "yof"); + RNA_def_property_ui_text(prop, "Backdrop Y", "Backdrop Y offset"); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_NODE_VIEW, NULL); } static void rna_def_space_logic(BlenderRNA *brna) diff --git a/source/blender/makesrna/intern/rna_texture.c b/source/blender/makesrna/intern/rna_texture.c index 31a436ec417..7c83676113d 100644 --- a/source/blender/makesrna/intern/rna_texture.c +++ b/source/blender/makesrna/intern/rna_texture.c @@ -174,6 +174,7 @@ void rna_TextureSlot_update(Main *bmain, Scene *scene, PointerRNA *ptr) switch(GS(id->name)) { case ID_MA: WM_main_add_notifier(NC_MATERIAL|ND_SHADING, id); + WM_main_add_notifier(NC_MATERIAL|ND_SHADING_DRAW, id); break; case ID_WO: WM_main_add_notifier(NC_WORLD, id); diff --git a/source/blender/makesrna/intern/rna_ui.c b/source/blender/makesrna/intern/rna_ui.c index 0c26741f06c..35186b91901 100644 --- a/source/blender/makesrna/intern/rna_ui.c +++ b/source/blender/makesrna/intern/rna_ui.c @@ -213,7 +213,19 @@ static StructRNA *rna_Panel_register(bContext *C, ReportList *reports, void *dat pt->draw= (have_function[1])? panel_draw: NULL; pt->draw_header= (have_function[2])? panel_draw_header: NULL; - BLI_addtail(&art->paneltypes, pt); + /* XXX use "no header" flag for some ordering of panels until we have real panel ordering */ + if(pt->flag & PNL_NO_HEADER) { + PanelType *pth = art->paneltypes.first; + while(pth && pth->flag & PNL_NO_HEADER) + pth=pth->next; + + if(pth) + BLI_insertlinkbefore(&art->paneltypes, pth, pt); + else + BLI_addtail(&art->paneltypes, pt); + } + else + BLI_addtail(&art->paneltypes, pt); /* update while blender is running */ if(C) @@ -634,7 +646,7 @@ static void rna_def_panel(BlenderRNA *brna) /* registration */ prop= RNA_def_property(srna, "bl_idname", PROP_STRING, PROP_NONE); RNA_def_property_string_sdna(prop, NULL, "type->idname"); - RNA_def_property_flag(prop, PROP_REGISTER); + RNA_def_property_flag(prop, PROP_REGISTER|PROP_NEVER_CLAMP); RNA_def_property_ui_text(prop, "ID Name", "If this is set, the panel gets a custom ID, otherwise it takes the name of the class used to define the panel. For example, if the class name is \"OBJECT_PT_hello\", and bl_idname is not set by the script, then bl_idname = \"OBJECT_PT_hello\""); prop= RNA_def_property(srna, "bl_label", PROP_STRING, PROP_NONE); @@ -696,7 +708,7 @@ static void rna_def_header(BlenderRNA *brna) /* registration */ prop= RNA_def_property(srna, "bl_idname", PROP_STRING, PROP_NONE); RNA_def_property_string_sdna(prop, NULL, "type->idname"); - RNA_def_property_flag(prop, PROP_REGISTER); + RNA_def_property_flag(prop, PROP_REGISTER|PROP_NEVER_CLAMP); RNA_def_property_ui_text(prop, "ID Name", "If this is set, the header gets a custom ID, otherwise it takes the name of the class used to define the panel. For example, if the class name is \"OBJECT_HT_hello\", and bl_idname is not set by the script, then bl_idname = \"OBJECT_HT_hello\""); prop= RNA_def_property(srna, "bl_space_type", PROP_ENUM, PROP_NONE); @@ -746,7 +758,7 @@ static void rna_def_menu(BlenderRNA *brna) /* registration */ prop= RNA_def_property(srna, "bl_idname", PROP_STRING, PROP_NONE); RNA_def_property_string_sdna(prop, NULL, "type->idname"); - RNA_def_property_flag(prop, PROP_REGISTER); + RNA_def_property_flag(prop, PROP_REGISTER|PROP_NEVER_CLAMP); RNA_def_property_ui_text(prop, "ID Name", "If this is set, the menu gets a custom ID, otherwise it takes the name of the class used to define the panel. For example, if the class name is \"OBJECT_MT_hello\", and bl_idname is not set by the script, then bl_idname = \"OBJECT_MT_hello\""); prop= RNA_def_property(srna, "bl_label", PROP_STRING, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index a7870243afc..c432123d6ba 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -847,24 +847,54 @@ static StructRNA *rna_Operator_register(bContext *C, ReportList *reports, void * { /* convert foo.bar to FOO_OT_bar * allocate the description and the idname in 1 go */ - int idlen = strlen(_operator_idname) + 4; - int namelen = strlen(_operator_name) + 1; - int desclen = strlen(_operator_descr) + 1; - char *ch, *ch_arr; - ch_arr= ch= MEM_callocN(sizeof(char) * (idlen + namelen + desclen), "_operator_idname"); /* 2 terminators and 3 to convert a.b -> A_OT_b */ - WM_operator_bl_idname(ch, _operator_idname); /* convert the idname from python */ - dummyot.idname= ch; - ch += idlen; - strcpy(ch, _operator_name); - dummyot.name = ch; - ch += namelen; - strcpy(ch, _operator_descr); - dummyot.description = ch; - } - if(strlen(identifier) >= sizeof(dummyop.idname)) { - BKE_reportf(reports, RPT_ERROR, "registering operator class: '%s' is too long, maximum length is %d.", identifier, (int)sizeof(dummyop.idname)); - return NULL; + /* inconveniently long name sanity check */ + { + char *ch= _operator_idname; + int i; + int dot= 0; + for(i=0; *ch; i++) { + if((*ch >= 'a' && *ch <= 'z') || (*ch >= '0' && *ch <= '9') || *ch == '_') { + /* pass */ + } + else if(*ch == '.') { + dot++; + } + else { + BKE_reportf(reports, RPT_ERROR, "registering operator class: '%s', invalid bl_idname '%s', at position %d", identifier, _operator_idname, i); + return NULL; + } + + ch++; + } + + if(i > ((int)sizeof(dummyop.idname)) - 3) { + BKE_reportf(reports, RPT_ERROR, "registering operator class: '%s', invalid bl_idname '%s', is too long, maximum length is %d.", identifier, _operator_idname, (int)sizeof(dummyop.idname) - 3); + return NULL; + } + + if(dot != 1) { + BKE_reportf(reports, RPT_ERROR, "registering operator class: '%s', invalid bl_idname '%s', must contain 1 '.' character", identifier, _operator_idname); + return NULL; + } + } + /* end sanity check */ + + { + int idlen = strlen(_operator_idname) + 4; + int namelen = strlen(_operator_name) + 1; + int desclen = strlen(_operator_descr) + 1; + char *ch, *ch_arr; + ch_arr= ch= MEM_callocN(sizeof(char) * (idlen + namelen + desclen), "_operator_idname"); /* 2 terminators and 3 to convert a.b -> A_OT_b */ + WM_operator_bl_idname(ch, _operator_idname); /* convert the idname from python */ + dummyot.idname= ch; + ch += idlen; + strcpy(ch, _operator_name); + dummyot.name = ch; + ch += namelen; + strcpy(ch, _operator_descr); + dummyot.description = ch; + } } /* check if we have registered this operator type before, and remove it */ @@ -1121,10 +1151,10 @@ static void rna_def_operator(BlenderRNA *brna) /* Registration */ prop= RNA_def_property(srna, "bl_idname", PROP_STRING, PROP_NONE); RNA_def_property_string_sdna(prop, NULL, "type->idname"); - RNA_def_property_string_maxlength(prop, OP_MAX_TYPENAME); /* else it uses the pointer size! */ + RNA_def_property_string_maxlength(prop, OP_MAX_TYPENAME-3); /* else it uses the pointer size!. -3 because '.' -> '_OT_' */ RNA_def_property_string_funcs(prop, NULL, NULL, "rna_Operator_bl_idname_set"); // RNA_def_property_clear_flag(prop, PROP_EDITABLE); - RNA_def_property_flag(prop, PROP_REGISTER); + RNA_def_property_flag(prop, PROP_REGISTER|PROP_NEVER_CLAMP); RNA_def_struct_name_property(srna, prop); prop= RNA_def_property(srna, "bl_label", PROP_STRING, PROP_NONE); @@ -1185,7 +1215,7 @@ static void rna_def_macro_operator(BlenderRNA *brna) RNA_def_property_string_maxlength(prop, OP_MAX_TYPENAME); /* else it uses the pointer size! */ RNA_def_property_string_funcs(prop, NULL, NULL, "rna_Operator_bl_idname_set"); // RNA_def_property_clear_flag(prop, PROP_EDITABLE); - RNA_def_property_flag(prop, PROP_REGISTER); + RNA_def_property_flag(prop, PROP_REGISTER|PROP_NEVER_CLAMP); RNA_def_struct_name_property(srna, prop); prop= RNA_def_property(srna, "bl_label", PROP_STRING, PROP_NONE); diff --git a/source/blender/modifiers/CMakeLists.txt b/source/blender/modifiers/CMakeLists.txt index 727d2289354..787c93f5b8a 100644 --- a/source/blender/modifiers/CMakeLists.txt +++ b/source/blender/modifiers/CMakeLists.txt @@ -33,7 +33,7 @@ set(INC ../render/extern/include ../../../intern/guardedalloc ../../../intern/elbeem/extern - ${ZLIB_INC} + ${ZLIB_INCLUDE_DIRS} ) set(SRC diff --git a/source/blender/modifiers/Makefile b/source/blender/modifiers/Makefile deleted file mode 100644 index 3efa5210def..00000000000 --- a/source/blender/modifiers/Makefile +++ /dev/null @@ -1,33 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): Ben Batt -# -# ***** END GPL LICENSE BLOCK ***** -# -# Bounces make to subdirectories. - -SOURCEDIR = source/blender/modifiers -DIRS = intern -include nan_subdirs.mk diff --git a/source/blender/modifiers/intern/MOD_screw.c b/source/blender/modifiers/intern/MOD_screw.c index 689a30dd2d2..96e1c6c0d01 100644 --- a/source/blender/modifiers/intern/MOD_screw.c +++ b/source/blender/modifiers/intern/MOD_screw.c @@ -217,7 +217,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, /* angle */ -#if 0 // cant incluide this, not pradictable enough, though quite fun,. +#if 0 // cant incluide this, not predictable enough, though quite fun,. if(ltmd->flag & MOD_SCREW_OBJECT_ANGLE) { float mtx3_tx[3][3]; copy_m3_m4(mtx3_tx, mtx_tx); diff --git a/source/blender/modifiers/intern/Makefile b/source/blender/modifiers/intern/Makefile deleted file mode 100644 index 9ba41efbd47..00000000000 --- a/source/blender/modifiers/intern/Makefile +++ /dev/null @@ -1,57 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = modifiers -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) -CFLAGS += -DWITH_MOD_BOOLEAN -CFLAGS += -DWITH_MOD_DECIMATE - -CPPFLAGS += -I.. - -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenkernel/intern -CPPFLAGS += -I../../render/extern/include - -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - -CPPFLAGS += -I$(NAN_DECIMATION)/include -CPPFLAGS += -I$(NAN_ELBEEM)/include -CPPFLAGS += -I$(NAN_OPENNL)/include -CPPFLAGS += -I$(NAN_BSP)/include -# CPPFLAGS += -I$(NAN_SMOKE)/include - - diff --git a/source/blender/nodes/CMakeLists.txt b/source/blender/nodes/CMakeLists.txt index ad9f9ed426c..09a627b51d4 100644 --- a/source/blender/nodes/CMakeLists.txt +++ b/source/blender/nodes/CMakeLists.txt @@ -149,7 +149,7 @@ set(SRC ) if(WITH_PYTHON) - set(INC ${INC} ../python ${PYTHON_INC}) + set(INC ${INC} ../python ${PYTHON_INCLUDE_DIRS}) add_definitions(-DWITH_PYTHON) endif() diff --git a/source/blender/nodes/Makefile b/source/blender/nodes/Makefile deleted file mode 100644 index f997e640a17..00000000000 --- a/source/blender/nodes/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) Blender Foundation. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Bounces make to subdirectories. - -SOURCEDIR = source/blender/nodes -DIRS = intern intern/CMP_nodes intern/SHD_nodes intern/TEX_nodes - -include nan_subdirs.mk diff --git a/source/blender/nodes/intern/CMP_nodes/Makefile b/source/blender/nodes/intern/CMP_nodes/Makefile deleted file mode 100644 index 5e97864fb95..00000000000 --- a/source/blender/nodes/intern/CMP_nodes/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = nodes_cmp -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I../../../blenkernel -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I../../../makesdna -CPPFLAGS += -I../../../makesrna -CPPFLAGS += -I../../../blenlib -CPPFLAGS += -I../../../editors/include -CPPFLAGS += -I../../../imbuf -CPPFLAGS += -I../../../render/extern/include -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) diff --git a/source/blender/nodes/intern/Makefile b/source/blender/nodes/intern/Makefile deleted file mode 100644 index 1ffc09bce2c..00000000000 --- a/source/blender/nodes/intern/Makefile +++ /dev/null @@ -1,51 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = nodes -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../editors/include -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../render/extern/include -CPPFLAGS += -I../../gpu -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -DIRS = SHD_nodes CMP_nodes TEX_nodes -include nan_subdirs.mk diff --git a/source/blender/nodes/intern/SHD_nodes/Makefile b/source/blender/nodes/intern/SHD_nodes/Makefile deleted file mode 100644 index 666ffd4a7d3..00000000000 --- a/source/blender/nodes/intern/SHD_nodes/Makefile +++ /dev/null @@ -1,50 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = nodes_shd -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION) -CPPFLAGS += -I../../../python -CPPFLAGS += -I../../../blenkernel -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I../../../makesdna -CPPFLAGS += -I../../../makesrna -CPPFLAGS += -I../../../blenlib -CPPFLAGS += -I../../../editors/include -CPPFLAGS += -I../../../imbuf -CPPFLAGS += -I../../../render/extern/include -CPPFLAGS += -I../../../gpu -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) diff --git a/source/blender/nodes/intern/TEX_nodes/Makefile b/source/blender/nodes/intern/TEX_nodes/Makefile deleted file mode 100644 index 74eabe7932a..00000000000 --- a/source/blender/nodes/intern/TEX_nodes/Makefile +++ /dev/null @@ -1,49 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL/BL DUAL LICENSE 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. The Blender -# Foundation also sells licenses for use in proprietary software under -# the Blender License. See http://www.blender.org/BL/ for information -# about this. -# -# 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL/BL DUAL LICENSE BLOCK ***** -# -# - -LIBNAME = nodes_tex -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I../../../blenkernel -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I../../../makesdna -CPPFLAGS += -I../../../makesrna -CPPFLAGS += -I../../../blenlib -CPPFLAGS += -I../../../include -CPPFLAGS += -I../../../imbuf -CPPFLAGS += -I../../../render/extern/include -CPPFLAGS += -I$(OPENGL_HEADERS) diff --git a/source/blender/python/Makefile b/source/blender/python/Makefile deleted file mode 100644 index 43b6f91369b..00000000000 --- a/source/blender/python/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) Blender Foundation. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Bounces make to subdirectories. - -SOURCEDIR = source/blender/python -DIRS = intern generic - -include nan_subdirs.mk diff --git a/source/blender/python/generic/CMakeLists.txt b/source/blender/python/generic/CMakeLists.txt index aef2438c961..58d69db4a0e 100644 --- a/source/blender/python/generic/CMakeLists.txt +++ b/source/blender/python/generic/CMakeLists.txt @@ -25,7 +25,7 @@ set(INC ../../blenkernel ../../../../intern/guardedalloc ../../../../extern/glew/include - ${PYTHON_INC} + ${PYTHON_INCLUDE_DIRS} ) set(SRC diff --git a/source/blender/python/generic/Makefile b/source/blender/python/generic/Makefile deleted file mode 100644 index 0df98046f63..00000000000 --- a/source/blender/python/generic/Makefile +++ /dev/null @@ -1,66 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = gen_python -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -# OpenGL and Python -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += $(OGL_CPPFLAGS) -CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION) - -# PreProcessor stuff - -CPPFLAGS += -I$(NAN_GHOST)/include -CPPFLAGS += $(NAN_SDLCFLAGS) - -# modules -CPPFLAGS += -I../../editors/include -CPPFLAGS += -I../../python -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../nodes -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../render/extern/include - -# path to the guarded memory allocator -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I$(NAN_MEMUTIL)/include - -# path to our own headerfiles -CPPFLAGS += -I.. diff --git a/source/blender/python/generic/mathutils_matrix.c b/source/blender/python/generic/mathutils_matrix.c index 22ee59f20a0..7b13bea60c7 100644 --- a/source/blender/python/generic/mathutils_matrix.c +++ b/source/blender/python/generic/mathutils_matrix.c @@ -598,6 +598,13 @@ static PyObject *C_Matrix_Shear(PyObject *cls, PyObject *args) return newMatrixObject(mat, matSize, matSize, Py_NEW, (PyTypeObject *)cls); } +static void matrix_as_3x3(float mat[3][3], MatrixObject *self) +{ + copy_v3_v3(mat[0], self->matrix[0]); + copy_v3_v3(mat[1], self->matrix[1]); + copy_v3_v3(mat[2], self->matrix[2]); +} + /* assumes rowsize == colsize is checked and the read callback has run */ static float matrix_determinant(MatrixObject * self) { @@ -633,7 +640,7 @@ static PyObject *Matrix_toQuat(MatrixObject * self) return NULL; /*must be 3-4 cols, 3-4 rows, square matrix*/ - if(self->colSize < 3 || self->rowSize < 3 || (self->colSize != self->rowSize)) { + if((self->colSize < 3) || (self->rowSize < 3) || (self->colSize != self->rowSize)) { PyErr_SetString(PyExc_AttributeError, "Matrix.to_quat(): inappropriate matrix size - expects 3x3 or 4x4 matrix"); return NULL; } @@ -807,21 +814,19 @@ static char Matrix_to_3x3_doc[] = " :rtype: :class:`Matrix`\n"; PyObject *Matrix_to_3x3(MatrixObject * self) { + float mat[3][3]; + if(!BaseMath_ReadCallback(self)) return NULL; - if(self->colSize==3 && self->rowSize==3) { - return (PyObject *)newMatrixObject(self->contigPtr, 3, 3, Py_NEW, Py_TYPE(self)); - } - else if(self->colSize==4 && self->rowSize==4) { - float mat[3][3]; - copy_m3_m4(mat, (float (*)[4])self->contigPtr); - return (PyObject *)newMatrixObject((float *)mat, 3, 3, Py_NEW, Py_TYPE(self)); + if((self->colSize < 3) || (self->rowSize < 3)) { + PyErr_SetString(PyExc_AttributeError, "Matrix.to_3x3(): inappropriate matrix size"); + return NULL; } - /* TODO, 2x2 matrix */ - PyErr_SetString(PyExc_TypeError, "Matrix.to_3x3(): inappropriate matrix size"); - return NULL; + matrix_as_3x3(mat, self); + + return newMatrixObject((float *)mat, 3, 3, Py_NEW, Py_TYPE(self)); } /*---------------------------Matrix.translationPart() ------------*/ @@ -838,7 +843,7 @@ PyObject *Matrix_TranslationPart(MatrixObject * self) if(!BaseMath_ReadCallback(self)) return NULL; - if(self->colSize < 3 || self->rowSize < 4){ + if((self->colSize < 3) || self->rowSize < 4){ PyErr_SetString(PyExc_AttributeError, "Matrix.translation_part(): inappropriate matrix size"); return NULL; } @@ -856,30 +861,21 @@ static char Matrix_RotationPart_doc[] = "\n" " .. note:: Note that the (4,4) element of a matrix can be used for uniform scaling too.\n"; -PyObject *Matrix_RotationPart(MatrixObject * self) +PyObject *Matrix_RotationPart(MatrixObject *self) { - float mat[16] = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}; + float mat[3][3]; if(!BaseMath_ReadCallback(self)) return NULL; - if(self->colSize < 3 || self->rowSize < 3){ + if((self->colSize < 3) || (self->rowSize < 3)) { PyErr_SetString(PyExc_AttributeError, "Matrix.rotation_part(): inappropriate matrix size"); return NULL; } - mat[0] = self->matrix[0][0]; - mat[1] = self->matrix[0][1]; - mat[2] = self->matrix[0][2]; - mat[3] = self->matrix[1][0]; - mat[4] = self->matrix[1][1]; - mat[5] = self->matrix[1][2]; - mat[6] = self->matrix[2][0]; - mat[7] = self->matrix[2][1]; - mat[8] = self->matrix[2][2]; + matrix_as_3x3(mat, self); - return newMatrixObject(mat, 3, 3, Py_NEW, Py_TYPE(self)); + return newMatrixObject((float *)mat, 3, 3, Py_NEW, Py_TYPE(self)); } /*---------------------------Matrix.scalePart() --------------------*/ static char Matrix_scalePart_doc[] = @@ -894,31 +890,25 @@ static char Matrix_scalePart_doc[] = PyObject *Matrix_scalePart(MatrixObject * self) { - float scale[3], rot[3]; - float mat[3][3], imat[3][3], tmat[3][3]; + float rot[3][3]; + float mat[3][3]; + float size[3]; if(!BaseMath_ReadCallback(self)) return NULL; - + /*must be 3-4 cols, 3-4 rows, square matrix*/ - if(self->colSize == 4 && self->rowSize == 4) - copy_m3_m4(mat, (float (*)[4])self->contigPtr); - else if(self->colSize == 3 && self->rowSize == 3) - copy_m3_m3(mat, (float (*)[3])self->contigPtr); - else { - PyErr_SetString(PyExc_AttributeError, "Matrix.scale_part(): inappropriate matrix size - expects 3x3 or 4x4 matrix"); + if((self->colSize < 3) || (self->rowSize < 3)) { + PyErr_SetString(PyExc_AttributeError, "Matrix.scale_part(): inappropriate matrix size, 3x3 minimum size"); return NULL; } - /* functionality copied from editobject.c apply_obmat */ - mat3_to_eul( rot,mat); - eul_to_mat3( tmat,rot); - invert_m3_m3(imat, tmat); - mul_m3_m3m3(tmat, imat, mat); - - scale[0]= tmat[0][0]; - scale[1]= tmat[1][1]; - scale[2]= tmat[2][2]; - return newVectorObject(scale, 3, Py_NEW, NULL); + + matrix_as_3x3(mat, self); + + /* compatible mat4_to_loc_rot_size */ + mat3_to_rot_size(rot, size, mat); + + return newVectorObject(size, 3, Py_NEW, NULL); } /*---------------------------Matrix.invert() ---------------------*/ @@ -1688,15 +1678,13 @@ static PyObject *Matrix_getMedianScale(MatrixObject *self, void *UNUSED(closure) return NULL; /*must be 3-4 cols, 3-4 rows, square matrix*/ - if(self->colSize == 4 && self->rowSize == 4) - copy_m3_m4(mat, (float (*)[4])self->contigPtr); - else if(self->colSize == 3 && self->rowSize == 3) - copy_m3_m3(mat, (float (*)[3])self->contigPtr); - else { - PyErr_SetString(PyExc_AttributeError, "Matrix.median_scale: inappropriate matrix size - expects 3x3 or 4x4 matrix"); + if((self->colSize < 3) || (self->rowSize < 3)) { + PyErr_SetString(PyExc_AttributeError, "Matrix.median_scale: inappropriate matrix size, 3x3 minimum"); return NULL; } - + + matrix_as_3x3(mat, self); + return PyFloat_FromDouble(mat3_to_scale(mat)); } diff --git a/source/blender/python/generic/mathutils_vector.c b/source/blender/python/generic/mathutils_vector.c index a3bf1471813..de6002859d3 100644 --- a/source/blender/python/generic/mathutils_vector.c +++ b/source/blender/python/generic/mathutils_vector.c @@ -76,11 +76,8 @@ static char Vector_Zero_doc[] = static PyObject *Vector_Zero(VectorObject *self) { - int i; - for(i = 0; i < self->size; i++) { - self->vec[i] = 0.0f; - } - + fill_vn(self->vec, self->size, 0.0f); + (void)BaseMath_WriteCallback(self); Py_INCREF(self); return (PyObject*)self; @@ -780,7 +777,6 @@ static PyObject *Vector_item(VectorObject *self, int i) return NULL; return PyFloat_FromDouble(self->vec[i]); - } /*----------------------------object[]------------------------- sequence accessor (set)*/ @@ -861,43 +857,34 @@ static int Vector_ass_slice(VectorObject *self, int begin, int end, addition*/ static PyObject *Vector_add(PyObject * v1, PyObject * v2) { - int i; - float vec[4]; - VectorObject *vec1 = NULL, *vec2 = NULL; - - if VectorObject_Check(v1) - vec1= (VectorObject *)v1; - - if VectorObject_Check(v2) - vec2= (VectorObject *)v2; - - /* make sure v1 is always the vector */ - if (vec1 && vec2 ) { - - if(!BaseMath_ReadCallback(vec1) || !BaseMath_ReadCallback(vec2)) - return NULL; - - /*VECTOR + VECTOR*/ - if(vec1->size != vec2->size) { - PyErr_SetString(PyExc_AttributeError, "Vector addition: vectors must have the same dimensions for this operation"); - return NULL; - } - for(i = 0; i < vec1->size; i++) { - vec[i] = vec1->vec[i] + vec2->vec[i]; - } - return newVectorObject(vec, vec1->size, Py_NEW, Py_TYPE(v1)); + float vec[MAX_DIMENSIONS]; + + if (!VectorObject_Check(v1) || !VectorObject_Check(v2)) { + PyErr_SetString(PyExc_AttributeError, "Vector addition: arguments not valid for this operation"); + return NULL; } - - PyErr_SetString(PyExc_AttributeError, "Vector addition: arguments not valid for this operation"); - return NULL; + vec1 = (VectorObject*)v1; + vec2 = (VectorObject*)v2; + + if(!BaseMath_ReadCallback(vec1) || !BaseMath_ReadCallback(vec2)) + return NULL; + + /*VECTOR + VECTOR*/ + if(vec1->size != vec2->size) { + PyErr_SetString(PyExc_AttributeError, "Vector addition: vectors must have the same dimensions for this operation"); + return NULL; + } + + add_vn_vnvn(vec, vec1->vec, vec2->vec, vec1->size); + + return newVectorObject(vec, vec1->size, Py_NEW, Py_TYPE(v1)); } /* ------------------------obj += obj------------------------------ addition in place */ static PyObject *Vector_iadd(PyObject * v1, PyObject * v2) { - int i; VectorObject *vec1 = NULL, *vec2 = NULL; if (!VectorObject_Check(v1) || !VectorObject_Check(v2)) { @@ -915,12 +902,10 @@ static PyObject *Vector_iadd(PyObject * v1, PyObject * v2) if(!BaseMath_ReadCallback(vec1) || !BaseMath_ReadCallback(vec2)) return NULL; - for(i = 0; i < vec1->size; i++) { - vec1->vec[i] = vec1->vec[i] + vec2->vec[i]; - } + add_vn_vn(vec1->vec, vec2->vec, vec1->size); (void)BaseMath_WriteCallback(vec1); - Py_INCREF( v1 ); + Py_INCREF(v1); return v1; } @@ -928,9 +913,8 @@ static PyObject *Vector_iadd(PyObject * v1, PyObject * v2) subtraction*/ static PyObject *Vector_sub(PyObject * v1, PyObject * v2) { - int i; - float vec[4]; VectorObject *vec1 = NULL, *vec2 = NULL; + float vec[MAX_DIMENSIONS]; if (!VectorObject_Check(v1) || !VectorObject_Check(v2)) { PyErr_SetString(PyExc_AttributeError, "Vector subtraction: arguments not valid for this operation"); @@ -946,9 +930,8 @@ static PyObject *Vector_sub(PyObject * v1, PyObject * v2) PyErr_SetString(PyExc_AttributeError, "Vector subtraction: vectors must have the same dimensions for this operation"); return NULL; } - for(i = 0; i < vec1->size; i++) { - vec[i] = vec1->vec[i] - vec2->vec[i]; - } + + sub_vn_vnvn(vec, vec1->vec, vec2->vec, vec1->size); return newVectorObject(vec, vec1->size, Py_NEW, Py_TYPE(v1)); } @@ -957,8 +940,7 @@ static PyObject *Vector_sub(PyObject * v1, PyObject * v2) subtraction*/ static PyObject *Vector_isub(PyObject * v1, PyObject * v2) { - int i; - VectorObject *vec1 = NULL, *vec2 = NULL; + VectorObject *vec1= NULL, *vec2= NULL; if (!VectorObject_Check(v1) || !VectorObject_Check(v2)) { PyErr_SetString(PyExc_AttributeError, "Vector subtraction: arguments not valid for this operation"); @@ -975,12 +957,10 @@ static PyObject *Vector_isub(PyObject * v1, PyObject * v2) if(!BaseMath_ReadCallback(vec1) || !BaseMath_ReadCallback(vec2)) return NULL; - for(i = 0; i < vec1->size; i++) { - vec1->vec[i] = vec1->vec[i] - vec2->vec[i]; - } + sub_vn_vn(vec1->vec, vec2->vec, vec1->size); (void)BaseMath_WriteCallback(vec1); - Py_INCREF( v1 ); + Py_INCREF(v1); return v1; } @@ -996,29 +976,29 @@ static PyObject *Vector_isub(PyObject * v1, PyObject * v2) * note: vector/matrix multiplication IS NOT COMMUTATIVE!!!! * note: assume read callbacks have been done first. */ -static int column_vector_multiplication(float *rvec, VectorObject* vec, MatrixObject * mat) +static int column_vector_multiplication(float rvec[MAX_DIMENSIONS], VectorObject* vec, MatrixObject * mat) { - float vecCopy[4]; + float vec_cpy[MAX_DIMENSIONS]; double dot = 0.0f; int x, y, z = 0; if(mat->rowSize != vec->size){ - if(mat->rowSize == 4 && vec->size != 3){ - PyErr_SetString(PyExc_AttributeError, "matrix * vector: matrix row size and vector size must be the same"); + if(mat->rowSize == 4 && vec->size == 3) { + vec_cpy[3] = 1.0f; + } + else { + PyErr_SetString(PyExc_AttributeError, "matrix * vector: matrix.row_size and len(vector) must be the same, except for 3D vector * 4x4 matrix."); return -1; - }else{ - vecCopy[3] = 1.0f; } } - for(x = 0; x < vec->size; x++){ - vecCopy[x] = vec->vec[x]; - } + memcpy(vec_cpy, vec->vec, vec->size * sizeof(float)); + rvec[3] = 1.0f; for(x = 0; x < mat->colSize; x++) { for(y = 0; y < mat->rowSize; y++) { - dot += mat->matrix[y][x] * vecCopy[y]; + dot += mat->matrix[y][x] * vec_cpy[y]; } rvec[z++] = (float)dot; dot = 0.0f; @@ -1030,11 +1010,7 @@ static int column_vector_multiplication(float *rvec, VectorObject* vec, MatrixOb static PyObject *vector_mul_float(VectorObject *vec, const float scalar) { float tvec[MAX_DIMENSIONS]; - int i; - - for(i = 0; i < vec->size; i++) { - tvec[i] = vec->vec[i] * scalar; - } + mul_vn_vn_fl(tvec, vec->vec, vec->size, scalar); return newVectorObject(tvec, vec->size, Py_NEW, Py_TYPE(vec)); } @@ -1493,7 +1469,7 @@ static PyObject *Vector_getLength(VectorObject *self, void *UNUSED(closure)) return PyFloat_FromDouble(sqrt(dot)); } -static int Vector_setLength(VectorObject *self, PyObject * value ) +static int Vector_setLength(VectorObject *self, PyObject *value) { double dot = 0.0f, param; int i; @@ -1511,9 +1487,7 @@ static int Vector_setLength(VectorObject *self, PyObject * value ) return -1; } if (param == 0.0f) { - for(i = 0; i < self->size; i++){ - self->vec[i]= 0; - } + fill_vn(self->vec, self->size, 0.0f); return 0; } @@ -2052,7 +2026,7 @@ if len(unique) != len(items): //vector/matrix multiplication IS NOT COMMUTATIVE!!!! static int row_vector_multiplication(float rvec[4], VectorObject* vec, MatrixObject * mat) { - float vecCopy[4]; + float vec_cpy[4]; double dot = 0.0f; int x, y, z = 0, vec_size = vec->size; @@ -2061,21 +2035,20 @@ static int row_vector_multiplication(float rvec[4], VectorObject* vec, MatrixObj PyErr_SetString(PyExc_AttributeError, "vector * matrix: matrix column size and the vector size must be the same"); return -1; }else{ - vecCopy[3] = 1.0f; + vec_cpy[3] = 1.0f; } } if(!BaseMath_ReadCallback(vec) || !BaseMath_ReadCallback(mat)) return -1; - - for(x = 0; x < vec_size; x++){ - vecCopy[x] = vec->vec[x]; - } + + memcpy(vec_cpy, vec->vec, vec_size * sizeof(float)); + rvec[3] = 1.0f; //muliplication for(x = 0; x < mat->rowSize; x++) { for(y = 0; y < mat->colSize; y++) { - dot += mat->matrix[x][y] * vecCopy[y]; + dot += mat->matrix[x][y] * vec_cpy[y]; } rvec[z++] = (float)dot; dot = 0.0f; @@ -2226,9 +2199,8 @@ PyTypeObject vector_Type = { (i.e. it was allocated elsewhere by MEM_mallocN()) pass Py_NEW - if vector is not a WRAPPER and managed by PYTHON (i.e. it must be created here with PyMEM_malloc())*/ -PyObject *newVectorObject(float *vec, int size, int type, PyTypeObject *base_type) +PyObject *newVectorObject(float *vec, const int size, const int type, PyTypeObject *base_type) { - int i; VectorObject *self; if(size > 4 || size < 2) @@ -2247,16 +2219,14 @@ PyObject *newVectorObject(float *vec, int size, int type, PyTypeObject *base_typ self->vec = vec; self->wrapped = Py_WRAP; } else if (type == Py_NEW) { - self->vec = PyMem_Malloc(size * sizeof(float)); - if(!vec) { /*new empty*/ - for(i = 0; i < size; i++){ - self->vec[i] = 0.0f; - } - if(size == 4) /* do the homogenous thing */ + self->vec= PyMem_Malloc(size * sizeof(float)); + if(vec) { + memcpy(self->vec, vec, size * sizeof(float)); + } + else { /* new empty */ + fill_vn(self->vec, size, 0.0f); + if(size == 4) { /* do the homogenous thing */ self->vec[3] = 1.0f; - }else{ - for(i = 0; i < size; i++){ - self->vec[i] = vec[i]; } } self->wrapped = Py_NEW; diff --git a/source/blender/python/generic/mathutils_vector.h b/source/blender/python/generic/mathutils_vector.h index e5d15dbfdb0..2dbe9d9d3fe 100644 --- a/source/blender/python/generic/mathutils_vector.h +++ b/source/blender/python/generic/mathutils_vector.h @@ -43,7 +43,7 @@ typedef struct { } VectorObject; /*prototypes*/ -PyObject *newVectorObject(float *vec, int size, int type, PyTypeObject *base_type); +PyObject *newVectorObject(float *vec, const int size, const int type, PyTypeObject *base_type); PyObject *newVectorObject_cb(PyObject *user, int size, int callback_type, int subtype); #endif /* MATHUTILS_VECTOR_H */ diff --git a/source/blender/python/intern/CMakeLists.txt b/source/blender/python/intern/CMakeLists.txt index 220be8f3975..c77736df992 100644 --- a/source/blender/python/intern/CMakeLists.txt +++ b/source/blender/python/intern/CMakeLists.txt @@ -34,7 +34,7 @@ set(INC ../../freestyle/intern/python ../../../../intern/guardedalloc ../../../../intern/audaspace/intern - ${PYTHON_INC} + ${PYTHON_INCLUDE_DIRS} ) set(SRC diff --git a/source/blender/python/intern/Makefile b/source/blender/python/intern/Makefile deleted file mode 100644 index 6c0b7b4d14e..00000000000 --- a/source/blender/python/intern/Makefile +++ /dev/null @@ -1,67 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = python -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -# OpenGL and Python -CPPFLAGS += $(OGL_CPPFLAGS) -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION) - -# PreProcessor stuff - -CPPFLAGS += -I$(NAN_GHOST)/include -CPPFLAGS += $(NAN_SDLCFLAGS) - -# modules -CPPFLAGS += -I../../editors/include -CPPFLAGS += -I../../python -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../nodes -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../windowmanager -CPPFLAGS += -I../../render/extern/include -CPPFLAGS += -I$(NAN_AUDASPACE)/include - -# path to the guarded memory allocator -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I$(NAN_MEMUTIL)/include - -# path to our own headerfiles -CPPFLAGS += -I.. diff --git a/source/blender/python/intern/bpy_props.c b/source/blender/python/intern/bpy_props.c index 38d3c9161db..80aeaedf940 100644 --- a/source/blender/python/intern/bpy_props.c +++ b/source/blender/python/intern/bpy_props.c @@ -692,13 +692,17 @@ static StructRNA *pointer_type_from_py(PyObject *value, const char *error_prefix { StructRNA *srna; - srna= srna_from_self(value, "BoolProperty(...):"); + srna= srna_from_self(value, ""); if(!srna) { - - PyObject *msg= PyC_ExceptionBuffer(); - char *msg_char= _PyUnicode_AsString(msg); - PyErr_Format(PyExc_TypeError, "%.200s expected an RNA type derived from IDPropertyGroup, failed with: %s", error_prefix, msg_char); - Py_DECREF(msg); + if(PyErr_Occurred()) { + PyObject *msg= PyC_ExceptionBuffer(); + char *msg_char= _PyUnicode_AsString(msg); + PyErr_Format(PyExc_TypeError, "%.200s expected an RNA type derived from IDPropertyGroup, failed with: %s", error_prefix, msg_char); + Py_DECREF(msg); + } + else { + PyErr_Format(PyExc_TypeError, "%.200s expected an RNA type derived from IDPropertyGroup, failed with type '%s'", error_prefix, Py_TYPE(value)->tp_name); + } return NULL; } diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index 8f745bc2756..b8a448106f9 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -1075,13 +1075,14 @@ static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyOb PyObject *value_coerce= NULL; int subtype= RNA_property_subtype(prop); if(ELEM3(subtype, PROP_FILEPATH, PROP_DIRPATH, PROP_FILENAME)) { + /* TODO, get size */ param= PyC_UnicodeAsByte(value, &value_coerce); } else { param= _PyUnicode_AsString(value); } #else // USE_STRING_COERCE - param= _PyUnicode_AsString(value); + param= _PyUnicode_AsStringSize(value); #endif // USE_STRING_COERCE if (param==NULL) { @@ -2705,6 +2706,18 @@ static PyObject *pyrna_struct_dir(BPy_StructRNA *self) BLI_freelistN(&lb); } + + { + /* set(), this is needed to remove-doubles because the deferred + * register-props will be in both the python __dict__ and accessed as RNA */ + + PyObject *set= PySet_New(ret); + + Py_DECREF(ret); + ret= PySequence_List(set); + Py_DECREF(set); + } + return ret; } @@ -2830,14 +2843,38 @@ static int pyrna_is_deferred_prop(PyObject *value) return PyTuple_CheckExact(value) && PyTuple_GET_SIZE(value)==2 && PyCallable_Check(PyTuple_GET_ITEM(value, 0)) && PyDict_CheckExact(PyTuple_GET_ITEM(value, 1)); } -static PyObject *pyrna_struct_meta_idprop_getattro(PyObject *cls, PyObject *pyname) +static PyObject *pyrna_struct_meta_idprop_getattro(PyObject *cls, PyObject *attr) { - return PyType_Type.tp_getattro(cls, pyname); + PyObject *ret= PyType_Type.tp_getattro(cls, attr); + + /* Allows: + * >>> bpy.types.Scene.foo = BoolProperty() + * >>> bpy.types.Scene.foo + * <bpy_struct, BooleanProperty("foo")> + * ...rather then returning the defered class register tuple as checked by pyrna_is_deferred_prop() + * + * Disable for now, this is faking internal behavior in a way thats too tricky to maintain well. */ +#if 0 + if(ret == NULL) { // || pyrna_is_deferred_prop(ret) + StructRNA *srna= srna_from_self(cls, "StructRNA.__getattr__"); + if(srna) { + PropertyRNA *prop= RNA_struct_type_find_property(srna, _PyUnicode_AsString(attr)); + if(prop) { + PointerRNA tptr; + PyErr_Clear(); /* clear error from tp_getattro */ + RNA_pointer_create(NULL, &RNA_Property, prop, &tptr); + ret= pyrna_struct_CreatePyObject(&tptr); + } + } + } +#endif + + return ret; } static int pyrna_struct_meta_idprop_setattro(PyObject *cls, PyObject *attr, PyObject *value) { - StructRNA *srna= srna_from_self(cls, ""); + StructRNA *srna= srna_from_self(cls, "StructRNA.__setattr__"); if(srna == NULL) { if(value && pyrna_is_deferred_prop(value)) { @@ -2854,9 +2891,14 @@ static int pyrna_struct_meta_idprop_setattro(PyObject *cls, PyObject *attr, PyOb /* check if the value is a property */ if(pyrna_is_deferred_prop(value)) { int ret= deferred_register_prop(srna, attr, value); - if(ret < 0) + if(ret == -1) { + /* error set */ return ret; - /* pass through, when the value isn't assigned it still works but gets confusing from script writers POV */ + } + + /* pass through and assign to the classes __dict__ as well + * when the value isn't assigned it still creates the RNA property + * but gets confusing from script writers POV if the assigned value cant be read back. */ } else { /* remove existing property if its set or we also end up with confusement */ @@ -2873,7 +2915,7 @@ static int pyrna_struct_meta_idprop_setattro(PyObject *cls, PyObject *attr, PyOb return -1; } } - + /* fallback to standard py, delattr/setattr */ return PyType_Type.tp_setattro(cls, attr, value); } @@ -4950,12 +4992,10 @@ StructRNA *pyrna_struct_as_srna(PyObject *self, int parent, const char *error_pr /* Orphan functions, not sure where they should go */ /* get the srna for methods attached to types */ -/* */ +/* + * Caller needs to raise error.*/ StructRNA *srna_from_self(PyObject *self, const char *error_prefix) { - /* a bit sloppy but would cause a very confusing bug if - * an error happened to be set here */ - PyErr_Clear(); if(self==NULL) { return NULL; @@ -4966,10 +5006,24 @@ StructRNA *srna_from_self(PyObject *self, const char *error_prefix) else if (PyType_Check(self)==0) { return NULL; } - /* These cases above not errors, they just mean the type was not compatible - * After this any errors will be raised in the script */ + else { + /* These cases above not errors, they just mean the type was not compatible + * After this any errors will be raised in the script */ - return pyrna_struct_as_srna(self, 0, error_prefix); + PyObject *error_type, *error_value, *error_traceback; + StructRNA *srna; + + PyErr_Fetch(&error_type, &error_value, &error_traceback); + PyErr_Clear(); + + srna= pyrna_struct_as_srna(self, 0, error_prefix); + + if(!PyErr_Occurred()) { + PyErr_Restore(error_type, error_value, error_traceback); + } + + return srna; + } } static int deferred_register_prop(StructRNA *srna, PyObject *key, PyObject *item) @@ -5140,7 +5194,7 @@ static int bpy_class_validate(PointerRNA *dummyptr, void *py_data, int *have_fun } /* verify callback functions */ - lb= RNA_struct_defined_functions(srna); + lb= RNA_struct_type_functions(srna); i= 0; for(link=lb->first; link; link=link->next) { func= (FunctionRNA*)link; @@ -5199,7 +5253,7 @@ static int bpy_class_validate(PointerRNA *dummyptr, void *py_data, int *have_fun } /* verify properties */ - lb= RNA_struct_defined_properties(srna); + lb= RNA_struct_type_properties(srna); for(link=lb->first; link; link=link->next) { const char *identifier; prop= (PropertyRNA*)link; @@ -5642,26 +5696,25 @@ static PyObject *pyrna_basetype_register(PyObject *UNUSED(self), PyObject *py_cl static int pyrna_srna_contains_pointer_prop_srna(StructRNA *srna_props, StructRNA *srna, const char **prop_identifier) { - PointerRNA tptr; - PropertyRNA *iterprop; - RNA_pointer_create(NULL, &RNA_Struct, srna_props, &tptr); - - iterprop= RNA_struct_find_property(&tptr, "properties"); + PropertyRNA *prop; + LinkData *link; - RNA_PROP_BEGIN(&tptr, itemptr, iterprop) { - PropertyRNA *prop= itemptr.data; - if(RNA_property_type(prop) == PROP_POINTER) { - if (strcmp(RNA_property_identifier(prop), "rna_type") == 0) { - /* pass */ - } - else if(RNA_property_pointer_type(&tptr, prop) == srna) { + /* verify properties */ + const ListBase *lb= RNA_struct_type_properties(srna); + + for(link=lb->first; link; link=link->next) { + prop= (PropertyRNA*)link; + if(RNA_property_type(prop) == PROP_POINTER && !(RNA_property_flag(prop) & PROP_BUILTIN)) { + PointerRNA tptr; + RNA_pointer_create(NULL, &RNA_Struct, srna_props, &tptr); + + if(RNA_property_pointer_type(&tptr, prop) == srna) { *prop_identifier= RNA_property_identifier(prop); return 1; } } } - RNA_PROP_END; - + return 0; } diff --git a/source/blender/quicktime/Makefile b/source/blender/quicktime/Makefile deleted file mode 100644 index d0055780556..00000000000 --- a/source/blender/quicktime/Makefile +++ /dev/null @@ -1,37 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Bounces make to subdirectories. - -SOURCEDIR = source/blender/quicktime - -ifeq ($(OS), $(findstring $(OS), "windows, darwin")) - DIRS = apple -endif - -include nan_subdirs.mk diff --git a/source/blender/quicktime/apple/Makefile b/source/blender/quicktime/apple/Makefile deleted file mode 100644 index cdb00ab9ef2..00000000000 --- a/source/blender/quicktime/apple/Makefile +++ /dev/null @@ -1,63 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = blenderqt -DIR = $(OCGDIR)/blender/$(LIBNAME) - -ifeq ($(OS), $(findstring $(OS), "darwin")) - ifeq ($(USE_QTKIT),true) - OCSRCS += $(wildcard *.m) - endif -endif - -include nan_compile.mk - -CFLAGS += $(LEVEL1_C_WARNINGS) - -CPPFLAGS += -DWITH_QUICKTIME - -ifeq ($(CPU),$(findstring $(CPU), "powerpc mips sparc")) - CPPFLAGS += -DWORDS_BIGENDIAN -else - # alpha i386 - CPPFLAGS += -DWORDS_LITTLEENDIAN -endif - -# path to the guarded memory allocator -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -# our own include -CPPFLAGS += -I.. - -# stuff needed by quicktime_[import|export].c -CPPFLAGS += -I../../blenloader -I../../imbuf/intern -I../../imbuf -CPPFLAGS += -I../../blenlib -I../../makesdna -I../../editors/include -I../../avi -CPPFLAGS += -I../../blenkernel -I../../render/extern/include -I../../windowmanager -I../../makesrna -CPPFLAGS += -I$(NAN_AUDASPACE)/include - diff --git a/source/blender/readblenfile/Makefile b/source/blender/readblenfile/Makefile deleted file mode 100644 index f0a46d077a8..00000000000 --- a/source/blender/readblenfile/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Bounces make to subdirectories. - -SOURCEDIR = source/blender/readblenfile -DIRS = intern stub - -include nan_subdirs.mk diff --git a/source/blender/readblenfile/intern/Makefile b/source/blender/readblenfile/intern/Makefile deleted file mode 100644 index dc59ca3b9ed..00000000000 --- a/source/blender/readblenfile/intern/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = readblenfile -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_2_C_WARNINGS) - -# path to our own external headerfiles -CPPFLAGS += -I.. - -# external modules -CPPFLAGS += -I../../../kernel/gen_messaging -CPPFLAGS += -I../../readstreamglue -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../blenloader diff --git a/source/blender/readblenfile/stub/Makefile b/source/blender/readblenfile/stub/Makefile deleted file mode 100644 index 94a55407418..00000000000 --- a/source/blender/readblenfile/stub/Makefile +++ /dev/null @@ -1,44 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = readblenfileSTUB -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_2_C_WARNINGS) -CFLAGS += $(FIX_STUBS_WARNINGS) - -# path to our own external headerfiles -CPPFLAGS += -I.. - -# external modules -CPPFLAGS += -I../../../kernel/gen_messaging - diff --git a/source/blender/readblenfile/test/Makefile b/source/blender/readblenfile/test/Makefile deleted file mode 100644 index cc294ac60b3..00000000000 --- a/source/blender/readblenfile/test/Makefile +++ /dev/null @@ -1,46 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = readblenfile -DIR = $(OCGDIR)/blender/$(LIBNAME) -ALLTARGETS = $(OBJS) $(DIR)/$(DEBUG_DIR)test$(EXT) - -include nan_compile.mk - -CFLAGS += $(LEVEL_2_C_WARNINGS) - -# path to our own external headerfiles -CPPFLAGS += -I.. -CPPFLAGS += -I../../readstreamglue - -$(DIR)/$(DEBUG_DIR)test$(EXT): $(OBJS) ../intern/BLO_readblenfile.c - $(CC) $(LDFLAGS) -o $@ $(OBJS) $(OCGDIR)/blender/readblenfile/$(DEBUG_DIR)libreadblenfile.a - $(DIR)/$(DEBUG_DIR)test$(EXT) - diff --git a/source/blender/render/Makefile b/source/blender/render/Makefile deleted file mode 100644 index 7be54ac359f..00000000000 --- a/source/blender/render/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Bounces make to subdirectories. - -SOURCEDIR = source/blender/render -DIRS = intern - -include nan_subdirs.mk diff --git a/source/blender/render/intern/Makefile b/source/blender/render/intern/Makefile deleted file mode 100644 index 4043902a40f..00000000000 --- a/source/blender/render/intern/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Bounces make to subdirectories. - -SOURCEDIR = source/blender/render/intern -DIRS = source raytrace - -include nan_subdirs.mk diff --git a/source/blender/render/intern/include/texture.h b/source/blender/render/intern/include/texture.h index fb941d1b7f3..8eb91f3299f 100644 --- a/source/blender/render/intern/include/texture.h +++ b/source/blender/render/intern/include/texture.h @@ -48,6 +48,7 @@ if(tex->saturation != 1.0f) { \ hsv_to_rgb(_hsv[0], _hsv[1], _hsv[2], &texres->tr, &texres->tg, &texres->tb); \ } \ +#define RGBTOBW(r,g,b) ( r*0.35 + g*0.45 + b*0.2 ) /* keep this in sync with gpu_shader_material.glsl:rgbtobw */ struct HaloRen; struct ShadeInput; diff --git a/source/blender/render/intern/raytrace/Makefile b/source/blender/render/intern/raytrace/Makefile deleted file mode 100644 index 2da8038c610..00000000000 --- a/source/blender/render/intern/raytrace/Makefile +++ /dev/null @@ -1,69 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = render_raytrace -DIR = $(OCGDIR)/blender/render - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -# first /include is my own includes, second is the external interface. -# The external modules follow after. There should be a nicer way to say this. -CPPFLAGS += -I../include -CPPFLAGS += -I../../extern/include -CPPFLAGS += -I../../../blenlib -CPPFLAGS += -I../../../imbuf -CPPFLAGS += -I../../../makesdna -CPPFLAGS += -I../../../makesrna -CPPFLAGS += -I../../../blenkernel -CPPFLAGS += -I../../../quicktime -CPPFLAGS += -I../../../../kernel/gen_messaging -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -# not very neat: the rest of blender.. -CPPFLAGS += -I../../../editors/include -CPPFLAGS += $(NAN_SDLCFLAGS) -CPPFLAGS += -I../../../../../intern/smoke/extern - -ifeq ($(WITH_QUICKTIME), true) - CPPFLAGS += -DWITH_QUICKTIME -endif - -ifeq ($(WITH_FFMPEG),true) - CPPFLAGS += -DWITH_FFMPEG -endif - -ifeq ($(WITH_OPENEXR),true) - CPPFLAGS += -DWITH_OPENEXR -endif - -ifeq ($(WITH_BF_RAYOPTIMIZATION), true) - CPPFLAGS += -D__SSE__ -endif diff --git a/source/blender/render/intern/source/Makefile b/source/blender/render/intern/source/Makefile deleted file mode 100644 index 5aaa66e7712..00000000000 --- a/source/blender/render/intern/source/Makefile +++ /dev/null @@ -1,65 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = render -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -# first /include is my own includes, second is the external interface. -# The external modules follow after. There should be a nicer way to say this. -CPPFLAGS += -I../include -CPPFLAGS += -I../../extern/include -CPPFLAGS += -I../../../blenlib -CPPFLAGS += -I../../../imbuf -CPPFLAGS += -I../../../makesdna -CPPFLAGS += -I../../../makesrna -CPPFLAGS += -I../../../blenkernel -CPPFLAGS += -I../../../quicktime -CPPFLAGS += -I../../../../kernel/gen_messaging -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -# not very neat: the rest of blender.. -CPPFLAGS += -I../../../editors/include -CPPFLAGS += $(NAN_SDLCFLAGS) -CPPFLAGS += -I../../../../../intern/smoke/extern - -ifeq ($(WITH_QUICKTIME), true) - CPPFLAGS += -DWITH_QUICKTIME -endif - -ifeq ($(WITH_FFMPEG),true) - CPPFLAGS += -DWITH_FFMPEG -endif - -ifeq ($(WITH_OPENEXR),true) - CPPFLAGS += -DWITH_OPENEXR -endif diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index 15c5bb3b86d..f7fecca6a60 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -3968,7 +3968,7 @@ static void set_fullsample_flag(Render *re, ObjectRen *obr) } } -/* split quads for pradictable baking +/* split quads for predictable baking * dir 1 == (0,1,2) (0,2,3), 2 == (1,3,0) (1,2,3) */ static void split_quads(ObjectRen *obr, int dir) diff --git a/source/blender/render/intern/source/texture.c b/source/blender/render/intern/source/texture.c index 9563e802945..a7a6727c508 100644 --- a/source/blender/render/intern/source/texture.c +++ b/source/blender/render/intern/source/texture.c @@ -1607,6 +1607,7 @@ static void texco_mapping(ShadeInput* shi, Tex* tex, MTex* mtex, float* co, floa do_2d_mapping(mtex, texvec, shi->vlr, shi->facenor, dxt, dyt); // translate and scale + /* texvec[0] = mtex->size[0]*(texvec[0] - 0.5f) + mtex->ofs[0] + 0.5f; texvec[1] = mtex->size[1]*(texvec[1] - 0.5f) + mtex->ofs[1] + 0.5f; if (shi->osatex) { @@ -1615,6 +1616,7 @@ static void texco_mapping(ShadeInput* shi, Tex* tex, MTex* mtex, float* co, floa dyt[0] = mtex->size[0]*dyt[0]; dyt[1] = mtex->size[1]*dyt[1]; } + */ /* problem: repeat-mirror is not a 'repeat' but 'extend' in imagetexture.c */ // TXF: bug was here, only modify texvec when repeat mode set, old code affected other modes too. @@ -1667,6 +1669,417 @@ static void texco_mapping(ShadeInput* shi, Tex* tex, MTex* mtex, float* co, floa } } +/* Bump code from 2.5 development cycle, has a number of bugs, but here for compatibility */ + +typedef struct CompatibleBump { + float nu[3], nv[3], nn[3]; + float dudnu, dudnv, dvdnu, dvdnv; + int nunvdone; +} CompatibleBump; + +static void compatible_bump_init(CompatibleBump *compat_bump) +{ + memset(compat_bump, 0, sizeof(*compat_bump)); + + compat_bump->dudnu = 1.0f; + compat_bump->dvdnv = 1.0f; +} + +static void compatible_bump_uv_derivs(CompatibleBump *compat_bump, ShadeInput *shi, MTex *mtex, int i) +{ + // uvmapping only, calculation of normal tangent u/v partial derivatives + // (should not be here, dudnu, dudnv, dvdnu & dvdnv should probably be part of ShadeInputUV struct, + // nu/nv in ShadeInput and this calculation should then move to shadeinput.c, shade_input_set_shade_texco() func.) + // NOTE: test for shi->obr->ob here, since vlr/obr/obi can be 'fake' when called from fastshade(), another reason to move it.. + // NOTE: shi->v1 is NULL when called from displace_render_vert, assigning verts in this case is not trivial because the shi quad face side is not know. + if ((mtex->texflag & MTEX_COMPAT_BUMP) && shi->obr && shi->obr->ob && shi->v1) { + if(mtex->mapto & (MAP_NORM|MAP_WARP) && !((mtex->tex->type==TEX_IMAGE) && (mtex->tex->imaflag & TEX_NORMALMAP))) { + MTFace* tf = RE_vlakren_get_tface(shi->obr, shi->vlr, i, NULL, 0); + int j1 = shi->i1, j2 = shi->i2, j3 = shi->i3; + + vlr_set_uv_indices(shi->vlr, &j1, &j2, &j3); + + // compute ortho basis around normal + if(!compat_bump->nunvdone) { + // render normal is negated + compat_bump->nn[0] = -shi->vn[0]; + compat_bump->nn[1] = -shi->vn[1]; + compat_bump->nn[2] = -shi->vn[2]; + ortho_basis_v3v3_v3(compat_bump->nu, compat_bump->nv, compat_bump->nn); + compat_bump->nunvdone= 1; + } + + if (tf) { + float *uv1 = tf->uv[j1], *uv2 = tf->uv[j2], *uv3 = tf->uv[j3]; + const float an[3] = {fabsf(compat_bump->nn[0]), fabsf(compat_bump->nn[1]), fabsf(compat_bump->nn[2])}; + const int a1 = (an[0] > an[1] && an[0] > an[2]) ? 1 : 0; + const int a2 = (an[2] > an[0] && an[2] > an[1]) ? 1 : 2; + const float dp1_a1 = shi->v1->co[a1] - shi->v3->co[a1]; + const float dp1_a2 = shi->v1->co[a2] - shi->v3->co[a2]; + const float dp2_a1 = shi->v2->co[a1] - shi->v3->co[a1]; + const float dp2_a2 = shi->v2->co[a2] - shi->v3->co[a2]; + const float du1 = uv1[0] - uv3[0], du2 = uv2[0] - uv3[0]; + const float dv1 = uv1[1] - uv3[1], dv2 = uv2[1] - uv3[1]; + const float dpdu_a1 = dv2*dp1_a1 - dv1*dp2_a1; + const float dpdu_a2 = dv2*dp1_a2 - dv1*dp2_a2; + const float dpdv_a1 = du1*dp2_a1 - du2*dp1_a1; + const float dpdv_a2 = du1*dp2_a2 - du2*dp1_a2; + float d = dpdu_a1*dpdv_a2 - dpdv_a1*dpdu_a2; + float uvd = du1*dv2 - dv1*du2; + + if (uvd == 0.f) uvd = 1e-5f; + if (d == 0.f) d = 1e-5f; + d = uvd / d; + + compat_bump->dudnu = (dpdv_a2*compat_bump->nu[a1] - dpdv_a1*compat_bump->nu[a2])*d; + compat_bump->dvdnu = (dpdu_a1*compat_bump->nu[a2] - dpdu_a2*compat_bump->nu[a1])*d; + compat_bump->dudnv = (dpdv_a2*compat_bump->nv[a1] - dpdv_a1*compat_bump->nv[a2])*d; + compat_bump->dvdnv = (dpdu_a1*compat_bump->nv[a2] - dpdu_a2*compat_bump->nv[a1])*d; + } + } + } +} + +static int compatible_bump_compute(CompatibleBump *compat_bump, ShadeInput *shi, MTex *mtex, Tex *tex, TexResult *texres, float Tnor, float *co, float *dx, float *dy, float *texvec, float *dxt, float *dyt) +{ + TexResult ttexr = {0, 0, 0, 0, 0, texres->talpha, NULL}; // temp TexResult + float tco[3], texv[3], cd, ud, vd, du, dv, idu, idv; + const int fromrgb = ((tex->type == TEX_IMAGE) || ((tex->flag & TEX_COLORBAND)!=0)); + const float bf = 0.04f*Tnor*mtex->norfac; + int rgbnor; + // disable internal bump eval + float* nvec = texres->nor; + texres->nor = NULL; + // du & dv estimates, constant value defaults + du = dv = 0.01f; + + // compute ortho basis around normal + if(!compat_bump->nunvdone) { + // render normal is negated + negate_v3_v3(compat_bump->nn, shi->vn); + ortho_basis_v3v3_v3(compat_bump->nu, compat_bump->nv, compat_bump->nn); + compat_bump->nunvdone= 1; + } + + // two methods, either constant based on main image resolution, + // (which also works without osa, though of course not always good (or even very bad) results), + // or based on tex derivative max values (osa only). Not sure which is best... + + if (!shi->osatex && (tex->type == TEX_IMAGE) && tex->ima) { + // in case we have no proper derivatives, fall back to + // computing du/dv it based on image size + ImBuf* ibuf = BKE_image_get_ibuf(tex->ima, &tex->iuser); + if (ibuf) { + du = 1.f/(float)ibuf->x; + dv = 1.f/(float)ibuf->y; + } + } + else if (shi->osatex) { + // we have derivatives, can compute proper du/dv + if (tex->type == TEX_IMAGE) { // 2d image, use u & v max. of dx/dy 2d vecs + const float adx[2] = {fabsf(dx[0]), fabsf(dx[1])}; + const float ady[2] = {fabsf(dy[0]), fabsf(dy[1])}; + du = MAX2(adx[0], ady[0]); + dv = MAX2(adx[1], ady[1]); + } + else { // 3d procedural, estimate from all dx/dy elems + const float adx[3] = {fabsf(dx[0]), fabsf(dx[1]), fabsf(dx[2])}; + const float ady[3] = {fabsf(dy[0]), fabsf(dy[1]), fabsf(dy[2])}; + du = MAX3(adx[0], adx[1], adx[2]); + dv = MAX3(ady[1], ady[1], ady[2]); + } + } + + // center, main return value + texco_mapping(shi, tex, mtex, co, dx, dy, texvec, dxt, dyt); + rgbnor = multitex_mtex(shi, mtex, texvec, dxt, dyt, texres); + cd = fromrgb ? (texres->tr + texres->tg + texres->tb)*0.33333333f : texres->tin; + + if (mtex->texco == TEXCO_UV) { + // for the uv case, use the same value for both du/dv, + // since individually scaling the normal derivatives makes them useless... + du = MIN2(du, dv); + idu = (du < 1e-5f) ? bf : (bf/du); + + // +u val + tco[0] = co[0] + compat_bump->dudnu*du; + tco[1] = co[1] + compat_bump->dvdnu*du; + tco[2] = 0.f; + texco_mapping(shi, tex, mtex, tco, dx, dy, texv, dxt, dyt); + multitex_mtex(shi, mtex, texv, dxt, dyt, &ttexr); + ud = idu*(cd - (fromrgb ? (ttexr.tr + ttexr.tg + ttexr.tb)*0.33333333f : ttexr.tin)); + + // +v val + tco[0] = co[0] + compat_bump->dudnv*du; + tco[1] = co[1] + compat_bump->dvdnv*du; + tco[2] = 0.f; + texco_mapping(shi, tex, mtex, tco, dx, dy, texv, dxt, dyt); + multitex_mtex(shi, mtex, texv, dxt, dyt, &ttexr); + vd = idu*(cd - (fromrgb ? (ttexr.tr + ttexr.tg + ttexr.tb)*0.33333333f : ttexr.tin)); + } + else { + float tu[3], tv[3]; + + copy_v3_v3(tu, compat_bump->nu); + copy_v3_v3(tv, compat_bump->nv); + + idu = (du < 1e-5f) ? bf : (bf/du); + idv = (dv < 1e-5f) ? bf : (bf/dv); + + if ((mtex->texco == TEXCO_ORCO) && shi->obr && shi->obr->ob) { + mul_mat3_m4_v3(shi->obr->ob->imat, tu); + mul_mat3_m4_v3(shi->obr->ob->imat, tv); + normalize_v3(tu); + normalize_v3(tv); + } + else if (mtex->texco == TEXCO_GLOB) { + mul_mat3_m4_v3(R.viewinv, tu); + mul_mat3_m4_v3(R.viewinv, tv); + } + else if (mtex->texco == TEXCO_OBJECT && mtex->object) { + mul_mat3_m4_v3(mtex->object->imat, tu); + mul_mat3_m4_v3(mtex->object->imat, tv); + normalize_v3(tu); + normalize_v3(tv); + } + + // +u val + tco[0] = co[0] + tu[0]*du; + tco[1] = co[1] + tu[1]*du; + tco[2] = co[2] + tu[2]*du; + texco_mapping(shi, tex, mtex, tco, dx, dy, texv, dxt, dyt); + multitex_mtex(shi, mtex, texv, dxt, dyt, &ttexr); + ud = idu*(cd - (fromrgb ? (ttexr.tr + ttexr.tg + ttexr.tb)*0.33333333f : ttexr.tin)); + + // +v val + tco[0] = co[0] + tv[0]*dv; + tco[1] = co[1] + tv[1]*dv; + tco[2] = co[2] + tv[2]*dv; + texco_mapping(shi, tex, mtex, tco, dx, dy, texv, dxt, dyt); + multitex_mtex(shi, mtex, texv, dxt, dyt, &ttexr); + vd = idv*(cd - (fromrgb ? (ttexr.tr + ttexr.tg + ttexr.tb)*0.33333333f : ttexr.tin)); + } + + // bumped normal + compat_bump->nu[0] += ud*compat_bump->nn[0]; + compat_bump->nu[1] += ud*compat_bump->nn[1]; + compat_bump->nu[2] += ud*compat_bump->nn[2]; + compat_bump->nv[0] += vd*compat_bump->nn[0]; + compat_bump->nv[1] += vd*compat_bump->nn[1]; + compat_bump->nv[2] += vd*compat_bump->nn[2]; + cross_v3_v3v3(nvec, compat_bump->nu, compat_bump->nv); + + nvec[0] = -nvec[0]; + nvec[1] = -nvec[1]; + nvec[2] = -nvec[2]; + texres->nor = nvec; + + rgbnor |= TEX_NOR; + return rgbnor; +} + +/* Improved bump code from later in 2.5 development cycle */ + +typedef struct NTapBump { + int nunvdone; + + // bumpmapping + float vNacc[3]; // original surface normal minus the surface gradient of every bump map which is encountered + float vR1[3], vR2[3]; // cross products (sigma_y, original_normal), (original_normal, sigma_x) + float sgn_det; // sign of the determinant of the matrix {sigma_x, sigma_y, original_normal} +} NTapBump; + +static void ntap_bump_init(NTapBump *ntap_bump) +{ + memset(ntap_bump, 0, sizeof(*ntap_bump)); +} + +static int ntap_bump_compute(NTapBump *ntap_bump, ShadeInput *shi, MTex *mtex, Tex *tex, TexResult *texres, float Tnor, float *co, float *dx, float *dy, float *texvec, float *dxt, float *dyt) +{ + TexResult ttexr = {0, 0, 0, 0, 0, texres->talpha, NULL}; // temp TexResult + + const int fromrgb = ((tex->type == TEX_IMAGE) || ((tex->flag & TEX_COLORBAND)!=0)); + float Hscale = 0.1f * Tnor*mtex->norfac; // factor 0.1 proved to look like the previous bump code + + // 2 channels for 2D texture and 3 for 3D textures. + const int nr_channels = (mtex->texco == TEXCO_UV)? 2 : 3; + int c, rgbnor; + float dHdx, dHdy; + + // disable internal bump eval in sampler, save pointer + float *nvec = texres->nor; + texres->nor = NULL; + + // TODO: solve this Hscale issue more elegantly. + if( mtex->texflag & MTEX_BUMP_TEXTURESPACE ) + if(tex->ima) + Hscale *= 130.0f; + + if(!(mtex->texflag & MTEX_5TAP_BUMP)) { + // compute height derivatives with respect to output image pixel coordinates x and y + float STll[3], STlr[3], STul[3]; + float Hll, Hlr, Hul; + + texco_mapping(shi, tex, mtex, co, dx, dy, texvec, dxt, dyt); + + for(c=0; c<nr_channels; c++) { + // dx contains the derivatives (du/dx, dv/dx) + // dy contains the derivatives (du/dy, dv/dy) + STll[c] = texvec[c]; + STlr[c] = texvec[c]+dxt[c]; + STul[c] = texvec[c]+dyt[c]; + } + + // clear unused derivatives + for(c=nr_channels; c<3; c++) { + STll[c] = 0.0f; + STlr[c] = 0.0f; + STul[c] = 0.0f; + } + + // use texres for the center sample, set rgbnor + rgbnor = multitex_mtex(shi, mtex, STll, dxt, dyt, texres); + Hll = (fromrgb)? RGBTOBW(texres->tr, texres->tg, texres->tb) : texres->tin; + + // use ttexr for the other 2 taps + multitex_mtex(shi, mtex, STlr, dxt, dyt, &ttexr); + Hlr = (fromrgb)? RGBTOBW(ttexr.tr, ttexr.tg, ttexr.tb) : ttexr.tin; + + multitex_mtex(shi, mtex, STul, dxt, dyt, &ttexr); + Hul = (fromrgb)? RGBTOBW(ttexr.tr, ttexr.tg, ttexr.tb) : ttexr.tin; + + dHdx = Hscale*(Hlr - Hll); + dHdy = Hscale*(Hul - Hll); + } + else { + /* same as above, but doing 5 taps, increasing quality at cost of speed */ + float STc[3], STl[3], STr[3], STd[3], STu[3]; + float Hc, Hl, Hr, Hd, Hu; + + texco_mapping(shi, tex, mtex, co, dx, dy, texvec, dxt, dyt); + + for(c=0; c<nr_channels; c++) { + STc[c] = texvec[c]; + STl[c] = texvec[c] - 0.5f*dxt[c]; + STr[c] = texvec[c] + 0.5f*dxt[c]; + STd[c] = texvec[c] - 0.5f*dyt[c]; + STu[c] = texvec[c] + 0.5f*dyt[c]; + } + + // clear unused derivatives + for(c=nr_channels; c<3; c++) { + STc[c] = 0.0f; + STl[c] = 0.0f; + STr[c] = 0.0f; + STd[c] = 0.0f; + STu[c] = 0.0f; + } + + // use texres for the center sample, set rgbnor + rgbnor = multitex_mtex(shi, mtex, STc, dxt, dyt, texres); + Hc = (fromrgb)? RGBTOBW(texres->tr, texres->tg, texres->tb) : texres->tin; + + // use ttexr for the other taps + multitex_mtex(shi, mtex, STl, dxt, dyt, &ttexr); + Hl = (fromrgb)? RGBTOBW(ttexr.tr, ttexr.tg, ttexr.tb) : ttexr.tin; + multitex_mtex(shi, mtex, STr, dxt, dyt, &ttexr); + Hr = (fromrgb)? RGBTOBW(ttexr.tr, ttexr.tg, ttexr.tb) : ttexr.tin; + multitex_mtex(shi, mtex, STd, dxt, dyt, &ttexr); + Hd = (fromrgb)? RGBTOBW(ttexr.tr, ttexr.tg, ttexr.tb) : ttexr.tin; + multitex_mtex(shi, mtex, STu, dxt, dyt, &ttexr); + Hu = (fromrgb)? RGBTOBW(ttexr.tr, ttexr.tg, ttexr.tb) : ttexr.tin; + + dHdx = Hscale*(Hr - Hl); + dHdy = Hscale*(Hu - Hd); + } + + // restore pointer + texres->nor = nvec; + + /* replaced newbump with code based on listing 1 and 2 of + [Mik10] Mikkelsen M. S.: Bump Mapping Unparametrized Surfaces on the GPU. + -> http://jbit.net/~sparky/sfgrad_bump/mm_sfgrad_bump.pdf */ + + if(!ntap_bump->nunvdone) { + // initialize normal perturbation vectors + int xyz; + float fDet, abs_fDet; + // object2view and inverted matrix + float obj2view[3][3], view2obj[3][3], tmp[4][4]; + // local copies of derivatives and normal + float dPdx[3], dPdy[3], vN[3]; + VECCOPY(dPdx, shi->dxco); + VECCOPY(dPdy, shi->dyco); + VECCOPY(vN, shi->vn); + + if( mtex->texflag & MTEX_BUMP_OBJECTSPACE ) { + // TODO: these calculations happen for every pixel! + // -> move to shi->obi + mul_m4_m4m4(tmp, shi->obr->ob->obmat, R.viewmat); + copy_m3_m4(obj2view, tmp); // use only upper left 3x3 matrix + invert_m3_m3(view2obj, obj2view); + + // generate the surface derivatives in object space + mul_m3_v3(view2obj, dPdx); + mul_m3_v3( view2obj, dPdy ); + // generate the unit normal in object space + mul_transposed_m3_v3( obj2view, vN ); + normalize_v3(vN); + } + + cross_v3_v3v3(ntap_bump->vR1, dPdy, vN); + cross_v3_v3v3(ntap_bump->vR2, vN, dPdx); + fDet = dot_v3v3(dPdx, ntap_bump->vR1); + ntap_bump->sgn_det = (fDet < 0)? -1.0f: 1.0f; + abs_fDet = ntap_bump->sgn_det * fDet; + + if( mtex->texflag & MTEX_BUMP_TEXTURESPACE ) { + if(tex->ima) { + // crazy hack solution that gives results similar to normal mapping - part 1 + normalize_v3(ntap_bump->vR1); + normalize_v3(ntap_bump->vR2); + abs_fDet = 1.0f; + } + } + + for(xyz=0; xyz<3; xyz++) + ntap_bump->vNacc[xyz] = abs_fDet * vN[xyz]; + + if( mtex->texflag & MTEX_BUMP_OBJECTSPACE ) { + // pre do transform of texres->nor by the inverse transposed of obj2view + mul_transposed_m3_v3( view2obj, ntap_bump->vNacc ); + mul_transposed_m3_v3( view2obj, ntap_bump->vR1 ); + mul_transposed_m3_v3( view2obj, ntap_bump->vR2 ); + } + + ntap_bump->nunvdone= 1; + } + + if( mtex->texflag & MTEX_BUMP_TEXTURESPACE ) { + if(tex->ima) { + // crazy hack solution that gives results similar to normal mapping - part 2 + float vec[2]; + + vec[0] = tex->ima->gen_x*dxt[0]; + vec[1] = tex->ima->gen_y*dxt[1]; + dHdx *= 1.0f/len_v2(vec); + vec[0] = tex->ima->gen_x*dyt[0]; + vec[1] = tex->ima->gen_y*dyt[1]; + dHdy *= 1.0f/len_v2(vec); + } + } + + // subtract the surface gradient from vNacc + for(c=0; c<3; c++) { + float vSurfGrad_compi = ntap_bump->sgn_det * (dHdx * ntap_bump->vR1[c] + dHdy * ntap_bump->vR2[c]); + ntap_bump->vNacc[c] -= vSurfGrad_compi; + texres->nor[c] = ntap_bump->vNacc[c]; // copy + } + + rgbnor |= TEX_NOR; + return rgbnor; +} + void do_material_tex(ShadeInput *shi) { MTex *mtex; @@ -1676,8 +2089,13 @@ void do_material_tex(ShadeInput *shi) float fact, facm, factt, facmm, stencilTin=1.0; float texvec[3], dxt[3], dyt[3], tempvec[3], norvec[3], warpvec[3]={0.0f, 0.0f, 0.0f}, Tnor=1.0; int tex_nr, rgbnor= 0, warpdone=0; - float nu[3] = {0,0,0}, nv[3] = {0,0,0}, nn[3] = {0,0,0}, dudnu = 1.f, dudnv = 0.f, dvdnu = 0.f, dvdnv = 1.f; // bump mapping - int nunvdone= 0, newbump; + + CompatibleBump compat_bump; + NTapBump ntap_bump; + int use_compat_bump, use_ntap_bump; + + compatible_bump_init(&compat_bump); + ntap_bump_init(&ntap_bump); if (R.r.scemode & R_NO_TEX) return; /* here: test flag if there's a tex (todo) */ @@ -1693,9 +2111,15 @@ void do_material_tex(ShadeInput *shi) tex= mtex->tex; if(tex==0) continue; + use_compat_bump= (mtex->texflag & MTEX_COMPAT_BUMP); + use_ntap_bump= (mtex->texflag & (MTEX_3TAP_BUMP|MTEX_5TAP_BUMP)); + /* XXX texture node trees don't work for this yet */ - newbump= (mtex->texflag & MTEX_NEW_BUMP) && !(tex->nodetree && tex->use_nodes); - + if(tex->nodetree && tex->use_nodes) { + use_compat_bump = 0; + use_ntap_bump = 0; + } + /* which coords */ if(mtex->texco==TEXCO_ORCO) { if(mtex->texflag & MTEX_DUPLI_MAPTO) { @@ -1769,57 +2193,7 @@ void do_material_tex(ShadeInput *shi) dx= suv->dxuv; dy= suv->dyuv; - // uvmapping only, calculation of normal tangent u/v partial derivatives - // (should not be here, dudnu, dudnv, dvdnu & dvdnv should probably be part of ShadeInputUV struct, - // nu/nv in ShadeInput and this calculation should then move to shadeinput.c, shade_input_set_shade_texco() func.) - // NOTE: test for shi->obr->ob here, since vlr/obr/obi can be 'fake' when called from fastshade(), another reason to move it.. - // NOTE: shi->v1 is NULL when called from displace_render_vert, assigning verts in this case is not trivial because the shi quad face side is not know. - if ((mtex->texflag & MTEX_NEW_BUMP) && shi->obr && shi->obr->ob && shi->v1) { - if(mtex->mapto & (MAP_NORM|MAP_WARP) && !((tex->type==TEX_IMAGE) && (tex->imaflag & TEX_NORMALMAP))) { - MTFace* tf = RE_vlakren_get_tface(shi->obr, shi->vlr, i, NULL, 0); - int j1 = shi->i1, j2 = shi->i2, j3 = shi->i3; - - vlr_set_uv_indices(shi->vlr, &j1, &j2, &j3); - - // compute ortho basis around normal - if(!nunvdone) { - // render normal is negated - nn[0] = -shi->vn[0]; - nn[1] = -shi->vn[1]; - nn[2] = -shi->vn[2]; - ortho_basis_v3v3_v3( nu, nv,nn); - nunvdone= 1; - } - - if (tf) { - float *uv1 = tf->uv[j1], *uv2 = tf->uv[j2], *uv3 = tf->uv[j3]; - const float an[3] = {fabsf(nn[0]), fabsf(nn[1]), fabsf(nn[2])}; - const int a1 = (an[0] > an[1] && an[0] > an[2]) ? 1 : 0; - const int a2 = (an[2] > an[0] && an[2] > an[1]) ? 1 : 2; - const float dp1_a1 = shi->v1->co[a1] - shi->v3->co[a1]; - const float dp1_a2 = shi->v1->co[a2] - shi->v3->co[a2]; - const float dp2_a1 = shi->v2->co[a1] - shi->v3->co[a1]; - const float dp2_a2 = shi->v2->co[a2] - shi->v3->co[a2]; - const float du1 = uv1[0] - uv3[0], du2 = uv2[0] - uv3[0]; - const float dv1 = uv1[1] - uv3[1], dv2 = uv2[1] - uv3[1]; - const float dpdu_a1 = dv2*dp1_a1 - dv1*dp2_a1; - const float dpdu_a2 = dv2*dp1_a2 - dv1*dp2_a2; - const float dpdv_a1 = du1*dp2_a1 - du2*dp1_a1; - const float dpdv_a2 = du1*dp2_a2 - du2*dp1_a2; - float d = dpdu_a1*dpdv_a2 - dpdv_a1*dpdu_a2; - float uvd = du1*dv2 - dv1*du2; - - if (uvd == 0.f) uvd = 1e-5f; - if (d == 0.f) d = 1e-5f; - d = uvd / d; - - dudnu = (dpdv_a2*nu[a1] - dpdv_a1*nu[a2])*d; - dvdnu = (dpdu_a1*nu[a2] - dpdu_a2*nu[a1])*d; - dudnv = (dpdv_a2*nv[a1] - dpdv_a1*nv[a2])*d; - dvdnv = (dpdu_a1*nv[a2] - dpdu_a2*nv[a1])*d; - } - } - } + compatible_bump_uv_derivs(&compat_bump, shi, mtex, i); } } else if(mtex->texco==TEXCO_WINDOW) { @@ -1858,138 +2232,14 @@ void do_material_tex(ShadeInput *shi) } /* XXX texture node trees don't work for this yet */ - if(newbump) { - // compute ortho basis around normal - if(!nunvdone) { - // render normal is negated - nn[0] = -shi->vn[0]; - nn[1] = -shi->vn[1]; - nn[2] = -shi->vn[2]; - ortho_basis_v3v3_v3( nu, nv,nn); - nunvdone= 1; - } - - if(texres.nor && !((tex->type==TEX_IMAGE) && (tex->imaflag & TEX_NORMALMAP))) { - TexResult ttexr = {0, 0, 0, 0, 0, texres.talpha, NULL}; // temp TexResult - float tco[3], texv[3], cd, ud, vd, du, dv, idu, idv; - const int fromrgb = ((tex->type == TEX_IMAGE) || ((tex->flag & TEX_COLORBAND)!=0)); - const float bf = 0.04f*Tnor*stencilTin*mtex->norfac; - // disable internal bump eval - float* nvec = texres.nor; - texres.nor = NULL; - // du & dv estimates, constant value defaults - du = dv = 0.01f; - - // two methods, either constant based on main image resolution, - // (which also works without osa, though of course not always good (or even very bad) results), - // or based on tex derivative max values (osa only). Not sure which is best... - - if (!shi->osatex && (tex->type == TEX_IMAGE) && tex->ima) { - // in case we have no proper derivatives, fall back to - // computing du/dv it based on image size - ImBuf* ibuf = BKE_image_get_ibuf(tex->ima, &tex->iuser); - if (ibuf) { - du = 1.f/(float)ibuf->x; - dv = 1.f/(float)ibuf->y; - } - } - else if (shi->osatex) { - // we have derivatives, can compute proper du/dv - if (tex->type == TEX_IMAGE) { // 2d image, use u & v max. of dx/dy 2d vecs - const float adx[2] = {fabsf(dx[0]), fabsf(dx[1])}; - const float ady[2] = {fabsf(dy[0]), fabsf(dy[1])}; - du = MAX2(adx[0], ady[0]); - dv = MAX2(adx[1], ady[1]); - } - else { // 3d procedural, estimate from all dx/dy elems - const float adx[3] = {fabsf(dx[0]), fabsf(dx[1]), fabsf(dx[2])}; - const float ady[3] = {fabsf(dy[0]), fabsf(dy[1]), fabsf(dy[2])}; - du = MAX3(adx[0], adx[1], adx[2]); - dv = MAX3(ady[1], ady[1], ady[2]); - } - } - - // center, main return value - texco_mapping(shi, tex, mtex, co, dx, dy, texvec, dxt, dyt); - rgbnor = multitex_mtex(shi, mtex, texvec, dxt, dyt, &texres); - cd = fromrgb ? (texres.tr + texres.tg + texres.tb)*0.33333333f : texres.tin; - - if (mtex->texco == TEXCO_UV) { - // for the uv case, use the same value for both du/dv, - // since individually scaling the normal derivatives makes them useless... - du = MIN2(du, dv); - idu = (du < 1e-5f) ? bf : (bf/du); - - // +u val - tco[0] = co[0] + dudnu*du; - tco[1] = co[1] + dvdnu*du; - tco[2] = 0.f; - texco_mapping(shi, tex, mtex, tco, dx, dy, texv, dxt, dyt); - multitex_mtex(shi, mtex, texv, dxt, dyt, &ttexr); - ud = idu*(cd - (fromrgb ? (ttexr.tr + ttexr.tg + ttexr.tb)*0.33333333f : ttexr.tin)); - - // +v val - tco[0] = co[0] + dudnv*du; - tco[1] = co[1] + dvdnv*du; - tco[2] = 0.f; - texco_mapping(shi, tex, mtex, tco, dx, dy, texv, dxt, dyt); - multitex_mtex(shi, mtex, texv, dxt, dyt, &ttexr); - vd = idu*(cd - (fromrgb ? (ttexr.tr + ttexr.tg + ttexr.tb)*0.33333333f : ttexr.tin)); - } - else { - float tu[3] = {nu[0], nu[1], nu[2]}, tv[3] = {nv[0], nv[1], nv[2]}; - - idu = (du < 1e-5f) ? bf : (bf/du); - idv = (dv < 1e-5f) ? bf : (bf/dv); - - if ((mtex->texco == TEXCO_ORCO) && shi->obr && shi->obr->ob) { - mul_mat3_m4_v3(shi->obr->ob->imat, tu); - mul_mat3_m4_v3(shi->obr->ob->imat, tv); - normalize_v3(tu); - normalize_v3(tv); - } - else if (mtex->texco == TEXCO_GLOB) { - mul_mat3_m4_v3(R.viewinv, tu); - mul_mat3_m4_v3(R.viewinv, tv); - } - else if (mtex->texco == TEXCO_OBJECT && mtex->object) { - mul_mat3_m4_v3(mtex->object->imat, tu); - mul_mat3_m4_v3(mtex->object->imat, tv); - normalize_v3(tu); - normalize_v3(tv); - } - - // +u val - tco[0] = co[0] + tu[0]*du; - tco[1] = co[1] + tu[1]*du; - tco[2] = co[2] + tu[2]*du; - texco_mapping(shi, tex, mtex, tco, dx, dy, texv, dxt, dyt); - multitex_mtex(shi, mtex, texv, dxt, dyt, &ttexr); - ud = idu*(cd - (fromrgb ? (ttexr.tr + ttexr.tg + ttexr.tb)*0.33333333f : ttexr.tin)); - - // +v val - tco[0] = co[0] + tv[0]*dv; - tco[1] = co[1] + tv[1]*dv; - tco[2] = co[2] + tv[2]*dv; - texco_mapping(shi, tex, mtex, tco, dx, dy, texv, dxt, dyt); - multitex_mtex(shi, mtex, texv, dxt, dyt, &ttexr); - vd = idv*(cd - (fromrgb ? (ttexr.tr + ttexr.tg + ttexr.tb)*0.33333333f : ttexr.tin)); - } - - // bumped normal - nu[0] += ud*nn[0]; - nu[1] += ud*nn[1]; - nu[2] += ud*nn[2]; - nv[0] += vd*nn[0]; - nv[1] += vd*nn[1]; - nv[2] += vd*nn[2]; - cross_v3_v3v3(nvec, nu, nv); - - nvec[0] = -nvec[0]; - nvec[1] = -nvec[1]; - nvec[2] = -nvec[2]; - texres.nor = nvec; - rgbnor |= TEX_NOR; + if(texres.nor && !((tex->type==TEX_IMAGE) && (tex->imaflag & TEX_NORMALMAP))) { + if(use_compat_bump) { + rgbnor = compatible_bump_compute(&compat_bump, shi, mtex, tex, + &texres, Tnor*stencilTin, co, dx, dy, texvec, dxt, dyt); + } + else if(use_ntap_bump) { + rgbnor = ntap_bump_compute(&ntap_bump, shi, mtex, tex, + &texres, Tnor*stencilTin, co, dx, dy, texvec, dxt, dyt); } else { texco_mapping(shi, tex, mtex, co, dx, dy, texvec, dxt, dyt); @@ -2184,7 +2434,7 @@ void do_material_tex(ShadeInput *shi) } else { /* XXX texture node trees don't work for this yet */ - if (newbump) { + if (use_compat_bump || use_ntap_bump) { shi->vn[0] = texres.nor[0]; shi->vn[1] = texres.nor[1]; shi->vn[2] = texres.nor[2]; diff --git a/source/blender/windowmanager/CMakeLists.txt b/source/blender/windowmanager/CMakeLists.txt index ecd7f3be12c..2be62d5a8b2 100644 --- a/source/blender/windowmanager/CMakeLists.txt +++ b/source/blender/windowmanager/CMakeLists.txt @@ -96,7 +96,7 @@ if(WITH_CODEC_FFMPEG) endif() if(WITH_PYTHON) - list(APPEND INC ../python ${PYTHON_INC}) + list(APPEND INC ../python ${PYTHON_INCLUDE_DIRS}) add_definitions(-DWITH_PYTHON) endif() diff --git a/source/blender/windowmanager/Makefile b/source/blender/windowmanager/Makefile deleted file mode 100644 index 1596921b5ee..00000000000 --- a/source/blender/windowmanager/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) Blender Foundation. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Bounces make to subdirectories. - -SOURCEDIR = source/blender/windowmanager -DIRS = intern - -include nan_subdirs.mk diff --git a/source/blender/windowmanager/intern/Makefile b/source/blender/windowmanager/intern/Makefile deleted file mode 100644 index 60be5fed4b2..00000000000 --- a/source/blender/windowmanager/intern/Makefile +++ /dev/null @@ -1,98 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = windowmanager -DIR = $(OCGDIR)/blender/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -# OpenGL and Python -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += $(OGL_CPPFLAGS) -CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION) - -# PreProcessor stuff - -CPPFLAGS += -I$(NAN_GHOST)/include -CPPFLAGS += -I$(NAN_ELBEEM)/include -CPPFLAGS += $(NAN_SDLCFLAGS) - -# modules -CPPFLAGS += -I../../editors/include -CPPFLAGS += -I../../python -CPPFLAGS += -I../../makesdna -CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../blenlib -CPPFLAGS += -I../../blenkernel -CPPFLAGS += -I../../nodes -CPPFLAGS += -I../../imbuf -CPPFLAGS += -I../../blenloader -CPPFLAGS += -I../../gpu -CPPFLAGS += -I../../render/extern/include -CPPFLAGS += -I../../../kernel/gen_system -CPPFLAGS += -I../../blenfont - -# path to the guarded memory allocator -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I$(NAN_MEMUTIL)/include - -ifeq ($(INTERNATIONAL), true) - CPPFLAGS += -DINTERNATIONAL -endif - -ifeq ($(WITH_QUICKTIME),true) - CPPFLAGS += -I../quicktime - CPPFLAGS += -DWITH_QUICKTIME -endif - -ifeq ($(WITH_OPENCOLLADA), true) - CPPFLAGS += -DWITH_COLLADA -endif - -ifeq ($(NAN_BUILDINFO), true) - CPPFLAGS += -DNAN_BUILDINFO -endif - -ifeq ($(OS),linux) - ifeq ($(CPU),alpha) - CPPFLAGS += -I$(NAN_MESA)/include - endif - ifeq ($(CPU),i386) - CPPFLAGS += -I$(NAN_MESA)/include - endif - ifeq ($(CPU),powerpc) - CPPFLAGS += -I/usr/src/MesaCVS/include - endif -endif - -# path to our own headerfiles -CPPFLAGS += -I.. diff --git a/source/blenderplayer/bad_level_call_stubs/Makefile b/source/blenderplayer/bad_level_call_stubs/Makefile deleted file mode 100644 index 49efd08c710..00000000000 --- a/source/blenderplayer/bad_level_call_stubs/Makefile +++ /dev/null @@ -1,45 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = blenkernel_blc -DIR = $(OCGDIR)/blenderplayer/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_2_C_WARNINGS) -CFLAGS += $(FIX_STUBS_WARNINGS) - -CPPFLAGS += $(OGL_CPPFLAGS) -CPPFLAGS += -I../../source/blender/makesdna -CPPFLAGS += -I../../source/blender/makesrna - -# path to our own external headerfiles -CPPFLAGS += -I.. - diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt index c46f6935a7b..a1f894ed63b 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -306,6 +306,7 @@ if(WITH_INSTALL) endif() if(WITH_PYTHON) + # note, as far as python is concerned 'RelWithDebInfo' is not debug since its without debug flags. if(NOT CMAKE_BUILD_TYPE) # hack: with multi-configuration generator this is "", so for now copy both python31.dll/zip and python31_d.dll/zip add_custom_command(TARGET blender POST_BUILD @@ -323,7 +324,7 @@ if(WITH_INSTALL) COMMAND if \"$(ConfigurationName)\" == \"MinSizeRel\" xcopy /E /Y \"${LIBDIR}\\release\\python31\\*.*\" \"${TARGETDIR}\\${BLENDER_VERSION}\\python\\lib\\\" ) else() - if(CMAKE_BUILD_TYPE STREQUAL Debug OR CMAKE_BUILD_TYPE STREQUAL RelWithDebInfo) + if(CMAKE_BUILD_TYPE STREQUAL Debug) add_custom_command(TARGET blender POST_BUILD MAIN_DEPENDENCY blender diff --git a/source/creator/Makefile b/source/creator/Makefile deleted file mode 100644 index 08f732ad486..00000000000 --- a/source/creator/Makefile +++ /dev/null @@ -1,84 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): GSR -# -# ***** END GPL LICENSE BLOCK ***** -# - -LIBNAME = creator -DIR = $(OCGDIR)/creator - -# this HAS to go -CSRCS = creator.c - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -CPPFLAGS += -I../blender/render/extern/include - -# two needed for the kernel -CPPFLAGS += -I../blender/imbuf -CPPFLAGS += -I../blender/makesdna -CPPFLAGS += -I../blender/makesrna -CPPFLAGS += -I../blender/blenlib -CPPFLAGS += -I../blender/editors/include -CPPFLAGS += -I../blender/renderconverter -CPPFLAGS += -I../blender/blenkernel -CPPFLAGS += -I../blender/python -CPPFLAGS += -I../blender/blenloader -CPPFLAGS += -I../blender/gpu -CPPFLAGS += -I../blender/windowmanager -CPPFLAGS += -I../kernel/gen_system -CPPFLAGS += -I../kernel/gen_messaging -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I$(NAN_GLEW)/include - -ifeq ($(WITH_QUICKTIME), true) - CPPFLAGS += -I$(NAN_QUICKTIME)/include -DWITH_QUICKTIME -endif -ifeq ($(WITH_OPENJPEG), true) - CPPFLAGS += -DWITH_OPENJPEG -endif - -ifeq ($(WITH_BINRELOC), true) - CPPFLAGS += -I$(NANBLENDERHOME)/extern/binreloc/include -DWITH_BINRELOC -endif - -ifeq ($(WITH_TIFF), true) - CPPFLAGS += -DWITH_TIFF -endif - -ifeq ($(WITH_CINEON), true) - CPPFLAGS += -DWITH_CINEON -endif - -ifeq ($(WITH_HDR), true) - CPPFLAGS += -DWITH_HDR -endif - -CPPFLAGS += -I$(OPENGL_HEADERS) diff --git a/source/creator/creator.c b/source/creator/creator.c index 71173b7b483..23fc8f0d6c7 100644 --- a/source/creator/creator.c +++ b/source/creator/creator.c @@ -68,6 +68,7 @@ #include "BKE_utildefines.h" #include "BKE_blender.h" #include "BKE_context.h" +#include "BKE_depsgraph.h" // for DAG_on_load_update #include "BKE_font.h" #include "BKE_global.h" #include "BKE_main.h" @@ -274,6 +275,7 @@ static int print_help(int UNUSED(argc), char **UNUSED(argv), void *data) BLI_argsPrintArgDoc(ba, "--python"); BLI_argsPrintArgDoc(ba, "--python-console"); + BLI_argsPrintArgDoc(ba, "--addons"); #ifdef WIN32 BLI_argsPrintArgDoc(ba, "-R"); @@ -927,6 +929,28 @@ static int run_python_console(int UNUSED(argc), char **argv, void *data) #endif /* WITH_PYTHON */ } +static int set_addons(int argc, char **argv, void *data) +{ + /* workaround for scripts not getting a bpy.context.scene, causes internal errors elsewhere */ + if (argc > 1) { +#ifdef WITH_PYTHON + char *str= malloc(strlen(argv[1]) + 100); + bContext *C= data; + sprintf(str, "[__import__('bpy').utils.addon_enable(i) for i in '%s'.split(',')]", argv[1]); + BPY_CTX_SETUP(BPY_string_exec(C, str)); + free(str); +#else + (void)argv; (void)data; /* unused */ +#endif /* WITH_PYTHON */ + return 1; + } + else { + printf("\nError: you must specify a comma separated list after '--addons'.\n"); + return 0; + } +} + + static int load_file(int UNUSED(argc), char **argv, void *data) { bContext *C = data; @@ -957,6 +981,8 @@ static int load_file(int UNUSED(argc), char **argv, void *data) WM_check(C); G.relbase_valid = 1; if (CTX_wm_manager(C) == NULL) CTX_wm_manager_set(C, wm); /* reset wm */ + + DAG_on_load_update(CTX_data_main(C), TRUE); } /* WM_read_file() runs normally but since we're in background mode do here */ @@ -1075,6 +1101,7 @@ void setupArguments(bContext *C, bArgs *ba, SYS_SystemHandle *syshandle) BLI_argsAdd(ba, 4, "-j", "--frame-jump", "<frames>\n\tSet number of frames to step forward after each rendered frame", set_skip_frame, C); BLI_argsAdd(ba, 4, "-P", "--python", "<filename>\n\tRun the given Python script (filename or Blender Text)", run_python, C); BLI_argsAdd(ba, 4, NULL, "--python-console", "\n\tRun blender with an interactive console", run_python_console, C); + BLI_argsAdd(ba, 4, NULL, "--addons", "\n\tComma separated list of addons (no spaces)", set_addons, C); BLI_argsAdd(ba, 4, "-o", "--render-output", output_doc, set_output, C); BLI_argsAdd(ba, 4, "-E", "--engine", "<engine>\n\tSpecify the render engine\n\tuse -E help to list available engines", set_engine, C); diff --git a/source/darwin/Makefile b/source/darwin/Makefile deleted file mode 100644 index a9d9d7f2f20..00000000000 --- a/source/darwin/Makefile +++ /dev/null @@ -1,65 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# - -include nan_definitions.mk - -DIR = $(OCGDIR)/$(DEBUG_DIR) -VERSION = $(shell $(NANBLENDERHOME)/release/getversion.py) - -PYARCHIVE = python_$(MACOSX_ARCHITECTURE).zip - -all:: - @# set up directory structure for the OSX aplication bundle - @echo "---> creating directory structure for $(APPLICATION)" - @rm -rf $(DIR)/bin/$(APPLICATION).app - @cp -R $(APPLICATION).app $(DIR)/bin - @cat $(APPLICATION).app/Contents/Info.plist | sed s/VERSION/$(VERSION)/ | sed s/DATE/`date +'%Y-%b-%d'`/ > $(DIR)/bin/$(APPLICATION).app/Contents/Info.plist - @echo "---> copying binary" - @cp $(DIR)/bin/$(APPLICATION) $(DIR)/bin/$(APPLICATION).app/Contents/MacOS/ - @echo "---> adding excutable attributes" - @chmod +x $(DIR)/bin/$(APPLICATION).app/Contents/MacOS/$(APPLICATION) -ifeq ($(APPLICATION), blender) - @mkdir -p $(DIR)/bin/$(APPLICATION).app/Contents/MacOS/$(VERSION) - @echo "---> copying message files" - @cp -R $(NANBLENDERHOME)/release/bin/.blender/locale $(DIR)/bin/$(APPLICATION).app/Contents/Resources - @echo "---> copying .Blanguages" - @cp $(NANBLENDERHOME)/release/bin/.blender/.Blanguages $(DIR)/bin/$(APPLICATION).app/Contents/Resources - @echo "---> copying bfont.ttf" - @cp $(NANBLENDERHOME)/release/datafiles/bfont.ttf $(DIR)/bin/$(APPLICATION).app/Contents/Resources/ - @cp $(NANBLENDERHOME)/release/datafiles/bmonofont.ttf $(DIR)/bin/$(APPLICATION).app/Contents/Resources/ - @echo "---> copying release scripts" - @cp -R $(NANBLENDERHOME)/release/scripts $(DIR)/bin/$(APPLICATION).app/Contents/MacOS/$(VERSION)/ - @echo "---> copying python modules" - @mkdir $(DIR)/bin/$(APPLICATION).app/Contents/MacOS/$(VERSION)/python - @unzip -q $(LCGDIR)/release/$(PYARCHIVE) -d $(DIR)/bin/$(APPLICATION).app/Contents/MacOS/$(VERSION)/python/ -endif - @echo "---> removing SVN directories and Mac hidden files from distribution" - @find $(DIR)/bin/$(APPLICATION).app -name CVS -prune -exec rm -rf {} \; - @find $(DIR)/bin/$(APPLICATION).app -name .DS_Store -exec rm -f {} \; - @find $(DIR)/bin/$(APPLICATION).app -name .svn -prune -exec rm -rf {} \; diff --git a/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp b/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp index e5179e8926f..f6e29fe0dbb 100644 --- a/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp +++ b/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp @@ -176,11 +176,18 @@ extern "C" void StartKetsjiShell(struct bContext *C, struct ARegion *ar, rcti *c bool nodepwarnings = (SYS_GetCommandLineInt(syshandle, "ignore_deprecation_warnings", 0) != 0); #endif bool novertexarrays = (SYS_GetCommandLineInt(syshandle, "novertexarrays", 0) != 0); + bool mouse_state = startscene->gm.flag & GAME_SHOW_MOUSE; + if(animation_record) usefixed= true; /* override since you's always want fixed time for sim recording */ // create the canvas, rasterizer and rendertools RAS_ICanvas* canvas = new KX_BlenderCanvas(win, area_rect, ar); - canvas->SetMouseState(RAS_ICanvas::MOUSE_INVISIBLE); + + // default mouse state set on render panel + if (mouse_state) + canvas->SetMouseState(RAS_ICanvas::MOUSE_NORMAL); + else + canvas->SetMouseState(RAS_ICanvas::MOUSE_INVISIBLE); RAS_IRenderTools* rendertools = new KX_BlenderRenderTools(); RAS_IRasterizer* rasterizer = NULL; diff --git a/source/gameengine/BlenderRoutines/KX_BlenderGL.cpp b/source/gameengine/BlenderRoutines/KX_BlenderGL.cpp index ee1e92eee75..6b1ed71f465 100644 --- a/source/gameengine/BlenderRoutines/KX_BlenderGL.cpp +++ b/source/gameengine/BlenderRoutines/KX_BlenderGL.cpp @@ -146,13 +146,13 @@ void BL_print_game_line(int fontid, const char* text, int size, int dpi, float* BLF_draw(fontid, (char *)text, strlen(text)); BLF_disable(fontid, BLF_MATRIX|BLF_ASPECT); - glEnable(GL_DEPTH_TEST); } void BL_print_gamedebug_line(const char* text, int xco, int yco, int width, int height) { /* gl prepping */ DisableForText(); + glDisable(GL_DEPTH_TEST); glMatrixMode(GL_PROJECTION); glPushMatrix(); @@ -181,6 +181,7 @@ void BL_print_gamedebug_line_padded(const char* text, int xco, int yco, int widt * behind quite as neatly as we'd have wanted to. I don't know * what cause it, though :/ .*/ DisableForText(); + glDisable(GL_DEPTH_TEST); glMatrixMode(GL_PROJECTION); glPushMatrix(); diff --git a/source/gameengine/BlenderRoutines/Makefile b/source/gameengine/BlenderRoutines/Makefile deleted file mode 100644 index cc0c6cf11dd..00000000000 --- a/source/gameengine/BlenderRoutines/Makefile +++ /dev/null @@ -1,80 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = bloutines -DIR = $(OCGDIR)/gameengine/$(LIBNAME) - -include nan_compile.mk - -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(NAN_STRING)/include -CPPFLAGS += -I$(NAN_MOTO)/include -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) -CPPFLAGS += -I$(NAN_AUDASPACE)/include -# path to the guarded memory allocator -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -# because of kernel dependency on makesdna -CPPFLAGS += -I../../blender/makesdna -CPPFLAGS += -I../../blender/editors/include -# because of kernel dependency on imbuf -CPPFLAGS += -I../../blender/windowmanager -CPPFLAGS += -I../../blender/imbuf -CPPFLAGS += -I../../blender/blenlib -CPPFLAGS += -I../../blender/blenkernel -CPPFLAGS += -I../../blender/render/extern/include -CPPFLAGS += -I../../blender/blenloader -CPPFLAGS += -I../../blender/blenfont -CPPFLAGS += -I../../blender/gpu -CPPFLAGS += -I../../blender/makesrna -CPPFLAGS += -I../Converter -CPPFLAGS += -I../Expressions -CPPFLAGS += -I../GameLogic -CPPFLAGS += -I../Ketsji -CPPFLAGS += -I../Rasterizer -CPPFLAGS += -I../Rasterizer/RAS_OpenGLRasterizer -CPPFLAGS += -I../SceneGraph -CPPFLAGS += -I../../kernel/gen_system -CPPFLAGS += -I../Network -CPPFLAGS += -I../Network/LoopBackNetwork -CPPFLAGS += -I../Physics/common -CPPFLAGS += -I. - -ifeq ($(OS),windows) - CPPFLAGS += -I../../blender -endif - -CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION) - -ifeq ($(WITH_FFMPEG), true) - CPPFLAGS += -DWITH_FFMPEG -endif diff --git a/source/gameengine/CMakeLists.txt b/source/gameengine/CMakeLists.txt index c3c2b95c40e..5dece449120 100644 --- a/source/gameengine/CMakeLists.txt +++ b/source/gameengine/CMakeLists.txt @@ -27,7 +27,7 @@ # there are too many inter-includes so best define here if(WITH_PYTHON) - blender_include_dirs("${PYTHON_INC}") + blender_include_dirs("${PYTHON_INCLUDE_DIRS}") add_definitions(-DWITH_PYTHON) endif() diff --git a/source/gameengine/Converter/BL_BlenderDataConversion.cpp b/source/gameengine/Converter/BL_BlenderDataConversion.cpp index 3cdc688f55d..ab9882cab87 100644 --- a/source/gameengine/Converter/BL_BlenderDataConversion.cpp +++ b/source/gameengine/Converter/BL_BlenderDataConversion.cpp @@ -1525,7 +1525,7 @@ void BL_CreatePhysicsObjectNew(KX_GameObject* gameobj, KX_BoxBounds bb; DerivedMesh* dm = NULL; if (gameobj->GetDeformer()) - dm = gameobj->GetDeformer()->GetFinalMesh(); + dm = gameobj->GetDeformer()->GetPhysicsMesh(); my_get_local_bounds(blenderobject,dm,objprop.m_boundobject.box.m_center,bb.m_extends); if (blenderobject->gameflag & OB_BOUNDS) { @@ -1618,6 +1618,10 @@ void BL_CreatePhysicsObjectNew(KX_GameObject* gameobj, } delete shapeprops; delete smmaterial; + if (dm) { + dm->needsFree = 1; + dm->release(dm); + } } diff --git a/source/gameengine/Converter/BL_ModifierDeformer.cpp b/source/gameengine/Converter/BL_ModifierDeformer.cpp index 5eb25b05567..205892f5c77 100644 --- a/source/gameengine/Converter/BL_ModifierDeformer.cpp +++ b/source/gameengine/Converter/BL_ModifierDeformer.cpp @@ -135,6 +135,30 @@ bool BL_ModifierDeformer::HasArmatureDeformer(Object *ob) return false; } +// return a deformed mesh that supports mapping (with a valid CD_ORIGINDEX layer) +struct DerivedMesh* BL_ModifierDeformer::GetPhysicsMesh() +{ + // we need to compute the deformed mesh taking into account the current + // shape and skin deformers, we cannot just call mesh_create_derived_physics() + // because that would use the m_transvers already deformed previously by BL_ModifierDeformer::Update(), + // so restart from scratch by forcing a full update the shape/skin deformers + // (will do nothing if there is no such deformer) + BL_ShapeDeformer::ForceUpdate(); + BL_ShapeDeformer::Update(); + // now apply the modifiers but without those that don't support mapping + Object* blendobj = m_gameobj->GetBlendObject(); + /* hack: the modifiers require that the mesh is attached to the object + It may not be the case here because of replace mesh actuator */ + Mesh *oldmesh = (Mesh*)blendobj->data; + blendobj->data = m_bmesh; + DerivedMesh *dm = mesh_create_derived_physics(m_scene, blendobj, m_transverts, CD_MASK_MESH); + /* restore object data */ + blendobj->data = oldmesh; + /* m_transverts is correct here (takes into account deform only modifiers) */ + /* the derived mesh returned by this function must be released by the caller !!! */ + return dm; +} + bool BL_ModifierDeformer::Update(void) { bool bShapeUpdate = BL_ShapeDeformer::Update(); diff --git a/source/gameengine/Converter/BL_ModifierDeformer.h b/source/gameengine/Converter/BL_ModifierDeformer.h index 49998f36ccb..caf1741ecaf 100644 --- a/source/gameengine/Converter/BL_ModifierDeformer.h +++ b/source/gameengine/Converter/BL_ModifierDeformer.h @@ -95,7 +95,8 @@ public: { return m_dm; } - + // The derived mesh returned by this function must be released! + virtual struct DerivedMesh* GetPhysicsMesh(); protected: double m_lastModifierUpdate; diff --git a/source/gameengine/Converter/KX_ConvertControllers.cpp b/source/gameengine/Converter/KX_ConvertControllers.cpp index 3bca6b9ab11..7f329ca0684 100644 --- a/source/gameengine/Converter/KX_ConvertControllers.cpp +++ b/source/gameengine/Converter/KX_ConvertControllers.cpp @@ -214,7 +214,7 @@ void BL_ConvertControllers( if (bcontr->type==CONT_PYTHON) { SCA_PythonController *pyctrl= static_cast<SCA_PythonController*>(gamecontroller); /* not strictly needed but gives syntax errors early on and - * gives more pradictable performance for larger scripts */ + * gives more predictable performance for larger scripts */ if(pyctrl->m_mode==SCA_PythonController::SCA_PYEXEC_SCRIPT) pyctrl->Compile(); else { diff --git a/source/gameengine/Converter/Makefile b/source/gameengine/Converter/Makefile deleted file mode 100644 index 142841b2b36..00000000000 --- a/source/gameengine/Converter/Makefile +++ /dev/null @@ -1,67 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = blconverter -DIR = $(OCGDIR)/gameengine/$(LIBNAME) - -include nan_compile.mk - -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -CPPFLAGS += -I$(OPENGL_HEADERS) -CPPFLAGS += -I$(NAN_STRING)/include -CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION) -CPPFLAGS += -I$(NAN_MOTO)/include -CPPFLAGS += -I$(NAN_BULLET2)/include -CPPFLAGS += -I$(NAN_AUDASPACE)/include - -CPPFLAGS += -I../../blender -# these two needed because of blenkernel -CPPFLAGS += -I../../blender/windowmanager -CPPFLAGS += -I../../blender/imbuf -CPPFLAGS += -I../../blender/makesdna -CPPFLAGS += -I../../blender/makesrna -CPPFLAGS += -I../../blender/editors/include -CPPFLAGS += -I../../blender/blenlib -CPPFLAGS += -I../../blender/blenkernel -CPPFLAGS += -I../../blender/blenloader -CPPFLAGS += -I../../blender/render/extern/include -CPPFLAGS += -I../../blender/gpu -CPPFLAGS += -I../../blender/ikplugin -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I../Expressions -I../Rasterizer -I../GameLogic -CPPFLAGS += -I../Ketsji -I../BlenderRoutines -I../SceneGraph -CPPFLAGS += -I../../kernel/gen_system -CPPFLAGS += -I../Rasterizer/RAS_OpenGLRasterizer -CPPFLAGS += -I../Network -I../Ketsji/KXNetwork -CPPFLAGS += -I../Physics/common -I../Physics/Dummy -CPPFLAGS += -I../Physics/BlOde -CPPFLAGS += -I../Physics/Bullet -CPPFLAGS += -I. diff --git a/source/gameengine/Expressions/Makefile b/source/gameengine/Expressions/Makefile deleted file mode 100644 index 892a8c2b246..00000000000 --- a/source/gameengine/Expressions/Makefile +++ /dev/null @@ -1,46 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = expression -DIR = $(OCGDIR)/gameengine/$(LIBNAME) - -include nan_compile.mk - -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION) -CPPFLAGS += -I../../blender/makesdna -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - -CPPFLAGS += -I$(NAN_STRING)/include -CPPFLAGS += -I$(NAN_MOTO)/include -CPPFLAGS += -I../../kernel/gen_system -CPPFLAGS += -I../../gameengine/SceneGraph - diff --git a/source/gameengine/GameLogic/Joystick/Makefile b/source/gameengine/GameLogic/Joystick/Makefile deleted file mode 100644 index 5ab297824dd..00000000000 --- a/source/gameengine/GameLogic/Joystick/Makefile +++ /dev/null @@ -1,44 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = Joystick -DIR = $(OCGDIR)/gameengine/logic/$(LIBNAME) - -include nan_compile.mk - -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -CPPFLAGS += -I../Expressions -CPPFLAGS += -I$(NAN_STRING)/include -CPPFLAGS += -I$(NAN_MOTO)/include -CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION) -CPPFLAGS += $(NAN_SDLCFLAGS) -CPPFLAGS += -I../../SceneGraph -CPPFLAGS += -I../../../kernel/gen_system diff --git a/source/gameengine/GameLogic/Makefile b/source/gameengine/GameLogic/Makefile deleted file mode 100644 index 9c8bd73cdc0..00000000000 --- a/source/gameengine/GameLogic/Makefile +++ /dev/null @@ -1,50 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = logic -SOURCEDIR = source/gameengine/gameengine/GameLogic -DIR = $(OCGDIR)/gameengine/$(LIBNAME) -DIRS = Joystick - -include nan_subdirs.mk -include nan_compile.mk - -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -CPPFLAGS += -I../Expressions -CPPFLAGS += -I../SceneGraph -CPPFLAGS += -I../Rasterizer -CPPFLAGS += -I$(NAN_STRING)/include -CPPFLAGS += -I$(NAN_MOTO)/include -CPPFLAGS += -I../../blender/makesdna -CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION) -CPPFLAGS += $(NAN_SDLCFLAGS) - -CPPFLAGS += -I../../kernel/gen_system diff --git a/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp b/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp index 3e9217251b5..6fe996992c8 100644 --- a/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp +++ b/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp @@ -23,6 +23,8 @@ * ***** END GPL LICENSE BLOCK ***** */ +#include <stddef.h> + #include "SCA_IActuator.h" #include "SCA_2DFilterActuator.h" diff --git a/source/gameengine/GameLogic/SCA_ActuatorSensor.cpp b/source/gameengine/GameLogic/SCA_ActuatorSensor.cpp index d6c328cd730..a93ac2207e1 100644 --- a/source/gameengine/GameLogic/SCA_ActuatorSensor.cpp +++ b/source/gameengine/GameLogic/SCA_ActuatorSensor.cpp @@ -29,6 +29,8 @@ * ***** END GPL LICENSE BLOCK ***** */ +#include <stddef.h> + #include <iostream> #include "SCA_ActuatorSensor.h" #include "SCA_EventManager.h" diff --git a/source/gameengine/GameLogic/SCA_DelaySensor.cpp b/source/gameengine/GameLogic/SCA_DelaySensor.cpp index abe72fb6757..e23135eb14f 100644 --- a/source/gameengine/GameLogic/SCA_DelaySensor.cpp +++ b/source/gameengine/GameLogic/SCA_DelaySensor.cpp @@ -35,6 +35,8 @@ #pragma warning( disable : 4786 ) #endif +#include <stddef.h> + #include "SCA_DelaySensor.h" #include "SCA_LogicManager.h" #include "SCA_EventManager.h" diff --git a/source/gameengine/GameLogic/SCA_IController.cpp b/source/gameengine/GameLogic/SCA_IController.cpp index 0c6b8350bca..6134b229266 100644 --- a/source/gameengine/GameLogic/SCA_IController.cpp +++ b/source/gameengine/GameLogic/SCA_IController.cpp @@ -26,6 +26,8 @@ * ***** END GPL LICENSE BLOCK ***** */ +#include <stddef.h> + #include "SCA_IController.h" #include "SCA_LogicManager.h" #include "SCA_IActuator.h" diff --git a/source/gameengine/GameLogic/SCA_ILogicBrick.cpp b/source/gameengine/GameLogic/SCA_ILogicBrick.cpp index afda218c99c..6fa83994bd6 100644 --- a/source/gameengine/GameLogic/SCA_ILogicBrick.cpp +++ b/source/gameengine/GameLogic/SCA_ILogicBrick.cpp @@ -26,6 +26,8 @@ * ***** END GPL LICENSE BLOCK ***** */ +#include <stddef.h> + #include "SCA_ILogicBrick.h" #include "PyObjectPlus.h" diff --git a/source/gameengine/GameLogic/SCA_ISensor.cpp b/source/gameengine/GameLogic/SCA_ISensor.cpp index c655924aa48..bb86b3735bc 100644 --- a/source/gameengine/GameLogic/SCA_ISensor.cpp +++ b/source/gameengine/GameLogic/SCA_ISensor.cpp @@ -29,6 +29,8 @@ * ***** END GPL LICENSE BLOCK ***** */ +#include <stddef.h> + #include "SCA_ISensor.h" #include "SCA_EventManager.h" #include "SCA_LogicManager.h" diff --git a/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp b/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp index fe4124eb833..7368869bc2d 100644 --- a/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp +++ b/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp @@ -27,6 +27,9 @@ * ***** END GPL LICENSE BLOCK ***** * Sensor for keyboard input */ + +#include <stddef.h> + #include "SCA_KeyboardSensor.h" #include "SCA_KeyboardManager.h" #include "SCA_LogicManager.h" diff --git a/source/gameengine/GameLogic/SCA_MouseSensor.cpp b/source/gameengine/GameLogic/SCA_MouseSensor.cpp index af11353c93e..257a67ad947 100644 --- a/source/gameengine/GameLogic/SCA_MouseSensor.cpp +++ b/source/gameengine/GameLogic/SCA_MouseSensor.cpp @@ -30,6 +30,8 @@ * ***** END GPL LICENSE BLOCK ***** */ +#include <stddef.h> + #include "SCA_MouseSensor.h" #include "SCA_EventManager.h" #include "SCA_MouseManager.h" diff --git a/source/gameengine/GameLogic/SCA_PropertyActuator.cpp b/source/gameengine/GameLogic/SCA_PropertyActuator.cpp index a5ac5654e21..bc6604bebd8 100644 --- a/source/gameengine/GameLogic/SCA_PropertyActuator.cpp +++ b/source/gameengine/GameLogic/SCA_PropertyActuator.cpp @@ -29,6 +29,8 @@ * ***** END GPL LICENSE BLOCK ***** */ +#include <stddef.h> + #include "SCA_PropertyActuator.h" #include "InputParser.h" #include "Operator2Expr.h" diff --git a/source/gameengine/GameLogic/SCA_PropertySensor.cpp b/source/gameengine/GameLogic/SCA_PropertySensor.cpp index a32cc50fd63..55cd2713c35 100644 --- a/source/gameengine/GameLogic/SCA_PropertySensor.cpp +++ b/source/gameengine/GameLogic/SCA_PropertySensor.cpp @@ -29,6 +29,8 @@ * ***** END GPL LICENSE BLOCK ***** */ +#include <stddef.h> + #include <iostream> #include "SCA_PropertySensor.h" #include "Operator2Expr.h" diff --git a/source/gameengine/GameLogic/SCA_PythonController.cpp b/source/gameengine/GameLogic/SCA_PythonController.cpp index b6671c45d7d..bf481b8e799 100644 --- a/source/gameengine/GameLogic/SCA_PythonController.cpp +++ b/source/gameengine/GameLogic/SCA_PythonController.cpp @@ -29,6 +29,8 @@ * ***** END GPL LICENSE BLOCK ***** */ +#include <stddef.h> + #include "SCA_PythonController.h" #include "SCA_LogicManager.h" #include "SCA_ISensor.h" diff --git a/source/gameengine/GameLogic/SCA_RandomActuator.cpp b/source/gameengine/GameLogic/SCA_RandomActuator.cpp index c3d5988be24..76bcf52c295 100644 --- a/source/gameengine/GameLogic/SCA_RandomActuator.cpp +++ b/source/gameengine/GameLogic/SCA_RandomActuator.cpp @@ -29,6 +29,8 @@ * ***** END GPL LICENSE BLOCK ***** */ +#include <stddef.h> + #include "BoolValue.h" #include "IntValue.h" #include "FloatValue.h" diff --git a/source/gameengine/GameLogic/SCA_RandomSensor.cpp b/source/gameengine/GameLogic/SCA_RandomSensor.cpp index 8194f1c97c8..8b18641c165 100644 --- a/source/gameengine/GameLogic/SCA_RandomSensor.cpp +++ b/source/gameengine/GameLogic/SCA_RandomSensor.cpp @@ -29,6 +29,8 @@ * ***** END GPL LICENSE BLOCK ***** */ +#include <stddef.h> + #include "SCA_RandomSensor.h" #include "SCA_EventManager.h" #include "SCA_RandomEventManager.h" diff --git a/source/gameengine/GamePlayer/Makefile b/source/gameengine/GamePlayer/Makefile deleted file mode 100644 index 30a13f26503..00000000000 --- a/source/gameengine/GamePlayer/Makefile +++ /dev/null @@ -1,57 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Bounces make to subdirectories. - -include nan_definitions.mk - -SOURCEDIR = source/gameengine/GamePlayer -DIR = $(OCGDIR)/gameengine/GamePlayer -DIRS = common ghost - -ifeq ($(WITH_BF_WEBPLUGIN),true) -ifeq ($(OS),$(findstring $(OS), "freebsd irix windows")) - ifneq ($(FREE_WINDOWS),true) - DIRS += netscape - endif -endif - -ifeq ($(OS),$(findstring $(OS), "linux")) - ifeq ($(CPU),i386) - DIRS += netscape - endif -endif - -ifeq ($(OS),$(findstring $(OS), "solaris")) - ifeq ($(CPU),sparc) - DIRS += netscape - endif -endif -endif - -include nan_subdirs.mk diff --git a/source/gameengine/GamePlayer/common/CMakeLists.txt b/source/gameengine/GamePlayer/common/CMakeLists.txt index 9bab870ccd5..0bd8a0dd9a3 100644 --- a/source/gameengine/GamePlayer/common/CMakeLists.txt +++ b/source/gameengine/GamePlayer/common/CMakeLists.txt @@ -52,9 +52,9 @@ set(INC ../../../../source/blender/blenloader ../../../../source/blender/gpu ../../../../extern/glew/include - ${PYTHON_INC} - ${PNG_INC} - ${ZLIB_INC} + ${PYTHON_INCLUDE_DIRS} + ${PNG_INCLUDE_DIR} + ${ZLIB_INCLUDE_DIRS} ) set(SRC diff --git a/source/gameengine/GamePlayer/common/Makefile b/source/gameengine/GamePlayer/common/Makefile deleted file mode 100644 index 39b7a4bd781..00000000000 --- a/source/gameengine/GamePlayer/common/Makefile +++ /dev/null @@ -1,70 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = common -DIR = $(OCGDIR)/gameengine/GamePlayer/$(LIBNAME) - -include nan_compile.mk - -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) - -CPPFLAGS += -I../../../blender/blenkernel -CPPFLAGS += -I../../../blender/blenloader -CPPFLAGS += -I../../../blender/blenlib -CPPFLAGS += -I../../../blender/blenfont -CPPFLAGS += -I../../../blender/imbuf -CPPFLAGS += -I../../../blender/makesdna -CPPFLAGS += -I../../../blender/gpu -CPPFLAGS += -I../../../kernel/gen_system -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - -CPPFLAGS += -I$(NAN_STRING)/include -CPPFLAGS += -I$(NAN_MOTO)/include -CPPFLAGS += -I$(NAN_PNG)/include -CPPFLAGS += -I$(NAN_ZLIB)/include -CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION) -CPPFLAGS += -I$(NAN_AUDASPACE)/include - -CPPFLAGS += -I../../../gameengine/Converter -CPPFLAGS += -I../../../gameengine/Expressions -CPPFLAGS += -I../../../gameengine/GameLogic -CPPFLAGS += -I../../../gameengine/Converter -CPPFLAGS += -I../../../gameengine/BlenderRoutines -CPPFLAGS += -I../../../gameengine/Ketsji -CPPFLAGS += -I../../../gameengine/Ketsji/KXNetwork -CPPFLAGS += -I../../../gameengine/Network -CPPFLAGS += -I../../../gameengine/Network/LoopBackNetwork -CPPFLAGS += -I../../../gameengine/Rasterizer -CPPFLAGS += -I../../../gameengine/SceneGraph -CPPFLAGS += -I../../../gameengine/Rasterizer/RAS_OpenGLRasterizer -CPPFLAGS += -I../../../gameengine/Physics/common diff --git a/source/gameengine/GamePlayer/ghost/CMakeLists.txt b/source/gameengine/GamePlayer/ghost/CMakeLists.txt index e72f2d53f77..dc137861745 100644 --- a/source/gameengine/GamePlayer/ghost/CMakeLists.txt +++ b/source/gameengine/GamePlayer/ghost/CMakeLists.txt @@ -54,7 +54,7 @@ set(INC ../../../../source/blender/blenloader ../../../../source/blender/gpu ../../../../extern/glew/include - ${PYTHON_INC} + ${PYTHON_INCLUDE_DIRS} ) set(SRC diff --git a/source/gameengine/GamePlayer/ghost/GPG_Application.cpp b/source/gameengine/GamePlayer/ghost/GPG_Application.cpp index d1dee052173..060f2f6c3c4 100644 --- a/source/gameengine/GamePlayer/ghost/GPG_Application.cpp +++ b/source/gameengine/GamePlayer/ghost/GPG_Application.cpp @@ -546,7 +546,10 @@ bool GPG_Application::initEngine(GHOST_IWindow* window, const int stereoMode) if (!m_canvas) return false; - m_canvas->Init(); + m_canvas->Init(); + if (gm->flag & GAME_SHOW_MOUSE) + m_canvas->SetMouseState(RAS_ICanvas::MOUSE_NORMAL); + m_rendertools = new GPC_RenderTools(); if (!m_rendertools) goto initFailed; diff --git a/source/gameengine/GamePlayer/ghost/Makefile b/source/gameengine/GamePlayer/ghost/Makefile deleted file mode 100644 index b2fcd2ac1ff..00000000000 --- a/source/gameengine/GamePlayer/ghost/Makefile +++ /dev/null @@ -1,86 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Makefile for GHOST game player - -LIBNAME = ghost -DIR = $(OCGDIR)/gameengine/GamePlayer/ghost - -include nan_compile.mk - -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -# OpenGL header files -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) -CPPFLAGS += -I$(NAN_STRING)/include -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - -CPPFLAGS += -I../../GamePlayer/common - -# Game Engine includes -CPPFLAGS += -I../../Converter -CPPFLAGS += -I../../Expressions -CPPFLAGS += -I../../GameLogic -CPPFLAGS += -I../../Ketsji -CPPFLAGS += -I../../Ketsji/KXNetwork -CPPFLAGS += -I../../Network -CPPFLAGS += -I../../Network/LoopBackNetwork -CPPFLAGS += -I../../Rasterizer -CPPFLAGS += -I../../Rasterizer/RAS_OpenGLRasterizer -CPPFLAGS += -I../../SceneGraph - -# Sumo -CPPFLAGS += -I$(SRCHOME)/gameengine/Physics/Sumo/include -CPPFLAGS += -I$(SRCHOME)/gameengine/Physics/Sumo/Fuzzics/include - -CPPFLAGS += -I$(NAN_MOTO)/include - -# Blender includes -CPPFLAGS += -I../../../blender/blenkernel -CPPFLAGS += -I../../../blender/blenlib -CPPFLAGS += -I../../../blender/blenloader -CPPFLAGS += -I../../../blender/imbuf -CPPFLAGS += -I../../../blender/makesdna -CPPFLAGS += -I../../../blender/makesrna -CPPFLAGS += -I../../../blender/readblenfile -CPPFLAGS += -I../../../blender/gpu - -CPPFLAGS += -I../../../gameengine/BlenderRoutines - -# kernel? GEN? stuff -CPPFLAGS += -I../../../kernel/gen_system -CPPFLAGS += -I../../../kernel/gen_messaging - -CPPFLAGS += -I$(NAN_STRING)/include -CPPFLAGS += -I$(NAN_GHOST)/include -CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION) - -ifeq ($(WITH_FFMPEG), true) - CPPFLAGS += -DWITH_FFMPEG -endif diff --git a/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.cpp b/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.cpp index 0f563dc4fe4..3ac95d7eaf8 100644 --- a/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.cpp +++ b/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.cpp @@ -28,6 +28,8 @@ * Ketsji Logic Extenstion: Network Message Actuator generic implementation */ +#include <stddef.h> + #include "NG_NetworkScene.h" #include "KX_NetworkMessageActuator.h" diff --git a/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp b/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp index 91b05990ba1..5d05534b258 100644 --- a/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp +++ b/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp @@ -28,6 +28,8 @@ * Ketsji Logic Extenstion: Network Message Sensor generic implementation */ +#include <stddef.h> + #include "KX_NetworkMessageSensor.h" #include "KX_NetworkEventManager.h" #include "NG_NetworkMessage.h" diff --git a/source/gameengine/Ketsji/KXNetwork/Makefile b/source/gameengine/Ketsji/KXNetwork/Makefile deleted file mode 100644 index aebbd7921cb..00000000000 --- a/source/gameengine/Ketsji/KXNetwork/Makefile +++ /dev/null @@ -1,48 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = KXNetwork -DIR = $(OCGDIR)/gameengine/ketsji/$(LIBNAME) - -include nan_compile.mk - -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION) - -CPPFLAGS += -I$(NAN_STRING)/include -CPPFLAGS += -I$(NAN_MOTO)/include -CPPFLAGS += -I../../Expressions -CPPFLAGS += -I../../GameLogic -CPPFLAGS += -I../../SceneGraph -CPPFLAGS += -I../../Network -CPPFLAGS += -I../../../kernel/gen_system -CPPFLAGS += -I.. - diff --git a/source/gameengine/Ketsji/KX_GameActuator.cpp b/source/gameengine/Ketsji/KX_GameActuator.cpp index 1a195913e4a..4929187c3ee 100644 --- a/source/gameengine/Ketsji/KX_GameActuator.cpp +++ b/source/gameengine/Ketsji/KX_GameActuator.cpp @@ -29,6 +29,8 @@ * ***** END GPL LICENSE BLOCK ***** */ +#include <stddef.h> + #include "SCA_IActuator.h" #include "KX_GameActuator.h" //#include <iostream> diff --git a/source/gameengine/Ketsji/KX_GameObject.h b/source/gameengine/Ketsji/KX_GameObject.h index 640816e19ca..974dde6de00 100644 --- a/source/gameengine/Ketsji/KX_GameObject.h +++ b/source/gameengine/Ketsji/KX_GameObject.h @@ -36,6 +36,7 @@ #pragma warning (disable : 4355) #endif +#include <stddef.h> #include "ListValue.h" #include "SCA_IObject.h" diff --git a/source/gameengine/Ketsji/KX_PolygonMaterial.cpp b/source/gameengine/Ketsji/KX_PolygonMaterial.cpp index 57e11e02d5a..39f017625dd 100644 --- a/source/gameengine/Ketsji/KX_PolygonMaterial.cpp +++ b/source/gameengine/Ketsji/KX_PolygonMaterial.cpp @@ -25,6 +25,9 @@ * * ***** END GPL LICENSE BLOCK ***** */ + +#include <stddef.h> + #include "KX_PolygonMaterial.h" #include "BKE_mesh.h" @@ -108,6 +111,11 @@ KX_PolygonMaterial::~KX_PolygonMaterial() #endif // WITH_PYTHON } +Image *KX_PolygonMaterial::GetBlenderImage() const +{ + return (m_tface) ? m_tface->tpage : NULL; +} + bool KX_PolygonMaterial::Activate(RAS_IRasterizer* rasty, TCachingInfo& cachingInfo) const { bool dopass = false; diff --git a/source/gameengine/Ketsji/KX_PolygonMaterial.h b/source/gameengine/Ketsji/KX_PolygonMaterial.h index 17adbac79c0..d71a34989a0 100644 --- a/source/gameengine/Ketsji/KX_PolygonMaterial.h +++ b/source/gameengine/Ketsji/KX_PolygonMaterial.h @@ -42,6 +42,7 @@ struct MTFace; struct Material; struct MTex; +struct Image; /** * Material class. @@ -107,6 +108,8 @@ public: return m_material; } + Image *GetBlenderImage() const; + /** * Returns the Blender texture face structure that is used for this material. * @return The material's texture face. diff --git a/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp b/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp index 51a3979830d..aff4f4080fd 100644 --- a/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp +++ b/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp @@ -35,6 +35,8 @@ // Please look here for revision history. +#include <stddef.h> + #include "KX_SCA_ReplaceMeshActuator.h" #include "KX_MeshProxy.h" diff --git a/source/gameengine/Ketsji/Makefile b/source/gameengine/Ketsji/Makefile deleted file mode 100644 index 3161351db90..00000000000 --- a/source/gameengine/Ketsji/Makefile +++ /dev/null @@ -1,79 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = ketsji -DIR = $(OCGDIR)/gameengine/$(LIBNAME) - -include nan_compile.mk - -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -CPPFLAGS += $(NAN_SDLCFLAGS) -CPPFLAGS += $(OGL_CPPFLAGS) -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) -CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION) -CPPFLAGS += -I../../blender/python -CPPFLAGS += -I../../blender/python/generic -CPPFLAGS += -I$(NAN_STRING)/include -CPPFLAGS += -I$(NAN_MOTO)/include -CPPFLAGS += -I$(NAN_BULLET2)/include -CPPFLAGS += -I$(NAN_AUDASPACE)/include - -CPPFLAGS += -I../Rasterizer/RAS_OpenGLRasterizer -CPPFLAGS += -I../Rasterizer -I../GameLogic -I../SceneGraph -CPPFLAGS += -I../BlenderRoutines -I../Expressions -CPPFLAGS += -I../../kernel/gen_system -CPPFLAGS += -I../Network -IKXNetwork -CPPFLAGS += -I../Physics/common -CPPFLAGS += -I../Physics/Dummy -CPPFLAGS += -I../Physics/Bullet -CPPFLAGS += -I. -CPPFLAGS += -I../Converter -CPPFLAGS += -I../../blender/blenkernel -CPPFLAGS += -I../../blender/blenlib -CPPFLAGS += -I../../blender/blenloader -CPPFLAGS += -I../../blender/blenfont -CPPFLAGS += -I../../blender/makesdna -CPPFLAGS += -I../../blender/imbuf -CPPFLAGS += -I../../blender/gpu -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - -ifeq ($(WITH_FFMPEG), true) - CPPFLAGS += -DWITH_FFMPEG -endif - -########################### - -SOURCEDIR = source/gameengine/Ketsji -DIRS = KXNetwork - -include nan_subdirs.mk - diff --git a/source/gameengine/Makefile b/source/gameengine/Makefile deleted file mode 100644 index 0fdac2acce2..00000000000 --- a/source/gameengine/Makefile +++ /dev/null @@ -1,44 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Bounces make to subdirectories. - -include nan_definitions.mk - -SOURCEDIR = source/gameengine -DIR = $(OCGDIR)/gameengine -DIRS = BlenderRoutines -DIRS += Converter -DIRS += Expressions GameLogic Ketsji Rasterizer SceneGraph -DIRS += Network Physics VideoTexture - -ifeq ($(WITH_BF_BLENDERGAMEENGINE),true) -# DIRS += GamePlayer -endif - -include nan_subdirs.mk diff --git a/source/gameengine/Network/LoopBackNetwork/Makefile b/source/gameengine/Network/LoopBackNetwork/Makefile deleted file mode 100644 index 236c28b0f23..00000000000 --- a/source/gameengine/Network/LoopBackNetwork/Makefile +++ /dev/null @@ -1,41 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = LoopBackNetwork -DIR = $(OCGDIR)/gameengine/Network/$(LIBNAME) - -include nan_compile.mk - -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -CPPFLAGS += -I$(NAN_STRING)/include -CPPFLAGS += -I.. -CPPFLAGS += -I../../../kernel/gen_system - diff --git a/source/gameengine/Network/Makefile b/source/gameengine/Network/Makefile deleted file mode 100644 index 99a047c8b95..00000000000 --- a/source/gameengine/Network/Makefile +++ /dev/null @@ -1,48 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = Network -DIR = $(OCGDIR)/gameengine/$(LIBNAME) - -include nan_compile.mk - -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -CPPFLAGS += -I$(NAN_STRING)/include -CPPFLAGS += -I$(NAN_MOTO)/include -CPPFLAGS += -I../GameLogic -CPPFLAGS += -I../../kernel/gen_system - -############## - -DIRS = LoopBackNetwork -SOURCEDIR = source/gameengine/Network - -include nan_subdirs.mk diff --git a/source/gameengine/Network/TerraplayNetwork/Makefile b/source/gameengine/Network/TerraplayNetwork/Makefile deleted file mode 100644 index d5a4c86740b..00000000000 --- a/source/gameengine/Network/TerraplayNetwork/Makefile +++ /dev/null @@ -1,42 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = TerraPlayNetwork -DIR = $(OCGDIR)/gameengine/Network/$(LIBNAME) - -include nan_compile.mk - -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -CPPFLAGS += -I$(NAN_STRING)/include -CPPFLAGS += -I$(LCGDIR)/terraplay/include -CPPFLAGS += -I../../../kernel/gen_system -CPPFLAGS += -I.. - diff --git a/source/gameengine/Physics/Bullet/CMakeLists.txt b/source/gameengine/Physics/Bullet/CMakeLists.txt index 8dab5194619..c677685de49 100644 --- a/source/gameengine/Physics/Bullet/CMakeLists.txt +++ b/source/gameengine/Physics/Bullet/CMakeLists.txt @@ -44,7 +44,7 @@ set(INC ../../../../source/blender/makesdna ../../../../source/blender/blenlib ../../../../source/blender/blenkernel - ${PYTHON_INC} + ${PYTHON_INCLUDE_DIRS} ) set(SRC diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp index 54f98d16cf6..8d3c1565d3a 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp +++ b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp @@ -1694,12 +1694,16 @@ bool CcdShapeConstructionInfo::UpdateMesh(class KX_GameObject* gameobj, class RA return false; RAS_Deformer *deformer= gameobj ? gameobj->GetDeformer():NULL; + DerivedMesh* dm = NULL; + + if (deformer) + dm = deformer->GetPhysicsMesh(); /* get the mesh from the object if not defined */ if(meshobj==NULL) { /* modifier mesh */ - if(deformer && deformer->GetFinalMesh()) + if(dm) meshobj= deformer->GetRasMesh(); /* game object first mesh */ @@ -1710,14 +1714,12 @@ bool CcdShapeConstructionInfo::UpdateMesh(class KX_GameObject* gameobj, class RA } } - if(deformer && deformer->GetFinalMesh() && deformer->GetRasMesh() == meshobj) + if(dm && deformer->GetRasMesh() == meshobj) { /* * Derived Mesh Update * * */ - DerivedMesh* dm= gameobj->GetDeformer()->GetFinalMesh(); - MVert *mvert = dm->getVertArray(dm); MFace *mface = dm->getFaceArray(dm); numpolys = dm->getNumFaces(dm); @@ -1977,6 +1979,10 @@ bool CcdShapeConstructionInfo::UpdateMesh(class KX_GameObject* gameobj, class RA m_meshObject= meshobj; + if (dm) { + dm->needsFree = 1; + dm->release(dm); + } return true; } diff --git a/source/gameengine/Physics/Bullet/Makefile b/source/gameengine/Physics/Bullet/Makefile deleted file mode 100644 index 0514565534d..00000000000 --- a/source/gameengine/Physics/Bullet/Makefile +++ /dev/null @@ -1,55 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = blbullet -DIR = $(OCGDIR)/gameengine/blphys/$(LIBNAME) - -include nan_compile.mk - -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -CPPFLAGS += -I$(NAN_BULLET2)/include -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I$(NAN_STRING)/include -CPPFLAGS += -I$(NAN_MOTO)/include -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION) -CPPFLAGS += -I../../../kernel/gen_system -CPPFLAGS += -I../../Physics/common -CPPFLAGS += -I../../Physics/Dummy -CPPFLAGS += -I../../Rasterizer -CPPFLAGS += -I../../Ketsji -CPPFLAGS += -I../../Expressions -CPPFLAGS += -I../../GameLogic -CPPFLAGS += -I../../SceneGraph -CPPFLAGS += -I../../../../source/blender/makesdna -CPPFLAGS += -I../../../../source/blender/blenkernel -CPPFLAGS += -I../../../../source/blender/blenlib - diff --git a/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.cpp b/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.cpp index 524cffc2732..86223a0ea60 100644 --- a/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.cpp +++ b/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.cpp @@ -26,6 +26,9 @@ * * ***** END GPL LICENSE BLOCK ***** */ + +#include <stddef.h> + #include "DummyPhysicsEnvironment.h" #include "PHY_IMotionState.h" diff --git a/source/gameengine/Physics/Dummy/Makefile b/source/gameengine/Physics/Dummy/Makefile deleted file mode 100644 index 9a600a0365f..00000000000 --- a/source/gameengine/Physics/Dummy/Makefile +++ /dev/null @@ -1,45 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = dummy -DIR = $(OCGDIR)/gameengine/blphys/$(LIBNAME) - -include nan_compile.mk - -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -CPPFLAGS += -I$(OPENGL_HEADERS) -CPPFLAGS += -I$(NAN_STRING)/include -CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION) - -CPPFLAGS += -I$(NAN_MOTO)/include -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I../../Physics/common -CPPFLAGS += -I../../Physics/Dummy diff --git a/source/gameengine/Physics/Makefile b/source/gameengine/Physics/Makefile deleted file mode 100644 index f5f914c2ac2..00000000000 --- a/source/gameengine/Physics/Makefile +++ /dev/null @@ -1,37 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Bounces make to subdirectories. - -include nan_definitions.mk - -SOURCEDIR = source/gameengine/Physics -DIR = $(OCGDIR)/gameengine/blphys -DIRS = common Dummy Bullet - -include nan_subdirs.mk diff --git a/source/gameengine/Physics/common/Makefile b/source/gameengine/Physics/common/Makefile deleted file mode 100644 index 369699e1b90..00000000000 --- a/source/gameengine/Physics/common/Makefile +++ /dev/null @@ -1,57 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = common -DIR = $(OCGDIR)/gameengine/blphys/$(LIBNAME) - -include nan_compile.mk - -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -CPPFLAGS += -I$(OPENGL_HEADERS) -CPPFLAGS += -I$(NAN_STRING)/include -CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION) - -CPPFLAGS += -I$(NAN_MOTO)/include -CPPFLAGS += -I../../blender -# these two needed because of blenkernel -CPPFLAGS += -I../../blender/makesdna -CPPFLAGS += -I../../blender/include -CPPFLAGS += -I../../blender/blenlib -CPPFLAGS += -I../../blender/blenkernel -CPPFLAGS += -I../../blender/render/extern/include -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I../Expressions -I../Rasterizer -I../GameLogic -CPPFLAGS += -I../Ketsji -I../BlenderRoutines -I../SceneGraph -CPPFLAGS += -I../../kernel/gen_system -CPPFLAGS += -I../Rasterizer/RAS_OpenGLRasterizer -CPPFLAGS += -I../Network -I../Ketsji/KXNetwork -CPPFLAGS += -I../Physics -CPPFLAGS += -I../Physics/Dummy diff --git a/source/gameengine/Rasterizer/CMakeLists.txt b/source/gameengine/Rasterizer/CMakeLists.txt index b18020ab17e..d899fc38162 100644 --- a/source/gameengine/Rasterizer/CMakeLists.txt +++ b/source/gameengine/Rasterizer/CMakeLists.txt @@ -35,7 +35,7 @@ set(INC ../../../extern/glew/include ../../../intern/guardedalloc ../Expressions - ${PYTHON_INC} + ${PYTHON_INCLUDE_DIRS} ) set(SRC diff --git a/source/gameengine/Rasterizer/Makefile b/source/gameengine/Rasterizer/Makefile deleted file mode 100644 index d800a02b181..00000000000 --- a/source/gameengine/Rasterizer/Makefile +++ /dev/null @@ -1,57 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = rasterizer -DIR = $(OCGDIR)/gameengine/$(LIBNAME) - -include nan_compile.mk - -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) -CPPFLAGS += -I$(NAN_STRING)/include -CPPFLAGS += -I$(NAN_MOTO)/include -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -CPPFLAGS += -I../../kernel/gen_system -CPPFLAGS += -I../../blender/makesdna -CPPFLAGS += -I../SceneGraph -CPPFLAGS += -I../BlenderRoutines -CPPFLAGS += -I../Expressions -CPPFLAGS += -I../Ketsji - -CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION) - -############### - -SOURCEDIR = source/gameengine/Rasterizer -DIRS = RAS_OpenGLRasterizer - -include nan_subdirs.mk diff --git a/source/gameengine/Rasterizer/RAS_Deformer.h b/source/gameengine/Rasterizer/RAS_Deformer.h index f61ac7ea18a..37543092e68 100644 --- a/source/gameengine/Rasterizer/RAS_Deformer.h +++ b/source/gameengine/Rasterizer/RAS_Deformer.h @@ -76,6 +76,10 @@ public: { return NULL; } + virtual struct DerivedMesh* GetPhysicsMesh() + { + return NULL; + } virtual class RAS_MeshObject* GetRasMesh() { /* m_pMesh does not seem to be being used?? */ diff --git a/source/gameengine/Rasterizer/RAS_IPolygonMaterial.cpp b/source/gameengine/Rasterizer/RAS_IPolygonMaterial.cpp index 0c81d7d8274..00f1f5f2848 100644 --- a/source/gameengine/Rasterizer/RAS_IPolygonMaterial.cpp +++ b/source/gameengine/Rasterizer/RAS_IPolygonMaterial.cpp @@ -208,6 +208,11 @@ Material *RAS_IPolyMaterial::GetBlenderMaterial() const return NULL; } +Image *RAS_IPolyMaterial::GetBlenderImage() const +{ + return NULL; +} + Scene* RAS_IPolyMaterial::GetBlenderScene() const { return NULL; diff --git a/source/gameengine/Rasterizer/RAS_IPolygonMaterial.h b/source/gameengine/Rasterizer/RAS_IPolygonMaterial.h index e7bd78c2309..59554e31c36 100644 --- a/source/gameengine/Rasterizer/RAS_IPolygonMaterial.h +++ b/source/gameengine/Rasterizer/RAS_IPolygonMaterial.h @@ -45,6 +45,7 @@ class RAS_IRasterizer; struct MTFace; struct Material; +struct Image; struct Scene; class SCA_IScene; @@ -160,6 +161,7 @@ public: int GetMaterialIndex() const; virtual Material* GetBlenderMaterial() const; + virtual Image* GetBlenderImage() const; virtual Scene* GetBlenderScene() const; virtual void ReleaseMaterial(); virtual void GetMaterialRGBAColor(unsigned char *rgba) const; diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/Makefile b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/Makefile deleted file mode 100644 index 357bdf9d99b..00000000000 --- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/Makefile +++ /dev/null @@ -1,53 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Bounce make to subdirectories. -# - -LIBNAME = OpenGLrasterizer -DIR = $(OCGDIR)/gameengine/$(LIBNAME) - -include nan_compile.mk - -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) -CPPFLAGS += -I$(NAN_STRING)/include -CPPFLAGS += -I$(NAN_MOTO)/include -CPPFLAGS += -I../../../kernel/gen_system -CPPFLAGS += -I../../../blender/gpu -CPPFLAGS += -I../../../blender/makesdna -CPPFLAGS += -I../../../blender/blenlib -CPPFLAGS += -I../../../blender/blenkernel -CPPFLAGS += -I../../BlenderRoutines -CPPFLAGS += -I../../Ketsji -CPPFLAGS += -I../../SceneGraph -CPPFLAGS += -I.. -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp index e8c2db5526a..c2859394176 100644 --- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp +++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp @@ -731,6 +731,7 @@ static RAS_MeshSlot *current_ms; static RAS_MeshObject *current_mesh; static int current_blmat_nr; static GPUVertexAttribs current_gpu_attribs; +static Image *current_image; static int CheckMaterialDM(int matnr, void *attribs) { // only draw the current material @@ -769,6 +770,33 @@ static int CheckTexfaceDM(void *mcol, int index) return 0; } +static int CheckTexDM(MTFace *tface, MCol *mcol, int matnr) +{ + + // index is the original face index, retrieve the polygon + if (matnr == current_blmat_nr && + (tface == NULL || tface->tpage == current_image)) { + // must handle color. + if (current_wireframe) + return 2; + if (current_ms->m_bObjectColor) { + MT_Vector4& rgba = current_ms->m_RGBAcolor; + glColor4d(rgba[0], rgba[1], rgba[2], rgba[3]); + // don't use mcol + return 2; + } + if (!mcol) { + // we have to set the color from the material + unsigned char rgba[4]; + current_polymat->GetMaterialRGBAColor(rgba); + glColor4ubv((const GLubyte *)rgba); + return 2; + } + return 1; + } + return 0; +} + void RAS_OpenGLRasterizer::IndexPrimitivesInternal(RAS_MeshSlot& ms, bool multi) { bool obcolor = ms.m_bObjectColor; @@ -807,7 +835,10 @@ void RAS_OpenGLRasterizer::IndexPrimitivesInternal(RAS_MeshSlot& ms, bool multi) ms.m_pDerivedMesh->drawFacesGLSL(ms.m_pDerivedMesh, CheckMaterialDM); GPU_set_material_blend_mode(current_blend_mode); } else { - ms.m_pDerivedMesh->drawMappedFacesTex(ms.m_pDerivedMesh, CheckTexfaceDM, mcol); + //ms.m_pDerivedMesh->drawMappedFacesTex(ms.m_pDerivedMesh, CheckTexfaceDM, mcol); + current_blmat_nr = current_polymat->GetMaterialIndex(); + current_image = current_polymat->GetBlenderImage(); + ms.m_pDerivedMesh->drawFacesTex(ms.m_pDerivedMesh, CheckTexDM); } return; } diff --git a/source/gameengine/SceneGraph/Makefile b/source/gameengine/SceneGraph/Makefile deleted file mode 100644 index 8a797ae5a0e..00000000000 --- a/source/gameengine/SceneGraph/Makefile +++ /dev/null @@ -1,38 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = scenegraph -DIR = $(OCGDIR)/gameengine/$(LIBNAME) - -include nan_compile.mk - -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -CPPFLAGS += -I$(NAN_MOTO)/include diff --git a/source/gameengine/VideoTexture/Makefile b/source/gameengine/VideoTexture/Makefile deleted file mode 100644 index af3417eef02..00000000000 --- a/source/gameengine/VideoTexture/Makefile +++ /dev/null @@ -1,68 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = videotex -DIR = $(OCGDIR)/gameengine/$(LIBNAME) -SOURCEDIR = source/gameengine/VideoTexture - -include nan_compile.mk - -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -CPPFLAGS += $(OGL_CPPFLAGS) -CPPFLAGS += -I$(NAN_GLEW)/include -CPPFLAGS += -I$(OPENGL_HEADERS) -CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION) -CPPFLAGS += -I../../blender/python -CPPFLAGS += -I../../blender/python/generic -CPPFLAGS += -I$(NAN_STRING)/include -CPPFLAGS += -I$(NAN_MOTO)/include -CPPFLAGS += -I../Rasterizer/RAS_OpenGLRasterizer -CPPFLAGS += -I../Rasterizer -I../GameLogic -I../SceneGraph -CPPFLAGS += -I../BlenderRoutines -I../Expressions -I../Ketsji -CPPFLAGS += -I../../kernel/gen_system -CPPFLAGS += -I. -CPPFLAGS += -I../../blender/blenkernel -CPPFLAGS += -I../../blender/blenlib -CPPFLAGS += -I../../blender/editors/include -CPPFLAGS += -I../../blender/makesdna -CPPFLAGS += -I../../blender/imbuf -CPPFLAGS += -I../../blender/gpu -CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include - -ifeq ($(WITH_FFMPEG),true) - CPPFLAGS += -DWITH_FFMPEG - CPPFLAGS += $(NAN_FFMPEGCFLAGS) - ifdef NAN_PTHREADS - CPPFLAGS += -I$(NAN_PTHREADS)/include - endif -endif - - diff --git a/source/icons/Makefile b/source/icons/Makefile deleted file mode 100644 index 5832a098592..00000000000 --- a/source/icons/Makefile +++ /dev/null @@ -1,36 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -DIR = $(OCGDIR)/blender/icons - -include nan_compile.mk - -clean:: - @$(RM) $(DIR)/*.res $(DIR)/debug/*.res diff --git a/source/kernel/Makefile b/source/kernel/Makefile deleted file mode 100644 index aa0b3dd3bf1..00000000000 --- a/source/kernel/Makefile +++ /dev/null @@ -1,37 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Make module object directory and bounce make to subdirectories. - -include nan_definitions.mk - -DIR = $(OCGDIR)/kernel -SOURCEDIR = source/kernel -DIRS = gen_system gen_messaging - -include nan_subdirs.mk diff --git a/source/kernel/gen_messaging/Makefile b/source/kernel/gen_messaging/Makefile deleted file mode 100644 index a1d203bcf18..00000000000 --- a/source/kernel/gen_messaging/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# Bounces make to subdirectories. - -SOURCEDIR = source/kernel/gen_messaging -DIRS = intern - -include nan_subdirs.mk diff --git a/source/kernel/gen_messaging/intern/Makefile b/source/kernel/gen_messaging/intern/Makefile deleted file mode 100644 index 7b6b2169540..00000000000 --- a/source/kernel/gen_messaging/intern/Makefile +++ /dev/null @@ -1,40 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = gen_messaging -DIR = $(OCGDIR)/kernel/$(LIBNAME) - -include nan_compile.mk - -CFLAGS += $(LEVEL_1_C_WARNINGS) - -# path to our own external headerfiles -CPPFLAGS += -I.. - diff --git a/source/kernel/gen_system/Makefile b/source/kernel/gen_system/Makefile deleted file mode 100644 index 45f491cbeb4..00000000000 --- a/source/kernel/gen_system/Makefile +++ /dev/null @@ -1,41 +0,0 @@ -# -# $Id$ -# -# ***** BEGIN GPL LICENSE 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. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): none yet. -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = gen_system -DIR = $(OCGDIR)/kernel/$(LIBNAME) - -include nan_compile.mk - -CCFLAGS += $(LEVEL_2_CPP_WARNINGS) - -CPPFLAGS += -I$(NAN_MOTO)/include -CPPFLAGS += -I$(NAN_STRING)/include -CPPFLAGS += -I../../../source/blender/blenloader - diff --git a/source/test/CMakeLists.txt b/source/tests/CMakeLists.txt index b9c0d73fa6c..a3d75e0376a 100644 --- a/source/test/CMakeLists.txt +++ b/source/tests/CMakeLists.txt @@ -81,7 +81,7 @@ add_test(export_obj_all_objects ${EXECUTABLE_OUTPUT_PATH}/blender ${GENERIC_ARGS --run={'FINISHED'}&bpy.ops.export_scene.obj\(filepath='${TEST_OUT_DIR}/export_obj_all_objects.obj',use_selection=False,use_nurbs=True\) --md5_source=${TEST_OUT_DIR}/export_obj_all_objects.obj --md5_source=${TEST_OUT_DIR}/export_obj_all_objects.mtl - --md5=c835899ca8993495af8a13c2f229629b --md5_method=FILE + --md5=6e033a6a9c923d7aa3613b36e373f55b --md5_method=FILE ) @@ -174,7 +174,7 @@ add_test(export_x3d_all_objects ${EXECUTABLE_OUTPUT_PATH}/blender ${GENERIC_ARGS --python ${CMAKE_CURRENT_LIST_DIR}/bl_test.py -- --run={'FINISHED'}&bpy.ops.export_scene.x3d\(filepath='${TEST_OUT_DIR}/export_x3d_all_objects.x3d',use_selection=False\) --md5_source=${TEST_OUT_DIR}/export_x3d_all_objects.x3d - --md5=b4bddb55efd8e34af673ffb42bf4c372 --md5_method=FILE + --md5=5f8153d1475e187efca15dcb029d280d --md5_method=FILE ) @@ -233,7 +233,7 @@ add_test(export_fbx_cube ${EXECUTABLE_OUTPUT_PATH}/blender ${GENERIC_ARGS} --python ${CMAKE_CURRENT_LIST_DIR}/bl_test.py -- --run={'FINISHED'}&bpy.ops.export_scene.fbx\(filepath='${TEST_OUT_DIR}/export_fbx_cube.fbx',use_selection=False,use_metadata=False\) --md5_source=${TEST_OUT_DIR}/export_fbx_cube.fbx - --md5=ce937e605e493958464d62e6de4a2f9f --md5_method=FILE + --md5=a0806dc974d814f338b821ab326a6be0 --md5_method=FILE ) add_test(export_fbx_nurbs ${EXECUTABLE_OUTPUT_PATH}/blender ${GENERIC_ARGS} @@ -241,7 +241,7 @@ add_test(export_fbx_nurbs ${EXECUTABLE_OUTPUT_PATH}/blender ${GENERIC_ARGS} --python ${CMAKE_CURRENT_LIST_DIR}/bl_test.py -- --run={'FINISHED'}&bpy.ops.export_scene.fbx\(filepath='${TEST_OUT_DIR}/export_fbx_nurbs.fbx',use_selection=False,use_metadata=False\) --md5_source=${TEST_OUT_DIR}/export_fbx_nurbs.fbx - --md5=e02f0147afba2a4ce1ae110567ac3531 --md5_method=FILE + --md5=2cda2b37ee6698aff4129af48fce1291 --md5_method=FILE ) add_test(export_fbx_all_objects ${EXECUTABLE_OUTPUT_PATH}/blender ${GENERIC_ARGS} @@ -249,5 +249,5 @@ add_test(export_fbx_all_objects ${EXECUTABLE_OUTPUT_PATH}/blender ${GENERIC_ARGS --python ${CMAKE_CURRENT_LIST_DIR}/bl_test.py -- --run={'FINISHED'}&bpy.ops.export_scene.fbx\(filepath='${TEST_OUT_DIR}/export_fbx_all_objects.fbx',use_selection=False,use_metadata=False\) --md5_source=${TEST_OUT_DIR}/export_fbx_all_objects.fbx - --md5=c29a3aa600d2e432e4a521cc1e513ba8 --md5_method=FILE + --md5=1b829a528f9bdfc054f5d70f455855ad --md5_method=FILE ) diff --git a/source/test/bl_test.py b/source/tests/bl_test.py index 86c5cf81e79..5dd7dbe32d7 100644 --- a/source/test/bl_test.py +++ b/source/tests/bl_test.py @@ -24,7 +24,7 @@ import os # may split this out into a new file def replace_bpy_app_version(): - """ So MD5's are pradictable from output which uses blenders versions. + """ So MD5's are predictable from output which uses blenders versions. """ import bpy diff --git a/source/test/pep8.py b/source/tests/pep8.py index 3ccd7dd79b6..2932d55d815 100644 --- a/source/test/pep8.py +++ b/source/tests/pep8.py @@ -48,6 +48,8 @@ def file_list_py(path): def is_pep8(path): print(path) + if open(path, 'rb').read(3) == b'\xef\xbb\xbf': + print("\nfile contains BOM, remove first 3 bytes: %r\n" % path) f = open(path, 'r', encoding="utf8") for i in range(PEP8_SEEK_COMMENT): line = f.readline() diff --git a/source/test/rna_array.py b/source/tests/rna_array.py index 06b4735cc0d..06b4735cc0d 100644 --- a/source/test/rna_array.py +++ b/source/tests/rna_array.py diff --git a/source/test/rna_info_dump.py b/source/tests/rna_info_dump.py index 62c1248d733..62c1248d733 100644 --- a/source/test/rna_info_dump.py +++ b/source/tests/rna_info_dump.py |