Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMitchell Stokes <mogurijin@gmail.com>2013-07-20 02:10:11 +0400
committerMitchell Stokes <mogurijin@gmail.com>2013-07-20 02:10:11 +0400
commit103ef7cacb5dd10aa2dfd5bb973c0dfd772885eb (patch)
tree8fd9a6b770998717f4555e7121fb16116b441865
parenteb21bdd249427465a093a078cda7864309a8f735 (diff)
parent869d654cccba8b9b0bc295e7ce89e8e322912023 (diff)
Merged changes from trunk r58324-58419.ge_dev
-rw-r--r--CMakeLists.txt2
-rw-r--r--intern/cycles/blender/blender_sync.cpp4
-rw-r--r--intern/cycles/kernel/kernel_light.h2
-rw-r--r--intern/cycles/render/session.cpp2
-rw-r--r--intern/ghost/intern/GHOST_DropTargetX11.cpp2
-rw-r--r--intern/ghost/intern/GHOST_SystemCarbon.cpp3
-rw-r--r--intern/ghost/intern/GHOST_SystemX11.cpp19
-rw-r--r--intern/ghost/intern/GHOST_SystemX11.h2
-rw-r--r--intern/ghost/intern/GHOST_WindowCocoa.mm3
-rw-r--r--intern/opencl/OCL_opencl.h2
-rw-r--r--intern/opencl/intern/OCL_opencl.c4
-rw-r--r--intern/opencl/intern/clew.c5
-rw-r--r--release/datafiles/LICENSE-droidsans.ttf.txt3
-rw-r--r--release/datafiles/fonts/droidsans.ttf.gzbin2617436 -> 2644825 bytes
-rw-r--r--release/datafiles/splash.pngbin94411 -> 177989 bytes
-rw-r--r--release/scripts/startup/bl_operators/node.py4
-rw-r--r--release/scripts/startup/bl_ui/space_view3d.py6
-rw-r--r--source/blender/blenkernel/BKE_DerivedMesh.h2
-rw-r--r--source/blender/blenkernel/BKE_blender.h8
-rw-r--r--source/blender/blenkernel/BKE_fcurve.h2
-rw-r--r--source/blender/blenkernel/BKE_key.h2
-rw-r--r--source/blender/blenkernel/intern/action.c6
-rw-r--r--source/blender/blenkernel/intern/armature.c4
-rw-r--r--source/blender/blenkernel/intern/cdderivedmesh.c2
-rw-r--r--source/blender/blenkernel/intern/colortools.c2
-rw-r--r--source/blender/blenkernel/intern/constraint.c61
-rw-r--r--source/blender/blenkernel/intern/curve.c21
-rw-r--r--source/blender/blenkernel/intern/customdata.c4
-rw-r--r--source/blender/blenkernel/intern/deform.c2
-rw-r--r--source/blender/blenkernel/intern/editderivedmesh.c2
-rw-r--r--source/blender/blenkernel/intern/fcurve.c18
-rw-r--r--source/blender/blenkernel/intern/fmodifier.c12
-rw-r--r--source/blender/blenkernel/intern/implicit.c4
-rw-r--r--source/blender/blenkernel/intern/ipo.c5
-rw-r--r--source/blender/blenkernel/intern/key.c19
-rw-r--r--source/blender/blenkernel/intern/linestyle.c536
-rw-r--r--source/blender/blenkernel/intern/mask_rasterize.c8
-rw-r--r--source/blender/blenkernel/intern/material.c10
-rw-r--r--source/blender/blenkernel/intern/mesh.c5
-rw-r--r--source/blender/blenkernel/intern/node.c216
-rw-r--r--source/blender/blenkernel/intern/object.c19
-rw-r--r--source/blender/blenkernel/intern/sequencer.c4
-rw-r--r--source/blender/blenkernel/intern/subsurf_ccg.c2
-rw-r--r--source/blender/blenkernel/intern/writeffmpeg.c34
-rw-r--r--source/blender/blenlib/intern/BLI_ghash.c7
-rw-r--r--source/blender/blenlib/intern/BLI_mempool.c11
-rw-r--r--source/blender/blenlib/intern/DLRB_tree.c8
-rw-r--r--source/blender/blenlib/intern/math_geom.c5
-rw-r--r--source/blender/blenlib/intern/math_rotation.c2
-rw-r--r--source/blender/blenlib/intern/path_util.c5
-rw-r--r--source/blender/blenlib/intern/storage.c8
-rw-r--r--source/blender/blenloader/intern/readfile.c57
-rw-r--r--source/blender/bmesh/intern/bmesh_operators.c3
-rw-r--r--source/blender/bmesh/operators/bmo_create.c2
-rw-r--r--source/blender/bmesh/operators/bmo_dupe.c21
-rw-r--r--source/blender/bmesh/operators/bmo_extrude.c91
-rw-r--r--source/blender/collada/ArmatureImporter.cpp22
-rw-r--r--source/blender/collada/ControllerExporter.cpp2
-rw-r--r--source/blender/collada/MeshImporter.cpp25
-rw-r--r--source/blender/collada/TransformWriter.cpp11
-rw-r--r--source/blender/collada/collada_utils.cpp6
-rw-r--r--source/blender/compositor/intern/COM_ExecutionGroup.cpp4
-rw-r--r--source/blender/compositor/intern/COM_WorkScheduler.cpp3
-rw-r--r--source/blender/compositor/nodes/COM_GroupNode.cpp9
-rw-r--r--source/blender/editors/animation/anim_channels_defines.c24
-rw-r--r--source/blender/editors/animation/anim_channels_edit.c101
-rw-r--r--source/blender/editors/animation/anim_draw.c14
-rw-r--r--source/blender/editors/animation/anim_filter.c115
-rw-r--r--source/blender/editors/animation/drivers.c2
-rw-r--r--source/blender/editors/animation/fmodifier_ui.c2
-rw-r--r--source/blender/editors/animation/keyframes_draw.c11
-rw-r--r--source/blender/editors/animation/keyframing.c2
-rw-r--r--source/blender/editors/animation/keyingsets.c2
-rw-r--r--source/blender/editors/armature/armature_intern.h2
-rw-r--r--source/blender/editors/armature/armature_ops.c5
-rw-r--r--source/blender/editors/armature/armature_select.c139
-rw-r--r--source/blender/editors/armature/pose_slide.c15
-rw-r--r--source/blender/editors/gpencil/drawgpencil.c4
-rw-r--r--source/blender/editors/gpencil/gpencil_edit.c19
-rw-r--r--source/blender/editors/gpencil/gpencil_paint.c30
-rw-r--r--source/blender/editors/interface/interface.c4
-rw-r--r--source/blender/editors/interface/interface_widgets.c31
-rw-r--r--source/blender/editors/interface/view2d.c19
-rw-r--r--source/blender/editors/interface/view2d_ops.c5
-rw-r--r--source/blender/editors/mesh/editmesh_loopcut.c7
-rw-r--r--source/blender/editors/mesh/editmesh_select.c5
-rw-r--r--source/blender/editors/object/object_intern.h3
-rw-r--r--source/blender/editors/object/object_lattice.c167
-rw-r--r--source/blender/editors/object/object_ops.c5
-rw-r--r--source/blender/editors/object/object_relations.c8
-rw-r--r--source/blender/editors/render/render_opengl.c31
-rw-r--r--source/blender/editors/render/render_shading.c92
-rw-r--r--source/blender/editors/screen/screen_ops.c2
-rw-r--r--source/blender/editors/sculpt_paint/paint_stroke.c4
-rw-r--r--source/blender/editors/space_action/action_draw.c14
-rw-r--r--source/blender/editors/space_action/action_edit.c43
-rw-r--r--source/blender/editors/space_action/action_select.c8
-rw-r--r--source/blender/editors/space_clip/space_clip.c2
-rw-r--r--source/blender/editors/space_graph/graph_buttons.c2
-rw-r--r--source/blender/editors/space_graph/space_graph.c14
-rw-r--r--source/blender/editors/space_nla/nla_buttons.c5
-rw-r--r--source/blender/editors/space_nla/nla_channels.c13
-rw-r--r--source/blender/editors/space_nla/nla_draw.c16
-rw-r--r--source/blender/editors/space_node/drawnode.c25
-rw-r--r--source/blender/editors/space_node/node_draw.c24
-rw-r--r--source/blender/editors/space_node/node_edit.c38
-rw-r--r--source/blender/editors/space_node/node_templates.c34
-rw-r--r--source/blender/editors/space_node/space_node.c3
-rw-r--r--source/blender/editors/space_outliner/outliner_draw.c8
-rw-r--r--source/blender/editors/space_outliner/outliner_edit.c4
-rw-r--r--source/blender/editors/space_outliner/outliner_tools.c17
-rw-r--r--source/blender/editors/space_outliner/outliner_tree.c30
-rw-r--r--source/blender/editors/space_time/space_time.c2
-rw-r--r--source/blender/editors/space_view3d/drawarmature.c18
-rw-r--r--source/blender/editors/space_view3d/drawmesh.c6
-rw-r--r--source/blender/editors/space_view3d/view3d_edit.c46
-rw-r--r--source/blender/editors/space_view3d/view3d_intern.h1
-rw-r--r--source/blender/editors/space_view3d/view3d_ops.c11
-rw-r--r--source/blender/editors/space_view3d/view3d_view.c22
-rw-r--r--source/blender/editors/transform/transform.c2
-rw-r--r--source/blender/editors/transform/transform_constraints.c2
-rw-r--r--source/blender/imbuf/intern/anim_movie.c5
-rw-r--r--source/blender/imbuf/intern/cineon/logImageCore.c8
-rw-r--r--source/blender/imbuf/intern/openexr/openexr_api.cpp3
-rw-r--r--source/blender/makesdna/DNA_curve_types.h1
-rw-r--r--source/blender/makesdna/DNA_view3d_types.h1
-rw-r--r--source/blender/makesrna/intern/rna_color.c12
-rw-r--r--source/blender/makesrna/intern/rna_image.c6
-rw-r--r--source/blender/makesrna/intern/rna_object.c4
-rw-r--r--source/blender/makesrna/intern/rna_scene.c14
-rw-r--r--source/blender/makesrna/intern/rna_wm.c6
-rw-r--r--source/blender/makesrna/intern/rna_wm_api.c8
-rw-r--r--source/blender/modifiers/intern/MOD_shapekey.c11
-rw-r--r--source/blender/nodes/NOD_static_types.h2
-rw-r--r--source/blender/nodes/intern/node_socket.c60
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_math.c30
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_particle_info.c2
-rw-r--r--source/blender/python/bmesh/bmesh_py_types_meshdata.c2
-rw-r--r--source/blender/windowmanager/intern/wm_event_system.c4
-rw-r--r--source/blender/windowmanager/intern/wm_operators.c9
-rw-r--r--source/blender/windowmanager/wm_event_types.h2
-rw-r--r--source/gameengine/Expressions/KX_HashedPtr.cpp2
-rw-r--r--source/gameengine/Ketsji/KX_GameObject.cpp2
-rw-r--r--source/gameengine/Ketsji/KX_IPO_SGController.cpp2
144 files changed, 1619 insertions, 1232 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d3c65baec34..e91ec18caee 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1964,6 +1964,7 @@ if(CMAKE_COMPILER_IS_GNUCC)
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_NULL -Wnonnull) # C only
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_INCLUDE_DIRS -Wmissing-include-dirs)
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_DIV_BY_ZERO -Wno-div-by-zero)
+ ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_TYPE_LIMITS -Wtype-limits)
# gcc 4.2 gives annoying warnings on every file with this
if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.3")
@@ -1990,6 +1991,7 @@ if(CMAKE_COMPILER_IS_GNUCC)
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_INIT_SELF -Winit-self) # needs -Wuninitialized
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_MISSING_INCLUDE_DIRS -Wmissing-include-dirs)
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_DIV_BY_ZERO -Wno-div-by-zero)
+ ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_TYPE_LIMITS -Wtype-limits)
# gcc 4.2 gives annoying warnings on every file with this
if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.3")
diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp
index 72ed1b84915..e9e39e485f5 100644
--- a/intern/cycles/blender/blender_sync.cpp
+++ b/intern/cycles/blender/blender_sync.cpp
@@ -392,7 +392,7 @@ SessionParams BlenderSync::get_session_params(BL::RenderEngine b_engine, BL::Use
else {
params.samples = get_int(cscene, "preview_aa_samples");
if(params.samples == 0)
- params.samples = INT_MAX;
+ params.samples = 65536;
}
}
else {
@@ -402,7 +402,7 @@ SessionParams BlenderSync::get_session_params(BL::RenderEngine b_engine, BL::Use
else {
params.samples = get_int(cscene, "preview_samples");
if(params.samples == 0)
- params.samples = INT_MAX;
+ params.samples = 65536;
}
}
diff --git a/intern/cycles/kernel/kernel_light.h b/intern/cycles/kernel/kernel_light.h
index 4983122fb34..5091eac41db 100644
--- a/intern/cycles/kernel/kernel_light.h
+++ b/intern/cycles/kernel/kernel_light.h
@@ -271,7 +271,7 @@ __device void lamp_light_sample(KernelGlobals *kg, int lamp,
ls->pdf = invarea;
if(type == LIGHT_SPOT) {
- /* spot light attentuation */
+ /* spot light attenuation */
float4 data2 = kernel_tex_fetch(__light_data, lamp*LIGHT_SIZE + 2);
ls->eval_fac *= spot_light_attenuation(data1, data2, ls);
}
diff --git a/intern/cycles/render/session.cpp b/intern/cycles/render/session.cpp
index d13e86429d6..9ff2b91e25e 100644
--- a/intern/cycles/render/session.cpp
+++ b/intern/cycles/render/session.cpp
@@ -786,7 +786,7 @@ void Session::update_status_time(bool show_pause, bool show_done)
substatus += string_printf(", Sample %d/%d", sample, num_samples);
}
}
- else if(tile_manager.num_samples == INT_MAX)
+ else if(tile_manager.num_samples == 65536)
substatus = string_printf("Path Tracing Sample %d", sample+1);
else
substatus = string_printf("Path Tracing Sample %d/%d", sample+1, tile_manager.num_samples);
diff --git a/intern/ghost/intern/GHOST_DropTargetX11.cpp b/intern/ghost/intern/GHOST_DropTargetX11.cpp
index df500122449..639fd503759 100644
--- a/intern/ghost/intern/GHOST_DropTargetX11.cpp
+++ b/intern/ghost/intern/GHOST_DropTargetX11.cpp
@@ -191,7 +191,7 @@ void GHOST_DropTargetX11::UrlDecode(char *decodedOut, int bufferSize, const char
char *GHOST_DropTargetX11::FileUrlDecode(char *fileUrl)
{
- if (!strncpy(fileUrl, "file://", 7) == 0) {
+ if (strncpy(fileUrl, "file://", 7) != 0) {
/* assume one character of encoded URL can be expanded to 4 chars max */
int decodedSize = 4 * strlen(fileUrl) + 1;
char *decodedPath = (char *)malloc(decodedSize);
diff --git a/intern/ghost/intern/GHOST_SystemCarbon.cpp b/intern/ghost/intern/GHOST_SystemCarbon.cpp
index f7e035e890d..6e72e26beb4 100644
--- a/intern/ghost/intern/GHOST_SystemCarbon.cpp
+++ b/intern/ghost/intern/GHOST_SystemCarbon.cpp
@@ -858,7 +858,8 @@ OSStatus GHOST_SystemCarbon::handleMouseEvent(EventRef event)
break;
case kEventMouseMoved:
- case kEventMouseDragged: {
+ case kEventMouseDragged:
+ {
Point mousePos;
if (window) {
diff --git a/intern/ghost/intern/GHOST_SystemX11.cpp b/intern/ghost/intern/GHOST_SystemX11.cpp
index d00265fbd9b..2e39ee812ca 100644
--- a/intern/ghost/intern/GHOST_SystemX11.cpp
+++ b/intern/ghost/intern/GHOST_SystemX11.cpp
@@ -1139,7 +1139,8 @@ GHOST_SystemX11::processEvent(XEvent *xe)
break;
}
- default: {
+ default:
+ {
#ifdef WITH_X11_XINPUT
if (xe->type == m_xtablet.MotionEvent) {
XDeviceMotionEvent *data = (XDeviceMotionEvent *)xe;
@@ -1505,7 +1506,7 @@ convertXKey(KeySym key)
#define XCLIB_XCOUT_FALLBACK_TEXT 6
/* Retrieves the contents of a selections. */
-void GHOST_SystemX11::getClipboard_xcout(XEvent evt,
+void GHOST_SystemX11::getClipboard_xcout(const XEvent *evt,
Atom sel, Atom target, unsigned char **txt,
unsigned long *len, unsigned int *context) const
{
@@ -1535,18 +1536,18 @@ void GHOST_SystemX11::getClipboard_xcout(XEvent evt,
return;
case XCLIB_XCOUT_SENTCONVSEL:
- if (evt.type != SelectionNotify)
+ if (evt->type != SelectionNotify)
return;
- if (target == m_atom.UTF8_STRING && evt.xselection.property == None) {
+ if (target == m_atom.UTF8_STRING && evt->xselection.property == None) {
*context = XCLIB_XCOUT_FALLBACK_UTF8;
return;
}
- else if (target == m_atom.COMPOUND_TEXT && evt.xselection.property == None) {
+ else if (target == m_atom.COMPOUND_TEXT && evt->xselection.property == None) {
*context = XCLIB_XCOUT_FALLBACK_COMP;
return;
}
- else if (target == m_atom.TEXT && evt.xselection.property == None) {
+ else if (target == m_atom.TEXT && evt->xselection.property == None) {
*context = XCLIB_XCOUT_FALLBACK_TEXT;
return;
}
@@ -1604,11 +1605,11 @@ void GHOST_SystemX11::getClipboard_xcout(XEvent evt,
* then read it, delete it, etc. */
/* make sure that the event is relevant */
- if (evt.type != PropertyNotify)
+ if (evt->type != PropertyNotify)
return;
/* skip unless the property has a new value */
- if (evt.xproperty.state != PropertyNewValue)
+ if (evt->xproperty.state != PropertyNewValue)
return;
/* check size and format of the property */
@@ -1713,7 +1714,7 @@ GHOST_TUns8 *GHOST_SystemX11::getClipboard(bool selection) const
XNextEvent(m_display, &evt);
/* fetch the selection, or part of it */
- getClipboard_xcout(evt, sseln, target, &sel_buf, &sel_len, &context);
+ getClipboard_xcout(&evt, sseln, target, &sel_buf, &sel_len, &context);
/* fallback is needed. set XA_STRING to target and restart the loop. */
if (context == XCLIB_XCOUT_FALLBACK) {
diff --git a/intern/ghost/intern/GHOST_SystemX11.h b/intern/ghost/intern/GHOST_SystemX11.h
index 6a492f64b41..1f95e4b1ce2 100644
--- a/intern/ghost/intern/GHOST_SystemX11.h
+++ b/intern/ghost/intern/GHOST_SystemX11.h
@@ -238,7 +238,7 @@ public:
#endif
/* Helped function for get data from the clipboard. */
- void getClipboard_xcout(XEvent evt, Atom sel, Atom target,
+ void getClipboard_xcout(const XEvent *evt, Atom sel, Atom target,
unsigned char **txt, unsigned long *len,
unsigned int *context) const;
diff --git a/intern/ghost/intern/GHOST_WindowCocoa.mm b/intern/ghost/intern/GHOST_WindowCocoa.mm
index 472136b8130..de2ae79d0b6 100644
--- a/intern/ghost/intern/GHOST_WindowCocoa.mm
+++ b/intern/ghost/intern/GHOST_WindowCocoa.mm
@@ -1032,7 +1032,8 @@ GHOST_TSuccess GHOST_WindowCocoa::setState(GHOST_TWindowState state)
[m_window zoom:nil];
break;
- case GHOST_kWindowStateFullScreen: {
+ case GHOST_kWindowStateFullScreen:
+ {
#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060
NSUInteger masks = [m_window styleMask];
diff --git a/intern/opencl/OCL_opencl.h b/intern/opencl/OCL_opencl.h
index 4ee167b2fb4..733e3527197 100644
--- a/intern/opencl/OCL_opencl.h
+++ b/intern/opencl/OCL_opencl.h
@@ -28,7 +28,7 @@ extern "C" {
#endif
#include "intern/clew.h"
-void OCL_init(void);
+int OCL_init(void);
#ifdef __cplusplus
}
diff --git a/intern/opencl/intern/OCL_opencl.c b/intern/opencl/intern/OCL_opencl.c
index e3130e16bde..33a936896fd 100644
--- a/intern/opencl/intern/OCL_opencl.c
+++ b/intern/opencl/intern/OCL_opencl.c
@@ -22,7 +22,7 @@
#include "OCL_opencl.h"
-void OCL_init(void)
+int OCL_init(void)
{
#ifdef _WIN32
const char *path = "OpenCL.dll";
@@ -32,6 +32,6 @@ void OCL_init(void)
const char *path = "libOpenCL.so";
#endif
- clewInit(path);
+ return (clewInit(path) == CLEW_SUCCESS);
}
diff --git a/intern/opencl/intern/clew.c b/intern/opencl/intern/clew.c
index d68eb17288f..1e31ebced0a 100644
--- a/intern/opencl/intern/clew.c
+++ b/intern/opencl/intern/clew.c
@@ -227,6 +227,11 @@ int clewInit(const char* path)
__oclEnqueueWaitForEvents = (PFNCLENQUEUEWAITFOREVENTS )CLCC_DYNLIB_IMPORT(module, "clEnqueueWaitForEvents");
__oclEnqueueBarrier = (PFNCLENQUEUEBARRIER )CLCC_DYNLIB_IMPORT(module, "clEnqueueBarrier");
__oclGetExtensionFunctionAddress = (PFNCLGETEXTENSIONFUNCTIONADDRESS )CLCC_DYNLIB_IMPORT(module, "clGetExtensionFunctionAddress");
+
+ if(__oclGetPlatformIDs == NULL) return CLEW_ERROR_OPEN_FAILED;
+ if(__oclGetPlatformInfo == NULL) return CLEW_ERROR_OPEN_FAILED;
+ if(__oclGetDeviceIDs == NULL) return CLEW_ERROR_OPEN_FAILED;
+ if(__oclGetDeviceInfo == NULL) return CLEW_ERROR_OPEN_FAILED;
return CLEW_SUCCESS;
}
diff --git a/release/datafiles/LICENSE-droidsans.ttf.txt b/release/datafiles/LICENSE-droidsans.ttf.txt
index 1f090edd309..ca0d6bbaea1 100644
--- a/release/datafiles/LICENSE-droidsans.ttf.txt
+++ b/release/datafiles/LICENSE-droidsans.ttf.txt
@@ -5,6 +5,7 @@ Blender Main I18n font ("droidsans.ttf") includes glyphs imported from the follo
3. Samyak-devanagari
4. Droid Sans Hebrew Regular
5. Droid Sans Ethiopic Regular
+6. Samyak-tamil
These were merged using FontForge in (approximately) the above order. For each glyph,
a license of the font from which it was imported is applied.
@@ -30,7 +31,7 @@ Copyright:
License: Apache-2.0
See Appendix A.
-(3) Samyak-devanagari
+(3) Samyak-devanagari and (6) Samyak-tamil
Copyright: 2005-2006, Rahul Bhalerao <b.rahul.pm@gmail.com>
2005-2006, Bageshri Salvi <sbageshri@gmail.com>
2005-2006, Pravin Satpute <pravin.d.s@gmail.com>
diff --git a/release/datafiles/fonts/droidsans.ttf.gz b/release/datafiles/fonts/droidsans.ttf.gz
index a0e7502cc1f..81683e6379f 100644
--- a/release/datafiles/fonts/droidsans.ttf.gz
+++ b/release/datafiles/fonts/droidsans.ttf.gz
Binary files differ
diff --git a/release/datafiles/splash.png b/release/datafiles/splash.png
index 01d903c457b..3c05ba86cd3 100644
--- a/release/datafiles/splash.png
+++ b/release/datafiles/splash.png
Binary files differ
diff --git a/release/scripts/startup/bl_operators/node.py b/release/scripts/startup/bl_operators/node.py
index cc1fa93ec2c..c70b5832bfb 100644
--- a/release/scripts/startup/bl_operators/node.py
+++ b/release/scripts/startup/bl_operators/node.py
@@ -66,8 +66,12 @@ class NodeAddOperator():
# convert mouse position to the View2D for later node placement
if context.region.type == 'WINDOW':
+ # XXX, temp fix for [#35920], still fails for (U.pixelsize != 1)
+ dpi_fac = context.user_preferences.system.dpi / 72.0
space.cursor_location = v2d.region_to_view(event.mouse_region_x,
event.mouse_region_y)
+ space.cursor_location /= dpi_fac
+
else:
space.cursor_location = tree.view_center
diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py
index 7fe8d334572..2bbfd26f5f3 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -723,6 +723,7 @@ class VIEW3D_MT_select_edit_lattice(Menu):
layout.separator()
+ layout.operator("lattice.select_random")
layout.operator("lattice.select_all").action = 'TOGGLE'
layout.operator("lattice.select_all", text="Inverse").action = 'INVERT'
@@ -747,6 +748,11 @@ class VIEW3D_MT_select_edit_armature(Menu):
layout.separator()
+ layout.operator("armature.select_more", text="More")
+ layout.operator("armature.select_less", text="Less")
+
+ layout.separator()
+
layout.operator("armature.select_hierarchy", text="Parent").direction = 'PARENT'
layout.operator("armature.select_hierarchy", text="Child").direction = 'CHILD'
diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h
index ae936a1659a..40fc71e82ca 100644
--- a/source/blender/blenkernel/BKE_DerivedMesh.h
+++ b/source/blender/blenkernel/BKE_DerivedMesh.h
@@ -438,7 +438,7 @@ struct DerivedMesh {
*/
void (*drawMappedFacesMat)(DerivedMesh *dm,
void (*setMaterial)(void *userData, int, void *attribs),
- int (*setFace)(void *userData, int index), void *userData);
+ bool (*setFace)(void *userData, int index), void *userData);
/** Release reference to the DerivedMesh. This function decides internally
* if the DerivedMesh will be freed, or cached for later use. */
diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h
index 9e874c9aa15..8c556e00aaa 100644
--- a/source/blender/blenkernel/BKE_blender.h
+++ b/source/blender/blenkernel/BKE_blender.h
@@ -41,8 +41,8 @@ extern "C" {
/* these lines are grep'd, watch out for our not-so-awesome regex
* and keep comment above the defines.
* Use STRINGIFY() rather than defining with quotes */
-#define BLENDER_VERSION 267
-#define BLENDER_SUBVERSION 1
+#define BLENDER_VERSION 268
+#define BLENDER_SUBVERSION 0
/* 262 was the last editmesh release but it has compatibility code for bmesh data */
#define BLENDER_MINVERSION 262
@@ -50,9 +50,9 @@ extern "C" {
/* used by packaging tools */
/* can be left blank, otherwise a,b,c... etc with no quotes */
-#define BLENDER_VERSION_CHAR b
+#define BLENDER_VERSION_CHAR
/* alpha/beta/rc/release, docs use this */
-#define BLENDER_VERSION_CYCLE rc
+#define BLENDER_VERSION_CYCLE alpha
extern char versionstr[]; /* from blender.c */
diff --git a/source/blender/blenkernel/BKE_fcurve.h b/source/blender/blenkernel/BKE_fcurve.h
index d7ef04195d5..64a6811bf51 100644
--- a/source/blender/blenkernel/BKE_fcurve.h
+++ b/source/blender/blenkernel/BKE_fcurve.h
@@ -216,7 +216,7 @@ struct FCurve *rna_get_fcurve(struct PointerRNA *ptr, struct PropertyRNA *prop,
int binarysearch_bezt_index(struct BezTriple array[], float frame, int arraylen, bool *r_replace);
/* get the time extents for F-Curve */
-void calc_fcurve_range(struct FCurve *fcu, float *min, float *max,
+bool calc_fcurve_range(struct FCurve *fcu, float *min, float *max,
const short do_sel_only, const short do_min_length);
/* get the bounding-box extents for F-Curve */
diff --git a/source/blender/blenkernel/BKE_key.h b/source/blender/blenkernel/BKE_key.h
index a159cbb13d4..de60d316426 100644
--- a/source/blender/blenkernel/BKE_key.h
+++ b/source/blender/blenkernel/BKE_key.h
@@ -59,6 +59,8 @@ void key_curve_position_weights(float t, float data[4], int type);
void key_curve_tangent_weights(float t, float data[4], int type);
void key_curve_normal_weights(float t, float data[4], int type);
+float *BKE_key_evaluate_object_ex(struct Scene *scene, struct Object *ob, int *r_totelem,
+ float *arr, size_t arr_size);
float *BKE_key_evaluate_object(struct Scene *scene, struct Object *ob, int *r_totelem);
struct Key *BKE_key_from_object(struct Object *ob);
diff --git a/source/blender/blenkernel/intern/action.c b/source/blender/blenkernel/intern/action.c
index fa85f6e4f86..70fbf2d39e8 100644
--- a/source/blender/blenkernel/intern/action.c
+++ b/source/blender/blenkernel/intern/action.c
@@ -930,9 +930,8 @@ void calc_action_range(const bAction *act, float *start, float *end, short incl_
if (fmd->flag & FCM_LIMIT_XMAX) {
max = max_ff(max, fmd->rect.xmax);
}
+ break;
}
- break;
-
case FMODIFIER_TYPE_CYCLES: /* Cycles F-Modifier */
{
FMod_Cycles *fmd = (FMod_Cycles *)fcm->data;
@@ -941,9 +940,8 @@ void calc_action_range(const bAction *act, float *start, float *end, short incl_
min = MINAFRAMEF;
if (fmd->after_mode != FCM_EXTRAPOLATE_NONE)
max = MAXFRAMEF;
+ break;
}
- break;
-
/* TODO: function modifier may need some special limits */
default: /* all other standard modifiers are on the infinite range... */
diff --git a/source/blender/blenkernel/intern/armature.c b/source/blender/blenkernel/intern/armature.c
index 8fae3586439..2ede5acd6e9 100644
--- a/source/blender/blenkernel/intern/armature.c
+++ b/source/blender/blenkernel/intern/armature.c
@@ -2100,8 +2100,8 @@ static void splineik_evaluate_bone(tSplineIK_Tree *tree, Scene *scene, Object *o
/* z-axis scale */
scale = len_v3(pchan->pose_mat[2]);
mul_v3_fl(poseMat[2], scale);
+ break;
}
- break;
case CONSTRAINT_SPLINEIK_XZS_VOLUMETRIC:
{
/* 'volume preservation' */
@@ -2123,8 +2123,8 @@ static void splineik_evaluate_bone(tSplineIK_Tree *tree, Scene *scene, Object *o
/* apply the scaling */
mul_v3_fl(poseMat[0], scale);
mul_v3_fl(poseMat[2], scale);
+ break;
}
- break;
}
/* finally, multiply the x and z scaling by the radius of the curve too,
diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c
index 7f6dc680a74..faa4d8d3071 100644
--- a/source/blender/blenkernel/intern/cdderivedmesh.c
+++ b/source/blender/blenkernel/intern/cdderivedmesh.c
@@ -1424,7 +1424,7 @@ static void cdDM_drawFacesGLSL(DerivedMesh *dm, DMSetMaterial setMaterial)
static void cdDM_drawMappedFacesMat(DerivedMesh *dm,
void (*setMaterial)(void *userData, int, void *attribs),
- int (*setFace)(void *userData, int index), void *userData)
+ bool (*setFace)(void *userData, int index), void *userData)
{
CDDerivedMesh *cddm = (CDDerivedMesh *) dm;
GPUVertexAttribs gattribs;
diff --git a/source/blender/blenkernel/intern/colortools.c b/source/blender/blenkernel/intern/colortools.c
index 9323531e5fe..7e878e86c1e 100644
--- a/source/blender/blenkernel/intern/colortools.c
+++ b/source/blender/blenkernel/intern/colortools.c
@@ -328,8 +328,8 @@ void curvemap_reset(CurveMap *cuma, const rctf *clipr, int preset, int slope)
cuma->curve[i].x = i / ((float)cuma->totpoint - 1);
cuma->curve[i].y = 0.5;
}
+ break;
}
- break;
case CURVE_PRESET_ROUND:
cuma->curve[0].x = 0;
cuma->curve[0].y = 1;
diff --git a/source/blender/blenkernel/intern/constraint.c b/source/blender/blenkernel/intern/constraint.c
index c78038c0f66..b8d851d082a 100644
--- a/source/blender/blenkernel/intern/constraint.c
+++ b/source/blender/blenkernel/intern/constraint.c
@@ -132,8 +132,8 @@ bConstraintOb *BKE_constraints_make_evalob(Scene *scene, Object *ob, void *subda
unit_m4(cob->matrix);
copy_m4_m4(cob->startmat, cob->matrix);
+ break;
}
- break;
case CONSTRAINT_OBTYPE_BONE:
{
/* only set if we have valid bone, otherwise default */
@@ -158,9 +158,8 @@ bConstraintOb *BKE_constraints_make_evalob(Scene *scene, Object *ob, void *subda
unit_m4(cob->matrix);
copy_m4_m4(cob->startmat, cob->matrix);
+ break;
}
- break;
-
default: /* other types not yet handled */
unit_m4(cob->matrix);
unit_m4(cob->startmat);
@@ -195,8 +194,8 @@ void BKE_constraints_clear_evalob(bConstraintOb *cob)
/* copy inverse of delta back to owner */
invert_m4_m4(cob->ob->constinv, delta);
}
+ break;
}
- break;
case CONSTRAINT_OBTYPE_BONE:
{
/* cob->ob or cob->pchan might not exist */
@@ -207,8 +206,8 @@ void BKE_constraints_clear_evalob(bConstraintOb *cob)
/* copy inverse of delta back to owner */
invert_m4_m4(cob->pchan->constinv, delta);
}
+ break;
}
- break;
}
/* free tempolary struct */
@@ -246,8 +245,8 @@ void BKE_constraint_mat_convertspace(Object *ob, bPoseChannel *pchan, float mat[
/* call self with slightly different values */
BKE_constraint_mat_convertspace(ob, pchan, mat, CONSTRAINT_SPACE_POSE, to);
}
+ break;
}
- break;
case CONSTRAINT_SPACE_POSE: /* ---------- FROM POSESPACE ---------- */
{
/* pose to world */
@@ -267,8 +266,8 @@ void BKE_constraint_mat_convertspace(Object *ob, bPoseChannel *pchan, float mat[
mul_m4_m4m4(mat, imat, mat);
}
}
+ break;
}
- break;
case CONSTRAINT_SPACE_LOCAL: /* ------------ FROM LOCALSPACE --------- */
{
/* local to pose - do inverse procedure that was done for pose to local */
@@ -282,8 +281,8 @@ void BKE_constraint_mat_convertspace(Object *ob, bPoseChannel *pchan, float mat[
/* call self with slightly different values */
BKE_constraint_mat_convertspace(ob, pchan, mat, CONSTRAINT_SPACE_POSE, to);
}
+ break;
}
- break;
case CONSTRAINT_SPACE_PARLOCAL: /* -------------- FROM LOCAL WITH PARENT ---------- */
{
/* local + parent to pose */
@@ -297,8 +296,8 @@ void BKE_constraint_mat_convertspace(Object *ob, bPoseChannel *pchan, float mat[
/* call self with slightly different values */
BKE_constraint_mat_convertspace(ob, pchan, mat, CONSTRAINT_SPACE_POSE, to);
}
+ break;
}
- break;
}
}
else {
@@ -2235,8 +2234,8 @@ static void locktrack_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *t
/* the z axis gets mapped onto a third orthogonal vector */
cross_v3_v3v3(totmat[2], totmat[0], totmat[1]);
+ break;
}
- break;
case TRACK_Z: /* LOCK X TRACK Z */
{
/* Projection of Vector on the plane */
@@ -2249,8 +2248,8 @@ static void locktrack_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *t
/* the z axis gets mapped onto a third orthogonal vector */
cross_v3_v3v3(totmat[1], totmat[2], totmat[0]);
+ break;
}
- break;
case TRACK_nY: /* LOCK X TRACK -Y */
{
/* Projection of Vector on the plane */
@@ -2264,8 +2263,8 @@ static void locktrack_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *t
/* the z axis gets mapped onto a third orthogonal vector */
cross_v3_v3v3(totmat[2], totmat[0], totmat[1]);
+ break;
}
- break;
case TRACK_nZ: /* LOCK X TRACK -Z */
{
/* Projection of Vector on the plane */
@@ -2279,16 +2278,16 @@ static void locktrack_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *t
/* the z axis gets mapped onto a third orthogonal vector */
cross_v3_v3v3(totmat[1], totmat[2], totmat[0]);
+ break;
}
- break;
default:
{
unit_m3(totmat);
+ break;
}
- break;
}
+ break;
}
- break;
case LOCK_Y: /* LOCK Y */
{
switch (data->trackflag) {
@@ -2304,8 +2303,8 @@ static void locktrack_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *t
/* the z axis gets mapped onto a third orthogonal vector */
cross_v3_v3v3(totmat[2], totmat[0], totmat[1]);
+ break;
}
- break;
case TRACK_Z: /* LOCK Y TRACK Z */
{
/* Projection of Vector on the plane */
@@ -2318,8 +2317,8 @@ static void locktrack_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *t
/* the z axis gets mapped onto a third orthogonal vector */
cross_v3_v3v3(totmat[0], totmat[1], totmat[2]);
+ break;
}
- break;
case TRACK_nX: /* LOCK Y TRACK -X */
{
/* Projection of Vector on the plane */
@@ -2333,8 +2332,8 @@ static void locktrack_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *t
/* the z axis gets mapped onto a third orthogonal vector */
cross_v3_v3v3(totmat[2], totmat[0], totmat[1]);
+ break;
}
- break;
case TRACK_nZ: /* LOCK Y TRACK -Z */
{
/* Projection of Vector on the plane */
@@ -2348,16 +2347,16 @@ static void locktrack_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *t
/* the z axis gets mapped onto a third orthogonal vector */
cross_v3_v3v3(totmat[0], totmat[1], totmat[2]);
+ break;
}
- break;
default:
{
unit_m3(totmat);
+ break;
}
- break;
}
+ break;
}
- break;
case LOCK_Z: /* LOCK Z */
{
switch (data->trackflag) {
@@ -2373,8 +2372,8 @@ static void locktrack_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *t
/* the x axis gets mapped onto a third orthogonal vector */
cross_v3_v3v3(totmat[1], totmat[2], totmat[0]);
+ break;
}
- break;
case TRACK_Y: /* LOCK Z TRACK Y */
{
/* Projection of Vector on the plane */
@@ -2387,8 +2386,8 @@ static void locktrack_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *t
/* the x axis gets mapped onto a third orthogonal vector */
cross_v3_v3v3(totmat[0], totmat[1], totmat[2]);
+ break;
}
- break;
case TRACK_nX: /* LOCK Z TRACK -X */
{
/* Projection of Vector on the plane */
@@ -2402,8 +2401,8 @@ static void locktrack_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *t
/* the x axis gets mapped onto a third orthogonal vector */
cross_v3_v3v3(totmat[1], totmat[2], totmat[0]);
+ break;
}
- break;
case TRACK_nY: /* LOCK Z TRACK -Y */
{
/* Projection of Vector on the plane */
@@ -2417,21 +2416,21 @@ static void locktrack_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *t
/* the x axis gets mapped onto a third orthogonal vector */
cross_v3_v3v3(totmat[0], totmat[1], totmat[2]);
+ break;
}
- break;
default:
{
unit_m3(totmat);
+ break;
}
- break;
}
+ break;
}
- break;
default:
{
unit_m3(totmat);
+ break;
}
- break;
}
/* Block to keep matrix heading */
copy_m3_m4(tmpmat, cob->matrix);
@@ -4414,8 +4413,8 @@ static bConstraint *add_new_constraint(Object *ob, bPoseChannel *pchan, const ch
con->ownspace = CONSTRAINT_SPACE_POSE;
con->flag |= CONSTRAINT_SPACEONCE;
}
+ break;
}
- break;
}
return con;
@@ -4640,8 +4639,8 @@ void BKE_get_constraint_target_matrix(Scene *scene, bConstraint *con, int index,
unit_m4(cob->matrix);
unit_m4(cob->startmat);
}
+ break;
}
- break;
case CONSTRAINT_OBTYPE_BONE: /* this may occur in some cases */
{
cob->ob = NULL; /* this might not work at all :/ */
@@ -4654,8 +4653,8 @@ void BKE_get_constraint_target_matrix(Scene *scene, bConstraint *con, int index,
unit_m4(cob->matrix);
unit_m4(cob->startmat);
}
+ break;
}
- break;
}
/* get targets - we only need the first one though (and there should only be one) */
diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c
index 3b9fbbb1c4d..00a479b8b88 100644
--- a/source/blender/blenkernel/intern/curve.c
+++ b/source/blender/blenkernel/intern/curve.c
@@ -2323,6 +2323,7 @@ void BKE_curve_bevelList_make(Object *ob)
bl = MEM_callocN(sizeof(BevList) + 1 * sizeof(BevPoint), "makeBevelList1");
BLI_addtail(&(cu->bev), bl);
bl->nr = 0;
+ bl->charidx = nu->charidx;
}
else {
if (G.is_rendering && cu->resolu_ren != 0)
@@ -2335,10 +2336,10 @@ void BKE_curve_bevelList_make(Object *ob)
bl = MEM_callocN(sizeof(BevList) + len * sizeof(BevPoint), "makeBevelList2");
BLI_addtail(&(cu->bev), bl);
- if (nu->flagu & CU_NURB_CYCLIC) bl->poly = 0;
- else bl->poly = -1;
+ bl->poly = (nu->flagu & CU_NURB_CYCLIC) ? 0 : -1;
bl->nr = len;
bl->dupe_nr = 0;
+ bl->charidx = nu->charidx;
bevp = (BevPoint *)(bl + 1);
bp = nu->bp;
@@ -2358,8 +2359,8 @@ void BKE_curve_bevelList_make(Object *ob)
bl = MEM_callocN(sizeof(BevList) + len * sizeof(BevPoint), "makeBevelBPoints");
BLI_addtail(&(cu->bev), bl);
- if (nu->flagu & CU_NURB_CYCLIC) bl->poly = 0;
- else bl->poly = -1;
+ bl->poly = (nu->flagu & CU_NURB_CYCLIC) ? 0 : -1;
+ bl->charidx = nu->charidx;
bevp = (BevPoint *)(bl + 1);
a = nu->pntsu - 1;
@@ -2445,8 +2446,8 @@ void BKE_curve_bevelList_make(Object *ob)
BLI_addtail(&(cu->bev), bl);
bl->nr = len;
bl->dupe_nr = 0;
- if (nu->flagu & CU_NURB_CYCLIC) bl->poly = 0;
- else bl->poly = -1;
+ bl->poly = (nu->flagu & CU_NURB_CYCLIC) ? 0 : -1;
+ bl->charidx = nu->charidx;
bevp = (BevPoint *)(bl + 1);
BKE_nurb_makeCurve(nu, &bevp->vec[0],
@@ -2572,9 +2573,11 @@ void BKE_curve_bevelList_make(Object *ob)
bl = sd->bl; /* is bl a hole? */
sd1 = sortdata + (a - 1);
for (b = a - 1; b >= 0; b--, sd1--) { /* all polys to the left */
- if (bevelinside(sd1->bl, bl)) {
- bl->hole = 1 - sd1->bl->hole;
- break;
+ if (sd1->bl->charidx == bl->charidx) { /* for text, only check matching char */
+ if (bevelinside(sd1->bl, bl)) {
+ bl->hole = 1 - sd1->bl->hole;
+ break;
+ }
}
}
}
diff --git a/source/blender/blenkernel/intern/customdata.c b/source/blender/blenkernel/intern/customdata.c
index e08474e22c9..28fa5cc689b 100644
--- a/source/blender/blenkernel/intern/customdata.c
+++ b/source/blender/blenkernel/intern/customdata.c
@@ -158,7 +158,7 @@ static void layerCopy_mdeformvert(const void *source, void *dest,
MDeformVert *dvert = (MDeformVert *)((char *)dest + i * size);
if (dvert->totweight) {
- MDeformWeight *dw = MEM_callocN(dvert->totweight * sizeof(*dw),
+ MDeformWeight *dw = MEM_mallocN(dvert->totweight * sizeof(*dw),
"layerCopy_mdeformvert dw");
memcpy(dw, dvert->dw, dvert->totweight * sizeof(*dw));
@@ -265,7 +265,7 @@ static void layerInterp_mdeformvert(void **sources, const float *weights,
if (dvert->dw) MEM_freeN(dvert->dw);
if (totweight) {
- dvert->dw = MEM_callocN(sizeof(*dvert->dw) * totweight,
+ dvert->dw = MEM_mallocN(sizeof(*dvert->dw) * totweight,
"layerInterp_mdeformvert dvert->dw");
dvert->totweight = totweight;
diff --git a/source/blender/blenkernel/intern/deform.c b/source/blender/blenkernel/intern/deform.c
index a492b227815..0dd9d8550bb 100644
--- a/source/blender/blenkernel/intern/deform.c
+++ b/source/blender/blenkernel/intern/deform.c
@@ -735,7 +735,7 @@ MDeformWeight *defvert_verify_index(MDeformVert *dvert, const int defgroup)
if (dw_new)
return dw_new;
- dw_new = MEM_callocN(sizeof(MDeformWeight) * (dvert->totweight + 1), "deformWeight");
+ dw_new = MEM_mallocN(sizeof(MDeformWeight) * (dvert->totweight + 1), "deformWeight");
if (dvert->dw) {
memcpy(dw_new, dvert->dw, sizeof(MDeformWeight) * dvert->totweight);
MEM_freeN(dvert->dw);
diff --git a/source/blender/blenkernel/intern/editderivedmesh.c b/source/blender/blenkernel/intern/editderivedmesh.c
index 46cee96a537..ddd5e4a1e02 100644
--- a/source/blender/blenkernel/intern/editderivedmesh.c
+++ b/source/blender/blenkernel/intern/editderivedmesh.c
@@ -920,7 +920,7 @@ static void emdm_pass_attrib_vertex_mat(DMVertexAttribs *attribs, BMLoop *loop,
static void emDM_drawMappedFacesMat(DerivedMesh *dm,
void (*setMaterial)(void *userData, int, void *attribs),
- int (*setFace)(void *userData, int index), void *userData)
+ bool (*setFace)(void *userData, int index), void *userData)
{
EditDerivedBMesh *bmdm = (EditDerivedBMesh *)dm;
BMEditMesh *em = bmdm->em;
diff --git a/source/blender/blenkernel/intern/fcurve.c b/source/blender/blenkernel/intern/fcurve.c
index 8958680d611..55a312f31ba 100644
--- a/source/blender/blenkernel/intern/fcurve.c
+++ b/source/blender/blenkernel/intern/fcurve.c
@@ -577,7 +577,7 @@ short calc_fcurve_bounds(FCurve *fcu, float *xmin, float *xmax, float *ymin, flo
}
/* Calculate the extents of F-Curve's keyframes */
-void calc_fcurve_range(FCurve *fcu, float *start, float *end,
+bool calc_fcurve_range(FCurve *fcu, float *start, float *end,
const short do_sel_only, const short do_min_length)
{
float min = 999999999.0f, max = -999999999.0f;
@@ -621,6 +621,8 @@ void calc_fcurve_range(FCurve *fcu, float *start, float *end,
*start = min;
*end = max;
+
+ return foundvert;
}
/* ----------------- Status Checks -------------------------- */
@@ -665,17 +667,16 @@ short fcurve_are_keyframes_usable(FCurve *fcu)
if ((data->flag & FCM_GENERATOR_ADDITIVE) == 0)
return 0;
+ break;
}
- break;
case FMODIFIER_TYPE_FN_GENERATOR:
{
FMod_FunctionGenerator *data = (FMod_FunctionGenerator *)fcm->data;
if ((data->flag & FCM_GENERATOR_ADDITIVE) == 0)
return 0;
+ break;
}
- break;
-
/* always harmful - cannot allow */
default:
return 0;
@@ -1701,9 +1702,8 @@ static float evaluate_driver(ChannelDriver *driver, const float evaltime)
else
driver->curval = value;
}
+ break;
}
- break;
-
case DRIVER_TYPE_MIN: /* smallest value */
case DRIVER_TYPE_MAX: /* largest value */
{
@@ -1736,9 +1736,8 @@ static float evaluate_driver(ChannelDriver *driver, const float evaltime)
/* store value in driver */
driver->curval = value;
+ break;
}
- break;
-
case DRIVER_TYPE_PYTHON: /* expression */
{
#ifdef WITH_PYTHON
@@ -1757,9 +1756,8 @@ static float evaluate_driver(ChannelDriver *driver, const float evaltime)
#else /* WITH_PYTHON*/
(void)evaltime;
#endif /* WITH_PYTHON*/
+ break;
}
- break;
-
default:
{
/* special 'hack' - just use stored value
diff --git a/source/blender/blenkernel/intern/fmodifier.c b/source/blender/blenkernel/intern/fmodifier.c
index 19912a19d94..234f8667632 100644
--- a/source/blender/blenkernel/intern/fmodifier.c
+++ b/source/blender/blenkernel/intern/fmodifier.c
@@ -213,9 +213,8 @@ static void fcm_generator_evaluate(FCurve *UNUSED(fcu), FModifier *fcm, float *c
/* cleanup */
if (powers)
MEM_freeN(powers);
+ break;
}
- break;
-
case FCM_GENERATOR_POLYNOMIAL_FACTORISED: /* Factorized polynomial */
{
float value = 1.0f, *cp = NULL;
@@ -232,8 +231,8 @@ static void fcm_generator_evaluate(FCurve *UNUSED(fcu), FModifier *fcm, float *c
else
*cvalue = value;
}
+ break;
}
- break;
}
}
@@ -316,8 +315,8 @@ static void fcm_fn_generator_evaluate(FCurve *UNUSED(fcu), FModifier *fcm, float
}
else
fn = tan;
+ break;
}
- break;
case FCM_GENERATOR_FN_LN: /* natural log */
{
/* check that value is greater than 1? */
@@ -328,8 +327,8 @@ static void fcm_fn_generator_evaluate(FCurve *UNUSED(fcu), FModifier *fcm, float
if ((data->flag & FCM_GENERATOR_ADDITIVE) == 0)
*cvalue = 0.0f; /* no value possible here */
}
+ break;
}
- break;
case FCM_GENERATOR_FN_SQRT: /* square root */
{
/* no negative numbers */
@@ -340,9 +339,8 @@ static void fcm_fn_generator_evaluate(FCurve *UNUSED(fcu), FModifier *fcm, float
if ((data->flag & FCM_GENERATOR_ADDITIVE) == 0)
*cvalue = 0.0f; /* no value possible here */
}
+ break;
}
- break;
-
default:
printf("Invalid Function-Generator for F-Modifier - %d\n", data->type);
}
diff --git a/source/blender/blenkernel/intern/implicit.c b/source/blender/blenkernel/intern/implicit.c
index b9064fe8ba3..c8e18bc3dee 100644
--- a/source/blender/blenkernel/intern/implicit.c
+++ b/source/blender/blenkernel/intern/implicit.c
@@ -48,6 +48,10 @@
#include "BKE_global.h"
+#ifdef __GNUC__
+# pragma GCC diagnostic ignored "-Wtype-limits"
+#endif
+
#ifdef _OPENMP
# define CLOTH_OPENMP_LIMIT 512
#endif
diff --git a/source/blender/blenkernel/intern/ipo.c b/source/blender/blenkernel/intern/ipo.c
index 10226ade786..ecc4a03d255 100644
--- a/source/blender/blenkernel/intern/ipo.c
+++ b/source/blender/blenkernel/intern/ipo.c
@@ -1174,9 +1174,8 @@ static void icu_to_fcurves(ID *id, ListBase *groups, ListBase *list, IpoCurve *i
{
/* just copy, as the new defines match the old ones... */
fcu->extend = icu->extrap;
+ break;
}
- break;
-
case IPO_CYCL: /* cyclic extrapolation */
case IPO_CYCLX: /* cyclic extrapolation + offset */
{
@@ -1191,8 +1190,8 @@ static void icu_to_fcurves(ID *id, ListBase *groups, ListBase *list, IpoCurve *i
data->before_mode = data->after_mode = FCM_EXTRAPOLATE_CYCLIC_OFFSET;
else
data->before_mode = data->after_mode = FCM_EXTRAPOLATE_CYCLIC;
+ break;
}
- break;
}
/* -------- */
diff --git a/source/blender/blenkernel/intern/key.c b/source/blender/blenkernel/intern/key.c
index e141b9dbabe..a79fa3873f5 100644
--- a/source/blender/blenkernel/intern/key.c
+++ b/source/blender/blenkernel/intern/key.c
@@ -1342,7 +1342,8 @@ static void do_latt_key(Scene *scene, Object *ob, Key *key, char *out, const int
}
/* returns key coordinates (+ tilt) when key applied, NULL otherwise */
-float *BKE_key_evaluate_object(Scene *scene, Object *ob, int *r_totelem)
+float *BKE_key_evaluate_object_ex(Scene *scene, Object *ob, int *r_totelem,
+ float *arr, size_t arr_size)
{
Key *key = BKE_key_from_object(ob);
KeyBlock *actkb = BKE_keyblock_from_object(ob);
@@ -1386,7 +1387,16 @@ float *BKE_key_evaluate_object(Scene *scene, Object *ob, int *r_totelem)
return NULL;
/* allocate array */
- out = MEM_callocN(size, "BKE_key_evaluate_object out");
+ if (arr == NULL) {
+ out = MEM_callocN(size, "BKE_key_evaluate_object out");
+ }
+ else {
+ if (arr_size != size) {
+ return NULL;
+ }
+
+ out = (char *)arr;
+ }
/* prevent python from screwing this up? anyhoo, the from pointer could be dropped */
key->from = (ID *)ob->data;
@@ -1427,6 +1437,11 @@ float *BKE_key_evaluate_object(Scene *scene, Object *ob, int *r_totelem)
return (float *)out;
}
+float *BKE_key_evaluate_object(Scene *scene, Object *ob, int *r_totelem)
+{
+ return BKE_key_evaluate_object_ex(scene, ob, r_totelem, NULL, 0);
+}
+
Key *BKE_key_from_object(Object *ob)
{
if (ob == NULL) return NULL;
diff --git a/source/blender/blenkernel/intern/linestyle.c b/source/blender/blenkernel/intern/linestyle.c
index 3ab1a8093be..497554be113 100644
--- a/source/blender/blenkernel/intern/linestyle.c
+++ b/source/blender/blenkernel/intern/linestyle.c
@@ -201,20 +201,20 @@ static LineStyleModifier *alloc_color_modifier(int type)
size_t size;
switch (type) {
- case LS_MODIFIER_ALONG_STROKE:
- size = sizeof(LineStyleColorModifier_AlongStroke);
- break;
- case LS_MODIFIER_DISTANCE_FROM_CAMERA:
- size = sizeof(LineStyleColorModifier_DistanceFromCamera);
- break;
- case LS_MODIFIER_DISTANCE_FROM_OBJECT:
- size = sizeof(LineStyleColorModifier_DistanceFromObject);
- break;
- case LS_MODIFIER_MATERIAL:
- size = sizeof(LineStyleColorModifier_Material);
- break;
- default:
- return NULL; /* unknown modifier type */
+ case LS_MODIFIER_ALONG_STROKE:
+ size = sizeof(LineStyleColorModifier_AlongStroke);
+ break;
+ case LS_MODIFIER_DISTANCE_FROM_CAMERA:
+ size = sizeof(LineStyleColorModifier_DistanceFromCamera);
+ break;
+ case LS_MODIFIER_DISTANCE_FROM_OBJECT:
+ size = sizeof(LineStyleColorModifier_DistanceFromObject);
+ break;
+ case LS_MODIFIER_MATERIAL:
+ size = sizeof(LineStyleColorModifier_Material);
+ break;
+ default:
+ return NULL; /* unknown modifier type */
}
return new_modifier(type, size);
@@ -228,26 +228,26 @@ LineStyleModifier *BKE_add_linestyle_color_modifier(FreestyleLineStyle *linestyl
m->blend = MA_RAMP_BLEND;
switch (type) {
- case LS_MODIFIER_ALONG_STROKE:
- ((LineStyleColorModifier_AlongStroke *)m)->color_ramp = add_colorband(1);
- break;
- case LS_MODIFIER_DISTANCE_FROM_CAMERA:
- ((LineStyleColorModifier_DistanceFromCamera *)m)->color_ramp = add_colorband(1);
- ((LineStyleColorModifier_DistanceFromCamera *)m)->range_min = 0.0f;
- ((LineStyleColorModifier_DistanceFromCamera *)m)->range_max = 10000.0f;
- break;
- case LS_MODIFIER_DISTANCE_FROM_OBJECT:
- ((LineStyleColorModifier_DistanceFromObject *)m)->target = NULL;
- ((LineStyleColorModifier_DistanceFromObject *)m)->color_ramp = add_colorband(1);
- ((LineStyleColorModifier_DistanceFromObject *)m)->range_min = 0.0f;
- ((LineStyleColorModifier_DistanceFromObject *)m)->range_max = 10000.0f;
- break;
- case LS_MODIFIER_MATERIAL:
- ((LineStyleColorModifier_Material *)m)->color_ramp = add_colorband(1);
- ((LineStyleColorModifier_Material *)m)->mat_attr = LS_MODIFIER_MATERIAL_DIFF;
- break;
- default:
- return NULL; /* unknown modifier type */
+ case LS_MODIFIER_ALONG_STROKE:
+ ((LineStyleColorModifier_AlongStroke *)m)->color_ramp = add_colorband(1);
+ break;
+ case LS_MODIFIER_DISTANCE_FROM_CAMERA:
+ ((LineStyleColorModifier_DistanceFromCamera *)m)->color_ramp = add_colorband(1);
+ ((LineStyleColorModifier_DistanceFromCamera *)m)->range_min = 0.0f;
+ ((LineStyleColorModifier_DistanceFromCamera *)m)->range_max = 10000.0f;
+ break;
+ case LS_MODIFIER_DISTANCE_FROM_OBJECT:
+ ((LineStyleColorModifier_DistanceFromObject *)m)->target = NULL;
+ ((LineStyleColorModifier_DistanceFromObject *)m)->color_ramp = add_colorband(1);
+ ((LineStyleColorModifier_DistanceFromObject *)m)->range_min = 0.0f;
+ ((LineStyleColorModifier_DistanceFromObject *)m)->range_max = 10000.0f;
+ break;
+ case LS_MODIFIER_MATERIAL:
+ ((LineStyleColorModifier_Material *)m)->color_ramp = add_colorband(1);
+ ((LineStyleColorModifier_Material *)m)->mat_attr = LS_MODIFIER_MATERIAL_DIFF;
+ break;
+ default:
+ return NULL; /* unknown modifier type */
}
add_to_modifier_list(&linestyle->color_modifiers, m);
@@ -264,23 +264,23 @@ LineStyleModifier *BKE_copy_linestyle_color_modifier(FreestyleLineStyle *linesty
new_m->blend = m->blend;
switch (m->type) {
- case LS_MODIFIER_ALONG_STROKE:
+ case LS_MODIFIER_ALONG_STROKE:
{
LineStyleColorModifier_AlongStroke *p = (LineStyleColorModifier_AlongStroke *)m;
LineStyleColorModifier_AlongStroke *q = (LineStyleColorModifier_AlongStroke *)new_m;
q->color_ramp = MEM_dupallocN(p->color_ramp);
+ break;
}
- break;
- case LS_MODIFIER_DISTANCE_FROM_CAMERA:
+ case LS_MODIFIER_DISTANCE_FROM_CAMERA:
{
LineStyleColorModifier_DistanceFromCamera *p = (LineStyleColorModifier_DistanceFromCamera *)m;
LineStyleColorModifier_DistanceFromCamera *q = (LineStyleColorModifier_DistanceFromCamera *)new_m;
q->color_ramp = MEM_dupallocN(p->color_ramp);
q->range_min = p->range_min;
q->range_max = p->range_max;
+ break;
}
- break;
- case LS_MODIFIER_DISTANCE_FROM_OBJECT:
+ case LS_MODIFIER_DISTANCE_FROM_OBJECT:
{
LineStyleColorModifier_DistanceFromObject *p = (LineStyleColorModifier_DistanceFromObject *)m;
LineStyleColorModifier_DistanceFromObject *q = (LineStyleColorModifier_DistanceFromObject *)new_m;
@@ -290,19 +290,19 @@ LineStyleModifier *BKE_copy_linestyle_color_modifier(FreestyleLineStyle *linesty
q->color_ramp = MEM_dupallocN(p->color_ramp);
q->range_min = p->range_min;
q->range_max = p->range_max;
+ break;
}
- break;
- case LS_MODIFIER_MATERIAL:
+ case LS_MODIFIER_MATERIAL:
{
LineStyleColorModifier_Material *p = (LineStyleColorModifier_Material *)m;
LineStyleColorModifier_Material *q = (LineStyleColorModifier_Material *)new_m;
q->color_ramp = MEM_dupallocN(p->color_ramp);
q->flags = p->flags;
q->mat_attr = p->mat_attr;
+ break;
}
- break;
- default:
- return NULL; /* unknown modifier type */
+ default:
+ return NULL; /* unknown modifier type */
}
add_to_modifier_list(&linestyle->color_modifiers, new_m);
@@ -312,18 +312,18 @@ LineStyleModifier *BKE_copy_linestyle_color_modifier(FreestyleLineStyle *linesty
void BKE_remove_linestyle_color_modifier(FreestyleLineStyle *linestyle, LineStyleModifier *m)
{
switch (m->type) {
- case LS_MODIFIER_ALONG_STROKE:
- MEM_freeN(((LineStyleColorModifier_AlongStroke *)m)->color_ramp);
- break;
- case LS_MODIFIER_DISTANCE_FROM_CAMERA:
- MEM_freeN(((LineStyleColorModifier_DistanceFromCamera *)m)->color_ramp);
- break;
- case LS_MODIFIER_DISTANCE_FROM_OBJECT:
- MEM_freeN(((LineStyleColorModifier_DistanceFromObject *)m)->color_ramp);
- break;
- case LS_MODIFIER_MATERIAL:
- MEM_freeN(((LineStyleColorModifier_Material *)m)->color_ramp);
- break;
+ case LS_MODIFIER_ALONG_STROKE:
+ MEM_freeN(((LineStyleColorModifier_AlongStroke *)m)->color_ramp);
+ break;
+ case LS_MODIFIER_DISTANCE_FROM_CAMERA:
+ MEM_freeN(((LineStyleColorModifier_DistanceFromCamera *)m)->color_ramp);
+ break;
+ case LS_MODIFIER_DISTANCE_FROM_OBJECT:
+ MEM_freeN(((LineStyleColorModifier_DistanceFromObject *)m)->color_ramp);
+ break;
+ case LS_MODIFIER_MATERIAL:
+ MEM_freeN(((LineStyleColorModifier_Material *)m)->color_ramp);
+ break;
}
BLI_freelinkN(&linestyle->color_modifiers, m);
}
@@ -333,20 +333,20 @@ static LineStyleModifier *alloc_alpha_modifier(int type)
size_t size;
switch (type) {
- case LS_MODIFIER_ALONG_STROKE:
- size = sizeof(LineStyleAlphaModifier_AlongStroke);
- break;
- case LS_MODIFIER_DISTANCE_FROM_CAMERA:
- size = sizeof(LineStyleAlphaModifier_DistanceFromCamera);
- break;
- case LS_MODIFIER_DISTANCE_FROM_OBJECT:
- size = sizeof(LineStyleAlphaModifier_DistanceFromObject);
- break;
- case LS_MODIFIER_MATERIAL:
- size = sizeof(LineStyleAlphaModifier_Material);
- break;
- default:
- return NULL; /* unknown modifier type */
+ case LS_MODIFIER_ALONG_STROKE:
+ size = sizeof(LineStyleAlphaModifier_AlongStroke);
+ break;
+ case LS_MODIFIER_DISTANCE_FROM_CAMERA:
+ size = sizeof(LineStyleAlphaModifier_DistanceFromCamera);
+ break;
+ case LS_MODIFIER_DISTANCE_FROM_OBJECT:
+ size = sizeof(LineStyleAlphaModifier_DistanceFromObject);
+ break;
+ case LS_MODIFIER_MATERIAL:
+ size = sizeof(LineStyleAlphaModifier_Material);
+ break;
+ default:
+ return NULL; /* unknown modifier type */
}
return new_modifier(type, size);
}
@@ -359,38 +359,38 @@ LineStyleModifier *BKE_add_linestyle_alpha_modifier(FreestyleLineStyle *linestyl
m->blend = LS_VALUE_BLEND;
switch (type) {
- case LS_MODIFIER_ALONG_STROKE:
+ case LS_MODIFIER_ALONG_STROKE:
{
LineStyleAlphaModifier_AlongStroke *p = (LineStyleAlphaModifier_AlongStroke *)m;
p->curve = curvemapping_add(1, 0.0f, 0.0f, 1.0f, 1.0f);
+ break;
}
- break;
- case LS_MODIFIER_DISTANCE_FROM_CAMERA:
+ case LS_MODIFIER_DISTANCE_FROM_CAMERA:
{
LineStyleAlphaModifier_DistanceFromCamera *p = (LineStyleAlphaModifier_DistanceFromCamera *)m;
p->curve = curvemapping_add(1, 0.0f, 0.0f, 1.0f, 1.0f);
p->range_min = 0.0f;
p->range_max = 10000.0f;
+ break;
}
- break;
- case LS_MODIFIER_DISTANCE_FROM_OBJECT:
+ case LS_MODIFIER_DISTANCE_FROM_OBJECT:
{
LineStyleAlphaModifier_DistanceFromObject *p = (LineStyleAlphaModifier_DistanceFromObject *)m;
p->target = NULL;
p->curve = curvemapping_add(1, 0.0f, 0.0f, 1.0f, 1.0f);
p->range_min = 0.0f;
p->range_max = 10000.0f;
+ break;
}
- break;
- case LS_MODIFIER_MATERIAL:
+ case LS_MODIFIER_MATERIAL:
{
LineStyleAlphaModifier_Material *p = (LineStyleAlphaModifier_Material *)m;
p->curve = curvemapping_add(1, 0.0f, 0.0f, 1.0f, 1.0f);
p->mat_attr = LS_MODIFIER_MATERIAL_DIFF;
+ break;
}
- break;
- default:
- return NULL; /* unknown modifier type */
+ default:
+ return NULL; /* unknown modifier type */
}
add_to_modifier_list(&linestyle->alpha_modifiers, m);
@@ -407,15 +407,15 @@ LineStyleModifier *BKE_copy_linestyle_alpha_modifier(FreestyleLineStyle *linesty
new_m->blend = m->blend;
switch (m->type) {
- case LS_MODIFIER_ALONG_STROKE:
+ case LS_MODIFIER_ALONG_STROKE:
{
LineStyleAlphaModifier_AlongStroke *p = (LineStyleAlphaModifier_AlongStroke *)m;
LineStyleAlphaModifier_AlongStroke *q = (LineStyleAlphaModifier_AlongStroke *)new_m;
q->curve = curvemapping_copy(p->curve);
q->flags = p->flags;
+ break;
}
- break;
- case LS_MODIFIER_DISTANCE_FROM_CAMERA:
+ case LS_MODIFIER_DISTANCE_FROM_CAMERA:
{
LineStyleAlphaModifier_DistanceFromCamera *p = (LineStyleAlphaModifier_DistanceFromCamera *)m;
LineStyleAlphaModifier_DistanceFromCamera *q = (LineStyleAlphaModifier_DistanceFromCamera *)new_m;
@@ -423,9 +423,9 @@ LineStyleModifier *BKE_copy_linestyle_alpha_modifier(FreestyleLineStyle *linesty
q->flags = p->flags;
q->range_min = p->range_min;
q->range_max = p->range_max;
+ break;
}
- break;
- case LS_MODIFIER_DISTANCE_FROM_OBJECT:
+ case LS_MODIFIER_DISTANCE_FROM_OBJECT:
{
LineStyleAlphaModifier_DistanceFromObject *p = (LineStyleAlphaModifier_DistanceFromObject *)m;
LineStyleAlphaModifier_DistanceFromObject *q = (LineStyleAlphaModifier_DistanceFromObject *)new_m;
@@ -436,19 +436,19 @@ LineStyleModifier *BKE_copy_linestyle_alpha_modifier(FreestyleLineStyle *linesty
q->flags = p->flags;
q->range_min = p->range_min;
q->range_max = p->range_max;
+ break;
}
- break;
- case LS_MODIFIER_MATERIAL:
+ case LS_MODIFIER_MATERIAL:
{
LineStyleAlphaModifier_Material *p = (LineStyleAlphaModifier_Material *)m;
LineStyleAlphaModifier_Material *q = (LineStyleAlphaModifier_Material *)new_m;
q->curve = curvemapping_copy(p->curve);
q->flags = p->flags;
q->mat_attr = p->mat_attr;
+ break;
}
- break;
- default:
- return NULL; /* unknown modifier type */
+ default:
+ return NULL; /* unknown modifier type */
}
add_to_modifier_list(&linestyle->alpha_modifiers, new_m);
@@ -458,18 +458,18 @@ LineStyleModifier *BKE_copy_linestyle_alpha_modifier(FreestyleLineStyle *linesty
void BKE_remove_linestyle_alpha_modifier(FreestyleLineStyle *linestyle, LineStyleModifier *m)
{
switch (m->type) {
- case LS_MODIFIER_ALONG_STROKE:
- curvemapping_free(((LineStyleAlphaModifier_AlongStroke *)m)->curve);
- break;
- case LS_MODIFIER_DISTANCE_FROM_CAMERA:
- curvemapping_free(((LineStyleAlphaModifier_DistanceFromCamera *)m)->curve);
- break;
- case LS_MODIFIER_DISTANCE_FROM_OBJECT:
- curvemapping_free(((LineStyleAlphaModifier_DistanceFromObject *)m)->curve);
- break;
- case LS_MODIFIER_MATERIAL:
- curvemapping_free(((LineStyleAlphaModifier_Material *)m)->curve);
- break;
+ case LS_MODIFIER_ALONG_STROKE:
+ curvemapping_free(((LineStyleAlphaModifier_AlongStroke *)m)->curve);
+ break;
+ case LS_MODIFIER_DISTANCE_FROM_CAMERA:
+ curvemapping_free(((LineStyleAlphaModifier_DistanceFromCamera *)m)->curve);
+ break;
+ case LS_MODIFIER_DISTANCE_FROM_OBJECT:
+ curvemapping_free(((LineStyleAlphaModifier_DistanceFromObject *)m)->curve);
+ break;
+ case LS_MODIFIER_MATERIAL:
+ curvemapping_free(((LineStyleAlphaModifier_Material *)m)->curve);
+ break;
}
BLI_freelinkN(&linestyle->alpha_modifiers, m);
}
@@ -479,23 +479,23 @@ static LineStyleModifier *alloc_thickness_modifier(int type)
size_t size;
switch (type) {
- case LS_MODIFIER_ALONG_STROKE:
- size = sizeof(LineStyleThicknessModifier_AlongStroke);
- break;
- case LS_MODIFIER_DISTANCE_FROM_CAMERA:
- size = sizeof(LineStyleThicknessModifier_DistanceFromCamera);
- break;
- case LS_MODIFIER_DISTANCE_FROM_OBJECT:
- size = sizeof(LineStyleThicknessModifier_DistanceFromObject);
- break;
- case LS_MODIFIER_MATERIAL:
- size = sizeof(LineStyleThicknessModifier_Material);
- break;
- case LS_MODIFIER_CALLIGRAPHY:
- size = sizeof(LineStyleThicknessModifier_Calligraphy);
- break;
- default:
- return NULL; /* unknown modifier type */
+ case LS_MODIFIER_ALONG_STROKE:
+ size = sizeof(LineStyleThicknessModifier_AlongStroke);
+ break;
+ case LS_MODIFIER_DISTANCE_FROM_CAMERA:
+ size = sizeof(LineStyleThicknessModifier_DistanceFromCamera);
+ break;
+ case LS_MODIFIER_DISTANCE_FROM_OBJECT:
+ size = sizeof(LineStyleThicknessModifier_DistanceFromObject);
+ break;
+ case LS_MODIFIER_MATERIAL:
+ size = sizeof(LineStyleThicknessModifier_Material);
+ break;
+ case LS_MODIFIER_CALLIGRAPHY:
+ size = sizeof(LineStyleThicknessModifier_Calligraphy);
+ break;
+ default:
+ return NULL; /* unknown modifier type */
}
return new_modifier(type, size);
@@ -509,15 +509,15 @@ LineStyleModifier *BKE_add_linestyle_thickness_modifier(FreestyleLineStyle *line
m->blend = LS_VALUE_BLEND;
switch (type) {
- case LS_MODIFIER_ALONG_STROKE:
+ case LS_MODIFIER_ALONG_STROKE:
{
LineStyleThicknessModifier_AlongStroke *p = (LineStyleThicknessModifier_AlongStroke *)m;
p->curve = curvemapping_add(1, 0.0f, 0.0f, 1.0f, 1.0f);
p->value_min = 0.0f;
p->value_max = 1.0f;
+ break;
}
- break;
- case LS_MODIFIER_DISTANCE_FROM_CAMERA:
+ case LS_MODIFIER_DISTANCE_FROM_CAMERA:
{
LineStyleThicknessModifier_DistanceFromCamera *p = (LineStyleThicknessModifier_DistanceFromCamera *)m;
p->curve = curvemapping_add(1, 0.0f, 0.0f, 1.0f, 1.0f);
@@ -525,9 +525,9 @@ LineStyleModifier *BKE_add_linestyle_thickness_modifier(FreestyleLineStyle *line
p->range_max = 1000.0f;
p->value_min = 0.0f;
p->value_max = 1.0f;
+ break;
}
- break;
- case LS_MODIFIER_DISTANCE_FROM_OBJECT:
+ case LS_MODIFIER_DISTANCE_FROM_OBJECT:
{
LineStyleThicknessModifier_DistanceFromObject *p = (LineStyleThicknessModifier_DistanceFromObject *)m;
p->target = NULL;
@@ -536,27 +536,27 @@ LineStyleModifier *BKE_add_linestyle_thickness_modifier(FreestyleLineStyle *line
p->range_max = 1000.0f;
p->value_min = 0.0f;
p->value_max = 1.0f;
+ break;
}
- break;
- case LS_MODIFIER_MATERIAL:
+ case LS_MODIFIER_MATERIAL:
{
LineStyleThicknessModifier_Material *p = (LineStyleThicknessModifier_Material *)m;
p->curve = curvemapping_add(1, 0.0f, 0.0f, 1.0f, 1.0f);
p->mat_attr = LS_MODIFIER_MATERIAL_DIFF;
p->value_min = 0.0f;
p->value_max = 1.0f;
+ break;
}
- break;
- case LS_MODIFIER_CALLIGRAPHY:
+ case LS_MODIFIER_CALLIGRAPHY:
{
LineStyleThicknessModifier_Calligraphy *p = (LineStyleThicknessModifier_Calligraphy *)m;
p->min_thickness = 1.0f;
p->max_thickness = 10.0f;
p->orientation = DEG2RADF(60.0f);
+ break;
}
- break;
- default:
- return NULL; /* unknown modifier type */
+ default:
+ return NULL; /* unknown modifier type */
}
add_to_modifier_list(&linestyle->thickness_modifiers, m);
@@ -575,7 +575,7 @@ LineStyleModifier *BKE_copy_linestyle_thickness_modifier(FreestyleLineStyle *lin
new_m->blend = m->blend;
switch (m->type) {
- case LS_MODIFIER_ALONG_STROKE:
+ case LS_MODIFIER_ALONG_STROKE:
{
LineStyleThicknessModifier_AlongStroke *p = (LineStyleThicknessModifier_AlongStroke *)m;
LineStyleThicknessModifier_AlongStroke *q = (LineStyleThicknessModifier_AlongStroke *)new_m;
@@ -583,9 +583,9 @@ LineStyleModifier *BKE_copy_linestyle_thickness_modifier(FreestyleLineStyle *lin
q->flags = p->flags;
q->value_min = p->value_min;
q->value_max = p->value_max;
+ break;
}
- break;
- case LS_MODIFIER_DISTANCE_FROM_CAMERA:
+ case LS_MODIFIER_DISTANCE_FROM_CAMERA:
{
LineStyleThicknessModifier_DistanceFromCamera *p = (LineStyleThicknessModifier_DistanceFromCamera *)m;
LineStyleThicknessModifier_DistanceFromCamera *q = (LineStyleThicknessModifier_DistanceFromCamera *)new_m;
@@ -595,9 +595,9 @@ LineStyleModifier *BKE_copy_linestyle_thickness_modifier(FreestyleLineStyle *lin
q->range_max = p->range_max;
q->value_min = p->value_min;
q->value_max = p->value_max;
+ break;
}
- break;
- case LS_MODIFIER_DISTANCE_FROM_OBJECT:
+ case LS_MODIFIER_DISTANCE_FROM_OBJECT:
{
LineStyleThicknessModifier_DistanceFromObject *p = (LineStyleThicknessModifier_DistanceFromObject *)m;
LineStyleThicknessModifier_DistanceFromObject *q = (LineStyleThicknessModifier_DistanceFromObject *)new_m;
@@ -610,9 +610,9 @@ LineStyleModifier *BKE_copy_linestyle_thickness_modifier(FreestyleLineStyle *lin
q->range_max = p->range_max;
q->value_min = p->value_min;
q->value_max = p->value_max;
+ break;
}
- break;
- case LS_MODIFIER_MATERIAL:
+ case LS_MODIFIER_MATERIAL:
{
LineStyleThicknessModifier_Material *p = (LineStyleThicknessModifier_Material *)m;
LineStyleThicknessModifier_Material *q = (LineStyleThicknessModifier_Material *)new_m;
@@ -621,19 +621,19 @@ LineStyleModifier *BKE_copy_linestyle_thickness_modifier(FreestyleLineStyle *lin
q->mat_attr = p->mat_attr;
q->value_min = p->value_min;
q->value_max = p->value_max;
+ break;
}
- break;
- case LS_MODIFIER_CALLIGRAPHY:
+ case LS_MODIFIER_CALLIGRAPHY:
{
LineStyleThicknessModifier_Calligraphy *p = (LineStyleThicknessModifier_Calligraphy *)m;
LineStyleThicknessModifier_Calligraphy *q = (LineStyleThicknessModifier_Calligraphy *)new_m;
q->min_thickness = p->min_thickness;
q->max_thickness = p->max_thickness;
q->orientation = p->orientation;
+ break;
}
- break;
- default:
- return NULL; /* unknown modifier type */
+ default:
+ return NULL; /* unknown modifier type */
}
add_to_modifier_list(&linestyle->thickness_modifiers, new_m);
@@ -643,20 +643,20 @@ LineStyleModifier *BKE_copy_linestyle_thickness_modifier(FreestyleLineStyle *lin
void BKE_remove_linestyle_thickness_modifier(FreestyleLineStyle *linestyle, LineStyleModifier *m)
{
switch (m->type) {
- case LS_MODIFIER_ALONG_STROKE:
- curvemapping_free(((LineStyleThicknessModifier_AlongStroke *)m)->curve);
- break;
- case LS_MODIFIER_DISTANCE_FROM_CAMERA:
- curvemapping_free(((LineStyleThicknessModifier_DistanceFromCamera *)m)->curve);
- break;
- case LS_MODIFIER_DISTANCE_FROM_OBJECT:
- curvemapping_free(((LineStyleThicknessModifier_DistanceFromObject *)m)->curve);
- break;
- case LS_MODIFIER_MATERIAL:
- curvemapping_free(((LineStyleThicknessModifier_Material *)m)->curve);
- break;
- case LS_MODIFIER_CALLIGRAPHY:
- break;
+ case LS_MODIFIER_ALONG_STROKE:
+ curvemapping_free(((LineStyleThicknessModifier_AlongStroke *)m)->curve);
+ break;
+ case LS_MODIFIER_DISTANCE_FROM_CAMERA:
+ curvemapping_free(((LineStyleThicknessModifier_DistanceFromCamera *)m)->curve);
+ break;
+ case LS_MODIFIER_DISTANCE_FROM_OBJECT:
+ curvemapping_free(((LineStyleThicknessModifier_DistanceFromObject *)m)->curve);
+ break;
+ case LS_MODIFIER_MATERIAL:
+ curvemapping_free(((LineStyleThicknessModifier_Material *)m)->curve);
+ break;
+ case LS_MODIFIER_CALLIGRAPHY:
+ break;
}
BLI_freelinkN(&linestyle->thickness_modifiers, m);
}
@@ -666,47 +666,47 @@ static LineStyleModifier *alloc_geometry_modifier(int type)
size_t size;
switch (type) {
- case LS_MODIFIER_SAMPLING:
- size = sizeof(LineStyleGeometryModifier_Sampling);
- break;
- case LS_MODIFIER_BEZIER_CURVE:
- size = sizeof(LineStyleGeometryModifier_BezierCurve);
- break;
- case LS_MODIFIER_SINUS_DISPLACEMENT:
- size = sizeof(LineStyleGeometryModifier_SinusDisplacement);
- break;
- case LS_MODIFIER_SPATIAL_NOISE:
- size = sizeof(LineStyleGeometryModifier_SpatialNoise);
- break;
- case LS_MODIFIER_PERLIN_NOISE_1D:
- size = sizeof(LineStyleGeometryModifier_PerlinNoise1D);
- break;
- case LS_MODIFIER_PERLIN_NOISE_2D:
- size = sizeof(LineStyleGeometryModifier_PerlinNoise2D);
- break;
- case LS_MODIFIER_BACKBONE_STRETCHER:
- size = sizeof(LineStyleGeometryModifier_BackboneStretcher);
- break;
- case LS_MODIFIER_TIP_REMOVER:
- size = sizeof(LineStyleGeometryModifier_TipRemover);
- break;
- case LS_MODIFIER_POLYGONIZATION:
- size = sizeof(LineStyleGeometryModifier_Polygonalization);
- break;
- case LS_MODIFIER_GUIDING_LINES:
- size = sizeof(LineStyleGeometryModifier_GuidingLines);
- break;
- case LS_MODIFIER_BLUEPRINT:
- size = sizeof(LineStyleGeometryModifier_Blueprint);
- break;
- case LS_MODIFIER_2D_OFFSET:
- size = sizeof(LineStyleGeometryModifier_2DOffset);
- break;
- case LS_MODIFIER_2D_TRANSFORM:
- size = sizeof(LineStyleGeometryModifier_2DTransform);
- break;
- default:
- return NULL; /* unknown modifier type */
+ case LS_MODIFIER_SAMPLING:
+ size = sizeof(LineStyleGeometryModifier_Sampling);
+ break;
+ case LS_MODIFIER_BEZIER_CURVE:
+ size = sizeof(LineStyleGeometryModifier_BezierCurve);
+ break;
+ case LS_MODIFIER_SINUS_DISPLACEMENT:
+ size = sizeof(LineStyleGeometryModifier_SinusDisplacement);
+ break;
+ case LS_MODIFIER_SPATIAL_NOISE:
+ size = sizeof(LineStyleGeometryModifier_SpatialNoise);
+ break;
+ case LS_MODIFIER_PERLIN_NOISE_1D:
+ size = sizeof(LineStyleGeometryModifier_PerlinNoise1D);
+ break;
+ case LS_MODIFIER_PERLIN_NOISE_2D:
+ size = sizeof(LineStyleGeometryModifier_PerlinNoise2D);
+ break;
+ case LS_MODIFIER_BACKBONE_STRETCHER:
+ size = sizeof(LineStyleGeometryModifier_BackboneStretcher);
+ break;
+ case LS_MODIFIER_TIP_REMOVER:
+ size = sizeof(LineStyleGeometryModifier_TipRemover);
+ break;
+ case LS_MODIFIER_POLYGONIZATION:
+ size = sizeof(LineStyleGeometryModifier_Polygonalization);
+ break;
+ case LS_MODIFIER_GUIDING_LINES:
+ size = sizeof(LineStyleGeometryModifier_GuidingLines);
+ break;
+ case LS_MODIFIER_BLUEPRINT:
+ size = sizeof(LineStyleGeometryModifier_Blueprint);
+ break;
+ case LS_MODIFIER_2D_OFFSET:
+ size = sizeof(LineStyleGeometryModifier_2DOffset);
+ break;
+ case LS_MODIFIER_2D_TRANSFORM:
+ size = sizeof(LineStyleGeometryModifier_2DTransform);
+ break;
+ default:
+ return NULL; /* unknown modifier type */
}
return new_modifier(type, size);
@@ -719,78 +719,78 @@ LineStyleModifier *BKE_add_linestyle_geometry_modifier(FreestyleLineStyle *lines
m = alloc_geometry_modifier(type);
switch (type) {
- case LS_MODIFIER_SAMPLING:
+ case LS_MODIFIER_SAMPLING:
{
LineStyleGeometryModifier_Sampling *p = (LineStyleGeometryModifier_Sampling *)m;
p->sampling = 10.0f;
+ break;
}
- break;
- case LS_MODIFIER_BEZIER_CURVE:
+ case LS_MODIFIER_BEZIER_CURVE:
{
LineStyleGeometryModifier_BezierCurve *p = (LineStyleGeometryModifier_BezierCurve *)m;
p->error = 10.0f;
+ break;
}
- break;
- case LS_MODIFIER_SINUS_DISPLACEMENT:
+ case LS_MODIFIER_SINUS_DISPLACEMENT:
{
LineStyleGeometryModifier_SinusDisplacement *p = (LineStyleGeometryModifier_SinusDisplacement *)m;
p->wavelength = 20.0f;
p->amplitude = 5.0f;
p->phase = 0.0f;
+ break;
}
- break;
- case LS_MODIFIER_SPATIAL_NOISE:
+ case LS_MODIFIER_SPATIAL_NOISE:
{
LineStyleGeometryModifier_SpatialNoise *p = (LineStyleGeometryModifier_SpatialNoise *)m;
p->amplitude = 5.0f;
p->scale = 20.0f;
p->octaves = 4;
p->flags = LS_MODIFIER_SPATIAL_NOISE_SMOOTH | LS_MODIFIER_SPATIAL_NOISE_PURERANDOM;
+ break;
}
- break;
- case LS_MODIFIER_PERLIN_NOISE_1D:
+ case LS_MODIFIER_PERLIN_NOISE_1D:
{
LineStyleGeometryModifier_PerlinNoise1D *p = (LineStyleGeometryModifier_PerlinNoise1D *)m;
p->frequency = 10.0f;
p->amplitude = 10.0f;
p->octaves = 4;
p->angle = DEG2RADF(45.0f);
+ break;
}
- break;
- case LS_MODIFIER_PERLIN_NOISE_2D:
+ case LS_MODIFIER_PERLIN_NOISE_2D:
{
LineStyleGeometryModifier_PerlinNoise2D *p = (LineStyleGeometryModifier_PerlinNoise2D *)m;
p->frequency = 10.0f;
p->amplitude = 10.0f;
p->octaves = 4;
p->angle = DEG2RADF(45.0f);
+ break;
}
- break;
- case LS_MODIFIER_BACKBONE_STRETCHER:
+ case LS_MODIFIER_BACKBONE_STRETCHER:
{
LineStyleGeometryModifier_BackboneStretcher *p = (LineStyleGeometryModifier_BackboneStretcher *)m;
p->backbone_length = 10.0f;
+ break;
}
- break;
- case LS_MODIFIER_TIP_REMOVER:
+ case LS_MODIFIER_TIP_REMOVER:
{
LineStyleGeometryModifier_TipRemover *p = (LineStyleGeometryModifier_TipRemover *)m;
p->tip_length = 10.0f;
+ break;
}
- break;
- case LS_MODIFIER_POLYGONIZATION:
+ case LS_MODIFIER_POLYGONIZATION:
{
LineStyleGeometryModifier_Polygonalization *p = (LineStyleGeometryModifier_Polygonalization *)m;
p->error = 10.0f;
+ break;
}
- break;
- case LS_MODIFIER_GUIDING_LINES:
+ case LS_MODIFIER_GUIDING_LINES:
{
LineStyleGeometryModifier_GuidingLines *p = (LineStyleGeometryModifier_GuidingLines *)m;
p->offset = 0.0f;
+ break;
}
- break;
- case LS_MODIFIER_BLUEPRINT:
+ case LS_MODIFIER_BLUEPRINT:
{
LineStyleGeometryModifier_Blueprint *p = (LineStyleGeometryModifier_Blueprint *)m;
p->flags = LS_MODIFIER_BLUEPRINT_CIRCLES;
@@ -799,18 +799,18 @@ LineStyleModifier *BKE_add_linestyle_geometry_modifier(FreestyleLineStyle *lines
p->random_radius = 3;
p->random_center = 5;
p->random_backbone = 5;
+ break;
}
- break;
- case LS_MODIFIER_2D_OFFSET:
+ case LS_MODIFIER_2D_OFFSET:
{
LineStyleGeometryModifier_2DOffset *p = (LineStyleGeometryModifier_2DOffset *)m;
p->start = 0.0f;
p->end = 0.0f;
p->x = 0.0f;
p->y = 0.0f;
+ break;
}
- break;
- case LS_MODIFIER_2D_TRANSFORM:
+ case LS_MODIFIER_2D_TRANSFORM:
{
LineStyleGeometryModifier_2DTransform *p = (LineStyleGeometryModifier_2DTransform *)m;
p->pivot = LS_MODIFIER_2D_TRANSFORM_PIVOT_CENTER;
@@ -820,10 +820,10 @@ LineStyleModifier *BKE_add_linestyle_geometry_modifier(FreestyleLineStyle *lines
p->pivot_u = 0.5f;
p->pivot_x = 0.0f;
p->pivot_y = 0.0f;
+ break;
}
- break;
- default:
- return NULL; /* unknown modifier type */
+ default:
+ return NULL; /* unknown modifier type */
}
add_to_modifier_list(&linestyle->geometry_modifiers, m);
@@ -838,30 +838,30 @@ LineStyleModifier *BKE_copy_linestyle_geometry_modifier(FreestyleLineStyle *line
new_m->flags = m->flags;
switch (m->type) {
- case LS_MODIFIER_SAMPLING:
+ case LS_MODIFIER_SAMPLING:
{
LineStyleGeometryModifier_Sampling *p = (LineStyleGeometryModifier_Sampling *)m;
LineStyleGeometryModifier_Sampling *q = (LineStyleGeometryModifier_Sampling *)new_m;
q->sampling = p->sampling;
+ break;
}
- break;
- case LS_MODIFIER_BEZIER_CURVE:
+ case LS_MODIFIER_BEZIER_CURVE:
{
LineStyleGeometryModifier_BezierCurve *p = (LineStyleGeometryModifier_BezierCurve *)m;
LineStyleGeometryModifier_BezierCurve *q = (LineStyleGeometryModifier_BezierCurve *)new_m;
q->error = p->error;
+ break;
}
- break;
- case LS_MODIFIER_SINUS_DISPLACEMENT:
+ case LS_MODIFIER_SINUS_DISPLACEMENT:
{
LineStyleGeometryModifier_SinusDisplacement *p = (LineStyleGeometryModifier_SinusDisplacement *)m;
LineStyleGeometryModifier_SinusDisplacement *q = (LineStyleGeometryModifier_SinusDisplacement *)new_m;
q->wavelength = p->wavelength;
q->amplitude = p->amplitude;
q->phase = p->phase;
+ break;
}
- break;
- case LS_MODIFIER_SPATIAL_NOISE:
+ case LS_MODIFIER_SPATIAL_NOISE:
{
LineStyleGeometryModifier_SpatialNoise *p = (LineStyleGeometryModifier_SpatialNoise *)m;
LineStyleGeometryModifier_SpatialNoise *q = (LineStyleGeometryModifier_SpatialNoise *)new_m;
@@ -869,9 +869,9 @@ LineStyleModifier *BKE_copy_linestyle_geometry_modifier(FreestyleLineStyle *line
q->scale = p->scale;
q->octaves = p->octaves;
q->flags = p->flags;
+ break;
}
- break;
- case LS_MODIFIER_PERLIN_NOISE_1D:
+ case LS_MODIFIER_PERLIN_NOISE_1D:
{
LineStyleGeometryModifier_PerlinNoise1D *p = (LineStyleGeometryModifier_PerlinNoise1D *)m;
LineStyleGeometryModifier_PerlinNoise1D *q = (LineStyleGeometryModifier_PerlinNoise1D *)new_m;
@@ -880,9 +880,9 @@ LineStyleModifier *BKE_copy_linestyle_geometry_modifier(FreestyleLineStyle *line
q->angle = p->angle;
q->octaves = p->octaves;
q->seed = p->seed;
+ break;
}
- break;
- case LS_MODIFIER_PERLIN_NOISE_2D:
+ case LS_MODIFIER_PERLIN_NOISE_2D:
{
LineStyleGeometryModifier_PerlinNoise2D *p = (LineStyleGeometryModifier_PerlinNoise2D *)m;
LineStyleGeometryModifier_PerlinNoise2D *q = (LineStyleGeometryModifier_PerlinNoise2D *)new_m;
@@ -891,37 +891,37 @@ LineStyleModifier *BKE_copy_linestyle_geometry_modifier(FreestyleLineStyle *line
q->angle = p->angle;
q->octaves = p->octaves;
q->seed = p->seed;
+ break;
}
- break;
- case LS_MODIFIER_BACKBONE_STRETCHER:
+ case LS_MODIFIER_BACKBONE_STRETCHER:
{
LineStyleGeometryModifier_BackboneStretcher *p = (LineStyleGeometryModifier_BackboneStretcher *)m;
LineStyleGeometryModifier_BackboneStretcher *q = (LineStyleGeometryModifier_BackboneStretcher *)new_m;
q->backbone_length = p->backbone_length;
+ break;
}
- break;
- case LS_MODIFIER_TIP_REMOVER:
+ case LS_MODIFIER_TIP_REMOVER:
{
LineStyleGeometryModifier_TipRemover *p = (LineStyleGeometryModifier_TipRemover *)m;
LineStyleGeometryModifier_TipRemover *q = (LineStyleGeometryModifier_TipRemover *)new_m;
q->tip_length = p->tip_length;
+ break;
}
- break;
- case LS_MODIFIER_POLYGONIZATION:
+ case LS_MODIFIER_POLYGONIZATION:
{
LineStyleGeometryModifier_Polygonalization *p = (LineStyleGeometryModifier_Polygonalization *)m;
LineStyleGeometryModifier_Polygonalization *q = (LineStyleGeometryModifier_Polygonalization *)new_m;
q->error = p->error;
+ break;
}
- break;
- case LS_MODIFIER_GUIDING_LINES:
+ case LS_MODIFIER_GUIDING_LINES:
{
LineStyleGeometryModifier_GuidingLines *p = (LineStyleGeometryModifier_GuidingLines *)m;
LineStyleGeometryModifier_GuidingLines *q = (LineStyleGeometryModifier_GuidingLines *)new_m;
q->offset = p->offset;
+ break;
}
- break;
- case LS_MODIFIER_BLUEPRINT:
+ case LS_MODIFIER_BLUEPRINT:
{
LineStyleGeometryModifier_Blueprint *p = (LineStyleGeometryModifier_Blueprint *)m;
LineStyleGeometryModifier_Blueprint *q = (LineStyleGeometryModifier_Blueprint *)new_m;
@@ -931,9 +931,9 @@ LineStyleModifier *BKE_copy_linestyle_geometry_modifier(FreestyleLineStyle *line
q->random_radius = p->random_radius;
q->random_center = p->random_center;
q->random_backbone = p->random_backbone;
+ break;
}
- break;
- case LS_MODIFIER_2D_OFFSET:
+ case LS_MODIFIER_2D_OFFSET:
{
LineStyleGeometryModifier_2DOffset *p = (LineStyleGeometryModifier_2DOffset *)m;
LineStyleGeometryModifier_2DOffset *q = (LineStyleGeometryModifier_2DOffset *)new_m;
@@ -941,9 +941,9 @@ LineStyleModifier *BKE_copy_linestyle_geometry_modifier(FreestyleLineStyle *line
q->end = p->end;
q->x = p->x;
q->y = p->y;
+ break;
}
- break;
- case LS_MODIFIER_2D_TRANSFORM:
+ case LS_MODIFIER_2D_TRANSFORM:
{
LineStyleGeometryModifier_2DTransform *p = (LineStyleGeometryModifier_2DTransform *)m;
LineStyleGeometryModifier_2DTransform *q = (LineStyleGeometryModifier_2DTransform *)new_m;
@@ -954,10 +954,10 @@ LineStyleModifier *BKE_copy_linestyle_geometry_modifier(FreestyleLineStyle *line
q->pivot_u = p->pivot_u;
q->pivot_x = p->pivot_x;
q->pivot_y = p->pivot_y;
+ break;
}
- break;
- default:
- return NULL; /* unknown modifier type */
+ default:
+ return NULL; /* unknown modifier type */
}
add_to_modifier_list(&linestyle->geometry_modifiers, new_m);
@@ -1007,20 +1007,20 @@ void BKE_list_modifier_color_ramps(FreestyleLineStyle *linestyle, ListBase *list
listbase->first = listbase->last = NULL;
for (m = (LineStyleModifier *)linestyle->color_modifiers.first; m; m = m->next) {
switch (m->type) {
- case LS_MODIFIER_ALONG_STROKE:
- color_ramp = ((LineStyleColorModifier_AlongStroke *)m)->color_ramp;
- break;
- case LS_MODIFIER_DISTANCE_FROM_CAMERA:
- color_ramp = ((LineStyleColorModifier_DistanceFromCamera *)m)->color_ramp;
- break;
- case LS_MODIFIER_DISTANCE_FROM_OBJECT:
- color_ramp = ((LineStyleColorModifier_DistanceFromObject *)m)->color_ramp;
- break;
- case LS_MODIFIER_MATERIAL:
- color_ramp = ((LineStyleColorModifier_Material *)m)->color_ramp;
- break;
- default:
- continue;
+ case LS_MODIFIER_ALONG_STROKE:
+ color_ramp = ((LineStyleColorModifier_AlongStroke *)m)->color_ramp;
+ break;
+ case LS_MODIFIER_DISTANCE_FROM_CAMERA:
+ color_ramp = ((LineStyleColorModifier_DistanceFromCamera *)m)->color_ramp;
+ break;
+ case LS_MODIFIER_DISTANCE_FROM_OBJECT:
+ color_ramp = ((LineStyleColorModifier_DistanceFromObject *)m)->color_ramp;
+ break;
+ case LS_MODIFIER_MATERIAL:
+ color_ramp = ((LineStyleColorModifier_Material *)m)->color_ramp;
+ break;
+ default:
+ continue;
}
link = (LinkData *) MEM_callocN( sizeof(LinkData), "link to color ramp");
link->data = color_ramp;
diff --git a/source/blender/blenkernel/intern/mask_rasterize.c b/source/blender/blenkernel/intern/mask_rasterize.c
index e68f87211eb..ac48eaa3185 100644
--- a/source/blender/blenkernel/intern/mask_rasterize.c
+++ b/source/blender/blenkernel/intern/mask_rasterize.c
@@ -496,10 +496,10 @@ static void layer_bucket_init(MaskRasterLayer *layer, const float pixel_size)
/* this should _almost_ never happen but since it can in extreme cases,
* we have to clamp the values or we overrun the buffer and crash */
- CLAMP(xi_min, 0, layer->buckets_x - 1);
- CLAMP(xi_max, 0, layer->buckets_x - 1);
- CLAMP(yi_min, 0, layer->buckets_y - 1);
- CLAMP(yi_max, 0, layer->buckets_y - 1);
+ if (xi_min >= layer->buckets_x) xi_min = layer->buckets_x - 1;
+ if (xi_max >= layer->buckets_x) xi_max = layer->buckets_x - 1;
+ if (yi_min >= layer->buckets_y) yi_min = layer->buckets_y - 1;
+ if (yi_max >= layer->buckets_y) yi_max = layer->buckets_y - 1;
for (yi = yi_min; yi <= yi_max; yi++) {
unsigned int bucket_index = (layer->buckets_x * yi) + xi_min;
diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c
index a445d43da00..e14b51975c8 100644
--- a/source/blender/blenkernel/intern/material.c
+++ b/source/blender/blenkernel/intern/material.c
@@ -1430,8 +1430,8 @@ void ramp_blend(int type, float r_col[3], const float fac, const float col[3])
r_col[1] = facm * (r_col[1]) + fac * tmpg;
r_col[2] = facm * (r_col[2]) + fac * tmpb;
}
+ break;
}
- break;
case MA_RAMP_SAT:
{
float rH, rS, rV;
@@ -1441,8 +1441,8 @@ void ramp_blend(int type, float r_col[3], const float fac, const float col[3])
rgb_to_hsv(col[0], col[1], col[2], &colH, &colS, &colV);
hsv_to_rgb(rH, (facm * rS + fac * colS), rV, r_col + 0, r_col + 1, r_col + 2);
}
+ break;
}
- break;
case MA_RAMP_VAL:
{
float rH, rS, rV;
@@ -1450,8 +1450,8 @@ void ramp_blend(int type, float r_col[3], const float fac, const float col[3])
rgb_to_hsv(r_col[0], r_col[1], r_col[2], &rH, &rS, &rV);
rgb_to_hsv(col[0], col[1], col[2], &colH, &colS, &colV);
hsv_to_rgb(rH, rS, (facm * rV + fac * colV), r_col + 0, r_col + 1, r_col + 2);
+ break;
}
- break;
case MA_RAMP_COLOR:
{
float rH, rS, rV;
@@ -1465,8 +1465,8 @@ void ramp_blend(int type, float r_col[3], const float fac, const float col[3])
r_col[1] = facm * (r_col[1]) + fac * tmpg;
r_col[2] = facm * (r_col[2]) + fac * tmpb;
}
+ break;
}
- break;
case MA_RAMP_SOFT:
{
float scr, scg, scb;
@@ -1479,8 +1479,8 @@ void ramp_blend(int type, float r_col[3], const float fac, const float col[3])
r_col[0] = facm * (r_col[0]) + fac * (((1.0f - r_col[0]) * col[0] * (r_col[0])) + (r_col[0] * scr));
r_col[1] = facm * (r_col[1]) + fac * (((1.0f - r_col[1]) * col[1] * (r_col[1])) + (r_col[1] * scg));
r_col[2] = facm * (r_col[2]) + fac * (((1.0f - r_col[2]) * col[2] * (r_col[2])) + (r_col[2] * scb));
+ break;
}
- break;
case MA_RAMP_LINEAR:
if (col[0] > 0.5f)
r_col[0] = r_col[0] + fac * (2.0f * (col[0] - 0.5f));
diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c
index f24a55dcc44..439965420f7 100644
--- a/source/blender/blenkernel/intern/mesh.c
+++ b/source/blender/blenkernel/intern/mesh.c
@@ -2189,10 +2189,13 @@ static void bm_corners_to_loops_ex(ID *id, CustomData *fdata, CustomData *ldata,
if (ld->disps)
MEM_freeN(ld->disps);
- ld->disps = MEM_callocN(sizeof(float) * 3 * side * side, "converted loop mdisps");
+ ld->disps = MEM_mallocN(sizeof(float) * 3 * side * side, "converted loop mdisps");
if (fd->disps) {
memcpy(ld->disps, disps, sizeof(float) * 3 * side * side);
}
+ else {
+ memset(ld->disps, 0, sizeof(float) * 3 * side * side);
+ }
}
}
}
diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c
index 386b50c7018..84dfa70abfc 100644
--- a/source/blender/blenkernel/intern/node.c
+++ b/source/blender/blenkernel/intern/node.c
@@ -525,60 +525,60 @@ bNodeSocket *nodeInsertSocket(bNodeTree *ntree, bNode *node, int in_out, const c
const char *nodeStaticSocketType(int type, int subtype)
{
switch (type) {
- case SOCK_FLOAT:
- switch (subtype) {
- case PROP_UNSIGNED:
- return "NodeSocketFloatUnsigned";
- case PROP_PERCENTAGE:
- return "NodeSocketFloatPercentage";
- case PROP_FACTOR:
- return "NodeSocketFloatFactor";
- case PROP_ANGLE:
- return "NodeSocketFloatAngle";
- case PROP_TIME:
- return "NodeSocketFloatTime";
- case PROP_NONE:
- default:
- return "NodeSocketFloat";
- }
- case SOCK_INT:
- switch (subtype) {
- case PROP_UNSIGNED:
- return "NodeSocketIntUnsigned";
- case PROP_PERCENTAGE:
- return "NodeSocketIntPercentage";
- case PROP_FACTOR:
- return "NodeSocketIntFactor";
- case PROP_NONE:
- default:
- return "NodeSocketInt";
- }
- case SOCK_BOOLEAN:
- return "NodeSocketBool";
- case SOCK_VECTOR:
- switch (subtype) {
- case PROP_TRANSLATION:
- return "NodeSocketVectorTranslation";
- case PROP_DIRECTION:
- return "NodeSocketVectorDirection";
- case PROP_VELOCITY:
- return "NodeSocketVectorVelocity";
- case PROP_ACCELERATION:
- return "NodeSocketVectorAcceleration";
- case PROP_EULER:
- return "NodeSocketVectorEuler";
- case PROP_XYZ:
- return "NodeSocketVectorXYZ";
- case PROP_NONE:
- default:
- return "NodeSocketVector";
- }
- case SOCK_RGBA:
- return "NodeSocketColor";
- case SOCK_STRING:
- return "NodeSocketString";
- case SOCK_SHADER:
- return "NodeSocketShader";
+ case SOCK_FLOAT:
+ switch (subtype) {
+ case PROP_UNSIGNED:
+ return "NodeSocketFloatUnsigned";
+ case PROP_PERCENTAGE:
+ return "NodeSocketFloatPercentage";
+ case PROP_FACTOR:
+ return "NodeSocketFloatFactor";
+ case PROP_ANGLE:
+ return "NodeSocketFloatAngle";
+ case PROP_TIME:
+ return "NodeSocketFloatTime";
+ case PROP_NONE:
+ default:
+ return "NodeSocketFloat";
+ }
+ case SOCK_INT:
+ switch (subtype) {
+ case PROP_UNSIGNED:
+ return "NodeSocketIntUnsigned";
+ case PROP_PERCENTAGE:
+ return "NodeSocketIntPercentage";
+ case PROP_FACTOR:
+ return "NodeSocketIntFactor";
+ case PROP_NONE:
+ default:
+ return "NodeSocketInt";
+ }
+ case SOCK_BOOLEAN:
+ return "NodeSocketBool";
+ case SOCK_VECTOR:
+ switch (subtype) {
+ case PROP_TRANSLATION:
+ return "NodeSocketVectorTranslation";
+ case PROP_DIRECTION:
+ return "NodeSocketVectorDirection";
+ case PROP_VELOCITY:
+ return "NodeSocketVectorVelocity";
+ case PROP_ACCELERATION:
+ return "NodeSocketVectorAcceleration";
+ case PROP_EULER:
+ return "NodeSocketVectorEuler";
+ case PROP_XYZ:
+ return "NodeSocketVectorXYZ";
+ case PROP_NONE:
+ default:
+ return "NodeSocketVector";
+ }
+ case SOCK_RGBA:
+ return "NodeSocketColor";
+ case SOCK_STRING:
+ return "NodeSocketString";
+ case SOCK_SHADER:
+ return "NodeSocketShader";
}
return NULL;
}
@@ -586,60 +586,60 @@ const char *nodeStaticSocketType(int type, int subtype)
const char *nodeStaticSocketInterfaceType(int type, int subtype)
{
switch (type) {
- case SOCK_FLOAT:
- switch (subtype) {
- case PROP_UNSIGNED:
- return "NodeSocketInterfaceFloatUnsigned";
- case PROP_PERCENTAGE:
- return "NodeSocketInterfaceFloatPercentage";
- case PROP_FACTOR:
- return "NodeSocketInterfaceFloatFactor";
- case PROP_ANGLE:
- return "NodeSocketInterfaceFloatAngle";
- case PROP_TIME:
- return "NodeSocketInterfaceFloatTime";
- case PROP_NONE:
- default:
- return "NodeSocketInterfaceFloat";
- }
- case SOCK_INT:
- switch (subtype) {
- case PROP_UNSIGNED:
- return "NodeSocketInterfaceIntUnsigned";
- case PROP_PERCENTAGE:
- return "NodeSocketInterfaceIntPercentage";
- case PROP_FACTOR:
- return "NodeSocketInterfaceIntFactor";
- case PROP_NONE:
- default:
- return "NodeSocketInterfaceInt";
- }
- case SOCK_BOOLEAN:
- return "NodeSocketInterfaceBool";
- case SOCK_VECTOR:
- switch (subtype) {
- case PROP_TRANSLATION:
- return "NodeSocketInterfaceVectorTranslation";
- case PROP_DIRECTION:
- return "NodeSocketInterfaceVectorDirection";
- case PROP_VELOCITY:
- return "NodeSocketInterfaceVectorVelocity";
- case PROP_ACCELERATION:
- return "NodeSocketInterfaceVectorAcceleration";
- case PROP_EULER:
- return "NodeSocketInterfaceVectorEuler";
- case PROP_XYZ:
- return "NodeSocketInterfaceVectorXYZ";
- case PROP_NONE:
- default:
- return "NodeSocketInterfaceVector";
- }
- case SOCK_RGBA:
- return "NodeSocketInterfaceColor";
- case SOCK_STRING:
- return "NodeSocketInterfaceString";
- case SOCK_SHADER:
- return "NodeSocketInterfaceShader";
+ case SOCK_FLOAT:
+ switch (subtype) {
+ case PROP_UNSIGNED:
+ return "NodeSocketInterfaceFloatUnsigned";
+ case PROP_PERCENTAGE:
+ return "NodeSocketInterfaceFloatPercentage";
+ case PROP_FACTOR:
+ return "NodeSocketInterfaceFloatFactor";
+ case PROP_ANGLE:
+ return "NodeSocketInterfaceFloatAngle";
+ case PROP_TIME:
+ return "NodeSocketInterfaceFloatTime";
+ case PROP_NONE:
+ default:
+ return "NodeSocketInterfaceFloat";
+ }
+ case SOCK_INT:
+ switch (subtype) {
+ case PROP_UNSIGNED:
+ return "NodeSocketInterfaceIntUnsigned";
+ case PROP_PERCENTAGE:
+ return "NodeSocketInterfaceIntPercentage";
+ case PROP_FACTOR:
+ return "NodeSocketInterfaceIntFactor";
+ case PROP_NONE:
+ default:
+ return "NodeSocketInterfaceInt";
+ }
+ case SOCK_BOOLEAN:
+ return "NodeSocketInterfaceBool";
+ case SOCK_VECTOR:
+ switch (subtype) {
+ case PROP_TRANSLATION:
+ return "NodeSocketInterfaceVectorTranslation";
+ case PROP_DIRECTION:
+ return "NodeSocketInterfaceVectorDirection";
+ case PROP_VELOCITY:
+ return "NodeSocketInterfaceVectorVelocity";
+ case PROP_ACCELERATION:
+ return "NodeSocketInterfaceVectorAcceleration";
+ case PROP_EULER:
+ return "NodeSocketInterfaceVectorEuler";
+ case PROP_XYZ:
+ return "NodeSocketInterfaceVectorXYZ";
+ case PROP_NONE:
+ default:
+ return "NodeSocketInterfaceVector";
+ }
+ case SOCK_RGBA:
+ return "NodeSocketInterfaceColor";
+ case SOCK_STRING:
+ return "NodeSocketInterfaceString";
+ case SOCK_SHADER:
+ return "NodeSocketInterfaceShader";
}
return NULL;
}
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index e79a759407b..1df64431824 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -1589,13 +1589,15 @@ void BKE_object_mat3_to_rot(Object *ob, float mat[3][3], bool use_compat)
normalize_qt_qt(dquat, ob->dquat);
invert_qt(dquat);
mul_qt_qtqt(ob->quat, dquat, ob->quat);
+ break;
}
- break;
case ROT_MODE_AXISANGLE:
+ {
mat3_to_axis_angle(ob->rotAxis, &ob->rotAngle, mat);
sub_v3_v3(ob->rotAxis, ob->drotAxis);
ob->rotAngle -= ob->drotAngle;
break;
+ }
default: /* euler */
{
float quat[4];
@@ -2357,8 +2359,9 @@ void BKE_object_minmax(Object *ob, float min_r[3], float max_r[3], const bool us
/* Use the object bounding box so that modifier output
* gets taken into account */
- if (ob->bb)
+ if (ob->bb) {
bb = *(ob->bb);
+ }
else {
if (cu->bb == NULL)
BKE_curve_texspace_calc(cu);
@@ -2370,8 +2373,8 @@ void BKE_object_minmax(Object *ob, float min_r[3], float max_r[3], const bool us
minmax_v3v3_v3(min_r, max_r, bb.vec[a]);
}
change = TRUE;
+ break;
}
- break;
case OB_LATTICE:
{
Lattice *lt = ob->data;
@@ -2387,9 +2390,10 @@ void BKE_object_minmax(Object *ob, float min_r[3], float max_r[3], const bool us
}
}
change = TRUE;
+ break;
}
- break;
case OB_ARMATURE:
+ {
if (ob->pose) {
bArmature *arm = ob->data;
bPoseChannel *pchan;
@@ -2408,6 +2412,7 @@ void BKE_object_minmax(Object *ob, float min_r[3], float max_r[3], const bool us
}
}
break;
+ }
case OB_MESH:
{
Mesh *me = BKE_mesh_from_object(ob);
@@ -2421,8 +2426,8 @@ void BKE_object_minmax(Object *ob, float min_r[3], float max_r[3], const bool us
}
change = TRUE;
}
+ break;
}
- break;
case OB_MBALL:
{
float ob_min[3], ob_max[3];
@@ -2721,10 +2726,8 @@ void BKE_object_handle_update_ex(Scene *scene, Object *ob,
makeDerivedMesh(scene, ob, NULL, data_mask, 0);
}
#endif
-
+ break;
}
- break;
-
case OB_ARMATURE:
if (ob->id.lib && ob->proxy_from) {
if (BKE_pose_copy_result(ob->pose, ob->proxy_from->pose) == false) {
diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c
index e81afc7efb6..b080cfcff2f 100644
--- a/source/blender/blenkernel/intern/sequencer.c
+++ b/source/blender/blenkernel/intern/sequencer.c
@@ -179,8 +179,10 @@ static void BKE_sequence_free_ex(Scene *scene, Sequence *seq, const int do_cache
if (seq->strip)
seq_free_strip(seq->strip);
- if (seq->anim)
+ if (seq->anim) {
IMB_free_anim(seq->anim);
+ seq->anim = NULL;
+ }
if (seq->type & SEQ_TYPE_EFFECT) {
struct SeqEffectHandle sh = BKE_sequence_get_effect(seq);
diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c
index 9b5e5070342..26a5dada108 100644
--- a/source/blender/blenkernel/intern/subsurf_ccg.c
+++ b/source/blender/blenkernel/intern/subsurf_ccg.c
@@ -1970,7 +1970,7 @@ static void ccgDM_drawFacesGLSL(DerivedMesh *dm, DMSetMaterial setMaterial)
/* Only used by non-editmesh types */
static void ccgDM_drawMappedFacesMat(DerivedMesh *dm,
void (*setMaterial)(void *userData, int, void *attribs),
- int (*setFace)(void *userData, int index), void *userData)
+ bool (*setFace)(void *userData, int index), void *userData)
{
CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm;
CCGSubSurf *ss = ccgdm->ss;
diff --git a/source/blender/blenkernel/intern/writeffmpeg.c b/source/blender/blenkernel/intern/writeffmpeg.c
index f08a51e602c..110d67b3d47 100644
--- a/source/blender/blenkernel/intern/writeffmpeg.c
+++ b/source/blender/blenkernel/intern/writeffmpeg.c
@@ -1072,23 +1072,23 @@ int BKE_ffmpeg_start(struct Scene *scene, RenderData *rd, int rectx, int recty,
specs.channels = c->channels;
switch (av_get_packed_sample_fmt(c->sample_fmt)) {
- case AV_SAMPLE_FMT_U8:
- specs.format = AUD_FORMAT_U8;
- break;
- case AV_SAMPLE_FMT_S16:
- specs.format = AUD_FORMAT_S16;
- break;
- case AV_SAMPLE_FMT_S32:
- specs.format = AUD_FORMAT_S32;
- break;
- case AV_SAMPLE_FMT_FLT:
- specs.format = AUD_FORMAT_FLOAT32;
- break;
- case AV_SAMPLE_FMT_DBL:
- specs.format = AUD_FORMAT_FLOAT64;
- break;
- default:
- return -31415;
+ case AV_SAMPLE_FMT_U8:
+ specs.format = AUD_FORMAT_U8;
+ break;
+ case AV_SAMPLE_FMT_S16:
+ specs.format = AUD_FORMAT_S16;
+ break;
+ case AV_SAMPLE_FMT_S32:
+ specs.format = AUD_FORMAT_S32;
+ break;
+ case AV_SAMPLE_FMT_FLT:
+ specs.format = AUD_FORMAT_FLOAT32;
+ break;
+ case AV_SAMPLE_FMT_DBL:
+ specs.format = AUD_FORMAT_FLOAT64;
+ break;
+ default:
+ return -31415;
}
specs.rate = rd->ffcodecdata.audio_mixrate;
diff --git a/source/blender/blenlib/intern/BLI_ghash.c b/source/blender/blenlib/intern/BLI_ghash.c
index d30d3f3d256..5b9045b1ba2 100644
--- a/source/blender/blenlib/intern/BLI_ghash.c
+++ b/source/blender/blenlib/intern/BLI_ghash.c
@@ -116,9 +116,14 @@ void BLI_ghash_insert(GHash *gh, void *key, void *val)
void *BLI_ghash_lookup(GHash *gh, const void *key)
{
- const unsigned int hash = gh->hashfp(key) % gh->nbuckets;
+
+ unsigned int hash;
Entry *e;
+ if (!gh) return NULL;
+
+ hash = gh->hashfp(key) % gh->nbuckets;
+
for (e = gh->buckets[hash]; e; e = e->next) {
if (gh->cmpfp(key, e->key) == 0) {
return e->val;
diff --git a/source/blender/blenlib/intern/BLI_mempool.c b/source/blender/blenlib/intern/BLI_mempool.c
index 87179a93e83..217a4b9d266 100644
--- a/source/blender/blenlib/intern/BLI_mempool.c
+++ b/source/blender/blenlib/intern/BLI_mempool.c
@@ -437,19 +437,22 @@ void *BLI_mempool_iterstep(BLI_mempool_iter *iter)
void BLI_mempool_destroy(BLI_mempool *pool)
{
BLI_mempool_chunk *mpchunk = NULL;
+ BLI_mempool_chunk *mpchunk_next;
if (pool->flag & BLI_MEMPOOL_SYSMALLOC) {
- for (mpchunk = pool->chunks.first; mpchunk; mpchunk = mpchunk->next) {
+ for (mpchunk = pool->chunks.first; mpchunk; mpchunk = mpchunk_next) {
+ mpchunk_next = mpchunk->next;
free(mpchunk->data);
+ free(mpchunk);
}
- 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) {
+ mpchunk_next = mpchunk->next;
MEM_freeN(mpchunk->data);
+ MEM_freeN(mpchunk);
}
- BLI_freelistN(&(pool->chunks));
MEM_freeN(pool);
}
}
diff --git a/source/blender/blenlib/intern/DLRB_tree.c b/source/blender/blenlib/intern/DLRB_tree.c
index cb47f07574d..31b4b7cd4a5 100644
--- a/source/blender/blenlib/intern/DLRB_tree.c
+++ b/source/blender/blenlib/intern/DLRB_tree.c
@@ -539,9 +539,8 @@ DLRBT_Node *BLI_dlrbTree_add(DLRBT_Tree *tree, DLRBT_Comparator_FP cmp_cb,
parNode->left = node;
node->parent = parNode;
+ break;
}
- break;
-
case 1: /* add new node as right child */
{
node = new_cb(data);
@@ -549,15 +548,14 @@ DLRBT_Node *BLI_dlrbTree_add(DLRBT_Tree *tree, DLRBT_Comparator_FP cmp_cb,
parNode->right = node;
node->parent = parNode;
+ break;
}
- break;
-
default: /* update the duplicate node as appropriate */
{
if (update_cb)
update_cb(parNode, data);
+ break;
}
- break;
}
}
else {
diff --git a/source/blender/blenlib/intern/math_geom.c b/source/blender/blenlib/intern/math_geom.c
index 28bb97689d8..0e7ff521ce8 100644
--- a/source/blender/blenlib/intern/math_geom.c
+++ b/source/blender/blenlib/intern/math_geom.c
@@ -494,6 +494,7 @@ int isect_seg_seg_v2_point(const float v1[2], const float v2[2], const float v3[
float a1, a2, b1, b2, c1, c2, d;
float u, v;
const float eps = 0.000001f;
+ const float eps_sq = eps * eps;
a1 = v2[0] - v1[0];
b1 = v4[0] - v3[0];
@@ -510,8 +511,8 @@ int isect_seg_seg_v2_point(const float v1[2], const float v2[2], const float v3[
float a[2], b[2], c[2];
float u2;
- if (len_v2v2(v1, v2) == 0.0f) {
- if (len_v2v2(v3, v4) > eps) {
+ if (equals_v2v2(v1, v2)) {
+ if (len_squared_v2v2(v3, v4) > eps_sq) {
/* use non-point segment as basis */
SWAP(const float *, v1, v3);
SWAP(const float *, v2, v4);
diff --git a/source/blender/blenlib/intern/math_rotation.c b/source/blender/blenlib/intern/math_rotation.c
index 96664b776f0..dc0c48cf33f 100644
--- a/source/blender/blenlib/intern/math_rotation.c
+++ b/source/blender/blenlib/intern/math_rotation.c
@@ -1816,7 +1816,7 @@ static int _axis_convert_lut[23][24] = {
{0x408, 0x810, 0xA20, 0x228, 0x081, 0x891, 0x699, 0x2A9, 0x102, 0x50A,
0x71A, 0xB22, 0x4CB, 0x8D3, 0xAE3, 0x2EB, 0x144, 0x954, 0x75C, 0x36C,
0x045, 0x44D, 0x65D, 0xA65},
- };
+};
// _axis_convert_num = {'X': 0, 'Y': 1, 'Z': 2, '-X': 3, '-Y': 4, '-Z': 5}
diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c
index 1e76a7f3164..4c089e99202 100644
--- a/source/blender/blenlib/intern/path_util.c
+++ b/source/blender/blenlib/intern/path_util.c
@@ -610,9 +610,8 @@ bool BLI_parent_dir(char *path)
{
static char parent_dir[] = {'.', '.', SEP, '\0'}; /* "../" or "..\\" */
char tmp[FILE_MAX + 4];
- BLI_strncpy(tmp, path, sizeof(tmp) - 4);
- BLI_add_slash(tmp);
- strcat(tmp, parent_dir);
+
+ BLI_join_dirfile(tmp, sizeof(tmp), path, parent_dir);
BLI_cleanup_dir(NULL, tmp); /* does all the work of normalizing the path for us */
if (!BLI_testextensie(tmp, parent_dir)) {
diff --git a/source/blender/blenlib/intern/storage.c b/source/blender/blenlib/intern/storage.c
index 6b45c6f1cb3..aeeae000fff 100644
--- a/source/blender/blenlib/intern/storage.c
+++ b/source/blender/blenlib/intern/storage.c
@@ -44,7 +44,7 @@
#if defined(__sun__) || defined(__sun) || defined(__NetBSD__)
# include <sys/statvfs.h> /* Other modern unix os's should probably use this also */
-#elif !defined(__FreeBSD__) && !defined(linux) && (defined(__sparc) || defined(__sparc__))
+#elif !defined(__FreeBSD__) && !defined(__linux__) && (defined(__sparc) || defined(__sparc__))
# include <sys/statfs.h>
#endif
@@ -53,7 +53,7 @@
# include <sys/mount.h>
#endif
-#if defined(linux) || defined(__CYGWIN32__) || defined(__hpux) || defined(__GNU__) || defined(__GLIBC__)
+#if defined(__linux__) || defined(__CYGWIN32__) || defined(__hpux) || defined(__GNU__) || defined(__GLIBC__)
#include <sys/vfs.h>
#endif
@@ -194,13 +194,13 @@ double BLI_dir_free_space(const char *dir)
strcpy(name, "/");
}
-#if defined(__FreeBSD__) || defined(linux) || defined(__OpenBSD__) || defined(__APPLE__) || defined(__GNU__) || defined(__GLIBC__)
+#if defined(__FreeBSD__) || defined(__linux__) || defined(__OpenBSD__) || defined(__APPLE__) || defined(__GNU__) || defined(__GLIBC__)
if (statfs(name, &disk)) return(-1);
#endif
#if defined(__sun__) || defined(__sun) || defined(__NetBSD__)
if (statvfs(name, &disk)) return(-1);
-#elif !defined(__FreeBSD__) && !defined(linux) && (defined(__sparc) || defined(__sparc__))
+#elif !defined(__FreeBSD__) && !defined(__linux__) && (defined(__sparc) || defined(__sparc__))
/* WARNING - This may not be supported by geeneric unix os's - Campbell */
if (statfs(name, &disk, sizeof(struct statfs), 0)) return(-1);
#endif
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index a6da0762b1c..50273cb33f3 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -7689,31 +7689,38 @@ static const char *node_get_static_idname(int type, int treetype)
static const char *node_socket_get_static_idname(bNodeSocket *sock)
{
switch (sock->type) {
- case SOCK_FLOAT: {
- bNodeSocketValueFloat *dval = sock->default_value;
- return nodeStaticSocketType(SOCK_FLOAT, dval->subtype);
- }
- case SOCK_INT: {
- bNodeSocketValueInt *dval = sock->default_value;
- return nodeStaticSocketType(SOCK_INT, dval->subtype);
- }
- case SOCK_BOOLEAN: {
- return nodeStaticSocketType(SOCK_BOOLEAN, PROP_NONE);
- }
- case SOCK_VECTOR: {
- bNodeSocketValueVector *dval = sock->default_value;
- return nodeStaticSocketType(SOCK_VECTOR, dval->subtype);
- }
- case SOCK_RGBA: {
- return nodeStaticSocketType(SOCK_RGBA, PROP_NONE);
- }
- case SOCK_STRING: {
- bNodeSocketValueString *dval = sock->default_value;
- return nodeStaticSocketType(SOCK_STRING, dval->subtype);
- }
- case SOCK_SHADER: {
- return nodeStaticSocketType(SOCK_SHADER, PROP_NONE);
- }
+ case SOCK_FLOAT:
+ {
+ bNodeSocketValueFloat *dval = sock->default_value;
+ return nodeStaticSocketType(SOCK_FLOAT, dval->subtype);
+ }
+ case SOCK_INT:
+ {
+ bNodeSocketValueInt *dval = sock->default_value;
+ return nodeStaticSocketType(SOCK_INT, dval->subtype);
+ }
+ case SOCK_BOOLEAN:
+ {
+ return nodeStaticSocketType(SOCK_BOOLEAN, PROP_NONE);
+ }
+ case SOCK_VECTOR:
+ {
+ bNodeSocketValueVector *dval = sock->default_value;
+ return nodeStaticSocketType(SOCK_VECTOR, dval->subtype);
+ }
+ case SOCK_RGBA:
+ {
+ return nodeStaticSocketType(SOCK_RGBA, PROP_NONE);
+ }
+ case SOCK_STRING:
+ {
+ bNodeSocketValueString *dval = sock->default_value;
+ return nodeStaticSocketType(SOCK_STRING, dval->subtype);
+ }
+ case SOCK_SHADER:
+ {
+ return nodeStaticSocketType(SOCK_SHADER, PROP_NONE);
+ }
}
return "";
}
diff --git a/source/blender/bmesh/intern/bmesh_operators.c b/source/blender/bmesh/intern/bmesh_operators.c
index 7f8b40d85dc..63c00d5b545 100644
--- a/source/blender/bmesh/intern/bmesh_operators.c
+++ b/source/blender/bmesh/intern/bmesh_operators.c
@@ -561,8 +561,6 @@ static int bmo_mesh_flag_count(BMesh *bm, const char htype, const short oflag,
BMElemF *ele_f;
int i;
- BLI_assert((unsigned int)test_for_enabled <= 1);
-
for (i = 0; i < 3; i++) {
if (htype & flag_types[i]) {
BM_ITER_MESH (ele_f, &iter, bm, iter_types[i]) {
@@ -937,7 +935,6 @@ static void bmo_slot_buffer_from_flag(BMesh *bm, BMOperator *op,
int totelement, i = 0;
BLI_assert(op->slots_in == slot_args || op->slots_out == slot_args);
- BLI_assert((unsigned int)test_for_enabled <= 1);
if (test_for_enabled)
totelement = BMO_mesh_enabled_flag_count(bm, htype, oflag);
diff --git a/source/blender/bmesh/operators/bmo_create.c b/source/blender/bmesh/operators/bmo_create.c
index ad858c514d2..e43c04f7d08 100644
--- a/source/blender/bmesh/operators/bmo_create.c
+++ b/source/blender/bmesh/operators/bmo_create.c
@@ -217,7 +217,7 @@ void bmo_contextual_create_exec(BMesh *bm, BMOperator *op)
/* Continue with ad-hoc fill methods since operators fail,
* edge, vcloud... may add more */
- if (0) { /* nice feature but perhaps it should be a different tool? */
+ if (0) { /* nice feature but perhaps it should be a different tool? */
/* tricky feature for making a line/edge from selection history...
*
diff --git a/source/blender/bmesh/operators/bmo_dupe.c b/source/blender/bmesh/operators/bmo_dupe.c
index e41fbd69616..d65e2669a58 100644
--- a/source/blender/bmesh/operators/bmo_dupe.c
+++ b/source/blender/bmesh/operators/bmo_dupe.c
@@ -130,9 +130,11 @@ static BMFace *copy_face(BMOperator *op,
BMOpSlot *slot_facemap_out,
BMesh *source_mesh,
BMFace *source_face, BMesh *target_mesh,
- BMVert **vtar, BMEdge **edar, GHash *vhash, GHash *ehash)
+ GHash *vhash, GHash *ehash)
{
/* BMVert *target_vert1, *target_vert2; */ /* UNUSED */
+ BMVert **vtar = BLI_array_alloca(vtar, source_face->len);
+ BMEdge **edar = BLI_array_alloca(edar, source_face->len);
BMLoop *source_loop, *target_loop;
BMFace *target_face = NULL;
BMIter iter, iter2;
@@ -190,11 +192,6 @@ static void bmo_mesh_copy(BMOperator *op, BMesh *bm_src, BMesh *bm_dst)
BMVert *v = NULL, *v2;
BMEdge *e = NULL;
BMFace *f = NULL;
-
- BLI_array_declare(vtar);
- BLI_array_declare(edar);
- BMVert **vtar = NULL;
- BMEdge **edar = NULL;
BMIter viter, eiter, fiter;
GHash *vhash, *ehash;
@@ -280,14 +277,7 @@ static void bmo_mesh_copy(BMOperator *op, BMesh *bm_src, BMesh *bm_dst)
}
}
- /* ensure arrays are the right size */
- BLI_array_empty(vtar);
- BLI_array_empty(edar);
-
- BLI_array_grow_items(vtar, f->len);
- BLI_array_grow_items(edar, f->len);
-
- copy_face(op, slot_face_map_out, bm_src, f, bm_dst, vtar, edar, vhash, ehash);
+ copy_face(op, slot_face_map_out, bm_src, f, bm_dst, vhash, ehash);
BMO_elem_flag_enable(bm_src, f, DUPE_DONE);
}
}
@@ -295,9 +285,6 @@ static void bmo_mesh_copy(BMOperator *op, BMesh *bm_src, BMesh *bm_dst)
/* free pointer hashes */
BLI_ghash_free(vhash, NULL, NULL);
BLI_ghash_free(ehash, NULL, NULL);
-
- BLI_array_free(vtar); /* free vert pointer array */
- BLI_array_free(edar); /* free edge pointer array */
}
/**
diff --git a/source/blender/bmesh/operators/bmo_extrude.c b/source/blender/bmesh/operators/bmo_extrude.c
index 32c8ee50e05..070cc187045 100644
--- a/source/blender/bmesh/operators/bmo_extrude.c
+++ b/source/blender/bmesh/operators/bmo_extrude.c
@@ -31,7 +31,6 @@
#include "DNA_meshdata_types.h"
#include "BLI_math.h"
-#include "BLI_array.h"
#include "BLI_buffer.h"
#include "BKE_customdata.h"
@@ -54,84 +53,42 @@ enum {
void bmo_extrude_discrete_faces_exec(BMesh *bm, BMOperator *op)
{
- BMVert **verts = NULL;
- BLI_array_declare(verts);
- BMEdge **edges = NULL;
- BLI_array_declare(edges);
-
BMOIter siter;
- BMIter liter, liter2;
- BMFace *f, *f2, *f3;
- BMLoop *l, *l2, *l3, *l4, *l_tmp;
- BMEdge *e, *laste;
- BMVert *v, *lastv, *firstv;
- int i;
+ BMFace *f_org;
- BMO_ITER (f, &siter, op->slots_in, "faces", BM_FACE) {
- BLI_array_empty(verts);
- BLI_array_empty(edges);
- BLI_array_grow_items(verts, f->len);
- BLI_array_grow_items(edges, f->len);
-
- i = 0;
- firstv = lastv = NULL;
- BM_ITER_ELEM (l, &liter, f, BM_LOOPS_OF_FACE) {
- v = BM_vert_create(bm, l->v->co, l->v, 0);
- /* skip on the first iteration */
- if (lastv) {
- e = BM_edge_create(bm, lastv, v, l->e, 0);
- edges[i] = e;
- verts[i] = lastv;
- i++;
- }
+ BMO_ITER (f_org, &siter, op->slots_in, "faces", BM_FACE) {
+ BMFace *f_new;
+ BMLoop *l_org, *l_org_first;
+ BMLoop *l_new;
- lastv = v;
- laste = l->e;
- if (!firstv) firstv = v;
- }
+ BMO_elem_flag_enable(bm, f_org, EXT_DEL);
- /* this fits in the array because we skip one in the loop above */
- e = BM_edge_create(bm, v, firstv, laste, 0);
- edges[i] = e;
- verts[i] = lastv;
- i++;
+ f_new = BM_face_copy(bm, bm, f_org, true, true);
+ BMO_elem_flag_enable(bm, f_new, EXT_KEEP);
- BMO_elem_flag_enable(bm, f, EXT_DEL);
+ l_org = l_org_first = BM_FACE_FIRST_LOOP(f_org);
+ l_new = BM_FACE_FIRST_LOOP(f_new);
- f2 = BM_face_create(bm, verts, edges, f->len, 0);
- if (UNLIKELY(f2 == NULL)) {
- BMO_error_raise(bm, op, BMERR_MESH_ERROR, "Extrude failed: could not create face");
- BLI_array_free(edges);
- return;
- }
-
- BMO_elem_flag_enable(bm, f2, EXT_KEEP);
- BM_elem_attrs_copy(bm, bm, f, f2);
-
- l2 = BM_iter_new(&liter2, bm, BM_LOOPS_OF_FACE, f2);
- BM_ITER_ELEM (l, &liter, f, BM_LOOPS_OF_FACE) {
- BM_elem_attrs_copy(bm, bm, l, l2);
-
- l3 = l->next;
- l4 = l2->next;
+ do {
+ BMFace *f_side;
+ BMLoop *l_side_iter;
- f3 = BM_face_create_quad_tri(bm, l3->v, l4->v, l2->v, l->v, f, false);
- /* XXX, no error check here, why? - Campbell */
+ BM_elem_attrs_copy(bm, bm, l_org, l_new);
- l_tmp = BM_FACE_FIRST_LOOP(f3);
+ f_side = BM_face_create_quad_tri(bm,
+ l_org->next->v, l_new->next->v, l_new->v, l_org->v,
+ f_org, false);
- BM_elem_attrs_copy(bm, bm, l->next, l_tmp); l_tmp = l_tmp->next;
- BM_elem_attrs_copy(bm, bm, l->next, l_tmp); l_tmp = l_tmp->next;
- BM_elem_attrs_copy(bm, bm, l, l_tmp); l_tmp = l_tmp->next;
- BM_elem_attrs_copy(bm, bm, l, l_tmp);
+ l_side_iter = BM_FACE_FIRST_LOOP(f_side);
- l2 = BM_iter_step(&liter2);
- }
+ BM_elem_attrs_copy(bm, bm, l_org->next, l_side_iter); l_side_iter = l_side_iter->next;
+ BM_elem_attrs_copy(bm, bm, l_org->next, l_side_iter); l_side_iter = l_side_iter->next;
+ BM_elem_attrs_copy(bm, bm, l_org, l_side_iter); l_side_iter = l_side_iter->next;
+ BM_elem_attrs_copy(bm, bm, l_org, l_side_iter);
+ } while (((l_new = l_new->next),
+ (l_org = l_org->next)) != l_org_first);
}
- BLI_array_free(verts);
- BLI_array_free(edges);
-
BMO_op_callf(bm, op->flag,
"delete geom=%ff context=%i",
EXT_DEL, DEL_ONLYFACES);
diff --git a/source/blender/collada/ArmatureImporter.cpp b/source/blender/collada/ArmatureImporter.cpp
index 0cd48707566..eb92b089f48 100644
--- a/source/blender/collada/ArmatureImporter.cpp
+++ b/source/blender/collada/ArmatureImporter.cpp
@@ -133,24 +133,28 @@ void ArmatureImporter::create_bone(SkinInfo *skin, COLLADAFW::Node *node, EditBo
add_v3_v3v3(bone->tail, bone->head, vec);
// set parent tail
- if (parent && totchild == 1) {
- copy_v3_v3(parent->tail, bone->head);
-
- // not setting BONE_CONNECTED because this would lock child bone location with respect to parent
- bone->flag |= BONE_CONNECTED;
+ if (parent) {
// XXX increase this to prevent "very" small bones?
const float epsilon = 0.000001f;
// derive leaf bone length
- float length = len_v3v3(parent->head, parent->tail);
+ float length = len_v3v3(parent->head, bone->head);
if ((length < leaf_bone_length || totbone == 0) && length > epsilon) {
leaf_bone_length = length;
}
- // treat zero-sized bone like a leaf bone
- if (length <= epsilon) {
- add_leaf_bone(parent_mat, parent, node);
+ if (totchild == 1) {
+ copy_v3_v3(parent->tail, bone->head);
+
+ // not setting BONE_CONNECTED because this would lock child bone location with respect to parent
+ bone->flag |= BONE_CONNECTED;
+
+
+ // treat zero-sized bone like a leaf bone
+ if (length <= epsilon) {
+ add_leaf_bone(parent_mat, parent, node);
+ }
}
}
diff --git a/source/blender/collada/ControllerExporter.cpp b/source/blender/collada/ControllerExporter.cpp
index 4c6f71ff1a6..d04ed8d6fa1 100644
--- a/source/blender/collada/ControllerExporter.cpp
+++ b/source/blender/collada/ControllerExporter.cpp
@@ -123,7 +123,7 @@ void ControllerExporter::operator()(Object *ob)
if (ob_arm) {
export_skin_controller(ob, ob_arm);
}
- if (key) {
+ if (key && this->export_settings->include_shapekeys) {
export_morph_controller(ob, key);
}
}
diff --git a/source/blender/collada/MeshImporter.cpp b/source/blender/collada/MeshImporter.cpp
index b4b37f7d0bd..1e0f0244072 100644
--- a/source/blender/collada/MeshImporter.cpp
+++ b/source/blender/collada/MeshImporter.cpp
@@ -315,7 +315,8 @@ bool MeshImporter::primitive_has_faces(COLLADAFW::MeshPrimitive *mp) {
case COLLADAFW::MeshPrimitive::TRIANGLES:
case COLLADAFW::MeshPrimitive::TRIANGLE_FANS:
case COLLADAFW::MeshPrimitive::POLYLIST:
- case COLLADAFW::MeshPrimitive::POLYGONS: {
+ case COLLADAFW::MeshPrimitive::POLYGONS:
+ {
has_faces = true;
break;
}
@@ -347,8 +348,8 @@ void MeshImporter::allocate_poly_data(COLLADAFW::Mesh *collada_mesh, Mesh *me)
case COLLADAFW::MeshPrimitive::TRIANGLES:
case COLLADAFW::MeshPrimitive::TRIANGLE_FANS:
case COLLADAFW::MeshPrimitive::POLYLIST:
- case COLLADAFW::MeshPrimitive::POLYGONS: {
-
+ case COLLADAFW::MeshPrimitive::POLYGONS:
+ {
COLLADAFW::Polygons *mpvc = (COLLADAFW::Polygons *)mp;
size_t prim_poly_count = mpvc->getFaceCount();
@@ -361,7 +362,8 @@ void MeshImporter::allocate_poly_data(COLLADAFW::Mesh *collada_mesh, Mesh *me)
total_loop_count += prim_loop_count;
break;
}
- default: break;
+ default:
+ break;
}
}
@@ -400,16 +402,19 @@ unsigned int MeshImporter::get_vertex_count(COLLADAFW::Polygons *mp, int index)
int result;
switch (type) {
case COLLADAFW::MeshPrimitive::TRIANGLES:
- case COLLADAFW::MeshPrimitive::TRIANGLE_FANS: {
+ case COLLADAFW::MeshPrimitive::TRIANGLE_FANS:
+ {
result = 3;
break;
}
case COLLADAFW::MeshPrimitive::POLYLIST:
- case COLLADAFW::MeshPrimitive::POLYGONS: {
+ case COLLADAFW::MeshPrimitive::POLYGONS:
+ {
result = mp->getGroupedVerticesVertexCountArray()[index];
break;
}
- default: {
+ default:
+ {
result = -1;
break;
}
@@ -427,12 +432,14 @@ unsigned int MeshImporter::get_loose_edge_count(COLLADAFW::Mesh *mesh) {
COLLADAFW::MeshPrimitive *mp = prim_arr[i];
int type = mp->getPrimitiveType();
switch (type) {
- case COLLADAFW::MeshPrimitive::LINES: {
+ case COLLADAFW::MeshPrimitive::LINES:
+ {
size_t prim_totface = mp->getFaceCount();
loose_edge_count += prim_totface;
break;
}
- default: break;
+ default:
+ break;
}
}
return loose_edge_count;
diff --git a/source/blender/collada/TransformWriter.cpp b/source/blender/collada/TransformWriter.cpp
index b088139262c..c3665a33ca4 100644
--- a/source/blender/collada/TransformWriter.cpp
+++ b/source/blender/collada/TransformWriter.cpp
@@ -107,15 +107,18 @@ void TransformWriter::add_node_transform_ob(COLLADASW::Node& node, Object *ob, B
converter.mat4_to_dae_double(d_obmat, f_obmat);
switch (transformation_type) {
- case BC_TRANSFORMATION_TYPE_MATRIX : {
+ case BC_TRANSFORMATION_TYPE_MATRIX:
+ {
node.addMatrix("transform",d_obmat);
break;
}
- case BC_TRANSFORMATION_TYPE_BOTH : {
+ case BC_TRANSFORMATION_TYPE_BOTH:
+ {
node.addMatrix("transform",d_obmat);
- /* intentional fall-through */
+ /* fall-through */
}
- case BC_TRANSFORMATION_TYPE_TRANSROTLOC: {
+ case BC_TRANSFORMATION_TYPE_TRANSROTLOC:
+ {
float loc[3], rot[3], scale[3];
TransformBase::decompose(f_obmat, loc, rot, NULL, scale);
add_transform(node, loc, rot, scale);
diff --git a/source/blender/collada/collada_utils.cpp b/source/blender/collada/collada_utils.cpp
index 41f48a757c0..d4196bacf0d 100644
--- a/source/blender/collada/collada_utils.cpp
+++ b/source/blender/collada/collada_utils.cpp
@@ -145,11 +145,13 @@ Mesh *bc_get_mesh_copy(Scene *scene, Object *ob, BC_export_mesh_type export_mesh
DerivedMesh *dm = NULL;
if (apply_modifiers) {
switch (export_mesh_type) {
- case BC_MESH_TYPE_VIEW: {
+ case BC_MESH_TYPE_VIEW:
+ {
dm = mesh_create_derived_view(scene, ob, mask);
break;
}
- case BC_MESH_TYPE_RENDER: {
+ case BC_MESH_TYPE_RENDER:
+ {
dm = mesh_create_derived_render(scene, ob, mask);
break;
}
diff --git a/source/blender/compositor/intern/COM_ExecutionGroup.cpp b/source/blender/compositor/intern/COM_ExecutionGroup.cpp
index e82bf2e21c8..51eaffaa31c 100644
--- a/source/blender/compositor/intern/COM_ExecutionGroup.cpp
+++ b/source/blender/compositor/intern/COM_ExecutionGroup.cpp
@@ -288,8 +288,8 @@ void ExecutionGroup::execute(ExecutionSystem *graph)
delete hotspots[0];
MEM_freeN(chunkOrders);
+ break;
}
- break;
case COM_TO_RULE_OF_THIRDS:
{
ChunkOrderHotspot *hotspots[9];
@@ -336,8 +336,8 @@ void ExecutionGroup::execute(ExecutionSystem *graph)
delete hotspots[7];
delete hotspots[8];
MEM_freeN(chunkOrders);
+ break;
}
- break;
case COM_TO_TOP_DOWN:
default:
break;
diff --git a/source/blender/compositor/intern/COM_WorkScheduler.cpp b/source/blender/compositor/intern/COM_WorkScheduler.cpp
index 402fa28e210..e0ac767b628 100644
--- a/source/blender/compositor/intern/COM_WorkScheduler.cpp
+++ b/source/blender/compositor/intern/COM_WorkScheduler.cpp
@@ -304,7 +304,8 @@ void WorkScheduler::initialize(bool use_opencl)
g_context = NULL;
g_program = NULL;
- OCL_init(); /* this will check and skip if already initialized */
+ if (!OCL_init()) /* this will check for errors and skip if already initialized */
+ return;
if (clCreateContextFromType) {
cl_uint numberOfPlatforms = 0;
diff --git a/source/blender/compositor/nodes/COM_GroupNode.cpp b/source/blender/compositor/nodes/COM_GroupNode.cpp
index 85554d7a7aa..7c0499dc04e 100644
--- a/source/blender/compositor/nodes/COM_GroupNode.cpp
+++ b/source/blender/compositor/nodes/COM_GroupNode.cpp
@@ -183,14 +183,16 @@ void GroupNode::addDefaultOutputOperation(ExecutionSystem &system, OutputSocket
NodeOperation *operation = NULL;
switch (iosock->typeinfo->type) {
- case SOCK_FLOAT: {
+ case SOCK_FLOAT:
+ {
float value = RNA_float_get(&ptr, "default_value");
SetValueOperation *value_op = new SetValueOperation();
value_op->setValue(value);
operation = value_op;
break;
}
- case SOCK_VECTOR: {
+ case SOCK_VECTOR:
+ {
float vector[3];
RNA_float_get_array(&ptr, "default_value", vector);
SetVectorOperation *vector_op = new SetVectorOperation();
@@ -198,7 +200,8 @@ void GroupNode::addDefaultOutputOperation(ExecutionSystem &system, OutputSocket
operation = vector_op;
break;
}
- case SOCK_RGBA: {
+ case SOCK_RGBA:
+ {
float color[4];
RNA_float_get_array(&ptr, "default_value", color);
SetColorOperation *color_op = new SetColorOperation();
diff --git a/source/blender/editors/animation/anim_channels_defines.c b/source/blender/editors/animation/anim_channels_defines.c
index a441dce5656..b2c63addb87 100644
--- a/source/blender/editors/animation/anim_channels_defines.c
+++ b/source/blender/editors/animation/anim_channels_defines.c
@@ -2921,9 +2921,8 @@ short ANIM_channel_setting_get(bAnimContext *ac, bAnimListElem *ale, int setting
return ((*val) & flag) == 0;
else
return ((*val) & flag) != 0;
+ break;
}
- break;
-
case sizeof(short): /* short pointer for setting */
{
short *val = (short *)ptr;
@@ -2932,9 +2931,8 @@ short ANIM_channel_setting_get(bAnimContext *ac, bAnimListElem *ale, int setting
return ((*val) & flag) == 0;
else
return ((*val) & flag) != 0;
+ break;
}
- break;
-
case sizeof(char): /* char pointer for setting */
{
char *val = (char *)ptr;
@@ -2943,8 +2941,8 @@ short ANIM_channel_setting_get(bAnimContext *ac, bAnimListElem *ale, int setting
return ((*val) & flag) == 0;
else
return ((*val) & flag) != 0;
+ break;
}
- break;
}
}
}
@@ -2994,22 +2992,20 @@ void ANIM_channel_setting_set(bAnimContext *ac, bAnimListElem *ale, int setting,
{
int *val = (int *)ptr;
ACF_SETTING_SET(*val, flag, mode);
+ break;
}
- break;
-
case sizeof(short): /* short pointer for setting */
{
short *val = (short *)ptr;
ACF_SETTING_SET(*val, flag, mode);
+ break;
}
- break;
-
case sizeof(char): /* char pointer for setting */
{
char *val = (char *)ptr;
ACF_SETTING_SET(*val, flag, mode);
+ break;
}
- break;
}
}
}
@@ -3156,14 +3152,14 @@ void ANIM_channel_draw(bAnimContext *ac, bAnimListElem *ale, float yminc, float
{
SpaceAction *saction = (SpaceAction *)ac->sl;
draw_sliders = (saction->flag & SACTION_SLIDERS);
+ break;
}
- break;
case SPACE_IPO:
{
SpaceIpo *sipo = (SpaceIpo *)ac->sl;
draw_sliders = (sipo->flag & SIPO_SLIDERS);
+ break;
}
- break;
}
}
@@ -3546,14 +3542,14 @@ void ANIM_channel_draw_widgets(bContext *C, bAnimContext *ac, bAnimListElem *ale
{
SpaceAction *saction = (SpaceAction *)ac->sl;
draw_sliders = (saction->flag & SACTION_SLIDERS);
+ break;
}
- break;
case SPACE_IPO:
{
SpaceIpo *sipo = (SpaceIpo *)ac->sl;
draw_sliders = (sipo->flag & SIPO_SLIDERS);
+ break;
}
- break;
}
}
diff --git a/source/blender/editors/animation/anim_channels_edit.c b/source/blender/editors/animation/anim_channels_edit.c
index 481430f37e4..59ae45e446a 100644
--- a/source/blender/editors/animation/anim_channels_edit.c
+++ b/source/blender/editors/animation/anim_channels_edit.c
@@ -94,23 +94,22 @@ void ANIM_set_active_channel(bAnimContext *ac, void *data, short datatype, int f
bActionGroup *agrp = (bActionGroup *)ale->data;
ACHANNEL_SET_FLAG(agrp, ACHANNEL_SETFLAG_CLEAR, AGRP_ACTIVE);
+ break;
}
- break;
case ANIMTYPE_FCURVE:
{
FCurve *fcu = (FCurve *)ale->data;
ACHANNEL_SET_FLAG(fcu, ACHANNEL_SETFLAG_CLEAR, FCURVE_ACTIVE);
+ break;
}
- break;
case ANIMTYPE_NLATRACK:
{
NlaTrack *nlt = (NlaTrack *)ale->data;
ACHANNEL_SET_FLAG(nlt, ACHANNEL_SETFLAG_CLEAR, NLATRACK_ACTIVE);
+ break;
}
- break;
-
case ANIMTYPE_FILLACTD: /* Action Expander */
case ANIMTYPE_DSMAT: /* Datablock AnimData Expanders */
case ANIMTYPE_DSLAM:
@@ -131,8 +130,8 @@ void ANIM_set_active_channel(bAnimContext *ac, void *data, short datatype, int f
if (ale->adt) {
ACHANNEL_SET_FLAG(ale->adt, ACHANNEL_SETFLAG_CLEAR, ADT_UI_ACTIVE);
}
+ break;
}
- break;
}
}
@@ -143,21 +142,20 @@ void ANIM_set_active_channel(bAnimContext *ac, void *data, short datatype, int f
{
bActionGroup *agrp = (bActionGroup *)channel_data;
agrp->flag |= AGRP_ACTIVE;
+ break;
}
- break;
case ANIMTYPE_FCURVE:
{
FCurve *fcu = (FCurve *)channel_data;
fcu->flag |= FCURVE_ACTIVE;
+ break;
}
- break;
case ANIMTYPE_NLATRACK:
{
NlaTrack *nlt = (NlaTrack *)channel_data;
nlt->flag |= NLATRACK_ACTIVE;
+ break;
}
- break;
-
case ANIMTYPE_FILLACTD: /* Action Expander */
case ANIMTYPE_DSMAT: /* Datablock AnimData Expanders */
case ANIMTYPE_DSLAM:
@@ -177,8 +175,8 @@ void ANIM_set_active_channel(bAnimContext *ac, void *data, short datatype, int f
if (ale && ale->adt) {
ale->adt->flag |= ADT_UI_ACTIVE;
}
+ break;
}
- break;
}
}
@@ -256,9 +254,8 @@ void ANIM_deselect_anim_channels(bAnimContext *ac, void *data, short datatype, s
{
if ((ale->adt) && (ale->adt->flag & ADT_UI_SELECTED))
sel = ACHANNEL_SETFLAG_CLEAR;
+ break;
}
- break;
-
case ANIMTYPE_GPLAYER:
if (ale->flag & GP_LAYER_SELECT)
sel = ACHANNEL_SETFLAG_CLEAR;
@@ -283,55 +280,54 @@ void ANIM_deselect_anim_channels(bAnimContext *ac, void *data, short datatype, s
if (scene->adt) {
ACHANNEL_SET_FLAG(scene, sel, ADT_UI_SELECTED);
}
+ break;
}
- break;
case ANIMTYPE_OBJECT:
+ {
#if 0 /* for now, do not take object selection into account, since it gets too annoying */
- {
- Base *base = (Base *)ale->data;
- Object *ob = base->object;
-
- ACHANNEL_SET_FLAG(base, sel, SELECT);
- ACHANNEL_SET_FLAG(ob, sel, SELECT);
-
- if (ob->adt) {
- ACHANNEL_SET_FLAG(ob, sel, ADT_UI_SELECTED);
- }
+ Base *base = (Base *)ale->data;
+ Object *ob = base->object;
+
+ ACHANNEL_SET_FLAG(base, sel, SELECT);
+ ACHANNEL_SET_FLAG(ob, sel, SELECT);
+
+ if (ob->adt) {
+ ACHANNEL_SET_FLAG(ob, sel, ADT_UI_SELECTED);
}
#endif
break;
+ }
case ANIMTYPE_GROUP:
{
bActionGroup *agrp = (bActionGroup *)ale->data;
ACHANNEL_SET_FLAG(agrp, sel, AGRP_SELECTED);
agrp->flag &= ~AGRP_ACTIVE;
+ break;
}
- break;
case ANIMTYPE_FCURVE:
{
FCurve *fcu = (FCurve *)ale->data;
ACHANNEL_SET_FLAG(fcu, sel, FCURVE_SELECTED);
fcu->flag &= ~FCURVE_ACTIVE;
+ break;
}
- break;
case ANIMTYPE_SHAPEKEY:
{
KeyBlock *kb = (KeyBlock *)ale->data;
ACHANNEL_SET_FLAG(kb, sel, KEYBLOCK_SEL);
+ break;
}
- break;
case ANIMTYPE_NLATRACK:
{
NlaTrack *nlt = (NlaTrack *)ale->data;
ACHANNEL_SET_FLAG(nlt, sel, NLATRACK_SELECTED);
nlt->flag &= ~NLATRACK_ACTIVE;
+ break;
}
- break;
-
case ANIMTYPE_FILLACTD: /* Action Expander */
case ANIMTYPE_DSMAT: /* Datablock AnimData Expanders */
case ANIMTYPE_DSLAM:
@@ -354,24 +350,22 @@ void ANIM_deselect_anim_channels(bAnimContext *ac, void *data, short datatype, s
ACHANNEL_SET_FLAG(ale->adt, sel, ADT_UI_SELECTED);
ale->adt->flag &= ~ADT_UI_ACTIVE;
}
+ break;
}
- break;
-
case ANIMTYPE_GPLAYER:
{
bGPDlayer *gpl = (bGPDlayer *)ale->data;
ACHANNEL_SET_FLAG(gpl, sel, GP_LAYER_SELECT);
+ break;
}
- break;
-
case ANIMTYPE_MASKLAYER:
{
MaskLayer *masklay = (MaskLayer *)ale->data;
ACHANNEL_SET_FLAG(masklay, sel, MASK_LAYERFLAG_SELECT);
+ break;
}
- break;
}
}
@@ -801,23 +795,22 @@ static void rearrange_animchannel_add_to_islands(ListBase *islands, ListBase *sr
is_sel = SEL_AGRP(agrp);
is_untouchable = (agrp->flag & AGRP_TEMP) != 0;
+ break;
}
- break;
case ANIMTYPE_FCURVE:
{
FCurve *fcu = (FCurve *)channel;
is_sel = SEL_FCU(fcu);
+ break;
}
- break;
case ANIMTYPE_NLATRACK:
{
NlaTrack *nlt = (NlaTrack *)channel;
is_sel = SEL_NLT(nlt);
+ break;
}
- break;
-
default:
printf("rearrange_animchannel_add_to_islands(): don't know how to handle channels of type %d\n", type);
return;
@@ -1435,9 +1428,8 @@ static int animchannels_delete_exec(bContext *C, wmOperator *UNUSED(op))
/* try to free F-Curve */
ANIM_fcurve_delete_from_animdata(&ac, adt, fcu);
+ break;
}
- break;
-
case ANIMTYPE_GPLAYER:
{
/* Grease Pencil layer */
@@ -1447,9 +1439,8 @@ static int animchannels_delete_exec(bContext *C, wmOperator *UNUSED(op))
/* try to delete the layer's data and the layer itself */
free_gpencil_frames(gpl);
BLI_freelinkN(&gpd->layers, gpl);
+ break;
}
- break;
-
case ANIMTYPE_MASKLAYER:
{
/* Mask layer */
@@ -1458,8 +1449,8 @@ static int animchannels_delete_exec(bContext *C, wmOperator *UNUSED(op))
/* try to delete the layer's data and the layer itself */
BKE_mask_layer_remove(mask, masklay);
+ break;
}
- break;
}
}
@@ -2131,8 +2122,8 @@ static void borderselect_anim_channels(bAnimContext *ac, rcti *rect, short selec
/* always clear active flag after doing this */
agrp->flag &= ~AGRP_ACTIVE;
+ break;
}
- break;
case ANIMTYPE_NLATRACK:
{
NlaTrack *nlt = (NlaTrack *)ale->data;
@@ -2141,8 +2132,8 @@ static void borderselect_anim_channels(bAnimContext *ac, rcti *rect, short selec
* currently adds complications when doing other stuff
*/
ACHANNEL_SET_FLAG(nlt, selectmode, NLATRACK_SELECTED);
+ break;
}
- break;
}
}
@@ -2367,8 +2358,8 @@ static int mouse_anim_channels(bAnimContext *ac, float UNUSED(x), int channel_in
}
notifierFlags |= (ND_ANIMCHAN | NA_SELECTED);
+ break;
}
- break;
case ANIMTYPE_OBJECT:
{
bDopeSheet *ads = (bDopeSheet *)ac->data;
@@ -2406,9 +2397,8 @@ static int mouse_anim_channels(bAnimContext *ac, float UNUSED(x), int channel_in
adt->flag |= ADT_UI_ACTIVE;
notifierFlags |= (ND_ANIMCHAN | NA_SELECTED);
+ break;
}
- break;
-
case ANIMTYPE_FILLACTD: /* Action Expander */
case ANIMTYPE_DSMAT: /* Datablock AnimData Expanders */
case ANIMTYPE_DSLAM:
@@ -2445,9 +2435,8 @@ static int mouse_anim_channels(bAnimContext *ac, float UNUSED(x), int channel_in
}
notifierFlags |= (ND_ANIMCHAN | NA_SELECTED);
+ break;
}
- break;
-
case ANIMTYPE_GROUP:
{
bActionGroup *agrp = (bActionGroup *)ale->data;
@@ -2482,8 +2471,8 @@ static int mouse_anim_channels(bAnimContext *ac, float UNUSED(x), int channel_in
ANIM_set_active_channel(ac, ac->data, ac->datatype, filter, NULL, ANIMTYPE_GROUP);
notifierFlags |= (ND_ANIMCHAN | NA_SELECTED);
+ break;
}
- break;
case ANIMTYPE_FCURVE:
{
FCurve *fcu = (FCurve *)ale->data;
@@ -2504,8 +2493,8 @@ static int mouse_anim_channels(bAnimContext *ac, float UNUSED(x), int channel_in
ANIM_set_active_channel(ac, ac->data, ac->datatype, filter, fcu, ANIMTYPE_FCURVE);
notifierFlags |= (ND_ANIMCHAN | NA_SELECTED);
+ break;
}
- break;
case ANIMTYPE_SHAPEKEY:
{
KeyBlock *kb = (KeyBlock *)ale->data;
@@ -2522,8 +2511,8 @@ static int mouse_anim_channels(bAnimContext *ac, float UNUSED(x), int channel_in
}
notifierFlags |= (ND_ANIMCHAN | NA_SELECTED);
+ break;
}
- break;
case ANIMTYPE_GPDATABLOCK:
{
bGPdata *gpd = (bGPdata *)ale->data;
@@ -2534,8 +2523,8 @@ static int mouse_anim_channels(bAnimContext *ac, float UNUSED(x), int channel_in
gpd->flag ^= GP_DATA_EXPAND;
notifierFlags |= (ND_ANIMCHAN | NA_EDITED);
+ break;
}
- break;
case ANIMTYPE_GPLAYER:
{
bGPDlayer *gpl = (bGPDlayer *)ale->data;
@@ -2552,8 +2541,8 @@ static int mouse_anim_channels(bAnimContext *ac, float UNUSED(x), int channel_in
}
notifierFlags |= (ND_ANIMCHAN | NA_EDITED);
+ break;
}
- break;
case ANIMTYPE_MASKDATABLOCK:
{
Mask *mask = (Mask *)ale->data;
@@ -2564,8 +2553,8 @@ static int mouse_anim_channels(bAnimContext *ac, float UNUSED(x), int channel_in
mask->flag ^= MASK_ANIMF_EXPAND;
notifierFlags |= (ND_ANIMCHAN | NA_EDITED);
+ break;
}
- break;
case ANIMTYPE_MASKLAYER:
{
MaskLayer *masklay = (MaskLayer *)ale->data;
@@ -2582,8 +2571,8 @@ static int mouse_anim_channels(bAnimContext *ac, float UNUSED(x), int channel_in
}
notifierFlags |= (ND_ANIMCHAN | NA_EDITED);
+ break;
}
- break;
default:
if (G.debug & G_DEBUG)
printf("Error: Invalid channel type in mouse_anim_channels()\n");
diff --git a/source/blender/editors/animation/anim_draw.c b/source/blender/editors/animation/anim_draw.c
index 2e580a57a01..9e8800fd91e 100644
--- a/source/blender/editors/animation/anim_draw.c
+++ b/source/blender/editors/animation/anim_draw.c
@@ -126,17 +126,15 @@ void ANIM_timecode_string_from_frame(char *str, Scene *scene, int power, short t
if (hours) sprintf(str, "%s%02d:%02d:%02d", neg, hours, minutes, seconds);
else sprintf(str, "%s%02d:%02d", neg, minutes, seconds);
}
+ break;
}
- break;
-
case USER_TIMECODE_SMPTE_MSF:
{
/* reduced SMPTE format that always shows minutes, seconds, frames. Hours only shown as needed. */
if (hours) sprintf(str, "%s%02d:%02d:%02d:%02d", neg, hours, minutes, seconds, frames);
else sprintf(str, "%s%02d:%02d:%02d", neg, minutes, seconds, frames);
+ break;
}
- break;
-
case USER_TIMECODE_MILLISECONDS:
{
/* reduced SMPTE. Instead of frames, milliseconds are shown */
@@ -145,25 +143,23 @@ void ANIM_timecode_string_from_frame(char *str, Scene *scene, int power, short t
if (hours) sprintf(str, "%s%02d:%02d:%0*.*f", neg, hours, minutes, s_pad, ms_dp, cfra);
else sprintf(str, "%s%02d:%0*.*f", neg, minutes, s_pad, ms_dp, cfra);
+ break;
}
- break;
-
case USER_TIMECODE_SECONDS_ONLY:
{
/* only show the original seconds display */
/* round to whole numbers if power is >= 1 (i.e. scale is coarse) */
if (power <= 0) sprintf(str, "%.*f", 1 - power, raw_seconds);
else sprintf(str, "%d", (int)floor(raw_seconds + GLA_PIXEL_OFS));
+ break;
}
- break;
-
case USER_TIMECODE_SMPTE_FULL:
default:
{
/* full SMPTE format */
sprintf(str, "%s%02d:%02d:%02d:%02d", neg, hours, minutes, seconds, frames);
+ break;
}
- break;
}
}
else {
diff --git a/source/blender/editors/animation/anim_filter.c b/source/blender/editors/animation/anim_filter.c
index 41aeb92e182..91003674524 100644
--- a/source/blender/editors/animation/anim_filter.c
+++ b/source/blender/editors/animation/anim_filter.c
@@ -301,22 +301,20 @@ short ANIM_animdata_context_getdata(bAnimContext *ac)
{
SpaceAction *saction = (SpaceAction *)sl;
ok = actedit_get_context(ac, saction);
+ break;
}
- break;
-
case SPACE_IPO:
{
SpaceIpo *sipo = (SpaceIpo *)sl;
ok = graphedit_get_context(ac, sipo);
+ break;
}
- break;
-
case SPACE_NLA:
{
SpaceNla *snla = (SpaceNla *)sl;
ok = nlaedit_get_context(ac, snla);
+ break;
}
- break;
}
}
@@ -543,9 +541,8 @@ static bAnimListElem *make_new_animlistelem(void *data, short datatype, ID *owne
*/
ale->key_data = NULL;
ale->datatype = ALE_ALL;
+ break;
}
- break;
-
case ANIMTYPE_SCENE:
{
Scene *sce = (Scene *)data;
@@ -556,8 +553,8 @@ static bAnimListElem *make_new_animlistelem(void *data, short datatype, ID *owne
ale->datatype = ALE_SCE;
ale->adt = BKE_animdata_from_id(data);
+ break;
}
- break;
case ANIMTYPE_OBJECT:
{
Base *base = (Base *)data;
@@ -569,8 +566,8 @@ static bAnimListElem *make_new_animlistelem(void *data, short datatype, ID *owne
ale->datatype = ALE_OB;
ale->adt = BKE_animdata_from_id(&ob->id);
+ break;
}
- break;
case ANIMTYPE_FILLACTD:
{
bAction *act = (bAction *)data;
@@ -579,8 +576,8 @@ static bAnimListElem *make_new_animlistelem(void *data, short datatype, ID *owne
ale->key_data = act;
ale->datatype = ALE_ACT;
+ break;
}
- break;
case ANIMTYPE_FILLDRIVERS:
{
AnimData *adt = (AnimData *)data;
@@ -590,9 +587,8 @@ static bAnimListElem *make_new_animlistelem(void *data, short datatype, ID *owne
// XXX... drivers don't show summary for now
ale->key_data = NULL;
ale->datatype = ALE_NONE;
+ break;
}
- break;
-
case ANIMTYPE_DSMAT:
{
Material *ma = (Material *)data;
@@ -604,8 +600,8 @@ static bAnimListElem *make_new_animlistelem(void *data, short datatype, ID *owne
ale->datatype = ALE_ACT;
ale->adt = BKE_animdata_from_id(data);
+ break;
}
- break;
case ANIMTYPE_DSLAM:
{
Lamp *la = (Lamp *)data;
@@ -617,8 +613,8 @@ static bAnimListElem *make_new_animlistelem(void *data, short datatype, ID *owne
ale->datatype = ALE_ACT;
ale->adt = BKE_animdata_from_id(data);
+ break;
}
- break;
case ANIMTYPE_DSCAM:
{
Camera *ca = (Camera *)data;
@@ -630,8 +626,8 @@ static bAnimListElem *make_new_animlistelem(void *data, short datatype, ID *owne
ale->datatype = ALE_ACT;
ale->adt = BKE_animdata_from_id(data);
+ break;
}
- break;
case ANIMTYPE_DSCUR:
{
Curve *cu = (Curve *)data;
@@ -643,8 +639,8 @@ static bAnimListElem *make_new_animlistelem(void *data, short datatype, ID *owne
ale->datatype = ALE_ACT;
ale->adt = BKE_animdata_from_id(data);
+ break;
}
- break;
case ANIMTYPE_DSARM:
{
bArmature *arm = (bArmature *)data;
@@ -656,8 +652,8 @@ static bAnimListElem *make_new_animlistelem(void *data, short datatype, ID *owne
ale->datatype = ALE_ACT;
ale->adt = BKE_animdata_from_id(data);
+ break;
}
- break;
case ANIMTYPE_DSMESH:
{
Mesh *me = (Mesh *)data;
@@ -669,8 +665,8 @@ static bAnimListElem *make_new_animlistelem(void *data, short datatype, ID *owne
ale->datatype = ALE_ACT;
ale->adt = BKE_animdata_from_id(data);
+ break;
}
- break;
case ANIMTYPE_DSLAT:
{
Lattice *lt = (Lattice *)data;
@@ -682,8 +678,8 @@ static bAnimListElem *make_new_animlistelem(void *data, short datatype, ID *owne
ale->datatype = ALE_ACT;
ale->adt = BKE_animdata_from_id(data);
+ break;
}
- break;
case ANIMTYPE_DSSPK:
{
Speaker *spk = (Speaker *)data;
@@ -695,8 +691,8 @@ static bAnimListElem *make_new_animlistelem(void *data, short datatype, ID *owne
ale->datatype = ALE_ACT;
ale->adt = BKE_animdata_from_id(data);
+ break;
}
- break;
case ANIMTYPE_DSSKEY:
{
Key *key = (Key *)data;
@@ -708,8 +704,8 @@ static bAnimListElem *make_new_animlistelem(void *data, short datatype, ID *owne
ale->datatype = ALE_ACT;
ale->adt = BKE_animdata_from_id(data);
+ break;
}
- break;
case ANIMTYPE_DSWOR:
{
World *wo = (World *)data;
@@ -721,8 +717,8 @@ static bAnimListElem *make_new_animlistelem(void *data, short datatype, ID *owne
ale->datatype = ALE_ACT;
ale->adt = BKE_animdata_from_id(data);
+ break;
}
- break;
case ANIMTYPE_DSNTREE:
{
bNodeTree *ntree = (bNodeTree *)data;
@@ -734,8 +730,8 @@ static bAnimListElem *make_new_animlistelem(void *data, short datatype, ID *owne
ale->datatype = ALE_ACT;
ale->adt = BKE_animdata_from_id(data);
+ break;
}
- break;
case ANIMTYPE_DSLINESTYLE:
{
FreestyleLineStyle *linestyle = (FreestyleLineStyle *)data;
@@ -747,8 +743,8 @@ static bAnimListElem *make_new_animlistelem(void *data, short datatype, ID *owne
ale->datatype = ALE_ACT;
ale->adt = BKE_animdata_from_id(data);
+ break;
}
- break;
case ANIMTYPE_DSPART:
{
ParticleSettings *part = (ParticleSettings *)ale->data;
@@ -760,8 +756,8 @@ static bAnimListElem *make_new_animlistelem(void *data, short datatype, ID *owne
ale->datatype = ALE_ACT;
ale->adt = BKE_animdata_from_id(data);
+ break;
}
- break;
case ANIMTYPE_DSTEX:
{
Tex *tex = (Tex *)data;
@@ -773,9 +769,8 @@ static bAnimListElem *make_new_animlistelem(void *data, short datatype, ID *owne
ale->datatype = ALE_ACT;
ale->adt = BKE_animdata_from_id(data);
+ break;
}
- break;
-
case ANIMTYPE_GROUP:
{
bActionGroup *agrp = (bActionGroup *)data;
@@ -784,8 +779,8 @@ static bAnimListElem *make_new_animlistelem(void *data, short datatype, ID *owne
ale->key_data = NULL;
ale->datatype = ALE_GROUP;
+ break;
}
- break;
case ANIMTYPE_FCURVE:
{
FCurve *fcu = (FCurve *)data;
@@ -794,9 +789,8 @@ static bAnimListElem *make_new_animlistelem(void *data, short datatype, ID *owne
ale->key_data = fcu;
ale->datatype = ALE_FCURVE;
+ break;
}
- break;
-
case ANIMTYPE_SHAPEKEY:
{
KeyBlock *kb = (KeyBlock *)data;
@@ -824,9 +818,8 @@ static bAnimListElem *make_new_animlistelem(void *data, short datatype, ID *owne
}
ale->datatype = (ale->key_data) ? ALE_FCURVE : ALE_NONE;
}
+ break;
}
- break;
-
case ANIMTYPE_GPLAYER:
{
bGPDlayer *gpl = (bGPDlayer *)data;
@@ -835,9 +828,8 @@ static bAnimListElem *make_new_animlistelem(void *data, short datatype, ID *owne
ale->key_data = NULL;
ale->datatype = ALE_GPFRAME;
+ break;
}
- break;
-
case ANIMTYPE_MASKLAYER:
{
MaskLayer *masklay = (MaskLayer *)data;
@@ -846,9 +838,8 @@ static bAnimListElem *make_new_animlistelem(void *data, short datatype, ID *owne
ale->key_data = NULL;
ale->datatype = ALE_MASKLAY;
+ break;
}
- break;
-
case ANIMTYPE_NLATRACK:
{
NlaTrack *nlt = (NlaTrack *)data;
@@ -857,15 +848,15 @@ static bAnimListElem *make_new_animlistelem(void *data, short datatype, ID *owne
ale->key_data = &nlt->strips;
ale->datatype = ALE_NLASTRIP;
+ break;
}
- break;
case ANIMTYPE_NLAACTION:
{
/* nothing to include for now... nothing editable from NLA-perspective here */
ale->key_data = NULL;
ale->datatype = ALE_NONE;
+ break;
}
- break;
}
}
@@ -1654,20 +1645,20 @@ static size_t animdata_filter_ds_textures(bAnimContext *ac, ListBase *anim_data,
{
Material *ma = (Material *)owner_id;
mtex = (MTex **)(&ma->mtex);
+ break;
}
- break;
case ID_LA:
{
Lamp *la = (Lamp *)owner_id;
mtex = (MTex **)(&la->mtex);
+ break;
}
- break;
case ID_WO:
{
World *wo = (World *)owner_id;
mtex = (MTex **)(&wo->mtex);
+ break;
}
- break;
default:
{
/* invalid/unsupported option */
@@ -1812,8 +1803,8 @@ static void animfilter_modifier_idpoin_cb(void *afm_ptr, Object *ob, ID **idpoin
if (!(afm->ads->filterflag & ADS_FILTER_NOTEX)) {
afm->items += animdata_filter_ds_texture(afm->ac, &afm->tmp_data, afm->ads, tex, owner_id, afm->filter_mode);
}
+ break;
}
- break;
/* TODO: images? */
}
@@ -1920,8 +1911,8 @@ static size_t animdata_filter_ds_obdata(bAnimContext *ac, ListBase *anim_data, b
type = ANIMTYPE_DSCAM;
expanded = FILTER_CAM_OBJD(ca);
+ break;
}
- break;
case OB_LAMP: /* ---------- Lamp ----------- */
{
Lamp *la = (Lamp *)ob->data;
@@ -1931,8 +1922,8 @@ static size_t animdata_filter_ds_obdata(bAnimContext *ac, ListBase *anim_data, b
type = ANIMTYPE_DSLAM;
expanded = FILTER_LAM_OBJD(la);
+ break;
}
- break;
case OB_CURVE: /* ------- Curve ---------- */
case OB_SURF: /* ------- Nurbs Surface ---------- */
case OB_FONT: /* ------- Text Curve ---------- */
@@ -1944,8 +1935,8 @@ static size_t animdata_filter_ds_obdata(bAnimContext *ac, ListBase *anim_data, b
type = ANIMTYPE_DSCUR;
expanded = FILTER_CUR_OBJD(cu);
+ break;
}
- break;
case OB_MBALL: /* ------- MetaBall ---------- */
{
MetaBall *mb = (MetaBall *)ob->data;
@@ -1955,8 +1946,8 @@ static size_t animdata_filter_ds_obdata(bAnimContext *ac, ListBase *anim_data, b
type = ANIMTYPE_DSMBALL;
expanded = FILTER_MBALL_OBJD(mb);
+ break;
}
- break;
case OB_ARMATURE: /* ------- Armature ---------- */
{
bArmature *arm = (bArmature *)ob->data;
@@ -1966,8 +1957,8 @@ static size_t animdata_filter_ds_obdata(bAnimContext *ac, ListBase *anim_data, b
type = ANIMTYPE_DSARM;
expanded = FILTER_ARM_OBJD(arm);
+ break;
}
- break;
case OB_MESH: /* ------- Mesh ---------- */
{
Mesh *me = (Mesh *)ob->data;
@@ -1977,8 +1968,8 @@ static size_t animdata_filter_ds_obdata(bAnimContext *ac, ListBase *anim_data, b
type = ANIMTYPE_DSMESH;
expanded = FILTER_MESH_OBJD(me);
+ break;
}
- break;
case OB_LATTICE: /* ---- Lattice ---- */
{
Lattice *lt = (Lattice *)ob->data;
@@ -1988,16 +1979,16 @@ static size_t animdata_filter_ds_obdata(bAnimContext *ac, ListBase *anim_data, b
type = ANIMTYPE_DSLAT;
expanded = FILTER_LATTICE_OBJD(lt);
+ break;
}
- break;
case OB_SPEAKER: /* ---------- Speaker ----------- */
{
Speaker *spk = (Speaker *)ob->data;
type = ANIMTYPE_DSSPK;
expanded = FILTER_SPK_OBJD(spk);
+ break;
}
- break;
}
/* add object data animation channels */
@@ -2020,8 +2011,8 @@ static size_t animdata_filter_ds_obdata(bAnimContext *ac, ListBase *anim_data, b
/* textures */
if (!(ads->filterflag & ADS_FILTER_NOTEX))
tmp_items += animdata_filter_ds_textures(ac, &tmp_data, ads, &la->id, filter_mode);
+ break;
}
- break;
}
}
END_ANIMFILTER_SUBCHANNELS;
@@ -2603,58 +2594,52 @@ size_t ANIM_animdata_filter(bAnimContext *ac, ListBase *anim_data, int filter_mo
/* the check for the DopeSheet summary is included here since the summary works here too */
if (animdata_filter_dopesheet_summary(ac, anim_data, filter_mode, &items))
items += animfilter_action(ac, anim_data, ads, data, filter_mode, (ID *)obact);
+ break;
}
- break;
-
case ANIMCONT_SHAPEKEY: /* 'ShapeKey Editor' */
{
/* the check for the DopeSheet summary is included here since the summary works here too */
if (animdata_filter_dopesheet_summary(ac, anim_data, filter_mode, &items))
items = animdata_filter_shapekey(ac, anim_data, data, filter_mode);
+ break;
}
- break;
-
case ANIMCONT_GPENCIL:
{
if (animdata_filter_dopesheet_summary(ac, anim_data, filter_mode, &items))
items = animdata_filter_gpencil(anim_data, data, filter_mode);
+ break;
}
- break;
-
case ANIMCONT_MASK:
{
if (animdata_filter_dopesheet_summary(ac, anim_data, filter_mode, &items))
items = animdata_filter_mask(anim_data, data, filter_mode);
+ break;
}
- break;
-
case ANIMCONT_DOPESHEET: /* 'DopeSheet Editor' */
{
/* the DopeSheet editor is the primary place where the DopeSheet summaries are useful */
if (animdata_filter_dopesheet_summary(ac, anim_data, filter_mode, &items))
items += animdata_filter_dopesheet(ac, anim_data, data, filter_mode);
+ break;
}
- break;
-
case ANIMCONT_FCURVES: /* Graph Editor -> F-Curves/Animation Editing */
case ANIMCONT_DRIVERS: /* Graph Editor -> Drivers Editing */
case ANIMCONT_NLA: /* NLA Editor */
{
/* all of these editors use the basic DopeSheet data for filtering options, but don't have all the same features */
items = animdata_filter_dopesheet(ac, anim_data, data, filter_mode);
+ break;
}
- break;
-
case ANIMCONT_CHANNEL: /* animation channel */
{
bDopeSheet *ads = ac->ads;
/* based on the channel type, filter relevant data for this */
items = animdata_filter_animchan(ac, anim_data, ads, data, filter_mode);
+ break;
}
- break;
}
-
+
/* remove any 'weedy' entries */
items = animdata_filter_remove_invalid(anim_data);
diff --git a/source/blender/editors/animation/drivers.c b/source/blender/editors/animation/drivers.c
index 8c49bee3058..df93da8b7c1 100644
--- a/source/blender/editors/animation/drivers.c
+++ b/source/blender/editors/animation/drivers.c
@@ -449,8 +449,8 @@ static char *get_driver_path_hack(bContext *C, PointerRNA *ptr, PropertyRNA *pro
/* free old one */
MEM_freeN(basepath);
}
+ break;
}
- break;
}
/* fix RNA pointer, as we've now changed the ID root by changing the paths */
diff --git a/source/blender/editors/animation/fmodifier_ui.c b/source/blender/editors/animation/fmodifier_ui.c
index adea3bcdc31..5ceca478b47 100644
--- a/source/blender/editors/animation/fmodifier_ui.c
+++ b/source/blender/editors/animation/fmodifier_ui.c
@@ -242,8 +242,8 @@ static void draw_modifier__generator(uiLayout *layout, ID *id, FModifier *fcm, s
else
uiDefBut(block, LABEL, 1, ") ", 0, 0, 2 * UI_UNIT_X, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, "");
}
+ break;
}
- break;
}
}
diff --git a/source/blender/editors/animation/keyframes_draw.c b/source/blender/editors/animation/keyframes_draw.c
index d9d2180e184..4e6cc53f962 100644
--- a/source/blender/editors/animation/keyframes_draw.c
+++ b/source/blender/editors/animation/keyframes_draw.c
@@ -601,30 +601,27 @@ void draw_keyframe_shape(float x, float y, float xscale, float hsize, short sel,
{
if (sel) glColor4f(0.33f, 0.75f, 0.93f, alpha);
else glColor4f(0.70f, 0.86f, 0.91f, alpha);
+ break;
}
- break;
-
case BEZT_KEYTYPE_EXTREME: /* redish frames for now */
{
if (sel) glColor4f(0.95f, 0.5f, 0.5f, alpha);
else glColor4f(0.91f, 0.70f, 0.80f, alpha);
+ break;
}
- break;
-
case BEZT_KEYTYPE_JITTER: /* greenish frames for now? */
{
if (sel) glColor4f(0.38f, 0.75f, 0.26f, alpha);
else glColor4f(0.58f, 0.90f, 0.46f, alpha);
+ break;
}
- break;
-
case BEZT_KEYTYPE_KEYFRAME: /* traditional yellowish frames for now */
default:
{
if (sel) UI_ThemeColorShadeAlpha(TH_STRIP_SELECT, 50, -255 * (1.0f - alpha));
else glColor4f(0.91f, 0.91f, 0.91f, alpha);
+ break;
}
- break;
}
glCallList(displist2);
diff --git a/source/blender/editors/animation/keyframing.c b/source/blender/editors/animation/keyframing.c
index 1638e4ce629..40273101ddf 100644
--- a/source/blender/editors/animation/keyframing.c
+++ b/source/blender/editors/animation/keyframing.c
@@ -1973,8 +1973,8 @@ short id_frame_has_keyframe(ID *id, float frame, short filter)
/* only check keyframes in active action */
if (adt)
return action_frame_has_keyframe(adt->action, frame, filter);
+ break;
}
- break;
}
diff --git a/source/blender/editors/animation/keyingsets.c b/source/blender/editors/animation/keyingsets.c
index 07825f59c2f..ebe8dccc356 100644
--- a/source/blender/editors/animation/keyingsets.c
+++ b/source/blender/editors/animation/keyingsets.c
@@ -1004,8 +1004,8 @@ int ANIM_apply_keyingset(bContext *C, ListBase *dsources, bAction *act, KeyingSe
// XXX: only object transforms?
DAG_id_tag_update(&ob->id, OB_RECALC_OB | OB_RECALC_DATA | OB_RECALC_TIME);
+ break;
}
- break;
}
/* send notifiers for updates (this doesn't require context to work!) */
diff --git a/source/blender/editors/armature/armature_intern.h b/source/blender/editors/armature/armature_intern.h
index bfebc68ea46..e58d8fd2380 100644
--- a/source/blender/editors/armature/armature_intern.h
+++ b/source/blender/editors/armature/armature_intern.h
@@ -63,6 +63,8 @@ void ARMATURE_OT_parent_clear(struct wmOperatorType *ot);
void ARMATURE_OT_select_all(struct wmOperatorType *ot);
void ARMATURE_OT_select_inverse(struct wmOperatorType *ot);
+void ARMATURE_OT_select_more(struct wmOperatorType *ot);
+void ARMATURE_OT_select_less(struct wmOperatorType *ot);
void ARMATURE_OT_select_hierarchy(struct wmOperatorType *ot);
void ARMATURE_OT_select_linked(struct wmOperatorType *ot);
void ARMATURE_OT_select_similar(struct wmOperatorType *ot);
diff --git a/source/blender/editors/armature/armature_ops.c b/source/blender/editors/armature/armature_ops.c
index 568178802bd..0090522d1e1 100644
--- a/source/blender/editors/armature/armature_ops.c
+++ b/source/blender/editors/armature/armature_ops.c
@@ -59,6 +59,8 @@ void ED_operatortypes_armature(void)
WM_operatortype_append(ARMATURE_OT_select_all);
WM_operatortype_append(ARMATURE_OT_select_inverse);
+ WM_operatortype_append(ARMATURE_OT_select_more);
+ WM_operatortype_append(ARMATURE_OT_select_less);
WM_operatortype_append(ARMATURE_OT_select_hierarchy);
WM_operatortype_append(ARMATURE_OT_select_linked);
WM_operatortype_append(ARMATURE_OT_select_similar);
@@ -258,6 +260,9 @@ void ED_keymap_armature(wmKeyConfig *keyconf)
RNA_enum_set(kmi->ptr, "direction", BONE_SELECT_CHILD);
RNA_boolean_set(kmi->ptr, "extend", TRUE);
+ WM_keymap_add_item(keymap, "ARMATURE_OT_select_more", PADPLUSKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "ARMATURE_OT_select_less", PADMINUS, KM_PRESS, KM_CTRL, 0);
+
WM_keymap_add_item(keymap, "ARMATURE_OT_select_similar", GKEY, KM_PRESS, KM_SHIFT, 0);
WM_keymap_add_item(keymap, "ARMATURE_OT_select_linked", LKEY, KM_PRESS, 0, 0);
diff --git a/source/blender/editors/armature/armature_select.c b/source/blender/editors/armature/armature_select.c
index 53d561c7736..d05d309b201 100644
--- a/source/blender/editors/armature/armature_select.c
+++ b/source/blender/editors/armature/armature_select.c
@@ -665,6 +665,145 @@ void ARMATURE_OT_select_all(wmOperatorType *ot)
WM_operator_properties_select_all(ot);
}
+/**************** Select more/less **************/
+
+#define EBONE_PREV_FLAG_GET(ebone) ((void)0, (GET_INT_FROM_POINTER(ebone->temp)))
+#define EBONE_PREV_FLAG_SET(ebone, val) (ebone->temp = SET_INT_IN_POINTER(val))
+
+static void armature_select_more(bArmature *arm, EditBone *ebone)
+{
+ if ((EBONE_PREV_FLAG_GET(ebone) & (BONE_ROOTSEL | BONE_TIPSEL)) != 0) {
+ if (EBONE_SELECTABLE(arm, ebone)) {
+ ED_armature_ebone_select_set(ebone, true);
+ }
+ }
+
+ if (ebone->parent && (ebone->flag & BONE_CONNECTED)) {
+ /* to parent */
+ if ((EBONE_PREV_FLAG_GET(ebone) & BONE_ROOTSEL) != 0) {
+ if (EBONE_SELECTABLE(arm, ebone->parent)) {
+ ED_armature_ebone_selectflag_enable(ebone->parent, (BONE_SELECTED | BONE_ROOTSEL | BONE_TIPSEL));
+ }
+ }
+
+ /* from parent (difference from select less) */
+ if ((EBONE_PREV_FLAG_GET(ebone->parent) & BONE_TIPSEL) != 0) {
+ if (EBONE_SELECTABLE(arm, ebone)) {
+ ED_armature_ebone_selectflag_enable(ebone, (BONE_SELECTED | BONE_ROOTSEL));
+ }
+ }
+ }
+}
+
+static void armature_select_less(bArmature *UNUSED(arm), EditBone *ebone)
+{
+ if ((EBONE_PREV_FLAG_GET(ebone) & (BONE_ROOTSEL | BONE_TIPSEL)) != (BONE_ROOTSEL | BONE_TIPSEL)) {
+ ED_armature_ebone_select_set(ebone, false);
+ }
+
+ if (ebone->parent && (ebone->flag & BONE_CONNECTED)) {
+ /* to parent */
+ if ((EBONE_PREV_FLAG_GET(ebone) & BONE_SELECTED) == 0) {
+ ED_armature_ebone_selectflag_disable(ebone->parent, (BONE_SELECTED | BONE_TIPSEL));
+ }
+
+ /* from parent (difference from select more) */
+ if ((EBONE_PREV_FLAG_GET(ebone->parent) & BONE_SELECTED) == 0) {
+ ED_armature_ebone_selectflag_disable(ebone, (BONE_SELECTED | BONE_ROOTSEL));
+ }
+ }
+}
+
+static void armature_select_more_less(Object* ob, bool more)
+{
+ bArmature* arm = (bArmature *)ob->data;
+ EditBone* ebone;
+
+ /* XXX, eventually we shouldn't need this - campbell */
+ ED_armature_sync_selection(arm->edbo);
+
+ /* count bones & store selection state */
+ for (ebone = arm->edbo->first; ebone; ebone = ebone->next) {
+ EBONE_PREV_FLAG_SET(ebone, ED_armature_ebone_selectflag_get(ebone));
+ }
+
+ /* do selection */
+ for (ebone = arm->edbo->first; ebone; ebone = ebone->next) {
+ if (EBONE_VISIBLE(arm, ebone)) {
+ if (more) {
+ armature_select_more(arm, ebone);
+ }
+ else {
+ armature_select_less(arm, ebone);
+ }
+ }
+ }
+
+ for (ebone = arm->edbo->first; ebone; ebone = ebone->next) {
+ if (EBONE_VISIBLE(arm, ebone)) {
+ if (more == false) {
+ if (ebone->flag & BONE_SELECTED) {
+ ED_armature_ebone_select_set(ebone, true);
+ }
+ }
+ }
+ ebone->temp = NULL;
+ }
+
+ ED_armature_sync_selection(arm->edbo);
+}
+
+#undef EBONE_PREV_FLAG_GET
+#undef EBONE_PREV_FLAG_SET
+
+static int armature_de_select_more_exec(bContext *C, wmOperator *UNUSED(op))
+{
+ Object *obedit = CTX_data_edit_object(C);
+ armature_select_more_less(obedit, true);
+ WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, obedit);
+
+ return OPERATOR_FINISHED;
+}
+
+void ARMATURE_OT_select_more(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name = "Select More";
+ ot->idname = "ARMATURE_OT_select_more";
+ ot->description = "Select those bones connected to the initial selection";
+
+ /* api callbacks */
+ ot->exec = armature_de_select_more_exec;
+ ot->poll = ED_operator_editarmature;
+
+ /* flags */
+ ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
+}
+
+static int armature_de_select_less_exec(bContext *C, wmOperator *UNUSED(op))
+{
+ Object *obedit = CTX_data_edit_object(C);
+ armature_select_more_less(obedit, false);
+ WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, obedit);
+
+ return OPERATOR_FINISHED;
+}
+
+void ARMATURE_OT_select_less(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name = "Select Less";
+ ot->idname = "ARMATURE_OT_select_less";
+ ot->description = "Deselect those bones at the boundary of each selection region";
+
+ /* api callbacks */
+ ot->exec = armature_de_select_less_exec;
+ ot->poll = ED_operator_editarmature;
+
+ /* flags */
+ ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
+}
+
enum {
SIMEDBONE_LENGTH = 1,
SIMEDBONE_DIRECTION,
diff --git a/source/blender/editors/armature/pose_slide.c b/source/blender/editors/armature/pose_slide.c
index 0ff0e0d498c..ec1662c7fa6 100644
--- a/source/blender/editors/armature/pose_slide.c
+++ b/source/blender/editors/armature/pose_slide.c
@@ -238,9 +238,8 @@ static void pose_slide_apply_val(tPoseSlideOp *pso, FCurve *fcu, float *val)
while (iters-- > 0) {
(*val) = (-((sVal * w2) + (eVal * w1)) + ((*val) * 6.0f) ) / 5.0f;
}
+ break;
}
- break;
-
case POSESLIDE_RELAX: /* make the current pose more like its surrounding ones */
{
/* perform a weighted average here, favoring the middle pose
@@ -252,16 +251,15 @@ static void pose_slide_apply_val(tPoseSlideOp *pso, FCurve *fcu, float *val)
while (iters-- > 0) {
(*val) = ( ((sVal * w2) + (eVal * w1)) + ((*val) * 5.0f) ) / 6.0f;
}
+ break;
}
- break;
-
case POSESLIDE_BREAKDOWN: /* make the current pose slide around between the endpoints */
{
/* perform simple linear interpolation - coefficient for start must come from pso->percentage... */
/* TODO: make this use some kind of spline interpolation instead? */
(*val) = ((sVal * w2) + (eVal * w1));
+ break;
}
- break;
}
}
@@ -327,8 +325,8 @@ static void pose_slide_apply_props(tPoseSlideOp *pso, tPChanFCurveLink *pfl)
float tval = RNA_property_float_get(&ptr, prop);
pose_slide_apply_val(pso, fcu, &tval);
RNA_property_float_set(&ptr, prop, tval);
+ break;
}
- break;
case PROP_BOOLEAN:
case PROP_ENUM:
case PROP_INT:
@@ -336,8 +334,8 @@ static void pose_slide_apply_props(tPoseSlideOp *pso, tPChanFCurveLink *pfl)
float tval = (float)RNA_property_int_get(&ptr, prop);
pose_slide_apply_val(pso, fcu, &tval);
RNA_property_int_set(&ptr, prop, (int)tval);
+ break;
}
- break;
default:
/* cannot handle */
//printf("Cannot Pose Slide non-numerical property\n");
@@ -672,9 +670,8 @@ static int pose_slide_modal(bContext *C, wmOperator *op, const wmEvent *event)
/* apply... */
pose_slide_apply(C, pso);
+ break;
}
- break;
-
default: /* unhandled event (maybe it was some view manip? */
/* allow to pass through */
return OPERATOR_RUNNING_MODAL | OPERATOR_PASS_THROUGH;
diff --git a/source/blender/editors/gpencil/drawgpencil.c b/source/blender/editors/gpencil/drawgpencil.c
index 50c348a015f..bb0a753d9c6 100644
--- a/source/blender/editors/gpencil/drawgpencil.c
+++ b/source/blender/editors/gpencil/drawgpencil.c
@@ -706,8 +706,8 @@ void draw_gpencil_2dimage(const bContext *C)
wmOrtho2(ar->v2d.cur.xmin, ar->v2d.cur.xmax, ar->v2d.cur.ymin, ar->v2d.cur.ymax);
dflag |= GP_DRAWDATA_ONLYV2D | GP_DRAWDATA_IEDITHACK;
+ break;
}
- break;
case SPACE_SEQ: /* sequence */
{
/* just draw using standard scaling (settings here are currently ignored anyways) */
@@ -720,8 +720,8 @@ void draw_gpencil_2dimage(const bContext *C)
* and everything moved to standard View2d
*/
dflag |= GP_DRAWDATA_ONLYV2D;
+ break;
}
- break;
default: /* for spacetype not yet handled */
offsx = 0;
offsy = 0;
diff --git a/source/blender/editors/gpencil/gpencil_edit.c b/source/blender/editors/gpencil/gpencil_edit.c
index 2d24b34e60b..99157b074fd 100644
--- a/source/blender/editors/gpencil/gpencil_edit.c
+++ b/source/blender/editors/gpencil/gpencil_edit.c
@@ -112,9 +112,8 @@ bGPdata **gpencil_data_get_pointers(const bContext *C, PointerRNA *ptr)
if (ptr) RNA_id_pointer_create(&ob->id, ptr);
return &ob->gpd;
}
+ break;
}
- break;
-
case SPACE_NODE: /* Nodes Editor */
{
SpaceNode *snode = (SpaceNode *)CTX_wm_space_data(C);
@@ -125,13 +124,10 @@ bGPdata **gpencil_data_get_pointers(const bContext *C, PointerRNA *ptr)
if (ptr) RNA_id_pointer_create(&snode->nodetree->id, ptr);
return &snode->nodetree->gpd;
}
- else {
- /* even when there is no node-tree, don't allow this to flow to scene */
- return NULL;
- }
+
+ /* even when there is no node-tree, don't allow this to flow to scene */
+ return NULL;
}
- break;
-
case SPACE_SEQ: /* Sequencer */
{
SpaceSeq *sseq = (SpaceSeq *)CTX_wm_space_data(C);
@@ -141,8 +137,6 @@ bGPdata **gpencil_data_get_pointers(const bContext *C, PointerRNA *ptr)
if (ptr) RNA_pointer_create(screen_id, &RNA_SpaceSequenceEditor, sseq, ptr);
return &sseq->gpd;
}
- break;
-
case SPACE_IMAGE: /* Image/UV Editor */
{
SpaceImage *sima = (SpaceImage *)CTX_wm_space_data(C);
@@ -152,8 +146,6 @@ bGPdata **gpencil_data_get_pointers(const bContext *C, PointerRNA *ptr)
if (ptr) RNA_pointer_create(screen_id, &RNA_SpaceImageEditor, sima, ptr);
return &sima->gpd;
}
- break;
-
case SPACE_CLIP: /* Nodes Editor */
{
SpaceClip *sc = (SpaceClip *)CTX_wm_space_data(C);
@@ -178,9 +170,8 @@ bGPdata **gpencil_data_get_pointers(const bContext *C, PointerRNA *ptr)
return &clip->gpd;
}
}
+ break;
}
- break;
-
default: /* unsupported space */
return NULL;
}
diff --git a/source/blender/editors/gpencil/gpencil_paint.c b/source/blender/editors/gpencil/gpencil_paint.c
index dc5e12df766..4c5727f16ed 100644
--- a/source/blender/editors/gpencil/gpencil_paint.c
+++ b/source/blender/editors/gpencil/gpencil_paint.c
@@ -1084,9 +1084,8 @@ static int gp_session_initdata(bContext *C, tGPsdata *p)
printf("Error: 3D-View active region doesn't have any region data, so cannot be drawable\n");
return 0;
}
+ break;
}
- break;
-
case SPACE_NODE:
{
/* SpaceNode *snode = curarea->spacedata.first; */
@@ -1095,8 +1094,8 @@ static int gp_session_initdata(bContext *C, tGPsdata *p)
p->sa = curarea;
p->ar = ar;
p->v2d = &ar->v2d;
+ break;
}
- break;
case SPACE_SEQ:
{
SpaceSeq *sseq = curarea->spacedata.first;
@@ -1113,8 +1112,8 @@ static int gp_session_initdata(bContext *C, tGPsdata *p)
printf("Error: In active view (sequencer), active mode doesn't support Grease Pencil\n");
return 0;
}
+ break;
}
- break;
case SPACE_IMAGE:
{
/* SpaceImage *sima = curarea->spacedata.first; */
@@ -1123,8 +1122,8 @@ static int gp_session_initdata(bContext *C, tGPsdata *p)
p->sa = curarea;
p->ar = ar;
p->v2d = &ar->v2d;
+ break;
}
- break;
case SPACE_CLIP:
{
SpaceClip *sc = curarea->spacedata.first;
@@ -1151,9 +1150,8 @@ static int gp_session_initdata(bContext *C, tGPsdata *p)
p->imat[3][0] -= marker->pos[0];
p->imat[3][1] -= marker->pos[1];
}
+ break;
}
- break;
-
/* unsupported views */
default:
{
@@ -1162,7 +1160,6 @@ static int gp_session_initdata(bContext *C, tGPsdata *p)
printf("Error: Active view not appropriate for Grease Pencil drawing\n");
return 0;
}
- break;
}
/* get gp-data */
@@ -1295,21 +1292,18 @@ static void gp_paint_initstroke(tGPsdata *p, short paintmode)
case SPACE_VIEW3D:
{
p->gpd->sbuffer_sflag |= GP_STROKE_3DSPACE;
+ break;
}
- break;
-
case SPACE_NODE:
{
p->gpd->sbuffer_sflag |= GP_STROKE_2DSPACE;
+ break;
}
- break;
-
case SPACE_SEQ:
{
p->gpd->sbuffer_sflag |= GP_STROKE_2DSPACE;
+ break;
}
- break;
-
case SPACE_IMAGE:
{
SpaceImage *sima = (SpaceImage *)p->sa->spacedata.first;
@@ -1324,16 +1318,16 @@ static void gp_paint_initstroke(tGPsdata *p, short paintmode)
p->gpd->sbuffer_sflag &= ~GP_STROKE_2DSPACE;
p->gpd->flag &= ~GP_DATA_VIEWALIGN;
}
- else
+ else {
p->gpd->sbuffer_sflag |= GP_STROKE_2DSPACE;
+ }
+ break;
}
- break;
-
case SPACE_CLIP:
{
p->gpd->sbuffer_sflag |= GP_STROKE_2DSPACE;
+ break;
}
- break;
}
}
}
diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c
index 097f042d6c9..b59e06cbc0e 100644
--- a/source/blender/editors/interface/interface.c
+++ b/source/blender/editors/interface/interface.c
@@ -962,10 +962,10 @@ static bool ui_but_event_property_operator_string(const bContext *C, uiBut *but,
data_path = BLI_sprintfN("scene.%s", path);
MEM_freeN(path);
}
- else {
+ /*else {
printf("ERROR in %s(): Couldn't get path for scene property - %s\n",
__func__, RNA_property_identifier(but->rnaprop));
- }
+ }*/
}
}
else {
diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c
index 9b736eb1bf4..18c6d969222 100644
--- a/source/blender/editors/interface/interface_widgets.c
+++ b/source/blender/editors/interface/interface_widgets.c
@@ -96,8 +96,7 @@ typedef struct uiWidgetBase {
float inner_v[WIDGET_SIZE_MAX][2];
float inner_uv[WIDGET_SIZE_MAX][2];
- short inner, outline, emboss; /* set on/off */
- short shadedir;
+ bool inner, outline, emboss, shadedir;
uiWidgetTrias tria1;
uiWidgetTrias tria2;
@@ -209,9 +208,9 @@ void ui_draw_anti_tria(float x1, float y1, float x2, float y2, float x3, float y
/* for each AA step */
for (j = 0; j < WIDGET_AA_JITTER; j++) {
- glTranslatef(1.0f * jit[j][0], 1.0f * jit[j][1], 0.0f);
+ glTranslatef(jit[j][0], jit[j][1], 0.0f);
glDrawArrays(GL_TRIANGLES, 0, 3);
- glTranslatef(-1.0f * jit[j][0], -1.0f * jit[j][1], 0.0f);
+ glTranslatef(-jit[j][0], -jit[j][1], 0.0f);
}
glDisableClientState(GL_VERTEX_ARRAY);
@@ -232,9 +231,9 @@ void ui_draw_anti_roundbox(int mode, float minx, float miny, float maxx, float m
glColor4fv(color);
for (j = 0; j < WIDGET_AA_JITTER; j++) {
- glTranslatef(1.0f * jit[j][0], 1.0f * jit[j][1], 0.0f);
+ glTranslatef(jit[j][0], jit[j][1], 0.0f);
uiDrawBox(mode, minx, miny, maxx, maxy, rad);
- glTranslatef(-1.0f * jit[j][0], -1.0f * jit[j][1], 0.0f);
+ glTranslatef(-jit[j][0], -jit[j][1], 0.0f);
}
glDisable(GL_BLEND);
@@ -778,7 +777,7 @@ static void widgetbase_draw(uiWidgetBase *wtb, uiWidgetColors *wcol)
glEnableClientState(GL_VERTEX_ARRAY);
for (j = 0; j < WIDGET_AA_JITTER; j++) {
- glTranslatef(1.0f * jit[j][0], 1.0f * jit[j][1], 0.0f);
+ glTranslatef(jit[j][0], jit[j][1], 0.0f);
/* outline */
glColor4ubv(tcol);
@@ -794,7 +793,7 @@ static void widgetbase_draw(uiWidgetBase *wtb, uiWidgetColors *wcol)
glDrawArrays(GL_QUAD_STRIP, 0, wtb->halfwayvert * 2);
}
- glTranslatef(-1.0f * jit[j][0], -1.0f * jit[j][1], 0.0f);
+ glTranslatef(-jit[j][0], -jit[j][1], 0.0f);
}
glDisableClientState(GL_VERTEX_ARRAY);
@@ -808,7 +807,7 @@ static void widgetbase_draw(uiWidgetBase *wtb, uiWidgetColors *wcol)
(unsigned char)((float)wcol->item[3] / WIDGET_AA_JITTER)};
/* for each AA step */
for (j = 0; j < WIDGET_AA_JITTER; j++) {
- glTranslatef(1.0f * jit[j][0], 1.0f * jit[j][1], 0.0f);
+ glTranslatef(jit[j][0], jit[j][1], 0.0f);
if (wtb->tria1.tot) {
glColor4ubv(tcol);
@@ -819,7 +818,7 @@ static void widgetbase_draw(uiWidgetBase *wtb, uiWidgetColors *wcol)
widget_trias_draw(&wtb->tria2);
}
- glTranslatef(-1.0f * jit[j][0], -1.0f * jit[j][1], 0.0f);
+ glTranslatef(-jit[j][0], -jit[j][1], 0.0f);
}
}
@@ -2365,7 +2364,7 @@ void uiWidgetScrollDraw(uiWidgetColors *wcol, const rcti *rect, const rcti *slid
uiWidgetBase wtb;
int horizontal;
float rad;
- short outline = 0;
+ bool outline = false;
widget_init(&wtb);
@@ -2409,8 +2408,9 @@ void uiWidgetScrollDraw(uiWidgetColors *wcol, const rcti *rect, const rcti *slid
wtb.emboss = 0; /* only emboss once */
/* exception for progress bar */
- if (state & UI_SCROLL_NO_OUTLINE)
- SWAP(short, outline, wtb.outline);
+ if (state & UI_SCROLL_NO_OUTLINE) {
+ SWAP(bool, outline, wtb.outline);
+ }
round_box_edges(&wtb, UI_CNR_ALL, slider, rad);
@@ -2431,8 +2431,9 @@ void uiWidgetScrollDraw(uiWidgetColors *wcol, const rcti *rect, const rcti *slid
}
widgetbase_draw(&wtb, wcol);
- if (state & UI_SCROLL_NO_OUTLINE)
- SWAP(short, outline, wtb.outline);
+ if (state & UI_SCROLL_NO_OUTLINE) {
+ SWAP(bool, outline, wtb.outline);
+ }
}
}
diff --git a/source/blender/editors/interface/view2d.c b/source/blender/editors/interface/view2d.c
index fe5b129e938..f656d22fc64 100644
--- a/source/blender/editors/interface/view2d.c
+++ b/source/blender/editors/interface/view2d.c
@@ -209,9 +209,8 @@ void UI_view2d_region_reinit(View2D *v2d, short type, int winx, int winy)
}
/* scrollers - should we have these by default? */
/* XXX for now, we don't override this, or set it either! */
+ break;
}
- break;
-
/* 'list/channel view' - zoom, aspect ratio, and alignment restrictions are set here */
case V2D_COMMONVIEW_LIST:
{
@@ -225,9 +224,8 @@ void UI_view2d_region_reinit(View2D *v2d, short type, int winx, int winy)
tot_changed = do_init;
/* scroller settings are currently not set here... that is left for regions... */
+ break;
}
- break;
-
/* 'stack view' - practically the same as list/channel view, except is located in the pos y half instead.
* zoom, aspect ratio, and alignment restrictions are set here */
case V2D_COMMONVIEW_STACK:
@@ -242,9 +240,8 @@ void UI_view2d_region_reinit(View2D *v2d, short type, int winx, int winy)
tot_changed = do_init;
/* scroller settings are currently not set here... that is left for regions... */
+ break;
}
- break;
-
/* 'header' regions - zoom, aspect ratio, alignment, and panning restrictions are set here */
case V2D_COMMONVIEW_HEADER:
{
@@ -272,10 +269,8 @@ void UI_view2d_region_reinit(View2D *v2d, short type, int winx, int winy)
/* absolutely no scrollers allowed */
v2d->scroll = 0;
-
+ break;
}
- break;
-
/* panels view, with horizontal/vertical align */
case V2D_COMMONVIEW_PANELS_UI:
{
@@ -308,9 +303,8 @@ void UI_view2d_region_reinit(View2D *v2d, short type, int winx, int winy)
v2d->cur.ymax = 0.0f;
v2d->cur.ymin = (-winy) * panelzoom;
}
+ break;
}
- break;
-
/* other view types are completely defined using their own settings already */
default:
/* we don't do anything here, as settings should be fine, but just make sure that rect */
@@ -1739,9 +1733,8 @@ void UI_view2d_scrollers_draw(const bContext *C, View2D *v2d, View2DScrollers *v
fac2 = fac2 - time;
scroll_printstr(scene, fac, h, time + (float)FPS * fac2 / 100.0f, grid->powerx, V2D_UNIT_SECONDSSEQ, 'h');
+ break;
}
- break;
-
case V2D_UNIT_DEGREES: /* Graph Editor for rotation Drivers */
/* HACK: although we're drawing horizontal, we make this draw as 'vertical', just to get degree signs */
scroll_printstr(scene, fac, h, val, grid->powerx, V2D_UNIT_DEGREES, 'v');
diff --git a/source/blender/editors/interface/view2d_ops.c b/source/blender/editors/interface/view2d_ops.c
index e12817262f8..772bd6fe671 100644
--- a/source/blender/editors/interface/view2d_ops.c
+++ b/source/blender/editors/interface/view2d_ops.c
@@ -247,8 +247,8 @@ static int view_pan_modal(bContext *C, wmOperator *op, const wmEvent *event)
vpd->lasty = event->y;
view_pan_apply(op);
+ break;
}
- break;
/* XXX - Mode switching isn't implemented. See comments in 36818.
* switch to zoom */
#if 0
@@ -1674,9 +1674,8 @@ static int scroller_activate_modal(bContext *C, wmOperator *op, const wmEvent *e
vsm->lasty = event->y;
scroller_activate_apply(C, op);
+ break;
}
- break;
-
case LEFTMOUSE:
case MIDDLEMOUSE:
if (event->val == KM_RELEASE) {
diff --git a/source/blender/editors/mesh/editmesh_loopcut.c b/source/blender/editors/mesh/editmesh_loopcut.c
index f7e983fb745..3c1b210d171 100644
--- a/source/blender/editors/mesh/editmesh_loopcut.c
+++ b/source/blender/editors/mesh/editmesh_loopcut.c
@@ -261,11 +261,14 @@ static void edgering_sel(RingSelOpData *lcd, int previewlines, bool select)
eed_last = eed;
}
+ if ((eed_last != eed_start) &&
#ifdef BMW_EDGERING_NGON
- if (lasteed != startedge && BM_edge_share_face_check(lasteed, startedge)) {
+ BM_edge_share_face_check(eed_last, eed_start)
#else
- if (eed_last != eed_start && BM_edge_share_quad_check(eed_last, eed_start)) {
+ BM_edge_share_quad_check(eed_last, eed_start)
#endif
+ )
+ {
v[1][0] = v[0][0];
v[1][1] = v[0][1];
diff --git a/source/blender/editors/mesh/editmesh_select.c b/source/blender/editors/mesh/editmesh_select.c
index e9694b8a8f3..7ec1113a75f 100644
--- a/source/blender/editors/mesh/editmesh_select.c
+++ b/source/blender/editors/mesh/editmesh_select.c
@@ -927,10 +927,11 @@ static EnumPropertyItem *select_similar_type_itemf(bContext *C, PointerRNA *UNUS
}
else if (em->selectmode & SCE_SELECT_FACE) {
#ifdef WITH_FREESTYLE
- for (a = SIMFACE_MATERIAL; a <= SIMFACE_FREESTYLE; a++) {
+ const int a_end = SIMFACE_FREESTYLE;
#else
- for (a = SIMFACE_MATERIAL; a <= SIMFACE_COPLANAR; a++) {
+ const int a_end = SIMFACE_COPLANAR;
#endif
+ for (a = SIMFACE_MATERIAL; a <= a_end; a++) {
RNA_enum_items_add_value(&item, &totitem, prop_similar_types, a);
}
}
diff --git a/source/blender/editors/object/object_intern.h b/source/blender/editors/object/object_intern.h
index 58cca9dca02..4ff3bc9ac06 100644
--- a/source/blender/editors/object/object_intern.h
+++ b/source/blender/editors/object/object_intern.h
@@ -138,7 +138,10 @@ void OBJECT_OT_hook_recenter(struct wmOperatorType *ot);
/* object_lattice.c */
void LATTICE_OT_select_all(struct wmOperatorType *ot);
+void LATTICE_OT_select_more(struct wmOperatorType *ot);
+void LATTICE_OT_select_less(struct wmOperatorType *ot);
void LATTICE_OT_select_ungrouped(struct wmOperatorType *ot);
+void LATTICE_OT_select_random(struct wmOperatorType *ot);
void LATTICE_OT_make_regular(struct wmOperatorType *ot);
void LATTICE_OT_flip(struct wmOperatorType *ot);
diff --git a/source/blender/editors/object/object_lattice.c b/source/blender/editors/object/object_lattice.c
index 0e220357d30..fbb17946454 100644
--- a/source/blender/editors/object/object_lattice.c
+++ b/source/blender/editors/object/object_lattice.c
@@ -37,6 +37,8 @@
#include "BLI_listbase.h"
#include "BLI_math.h"
#include "BLI_utildefines.h"
+#include "BLI_rand.h"
+#include "BLI_bitmap.h"
#include "DNA_curve_types.h"
#include "DNA_key_types.h"
@@ -54,6 +56,7 @@
#include "BKE_lattice.h"
#include "BKE_deform.h"
#include "BKE_report.h"
+#include "BKE_utildefines.h"
#include "ED_lattice.h"
#include "ED_object.h"
@@ -170,6 +173,163 @@ void load_editLatt(Object *obedit)
}
}
+/************************** Select Random Operator **********************/
+
+static int lattice_select_random_exec(bContext *C, wmOperator *op)
+{
+ Object *obedit = CTX_data_edit_object(C);
+ Lattice *lt = ((Lattice*)obedit->data)->editlatt->latt;
+ const float randfac = RNA_float_get(op->ptr, "percent") / 100.0f;
+ int tot;
+ BPoint *bp;
+
+ if (!RNA_boolean_get(op->ptr, "extend")) {
+ ED_setflagsLatt(obedit, !SELECT);
+ }
+ else {
+ lt->actbp = LT_ACTBP_NONE;
+ }
+
+ tot = lt->pntsu * lt->pntsv * lt->pntsw;
+ bp = lt->def;
+ while (tot--) {
+ if (!bp->hide) {
+ if (BLI_frand() < randfac) {
+ bp->f1 |= SELECT;
+ }
+ }
+ bp++;
+ }
+
+ WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data);
+
+ return OPERATOR_FINISHED;
+}
+
+void LATTICE_OT_select_random(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name = "Select Random";
+ ot->description = "Randomly select UVW control points";
+ ot->idname = "LATTICE_OT_select_random";
+
+ /* api callbacks */
+ ot->exec = lattice_select_random_exec;
+ ot->poll = ED_operator_editlattice;
+
+ /* flags */
+ ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
+
+ /* props */
+ RNA_def_float_percentage(ot->srna, "percent", 50.f, 0.0f, 100.0f,
+ "Percent", "Percentage of elements to select randomly", 0.f, 100.0f);
+ RNA_def_boolean(ot->srna, "extend", false, "Extend", "Extend the selection");
+}
+
+/************************** Select More/Less Operator *************************/
+
+static bool lattice_test_bitmap_uvw(Lattice *lt, BLI_bitmap selpoints, int u, int v, int w, const bool selected)
+{
+ if ((u < 0 || u >= lt->pntsu) ||
+ (v < 0 || v >= lt->pntsv) ||
+ (w < 0 || w >= lt->pntsw))
+ {
+ return false;
+ }
+ else {
+ int i = BKE_lattice_index_from_uvw(lt, u, v, w);
+ if (lt->def[i].hide == 0) {
+ return (BLI_BITMAP_GET(selpoints, i) != 0) == selected;
+ }
+ return false;
+ }
+}
+
+static int lattice_select_more_less(bContext *C, const bool select)
+{
+ Object *obedit = CTX_data_edit_object(C);
+ Lattice *lt = ((Lattice *)obedit->data)->editlatt->latt;
+ BPoint *bp;
+ const int tot = lt->pntsu * lt->pntsv * lt->pntsw;
+ int i, w, u, v;
+ BLI_bitmap selpoints;
+
+ lt->actbp = LT_ACTBP_NONE;
+
+ bp = lt->def;
+ selpoints = BLI_BITMAP_NEW(tot, __func__);
+ for (i = 0; i < tot; i++, bp++) {
+ if (bp->f1 & SELECT) {
+ BLI_BITMAP_SET(selpoints, i);
+ }
+ }
+
+ bp = lt->def;
+ for (w = 0; w < lt->pntsw; w++) {
+ for (v = 0; v < lt->pntsv; v++) {
+ for (u = 0; u < lt->pntsu; u++) {
+ if ((bp->hide == 0) && (((bp->f1 & SELECT) == 0) == select)) {
+ if (lattice_test_bitmap_uvw(lt, selpoints, u + 1, v, w, select) ||
+ lattice_test_bitmap_uvw(lt, selpoints, u - 1, v, w, select) ||
+ lattice_test_bitmap_uvw(lt, selpoints, u, v + 1, w, select) ||
+ lattice_test_bitmap_uvw(lt, selpoints, u, v - 1, w, select) ||
+ lattice_test_bitmap_uvw(lt, selpoints, u, v, w + 1, select) ||
+ lattice_test_bitmap_uvw(lt, selpoints, u, v, w - 1, select))
+ {
+ BKE_BIT_TEST_SET(bp->f1, select, SELECT);
+ }
+ }
+ bp++;
+ }
+ }
+ }
+
+ MEM_freeN(selpoints);
+
+ WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data);
+ return OPERATOR_FINISHED;
+}
+
+static int lattice_select_more_exec(bContext *C, wmOperator *UNUSED(op))
+{
+ return lattice_select_more_less(C, true);
+}
+
+static int lattice_select_less_exec(bContext *C, wmOperator *UNUSED(op))
+{
+ return lattice_select_more_less(C, false);
+}
+
+void LATTICE_OT_select_more(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name = "Select More";
+ ot->description = "Select vertex directly linked to already selected ones";
+ ot->idname = "LATTICE_OT_select_more";
+
+ /* api callbacks */
+ ot->exec = lattice_select_more_exec;
+ ot->poll = ED_operator_editlattice;
+
+ /* flags */
+ ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
+}
+
+void LATTICE_OT_select_less(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name = "Select Less";
+ ot->description = "Deselect vertices at the boundary of each selection region";
+ ot->idname = "LATTICE_OT_select_less";
+
+ /* api callbacks */
+ ot->exec = lattice_select_less_exec;
+ ot->poll = ED_operator_editlattice;
+
+ /* flags */
+ ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
+}
+
/************************** Select All Operator *************************/
void ED_setflagsLatt(Object *obedit, int flag)
@@ -510,8 +670,8 @@ static int lattice_flip_exec(bContext *C, wmOperator *op)
}
}
}
+ break;
}
- break;
case LATTICE_FLIP_V:
{
int u, v, w;
@@ -531,8 +691,8 @@ static int lattice_flip_exec(bContext *C, wmOperator *op)
}
}
}
+ break;
}
- break;
case LATTICE_FLIP_W:
{
int u, v, w;
@@ -551,9 +711,8 @@ static int lattice_flip_exec(bContext *C, wmOperator *op)
}
}
}
+ break;
}
- break;
-
default: /* shouldn't happen, but just in case */
break;
}
diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c
index 35bfba8b78a..333e5ff3006 100644
--- a/source/blender/editors/object/object_ops.c
+++ b/source/blender/editors/object/object_ops.c
@@ -217,7 +217,10 @@ void ED_operatortypes_object(void)
WM_operatortype_append(OBJECT_OT_shape_key_move);
WM_operatortype_append(LATTICE_OT_select_all);
+ WM_operatortype_append(LATTICE_OT_select_more);
+ WM_operatortype_append(LATTICE_OT_select_less);
WM_operatortype_append(LATTICE_OT_select_ungrouped);
+ WM_operatortype_append(LATTICE_OT_select_random);
WM_operatortype_append(LATTICE_OT_make_regular);
WM_operatortype_append(LATTICE_OT_flip);
@@ -427,6 +430,8 @@ void ED_keymap_object(wmKeyConfig *keyconf)
RNA_enum_set(kmi->ptr, "action", SEL_TOGGLE);
kmi = WM_keymap_add_item(keymap, "LATTICE_OT_select_all", IKEY, KM_PRESS, KM_CTRL, 0);
RNA_enum_set(kmi->ptr, "action", SEL_INVERT);
+ WM_keymap_add_item(keymap, "LATTICE_OT_select_more", PADPLUSKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "LATTICE_OT_select_less", PADMINUS, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "OBJECT_OT_vertex_parent_set", PKEY, KM_PRESS, KM_CTRL, 0);
diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c
index 75c1f956f1b..f6fc21f94f5 100644
--- a/source/blender/editors/object/object_relations.c
+++ b/source/blender/editors/object/object_relations.c
@@ -494,23 +494,21 @@ void ED_object_parent_clear(Object *ob, int type)
/* clear parenting relationship completely */
ob->parent = NULL;
+ break;
}
- break;
-
case CLEAR_PARENT_KEEP_TRANSFORM:
{
/* remove parent, and apply the parented transform result as object's local transforms */
ob->parent = NULL;
BKE_object_apply_mat4(ob, ob->obmat, TRUE, FALSE);
+ break;
}
- break;
-
case CLEAR_PARENT_INVERSE:
{
/* object stays parented, but the parent inverse (i.e. offset from parent to retain binding state) is cleared */
unit_m4(ob->parentinv);
+ break;
}
- break;
}
DAG_id_tag_update(&ob->id, OB_RECALC_OB | OB_RECALC_DATA | OB_RECALC_TIME);
diff --git a/source/blender/editors/render/render_opengl.c b/source/blender/editors/render/render_opengl.c
index 13379425258..93ae913cee0 100644
--- a/source/blender/editors/render/render_opengl.c
+++ b/source/blender/editors/render/render_opengl.c
@@ -107,6 +107,10 @@ typedef struct OGLRender {
bMovieHandle *mh;
int cfrao, nfra;
+ /* wm vars for timer and progress cursor */
+ wmWindowManager *wm;
+ wmWindow *win;
+
wmTimer *timer; /* use to check if running modal or not (invoke'd or exec'd)*/
} OGLRender;
@@ -327,6 +331,9 @@ static void screen_opengl_render_apply(OGLRender *oglrender)
static int screen_opengl_render_init(bContext *C, wmOperator *op)
{
/* new render clears all callbacks */
+ wmWindowManager *wm = CTX_wm_manager(C);
+ wmWindow *win = CTX_wm_window(C);
+
Scene *scene = CTX_data_scene(C);
ScrArea *prevsa = CTX_wm_area(C);
ARegion *prevar = CTX_wm_region(C);
@@ -353,7 +360,7 @@ static int screen_opengl_render_init(bContext *C, wmOperator *op)
}
/* only one render job at a time */
- if (WM_jobs_test(CTX_wm_manager(C), scene, WM_JOB_TYPE_RENDER))
+ if (WM_jobs_test(wm, scene, WM_JOB_TYPE_RENDER))
return 0;
if (!is_view_context && scene->camera == NULL) {
@@ -367,7 +374,7 @@ static int screen_opengl_render_init(bContext *C, wmOperator *op)
}
/* stop all running jobs, except screen one. currently previews frustrate Render */
- WM_jobs_kill_all_except(CTX_wm_manager(C), CTX_wm_screen(C));
+ WM_jobs_kill_all_except(wm, CTX_wm_screen(C));
/* create offscreen buffer */
sizex = (scene->r.size * scene->r.xsch) / 100;
@@ -381,9 +388,6 @@ static int screen_opengl_render_init(bContext *C, wmOperator *op)
return 0;
}
- /* handle UI stuff */
- WM_cursor_wait(1);
-
/* allocate opengl render */
oglrender = MEM_callocN(sizeof(OGLRender), "OGLRender");
op->customdata = oglrender;
@@ -441,6 +445,10 @@ static int screen_opengl_render_init(bContext *C, wmOperator *op)
rr->rectf = MEM_callocN(sizeof(float) * 4 * sizex * sizey, "screen_opengl_render_init rect");
RE_ReleaseResult(oglrender->re);
+ /* wm vars */
+ oglrender->wm = wm;
+ oglrender->win = win;
+
return 1;
}
@@ -458,10 +466,13 @@ static void screen_opengl_render_end(bContext *C, OGLRender *oglrender)
scene->r.cfra = oglrender->cfrao;
BKE_scene_update_for_newframe(bmain, scene, screen_opengl_layers(oglrender));
- WM_event_remove_timer(CTX_wm_manager(C), CTX_wm_window(C), oglrender->timer);
+ WM_event_remove_timer(oglrender->wm, oglrender->win, oglrender->timer);
+ }
+
+ if (oglrender->win) {
+ WM_cursor_restore(oglrender->win);
}
- WM_cursor_wait(0);
WM_event_add_notifier(C, NC_SCENE | ND_RENDER_RESULT, oglrender->scene);
U.obcenter_dia = oglrender->obcenter_dia_back;
@@ -549,6 +560,10 @@ static int screen_opengl_render_anim_step(bContext *C, wmOperator *op)
}
}
+ if (oglrender->win) {
+ WM_cursor_time(oglrender->win, scene->r.cfra);
+ }
+
BKE_scene_update_for_newframe(bmain, scene, screen_opengl_layers(oglrender));
if (view_context) {
@@ -714,7 +729,7 @@ static int screen_opengl_render_invoke(bContext *C, wmOperator *op, const wmEven
render_view_open(C, event->x, event->y);
WM_event_add_modal_handler(C, op);
- oglrender->timer = WM_event_add_timer(CTX_wm_manager(C), CTX_wm_window(C), TIMER, 0.01f);
+ oglrender->timer = WM_event_add_timer(oglrender->wm, oglrender->win, TIMER, 0.01f);
return OPERATOR_RUNNING_MODAL;
}
diff --git a/source/blender/editors/render/render_shading.c b/source/blender/editors/render/render_shading.c
index 7a274396e86..49ecfe2940e 100644
--- a/source/blender/editors/render/render_shading.c
+++ b/source/blender/editors/render/render_shading.c
@@ -110,6 +110,7 @@ static int material_slot_add_exec(bContext *C, wmOperator *UNUSED(op))
object_add_material_slot(ob);
WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, ob);
WM_event_add_notifier(C, NC_OBJECT | ND_OB_SHADING, ob);
+ WM_event_add_notifier(C, NC_MATERIAL | ND_SHADING_PREVIEW, ob);
return OPERATOR_FINISHED;
}
@@ -146,6 +147,7 @@ static int material_slot_remove_exec(bContext *C, wmOperator *op)
DAG_id_tag_update(&ob->id, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, ob);
WM_event_add_notifier(C, NC_OBJECT | ND_OB_SHADING, ob);
+ WM_event_add_notifier(C, NC_MATERIAL | ND_SHADING_PREVIEW, ob);
return OPERATOR_FINISHED;
}
@@ -1064,21 +1066,21 @@ static int freestyle_modifier_remove_exec(bContext *C, wmOperator *op)
}
switch (freestyle_get_modifier_type(&ptr)) {
- case LS_MODIFIER_TYPE_COLOR:
- BKE_remove_linestyle_color_modifier(lineset->linestyle, modifier);
- break;
- case LS_MODIFIER_TYPE_ALPHA:
- BKE_remove_linestyle_alpha_modifier(lineset->linestyle, modifier);
- break;
- case LS_MODIFIER_TYPE_THICKNESS:
- BKE_remove_linestyle_thickness_modifier(lineset->linestyle, modifier);
- break;
- case LS_MODIFIER_TYPE_GEOMETRY:
- BKE_remove_linestyle_geometry_modifier(lineset->linestyle, modifier);
- break;
- default:
- BKE_report(op->reports, RPT_ERROR, "The object the data pointer refers to is not a valid modifier");
- return OPERATOR_CANCELLED;
+ case LS_MODIFIER_TYPE_COLOR:
+ BKE_remove_linestyle_color_modifier(lineset->linestyle, modifier);
+ break;
+ case LS_MODIFIER_TYPE_ALPHA:
+ BKE_remove_linestyle_alpha_modifier(lineset->linestyle, modifier);
+ break;
+ case LS_MODIFIER_TYPE_THICKNESS:
+ BKE_remove_linestyle_thickness_modifier(lineset->linestyle, modifier);
+ break;
+ case LS_MODIFIER_TYPE_GEOMETRY:
+ BKE_remove_linestyle_geometry_modifier(lineset->linestyle, modifier);
+ break;
+ default:
+ BKE_report(op->reports, RPT_ERROR, "The object the data pointer refers to is not a valid modifier");
+ return OPERATOR_CANCELLED;
}
WM_event_add_notifier(C, NC_SCENE | ND_RENDER_OPTIONS, scene);
@@ -1114,21 +1116,21 @@ static int freestyle_modifier_copy_exec(bContext *C, wmOperator *op)
}
switch (freestyle_get_modifier_type(&ptr)) {
- case LS_MODIFIER_TYPE_COLOR:
- BKE_copy_linestyle_color_modifier(lineset->linestyle, modifier);
- break;
- case LS_MODIFIER_TYPE_ALPHA:
- BKE_copy_linestyle_alpha_modifier(lineset->linestyle, modifier);
- break;
- case LS_MODIFIER_TYPE_THICKNESS:
- BKE_copy_linestyle_thickness_modifier(lineset->linestyle, modifier);
- break;
- case LS_MODIFIER_TYPE_GEOMETRY:
- BKE_copy_linestyle_geometry_modifier(lineset->linestyle, modifier);
- break;
- default:
- BKE_report(op->reports, RPT_ERROR, "The object the data pointer refers to is not a valid modifier");
- return OPERATOR_CANCELLED;
+ case LS_MODIFIER_TYPE_COLOR:
+ BKE_copy_linestyle_color_modifier(lineset->linestyle, modifier);
+ break;
+ case LS_MODIFIER_TYPE_ALPHA:
+ BKE_copy_linestyle_alpha_modifier(lineset->linestyle, modifier);
+ break;
+ case LS_MODIFIER_TYPE_THICKNESS:
+ BKE_copy_linestyle_thickness_modifier(lineset->linestyle, modifier);
+ break;
+ case LS_MODIFIER_TYPE_GEOMETRY:
+ BKE_copy_linestyle_geometry_modifier(lineset->linestyle, modifier);
+ break;
+ default:
+ BKE_report(op->reports, RPT_ERROR, "The object the data pointer refers to is not a valid modifier");
+ return OPERATOR_CANCELLED;
}
WM_event_add_notifier(C, NC_SCENE | ND_RENDER_OPTIONS, scene);
@@ -1165,21 +1167,21 @@ static int freestyle_modifier_move_exec(bContext *C, wmOperator *op)
}
switch (freestyle_get_modifier_type(&ptr)) {
- case LS_MODIFIER_TYPE_COLOR:
- BKE_move_linestyle_color_modifier(lineset->linestyle, modifier, dir);
- break;
- case LS_MODIFIER_TYPE_ALPHA:
- BKE_move_linestyle_alpha_modifier(lineset->linestyle, modifier, dir);
- break;
- case LS_MODIFIER_TYPE_THICKNESS:
- BKE_move_linestyle_thickness_modifier(lineset->linestyle, modifier, dir);
- break;
- case LS_MODIFIER_TYPE_GEOMETRY:
- BKE_move_linestyle_geometry_modifier(lineset->linestyle, modifier, dir);
- break;
- default:
- BKE_report(op->reports, RPT_ERROR, "The object the data pointer refers to is not a valid modifier");
- return OPERATOR_CANCELLED;
+ case LS_MODIFIER_TYPE_COLOR:
+ BKE_move_linestyle_color_modifier(lineset->linestyle, modifier, dir);
+ break;
+ case LS_MODIFIER_TYPE_ALPHA:
+ BKE_move_linestyle_alpha_modifier(lineset->linestyle, modifier, dir);
+ break;
+ case LS_MODIFIER_TYPE_THICKNESS:
+ BKE_move_linestyle_thickness_modifier(lineset->linestyle, modifier, dir);
+ break;
+ case LS_MODIFIER_TYPE_GEOMETRY:
+ BKE_move_linestyle_geometry_modifier(lineset->linestyle, modifier, dir);
+ break;
+ default:
+ BKE_report(op->reports, RPT_ERROR, "The object the data pointer refers to is not a valid modifier");
+ return OPERATOR_CANCELLED;
}
WM_event_add_notifier(C, NC_SCENE | ND_RENDER_OPTIONS, scene);
diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c
index c70841ffe82..0ef5b1561f1 100644
--- a/source/blender/editors/screen/screen_ops.c
+++ b/source/blender/editors/screen/screen_ops.c
@@ -2463,8 +2463,8 @@ static int area_join_modal(bContext *C, wmOperator *op, const wmEvent *event)
WM_event_add_notifier(C, NC_WINDOW, NULL);
}
}
+ break;
}
- break;
case LEFTMOUSE:
if (event->val == KM_RELEASE) {
ED_area_tag_redraw(jd->sa1);
diff --git a/source/blender/editors/sculpt_paint/paint_stroke.c b/source/blender/editors/sculpt_paint/paint_stroke.c
index d82606f52f0..e6d609d2008 100644
--- a/source/blender/editors/sculpt_paint/paint_stroke.c
+++ b/source/blender/editors/sculpt_paint/paint_stroke.c
@@ -576,8 +576,8 @@ bool paint_supports_dynamic_tex_coords(Brush *br, PaintMode mode)
if (sculpt_is_grab_tool(br))
return false;
default:
- ;
- }
+ break;
+ }
return true;
}
diff --git a/source/blender/editors/space_action/action_draw.c b/source/blender/editors/space_action/action_draw.c
index 4b1954c8889..b5f6fa9a23e 100644
--- a/source/blender/editors/space_action/action_draw.c
+++ b/source/blender/editors/space_action/action_draw.c
@@ -226,39 +226,35 @@ void draw_channel_strips(bAnimContext *ac, SpaceAction *saction, ARegion *ar)
{
/* reddish color from NLA */
UI_ThemeColor4(TH_ANIM_ACTIVE);
+ break;
}
- break;
-
case ANIMTYPE_SCENE:
case ANIMTYPE_OBJECT:
{
if (sel) glColor4ub(col1b[0], col1b[1], col1b[2], 0x45);
else glColor4ub(col1b[0], col1b[1], col1b[2], 0x22);
+ break;
}
- break;
-
case ANIMTYPE_FILLACTD:
case ANIMTYPE_DSSKEY:
case ANIMTYPE_DSWOR:
{
if (sel) glColor4ub(col2b[0], col2b[1], col2b[2], 0x45);
else glColor4ub(col2b[0], col2b[1], col2b[2], 0x22);
+ break;
}
- break;
-
case ANIMTYPE_GROUP:
{
if (sel) glColor4ub(col1a[0], col1a[1], col1a[2], 0x22);
else glColor4ub(col2a[0], col2a[1], col2a[2], 0x22);
+ break;
}
- break;
-
default:
{
if (sel) glColor4ub(col1[0], col1[1], col1[2], 0x22);
else glColor4ub(col2[0], col2[1], col2[2], 0x22);
+ break;
}
- break;
}
/* draw region twice: firstly backdrop, then the current range */
diff --git a/source/blender/editors/space_action/action_edit.c b/source/blender/editors/space_action/action_edit.c
index 803e7b71c77..7c9d867aad6 100644
--- a/source/blender/editors/space_action/action_edit.c
+++ b/source/blender/editors/space_action/action_edit.c
@@ -231,11 +231,12 @@ void ACTION_OT_markers_make_local(wmOperatorType *ot)
/* *************************** Calculate Range ************************** */
/* Get the min/max keyframes*/
-static void get_keyframe_extents(bAnimContext *ac, float *min, float *max, const short onlySel)
+static bool get_keyframe_extents(bAnimContext *ac, float *min, float *max, const short onlySel)
{
ListBase anim_data = {NULL, NULL};
bAnimListElem *ale;
int filter;
+ bool found = false;
/* get data to filter, from Action or Dopesheet */
/* XXX: what is sel doing here?!
@@ -261,6 +262,7 @@ static void get_keyframe_extents(bAnimContext *ac, float *min, float *max, const
const float framenum = (float)gpf->framenum;
*min = min_ff(*min, framenum);
*max = max_ff(*max, framenum);
+ found = true;
}
}
else if (ale->datatype == ALE_MASKLAY) {
@@ -275,6 +277,7 @@ static void get_keyframe_extents(bAnimContext *ac, float *min, float *max, const
const float framenum = (float)masklay_shape->frame;
*min = min_ff(*min, framenum);
*max = max_ff(*max, framenum);
+ found = true;
}
}
else {
@@ -282,16 +285,18 @@ static void get_keyframe_extents(bAnimContext *ac, float *min, float *max, const
float tmin, tmax;
/* get range and apply necessary scaling before processing */
- calc_fcurve_range(fcu, &tmin, &tmax, onlySel, TRUE);
+ if (calc_fcurve_range(fcu, &tmin, &tmax, onlySel, TRUE)) {
- if (adt) {
- tmin = BKE_nla_tweakedit_remap(adt, tmin, NLATIME_CONVERT_MAP);
- tmax = BKE_nla_tweakedit_remap(adt, tmax, NLATIME_CONVERT_MAP);
- }
+ if (adt) {
+ tmin = BKE_nla_tweakedit_remap(adt, tmin, NLATIME_CONVERT_MAP);
+ tmax = BKE_nla_tweakedit_remap(adt, tmax, NLATIME_CONVERT_MAP);
+ }
- /* try to set cur using these values, if they're more extreme than previously set values */
- *min = min_ff(*min, tmin);
- *max = max_ff(*max, tmax);
+ /* try to set cur using these values, if they're more extreme than previously set values */
+ *min = min_ff(*min, tmin);
+ *max = max_ff(*max, tmax);
+ found = true;
+ }
}
}
@@ -309,6 +314,8 @@ static void get_keyframe_extents(bAnimContext *ac, float *min, float *max, const
*max = 100;
}
}
+
+ return found;
}
/* ****************** Automatic Preview-Range Operator ****************** */
@@ -357,11 +364,12 @@ void ACTION_OT_previewrange_set(wmOperatorType *ot)
/* ****************** View-All Operator ****************** */
-static int actkeys_viewall(bContext *C, const short onlySel)
+static int actkeys_viewall(bContext *C, const bool only_sel, const bool only_xaxis)
{
bAnimContext ac;
View2D *v2d;
float extra;
+ bool found;
/* get editor data */
if (ANIM_animdata_get_context(C, &ac) == 0)
@@ -369,15 +377,20 @@ static int actkeys_viewall(bContext *C, const short onlySel)
v2d = &ac.ar->v2d;
/* set the horizontal range, with an extra offset so that the extreme keys will be in view */
- get_keyframe_extents(&ac, &v2d->cur.xmin, &v2d->cur.xmax, onlySel);
+ found = get_keyframe_extents(&ac, &v2d->cur.xmin, &v2d->cur.xmax, only_sel);
+
+ if (only_sel && (found == false))
+ return OPERATOR_CANCELLED;
extra = 0.1f * BLI_rctf_size_x(&v2d->cur);
v2d->cur.xmin -= extra;
v2d->cur.xmax += extra;
/* set vertical range */
- v2d->cur.ymax = 0.0f;
- v2d->cur.ymin = (float)-BLI_rcti_size_y(&v2d->mask);
+ if (only_xaxis == false) {
+ v2d->cur.ymax = 0.0f;
+ v2d->cur.ymin = (float)-BLI_rcti_size_y(&v2d->mask);
+ }
/* do View2D syncing */
UI_view2d_sync(CTX_wm_screen(C), CTX_wm_area(C), v2d, V2D_LOCK_COPY);
@@ -393,13 +406,13 @@ static int actkeys_viewall(bContext *C, const short onlySel)
static int actkeys_viewall_exec(bContext *C, wmOperator *UNUSED(op))
{
/* whole range */
- return actkeys_viewall(C, FALSE);
+ return actkeys_viewall(C, false, false);
}
static int actkeys_viewsel_exec(bContext *C, wmOperator *UNUSED(op))
{
/* only selected */
- return actkeys_viewall(C, TRUE);
+ return actkeys_viewall(C, true, true);
}
void ACTION_OT_view_all(wmOperatorType *ot)
diff --git a/source/blender/editors/space_action/action_select.c b/source/blender/editors/space_action/action_select.c
index eb755e162a3..9d124cf08ee 100644
--- a/source/blender/editors/space_action/action_select.c
+++ b/source/blender/editors/space_action/action_select.c
@@ -1079,26 +1079,26 @@ static void mouse_action_keys(bAnimContext *ac, const int mval[2], short select_
{
Scene *scene = (Scene *)ale->key_data;
scene_to_keylist(ads, scene, &anim_keys, NULL);
+ break;
}
- break;
case ALE_OB:
{
Object *ob = (Object *)ale->key_data;
ob_to_keylist(ads, ob, &anim_keys, NULL);
+ break;
}
- break;
case ALE_ACT:
{
bAction *act = (bAction *)ale->key_data;
action_to_keylist(adt, act, &anim_keys, NULL);
+ break;
}
- break;
case ALE_FCURVE:
{
FCurve *fcu = (FCurve *)ale->key_data;
fcurve_to_keylist(adt, fcu, &anim_keys, NULL);
+ break;
}
- break;
}
}
else if (ale->type == ANIMTYPE_SUMMARY) {
diff --git a/source/blender/editors/space_clip/space_clip.c b/source/blender/editors/space_clip/space_clip.c
index 2cbb2373be8..e6aff9d4d4f 100644
--- a/source/blender/editors/space_clip/space_clip.c
+++ b/source/blender/editors/space_clip/space_clip.c
@@ -1353,8 +1353,8 @@ static void clip_header_area_listener(bScreen *UNUSED(sc), ScrArea *UNUSED(sa),
// if (sc->mode == SC_MODE_MASKEDIT)
{
ED_region_tag_redraw(ar);
+ break;
}
- break;
}
break;
}
diff --git a/source/blender/editors/space_graph/graph_buttons.c b/source/blender/editors/space_graph/graph_buttons.c
index 8f9893e3bce..a81c0d6dfd6 100644
--- a/source/blender/editors/space_graph/graph_buttons.c
+++ b/source/blender/editors/space_graph/graph_buttons.c
@@ -383,8 +383,8 @@ static void do_graph_region_driver_buttons(bContext *C, void *UNUSED(arg), int e
{
/* rebuild depsgraph for the new deps */
DAG_relations_tag_update(bmain);
+ break;
}
- break;
}
/* default for now */
diff --git a/source/blender/editors/space_graph/space_graph.c b/source/blender/editors/space_graph/space_graph.c
index 765c61b5bed..25101d89f1d 100644
--- a/source/blender/editors/space_graph/space_graph.c
+++ b/source/blender/editors/space_graph/space_graph.c
@@ -518,15 +518,13 @@ static void graph_refresh(const bContext *C, ScrArea *sa)
switch (sipo->mode) {
case SIPO_MODE_ANIMATION: /* all animation */
{
-
+ break;
}
- break;
case SIPO_MODE_DRIVERS: /* drivers only */
{
-
+ break;
}
- break;
}
/* region updates? */
@@ -563,11 +561,12 @@ static void graph_refresh(const bContext *C, ScrArea *sa)
/* set color of curve here */
switch (fcu->color_mode) {
case FCURVE_COLOR_CUSTOM:
+ {
/* User has defined a custom color for this curve already (we assume it's not going to cause clashes with text colors),
* which should be left alone... Nothing needs to be done here.
*/
break;
-
+ }
case FCURVE_COLOR_AUTO_RGB:
{
/* F-Curve's array index is automatically mapped to RGB values. This works best of 3-value vectors.
@@ -590,9 +589,8 @@ static void graph_refresh(const bContext *C, ScrArea *sa)
col[0] = 0.3f; col[1] = 0.8f; col[2] = 1.0f;
break;
}
+ break;
}
- break;
-
case FCURVE_COLOR_AUTO_RAINBOW:
default:
{
@@ -600,8 +598,8 @@ static void graph_refresh(const bContext *C, ScrArea *sa)
* of current item index + total items to determine some RGB color
*/
getcolor_fcurve_rainbow(i, items, fcu->color);
+ break;
}
- break;
}
}
diff --git a/source/blender/editors/space_nla/nla_buttons.c b/source/blender/editors/space_nla/nla_buttons.c
index 9206f3f024a..4cda92fbe07 100644
--- a/source/blender/editors/space_nla/nla_buttons.c
+++ b/source/blender/editors/space_nla/nla_buttons.c
@@ -125,9 +125,8 @@ static int nla_panel_context(const bContext *C, PointerRNA *adt_ptr, PointerRNA
}
found = 1;
+ break;
}
- break;
-
case ANIMTYPE_SCENE: /* Top-Level Widgets doubling up as datablocks */
case ANIMTYPE_OBJECT:
case ANIMTYPE_DSMAT: /* Datablock AnimData Expanders */
@@ -167,8 +166,8 @@ static int nla_panel_context(const bContext *C, PointerRNA *adt_ptr, PointerRNA
*/
found = -1;
}
+ break;
}
- break;
}
if (found > 0)
diff --git a/source/blender/editors/space_nla/nla_channels.c b/source/blender/editors/space_nla/nla_channels.c
index bf914a05620..defe842a794 100644
--- a/source/blender/editors/space_nla/nla_channels.c
+++ b/source/blender/editors/space_nla/nla_channels.c
@@ -119,8 +119,8 @@ static int mouse_nla_channels(bAnimContext *ac, float x, int channel_index, shor
}
notifierFlags |= (ND_ANIMCHAN | NA_SELECTED);
+ break;
}
- break;
case ANIMTYPE_OBJECT:
{
bDopeSheet *ads = (bDopeSheet *)ac->data;
@@ -161,9 +161,8 @@ static int mouse_nla_channels(bAnimContext *ac, float x, int channel_index, shor
/* notifiers - channel was selected */
notifierFlags |= (ND_ANIMCHAN | NA_SELECTED);
}
+ break;
}
- break;
-
case ANIMTYPE_FILLACTD: /* Action Expander */
case ANIMTYPE_DSMAT: /* Datablock AnimData Expanders */
case ANIMTYPE_DSLAM:
@@ -200,9 +199,8 @@ static int mouse_nla_channels(bAnimContext *ac, float x, int channel_index, shor
}
notifierFlags |= (ND_ANIMCHAN | NA_SELECTED);
+ break;
}
- break;
-
case ANIMTYPE_NLATRACK:
{
NlaTrack *nlt = (NlaTrack *)ale->data;
@@ -260,8 +258,8 @@ static int mouse_nla_channels(bAnimContext *ac, float x, int channel_index, shor
/* notifier flags - channel was selected */
notifierFlags |= (ND_ANIMCHAN | NA_SELECTED);
}
+ break;
}
- break;
case ANIMTYPE_NLAACTION:
{
AnimData *adt = BKE_animdata_from_id(ale->id);
@@ -316,9 +314,8 @@ static int mouse_nla_channels(bAnimContext *ac, float x, int channel_index, shor
notifierFlags |= (ND_ANIMCHAN | NA_SELECTED);
}
}
+ break;
}
- break;
-
default:
if (G.debug & G_DEBUG)
printf("Error: Invalid channel type in mouse_nla_channels()\n");
diff --git a/source/blender/editors/space_nla/nla_draw.c b/source/blender/editors/space_nla/nla_draw.c
index 5f3e1ef88e3..93007cc0820 100644
--- a/source/blender/editors/space_nla/nla_draw.c
+++ b/source/blender/editors/space_nla/nla_draw.c
@@ -563,9 +563,8 @@ void draw_nla_main_data(bAnimContext *ac, SpaceNla *snla, ARegion *ar)
nla_draw_strip_frames_text(nlt, strip, v2d, yminc, ymaxc);
}
}
+ break;
}
- break;
-
case ANIMTYPE_NLAACTION:
{
AnimData *adt = ale->adt;
@@ -603,8 +602,8 @@ void draw_nla_main_data(bAnimContext *ac, SpaceNla *snla, ARegion *ar)
fdrawline(v2d->cur.xmin, ymaxc - NLACHANNEL_SKIP, v2d->cur.xmax, ymaxc - NLACHANNEL_SKIP);
glDisable(GL_BLEND);
+ break;
}
- break;
}
}
@@ -684,8 +683,8 @@ static void draw_nla_channel_list_gl(bAnimContext *ac, ListBase *anim_data, View
/* draw manually still */
do_draw = TRUE;
+ break;
}
- break;
case ANIMTYPE_NLAACTION: /* NLA Action-Line */
{
bAction *act = (bAction *)ale->data;
@@ -698,9 +697,8 @@ static void draw_nla_channel_list_gl(bAnimContext *ac, ListBase *anim_data, View
/* draw manually still */
do_draw = TRUE;
+ break;
}
- break;
-
default: /* handled by standard channel-drawing API */
// draw backdrops only...
ANIM_channel_draw(ac, ale, yminc, ymaxc);
@@ -725,17 +723,15 @@ static void draw_nla_channel_list_gl(bAnimContext *ac, ListBase *anim_data, View
/* same as for textures */
offset = 0.7f * U.widget_unit;
indent = 1;
+ break;
}
- break;
-
case NTREE_TEXTURE:
{
/* even more */
offset = U.widget_unit;
indent = 1;
+ break;
}
- break;
-
default:
/* normal will do */
offset = 0.7f * U.widget_unit;
diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c
index cbf40bf2e57..bf5e0c77b90 100644
--- a/source/blender/editors/space_node/drawnode.c
+++ b/source/blender/editors/space_node/drawnode.c
@@ -2768,7 +2768,8 @@ static void std_node_socket_draw(bContext *C, uiLayout *layout, PointerRNA *ptr,
case SOCK_VECTOR:
uiTemplateComponentMenu(layout, ptr, "default_value", text);
break;
- case SOCK_RGBA: {
+ case SOCK_RGBA:
+ {
uiLayout *row = uiLayoutRow(layout, false);
uiLayoutSetAlignment(row, UI_LAYOUT_ALIGN_LEFT);
/* draw the socket name right of the actual button */
@@ -2776,14 +2777,14 @@ static void std_node_socket_draw(bContext *C, uiLayout *layout, PointerRNA *ptr,
uiItemL(row, text, 0);
break;
}
- case SOCK_STRING: {
+ case SOCK_STRING:
+ {
uiLayout *row = uiLayoutRow(layout, true);
/* draw the socket name right of the actual button */
uiItemR(row, ptr, "default_value", 0, "", 0);
uiItemL(row, text, 0);
break;
}
-
default:
node_socket_button_label(C, layout, ptr, node_ptr, text);
break;
@@ -2797,7 +2798,8 @@ static void std_node_socket_interface_draw(bContext *UNUSED(C), uiLayout *layout
/*int subtype = sock->typeinfo->subtype;*/
switch (type) {
- case SOCK_FLOAT: {
+ case SOCK_FLOAT:
+ {
uiLayout *row;
uiItemR(layout, ptr, "default_value", 0, NULL, 0);
row = uiLayoutRow(layout, true);
@@ -2805,7 +2807,8 @@ static void std_node_socket_interface_draw(bContext *UNUSED(C), uiLayout *layout
uiItemR(row, ptr, "max_value", 0, "Max", 0);
break;
}
- case SOCK_INT: {
+ case SOCK_INT:
+ {
uiLayout *row;
uiItemR(layout, ptr, "default_value", 0, NULL, 0);
row = uiLayoutRow(layout, true);
@@ -2813,11 +2816,13 @@ static void std_node_socket_interface_draw(bContext *UNUSED(C), uiLayout *layout
uiItemR(row, ptr, "max_value", 0, "Max", 0);
break;
}
- case SOCK_BOOLEAN: {
+ case SOCK_BOOLEAN:
+ {
uiItemR(layout, ptr, "default_value", 0, NULL, 0);
break;
}
- case SOCK_VECTOR: {
+ case SOCK_VECTOR:
+ {
uiLayout *row;
uiItemR(layout, ptr, "default_value", UI_ITEM_R_EXPAND, NULL, 0);
row = uiLayoutRow(layout, true);
@@ -2825,11 +2830,13 @@ static void std_node_socket_interface_draw(bContext *UNUSED(C), uiLayout *layout
uiItemR(row, ptr, "max_value", 0, "Max", 0);
break;
}
- case SOCK_RGBA: {
+ case SOCK_RGBA:
+ {
uiItemR(layout, ptr, "default_value", 0, NULL, 0);
break;
}
- case SOCK_STRING: {
+ case SOCK_STRING:
+ {
uiItemR(layout, ptr, "default_value", 0, NULL, 0);
break;
}
diff --git a/source/blender/editors/space_node/node_draw.c b/source/blender/editors/space_node/node_draw.c
index 7da06bcf3a6..dce04bb8c42 100644
--- a/source/blender/editors/space_node/node_draw.c
+++ b/source/blender/editors/space_node/node_draw.c
@@ -91,18 +91,18 @@ static bNodeTree *node_tree_from_ID(ID *id)
short idtype = GS(id->name);
switch (idtype) {
- case ID_NT:
- return (bNodeTree *)id;
- case ID_MA:
- return ((Material *)id)->nodetree;
- case ID_LA:
- return ((Lamp *)id)->nodetree;
- case ID_WO:
- return ((World *)id)->nodetree;
- case ID_SCE:
- return ((Scene *)id)->nodetree;
- case ID_TE:
- return ((Tex *)id)->nodetree;
+ case ID_NT:
+ return (bNodeTree *)id;
+ case ID_MA:
+ return ((Material *)id)->nodetree;
+ case ID_LA:
+ return ((Lamp *)id)->nodetree;
+ case ID_WO:
+ return ((World *)id)->nodetree;
+ case ID_SCE:
+ return ((Scene *)id)->nodetree;
+ case ID_TE:
+ return ((Tex *)id)->nodetree;
}
}
diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c
index f8166456a2c..9b48774588d 100644
--- a/source/blender/editors/space_node/node_edit.c
+++ b/source/blender/editors/space_node/node_edit.c
@@ -2262,24 +2262,26 @@ static int ntree_socket_move_exec(bContext *C, wmOperator *op)
return OPERATOR_CANCELLED;
switch (direction) {
- case 1: { /* up */
- bNodeSocket *before = iosock->prev;
- BLI_remlink(lb, iosock);
- if (before)
- BLI_insertlinkbefore(lb, before, iosock);
- else
- BLI_addhead(lb, iosock);
- break;
- }
- case 2: { /* down */
- bNodeSocket *after = iosock->next;
- BLI_remlink(lb, iosock);
- if (after)
- BLI_insertlinkafter(lb, after, iosock);
- else
- BLI_addtail(lb, iosock);
- break;
- }
+ case 1:
+ { /* up */
+ bNodeSocket *before = iosock->prev;
+ BLI_remlink(lb, iosock);
+ if (before)
+ BLI_insertlinkbefore(lb, before, iosock);
+ else
+ BLI_addhead(lb, iosock);
+ break;
+ }
+ case 2:
+ { /* down */
+ bNodeSocket *after = iosock->next;
+ BLI_remlink(lb, iosock);
+ if (after)
+ BLI_insertlinkafter(lb, after, iosock);
+ else
+ BLI_addtail(lb, iosock);
+ break;
+ }
}
ntreeUpdateTree(CTX_data_main(C), ntree);
diff --git a/source/blender/editors/space_node/node_templates.c b/source/blender/editors/space_node/node_templates.c
index b74d1bf2ef8..83c11e69d84 100644
--- a/source/blender/editors/space_node/node_templates.c
+++ b/source/blender/editors/space_node/node_templates.c
@@ -675,23 +675,23 @@ static void ui_node_draw_input(uiLayout *layout, bContext *C, bNodeTree *ntree,
/* input not linked, show value */
if (!(input->flag & SOCK_HIDE_VALUE)) {
switch (input->type) {
- case SOCK_FLOAT:
- case SOCK_INT:
- case SOCK_BOOLEAN:
- case SOCK_RGBA:
- case SOCK_STRING:
- row = uiLayoutRow(split, TRUE);
- uiItemR(row, &inputptr, "default_value", 0, "", ICON_NONE);
- break;
- case SOCK_VECTOR:
- row = uiLayoutRow(split, FALSE);
- col = uiLayoutColumn(row, FALSE);
- uiItemR(col, &inputptr, "default_value", 0, "", ICON_NONE);
- break;
-
- default:
- row = uiLayoutRow(split, FALSE);
- break;
+ case SOCK_FLOAT:
+ case SOCK_INT:
+ case SOCK_BOOLEAN:
+ case SOCK_RGBA:
+ case SOCK_STRING:
+ row = uiLayoutRow(split, TRUE);
+ uiItemR(row, &inputptr, "default_value", 0, "", ICON_NONE);
+ break;
+ case SOCK_VECTOR:
+ row = uiLayoutRow(split, FALSE);
+ col = uiLayoutColumn(row, FALSE);
+ uiItemR(col, &inputptr, "default_value", 0, "", ICON_NONE);
+ break;
+
+ default:
+ row = uiLayoutRow(split, FALSE);
+ break;
}
}
else
diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c
index 8d6363d3bbe..f12f7743429 100644
--- a/source/blender/editors/space_node/space_node.c
+++ b/source/blender/editors/space_node/space_node.c
@@ -392,7 +392,8 @@ static void node_area_listener(bScreen *UNUSED(sc), ScrArea *sa, wmNotifier *wmn
switch (wmn->category) {
case NC_SCENE:
switch (wmn->data) {
- case ND_NODES: {
+ case ND_NODES:
+ {
ARegion *ar = BKE_area_find_region_type(sa, RGN_TYPE_WINDOW);
bNodeTreePath *path = snode->treepath.last;
/* shift view to node tree center */
diff --git a/source/blender/editors/space_outliner/outliner_draw.c b/source/blender/editors/space_outliner/outliner_draw.c
index cfcc4641afd..93d0ff4f8c0 100644
--- a/source/blender/editors/space_outliner/outliner_draw.c
+++ b/source/blender/editors/space_outliner/outliner_draw.c
@@ -464,8 +464,8 @@ static void namebutton_cb(bContext *C, void *tsep, char *oldname)
ED_armature_bone_rename(obedit->data, oldname, newname);
WM_event_add_notifier(C, NC_OBJECT | ND_POSE, OBACT);
}
+ break;
}
- break;
case TSE_BONE:
{
@@ -482,8 +482,8 @@ static void namebutton_cb(bContext *C, void *tsep, char *oldname)
BLI_strncpy(bone->name, oldname, sizeof(bone->name));
ED_armature_bone_rename(ob->data, oldname, newname);
WM_event_add_notifier(C, NC_OBJECT | ND_POSE, ob);
+ break;
}
- break;
case TSE_POSE_CHANNEL:
{
bPoseChannel *pchan = te->directdata;
@@ -499,8 +499,8 @@ static void namebutton_cb(bContext *C, void *tsep, char *oldname)
BLI_strncpy(pchan->name, oldname, sizeof(pchan->name));
ED_armature_bone_rename(ob->data, oldname, newname);
WM_event_add_notifier(C, NC_OBJECT | ND_POSE, ob);
+ break;
}
- break;
case TSE_POSEGRP:
{
Object *ob = (Object *)tselem->id; // id = object
@@ -509,8 +509,8 @@ static void namebutton_cb(bContext *C, void *tsep, char *oldname)
BLI_uniquename(&ob->pose->agroups, grp, CTX_DATA_(BLF_I18NCONTEXT_ID_ACTION, "Group"), '.',
offsetof(bActionGroup, name), sizeof(grp->name));
WM_event_add_notifier(C, NC_OBJECT | ND_POSE, ob);
+ break;
}
- break;
case TSE_R_LAYER:
break;
}
diff --git a/source/blender/editors/space_outliner/outliner_edit.c b/source/blender/editors/space_outliner/outliner_edit.c
index 2f97108c5ee..0161f53e690 100644
--- a/source/blender/editors/space_outliner/outliner_edit.c
+++ b/source/blender/editors/space_outliner/outliner_edit.c
@@ -1181,14 +1181,14 @@ static void do_outliner_drivers_editop(SpaceOops *soops, ListBase *tree, ReportL
{
/* add a new driver with the information obtained (only if valid) */
ANIM_add_driver(reports, id, path, array_index, dflags, DRIVER_TYPE_PYTHON);
+ break;
}
- break;
case DRIVERS_EDITMODE_REMOVE:
{
/* remove driver matching the information obtained (only if valid) */
ANIM_remove_driver(reports, id, path, array_index, dflags);
+ break;
}
- break;
}
}
diff --git a/source/blender/editors/space_outliner/outliner_tools.c b/source/blender/editors/space_outliner/outliner_tools.c
index 9b9e7bef42c..fb56c5c6dfe 100644
--- a/source/blender/editors/space_outliner/outliner_tools.c
+++ b/source/blender/editors/space_outliner/outliner_tools.c
@@ -854,17 +854,15 @@ static int outliner_id_operation_exec(bContext *C, wmOperator *op)
BKE_report(op->reports, RPT_WARNING, "Not yet implemented");
break;
}
+ break;
}
- break;
-
case OUTLINER_IDOP_LOCAL:
{
/* make local */
outliner_do_libdata_operation(C, scene, soops, &soops->tree, id_local_cb);
ED_undo_push(C, "Localized Data");
+ break;
}
- break;
-
case OUTLINER_IDOP_SINGLE:
{
/* make single user */
@@ -887,9 +885,8 @@ static int outliner_id_operation_exec(bContext *C, wmOperator *op)
BKE_report(op->reports, RPT_WARNING, "Not yet implemented");
break;
}
+ break;
}
- break;
-
case OUTLINER_IDOP_FAKE_ADD:
{
/* set fake user */
@@ -897,9 +894,8 @@ static int outliner_id_operation_exec(bContext *C, wmOperator *op)
WM_event_add_notifier(C, NC_ID | NA_EDITED, NULL);
ED_undo_push(C, "Add Fake User");
+ break;
}
- break;
-
case OUTLINER_IDOP_FAKE_CLEAR:
{
/* clear fake user */
@@ -907,8 +903,8 @@ static int outliner_id_operation_exec(bContext *C, wmOperator *op)
WM_event_add_notifier(C, NC_ID | NA_EDITED, NULL);
ED_undo_push(C, "Clear Fake User");
+ break;
}
- break;
case OUTLINER_IDOP_RENAME:
{
/* rename */
@@ -916,9 +912,8 @@ static int outliner_id_operation_exec(bContext *C, wmOperator *op)
WM_event_add_notifier(C, NC_ID | NA_EDITED, NULL);
ED_undo_push(C, "Rename");
+ break;
}
- break;
-
case OUTLINER_IDOP_SELECT_LINKED:
outliner_do_libdata_operation(C, scene, soops, &soops->tree, id_select_linked_cb);
ED_undo_push(C, "Select");
diff --git a/source/blender/editors/space_outliner/outliner_tree.c b/source/blender/editors/space_outliner/outliner_tree.c
index 08d32defd98..7d3ec148662 100644
--- a/source/blender/editors/space_outliner/outliner_tree.c
+++ b/source/blender/editors/space_outliner/outliner_tree.c
@@ -616,18 +616,18 @@ static void outliner_add_id_contents(SpaceOops *soops, TreeElement *te, TreeStor
case ID_LI:
{
te->name = ((Library *)id)->name;
+ break;
}
- break;
case ID_SCE:
{
outliner_add_scene_contents(soops, &te->subtree, (Scene *)id, te);
+ break;
}
- break;
case ID_OB:
{
outliner_add_object_contents(soops, te, tselem, (Object *)id);
+ break;
}
- break;
case ID_ME:
{
Mesh *me = (Mesh *)id;
@@ -641,8 +641,8 @@ static void outliner_add_id_contents(SpaceOops *soops, TreeElement *te, TreeStor
outliner_add_element(soops, &te->subtree, me->mat[a], te, 0, a);
/* could do tfaces with image links, but the images are not grouped nicely.
* would require going over all tfaces, sort images in use. etc... */
+ break;
}
- break;
case ID_CU:
{
Curve *cu = (Curve *)id;
@@ -653,8 +653,8 @@ static void outliner_add_id_contents(SpaceOops *soops, TreeElement *te, TreeStor
for (a = 0; a < cu->totcol; a++)
outliner_add_element(soops, &te->subtree, cu->mat[a], te, 0, a);
+ break;
}
- break;
case ID_MB:
{
MetaBall *mb = (MetaBall *)id;
@@ -665,8 +665,8 @@ static void outliner_add_id_contents(SpaceOops *soops, TreeElement *te, TreeStor
for (a = 0; a < mb->totcol; a++)
outliner_add_element(soops, &te->subtree, mb->mat[a], te, 0, a);
+ break;
}
- break;
case ID_MA:
{
Material *ma = (Material *)id;
@@ -678,8 +678,8 @@ static void outliner_add_id_contents(SpaceOops *soops, TreeElement *te, TreeStor
for (a = 0; a < MAX_MTEX; a++) {
if (ma->mtex[a]) outliner_add_element(soops, &te->subtree, ma->mtex[a]->tex, te, 0, a);
}
+ break;
}
- break;
case ID_TE:
{
Tex *tex = (Tex *)id;
@@ -688,16 +688,16 @@ static void outliner_add_id_contents(SpaceOops *soops, TreeElement *te, TreeStor
outliner_add_element(soops, &te->subtree, tex, te, TSE_ANIM_DATA, 0);
outliner_add_element(soops, &te->subtree, tex->ima, te, 0, 0);
+ break;
}
- break;
case ID_CA:
{
Camera *ca = (Camera *)id;
if (outliner_animdata_test(ca->adt))
outliner_add_element(soops, &te->subtree, ca, te, TSE_ANIM_DATA, 0);
+ break;
}
- break;
case ID_LA:
{
Lamp *la = (Lamp *)id;
@@ -709,16 +709,16 @@ static void outliner_add_id_contents(SpaceOops *soops, TreeElement *te, TreeStor
for (a = 0; a < MAX_MTEX; a++) {
if (la->mtex[a]) outliner_add_element(soops, &te->subtree, la->mtex[a]->tex, te, 0, a);
}
+ break;
}
- break;
case ID_SPK:
{
Speaker *spk = (Speaker *)id;
if (outliner_animdata_test(spk->adt))
outliner_add_element(soops, &te->subtree, spk, te, TSE_ANIM_DATA, 0);
+ break;
}
- break;
case ID_WO:
{
World *wrld = (World *)id;
@@ -730,22 +730,22 @@ static void outliner_add_id_contents(SpaceOops *soops, TreeElement *te, TreeStor
for (a = 0; a < MAX_MTEX; a++) {
if (wrld->mtex[a]) outliner_add_element(soops, &te->subtree, wrld->mtex[a]->tex, te, 0, a);
}
+ break;
}
- break;
case ID_KE:
{
Key *key = (Key *)id;
if (outliner_animdata_test(key->adt))
outliner_add_element(soops, &te->subtree, key, te, TSE_ANIM_DATA, 0);
+ break;
}
- break;
case ID_AC:
{
// XXX do we want to be exposing the F-Curves here?
//bAction *act = (bAction *)id;
+ break;
}
- break;
case ID_AR:
{
bArmature *arm = (bArmature *)id;
@@ -791,8 +791,8 @@ static void outliner_add_id_contents(SpaceOops *soops, TreeElement *te, TreeStor
}
}
}
+ break;
}
- break;
}
}
diff --git a/source/blender/editors/space_time/space_time.c b/source/blender/editors/space_time/space_time.c
index 495980db447..8c36df74d22 100644
--- a/source/blender/editors/space_time/space_time.c
+++ b/source/blender/editors/space_time/space_time.c
@@ -435,8 +435,8 @@ static void time_listener(bScreen *UNUSED(sc), ScrArea *sa, wmNotifier *wmn)
break;
}
}
+ break;
}
- break;
}
break;
}
diff --git a/source/blender/editors/space_view3d/drawarmature.c b/source/blender/editors/space_view3d/drawarmature.c
index f3528ef61b6..fb20f082085 100644
--- a/source/blender/editors/space_view3d/drawarmature.c
+++ b/source/blender/editors/space_view3d/drawarmature.c
@@ -186,8 +186,6 @@ static bool set_pchan_glColor(short colCode, int boneflag, short constflag)
return true;
}
- break;
-
case PCHAN_COLOR_SOLID:
{
if (bcolor) {
@@ -198,8 +196,6 @@ static bool set_pchan_glColor(short colCode, int boneflag, short constflag)
return true;
}
- break;
-
case PCHAN_COLOR_CONSTS:
{
if ((bcolor == NULL) || (bcolor->flag & TH_WIRECOLOR_CONSTCOLS)) {
@@ -210,11 +206,8 @@ static bool set_pchan_glColor(short colCode, int boneflag, short constflag)
return true;
}
- else
- return 0;
+ return false;
}
- break;
-
case PCHAN_COLOR_SPHEREBONE_BASE:
{
if (bcolor) {
@@ -240,7 +233,6 @@ static bool set_pchan_glColor(short colCode, int boneflag, short constflag)
return true;
}
- break;
case PCHAN_COLOR_SPHEREBONE_END:
{
if (bcolor) {
@@ -266,9 +258,8 @@ static bool set_pchan_glColor(short colCode, int boneflag, short constflag)
else if (boneflag & BONE_SELECTED) UI_ThemeColorShade(TH_BONE_POSE, -30);
else UI_ThemeColorShade(TH_BONE_SOLID, -30);
}
+ break;
}
- break;
-
case PCHAN_COLOR_LINEBONE:
{
/* inner part in background color or constraint */
@@ -290,7 +281,6 @@ static bool set_pchan_glColor(short colCode, int boneflag, short constflag)
return true;
}
- break;
}
return false;
@@ -1426,8 +1416,8 @@ static void pchan_draw_IK_root_lines(bPoseChannel *pchan, short only_temp)
glEnd();
setlinestyle(0);
+ break;
}
- break;
case CONSTRAINT_TYPE_SPLINEIK:
{
bSplineIKConstraint *data = (bSplineIKConstraint *)con->data;
@@ -1451,8 +1441,8 @@ static void pchan_draw_IK_root_lines(bPoseChannel *pchan, short only_temp)
glEnd();
setlinestyle(0);
+ break;
}
- break;
}
}
}
diff --git a/source/blender/editors/space_view3d/drawmesh.c b/source/blender/editors/space_view3d/drawmesh.c
index cffcc738b5a..767d4aca3a8 100644
--- a/source/blender/editors/space_view3d/drawmesh.c
+++ b/source/blender/editors/space_view3d/drawmesh.c
@@ -912,7 +912,7 @@ static void tex_mat_set_texture_cb(void *userData, int mat_nr, void *attribs)
}
}
-static int tex_mat_set_face_mesh_cb(void *userData, int index)
+static bool tex_mat_set_face_mesh_cb(void *userData, int index)
{
/* faceselect mode face hiding */
TexMatCallback *data = (TexMatCallback *)userData;
@@ -922,7 +922,7 @@ static int tex_mat_set_face_mesh_cb(void *userData, int index)
return !(mp->flag & ME_HIDE);
}
-static int tex_mat_set_face_editmesh_cb(void *userData, int index)
+static bool tex_mat_set_face_editmesh_cb(void *userData, int index)
{
/* editmode face hiding */
TexMatCallback *data = (TexMatCallback *)userData;
@@ -960,7 +960,7 @@ void draw_mesh_textured(Scene *scene, View3D *v3d, RegionView3D *rv3d,
{
Mesh *me = ob->data;
TexMatCallback data = {scene, ob, me, dm};
- int (*set_face_cb)(void *, int);
+ bool (*set_face_cb)(void *, int);
int glsl, picking = (G.f & G_PICKSEL);
/* face hiding callback depending on mode */
diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c
index e4aa44d7d78..5eec30daf11 100644
--- a/source/blender/editors/space_view3d/view3d_edit.c
+++ b/source/blender/editors/space_view3d/view3d_edit.c
@@ -1009,6 +1009,14 @@ static int view3d_camera_user_poll(bContext *C)
return 0;
}
+static int view3d_lock_poll(bContext *C)
+{
+ View3D *v3d = CTX_wm_view3d(C);
+ RegionView3D *rv3d = CTX_wm_region_view3d(C);
+
+ return ED_view3d_offset_lock_check(v3d, rv3d);
+}
+
static int viewrotate_cancel(bContext *C, wmOperator *op)
{
viewops_data_free(C, op);
@@ -1537,7 +1545,11 @@ void viewmove_modal_keymap(wmKeyConfig *keyconf)
static void viewmove_apply(ViewOpsData *vod, int x, int y)
{
- if ((vod->rv3d->persp == RV3D_CAMOB) && !ED_view3d_camera_lock_check(vod->v3d, vod->rv3d)) {
+ if (ED_view3d_offset_lock_check(vod->v3d, vod->rv3d)) {
+ vod->rv3d->ofs_lock[0] -= ((vod->oldx - x) * 2.0f) / (float)vod->ar->winx;
+ vod->rv3d->ofs_lock[1] -= ((vod->oldy - y) * 2.0f) / (float)vod->ar->winy;
+ }
+ else if ((vod->rv3d->persp == RV3D_CAMOB) && !ED_view3d_camera_lock_check(vod->v3d, vod->rv3d)) {
const float zoomfac = BKE_screen_view3d_zoom_to_fac((float)vod->rv3d->camzoom) * 2.0f;
vod->rv3d->camdx += (vod->oldx - x) / (vod->ar->winx * zoomfac);
vod->rv3d->camdy += (vod->oldy - y) / (vod->ar->winy * zoomfac);
@@ -1614,8 +1626,6 @@ static int viewmove_invoke(bContext *C, wmOperator *op, const wmEvent *event)
{
ViewOpsData *vod;
- VIEW3D_OP_OFS_LOCK_TEST(C, op);
-
/* makes op->customdata */
viewops_data_create(C, op, event);
vod = op->customdata;
@@ -2172,10 +2182,10 @@ static int viewdolly_exec(bContext *C, wmOperator *op)
}
if (delta < 0) {
- view_dolly_mouseloc(ar, rv3d->ofs, mousevec, 1.2f);
+ view_dolly_mouseloc(ar, rv3d->ofs, mousevec, 0.2f);
}
else {
- view_dolly_mouseloc(ar, rv3d->ofs, mousevec, 0.83333f);
+ view_dolly_mouseloc(ar, rv3d->ofs, mousevec, 1.8f);
}
if (rv3d->viewlock & RV3D_BOXVIEW)
@@ -2792,6 +2802,32 @@ void VIEW3D_OT_view_center_camera(wmOperatorType *ot)
ot->flag = 0;
}
+static int view3d_center_lock_exec(bContext *C, wmOperator *UNUSED(op)) /* was view3d_home() in 2.4x */
+{
+ RegionView3D *rv3d = CTX_wm_region_view3d(C);
+
+ zero_v2(rv3d->ofs_lock);
+
+ WM_event_add_notifier(C, NC_SPACE | ND_SPACE_VIEW3D, CTX_wm_view3d(C));
+
+ return OPERATOR_FINISHED;
+}
+
+void VIEW3D_OT_view_center_lock(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name = "View Lock Center";
+ ot->description = "Center the view lock offset";
+ ot->idname = "VIEW3D_OT_view_center_lock";
+
+ /* api callbacks */
+ ot->exec = view3d_center_lock_exec;
+ ot->poll = view3d_lock_poll;
+
+ /* flags */
+ ot->flag = 0;
+}
+
/* ********************* Set render border operator ****************** */
static int render_border_exec(bContext *C, wmOperator *op)
diff --git a/source/blender/editors/space_view3d/view3d_intern.h b/source/blender/editors/space_view3d/view3d_intern.h
index 44c85799896..085af4e5c18 100644
--- a/source/blender/editors/space_view3d/view3d_intern.h
+++ b/source/blender/editors/space_view3d/view3d_intern.h
@@ -89,6 +89,7 @@ void VIEW3D_OT_view_lock_to_active(struct wmOperatorType *ot);
void VIEW3D_OT_view_center_cursor(struct wmOperatorType *ot);
void VIEW3D_OT_view_center_pick(struct wmOperatorType *ot);
void VIEW3D_OT_view_center_camera(struct wmOperatorType *ot);
+void VIEW3D_OT_view_center_lock(struct wmOperatorType *ot);
void VIEW3D_OT_view_pan(struct wmOperatorType *ot);
void VIEW3D_OT_view_persportho(struct wmOperatorType *ot);
void VIEW3D_OT_background_image_add(struct wmOperatorType *ot);
diff --git a/source/blender/editors/space_view3d/view3d_ops.c b/source/blender/editors/space_view3d/view3d_ops.c
index c46ae36a3a5..6780b71c906 100644
--- a/source/blender/editors/space_view3d/view3d_ops.c
+++ b/source/blender/editors/space_view3d/view3d_ops.c
@@ -148,6 +148,7 @@ void view3d_operatortypes(void)
WM_operatortype_append(VIEW3D_OT_view_center_cursor);
WM_operatortype_append(VIEW3D_OT_view_center_pick);
WM_operatortype_append(VIEW3D_OT_view_center_camera);
+ WM_operatortype_append(VIEW3D_OT_view_center_lock);
WM_operatortype_append(VIEW3D_OT_select);
WM_operatortype_append(VIEW3D_OT_select_border);
WM_operatortype_append(VIEW3D_OT_clip_border);
@@ -232,7 +233,6 @@ void view3d_keymap(wmKeyConfig *keyconf)
/*numpad +/-*/
RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", PADPLUSKEY, KM_PRESS, 0, 0)->ptr, "delta", 1);
RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", PADMINUS, KM_PRESS, 0, 0)->ptr, "delta", -1);
-
/*ctrl +/-*/
RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", EQUALKEY, KM_PRESS, KM_CTRL, 0)->ptr, "delta", 1);
RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", MINUSKEY, KM_PRESS, KM_CTRL, 0)->ptr, "delta", -1);
@@ -241,9 +241,18 @@ void view3d_keymap(wmKeyConfig *keyconf)
RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", WHEELINMOUSE, KM_PRESS, 0, 0)->ptr, "delta", 1);
RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", WHEELOUTMOUSE, KM_PRESS, 0, 0)->ptr, "delta", -1);
+ /* ... and for dolly */
+ /*numpad +/-*/
+ RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_dolly", PADPLUSKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "delta", 1);
+ RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_dolly", PADMINUS, KM_PRESS, KM_SHIFT, 0)->ptr, "delta", -1);
+ /*ctrl +/-*/
+ RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_dolly", EQUALKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0)->ptr, "delta", 1);
+ RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_dolly", MINUSKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0)->ptr, "delta", -1);
+
WM_keymap_add_item(keymap, "VIEW3D_OT_zoom_camera_1_to_1", PADENTER, KM_PRESS, KM_SHIFT, 0);
WM_keymap_add_item(keymap, "VIEW3D_OT_view_center_camera", HOMEKEY, KM_PRESS, 0, 0); /* only with camera view */
+ WM_keymap_add_item(keymap, "VIEW3D_OT_view_center_lock", HOMEKEY, KM_PRESS, 0, 0); /* only with lock view */
WM_keymap_add_item(keymap, "VIEW3D_OT_view_center_cursor", HOMEKEY, KM_PRESS, KM_ALT, 0);
WM_keymap_add_item(keymap, "VIEW3D_OT_view_center_pick", FKEY, KM_PRESS, KM_ALT, 0);
diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c
index a3421295464..3638690a0a5 100644
--- a/source/blender/editors/space_view3d/view3d_view.c
+++ b/source/blender/editors/space_view3d/view3d_view.c
@@ -847,6 +847,9 @@ void setviewmatrixview3d(Scene *scene, View3D *v3d, RegionView3D *rv3d)
}
}
else {
+ bool use_lock_ofs = false;
+
+
/* should be moved to better initialize later on XXX */
if (rv3d->viewlock)
ED_view3d_lock(rv3d);
@@ -866,15 +869,34 @@ void setviewmatrixview3d(Scene *scene, View3D *v3d, RegionView3D *rv3d)
}
}
translate_m4(rv3d->viewmat, -vec[0], -vec[1], -vec[2]);
+ use_lock_ofs = true;
}
else if (v3d->ob_centre_cursor) {
float vec[3];
copy_v3_v3(vec, give_cursor(scene, v3d));
translate_m4(rv3d->viewmat, -vec[0], -vec[1], -vec[2]);
+ use_lock_ofs = true;
}
else {
translate_m4(rv3d->viewmat, rv3d->ofs[0], rv3d->ofs[1], rv3d->ofs[2]);
}
+
+ /* lock offset */
+ if (use_lock_ofs) {
+ float persmat[4][4], persinv[4][4];
+ float vec[3];
+
+ /* we could calculate the real persmat/persinv here
+ * but it would be unreliable so better to later */
+ mul_m4_m4m4(persmat, rv3d->winmat, rv3d->viewmat);
+ invert_m4_m4(persinv, persmat);
+
+ mul_v2_v2fl(vec, rv3d->ofs_lock, rv3d->is_persp ? rv3d->dist : 1.0f);
+ vec[2] = 0.0f;
+ mul_mat3_m4_v3(persinv, vec);
+ translate_m4(rv3d->viewmat, vec[0], vec[1], vec[2]);
+ }
+ /* end lock offset */
}
}
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c
index 8818ad1d421..457a3b32e09 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -2002,8 +2002,8 @@ int initTransform(bContext *C, TransInfo *t, wmOperator *op, const wmEvent *even
initBoneEnvelope(t);
else
initBoneSize(t);
+ break;
}
- break;
case TFM_BONE_ENVELOPE:
initBoneEnvelope(t);
break;
diff --git a/source/blender/editors/transform/transform_constraints.c b/source/blender/editors/transform/transform_constraints.c
index 27b25a50eff..fd8fba91fc9 100644
--- a/source/blender/editors/transform/transform_constraints.c
+++ b/source/blender/editors/transform/transform_constraints.c
@@ -621,8 +621,8 @@ void setUserConstraint(TransInfo *t, short orientation, int mode, const char fte
float mtx[3][3] = MAT3_UNITY;
BLI_snprintf(text, sizeof(text), ftext, IFACE_("global"));
setConstraint(t, mtx, mode, text);
+ break;
}
- break;
case V3D_MANIP_LOCAL:
BLI_snprintf(text, sizeof(text), ftext, IFACE_("local"));
setLocalConstraint(t, mode, text);
diff --git a/source/blender/imbuf/intern/anim_movie.c b/source/blender/imbuf/intern/anim_movie.c
index 64e80d4383c..63790cf7d25 100644
--- a/source/blender/imbuf/intern/anim_movie.c
+++ b/source/blender/imbuf/intern/anim_movie.c
@@ -429,10 +429,9 @@ static ImBuf *avi_fetchibuf(struct anim *anim, int position)
}
}
}
- else {
-#else
- if (1) {
+ else
#endif
+ {
ibuf = IMB_allocImBuf(anim->x, anim->y, 24, IB_rect);
tmp = AVI_read_frame(anim->avi, AVI_FORMAT_RGB32, position,
diff --git a/source/blender/imbuf/intern/cineon/logImageCore.c b/source/blender/imbuf/intern/cineon/logImageCore.c
index d8d01d0cc5a..822f495d5bc 100644
--- a/source/blender/imbuf/intern/cineon/logImageCore.c
+++ b/source/blender/imbuf/intern/cineon/logImageCore.c
@@ -925,7 +925,7 @@ static float *getLinToLogLut(LogImageFile *logImage, LogImageElement logElement)
unsigned int lutsize = (unsigned int)(logElement.maxValue + 1);
unsigned int i;
- lut = MEM_mallocN(sizeof(float)*lutsize, "getLinToLogLut");
+ lut = MEM_mallocN(sizeof(float) * lutsize, "getLinToLogLut");
negativeFilmGamma = 0.6;
step = logElement.refHighQuantity / logElement.maxValue;
@@ -946,7 +946,7 @@ static float *getLogToLinLut(LogImageFile *logImage, LogImageElement logElement)
unsigned int lutsize = (unsigned int)(logElement.maxValue + 1);
unsigned int i;
- lut = MEM_mallocN(sizeof(float)*lutsize, "getLogToLinLut");
+ lut = MEM_mallocN(sizeof(float) * lutsize, "getLogToLinLut");
/* Building the Log -> Lin LUT */
step = logElement.refHighQuantity / logElement.maxValue;
@@ -980,7 +980,7 @@ static float *getLinToSrgbLut(LogImageElement logElement)
unsigned int lutsize = (unsigned int)(logElement.maxValue + 1);
unsigned int i;
- lut = MEM_mallocN(sizeof(float)*lutsize, "getLogToLinLut");
+ lut = MEM_mallocN(sizeof(float) * lutsize, "getLogToLinLut");
for (i = 0; i < lutsize; i++) {
col = (float)i / logElement.maxValue;
@@ -999,7 +999,7 @@ static float *getSrgbToLinLut(LogImageElement logElement)
unsigned int lutsize = (unsigned int)(logElement.maxValue + 1);
unsigned int i;
- lut = MEM_mallocN(sizeof(float)*lutsize, "getLogToLinLut");
+ lut = MEM_mallocN(sizeof(float) * lutsize, "getLogToLinLut");
for (i = 0; i < lutsize; i++) {
col = (float)i / logElement.maxValue;
diff --git a/source/blender/imbuf/intern/openexr/openexr_api.cpp b/source/blender/imbuf/intern/openexr/openexr_api.cpp
index 6db7cfc8efd..922c865a0d5 100644
--- a/source/blender/imbuf/intern/openexr/openexr_api.cpp
+++ b/source/blender/imbuf/intern/openexr/openexr_api.cpp
@@ -97,7 +97,8 @@ class Mem_IStream : public Imf::IStream
public:
Mem_IStream (unsigned char *exrbuf, size_t exrsize) :
- IStream("dummy"), _exrpos(0), _exrsize(exrsize) {
+ IStream("dummy"), _exrpos(0), _exrsize(exrsize)
+ {
_exrbuf = exrbuf;
}
diff --git a/source/blender/makesdna/DNA_curve_types.h b/source/blender/makesdna/DNA_curve_types.h
index 964fa11b0a2..7ff8667f90e 100644
--- a/source/blender/makesdna/DNA_curve_types.h
+++ b/source/blender/makesdna/DNA_curve_types.h
@@ -75,6 +75,7 @@ typedef struct BevList {
struct BevList *next, *prev;
int nr, dupe_nr;
int poly, hole;
+ int charidx;
} BevList;
/* These two Lines with # tell makesdna this struct can be excluded. */
diff --git a/source/blender/makesdna/DNA_view3d_types.h b/source/blender/makesdna/DNA_view3d_types.h
index 499598d2df5..fc67d2ddd7e 100644
--- a/source/blender/makesdna/DNA_view3d_types.h
+++ b/source/blender/makesdna/DNA_view3d_types.h
@@ -131,6 +131,7 @@ typedef struct RegionView3D {
char viewlock;
char viewlock_quad; /* options for quadview (store while out of quad view) */
char pad[3];
+ float ofs_lock[2]; /* normalized offset for locked view: (-1, -1) bottom left, (1, 1) upper right */
short twdrawflag;
short rflag;
diff --git a/source/blender/makesrna/intern/rna_color.c b/source/blender/makesrna/intern/rna_color.c
index 46420b38224..ec61c543a9f 100644
--- a/source/blender/makesrna/intern/rna_color.c
+++ b/source/blender/makesrna/intern/rna_color.c
@@ -252,9 +252,8 @@ static char *rna_ColorRampElement_path(PointerRNA *ptr)
RNA_pointer_create(id, &RNA_ColorRamp, ma->ramp_spec, &ramp_ptr);
COLRAMP_GETPATH;
}
+ break;
}
- break;
-
case ID_NT:
{
bNodeTree *ntree = (bNodeTree *)id;
@@ -266,9 +265,8 @@ static char *rna_ColorRampElement_path(PointerRNA *ptr)
COLRAMP_GETPATH;
}
}
+ break;
}
- break;
-
case ID_LS:
{
ListBase listbase;
@@ -312,8 +310,8 @@ static void rna_ColorRamp_update(Main *bmain, Scene *UNUSED(scene), PointerRNA *
DAG_id_tag_update(&ma->id, 0);
WM_main_add_notifier(NC_MATERIAL | ND_SHADING_DRAW, ma);
+ break;
}
- break;
case ID_NT:
{
bNodeTree *ntree = (bNodeTree *)id;
@@ -324,16 +322,16 @@ static void rna_ColorRamp_update(Main *bmain, Scene *UNUSED(scene), PointerRNA *
ED_node_tag_update_nodetree(bmain, ntree);
}
}
+ break;
}
- break;
case ID_TE:
{
Tex *tex = ptr->id.data;
DAG_id_tag_update(&tex->id, 0);
WM_main_add_notifier(NC_TEXTURE, tex);
+ break;
}
- break;
case ID_LS:
{
FreestyleLineStyle *linestyle = ptr->id.data;
diff --git a/source/blender/makesrna/intern/rna_image.c b/source/blender/makesrna/intern/rna_image.c
index 9181ab13aa7..210e0fef28f 100644
--- a/source/blender/makesrna/intern/rna_image.c
+++ b/source/blender/makesrna/intern/rna_image.c
@@ -158,10 +158,12 @@ static char *rna_ImageUser_path(PointerRNA *ptr)
/* ImageUser *iuser = ptr->data; */
switch (GS(((ID *)ptr->id.data)->name)) {
- case ID_TE: {
+ case ID_TE:
+ {
return BLI_strdup("image_user");
}
- case ID_NT: {
+ case ID_NT:
+ {
return rna_Node_ImageUser_path(ptr);
}
}
diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c
index 542be30c08b..834fb6d7d72 100644
--- a/source/blender/makesrna/intern/rna_object.c
+++ b/source/blender/makesrna/intern/rna_object.c
@@ -983,8 +983,8 @@ static void rna_GameObjectSettings_physics_type_set(PointerRNA *ptr, int value)
case OB_BODY_TYPE_CHARACTER:
ob->gameflag |= OB_COLLISION | OB_GHOST | OB_CHARACTER;
ob->gameflag &= ~(OB_SENSOR | OB_OCCLUDER | OB_DYNAMIC | OB_RIGID_BODY | OB_SOFT_BODY | OB_ACTOR |
- OB_ANISOTROPIC_FRICTION | OB_DO_FH | OB_ROT_FH | OB_COLLISION_RESPONSE | OB_NAVMESH);
- break;
+ OB_ANISOTROPIC_FRICTION | OB_DO_FH | OB_ROT_FH | OB_COLLISION_RESPONSE | OB_NAVMESH);
+ break;
case OB_BODY_TYPE_STATIC:
ob->gameflag |= OB_COLLISION;
ob->gameflag &= ~(OB_DYNAMIC | OB_RIGID_BODY | OB_SOFT_BODY | OB_OCCLUDER | OB_CHARACTER | OB_SENSOR | OB_NAVMESH);
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index 5ae4400a19c..d6dc2162720 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -525,6 +525,13 @@ static void rna_Scene_frame_current_set(PointerRNA *ptr, int value)
data->r.cfra = value;
}
+static float rna_Scene_frame_current_final_get(PointerRNA *ptr)
+{
+ Scene *scene = (Scene *)ptr->data;
+
+ return BKE_scene_frame_get_from_ctime(scene, (float)scene->r.cfra);
+}
+
static void rna_Scene_start_frame_set(PointerRNA *ptr, int value)
{
Scene *data = (Scene *)ptr->data;
@@ -5149,6 +5156,13 @@ void RNA_def_scene(BlenderRNA *brna)
"Number of frames to skip forward while rendering/playing back each frame");
RNA_def_property_update(prop, NC_SCENE | ND_FRAME, NULL);
+ prop = RNA_def_property(srna, "frame_current_final", PROP_FLOAT, PROP_TIME);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
+ RNA_def_property_range(prop, MINAFRAME, MAXFRAME);
+ RNA_def_property_float_funcs(prop, "rna_Scene_frame_current_final_get", NULL, NULL);
+ RNA_def_property_ui_text(prop, "Current Frame Final",
+ "Current frame with subframe and time remapping applied");
+
/* Preview Range (frame-range for UI playback) */
prop = RNA_def_property(srna, "use_preview_range", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c
index 24eab621f5e..0d1c684e6a1 100644
--- a/source/blender/makesrna/intern/rna_wm.c
+++ b/source/blender/makesrna/intern/rna_wm.c
@@ -770,10 +770,8 @@ static PointerRNA rna_WindowManager_active_keyconfig_get(PointerRNA *ptr)
wmWindowManager *wm = ptr->data;
wmKeyConfig *kc;
- for (kc = wm->keyconfigs.first; kc; kc = kc->next)
- if (strcmp(kc->idname, U.keyconfigstr) == 0)
- break;
-
+ kc = BLI_findstring(&wm->keyconfigs, U.keyconfigstr, offsetof(wmKeyConfig, idname));
+
if (!kc)
kc = wm->defaultconf;
diff --git a/source/blender/makesrna/intern/rna_wm_api.c b/source/blender/makesrna/intern/rna_wm_api.c
index 5805bcefdb4..c822378e76e 100644
--- a/source/blender/makesrna/intern/rna_wm_api.c
+++ b/source/blender/makesrna/intern/rna_wm_api.c
@@ -333,17 +333,23 @@ void RNA_api_wm(StructRNA *srna)
/* Progress bar interface */
func = RNA_def_function(srna, "progress_begin", "rna_progress_begin");
+ RNA_def_function_ui_description(func, "Start Progress bar");
+
parm = RNA_def_property(func, "min", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_ui_text(parm, "min", "any value in range [0,9999]");
RNA_def_property_flag(parm, PROP_REQUIRED);
+
parm = RNA_def_property(func, "max", PROP_FLOAT, PROP_NONE);
RNA_def_property_flag(parm, PROP_REQUIRED);
+ RNA_def_property_ui_text(parm, "max", "any value in range [min+1,9998]");
func = RNA_def_function(srna, "progress_update", "rna_progress_update");
parm = RNA_def_property(func, "value", PROP_FLOAT, PROP_NONE);
RNA_def_property_flag(parm, PROP_REQUIRED);
- RNA_def_property_ui_text(parm, "value", "any value between min and max as set in progress_init()");
+ RNA_def_property_ui_text(parm, "value", "any value between min and max as set in progress_begin()");
func = RNA_def_function(srna, "progress_end", "rna_progress_end");
+ RNA_def_function_ui_description(func, "Terminate Progress bar");
/* invoke functions, for use with python */
func = RNA_def_function(srna, "invoke_props_popup", "rna_Operator_props_popup");
diff --git a/source/blender/modifiers/intern/MOD_shapekey.c b/source/blender/modifiers/intern/MOD_shapekey.c
index 697ccdc49a4..fef4c7ccedb 100644
--- a/source/blender/modifiers/intern/MOD_shapekey.c
+++ b/source/blender/modifiers/intern/MOD_shapekey.c
@@ -55,17 +55,12 @@ static void deformVerts(ModifierData *md, Object *ob,
ModifierApplyFlag UNUSED(flag))
{
Key *key = BKE_key_from_object(ob);
- float (*deformedVerts)[3];
if (key && key->block.first) {
int deformedVerts_tot;
- deformedVerts = (float(*)[3])BKE_key_evaluate_object(md->scene, ob, &deformedVerts_tot);
- if (deformedVerts) {
- if (numVerts == deformedVerts_tot) {
- memcpy(vertexCos, deformedVerts, sizeof(float) * 3 * numVerts);
- }
- MEM_freeN(deformedVerts);
- }
+ BKE_key_evaluate_object_ex(md->scene, ob, &deformedVerts_tot,
+ (float *)vertexCos, sizeof(*vertexCos) * numVerts);
+
}
}
diff --git a/source/blender/nodes/NOD_static_types.h b/source/blender/nodes/NOD_static_types.h
index 8e3896f40f7..69f2a0ae955 100644
--- a/source/blender/nodes/NOD_static_types.h
+++ b/source/blender/nodes/NOD_static_types.h
@@ -69,7 +69,7 @@ DefNode( ShaderNode, SH_NODE_OUTPUT_MATERIAL, 0, "OU
DefNode( ShaderNode, SH_NODE_OUTPUT_LAMP, 0, "OUTPUT_LAMP", OutputLamp, "Lamp Output", "" )
DefNode( ShaderNode, SH_NODE_OUTPUT_WORLD, 0, "OUTPUT_WORLD", OutputWorld, "World Output", "" )
DefNode( ShaderNode, SH_NODE_FRESNEL, 0, "FRESNEL", Fresnel, "Fresnel", "" )
-DefNode( ShaderNode, SH_NODE_LAYER_WEIGHT, 0, "LAYER_WEIGHT", LayerWeight, "LayerWeight", "" )
+DefNode( ShaderNode, SH_NODE_LAYER_WEIGHT, 0, "LAYER_WEIGHT", LayerWeight, "Layer Weight", "" )
DefNode( ShaderNode, SH_NODE_MIX_SHADER, 0, "MIX_SHADER", MixShader, "Mix Shader", "" )
DefNode( ShaderNode, SH_NODE_ADD_SHADER, 0, "ADD_SHADER", AddShader, "Add Shader", "" )
DefNode( ShaderNode, SH_NODE_ATTRIBUTE, def_sh_attribute, "ATTRIBUTE", Attribute, "Attribute", "" )
diff --git a/source/blender/nodes/intern/node_socket.c b/source/blender/nodes/intern/node_socket.c
index 0fd6d871dc1..92d403685d0 100644
--- a/source/blender/nodes/intern/node_socket.c
+++ b/source/blender/nodes/intern/node_socket.c
@@ -60,26 +60,30 @@ struct bNodeSocket *node_add_socket_from_template(struct bNodeTree *ntree, struc
/* initialize default_value */
switch (stemp->type) {
- case SOCK_FLOAT: {
+ case SOCK_FLOAT:
+ {
bNodeSocketValueFloat *dval = sock->default_value;
dval->value = stemp->val1;
dval->min = stemp->min;
dval->max = stemp->max;
break;
}
- case SOCK_INT: {
+ case SOCK_INT:
+ {
bNodeSocketValueInt *dval = sock->default_value;
dval->value = (int)stemp->val1;
dval->min = (int)stemp->min;
dval->max = (int)stemp->max;
break;
}
- case SOCK_BOOLEAN: {
+ case SOCK_BOOLEAN:
+ {
bNodeSocketValueBoolean *dval = sock->default_value;
dval->value = (int)stemp->val1;
break;
}
- case SOCK_VECTOR: {
+ case SOCK_VECTOR:
+ {
bNodeSocketValueVector *dval = sock->default_value;
dval->value[0] = stemp->val1;
dval->value[1] = stemp->val2;
@@ -88,7 +92,8 @@ struct bNodeSocket *node_add_socket_from_template(struct bNodeTree *ntree, struc
dval->max = stemp->max;
break;
}
- case SOCK_RGBA: {
+ case SOCK_RGBA:
+ {
bNodeSocketValueRGBA *dval = sock->default_value;
dval->value[0] = stemp->val1;
dval->value[1] = stemp->val2;
@@ -202,7 +207,8 @@ void node_socket_init_default_value(bNodeSocket *sock)
return; /* already initialized */
switch (type) {
- case SOCK_FLOAT: {
+ case SOCK_FLOAT:
+ {
bNodeSocketValueFloat *dval = MEM_callocN(sizeof(bNodeSocketValueFloat), "node socket value float");
dval->subtype = subtype;
dval->value = 0.0f;
@@ -212,7 +218,8 @@ void node_socket_init_default_value(bNodeSocket *sock)
sock->default_value = dval;
break;
}
- case SOCK_INT: {
+ case SOCK_INT:
+ {
bNodeSocketValueInt *dval = MEM_callocN(sizeof(bNodeSocketValueInt), "node socket value int");
dval->subtype = subtype;
dval->value = 0;
@@ -222,14 +229,16 @@ void node_socket_init_default_value(bNodeSocket *sock)
sock->default_value = dval;
break;
}
- case SOCK_BOOLEAN: {
+ case SOCK_BOOLEAN:
+ {
bNodeSocketValueBoolean *dval = MEM_callocN(sizeof(bNodeSocketValueBoolean), "node socket value bool");
dval->value = false;
sock->default_value = dval;
break;
}
- case SOCK_VECTOR: {
+ case SOCK_VECTOR:
+ {
static float default_value[] = { 0.0f, 0.0f, 0.0f };
bNodeSocketValueVector *dval = MEM_callocN(sizeof(bNodeSocketValueVector), "node socket value vector");
dval->subtype = subtype;
@@ -240,7 +249,8 @@ void node_socket_init_default_value(bNodeSocket *sock)
sock->default_value = dval;
break;
}
- case SOCK_RGBA: {
+ case SOCK_RGBA:
+ {
static float default_value[] = { 0.0f, 0.0f, 0.0f, 1.0f };
bNodeSocketValueRGBA *dval = MEM_callocN(sizeof(bNodeSocketValueRGBA), "node socket value color");
copy_v4_v4(dval->value, default_value);
@@ -248,7 +258,8 @@ void node_socket_init_default_value(bNodeSocket *sock)
sock->default_value = dval;
break;
}
- case SOCK_STRING: {
+ case SOCK_STRING:
+ {
bNodeSocketValueString *dval = MEM_callocN(sizeof(bNodeSocketValueString), "node socket value string");
dval->subtype = subtype;
dval->value[0] = '\0';
@@ -271,37 +282,43 @@ void node_socket_copy_default_value(bNodeSocket *to, bNodeSocket *from)
node_socket_init_default_value(to);
switch (from->typeinfo->type) {
- case SOCK_FLOAT: {
+ case SOCK_FLOAT:
+ {
bNodeSocketValueFloat *toval = to->default_value;
bNodeSocketValueFloat *fromval = from->default_value;
*toval = *fromval;
break;
}
- case SOCK_INT: {
+ case SOCK_INT:
+ {
bNodeSocketValueInt *toval = to->default_value;
bNodeSocketValueInt *fromval = from->default_value;
*toval = *fromval;
break;
}
- case SOCK_BOOLEAN: {
+ case SOCK_BOOLEAN:
+ {
bNodeSocketValueBoolean *toval = to->default_value;
bNodeSocketValueBoolean *fromval = from->default_value;
*toval = *fromval;
break;
}
- case SOCK_VECTOR: {
+ case SOCK_VECTOR:
+ {
bNodeSocketValueVector *toval = to->default_value;
bNodeSocketValueVector *fromval = from->default_value;
*toval = *fromval;
break;
}
- case SOCK_RGBA: {
+ case SOCK_RGBA:
+ {
bNodeSocketValueRGBA *toval = to->default_value;
bNodeSocketValueRGBA *fromval = from->default_value;
*toval = *fromval;
break;
}
- case SOCK_STRING: {
+ case SOCK_STRING:
+ {
bNodeSocketValueString *toval = to->default_value;
bNodeSocketValueString *fromval = from->default_value;
*toval = *fromval;
@@ -334,21 +351,24 @@ static void standard_node_socket_interface_verify_socket(bNodeTree *UNUSED(ntree
node_socket_init_default_value(sock);
switch (stemp->typeinfo->type) {
- case SOCK_FLOAT: {
+ case SOCK_FLOAT:
+ {
bNodeSocketValueFloat *toval = sock->default_value;
bNodeSocketValueFloat *fromval = stemp->default_value;
toval->min = fromval->min;
toval->max = fromval->max;
break;
}
- case SOCK_INT: {
+ case SOCK_INT:
+ {
bNodeSocketValueInt *toval = sock->default_value;
bNodeSocketValueInt *fromval = stemp->default_value;
toval->min = fromval->min;
toval->max = fromval->max;
break;
}
- case SOCK_VECTOR: {
+ case SOCK_VECTOR:
+ {
bNodeSocketValueVector *toval = sock->default_value;
bNodeSocketValueVector *fromval = stemp->default_value;
toval->min = fromval->min;
diff --git a/source/blender/nodes/shader/nodes/node_shader_math.c b/source/blender/nodes/shader/nodes/node_shader_math.c
index b1a27f194cc..b0570a7d673 100644
--- a/source/blender/nodes/shader/nodes/node_shader_math.c
+++ b/source/blender/nodes/shader/nodes/node_shader_math.c
@@ -64,32 +64,32 @@ static void node_shader_exec_math(void *UNUSED(data), int UNUSED(thread), bNode
out[0]->vec[0] = 0.0;
else
out[0]->vec[0] = in[0]->vec[0] / in[1]->vec[0];
+ break;
}
- break;
case 4: /* Sine */
{
if (in[0]->hasinput || !in[1]->hasinput) /* This one only takes one input, so we've got to choose. */
out[0]->vec[0] = sin(in[0]->vec[0]);
else
out[0]->vec[0] = sin(in[1]->vec[0]);
+ break;
}
- break;
case 5: /* Cosine */
{
if (in[0]->hasinput || !in[1]->hasinput) /* This one only takes one input, so we've got to choose. */
out[0]->vec[0] = cos(in[0]->vec[0]);
else
out[0]->vec[0] = cos(in[1]->vec[0]);
+ break;
}
- break;
case 6: /* Tangent */
{
if (in[0]->hasinput || !in[1]->hasinput) /* This one only takes one input, so we've got to choose. */
out[0]->vec[0] = tan(in[0]->vec[0]);
else
out[0]->vec[0] = tan(in[1]->vec[0]);
+ break;
}
- break;
case 7: /* Arc-Sine */
{
if (in[0]->hasinput || !in[1]->hasinput) { /* This one only takes one input, so we've got to choose. */
@@ -106,8 +106,8 @@ static void node_shader_exec_math(void *UNUSED(data), int UNUSED(thread), bNode
else
out[0]->vec[0] = 0.0;
}
+ break;
}
- break;
case 8: /* Arc-Cosine */
{
if (in[0]->hasinput || !in[1]->hasinput) { /* This one only takes one input, so we've got to choose. */
@@ -124,16 +124,16 @@ static void node_shader_exec_math(void *UNUSED(data), int UNUSED(thread), bNode
else
out[0]->vec[0] = 0.0;
}
+ break;
}
- break;
case 9: /* Arc-Tangent */
{
if (in[0]->hasinput || !in[1]->hasinput) /* This one only takes one input, so we've got to choose. */
out[0]->vec[0] = atan(in[0]->vec[0]);
else
out[0]->vec[0] = atan(in[1]->vec[0]);
+ break;
}
- break;
case 10: /* Power */
{
/* Only raise negative numbers by full integers */
@@ -152,8 +152,8 @@ static void node_shader_exec_math(void *UNUSED(data), int UNUSED(thread), bNode
}
}
+ break;
}
- break;
case 11: /* Logarithm */
{
/* Don't want any imaginary numbers... */
@@ -161,56 +161,56 @@ static void node_shader_exec_math(void *UNUSED(data), int UNUSED(thread), bNode
out[0]->vec[0] = log(in[0]->vec[0]) / log(in[1]->vec[0]);
else
out[0]->vec[0] = 0.0;
+ break;
}
- break;
case 12: /* Minimum */
{
if (in[0]->vec[0] < in[1]->vec[0])
out[0]->vec[0] = in[0]->vec[0];
else
out[0]->vec[0] = in[1]->vec[0];
+ break;
}
- break;
case 13: /* Maximum */
{
if (in[0]->vec[0] > in[1]->vec[0])
out[0]->vec[0] = in[0]->vec[0];
else
out[0]->vec[0] = in[1]->vec[0];
+ break;
}
- break;
case 14: /* Round */
{
if (in[0]->hasinput || !in[1]->hasinput) /* This one only takes one input, so we've got to choose. */
out[0]->vec[0] = (in[0]->vec[0] < 0) ? (int)(in[0]->vec[0] - 0.5f) : (int)(in[0]->vec[0] + 0.5f);
else
out[0]->vec[0] = (in[1]->vec[0] < 0) ? (int)(in[1]->vec[0] - 0.5f) : (int)(in[1]->vec[0] + 0.5f);
+ break;
}
- break;
case 15: /* Less Than */
{
if (in[0]->vec[0] < in[1]->vec[0])
out[0]->vec[0] = 1.0f;
else
out[0]->vec[0] = 0.0f;
+ break;
}
- break;
case 16: /* Greater Than */
{
if (in[0]->vec[0] > in[1]->vec[0])
out[0]->vec[0] = 1.0f;
else
out[0]->vec[0] = 0.0f;
+ break;
}
- break;
case 17: /* Modulo */
{
if (in[1]->vec[0] == 0.0f)
out[0]->vec[0] = 0.0f;
else
out[0]->vec[0] = fmod(in[0]->vec[0], in[1]->vec[0]);
+ break;
}
- break;
}
}
diff --git a/source/blender/nodes/shader/nodes/node_shader_particle_info.c b/source/blender/nodes/shader/nodes/node_shader_particle_info.c
index dc98b7d5f63..05f7301776f 100644
--- a/source/blender/nodes/shader/nodes/node_shader_particle_info.c
+++ b/source/blender/nodes/shader/nodes/node_shader_particle_info.c
@@ -39,7 +39,7 @@ static bNodeSocketTemplate outputs[] = {
{ SOCK_VECTOR, 0, "Velocity" },
{ SOCK_VECTOR, 0, "Angular Velocity" },
{ -1, 0, "" }
- };
+};
/* node type definition */
void register_node_type_sh_particle_info(void)
diff --git a/source/blender/python/bmesh/bmesh_py_types_meshdata.c b/source/blender/python/bmesh/bmesh_py_types_meshdata.c
index 64435792ae2..b8572baa7f9 100644
--- a/source/blender/python/bmesh/bmesh_py_types_meshdata.c
+++ b/source/blender/python/bmesh/bmesh_py_types_meshdata.c
@@ -499,7 +499,7 @@ static PySequenceMethods bpy_bmdeformvert_as_sequence = {
(objobjproc)bpy_bmdeformvert_contains, /* sq_contains */
(binaryfunc) NULL, /* sq_inplace_concat */
(ssizeargfunc) NULL, /* sq_inplace_repeat */
- };
+};
static PyMappingMethods bpy_bmdeformvert_as_mapping = {
(lenfunc)bpy_bmdeformvert_len,
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index dc2f19eded7..0a00da00cea 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -1638,8 +1638,8 @@ static int wm_handler_fileselect_call(bContext *C, ListBase *handlers, wmEventHa
ED_fileselect_set_params(sfile);
action = WM_HANDLER_BREAK;
+ break;
}
- break;
case EVT_FILESELECT_EXEC:
case EVT_FILESELECT_CANCEL:
@@ -1734,8 +1734,8 @@ static int wm_handler_fileselect_call(bContext *C, ListBase *handlers, wmEventHa
wm_event_free_handler(handler);
action = WM_HANDLER_BREAK;
+ break;
}
- break;
}
return action;
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c
index 981467cbba6..ddc48ce6332 100644
--- a/source/blender/windowmanager/intern/wm_operators.c
+++ b/source/blender/windowmanager/intern/wm_operators.c
@@ -307,14 +307,9 @@ static int wm_macro_modal(bContext *C, wmOperator *op, const wmEvent *event)
/* if new operator is modal and also added its own handler */
if (retval & OPERATOR_RUNNING_MODAL && op->opm != opm) {
wmWindow *win = CTX_wm_window(C);
- wmEventHandler *handler = NULL;
-
- for (handler = win->modalhandlers.first; handler; handler = handler->next) {
- /* first handler in list is the new one */
- if (handler->op == op)
- break;
- }
+ wmEventHandler *handler;
+ handler = BLI_findptr(&win->modalhandlers, op, offsetof(wmEventHandler, op));
if (handler) {
BLI_remlink(&win->modalhandlers, handler);
wm_event_free_handler(handler);
diff --git a/source/blender/windowmanager/wm_event_types.h b/source/blender/windowmanager/wm_event_types.h
index 6dcef9db407..df3096eed07 100644
--- a/source/blender/windowmanager/wm_event_types.h
+++ b/source/blender/windowmanager/wm_event_types.h
@@ -135,7 +135,7 @@ enum {
NDOF_BUTTON_C,
// the end
NDOF_LAST
- };
+};
/* SYSTEM : 0x01xx */
diff --git a/source/gameengine/Expressions/KX_HashedPtr.cpp b/source/gameengine/Expressions/KX_HashedPtr.cpp
index 555ef7f9500..bd42892cc8d 100644
--- a/source/gameengine/Expressions/KX_HashedPtr.cpp
+++ b/source/gameengine/Expressions/KX_HashedPtr.cpp
@@ -36,6 +36,8 @@ unsigned int KX_Hash(void *inDWord)
{
#if defined(_WIN64) && !defined(FREE_WINDOWS64)
unsigned __int64 key = (unsigned __int64)inDWord;
+#elif defined(FREE_WINDOWS64)
+ unsigned long long key = (unsigned long long)inDWord;
#else
unsigned long key = (unsigned long)inDWord;
#endif
diff --git a/source/gameengine/Ketsji/KX_GameObject.cpp b/source/gameengine/Ketsji/KX_GameObject.cpp
index 871318bcedc..ec62ae63f0c 100644
--- a/source/gameengine/Ketsji/KX_GameObject.cpp
+++ b/source/gameengine/Ketsji/KX_GameObject.cpp
@@ -38,6 +38,8 @@
#if defined(_WIN64) && !defined(FREE_WINDOWS64)
typedef unsigned __int64 uint_ptr;
+#elif defined(FREE_WINDOWS64)
+typedef unsigned long long uint_ptr;
#else
typedef unsigned long uint_ptr;
#endif
diff --git a/source/gameengine/Ketsji/KX_IPO_SGController.cpp b/source/gameengine/Ketsji/KX_IPO_SGController.cpp
index 4c43633d4c5..f221b7c6cd4 100644
--- a/source/gameengine/Ketsji/KX_IPO_SGController.cpp
+++ b/source/gameengine/Ketsji/KX_IPO_SGController.cpp
@@ -33,6 +33,8 @@
#if defined(_WIN64) && !defined(FREE_WINDOWS64)
typedef unsigned __int64 uint_ptr;
+#elif defined(FREE_WINDOWS64)
+typedef unsigned long long uint_ptr;
#else
typedef unsigned long uint_ptr;
#endif