svn merge -r41899:41926 ^/trunk/blender. also sync mempool with trunk and move BLI_mempool_alloc out of mempools header where it was inlined

This commit is contained in:
Campbell Barton 2011-11-16 19:06:38 +00:00
commit 9d05ccf9e8
42 changed files with 357 additions and 358 deletions

@ -139,9 +139,9 @@ IF(PYTHONLIBSUNIX_FOUND)
# not used
# SET(PYTHON_BINARY ${PYTHON_EXECUTABLE} CACHE STRING "")
MARK_AS_ADVANCED(
PYTHON_INCLUDE_DIR
PYTHON_LIBRARY
)
ENDIF()
MARK_AS_ADVANCED(
PYTHON_INCLUDE_DIR
PYTHON_LIBRARY
)

@ -89,7 +89,7 @@ def create_qtc_project_main():
f = open(os.path.join(PROJECT_DIR, "%s.files" % FILE_NAME), 'w')
f.write("\n".join(files_rel))
f = open(os.path.join(PROJECT_DIR, "%s.includes" % FILE_NAME), 'w')
f = open(os.path.join(PROJECT_DIR, "%s.includes" % FILE_NAME), 'w', encoding='utf-8')
f.write("\n".join(sorted(includes)))
qtc_prj = os.path.join(PROJECT_DIR, "%s.creator" % FILE_NAME)
@ -104,7 +104,7 @@ def create_qtc_project_main():
defines_final += cmake_compiler_defines()
f.write("\n".join(defines_final))
print("Blender project file written to: %s" % qtc_prj)
print("Blender project file written to: %r" % qtc_prj)
# --- end
@ -133,7 +133,7 @@ def create_qtc_project_python():
f = open(qtc_cfg, 'w')
f.write("// ADD PREDEFINED MACROS HERE!\n")
print("Python project file written to: %s" % qtc_prj)
print("Python project file written to: %r" % qtc_prj)
def main():

@ -186,7 +186,7 @@ def cmake_advanced_info():
def cmake_cache_var(var):
cache_file = open(join(CMAKE_DIR, "CMakeCache.txt"))
cache_file = open(join(CMAKE_DIR, "CMakeCache.txt"), encoding='utf-8')
lines = [l_strip for l in cache_file for l_strip in (l.strip(),) if l_strip if not l_strip.startswith("//") if not l_strip.startswith("#")]
cache_file.close()

@ -368,14 +368,11 @@ libmv_Reconstruction *libmv_solveReconstruction(libmv_Tracks *tracks, int keyfra
intrinsics->SetPrincipalPoint(principal_x, principal_y);
intrinsics->SetRadialDistortion(k1, k2, k3);
if(focal_length) {
/* do a lens undistortion if focal length is non-zero only */
for (int i = 0; i < markers.size(); ++i) {
intrinsics->InvertIntrinsics(markers[i].x,
markers[i].y,
&(markers[i].x),
&(markers[i].y));
}
for (int i = 0; i < markers.size(); ++i) {
intrinsics->InvertIntrinsics(markers[i].x,
markers[i].y,
&(markers[i].x),
&(markers[i].y));
}
libmv::Tracks normalized_tracks(markers);

@ -1,4 +1,11 @@
set(BLENDER_INCLUDE_DIRS
${CMAKE_SOURCE_DIR}/intern/guardedalloc
${CMAKE_SOURCE_DIR}/source/blender/makesdna
${CMAKE_SOURCE_DIR}/source/blender/makesrna
${CMAKE_SOURCE_DIR}/source/blender/blenloader
${CMAKE_BINARY_DIR}/source/blender/makesrna/intern)
set(INC
../render
../device

@ -459,7 +459,7 @@ class CyclesWorld_PT_volume(CyclesButtonsPanel, Panel):
@classmethod
def poll(cls, context):
world = context.world
# world = context.world
return False # world and world.node_tree and CyclesButtonsPanel.poll(context)
def draw(self, context):
@ -493,7 +493,7 @@ class CyclesMaterial_PT_volume(CyclesButtonsPanel, Panel):
@classmethod
def poll(cls, context):
mat = context.material
# mat = context.material
return False # mat and mat.node_tree and CyclesButtonsPanel.poll(context)
def draw(self, context):
@ -562,7 +562,7 @@ class CyclesTexture_PT_context(CyclesButtonsPanel, Panel):
pin_id = space.pin_id
use_pin_id = space.use_pin_id
user = context.texture_user
node = context.texture_node
# node = context.texture_node
if not use_pin_id or not isinstance(pin_id, bpy.types.Texture):
pin_id = None
@ -638,7 +638,7 @@ class CyclesTexture_PT_mapping(CyclesButtonsPanel, Panel):
def draw(self, context):
layout = self.layout
tex = context.texture
# tex = context.texture
node = context.texture_node
mapping = node.texture_mapping
@ -664,15 +664,15 @@ class CyclesTexture_PT_colors(CyclesButtonsPanel, Panel):
@classmethod
def poll(cls, context):
tex = context.texture
node = context.texture_node
# tex = context.texture
# node = context.texture_node
return False
#return (node or (tex and tex.use_nodes)) and CyclesButtonsPanel.poll(context)
def draw(self, context):
layout = self.layout
tex = context.texture
# tex = context.texture
node = context.texture_node
mapping = node.color_mapping

@ -176,7 +176,13 @@ static inline string get_enum_identifier(PointerRNA& ptr, const char *name)
static inline string blender_absolute_path(BL::BlendData b_data, BL::ID b_id, const string& path)
{
if(path.size() >= 2 && path[0] == '/' && path[1] == '/') {
string dirname = (b_id.library())? b_id.library().filepath(): b_data.filepath();
string dirname;
if(b_id.library())
dirname = blender_absolute_path(b_data, b_id.library(), b_id.library().filepath());
else
dirname = b_data.filepath();
return path_join(path_dirname(dirname), path.substr(2));
}

@ -154,25 +154,23 @@ def resolve_ncase(path):
returning a string with the path if found else return the original path.
"""
import os
def _ncase_path_found(path):
if not path or os.path.exists(path):
if not path or _os.path.exists(path):
return path, True
# filename may be a directory or a file
filename = os.path.basename(path)
dirpath = os.path.dirname(path)
filename = _os.path.basename(path)
dirpath = _os.path.dirname(path)
suffix = path[:0] # "" but ensure byte/str match
if not filename: # dir ends with a slash?
if len(dirpath) < len(path):
suffix = path[:len(path) - len(dirpath)]
filename = os.path.basename(dirpath)
dirpath = os.path.dirname(dirpath)
filename = _os.path.basename(dirpath)
dirpath = _os.path.dirname(dirpath)
if not os.path.exists(dirpath):
if not _os.path.exists(dirpath):
if dirpath == path:
return path, False
@ -184,8 +182,8 @@ def resolve_ncase(path):
# at this point, the directory exists but not the file
# we are expecting 'dirpath' to be a directory, but it could be a file
if os.path.isdir(dirpath):
files = os.listdir(dirpath)
if _os.path.isdir(dirpath):
files = _os.listdir(dirpath)
else:
return path, False
@ -198,7 +196,7 @@ def resolve_ncase(path):
break
if f_iter_nocase:
return os.path.join(dirpath, f_iter_nocase) + suffix, True
return _os.path.join(dirpath, f_iter_nocase) + suffix, True
else:
# cant find the right one, just return the path as is.
return path, False
@ -216,8 +214,7 @@ def ensure_ext(filepath, ext, case_sensitive=False):
:arg case_sensitive: Check for matching case when comparing extensions.
:type case_sensitive: bool
"""
import os
fn_base, fn_ext = os.path.splitext(filepath)
fn_base, fn_ext = _os.path.splitext(filepath)
if fn_base and fn_ext:
if ((case_sensitive and ext == fn_ext) or
(ext.lower() == fn_ext.lower())):

@ -2,4 +2,3 @@ import bpy
bpy.context.object.data.sensor_width = 23.4
bpy.context.object.data.sensor_height = 15.6
bpy.context.object.data.sensor_fit = 'HORIZONTAL'

@ -36,6 +36,7 @@ def CLIP_track_view_selected(sc, track):
return False
class CLIP_OT_track_to_empty(Operator):
"""Create an Empty object which will be copying movement of active track"""
@ -85,13 +86,8 @@ class CLIP_OT_tracks_to_mesh(Operator):
@classmethod
def poll(cls, context):
if context.space_data.type != 'CLIP_EDITOR':
return False
sc = context.space_data
clip = sc.clip
return clip
return (sc.type == 'CLIP_EDITOR') and sc.clip
def execute(self, context):
sc = context.space_data
@ -124,6 +120,9 @@ class CLIP_OT_delete_proxy(Operator):
@classmethod
def poll(cls, context):
if context.space_data.type != 'CLIP_EDITOR':
return False
sc = context.space_data
return sc.clip
@ -187,7 +186,8 @@ class CLIP_OT_delete_proxy(Operator):
class CLIP_OT_set_viewport_background(Operator):
"""Set current movie clip as a camera background in 3D viewport (works only when a 3D viewport is visible)"""
"""Set current movie clip as a camera background in 3D viewport \
(works only when a 3D viewport is visible)"""
bl_idname = "clip.set_viewport_background"
bl_label = "Set as Background"
@ -236,7 +236,8 @@ class CLIP_OT_set_viewport_background(Operator):
class CLIP_OT_constraint_to_fcurve(Operator):
"""Create F-Curves for object which will copy object's movement caused by this constraint"""
"""Create F-Curves for object which will copy \
object's movement caused by this constraint"""
bl_idname = "clip.constraint_to_fcurve"
bl_label = "Constraint to F-Curve"

@ -147,7 +147,7 @@ class ProjectEdit(Operator):
# opengl buffer may fail, we can't help this, but best report it.
try:
ret = bpy.ops.paint.image_from_view()
bpy.ops.paint.image_from_view()
except RuntimeError as err:
self.report({'ERROR'}, str(err))
return {'CANCELLED'}

@ -106,7 +106,7 @@ def operator_path_is_undo(context, data_path):
# luckily we don't do this!
#
# When we cant find the data owner assume no undo is needed.
data_path_head, data_path_sep, data_path_tail = data_path.rpartition(".")
data_path_head = data_path.rpartition(".")[0]
if not data_path_head:
return False

@ -46,7 +46,6 @@ class PHYSICS_PT_dynamic_paint(PhysicButtonsPanel, Panel):
layout = self.layout
md = context.dynamic_paint
ob = context.object
layout.prop(md, "ui_type", expand=True)
@ -129,7 +128,6 @@ class PHYSICS_PT_dp_advanced_canvas(PhysicButtonsPanel, Panel):
canvas = context.dynamic_paint.canvas_settings
surface = canvas.canvas_surfaces.active
ob = context.object
surface_type = surface.surface_type
@ -370,8 +368,6 @@ class PHYSICS_PT_dp_cache(PhysicButtonsPanel, Panel):
md.canvas_settings.canvas_surfaces.active.is_cache_user)
def draw(self, context):
layout = self.layout
surface = context.dynamic_paint.canvas_settings.canvas_surfaces.active
cache = surface.point_cache
@ -442,7 +438,6 @@ class PHYSICS_PT_dp_brush_velocity(PhysicButtonsPanel, Panel):
layout = self.layout
brush = context.dynamic_paint.brush_settings
ob = context.object
split = layout.split()
@ -478,7 +473,6 @@ class PHYSICS_PT_dp_brush_wave(PhysicButtonsPanel, Panel):
layout = self.layout
brush = context.dynamic_paint.brush_settings
ob = context.object
layout.prop(brush, "wave_type")
if brush.wave_type != 'REFLECT':

@ -54,7 +54,8 @@ class CLIP_HT_header(Header):
row = layout.row(align=True)
if sc.show_filters:
row.prop(sc, "show_filters", icon='DISCLOSURE_TRI_DOWN', text="Filters")
row.prop(sc, "show_filters", icon='DISCLOSURE_TRI_DOWN',
text="Filters")
sub = row.column()
sub.active = clip.tracking.reconstruction.is_valid
@ -62,7 +63,8 @@ class CLIP_HT_header(Header):
row.prop(sc, "show_graph_tracks", icon='ANIM', text="")
else:
row.prop(sc, "show_filters", icon='DISCLOSURE_TRI_RIGHT', text="Filters")
row.prop(sc, "show_filters", icon='DISCLOSURE_TRI_RIGHT',
text="Filters")
row = layout.row()
row.template_ID(sc, "clip", open='clip.open')
@ -113,7 +115,6 @@ class CLIP_PT_tools_tracking(Panel):
def draw(self, context):
layout = self.layout
clip = context.space_data.clip
settings = clip.tracking.settings
row = layout.row(align=True)
@ -639,7 +640,6 @@ class CLIP_PT_tools_clip(Panel):
def draw(self, context):
layout = self.layout
clip = context.space_data.clip
layout.operator("clip.set_viewport_background")
@ -696,9 +696,6 @@ class CLIP_MT_proxy(Menu):
def draw(self, context):
layout = self.layout
sc = context.space_data
clip = sc.clip
layout.operator("clip.rebuild_proxy")
layout.operator("clip.delete_proxy")
@ -719,7 +716,8 @@ class CLIP_MT_track(Menu):
props = layout.operator("clip.clear_track_path", text="Clear Before")
props.action = 'UPTO'
props = layout.operator("clip.clear_track_path", text="Clear Track Path")
props = layout.operator("clip.clear_track_path",
text="Clear Track Path")
props.action = 'ALL'
layout.separator()
@ -802,8 +800,6 @@ class CLIP_MT_select(Menu):
def draw(self, context):
layout = self.layout
sc = context.space_data
layout.operator("clip.select_border")
layout.operator("clip.select_circle")

@ -2281,12 +2281,6 @@ class VIEW3D_PT_background_image(Panel):
bl_label = "Background Images"
bl_options = {'DEFAULT_CLOSED'}
@classmethod
def poll(cls, context):
view = context.space_data
#~ bg = context.space_data.background_image
return (view)
def draw_header(self, context):
layout = self.layout
view = context.space_data
@ -2320,16 +2314,15 @@ class VIEW3D_PT_background_image(Panel):
row = box.row()
row.prop(bg, "source", expand=True)
hasbg = False
has_bg = False
if bg.source == 'IMAGE':
row = box.row()
row.template_ID(bg, "image", open="image.open")
if (bg.image):
box.template_image(bg, "image", bg.image_user, compact=True)
hasbg = True
has_bg = True
elif bg.source == 'MOVIE':
has_clip = False
box.prop(bg, 'use_camera_clip')
column = box.column()
@ -2340,14 +2333,14 @@ class VIEW3D_PT_background_image(Panel):
column.template_movieclip(bg, "clip", compact=True)
if bg.use_camera_clip or bg.clip:
hasbg = True
has_bg = True
column = box.column()
column.active = hasbg
column.active = has_bg
column.prop(bg.clip_user, "proxy_render_size", text="")
column.prop(bg.clip_user, "use_render_undistorted")
if hasbg:
if has_bg:
box.prop(bg, "opacity", slider=True)
if bg.view_axis != 'CAMERA':
box.prop(bg, "size")

@ -3235,7 +3235,7 @@ static int dynamicPaint_paintMesh(DynamicPaintSurface *surface,
/* Also cast a ray in opposite direction to make sure
* point is at least surrounded by two brush faces */
mul_v3_fl(ray_dir, -1.0f);
negate_v3(ray_dir);
hit.index = -1;
hit.dist = 9999;

@ -1913,7 +1913,7 @@ static void do_kink(ParticleKey *state, ParticleKey *par, float *par_rot, float
switch(type) {
case PART_KINK_CURL:
{
mul_v3_fl(par_vec, -1.f);
negate_v3(par_vec);
if(flat > 0.f) {
float proj[3];
@ -1979,7 +1979,7 @@ static void do_kink(ParticleKey *state, ParticleKey *par, float *par_rot, float
mul_qt_v3(par_rot, z_vec);
}
mul_v3_fl(par_vec, -1.f);
negate_v3(par_vec);
normalize_v3_v3(vec_one, par_vec);
inp_y=dot_v3v3(y_vec, vec_one);

@ -2680,7 +2680,7 @@ static float nr_signed_distance_to_plane(float *p, float radius, ParticleCollisi
}
if(pce->inv_nor == 1) {
mul_v3_fl(nor, -1.f);
negate_v3(nor);
d = -d;
}
@ -2800,7 +2800,7 @@ static void collision_point_on_surface(float p[3], ParticleCollisionElement *pce
normalize_v3(nor);
if(pce->inv_nor == 1)
mul_v3_fl(nor, -1.f);
negate_v3(nor);
madd_v3_v3v3fl(co, pce->x0, nor, col->radius);
madd_v3_v3fl(co, e1, pce->uv[0]);

@ -40,36 +40,17 @@ extern "C"
#endif
struct BLI_mempool;
struct BLI_mempool_chunk;
#include "BLI_listbase.h"
#include "BLI_blenlib.h"
#include <string.h>
typedef struct BLI_freenode{
struct BLI_freenode *next;
int freeword; /*used to identify this as a freed node*/
}BLI_freenode;
typedef struct BLI_mempool_chunk{
struct BLI_mempool_chunk *next, *prev;
void *data;
}BLI_mempool_chunk;
typedef struct BLI_mempool{
struct ListBase chunks;
int esize, csize, pchunk; /*size of elements and chunks in bytes and number of elements per chunk*/
BLI_freenode *free; /*free element list. Interleaved into chunk datas.*/
int totalloc, totused; /*total number of elements allocated in total, and currently in use*/
int use_sysmalloc, allow_iter;
}BLI_mempool;
typedef struct BLI_mempool BLI_mempool;
/*allow_iter allows iteration on this mempool. note: this requires that the
first four bytes of the elements never contain the character string
'free'. use with care.*/
BLI_mempool *BLI_mempool_create(int esize, int tote, int pchunk,
int use_sysmalloc, int allow_iter);
//void *BLI_mempool_alloc(BLI_mempool *pool);
struct BLI_mempool *BLI_mempool_create(int esize, int tote, int pchunk,
int use_sysmalloc, int allow_iter);
void *BLI_mempool_alloc(BLI_mempool *pool);
void *BLI_mempool_calloc(BLI_mempool *pool);
void BLI_mempool_free(BLI_mempool *pool, void *addr);
void BLI_mempool_destroy(BLI_mempool *pool);
@ -90,64 +71,6 @@ void BLI_mempool_allow_iter(BLI_mempool *pool);
void BLI_mempool_iternew(BLI_mempool *pool, BLI_mempool_iter *iter);
void *BLI_mempool_iterstep(BLI_mempool_iter *iter);
/* XXX - copied from BKE_utildefines.h, dont use here because we're in BLI */
#if defined(__sgi) || defined (__sparc) || defined (__sparc__) || defined (__PPC__) || defined (__ppc__) || defined (__hppa__) || defined (__BIG_ENDIAN__)
/* Big Endian */
#define MAKE_ID(a,b,c,d) ( (int)(a)<<24 | (int)(b)<<16 | (c)<<8 | (d) )
#else
/* Little Endian */
#define MAKE_ID(a,b,c,d) ( (int)(d)<<24 | (int)(c)<<16 | (b)<<8 | (a) )
#endif
/************ inlined stuff ***********/
#define FREEWORD MAKE_ID('f', 'r', 'e', 'e')
#include "MEM_guardedalloc.h"
BM_INLINE void *BLI_mempool_alloc(BLI_mempool *pool) {
void *retval=NULL;
BLI_freenode *curnode=NULL;
char *addr=NULL;
if (!pool) return NULL;
pool->totused++;
if (!(pool->free)) {
int j;
/*need to allocate a new chunk*/
BLI_mempool_chunk *mpchunk = pool->use_sysmalloc ? (BLI_mempool_chunk*)malloc(sizeof(BLI_mempool_chunk)) : (BLI_mempool_chunk*)MEM_mallocN(sizeof(BLI_mempool_chunk), "BLI_Mempool Chunk");
mpchunk->next = mpchunk->prev = NULL;
mpchunk->data = pool->use_sysmalloc ? malloc(pool->csize) : MEM_mallocN(pool->csize, "BLI_Mempool Chunk Data");
BLI_addtail(&(pool->chunks), mpchunk);
pool->free = (BLI_freenode*)mpchunk->data; /*start of the list*/
if (pool->allow_iter)
pool->free->freeword = FREEWORD;
for(addr = (char*)mpchunk->data, j=0; j < pool->pchunk; j++){
curnode = ((BLI_freenode*)addr);
addr += pool->esize;
curnode->next = (BLI_freenode*)addr;
if (pool->allow_iter) {
curnode->freeword = FREEWORD;
if (j != pool->pchunk-1)
curnode->next->freeword = FREEWORD;
}
}
curnode->next = NULL; /*terminate the list*/
pool->totalloc += pool->pchunk;
}
retval = pool->free;
if (pool->allow_iter)
pool->free->freeword = 0x7FFFFFFF;
pool->free = pool->free->next;
//memset(retval, 0, pool->esize);
return retval;
}
#ifdef __cplusplus
}
#endif

@ -29,27 +29,50 @@
* \ingroup bli
*/
/*
Simple, fast memory allocator for allocating many elements of the same size.
*/
* Simple, fast memory allocator for allocating many elements of the same size.
*/
#include "BLI_utildefines.h"
#include "BLI_listbase.h"
#include "BLI_mempool.h" /* own include */
#include "DNA_listBase.h"
#include "MEM_guardedalloc.h"
#include "BLI_utildefines.h"
#include <string.h>
#include <stdlib.h>
#include "BLI_blenlib.h"
#include "BLI_linklist.h"
#include "BLI_mempool.h"
#include "BLI_utildefines.h"
/* note: copied from BKE_utildefines.h, dont use here because we're in BLI */
#ifdef __BIG_ENDIAN__
/* Big Endian */
# define MAKE_ID(a,b,c,d) ( (int)(a)<<24 | (int)(b)<<16 | (c)<<8 | (d) )
#else
/* Little Endian */
# define MAKE_ID(a,b,c,d) ( (int)(d)<<24 | (int)(c)<<16 | (b)<<8 | (a) )
#endif
#include "DNA_listBase.h"
#include "DNA_ID.h"
#define FREEWORD MAKE_ID('f', 'r', 'e', 'e')
#include <string.h>
typedef struct BLI_freenode {
struct BLI_freenode *next;
int freeword; /* used to identify this as a freed node */
} BLI_freenode;
#define BLI_MEMPOOL_INTERN
#include "BLI_mempool.h"
typedef struct BLI_mempool_chunk {
struct BLI_mempool_chunk *next, *prev;
void *data;
} BLI_mempool_chunk;
typedef struct BLI_mempool {
struct ListBase chunks;
int esize, csize, pchunk; /*size of elements and chunks in bytes and number of elements per chunk*/
BLI_freenode *free; /*free element list. Interleaved into chunk datas.*/
int totalloc, totused; /*total number of elements allocated in total, and currently in use*/
int use_sysmalloc, allow_iter;
} BLI_mempool;
BLI_mempool *BLI_mempool_create(int esize, int tote, int pchunk,
int use_sysmalloc, int allow_iter)
@ -69,7 +92,7 @@ BLI_mempool *BLI_mempool_create(int esize, int tote, int pchunk,
pool = use_sysmalloc ? malloc(sizeof(BLI_mempool)) : MEM_mallocN(sizeof(BLI_mempool), "memory pool");
pool->esize = allow_iter ? MAX2(esize, sizeof(BLI_freenode)) : esize;
pool->use_sysmalloc = use_sysmalloc;
pool->pchunk = pchunk;
pool->pchunk = pchunk;
pool->csize = esize * pchunk;
pool->chunks.first = pool->chunks.last = NULL;
pool->totused= 0;
@ -79,7 +102,7 @@ BLI_mempool *BLI_mempool_create(int esize, int tote, int pchunk,
if (maxchunks==0) maxchunks = 1;
/*allocate the actual chunks*/
for(i=0; i < maxchunks; i++){
for (i=0; i < maxchunks; i++) {
BLI_mempool_chunk *mpchunk = use_sysmalloc ? malloc(sizeof(BLI_mempool_chunk)) : MEM_mallocN(sizeof(BLI_mempool_chunk), "BLI_Mempool Chunk");
mpchunk->next = mpchunk->prev = NULL;
mpchunk->data = use_sysmalloc ? malloc(pool->csize) : MEM_mallocN(pool->csize, "BLI Mempool Chunk Data");
@ -92,7 +115,7 @@ BLI_mempool *BLI_mempool_create(int esize, int tote, int pchunk,
}
/*loop through the allocated data, building the pointer structures*/
for(addr = mpchunk->data, j=0; j < pool->pchunk; j++){
for (addr = mpchunk->data, j=0; j < pool->pchunk; j++) {
curnode = ((BLI_freenode*)addr);
addr += pool->esize;
curnode->next = (BLI_freenode*)addr;
@ -114,24 +137,24 @@ BLI_mempool *BLI_mempool_create(int esize, int tote, int pchunk,
pool->totalloc += pool->pchunk;
}
/*terminate the list*/
curnode->next = NULL;
return pool;
}
#if 0
void *BLI_mempool_alloc(BLI_mempool *pool)
{
void *retval=NULL;
BLI_freenode *curnode=NULL;
char *addr=NULL;
int j;
if (!pool) return NULL;
pool->totused++;
if(!(pool->free)){
if (!(pool->free)) {
BLI_freenode *curnode=NULL;
char *addr;
int j;
/*need to allocate a new chunk*/
BLI_mempool_chunk *mpchunk = pool->use_sysmalloc ? malloc(sizeof(BLI_mempool_chunk)) : MEM_mallocN(sizeof(BLI_mempool_chunk), "BLI_Mempool Chunk");
mpchunk->next = mpchunk->prev = NULL;
@ -165,24 +188,19 @@ void *BLI_mempool_alloc(BLI_mempool *pool)
//memset(retval, 0, pool->esize);
return retval;
}
#endif
void *BLI_mempool_calloc(BLI_mempool *pool)
{
void *retval=NULL;
retval = BLI_mempool_alloc(pool);
BMEMSET(retval, 0, pool->esize);
void *retval= BLI_mempool_alloc(pool);
memset(retval, 0, pool->esize);
return retval;
}
void BLI_mempool_free(BLI_mempool *pool, void *addr) //doesnt protect against double frees, dont be stupid!
/* doesnt protect against double frees, dont be stupid! */
void BLI_mempool_free(BLI_mempool *pool, void *addr)
{
BLI_freenode *newhead = addr;
BLI_freenode *curnode=NULL;
char *tmpaddr=NULL;
int i;
if (pool->allow_iter)
newhead->freeword = FREEWORD;
newhead->next = pool->free;
@ -192,14 +210,18 @@ void BLI_mempool_free(BLI_mempool *pool, void *addr) //doesnt protect against do
/*nothing is in use; free all the chunks except the first*/
if (pool->totused == 0) {
BLI_mempool_chunk *mpchunk=NULL, *first;
BLI_freenode *curnode=NULL;
char *tmpaddr=NULL;
int i;
BLI_mempool_chunk *mpchunk=NULL;
BLI_mempool_chunk *first= pool->chunks.first;
first = pool->chunks.first;
BLI_remlink(&pool->chunks, first);
for(mpchunk = pool->chunks.first; mpchunk; mpchunk = mpchunk->next) {
if(pool->use_sysmalloc) free(mpchunk->data);
else MEM_freeN(mpchunk->data);
for (mpchunk = pool->chunks.first; mpchunk; mpchunk = mpchunk->next) {
if (pool->use_sysmalloc) free(mpchunk->data);
else MEM_freeN(mpchunk->data);
}
pool->use_sysmalloc ? BLI_freelist(&(pool->chunks)) : BLI_freelistN(&(pool->chunks));
@ -208,7 +230,7 @@ void BLI_mempool_free(BLI_mempool *pool, void *addr) //doesnt protect against do
pool->totalloc = pool->pchunk;
pool->free = first->data; /*start of the list*/
for(tmpaddr = first->data, i=0; i < pool->pchunk; i++){
for (tmpaddr = first->data, i=0; i < pool->pchunk; i++) {
curnode = ((BLI_freenode*)tmpaddr);
tmpaddr += pool->esize;
curnode->next = (BLI_freenode*)tmpaddr;
@ -264,15 +286,16 @@ void *BLI_mempool_iterstep(BLI_mempool_iter *iter)
void BLI_mempool_destroy(BLI_mempool *pool)
{
BLI_mempool_chunk *mpchunk=NULL;
if(pool->use_sysmalloc) {
for(mpchunk = pool->chunks.first; mpchunk; mpchunk = mpchunk->next) {
if (pool->use_sysmalloc) {
for (mpchunk = pool->chunks.first; mpchunk; mpchunk = mpchunk->next) {
free(mpchunk->data);
}
BLI_freelist(&(pool->chunks));
free(pool);
}
else {
for(mpchunk = pool->chunks.first; mpchunk; mpchunk = mpchunk->next) {
for (mpchunk = pool->chunks.first; mpchunk; mpchunk = mpchunk->next) {
MEM_freeN(mpchunk->data);
}
BLI_freelistN(&(pool->chunks));

@ -1981,7 +1981,7 @@ static void direct_link_nladata_strips(FileData *fd, ListBase *list)
/* strip's F-Modifiers */
link_list(fd, &strip->modifiers);
direct_link_modifiers(fd, &strip->modifiers);
direct_link_fmodifiers(fd, &strip->modifiers);
}
}

@ -11,6 +11,7 @@ extern "C" {
#include "BKE_utildefines.h"
#include <stdarg.h>
#include <string.h> /* for memcpy */
/*
operators represent logical, executable mesh modules. all topological

@ -12,6 +12,8 @@
#include "BLI_ghash.h"
#include "BLI_array.h"
#include "MEM_guardedalloc.h"
#include "DNA_listBase.h"
#include "bmesh_class.h"

@ -28,6 +28,7 @@
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "BKE_customdata.h"
@ -35,6 +36,7 @@
#include "DNA_mesh_types.h"
#include "BLI_utildefines.h"
#include "BLI_listbase.h"
#include "BLI_mempool.h"
#include "BLI_array.h"

@ -32,6 +32,7 @@
#include "BLI_rand.h"
#include "BLI_ghash.h"
#include "BLI_array.h"
#include "BLI_noise.h"
#include "BLI_utildefines.h"
#include "DNA_object_types.h"

@ -175,7 +175,7 @@ typedef struct knifetool_opdata {
MODE_IDLE,
MODE_DRAGGING,
MODE_CONNECT,
MODE_PANNING,
MODE_PANNING
} mode;
int snap_midpoints, prevmode, extend;

@ -322,10 +322,13 @@ static void make_renderinfo_string(RenderStats *rs, Scene *scene, char *str)
spos+= sprintf(spos, "%s ", rs->statstr);
}
else {
spos+= sprintf(spos, "Fra:%d Ve:%d Fa:%d ", (scene->r.cfra), rs->totvert, rs->totface);
spos+= sprintf(spos, "Fra:%d ", (scene->r.cfra));
if(rs->totvert) spos+= sprintf(spos, "Ve:%d ", rs->totvert);
if(rs->totface) spos+= sprintf(spos, "Fa:%d ", rs->totface);
if(rs->tothalo) spos+= sprintf(spos, "Ha:%d ", rs->tothalo);
if(rs->totstrand) spos+= sprintf(spos, "St:%d ", rs->totstrand);
spos+= sprintf(spos, "La:%d Mem:%.2fM (%.2fM, peak %.2fM) ", rs->totlamp, megs_used_memory, mmap_used_memory, megs_peak_memory);
if(rs->totlamp) spos+= sprintf(spos, "La:%d ", rs->totlamp);
spos+= sprintf(spos, "Mem:%.2fM (%.2fM, peak %.2fM) ", megs_used_memory, mmap_used_memory, megs_peak_memory);
if(rs->curfield)
spos+= sprintf(spos, "Field %d ", rs->curfield);

@ -805,7 +805,7 @@ int buttons_context(const bContext *C, const char *member, bContextDataResult *r
if(ma) {
bNode *node= give_current_material_texture_node(ma);
CTX_data_pointer_set(result, &ma->id, &RNA_Node, node);
CTX_data_pointer_set(result, &ma->nodetree->id, &RNA_Node, node);
}
}

@ -1218,6 +1218,8 @@ static int do_outliner_operation_event(bContext *C, Scene *scene, ARegion *ar, S
WM_operator_name_call(C, "OUTLINER_OT_animdata_operation", WM_OP_INVOKE_REGION_WIN, NULL);
else if (datalevel == TSE_DRIVER_BASE)
/* do nothing... no special ops needed yet */;
else if ELEM3(datalevel, TSE_R_LAYER_BASE, TSE_R_LAYER, TSE_R_PASS)
/*WM_operator_name_call(C, "OUTLINER_OT_renderdata_operation", WM_OP_INVOKE_REGION_WIN, NULL)*/;
else
WM_operator_name_call(C, "OUTLINER_OT_data_operation", WM_OP_INVOKE_REGION_WIN, NULL);
}

@ -1946,7 +1946,7 @@ static void draw_pose_bones(Scene *scene, View3D *v3d, ARegion *ar, Base *base,
index+= 0x10000;
}
/* restore things */
if ((arm->drawtype!=ARM_LINE)&& (dt>OB_WIRE) && (arm->flag & ARM_POSEMODE))
if (!ELEM(arm->drawtype, ARM_WIRE, ARM_LINE) && (dt>OB_WIRE) && (arm->flag & ARM_POSEMODE))
bglPolygonOffset(rv3d->dist, 0.0);
}

@ -169,7 +169,8 @@ static void rna_trackingCamera_focal_mm_set(PointerRNA *ptr, float value)
if(clip->lastsize[0])
value= clip->lastsize[0]*value/camera->sensor_width;
camera->focal= value;
if(value>=0.0001)
camera->focal= value;
}
static int rna_track_2d_stabilization(CollectionPropertyIterator *UNUSED(iter), void *data)
@ -372,7 +373,7 @@ static void rna_def_trackingCamera(BlenderRNA *brna)
/* Focal Length */
prop= RNA_def_property(srna, "focal_length", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "focal");
RNA_def_property_range(prop, 0.0f, 5000.0f);
RNA_def_property_range(prop, 0.0001f, 5000.0f);
RNA_def_property_float_funcs(prop, "rna_trackingCamera_focal_mm_get", "rna_trackingCamera_focal_mm_set", NULL);
RNA_def_property_ui_text(prop, "Focal Length", "Camera's focal length");
RNA_def_property_update(prop, NC_MOVIECLIP|NA_EDITED, NULL);

@ -33,6 +33,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_utildefines.h"
#include "BLI_string.h"
#include "BLI_math.h"
#include "BLI_ghash.h"
#include "BLI_edgehash.h"

@ -69,6 +69,7 @@ void fluidsim_init(FluidsimModifierData *fluidmd)
if(fluidmd)
{
FluidsimSettings *fss = MEM_callocN(sizeof(FluidsimSettings), "fluidsimsettings");
int surfdataPathMax = FILE_MAX;
fluidmd->fss = fss;
@ -104,7 +105,22 @@ void fluidsim_init(FluidsimModifierData *fluidmd)
/* elubie: changed this to default to the same dir as the render output
to prevent saving to C:\ on Windows */
BLI_strncpy(fss->surfdataPath, BLI_temporary_dir(), FILE_MAX);
if (G.relbase_valid) { /* is the .blend saved? */
/* subfolder next to saved file */
BLI_strncpy(fss->surfdataPath, "//fluid_cache", surfdataPathMax);
BLI_add_slash(fss->surfdataPath);
}
else {
/* subfolder in temp. directory */
BLI_strncpy(fss->surfdataPath, BLI_temporary_dir(), surfdataPathMax);
surfdataPathMax -= strlen(fss->surfdataPath);
if (surfdataPathMax > 1) {
BLI_strncpy(fss->surfdataPath+strlen(fss->surfdataPath), "fluid_cache", surfdataPathMax);
surfdataPathMax -= strlen("fluid_cache");
if (surfdataPathMax > 1)
BLI_add_slash(fss->surfdataPath);
}
}
// first init of bounding box
// no bounding box needed

@ -34,10 +34,12 @@
#include "DNA_scene_types.h"
#include "BKE_cdderivedmesh.h"
#include "BKE_global.h"
#include "BKE_modifier.h"
#include "BKE_ocean.h"
#include "BKE_utildefines.h"
#include "BLI_blenlib.h"
#include "BLI_math.h"
#include "BLI_math_inline.h"
#include "BLI_utildefines.h"
@ -95,6 +97,7 @@ static void initData(ModifierData *md)
{
#ifdef WITH_OCEANSIM
OceanModifierData *omd = (OceanModifierData*) md;
int cachepathmax = sizeof(omd->cachepath);
omd->resolution = 7;
omd->spatial_size = 50;
@ -122,7 +125,22 @@ static void initData(ModifierData *md)
omd->repeat_x = 1;
omd->repeat_y = 1;
BLI_strncpy(omd->cachepath, "//ocean_cache", sizeof(omd->cachepath));
if (G.relbase_valid) { /* is the .blend saved? */
/* subfolder next to saved file */
BLI_strncpy(omd->cachepath, "//ocean_cache", cachepathmax);
BLI_add_slash(omd->cachepath);
}
else {
/* subfolder in temp. directory */
BLI_strncpy(omd->cachepath, BLI_temporary_dir(), cachepathmax);
cachepathmax -= strlen(omd->cachepath);
if (cachepathmax > 1) {
BLI_strncpy(omd->cachepath+strlen(omd->cachepath), "ocean_cache", cachepathmax);
cachepathmax -= strlen("ocean_cache");
if (cachepathmax > 1)
BLI_add_slash(omd->cachepath);
}
}
omd->cached = 0;
omd->bakestart = 1;

@ -51,6 +51,7 @@ static void node_shader_exec_texture(void *data, bNode *node, bNodeStack **in, b
if(data && node->id) {
ShadeInput *shi= ((ShaderCallData *)data)->shi;
TexResult texres;
bNodeSocket *sock_vector= node->inputs.first;
float vec[3], nor[3]={0.0f, 0.0f, 0.0f};
int retval;
short which_output = node->custom1;
@ -63,7 +64,8 @@ static void node_shader_exec_texture(void *data, bNode *node, bNodeStack **in, b
texres.nor= nor;
texres.tr= texres.tg= texres.tb= 0.0f;
if(in[0]->hasinput) {
/* don't use in[0]->hasinput, see material node for explanation */
if(sock_vector->link) {
nodestack_get_vec(vec, SOCK_VECTOR, in[0]);
if(in[0]->datatype==NS_OSA_VECTORS) {

@ -834,18 +834,18 @@ PyObject *newColorObject(float *col, int type, PyTypeObject *base_type)
self= base_type ? (ColorObject *)base_type->tp_alloc(base_type, 0) :
(ColorObject *)PyObject_GC_New(ColorObject, &color_Type);
if(self) {
if (self) {
/* init callbacks as NULL */
self->cb_user= NULL;
self->cb_type= self->cb_subtype= 0;
if(type == Py_WRAP) {
if (type == Py_WRAP) {
self->col = col;
self->wrapped = Py_WRAP;
}
else if (type == Py_NEW) {
self->col = PyMem_Malloc(COLOR_SIZE * sizeof(float));
if(col)
if (col)
copy_v3_v3(self->col, col);
else
zero_v3(self->col);
@ -863,7 +863,7 @@ PyObject *newColorObject(float *col, int type, PyTypeObject *base_type)
PyObject *newColorObject_cb(PyObject *cb_user, int cb_type, int cb_subtype)
{
ColorObject *self= (ColorObject *)newColorObject(NULL, Py_NEW, NULL);
if(self) {
if (self) {
Py_INCREF(cb_user);
self->cb_user= cb_user;
self->cb_type= (unsigned char)cb_type;

@ -941,8 +941,10 @@ static PyObject *Matrix_invert(MatrixObject *self)
int x, y, z = 0;
float det = 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};
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 (BaseMath_ReadCallback(self) == -1)
return NULL;
@ -964,9 +966,11 @@ static PyObject *Matrix_invert(MatrixObject *self)
mat[1] = -self->matrix[0][1];
mat[2] = -self->matrix[1][0];
mat[3] = self->matrix[0][0];
} else if (self->row_size == 3) {
}
else if (self->row_size == 3) {
adjoint_m3_m3((float (*)[3]) mat,(float (*)[3])self->contigPtr);
} else if (self->row_size == 4) {
}
else if (self->row_size == 4) {
adjoint_m4_m4((float (*)[4]) mat, (float (*)[4])self->contigPtr);
}
/*divide by determinate*/
@ -1183,7 +1187,8 @@ static PyObject *Matrix_transpose(MatrixObject *self)
t = self->matrix[1][0];
self->matrix[1][0] = self->matrix[0][1];
self->matrix[0][1] = t;
} else if (self->row_size == 3) {
}
else if (self->row_size == 3) {
transpose_m3((float (*)[3])self->contigPtr);
}
else {
@ -1253,7 +1258,8 @@ static PyObject *Matrix_identity(MatrixObject *self)
self->matrix[0][1] = 0.0f;
self->matrix[1][0] = 0.0f;
self->matrix[1][1] = 1.0f;
} else if (self->row_size == 3) {
}
else if (self->row_size == 3) {
unit_m3((float (*)[3])self->contigPtr);
}
else {
@ -1657,7 +1663,8 @@ static PyObject *Matrix_subscript(MatrixObject* self, PyObject* item)
if (i < 0)
i += self->row_size;
return Matrix_item(self, i);
} else if (PySlice_Check(item)) {
}
else if (PySlice_Check(item)) {
Py_ssize_t start, stop, step, slicelength;
if (PySlice_GetIndicesEx((void *)item, self->row_size, &start, &stop, &step, &slicelength) < 0)

@ -639,7 +639,8 @@ static PyObject *Quaternion_subscript(QuaternionObject *self, PyObject *item)
if (i < 0)
i += QUAT_SIZE;
return Quaternion_item(self, i);
} else if (PySlice_Check(item)) {
}
else if (PySlice_Check(item)) {
Py_ssize_t start, stop, step, slicelength;
if (PySlice_GetIndicesEx((void *)item, QUAT_SIZE, &start, &stop, &step, &slicelength) < 0)

@ -61,7 +61,7 @@ static PyObject *Vector_new(PyTypeObject *type, PyObject *args, PyObject *UNUSED
case 0:
break;
case 1:
if((size=mathutils_array_parse(vec, 2, 4, PyTuple_GET_ITEM(args, 0), "mathutils.Vector()")) == -1)
if ((size=mathutils_array_parse(vec, 2, 4, PyTuple_GET_ITEM(args, 0), "mathutils.Vector()")) == -1)
return NULL;
break;
default:
@ -77,7 +77,7 @@ static PyObject *vec__apply_to_copy(PyNoArgsFunction vec_func, VectorObject *sel
{
PyObject *ret= Vector_copy(self);
PyObject *ret_dummy= vec_func(ret);
if(ret_dummy) {
if (ret_dummy) {
Py_DECREF(ret_dummy);
return (PyObject *)ret;
}
@ -97,7 +97,7 @@ static PyObject *Vector_zero(VectorObject *self)
{
fill_vn(self->vec, self->size, 0.0f);
if(BaseMath_WriteCallback(self) == -1)
if (BaseMath_WriteCallback(self) == -1)
return NULL;
Py_RETURN_NONE;
@ -119,7 +119,7 @@ static PyObject *Vector_normalize(VectorObject *self)
int i;
float norm = 0.0f;
if(BaseMath_ReadCallback(self) == -1)
if (BaseMath_ReadCallback(self) == -1)
return NULL;
for (i = 0; i < self->size; i++) {
@ -156,13 +156,13 @@ PyDoc_STRVAR(Vector_resize_2d_doc,
);
static PyObject *Vector_resize_2d(VectorObject *self)
{
if(self->wrapped==Py_WRAP) {
if (self->wrapped==Py_WRAP) {
PyErr_SetString(PyExc_TypeError,
"Vector.resize_2d(): "
"cannot resize wrapped data - only python vectors");
return NULL;
}
if(self->cb_user) {
if (self->cb_user) {
PyErr_SetString(PyExc_TypeError,
"Vector.resize_2d(): "
"cannot resize a vector that has an owner");
@ -170,7 +170,7 @@ static PyObject *Vector_resize_2d(VectorObject *self)
}
self->vec = PyMem_Realloc(self->vec, (sizeof(float) * 2));
if(self->vec == NULL) {
if (self->vec == NULL) {
PyErr_SetString(PyExc_MemoryError,
"Vector.resize_2d(): "
"problem allocating pointer space");
@ -197,7 +197,7 @@ static PyObject *Vector_resize_3d(VectorObject *self)
"cannot resize wrapped data - only python vectors");
return NULL;
}
if(self->cb_user) {
if (self->cb_user) {
PyErr_SetString(PyExc_TypeError,
"Vector.resize_3d(): "
"cannot resize a vector that has an owner");
@ -205,14 +205,14 @@ static PyObject *Vector_resize_3d(VectorObject *self)
}
self->vec = PyMem_Realloc(self->vec, (sizeof(float) * 3));
if(self->vec == NULL) {
if (self->vec == NULL) {
PyErr_SetString(PyExc_MemoryError,
"Vector.resize_3d(): "
"problem allocating pointer space");
return NULL;
}
if(self->size == 2)
if (self->size == 2)
self->vec[2] = 0.0f;
self->size = 3;
@ -229,13 +229,13 @@ PyDoc_STRVAR(Vector_resize_4d_doc,
);
static PyObject *Vector_resize_4d(VectorObject *self)
{
if(self->wrapped==Py_WRAP) {
if (self->wrapped==Py_WRAP) {
PyErr_SetString(PyExc_TypeError,
"Vector.resize_4d(): "
"cannot resize wrapped data - only python vectors");
return NULL;
}
if(self->cb_user) {
if (self->cb_user) {
PyErr_SetString(PyExc_TypeError,
"Vector.resize_4d(): "
"cannot resize a vector that has an owner");
@ -243,18 +243,18 @@ static PyObject *Vector_resize_4d(VectorObject *self)
}
self->vec = PyMem_Realloc(self->vec, (sizeof(float) * 4));
if(self->vec == NULL) {
if (self->vec == NULL) {
PyErr_SetString(PyExc_MemoryError,
"Vector.resize_4d(): "
"problem allocating pointer space");
return NULL;
}
if(self->size == 2) {
if (self->size == 2) {
self->vec[2] = 0.0f;
self->vec[3] = 1.0f;
}
else if(self->size == 3) {
else if (self->size == 3) {
self->vec[3] = 1.0f;
}
self->size = 4;
@ -270,7 +270,7 @@ PyDoc_STRVAR(Vector_to_2d_doc,
);
static PyObject *Vector_to_2d(VectorObject *self)
{
if(BaseMath_ReadCallback(self) == -1)
if (BaseMath_ReadCallback(self) == -1)
return NULL;
return newVectorObject(self->vec, 2, Py_NEW, Py_TYPE(self));
@ -287,7 +287,7 @@ static PyObject *Vector_to_3d(VectorObject *self)
{
float tvec[3]= {0.0f};
if(BaseMath_ReadCallback(self) == -1)
if (BaseMath_ReadCallback(self) == -1)
return NULL;
memcpy(tvec, self->vec, sizeof(float) * MIN2(self->size, 3));
@ -305,7 +305,7 @@ static PyObject *Vector_to_4d(VectorObject *self)
{
float tvec[4]= {0.0f, 0.0f, 0.0f, 1.0f};
if(BaseMath_ReadCallback(self) == -1)
if (BaseMath_ReadCallback(self) == -1)
return NULL;
memcpy(tvec, self->vec, sizeof(float) * MIN2(self->size, 4));
@ -330,7 +330,7 @@ static PyObject *Vector_to_tuple_ext(VectorObject *self, int ndigits)
ret= PyTuple_New(self->size);
if(ndigits >= 0) {
if (ndigits >= 0) {
for (i = 0; i < self->size; i++) {
PyTuple_SET_ITEM(ret, i, PyFloat_FromDouble(double_round((double)self->vec[i], ndigits)));
}
@ -348,20 +348,20 @@ static PyObject *Vector_to_tuple(VectorObject *self, PyObject *args)
{
int ndigits= 0;
if(!PyArg_ParseTuple(args, "|i:to_tuple", &ndigits))
if (!PyArg_ParseTuple(args, "|i:to_tuple", &ndigits))
return NULL;
if(ndigits > 22 || ndigits < 0) {
if (ndigits > 22 || ndigits < 0) {
PyErr_SetString(PyExc_ValueError,
"Vector.to_tuple(ndigits): "
"ndigits must be between 0 and 21");
return NULL;
}
if(PyTuple_GET_SIZE(args)==0)
if (PyTuple_GET_SIZE(args)==0)
ndigits= -1;
if(BaseMath_ReadCallback(self) == -1)
if (BaseMath_ReadCallback(self) == -1)
return NULL;
return Vector_to_tuple_ext(self, ndigits);
@ -385,7 +385,7 @@ static PyObject *Vector_to_track_quat(VectorObject *self, PyObject *args)
const char *strack, *sup;
short track = 2, up = 1;
if(!PyArg_ParseTuple(args, "|ss:to_track_quat", &strack, &sup))
if (!PyArg_ParseTuple(args, "|ss:to_track_quat", &strack, &sup))
return NULL;
if (self->size != 3) {
@ -395,7 +395,7 @@ static PyObject *Vector_to_track_quat(VectorObject *self, PyObject *args)
return NULL;
}
if(BaseMath_ReadCallback(self) == -1)
if (BaseMath_ReadCallback(self) == -1)
return NULL;
if (strack) {
@ -508,10 +508,10 @@ static PyObject *Vector_reflect(VectorObject *self, PyObject *value)
float reflect[3] = {0.0f};
float tvec[MAX_DIMENSIONS];
if(BaseMath_ReadCallback(self) == -1)
if (BaseMath_ReadCallback(self) == -1)
return NULL;
if((value_size= mathutils_array_parse(tvec, 2, 4, value, "Vector.reflect(other), invalid 'other' arg")) == -1)
if ((value_size= mathutils_array_parse(tvec, 2, 4, value, "Vector.reflect(other), invalid 'other' arg")) == -1)
return NULL;
mirror[0] = tvec[0];
@ -547,10 +547,10 @@ static PyObject *Vector_cross(VectorObject *self, PyObject *value)
VectorObject *ret;
float tvec[MAX_DIMENSIONS];
if(BaseMath_ReadCallback(self) == -1)
if (BaseMath_ReadCallback(self) == -1)
return NULL;
if(mathutils_array_parse(tvec, self->size, self->size, value, "Vector.cross(other), invalid 'other' arg") == -1)
if (mathutils_array_parse(tvec, self->size, self->size, value, "Vector.cross(other), invalid 'other' arg") == -1)
return NULL;
ret= (VectorObject *)newVectorObject(NULL, 3, Py_NEW, Py_TYPE(self));
@ -574,10 +574,10 @@ static PyObject *Vector_dot(VectorObject *self, PyObject *value)
double dot = 0.0;
int x;
if(BaseMath_ReadCallback(self) == -1)
if (BaseMath_ReadCallback(self) == -1)
return NULL;
if(mathutils_array_parse(tvec, self->size, self->size, value, "Vector.dot(other), invalid 'other' arg") == -1)
if (mathutils_array_parse(tvec, self->size, self->size, value, "Vector.dot(other), invalid 'other' arg") == -1)
return NULL;
for (x = 0; x < self->size; x++) {
@ -611,13 +611,13 @@ static PyObject *Vector_angle(VectorObject *self, PyObject *args)
int x;
PyObject *fallback= NULL;
if(!PyArg_ParseTuple(args, "O|O:angle", &value, &fallback))
if (!PyArg_ParseTuple(args, "O|O:angle", &value, &fallback))
return NULL;
if(BaseMath_ReadCallback(self) == -1)
if (BaseMath_ReadCallback(self) == -1)
return NULL;
if(mathutils_array_parse(tvec, size, size, value, "Vector.angle(other), invalid 'other' arg") == -1)
if (mathutils_array_parse(tvec, size, size, value, "Vector.angle(other), invalid 'other' arg") == -1)
return NULL;
for (x = 0; x < size; x++) {
@ -626,7 +626,7 @@ static PyObject *Vector_angle(VectorObject *self, PyObject *args)
}
if (!test_v1 || !test_v2) {
/* avoid exception */
if(fallback) {
if (fallback) {
Py_INCREF(fallback);
return fallback;
}
@ -648,7 +648,7 @@ static PyObject *Vector_angle(VectorObject *self, PyObject *args)
}
PyDoc_STRVAR(Vector_rotation_difference_doc,
".. function:: difference(other)\n"
".. function:: rotation_difference(other)\n"
"\n"
" Returns a quaternion representing the rotational difference between this\n"
" vector and another.\n"
@ -664,17 +664,17 @@ static PyObject *Vector_rotation_difference(VectorObject *self, PyObject *value)
{
float quat[4], vec_a[3], vec_b[3];
if(self->size < 3) {
if (self->size < 3) {
PyErr_SetString(PyExc_ValueError,
"vec.difference(value): "
"expects both vectors to be size 3 or 4");
return NULL;
}
if(BaseMath_ReadCallback(self) == -1)
if (BaseMath_ReadCallback(self) == -1)
return NULL;
if(mathutils_array_parse(vec_b, 3, MAX_DIMENSIONS, value, "Vector.difference(other), invalid 'other' arg") == -1)
if (mathutils_array_parse(vec_b, 3, MAX_DIMENSIONS, value, "Vector.difference(other), invalid 'other' arg") == -1)
return NULL;
normalize_v3_v3(vec_a, self->vec);
@ -703,13 +703,13 @@ static PyObject *Vector_project(VectorObject *self, PyObject *value)
double dot = 0.0f, dot2 = 0.0f;
int x;
if(BaseMath_ReadCallback(self) == -1)
if (BaseMath_ReadCallback(self) == -1)
return NULL;
if(mathutils_array_parse(tvec, size, size, value, "Vector.project(other), invalid 'other' arg") == -1)
if (mathutils_array_parse(tvec, size, size, value, "Vector.project(other), invalid 'other' arg") == -1)
return NULL;
if(BaseMath_ReadCallback(self) == -1)
if (BaseMath_ReadCallback(self) == -1)
return NULL;
//get dot products
@ -745,13 +745,13 @@ static PyObject *Vector_lerp(VectorObject *self, PyObject *args)
float tvec[MAX_DIMENSIONS], vec[MAX_DIMENSIONS];
int x;
if(!PyArg_ParseTuple(args, "Of:lerp", &value, &fac))
if (!PyArg_ParseTuple(args, "Of:lerp", &value, &fac))
return NULL;
if(mathutils_array_parse(tvec, size, size, value, "Vector.lerp(other), invalid 'other' arg") == -1)
if (mathutils_array_parse(tvec, size, size, value, "Vector.lerp(other), invalid 'other' arg") == -1)
return NULL;
if(BaseMath_ReadCallback(self) == -1)
if (BaseMath_ReadCallback(self) == -1)
return NULL;
ifac= 1.0f - fac;
@ -774,13 +774,13 @@ static PyObject *Vector_rotate(VectorObject *self, PyObject *value)
{
float other_rmat[3][3];
if(BaseMath_ReadCallback(self) == -1)
if (BaseMath_ReadCallback(self) == -1)
return NULL;
if(mathutils_any_to_rotmat(other_rmat, value, "Vector.rotate(value)") == -1)
if (mathutils_any_to_rotmat(other_rmat, value, "Vector.rotate(value)") == -1)
return NULL;
if(self->size < 3) {
if (self->size < 3) {
PyErr_SetString(PyExc_ValueError,
"Vector must be 3D or 4D");
return NULL;
@ -805,7 +805,7 @@ PyDoc_STRVAR(Vector_copy_doc,
);
static PyObject *Vector_copy(VectorObject *self)
{
if(BaseMath_ReadCallback(self) == -1)
if (BaseMath_ReadCallback(self) == -1)
return NULL;
return newVectorObject(self->vec, self->size, Py_NEW, Py_TYPE(self));
@ -815,7 +815,7 @@ static PyObject *Vector_repr(VectorObject *self)
{
PyObject *ret, *tuple;
if(BaseMath_ReadCallback(self) == -1)
if (BaseMath_ReadCallback(self) == -1)
return NULL;
tuple= Vector_to_tuple_ext(self, -1);
@ -833,10 +833,10 @@ static int Vector_len(VectorObject *self)
/* sequence accessor (get): vector[index] */
static PyObject *vector_item_internal(VectorObject *self, int i, const int is_attr)
{
if(i<0) i= self->size-i;
if (i<0) i= self->size-i;
if(i < 0 || i >= self->size) {
if(is_attr) {
if (i < 0 || i >= self->size) {
if (is_attr) {
PyErr_Format(PyExc_AttributeError,
"Vector.%c: unavailable on %dd vector",
*(((char *)"xyzw") + i), self->size);
@ -848,7 +848,7 @@ static PyObject *vector_item_internal(VectorObject *self, int i, const int is_at
return NULL;
}
if(BaseMath_ReadIndexCallback(self, i) == -1)
if (BaseMath_ReadIndexCallback(self, i) == -1)
return NULL;
return PyFloat_FromDouble(self->vec[i]);
@ -862,17 +862,17 @@ static PyObject *Vector_item(VectorObject *self, int i)
static int vector_ass_item_internal(VectorObject *self, int i, PyObject *value, const int is_attr)
{
float scalar;
if((scalar=PyFloat_AsDouble(value))==-1.0f && PyErr_Occurred()) { /* parsed item not a number */
if ((scalar=PyFloat_AsDouble(value))==-1.0f && PyErr_Occurred()) { /* parsed item not a number */
PyErr_SetString(PyExc_TypeError,
"vector[index] = x: "
"index argument not a number");
return -1;
}
if(i<0) i= self->size-i;
if (i<0) i= self->size-i;
if(i < 0 || i >= self->size) {
if(is_attr) {
if (i < 0 || i >= self->size) {
if (is_attr) {
PyErr_Format(PyExc_AttributeError,
"Vector.%c = x: unavailable on %dd vector",
*(((char *)"xyzw") + i), self->size);
@ -886,7 +886,7 @@ static int vector_ass_item_internal(VectorObject *self, int i, PyObject *value,
}
self->vec[i] = scalar;
if(BaseMath_WriteIndexCallback(self, i) == -1)
if (BaseMath_WriteIndexCallback(self, i) == -1)
return -1;
return 0;
}
@ -902,7 +902,7 @@ static PyObject *Vector_slice(VectorObject *self, int begin, int end)
PyObject *tuple;
int count;
if(BaseMath_ReadCallback(self) == -1)
if (BaseMath_ReadCallback(self) == -1)
return NULL;
CLAMP(begin, 0, self->size);
@ -923,7 +923,7 @@ static int Vector_ass_slice(VectorObject *self, int begin, int end, PyObject *se
int y, size = 0;
float vec[MAX_DIMENSIONS];
if(BaseMath_ReadCallback(self) == -1)
if (BaseMath_ReadCallback(self) == -1)
return -1;
CLAMP(begin, 0, self->size);
@ -931,7 +931,7 @@ static int Vector_ass_slice(VectorObject *self, int begin, int end, PyObject *se
begin = MIN2(begin, end);
size = (end - begin);
if(mathutils_array_parse(vec, size, size, seq, "vector[begin:end] = [...]") == -1)
if (mathutils_array_parse(vec, size, size, seq, "vector[begin:end] = [...]") == -1)
return -1;
/*parsed well - now set in vector*/
@ -939,7 +939,7 @@ static int Vector_ass_slice(VectorObject *self, int begin, int end, PyObject *se
self->vec[begin + y] = vec[y];
}
if(BaseMath_WriteCallback(self) == -1)
if (BaseMath_WriteCallback(self) == -1)
return -1;
return 0;
@ -962,11 +962,11 @@ static PyObject *Vector_add(PyObject *v1, PyObject *v2)
vec1 = (VectorObject*)v1;
vec2 = (VectorObject*)v2;
if(BaseMath_ReadCallback(vec1) == -1 || BaseMath_ReadCallback(vec2) == -1)
if (BaseMath_ReadCallback(vec1) == -1 || BaseMath_ReadCallback(vec2) == -1)
return NULL;
/*VECTOR + VECTOR*/
if(vec1->size != vec2->size) {
if (vec1->size != vec2->size) {
PyErr_SetString(PyExc_AttributeError,
"Vector addition: "
"vectors must have the same dimensions for this operation");
@ -993,14 +993,14 @@ static PyObject *Vector_iadd(PyObject *v1, PyObject *v2)
vec1 = (VectorObject*)v1;
vec2 = (VectorObject*)v2;
if(vec1->size != vec2->size) {
if (vec1->size != vec2->size) {
PyErr_SetString(PyExc_AttributeError,
"Vector addition: "
"vectors must have the same dimensions for this operation");
return NULL;
}
if(BaseMath_ReadCallback(vec1) == -1 || BaseMath_ReadCallback(vec2) == -1)
if (BaseMath_ReadCallback(vec1) == -1 || BaseMath_ReadCallback(vec2) == -1)
return NULL;
add_vn_vn(vec1->vec, vec2->vec, vec1->size);
@ -1026,10 +1026,10 @@ static PyObject *Vector_sub(PyObject *v1, PyObject *v2)
vec1 = (VectorObject*)v1;
vec2 = (VectorObject*)v2;
if(BaseMath_ReadCallback(vec1) == -1 || BaseMath_ReadCallback(vec2) == -1)
if (BaseMath_ReadCallback(vec1) == -1 || BaseMath_ReadCallback(vec2) == -1)
return NULL;
if(vec1->size != vec2->size) {
if (vec1->size != vec2->size) {
PyErr_SetString(PyExc_AttributeError,
"Vector subtraction: "
"vectors must have the same dimensions for this operation");
@ -1056,14 +1056,14 @@ static PyObject *Vector_isub(PyObject *v1, PyObject *v2)
vec1 = (VectorObject*)v1;
vec2 = (VectorObject*)v2;
if(vec1->size != vec2->size) {
if (vec1->size != vec2->size) {
PyErr_SetString(PyExc_AttributeError,
"Vector subtraction: "
"vectors must have the same dimensions for this operation");
return NULL;
}
if(BaseMath_ReadCallback(vec1) == -1 || BaseMath_ReadCallback(vec2) == -1)
if (BaseMath_ReadCallback(vec1) == -1 || BaseMath_ReadCallback(vec2) == -1)
return NULL;
sub_vn_vn(vec1->vec, vec2->vec, vec1->size);
@ -1091,8 +1091,8 @@ int column_vector_multiplication(float rvec[MAX_DIMENSIONS], VectorObject* vec,
double dot = 0.0f;
int x, y, z = 0;
if(mat->row_size != vec->size) {
if(mat->row_size == 4 && vec->size == 3) {
if (mat->row_size != vec->size) {
if (mat->row_size == 4 && vec->size == 3) {
vec_cpy[3] = 1.0f;
}
else {
@ -1133,12 +1133,12 @@ static PyObject *Vector_mul(PyObject *v1, PyObject *v2)
if VectorObject_Check(v1) {
vec1= (VectorObject *)v1;
if(BaseMath_ReadCallback(vec1) == -1)
if (BaseMath_ReadCallback(vec1) == -1)
return NULL;
}
if VectorObject_Check(v2) {
vec2= (VectorObject *)v2;
if(BaseMath_ReadCallback(vec2) == -1)
if (BaseMath_ReadCallback(vec2) == -1)
return NULL;
}
@ -1148,7 +1148,7 @@ static PyObject *Vector_mul(PyObject *v1, PyObject *v2)
int i;
double dot = 0.0f;
if(vec1->size != vec2->size) {
if (vec1->size != vec2->size) {
PyErr_SetString(PyExc_ValueError,
"Vector multiplication: "
"vectors must have the same dimensions for this operation");
@ -1166,9 +1166,9 @@ static PyObject *Vector_mul(PyObject *v1, PyObject *v2)
/* VEC * MATRIX */
float tvec[MAX_DIMENSIONS];
if(BaseMath_ReadCallback((MatrixObject *)v2) == -1)
if (BaseMath_ReadCallback((MatrixObject *)v2) == -1)
return NULL;
if(row_vector_multiplication(tvec, vec1, (MatrixObject*)v2) == -1) {
if (row_vector_multiplication(tvec, vec1, (MatrixObject*)v2) == -1) {
return NULL;
}
@ -1186,13 +1186,13 @@ static PyObject *Vector_mul(PyObject *v1, PyObject *v2)
QuaternionObject *quat2 = (QuaternionObject*)v2;
float tvec[3];
if(vec1->size != 3) {
if (vec1->size != 3) {
PyErr_SetString(PyExc_ValueError,
"Vector multiplication: "
"only 3D vector rotations (with quats) currently supported");
return NULL;
}
if(BaseMath_ReadCallback(quat2) == -1) {
if (BaseMath_ReadCallback(quat2) == -1) {
return NULL;
}
@ -1228,7 +1228,7 @@ static PyObject *Vector_imul(PyObject *v1, PyObject *v2)
VectorObject *vec = (VectorObject *)v1;
float scalar;
if(BaseMath_ReadCallback(vec) == -1)
if (BaseMath_ReadCallback(vec) == -1)
return NULL;
/* only support vec*=float and vec*=mat
@ -1243,10 +1243,10 @@ static PyObject *Vector_imul(PyObject *v1, PyObject *v2)
return NULL;
#else
float rvec[MAX_DIMENSIONS];
if(BaseMath_ReadCallback((MatrixObject *)v2) == -1)
if (BaseMath_ReadCallback((MatrixObject *)v2) == -1)
return NULL;
if(column_vector_multiplication(rvec, vec, (MatrixObject*)v2) == -1)
if (column_vector_multiplication(rvec, vec, (MatrixObject*)v2) == -1)
return NULL;
memcpy(vec->vec, rvec, sizeof(float) * vec->size);
@ -1266,14 +1266,14 @@ static PyObject *Vector_imul(PyObject *v1, PyObject *v2)
#else
QuaternionObject *quat2 = (QuaternionObject*)v2;
if(vec->size != 3) {
if (vec->size != 3) {
PyErr_SetString(PyExc_ValueError,
"Vector multiplication: "
"only 3D vector rotations (with quats) currently supported");
return NULL;
}
if(BaseMath_ReadCallback(quat2) == -1) {
if (BaseMath_ReadCallback(quat2) == -1) {
return NULL;
}
@ -1304,7 +1304,7 @@ static PyObject *Vector_div(PyObject *v1, PyObject *v2)
float vec[4], scalar;
VectorObject *vec1 = NULL;
if(!VectorObject_Check(v1)) { /* not a vector */
if (!VectorObject_Check(v1)) { /* not a vector */
PyErr_SetString(PyExc_TypeError,
"Vector division: "
"Vector must be divided by a float");
@ -1312,17 +1312,17 @@ static PyObject *Vector_div(PyObject *v1, PyObject *v2)
}
vec1 = (VectorObject*)v1; /* vector */
if(BaseMath_ReadCallback(vec1) == -1)
if (BaseMath_ReadCallback(vec1) == -1)
return NULL;
if((scalar=PyFloat_AsDouble(v2)) == -1.0f && PyErr_Occurred()) { /* parsed item not a number */
if ((scalar=PyFloat_AsDouble(v2)) == -1.0f && PyErr_Occurred()) { /* parsed item not a number */
PyErr_SetString(PyExc_TypeError,
"Vector division: "
"Vector must be divided by a float");
return NULL;
}
if(scalar==0.0f) {
if (scalar==0.0f) {
PyErr_SetString(PyExc_ZeroDivisionError,
"Vector division: "
"divide by zero error");
@ -1342,17 +1342,17 @@ static PyObject *Vector_idiv(PyObject *v1, PyObject *v2)
float scalar;
VectorObject *vec1 = (VectorObject*)v1;
if(BaseMath_ReadCallback(vec1) == -1)
if (BaseMath_ReadCallback(vec1) == -1)
return NULL;
if((scalar=PyFloat_AsDouble(v2)) == -1.0f && PyErr_Occurred()) { /* parsed item not a number */
if ((scalar=PyFloat_AsDouble(v2)) == -1.0f && PyErr_Occurred()) { /* parsed item not a number */
PyErr_SetString(PyExc_TypeError,
"Vector division: "
"Vector must be divided by a float");
return NULL;
}
if(scalar==0.0f) {
if (scalar==0.0f) {
PyErr_SetString(PyExc_ZeroDivisionError,
"Vector division: "
"divide by zero error");
@ -1374,7 +1374,7 @@ static PyObject *Vector_neg(VectorObject *self)
{
float tvec[MAX_DIMENSIONS];
if(BaseMath_ReadCallback(self) == -1)
if (BaseMath_ReadCallback(self) == -1)
return NULL;
negate_vn_vn(tvec, self->vec, self->size);
@ -1418,7 +1418,7 @@ static PyObject* Vector_richcmpr(PyObject *objectA, PyObject *objectB, int compa
vecA = (VectorObject*)objectA;
vecB = (VectorObject*)objectB;
if(BaseMath_ReadCallback(vecA) == -1 || BaseMath_ReadCallback(vecB) == -1)
if (BaseMath_ReadCallback(vecA) == -1 || BaseMath_ReadCallback(vecB) == -1)
return NULL;
if (vecA->size != vecB->size) {
@ -1434,14 +1434,14 @@ static PyObject* Vector_richcmpr(PyObject *objectA, PyObject *objectB, int compa
case Py_LT:
lenA = vec_magnitude_nosqrt(vecA->vec, vecA->size);
lenB = vec_magnitude_nosqrt(vecB->vec, vecB->size);
if(lenA < lenB) {
if (lenA < lenB) {
result = 1;
}
break;
case Py_LE:
lenA = vec_magnitude_nosqrt(vecA->vec, vecA->size);
lenB = vec_magnitude_nosqrt(vecB->vec, vecB->size);
if(lenA < lenB) {
if (lenA < lenB) {
result = 1;
}
else {
@ -1457,14 +1457,14 @@ static PyObject* Vector_richcmpr(PyObject *objectA, PyObject *objectB, int compa
case Py_GT:
lenA = vec_magnitude_nosqrt(vecA->vec, vecA->size);
lenB = vec_magnitude_nosqrt(vecB->vec, vecB->size);
if(lenA > lenB) {
if (lenA > lenB) {
result = 1;
}
break;
case Py_GE:
lenA = vec_magnitude_nosqrt(vecA->vec, vecA->size);
lenB = vec_magnitude_nosqrt(vecB->vec, vecB->size);
if(lenA > lenB) {
if (lenA > lenB) {
result = 1;
}
else {
@ -1632,7 +1632,7 @@ static PyObject *Vector_getLength(VectorObject *self, void *UNUSED(closure))
double dot = 0.0f;
int i;
if(BaseMath_ReadCallback(self) == -1)
if (BaseMath_ReadCallback(self) == -1)
return NULL;
for (i = 0; i < self->size; i++) {
@ -1646,10 +1646,10 @@ static int Vector_setLength(VectorObject *self, PyObject *value)
double dot = 0.0f, param;
int i;
if(BaseMath_ReadCallback(self) == -1)
if (BaseMath_ReadCallback(self) == -1)
return -1;
if((param=PyFloat_AsDouble(value)) == -1.0 && PyErr_Occurred()) {
if ((param=PyFloat_AsDouble(value)) == -1.0 && PyErr_Occurred()) {
PyErr_SetString(PyExc_TypeError,
"length must be set to a number");
return -1;
@ -1694,7 +1694,7 @@ static PyObject *Vector_getLengthSquared(VectorObject *self, void *UNUSED(closur
double dot = 0.0f;
int i;
if(BaseMath_ReadCallback(self) == -1)
if (BaseMath_ReadCallback(self) == -1)
return NULL;
for (i = 0; i < self->size; i++) {
@ -1713,7 +1713,7 @@ static PyObject *Vector_getSwizzle(VectorObject *self, void *closure)
float vec[MAX_DIMENSIONS];
unsigned int swizzleClosure;
if(BaseMath_ReadCallback(self) == -1)
if (BaseMath_ReadCallback(self) == -1)
return NULL;
/* Unpack the axes from the closure into an array. */
@ -1722,7 +1722,7 @@ static PyObject *Vector_getSwizzle(VectorObject *self, void *closure)
while (swizzleClosure & SWIZZLE_VALID_AXIS)
{
axis_from = swizzleClosure & SWIZZLE_AXIS;
if(axis_from >= self->size) {
if (axis_from >= self->size) {
PyErr_SetString(PyExc_AttributeError,
"Vector swizzle: "
"specified axis not present");
@ -1760,7 +1760,7 @@ static int Vector_setSwizzle(VectorObject *self, PyObject *value, void *closure)
float tvec[MAX_DIMENSIONS];
float vec_assign[MAX_DIMENSIONS];
if(BaseMath_ReadCallback(self) == -1)
if (BaseMath_ReadCallback(self) == -1)
return -1;
/* Check that the closure can be used with this vector: even 2D vectors have
@ -1787,11 +1787,11 @@ static int Vector_setSwizzle(VectorObject *self, PyObject *value, void *closure)
size_from= axis_from;
}
else if(PyErr_Clear(), (size_from=mathutils_array_parse(vec_assign, 2, 4, value, "mathutils.Vector.**** = swizzle assignment")) == -1) {
else if (PyErr_Clear(), (size_from=mathutils_array_parse(vec_assign, 2, 4, value, "mathutils.Vector.**** = swizzle assignment")) == -1) {
return -1;
}
if(axis_from != size_from) {
if (axis_from != size_from) {
PyErr_SetString(PyExc_AttributeError,
"Vector swizzle: size does not match swizzle");
return -1;
@ -1811,7 +1811,7 @@ static int Vector_setSwizzle(VectorObject *self, PyObject *value, void *closure)
memcpy(self->vec, tvec, axis_from * sizeof(float));
/* continue with BaseMathObject_WriteCallback at the end */
if(BaseMath_WriteCallback(self) == -1)
if (BaseMath_WriteCallback(self) == -1)
return -1;
else
return 0;
@ -2223,8 +2223,8 @@ static int row_vector_multiplication(float rvec[MAX_DIMENSIONS], VectorObject *v
double dot = 0.0f;
int x, y, z= 0, vec_size= vec->size;
if(mat->col_size != vec_size) {
if(mat->col_size == 4 && vec_size != 3) {
if (mat->col_size != vec_size) {
if (mat->col_size == 4 && vec_size != 3) {
PyErr_SetString(PyExc_ValueError,
"vector * matrix: matrix column size "
"and the vector size must be the same");
@ -2235,7 +2235,7 @@ static int row_vector_multiplication(float rvec[MAX_DIMENSIONS], VectorObject *v
}
}
if(BaseMath_ReadCallback(vec) == -1 || BaseMath_ReadCallback(mat) == -1)
if (BaseMath_ReadCallback(vec) == -1 || BaseMath_ReadCallback(mat) == -1)
return -1;
memcpy(vec_cpy, vec->vec, vec_size * sizeof(float));
@ -2263,7 +2263,7 @@ PyDoc_STRVAR(Vector_negate_doc,
);
static PyObject *Vector_negate(VectorObject *self)
{
if(BaseMath_ReadCallback(self) == -1)
if (BaseMath_ReadCallback(self) == -1)
return NULL;
negate_vn(self->vec, self->size);
@ -2406,7 +2406,7 @@ PyObject *newVectorObject(float *vec, const int size, const int type, PyTypeObje
{
VectorObject *self;
if(size > 4 || size < 2) {
if (size > 4 || size < 2) {
PyErr_SetString(PyExc_RuntimeError,
"Vector(): invalid size");
return NULL;
@ -2415,25 +2415,25 @@ PyObject *newVectorObject(float *vec, const int size, const int type, PyTypeObje
self= base_type ? (VectorObject *)base_type->tp_alloc(base_type, 0) :
(VectorObject *)PyObject_GC_New(VectorObject, &vector_Type);
if(self) {
if (self) {
self->size = size;
/* init callbacks as NULL */
self->cb_user= NULL;
self->cb_type= self->cb_subtype= 0;
if(type == Py_WRAP) {
if (type == Py_WRAP) {
self->vec = vec;
self->wrapped = Py_WRAP;
}
else if (type == Py_NEW) {
self->vec= PyMem_Malloc(size * sizeof(float));
if(vec) {
if (vec) {
memcpy(self->vec, vec, size * sizeof(float));
}
else { /* new empty */
fill_vn(self->vec, size, 0.0f);
if(size == 4) { /* do the homogenous thing */
if (size == 4) { /* do the homogenous thing */
self->vec[3] = 1.0f;
}
}
@ -2450,7 +2450,7 @@ PyObject *newVectorObject_cb(PyObject *cb_user, int size, int cb_type, int cb_su
{
float dummy[4] = {0.0, 0.0, 0.0, 0.0}; /* dummy init vector, callbacks will be used on access */
VectorObject *self= (VectorObject *)newVectorObject(dummy, size, Py_NEW, NULL);
if(self) {
if (self) {
Py_INCREF(cb_user);
self->cb_user= cb_user;
self->cb_type= (unsigned char)cb_type;

@ -48,8 +48,6 @@
#include "BLI_utildefines.h"
#define SWAP_FLOAT(a, b, tmp) tmp=a; a=b; b=tmp
#define eps 0.000001
/*-------------------------DOC STRINGS ---------------------------*/
PyDoc_STRVAR(M_Geometry_doc,

@ -283,6 +283,11 @@ int RE_engine_render(Render *re, int do_all)
if(re->result==NULL)
return 1;
/* set render info */
re->i.cfra= re->scene->r.cfra;
BLI_strncpy(re->i.scenename, re->scene->id.name+2, sizeof(re->i.scenename));
re->i.totface=re->i.totvert=re->i.totstrand=re->i.totlamp=re->i.tothalo= 0;
/* render */
engine = RE_engine_create(type);
engine->re= re;

@ -3007,7 +3007,7 @@ void do_sky_tex(const float rco[3], float lo[3], const float dxyview[2], float h
TexResult texres= {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, NULL};
float *co, fact, stencilTin=1.0;
float tempvec[3], texvec[3], dxt[3], dyt[3];
int tex_nr, rgb= 0, ok;
int tex_nr, rgb= 0;
if (R.r.scemode & R_NO_TEX) return;
/* todo: add flag to test if there's a tex */
@ -3171,18 +3171,21 @@ void do_sky_tex(const float rco[3], float lo[3], const float dxyview[2], float h
texture_rgb_blend(hor, tcol, hor, texres.tin, mtex->colfac, mtex->blendtype);
}
if(mtex->mapto & (WOMAP_ZENUP+WOMAP_ZENDOWN)) {
ok= 0;
float zenfac = 0.0f;
if(R.wrld.skytype & WO_SKYREAL) {
if((skyflag & WO_ZENUP)) {
if(mtex->mapto & WOMAP_ZENUP) ok= 1;
if(mtex->mapto & WOMAP_ZENUP) zenfac= mtex->zenupfac;
}
else if(mtex->mapto & WOMAP_ZENDOWN) ok= 1;
else if(mtex->mapto & WOMAP_ZENDOWN) zenfac= mtex->zendownfac;
}
else {
if(mtex->mapto & WOMAP_ZENUP) zenfac= mtex->zenupfac;
else if(mtex->mapto & WOMAP_ZENDOWN) zenfac= mtex->zendownfac;
}
else ok= 1;
if(ok) {
texture_rgb_blend(zen, tcol, zen, texres.tin, mtex->colfac, mtex->blendtype);
}
if(zenfac != 0.0f)
texture_rgb_blend(zen, tcol, zen, texres.tin, zenfac, mtex->blendtype);
}
}
if(mtex->mapto & WOMAP_BLEND) {