diff options
author | Joerg Mueller <nexyon@gmail.com> | 2010-08-13 14:50:29 +0400 |
---|---|---|
committer | Joerg Mueller <nexyon@gmail.com> | 2010-08-13 14:50:29 +0400 |
commit | 47d38dbd207bc5dcc5d0965fcf36ea37c366ba35 (patch) | |
tree | 38ffad02c03ea80f3e22e8ef1108f54cc9a20d16 | |
parent | fd2a9a0ed07ee82a5409f09b864d8b0a900035aa (diff) | |
parent | 9ce2086506dcf16ecc0d5dce7851439ae8818e78 (diff) |
svn merge -r 31211:31313 https://svn.blender.org/svnroot/bf-blender/trunk/blender
235 files changed, 2193 insertions, 1931 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 87265e959e5..cb131c6e5e1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -316,12 +316,6 @@ IF(UNIX AND NOT APPLE) SET(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing -Wno-char-subscripts") - IF(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD) - SET(PLATFORM_CFLAGS " -msse -msse2 ${PLATFORM_CFLAGS}") - ADD_DEFINITIONS(-D__SSE__) - ADD_DEFINITIONS(-D__MMX__) - ENDIF(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD) - SET(PLATFORM_LINKFLAGS "-pthread") # Better warnings @@ -633,12 +627,6 @@ IF(WIN32) SET(WITH_JACK OFF) ENDIF(WITH_JACK) - IF(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD) - SET(PLATFORM_CFLAGS " -msse -msse2 ${PLATFORM_CFLAGS}") - ADD_DEFINITIONS(-D__SSE__) - ADD_DEFINITIONS(-D__MMX__) - ENDIF(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD) - ENDIF(MSVC) ENDIF(WIN32) @@ -819,12 +807,6 @@ IF(APPLE) SET(TIFF_LIBPATH ${TIFF}/lib) ENDIF(WITH_IMAGE_TIFF) - IF(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD) - SET(PLATFORM_CFLAGS " -msse -msse2 ${PLATFORM_CFLAGS}") - ADD_DEFINITIONS(-D__SSE__) - ADD_DEFINITIONS(-D__MMX__) - ENDIF(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD) - SET(EXETYPE MACOSX_BUNDLE) SET(CMAKE_C_FLAGS_DEBUG "-fno-strict-aliasing -g") @@ -868,9 +850,26 @@ IF(WITH_BUILDINFO) ENDIF(BUILD_REV_RETURN) ENDIF(WIN32) ENDIF(WITH_BUILDINFO) - #----------------------------------------------------------------------------- # Common. + +IF(WITH_RAYOPTIMIZATION) + IF(CMAKE_COMPILER_IS_GNUCC) + IF(SUPPORT_SSE_BUILD) + SET(PLATFORM_CFLAGS " -msse ${PLATFORM_CFLAGS}") + ADD_DEFINITIONS(-D__SSE__) + ADD_DEFINITIONS(-D__MMX__) + ENDIF(SUPPORT_SSE_BUILD) + IF(SUPPORT_SSE2_BUILD) + SET(PLATFORM_CFLAGS " -msse2 ${PLATFORM_CFLAGS}") + ADD_DEFINITIONS(-D__SSE2__) + IF(NOT SUPPORT_SSE_BUILD) # dont double up + ADD_DEFINITIONS(-D__MMX__) + ENDIF(NOT SUPPORT_SSE_BUILD) + ENDIF(SUPPORT_SSE2_BUILD) + ENDIF(CMAKE_COMPILER_IS_GNUCC) +ENDIF(WITH_RAYOPTIMIZATION) + IF(WITH_IMAGE_OPENJPEG) set(OPENJPEG ${CMAKE_SOURCE_DIR}/extern/libopenjpeg) set(OPENJPEG_INC ${OPENJPEG}) diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index 22c090342ef..0957ace301c 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -183,19 +183,38 @@ MACRO(SETUP_LIBLINKS ENDMACRO(SETUP_LIBLINKS) MACRO(TEST_SSE_SUPPORT) - INCLUDE(CheckCXXSourceCompiles) + INCLUDE(CheckCSourceRuns) MESSAGE(STATUS "Detecting SSE support") IF(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) SET(CMAKE_REQUIRED_FLAGS "-msse -msse2") ELSEIF(MSVC) - SET(CMAKE_REQUIRED_FLAGS "/arch:SSE2") + SET(CMAKE_REQUIRED_FLAGS "/arch:SSE2") # TODO, SSE 1 ? ENDIF() - CHECK_CXX_SOURCE_COMPILES(" + CHECK_C_SOURCE_RUNS(" #include <xmmintrin.h> int main() { __m128 v = _mm_setzero_ps(); return 0; }" SUPPORT_SSE_BUILD) + + CHECK_C_SOURCE_RUNS(" + #include <emmintrin.h> + int main() { __m128d v = _mm_setzero_pd(); return 0; }" + SUPPORT_SSE2_BUILD) + MESSAGE(STATUS "Detecting SSE support") + + IF(SUPPORT_SSE_BUILD) + MESSAGE(STATUS " ...SSE support found.") + ELSE(SUPPORT_SSE_BUILD) + MESSAGE(STATUS " ...SSE support missing.") + ENDIF(SUPPORT_SSE_BUILD) + + IF(SUPPORT_SSE2_BUILD) + MESSAGE(STATUS " ...SSE2 support found.") + ELSE(SUPPORT_SSE2_BUILD) + MESSAGE(STATUS " ...SSE2 support missing.") + ENDIF(SUPPORT_SSE2_BUILD) + ENDMACRO(TEST_SSE_SUPPORT) diff --git a/build_files/make/nan_compile.mk b/build_files/make/nan_compile.mk index be38eac4f92..4107bb1820d 100644 --- a/build_files/make/nan_compile.mk +++ b/build_files/make/nan_compile.mk @@ -176,6 +176,9 @@ ifeq ($(OS),linux) REL_CFLAGS += -O2 REL_CCFLAGS += -O2 NAN_DEPEND = true + ifeq ($(WITH_BF_RAYOPTIMIZATION), true) + CCFLAGS += -msse + endif ifeq ($(CPU),alpha) CFLAGS += -mieee endif diff --git a/release/Makefile b/release/Makefile index e6d904ea13c..bef76b349b2 100644 --- a/release/Makefile +++ b/release/Makefile @@ -16,7 +16,7 @@ # # 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. +# 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. diff --git a/release/plugins/Makefile b/release/plugins/Makefile index 3ed2ee2161e..ee7086b331d 100644 --- a/release/plugins/Makefile +++ b/release/plugins/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/release/plugins/bmake b/release/plugins/bmake index f03e9270011..9740bfa716a 100644 --- a/release/plugins/bmake +++ b/release/plugins/bmake @@ -16,7 +16,7 @@ # # 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. +# 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. diff --git a/release/plugins/sequence/Makefile b/release/plugins/sequence/Makefile index 0e1463fae7f..ab847adf5fe 100644 --- a/release/plugins/sequence/Makefile +++ b/release/plugins/sequence/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/release/plugins/texture/Makefile b/release/plugins/texture/Makefile index 0e1463fae7f..ab847adf5fe 100644 --- a/release/plugins/texture/Makefile +++ b/release/plugins/texture/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/release/scripts/io/export_3ds.py b/release/scripts/io/export_3ds.py index 2a8b43c4e84..83c9defd6ab 100644 --- a/release/scripts/io/export_3ds.py +++ b/release/scripts/io/export_3ds.py @@ -1114,13 +1114,13 @@ class Export3DS(bpy.types.Operator): bl_idname = "export.autodesk_3ds" bl_label = 'Export 3DS' - # List of operator properties, the attributes will be assigned - # to the class instance from the operator settings before calling. - - filepath = StringProperty(name="File Path", description="Filepath used for exporting the 3DS file", maxlen= 1024, default= "") check_existing = BoolProperty(name="Check Existing", description="Check and warn on overwriting existing files", default=True, options={'HIDDEN'}) + @classmethod + def poll(cls, context): # Poll isnt working yet + return context.active_object != None + def execute(self, context): filepath = self.properties.filepath filepath = bpy.path.ensure_ext(filepath, ".3ds") @@ -1129,23 +1129,23 @@ class Export3DS(bpy.types.Operator): return {'FINISHED'} def invoke(self, context, event): - wm = context.manager - wm.add_fileselect(self) + import os + if not self.properties.is_property_set("filepath"): + self.properties.filepath = os.path.splitext(bpy.data.filepath)[0] + ".3ds" + + context.manager.add_fileselect(self) return {'RUNNING_MODAL'} - @classmethod - def poll(cls, context): # Poll isnt working yet - return context.active_object != None # Add to a menu def menu_func(self, context): - default_path = os.path.splitext(bpy.data.filepath)[0] + ".3ds" - self.layout.operator(Export3DS.bl_idname, text="3D Studio (.3ds)").filepath = default_path + self.layout.operator(Export3DS.bl_idname, text="3D Studio (.3ds)") def register(): bpy.types.INFO_MT_file_export.append(menu_func) + def unregister(): bpy.types.INFO_MT_file_export.remove(menu_func) diff --git a/release/scripts/io/export_fbx.py b/release/scripts/io/export_fbx.py index 5c2e0cb5f95..19d330f1ce2 100644 --- a/release/scripts/io/export_fbx.py +++ b/release/scripts/io/export_fbx.py @@ -55,7 +55,7 @@ import math # math.pi import shutil # for file copying import bpy -from mathutils import Vector, Euler, Matrix, RotationMatrix +from mathutils import Vector, Euler, Matrix def copy_file(source, dest): # XXX - remove, can use shutil @@ -107,19 +107,19 @@ def eulerRadToDeg(eul): mtx4_identity = Matrix() # testing -mtx_x90 = RotationMatrix( math.pi/2, 3, 'X') # used -#mtx_x90n = RotationMatrix(-90, 3, 'x') -#mtx_y90 = RotationMatrix( 90, 3, 'y') -#mtx_y90n = RotationMatrix(-90, 3, 'y') -#mtx_z90 = RotationMatrix( 90, 3, 'z') -#mtx_z90n = RotationMatrix(-90, 3, 'z') - -#mtx4_x90 = RotationMatrix( 90, 4, 'x') -mtx4_x90n = RotationMatrix(-math.pi/2, 4, 'X') # used -#mtx4_y90 = RotationMatrix( 90, 4, 'y') -mtx4_y90n = RotationMatrix(-math.pi/2, 4, 'Y') # used -mtx4_z90 = RotationMatrix( math.pi/2, 4, 'Z') # used -mtx4_z90n = RotationMatrix(-math.pi/2, 4, 'Z') # used +mtx_x90 = Matrix.Rotation( math.pi/2, 3, 'X') # used +#mtx_x90n = Matrix.Rotation(-90, 3, 'x') +#mtx_y90 = Matrix.Rotation( 90, 3, 'y') +#mtx_y90n = Matrix.Rotation(-90, 3, 'y') +#mtx_z90 = Matrix.Rotation( 90, 3, 'z') +#mtx_z90n = Matrix.Rotation(-90, 3, 'z') + +#mtx4_x90 = Matrix.Rotation( 90, 4, 'x') +mtx4_x90n = Matrix.Rotation(-math.pi/2, 4, 'X') # used +#mtx4_y90 = Matrix.Rotation( 90, 4, 'y') +mtx4_y90n = Matrix.Rotation(-math.pi/2, 4, 'Y') # used +mtx4_z90 = Matrix.Rotation( math.pi/2, 4, 'Z') # used +mtx4_z90n = Matrix.Rotation(-math.pi/2, 4, 'Z') # used # def strip_path(p): # return p.split('\\')[-1].split('/')[-1] @@ -562,7 +562,7 @@ def write(filename, batch_objects = None, \ elif type =='CAMERA': # elif ob and type =='Camera': y = matrix_rot * Vector((0.0, 1.0, 0.0)) - matrix_rot = RotationMatrix(math.pi/2, 3, y) * matrix_rot + matrix_rot = Matrix.Rotation(math.pi/2, 3, y) * matrix_rot return matrix_rot @@ -664,7 +664,7 @@ def write(filename, batch_objects = None, \ rot = tuple(matrix_rot.to_euler()) elif ob and ob.type =='Camera': y = matrix_rot * Vector((0.0, 1.0, 0.0)) - matrix_rot = RotationMatrix(math.pi/2, 3, y) * matrix_rot + matrix_rot = Matrix.Rotation(math.pi/2, 3, y) * matrix_rot rot = tuple(matrix_rot.to_euler()) else: rot = tuple(matrix_rot.to_euler()) @@ -3404,8 +3404,11 @@ class ExportFBX(bpy.types.Operator): return {'FINISHED'} def invoke(self, context, event): - wm = context.manager - wm.add_fileselect(self) + import os + if not self.properties.is_property_set("filepath"): + self.properties.filepath = os.path.splitext(bpy.data.filepath)[0] + ".fbx" + + context.manager.add_fileselect(self) return {'RUNNING_MODAL'} @@ -3439,8 +3442,7 @@ class ExportFBX(bpy.types.Operator): def menu_func(self, context): - default_path = os.path.splitext(bpy.data.filepath)[0] + ".fbx" - self.layout.operator(ExportFBX.bl_idname, text="Autodesk FBX (.fbx)").filepath = default_path + self.layout.operator(ExportFBX.bl_idname, text="Autodesk FBX (.fbx)") def register(): diff --git a/release/scripts/io/export_mdd.py b/release/scripts/io/export_mdd.py index 2d45e18ef77..a3e491a7bd5 100644 --- a/release/scripts/io/export_mdd.py +++ b/release/scripts/io/export_mdd.py @@ -185,15 +185,16 @@ class ExportMDD(bpy.types.Operator): return {'FINISHED'} def invoke(self, context, event): - wm = context.manager - wm.add_fileselect(self) + import os + if not self.properties.is_property_set("filepath"): + self.properties.filepath = os.path.splitext(bpy.data.filepath)[0] + ".mdd" + + context.manager.add_fileselect(self) return {'RUNNING_MODAL'} def menu_func(self, context): - import os - default_path = os.path.splitext(bpy.data.filepath)[0] + ".mdd" - self.layout.operator(ExportMDD.bl_idname, text="Lightwave Point Cache (.mdd)").filepath = default_path + self.layout.operator(ExportMDD.bl_idname, text="Lightwave Point Cache (.mdd)") def register(): diff --git a/release/scripts/io/export_obj.py b/release/scripts/io/export_obj.py index 5603f52d1a4..a25daedf1bb 100644 --- a/release/scripts/io/export_obj.py +++ b/release/scripts/io/export_obj.py @@ -363,7 +363,7 @@ def write_file(filepath, objects, scene, file.write('mtllib %s\n' % ( mtlfilepath.split('\\')[-1].split('/')[-1] )) if EXPORT_ROTX90: - mat_xrot90= mathutils.RotationMatrix(-math.pi/2, 4, 'X') + mat_xrot90= mathutils.Matrix.Rotation(-math.pi/2, 4, 'X') # Initialize totals, these are updated each object totverts = totuvco = totno = 1 @@ -960,14 +960,16 @@ class ExportOBJ(bpy.types.Operator): return {'FINISHED'} def invoke(self, context, event): - wm = context.manager - wm.add_fileselect(self) + import os + if not self.properties.is_property_set("filepath"): + self.properties.filepath = os.path.splitext(bpy.data.filepath)[0] + ".obj" + + context.manager.add_fileselect(self) return {'RUNNING_MODAL'} def menu_func(self, context): - default_path = os.path.splitext(bpy.data.filepath)[0] + ".obj" - self.layout.operator(ExportOBJ.bl_idname, text="Wavefront (.obj)").filepath = default_path + self.layout.operator(ExportOBJ.bl_idname, text="Wavefront (.obj)") def register(): diff --git a/release/scripts/io/export_ply.py b/release/scripts/io/export_ply.py index f4d7cae75a3..7ea3c72a662 100644 --- a/release/scripts/io/export_ply.py +++ b/release/scripts/io/export_ply.py @@ -293,8 +293,11 @@ class ExportPLY(bpy.types.Operator): return {'FINISHED'} def invoke(self, context, event): - wm = context.manager - wm.add_fileselect(self) + import os + if not self.properties.is_property_set("filepath"): + self.properties.filepath = os.path.splitext(bpy.data.filepath)[0] + ".ply" + + context.manager.add_fileselect(self) return {'RUNNING_MODAL'} def draw(self, context): @@ -310,9 +313,7 @@ class ExportPLY(bpy.types.Operator): def menu_func(self, context): - import os - default_path = os.path.splitext(bpy.data.filepath)[0] + ".ply" - self.layout.operator(ExportPLY.bl_idname, text="Stanford (.ply)").filepath = default_path + self.layout.operator(ExportPLY.bl_idname, text="Stanford (.ply)") def register(): diff --git a/release/scripts/io/export_x3d.py b/release/scripts/io/export_x3d.py index 5fe48a2550a..0d9c3efaec5 100644 --- a/release/scripts/io/export_x3d.py +++ b/release/scripts/io/export_x3d.py @@ -81,7 +81,7 @@ from export_3ds import create_derived_objects, free_derived_objects # DEG2RAD=0.017453292519943295 -MATWORLD= mathutils.RotationMatrix(-90, 4, 'X') +MATWORLD= mathutils.Matrix.Rotation(-90, 4, 'X') #################################### # Global Variables @@ -1205,14 +1205,16 @@ class ExportX3D(bpy.types.Operator): return {'FINISHED'} def invoke(self, context, event): - wm = context.manager - wm.add_fileselect(self) + import os + if not self.properties.is_property_set("filepath"): + self.properties.filepath = os.path.splitext(bpy.data.filepath)[0] + ".x3d" + + context.manager.add_fileselect(self) return {'RUNNING_MODAL'} def menu_func(self, context): - default_path = os.path.splitext(bpy.data.filepath)[0] + ".x3d" - self.layout.operator(ExportX3D.bl_idname, text="X3D Extensible 3D (.x3d)").filepath = default_path + self.layout.operator(ExportX3D.bl_idname, text="X3D Extensible 3D (.x3d)") def register(): diff --git a/release/scripts/io/import_anim_bvh.py b/release/scripts/io/import_anim_bvh.py index ba9b8a1f91d..3a807680700 100644 --- a/release/scripts/io/import_anim_bvh.py +++ b/release/scripts/io/import_anim_bvh.py @@ -23,7 +23,7 @@ from math import radians import bpy import mathutils -from mathutils import Vector, Euler, Matrix, RotationMatrix, TranslationMatrix +from mathutils import Vector, Euler, Matrix class bvh_node_class(object): @@ -78,7 +78,7 @@ MATRIX_IDENTITY_4x4 = Matrix([1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, def eulerRotate(x, y, z, rot_order): # Clamp all values between 0 and 360, values outside this raise an error. - mats = [RotationMatrix(x, 3, 'X'), RotationMatrix(y, 3, 'Y'), RotationMatrix(z, 3, 'Z')] + mats = [Matrix.Rotation(x, 3, 'X'), Matrix.Rotation(y, 3, 'Y'), Matrix.Rotation(z, 3, 'Z')] return (MATRIX_IDENTITY_3x3 * mats[rot_order[0]] * (mats[rot_order[1]] * (mats[rot_order[2]]))).to_euler() # Should work but doesnt! @@ -529,7 +529,7 @@ def bvh_node_dict2armature(context, bvh_nodes, ROT_MODE='XYZ', IMPORT_START_FRAM prev_euler[i] = euler if bvh_node.has_loc: - pose_bone.location = (bone_rest_matrix_inv * TranslationMatrix(Vector((lx, ly, lz)) - bvh_node.rest_head_local)).translation_part() + pose_bone.location = (bone_rest_matrix_inv * Matrix.Translation(Vector((lx, ly, lz)) - bvh_node.rest_head_local)).translation_part() if bvh_node.has_loc: pose_bone.keyframe_insert("location") diff --git a/release/scripts/io/import_scene_3ds.py b/release/scripts/io/import_scene_3ds.py index fe242ca1f29..0c30a8bd127 100644 --- a/release/scripts/io/import_scene_3ds.py +++ b/release/scripts/io/import_scene_3ds.py @@ -141,7 +141,7 @@ import os import time import struct -from import_scene_obj import unpack_face_list, load_image +from import_scene_obj import load_image import bpy import mathutils @@ -312,10 +312,10 @@ def process_next_chunk(file, previous_chunk, importedObjects, IMAGE_SEARCH): contextMaterial = None contextMatrix_rot = None # Blender.mathutils.Matrix(); contextMatrix.identity() #contextMatrix_tx = None # Blender.mathutils.Matrix(); contextMatrix.identity() - contextMesh_vertls = None + contextMesh_vertls = None # flat array: (verts * 3) contextMesh_facels = None contextMeshMaterials = {} # matname:[face_idxs] - contextMeshUV = None + contextMeshUV = None # flat array (verts * 2) TEXTURE_DICT = {} MATDICT = {} @@ -333,113 +333,69 @@ def process_next_chunk(file, previous_chunk, importedObjects, IMAGE_SEARCH): # print STRUCT_SIZE_4x3MAT, ' STRUCT_SIZE_4x3MAT' def putContextMesh(myContextMesh_vertls, myContextMesh_facels, myContextMeshMaterials): - - materialFaces = set() # faces that have a material. Can optimize? - - # Now make copies with assigned materils. - - def makeMeshMaterialCopy(matName, faces): - ''' - Make a new mesh with only face the faces that use this material. - faces can be any iterable object - containing ints. - ''' - - faceVertUsers = [False] * len(myContextMesh_vertls) - ok = 0 - for fIdx in faces: - for vindex in myContextMesh_facels[fIdx]: - faceVertUsers[vindex] = True - if matName != None: # if matName is none then this is a set(), meaning we are using the untextured faces and do not need to store textured faces. - materialFaces.add(fIdx) - ok = 1 - - if not ok: - return - - myVertMapping = {} - vertMappingIndex = 0 - - vertsToUse = [i for i in range(len(myContextMesh_vertls)) if faceVertUsers[i]] - myVertMapping = {ii: i for i, ii in enumerate(vertsToUse)} - - tempName= '%s_%s' % (contextObName, matName) # matName may be None. - bmesh = bpy.data.meshes.new(tempName) - - if matName == None: - img = None + + bmesh = bpy.data.meshes.new(contextObName) + if myContextMesh_vertls: + + bmesh.add_geometry(len(myContextMesh_vertls)//3, 0, len(myContextMesh_facels)) + bmesh.verts.foreach_set("co", myContextMesh_vertls) + + eekadoodle_faces = [] + for v1, v2, v3 in myContextMesh_facels: + eekadoodle_faces.extend([v3, v1, v2, 0] if v3 == 0 else [v1, v2, v3, 0]) + bmesh.faces.foreach_set("verts_raw", eekadoodle_faces) + + if bmesh.faces and contextMeshUV: + bmesh.add_uv_texture() + uv_faces = bmesh.active_uv_texture.data[:] else: - bmat = MATDICT[matName][1] - bmesh.add_material(bmat) -# bmesh.materials = [bmat] - try: img = TEXTURE_DICT[bmat.name] - except: img = None - -# bmesh_verts = bmesh.verts - if len(vertsToUse): - bmesh.add_geometry(len(vertsToUse), 0, len(faces)) - - # XXX why add extra vertex? -# bmesh_verts.extend( [Vector()] ) - bmesh.verts.foreach_set("co", [x for tup in [myContextMesh_vertls[i] for i in vertsToUse] for x in tup]) -# bmesh_verts.extend( [myContextMesh_vertls[i] for i in vertsToUse] ) - - # +1 because of DUMMYVERT - bmesh.faces.foreach_set("verts_raw", unpack_face_list([[myVertMapping[vindex] for vindex in myContextMesh_facels[fIdx]] for fIdx in faces])) -# face_mapping = bmesh.faces.extend( [ [ bmesh_verts[ myVertMapping[vindex]+1] for vindex in myContextMesh_facels[fIdx]] for fIdx in faces ], indexList=True ) - - if bmesh.faces and (contextMeshUV or img): - bmesh.add_uv_texture() - for ii, i in enumerate(faces): - - # Mapped index- faces may have not been added- if so, then map to the correct index - # BUGGY API - face_mapping is not always the right length -# map_index = face_mapping[ii] - - if 1: -# if map_index != None: - targetFace = bmesh.faces[ii] -# targetFace = bmesh.faces[map_index] - - uf = bmesh.active_uv_texture.data[ii] - - if contextMeshUV: - # v.index-1 because of the DUMMYVERT - uvs = [contextMeshUV[vindex] for vindex in myContextMesh_facels[i]] - - if len(myContextMesh_facels[i]) == 3: - uf.uv1, uf.uv2, uf.uv3, uf.uv4 = uvs + [(0.0, 0.0)] - else: - uf.uv1, uf.uv2, uf.uv3, uf.uv4 = uvs -# targetFace.uv = [contextMeshUV[vindex] for vindex in myContextMesh_facels[i]] - if img: - uf.image = img - - # to get this image to show up in 'Textured' shading mode - uf.tex = True - - # bmesh.transform(contextMatrix) - ob = bpy.data.objects.new(tempName, bmesh) - SCN.objects.link(ob) -# ob = SCN_OBJECTS.new(bmesh, tempName) - ''' - if contextMatrix_tx: - ob.setMatrix(contextMatrix_tx) - ''' - - if contextMatrix_rot: - ob.matrix_world = contextMatrix_rot - - importedObjects.append(ob) - bmesh.update() -# bmesh.calcNormals() - - for matName, faces in myContextMeshMaterials.items(): - makeMeshMaterialCopy(matName, faces) - - if len(materialFaces) != len(myContextMesh_facels): - # Invert material faces. - makeMeshMaterialCopy(None, set(range(len( myContextMesh_facels ))) - materialFaces) - #raise 'Some UnMaterialed faces', len(contextMesh.faces) + uv_faces = None + + for mat_idx, (matName, faces) in enumerate(myContextMeshMaterials.items()): + if matName is None: + bmesh.add_material(None) + else: + bmat = MATDICT[matName][1] + bmesh.add_material(bmat) # can be None + img = TEXTURE_DICT.get(bmat.name) + + if uv_faces and img: + for fidx in faces: + bmesh.faces[fidx].material_index = mat_idx + uf = uv_faces[fidx] + uf.image = img + uf.tex = True + else: + for fidx in faces: + bmesh.faces[fidx].material_index = mat_idx + + if uv_faces: + for fidx, uf in enumerate(uv_faces): + face = myContextMesh_facels[fidx] + v1, v2, v3 = face + + # eekadoodle + if v3 == 0: + v1, v2, v3 = v3, v1, v2 + + uf.uv1 = contextMeshUV[v1 * 2:(v1 * 2) + 2] + uf.uv2 = contextMeshUV[v2 * 2:(v2 * 2) + 2] + uf.uv3 = contextMeshUV[v3 * 2:(v3 * 2) + 2] + # always a tri + + ob = bpy.data.objects.new(tempName, bmesh) + SCN.objects.link(ob) + + ''' + if contextMatrix_tx: + ob.setMatrix(contextMatrix_tx) + ''' + + if contextMatrix_rot: + ob.matrix_world = contextMatrix_rot + + importedObjects.append(ob) + bmesh.update() #a spare chunk new_chunk = chunk() @@ -667,14 +623,10 @@ def process_next_chunk(file, previous_chunk, importedObjects, IMAGE_SEARCH): new_chunk.bytes_read += 2 # print 'number of verts: ', num_verts - def getvert(): - temp_data = struct.unpack('<3f', file.read(STRUCT_SIZE_3FLOAT)) - new_chunk.bytes_read += STRUCT_SIZE_3FLOAT #12: 3 floats x 4 bytes each - return temp_data - - #contextMesh.verts.extend( [Vector(),] ) # DUMMYVERT! - remove when blenders internals are fixed. - contextMesh_vertls = [getvert() for i in range(num_verts)] - + contextMesh_vertls = struct.unpack('<%df' % (num_verts * 3), file.read(STRUCT_SIZE_3FLOAT * num_verts)) + new_chunk.bytes_read += STRUCT_SIZE_3FLOAT * num_verts + # dummyvert is not used atm! + #print 'object verts: bytes read: ', new_chunk.bytes_read elif (new_chunk.ID == OBJECT_FACES): @@ -684,15 +636,11 @@ def process_next_chunk(file, previous_chunk, importedObjects, IMAGE_SEARCH): new_chunk.bytes_read += 2 #print 'number of faces: ', num_faces - def getface(): - # print '\ngetting a face' - temp_data = file.read(STRUCT_SIZE_4UNSIGNED_SHORT) - new_chunk.bytes_read += STRUCT_SIZE_4UNSIGNED_SHORT #4 short ints x 2 bytes each - v1,v2,v3,dummy = struct.unpack('<4H', temp_data) - return v1, v2, v3 - - contextMesh_facels = [ getface() for i in range(num_faces) ] - + # print '\ngetting a face' + temp_data = file.read(STRUCT_SIZE_4UNSIGNED_SHORT * num_faces) + new_chunk.bytes_read += STRUCT_SIZE_4UNSIGNED_SHORT * num_faces #4 short ints x 2 bytes each + contextMesh_facels = struct.unpack('<%dH' % (num_faces * 4), temp_data) + contextMesh_facels = [contextMesh_facels[i - 3:i] for i in range(3, (num_faces * 4) + 3, 4)] elif (new_chunk.ID == OBJECT_MATERIAL): # print 'elif (new_chunk.ID == OBJECT_MATERIAL):' @@ -703,12 +651,11 @@ def process_next_chunk(file, previous_chunk, importedObjects, IMAGE_SEARCH): num_faces_using_mat = struct.unpack('<H', temp_data)[0] new_chunk.bytes_read += STRUCT_SIZE_UNSIGNED_SHORT - def getmat(): - temp_data = file.read(STRUCT_SIZE_UNSIGNED_SHORT) - new_chunk.bytes_read += STRUCT_SIZE_UNSIGNED_SHORT - return struct.unpack('<H', temp_data)[0] + + temp_data = file.read(STRUCT_SIZE_UNSIGNED_SHORT * num_faces_using_mat) + new_chunk.bytes_read += STRUCT_SIZE_UNSIGNED_SHORT * num_faces_using_mat - contextMeshMaterials[material_name]= [ getmat() for i in range(num_faces_using_mat) ] + contextMeshMaterials[material_name]= struct.unpack("<%dH" % (num_faces_using_mat), temp_data) #look up the material in all the materials @@ -717,12 +664,9 @@ def process_next_chunk(file, previous_chunk, importedObjects, IMAGE_SEARCH): num_uv = struct.unpack('<H', temp_data)[0] new_chunk.bytes_read += 2 - def getuv(): - temp_data = file.read(STRUCT_SIZE_2FLOAT) - new_chunk.bytes_read += STRUCT_SIZE_2FLOAT #2 float x 4 bytes each - return mathutils.Vector( struct.unpack('<2f', temp_data) ) - - contextMeshUV = [ getuv() for i in range(num_uv) ] + temp_data = file.read(STRUCT_SIZE_2FLOAT * num_uv) + new_chunk.bytes_read += STRUCT_SIZE_2FLOAT * num_uv + contextMeshUV = struct.unpack('<%df' % (num_uv * 2), temp_data) elif (new_chunk.ID == OBJECT_TRANS_MATRIX): # How do we know the matrix size? 54 == 4x4 48 == 4x3 @@ -771,7 +715,7 @@ def process_next_chunk(file, previous_chunk, importedObjects, IMAGE_SEARCH): #print contextMatrix_rot contextMatrix_rot.invert() #print contextMatrix_rot - #contextMatrix_tx = Blender.mathutils.TranslationMatrix(0.5 * Blender.mathutils.Vector(data[9:])) + #contextMatrix_tx = mathutils.Matrix.Translation(0.5 * Blender.mathutils.Vector(data[9:])) #contextMatrix_tx.invert() #tx.invert() @@ -806,7 +750,7 @@ def process_next_chunk(file, previous_chunk, importedObjects, IMAGE_SEARCH): # FINISHED LOOP # There will be a number of objects still not added - if contextMesh_facels != None: + if CreateBlenderObject: putContextMesh(contextMesh_vertls, contextMesh_facels, contextMeshMaterials) def load_3ds(filename, context, IMPORT_CONSTRAIN_BOUNDS=10.0, IMAGE_SEARCH=True, APPLY_MATRIX=False): diff --git a/release/scripts/io/import_scene_obj.py b/release/scripts/io/import_scene_obj.py index e832489a560..3c976c4cf92 100644 --- a/release/scripts/io/import_scene_obj.py +++ b/release/scripts/io/import_scene_obj.py @@ -82,23 +82,21 @@ def unpack_list(list_of_tuples): # same as above except that it adds 0 for triangle faces def unpack_face_list(list_of_tuples): - l = [] - for t in list_of_tuples: - face = [i for i in t] - - if len(face) != 3 and len(face) != 4: - raise RuntimeError("{0} vertices in face.".format(len(face))) + # allocate the entire list + flat_ls = [0] * (len(list_of_tuples) * 4) + i = 0 - # rotate indices if the 4th is 0 - if len(face) == 4 and face[3] == 0: - face = [face[3], face[0], face[1], face[2]] - - if len(face) == 3: - face.append(0) - - l.extend(face) + for t in list_of_tuples: + if len(t) == 3: + if t[2] == 0: + t = t[1], t[2], t[0] + else: # assuem quad + if t[3] == 0 or t[2] == 0: + t = t[2], t[3], t[0], t[1] - return l + flat_ls[i:i + len(t)] = t + i += 4 + return flat_ls def BPyMesh_ngon(from_data, indices, PREF_FIX_LOOPS= True): ''' @@ -305,24 +303,28 @@ def load_image(imagepath, dirname): if os.path.exists(imagepath): return bpy.data.images.load(imagepath) - variants = [os.path.join(dirname, imagepath), os.path.join(dirname, os.path.basename(imagepath))] + variants = [imagepath, os.path.join(dirname, imagepath), os.path.join(dirname, os.path.basename(imagepath))] - for path in variants: - if os.path.exists(path): - return bpy.data.images.load(path) - else: - print(path, "doesn't exist") + for filepath in variants: + for nfilepath in (filepath, bpy.path.resolve_ncase(filepath)): + if os.path.exists(nfilepath): + return bpy.data.images.load(nfilepath) # TODO comprehensiveImageLoad also searched in bpy.config.textureDir return None def obj_image_load(imagepath, DIR, IMAGE_SEARCH): - if '_' in imagepath: image= load_image(imagepath.replace('_', ' '), DIR) - if image: return image + if image: + return image + + image = load_image(imagepath, DIR) + if image: + return image - return load_image(imagepath, DIR) + print("failed to load '%s' doesn't exist", imagepath) + return None # def obj_image_load(imagepath, DIR, IMAGE_SEARCH): # ''' @@ -765,14 +767,12 @@ def create_mesh(scn, new_objects, has_ngons, CREATE_FGONS, CREATE_EDGES, verts_l blender_tface= me.uv_textures[0].data[i] if context_material: - image, has_data= unique_material_images[context_material] + image, has_data = unique_material_images[context_material] if image: # Can be none if the material dosnt have an image. - blender_tface.image= image -# blender_face.image= image - if has_data: -# if has_data and image.depth == 32: + blender_tface.image = image + blender_tface.tex = True + if has_data and image.depth == 32: blender_tface.transp = 'ALPHA' -# blender_face.transp |= ALPHA # BUG - Evil eekadoodle problem where faces that have vert index 0 location at 3 or 4 are shuffled. if len(face_vert_loc_indicies)==4: @@ -1596,8 +1596,7 @@ class IMPORT_OT_obj(bpy.types.Operator): return {'FINISHED'} def invoke(self, context, event): - wm = context.manager - wm.add_fileselect(self) + context.manager.add_fileselect(self) return {'RUNNING_MODAL'} diff --git a/release/scripts/io/import_shape_mdd.py b/release/scripts/io/import_shape_mdd.py index d74726dce2e..522f860684f 100644 --- a/release/scripts/io/import_shape_mdd.py +++ b/release/scripts/io/import_shape_mdd.py @@ -12,7 +12,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # ***** END GPL LICENCE BLOCK ***** diff --git a/release/scripts/modules/add_object_utils.py b/release/scripts/modules/add_object_utils.py index 9031121060a..41c05ce9d8a 100644 --- a/release/scripts/modules/add_object_utils.py +++ b/release/scripts/modules/add_object_utils.py @@ -25,11 +25,11 @@ import mathutils def add_object_align_init(context, operator): if operator and operator.properties.is_property_set("location") and operator.properties.is_property_set("rotation"): - location = mathutils.TranslationMatrix(mathutils.Vector(operator.properties.location)) + location = mathutils.Matrix.Translation(mathutils.Vector(operator.properties.location)) rotation = mathutils.Euler(operator.properties.rotation).to_matrix().resize4x4() else: # TODO, local view cursor! - location = mathutils.TranslationMatrix(context.scene.cursor_location) + location = mathutils.Matrix.Translation(context.scene.cursor_location) if context.user_preferences.edit.object_align == 'VIEW' and context.space_data.type == 'VIEW_3D': rotation = context.space_data.region_3d.view_matrix.rotation_part().invert().resize4x4() diff --git a/release/scripts/modules/bpy/utils.py b/release/scripts/modules/bpy/utils.py index c7ee23264e8..6c1c669d1f2 100644 --- a/release/scripts/modules/bpy/utils.py +++ b/release/scripts/modules/bpy/utils.py @@ -30,8 +30,6 @@ import sys as _sys from _bpy import blend_paths from _bpy import script_paths as _bpy_script_paths -_TEST_XML = _bpy.app.debug - def _test_import(module_name, loaded_modules): import traceback import time @@ -54,35 +52,6 @@ def _test_import(module_name, loaded_modules): loaded_modules.add(mod.__name__) # should match mod.__name__ too return mod -if _TEST_XML: - # TEST CODE - def _test_import_xml(path, f, loaded_modules): - import bpy_xml_ui - import traceback - - f_full = _os.path.join(path, f) - _bpy_types._register_immediate = True - try: - classes = bpy_xml_ui.load_xml(f_full) - except: - traceback.print_exc() - classes = [] - _bpy_types._register_immediate = False - - if classes: - mod_name = f.split(".")[0] - - # fake module - mod = type(traceback)(mod_name) - mod.__file__ = f_full - for cls in classes: - setattr(mod, cls.__name__, cls) - - loaded_modules.add(mod_name) - _sys.modules[mod_name] = mod - mod.register = lambda: None # quiet errors - return mod - def modules_from_path(path, loaded_modules): """ @@ -110,10 +79,6 @@ def modules_from_path(path, loaded_modules): else: mod = None - if _TEST_XML: - if mod is None and f.endswith(".xml"): - mod = _test_import_xml(path, f, loaded_modules) - if mod: modules.append(mod) diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index 0cd0aaaa3f0..0a796793d01 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -525,7 +525,7 @@ class Text(bpy_types.ID): def as_string(self): """Return the text as a string.""" - return "\n".join(line.line for line in self.lines) + return "\n".join(line.body for line in self.lines) def from_string(self, string): """Replace text with this string.""" diff --git a/release/scripts/modules/bpy_xml_ui.py b/release/scripts/modules/bpy_xml_ui.py deleted file mode 100644 index 18eec9c4ef4..00000000000 --- a/release/scripts/modules/bpy_xml_ui.py +++ /dev/null @@ -1,151 +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. -# -# ##### END GPL LICENSE BLOCK ##### - -# <pep8 compliant> - -""" -This module translates XML into blender/ui function calls. -""" - -import xml.dom.minidom -import bpy as _bpy - -def parse_rna(prop, value): - if prop.type == 'FLOAT': - value = float(value) - elif prop.type == 'INT': - value = int(value) - elif prop.type == 'BOOLEAN': - if value not in ("true", "false"): - raise Exception("invalid bool value: %s", value) - value = bool(value == "true") - elif prop.type in ('STRING', 'ENUM'): - pass - elif prop.type == 'POINTER': - value = eval("_bpy." + value) - else: - raise Exception("type not supported %s.%s" % (prop.identifier, prop.type)) - return value - -def parse_args(base, xml_node): - args = {} - rna_params = base.bl_rna.functions[xml_node.tagName].parameters - for key, value in xml_node.attributes.items(): - args[key] = parse_rna(rna_params[key], value) - return args - -def ui_xml(base, xml_node): - name = xml_node.tagName - prop = base.bl_rna.properties.get(name) - if name in base.bl_rna.properties: - attr = xml_node.attributes.get("expr") - if attr: - value = attr.value - value = eval(value, {"context": _bpy.context}) - setattr(base, name, value) - else: - attr = xml_node.attributes['value'] - value = attr.value - value = parse_rna(prop, value) - setattr(base, name, value) - else: - func_new = getattr(base, name) - kw_args = parse_args(base, xml_node) - base_new = func_new(**kw_args) # call blender func - if xml_node.hasChildNodes(): - ui_xml_list(base_new, xml_node.childNodes) - -def ui_xml_list(base, xml_nodes): - import bpy - for node in xml_nodes: - if node.nodeType not in (node.TEXT_NODE, node.COMMENT_NODE): - ui_xml(base, node) - bpy.N = node - -def test(layout): - uixml = xml.dom.minidom.parseString(open("/mnt/test/blender-svn/blender/release/scripts/ui/test.xml", 'r').read()) - panel = uixml.getElementsByTagName('panel')[0] - ui_xml_list(layout, panel.childNodes) - -def load_xml(filepath): - classes = [] - fn = open(filepath, 'r') - data = fn.read() - uixml = xml.dom.minidom.parseString(data).getElementsByTagName("ui")[0] - fn.close() - - def draw_xml(self, context): - node = self._xml_node.getElementsByTagName("draw")[0] - ui_xml_list(self.layout, node.childNodes) - - def draw_header_xml(self, context): - node = self._xml_node.getElementsByTagName("draw_header")[0] - ui_xml_list(self.layout, node.childNodes) - - for node in uixml.childNodes: - if node.nodeType not in (node.TEXT_NODE, node.COMMENT_NODE): - name = node.tagName - class_name = node.attributes["identifier"].value - - if name == "panel": - class_dict = { - "bl_label": node.attributes["label"].value, - "bl_region_type": node.attributes["region_type"].value, - "bl_space_type": node.attributes["space_type"].value, - "bl_context": node.attributes["context"].value, - "bl_default_closed": ((node.attributes["default_closed"].value == "true") if "default_closed" in node.attributes else False), - - "draw": draw_xml, - "_xml_node": node - } - - if node.getElementsByTagName("draw_header"): - class_dict["draw_header"] = draw_header_xml - - # will register instantly - class_new = type(class_name, (_bpy.types.Panel,), class_dict) - - elif name == "menu": - class_dict = { - "bl_label": node.attributes["label"].value, - - "draw": draw_xml, - "_xml_node": node - } - - # will register instantly - class_new = type(class_name, (_bpy.types.Menu,), class_dict) - - elif name == "header": - class_dict = { - "bl_label": node.attributes["label"].value, - "bl_space_type": node.attributes["space_type"].value, - - "draw": draw_xml, - "_xml_node": node - } - - # will register instantly - class_new = type(class_name, (_bpy.types.Header,), class_dict) - else: - raise Exception("invalid id found '%s': expected a value in ('header', 'panel', 'menu)'" % name) - - classes.append(class_new) - - - return classes diff --git a/release/scripts/modules/bpyml.py b/release/scripts/modules/bpyml.py new file mode 100644 index 00000000000..f30a4b8d9ac --- /dev/null +++ b/release/scripts/modules/bpyml.py @@ -0,0 +1,204 @@ +# ##### 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. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> + +""" +This module translates a python like XML representation into XML +or simple python blender/ui function calls. + + sometag(arg=10) [ + another() + another(key="value") + ] + +# converts into ... + + <sometag arg="10"> + <another/> + <another key="value" /> + </sometag> + +""" + +TAG, ARGS, CHILDREN = range(3) +class ReturnStore(tuple): + def __getitem__(self, key): + + # single item get's + if type(key) is ReturnStore: + key = (key, ) + + if type(key) is tuple: + children = self[CHILDREN] + if children: + raise Exception("Only a single __getitem__ is allowed on the ReturnStore") + else: + children[:] = key + return self + else: + return tuple.__getitem__(self, key) + + +class FunctionStore(object): + def __call__(self, **kwargs): + return ReturnStore((self.__class__.__name__, kwargs, [])) + + +def tag_vars(tags, module=__name__): + return {tag: type(tag, (FunctionStore, ), {"__module__": module})() for tag in tags} + + +def tag_module(mod_name, tags): + import sys + from types import ModuleType + mod = ModuleType(mod_name) + sys.modules[mod_name] = mod + dict_values = tag_vars(tags, mod_name) + mod.__dict__.update(dict_values) + return mod + + +def toxml(py_data, indent=" "): + + if len(py_data) != 1 or type(py_data) != list: + raise Exception("Expected a list with one member") + + def _to_xml(py_item, xml_node=None): + if xml_node is None: + xml_node = newdoc.createElement(py_item[TAG]) + + for key, value in py_item[ARGS].items(): + xml_node.setAttribute(key, str(value)) + + for py_item_child in py_item[CHILDREN]: + xml_node.appendChild(_to_xml(py_item_child)) + + return xml_node + + def _to_xml_iter(xml_parent, data_ls): + for py_item in data_ls: + xml_node = newdoc.createElement(py_item[TAG]) + + + # ok if its empty + _to_xml_iter(xml_node, py_item[CHILDREN]) + + import xml.dom.minidom + impl = xml.dom.minidom.getDOMImplementation() + newdoc = impl.createDocument(None, py_data[0][TAG], None) + + _to_xml(py_data[0], newdoc.documentElement) + + return newdoc.documentElement.toprettyxml(indent=" ") + + +def fromxml(data): + def _fromxml_kwargs(xml_node): + kwargs = {} + for key, value in xml_node.attributes.items(): + kwargs[key] = value + return kwargs + + + def _fromxml(xml_node): + py_item = (xml_node.tagName, _fromxml_kwargs(xml_node), []) + #_fromxml_iter(py_item, xml_node.childNodes) + for xml_node_child in xml_node.childNodes: + if xml_node_child.nodeType not in (xml_node_child.TEXT_NODE, xml_node_child.COMMENT_NODE): + py_item[CHILDREN].append(_fromxml(xml_node_child)) + return py_item + + import xml.dom.minidom + xml_doc = xml.dom.minidom.parseString(data) + return [_fromxml(xml_doc.documentElement)] + + +def topretty_py(py_data, indent=" "): + + if len(py_data) != 1: + raise Exception("Expected a list with one member") + + lines = [] + + def _to_kwargs(kwargs): + return ", ".join([("%s=%s" % (key, repr(value))) for key, value in sorted(kwargs.items())]) + + def _topretty(py_item, indent_ctx, last): + if py_item[CHILDREN]: + lines.append("%s%s(%s) [" % (indent_ctx, py_item[TAG], _to_kwargs(py_item[ARGS]))) + py_item_last = py_item[CHILDREN][-1] + for py_item_child in py_item[CHILDREN]: + _topretty(py_item_child, indent_ctx + indent, (py_item_child is py_item_last)) + lines.append("%s]%s" % (indent_ctx, ("" if last else ","))) + else: + lines.append("%s%s(%s)%s" % (indent_ctx, py_item[TAG], _to_kwargs(py_item[ARGS]), ("" if last else ","))) + + _topretty(py_data[0], "", True) + + return "\n".join(lines) + +if __name__ == "__main__": + # testing code. + + tag_module("bpyml_test", ("ui", "prop", "row", "column", "active", "separator", "split")) + from bpyml_test import * + + draw = [ + ui() [ + split() [ + column() [ + prop(data='context.scene.render', property='stamp_time', text='Time'), + prop(data='context.scene.render', property='stamp_date', text='Date'), + prop(data='context.scene.render', property='stamp_render_time', text='RenderTime'), + prop(data='context.scene.render', property='stamp_frame', text='Frame'), + prop(data='context.scene.render', property='stamp_scene', text='Scene'), + prop(data='context.scene.render', property='stamp_camera', text='Camera'), + prop(data='context.scene.render', property='stamp_filename', text='Filename'), + prop(data='context.scene.render', property='stamp_marker', text='Marker'), + prop(data='context.scene.render', property='stamp_sequencer_strip', text='Seq. Strip') + ], + column() [ + active(expr='context.scene.render.render_stamp'), + prop(data='context.scene.render', property='stamp_foreground', slider=True), + prop(data='context.scene.render', property='stamp_background', slider=True), + separator(), + prop(data='context.scene.render', property='stamp_font_size', text='Font Size') + ] + ], + split(percentage=0.2) [ + prop(data='context.scene.render', property='stamp_note', text='Note'), + row() [ + active(expr='context.scene.render.stamp_note'), + prop(data='context.scene.render', property='stamp_note_text', text='') + ] + ] + ] + ] + + xml_data = toxml(draw) + print(xml_data) # xml version + + py_data = fromxml(xml_data) + print(py_data) # converted back to py + + xml_data = toxml(py_data) + print(xml_data) # again back to xml + + py_data = fromxml(xml_data) # pretty python version + print(topretty_py(py_data)) diff --git a/release/scripts/modules/bpyml_ui.py b/release/scripts/modules/bpyml_ui.py new file mode 100644 index 00000000000..ad68d1b0d7e --- /dev/null +++ b/release/scripts/modules/bpyml_ui.py @@ -0,0 +1,100 @@ +# ##### 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. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> + + +import bpy as _bpy +import bpyml +from bpyml import TAG, ARGS, CHILDREN +from types import ModuleType + +_uilayout_rna = _bpy.types.UILayout.bl_rna + +_uilayout_tags = ["ui"] + \ + _uilayout_rna.properties.keys() + \ + _uilayout_rna.functions.keys() + +# these need to be imported directly +# >>> from bpyml_ui.locals import * +locals = bpyml.tag_module("%s.locals" % __name__ , _uilayout_tags) + + +def _parse_rna(prop, value): + if prop.type == 'FLOAT': + value = float(value) + elif prop.type == 'INT': + value = int(value) + elif prop.type == 'BOOLEAN': + if value in (True, False): + pass + else: + if value not in ("True", "False"): + raise Exception("invalid bool value: %s" % value) + value = bool(value == "True") + elif prop.type in ('STRING', 'ENUM'): + pass + elif prop.type == 'POINTER': + value = eval("_bpy." + value) + else: + raise Exception("type not supported %s.%s" % (prop.identifier, prop.type)) + return value + + +def _parse_rna_args(base, py_node): + rna_params = base.bl_rna.functions[py_node[TAG]].parameters + args = {} + for key, value in py_node[ARGS].items(): + args[key] = _parse_rna(rna_params[key], value) + return args + + +def _call_recursive(context, base, py_node): + prop = base.bl_rna.properties.get(py_node[TAG]) + if py_node[TAG] in base.bl_rna.properties: + value = py_node[ARGS].get("expr") + if value: + value = eval(value, {"context": _bpy.context}) + setattr(base, py_node[TAG], value) + else: + value = py_node[ARGS]['value'] # have to have this + setattr(base, name, value) + else: + args = _parse_rna_args(base, py_node) + func_new = getattr(base, py_node[TAG]) + base_new = func_new(**args) # call blender func + if base_new is not None: + for py_node_child in py_node[CHILDREN]: + _call_recursive(context, base_new, py_node_child) + + +class BPyML_BaseUI(): + ''' + This is a mix-in class that defines a draw function + which checks for draw_data + ''' + + def draw(self, context): + layout = self.layout + for py_node in self.draw_data[CHILDREN]: + _call_recursive(context, layout, py_node) + + def draw_header(self, context): + layout = self.layout + for py_node in self.draw_header_data[CHILDREN]: + _call_recursive(context, layout, py_node) diff --git a/release/scripts/modules/rigify/spine_pivot_flex.py b/release/scripts/modules/rigify/spine_pivot_flex.py index 86f2399f7ff..c4c9886e2e2 100644 --- a/release/scripts/modules/rigify/spine_pivot_flex.py +++ b/release/scripts/modules/rigify/spine_pivot_flex.py @@ -147,7 +147,7 @@ def deform(obj, definitions, base_names, options): def main(obj, bone_definition, base_names, options): - from mathutils import Vector, RotationMatrix + from mathutils import Vector, Matrix from math import radians, pi arm = obj.data @@ -264,7 +264,7 @@ def main(obj, bone_definition, base_names, options): # Rotate the rev chain 180 about the by the first bones center point pivot = (rv_chain.spine_01_e.head + rv_chain.spine_01_e.tail) * 0.5 - matrix = RotationMatrix(radians(180), 3, 'X') + matrix = Matrix.Rotation(radians(180), 3, 'X') for i, attr in enumerate(rv_chain.attr_names): # similar to neck spine_e = getattr(rv_chain, attr + "_e") # use the first bone as the pivot diff --git a/release/scripts/modules/rigify/tail_control.py b/release/scripts/modules/rigify/tail_control.py index 47da9778913..a629487c0c8 100644 --- a/release/scripts/modules/rigify/tail_control.py +++ b/release/scripts/modules/rigify/tail_control.py @@ -12,7 +12,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # ##### END GPL LICENSE BLOCK ##### @@ -22,7 +22,7 @@ import bpy from rigify import RigifyError from rigify_utils import bone_class_instance, copy_bone_simple from rna_prop_ui import rna_idprop_ui_prop_get -from mathutils import Vector, RotationMatrix +from mathutils import Vector, Matrix from math import radians, pi # not used, defined for completeness diff --git a/release/scripts/op/console_python.py b/release/scripts/op/console_python.py index bf551a4dc31..527ca11f8cd 100644 --- a/release/scripts/op/console_python.py +++ b/release/scripts/op/console_python.py @@ -131,7 +131,7 @@ def execute(context): is_multiline = False try: - line = line_object.line + line = line_object.body # run the console, "\n" executes a multiline statement line_exec = line if line.strip() else "\n" @@ -208,13 +208,13 @@ def autocomplete(context): try: current_line = sc.history[-1] - line = current_line.line + line = current_line.body # This function isnt aware of the text editor or being an operator # just does the autocomp then copy its results back - current_line.line, current_line.current_character, scrollback = \ + current_line.body, current_line.current_character, scrollback = \ intellisense.expand( - line=current_line.line, + line=current_line.body, cursor=current_line.current_character, namespace=console.locals, private=bpy.app.debug) @@ -226,7 +226,7 @@ def autocomplete(context): # Separate automplete output by command prompts if scrollback != '': - bpy.ops.console.scrollback_append(text=sc.prompt + current_line.line, type='INPUT') + bpy.ops.console.scrollback_append(text=sc.prompt + current_line.body, type='INPUT') # Now we need to copy back the line from blender back into the # text editor. This will change when we dont use the text editor diff --git a/release/scripts/op/console_shell.py b/release/scripts/op/console_shell.py index e269cc0bb2f..2c5b48acd34 100644 --- a/release/scripts/op/console_shell.py +++ b/release/scripts/op/console_shell.py @@ -47,7 +47,7 @@ def execute(context): sc = context.space_data try: - line = sc.history[-1].line + line = sc.history[-1].body except: return {'CANCELLED'} diff --git a/release/scripts/op/uvcalc_smart_project.py b/release/scripts/op/uvcalc_smart_project.py index fbda1955013..bbd0102fc61 100644 --- a/release/scripts/op/uvcalc_smart_project.py +++ b/release/scripts/op/uvcalc_smart_project.py @@ -22,7 +22,7 @@ # <pep8 compliant> -from mathutils import Matrix, Vector, RotationMatrix +from mathutils import Matrix, Vector import time import geometry import bpy @@ -275,15 +275,15 @@ def testNewVecLs2DRotIsBetter(vecs, mat=-1, bestAreaSoFar = -1): # Takes a list of faces that make up a UV island and rotate # until they optimally fit inside a square. -ROTMAT_2D_POS_90D = RotationMatrix( radians(90.0), 2) -ROTMAT_2D_POS_45D = RotationMatrix( radians(45.0), 2) +ROTMAT_2D_POS_90D = Matrix.Rotation( radians(90.0), 2) +ROTMAT_2D_POS_45D = Matrix.Rotation( radians(45.0), 2) RotMatStepRotation = [] rot_angle = 22.5 #45.0/2 while rot_angle > 0.1: RotMatStepRotation.append([\ - RotationMatrix( radians(rot_angle), 2),\ - RotationMatrix( radians(-rot_angle), 2)]) + Matrix.Rotation( radians(rot_angle), 2),\ + Matrix.Rotation( radians(-rot_angle), 2)]) rot_angle = rot_angle/2.0 diff --git a/release/scripts/templates/gamelogic.py b/release/scripts/templates/gamelogic.py index b31d5d95987..21a901c091b 100644 --- a/release/scripts/templates/gamelogic.py +++ b/release/scripts/templates/gamelogic.py @@ -6,7 +6,7 @@ # for keyboard event comparison # import GameKeys -# support for Vector(), Matrix() types and advanced functions like ScaleMatrix(...) and RotationMatrix(...) +# support for Vector(), Matrix() types and advanced functions like Matrix.Scale(...) and Matrix.Rotation(...) # import mathutils # for functions like getWindowWidth(), getWindowHeight() diff --git a/release/scripts/ui/properties_data_armature.py b/release/scripts/ui/properties_data_armature.py index 3d8f2cdc092..29ef85e6c60 100644 --- a/release/scripts/ui/properties_data_armature.py +++ b/release/scripts/ui/properties_data_armature.py @@ -51,11 +51,6 @@ class DATA_PT_context_arm(ArmatureButtonsPanel, bpy.types.Panel): split.separator() -class DATA_PT_custom_props_arm(ArmatureButtonsPanel, PropertyPanel, bpy.types.Panel): - COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} - _context_path = "object.data" - - class DATA_PT_skeleton(ArmatureButtonsPanel, bpy.types.Panel): bl_label = "Skeleton" @@ -285,6 +280,11 @@ class DATA_PT_onion_skinning(OnionSkinButtonsPanel): #, bpy.types.Panel): # inhe self.draw_settings(context, ob.pose.animation_visualisation, bones=True) + +class DATA_PT_custom_props_arm(ArmatureButtonsPanel, PropertyPanel, bpy.types.Panel): + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} + _context_path = "object.data" + def register(): pass diff --git a/release/scripts/ui/properties_data_armature_rigify.py b/release/scripts/ui/properties_data_armature_rigify.py index 070f1fb7678..0dbd964acb5 100644 --- a/release/scripts/ui/properties_data_armature_rigify.py +++ b/release/scripts/ui/properties_data_armature_rigify.py @@ -95,12 +95,13 @@ class DATA_PT_template(bpy.types.Panel): subsubrow.operator("pose.metarig_assign", text="Assign") subsubrow.operator("pose.metarig_clear", text="Clear") - subsubrow = subrow.split(percentage=0.8) - subsubrow.operator("pose.metarig_sample_add", text="Sample").metarig_type = self.templates[pose_templates.active_template_index] - subsubrow.operator("pose.metarig_sample_add", text="All").metarig_type = "" # self.templates[pose_templates.active_template_index] + if self.templates: + subsubrow = subrow.split(percentage=0.8) + subsubrow.operator("pose.metarig_sample_add", text="Sample").metarig_type = self.templates[pose_templates.active_template_index] + subsubrow.operator("pose.metarig_sample_add", text="All").metarig_type = "" # self.templates[pose_templates.active_template_index] - sub = row.column(align=True) - sub.operator("pose.metarig_reload", icon="FILE_REFRESH", text="") + sub = row.column(align=True) + sub.operator("pose.metarig_reload", icon="FILE_REFRESH", text="") # operators diff --git a/release/scripts/ui/properties_data_bone.py b/release/scripts/ui/properties_data_bone.py index 1296ccd7e70..973cb115a2f 100644 --- a/release/scripts/ui/properties_data_bone.py +++ b/release/scripts/ui/properties_data_bone.py @@ -47,18 +47,6 @@ class BONE_PT_context_bone(BoneButtonsPanel, bpy.types.Panel): row.prop(bone, "name", text="") -class BONE_PT_custom_props(BoneButtonsPanel, PropertyPanel, bpy.types.Panel): - COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} - - @property - def _context_path(self): - obj = bpy.context.object - if obj and obj.mode == 'POSE': - return "active_pose_bone" - else: - return "active_bone" - - class BONE_PT_transform(BoneButtonsPanel, bpy.types.Panel): bl_label = "Transform" @@ -354,6 +342,18 @@ class BONE_PT_deform(BoneButtonsPanel, bpy.types.Panel): col.prop(bone, "cyclic_offset") +class BONE_PT_custom_props(BoneButtonsPanel, PropertyPanel, bpy.types.Panel): + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} + + @property + def _context_path(self): + obj = bpy.context.object + if obj and obj.mode == 'POSE': + return "active_pose_bone" + else: + return "active_bone" + + def register(): pass diff --git a/release/scripts/ui/properties_data_camera.py b/release/scripts/ui/properties_data_camera.py index cda2b79c909..a1d468709d8 100644 --- a/release/scripts/ui/properties_data_camera.py +++ b/release/scripts/ui/properties_data_camera.py @@ -53,11 +53,6 @@ class DATA_PT_context_camera(CameraButtonsPanel, bpy.types.Panel): split.separator() -class DATA_PT_custom_props_camera(CameraButtonsPanel, PropertyPanel, bpy.types.Panel): - COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} - _context_path = "object.data" - - class DATA_PT_camera(CameraButtonsPanel, bpy.types.Panel): bl_label = "Lens" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -137,6 +132,11 @@ class DATA_PT_camera_display(CameraButtonsPanel, bpy.types.Panel): sub.prop(cam, "passepartout_alpha", text="Alpha", slider=True) +class DATA_PT_custom_props_camera(CameraButtonsPanel, PropertyPanel, bpy.types.Panel): + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} + _context_path = "object.data" + + def register(): pass diff --git a/release/scripts/ui/properties_data_curve.py b/release/scripts/ui/properties_data_curve.py index 1262f6739b7..1292a2a3d8d 100644 --- a/release/scripts/ui/properties_data_curve.py +++ b/release/scripts/ui/properties_data_curve.py @@ -69,11 +69,6 @@ class DATA_PT_context_curve(CurveButtonsPanel, bpy.types.Panel): split.separator() -class DATA_PT_custom_props_curve(CurveButtonsPanel, PropertyPanel, bpy.types.Panel): - COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} - _context_path = "object.data" - - class DATA_PT_shape_curve(CurveButtonsPanel, bpy.types.Panel): bl_label = "Shape" @@ -385,6 +380,11 @@ class DATA_PT_textboxes(CurveButtonsPanel, bpy.types.Panel): row.operator("font.textbox_remove", text='', icon='X', emboss=False).index = i +class DATA_PT_custom_props_curve(CurveButtonsPanel, PropertyPanel, bpy.types.Panel): + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} + _context_path = "object.data" + + def register(): pass diff --git a/release/scripts/ui/properties_data_lamp.py b/release/scripts/ui/properties_data_lamp.py index 9a58622974e..91ccce3b011 100644 --- a/release/scripts/ui/properties_data_lamp.py +++ b/release/scripts/ui/properties_data_lamp.py @@ -40,13 +40,6 @@ class DataButtonsPanel(): return context.lamp and (engine in cls.COMPAT_ENGINES) -class DATA_PT_preview(DataButtonsPanel, bpy.types.Panel): - bl_label = "Preview" - COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} - - def draw(self, context): - self.layout.template_preview(context.lamp) - class DATA_PT_context_lamp(DataButtonsPanel, bpy.types.Panel): bl_label = "" bl_show_header = False @@ -69,9 +62,12 @@ class DATA_PT_context_lamp(DataButtonsPanel, bpy.types.Panel): split.separator() -class DATA_PT_custom_props_lamp(DataButtonsPanel, PropertyPanel, bpy.types.Panel): +class DATA_PT_preview(DataButtonsPanel, bpy.types.Panel): + bl_label = "Preview" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} - _context_path = "object.data" + + def draw(self, context): + self.layout.template_preview(context.lamp) class DATA_PT_lamp(DataButtonsPanel, bpy.types.Panel): @@ -387,6 +383,11 @@ class DATA_PT_falloff_curve(DataButtonsPanel, bpy.types.Panel): self.layout.template_curve_mapping(lamp, "falloff_curve") +class DATA_PT_custom_props_lamp(DataButtonsPanel, PropertyPanel, bpy.types.Panel): + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} + _context_path = "object.data" + + def register(): pass diff --git a/release/scripts/ui/properties_data_lattice.py b/release/scripts/ui/properties_data_lattice.py index 5e313b79d85..0ae3e03aebe 100644 --- a/release/scripts/ui/properties_data_lattice.py +++ b/release/scripts/ui/properties_data_lattice.py @@ -51,11 +51,6 @@ class DATA_PT_context_lattice(DataButtonsPanel, bpy.types.Panel): split.separator() -class DATA_PT_custom_props_lattice(DataButtonsPanel, PropertyPanel, bpy.types.Panel): - COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} - _context_path = "object.data" - - class DATA_PT_lattice(DataButtonsPanel, bpy.types.Panel): bl_label = "Lattice" @@ -85,6 +80,11 @@ class DATA_PT_lattice(DataButtonsPanel, bpy.types.Panel): row = layout.row() row.prop(lat, "outside") row.prop_object(lat, "vertex_group", context.object, "vertex_groups", text="") + + +class DATA_PT_custom_props_lattice(DataButtonsPanel, PropertyPanel, bpy.types.Panel): + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} + _context_path = "object.data" def register(): diff --git a/release/scripts/ui/properties_data_mesh.py b/release/scripts/ui/properties_data_mesh.py index 1be2ce824fa..7a5f7e3f3ff 100644 --- a/release/scripts/ui/properties_data_mesh.py +++ b/release/scripts/ui/properties_data_mesh.py @@ -79,11 +79,6 @@ class DATA_PT_context_mesh(MeshButtonsPanel, bpy.types.Panel): split.separator() -class DATA_PT_custom_props_mesh(MeshButtonsPanel, PropertyPanel, bpy.types.Panel): - COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} - _context_path = "object.data" - - class DATA_PT_normals(MeshButtonsPanel, bpy.types.Panel): bl_label = "Normals" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -351,6 +346,11 @@ class DATA_PT_vertex_colors(MeshButtonsPanel, bpy.types.Panel): layout.prop(lay, "name") +class DATA_PT_custom_props_mesh(MeshButtonsPanel, PropertyPanel, bpy.types.Panel): + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} + _context_path = "object.data" + + def register(): pass diff --git a/release/scripts/ui/properties_data_metaball.py b/release/scripts/ui/properties_data_metaball.py index a6b1bb75cbe..4a811bafad5 100644 --- a/release/scripts/ui/properties_data_metaball.py +++ b/release/scripts/ui/properties_data_metaball.py @@ -51,11 +51,6 @@ class DATA_PT_context_metaball(DataButtonsPanel, bpy.types.Panel): split.separator() -class DATA_PT_custom_props_metaball(DataButtonsPanel, PropertyPanel, bpy.types.Panel): - COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} - _context_path = "object.data" - - class DATA_PT_metaball(DataButtonsPanel, bpy.types.Panel): bl_label = "Metaball" @@ -120,6 +115,11 @@ class DATA_PT_metaball_element(DataButtonsPanel, bpy.types.Panel): col.prop(metaelem, "size_y", text="Y") +class DATA_PT_custom_props_metaball(DataButtonsPanel, PropertyPanel, bpy.types.Panel): + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} + _context_path = "object.data" + + def register(): pass diff --git a/release/scripts/ui/properties_material.py b/release/scripts/ui/properties_material.py index d14c8c05c63..3a30edc150f 100644 --- a/release/scripts/ui/properties_material.py +++ b/release/scripts/ui/properties_material.py @@ -24,7 +24,7 @@ from rna_prop_ui import PropertyPanel def active_node_mat(mat): # TODO, 2.4x has a pipeline section, for 2.5 we need to communicate # which settings from node-materials are used - if mat: + if mat is not None: mat_node = mat.active_node_material if mat_node: return mat_node @@ -63,14 +63,6 @@ class MaterialButtonsPanel(): return context.material and (context.scene.render.engine in cls.COMPAT_ENGINES) -class MATERIAL_PT_preview(MaterialButtonsPanel, bpy.types.Panel): - bl_label = "Preview" - COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} - - def draw(self, context): - self.layout.template_preview(context.material) - - class MATERIAL_PT_context_material(MaterialButtonsPanel, bpy.types.Panel): bl_label = "" bl_show_header = False @@ -127,203 +119,15 @@ class MATERIAL_PT_context_material(MaterialButtonsPanel, bpy.types.Panel): if mat: layout.prop(mat, "type", expand=True) + - -class MATERIAL_PT_custom_props(MaterialButtonsPanel, PropertyPanel, bpy.types.Panel): - COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} - _context_path = "material" - - -class MATERIAL_PT_shading(MaterialButtonsPanel, bpy.types.Panel): - bl_label = "Shading" - COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} - - @classmethod - def poll(cls, context): - mat = active_node_mat(context.material) - engine = context.scene.render.engine - return mat and (mat.type in ('SURFACE', 'WIRE', 'HALO')) and (engine in cls.COMPAT_ENGINES) - - def draw(self, context): - layout = self.layout - - mat = active_node_mat(context.material) - - if mat.type in ('SURFACE', 'WIRE'): - split = layout.split() - - col = split.column() - sub = col.column() - sub.active = not mat.shadeless - sub.prop(mat, "emit") - sub.prop(mat, "ambient") - sub = col.column() - sub.prop(mat, "translucency") - - col = split.column() - col.prop(mat, "shadeless") - sub = col.column() - sub.active = not mat.shadeless - sub.prop(mat, "tangent_shading") - sub.prop(mat, "cubic") - - elif mat.type == 'HALO': - layout.prop(mat, "alpha") - - -class MATERIAL_PT_strand(MaterialButtonsPanel, bpy.types.Panel): - bl_label = "Strand" - bl_default_closed = True - COMPAT_ENGINES = {'BLENDER_RENDER'} - - @classmethod - def poll(cls, context): - mat = context.material - engine = context.scene.render.engine - return mat and (mat.type in ('SURFACE', 'WIRE', 'HALO')) and (engine in cls.COMPAT_ENGINES) - - def draw(self, context): - layout = self.layout - - mat = context.material # dont use node material - tan = mat.strand - - split = layout.split() - - col = split.column() - sub = col.column(align=True) - sub.label(text="Size:") - sub.prop(tan, "root_size", text="Root") - sub.prop(tan, "tip_size", text="Tip") - sub.prop(tan, "min_size", text="Minimum") - sub.prop(tan, "blender_units") - sub = col.column() - sub.active = (not mat.shadeless) - sub.prop(tan, "tangent_shading") - col.prop(tan, "shape") - - col = split.column() - col.label(text="Shading:") - col.prop(tan, "width_fade") - ob = context.object - if ob and ob.type == 'MESH': - col.prop_object(tan, "uv_layer", ob.data, "uv_textures", text="") - else: - col.prop(tan, "uv_layer", text="") - col.separator() - sub = col.column() - sub.active = (not mat.shadeless) - sub.prop(tan, "surface_diffuse") - sub = col.column() - sub.active = tan.surface_diffuse - sub.prop(tan, "blend_distance", text="Distance") - - -class MATERIAL_PT_physics(MaterialButtonsPanel, bpy.types.Panel): - bl_label = "Physics" - COMPAT_ENGINES = {'BLENDER_GAME'} - - @classmethod - def poll(cls, context): - return context.material and (context.scene.render.engine in cls.COMPAT_ENGINES) - - def draw(self, context): - layout = self.layout - - phys = context.material.physics # dont use node material - - split = layout.split() - - col = split.column() - col.prop(phys, "distance") - col.prop(phys, "friction") - col.prop(phys, "align_to_normal") - - col = split.column() - col.prop(phys, "force", slider=True) - col.prop(phys, "elasticity", slider=True) - col.prop(phys, "damp", slider=True) - - -class MATERIAL_PT_options(MaterialButtonsPanel, bpy.types.Panel): - bl_label = "Options" - COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} - - @classmethod - def poll(cls, context): - mat = active_node_mat(context.material) - engine = context.scene.render.engine - return mat and (mat.type in ('SURFACE', 'WIRE')) and (engine in cls.COMPAT_ENGINES) - - def draw(self, context): - layout = self.layout - - mat = active_node_mat(context.material) - - split = layout.split() - - col = split.column() - col.prop(mat, "traceable") - col.prop(mat, "full_oversampling") - col.prop(mat, "use_sky") - col.prop(mat, "exclude_mist") - col.prop(mat, "invert_z") - sub = col.row() - sub.prop(mat, "z_offset") - sub.active = mat.transparency and mat.transparency_method == 'Z_TRANSPARENCY' - sub = col.column(align=True) - sub.label(text="Light Group:") - sub.prop(mat, "light_group", text="") - row = sub.row() - row.active = bool(mat.light_group) - row.prop(mat, "light_group_exclusive", text="Exclusive") - - col = split.column() - col.prop(mat, "face_texture") - sub = col.column() - sub.active = mat.face_texture - sub.prop(mat, "face_texture_alpha") - col.separator() - col.prop(mat, "vertex_color_paint") - col.prop(mat, "vertex_color_light") - col.prop(mat, "object_color") - - -class MATERIAL_PT_shadow(MaterialButtonsPanel, bpy.types.Panel): - bl_label = "Shadow" - bl_default_closed = True +class MATERIAL_PT_preview(MaterialButtonsPanel, bpy.types.Panel): + bl_label = "Preview" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} - @classmethod - def poll(cls, context): - mat = active_node_mat(context.material) - engine = context.scene.render.engine - return mat and (mat.type in ('SURFACE', 'WIRE')) and (engine in cls.COMPAT_ENGINES) - def draw(self, context): - layout = self.layout - - mat = active_node_mat(context.material) - - split = layout.split() - - col = split.column() - col.prop(mat, "shadows", text="Receive") - col.prop(mat, "receive_transparent_shadows", text="Receive Transparent") - col.prop(mat, "only_shadow", text="Shadows Only") - col.prop(mat, "cast_shadows_only", text="Cast Only") - col.prop(mat, "shadow_casting_alpha", text="Casting Alpha") + self.layout.template_preview(context.material) - col = split.column() - col.prop(mat, "cast_buffer_shadows") - sub = col.column() - sub.active = mat.cast_buffer_shadows - sub.prop(mat, "shadow_buffer_bias", text="Buffer Bias") - col.prop(mat, "ray_shadow_bias", text="Auto Ray Bias") - sub = col.column() - sub.active = (not mat.ray_shadow_bias) - sub.prop(mat, "shadow_ray_bias", text="Ray Bias") - col.prop(mat, "cast_approximate") class MATERIAL_PT_diffuse(MaterialButtonsPanel, bpy.types.Panel): bl_label = "Diffuse" @@ -457,8 +261,45 @@ class MATERIAL_PT_specular(MaterialButtonsPanel, bpy.types.Panel): row.prop(mat, "specular_ramp_factor", text="Factor") -class MATERIAL_PT_sss(MaterialButtonsPanel, bpy.types.Panel): - bl_label = "Subsurface Scattering" +class MATERIAL_PT_shading(MaterialButtonsPanel, bpy.types.Panel): + bl_label = "Shading" + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} + + @classmethod + def poll(cls, context): + mat = active_node_mat(context.material) + engine = context.scene.render.engine + return mat and (mat.type in ('SURFACE', 'WIRE', 'HALO')) and (engine in cls.COMPAT_ENGINES) + + def draw(self, context): + layout = self.layout + + mat = active_node_mat(context.material) + + if mat.type in ('SURFACE', 'WIRE'): + split = layout.split() + + col = split.column() + sub = col.column() + sub.active = not mat.shadeless + sub.prop(mat, "emit") + sub.prop(mat, "ambient") + sub = col.column() + sub.prop(mat, "translucency") + + col = split.column() + col.prop(mat, "shadeless") + sub = col.column() + sub.active = not mat.shadeless + sub.prop(mat, "tangent_shading") + sub.prop(mat, "cubic") + + elif mat.type == 'HALO': + layout.prop(mat, "alpha") + + +class MATERIAL_PT_transp(MaterialButtonsPanel, bpy.types.Panel): + bl_label = "Transparency" bl_default_closed = True COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -470,44 +311,55 @@ class MATERIAL_PT_sss(MaterialButtonsPanel, bpy.types.Panel): def draw_header(self, context): mat = active_node_mat(context.material) - sss = mat.subsurface_scattering - self.layout.active = (not mat.shadeless) - self.layout.prop(sss, "enabled", text="") + self.layout.prop(mat, "transparency", text="") def draw(self, context): layout = self.layout mat = active_node_mat(context.material) - sss = mat.subsurface_scattering - - layout.active = (sss.enabled) and (not mat.shadeless) + rayt = mat.raytrace_transparency - row = layout.row().split() - sub = row.row(align=True).split(percentage=0.75) - sub.menu("MATERIAL_MT_sss_presets", text=bpy.types.MATERIAL_MT_sss_presets.bl_label) - sub.operator("material.sss_preset_add", text="", icon="ZOOMIN") + row = layout.row() + row.active = mat.transparency and (not mat.shadeless) + row.prop(mat, "transparency_method", expand=True) split = layout.split() col = split.column() - col.prop(sss, "ior") - col.prop(sss, "scale") - col.prop(sss, "color", text="") - col.prop(sss, "radius", text="RGB Radius", expand=True) + col.prop(mat, "alpha") + row = col.row() + row.active = mat.transparency and (not mat.shadeless) + row.prop(mat, "specular_alpha", text="Specular") col = split.column() - sub = col.column(align=True) - sub.label(text="Blend:") - sub.prop(sss, "color_factor", text="Color") - sub.prop(sss, "texture_factor", text="Texture") - sub.label(text="Scattering Weight:") - sub.prop(sss, "front") - sub.prop(sss, "back") - col.separator() - col.prop(sss, "error_tolerance", text="Error") + col.active = (not mat.shadeless) + col.prop(rayt, "fresnel") + sub = col.column() + sub.active = rayt.fresnel > 0 + sub.prop(rayt, "fresnel_factor", text="Blend") + + if mat.transparency_method == 'RAYTRACE': + layout.separator() + split = layout.split() + split.active = mat.transparency + col = split.column() + col.prop(rayt, "ior") + col.prop(rayt, "filter") + col.prop(rayt, "falloff") + col.prop(rayt, "limit") + col.prop(rayt, "depth") + col = split.column() + col.label(text="Gloss:") + col.prop(rayt, "gloss_factor", text="Amount") + sub = col.column() + sub.active = rayt.gloss_factor < 1.0 + sub.prop(rayt, "gloss_threshold", text="Threshold") + sub.prop(rayt, "gloss_samples", text="Samples") + + class MATERIAL_PT_mirror(MaterialButtonsPanel, bpy.types.Panel): bl_label = "Mirror" bl_default_closed = True @@ -566,8 +418,8 @@ class MATERIAL_PT_mirror(MaterialButtonsPanel, bpy.types.Panel): sub.prop(raym, "gloss_anisotropic", text="Anisotropic") -class MATERIAL_PT_transp(MaterialButtonsPanel, bpy.types.Panel): - bl_label = "Transparency" +class MATERIAL_PT_sss(MaterialButtonsPanel, bpy.types.Panel): + bl_label = "Subsurface Scattering" bl_default_closed = True COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -579,85 +431,42 @@ class MATERIAL_PT_transp(MaterialButtonsPanel, bpy.types.Panel): def draw_header(self, context): mat = active_node_mat(context.material) + sss = mat.subsurface_scattering - self.layout.prop(mat, "transparency", text="") + self.layout.active = (not mat.shadeless) + self.layout.prop(sss, "enabled", text="") def draw(self, context): layout = self.layout mat = active_node_mat(context.material) - rayt = mat.raytrace_transparency + sss = mat.subsurface_scattering - row = layout.row() - row.active = mat.transparency and (not mat.shadeless) - row.prop(mat, "transparency_method", expand=True) + layout.active = (sss.enabled) and (not mat.shadeless) - split = layout.split() + row = layout.row().split() + sub = row.row(align=True).split(percentage=0.75) + sub.menu("MATERIAL_MT_sss_presets", text=bpy.types.MATERIAL_MT_sss_presets.bl_label) + sub.operator("material.sss_preset_add", text="", icon="ZOOMIN") - col = split.column() - col.prop(mat, "alpha") - row = col.row() - row.active = mat.transparency and (not mat.shadeless) - row.prop(mat, "specular_alpha", text="Specular") + split = layout.split() col = split.column() - col.active = (not mat.shadeless) - col.prop(rayt, "fresnel") - sub = col.column() - sub.active = rayt.fresnel > 0 - sub.prop(rayt, "fresnel_factor", text="Blend") - - if mat.transparency_method == 'RAYTRACE': - layout.separator() - split = layout.split() - split.active = mat.transparency - - col = split.column() - col.prop(rayt, "ior") - col.prop(rayt, "filter") - col.prop(rayt, "falloff") - col.prop(rayt, "limit") - col.prop(rayt, "depth") - - col = split.column() - col.label(text="Gloss:") - col.prop(rayt, "gloss_factor", text="Amount") - sub = col.column() - sub.active = rayt.gloss_factor < 1.0 - sub.prop(rayt, "gloss_threshold", text="Threshold") - sub.prop(rayt, "gloss_samples", text="Samples") - - -class MATERIAL_PT_transp_game(MaterialButtonsPanel, bpy.types.Panel): - bl_label = "Transparency" - bl_default_closed = True - COMPAT_ENGINES = {'BLENDER_GAME'} - - @classmethod - def poll(cls, context): - mat = active_node_mat(context.material) - engine = context.scene.render.engine - return mat and (engine in cls.COMPAT_ENGINES) - - def draw_header(self, context): - mat = active_node_mat(context.material) - - self.layout.prop(mat, "transparency", text="") - - def draw(self, context): - layout = self.layout - - mat = active_node_mat(context.material) - rayt = mat.raytrace_transparency - - row = layout.row() - row.active = mat.transparency and (not mat.shadeless) - row.prop(mat, "transparency_method", expand=True) - - split = layout.split() + col.prop(sss, "ior") + col.prop(sss, "scale") + col.prop(sss, "color", text="") + col.prop(sss, "radius", text="RGB Radius", expand=True) col = split.column() - col.prop(mat, "alpha") + sub = col.column(align=True) + sub.label(text="Blend:") + sub.prop(sss, "color_factor", text="Color") + sub.prop(sss, "texture_factor", text="Texture") + sub.label(text="Scattering Weight:") + sub.prop(sss, "front") + sub.prop(sss, "back") + col.separator() + col.prop(sss, "error_tolerance", text="Error") class MATERIAL_PT_halo(MaterialButtonsPanel, bpy.types.Panel): @@ -744,6 +553,193 @@ class MATERIAL_PT_flare(MaterialButtonsPanel, bpy.types.Panel): col.prop(halo, "flare_subsize", text="Subsize") +class MATERIAL_PT_physics(MaterialButtonsPanel, bpy.types.Panel): + bl_label = "Physics" + COMPAT_ENGINES = {'BLENDER_GAME'} + + @classmethod + def poll(cls, context): + return context.material and (context.scene.render.engine in cls.COMPAT_ENGINES) + + def draw(self, context): + layout = self.layout + + phys = context.material.physics # dont use node material + + split = layout.split() + + col = split.column() + col.prop(phys, "distance") + col.prop(phys, "friction") + col.prop(phys, "align_to_normal") + + col = split.column() + col.prop(phys, "force", slider=True) + col.prop(phys, "elasticity", slider=True) + col.prop(phys, "damp", slider=True) + + +class MATERIAL_PT_strand(MaterialButtonsPanel, bpy.types.Panel): + bl_label = "Strand" + bl_default_closed = True + COMPAT_ENGINES = {'BLENDER_RENDER'} + + @classmethod + def poll(cls, context): + mat = context.material + engine = context.scene.render.engine + return mat and (mat.type in ('SURFACE', 'WIRE', 'HALO')) and (engine in cls.COMPAT_ENGINES) + + def draw(self, context): + layout = self.layout + + mat = context.material # dont use node material + tan = mat.strand + + split = layout.split() + + col = split.column() + sub = col.column(align=True) + sub.label(text="Size:") + sub.prop(tan, "root_size", text="Root") + sub.prop(tan, "tip_size", text="Tip") + sub.prop(tan, "min_size", text="Minimum") + sub.prop(tan, "blender_units") + sub = col.column() + sub.active = (not mat.shadeless) + sub.prop(tan, "tangent_shading") + col.prop(tan, "shape") + + col = split.column() + col.label(text="Shading:") + col.prop(tan, "width_fade") + ob = context.object + if ob and ob.type == 'MESH': + col.prop_object(tan, "uv_layer", ob.data, "uv_textures", text="") + else: + col.prop(tan, "uv_layer", text="") + col.separator() + sub = col.column() + sub.active = (not mat.shadeless) + sub.prop(tan, "surface_diffuse") + sub = col.column() + sub.active = tan.surface_diffuse + sub.prop(tan, "blend_distance", text="Distance") + + +class MATERIAL_PT_options(MaterialButtonsPanel, bpy.types.Panel): + bl_label = "Options" + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} + + @classmethod + def poll(cls, context): + mat = active_node_mat(context.material) + engine = context.scene.render.engine + return mat and (mat.type in ('SURFACE', 'WIRE')) and (engine in cls.COMPAT_ENGINES) + + def draw(self, context): + layout = self.layout + + mat = active_node_mat(context.material) + + split = layout.split() + + col = split.column() + col.prop(mat, "traceable") + col.prop(mat, "full_oversampling") + col.prop(mat, "use_sky") + col.prop(mat, "exclude_mist") + col.prop(mat, "invert_z") + sub = col.row() + sub.prop(mat, "z_offset") + sub.active = mat.transparency and mat.transparency_method == 'Z_TRANSPARENCY' + sub = col.column(align=True) + sub.label(text="Light Group:") + sub.prop(mat, "light_group", text="") + row = sub.row() + row.active = bool(mat.light_group) + row.prop(mat, "light_group_exclusive", text="Exclusive") + + col = split.column() + col.prop(mat, "face_texture") + sub = col.column() + sub.active = mat.face_texture + sub.prop(mat, "face_texture_alpha") + col.separator() + col.prop(mat, "vertex_color_paint") + col.prop(mat, "vertex_color_light") + col.prop(mat, "object_color") + + +class MATERIAL_PT_shadow(MaterialButtonsPanel, bpy.types.Panel): + bl_label = "Shadow" + bl_default_closed = True + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} + + @classmethod + def poll(cls, context): + mat = active_node_mat(context.material) + engine = context.scene.render.engine + return mat and (mat.type in ('SURFACE', 'WIRE')) and (engine in cls.COMPAT_ENGINES) + + def draw(self, context): + layout = self.layout + + mat = active_node_mat(context.material) + + split = layout.split() + + col = split.column() + col.prop(mat, "shadows", text="Receive") + col.prop(mat, "receive_transparent_shadows", text="Receive Transparent") + col.prop(mat, "only_shadow", text="Shadows Only") + col.prop(mat, "cast_shadows_only", text="Cast Only") + col.prop(mat, "shadow_casting_alpha", text="Casting Alpha") + + col = split.column() + col.prop(mat, "cast_buffer_shadows") + sub = col.column() + sub.active = mat.cast_buffer_shadows + sub.prop(mat, "shadow_buffer_bias", text="Buffer Bias") + col.prop(mat, "ray_shadow_bias", text="Auto Ray Bias") + sub = col.column() + sub.active = (not mat.ray_shadow_bias) + sub.prop(mat, "shadow_ray_bias", text="Ray Bias") + col.prop(mat, "cast_approximate") + + +class MATERIAL_PT_transp_game(MaterialButtonsPanel, bpy.types.Panel): + bl_label = "Transparency" + bl_default_closed = True + COMPAT_ENGINES = {'BLENDER_GAME'} + + @classmethod + def poll(cls, context): + mat = active_node_mat(context.material) + engine = context.scene.render.engine + return mat and (engine in cls.COMPAT_ENGINES) + + def draw_header(self, context): + mat = active_node_mat(context.material) + + self.layout.prop(mat, "transparency", text="") + + def draw(self, context): + layout = self.layout + + mat = active_node_mat(context.material) + rayt = mat.raytrace_transparency + + row = layout.row() + row.active = mat.transparency and (not mat.shadeless) + row.prop(mat, "transparency_method", expand=True) + + split = layout.split() + + col = split.column() + col.prop(mat, "alpha") + + class VolumeButtonsPanel(): bl_space_type = 'PROPERTIES' bl_region_type = 'WINDOW' @@ -897,6 +893,11 @@ class MATERIAL_PT_volume_options(VolumeButtonsPanel, bpy.types.Panel): row.prop(mat, "light_group_exclusive", text="Exclusive") +class MATERIAL_PT_custom_props(MaterialButtonsPanel, PropertyPanel, bpy.types.Panel): + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} + _context_path = "material" + + def register(): pass diff --git a/release/scripts/ui/properties_object.py b/release/scripts/ui/properties_object.py index 6923e60a3df..3af0cdef1e4 100644 --- a/release/scripts/ui/properties_object.py +++ b/release/scripts/ui/properties_object.py @@ -252,7 +252,7 @@ class OBJECT_PT_animation(ObjectButtonsPanel, bpy.types.Panel): col.prop(ob, "time_offset_edit", text="Edit") row = col.row() row.prop(ob, "time_offset_particle", text="Particle") - row.active = len(ob.particle_systems) != 0 + row.active = bool(ob.particle_systems) row = col.row() row.prop(ob, "time_offset_parent", text="Parent") row.active = (ob.parent is not None) diff --git a/release/scripts/ui/properties_render.py b/release/scripts/ui/properties_render.py index cd11179dc25..6e8ebb10691 100644 --- a/release/scripts/ui/properties_render.py +++ b/release/scripts/ui/properties_render.py @@ -440,7 +440,7 @@ class RENDER_PT_encoding(RenderButtonsPanel, bpy.types.Panel): # Audio: sub = layout.column() - if rd.ffmpeg_format not in ('MP3'): + if rd.ffmpeg_format not in ('MP3', ): sub.prop(rd, "ffmpeg_audio_codec", text="Audio Codec") sub.separator() diff --git a/release/scripts/ui/properties_render_test.xml b/release/scripts/ui/properties_render_test.xml deleted file mode 100644 index f8a77e37e21..00000000000 --- a/release/scripts/ui/properties_render_test.xml +++ /dev/null @@ -1,79 +0,0 @@ -<ui> - <panel identifier="RENDER_PT_stamp_test" label="Stamp (XML)" space_type="PROPERTIES" region_type="WINDOW" context="render" default_closed="true"> - <draw_header> - <prop data="context.scene.render" property="render_stamp" text=""/> - </draw_header> - - <draw> - <split> - <column> - <prop data="context.scene.render" property="stamp_time" text="Time"/> - <prop data="context.scene.render" property="stamp_date" text="Date"/> - <prop data="context.scene.render" property="stamp_render_time" text="RenderTime"/> - <prop data="context.scene.render" property="stamp_frame" text="Frame"/> - <prop data="context.scene.render" property="stamp_scene" text="Scene"/> - <prop data="context.scene.render" property="stamp_camera" text="Camera"/> - <prop data="context.scene.render" property="stamp_filename" text="Filename"/> - <prop data="context.scene.render" property="stamp_marker" text="Marker"/> - <prop data="context.scene.render" property="stamp_sequencer_strip" text="Seq. Strip"/> - </column> - <column> - <active expr="context.scene.render.render_stamp"/> - <prop data="context.scene.render" property="stamp_foreground" slider="true"/> - <prop data="context.scene.render" property="stamp_background" slider="true"/> - <separator/> - <prop data="context.scene.render" property="stamp_font_size" text="Font Size"/> - </column> - </split> - <split percentage="0.2"> - <prop data="context.scene.render" property="stamp_note" text="Note"/> - <row> - <active expr="context.scene.render.stamp_note"/> - <prop data="context.scene.render" property="stamp_note_text" text=""/> - </row> - </split> - </draw> - </panel> - - <panel identifier="RENDER_PT_dimensions_test" label="Dimensions (XML)" space_type="PROPERTIES" region_type="WINDOW" context="render"> - <draw> - <row align="true"> - <menu menu="RENDER_MT_presets"/> - <operator operator="render.preset_add" text="" icon="ZOOMIN"/> - </row> - <split> - <column> - <column align="true"> - <label text="Resolution:"/> - <prop data="context.scene.render" property="resolution_x" text="X"/> - <prop data="context.scene.render" property="resolution_y" text="Y"/> - <prop data="context.scene.render" property="resolution_percentage" text=""/> - - <label text="Aspect Ratio:"/> - <prop data="context.scene.render" property="pixel_aspect_x" text="X"/> - <prop data="context.scene.render" property="pixel_aspect_y" text="Y"/> - </column> - <row> - <prop data="context.scene.render" property="use_border" text="Border"/> - <row> - <active expr="context.scene.render.use_border"/> - <prop data="context.scene.render" property="crop_to_border" text="Crop"/> - </row> - </row> - </column> - <column> - <column align="true"> - <label text="Frame Range:"/> - <prop data="context.scene" property="frame_start" text="Start"/> - <prop data="context.scene" property="frame_end" text="End"/> - <prop data="context.scene" property="frame_step" text="Step"/> - - <label text="Frame Rate:"/> - <prop data="context.scene.render" property="fps"/> - <prop data="context.scene.render" property="fps_base" text="/"/> - </column> - </column> - </split> - </draw> - </panel> -</ui> diff --git a/release/scripts/ui/properties_scene.py b/release/scripts/ui/properties_scene.py index 3ed8dfb72b8..3afa5d2f53f 100644 --- a/release/scripts/ui/properties_scene.py +++ b/release/scripts/ui/properties_scene.py @@ -43,11 +43,6 @@ class SCENE_PT_scene(SceneButtonsPanel, bpy.types.Panel): layout.prop(scene, "set", text="Background") -class SCENE_PT_custom_props(SceneButtonsPanel, PropertyPanel, bpy.types.Panel): - COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} - _context_path = "scene" - - class SCENE_PT_unit(SceneButtonsPanel, bpy.types.Panel): bl_label = "Units" COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -205,6 +200,11 @@ class SCENE_PT_simplify(SceneButtonsPanel, bpy.types.Panel): col.prop(rd, "simplify_ao_sss", text="AO and SSS") +class SCENE_PT_custom_props(SceneButtonsPanel, PropertyPanel, bpy.types.Panel): + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} + _context_path = "scene" + + from bpy.props import * diff --git a/release/scripts/ui/properties_texture.py b/release/scripts/ui/properties_texture.py index b675576ec3f..21cdae98524 100644 --- a/release/scripts/ui/properties_texture.py +++ b/release/scripts/ui/properties_texture.py @@ -74,23 +74,6 @@ class TextureButtonsPanel(): return tex and (tex.type != 'NONE' or tex.use_nodes) and (context.scene.render.engine in cls.COMPAT_ENGINES) -class TEXTURE_PT_preview(TextureButtonsPanel, bpy.types.Panel): - bl_label = "Preview" - COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} - - def draw(self, context): - layout = self.layout - - tex = context.texture - slot = getattr(context, "texture_slot", None) - idblock = context_tex_datablock(context) - - if idblock: - layout.template_preview(tex, parent=idblock, slot=slot) - else: - layout.template_preview(tex, slot=slot) - - class TEXTURE_PT_context_texture(TextureButtonsPanel, bpy.types.Panel): bl_label = "" bl_show_header = False @@ -155,9 +138,21 @@ class TEXTURE_PT_context_texture(TextureButtonsPanel, bpy.types.Panel): split.prop(tex, "type", text="") -class TEXTURE_PT_custom_props(TextureButtonsPanel, PropertyPanel, bpy.types.Panel): +class TEXTURE_PT_preview(TextureButtonsPanel, bpy.types.Panel): + bl_label = "Preview" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} - _context_path = "texture" + + def draw(self, context): + layout = self.layout + + tex = context.texture + slot = getattr(context, "texture_slot", None) + idblock = context_tex_datablock(context) + + if idblock: + layout.template_preview(tex, parent=idblock, slot=slot) + else: + layout.template_preview(tex, slot=slot) class TEXTURE_PT_colors(TextureButtonsPanel, bpy.types.Panel): @@ -989,6 +984,11 @@ class TEXTURE_PT_pointdensity_turbulence(TextureButtonsPanel, bpy.types.Panel): col.prop(pd, "turbulence_strength") +class TEXTURE_PT_custom_props(TextureButtonsPanel, PropertyPanel, bpy.types.Panel): + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} + _context_path = "texture" + + def register(): pass diff --git a/release/scripts/ui/properties_world.py b/release/scripts/ui/properties_world.py index eec1caf58f7..1fa0d15a90b 100644 --- a/release/scripts/ui/properties_world.py +++ b/release/scripts/ui/properties_world.py @@ -33,19 +33,6 @@ class WorldButtonsPanel(): return (rd.engine in cls.COMPAT_ENGINES) -class WORLD_PT_preview(WorldButtonsPanel, bpy.types.Panel): - bl_label = "Preview" - COMPAT_ENGINES = {'BLENDER_RENDER'} - - @classmethod - def poll(cls, context): - rd = context.scene.render - return (context.world) and (not rd.use_game_engine) and (rd.engine in cls.COMPAT_ENGINES) - - def draw(self, context): - self.layout.template_preview(context.world) - - class WORLD_PT_context_world(WorldButtonsPanel, bpy.types.Panel): bl_label = "" bl_show_header = False @@ -70,9 +57,23 @@ class WORLD_PT_context_world(WorldButtonsPanel, bpy.types.Panel): split.template_ID(space, "pin_id") -class WORLD_PT_custom_props(WorldButtonsPanel, PropertyPanel, bpy.types.Panel): - COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} - _context_path = "world" +class WORLD_PT_preview(WorldButtonsPanel, bpy.types.Panel): + bl_label = "Preview" + COMPAT_ENGINES = {'BLENDER_RENDER'} + + @classmethod + def poll(cls, context): + rd = context.scene.render + return (context.world) and (not rd.use_game_engine) and (rd.engine in cls.COMPAT_ENGINES) + + def draw(self, context): + self.layout.template_preview(context.world) + + + + + + class WORLD_PT_world(WorldButtonsPanel, bpy.types.Panel): @@ -96,62 +97,6 @@ class WORLD_PT_world(WorldButtonsPanel, bpy.types.Panel): row.column().prop(world, "ambient_color") -class WORLD_PT_mist(WorldButtonsPanel, bpy.types.Panel): - bl_label = "Mist" - bl_default_closed = True - COMPAT_ENGINES = {'BLENDER_RENDER'} - - def draw_header(self, context): - world = context.world - - self.layout.prop(world.mist, "use_mist", text="") - - def draw(self, context): - layout = self.layout - world = context.world - - layout.active = world.mist.use_mist - - split = layout.split() - - col = split.column() - col.prop(world.mist, "intensity", slider=True) - col.prop(world.mist, "start") - - col = split.column() - col.prop(world.mist, "depth") - col.prop(world.mist, "height") - - layout.prop(world.mist, "falloff") - - -class WORLD_PT_stars(WorldButtonsPanel, bpy.types.Panel): - bl_label = "Stars" - bl_default_closed = True - COMPAT_ENGINES = {'BLENDER_RENDER'} - - def draw_header(self, context): - world = context.world - - self.layout.prop(world.stars, "use_stars", text="") - - def draw(self, context): - layout = self.layout - world = context.world - - layout.active = world.stars.use_stars - - split = layout.split() - - col = split.column() - col.prop(world.stars, "size") - col.prop(world.stars, "color_randomization", text="Colors") - - col = split.column() - col.prop(world.stars, "min_distance", text="Min. Dist") - col.prop(world.stars, "average_separation", text="Separation") - - class WORLD_PT_ambient_occlusion(WorldButtonsPanel, bpy.types.Panel): bl_label = "Ambient Occlusion" COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -262,6 +207,67 @@ class WORLD_PT_gather(WorldButtonsPanel, bpy.types.Panel): col.prop(light, "correction") +class WORLD_PT_mist(WorldButtonsPanel, bpy.types.Panel): + bl_label = "Mist" + bl_default_closed = True + COMPAT_ENGINES = {'BLENDER_RENDER'} + + def draw_header(self, context): + world = context.world + + self.layout.prop(world.mist, "use_mist", text="") + + def draw(self, context): + layout = self.layout + world = context.world + + layout.active = world.mist.use_mist + + split = layout.split() + + col = split.column() + col.prop(world.mist, "intensity", slider=True) + col.prop(world.mist, "start") + + col = split.column() + col.prop(world.mist, "depth") + col.prop(world.mist, "height") + + layout.prop(world.mist, "falloff") + + +class WORLD_PT_stars(WorldButtonsPanel, bpy.types.Panel): + bl_label = "Stars" + bl_default_closed = True + COMPAT_ENGINES = {'BLENDER_RENDER'} + + def draw_header(self, context): + world = context.world + + self.layout.prop(world.stars, "use_stars", text="") + + def draw(self, context): + layout = self.layout + world = context.world + + layout.active = world.stars.use_stars + + split = layout.split() + + col = split.column() + col.prop(world.stars, "size") + col.prop(world.stars, "color_randomization", text="Colors") + + col = split.column() + col.prop(world.stars, "min_distance", text="Min. Dist") + col.prop(world.stars, "average_separation", text="Separation") + + +class WORLD_PT_custom_props(WorldButtonsPanel, PropertyPanel, bpy.types.Panel): + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} + _context_path = "world" + + def register(): pass diff --git a/release/scripts/ui/space_info.py b/release/scripts/ui/space_info.py index 618cd3c51c9..db9e4df8967 100644 --- a/release/scripts/ui/space_info.py +++ b/release/scripts/ui/space_info.py @@ -27,7 +27,7 @@ class INFO_HT_header(bpy.types.Header): layout = self.layout wm = context.manager - if wm and len(wm.operators): + if wm and wm.operators: last_op = wm.operators[-1] else: last_op = None @@ -131,7 +131,7 @@ class INFO_MT_file_import(bpy.types.Menu): bl_label = "Import" def draw(self, context): - if "collada_import" in dir(bpy.ops.wm): + if hasattr(bpy.types, "WM_OT_collada_import"): self.layout.operator("wm.collada_import", text="COLLADA (.dae)") @@ -140,7 +140,7 @@ class INFO_MT_file_export(bpy.types.Menu): bl_label = "Export" def draw(self, context): - if "collada_export" in dir(bpy.ops.wm): + if hasattr(bpy.types, "WM_OT_collada_export"): self.layout.operator("wm.collada_export", text="COLLADA (.dae)") diff --git a/release/scripts/ui/space_text.py b/release/scripts/ui/space_text.py index 71ab6540132..d9fce39fee8 100644 --- a/release/scripts/ui/space_text.py +++ b/release/scripts/ui/space_text.py @@ -48,9 +48,9 @@ class TEXT_HT_header(bpy.types.Header): layout.template_ID(st, "text", new="text.new", unlink="text.unlink") row = layout.row(align=True) - row.prop(st, "line_numbers", text="") - row.prop(st, "word_wrap", text="") - row.prop(st, "syntax_highlight", text="") + row.prop(st, "show_line_numbers", text="") + row.prop(st, "show_word_wrap", text="") + row.prop(st, "show_syntax_highlight", text="") if text: row = layout.row() @@ -81,9 +81,10 @@ class TEXT_PT_properties(bpy.types.Panel): st = context.space_data flow = layout.column_flow() - flow.prop(st, "line_numbers") - flow.prop(st, "word_wrap") - flow.prop(st, "syntax_highlight") + flow.prop(st, "show_line_numbers") + flow.prop(st, "show_word_wrap") + flow.prop(st, "show_syntax_highlight") + flow.prop(st, "show_line_highlight") flow.prop(st, "live_edit") flow = layout.column_flow() diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index a3e945f460a..38e91de3884 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -1925,8 +1925,8 @@ class VIEW3D_MT_edit_armature_roll(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.operator("armature.calculate_roll", text="Clear Roll (Z-Axis Up)").type = 'GLOBALUP' - layout.operator("armature.calculate_roll", text="Roll to Cursor").type = 'CURSOR' + layout.operator("armature.calculate_roll", text="Recalculate with Z-Axis Up").type = 'GLOBALUP' + layout.operator("armature.calculate_roll", text="Recalculate with Z-Axis to Cursor").type = 'CURSOR' layout.separator() diff --git a/release/scripts/ui/space_view3d_toolbar.py b/release/scripts/ui/space_view3d_toolbar.py index 56abbb3cb14..8981369f3b0 100644 --- a/release/scripts/ui/space_view3d_toolbar.py +++ b/release/scripts/ui/space_view3d_toolbar.py @@ -487,7 +487,7 @@ class PaintPanel(): elif context.particle_edit_object: return ts.particle_edit - return False + return None class VIEW3D_PT_tools_brush(PaintPanel, bpy.types.Panel): @@ -753,7 +753,7 @@ class VIEW3D_PT_tools_brush_texture(PaintPanel, bpy.types.Panel): col.separator() col = layout.column() - col.active = tex_slot.map_mode in ('FIXED') + col.active = tex_slot.map_mode in ('FIXED', ) col.label(text="Angle:") col = layout.column() @@ -963,6 +963,7 @@ class VIEW3D_PT_tools_brush_curve(PaintPanel, bpy.types.Panel): layout = self.layout settings = self.paint_settings(context) + brush = settings.brush layout.template_curve_mapping(brush, "curve", brush=True) diff --git a/source/Makefile b/source/Makefile index 00ff981362c..ece5b6d8bba 100644 --- a/source/Makefile +++ b/source/Makefile @@ -17,7 +17,7 @@ # # 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. +# 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. diff --git a/source/blender/Makefile b/source/blender/Makefile index 1149e1c4be2..8052c175f8e 100644 --- a/source/blender/Makefile +++ b/source/blender/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/avi/Makefile b/source/blender/avi/Makefile index c8ab5fe0aca..96a6573cc67 100644 --- a/source/blender/avi/Makefile +++ b/source/blender/avi/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/avi/intern/Makefile b/source/blender/avi/intern/Makefile index 30f225c8031..8d1af9adb28 100644 --- a/source/blender/avi/intern/Makefile +++ b/source/blender/avi/intern/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/blenfont/Makefile b/source/blender/blenfont/Makefile index 9f34d458126..df1bbb72110 100644 --- a/source/blender/blenfont/Makefile +++ b/source/blender/blenfont/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2009 Blender Foundation # All rights reserved. diff --git a/source/blender/blenfont/intern/Makefile b/source/blender/blenfont/intern/Makefile index 77e87c27a02..d3a6e656028 100644 --- a/source/blender/blenfont/intern/Makefile +++ b/source/blender/blenfont/intern/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2008 Blender Foundation. # All rights reserved. diff --git a/source/blender/blenkernel/BKE_idcode.h b/source/blender/blenkernel/BKE_idcode.h new file mode 100644 index 00000000000..b624e34e1cb --- /dev/null +++ b/source/blender/blenkernel/BKE_idcode.h @@ -0,0 +1,75 @@ +/** + * $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 ***** + */ + +#ifndef BKE_ID_INFO_H +#define BKE_ID_INFO_H + +/** + * Convert an idcode into a name. + * + * @param code The code to convert. + * @return A static string representing the name of + * the code. + */ +const char *BKE_idcode_to_name(int code); + +/** + * Convert an idcode into a name (plural). + * + * @param code The code to convert. + * @return A static string representing the name of + * the code. + */ +const char *BKE_idcode_to_name_plural(int code); + +/** + * Convert a name into an idcode (ie. ID_SCE) + * + * @param name The name to convert. + * @return The code for the name, or 0 if invalid. + */ +int BKE_idcode_from_name(const char *name); + +/** + * Return non-zero when an ID type is linkable. + * + * @param code The code to check. + * @return Boolean, 0 when non linkable. + */ +int BKE_idcode_is_linkable(int code); + +/** + * Return if the ID code is a valid ID code. + * + * @param code The code to check. + * @return Boolean, 0 when invalid. + */ +int BKE_idcode_is_valid(int code); + +#endif diff --git a/source/blender/blenkernel/Makefile b/source/blender/blenkernel/Makefile index f0476bbf026..dc5f0a91da6 100644 --- a/source/blender/blenkernel/Makefile +++ b/source/blender/blenkernel/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index 8b1443403a3..663fbb89b4e 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -1189,10 +1189,15 @@ static void emDM_getFace(DerivedMesh *dm, int index, MFace *face_r) static void emDM_copyVertArray(DerivedMesh *dm, MVert *vert_r) { - EditVert *ev = ((EditMeshDerivedMesh *)dm)->em->verts.first; + EditMeshDerivedMesh *emdm= (EditMeshDerivedMesh*) dm; + EditVert *ev = emdm->em->verts.first; + int i; - for( ; ev; ev = ev->next, ++vert_r) { - VECCOPY(vert_r->co, ev->co); + for(i=0; ev; ev = ev->next, ++vert_r, ++i) { + if(emdm->vertexCos) + copy_v3_v3(vert_r->co, emdm->vertexCos[i]); + else + copy_v3_v3(vert_r->co, ev->co); vert_r->no[0] = ev->no[0] * 32767.0; vert_r->no[1] = ev->no[1] * 32767.0; diff --git a/source/blender/blenkernel/intern/Makefile b/source/blender/blenkernel/intern/Makefile index eb14914c7ba..53a9999758c 100644 --- a/source/blender/blenkernel/intern/Makefile +++ b/source/blender/blenkernel/intern/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c index 841bd635acf..358dd1914e7 100644 --- a/source/blender/blenkernel/intern/curve.c +++ b/source/blender/blenkernel/intern/curve.c @@ -1573,7 +1573,7 @@ static void alfa_bezpart(BezTriple *prevbezt, BezTriple *bezt, Nurb *nu, float * for(a=0; a<resolu; a++, fac+= dfac) { if (tilt_array) { - if (nu->tilt_interp==3) { /* May as well support for tilt also 2.47 ease interp */ + if (nu->tilt_interp==KEY_CU_EASE) { /* May as well support for tilt also 2.47 ease interp */ *tilt_array = prevbezt->alfa + (bezt->alfa - prevbezt->alfa)*(3.0f*fac*fac - 2.0f*fac*fac*fac); } else { key_curve_position_weights(fac, t, nu->tilt_interp); @@ -1584,7 +1584,7 @@ static void alfa_bezpart(BezTriple *prevbezt, BezTriple *bezt, Nurb *nu, float * } if (radius_array) { - if (nu->radius_interp==3) { + if (nu->radius_interp==KEY_CU_EASE) { /* Support 2.47 ease interp * Note! - this only takes the 2 points into account, * giving much more localized results to changes in radius, sometimes you want that */ diff --git a/source/blender/blenkernel/intern/idcode.c b/source/blender/blenkernel/intern/idcode.c new file mode 100644 index 00000000000..3e8f400967e --- /dev/null +++ b/source/blender/blenkernel/intern/idcode.c @@ -0,0 +1,128 @@ +/** + * $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 ***** + * return info about ID types + */ + +#include <stdlib.h> +#include <string.h> + +#include "DNA_ID.h" + +typedef struct { + unsigned short code; + char *name, *plural; + + int flags; +#define IDTYPE_FLAGS_ISLINKABLE (1<<0) +} IDType; + +/* plural need to match rna_main.c's MainCollectionDef */ +static IDType idtypes[]= { + { ID_AC, "Action", "actions", IDTYPE_FLAGS_ISLINKABLE}, + { ID_AR, "Armature", "armatures", IDTYPE_FLAGS_ISLINKABLE}, + { ID_BR, "Brush", "brushes", IDTYPE_FLAGS_ISLINKABLE}, + { ID_CA, "Camera", "cameras", IDTYPE_FLAGS_ISLINKABLE}, + { ID_CU, "Curve", "curves", IDTYPE_FLAGS_ISLINKABLE}, + { ID_GD, "GPencil", "gpencil", IDTYPE_FLAGS_ISLINKABLE}, /* rename gpencil */ + { ID_GR, "Group", "groups", IDTYPE_FLAGS_ISLINKABLE}, + { ID_ID, "ID", "ids", 0}, /* plural is fake */ + { ID_IM, "Image", "images", IDTYPE_FLAGS_ISLINKABLE}, + { ID_IP, "Ipo", "ipos", IDTYPE_FLAGS_ISLINKABLE}, /* deprecated */ + { ID_KE, "Key", "keys", 0}, + { ID_LA, "Lamp", "lamps", IDTYPE_FLAGS_ISLINKABLE}, + { ID_LI, "Library", "libraries", 0}, + { ID_LT, "Lattice", "lattices", IDTYPE_FLAGS_ISLINKABLE}, + { ID_MA, "Material", "materials", IDTYPE_FLAGS_ISLINKABLE}, + { ID_MB, "Metaball", "metaballs", IDTYPE_FLAGS_ISLINKABLE}, + { ID_ME, "Mesh", "meshes", IDTYPE_FLAGS_ISLINKABLE}, + { ID_NT, "NodeTree", "node_groups", IDTYPE_FLAGS_ISLINKABLE}, + { ID_OB, "Object", "objects", IDTYPE_FLAGS_ISLINKABLE}, + { ID_PA, "ParticleSettings", "particles", 0}, + { ID_SCE, "Scene", "scenes", IDTYPE_FLAGS_ISLINKABLE}, + { ID_SCR, "Screen", "screens", 0}, + { ID_SEQ, "Sequence", "sequences", 0}, /* not actually ID data */ + { ID_SO, "Sound", "sounds", IDTYPE_FLAGS_ISLINKABLE}, + { ID_TE, "Texture", "textures", IDTYPE_FLAGS_ISLINKABLE}, + { ID_TXT, "Text", "texts", IDTYPE_FLAGS_ISLINKABLE}, + { ID_VF, "VFont", "fonts", IDTYPE_FLAGS_ISLINKABLE}, + { ID_WO, "World", "worlds", IDTYPE_FLAGS_ISLINKABLE}, + { ID_WM, "WindowManager", "window_managers", 0}, +}; +static int nidtypes= sizeof(idtypes)/sizeof(idtypes[0]); + +static IDType *idtype_from_name(const char *str) +{ + int i= nidtypes; + + while (i--) + if (strcmp(str, idtypes[i].name)==0) + return &idtypes[i]; + + return NULL; +} +static IDType *idtype_from_code(int code) +{ + int i= nidtypes; + + while (i--) + if (code==idtypes[i].code) + return &idtypes[i]; + + return NULL; +} + +int BKE_idcode_is_valid(int code) +{ + return idtype_from_code(code)?1:0; +} + +int BKE_idcode_is_linkable(int code) { + IDType *idt= idtype_from_code(code); + return idt?(idt->flags&IDTYPE_FLAGS_ISLINKABLE):0; +} + +const char *BKE_idcode_to_name(int code) +{ + IDType *idt= idtype_from_code(code); + + return idt?idt->name:NULL; +} + +int BKE_idcode_from_name(const char *name) +{ + IDType *idt= idtype_from_name(name); + + return idt?idt->code:0; +} + +const char *BKE_idcode_to_name_plural(int code) +{ + IDType *idt= idtype_from_code(code); + + return idt?idt->plural:NULL; +} diff --git a/source/blender/blenkernel/intern/idprop.c b/source/blender/blenkernel/intern/idprop.c index 2ccb33b088a..a0df73d6c42 100644 --- a/source/blender/blenkernel/intern/idprop.c +++ b/source/blender/blenkernel/intern/idprop.c @@ -27,6 +27,7 @@ #include <stdio.h> #include <stdlib.h> +#include <stddef.h> #include <string.h> #include "BKE_idprop.h" @@ -491,47 +492,41 @@ void IDP_ReplaceGroupInGroup(IDProperty *dest, IDProperty *src) void IDP_ReplaceInGroup(IDProperty *group, IDProperty *prop) { IDProperty *loop; - for (loop=group->data.group.first; loop; loop=loop->next) { - if (BSTR_EQ(loop->name, prop->name)) { - BLI_insertlink(&group->data.group, loop, prop); - - BLI_remlink(&group->data.group, loop); - IDP_FreeProperty(loop); - MEM_freeN(loop); - return; - } + if((loop= IDP_GetPropertyFromGroup(group, prop->name))) { + BLI_insertlink(&group->data.group, loop, prop); + + BLI_remlink(&group->data.group, loop); + IDP_FreeProperty(loop); + MEM_freeN(loop); + } + else { + group->len++; + BLI_addtail(&group->data.group, prop); } - - group->len++; - BLI_addtail(&group->data.group, prop); } /*returns 0 if an id property with the same name exists and it failed, or 1 if it succeeded in adding to the group.*/ int IDP_AddToGroup(IDProperty *group, IDProperty *prop) { - IDProperty *loop; - for (loop=group->data.group.first; loop; loop=loop->next) { - if (BSTR_EQ(loop->name, prop->name)) return 0; + if(IDP_GetPropertyFromGroup(group, prop->name) == NULL) { + group->len++; + BLI_addtail(&group->data.group, prop); + return 1; } - group->len++; - BLI_addtail(&group->data.group, prop); - - return 1; + return 0; } int IDP_InsertToGroup(IDProperty *group, IDProperty *previous, IDProperty *pnew) { - IDProperty *loop; - for (loop=group->data.group.first; loop; loop=loop->next) { - if (BSTR_EQ(loop->name, pnew->name)) return 0; + if(IDP_GetPropertyFromGroup(group, pnew->name) == NULL) { + group->len++; + BLI_insertlink(&group->data.group, previous, pnew); + return 1; } - - group->len++; - BLI_insertlink(&group->data.group, previous, pnew); - return 1; + return 0; } void IDP_RemFromGroup(IDProperty *group, IDProperty *prop) @@ -542,11 +537,7 @@ void IDP_RemFromGroup(IDProperty *group, IDProperty *prop) IDProperty *IDP_GetPropertyFromGroup(IDProperty *prop, const char *name) { - IDProperty *loop; - for (loop=prop->data.group.first; loop; loop=loop->next) { - if (strcmp(loop->name, name)==0) return loop; - } - return NULL; + return (IDProperty *)BLI_findstring(&prop->data.group, name, offsetof(IDProperty, name)); } typedef struct IDPIter { diff --git a/source/blender/blenkernel/intern/key.c b/source/blender/blenkernel/intern/key.c index 354b3b0e7d8..f4b931ec52b 100644 --- a/source/blender/blenkernel/intern/key.c +++ b/source/blender/blenkernel/intern/key.c @@ -1850,9 +1850,12 @@ void vertcos_to_key(Object *ob, KeyBlock *kb, float (*vertCos)[3]) tot= count_curveverts(&cu->nurb); } - fp= kb->data= MEM_callocN(tot*elemsize, "key_to_vertcos vertCos"); + if (tot == 0) { + kb->data= NULL; + return; + } - if (tot == 0) return; + fp= kb->data= MEM_callocN(tot*elemsize, "key_to_vertcos vertCos"); /* Copy coords to keyblock */ diff --git a/source/blender/blenkernel/intern/nla.c b/source/blender/blenkernel/intern/nla.c index 8d2ad49e7bf..b053d615756 100644 --- a/source/blender/blenkernel/intern/nla.c +++ b/source/blender/blenkernel/intern/nla.c @@ -1265,13 +1265,13 @@ void BKE_nlastrip_validate_name (AnimData *adt, NlaStrip *strip) char *dot; /* Strip off the suffix */ - dot = strchr(strip->name, '.'); + dot = strrchr(strip->name, '.'); if (dot) *dot=0; /* Try different possibilities */ for (number = 1; number <= 999; number++) { /* assemble alternative name */ - BLI_snprintf(tempname, 128, "%s%c%03d", strip->name, ".", number); + BLI_snprintf(tempname, 128, "%s.%03d", strip->name, number); /* if hash doesn't have this, set it */ if (BLI_ghash_haskey(gh, tempname) == 0) { diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c index 36c23216585..ea30b33655f 100644 --- a/source/blender/blenkernel/intern/node.c +++ b/source/blender/blenkernel/intern/node.c @@ -1855,9 +1855,8 @@ static void node_group_execute(bNodeStack *stack, void *data, bNode *gnode, bNod /* for groups, only execute outputs for edited group */ if(node->typeinfo->nclass==NODE_CLASS_OUTPUT) { - if(gnode->flag & NODE_GROUP_EDIT) - if(node->flag & NODE_DO_OUTPUT) - node->typeinfo->execfunc(data, node, nsin, nsout); + if(node->type==CMP_NODE_OUTPUT_FILE || (gnode->flag & NODE_GROUP_EDIT)) + node->typeinfo->execfunc(data, node, nsin, nsout); } else node->typeinfo->execfunc(data, node, nsin, nsout); diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 18eedd63906..115cfac7627 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -2501,7 +2501,7 @@ void object_handle_update(Scene *scene, Object *ob) /* includes all keys and modifiers */ if(ob->type==OB_MESH) { - EditMesh *em = BKE_mesh_get_editmesh(ob->data); + EditMesh *em = (ob == scene->obedit)? BKE_mesh_get_editmesh(ob->data): NULL; /* evaluate drivers */ // XXX: should we push this to derivedmesh instead? diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c index 0d7738353df..4c85656dd91 100644 --- a/source/blender/blenkernel/intern/subsurf_ccg.c +++ b/source/blender/blenkernel/intern/subsurf_ccg.c @@ -69,6 +69,8 @@ static int ccgDM_getVertMapIndex(CCGSubSurf *ss, CCGVert *v); static int ccgDM_getEdgeMapIndex(CCGSubSurf *ss, CCGEdge *e); static int ccgDM_getFaceMapIndex(CCGSubSurf *ss, CCGFace *f); +static int ccgDM_use_grid_pbvh(CCGDerivedMesh *ccgdm); + /// static void *arena_alloc(CCGAllocatorHDL a, int numBytes) { @@ -1249,7 +1251,7 @@ static void ccgDM_glNormalFast(float *a, float *b, float *c, float *d) static void ccgdm_pbvh_update(CCGDerivedMesh *ccgdm) { - if(ccgdm->pbvh && ccgdm->multires.mmd) { + if(ccgdm->pbvh && ccgDM_use_grid_pbvh(ccgdm)) { CCGFace **faces; int totface; diff --git a/source/blender/blenlib/BLI_listbase.h b/source/blender/blenlib/BLI_listbase.h index 599487354c3..c4dc0894f80 100644 --- a/source/blender/blenlib/BLI_listbase.h +++ b/source/blender/blenlib/BLI_listbase.h @@ -45,6 +45,7 @@ void BLI_insertlink(struct ListBase *listbase, void *vprevlink, void *vnewlink); void *BLI_findlink(struct ListBase *listbase, int number); int BLI_findindex(struct ListBase *listbase, void *vlink); void *BLI_findstring(struct ListBase *listbase, const char *id, int offset); +void *BLI_findstring_ptr(struct ListBase *listbase, const char *id, int offset); int BLI_findstringindex(struct ListBase *listbase, const char *id, int offset); void BLI_freelistN(struct ListBase *listbase); void BLI_addtail(struct ListBase *listbase, void *vlink); diff --git a/source/blender/blenlib/Makefile b/source/blender/blenlib/Makefile index ae8a5afd0ba..d4dcfaeeabf 100644 --- a/source/blender/blenlib/Makefile +++ b/source/blender/blenlib/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/blenlib/intern/Makefile b/source/blender/blenlib/intern/Makefile index 7ef44aff881..018fd3477df 100644 --- a/source/blender/blenlib/intern/Makefile +++ b/source/blender/blenlib/intern/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/blenlib/intern/listbase.c b/source/blender/blenlib/intern/listbase.c index 0a6831558d1..776f2d085df 100644 --- a/source/blender/blenlib/intern/listbase.c +++ b/source/blender/blenlib/intern/listbase.c @@ -374,6 +374,27 @@ void *BLI_findstring(ListBase *listbase, const char *id, int offset) return NULL; } +void *BLI_findstring_ptr(ListBase *listbase, const char *id, int offset) +{ + Link *link= NULL; + const char *id_iter; + + if (listbase == NULL) return NULL; + + link= listbase->first; + while (link) { + /* exact copy of BLI_findstring(), except for this line */ + id_iter= *((const char **)(((const char *)link) + offset)); + + if(id[0] == id_iter[0] && strcmp(id, id_iter)==0) + return link; + + link= link->next; + } + + return NULL; +} + int BLI_findstringindex(ListBase *listbase, const char *id, int offset) { Link *link= NULL; diff --git a/source/blender/blenlib/intern/math_geom_inline.c b/source/blender/blenlib/intern/math_geom_inline.c index 697ac8dc782..f2d8e27cbd5 100644 --- a/source/blender/blenlib/intern/math_geom_inline.c +++ b/source/blender/blenlib/intern/math_geom_inline.c @@ -15,7 +15,7 @@ * * 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. + * 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. diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index 260f59aa03c..cf773d575e5 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -586,7 +586,7 @@ int BLI_path_abs(char *path, const char *basepath) BLI_strncpy(tmp, path, FILE_MAX); } #else - BLI_strncpy(tmp, path, FILE_MAX); + BLI_strncpy(tmp, path, sizeof(tmp)); /* Check for loading a windows path on a posix system * in this case, there is no use in trying C:/ since it @@ -603,7 +603,7 @@ int BLI_path_abs(char *path, const char *basepath) #endif - BLI_strncpy(base, basepath, FILE_MAX); + BLI_strncpy(base, basepath, sizeof(base)); BLI_cleanup_file(NULL, base); @@ -626,13 +626,13 @@ int BLI_path_abs(char *path, const char *basepath) BLI_strncpy(path, tmp+2, FILE_MAX); memcpy(tmp, base, baselen); - strcpy(tmp+baselen, path); - strcpy(path, tmp); + BLI_strncpy(tmp+baselen, path, sizeof(tmp)-baselen); + BLI_strncpy(path, tmp, FILE_MAX); } else { - strcpy(path, tmp+2); + BLI_strncpy(path, tmp+2, FILE_MAX); } } else { - strcpy(path, tmp); + BLI_strncpy(path, tmp, FILE_MAX); } if (path[0]!='\0') { @@ -1162,7 +1162,7 @@ void BLI_make_existing_file(char *name) { char di[FILE_MAXDIR+FILE_MAXFILE], fi[FILE_MAXFILE]; - strcpy(di, name); + BLI_strncpy(di, name, sizeof(di)); BLI_splitdirstring(di, fi); /* test exist */ diff --git a/source/blender/blenlib/intern/storage.c b/source/blender/blenlib/intern/storage.c index edb6aecabb1..80310b1ef8a 100644 --- a/source/blender/blenlib/intern/storage.c +++ b/source/blender/blenlib/intern/storage.c @@ -237,8 +237,19 @@ void BLI_builddir(char *dirname, char *relname) if (newnum){ - if (files) files=(struct direntry *)realloc(files,(totnum+newnum) * sizeof(struct direntry)); - else files=(struct direntry *)malloc(newnum * sizeof(struct direntry)); + if(files) { + void *tmp= realloc(files, (totnum+newnum) * sizeof(struct direntry)); + if(tmp) { + files= (struct direntry *)tmp; + } + else { /* realloc fail */ + free(files); + files= NULL; + } + } + + if(files==NULL) + files=(struct direntry *)malloc(newnum * sizeof(struct direntry)); if (files){ dlink = (struct dirlink *) dirbase->first; diff --git a/source/blender/blenloader/BLO_readfile.h b/source/blender/blenloader/BLO_readfile.h index d6418f426c8..eeced13b57b 100644 --- a/source/blender/blenloader/BLO_readfile.h +++ b/source/blender/blenloader/BLO_readfile.h @@ -111,38 +111,6 @@ BlendFileData *BLO_read_from_memfile(struct Main *oldmain, const char *filename, void BLO_blendfiledata_free( BlendFileData *bfd); - -/** - * Convert an idcode into a name. - * - * @param code The code to convert. - * @return A static string representing the name of - * the code. - */ - char* -BLO_idcode_to_name( - int code); - -/** - * Convert an idcode into a name (plural). - * - * @param code The code to convert. - * @return A static string representing the name of - * the code. - */ - char* -BLO_idcode_to_name_plural( - int code); - -/** - * Convert a name into an idcode (ie. ID_SCE) - * - * @param name The name to convert. - * @return The code for the name, or 0 if invalid. - */ - int -BLO_idcode_from_name( - char *name); /** * Open a blendhandle from a file path. diff --git a/source/blender/blenloader/Makefile b/source/blender/blenloader/Makefile index 4ffc558f889..069bad4d371 100644 --- a/source/blender/blenloader/Makefile +++ b/source/blender/blenloader/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/blenloader/intern/Makefile b/source/blender/blenloader/intern/Makefile index f4690fcc066..fe178ea2610 100644 --- a/source/blender/blenloader/intern/Makefile +++ b/source/blender/blenloader/intern/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/blenloader/intern/readblenentry.c b/source/blender/blenloader/intern/readblenentry.c index 6101012203a..d66d802c8ee 100644 --- a/source/blender/blenloader/intern/readblenentry.c +++ b/source/blender/blenloader/intern/readblenentry.c @@ -46,6 +46,7 @@ #include "BKE_main.h" #include "BKE_library.h" // for free_main +#include "BKE_idcode.h" #include "BKE_report.h" #include "BLO_readfile.h" @@ -61,111 +62,9 @@ #include "BLI_winstuff.h" #endif - /** - * IDType stuff, I plan to move this - * out into its own file + prefix, and - * make sure all IDType handling goes through - * these routines. - */ - -typedef struct { - unsigned short code; - char *name, *plural; - - int flags; -#define IDTYPE_FLAGS_ISLINKABLE (1<<0) -} IDType; - -/* plural need to match rna_main.c's MainCollectionDef */ -static IDType idtypes[]= { - { ID_AC, "Action", "actions", IDTYPE_FLAGS_ISLINKABLE}, - { ID_AR, "Armature", "armatures", IDTYPE_FLAGS_ISLINKABLE}, - { ID_BR, "Brush", "brushes", IDTYPE_FLAGS_ISLINKABLE}, - { ID_CA, "Camera", "cameras", IDTYPE_FLAGS_ISLINKABLE}, - { ID_CU, "Curve", "curves", IDTYPE_FLAGS_ISLINKABLE}, - { ID_GD, "GPencil", "gpencil", IDTYPE_FLAGS_ISLINKABLE}, /* rename gpencil */ - { ID_GR, "Group", "groups", IDTYPE_FLAGS_ISLINKABLE}, - { ID_ID, "ID", "ids", 0}, /* plural is fake */ - { ID_IM, "Image", "images", IDTYPE_FLAGS_ISLINKABLE}, - { ID_IP, "Ipo", "ipos", IDTYPE_FLAGS_ISLINKABLE}, /* deprecated */ - { ID_KE, "Key", "keys", 0}, - { ID_LA, "Lamp", "lamps", IDTYPE_FLAGS_ISLINKABLE}, - { ID_LI, "Library", "libraries", 0}, - { ID_LT, "Lattice", "lattices", IDTYPE_FLAGS_ISLINKABLE}, - { ID_MA, "Material", "materials", IDTYPE_FLAGS_ISLINKABLE}, - { ID_MB, "Metaball", "metaballs", IDTYPE_FLAGS_ISLINKABLE}, - { ID_ME, "Mesh", "meshes", IDTYPE_FLAGS_ISLINKABLE}, - { ID_NT, "NodeTree", "node_groups", IDTYPE_FLAGS_ISLINKABLE}, - { ID_OB, "Object", "objects", IDTYPE_FLAGS_ISLINKABLE}, - { ID_PA, "ParticleSettings", "particles", 0}, - { ID_SCE, "Scene", "scenes", IDTYPE_FLAGS_ISLINKABLE}, - { ID_SCR, "Screen", "screens", 0}, - { ID_SEQ, "Sequence", "sequences", 0}, /* not actually ID data */ - { ID_SO, "Sound", "sounds", IDTYPE_FLAGS_ISLINKABLE}, - { ID_TE, "Texture", "textures", IDTYPE_FLAGS_ISLINKABLE}, - { ID_TXT, "Text", "texts", IDTYPE_FLAGS_ISLINKABLE}, - { ID_VF, "VFont", "fonts", IDTYPE_FLAGS_ISLINKABLE}, - { ID_WO, "World", "worlds", IDTYPE_FLAGS_ISLINKABLE}, - { ID_WM, "WindowManager", "window_managers", 0}, -}; -static int nidtypes= sizeof(idtypes)/sizeof(idtypes[0]); - /* local prototypes --------------------- */ void BLO_blendhandle_print_sizes(BlendHandle *, void *); - -static IDType *idtype_from_name(char *str) -{ - int i= nidtypes; - - while (i--) - if (BLI_streq(str, idtypes[i].name)) - return &idtypes[i]; - - return NULL; -} -static IDType *idtype_from_code(int code) -{ - int i= nidtypes; - - while (i--) - if (code==idtypes[i].code) - return &idtypes[i]; - - return NULL; -} - -static int bheadcode_is_idcode(int code) -{ - return idtype_from_code(code)?1:0; -} - -static int idcode_is_linkable(int code) { - IDType *idt= idtype_from_code(code); - return idt?(idt->flags&IDTYPE_FLAGS_ISLINKABLE):0; -} - -char *BLO_idcode_to_name(int code) -{ - IDType *idt= idtype_from_code(code); - - return idt?idt->name:NULL; -} - -int BLO_idcode_from_name(char *name) -{ - IDType *idt= idtype_from_name(name); - - return idt?idt->code:0; -} - -char *BLO_idcode_to_name_plural(int code) -{ - IDType *idt= idtype_from_code(code); - - return idt?idt->plural:NULL; -} - /* Access routines used by filesel. */ BlendHandle *BLO_blendhandle_from_file(char *file) @@ -308,13 +207,13 @@ LinkNode *BLO_blendhandle_get_linkable_groups(BlendHandle *bh) for (bhead= blo_firstbhead(fd); bhead; bhead= blo_nextbhead(fd, bhead)) { if (bhead->code==ENDB) { break; - } else if (bheadcode_is_idcode(bhead->code)) { - if (idcode_is_linkable(bhead->code)) { - char *str= BLO_idcode_to_name(bhead->code); + } else if (BKE_idcode_is_valid(bhead->code)) { + if (BKE_idcode_is_linkable(bhead->code)) { + const char *str= BKE_idcode_to_name(bhead->code); - if (!BLI_ghash_haskey(gathered, str)) { + if (!BLI_ghash_haskey(gathered, (void *)str)) { BLI_linklist_prepend(&names, strdup(str)); - BLI_ghash_insert(gathered, str, NULL); + BLI_ghash_insert(gathered, (void *)str, NULL); } } } diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index e36b73189e6..c67375d8aa2 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -105,6 +105,7 @@ #include "BKE_image.h" #include "BKE_lattice.h" #include "BKE_library.h" // for which_libbase +#include "BKE_idcode.h" #include "BKE_main.h" // for Main #include "BKE_mesh.h" // for ME_ defines (patching) #include "BKE_modifier.h" @@ -4106,8 +4107,9 @@ static void composite_patch(bNodeTree *ntree, Scene *scene) static void link_paint(FileData *fd, Scene *sce, Paint *p) { - if(p && p->brush) { + if(p) { p->brush= newlibadr_us(fd, sce->id.lib, p->brush); + p->paint_cursor= NULL; } } @@ -12592,8 +12594,8 @@ static void read_libraries(FileData *basefd, ListBase *mainlist) append_id_part(fd, mainptr, id, &realid); if (!realid) { - BKE_reportf(fd->reports, RPT_ERROR, "LIB ERROR: %s:'%s' missing from '%s'\n", BLO_idcode_to_name(GS(id->name)), id->name+2, mainptr->curlib->filepath); - if(!G.background && basefd->reports) printf("LIB ERROR: %s:'%s' missing from '%s'\n", BLO_idcode_to_name(GS(id->name)), id->name+2, mainptr->curlib->filepath); + BKE_reportf(fd->reports, RPT_ERROR, "LIB ERROR: %s:'%s' missing from '%s'\n", BKE_idcode_to_name(GS(id->name)), id->name+2, mainptr->curlib->filepath); + if(!G.background && basefd->reports) printf("LIB ERROR: %s:'%s' missing from '%s'\n", BKE_idcode_to_name(GS(id->name)), id->name+2, mainptr->curlib->filepath); } change_idid_adr(mainlist, basefd, id, realid); @@ -12628,8 +12630,8 @@ static void read_libraries(FileData *basefd, ListBase *mainlist) ID *idn= id->next; if(id->flag & LIB_READ) { BLI_remlink(lbarray[a], id); - BKE_reportf(basefd->reports, RPT_ERROR, "LIB ERROR: %s:'%s' unread libblock missing from '%s'\n", BLO_idcode_to_name(GS(id->name)), id->name+2, mainptr->curlib->filepath); - if(!G.background && basefd->reports)printf("LIB ERROR: %s:'%s' unread libblock missing from '%s'\n", BLO_idcode_to_name(GS(id->name)), id->name+2, mainptr->curlib->filepath); + BKE_reportf(basefd->reports, RPT_ERROR, "LIB ERROR: %s:'%s' unread libblock missing from '%s'\n", BKE_idcode_to_name(GS(id->name)), id->name+2, mainptr->curlib->filepath); + if(!G.background && basefd->reports)printf("LIB ERROR: %s:'%s' unread libblock missing from '%s'\n", BKE_idcode_to_name(GS(id->name)), id->name+2, mainptr->curlib->filepath); change_idid_adr(mainlist, basefd, id, NULL); MEM_freeN(id); diff --git a/source/blender/blenpluginapi/Makefile b/source/blender/blenpluginapi/Makefile index 83678309b45..c91161d8cfd 100644 --- a/source/blender/blenpluginapi/Makefile +++ b/source/blender/blenpluginapi/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/blenpluginapi/intern/Makefile b/source/blender/blenpluginapi/intern/Makefile index 20a61e9a25c..696462f3f46 100644 --- a/source/blender/blenpluginapi/intern/Makefile +++ b/source/blender/blenpluginapi/intern/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/collada/Makefile b/source/blender/collada/Makefile index 3b5f09594de..d4cc18d22b6 100644 --- a/source/blender/collada/Makefile +++ b/source/blender/collada/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2008 Blender Foundation. # All rights reserved. diff --git a/source/blender/collada/SConscript b/source/blender/collada/SConscript index b86e7312698..91c3a381272 100644 --- a/source/blender/collada/SConscript +++ b/source/blender/collada/SConscript @@ -14,7 +14,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2006, Blender Foundation # All rights reserved. diff --git a/source/blender/editors/Makefile b/source/blender/editors/Makefile index e259168a4ef..168d919e6de 100644 --- a/source/blender/editors/Makefile +++ b/source/blender/editors/Makefile @@ -17,7 +17,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) Blender Foundation. # All rights reserved. diff --git a/source/blender/editors/animation/Makefile b/source/blender/editors/animation/Makefile index a7f36aa58ac..f120091e917 100644 --- a/source/blender/editors/animation/Makefile +++ b/source/blender/editors/animation/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/armature/Makefile b/source/blender/editors/armature/Makefile index 4838282de92..707ceb55246 100644 --- a/source/blender/editors/armature/Makefile +++ b/source/blender/editors/armature/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/curve/Makefile b/source/blender/editors/curve/Makefile index 6449700e50b..d9c51c7420e 100644 --- a/source/blender/editors/curve/Makefile +++ b/source/blender/editors/curve/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/datafiles/Makefile b/source/blender/editors/datafiles/Makefile index d7bb4e7222f..c76014df60e 100644 --- a/source/blender/editors/datafiles/Makefile +++ b/source/blender/editors/datafiles/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/gpencil/Makefile b/source/blender/editors/gpencil/Makefile index 9bc5f491a83..f3e781a0369 100644 --- a/source/blender/editors/gpencil/Makefile +++ b/source/blender/editors/gpencil/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/interface/Makefile b/source/blender/editors/interface/Makefile index 115740a8403..7b5d4e60fbd 100644 --- a/source/blender/editors/interface/Makefile +++ b/source/blender/editors/interface/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/interface/interface_draw.c b/source/blender/editors/interface/interface_draw.c index 7179ef96dc0..2a9a1335b1f 100644 --- a/source/blender/editors/interface/interface_draw.c +++ b/source/blender/editors/interface/interface_draw.c @@ -1146,7 +1146,7 @@ void ui_draw_but_COLORBAND(uiBut *but, uiWidgetColors *wcol, rcti *rect) glColor4fv( &cbd->r ); glVertex2fv(v1); glVertex2fv(v2); - for( a = 1; a < sizex; a++ ) { + for( a = 1; a <= sizex; a++ ) { pos = ((float)a) / (sizex-1); do_colorband( coba, pos, colf ); if (but->block->color_profile != BLI_PR_NONE) @@ -1163,19 +1163,8 @@ void ui_draw_but_COLORBAND(uiBut *but, uiWidgetColors *wcol, rcti *rect) glDisable(GL_BLEND); /* outline */ - v1[0]= x1; v1[1]= y1; - - cpack(0x0); - glBegin(GL_LINE_LOOP); - glVertex2fv(v1); - v1[0]+= sizex; - glVertex2fv(v1); - v1[1]+= sizey; - glVertex2fv(v1); - v1[0]-= sizex; - glVertex2fv(v1); - glEnd(); - + glColor4f(0.0, 0.0, 0.0, 1.0); + fdrawbox(x1, y1, x1+sizex, y1+sizey); /* help lines */ v1[0]= v2[0]=v3[0]= x1; @@ -1231,6 +1220,7 @@ void ui_draw_but_COLORBAND(uiBut *but, uiWidgetColors *wcol, rcti *rect) } } glEnd(); + } void ui_draw_but_NORMAL(uiBut *but, uiWidgetColors *wcol, rcti *rect) diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index e1a760628b0..8dcc204f06f 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -4262,7 +4262,7 @@ static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, wmEvent *event) return WM_UI_HANDLER_BREAK; } /* reset to default */ - else if(event->type == ZEROKEY && event->val == KM_PRESS) { + else if(ELEM(event->type, ZEROKEY,PAD0) && event->val == KM_PRESS) { if (!(ELEM3(but->type, HSVCIRCLE, HSVCUBE, HISTOGRAM))) ui_set_but_default(C, but); } diff --git a/source/blender/editors/mesh/Makefile b/source/blender/editors/mesh/Makefile index 8ae40e1b957..be57f72329a 100644 --- a/source/blender/editors/mesh/Makefile +++ b/source/blender/editors/mesh/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/metaball/Makefile b/source/blender/editors/metaball/Makefile index d971ec9b412..c28ef59e9db 100644 --- a/source/blender/editors/metaball/Makefile +++ b/source/blender/editors/metaball/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/object/Makefile b/source/blender/editors/object/Makefile index 7c081355ed5..4694653b115 100644 --- a/source/blender/editors/object/Makefile +++ b/source/blender/editors/object/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/object/object_bake.c b/source/blender/editors/object/object_bake.c index 98252723816..a03d1a29333 100644 --- a/source/blender/editors/object/object_bake.c +++ b/source/blender/editors/object/object_bake.c @@ -225,11 +225,11 @@ static void bake_update(void *bkv) static void bake_freejob(void *bkv) { BakeRender *bkr= bkv; - BLI_end_threads(&bkr->threads); finish_bake_internal(bkr); if(bkr->tot==0) BKE_report(bkr->reports, RPT_ERROR, "No Images found to bake to"); MEM_freeN(bkr); + G.rendering = 0; } /* catch esc */ @@ -269,6 +269,7 @@ static int objects_bake_render_invoke(bContext *C, wmOperator *op, wmEvent *_eve WM_jobs_callbacks(steve, bake_startjob, NULL, bake_update, NULL); G.afbreek= 0; + G.rendering = 1; WM_jobs_start(CTX_wm_manager(C), steve); diff --git a/source/blender/editors/physics/Makefile b/source/blender/editors/physics/Makefile index e9260b66087..9ffc3a5b372 100644 --- a/source/blender/editors/physics/Makefile +++ b/source/blender/editors/physics/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/render/Makefile b/source/blender/editors/render/Makefile index 85b70172e0a..510e5372e22 100644 --- a/source/blender/editors/render/Makefile +++ b/source/blender/editors/render/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c index ae34dc967f5..2561a2c8dbc 100644 --- a/source/blender/editors/render/render_preview.c +++ b/source/blender/editors/render/render_preview.c @@ -791,7 +791,7 @@ void BIF_view3d_previewrender(Main *bmain, Scene *scene, ScrArea *sa) lay |= v3d->lay; else lay= v3d->lay; - RE_Database_FromScene(re, scene, lay, 0); // 0= dont use camera view + RE_Database_FromScene(re, bmain, scene, lay, 0); // 0= dont use camera view rstats= RE_GetStats(re); if(rstats->convertdone) diff --git a/source/blender/editors/screen/Makefile b/source/blender/editors/screen/Makefile index 23c9d130eec..2ab35a32888 100644 --- a/source/blender/editors/screen/Makefile +++ b/source/blender/editors/screen/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/sculpt_paint/Makefile b/source/blender/editors/sculpt_paint/Makefile index 012a39b8d25..f9f39fea7eb 100644 --- a/source/blender/editors/sculpt_paint/Makefile +++ b/source/blender/editors/sculpt_paint/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/sound/Makefile b/source/blender/editors/sound/Makefile index 10145035eb4..211fcfb9a4c 100644 --- a/source/blender/editors/sound/Makefile +++ b/source/blender/editors/sound/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/space_action/Makefile b/source/blender/editors/space_action/Makefile index e856587acca..19aeb54cc2f 100644 --- a/source/blender/editors/space_action/Makefile +++ b/source/blender/editors/space_action/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/space_api/Makefile b/source/blender/editors/space_api/Makefile index 474fbe89053..deaa46a9582 100644 --- a/source/blender/editors/space_api/Makefile +++ b/source/blender/editors/space_api/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/space_buttons/Makefile b/source/blender/editors/space_buttons/Makefile index a4894ede06b..28758fb168b 100644 --- a/source/blender/editors/space_buttons/Makefile +++ b/source/blender/editors/space_buttons/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/space_console/Makefile b/source/blender/editors/space_console/Makefile index 3f760b1ad67..4ae157507e0 100644 --- a/source/blender/editors/space_console/Makefile +++ b/source/blender/editors/space_console/Makefile @@ -17,7 +17,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2009 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/space_console/space_console.c b/source/blender/editors/space_console/space_console.c index f5d913e9f32..4ee69bbd809 100644 --- a/source/blender/editors/space_console/space_console.c +++ b/source/blender/editors/space_console/space_console.c @@ -35,13 +35,12 @@ #include "MEM_guardedalloc.h" -#include "BLO_readfile.h" /* get the ID name for dnd*/ - #include "BLI_blenlib.h" #include "BLI_math.h" #include "BKE_context.h" #include "BKE_screen.h" +#include "BKE_idcode.h" #include "ED_screen.h" @@ -177,7 +176,7 @@ static void id_drop_copy(wmDrag *drag, wmDropBox *drop) char text[64]; ID *id= drag->poin; - snprintf(text, sizeof(text), "bpy.data.%s['%s']", BLO_idcode_to_name_plural(GS(id->name)), id->name+2); + snprintf(text, sizeof(text), "bpy.data.%s['%s']", BKE_idcode_to_name_plural(GS(id->name)), id->name+2); /* copy drag path to properties */ RNA_string_set(drop->ptr, "text", text); diff --git a/source/blender/editors/space_file/Makefile b/source/blender/editors/space_file/Makefile index 48f6879b029..1fc27795f08 100644 --- a/source/blender/editors/space_file/Makefile +++ b/source/blender/editors/space_file/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/space_file/file_draw.c b/source/blender/editors/space_file/file_draw.c index 22c5270ae6d..f25fab45c7c 100644 --- a/source/blender/editors/space_file/file_draw.c +++ b/source/blender/editors/space_file/file_draw.c @@ -426,21 +426,25 @@ static void renamebutton_cb(bContext *C, void *arg1, char *oldname) SpaceFile *sfile= (SpaceFile*)CTX_wm_space_data(C); ARegion* ar = CTX_wm_region(C); +#if 0 struct direntry *file = (struct direntry *)arg1; +#endif BLI_make_file_string(G.sce, orgname, sfile->params->dir, oldname); - BLI_strncpy(filename, file->relname, sizeof(filename)); + BLI_strncpy(filename, sfile->params->renameedit, sizeof(filename)); BLI_make_file_string(G.sce, newname, sfile->params->dir, filename); if( strcmp(orgname, newname) != 0 ) { if (!BLI_exists(newname)) { BLI_rename(orgname, newname); /* to make sure we show what is on disk */ +#if 0 /* this is cleared anyway, no need */ + MEM_freeN(file->relname); + file->relname= BLI_strdup(sfile->params->renameedit); +#endif ED_fileselect_clear(C, sfile); - } else { - BLI_strncpy(file->relname, oldname, strlen(oldname)+1); } - + ED_region_tag_redraw(ar); } } @@ -535,7 +539,7 @@ void file_draw_list(const bContext *C, ARegion *ar) int but_width = (FILE_IMGDISPLAY == params->display) ? layout->tile_w : layout->column_widths[COLUMN_NAME]; uiBut *but = uiDefBut(block, TEX, 1, "", spos, sy-layout->tile_h-3, - but_width, layout->textheight*2, file->relname, 1.0f, (float)FILE_MAX,0,0,""); + but_width, layout->textheight*2, sfile->params->renameedit, 1.0f, (float)sizeof(sfile->params->renameedit),0,0,""); uiButSetRenameFunc(but, renamebutton_cb, file); if ( 0 == uiButActiveOnly(C, block, but)) { file->flags &= ~EDITING; diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c index 2664082b20b..c3bea2a5bea 100644 --- a/source/blender/editors/space_file/filelist.c +++ b/source/blender/editors/space_file/filelist.c @@ -57,6 +57,7 @@ #include "BKE_main.h" #include "BKE_report.h" #include "BLO_readfile.h" +#include "BKE_idcode.h" #include "DNA_space_types.h" @@ -881,7 +882,7 @@ static int groupname_to_code(char *group) if (lslash) lslash[0]= '\0'; - return BLO_idcode_from_name(buf); + return BKE_idcode_from_name(buf); } void filelist_from_library(struct FileList* filelist) diff --git a/source/blender/editors/space_file/filesel.c b/source/blender/editors/space_file/filesel.c index 8783296f5c2..0dbd1048348 100644 --- a/source/blender/editors/space_file/filesel.c +++ b/source/blender/editors/space_file/filesel.c @@ -62,8 +62,6 @@ #include "BLI_storage_types.h" #include "BLI_dynstr.h" -#include "BLO_readfile.h" - #include "BKE_context.h" #include "BKE_global.h" diff --git a/source/blender/editors/space_file/space_file.c b/source/blender/editors/space_file/space_file.c index 2f023aeebc1..7b9423332f2 100644 --- a/source/blender/editors/space_file/space_file.c +++ b/source/blender/editors/space_file/space_file.c @@ -232,6 +232,7 @@ static void file_refresh(const bContext *C, ScrArea *sa) file->flags |= EDITING; } } + BLI_strncpy(sfile->params->renameedit, sfile->params->renamefile, sizeof(sfile->params->renameedit)); params->renamefile[0] = '\0'; } if (sfile->layout) sfile->layout->dirty= 1; diff --git a/source/blender/editors/space_graph/Makefile b/source/blender/editors/space_graph/Makefile index 65cdf1a3ffb..633242355f0 100644 --- a/source/blender/editors/space_graph/Makefile +++ b/source/blender/editors/space_graph/Makefile @@ -17,7 +17,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/space_image/Makefile b/source/blender/editors/space_image/Makefile index 1838b9ce73d..773a6920961 100644 --- a/source/blender/editors/space_image/Makefile +++ b/source/blender/editors/space_image/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c index be2782ab25c..314d5dd9043 100644 --- a/source/blender/editors/space_image/image_ops.c +++ b/source/blender/editors/space_image/image_ops.c @@ -739,7 +739,22 @@ static int open_exec(bContext *C, wmOperator *op) static int open_invoke(bContext *C, wmOperator *op, wmEvent *event) { SpaceImage *sima= CTX_wm_space_image(C); - char *path= (sima && sima->image)? sima->image->name: U.textudir; + char *path=U.textudir; + Image *ima= NULL; + + if(sima) { + ima= sima->image; + } + + if (ima==NULL) { + Tex *tex= CTX_data_pointer_get_type(C, "texture", &RNA_Texture).data; + if(tex && tex->type==TEX_IMAGE) + ima= tex->ima; + } + + if(ima) + path= ima->name; + if(!RNA_property_is_set(op->ptr, "relative_path")) RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS); diff --git a/source/blender/editors/space_info/Makefile b/source/blender/editors/space_info/Makefile index 931c2f2097c..46feeec8613 100644 --- a/source/blender/editors/space_info/Makefile +++ b/source/blender/editors/space_info/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/space_logic/Makefile b/source/blender/editors/space_logic/Makefile index 90cd73bd62a..9b72e132be8 100644 --- a/source/blender/editors/space_logic/Makefile +++ b/source/blender/editors/space_logic/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/space_logic/logic_window.c b/source/blender/editors/space_logic/logic_window.c index 12d566a3ab7..790eac7aa27 100644 --- a/source/blender/editors/space_logic/logic_window.c +++ b/source/blender/editors/space_logic/logic_window.c @@ -3929,7 +3929,7 @@ static void draw_actuator_filter_2d(uiLayout *layout, PointerRNA *ptr) split=uiLayoutSplit(layout, 0.75, 1); row= uiLayoutRow(split, 0); uiLayoutSetActive(row, RNA_boolean_get(ptr, "enable_motion_blur")==1); - uiItemR(row, ptr, "motion_blur_value", 0, NULL, 0); + uiItemR(row, ptr, "motion_blur_factor", 0, NULL, 0); uiItemR(split, ptr, "enable_motion_blur", UI_ITEM_R_TOGGLE, NULL, 0); break; default: // all other 2D Filters diff --git a/source/blender/editors/space_nla/Makefile b/source/blender/editors/space_nla/Makefile index d7c9477dc83..fd940081c16 100644 --- a/source/blender/editors/space_nla/Makefile +++ b/source/blender/editors/space_nla/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/space_nla/nla_channels.c b/source/blender/editors/space_nla/nla_channels.c index 3e0ec5afac2..d834fb07ee7 100644 --- a/source/blender/editors/space_nla/nla_channels.c +++ b/source/blender/editors/space_nla/nla_channels.c @@ -384,20 +384,22 @@ static int nlaedit_add_tracks_exec (bContext *C, wmOperator *op) /* add tracks... */ for (ale= anim_data.first; ale; ale= ale->next) { - NlaTrack *nlt= (NlaTrack *)ale->data; - AnimData *adt= ale->adt; - - /* check if just adding a new track above this one, - * or whether we're adding a new one to the top of the stack that this one belongs to - */ - if (above_sel) { - /* just add a new one above this one */ - add_nlatrack(adt, nlt); - } - else if ((lastAdt == NULL) || (adt != lastAdt)) { - /* add one track to the top of the owning AnimData's stack, then don't add anymore to this stack */ - add_nlatrack(adt, NULL); - lastAdt= adt; + if(ale->type == ANIMTYPE_NLATRACK) { + NlaTrack *nlt= (NlaTrack *)ale->data; + AnimData *adt= ale->adt; + + /* check if just adding a new track above this one, + * or whether we're adding a new one to the top of the stack that this one belongs to + */ + if (above_sel) { + /* just add a new one above this one */ + add_nlatrack(adt, nlt); + } + else if ((lastAdt == NULL) || (adt != lastAdt)) { + /* add one track to the top of the owning AnimData's stack, then don't add anymore to this stack */ + add_nlatrack(adt, NULL); + lastAdt= adt; + } } } @@ -450,11 +452,13 @@ static int nlaedit_delete_tracks_exec (bContext *C, wmOperator *op) /* delete tracks */ for (ale= anim_data.first; ale; ale= ale->next) { - NlaTrack *nlt= (NlaTrack *)ale->data; - AnimData *adt= ale->adt; - - /* call delete on this track - deletes all strips too */ - free_nlatrack(&adt->nla_tracks, nlt); + if(ale->type == ANIMTYPE_NLATRACK) { + NlaTrack *nlt= (NlaTrack *)ale->data; + AnimData *adt= ale->adt; + + /* call delete on this track - deletes all strips too */ + free_nlatrack(&adt->nla_tracks, nlt); + } } /* free temp data */ diff --git a/source/blender/editors/space_node/Makefile b/source/blender/editors/space_node/Makefile index 5bd6e95e28c..6c12149a43f 100644 --- a/source/blender/editors/space_node/Makefile +++ b/source/blender/editors/space_node/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/space_outliner/Makefile b/source/blender/editors/space_outliner/Makefile index 8d7cd017e0b..bd6725c5b71 100644 --- a/source/blender/editors/space_outliner/Makefile +++ b/source/blender/editors/space_outliner/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/space_script/Makefile b/source/blender/editors/space_script/Makefile index 3322cb61a7f..35462b8c255 100644 --- a/source/blender/editors/space_script/Makefile +++ b/source/blender/editors/space_script/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/space_sequencer/Makefile b/source/blender/editors/space_sequencer/Makefile index 2fb3de516b4..bb1cbdf1cd3 100644 --- a/source/blender/editors/space_sequencer/Makefile +++ b/source/blender/editors/space_sequencer/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/space_sound/Makefile b/source/blender/editors/space_sound/Makefile index a072684d543..03764c97a96 100644 --- a/source/blender/editors/space_sound/Makefile +++ b/source/blender/editors/space_sound/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/space_text/Makefile b/source/blender/editors/space_text/Makefile index 50871017085..8bc12852e18 100644 --- a/source/blender/editors/space_text/Makefile +++ b/source/blender/editors/space_text/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/space_text/text_draw.c b/source/blender/editors/space_text/text_draw.c index 926ccc1914a..2e5bb4a63e0 100644 --- a/source/blender/editors/space_text/text_draw.c +++ b/source/blender/editors/space_text/text_draw.c @@ -111,8 +111,8 @@ static void flatten_string_append(FlattenString *fs, char c, int accum) nbuf= MEM_callocN(sizeof(*fs->buf)*fs->len, "fs->buf"); naccum= MEM_callocN(sizeof(*fs->accum)*fs->len, "fs->accum"); - memcpy(nbuf, fs->buf, fs->pos); - memcpy(naccum, fs->accum, fs->pos); + memcpy(nbuf, fs->buf, fs->pos * sizeof(*fs->buf)); + memcpy(naccum, fs->accum, fs->pos * sizeof(*fs->accum)); if(fs->buf != fs->fixedbuf) { MEM_freeN(fs->buf); @@ -1101,6 +1101,22 @@ static void draw_cursor(SpaceText *st, ARegion *ar) } } + if(st->line_hlight) { + y= ar->winy-2 - vsell*st->lheight; + if(!(y<0 || y > ar->winy)) { /* check we need to draw */ + int x1= st->showlinenrs ? TXT_OFFSET + TEXTXLOC : TXT_OFFSET; + int x2= x1 + ar->winx; + y= ar->winy-2 - vsell*st->lheight; + + glColor4ub(255, 255, 255, 32); + + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_BLEND); + glRecti(x1-4, y, x2, y-st->lheight+1); + glDisable(GL_BLEND); + } + } + if(!hidden) { /* Draw the cursor itself (we draw the sel. cursor as this is the leading edge) */ x= st->showlinenrs ? TXT_OFFSET + TEXTXLOC : TXT_OFFSET; @@ -1288,7 +1304,7 @@ void draw_text_main(SpaceText *st, ARegion *ar) } y= ar->winy-st->lheight; winx= ar->winx - TXT_SCROLL_WIDTH; - + /* draw cursor */ draw_cursor(st, ar); diff --git a/source/blender/editors/space_text/text_ops.c b/source/blender/editors/space_text/text_ops.c index 0e0a9592104..d39056c6bbc 100644 --- a/source/blender/editors/space_text/text_ops.c +++ b/source/blender/editors/space_text/text_ops.c @@ -1709,6 +1709,8 @@ static int toggle_overwrite_exec(bContext *C, wmOperator *op) st->overwrite= !st->overwrite; + WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, st->text); + return OPERATOR_FINISHED; } diff --git a/source/blender/editors/space_time/Makefile b/source/blender/editors/space_time/Makefile index e0bf3943dd8..958c3018f82 100644 --- a/source/blender/editors/space_time/Makefile +++ b/source/blender/editors/space_time/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/space_userpref/Makefile b/source/blender/editors/space_userpref/Makefile index be7206f51ce..8510c355ab4 100644 --- a/source/blender/editors/space_userpref/Makefile +++ b/source/blender/editors/space_userpref/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/space_view3d/Makefile b/source/blender/editors/space_view3d/Makefile index 9204f2482c6..58d88194c22 100644 --- a/source/blender/editors/space_view3d/Makefile +++ b/source/blender/editors/space_view3d/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index aad91e74af9..334b72ee1ed 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -306,7 +306,10 @@ static int view3d_smoothview_invoke(bContext *C, wmOperator *op, wmEvent *event) if(rv3d->smooth_timer==NULL || rv3d->smooth_timer!=event->customdata) return OPERATOR_PASS_THROUGH; - step = (rv3d->smooth_timer->duration)/sms->time_allowed; + if(sms->time_allowed != 0.0f) + step = (rv3d->smooth_timer->duration)/sms->time_allowed; + else + step = 1.0f; /* end timer */ if(step >= 1.0f) { diff --git a/source/blender/editors/transform/Makefile b/source/blender/editors/transform/Makefile index 607038b413b..9d23b763cd6 100644 --- a/source/blender/editors/transform/Makefile +++ b/source/blender/editors/transform/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/util/Makefile b/source/blender/editors/util/Makefile index 303079daeee..8535b3fb402 100644 --- a/source/blender/editors/util/Makefile +++ b/source/blender/editors/util/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/editors/uvedit/Makefile b/source/blender/editors/uvedit/Makefile index d589bbec3bc..e4b9ae72ccb 100644 --- a/source/blender/editors/uvedit/Makefile +++ b/source/blender/editors/uvedit/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) 2007 Blender Foundation # All rights reserved. diff --git a/source/blender/gpu/Makefile b/source/blender/gpu/Makefile index b9bde147115..eaa8a69bfdd 100644 --- a/source/blender/gpu/Makefile +++ b/source/blender/gpu/Makefile @@ -18,7 +18,7 @@ # # 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. +# 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. diff --git a/source/blender/gpu/intern/Makefile b/source/blender/gpu/intern/Makefile index 2637bff44ac..088b56edbab 100644 --- a/source/blender/gpu/intern/Makefile +++ b/source/blender/gpu/intern/Makefile @@ -18,7 +18,7 @@ # # 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. +# 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. diff --git a/source/blender/ikplugin/Makefile b/source/blender/ikplugin/Makefile index 370ed418464..28726586cc8 100644 --- a/source/blender/ikplugin/Makefile +++ b/source/blender/ikplugin/Makefile @@ -12,7 +12,7 @@ # # 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. +# 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. diff --git a/source/blender/ikplugin/intern/Makefile b/source/blender/ikplugin/intern/Makefile index 0c54e5d1264..352ab90df9d 100644 --- a/source/blender/ikplugin/intern/Makefile +++ b/source/blender/ikplugin/intern/Makefile @@ -12,7 +12,7 @@ # # 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. +# 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. diff --git a/source/blender/imbuf/Makefile b/source/blender/imbuf/Makefile index cc9b56b3cd8..78eea89173f 100644 --- a/source/blender/imbuf/Makefile +++ b/source/blender/imbuf/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/imbuf/intern/Makefile b/source/blender/imbuf/intern/Makefile index f3fa17385fe..8e7272100b9 100644 --- a/source/blender/imbuf/intern/Makefile +++ b/source/blender/imbuf/intern/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/imbuf/intern/cineon/Makefile b/source/blender/imbuf/intern/cineon/Makefile index 99a9a5dbd46..6e940d530a9 100644 --- a/source/blender/imbuf/intern/cineon/Makefile +++ b/source/blender/imbuf/intern/cineon/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/imbuf/intern/dds/Makefile b/source/blender/imbuf/intern/dds/Makefile index e14f9320d19..d4f04382899 100644 --- a/source/blender/imbuf/intern/dds/Makefile +++ b/source/blender/imbuf/intern/dds/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/imbuf/intern/openexr/Makefile b/source/blender/imbuf/intern/openexr/Makefile index 083089b11d5..820b2aeb003 100644 --- a/source/blender/imbuf/intern/openexr/Makefile +++ b/source/blender/imbuf/intern/openexr/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/imbuf/intern/thumbs.c b/source/blender/imbuf/intern/thumbs.c index 1624e9c2b01..f3415d44ecb 100644 --- a/source/blender/imbuf/intern/thumbs.c +++ b/source/blender/imbuf/intern/thumbs.c @@ -248,8 +248,8 @@ ImBuf* IMB_thumb_create(const char* path, ThumbSize size, ThumbSource source, Im char tdir[FILE_MAX]; char temp[FILE_MAX]; char mtime[40]= "0"; /* incase we can't stat the file */ - char cwidth[40]; - char cheight[40]; + char cwidth[40]= "0"; /* incase images have no data */ + char cheight[40]= "0"; char thumb[40]; short tsize = 128; short ex, ey; @@ -264,7 +264,7 @@ ImBuf* IMB_thumb_create(const char* path, ThumbSize size, ThumbSource source, Im tsize = 256; break; case THB_FAIL: - tsize = 0; + tsize = 1; break; default: return 0; /* unknown size */ @@ -280,7 +280,7 @@ ImBuf* IMB_thumb_create(const char* path, ThumbSize size, ThumbSource source, Im return NULL; } if (size == THB_FAIL) { - img = IMB_allocImBuf(0,0,32, IB_rect | IB_metadata, 0); + img = IMB_allocImBuf(1,1,32, IB_rect | IB_metadata, 0); if (!img) return 0; } else { if (THB_SOURCE_IMAGE == source || THB_SOURCE_BLEND == source) { diff --git a/source/blender/makesdna/DNA_curve_types.h b/source/blender/makesdna/DNA_curve_types.h index 973ba896100..8537b703c69 100644 --- a/source/blender/makesdna/DNA_curve_types.h +++ b/source/blender/makesdna/DNA_curve_types.h @@ -346,5 +346,9 @@ typedef enum eBezTriple_KeyframeType { #define CU_CHINFO_SMALLCAPS (1<<4) #define CU_CHINFO_SMALLCAPS_CHECK (1<<5) /* set at runtime, checks if case switching is needed */ +/* mixed with KEY_LINEAR but define here since only curve supports */ +#define KEY_CU_EASE 3 + + #endif diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h index e5308cccdfe..bf64bc27b48 100644 --- a/source/blender/makesdna/DNA_space_types.h +++ b/source/blender/makesdna/DNA_space_types.h @@ -161,6 +161,7 @@ typedef struct FileSelectParams { char dir[240]; /* directory */ char file[80]; /* file */ char renamefile[80]; + char renameedit[80]; /* annoying but the first is only used for initialization */ short type; /* XXXXX for now store type here, should be moved to the operator */ short flag; /* settings for filter, hiding dots files,... */ @@ -303,7 +304,8 @@ typedef struct SpaceText { int showlinenrs; int tabnumber; - int showsyntax; + short showsyntax; + short line_hlight; short overwrite; short live_edit; /* run python while editing, evil */ float pix_per_line; diff --git a/source/blender/makesdna/DNA_texture_types.h b/source/blender/makesdna/DNA_texture_types.h index e7a5a6e5f56..e9e058cbbd6 100644 --- a/source/blender/makesdna/DNA_texture_types.h +++ b/source/blender/makesdna/DNA_texture_types.h @@ -32,7 +32,7 @@ #define DNA_TEXTURE_TYPES_H #include "DNA_ID.h" -#include "DNA_image_types.h" +#include "DNA_image_types.h" /* ImageUser */ struct AnimData; struct Ipo; diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h index 7c8a24e9e8c..ceac7e4d1d7 100644 --- a/source/blender/makesdna/DNA_userdef_types.h +++ b/source/blender/makesdna/DNA_userdef_types.h @@ -33,7 +33,7 @@ #define DNA_USERDEF_TYPES_H #include "DNA_listBase.h" -#include "DNA_texture_types.h" +#include "DNA_texture_types.h" /* ColorBand */ /* themes; defines in BIF_resource.h */ struct ColorBand; diff --git a/source/blender/makesdna/Makefile b/source/blender/makesdna/Makefile index 82009d2b80a..f83a6288e8d 100644 --- a/source/blender/makesdna/Makefile +++ b/source/blender/makesdna/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/makesdna/intern/Makefile b/source/blender/makesdna/intern/Makefile index 01c4d87a4fc..55b0c42acda 100644 --- a/source/blender/makesdna/intern/Makefile +++ b/source/blender/makesdna/intern/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/makesrna/Makefile b/source/blender/makesrna/Makefile index bed3e85550d..2b025949d77 100644 --- a/source/blender/makesrna/Makefile +++ b/source/blender/makesrna/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # Contributor(s): Blender Foundation (2008). # diff --git a/source/blender/makesrna/intern/Makefile b/source/blender/makesrna/intern/Makefile index 4262a3538c2..f4ab4712faa 100644 --- a/source/blender/makesrna/intern/Makefile +++ b/source/blender/makesrna/intern/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # Contributor(s): Blender Foundation (2008). # diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index b15f736ac76..8e7a2a8cab3 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -23,6 +23,7 @@ */ #include <stdlib.h> +#include <stddef.h> #include <string.h> #include <ctype.h> @@ -258,14 +259,10 @@ int RNA_struct_idproperties_check(StructRNA *srna) static IDProperty *rna_idproperty_find(PointerRNA *ptr, const char *name) { IDProperty *group= RNA_struct_idproperties(ptr, 0); - IDProperty *idprop; - if(group) { - for(idprop=group->data.group.first; idprop; idprop=idprop->next) - if(strcmp(idprop->name, name) == 0) - return idprop; - } - + if(group) + return IDP_GetPropertyFromGroup(group, name); + return NULL; } @@ -577,9 +574,9 @@ FunctionRNA *RNA_struct_find_function(PointerRNA *ptr, const char *identifier) FunctionRNA *func; StructRNA *type; for(type= ptr->type; type; type= type->base) { - for(func= type->functions.first; func; func= func->cont.next) { - if(strcmp(func->identifier, identifier)==0) - return func; + func= BLI_findstring_ptr(&type->functions, identifier, offsetof(FunctionRNA, identifier)); + if(func) { + return func; } } return NULL; @@ -3592,7 +3589,8 @@ int RNA_property_is_set(PointerRNA *ptr, const char *name) return 1; } else { - // printf("RNA_property_is_set: %s.%s not found.\n", ptr->type->identifier, name); + /* python raises an error */ + /* printf("RNA_property_is_set: %s.%s not found.\n", ptr->type->identifier, name); */ return 0; } } @@ -3777,27 +3775,12 @@ int RNA_function_defined(FunctionRNA *func) PropertyRNA *RNA_function_get_parameter(PointerRNA *ptr, FunctionRNA *func, int index) { - PropertyRNA *parm; - int i; - - parm= func->cont.properties.first; - for(i= 0; parm; parm= parm->next, i++) - if(i==index) - return parm; - - return NULL; + return BLI_findlink(&func->cont.properties, index); } PropertyRNA *RNA_function_find_parameter(PointerRNA *ptr, FunctionRNA *func, const char *identifier) { - PropertyRNA *parm; - - parm= func->cont.properties.first; - for(; parm; parm= parm->next) - if(strcmp(parm->identifier, identifier)==0) - return parm; - - return NULL; + return BLI_findstring(&func->cont.properties, identifier, offsetof(PropertyRNA, identifier)); } const struct ListBase *RNA_function_defined_parameters(FunctionRNA *func) @@ -3813,18 +3796,18 @@ ParameterList *RNA_parameter_list_create(ParameterList *parms, PointerRNA *ptr, void *data; int alloc_size= 0, size; - parms->arg_count= 0; - parms->ret_count= 0; - + parms->arg_count= 0; + parms->ret_count= 0; + /* allocate data */ for(parm= func->cont.properties.first; parm; parm= parm->next) { alloc_size += rna_parameter_size_alloc(parm); - if(parm->flag & PROP_OUTPUT) - parms->ret_count++; - else - parms->arg_count++; - } + if(parm->flag & PROP_OUTPUT) + parms->ret_count++; + else + parms->arg_count++; + } parms->data= MEM_callocN(alloc_size, "RNA_parameter_list_create"); parms->func= func; diff --git a/source/blender/makesrna/intern/rna_color.c b/source/blender/makesrna/intern/rna_color.c index 077b8ffe199..fb51fa26395 100644 --- a/source/blender/makesrna/intern/rna_color.c +++ b/source/blender/makesrna/intern/rna_color.c @@ -526,7 +526,7 @@ static void rna_def_histogram(BlenderRNA *brna) PropertyRNA *prop; static EnumPropertyItem prop_mode_items[] = { - {HISTO_MODE_LUMA, "Luma", ICON_COLOR, "Luma", ""}, + {HISTO_MODE_LUMA, "LUMA", ICON_COLOR, "Luma", ""}, {HISTO_MODE_RGB, "RGB", ICON_COLOR, "Red Green Blue", ""}, {HISTO_MODE_R, "R", ICON_COLOR, "Red", ""}, {HISTO_MODE_G, "G", ICON_COLOR, "Green", ""}, diff --git a/source/blender/makesrna/intern/rna_curve.c b/source/blender/makesrna/intern/rna_curve.c index 2cd7953d878..d513b13c923 100644 --- a/source/blender/makesrna/intern/rna_curve.c +++ b/source/blender/makesrna/intern/rna_curve.c @@ -29,6 +29,7 @@ #include "rna_internal.h" #include "DNA_curve_types.h" +#include "DNA_key_types.h" #include "DNA_material_types.h" #include "DNA_scene_types.h" @@ -1252,10 +1253,10 @@ static void rna_def_curve(BlenderRNA *brna) static void rna_def_curve_nurb(BlenderRNA *brna) { static EnumPropertyItem spline_interpolation_items[] = { - {BEZT_IPO_CONST, "LINEAR", 0, "Linear", ""}, - {BEZT_IPO_LIN, "CARDINAL", 0, "Cardinal", ""}, - {BEZT_IPO_BEZ, "BSPLINE", 0, "BSpline", ""}, - {BEZT_IPO_BEZ, "EASE", 0, "Ease", ""}, + {KEY_LINEAR, "LINEAR", 0, "Linear", ""}, + {KEY_CARDINAL, "CARDINAL", 0, "Cardinal", ""}, + {KEY_BSPLINE, "BSPLINE", 0, "BSpline", ""}, + {KEY_CU_EASE, "EASE", 0, "Ease", ""}, /* todo, define somewhere, not one of BEZT_IPO_* */ {0, NULL, 0, NULL, NULL}}; StructRNA *srna; diff --git a/source/blender/makesrna/intern/rna_fluidsim.c b/source/blender/makesrna/intern/rna_fluidsim.c index 3930c2ff3f7..510b69d7f46 100644 --- a/source/blender/makesrna/intern/rna_fluidsim.c +++ b/source/blender/makesrna/intern/rna_fluidsim.c @@ -257,12 +257,12 @@ static void rna_def_fluidsim_domain(BlenderRNA *brna) prop= RNA_def_property(srna, "start_time", PROP_FLOAT, PROP_TIME); RNA_def_property_float_sdna(prop, NULL, "animStart"); RNA_def_property_range(prop, 0, 100); - RNA_def_property_ui_text(prop, "Start Time", "Simulation time of the first blender frame"); + RNA_def_property_ui_text(prop, "Start Time", "Simulation time of the first blender frame (in seconds)"); prop= RNA_def_property(srna, "end_time", PROP_FLOAT, PROP_TIME); RNA_def_property_float_sdna(prop, NULL, "animEnd"); RNA_def_property_range(prop, 0, 100); - RNA_def_property_ui_text(prop, "End Time", "Simulation time of the last blender frame"); + RNA_def_property_ui_text(prop, "End Time", "Simulation time of the last blender frame (in seconds)"); prop= RNA_def_property(srna, "real_world_size", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "realsize"); diff --git a/source/blender/makesrna/intern/rna_image_api.c b/source/blender/makesrna/intern/rna_image_api.c index efe3d39d6cd..70438ae3d8c 100644 --- a/source/blender/makesrna/intern/rna_image_api.c +++ b/source/blender/makesrna/intern/rna_image_api.c @@ -77,6 +77,8 @@ static void rna_Image_save_render(Image *image, bContext *C, ReportList *reports if (!BKE_write_ibuf(NULL, ibuf, path, scene->r.imtype, scene->r.subimtype, scene->r.quality)) { BKE_reportf(reports, RPT_ERROR, "Couldn't write image: %s", path); } + + BKE_image_release_ibuf(image, lock); } else { BKE_reportf(reports, RPT_ERROR, "Scene not in context, couldn't get save parameters"); } diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index ee38505d792..91385742f77 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -2115,10 +2115,10 @@ static void rna_def_dupli_object(BlenderRNA *brna) /* RNA_def_property_pointer_funcs(prop, "rna_DupliObject_object_get", NULL, NULL, NULL); */ RNA_def_property_ui_text(prop, "Object", "Object being duplicated"); - prop= RNA_def_property(srna, "object_matrix", PROP_FLOAT, PROP_MATRIX); + prop= RNA_def_property(srna, "matrix_original", PROP_FLOAT, PROP_MATRIX); RNA_def_property_float_sdna(prop, NULL, "omat"); RNA_def_property_array(prop, 16); - RNA_def_property_ui_text(prop, "Object Matrix", "Duplicated object transformation matrix"); + RNA_def_property_ui_text(prop, "Object Matrix", "The original matrix of this object before it was duplicated"); prop= RNA_def_property(srna, "matrix", PROP_FLOAT, PROP_MATRIX); RNA_def_property_float_sdna(prop, NULL, "mat"); diff --git a/source/blender/makesrna/intern/rna_smoke.c b/source/blender/makesrna/intern/rna_smoke.c index f921595304d..45dc7fadd94 100644 --- a/source/blender/makesrna/intern/rna_smoke.c +++ b/source/blender/makesrna/intern/rna_smoke.c @@ -205,8 +205,8 @@ static void rna_def_smoke_domain_settings(BlenderRNA *brna) prop= RNA_def_property(srna, "dissolve_speed", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "diss_speed"); - RNA_def_property_range(prop, 1.0, 100.0); - RNA_def_property_ui_range(prop, 1.0, 1000.0, 1, 0); + RNA_def_property_range(prop, 1.0, 10000.0); + RNA_def_property_ui_range(prop, 1.0, 10000.0, 1, 0); RNA_def_property_ui_text(prop, "Dissolve Speed", "Dissolve Speed"); RNA_def_property_update(prop, 0, NULL); diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index 436e9f60dc7..d72eb25dd2f 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -567,31 +567,30 @@ static void rna_SpaceProperties_align_set(PointerRNA *ptr, int value) } /* Space Console */ -static void rna_ConsoleLine_line_get(PointerRNA *ptr, char *value) +static void rna_ConsoleLine_body_get(PointerRNA *ptr, char *value) { ConsoleLine *ci= (ConsoleLine*)ptr->data; strcpy(value, ci->line); } -static int rna_ConsoleLine_line_length(PointerRNA *ptr) +static int rna_ConsoleLine_body_length(PointerRNA *ptr) { ConsoleLine *ci= (ConsoleLine*)ptr->data; return ci->len; } -static void rna_ConsoleLine_line_set(PointerRNA *ptr, const char *value) +static void rna_ConsoleLine_body_set(PointerRNA *ptr, const char *value) { ConsoleLine *ci= (ConsoleLine*)ptr->data; int len= strlen(value); - if(len < ci->len_alloc) { /* allocated size is enough? */ - strcpy(ci->line, value); - } - else { /* allocate a new strnig */ + if((len >= ci->len_alloc) || (len * 2 < ci->len_alloc) ) { /* allocate a new strnig */ MEM_freeN(ci->line); - ci->line= BLI_strdup(value); - ci->len_alloc= len; + ci->line= MEM_mallocN((len + 1) * sizeof(char), "rna_consoleline"); + ci->len_alloc= len + 1; } + + memcpy(ci->line, value, len + 1); ci->len= len; if(ci->cursor > len) /* clamp the cursor */ @@ -1536,31 +1535,28 @@ static void rna_def_space_text(BlenderRNA *brna) RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TEXT, NULL); /* display */ - prop= RNA_def_property(srna, "syntax_highlight", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "showsyntax", 0); - RNA_def_property_ui_text(prop, "Syntax Highlight", "Syntax highlight for scripting"); - RNA_def_property_ui_icon(prop, ICON_SYNTAX_OFF, 1); - RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TEXT, NULL); - - prop= RNA_def_property(srna, "word_wrap", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "show_word_wrap", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "wordwrap", 0); RNA_def_property_boolean_funcs(prop, NULL, "rna_SpaceTextEditor_word_wrap_set"); RNA_def_property_ui_text(prop, "Word Wrap", "Wrap words if there is not enough horizontal space"); RNA_def_property_ui_icon(prop, ICON_WORDWRAP_OFF, 1); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TEXT, NULL); - prop= RNA_def_property(srna, "line_numbers", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "show_line_numbers", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "showlinenrs", 0); RNA_def_property_ui_text(prop, "Line Numbers", "Show line numbers next to the text"); RNA_def_property_ui_icon(prop, ICON_LINENUMBERS_OFF, 1); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TEXT, NULL); - prop= RNA_def_property(srna, "overwrite", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_ui_text(prop, "Overwrite", "Overwrite characters when typing rather than inserting them"); + prop= RNA_def_property(srna, "show_syntax_highlight", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "showsyntax", 0); + RNA_def_property_ui_text(prop, "Syntax Highlight", "Syntax highlight for scripting"); + RNA_def_property_ui_icon(prop, ICON_SYNTAX_OFF, 1); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TEXT, NULL); - prop= RNA_def_property(srna, "live_edit", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_ui_text(prop, "Live Edit", "Run python while editing"); + prop= RNA_def_property(srna, "show_line_highlight", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "line_hlight", 0); + RNA_def_property_ui_text(prop, "Highlight Line", "Highlight the current line"); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TEXT, NULL); prop= RNA_def_property(srna, "tab_width", PROP_INT, PROP_NONE); @@ -1575,6 +1571,15 @@ static void rna_def_space_text(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Font Size", "Font size to use for displaying the text"); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TEXT, NULL); + /* functionality options */ + prop= RNA_def_property(srna, "overwrite", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_ui_text(prop, "Overwrite", "Overwrite characters when typing rather than inserting them"); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TEXT, NULL); + + prop= RNA_def_property(srna, "live_edit", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_ui_text(prop, "Live Edit", "Run python while editing"); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TEXT, NULL); + /* find */ prop= RNA_def_property(srna, "find_all", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flags", ST_FIND_ALL); @@ -1925,8 +1930,8 @@ static void rna_def_console_line(BlenderRNA *brna) RNA_def_struct_ui_text(srna, "Console Input", "Input line for the interactive console"); // XXX using non-inited "prop", uh? RNA_def_property_update(prop, NC_SPACE|ND_SPACE_CONSOLE, NULL); - prop= RNA_def_property(srna, "line", PROP_STRING, PROP_NONE); - RNA_def_property_string_funcs(prop, "rna_ConsoleLine_line_get", "rna_ConsoleLine_line_length", "rna_ConsoleLine_line_set"); + prop= RNA_def_property(srna, "body", PROP_STRING, PROP_NONE); + RNA_def_property_string_funcs(prop, "rna_ConsoleLine_body_get", "rna_ConsoleLine_body_length", "rna_ConsoleLine_body_set"); RNA_def_property_ui_text(prop, "Line", "Text in the line"); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_CONSOLE, NULL); diff --git a/source/blender/makesrna/intern/rna_text.c b/source/blender/makesrna/intern/rna_text.c index d8651e5d05d..e8d1422d045 100644 --- a/source/blender/makesrna/intern/rna_text.c +++ b/source/blender/makesrna/intern/rna_text.c @@ -76,7 +76,7 @@ static int rna_Text_modified_get(PointerRNA *ptr) return text_file_modified(text); } -static void rna_TextLine_line_get(PointerRNA *ptr, char *value) +static void rna_TextLine_body_get(PointerRNA *ptr, char *value) { TextLine *line= (TextLine*)ptr->data; @@ -86,21 +86,23 @@ static void rna_TextLine_line_get(PointerRNA *ptr, char *value) strcpy(value, ""); } -static int rna_TextLine_line_length(PointerRNA *ptr) +static int rna_TextLine_body_length(PointerRNA *ptr) { TextLine *line= (TextLine*)ptr->data; return line->len; } -static void rna_TextLine_line_set(PointerRNA *ptr, const char *value) +static void rna_TextLine_body_set(PointerRNA *ptr, const char *value) { TextLine *line= (TextLine*)ptr->data; + int len= strlen(value); if(line->line) MEM_freeN(line->line); - - line->line= BLI_strdup(value); - line->len= strlen(line->line); + + line->line= MEM_mallocN((len + 1) * sizeof(char), "rna_text_body"); + line->len= len; + memcpy(line->line, value, len + 1); if(line->format) { MEM_freeN(line->format); @@ -118,8 +120,8 @@ static void rna_def_text_line(BlenderRNA *brna) srna = RNA_def_struct(brna, "TextLine", NULL); RNA_def_struct_ui_text(srna, "Text Line", "Line of text in a Text datablock"); - prop= RNA_def_property(srna, "line", PROP_STRING, PROP_NONE); - RNA_def_property_string_funcs(prop, "rna_TextLine_line_get", "rna_TextLine_line_length", "rna_TextLine_line_set"); + prop= RNA_def_property(srna, "body", PROP_STRING, PROP_NONE); + RNA_def_property_string_funcs(prop, "rna_TextLine_body_get", "rna_TextLine_body_length", "rna_TextLine_body_set"); RNA_def_property_ui_text(prop, "Line", "Text in the line"); RNA_def_property_update(prop, NC_TEXT|NA_EDITED, NULL); } diff --git a/source/blender/modifiers/MOD_modifiertypes.h b/source/blender/modifiers/MOD_modifiertypes.h index bd10b4aa6fc..a792b163eea 100644 --- a/source/blender/modifiers/MOD_modifiertypes.h +++ b/source/blender/modifiers/MOD_modifiertypes.h @@ -18,7 +18,7 @@ * * 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. + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Contributor(s): Ben Batt * diff --git a/source/blender/modifiers/Makefile b/source/blender/modifiers/Makefile index 4b2c4b0a036..ddcddb90186 100644 --- a/source/blender/modifiers/Makefile +++ b/source/blender/modifiers/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/modifiers/intern/MOD_none.c b/source/blender/modifiers/intern/MOD_none.c index 3a5dc4dce33..0c749b79f5a 100644 --- a/source/blender/modifiers/intern/MOD_none.c +++ b/source/blender/modifiers/intern/MOD_none.c @@ -18,7 +18,7 @@ * * 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. + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * The Original Code is Copyright (C) 2005 Blender Foundation. * All rights reserved. diff --git a/source/blender/modifiers/intern/MOD_util.c b/source/blender/modifiers/intern/MOD_util.c index 24b907dcfa8..59612d0cdae 100644 --- a/source/blender/modifiers/intern/MOD_util.c +++ b/source/blender/modifiers/intern/MOD_util.c @@ -18,7 +18,7 @@ * * 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. + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * The Original Code is Copyright (C) 2005 Blender Foundation. * All rights reserved. diff --git a/source/blender/modifiers/intern/MOD_util.h b/source/blender/modifiers/intern/MOD_util.h index 9592a3ce123..5750e042199 100644 --- a/source/blender/modifiers/intern/MOD_util.h +++ b/source/blender/modifiers/intern/MOD_util.h @@ -18,7 +18,7 @@ * * 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. + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Contributor(s): Ben Batt * diff --git a/source/blender/modifiers/intern/Makefile b/source/blender/modifiers/intern/Makefile index 849bc11662e..94ea068a1bc 100644 --- a/source/blender/modifiers/intern/Makefile +++ b/source/blender/modifiers/intern/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/nodes/Makefile b/source/blender/nodes/Makefile index a173908aeb1..f997e640a17 100644 --- a/source/blender/nodes/Makefile +++ b/source/blender/nodes/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) Blender Foundation. # All rights reserved. diff --git a/source/blender/nodes/intern/CMP_nodes/Makefile b/source/blender/nodes/intern/CMP_nodes/Makefile index 5e8753570af..5e97864fb95 100644 --- a/source/blender/nodes/intern/CMP_nodes/Makefile +++ b/source/blender/nodes/intern/CMP_nodes/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/nodes/intern/Makefile b/source/blender/nodes/intern/Makefile index 08f4b936c76..1ffc09bce2c 100644 --- a/source/blender/nodes/intern/Makefile +++ b/source/blender/nodes/intern/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/nodes/intern/SHD_nodes/Makefile b/source/blender/nodes/intern/SHD_nodes/Makefile index b6b21d5f5f8..666ffd4a7d3 100644 --- a/source/blender/nodes/intern/SHD_nodes/Makefile +++ b/source/blender/nodes/intern/SHD_nodes/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/nodes/intern/TEX_nodes/Makefile b/source/blender/nodes/intern/TEX_nodes/Makefile index f42660bd562..74eabe7932a 100644 --- a/source/blender/nodes/intern/TEX_nodes/Makefile +++ b/source/blender/nodes/intern/TEX_nodes/Makefile @@ -18,7 +18,7 @@ # # 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. +# 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. diff --git a/source/blender/python/Makefile b/source/blender/python/Makefile index 8e2a04b8449..43b6f91369b 100644 --- a/source/blender/python/Makefile +++ b/source/blender/python/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) Blender Foundation. # All rights reserved. diff --git a/source/blender/python/doc/sphinx_doc_gen.py b/source/blender/python/doc/sphinx_doc_gen.py index 3dd61a32676..1355d2508a5 100644 --- a/source/blender/python/doc/sphinx_doc_gen.py +++ b/source/blender/python/doc/sphinx_doc_gen.py @@ -45,6 +45,7 @@ import rna_info reload(rna_info) # lame, python wont give some access +ClassMethodDescriptorType = type(dict.__dict__['fromkeys']) MethodDescriptorType = type(dict.get) GetSetDescriptorType = type(int.real) @@ -153,10 +154,10 @@ def py_descr2sphinx(ident, fw, descr, module_name, type_name, identifier): if type(descr) == GetSetDescriptorType: fw(ident + ".. attribute:: %s\n\n" % identifier) write_indented_lines(ident + " ", fw, doc, False) - elif type(descr) == MethodDescriptorType: # GetSetDescriptorType's are not documented yet + elif type(descr) in (MethodDescriptorType, ClassMethodDescriptorType): write_indented_lines(ident, fw, doc, False) else: - raise TypeError("type was not GetSetDescriptorType or MethodDescriptorType") + raise TypeError("type was not GetSetDescriptorType, MethodDescriptorType or ClassMethodDescriptorType") write_example_ref(ident, fw, module_name + "." + type_name + "." + identifier) fw("\n") @@ -270,7 +271,11 @@ def pymodule2sphinx(BASEPATH, module_name, module, title): descr_items = [(key, descr) for key, descr in sorted(value.__dict__.items()) if not key.startswith("__")] for key, descr in descr_items: - if type(descr) == MethodDescriptorType: # GetSetDescriptorType's are not documented yet + if type(descr) == ClassMethodDescriptorType: + py_descr2sphinx(" ", fw, descr, module_name, type_name, key) + + for key, descr in descr_items: + if type(descr) == MethodDescriptorType: py_descr2sphinx(" ", fw, descr, module_name, type_name, key) for key, descr in descr_items: diff --git a/source/blender/python/generic/Makefile b/source/blender/python/generic/Makefile index dc674478dab..0df98046f63 100644 --- a/source/blender/python/generic/Makefile +++ b/source/blender/python/generic/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/python/generic/mathutils.c b/source/blender/python/generic/mathutils.c index 2bfd9a6d0c6..ada5bac8c2a 100644 --- a/source/blender/python/generic/mathutils.c +++ b/source/blender/python/generic/mathutils.c @@ -46,6 +46,13 @@ * - Vector.toTrackQuat --> Vector.to_track_quat * - Quaternion * Quaternion --> cross product (not dot product) * + * moved into class functions. + * - Mathutils.RotationMatrix -> mathutils.Matrix.Rotation + * - Mathutils.ScaleMatrix -> mathutils.Matrix.Scale + * - Mathutils.ShearMatrix -> mathutils.Matrix.Shear + * - Mathutils.TranslationMatrix -> mathutils.Matrix.Translation + * - Mathutils.OrthoProjectionMatrix -> mathutils.Matrix.OrthoProjection + * * Moved to Geometry module: Intersect, TriangleArea, TriangleNormal, QuadNormal, LineIntersect */ @@ -94,434 +101,7 @@ int mathutils_array_parse(float *array, int array_min, int array_max, PyObject * } //----------------------------------MATRIX FUNCTIONS-------------------- -//----------------------------------mathutils.RotationMatrix() ---------- -//mat is a 1D array of floats - row[0][0],row[0][1], row[1][0], etc. -static char M_Mathutils_RotationMatrix_doc[] = -".. function:: RotationMatrix(angle, size, axis)\n" -"\n" -" Create a matrix representing a rotation.\n" -"\n" -" :arg angle: The angle of rotation desired, in radians.\n" -" :type angle: float\n" -" :arg size: The size of the rotation matrix to construct [2, 4].\n" -" :type size: int\n" -" :arg axis: a string in ['X', 'Y', 'Z'] or a 3D Vector Object (optional when size is 2).\n" -" :type axis: string or :class:`Vector`\n" -" :return: A new rotation matrix.\n" -" :rtype: :class:`Matrix`\n"; - -static PyObject *M_Mathutils_RotationMatrix(PyObject * self, PyObject * args) -{ - VectorObject *vec= NULL; - char *axis= NULL; - int matSize; - float angle = 0.0f; - 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}; - - if(!PyArg_ParseTuple(args, "fi|O", &angle, &matSize, &vec)) { - PyErr_SetString(PyExc_TypeError, "mathutils.RotationMatrix(angle, size, axis): expected float int and a string or vector\n"); - return NULL; - } - - if(vec && !VectorObject_Check(vec)) { - axis= _PyUnicode_AsString((PyObject *)vec); - if(axis==NULL || axis[0]=='\0' || axis[1]!='\0' || axis[0] < 'X' || axis[0] > 'Z') { - PyErr_SetString(PyExc_TypeError, "mathutils.RotationMatrix(): 3rd argument axis value must be a 3D vector or a string in 'X', 'Y', 'Z'\n"); - return NULL; - } - else { - /* use the string */ - vec= NULL; - } - } - - while (angle<-(Py_PI*2)) - angle+=(Py_PI*2); - while (angle>(Py_PI*2)) - angle-=(Py_PI*2); - - if(matSize != 2 && matSize != 3 && matSize != 4) { - PyErr_SetString(PyExc_AttributeError, "mathutils.RotationMatrix(): can only return a 2x2 3x3 or 4x4 matrix\n"); - return NULL; - } - if(matSize == 2 && (vec != NULL)) { - PyErr_SetString(PyExc_AttributeError, "mathutils.RotationMatrix(): cannot create a 2x2 rotation matrix around arbitrary axis\n"); - return NULL; - } - if((matSize == 3 || matSize == 4) && (axis == NULL) && (vec == NULL)) { - PyErr_SetString(PyExc_AttributeError, "mathutils.RotationMatrix(): please choose an axis of rotation for 3d and 4d matrices\n"); - return NULL; - } - if(vec) { - if(vec->size != 3) { - PyErr_SetString(PyExc_AttributeError, "mathutils.RotationMatrix(): the vector axis must be a 3D vector\n"); - return NULL; - } - - if(!BaseMath_ReadCallback(vec)) - return NULL; - - } - /* check for valid vector/axis above */ - if(vec) { - axis_angle_to_mat3( (float (*)[3])mat,vec->vec, angle); - } - else if(matSize == 2) { - //2D rotation matrix - mat[0] = (float) cos (angle); - mat[1] = (float) sin (angle); - mat[2] = -((float) sin(angle)); - mat[3] = (float) cos(angle); - } else if(strcmp(axis, "X") == 0) { - //rotation around X - mat[0] = 1.0f; - mat[4] = (float) cos(angle); - mat[5] = (float) sin(angle); - mat[7] = -((float) sin(angle)); - mat[8] = (float) cos(angle); - } else if(strcmp(axis, "Y") == 0) { - //rotation around Y - mat[0] = (float) cos(angle); - mat[2] = -((float) sin(angle)); - mat[4] = 1.0f; - mat[6] = (float) sin(angle); - mat[8] = (float) cos(angle); - } else if(strcmp(axis, "Z") == 0) { - //rotation around Z - mat[0] = (float) cos(angle); - mat[1] = (float) sin(angle); - mat[3] = -((float) sin(angle)); - mat[4] = (float) cos(angle); - mat[8] = 1.0f; - } - else { - /* should never get here */ - PyErr_SetString(PyExc_AttributeError, "mathutils.RotationMatrix(): unknown error\n"); - return NULL; - } - - if(matSize == 4) { - //resize matrix - mat[10] = mat[8]; - mat[9] = mat[7]; - mat[8] = mat[6]; - mat[7] = 0.0f; - mat[6] = mat[5]; - mat[5] = mat[4]; - mat[4] = mat[3]; - mat[3] = 0.0f; - } - //pass to matrix creation - return newMatrixObject(mat, matSize, matSize, Py_NEW, NULL); -} - -static char M_Mathutils_TranslationMatrix_doc[] = -".. function:: TranslationMatrix(vector)\n" -"\n" -" Create a matrix representing a translation.\n" -"\n" -" :arg vector: The translation vector.\n" -" :type vector: :class:`Vector`\n" -" :return: An identity matrix with a translation.\n" -" :rtype: :class:`Matrix`\n"; - -static PyObject *M_Mathutils_TranslationMatrix(PyObject * self, VectorObject * vec) -{ - 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}; - - if(!VectorObject_Check(vec)) { - PyErr_SetString(PyExc_TypeError, "mathutils.TranslationMatrix(): expected vector\n"); - return NULL; - } - if(vec->size != 3 && vec->size != 4) { - PyErr_SetString(PyExc_TypeError, "mathutils.TranslationMatrix(): vector must be 3D or 4D\n"); - return NULL; - } - - if(!BaseMath_ReadCallback(vec)) - return NULL; - - //create a identity matrix and add translation - unit_m4((float(*)[4]) mat); - mat[12] = vec->vec[0]; - mat[13] = vec->vec[1]; - mat[14] = vec->vec[2]; - - return newMatrixObject(mat, 4, 4, Py_NEW, NULL); -} -//----------------------------------mathutils.ScaleMatrix() ------------- -//mat is a 1D array of floats - row[0][0],row[0][1], row[1][0], etc. -static char M_Mathutils_ScaleMatrix_doc[] = -".. function:: ScaleMatrix(factor, size, axis)\n" -"\n" -" Create a matrix representing a scaling.\n" -"\n" -" :arg factor: The factor of scaling to apply.\n" -" :type factor: float\n" -" :arg size: The size of the scale matrix to construct [2, 4].\n" -" :type size: int\n" -" :arg axis: Direction to influence scale. (optional).\n" -" :type axis: :class:`Vector`\n" -" :return: A new scale matrix.\n" -" :rtype: :class:`Matrix`\n"; - -static PyObject *M_Mathutils_ScaleMatrix(PyObject * self, PyObject * args) -{ - VectorObject *vec = NULL; - float norm = 0.0f, factor; - int matSize, x; - 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}; - - if(!PyArg_ParseTuple(args, "fi|O!", &factor, &matSize, &vector_Type, &vec)) { - PyErr_SetString(PyExc_TypeError, "mathutils.ScaleMatrix(): expected float int and optional vector\n"); - return NULL; - } - if(matSize != 2 && matSize != 3 && matSize != 4) { - PyErr_SetString(PyExc_AttributeError, "mathutils.ScaleMatrix(): can only return a 2x2 3x3 or 4x4 matrix\n"); - return NULL; - } - if(vec) { - if(vec->size > 2 && matSize == 2) { - PyErr_SetString(PyExc_AttributeError, "mathutils.ScaleMatrix(): please use 2D vectors when scaling in 2D\n"); - return NULL; - } - - if(!BaseMath_ReadCallback(vec)) - return NULL; - - } - if(vec == NULL) { //scaling along axis - if(matSize == 2) { - mat[0] = factor; - mat[3] = factor; - } else { - mat[0] = factor; - mat[4] = factor; - mat[8] = factor; - } - } else { //scaling in arbitrary direction - //normalize arbitrary axis - for(x = 0; x < vec->size; x++) { - norm += vec->vec[x] * vec->vec[x]; - } - norm = (float) sqrt(norm); - for(x = 0; x < vec->size; x++) { - vec->vec[x] /= norm; - } - if(matSize == 2) { - mat[0] = 1 +((factor - 1) *(vec->vec[0] * vec->vec[0])); - mat[1] =((factor - 1) *(vec->vec[0] * vec->vec[1])); - mat[2] =((factor - 1) *(vec->vec[0] * vec->vec[1])); - mat[3] = 1 + ((factor - 1) *(vec->vec[1] * vec->vec[1])); - } else { - mat[0] = 1 + ((factor - 1) *(vec->vec[0] * vec->vec[0])); - mat[1] =((factor - 1) *(vec->vec[0] * vec->vec[1])); - mat[2] =((factor - 1) *(vec->vec[0] * vec->vec[2])); - mat[3] =((factor - 1) *(vec->vec[0] * vec->vec[1])); - mat[4] = 1 + ((factor - 1) *(vec->vec[1] * vec->vec[1])); - mat[5] =((factor - 1) *(vec->vec[1] * vec->vec[2])); - mat[6] =((factor - 1) *(vec->vec[0] * vec->vec[2])); - mat[7] =((factor - 1) *(vec->vec[1] * vec->vec[2])); - mat[8] = 1 + ((factor - 1) *(vec->vec[2] * vec->vec[2])); - } - } - if(matSize == 4) { - //resize matrix - mat[10] = mat[8]; - mat[9] = mat[7]; - mat[8] = mat[6]; - mat[7] = 0.0f; - mat[6] = mat[5]; - mat[5] = mat[4]; - mat[4] = mat[3]; - mat[3] = 0.0f; - } - //pass to matrix creation - return newMatrixObject(mat, matSize, matSize, Py_NEW, NULL); -} -//----------------------------------mathutils.OrthoProjectionMatrix() --- -//mat is a 1D array of floats - row[0][0],row[0][1], row[1][0], etc. -static char M_Mathutils_OrthoProjectionMatrix_doc[] = -".. function:: OrthoProjectionMatrix(plane, size, axis)\n" -"\n" -" Create a matrix to represent an orthographic projection.\n" -"\n" -" :arg plane: Can be any of the following: ['X', 'Y', 'XY', 'XZ', 'YZ', 'R'], where a single axis is for a 2D matrix and 'R' requires axis is given.\n" -" :type plane: string\n" -" :arg size: The size of the projection matrix to construct [2, 4].\n" -" :type size: int\n" -" :arg axis: Arbitrary perpendicular plane vector (optional).\n" -" :type axis: :class:`Vector`\n" -" :return: A new projection matrix.\n" -" :rtype: :class:`Matrix`\n"; -static PyObject *M_Mathutils_OrthoProjectionMatrix(PyObject * self, PyObject * args) -{ - VectorObject *vec = NULL; - char *plane; - int matSize, x; - float norm = 0.0f; - 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}; - - if(!PyArg_ParseTuple(args, "si|O!", &plane, &matSize, &vector_Type, &vec)) { - PyErr_SetString(PyExc_TypeError, "mathutils.OrthoProjectionMatrix(): expected string and int and optional vector\n"); - return NULL; - } - if(matSize != 2 && matSize != 3 && matSize != 4) { - PyErr_SetString(PyExc_AttributeError,"mathutils.OrthoProjectionMatrix(): can only return a 2x2 3x3 or 4x4 matrix\n"); - return NULL; - } - if(vec) { - if(vec->size > 2 && matSize == 2) { - PyErr_SetString(PyExc_AttributeError, "mathutils.OrthoProjectionMatrix(): please use 2D vectors when scaling in 2D\n"); - return NULL; - } - - if(!BaseMath_ReadCallback(vec)) - return NULL; - - } - if(vec == NULL) { //ortho projection onto cardinal plane - if((strcmp(plane, "X") == 0) && matSize == 2) { - mat[0] = 1.0f; - } else if((strcmp(plane, "Y") == 0) && matSize == 2) { - mat[3] = 1.0f; - } else if((strcmp(plane, "XY") == 0) && matSize > 2) { - mat[0] = 1.0f; - mat[4] = 1.0f; - } else if((strcmp(plane, "XZ") == 0) && matSize > 2) { - mat[0] = 1.0f; - mat[8] = 1.0f; - } else if((strcmp(plane, "YZ") == 0) && matSize > 2) { - mat[4] = 1.0f; - mat[8] = 1.0f; - } else { - PyErr_SetString(PyExc_AttributeError, "mathutils.OrthoProjectionMatrix(): unknown plane - expected: X, Y, XY, XZ, YZ\n"); - return NULL; - } - } else { //arbitrary plane - //normalize arbitrary axis - for(x = 0; x < vec->size; x++) { - norm += vec->vec[x] * vec->vec[x]; - } - norm = (float) sqrt(norm); - for(x = 0; x < vec->size; x++) { - vec->vec[x] /= norm; - } - if((strcmp(plane, "R") == 0) && matSize == 2) { - mat[0] = 1 - (vec->vec[0] * vec->vec[0]); - mat[1] = -(vec->vec[0] * vec->vec[1]); - mat[2] = -(vec->vec[0] * vec->vec[1]); - mat[3] = 1 - (vec->vec[1] * vec->vec[1]); - } else if((strcmp(plane, "R") == 0) && matSize > 2) { - mat[0] = 1 - (vec->vec[0] * vec->vec[0]); - mat[1] = -(vec->vec[0] * vec->vec[1]); - mat[2] = -(vec->vec[0] * vec->vec[2]); - mat[3] = -(vec->vec[0] * vec->vec[1]); - mat[4] = 1 - (vec->vec[1] * vec->vec[1]); - mat[5] = -(vec->vec[1] * vec->vec[2]); - mat[6] = -(vec->vec[0] * vec->vec[2]); - mat[7] = -(vec->vec[1] * vec->vec[2]); - mat[8] = 1 - (vec->vec[2] * vec->vec[2]); - } else { - PyErr_SetString(PyExc_AttributeError, "mathutils.OrthoProjectionMatrix(): unknown plane - expected: 'r' expected for axis designation\n"); - return NULL; - } - } - if(matSize == 4) { - //resize matrix - mat[10] = mat[8]; - mat[9] = mat[7]; - mat[8] = mat[6]; - mat[7] = 0.0f; - mat[6] = mat[5]; - mat[5] = mat[4]; - mat[4] = mat[3]; - mat[3] = 0.0f; - } - //pass to matrix creation - return newMatrixObject(mat, matSize, matSize, Py_NEW, NULL); -} - -static char M_Mathutils_ShearMatrix_doc[] = -".. function:: ShearMatrix(plane, factor, size)\n" -"\n" -" Create a matrix to represent an shear transformation.\n" -"\n" -" :arg plane: Can be any of the following: ['X', 'Y', 'XY', 'XZ', 'YZ'], where a single axis is for a 2D matrix.\n" -" :type plane: string\n" -" :arg factor: The factor of shear to apply.\n" -" :type factor: float\n" -" :arg size: The size of the shear matrix to construct [2, 4].\n" -" :type size: int\n" -" :return: A new shear matrix.\n" -" :rtype: :class:`Matrix`\n"; - -static PyObject *M_Mathutils_ShearMatrix(PyObject * self, PyObject * args) -{ - int matSize; - char *plane; - float factor; - 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}; - - if(!PyArg_ParseTuple(args, "sfi", &plane, &factor, &matSize)) { - PyErr_SetString(PyExc_TypeError,"mathutils.ShearMatrix(): expected string float and int\n"); - return NULL; - } - if(matSize != 2 && matSize != 3 && matSize != 4) { - PyErr_SetString(PyExc_AttributeError,"mathutils.ShearMatrix(): can only return a 2x2 3x3 or 4x4 matrix\n"); - return NULL; - } - - if((strcmp(plane, "X") == 0) - && matSize == 2) { - mat[0] = 1.0f; - mat[2] = factor; - mat[3] = 1.0f; - } else if((strcmp(plane, "Y") == 0) && matSize == 2) { - mat[0] = 1.0f; - mat[1] = factor; - mat[3] = 1.0f; - } else if((strcmp(plane, "XY") == 0) && matSize > 2) { - mat[0] = 1.0f; - mat[4] = 1.0f; - mat[6] = factor; - mat[7] = factor; - } else if((strcmp(plane, "XZ") == 0) && matSize > 2) { - mat[0] = 1.0f; - mat[3] = factor; - mat[4] = 1.0f; - mat[5] = factor; - mat[8] = 1.0f; - } else if((strcmp(plane, "YZ") == 0) && matSize > 2) { - mat[0] = 1.0f; - mat[1] = factor; - mat[2] = factor; - mat[4] = 1.0f; - mat[8] = 1.0f; - } else { - PyErr_SetString(PyExc_AttributeError, "mathutils.ShearMatrix(): expected: x, y, xy, xz, yz or wrong matrix size for shearing plane\n"); - return NULL; - } - if(matSize == 4) { - //resize matrix - mat[10] = mat[8]; - mat[9] = mat[7]; - mat[8] = mat[6]; - mat[7] = 0.0f; - mat[6] = mat[5]; - mat[5] = mat[4]; - mat[4] = mat[3]; - mat[3] = 0.0f; - } - //pass to matrix creation - return newMatrixObject(mat, matSize, matSize, Py_NEW, NULL); -} /* Utility functions */ @@ -647,11 +227,6 @@ void BaseMathObject_dealloc(BaseMathObject * self) /*----------------------------MODULE INIT-------------------------*/ struct PyMethodDef M_Mathutils_methods[] = { - {"RotationMatrix", (PyCFunction) M_Mathutils_RotationMatrix, METH_VARARGS, M_Mathutils_RotationMatrix_doc}, - {"ScaleMatrix", (PyCFunction) M_Mathutils_ScaleMatrix, METH_VARARGS, M_Mathutils_ScaleMatrix_doc}, - {"ShearMatrix", (PyCFunction) M_Mathutils_ShearMatrix, METH_VARARGS, M_Mathutils_ShearMatrix_doc}, - {"TranslationMatrix", (PyCFunction) M_Mathutils_TranslationMatrix, METH_O, M_Mathutils_TranslationMatrix_doc}, - {"OrthoProjectionMatrix", (PyCFunction) M_Mathutils_OrthoProjectionMatrix, METH_VARARGS, M_Mathutils_OrthoProjectionMatrix_doc}, {NULL, NULL, 0, NULL} }; diff --git a/source/blender/python/generic/mathutils_matrix.c b/source/blender/python/generic/mathutils_matrix.c index d54ee9a30ec..24239e1f541 100644 --- a/source/blender/python/generic/mathutils_matrix.c +++ b/source/blender/python/generic/mathutils_matrix.c @@ -181,6 +181,438 @@ static PyObject *Matrix_new(PyTypeObject *type, PyObject *args, PyObject *kwds) return newMatrixObject(matrix, argSize, seqSize, Py_NEW, NULL); } +/*-----------------------CLASS-METHODS----------------------------*/ + +//----------------------------------mathutils.RotationMatrix() ---------- +//mat is a 1D array of floats - row[0][0],row[0][1], row[1][0], etc. +static char C_Matrix_Rotation_doc[] = +".. classmethod:: Rotation(angle, size, axis)\n" +"\n" +" Create a matrix representing a rotation.\n" +"\n" +" :arg angle: The angle of rotation desired, in radians.\n" +" :type angle: float\n" +" :arg size: The size of the rotation matrix to construct [2, 4].\n" +" :type size: int\n" +" :arg axis: a string in ['X', 'Y', 'Z'] or a 3D Vector Object (optional when size is 2).\n" +" :type axis: string or :class:`Vector`\n" +" :return: A new rotation matrix.\n" +" :rtype: :class:`Matrix`\n"; + +static PyObject *C_Matrix_Rotation(PyObject *cls, PyObject *args) +{ + VectorObject *vec= NULL; + char *axis= NULL; + int matSize; + float angle = 0.0f; + 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}; + + if(!PyArg_ParseTuple(args, "fi|O", &angle, &matSize, &vec)) { + PyErr_SetString(PyExc_TypeError, "mathutils.RotationMatrix(angle, size, axis): expected float int and a string or vector\n"); + return NULL; + } + + if(vec && !VectorObject_Check(vec)) { + axis= _PyUnicode_AsString((PyObject *)vec); + if(axis==NULL || axis[0]=='\0' || axis[1]!='\0' || axis[0] < 'X' || axis[0] > 'Z') { + PyErr_SetString(PyExc_TypeError, "mathutils.RotationMatrix(): 3rd argument axis value must be a 3D vector or a string in 'X', 'Y', 'Z'\n"); + return NULL; + } + else { + /* use the string */ + vec= NULL; + } + } + + while (angle<-(Py_PI*2)) + angle+=(Py_PI*2); + while (angle>(Py_PI*2)) + angle-=(Py_PI*2); + + if(matSize != 2 && matSize != 3 && matSize != 4) { + PyErr_SetString(PyExc_AttributeError, "mathutils.RotationMatrix(): can only return a 2x2 3x3 or 4x4 matrix\n"); + return NULL; + } + if(matSize == 2 && (vec != NULL)) { + PyErr_SetString(PyExc_AttributeError, "mathutils.RotationMatrix(): cannot create a 2x2 rotation matrix around arbitrary axis\n"); + return NULL; + } + if((matSize == 3 || matSize == 4) && (axis == NULL) && (vec == NULL)) { + PyErr_SetString(PyExc_AttributeError, "mathutils.RotationMatrix(): please choose an axis of rotation for 3d and 4d matrices\n"); + return NULL; + } + if(vec) { + if(vec->size != 3) { + PyErr_SetString(PyExc_AttributeError, "mathutils.RotationMatrix(): the vector axis must be a 3D vector\n"); + return NULL; + } + + if(!BaseMath_ReadCallback(vec)) + return NULL; + + } + + /* check for valid vector/axis above */ + if(vec) { + axis_angle_to_mat3( (float (*)[3])mat,vec->vec, angle); + } + else if(matSize == 2) { + //2D rotation matrix + mat[0] = (float) cos (angle); + mat[1] = (float) sin (angle); + mat[2] = -((float) sin(angle)); + mat[3] = (float) cos(angle); + } else if(strcmp(axis, "X") == 0) { + //rotation around X + mat[0] = 1.0f; + mat[4] = (float) cos(angle); + mat[5] = (float) sin(angle); + mat[7] = -((float) sin(angle)); + mat[8] = (float) cos(angle); + } else if(strcmp(axis, "Y") == 0) { + //rotation around Y + mat[0] = (float) cos(angle); + mat[2] = -((float) sin(angle)); + mat[4] = 1.0f; + mat[6] = (float) sin(angle); + mat[8] = (float) cos(angle); + } else if(strcmp(axis, "Z") == 0) { + //rotation around Z + mat[0] = (float) cos(angle); + mat[1] = (float) sin(angle); + mat[3] = -((float) sin(angle)); + mat[4] = (float) cos(angle); + mat[8] = 1.0f; + } + else { + /* should never get here */ + PyErr_SetString(PyExc_AttributeError, "mathutils.RotationMatrix(): unknown error\n"); + return NULL; + } + + if(matSize == 4) { + //resize matrix + mat[10] = mat[8]; + mat[9] = mat[7]; + mat[8] = mat[6]; + mat[7] = 0.0f; + mat[6] = mat[5]; + mat[5] = mat[4]; + mat[4] = mat[3]; + mat[3] = 0.0f; + } + //pass to matrix creation + return newMatrixObject(mat, matSize, matSize, Py_NEW, (PyTypeObject *)cls); +} + + +static char C_Matrix_Translation_doc[] = +".. classmethod:: Translation(vector)\n" +"\n" +" Create a matrix representing a translation.\n" +"\n" +" :arg vector: The translation vector.\n" +" :type vector: :class:`Vector`\n" +" :return: An identity matrix with a translation.\n" +" :rtype: :class:`Matrix`\n"; + +static PyObject *C_Matrix_Translation(PyObject *cls, VectorObject * vec) +{ + 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}; + + if(!VectorObject_Check(vec)) { + PyErr_SetString(PyExc_TypeError, "mathutils.TranslationMatrix(): expected vector\n"); + return NULL; + } + if(vec->size != 3 && vec->size != 4) { + PyErr_SetString(PyExc_TypeError, "mathutils.TranslationMatrix(): vector must be 3D or 4D\n"); + return NULL; + } + + if(!BaseMath_ReadCallback(vec)) + return NULL; + + //create a identity matrix and add translation + unit_m4((float(*)[4]) mat); + mat[12] = vec->vec[0]; + mat[13] = vec->vec[1]; + mat[14] = vec->vec[2]; + + return newMatrixObject(mat, 4, 4, Py_NEW, (PyTypeObject *)cls); +} +//----------------------------------mathutils.ScaleMatrix() ------------- +//mat is a 1D array of floats - row[0][0],row[0][1], row[1][0], etc. +static char C_Matrix_Scale_doc[] = +".. classmethod:: Scale(factor, size, axis)\n" +"\n" +" Create a matrix representing a scaling.\n" +"\n" +" :arg factor: The factor of scaling to apply.\n" +" :type factor: float\n" +" :arg size: The size of the scale matrix to construct [2, 4].\n" +" :type size: int\n" +" :arg axis: Direction to influence scale. (optional).\n" +" :type axis: :class:`Vector`\n" +" :return: A new scale matrix.\n" +" :rtype: :class:`Matrix`\n"; + +static PyObject *C_Matrix_Scale(PyObject *cls, PyObject *args) +{ + VectorObject *vec = NULL; + float norm = 0.0f, factor; + int matSize, x; + 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}; + + if(!PyArg_ParseTuple(args, "fi|O!", &factor, &matSize, &vector_Type, &vec)) { + PyErr_SetString(PyExc_TypeError, "mathutils.ScaleMatrix(): expected float int and optional vector\n"); + return NULL; + } + if(matSize != 2 && matSize != 3 && matSize != 4) { + PyErr_SetString(PyExc_AttributeError, "mathutils.ScaleMatrix(): can only return a 2x2 3x3 or 4x4 matrix\n"); + return NULL; + } + if(vec) { + if(vec->size > 2 && matSize == 2) { + PyErr_SetString(PyExc_AttributeError, "mathutils.ScaleMatrix(): please use 2D vectors when scaling in 2D\n"); + return NULL; + } + + if(!BaseMath_ReadCallback(vec)) + return NULL; + + } + if(vec == NULL) { //scaling along axis + if(matSize == 2) { + mat[0] = factor; + mat[3] = factor; + } else { + mat[0] = factor; + mat[4] = factor; + mat[8] = factor; + } + } else { //scaling in arbitrary direction + //normalize arbitrary axis + for(x = 0; x < vec->size; x++) { + norm += vec->vec[x] * vec->vec[x]; + } + norm = (float) sqrt(norm); + for(x = 0; x < vec->size; x++) { + vec->vec[x] /= norm; + } + if(matSize == 2) { + mat[0] = 1 +((factor - 1) *(vec->vec[0] * vec->vec[0])); + mat[1] =((factor - 1) *(vec->vec[0] * vec->vec[1])); + mat[2] =((factor - 1) *(vec->vec[0] * vec->vec[1])); + mat[3] = 1 + ((factor - 1) *(vec->vec[1] * vec->vec[1])); + } else { + mat[0] = 1 + ((factor - 1) *(vec->vec[0] * vec->vec[0])); + mat[1] =((factor - 1) *(vec->vec[0] * vec->vec[1])); + mat[2] =((factor - 1) *(vec->vec[0] * vec->vec[2])); + mat[3] =((factor - 1) *(vec->vec[0] * vec->vec[1])); + mat[4] = 1 + ((factor - 1) *(vec->vec[1] * vec->vec[1])); + mat[5] =((factor - 1) *(vec->vec[1] * vec->vec[2])); + mat[6] =((factor - 1) *(vec->vec[0] * vec->vec[2])); + mat[7] =((factor - 1) *(vec->vec[1] * vec->vec[2])); + mat[8] = 1 + ((factor - 1) *(vec->vec[2] * vec->vec[2])); + } + } + if(matSize == 4) { + //resize matrix + mat[10] = mat[8]; + mat[9] = mat[7]; + mat[8] = mat[6]; + mat[7] = 0.0f; + mat[6] = mat[5]; + mat[5] = mat[4]; + mat[4] = mat[3]; + mat[3] = 0.0f; + } + //pass to matrix creation + return newMatrixObject(mat, matSize, matSize, Py_NEW, (PyTypeObject *)cls); +} +//----------------------------------mathutils.OrthoProjectionMatrix() --- +//mat is a 1D array of floats - row[0][0],row[0][1], row[1][0], etc. +static char C_Matrix_OrthoProjection_doc[] = +".. classmethod:: OrthoProjection(plane, size, axis)\n" +"\n" +" Create a matrix to represent an orthographic projection.\n" +"\n" +" :arg plane: Can be any of the following: ['X', 'Y', 'XY', 'XZ', 'YZ', 'R'], where a single axis is for a 2D matrix and 'R' requires axis is given.\n" +" :type plane: string\n" +" :arg size: The size of the projection matrix to construct [2, 4].\n" +" :type size: int\n" +" :arg axis: Arbitrary perpendicular plane vector (optional).\n" +" :type axis: :class:`Vector`\n" +" :return: A new projection matrix.\n" +" :rtype: :class:`Matrix`\n"; +static PyObject *C_Matrix_OrthoProjection(PyObject *cls, PyObject *args) +{ + VectorObject *vec = NULL; + char *plane; + int matSize, x; + float norm = 0.0f; + 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}; + + if(!PyArg_ParseTuple(args, "si|O!", &plane, &matSize, &vector_Type, &vec)) { + PyErr_SetString(PyExc_TypeError, "mathutils.OrthoProjectionMatrix(): expected string and int and optional vector\n"); + return NULL; + } + if(matSize != 2 && matSize != 3 && matSize != 4) { + PyErr_SetString(PyExc_AttributeError,"mathutils.OrthoProjectionMatrix(): can only return a 2x2 3x3 or 4x4 matrix\n"); + return NULL; + } + if(vec) { + if(vec->size > 2 && matSize == 2) { + PyErr_SetString(PyExc_AttributeError, "mathutils.OrthoProjectionMatrix(): please use 2D vectors when scaling in 2D\n"); + return NULL; + } + + if(!BaseMath_ReadCallback(vec)) + return NULL; + + } + if(vec == NULL) { //ortho projection onto cardinal plane + if((strcmp(plane, "X") == 0) && matSize == 2) { + mat[0] = 1.0f; + } else if((strcmp(plane, "Y") == 0) && matSize == 2) { + mat[3] = 1.0f; + } else if((strcmp(plane, "XY") == 0) && matSize > 2) { + mat[0] = 1.0f; + mat[4] = 1.0f; + } else if((strcmp(plane, "XZ") == 0) && matSize > 2) { + mat[0] = 1.0f; + mat[8] = 1.0f; + } else if((strcmp(plane, "YZ") == 0) && matSize > 2) { + mat[4] = 1.0f; + mat[8] = 1.0f; + } else { + PyErr_SetString(PyExc_AttributeError, "mathutils.OrthoProjectionMatrix(): unknown plane - expected: X, Y, XY, XZ, YZ\n"); + return NULL; + } + } else { //arbitrary plane + //normalize arbitrary axis + for(x = 0; x < vec->size; x++) { + norm += vec->vec[x] * vec->vec[x]; + } + norm = (float) sqrt(norm); + for(x = 0; x < vec->size; x++) { + vec->vec[x] /= norm; + } + if((strcmp(plane, "R") == 0) && matSize == 2) { + mat[0] = 1 - (vec->vec[0] * vec->vec[0]); + mat[1] = -(vec->vec[0] * vec->vec[1]); + mat[2] = -(vec->vec[0] * vec->vec[1]); + mat[3] = 1 - (vec->vec[1] * vec->vec[1]); + } else if((strcmp(plane, "R") == 0) && matSize > 2) { + mat[0] = 1 - (vec->vec[0] * vec->vec[0]); + mat[1] = -(vec->vec[0] * vec->vec[1]); + mat[2] = -(vec->vec[0] * vec->vec[2]); + mat[3] = -(vec->vec[0] * vec->vec[1]); + mat[4] = 1 - (vec->vec[1] * vec->vec[1]); + mat[5] = -(vec->vec[1] * vec->vec[2]); + mat[6] = -(vec->vec[0] * vec->vec[2]); + mat[7] = -(vec->vec[1] * vec->vec[2]); + mat[8] = 1 - (vec->vec[2] * vec->vec[2]); + } else { + PyErr_SetString(PyExc_AttributeError, "mathutils.OrthoProjectionMatrix(): unknown plane - expected: 'r' expected for axis designation\n"); + return NULL; + } + } + if(matSize == 4) { + //resize matrix + mat[10] = mat[8]; + mat[9] = mat[7]; + mat[8] = mat[6]; + mat[7] = 0.0f; + mat[6] = mat[5]; + mat[5] = mat[4]; + mat[4] = mat[3]; + mat[3] = 0.0f; + } + //pass to matrix creation + return newMatrixObject(mat, matSize, matSize, Py_NEW, (PyTypeObject *)cls); +} + +static char C_Matrix_Shear_doc[] = +".. classmethod:: Shear(plane, factor, size)\n" +"\n" +" Create a matrix to represent an shear transformation.\n" +"\n" +" :arg plane: Can be any of the following: ['X', 'Y', 'XY', 'XZ', 'YZ'], where a single axis is for a 2D matrix.\n" +" :type plane: string\n" +" :arg factor: The factor of shear to apply.\n" +" :type factor: float\n" +" :arg size: The size of the shear matrix to construct [2, 4].\n" +" :type size: int\n" +" :return: A new shear matrix.\n" +" :rtype: :class:`Matrix`\n"; + +static PyObject *C_Matrix_Shear(PyObject *cls, PyObject *args) +{ + int matSize; + char *plane; + float factor; + 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}; + + if(!PyArg_ParseTuple(args, "sfi", &plane, &factor, &matSize)) { + PyErr_SetString(PyExc_TypeError,"mathutils.ShearMatrix(): expected string float and int\n"); + return NULL; + } + if(matSize != 2 && matSize != 3 && matSize != 4) { + PyErr_SetString(PyExc_AttributeError,"mathutils.ShearMatrix(): can only return a 2x2 3x3 or 4x4 matrix\n"); + return NULL; + } + + if((strcmp(plane, "X") == 0) + && matSize == 2) { + mat[0] = 1.0f; + mat[2] = factor; + mat[3] = 1.0f; + } else if((strcmp(plane, "Y") == 0) && matSize == 2) { + mat[0] = 1.0f; + mat[1] = factor; + mat[3] = 1.0f; + } else if((strcmp(plane, "XY") == 0) && matSize > 2) { + mat[0] = 1.0f; + mat[4] = 1.0f; + mat[6] = factor; + mat[7] = factor; + } else if((strcmp(plane, "XZ") == 0) && matSize > 2) { + mat[0] = 1.0f; + mat[3] = factor; + mat[4] = 1.0f; + mat[5] = factor; + mat[8] = 1.0f; + } else if((strcmp(plane, "YZ") == 0) && matSize > 2) { + mat[0] = 1.0f; + mat[1] = factor; + mat[2] = factor; + mat[4] = 1.0f; + mat[8] = 1.0f; + } else { + PyErr_SetString(PyExc_AttributeError, "mathutils.ShearMatrix(): expected: x, y, xy, xz, yz or wrong matrix size for shearing plane\n"); + return NULL; + } + if(matSize == 4) { + //resize matrix + mat[10] = mat[8]; + mat[9] = mat[7]; + mat[8] = mat[6]; + mat[7] = 0.0f; + mat[6] = mat[5]; + mat[5] = mat[4]; + mat[4] = mat[3]; + mat[3] = 0.0f; + } + //pass to matrix creation + return newMatrixObject(mat, matSize, matSize, Py_NEW, (PyTypeObject *)cls); +} + /* assumes rowsize == colsize is checked and the read callback has run */ static float matrix_determinant(MatrixObject * self) { @@ -1326,6 +1758,13 @@ static struct PyMethodDef Matrix_methods[] = { {"to_quat", (PyCFunction) Matrix_toQuat, METH_NOARGS, Matrix_toQuat_doc}, {"copy", (PyCFunction) Matrix_copy, METH_NOARGS, Matrix_copy_doc}, {"__copy__", (PyCFunction) Matrix_copy, METH_NOARGS, Matrix_copy_doc}, + + /* class methods */ + {"Rotation", (PyCFunction) C_Matrix_Rotation, METH_VARARGS | METH_CLASS, C_Matrix_Rotation_doc}, + {"Scale", (PyCFunction) C_Matrix_Scale, METH_VARARGS | METH_CLASS, C_Matrix_Scale_doc}, + {"Shear", (PyCFunction) C_Matrix_Shear, METH_VARARGS | METH_CLASS, C_Matrix_Shear_doc}, + {"Translation", (PyCFunction) C_Matrix_Translation, METH_O | METH_CLASS, C_Matrix_Translation_doc}, + {"OrthoProjection", (PyCFunction) C_Matrix_OrthoProjection, METH_VARARGS | METH_CLASS, C_Matrix_OrthoProjection_doc}, {NULL, NULL, 0, NULL} }; diff --git a/source/blender/python/generic/noise.c b/source/blender/python/generic/noise.c index 168ee65795d..b07950099a3 100644 --- a/source/blender/python/generic/noise.c +++ b/source/blender/python/generic/noise.c @@ -18,7 +18,7 @@ * * 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. + * 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. diff --git a/source/blender/python/intern/Makefile b/source/blender/python/intern/Makefile index 419092cbe21..309ad9a42f1 100644 --- a/source/blender/python/intern/Makefile +++ b/source/blender/python/intern/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index ff273fa098d..9b2248d1ed4 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -35,6 +35,7 @@ #include "MEM_guardedalloc.h" #include "BKE_utildefines.h" +#include "BKE_idcode.h" #include "BKE_context.h" #include "BKE_global.h" /* evil G.* */ #include "BKE_report.h" @@ -418,25 +419,50 @@ static PyObject *pyrna_prop_richcmp(PyObject *a, PyObject *b, int op) } /*----------------------repr--------------------------------------------*/ -static PyObject *pyrna_struct_repr( BPy_StructRNA *self ) +static PyObject *pyrna_struct_str( BPy_StructRNA *self ) { - PyObject *pyob; + PyObject *ret; char *name; /* print name if available */ name= RNA_struct_name_get_alloc(&self->ptr, NULL, FALSE); if(name) { - pyob= PyUnicode_FromFormat( "<bpy_struct, %.200s(\"%.200s\")>", RNA_struct_identifier(self->ptr.type), name); + ret= PyUnicode_FromFormat( "<bpy_struct, %.200s(\"%.200s\")>", RNA_struct_identifier(self->ptr.type), name); MEM_freeN(name); - return pyob; + return ret; } return PyUnicode_FromFormat( "<bpy_struct, %.200s at %p>", RNA_struct_identifier(self->ptr.type), self->ptr.data); } -static PyObject *pyrna_prop_repr( BPy_PropertyRNA *self ) +static PyObject *pyrna_struct_repr(BPy_StructRNA *self) +{ + ID *id= self->ptr.id.data; + if(id == NULL) + return pyrna_struct_str(self); /* fallback */ + + if(RNA_struct_is_ID(self->ptr.type)) { + return PyUnicode_FromFormat( "bpy.data.%s[\"%s\"]", BKE_idcode_to_name_plural(GS(id->name)), id->name+2); + } + else { + PyObject *ret; + char *path; + path= RNA_path_from_ID_to_struct(&self->ptr); + if(path) { + ret= PyUnicode_FromFormat( "bpy.data.%s[\"%s\"].%s", BKE_idcode_to_name_plural(GS(id->name)), id->name+2, path); + MEM_freeN(path); + } + else { /* cant find, print something sane */ + ret= PyUnicode_FromFormat( "bpy.data.%s[\"%s\"]...%s", BKE_idcode_to_name_plural(GS(id->name)), id->name+2, RNA_struct_identifier(self->ptr.type)); + } + + return ret; + } +} + +static PyObject *pyrna_prop_str( BPy_PropertyRNA *self ) { - PyObject *pyob; + PyObject *ret; PointerRNA ptr; char *name; const char *type_id= NULL; @@ -470,15 +496,36 @@ static PyObject *pyrna_prop_repr( BPy_PropertyRNA *self ) name= RNA_struct_name_get_alloc(&ptr, NULL, FALSE); if(name) { - pyob= PyUnicode_FromFormat( "<bpy_%.200s, %.200s.%.200s(\"%.200s\")>", type_fmt, RNA_struct_identifier(self->ptr.type), RNA_property_identifier(self->prop), name); + ret= PyUnicode_FromFormat( "<bpy_%.200s, %.200s.%.200s(\"%.200s\")>", type_fmt, RNA_struct_identifier(self->ptr.type), RNA_property_identifier(self->prop), name); MEM_freeN(name); - return pyob; + return ret; } } return PyUnicode_FromFormat( "<bpy_%.200s, %.200s.%.200s>", type_fmt, RNA_struct_identifier(self->ptr.type), RNA_property_identifier(self->prop)); } +static PyObject *pyrna_prop_repr(BPy_PropertyRNA *self) +{ + ID *id= self->ptr.id.data; + PyObject *ret; + char *path; + + if(id == NULL) + return pyrna_prop_str(self); /* fallback */ + + path= RNA_path_from_ID_to_property(&self->ptr, self->prop); + if(path) { + ret= PyUnicode_FromFormat( "bpy.data.%s[\"%s\"].%s", BKE_idcode_to_name_plural(GS(id->name)), id->name+2, path); + MEM_freeN(path); + } + else { /* cant find, print something sane */ + ret= PyUnicode_FromFormat( "bpy.data.%s[\"%s\"]...%s", BKE_idcode_to_name_plural(GS(id->name)), id->name+2, RNA_property_identifier(self->prop)); + } + + return ret; +} + static long pyrna_struct_hash( BPy_StructRNA *self ) { return _Py_HashPointer(self->ptr.data); @@ -2039,12 +2086,34 @@ static char pyrna_struct_is_property_set_doc[] = static PyObject *pyrna_struct_is_property_set(BPy_StructRNA *self, PyObject *args) { + PropertyRNA *prop; char *name; + int ret; if (!PyArg_ParseTuple(args, "s:is_property_set", &name)) return NULL; - return PyBool_FromLong(RNA_property_is_set(&self->ptr, name)); + if((prop= RNA_struct_find_property(&self->ptr, name)) == NULL) { + PyErr_Format(PyExc_TypeError, "%.200s.is_property_set(\"%.200s\") not found", RNA_struct_identifier(self->ptr.type), name); + return NULL; + } + + /* double property lookup, could speed up */ + /* return PyBool_FromLong(RNA_property_is_set(&self->ptr, name)); */ + if(RNA_property_flag(prop) & PROP_IDPROPERTY) { + IDProperty *group= RNA_struct_idproperties(&self->ptr, 0); + if(group) { + ret= IDP_GetPropertyFromGroup(group, name) ? 1:0; + } + else { + ret= 0; + } + } + else { + ret= 1; + } + + return PyBool_FromLong(ret); } static char pyrna_struct_is_property_hidden_doc[] = @@ -2059,15 +2128,16 @@ static PyObject *pyrna_struct_is_property_hidden(BPy_StructRNA *self, PyObject * { PropertyRNA *prop; char *name; - int hidden; if (!PyArg_ParseTuple(args, "s:is_property_hidden", &name)) return NULL; - - prop= RNA_struct_find_property(&self->ptr, name); - hidden= (prop)? (RNA_property_flag(prop) & PROP_HIDDEN): 1; - return PyBool_FromLong(hidden); + if((prop= RNA_struct_find_property(&self->ptr, name)) == NULL) { + PyErr_Format(PyExc_TypeError, "%.200s.is_property_hidden(\"%.200s\") not found", RNA_struct_identifier(self->ptr.type), name); + return NULL; + } + + return PyBool_FromLong(RNA_property_flag(prop) & PROP_HIDDEN); } static char pyrna_struct_path_resolve_doc[] = @@ -3530,7 +3600,7 @@ PyTypeObject pyrna_struct_Type = { ( hashfunc )pyrna_struct_hash, /* hashfunc tp_hash; */ NULL, /* ternaryfunc tp_call; */ - NULL, /* reprfunc tp_str; */ + (reprfunc) pyrna_struct_str, /* reprfunc tp_str; */ ( getattrofunc ) pyrna_struct_getattro, /* getattrofunc tp_getattro; */ ( setattrofunc ) pyrna_struct_setattro, /* setattrofunc tp_setattro; */ @@ -3597,7 +3667,7 @@ PyTypeObject pyrna_prop_Type = { NULL, /* getattrfunc tp_getattr; */ NULL, /* setattrfunc tp_setattr; */ NULL, /* tp_compare */ /* DEPRECATED in python 3.0! */ - ( reprfunc ) pyrna_prop_repr, /* tp_repr */ + (reprfunc) pyrna_prop_repr, /* tp_repr */ /* Method suites for standard classes */ @@ -3609,7 +3679,7 @@ PyTypeObject pyrna_prop_Type = { ( hashfunc ) pyrna_prop_hash, /* hashfunc tp_hash; */ NULL, /* ternaryfunc tp_call; */ - NULL, /* reprfunc tp_str; */ + (reprfunc) pyrna_prop_str, /* reprfunc tp_str; */ /* will only use these if this is a subtype of a py class */ NULL, /* getattrofunc tp_getattro; */ diff --git a/source/blender/quicktime/Makefile b/source/blender/quicktime/Makefile index 3d8ab2f0adc..d0055780556 100644 --- a/source/blender/quicktime/Makefile +++ b/source/blender/quicktime/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/quicktime/apple/Makefile b/source/blender/quicktime/apple/Makefile index 88eea6ea002..cdb00ab9ef2 100644 --- a/source/blender/quicktime/apple/Makefile +++ b/source/blender/quicktime/apple/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/readblenfile/Makefile b/source/blender/readblenfile/Makefile index d291cb84315..f0a46d077a8 100644 --- a/source/blender/readblenfile/Makefile +++ b/source/blender/readblenfile/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/readblenfile/intern/Makefile b/source/blender/readblenfile/intern/Makefile index 54316903f23..dc59ca3b9ed 100644 --- a/source/blender/readblenfile/intern/Makefile +++ b/source/blender/readblenfile/intern/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/readblenfile/stub/Makefile b/source/blender/readblenfile/stub/Makefile index a2b0fe88f6a..94a55407418 100644 --- a/source/blender/readblenfile/stub/Makefile +++ b/source/blender/readblenfile/stub/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/readblenfile/test/Makefile b/source/blender/readblenfile/test/Makefile index 50f50f5c54c..cc294ac60b3 100644 --- a/source/blender/readblenfile/test/Makefile +++ b/source/blender/readblenfile/test/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/render/Makefile b/source/blender/render/Makefile index 11ddbad0b94..7be54ac359f 100644 --- a/source/blender/render/Makefile +++ b/source/blender/render/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/render/extern/include/RE_pipeline.h b/source/blender/render/extern/include/RE_pipeline.h index af7f3fcf387..b12e45ecd9c 100644 --- a/source/blender/render/extern/include/RE_pipeline.h +++ b/source/blender/render/extern/include/RE_pipeline.h @@ -193,7 +193,7 @@ void RE_SetPixelSize(struct Render *re, float pixsize); void RE_SetView (struct Render *re, float mat[][4]); /* make or free the dbase */ -void RE_Database_FromScene(struct Render *re, struct Scene *scene, unsigned int lay, int use_camera_view); +void RE_Database_FromScene(struct Render *re, struct Main *bmain, struct Scene *scene, unsigned int lay, int use_camera_view); void RE_Database_Free (struct Render *re); /* project dbase again, when viewplane/perspective changed */ diff --git a/source/blender/render/intern/Makefile b/source/blender/render/intern/Makefile index 4fce37df175..4043902a40f 100644 --- a/source/blender/render/intern/Makefile +++ b/source/blender/render/intern/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/render/intern/include/renderdatabase.h b/source/blender/render/intern/include/renderdatabase.h index 76e7fe7b4f3..4c80616665d 100644 --- a/source/blender/render/intern/include/renderdatabase.h +++ b/source/blender/render/intern/include/renderdatabase.h @@ -34,6 +34,7 @@ struct Object; struct VlakRen; struct VertRen; struct HaloRen; +struct Main; struct Material; struct Render; struct MCol; @@ -137,7 +138,7 @@ void RE_set_customdata_names(struct ObjectRen *obr, struct CustomData *data); /* convertblender.c */ void init_render_world(Render *re); -void RE_Database_FromScene_Vectors(Render *re, struct Scene *sce, unsigned int lay); +void RE_Database_FromScene_Vectors(Render *re, struct Main *bmain, struct Scene *sce, unsigned int lay); #endif /* RENDERDATABASE_H */ diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index 26783d21da7..149890f830d 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -4889,13 +4889,14 @@ static void database_init_objects(Render *re, unsigned int renderlay, int nolamp } /* used to be 'rotate scene' */ -void RE_Database_FromScene(Render *re, Scene *scene, unsigned int lay, int use_camera_view) +void RE_Database_FromScene(Render *re, Main *bmain, Scene *scene, unsigned int lay, int use_camera_view) { extern int slurph_opt; /* key.c */ Scene *sce; float mat[4][4]; float amb[3]; + re->main= bmain; re->scene= scene; re->lay= lay; @@ -5433,7 +5434,7 @@ static void free_dbase_object_vectors(ListBase *lb) BLI_freelistN(lb); } -void RE_Database_FromScene_Vectors(Render *re, Scene *sce, unsigned int lay) +void RE_Database_FromScene_Vectors(Render *re, Main *bmain, Scene *sce, unsigned int lay) { ObjectInstanceRen *obi, *oldobi; StrandSurface *mesh; @@ -5475,7 +5476,7 @@ void RE_Database_FromScene_Vectors(Render *re, Scene *sce, unsigned int lay) re->strandsurface= strandsurface; if(!re->test_break(re->tbh)) - RE_Database_FromScene(re, sce, lay, 1); + RE_Database_FromScene(re, bmain, sce, lay, 1); if(!re->test_break(re->tbh)) { for(step= 0; step<2; step++) { diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index 6c6e200a74e..183b46af863 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -1768,9 +1768,9 @@ static void do_render_3d(Render *re) /* make render verts/faces/halos/lamps */ if(render_scene_needs_vector(re)) - RE_Database_FromScene_Vectors(re, re->scene, re->lay); + RE_Database_FromScene_Vectors(re, re->main, re->scene, re->lay); else - RE_Database_FromScene(re, re->scene, re->lay, 1); + RE_Database_FromScene(re, re->main, re->scene, re->lay, 1); threaded_tile_processor(re); @@ -2142,6 +2142,7 @@ static void render_scene(Render *re, Scene *sce, int cfra) RE_InitState(resc, re, &sce->r, NULL, winx, winy, &re->disprect); /* still unsure entity this... */ + resc->main= re->main; resc->scene= sce; resc->lay= sce->lay; diff --git a/source/blender/verify/Makefile b/source/blender/verify/Makefile index 88ac835c505..4451d5baf22 100644 --- a/source/blender/verify/Makefile +++ b/source/blender/verify/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/verify/intern/Makefile b/source/blender/verify/intern/Makefile index 5f1cac41e28..009fd1c6e28 100644 --- a/source/blender/verify/intern/Makefile +++ b/source/blender/verify/intern/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/windowmanager/Makefile b/source/blender/windowmanager/Makefile index 90621f66057..1596921b5ee 100644 --- a/source/blender/windowmanager/Makefile +++ b/source/blender/windowmanager/Makefile @@ -15,7 +15,7 @@ # # 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. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # The Original Code is Copyright (C) Blender Foundation. # All rights reserved. diff --git a/source/blender/windowmanager/intern/Makefile b/source/blender/windowmanager/intern/Makefile index 18085194405..60be5fed4b2 100644 --- a/source/blender/windowmanager/intern/Makefile +++ b/source/blender/windowmanager/intern/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blender/windowmanager/intern/wm.c b/source/blender/windowmanager/intern/wm.c index fcf8951d796..8d36711032b 100644 --- a/source/blender/windowmanager/intern/wm.c +++ b/source/blender/windowmanager/intern/wm.c @@ -26,7 +26,8 @@ * ***** END GPL LICENSE BLOCK ***** */ -#include "string.h" +#include <string.h> +#include <stddef.h> #include "DNA_windowmanager_types.h" @@ -149,9 +150,9 @@ MenuType *WM_menutype_find(const char *idname, int quiet) MenuType* mt; if (idname[0]) { - for(mt=menutypes.first; mt; mt=mt->next) - if(strcmp(idname, mt->idname)==0) - return mt; + mt= BLI_findstring(&menutypes, idname, offsetof(MenuType, idname)); + if(mt) + return mt; } if(!quiet) diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 4c3e88d978e..23994905b96 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -63,6 +63,7 @@ #include "BKE_screen.h" /* BKE_ST_MAXNAME */ #include "BKE_utildefines.h" #include "BKE_brush.h" // JW +#include "BKE_idcode.h" #include "BIF_gl.h" #include "BIF_glutil.h" /* for paint cursor */ @@ -102,11 +103,11 @@ wmOperatorType *WM_operatortype_find(const char *idname, int quiet) char idname_bl[OP_MAX_TYPENAME]; // XXX, needed to support python style names without the _OT_ syntax WM_operator_bl_idname(idname_bl, idname); - + if (idname_bl[0]) { - for(ot= global_ops.first; ot; ot= ot->next) { - if(strncmp(ot->idname, idname_bl, OP_MAX_TYPENAME)==0) - return ot; + ot= BLI_findstring_ptr(&global_ops, idname_bl, offsetof(wmOperatorType, idname)); + if(ot) { + return ot; } } @@ -1586,7 +1587,7 @@ static int wm_link_append_exec(bContext *C, wmOperator *op) scene_deselect_all(scene); bh = BLO_blendhandle_from_file(libname); - idcode = BLO_idcode_from_name(group); + idcode = BKE_idcode_from_name(group); flag = wm_link_append_flag(op); diff --git a/source/blenderplayer/bad_level_call_stubs/Makefile b/source/blenderplayer/bad_level_call_stubs/Makefile index 1d9f6a27327..49efd08c710 100644 --- a/source/blenderplayer/bad_level_call_stubs/Makefile +++ b/source/blenderplayer/bad_level_call_stubs/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/blenderplayer/bad_level_call_stubs/stubs.c b/source/blenderplayer/bad_level_call_stubs/stubs.c index 6400628fb08..1688b6e3d96 100644 --- a/source/blenderplayer/bad_level_call_stubs/stubs.c +++ b/source/blenderplayer/bad_level_call_stubs/stubs.c @@ -264,6 +264,13 @@ struct MTFace *EM_get_active_mtface(struct EditMesh *em, struct EditFace **act_e void make_editMesh(struct Scene *scene, struct Object *ob){} void load_editMesh(struct Scene *scene, struct Object *ob){} +void make_editLatt(struct Object *obedit){} +void load_editLatt(struct Object *obedit){} + +void load_editNurb (struct Object *obedit){} +void make_editNurb (struct Object *obedit){} + + void uiItemR(struct uiLayout *layout, struct PointerRNA *ptr, char *propname, int flag, char *name, int icon){} struct PointerRNA uiItemFullO(struct uiLayout *layout, char *idname, char *name, int icon, struct IDProperty *properties, int context, int flag){struct PointerRNA a; return a;} diff --git a/source/creator/Makefile b/source/creator/Makefile index bfbb2173cff..08f732ad486 100644 --- a/source/creator/Makefile +++ b/source/creator/Makefile @@ -17,7 +17,7 @@ # # 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. +# 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. diff --git a/source/darwin/Makefile b/source/darwin/Makefile index 7e65d399d44..5c68f43f606 100644 --- a/source/darwin/Makefile +++ b/source/darwin/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/gameengine/BlenderRoutines/Makefile b/source/gameengine/BlenderRoutines/Makefile index 4a437aff97d..3d0f5344c74 100644 --- a/source/gameengine/BlenderRoutines/Makefile +++ b/source/gameengine/BlenderRoutines/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/gameengine/Converter/KX_BlenderSceneConverter.cpp b/source/gameengine/Converter/KX_BlenderSceneConverter.cpp index 0575c55846b..b4ddc4f9e54 100644 --- a/source/gameengine/Converter/KX_BlenderSceneConverter.cpp +++ b/source/gameengine/Converter/KX_BlenderSceneConverter.cpp @@ -100,6 +100,7 @@ extern "C" extern "C" { #include "BKE_context.h" #include "BLO_readfile.h" + #include "BKE_idcode.h" #include "BKE_report.h" #include "DNA_space_types.h" #include "DNA_windowmanager_types.h" /* report api */ @@ -938,7 +939,7 @@ bool KX_BlenderSceneConverter::LinkBlendFile(const char *path, char *group, KX_S Main *main_tmp= NULL; /* created only for linking, then freed */ LinkNode *names = NULL; BlendHandle *bpy_openlib = NULL; /* ptr to the open .blend file */ - int idcode= BLO_idcode_from_name(group); + int idcode= BKE_idcode_from_name(group); short flag= 0; /* dont need any special options */ ReportList reports; static char err_local[255]; diff --git a/source/gameengine/Converter/Makefile b/source/gameengine/Converter/Makefile index b6da47930d3..142841b2b36 100644 --- a/source/gameengine/Converter/Makefile +++ b/source/gameengine/Converter/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/gameengine/Expressions/Makefile b/source/gameengine/Expressions/Makefile index 09512c3ae87..892a8c2b246 100644 --- a/source/gameengine/Expressions/Makefile +++ b/source/gameengine/Expressions/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/gameengine/GameLogic/Joystick/Makefile b/source/gameengine/GameLogic/Joystick/Makefile index 02def1cec62..5ab297824dd 100644 --- a/source/gameengine/GameLogic/Joystick/Makefile +++ b/source/gameengine/GameLogic/Joystick/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/gameengine/GameLogic/Makefile b/source/gameengine/GameLogic/Makefile index ba1e1c25ee7..9c8bd73cdc0 100644 --- a/source/gameengine/GameLogic/Makefile +++ b/source/gameengine/GameLogic/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/gameengine/GamePlayer/Makefile b/source/gameengine/GamePlayer/Makefile index c4f78f23117..30a13f26503 100644 --- a/source/gameengine/GamePlayer/Makefile +++ b/source/gameengine/GamePlayer/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/gameengine/GamePlayer/common/Makefile b/source/gameengine/GamePlayer/common/Makefile index e1b07a226f6..e28cacb826a 100644 --- a/source/gameengine/GamePlayer/common/Makefile +++ b/source/gameengine/GamePlayer/common/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/gameengine/GamePlayer/common/unix/Makefile b/source/gameengine/GamePlayer/common/unix/Makefile index c86f61b45d8..db29a087b28 100644 --- a/source/gameengine/GamePlayer/common/unix/Makefile +++ b/source/gameengine/GamePlayer/common/unix/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/gameengine/GamePlayer/common/windows/Makefile b/source/gameengine/GamePlayer/common/windows/Makefile index 3f1deb05f3a..200f84dd3e6 100644 --- a/source/gameengine/GamePlayer/common/windows/Makefile +++ b/source/gameengine/GamePlayer/common/windows/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/gameengine/GamePlayer/ghost/Makefile b/source/gameengine/GamePlayer/ghost/Makefile index a7fcf46b695..b2fcd2ac1ff 100644 --- a/source/gameengine/GamePlayer/ghost/Makefile +++ b/source/gameengine/GamePlayer/ghost/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/gameengine/Ketsji/KXNetwork/Makefile b/source/gameengine/Ketsji/KXNetwork/Makefile index 365ed8fc9c3..aebbd7921cb 100644 --- a/source/gameengine/Ketsji/KXNetwork/Makefile +++ b/source/gameengine/Ketsji/KXNetwork/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/gameengine/Ketsji/KX_PythonInit.cpp b/source/gameengine/Ketsji/KX_PythonInit.cpp index 5aa75a62258..303890fd630 100644 --- a/source/gameengine/Ketsji/KX_PythonInit.cpp +++ b/source/gameengine/Ketsji/KX_PythonInit.cpp @@ -122,7 +122,7 @@ extern "C" { #include "KX_BlenderSceneConverter.h" #include "KX_MeshProxy.h" /* for creating a new library of mesh objects */ extern "C" { - #include "BLO_readfile.h" + #include "BKE_idcode.h" } #include "NG_NetworkScene.h" //Needed for sendMessage() @@ -661,7 +661,7 @@ static PyObject *gLibNew(PyObject*, PyObject* args) return NULL; } - idcode= BLO_idcode_from_name(group); + idcode= BKE_idcode_from_name(group); if(idcode==0) { PyErr_Format(PyExc_ValueError, "invalid group given \"%s\"", group); return NULL; diff --git a/source/gameengine/Ketsji/Makefile b/source/gameengine/Ketsji/Makefile index 1a7ec415382..79c8626d295 100644 --- a/source/gameengine/Ketsji/Makefile +++ b/source/gameengine/Ketsji/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/gameengine/Makefile b/source/gameengine/Makefile index bcb4b9098e7..0fdac2acce2 100644 --- a/source/gameengine/Makefile +++ b/source/gameengine/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/gameengine/Network/LoopBackNetwork/Makefile b/source/gameengine/Network/LoopBackNetwork/Makefile index 690fd644094..236c28b0f23 100644 --- a/source/gameengine/Network/LoopBackNetwork/Makefile +++ b/source/gameengine/Network/LoopBackNetwork/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/gameengine/Network/Makefile b/source/gameengine/Network/Makefile index c6b22276113..99a047c8b95 100644 --- a/source/gameengine/Network/Makefile +++ b/source/gameengine/Network/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/gameengine/Network/TerraplayNetwork/Makefile b/source/gameengine/Network/TerraplayNetwork/Makefile index d987263d433..d5a4c86740b 100644 --- a/source/gameengine/Network/TerraplayNetwork/Makefile +++ b/source/gameengine/Network/TerraplayNetwork/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/gameengine/Physics/Bullet/Makefile b/source/gameengine/Physics/Bullet/Makefile index 433d1df3d2f..0514565534d 100644 --- a/source/gameengine/Physics/Bullet/Makefile +++ b/source/gameengine/Physics/Bullet/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/gameengine/Physics/Dummy/Makefile b/source/gameengine/Physics/Dummy/Makefile index 0e36266ae09..9a600a0365f 100644 --- a/source/gameengine/Physics/Dummy/Makefile +++ b/source/gameengine/Physics/Dummy/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/gameengine/Physics/Makefile b/source/gameengine/Physics/Makefile index da0d4cafd2e..f5f914c2ac2 100644 --- a/source/gameengine/Physics/Makefile +++ b/source/gameengine/Physics/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/gameengine/Physics/common/Makefile b/source/gameengine/Physics/common/Makefile index f87da383520..369699e1b90 100644 --- a/source/gameengine/Physics/common/Makefile +++ b/source/gameengine/Physics/common/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/gameengine/Rasterizer/Makefile b/source/gameengine/Rasterizer/Makefile index c877e423a71..d800a02b181 100644 --- a/source/gameengine/Rasterizer/Makefile +++ b/source/gameengine/Rasterizer/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/Makefile b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/Makefile index aedbc2705f0..357bdf9d99b 100644 --- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/Makefile +++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/gameengine/SceneGraph/Makefile b/source/gameengine/SceneGraph/Makefile index acec1b729e8..8a797ae5a0e 100644 --- a/source/gameengine/SceneGraph/Makefile +++ b/source/gameengine/SceneGraph/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/gameengine/VideoTexture/Makefile b/source/gameengine/VideoTexture/Makefile index 1cb147860cd..af3417eef02 100644 --- a/source/gameengine/VideoTexture/Makefile +++ b/source/gameengine/VideoTexture/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/icons/Makefile b/source/icons/Makefile index a31ae9a56c7..5832a098592 100644 --- a/source/icons/Makefile +++ b/source/icons/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/kernel/Makefile b/source/kernel/Makefile index b71491b46d1..aa0b3dd3bf1 100644 --- a/source/kernel/Makefile +++ b/source/kernel/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/kernel/gen_messaging/Makefile b/source/kernel/gen_messaging/Makefile index f94f6f082dd..a1d203bcf18 100644 --- a/source/kernel/gen_messaging/Makefile +++ b/source/kernel/gen_messaging/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/kernel/gen_messaging/intern/Makefile b/source/kernel/gen_messaging/intern/Makefile index f88bcd53c6e..7b6b2169540 100644 --- a/source/kernel/gen_messaging/intern/Makefile +++ b/source/kernel/gen_messaging/intern/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. diff --git a/source/kernel/gen_system/Makefile b/source/kernel/gen_system/Makefile index 31535ad2a97..45f491cbeb4 100644 --- a/source/kernel/gen_system/Makefile +++ b/source/kernel/gen_system/Makefile @@ -15,7 +15,7 @@ # # 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. +# 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. |