Merged changes in the trunk up to revision 35367.

To branch builders: From this revision Python 3.2 will be used.
Don't forget svn update in the "lib" directory as well.
This commit is contained in:
2011-03-06 12:13:32 +00:00
1026 changed files with 15856 additions and 10181 deletions

View File

@@ -69,6 +69,7 @@ get_blender_version()
# Blender internal features
option(WITH_INTERNATIONAL "Enable I18N (International fonts and text)" ON)
option(WITH_PYTHON "Enable Embedded Python API" ON)
option(WITH_PYTHON_SAFETY "Enable internal API error checking to track invalid data to prevent crash on access (at the expense of some effeciency)." OFF)
option(WITH_PYTHON_MODULE "Enable building as a python module (experemental)" OFF)
option(WITH_BUILDINFO "Include extra build details" ON)
option(WITH_IK_ITASC "Enable ITASC IK solver" ON)
@@ -609,10 +610,10 @@ elseif(WIN32)
if(WITH_PYTHON)
set(PYTHON ${LIBDIR}/python)
set(PYTHON_VERSION 3.1)
set(PYTHON_VERSION 3.2)
set(PYTHON_INCLUDE_DIRS "${PYTHON}/include/python${PYTHON_VERSION}")
# set(PYTHON_BINARY python) # not used yet
set(PYTHON_LIBRARY python31)
set(PYTHON_LIBRARY python32)
set(PYTHON_LIBPATH ${PYTHON}/lib)
endif()
@@ -714,6 +715,7 @@ elseif(WIN32)
set(WITH_JACK OFF)
endif()
# TODO: mingw move to Python 3.2
if(WITH_PYTHON)
set(PYTHON ${LIBDIR}/python)
set(PYTHON_VERSION 3.1)
@@ -765,9 +767,9 @@ elseif(APPLE)
set(SNDFILE_LIBPATH ${SNDFILE}/lib ${FFMPEG}/lib)
endif()
set(PYTHON_VERSION 3.1)
set(PYTHON_VERSION 3.2)
if(PYTHON_VERSION MATCHES 3.1)
if(PYTHON_VERSION MATCHES 3.2)
# we use precompiled libraries for py 3.1 and up by default
set(PYTHON ${LIBDIR}/python)

View File

@@ -23,6 +23,11 @@
# <pep8 compliant>
"""
Exampel Win32 usage:
c:\Python32\python.exe c:\blender_dev\blender\build_files\cmake\cmake_qtcreator_project.py c:\blender_dev\cmake_build
"""
import os
from os.path import join, dirname, normpath, abspath, splitext, relpath, exists
@@ -49,7 +54,7 @@ def source_list(path, filename_check=None):
# extension checking
def is_cmake(filename):
ext = splitext(filename)[1]
return (ext == ".cmake") or (filename == "CMakeLists.txt")
return (ext == ".cmake") or (filename.endswith("CMakeLists.txt"))
def is_c_header(filename):
@@ -73,7 +78,7 @@ def is_svn_file(filename):
def is_project_file(filename):
return (is_c_any(filename) or is_cmake(filename)) and is_svn_file(filename)
return (is_c_any(filename) or is_cmake(filename)) # and is_svn_file(filename)
def cmake_advanced_info():
@@ -81,7 +86,12 @@ def cmake_advanced_info():
"""
def create_eclipse_project(cmake_dir):
cmd = 'cmake %r -G"Eclipse CDT4 - Unix Makefiles"' % cmake_dir
import sys
if sys.platform == "win32":
cmd = 'cmake %r -G"Eclipse CDT4 - MinGW Makefiles"' % cmake_dir
else:
cmd = 'cmake %r -G"Eclipse CDT4 - Unix Makefiles"' % cmake_dir
os.system(cmd)
includes = []
@@ -92,13 +102,13 @@ def cmake_advanced_info():
cmake_dir = sys.argv[-1]
if not os.path.join(cmake_dir, "CMakeCache.txt"):
if not os.path.exists(os.path.join(cmake_dir, "CMakeCache.txt")):
cmake_dir = os.getcwd()
if not os.path.join(cmake_dir, "CMakeCache.txt"):
if not os.path.exists(os.path.join(cmake_dir, "CMakeCache.txt")):
print("CMakeCache.txt not found in %r or %r\n Pass CMake build dir as an argument, or run from that dir, abording" % (cmake_dir, os.getcwd()))
sys.exit(1)
# create_eclipse_project(cmake_dir)
create_eclipse_project(cmake_dir)
from xml.dom.minidom import parse
tree = parse(os.path.join(cmake_dir, ".cproject"))
@@ -171,6 +181,11 @@ def main():
else:
includes, defines = cmake_advanced_info()
# for some reason it doesnt give all internal includes
includes = list(set(includes) | set(dirname(f) for f in files_rel if is_c_header(f)))
includes.sort()
PROJECT_NAME = "Blender"
f = open(join(base, "%s.files" % PROJECT_NAME), 'w')
f.write("\n".join(files_rel))

View File

@@ -358,8 +358,8 @@ macro(get_blender_version)
message(FATAL_ERROR "Version parsing failed for BLENDER_VERSION_CYCLE")
endif()
MATH(EXPR BLENDER_VERSION_MAJOR "${_out_version} / 100")
MATH(EXPR BLENDER_VERSION_MINOR "${_out_version} % 100")
math(EXPR BLENDER_VERSION_MAJOR "${_out_version} / 100")
math(EXPR BLENDER_VERSION_MINOR "${_out_version} % 100")
set(BLENDER_VERSION "${BLENDER_VERSION_MAJOR}.${BLENDER_VERSION_MINOR}")
set(BLENDER_SUBVERSION ${_out_subversion})
@@ -372,7 +372,7 @@ macro(get_blender_version)
else()
set(_char_ls a b c d e f g h i j k l m n o p q r s t u v w q y z)
list(FIND _char_ls ${BLENDER_VERSION_CHAR} _out_version_char_index)
MATH(EXPR BLENDER_VERSION_CHAR_INDEX "${_out_version_char_index} + 1")
math(EXPR BLENDER_VERSION_CHAR_INDEX "${_out_version_char_index} + 1")
unset(_char_ls)
unset(_out_version_char_index)
endif()

View File

@@ -1,2 +1,3 @@
version=3
opts=uversionmangle=s/[a-z]$/.$&/;s/[j-s]$/1$&/;s/[t-z]$/2$&/;tr/a-z/1-90-90-6/ \
http://download.blender.org/source/blender-([0-9.]+[a-z]?)\.tar\.gz

View File

@@ -86,7 +86,7 @@ BF_FFMPEG_LIB = 'avcodec avdevice avformat avutil mp3lame swscale x264 xvidcore
#bz2 is a standard osx dynlib
# python 3.1 uses precompiled libraries in bf svn /lib by default
BF_PYTHON_VERSION = '3.1'
BF_PYTHON_VERSION = '3.2'
BF_PYTHON = LIBDIR + '/python'
BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}'
# BF_PYTHON_BINARY = '${BF_PYTHON}/bin/python${BF_PYTHON_VERSION}'

View File

@@ -2,12 +2,12 @@ LCGDIR = '#../lib/windows'
LIBDIR = "${LCGDIR}"
BF_PYTHON = LIBDIR + '/python'
BF_PYTHON_VERSION = '3.1'
BF_PYTHON_VERSION = '3.2'
WITH_BF_STATICPYTHON = False
BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}'
BF_PYTHON_BINARY = 'python'
BF_PYTHON_LIB = 'python${BF_PYTHON_VERSION[0]}${BF_PYTHON_VERSION[2]}mw'
BF_PYTHON_DLL = 'python31'
BF_PYTHON_DLL = 'python32'
BF_PYTHON_LIBPATH = '${BF_PYTHON}/lib'
BF_PYTHON_LIB_STATIC = '${BF_PYTHON}/lib/libpython${BF_PYTHON_VERSION[0]}${BF_PYTHON_VERSION[2]}.a'

View File

@@ -9,10 +9,10 @@ BF_FFMPEG_LIBPATH='${BF_FFMPEG}/lib'
BF_FFMPEG_LIB = 'avformat-52.lib avcodec-52.lib avdevice-52.lib avutil-50.lib swscale-0.lib'
BF_PYTHON = LIBDIR + '/python'
BF_PYTHON_VERSION = '3.1'
BF_PYTHON_VERSION = '3.2'
BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}'
BF_PYTHON_BINARY = 'python'
BF_PYTHON_LIB = 'python31'
BF_PYTHON_LIB = 'python32'
BF_PYTHON_DLL = '${BF_PYTHON_LIB}'
BF_PYTHON_LIBPATH = '${BF_PYTHON}/lib'

View File

@@ -9,10 +9,10 @@ BF_FFMPEG_LIBPATH='${BF_FFMPEG}/lib'
BF_FFMPEG_LIB = 'avformat-52.lib avcodec-52.lib avdevice-52.lib avutil-50.lib swscale-0.lib'
BF_PYTHON = LIBDIR + '/python'
BF_PYTHON_VERSION = '3.1'
BF_PYTHON_VERSION = '3.2'
BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}'
BF_PYTHON_BINARY = 'python'
BF_PYTHON_LIB = 'python31'
BF_PYTHON_LIB = 'python32'
BF_PYTHON_DLL = '${BF_PYTHON_LIB}'
BF_PYTHON_LIBPATH = '${BF_PYTHON}/lib'

View File

@@ -624,31 +624,36 @@ def UnixPyBundle(target=None, source=None, env=None):
print '\t"%s"' % py_target
print '\t(skipping copy)\n'
return
# Copied from source/creator/CMakeLists.txt, keep in sync.
print 'Install python from:'
print '\t"%s" into...' % py_src
print '\t"%s"\n' % py_target
run('rm -rf "%s"' % py_target)
try: os.makedirs(os.path.dirname(py_target)) # the final part is copied
except:pass
run('cp -R "%s" "%s"' % (py_src, os.path.dirname(py_target)))
run('rm -rf "%s/distutils"' % py_target)
run('rm -rf "%s/lib2to3"' % py_target)
run('rm -rf "%s/idlelib"' % py_target)
run('rm -rf "%s/tkinter"' % py_target)
run('rm -rf "%s/config"' % py_target)
print '\t"%s" into...' % py_src
print '\t"%s"\n' % py_target
run('rm -rf "%s/site-packages"' % py_target)
run('mkdir "%s/site-packages"' % py_target) # python needs it.'
run("rm -rf '%s'" % py_target)
try:
os.makedirs(os.path.dirname(py_target)) # the final part is copied
except:
pass
run('rm -f "%s/lib-dynload/_tkinter.so"' % py_target)
run('find "%s" -name "test" -prune -exec rm -rf {} \;' % py_target)
run('find "%s" -name "*.py?" -exec rm -rf {} \;' % py_target)
run('find "%s" -name "*.so"-exec strip -s {} \;' % py_target)
run("cp -R '%s' '%s'" % (py_src, os.path.dirname(py_target)))
run("rm -rf '%s/distutils'" % py_target)
run("rm -rf '%s/lib2to3'" % py_target)
run("rm -rf '%s/idlelib'" % py_target)
run("rm -rf '%s/tkinter'" % py_target)
run("rm -rf '%s/config'" % py_target)
run("rm -rf '%s/site-packages'" % py_target)
run("mkdir '%s/site-packages'" % py_target) # python needs it.'
run("rm -f '%s/lib-dynload/_tkinter.so'" % py_target)
run("find '%s' -type d -name 'test' -prune -exec rm -rf {} ';'" % py_target)
run("find '%s' -type d -name 'config-*' -prune -exec rm -rf {} ';'" % py_target)
run("find '%s' -type d -name 'turtledemo' -prune -exec rm -rf {} ';'" % py_target)
run("find '%s' -type d -name '__pycache__' -exec rm -rf {} ';'" % py_target)
run("find '%s' -name '*.py[co]' -exec rm -rf {} ';'" % py_target)
run("find '%s' -name '*.so' -exec strip -s {} ';'" % py_target)
#### END ACTION STUFF #########
@@ -675,6 +680,8 @@ def bsc(env, target, source):
class BlenderEnvironment(SConsEnvironment):
PyBundleActionAdded = False
def BlenderRes(self=None, libname=None, source=None, libtype=['core'], priority=[100]):
global libs
if not self or not libname or not source:
@@ -818,12 +825,14 @@ class BlenderEnvironment(SConsEnvironment):
lenv.AddPostAction(prog,Action(AppIt,strfunction=my_appit_print))
elif os.sep == '/' and lenv['OURPLATFORM'] != 'linuxcross': # any unix (except cross-compilation)
if lenv['WITH_BF_PYTHON']:
if not lenv['WITHOUT_BF_INSTALL'] and not lenv['WITHOUT_BF_PYTHON_INSTALL']:
if not lenv['WITHOUT_BF_INSTALL'] and not lenv['WITHOUT_BF_PYTHON_INSTALL'] and not BlenderEnvironment.PyBundleActionAdded:
lenv.AddPostAction(prog,Action(UnixPyBundle,strfunction=my_unixpybundle_print))
BlenderEnvironment.PyBundleActionAdded = True
elif lenv['OURPLATFORM'].startswith('win') or lenv['OURPLATFORM'] == 'linuxcross': # windows or cross-compilation
if lenv['WITH_BF_PYTHON']:
if not lenv['WITHOUT_BF_PYTHON_INSTALL']:
if not lenv['WITHOUT_BF_PYTHON_INSTALL'] and not BlenderEnvironment.PyBundleActionAdded:
lenv.AddPostAction(prog,Action(WinPyBundle,strfunction=my_winpybundle_print))
BlenderEnvironment.PyBundleActionAdded = True
return prog
def Glob(lenv, pattern):

View File

@@ -72,7 +72,7 @@ def print_arguments(args, bc):
def validate_arguments(args, bc):
opts_list = [
'WITH_BF_PYTHON', 'BF_PYTHON', 'BF_PYTHON_VERSION', 'BF_PYTHON_INC', 'BF_PYTHON_BINARY', 'BF_PYTHON_LIB', 'BF_PYTHON_LIBPATH', 'WITH_BF_STATICPYTHON', 'BF_PYTHON_LIB_STATIC', 'BF_PYTHON_DLL',
'WITH_BF_PYTHON', 'WITH_BF_PYTHON_SAFETY', 'BF_PYTHON', 'BF_PYTHON_VERSION', 'BF_PYTHON_INC', 'BF_PYTHON_BINARY', 'BF_PYTHON_LIB', 'BF_PYTHON_LIBPATH', 'WITH_BF_STATICPYTHON', 'BF_PYTHON_LIB_STATIC', 'BF_PYTHON_DLL',
'WITH_BF_OPENAL', 'BF_OPENAL', 'BF_OPENAL_INC', 'BF_OPENAL_LIB', 'BF_OPENAL_LIBPATH', 'WITH_BF_STATICOPENAL', 'BF_OPENAL_LIB_STATIC',
'WITH_BF_SDL', 'BF_SDL', 'BF_SDL_INC', 'BF_SDL_LIB', 'BF_SDL_LIBPATH',
'BF_LIBSAMPLERATE', 'BF_LIBSAMPLERATE_INC', 'BF_LIBSAMPLERATE_LIB', 'BF_LIBSAMPLERATE_LIBPATH', 'WITH_BF_STATICLIBSAMPLERATE', 'BF_LIBSAMPLERATE_LIB_STATIC',
@@ -211,6 +211,7 @@ def read_opts(env, cfg, args):
localopts.AddVariables(
('LCGDIR', 'location of cvs lib dir'),
(BoolVariable('WITH_BF_PYTHON', 'Compile with python', True)),
(BoolVariable('WITH_BF_PYTHON_SAFETY', 'Internal API error checking to track invalid data to prevent crash on access (at the expense of some effeciency)', False)),
('BF_PYTHON', 'base path for python', ''),
('BF_PYTHON_VERSION', 'Python version to use', ''),
('BF_PYTHON_INC', 'include path for Python headers', ''),

View File

@@ -44,7 +44,7 @@ PROJECT_BRIEF =
# exceed 55 pixels and the maximum width should not exceed 200 pixels.
# Doxygen will copy the logo to the output directory.
PROJECT_LOGO = ../release/freedesktop/icons/48x48/blender.png
PROJECT_LOGO = ../../release/freedesktop/icons/48x48/blender.png
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put.
@@ -616,9 +616,9 @@ INPUT = doxygen.main \
doxygen.source \
doxygen.intern \
doxygen.extern \
../source \
../intern \
../extern/bullet2
../../source \
../../intern \
../../extern/bullet2
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
@@ -648,7 +648,7 @@ RECURSIVE = YES
# excluded from the INPUT source files. This way you can easily exclude a
# subdirectory from a directory tree whose root is specified with the INPUT tag.
EXCLUDE = ../source/gameengine/PyDoc
EXCLUDE = ../../source/gameengine/PyDoc
# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded

View File

@@ -1,6 +1,10 @@
/** \defgroup blenderplayer Blender Player */
/** \defgroup blc bad level calls
* \ingroup blenderplayer
*/
/** \defgroup render Rendering
* \ingroup blender
*/
@@ -14,6 +18,19 @@
* \ingroup blender scripts
*/
/** \defgroup pygen Python Generic
* \ingroup python
*/
/** \defgroup pythonintern Python RNA and Operators
* \ingroup python
*/
/** \defgroup blpluginapi Blender pluginapi
* \ingroup blender
* \attention not in use currently
*/
/* ================================ */
/** \defgroup bge Game Engine */
@@ -74,6 +91,10 @@
/** \defgroup blender blender */
/** \defgroup blf blenfont
* \ingroup blender
*/
/** \defgroup bke blenkernel
* \ingroup blender
*/
@@ -86,6 +107,17 @@
* \ingroup blender
*/
/** \defgroup cmpnodes cmpnodes
* \ingroup nodes
*/
/** \defgroup shdnodes shdnodes
* \ingroup nodes
*/
/** \defgroup texnodes texnodes
* \ingroup nodes
*/
/** \defgroup modifiers modifiers
* \ingroup blender
*/
@@ -107,11 +139,13 @@
* \ingroup blender data
*/
/** \defgroup readwrite .blend read and write functions
/** \defgroup blenloader .blend read and write functions
* \ingroup blender data
* \todo check if \ref blo and \ref blenloader groups can be
* merged in docs.
*/
/** \defgroup readblenfile readblenfile
/** \defgroup blo readblenfile
* \ingroup blender data
*/
@@ -294,6 +328,18 @@
* \ingroup blender
*/
/** \defgroup imbcineon Cineon
* \ingroup imbuf
*/
/** \defgorup imbdds DDS
* \ingroup imbuf
*/
/** \defgroup openexr OpenEXR
* \ingroup imbuf
*/
/* ================================ */
/** \defgroup kernel kernel */

View File

@@ -1,4 +1,4 @@
/*! \file btGImpactTriangleShape.h
/*! \file btTriangleShapeEx.cpp
\author Francisco Len N<>jera
*/
/*

View File

@@ -1,6 +1,6 @@
#ifndef GIM_HASH_TABLE_H_INCLUDED
#define GIM_HASH_TABLE_H_INCLUDED
/*! \file gim_trimesh_data.h
/*! \file gim_hash_table.h
\author Francisco Len N<>jera
*/
/*

View File

@@ -752,13 +752,14 @@ GHOST_EventKey* GHOST_SystemWin32::processKeyEvent(GHOST_IWindow *window, bool k
if (key != GHOST_kKeyUnknown) {
MSG keyMsg;
char ascii = '\0';
/* Eat any character related messages */
if (::PeekMessage(&keyMsg, NULL, WM_CHAR, WM_SYSDEADCHAR, PM_REMOVE)) {
ascii = (char) keyMsg.wParam;
}
if (::PeekMessage(&keyMsg, NULL, WM_CHAR, WM_DEADCHAR, PM_REMOVE) ||
::PeekMessage(&keyMsg, NULL, WM_SYSCHAR, WM_SYSDEADCHAR, PM_REMOVE))
{
ascii = (char) keyMsg.wParam;
if(ascii > 126) ascii = 0;
};
event = new GHOST_EventKey(getSystem()->getMilliSeconds(), keyDown ? GHOST_kEventKeyDown: GHOST_kEventKeyUp, window, key, ascii);
#ifdef BF_GHOST_DEBUG

View File

@@ -195,7 +195,7 @@ static void mem_unlock_thread(void)
thread_unlock_callback();
}
int MEM_check_memory_integrity()
int MEM_check_memory_integrity(void)
{
const char* err_val = NULL;
MemHead* listend;
@@ -205,7 +205,7 @@ int MEM_check_memory_integrity()
err_val = check_memlist(listend);
if (err_val == 0) return 0;
if (err_val == NULL) return 0;
return 1;
}
@@ -286,7 +286,7 @@ static void make_memhead_header(MemHead *memh, size_t len, const char *str)
memh->tag1 = MEMTAG1;
memh->name = str;
memh->nextname = 0;
memh->nextname = NULL;
memh->len = len;
memh->mmap = 0;
memh->tag2 = MEMTAG2;
@@ -353,7 +353,7 @@ void *MEM_callocN(size_t len, const char *str)
}
mem_unlock_thread();
print_error("Calloc returns null: len=" SIZET_FORMAT " in %s, total %u\n", SIZET_ARG(len), str, mem_in_use);
return 0;
return NULL;
}
/* note; mmap returns zero'd memory */
@@ -377,7 +377,7 @@ void *MEM_mapallocN(size_t len, const char *str)
close(fd);
}
#else
memh= mmap(0, len+sizeof(MemHead)+sizeof(MemTail),
memh= mmap(NULL, len+sizeof(MemHead)+sizeof(MemTail),
PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANON, -1, 0);
#endif
@@ -643,13 +643,13 @@ short MEM_freeN(void *vmemh) /* anders compileertie niet meer */
error = 2;
MemorY_ErroR(memh->name,"end corrupt");
name = check_memlist(memh);
if (name != 0){
if (name != NULL){
if (name != memh->name) MemorY_ErroR(name,"is also corrupt");
}
} else{
error = -1;
name = check_memlist(memh);
if (name == 0)
if (name == NULL)
MemorY_ErroR("free","pointer not in memlist");
else
MemorY_ErroR(name,"error in header");
@@ -671,14 +671,14 @@ static void addtail(volatile localListBase *listbase, void *vlink)
{
struct localLink *link= vlink;
if (link == 0) return;
if (listbase == 0) return;
if (link == NULL) return;
if (listbase == NULL) return;
link->next = 0;
link->next = NULL;
link->prev = listbase->last;
if (listbase->last) ((struct localLink *)listbase->last)->next = link;
if (listbase->first == 0) listbase->first = link;
if (listbase->first == NULL) listbase->first = link;
listbase->last = link;
}
@@ -686,8 +686,8 @@ static void remlink(volatile localListBase *listbase, void *vlink)
{
struct localLink *link= vlink;
if (link == 0) return;
if (listbase == 0) return;
if (link == NULL) return;
if (listbase == NULL) return;
if (link->next) link->next->prev = link->prev;
if (link->prev) link->prev->next = link->next;
@@ -733,50 +733,50 @@ static const char *check_memlist(MemHead *memh)
forw = membase->first;
if (forw) forw = MEMNEXT(forw);
forwok = 0;
forwok = NULL;
while(forw){
if (forw->tag1 != MEMTAG1 || forw->tag2 != MEMTAG2) break;
forwok = forw;
if (forw->next) forw = MEMNEXT(forw->next);
else forw = 0;
else forw = NULL;
}
back = (MemHead *) membase->last;
if (back) back = MEMNEXT(back);
backok = 0;
backok = NULL;
while(back){
if (back->tag1 != MEMTAG1 || back->tag2 != MEMTAG2) break;
backok = back;
if (back->prev) back = MEMNEXT(back->prev);
else back = 0;
else back = NULL;
}
if (forw != back) return ("MORE THAN 1 MEMORYBLOCK CORRUPT");
if (forw == 0 && back == 0){
if (forw == NULL && back == NULL){
/* geen foute headers gevonden dan maar op zoek naar memblock*/
forw = membase->first;
if (forw) forw = MEMNEXT(forw);
forwok = 0;
forwok = NULL;
while(forw){
if (forw == memh) break;
if (forw->tag1 != MEMTAG1 || forw->tag2 != MEMTAG2) break;
forwok = forw;
if (forw->next) forw = MEMNEXT(forw->next);
else forw = 0;
else forw = NULL;
}
if (forw == 0) return (0);
if (forw == NULL) return NULL;
back = (MemHead *) membase->last;
if (back) back = MEMNEXT(back);
backok = 0;
backok = NULL;
while(back){
if (back == memh) break;
if (back->tag1 != MEMTAG1 || back->tag2 != MEMTAG2) break;
backok = back;
if (back->prev) back = MEMNEXT(back->prev);
else back = 0;
else back = NULL;
}
}
@@ -791,16 +791,16 @@ static const char *check_memlist(MemHead *memh)
backok->prev = (MemHead *)&forwok->next;
forwok->nextname = backok->name;
} else{
forwok->next = 0;
forwok->next = NULL;
membase->last = (struct localLink *) &forwok->next;
/* membase->last = (struct Link *) &forwok->next; */
}
} else{
if (backok){
backok->prev = 0;
backok->prev = NULL;
membase->first = &backok->next;
} else{
membase->first = membase->last = 0;
membase->first = membase->last = NULL;
}
}
} else{

Binary file not shown.

Before

Width:  |  Height:  |  Size: 205 KiB

After

Width:  |  Height:  |  Size: 205 KiB

View File

@@ -115,8 +115,7 @@ class RENDER_PT_network_settings(NetRenderButtonsPanel, bpy.types.Panel):
def draw(self, context):
layout = self.layout
scene = context.scene
netsettings = scene.network_render
netsettings = context.scene.network_render
verify_address(netsettings)
@@ -157,18 +156,18 @@ class RENDER_PT_network_slave_settings(NetRenderButtonsPanel, bpy.types.Panel):
def draw(self, context):
layout = self.layout
scene = context.scene
rd = scene.render
netsettings = scene.network_render
rd = context.scene.render
netsettings = context.scene.network_render
layout.prop(netsettings, "use_slave_clear")
layout.prop(netsettings, "use_slave_thumb")
layout.prop(netsettings, "use_slave_output_log")
layout.label(text="Threads:")
layout.prop(rd, "threads_mode", expand=True)
sub = layout.column()
sub.enabled = rd.threads_mode == 'FIXED'
sub.prop(rd, "threads")
col = layout.column()
col.enabled = rd.threads_mode == 'FIXED'
col.prop(rd, "threads")
class RENDER_PT_network_master_settings(NetRenderButtonsPanel, bpy.types.Panel):
bl_label = "Master Settings"
@@ -182,8 +181,7 @@ class RENDER_PT_network_master_settings(NetRenderButtonsPanel, bpy.types.Panel):
def draw(self, context):
layout = self.layout
scene = context.scene
netsettings = scene.network_render
netsettings = context.scene.network_render
layout.prop(netsettings, "use_master_broadcast")
layout.prop(netsettings, "use_master_clear")
@@ -200,8 +198,7 @@ class RENDER_PT_network_job(NetRenderButtonsPanel, bpy.types.Panel):
def draw(self, context):
layout = self.layout
scene = context.scene
netsettings = scene.network_render
netsettings = context.scene.network_render
verify_address(netsettings)
@@ -244,8 +241,7 @@ class RENDER_PT_network_job_vcs(NetRenderButtonsPanel, bpy.types.Panel):
def draw(self, context):
layout = self.layout
scene = context.scene
netsettings = scene.network_render
netsettings = context.scene.network_render
layout.operator("render.netclientvcsguess", icon='FILE_REFRESH', text="")
@@ -266,8 +262,7 @@ class RENDER_PT_network_slaves(NeedValidAddress, NetRenderButtonsPanel, bpy.type
def draw(self, context):
layout = self.layout
scene = context.scene
netsettings = scene.network_render
netsettings = context.scene.network_render
row = layout.row()
row.template_list(netsettings, "slaves", netsettings, "active_slave_index", rows=2)
@@ -298,8 +293,7 @@ class RENDER_PT_network_slaves_blacklist(NeedValidAddress, NetRenderButtonsPanel
def draw(self, context):
layout = self.layout
scene = context.scene
netsettings = scene.network_render
netsettings = context.scene.network_render
row = layout.row()
row.template_list(netsettings, "slaves_blacklist", netsettings, "active_blacklisted_slave_index", rows=2)
@@ -329,8 +323,7 @@ class RENDER_PT_network_jobs(NeedValidAddress, NetRenderButtonsPanel, bpy.types.
def draw(self, context):
layout = self.layout
scene = context.scene
netsettings = scene.network_render
netsettings = context.scene.network_render
row = layout.row()
row.template_list(netsettings, "jobs", netsettings, "active_job_index", rows=2)

View File

@@ -26,7 +26,7 @@ to work correctly.
"""
import bpy
from keyingsets_utils import *
import keyingsets_utils
###############################
# Built-In KeyingSets
@@ -37,13 +37,13 @@ class BUILTIN_KSI_Location(bpy.types.KeyingSetInfo):
bl_label = "Location"
# poll - use predefined callback for selected bones/objects
poll = RKS_POLL_selected_items
poll = keyingsets_utils.RKS_POLL_selected_items
# iterator - use callback for selected bones/objects
iterator = RKS_ITER_selected_item
iterator = keyingsets_utils.RKS_ITER_selected_item
# generator - use callback for location
generate = RKS_GEN_location
generate = keyingsets_utils.RKS_GEN_location
# Rotation
@@ -51,13 +51,13 @@ class BUILTIN_KSI_Rotation(bpy.types.KeyingSetInfo):
bl_label = "Rotation"
# poll - use predefined callback for selected bones/objects
poll = RKS_POLL_selected_items
poll = keyingsets_utils.RKS_POLL_selected_items
# iterator - use callback for selected bones/objects
iterator = RKS_ITER_selected_item
iterator = keyingsets_utils.RKS_ITER_selected_item
# generator - use callback for location
generate = RKS_GEN_rotation
generate = keyingsets_utils.RKS_GEN_rotation
# Scale
@@ -65,13 +65,13 @@ class BUILTIN_KSI_Scaling(bpy.types.KeyingSetInfo):
bl_label = "Scaling"
# poll - use predefined callback for selected bones/objects
poll = RKS_POLL_selected_items
poll = keyingsets_utils.RKS_POLL_selected_items
# iterator - use callback for selected bones/objects
iterator = RKS_ITER_selected_item
iterator = keyingsets_utils.RKS_ITER_selected_item
# generator - use callback for location
generate = RKS_GEN_scaling
generate = keyingsets_utils.RKS_GEN_scaling
# ------------
@@ -81,17 +81,17 @@ class BUILTIN_KSI_LocRot(bpy.types.KeyingSetInfo):
bl_label = "LocRot"
# poll - use predefined callback for selected bones/objects
poll = RKS_POLL_selected_items
poll = keyingsets_utils.RKS_POLL_selected_items
# iterator - use callback for selected bones/objects
iterator = RKS_ITER_selected_item
iterator = keyingsets_utils.RKS_ITER_selected_item
# generator
def generate(self, context, ks, data):
# location
RKS_GEN_location(self, context, ks, data)
keyingsets_utils.RKS_GEN_location(self, context, ks, data)
# rotation
RKS_GEN_rotation(self, context, ks, data)
keyingsets_utils.RKS_GEN_rotation(self, context, ks, data)
# LocScale
@@ -99,17 +99,17 @@ class BUILTIN_KSI_LocScale(bpy.types.KeyingSetInfo):
bl_label = "LocScale"
# poll - use predefined callback for selected bones/objects
poll = RKS_POLL_selected_items
poll = keyingsets_utils.RKS_POLL_selected_items
# iterator - use callback for selected bones/objects
iterator = RKS_ITER_selected_item
iterator = keyingsets_utils.RKS_ITER_selected_item
# generator
def generate(self, context, ks, data):
# location
RKS_GEN_location(self, context, ks, data)
keyingsets_utils.RKS_GEN_location(self, context, ks, data)
# scale
RKS_GEN_scaling(self, context, ks, data)
keyingsets_utils.RKS_GEN_scaling(self, context, ks, data)
# LocRotScale
@@ -117,19 +117,19 @@ class BUILTIN_KSI_LocRotScale(bpy.types.KeyingSetInfo):
bl_label = "LocRotScale"
# poll - use predefined callback for selected bones/objects
poll = RKS_POLL_selected_items
poll = keyingsets_utils.RKS_POLL_selected_items
# iterator - use callback for selected bones/objects
iterator = RKS_ITER_selected_item
iterator = keyingsets_utils.RKS_ITER_selected_item
# generator
def generate(self, context, ks, data):
# location
RKS_GEN_location(self, context, ks, data)
keyingsets_utils.RKS_GEN_location(self, context, ks, data)
# rotation
RKS_GEN_rotation(self, context, ks, data)
keyingsets_utils.RKS_GEN_rotation(self, context, ks, data)
# scale
RKS_GEN_scaling(self, context, ks, data)
keyingsets_utils.RKS_GEN_scaling(self, context, ks, data)
# RotScale
@@ -137,17 +137,17 @@ class BUILTIN_KSI_RotScale(bpy.types.KeyingSetInfo):
bl_label = "RotScale"
# poll - use predefined callback for selected bones/objects
poll = RKS_POLL_selected_items
poll = keyingsets_utils.RKS_POLL_selected_items
# iterator - use callback for selected bones/objects
iterator = RKS_ITER_selected_item
iterator = keyingsets_utils.RKS_ITER_selected_item
# generator
def generate(self, context, ks, data):
# rotation
RKS_GEN_rotation(self, context, ks, data)
keyingsets_utils.RKS_GEN_rotation(self, context, ks, data)
# scaling
RKS_GEN_scaling(self, context, ks, data)
keyingsets_utils.RKS_GEN_scaling(self, context, ks, data)
# ------------
@@ -159,13 +159,13 @@ class BUILTIN_KSI_VisualLoc(bpy.types.KeyingSetInfo):
bl_options = {'INSERTKEY_VISUAL'}
# poll - use predefined callback for selected bones/objects
poll = RKS_POLL_selected_items
poll = keyingsets_utils.RKS_POLL_selected_items
# iterator - use callback for selected bones/objects
iterator = RKS_ITER_selected_item
iterator = keyingsets_utils.RKS_ITER_selected_item
# generator - use callback for location
generate = RKS_GEN_location
generate = keyingsets_utils.RKS_GEN_location
# Rotation
@@ -175,13 +175,13 @@ class BUILTIN_KSI_VisualRot(bpy.types.KeyingSetInfo):
bl_options = {'INSERTKEY_VISUAL'}
# poll - use predefined callback for selected bones/objects
poll = RKS_POLL_selected_items
poll = keyingsets_utils.RKS_POLL_selected_items
# iterator - use callback for selected bones/objects
iterator = RKS_ITER_selected_item
iterator = keyingsets_utils.RKS_ITER_selected_item
# generator - use callback for rotation
generate = RKS_GEN_rotation
generate = keyingsets_utils.RKS_GEN_rotation
# VisualLocRot
@@ -191,17 +191,17 @@ class BUILTIN_KSI_VisualLocRot(bpy.types.KeyingSetInfo):
bl_options = {'INSERTKEY_VISUAL'}
# poll - use predefined callback for selected bones/objects
poll = RKS_POLL_selected_items
poll = keyingsets_utils.RKS_POLL_selected_items
# iterator - use callback for selected bones/objects
iterator = RKS_ITER_selected_item
iterator = keyingsets_utils.RKS_ITER_selected_item
# generator
def generate(self, context, ks, data):
# location
RKS_GEN_location(self, context, ks, data)
keyingsets_utils.RKS_GEN_location(self, context, ks, data)
# rotation
RKS_GEN_rotation(self, context, ks, data)
keyingsets_utils.RKS_GEN_rotation(self, context, ks, data)
# ------------
@@ -213,13 +213,13 @@ class BUILTIN_KSI_Available(bpy.types.KeyingSetInfo):
# poll - use predefined callback for selected objects
# TODO: this should really check whether the selected object (or datablock)
# has any animation data defined yet
poll = RKS_POLL_selected_objects
poll = keyingsets_utils.RKS_POLL_selected_objects
# iterator - use callback for selected bones/objects
iterator = RKS_ITER_selected_item
iterator = keyingsets_utils.RKS_ITER_selected_item
# generator - use callback for doing this
generate = RKS_GEN_available
generate = keyingsets_utils.RKS_GEN_available
###############################
@@ -278,7 +278,7 @@ class BUILTIN_KSI_WholeCharacter(bpy.types.KeyingSetInfo):
path = id_path + prop
else:
# standard transforms/properties
path = path_add_property(id_path, prop)
path = keyingsets_utils.path_add_property(id_path, prop)
# add Keying Set entry for this...
if use_groups:
@@ -363,5 +363,3 @@ def unregister():
if __name__ == "__main__":
register()
###############################

View File

@@ -37,18 +37,6 @@ import sys as _sys
def _main():
## security issue, dont allow the $CWD in the path.
## note: this removes "" but not "." which are the same, security
## people need to explain how this is even a fix.
# _sys.path[:] = filter(None, _sys.path)
# because of how the console works. we need our own help() pager func.
# replace the bold function because it adds crazy chars
import pydoc
pydoc.getpager = lambda: pydoc.plainpager
pydoc.Helper.getline = lambda self, prompt: None
pydoc.TextDoc.use_bold = lambda self, text: text
# Possibly temp. addons path
from os.path import join, dirname, normpath
_sys.path.append(normpath(join(dirname(__file__), "..", "..", "addons", "modules")))

View File

@@ -23,10 +23,7 @@ This module contains utility functions specific to blender but
not assosiated with blenders internal data.
"""
from _bpy import register_class
from _bpy import unregister_class
from _bpy import blend_paths
from _bpy import register_class, unregister_class, blend_paths
from _bpy import script_paths as _bpy_script_paths
from _bpy import user_resource as _user_resource
@@ -38,22 +35,26 @@ import addon_utils
def _test_import(module_name, loaded_modules):
import traceback
import time
use_time = _bpy.app.debug
if module_name in loaded_modules:
return None
if "." in module_name:
print("Ignoring '%s', can't import files containing multiple periods." % module_name)
return None
t = time.time()
if use_time:
import time
t = time.time()
try:
mod = __import__(module_name)
except:
import traceback
traceback.print_exc()
return None
if _bpy.app.debug:
if use_time:
print("time %s %.4f" % (module_name, time.time() - t))
loaded_modules.add(mod.__name__) # should match mod.__name__ too
@@ -99,10 +100,11 @@ def load_scripts(reload_scripts=False, refresh_scripts=False):
:arg refresh_scripts: only load scripts which are not already loaded as modules.
:type refresh_scripts: bool
"""
import traceback
import time
use_time = _bpy.app.debug
t_main = time.time()
if use_time:
import time
t_main = time.time()
loaded_modules = set()
@@ -124,6 +126,7 @@ def load_scripts(reload_scripts=False, refresh_scripts=False):
try:
register()
except:
import traceback
traceback.print_exc()
else:
print("\nWarning! '%s' has no register function, this is now a requirement for registerable scripts." % mod.__file__)
@@ -134,6 +137,7 @@ def load_scripts(reload_scripts=False, refresh_scripts=False):
try:
unregister()
except:
import traceback
traceback.print_exc()
def test_reload(mod):
@@ -147,6 +151,7 @@ def load_scripts(reload_scripts=False, refresh_scripts=False):
try:
return imp.reload(mod)
except:
import traceback
traceback.print_exc()
def test_register(mod):
@@ -207,7 +212,7 @@ def load_scripts(reload_scripts=False, refresh_scripts=False):
import gc
print("gc.collect() -> %d" % gc.collect())
if _bpy.app.debug:
if use_time:
print("Python Script Load Time %.4f" % (time.time() - t_main))
@@ -412,29 +417,29 @@ def _bpy_module_classes(module, is_registered=False):
typemap_list = _bpy_types.TypeMap.get(module, ())
i = 0
while i < len(typemap_list):
cls_weakref, path, line = typemap_list[i]
cls_weakref = typemap_list[i]
cls = cls_weakref()
if cls is None:
del typemap_list[i]
else:
if is_registered == cls.is_registered:
yield (cls, path, line)
yield cls
i += 1
def register_module(module, verbose=False):
import traceback
if verbose:
print("bpy.utils.register_module(%r): ..." % module)
for cls, path, line in _bpy_module_classes(module, is_registered=False):
for cls in _bpy_module_classes(module, is_registered=False):
if verbose:
print(" %s of %s:%s" % (cls, path, line))
print(" %r" % cls)
try:
register_class(cls)
except:
print("bpy.utils.register_module(): failed to registering class '%s.%s'" % (cls.__module__, cls.__name__))
print("bpy.utils.register_module(): failed to registering class %r" % cls)
print("\t", path, "line", line)
import traceback
traceback.print_exc()
if verbose:
print("done.\n")
@@ -443,17 +448,17 @@ def register_module(module, verbose=False):
def unregister_module(module, verbose=False):
import traceback
if verbose:
print("bpy.utils.unregister_module(%r): ..." % module)
for cls, path, line in _bpy_module_classes(module, is_registered=True):
for cls in _bpy_module_classes(module, is_registered=True):
if verbose:
print(" %s of %s:%s" % (cls, path, line))
print(" %r" % cls)
try:
unregister_class(cls)
except:
print("bpy.utils.unregister_module(): failed to unregistering class '%s.%s'" % (cls.__module__, cls.__name__))
print("bpy.utils.unregister_module(): failed to unregistering class %r" % cls)
print("\t", path, "line", line)
import traceback
traceback.print_exc()
if verbose:
print("done.\n")

View File

@@ -567,18 +567,15 @@ TypeMap = {}
class RNAMeta(type):
def __new__(cls, name, bases, classdict, **args):
result = type.__new__(cls, name, bases, classdict)
if bases and bases[0] != StructRNA:
import traceback
import weakref
if bases and bases[0] is not StructRNA:
from _weakref import ref as ref
module = result.__module__
# first part of packages only
if "." in module:
module = module[:module.index(".")]
sf = traceback.extract_stack(limit=2)[0]
TypeMap.setdefault(module, []).append((weakref.ref(result), sf[0], sf[1]))
TypeMap.setdefault(module, []).append(ref(result))
return result
@@ -586,7 +583,20 @@ class RNAMeta(type):
def is_registered(cls):
return "bl_rna" in cls.__dict__
import collections
class OrderedDictMini(dict):
def __init__(self, *args):
self.order = []
dict.__init__(self, args)
def __setitem__(self, key, val):
dict.__setitem__(self, key, val)
if key not in self.order:
self.order.append(key)
def __delitem__(self, key):
dict.__delitem__(self, key)
self.order.remove(key)
class RNAMetaPropGroup(RNAMeta, StructMetaPropGroup):
@@ -594,13 +604,8 @@ class RNAMetaPropGroup(RNAMeta, StructMetaPropGroup):
class OrderedMeta(RNAMeta):
def __init__(cls, name, bases, attributes):
super(OrderedMeta, cls).__init__(name, bases, attributes)
cls.order = list(attributes.keys())
def __prepare__(name, bases, **kwargs):
return collections.OrderedDict()
return OrderedDictMini() # collections.OrderedDict()
# Only defined so operators members can be used by accessing self.order

View File

@@ -23,5 +23,5 @@ def image_load(filepath, dirpath, place_holder=False, recursive=False, convert_c
import bpy
try:
return bpy.data.images.load(filepath)
except SystemError:
except RuntimeError:
return bpy.data.images.new("Untitled", 128, 128)

View File

@@ -19,7 +19,7 @@
# <pep8 compliant>
import bpy
from bpy.props import *
from bpy.props import StringProperty, BoolProperty
class ExportHelper:

View File

@@ -19,10 +19,11 @@
# <pep8 compliant>
import bpy
import mathutils
from math import cos, sin, pi
def add_torus(major_rad, minor_rad, major_seg, minor_seg):
from math import cos, sin, pi
Vector = mathutils.Vector
Quaternion = mathutils.Quaternion
@@ -71,7 +72,7 @@ def add_torus(major_rad, minor_rad, major_seg, minor_seg):
return verts, faces
from bpy.props import *
from bpy.props import FloatProperty, IntProperty, BoolProperty, FloatVectorProperty
class AddTorus(bpy.types.Operator):

View File

@@ -33,6 +33,20 @@ def add_scrollback(text, text_type):
type=text_type)
def replace_help(namespace):
def _help(value):
# because of how the console works. we need our own help() pager func.
# replace the bold function because it adds crazy chars
import pydoc
pydoc.getpager = lambda: pydoc.plainpager
pydoc.Helper.getline = lambda self, prompt: None
pydoc.TextDoc.use_bold = lambda self, text: text
help(value)
namespace["help"] = _help
def get_console(console_id):
'''
helper function for console operators
@@ -83,6 +97,8 @@ def get_console(console_id):
namespace["bpy"] = bpy
namespace["C"] = bpy.context
replace_help(namespace)
console = InteractiveConsole(locals=namespace, filename="<blender_console>")
console.push("from mathutils import *")

View File

@@ -18,18 +18,17 @@
# <pep8 compliant>
from math import *
import bpy
from mathutils import *
def main(context):
from math import pi
def cleanupEulCurve(fcv):
keys = []
for k in fcv.keyframe_points:
keys.append([k.handle_left.copy(), k.co.copy(), k.handle_right.copy()])
print(keys)
for i in range(len(keys)):
cur = keys[i]

View File

@@ -98,7 +98,7 @@ def bake(frame_start, frame_end, step=1, only_selected=False):
pose_items = pose.bones.items()
for name, pbone in pose_items:
if only_selected and not pbone.select:
if only_selected and not pbone.bone.select:
continue
for f in frame_range:
@@ -124,7 +124,7 @@ def bake(frame_start, frame_end, step=1, only_selected=False):
return action
from bpy.props import *
from bpy.props import IntProperty, BoolProperty
class BakeAction(bpy.types.Operator):

View File

@@ -19,7 +19,7 @@
# <pep8 compliant>
import bpy
from bpy.props import *
from bpy.props import StringProperty, BoolProperty, EnumProperty, IntProperty
class SelectPattern(bpy.types.Operator):

View File

@@ -230,7 +230,7 @@ def align_objects(align_x, align_y, align_z, align_mode, relative_to):
return True
from bpy.props import *
from bpy.props import EnumProperty
class AlignObjects(bpy.types.Operator):
@@ -239,7 +239,7 @@ class AlignObjects(bpy.types.Operator):
bl_label = "Align Objects"
bl_options = {'REGISTER', 'UNDO'}
align_mode = bpy.props.EnumProperty(items=(
align_mode = EnumProperty(items=(
('OPT_1', "Negative Sides", ""),
('OPT_2', "Centers", ""),
('OPT_3', "Positive Sides", "")),
@@ -247,7 +247,7 @@ class AlignObjects(bpy.types.Operator):
description="",
default='OPT_2')
relative_to = bpy.props.EnumProperty(items=(
relative_to = EnumProperty(items=(
('OPT_1', "Scene Origin", ""),
('OPT_2', "3D Cursor", ""),
('OPT_3', "Selection", ""),

View File

@@ -84,7 +84,7 @@ def randomize_selected(seed, delta, loc, rot, scale, scale_even):
uniform(0.0, 0.0), uniform(0.0, 0.0), uniform(0.0, 0.0)
from bpy.props import *
from bpy.props import IntProperty, BoolProperty, FloatProperty, FloatVectorProperty
class RandomizeLocRotSize(bpy.types.Operator):

View File

@@ -20,7 +20,7 @@
import bpy
from bpy.props import *
from bpy.props import IntProperty
class SequencerCrossfadeSounds(bpy.types.Operator):

View File

@@ -19,10 +19,9 @@
# <pep8 compliant>
import bpy
from bpy.props import *
def write_svg(fw, mesh, image_width, image_height, face_iter):
def write_svg(fw, mesh, image_width, image_height, opacity, face_iter_func):
# for making an XML compatible string
from xml.sax.saxutils import escape
from os.path import basename
@@ -45,14 +44,17 @@ def write_svg(fw, mesh, image_width, image_height, face_iter):
fill_settings.append(fill_default)
faces = mesh.faces
for i, uvs in face_iter:
for i, uvs in face_iter_func():
try: # rare cases material index is invalid.
fill = fill_settings[faces[i].material_index]
except IndexError:
fill = fill_default
fw('<polygon %s fill-opacity="0.5" stroke="black" stroke-width="1px" \n' % fill)
fw(' points="')
fw('<polygon stroke="black" stroke-width="1px"')
if opacity > 0.0:
fw(' %s fill-opacity="%.2g"' % (fill, opacity))
fw(' points="')
for j, uv in enumerate(uvs):
x, y = uv[0], 1.0 - uv[1]
@@ -62,55 +64,70 @@ def write_svg(fw, mesh, image_width, image_height, face_iter):
fw('</svg>\n')
def write_eps(fw, mesh, image_width, image_height, face_iter):
fw('%!PS-Adobe-3.0 EPSF-3.0\n')
def write_eps(fw, mesh, image_width, image_height, opacity, face_iter_func):
fw("%!PS-Adobe-3.0 EPSF-3.0\n")
fw("%%%%Creator: Blender %s\n" % bpy.app.version_string)
fw('%%Pages: 1\n')
fw('%%Orientation: Portrait\n')
fw("%%Pages: 1\n")
fw("%%Orientation: Portrait\n")
fw("%%%%BoundingBox: 0 0 %d %d\n" % (image_width, image_height))
fw("%%%%HiResBoundingBox: 0.0 0.0 %.4f %.4f\n" % (image_width, image_height))
fw('%%EndComments\n')
fw('%%Page: 1 1\n')
fw('0 0 translate\n')
fw('1.0 1.0 scale\n')
fw('0 0 0 setrgbcolor\n')
fw('[] 0 setdash\n')
fw('1 setlinewidth\n')
fw('1 setlinejoin\n')
fw('1 setlinecap\n')
fw('/DRAW {')
# can remove from here to next comment to disable filling, aparently alpha is not supported
fw('gsave\n')
fw('0.7 setgray\n')
fw('fill\n')
fw('grestore\n')
fw('0 setgray\n')
# remove to here
fw('stroke\n')
fw('} def\n')
fw('newpath\n')
fw("%%EndComments\n")
fw("%%Page: 1 1\n")
fw("0 0 translate\n")
fw("1.0 1.0 scale\n")
fw("0 0 0 setrgbcolor\n")
fw("[] 0 setdash\n")
fw("1 setlinewidth\n")
fw("1 setlinejoin\n")
fw("1 setlinecap\n")
firstline = True
for i, uvs in face_iter:
for j, uv in enumerate(uvs):
x, y = uv[0], uv[1]
if j == 0:
if not firstline:
fw('closepath\n')
fw('DRAW\n')
fw('newpath\n')
firstline = False
fw('%.5f %.5f moveto\n' % (x * image_width, y * image_height))
faces = mesh.faces
if opacity > 0.0:
for i, mat in enumerate(mesh.materials if mesh.materials else [None]):
fw("/DRAW_%d {" % i)
fw("gsave\n")
if mat:
color = tuple((1.0 - ((1.0 - c) * opacity)) for c in mat.diffuse_color)
else:
fw('%.5f %.5f lineto\n' % (x * image_width, y * image_height))
color = 1.0, 1.0, 1.0
fw("%.3g %.3g %.3g setrgbcolor\n" % color)
fw("fill\n")
fw("grestore\n")
fw("0 setgray\n")
fw("} def\n")
fw('closepath\n')
fw('DRAW\n')
fw('showpage\n')
fw('%%EOF\n')
# fill
for i, uvs in face_iter_func():
fw("newpath\n")
for j, uv in enumerate(uvs):
uv_scale = (uv[0] * image_width, uv[1] * image_height)
if j == 0:
fw("%.5f %.5f moveto\n" % uv_scale)
else:
fw("%.5f %.5f lineto\n" % uv_scale)
fw("closepath\n")
fw("DRAW_%d\n" % faces[i].material_index)
# stroke only
for i, uvs in face_iter_func():
fw("newpath\n")
for j, uv in enumerate(uvs):
uv_scale = (uv[0] * image_width, uv[1] * image_height)
if j == 0:
fw("%.5f %.5f moveto\n" % uv_scale)
else:
fw("%.5f %.5f lineto\n" % uv_scale)
fw("closepath\n")
fw("stroke\n")
fw("showpage\n")
fw("%%EOF\n")
def write_png(fw, mesh_source, image_width, image_height, face_iter):
def write_png(fw, mesh_source, image_width, image_height, opacity, face_iter_func):
filepath = fw.__self__.name
fw.__self__.close()
@@ -132,7 +149,7 @@ def write_png(fw, mesh_source, image_width, image_height, face_iter):
# get unique UV's incase there are many overlapping which slow down filling.
face_hash_3 = set()
face_hash_4 = set()
for i, uv in face_iter:
for i, uv in face_iter_func():
material_index = faces_source[i].material_index
if len(uv) == 3:
face_hash_3.add((uv[0][0], uv[0][1], uv[1][0], uv[1][1], uv[2][0], uv[2][1], material_index))
@@ -196,7 +213,7 @@ def write_png(fw, mesh_source, image_width, image_height, face_iter):
mat_solid.use_shadeless = True
mat_solid.use_transparency = True
mat_solid.alpha = 0.25
mat_solid.alpha = opacity
material_wire.type = 'WIRE'
material_wire.use_shadeless = True
@@ -239,6 +256,9 @@ def write_png(fw, mesh_source, image_width, image_height, face_iter):
bpy.data.materials.remove(mat_solid)
from bpy.props import StringProperty, BoolProperty, EnumProperty, IntVectorProperty, FloatProperty
class ExportUVLayout(bpy.types.Operator):
"""Export UV layout to file"""
@@ -257,6 +277,7 @@ class ExportUVLayout(bpy.types.Operator):
description="File format to export the UV layout to",
default='PNG')
size = IntVectorProperty(size=2, default=(1024, 1024), min=8, max=32768, description="Dimensions of the exported file")
opacity = FloatProperty(name="Fill Opacity", min=0.0, max=1.0, default=0.25)
@classmethod
def poll(cls, context):
@@ -340,11 +361,13 @@ class ExportUVLayout(bpy.types.Operator):
elif mode == 'PNG':
func = write_png
func(fw, mesh, self.size[0], self.size[1], self._face_uv_iter(context))
func(fw, mesh, self.size[0], self.size[1], self.opacity, lambda: self._face_uv_iter(context))
if is_editmode:
bpy.ops.object.mode_set(mode='EDIT', toggle=False)
file.close()
return {'FINISHED'}
def check(self, context):

View File

@@ -23,9 +23,7 @@
# <pep8 compliant>
from mathutils import Matrix, Vector, geometry
import time
import bpy
from math import cos, radians
DEG_TO_RAD = 0.017453292519943295 # pi/180.0
SMALL_NUM = 0.000000001
@@ -36,14 +34,10 @@ global USER_FILL_HOLES_QUALITY
USER_FILL_HOLES = None
USER_FILL_HOLES_QUALITY = None
dict_matrix = {}
def pointInTri2D(v, v1, v2, v3):
global dict_matrix
key = v1.x, v1.y, v2.x, v2.y, v3.x, v3.y
# Commented because its slower to do teh bounds check, we should realy cache the bounds info for each face.
# Commented because its slower to do the bounds check, we should realy cache the bounds info for each face.
'''
# BOUNDS CHECK
xmin= 1000000
@@ -268,21 +262,6 @@ def testNewVecLs2DRotIsBetter(vecs, mat=-1, bestAreaSoFar = -1):
h = maxy-miny
return (w*h, w,h), vecs # Area, vecs
# Takes a list of faces that make up a UV island and rotate
# until they optimally fit inside a square.
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([\
Matrix.Rotation( radians(rot_angle), 2),\
Matrix.Rotation( radians(-rot_angle), 2)])
rot_angle = rot_angle/2.0
def optiRotateUvIsland(faces):
global currentArea
@@ -464,7 +443,7 @@ def mergeUvIslands(islandList):
# if targetIsland[3] > (sourceIsland[2]) and\ #
# print USER_FREE_SPACE_TO_TEST_QUALITY, 'ass'
# print USER_FREE_SPACE_TO_TEST_QUALITY
if targetIsland[2] > (sourceIsland[1] * USER_FREE_SPACE_TO_TEST_QUALITY) and\
targetIsland[4] > sourceIsland[4] and\
targetIsland[5] > sourceIsland[5]:
@@ -734,7 +713,7 @@ def packIslands(islandList):
#print '\tPacking UV Islands...'
#XXX Window.DrawProgressBar(0.7, 'Packing %i UV Islands...' % len(packBoxes) )
time1 = time.time()
# time1 = time.time()
packWidth, packHeight = geometry.box_pack_2d(packBoxes)
# print 'Box Packing Time:', time.time() - time1
@@ -793,6 +772,27 @@ class thickface(object):
self.area = face.area
self.edge_keys = face.edge_keys
def main_consts():
from math import radians
global ROTMAT_2D_POS_90D
global ROTMAT_2D_POS_45D
global RotMatStepRotation
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([\
Matrix.Rotation( radians(rot_angle), 2),\
Matrix.Rotation( radians(-rot_angle), 2)])
rot_angle = rot_angle/2.0
global ob
ob = None
def main(context, island_margin, projection_limit):
@@ -800,6 +800,21 @@ def main(context, island_margin, projection_limit):
global USER_FILL_HOLES_QUALITY
global USER_STRETCH_ASPECT
global USER_ISLAND_MARGIN
from math import cos
import time
global dict_matrix
dict_matrix = {}
# Constants:
# Takes a list of faces that make up a UV island and rotate
# until they optimally fit inside a square.
global ROTMAT_2D_POS_90D
global ROTMAT_2D_POS_45D
global RotMatStepRotation
main_consts()
#XXX objects= bpy.data.scenes.active.objects
objects = context.selected_editable_objects
@@ -868,7 +883,7 @@ def main(context, island_margin, projection_limit):
time1 = time.time()
# Tag as False se we dont operate on teh same mesh twice.
# Tag as False se we dont operate on the same mesh twice.
#XXX bpy.data.meshes.tag = False
for me in bpy.data.meshes:
me.tag = False
@@ -1074,6 +1089,8 @@ def main(context, island_margin, projection_limit):
if is_editmode:
bpy.ops.object.mode_set(mode='EDIT')
dict_matrix.clear()
#XXX Window.DrawProgressBar(1.0, "")
#XXX Window.WaitCursor(0)
#XXX Window.RedrawAll()
@@ -1098,7 +1115,7 @@ def main(context, island_margin, projection_limit):
]
"""
from bpy.props import *
from bpy.props import FloatProperty
class SmartProject(bpy.types.Operator):

View File

@@ -30,16 +30,9 @@
# but results are far more accurate
#
import bpy
import math
import time
from mathutils import Vector
from bpy.props import *
def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean, dirt_only):
## Window.WaitCursor(1)
from mathutils import Vector
from math import acos
#BPyMesh.meshCalcNormals(me)
@@ -76,7 +69,7 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean,
vec /= tot_con
# angle is the acos of the dot product between vert and connected verts normals
ang = math.acos(no.dot(vec))
ang = acos(no.dot(vec))
# enforce min/max
ang = max(clamp_dirt, ang)
@@ -146,7 +139,9 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean,
col[1] = tone * col[1]
col[2] = tone * col[2]
## Window.WaitCursor(0)
import bpy
from bpy.props import FloatProperty, IntProperty, BoolProperty
class VertexPaintDirt(bpy.types.Operator):
@@ -162,6 +157,8 @@ class VertexPaintDirt(bpy.types.Operator):
dirt_only = BoolProperty(name="Dirt Only", description="Dont calculate cleans for convex areas", default=False)
def execute(self, context):
import time
from math import radians
obj = context.object
if not obj or obj.type != 'MESH':
@@ -172,7 +169,7 @@ class VertexPaintDirt(bpy.types.Operator):
t = time.time()
applyVertexDirt(mesh, self.blur_iterations, self.blur_strength, math.radians(self.dirt_angle), math.radians(self.clean_angle), self.dirt_only)
applyVertexDirt(mesh, self.blur_iterations, self.blur_strength, radians(self.dirt_angle), radians(self.clean_angle), self.dirt_only)
print('Dirt calculated in %.6f' % (time.time() - t))

View File

@@ -19,11 +19,9 @@
# <pep8 compliant>
import bpy
from bpy.props import *
from bpy.props import StringProperty, BoolProperty, IntProperty, FloatProperty
from rna_prop_ui import rna_idprop_ui_prop_get, rna_idprop_ui_prop_clear
class MESH_OT_delete_edgeloop(bpy.types.Operator):
'''Delete an edge loop by merging the faces on each side to a single face loop'''
bl_idname = "mesh.delete_edgeloop"
@@ -702,9 +700,6 @@ class WM_OT_doc_edit(bpy.types.Operator):
return wm.invoke_props_dialog(self, width=600)
from bpy.props import *
rna_path = StringProperty(name="Property Edit",
description="Property data_path edit", maxlen=1024, default="", options={'HIDDEN'})

View File

@@ -1,5 +1,4 @@
import bpy
from keyingsets_utils import *
class BUILTIN_KSI_hello(bpy.types.KeyingSetInfo):
@@ -7,7 +6,7 @@ class BUILTIN_KSI_hello(bpy.types.KeyingSetInfo):
# poll - test for whether Keying Set can be used at all
def poll(ksi, context):
return (context.active_object) or (context.selected_objects)
return context.active_object or context.selected_objects
# iterator - go over all relevant data, calling generate()
def iterator(ksi, context, ks):

View File

@@ -13,8 +13,7 @@ def write_some_data(context, filepath, use_some_setting):
# ExportHelper is a helper class, defines filename and
# invoke() function which calls the file selector.
from io_utils import ExportHelper
from bpy.props import *
from bpy.props import StringProperty, BoolProperty, EnumProperty
class ExportSomeData(bpy.types.Operator, ExportHelper):
@@ -31,7 +30,9 @@ class ExportSomeData(bpy.types.Operator, ExportHelper):
# to the class instance from the operator settings before calling.
use_setting = BoolProperty(name="Example Boolean", description="Example Tooltip", default=True)
type = bpy.props.EnumProperty(items=(('OPT_A', "First Option", "Description one"), ('OPT_B', "Second Option", "Description two.")),
type = EnumProperty(items=(('OPT_A', "First Option", "Description one"),
('OPT_B', "Second Option", "Description two."),
),
name="Example Enum",
description="Choose between two items",
default='OPT_A')

View File

@@ -34,7 +34,7 @@ def add_box(width, height, depth):
return vertices, faces
from bpy.props import *
from bpy.props import FloatProperty, BoolProperty, FloatVectorProperty
class AddBox(bpy.types.Operator):

View File

@@ -1,5 +1,5 @@
import bpy
from bpy.props import *
from bpy.props import IntProperty, FloatProperty
class ModalOperator(bpy.types.Operator):

View File

@@ -58,24 +58,17 @@ class DATA_PT_skeleton(ArmatureButtonsPanel, bpy.types.Panel):
layout.prop(arm, "pose_position", expand=True)
split = layout.split()
col = split.column()
col = layout.column()
col.label(text="Layers:")
col.prop(arm, "layers", text="")
col.label(text="Protected Layers:")
col.prop(arm, "layers_protected", text="")
col.label(text="Deform:")
split = layout.split()
col = split.column()
col.prop(arm, "use_deform_vertex_groups", text="Vertex Groups")
col.prop(arm, "use_deform_envelopes", text="Envelopes")
col = split.column()
col.prop(arm, "use_deform_preserve_volume", text="Quaternion")
layout.label(text="Deform:")
flow = layout.column_flow()
flow.prop(arm, "use_deform_vertex_groups", text="Vertex Groups")
flow.prop(arm, "use_deform_envelopes", text="Envelopes")
flow.prop(arm, "use_deform_preserve_volume", text="Quaternion")
class DATA_PT_display(ArmatureButtonsPanel, bpy.types.Panel):
@@ -87,7 +80,7 @@ class DATA_PT_display(ArmatureButtonsPanel, bpy.types.Panel):
ob = context.object
arm = context.armature
layout.row().prop(arm, "draw_type", expand=True)
layout.prop(arm, "draw_type", expand=True)
split = layout.split()
@@ -137,10 +130,10 @@ class DATA_PT_bone_groups(ArmatureButtonsPanel, bpy.types.Panel):
col.prop(group, "color_set")
if group.color_set:
col = split.column()
subrow = col.row(align=True)
subrow.prop(group.colors, "normal", text="")
subrow.prop(group.colors, "select", text="")
subrow.prop(group.colors, "active", text="")
sub = col.row(align=True)
sub.prop(group.colors, "normal", text="")
sub.prop(group.colors, "select", text="")
sub.prop(group.colors, "active", text="")
row = layout.row()
row.active = (ob.proxy is None)
@@ -168,8 +161,7 @@ class DATA_PT_pose_library(ArmatureButtonsPanel, bpy.types.Panel):
ob = context.object
poselib = ob.pose_library
row = layout.row()
row.template_ID(ob, "pose_library", new="poselib.new", unlink="poselib.unlink")
layout.template_ID(ob, "pose_library", new="poselib.new", unlink="poselib.unlink")
if poselib:
row = layout.row()
@@ -190,8 +182,7 @@ class DATA_PT_pose_library(ArmatureButtonsPanel, bpy.types.Panel):
col.operator("poselib.pose_remove", icon='ZOOMOUT', text="").pose = pose_marker_active.name
col.operator("poselib.apply_pose", icon='ZOOM_SELECTED', text="").pose_index = poselib.pose_markers.active_index
row = layout.row()
row.operator("poselib.action_sanitise")
layout.operator("poselib.action_sanitise")
# TODO: this panel will soon be depreceated too
@@ -207,16 +198,15 @@ class DATA_PT_ghost(ArmatureButtonsPanel, bpy.types.Panel):
split = layout.split()
col = split.column()
col = split.column(align=True)
sub = col.column(align=True)
if arm.ghost_type == 'RANGE':
sub.prop(arm, "ghost_frame_start", text="Start")
sub.prop(arm, "ghost_frame_end", text="End")
sub.prop(arm, "ghost_size", text="Step")
col.prop(arm, "ghost_frame_start", text="Start")
col.prop(arm, "ghost_frame_end", text="End")
col.prop(arm, "ghost_size", text="Step")
elif arm.ghost_type == 'CURRENT_FRAME':
sub.prop(arm, "ghost_step", text="Range")
sub.prop(arm, "ghost_size", text="Step")
col.prop(arm, "ghost_step", text="Range")
col.prop(arm, "ghost_size", text="Step")
col = split.column()
col.label(text="Display:")
@@ -236,11 +226,9 @@ class DATA_PT_iksolver_itasc(ArmatureButtonsPanel, bpy.types.Panel):
layout = self.layout
ob = context.object
itasc = ob.pose.ik_param
row = layout.row()
row.prop(ob.pose, "ik_solver")
layout.prop(ob.pose, "ik_solver")
if itasc:
layout.prop(itasc, "mode", expand=True)
@@ -249,13 +237,10 @@ class DATA_PT_iksolver_itasc(ArmatureButtonsPanel, bpy.types.Panel):
layout.label(text="Reiteration:")
layout.prop(itasc, "reiteration_method", expand=True)
split = layout.split()
split.active = not simulation or itasc.reiteration_method != 'NEVER'
col = split.column()
col.prop(itasc, "precision")
col = split.column()
col.prop(itasc, "iterations")
row = layout.row()
row.active = not simulation or itasc.reiteration_method != 'NEVER'
row.prop(itasc, "precision")
row.prop(itasc, "iterations")
if simulation:
layout.prop(itasc, "use_auto_step")

View File

@@ -573,6 +573,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
col.prop(md, "edge_crease_inner", text="Inner")
col.prop(md, "edge_crease_outer", text="Outer")
col.prop(md, "edge_crease_rim", text="Rim")
col.label(text="Material Index Offset:")
col = split.column()
@@ -586,8 +587,13 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
col.prop(md, "use_rim")
colsub = col.column()
colsub.label()
rowsub = colsub.split(align=True, percentage=0.4)
rowsub.prop(md, "material_offset", text="")
colsub = rowsub.row()
colsub.active = md.use_rim
colsub.prop(md, "use_rim_material")
colsub.prop(md, "material_offset_rim", text="Rim")
def SUBSURF(self, layout, ob, md):
layout.row().prop(md, "subdivision_type", expand=True)

View File

@@ -56,7 +56,7 @@ class PHYSICS_PT_game_physics(PhysicsButtonsPanel, bpy.types.Panel):
col.prop(ob, "hide_render", text="Invisible") # out of place but useful
col = split.column()
col.prop(game, "use_material_physics")
col.prop(game, "use_material_physics_fh")
col.prop(game, "use_rotate_from_normal")
col.prop(game, "use_sleep")
@@ -356,7 +356,7 @@ class RENDER_PT_game_display(RenderButtonsPanel, bpy.types.Panel):
flow.prop(gs, "show_framerate_profile", text="Framerate and Profile")
flow.prop(gs, "show_physics_visualization", text="Physics Visualization")
flow.prop(gs, "use_deprecation_warnings")
flow.prop(gs, "show_mouse")
flow.prop(gs, "show_mouse", text="Mouse Cursor")
class RENDER_PT_game_sound(RenderButtonsPanel, bpy.types.Panel):

View File

@@ -619,16 +619,21 @@ class MATERIAL_PT_physics(MaterialButtonsPanel, bpy.types.Panel):
phys = context.material.physics # dont use node material
split = layout.split()
row = split.row()
row.prop(phys, "friction")
row.prop(phys, "elasticity", slider=True)
col = split.column()
col.prop(phys, "distance")
col.prop(phys, "friction")
col.prop(phys, "use_normal_align")
col = split.column()
col.prop(phys, "force", slider=True)
col.prop(phys, "elasticity", slider=True)
col.prop(phys, "damping", slider=True)
row = layout.row()
row.label(text="Force Field:")
row = layout.row()
row.prop(phys, "fh_force")
row.prop(phys, "fh_damping", slider=True)
row = layout.row()
row.prop(phys, "fh_distance")
row.prop(phys, "use_fh_normal")
class MATERIAL_PT_strand(MaterialButtonsPanel, bpy.types.Panel):

View File

@@ -502,8 +502,8 @@ class ConstraintButtonsPanel():
layout.prop(con, "offset")
row = layout.row()
#row.label(text="Min/Max:")
row.prop(con, "floor_location", expand=True, text="Min/Max:")
row.label(text="Min/Max:")
row.prop(con, "floor_location", expand=True)
self.space_template(layout, con)
@@ -535,32 +535,86 @@ class ConstraintButtonsPanel():
layout.label(text="Limits:")
split = layout.split()
col = split.column(align=True)
col.prop(con, "use_angular_limit_x", text="Angular X")
col.prop(con, "use_angular_limit_y", text="Angular Y")
col.prop(con, "use_angular_limit_z", text="Angular Z")
col = split.column()
col.prop(con, "use_angular_limit_x", text="Angle X")
sub = col.column()
sub.active = con.use_angular_limit_x
sub.prop(con, "limit_angle_max_x", text="")
col = split.column()
col.prop(con, "limit_cone_min", text="")
col.prop(con, "use_angular_limit_y", text="Angle Y")
sub = col.column()
sub.active = con.use_angular_limit_y
sub.prop(con, "limit_angle_max_y", text="")
col = split.column()
col.prop(con, "limit_cone_max", text="")
col.prop(con, "use_angular_limit_z", text="Angle Z")
sub = col.column()
sub.active = con.use_angular_limit_z
sub.prop(con, "limit_angle_max_z", text="")
elif con.pivot_type == 'GENERIC_6_DOF':
layout.label(text="Limits:")
split = layout.split()
col = split.column(align=True)
col.prop(con, "use_limit_x", text="X")
sub = col.column()
sub.active = con.use_limit_x
sub.prop(con, "limit_min_x", text="Min")
sub.prop(con, "limit_max_x", text="Max")
col = split.column(align=True)
col.prop(con, "use_limit_y", text="Y")
sub = col.column()
sub.active = con.use_limit_y
sub.prop(con, "limit_min_y", text="Min")
sub.prop(con, "limit_max_y", text="Max")
col = split.column(align=True)
col.prop(con, "use_limit_z", text="Z")
col.prop(con, "use_angular_limit_x", text="Angular X")
col.prop(con, "use_angular_limit_y", text="Angular Y")
col.prop(con, "use_angular_limit_z", text="Angular Z")
sub = col.column()
sub.active = con.use_limit_z
sub.prop(con, "limit_min_z", text="Min")
sub.prop(con, "limit_max_z", text="Max")
split = layout.split()
col = split.column(align=True)
col.prop(con, "use_angular_limit_x", text="Angle X")
sub = col.column()
sub.active = con.use_angular_limit_x
sub.prop(con, "limit_angle_min_x", text="Min")
sub.prop(con, "limit_angle_max_x", text="Max")
col = split.column(align=True)
col.prop(con, "use_angular_limit_y", text="Angle Y")
sub = col.column()
sub.active = con.use_angular_limit_y
sub.prop(con, "limit_angle_min_y", text="Min")
sub.prop(con, "limit_angle_max_y", text="Max")
col = split.column(align=True)
col.prop(con, "use_angular_limit_z", text="Angle Z")
sub = col.column()
sub.active = con.use_angular_limit_z
sub.prop(con, "limit_angle_min_z", text="Min")
sub.prop(con, "limit_angle_max_z", text="Max")
col = split.column()
col.prop(con, "limit_generic_min", text="")
col = split.column()
col.prop(con, "limit_generic_max", text="")
elif con.pivot_type == 'HINGE':
layout.label(text="Limits:")
split = layout.split()
row = split.row(align=True)
col = row.column()
col.prop(con, "use_angular_limit_x", text="Angle X")
col = row.column()
col.active = con.use_angular_limit_x
col.prop(con, "limit_angle_min_x", text="Min")
col = row.column()
col.active = con.use_angular_limit_x
col.prop(con, "limit_angle_max_x", text="Max")
def CLAMP_TO(self, context, layout, con):
self.target_template(layout, con)
@@ -569,8 +623,7 @@ class ConstraintButtonsPanel():
row.label(text="Main Axis:")
row.prop(con, "main_axis", expand=True)
row = layout.row()
row.prop(con, "use_cyclic")
layout.prop(con, "use_cyclic")
def TRANSFORM(self, context, layout, con):
self.target_template(layout, con)
@@ -737,3 +790,4 @@ def unregister():
if __name__ == "__main__":
register()

View File

@@ -220,10 +220,8 @@ class PARTICLE_PT_emission(ParticleButtonsPanel, bpy.types.Panel):
col.prop(part, "lifetime")
col.prop(part, "lifetime_random", slider=True)
layout.row().label(text="Emit From:")
row = layout.row()
row.prop(part, "emit_from", expand=True)
layout.label(text="Emit From:")
layout.prop(part, "emit_from", expand=True)
row = layout.row()
if part.emit_from == 'VERT':
@@ -236,12 +234,9 @@ class PARTICLE_PT_emission(ParticleButtonsPanel, bpy.types.Panel):
row.prop(part, "use_even_distribution")
if part.emit_from == 'FACE' or part.emit_from == 'VOLUME':
row = layout.row()
row.prop(part, "distribution", expand=True)
layout.prop(part, "distribution", expand=True)
row = layout.row()
if part.distribution == 'JIT':
row.prop(part, "userjit", text="Particles/Face")
row.prop(part, "jitter_factor", text="Jittering Amount", slider=True)
@@ -773,45 +768,45 @@ class PARTICLE_PT_render(ParticleButtonsPanel, bpy.types.Panel):
split = layout.split()
sub = split.column()
sub.prop(part, "use_render_emitter")
sub.prop(part, "use_parent_particles")
sub = split.column()
sub.prop(part, "show_unborn")
sub.prop(part, "use_dead")
col = split.column()
col.prop(part, "use_render_emitter")
col.prop(part, "use_parent_particles")
col = split.column()
col.prop(part, "show_unborn")
col.prop(part, "use_dead")
row = layout.row()
row.prop(part, "render_type", expand=True)
layout.prop(part, "render_type", expand=True)
split = layout.split()
sub = split.column()
col = split.column()
if part.render_type == 'LINE':
sub.prop(part, "line_length_tail")
sub.prop(part, "line_length_head")
sub = split.column()
sub.prop(part, "use_velocity_length")
col.prop(part, "line_length_tail")
col.prop(part, "line_length_head")
split.prop(part, "use_velocity_length")
elif part.render_type == 'PATH':
sub.prop(part, "use_strand_primitive")
subsub = sub.column()
subsub.active = (part.use_strand_primitive is False)
subsub.prop(part, "use_render_adaptive")
subsub = sub.column()
subsub.active = part.use_render_adaptive or part.use_strand_primitive == True
subsub.prop(part, "adaptive_angle")
subsub = sub.column()
subsub.active = (part.use_render_adaptive is True and part.use_strand_primitive is False)
subsub.prop(part, "adaptive_pixel")
sub.prop(part, "use_hair_bspline")
sub.prop(part, "render_step", text="Steps")
col.prop(part, "use_strand_primitive")
sub = col.column()
sub.active = (part.use_strand_primitive is False)
sub.prop(part, "use_render_adaptive")
sub = col.column()
sub.active = part.use_render_adaptive or part.use_strand_primitive == True
sub.prop(part, "adaptive_angle")
sub = col.column()
sub.active = (part.use_render_adaptive is True and part.use_strand_primitive is False)
sub.prop(part, "adaptive_pixel")
col.prop(part, "use_hair_bspline")
col.prop(part, "render_step", text="Steps")
sub = split.column()
sub.label(text="Timing:")
sub.prop(part, "use_absolute_path_time")
sub.prop(part, "path_start", text="Start", slider=not part.use_absolute_path_time)
sub.prop(part, "path_end", text="End", slider=not part.use_absolute_path_time)
sub.prop(part, "length_random", text="Random", slider=True)
col = split.column()
col.label(text="Timing:")
col.prop(part, "use_absolute_path_time")
col.prop(part, "path_start", text="Start", slider=not part.use_absolute_path_time)
col.prop(part, "path_end", text="End", slider=not part.use_absolute_path_time)
col.prop(part, "length_random", text="Random", slider=True)
row = layout.row()
col = row.column()
@@ -830,22 +825,23 @@ class PARTICLE_PT_render(ParticleButtonsPanel, bpy.types.Panel):
sub.prop(part, "simplify_viewport")
elif part.render_type == 'OBJECT':
sub.prop(part, "dupli_object")
sub.prop(part, "use_global_dupli")
col.prop(part, "dupli_object")
col.prop(part, "use_global_dupli")
elif part.render_type == 'GROUP':
sub.prop(part, "dupli_group")
col.prop(part, "dupli_group")
split = layout.split()
sub = split.column()
sub.prop(part, "use_whole_group")
subsub = sub.column()
subsub.active = (part.use_whole_group is False)
subsub.prop(part, "use_group_count")
col = split.column()
col.prop(part, "use_whole_group")
sub = col.column()
sub.active = (part.use_whole_group is False)
sub.prop(part, "use_group_count")
sub = split.column()
subsub = sub.column()
subsub.active = (part.use_whole_group is False)
subsub.prop(part, "use_global_dupli")
subsub.prop(part, "use_group_pick_random")
col = split.column()
sub = col.column()
sub.active = (part.use_whole_group is False)
sub.prop(part, "use_global_dupli")
sub.prop(part, "use_group_pick_random")
if part.use_group_count and not part.use_whole_group:
row = layout.row()
@@ -867,7 +863,7 @@ class PARTICLE_PT_render(ParticleButtonsPanel, bpy.types.Panel):
elif part.render_type == 'BILLBOARD':
ob = context.object
sub.label(text="Align:")
col.label(text="Align:")
row = layout.row()
row.prop(part, "billboard_align", expand=True)

View File

@@ -195,9 +195,6 @@ class SCENE_PT_custom_props(SceneButtonsPanel, PropertyPanel, bpy.types.Panel):
_context_path = "scene"
_property_type = bpy.types.Scene
from bpy.props import *
# XXX, move operator to op/ dir

View File

@@ -18,15 +18,13 @@
# <pep8 compliant>
import bpy
from bpy.props import *
from bpy.props import StringProperty
class CONSOLE_HT_header(bpy.types.Header):
bl_space_type = 'CONSOLE'
def draw(self, context):
# sc = context.space_data
# text = sc.text
layout = self.layout
row = layout.row(align=True)

View File

@@ -387,8 +387,8 @@ class IMAGE_HT_header(bpy.types.Header):
row.prop(toolsettings, "use_snap", text="")
row.prop(toolsettings, "snap_element", text="", icon_only=True)
# mesh = context.edit_object.data
# row.prop_search(mesh.uv_textures, "active", mesh, "uv_textures")
mesh = context.edit_object.data
layout.prop_search(mesh.uv_textures, "active", mesh, "uv_textures", text="")
if ima:
# layers
@@ -425,7 +425,6 @@ class IMAGE_PT_image_properties(bpy.types.Panel):
layout = self.layout
sima = context.space_data
# ima = sima.image
iuser = sima.image_user
layout.template_image(sima, "image", iuser)
@@ -684,11 +683,9 @@ class IMAGE_PT_tools_brush_texture(BrushButtonsPanel, bpy.types.Panel):
toolsettings = context.tool_settings.image_paint
brush = toolsettings.brush
# tex_slot = brush.texture_slot
col = layout.column()
col.template_ID_preview(brush, "texture", new="texture.new", rows=3, cols=8)
col.prop(brush, "use_fixed_texture")
class IMAGE_PT_tools_brush_tool(BrushButtonsPanel, bpy.types.Panel):

View File

@@ -326,8 +326,6 @@ class INFO_MT_render(bpy.types.Menu):
def draw(self, context):
layout = self.layout
# rd = context.scene.render
layout.operator("render.render", text="Render Image", icon='RENDER_STILL')
layout.operator("render.render", text="Render Animation", icon='RENDER_ANIMATION').animation = True
@@ -371,7 +369,7 @@ class INFO_MT_help(bpy.types.Menu):
layout.separator()
layout.operator("anim.update_data_paths", text="FCurve/Driver 2.54 fix", icon='HELP')
layout.separator()
layout.operator("wm.splash")
layout.operator("wm.splash", icon='BLENDER')
# Help operators

View File

@@ -156,9 +156,6 @@ class NODE_MT_node(bpy.types.Menu):
layout.operator("node.preview_toggle")
layout.operator("node.hide_socket_toggle")
# XXX
# layout.operator("node.rename")
layout.separator()
layout.operator("node.show_cyclic_dependencies")

View File

@@ -101,34 +101,6 @@ class SEQUENCER_MT_view(bpy.types.Menu):
layout.separator()
"""
uiBlock *block= uiBeginBlock(C, ar, "seq_viewmenu", UI_EMBOSSP);
short yco= 0, menuwidth=120;
if (sseq->mainb == SEQ_DRAW_SEQUENCE) {
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1,
"Play Back Animation "
"in all Sequence Areas|Alt A", 0, yco-=20,
menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
}
else {
uiDefIconTextBut(block, BUTM, 1, ICON_MENU_PANEL,
"Grease Pencil...", 0, yco-=20,
menuwidth, 19, NULL, 0.0, 0.0, 1, 7, "");
uiDefMenuSep(block);
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1,
"Play Back Animation "
"in this window|Alt A", 0, yco-=20,
menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
}
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1,
"Play Back Animation in all "
"3D Views and Sequence Areas|Alt Shift A",
0, yco-=20,
menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
"""
if (st.view_type == 'SEQUENCER') or (st.view_type == 'SEQUENCER_PREVIEW'):
layout.operator("sequencer.view_all", text='View all Sequences')
if (st.view_type == 'PREVIEW') or (st.view_type == 'SEQUENCER_PREVIEW'):

View File

@@ -141,7 +141,6 @@ class TIME_MT_frame(bpy.types.Menu):
def draw(self, context):
layout = self.layout
# tools = context.tool_settings
layout.operator("marker.add", text="Add Marker")
layout.operator("marker.duplicate", text="Duplicate Marker")

View File

@@ -19,7 +19,6 @@
# <pep8 compliant>
import bpy
import os
import shutil
import addon_utils
from bpy.props import StringProperty, BoolProperty, EnumProperty
@@ -1080,6 +1079,8 @@ class WM_OT_addon_install(bpy.types.Operator):
def execute(self, context):
import traceback
import zipfile
import shutil
pyfile = self.filepath
# dont use bpy.utils.script_paths("addons") because we may not be able to write to it.
@@ -1095,7 +1096,8 @@ class WM_OT_addon_install(bpy.types.Operator):
addon_path = ""
pyfile_dir = os.path.dirname(pyfile)
for addon_path in addon_utils.paths():
if os.path.samefile(pyfile_dir, addon_path):
# if os.path.samefile(pyfile_dir, addon_path): # Py3.2 only!, upgrade soon!
if (hasattr(os.path, "samefile") and os.path.samefile(pyfile_dir, addon_path)) or pyfile_dir == addon_path:
self.report({'ERROR'}, "Source file is in the addon search path: %r" % addon_path)
return {'CANCELLED'}
del addon_path

View File

@@ -404,7 +404,7 @@ class InputKeyMapPanel(bpy.types.Panel):
self.draw_hierarchy(display_keymaps, col)
from bpy.props import *
from bpy.props import StringProperty, BoolProperty, IntProperty
def export_properties(prefix, properties, lines=None):

View File

@@ -694,6 +694,8 @@ class VIEW3D_PT_tools_brush_texture(PaintPanel, bpy.types.Panel):
col = layout.column()
col.template_ID_preview(brush, "texture", new="texture.new", rows=3, cols=8)
if brush.use_paint_texture:
col.prop(brush, "use_fixed_texture")
if context.sculpt_object:
#XXX duplicated from properties_texture.py

View File

@@ -30,6 +30,11 @@
*
*/
/** \file blender/avi/intern/avi.c
* \ingroup avi
*/
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
@@ -211,7 +216,7 @@ int AVI_is_avi (char *name) {
int AVI_is_avi (const char *name) {
int temp, fcca, j;
AviMovie movie= {0};
AviMovie movie= {NULL};
AviMainHeader header;
AviBitmapInfoHeader bheader;
int movie_tracks = 0;

View File

@@ -26,6 +26,11 @@
*
* ***** END GPL LICENSE BLOCK *****
*/
/** \file blender/avi/intern/avi_intern.h
* \ingroup avi
*/
#ifndef AVI_INTERN_H
#define AVI_INTERN_H

View File

@@ -30,6 +30,11 @@
*
*/
/** \file blender/avi/intern/avirgb.c
* \ingroup avi
*/
#include "AVI_avi.h"
#include <stdlib.h>
#include <string.h>

View File

@@ -27,6 +27,11 @@
* ***** END GPL LICENSE BLOCK *****
*/
/** \file blender/avi/intern/avirgb.h
* \ingroup avi
*/
void *avi_converter_from_avi_rgb (AviMovie *movie, int stream, unsigned char *buffer, int *size);
void *avi_converter_to_avi_rgb (AviMovie *movie, int stream, unsigned char *buffer, int *size);

View File

@@ -29,6 +29,11 @@
* ***** END GPL LICENSE BLOCK *****
*/
/** \file blender/avi/intern/codecs.c
* \ingroup avi
*/
#include "AVI_avi.h"
#include "avi_intern.h"

View File

@@ -31,6 +31,11 @@
*
*/
/** \file blender/avi/intern/endian.c
* \ingroup avi
*/
#include <stdlib.h>
#include <string.h>
#include <stdio.h>

View File

@@ -30,6 +30,11 @@
*
*/
/** \file blender/avi/intern/endian.h
* \ingroup avi
*/
#ifndef AVI_ENDIAN_H
#define AVI_ENDIAN_H

View File

@@ -30,6 +30,11 @@
*
*/
/** \file blender/avi/intern/mjpeg.c
* \ingroup avi
*/
#include "AVI_avi.h"
#include <stdlib.h>
#include <string.h>

View File

@@ -27,6 +27,11 @@
* ***** END GPL LICENSE BLOCK *****
*/
/** \file blender/avi/intern/mjpeg.h
* \ingroup avi
*/
void *avi_converter_from_mjpeg (AviMovie *movie, int stream, unsigned char *buffer, int *size);
void *avi_converter_to_mjpeg (AviMovie *movie, int stream, unsigned char *buffer, int *size);

View File

@@ -31,6 +31,11 @@
*
*/
/** \file blender/avi/intern/options.c
* \ingroup avi
*/
#include "AVI_avi.h"
#include "avi_intern.h"
#include "endian.h"

View File

@@ -30,6 +30,11 @@
*
*/
/** \file blender/avi/intern/rgb32.c
* \ingroup avi
*/
#include "AVI_avi.h"
#include <stdlib.h>
#include <string.h>

View File

@@ -27,6 +27,11 @@
* ***** END GPL LICENSE BLOCK *****
*/
/** \file blender/avi/intern/rgb32.h
* \ingroup avi
*/
void *avi_converter_from_rgb32 (AviMovie *movie, int stream, unsigned char *buffer, int *size);
void *avi_converter_to_rgb32 (AviMovie *movie, int stream, unsigned char *buffer, int *size);

View File

@@ -26,6 +26,11 @@
* ***** END GPL LICENSE BLOCK *****
*/
/** \file blender/blenfont/BLF_api.h
* \ingroup blf
*/
#ifndef BLF_API_H
#define BLF_API_H

View File

@@ -26,6 +26,11 @@
* ***** END GPL LICENSE BLOCK *****
*/
/** \file blender/blenfont/intern/blf.c
* \ingroup blf
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

View File

@@ -25,6 +25,11 @@
* ***** END GPL LICENSE BLOCK *****
*/
/** \file blender/blenfont/intern/blf_dir.c
* \ingroup blf
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

View File

@@ -26,6 +26,11 @@
* ***** END GPL LICENSE BLOCK *****
*/
/** \file blender/blenfont/intern/blf_font.c
* \ingroup blf
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

View File

@@ -26,6 +26,11 @@
* ***** END GPL LICENSE BLOCK *****
*/
/** \file blender/blenfont/intern/blf_glyph.c
* \ingroup blf
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

View File

@@ -25,6 +25,11 @@
* ***** END GPL LICENSE BLOCK *****
*/
/** \file blender/blenfont/intern/blf_internal.h
* \ingroup blf
*/
#ifndef BLF_INTERNAL_H
#define BLF_INTERNAL_H

View File

@@ -25,6 +25,11 @@
* ***** END GPL LICENSE BLOCK *****
*/
/** \file blender/blenfont/intern/blf_internal_types.h
* \ingroup blf
*/
#ifndef BLF_INTERNAL_TYPES_H
#define BLF_INTERNAL_TYPES_H

View File

@@ -25,6 +25,11 @@
* ***** END GPL LICENSE BLOCK *****
*/
/** \file blender/blenfont/intern/blf_lang.c
* \ingroup blf
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

View File

@@ -26,6 +26,11 @@
* ***** END GPL LICENSE BLOCK *****
*/
/** \file blender/blenfont/intern/blf_util.c
* \ingroup blf
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

View File

@@ -44,12 +44,12 @@ void cdf_free(CDataFile *cdf);
int cdf_read_open(CDataFile *cdf, char *filename);
int cdf_read_layer(CDataFile *cdf, CDataFileLayer *blay);
int cdf_read_data(CDataFile *cdf, int size, void *data);
int cdf_read_data(CDataFile *cdf, unsigned int size, void *data);
void cdf_read_close(CDataFile *cdf);
int cdf_write_open(CDataFile *cdf, char *filename);
int cdf_write_layer(CDataFile *cdf, CDataFileLayer *blay);
int cdf_write_data(CDataFile *cdf, int size, void *data);
int cdf_write_data(CDataFile *cdf, unsigned int size, void *data);
void cdf_write_close(CDataFile *cdf);
void cdf_remove(char *filename);

View File

@@ -156,7 +156,7 @@ int mesh_center_bounds(struct Mesh *me, float cent[3]);
void mesh_translate(struct Mesh *me, float offset[3], int do_keys);
/* mesh_validate.c */
int BKE_mesh_validate_arrays(struct Mesh *me, struct MVert *mverts, int totvert, struct MEdge *medges, int totedge, struct MFace *mfaces, int totface, const short do_verbose, const short do_fixes);
int BKE_mesh_validate_arrays(struct Mesh *me, struct MVert *mverts, unsigned int totvert, struct MEdge *medges, unsigned int totedge, struct MFace *mfaces, unsigned int totface, const short do_verbose, const short do_fixes);
int BKE_mesh_validate(struct Mesh *me, int do_verbose);
int BKE_mesh_validate_dm(struct DerivedMesh *dm);

View File

@@ -305,7 +305,7 @@ int modifier_sameTopology(ModifierData *md);
int modifier_isEnabled(struct Scene *scene, struct ModifierData *md, int required_mode);
void modifier_setError(struct ModifierData *md, const char *format, ...)
#ifdef __GNUC__
__attribute__ ((format (printf, 2, 3)));
__attribute__ ((format (printf, 2, 3)))
#endif
;

View File

@@ -51,7 +51,7 @@ void BKE_reports_clear(ReportList *reports);
void BKE_report(ReportList *reports, ReportType type, const char *message);
void BKE_reportf(ReportList *reports, ReportType type, const char *format, ...)
#ifdef __GNUC__
__attribute__ ((format (printf, 3, 4)));
__attribute__ ((format (printf, 3, 4)))
#endif
;

View File

@@ -78,7 +78,7 @@ int scene_camera_switch_update(struct Scene *scene);
char *scene_find_marker_name(struct Scene *scene, int frame);
char *scene_find_last_marker_name(struct Scene *scene, int frame);
int scene_marker_tfm_translate(struct Scene *scene, int delta, int flag);
int scene_marker_tfm_translate(struct Scene *scene, int delta, unsigned int flag);
int scene_marker_tfm_extend(struct Scene *scene, int delta, int flag, int frame, char side);
int scene_marker_tfm_scale(struct Scene *scene, float value, int flag);

View File

@@ -81,6 +81,7 @@ void default_mtex(struct MTex *mtex);
struct MTex *add_mtex(void);
struct MTex *add_mtex_id(struct ID *id, int slot);
struct Tex *copy_texture(struct Tex *tex);
struct Tex *localize_texture(struct Tex *tex);
void make_local_texture(struct Tex *tex);
void autotexname(struct Tex *tex);

View File

@@ -24,6 +24,11 @@
*
* ***** END GPL LICENSE BLOCK *****
*/
/** \file blender/blenkernel/depsgraph_private.h
* \ingroup bke
*/
#ifndef DEPSGRAPH_PRIVATE
#define DEPSGRAPH_PRIVATE

View File

@@ -34,6 +34,11 @@
* ***** END GPL LICENSE BLOCK *****
*/
/** \file blender/blenkernel/intern/BME_Customdata.c
* \ingroup bke
*/
#include <string.h>
#include "MEM_guardedalloc.h"

View File

@@ -32,6 +32,11 @@
* ***** END GPL LICENSE BLOCK *****
*/
/** \file blender/blenkernel/intern/BME_conversions.c
* \ingroup bke
*/
#include "MEM_guardedalloc.h"
#include "DNA_meshdata_types.h"

View File

@@ -32,6 +32,11 @@
* ***** END GPL LICENSE BLOCK *****
*/
/** \file blender/blenkernel/intern/BME_eulers.c
* \ingroup bke
*/
#include "MEM_guardedalloc.h"
#include "BLI_utildefines.h"

View File

@@ -32,6 +32,11 @@
* ***** END GPL LICENSE BLOCK *****
*/
/** \file blender/blenkernel/intern/BME_mesh.c
* \ingroup bke
*/
#include "MEM_guardedalloc.h"
#include "BKE_bmesh.h"

View File

@@ -32,6 +32,11 @@
* ***** END GPL LICENSE BLOCK *****
*/
/** \file blender/blenkernel/intern/BME_structure.c
* \ingroup bke
*/
#include <limits.h>
#include "MEM_guardedalloc.h"

View File

@@ -31,6 +31,11 @@
* ***** END GPL LICENSE BLOCK *****
*/
/** \file blender/blenkernel/intern/BME_tools.c
* \ingroup bke
*/
#include <math.h>
#include "MEM_guardedalloc.h"

View File

@@ -1,3 +1,6 @@
/** \file blender/blenkernel/intern/CCGSubSurf.c
* \ingroup bke
*/
/* $Id$ */
#include <stdlib.h>

View File

@@ -1,3 +1,6 @@
/** \file blender/blenkernel/intern/CCGSubSurf.h
* \ingroup bke
*/
/* $Id$ */
typedef void* CCGMeshHDL;

View File

@@ -27,6 +27,11 @@
* ***** END GPL LICENSE BLOCK *****
*/
/** \file blender/blenkernel/intern/DerivedMesh.c
* \ingroup bke
*/
#include <string.h>

View File

@@ -26,6 +26,11 @@
* ***** END GPL LICENSE BLOCK *****
*/
/** \file blender/blenkernel/intern/action.c
* \ingroup bke
*/
#include <string.h>
#include <math.h>
#include <stdlib.h>
@@ -1066,7 +1071,7 @@ void copy_pose_result(bPose *to, bPose *from)
bPoseChannel *pchanto, *pchanfrom;
if(to==NULL || from==NULL) {
printf("pose result copy error to:%p from:%p\n", to, from); // debug temp
printf("pose result copy error to:%p from:%p\n", (void *)to, (void *)from); // debug temp
return;
}

View File

@@ -29,6 +29,11 @@
* ***** END GPL LICENSE BLOCK *****
*/
/** \file blender/blenkernel/intern/anim.c
* \ingroup bke
*/
#include <stdio.h>
#include <math.h>
#include <string.h>

View File

@@ -27,6 +27,11 @@
* ***** END GPL LICENSE BLOCK *****
*/
/** \file blender/blenkernel/intern/anim_sys.c
* \ingroup bke
*/
#include <stdio.h>
#include <string.h>
#include <stddef.h>
@@ -305,7 +310,7 @@ void action_move_fcurves_by_basepath (bAction *srcAct, bAction *dstAct, const ch
if ELEM3(NULL, srcAct, dstAct, basepath) {
if (G.f & G_DEBUG) {
printf("ERROR: action_partition_fcurves_by_basepath(%p, %p, %p) has insufficient info to work with\n",
srcAct, dstAct, basepath);
(void *)srcAct, (void *)dstAct, (void *)basepath);
}
return;
}

Some files were not shown because too many files have changed in this diff Show More