
This tool can be used to rapidly edit curves. The current set of functionalities for Bezier splines are as follows: The functionalities are divided into three versions of the operator: * Left-Click * Ctrl + Left-Click * Double Click All current functionalities and their defaults are as follows: * Extrude Point: Add a point connected to an existing point. Enabled for Left-Click. * Extrude Handle Type: Type of the handles of the extruded points. Can be either Vector or Auto. Defaults to Vector. * Delete Point: Delete existing point. Enabled for Ctrl + Left-Click. * Insert Point: Insert a point into a curve segment. Enabled for Ctrl + Left-Click. * Move Segment: Move curve segment. Enabled for Left-Click. * Select Point: Select a single point or handle at a time. Enabled for Left-Click. * Move point: Move existing points or handles. Enabled for Left-Click. * Close Spline: Close spline by clicking the endpoints consecutively. Defaults to True. * Close Spline Method: The condition for Close Spline to activate. Can be one of None, On Press or On Click. Defaults to On Click for Left-Click and None for the others. * None: Functionality is turned off. * On Press: Activate on mouse down. This makes it possible to move the handles by dragging immediately after closing the spline. * On Click: Activate on mouse release. This makes it possible to avoid triggering the Close Spline functionality by dragging afterward. * Toggle Vector: Toggle handle between Vector and Auto handle types. Enabled for Double Click on a handle. * Cycle Handle Type: Cycle between all four handle types. Enabled for Double Click on the middle point of a Bezier point. The keybindings for the following functionalities can be adjusted from the modal keymap * Free-Align Toggle: Toggle between Free and Align handle types. Defaults to Left Shift. Activated on hold. * Move Adjacent Handle: Move the closer handle of the adjacent vertex. Defaults to Left Ctrl. Activated on hold. * Move Entire: Move the entire point by moving by grabbing on the handle Defaults to Spacebar. Activated on hold. * Link Handles: Mirror the movement of one handle onto the other. Defaults to Right Ctrl. Activated on press. * Lock Handle Angle: Move the handle along its current angle. Defaults to Left Alt. Activated on hold. All the above functionalities, except for Move Segment and those that work with handles, work similarly in the case of Poly and NURBS splines. Reviewed By: HooglyBoogly, weasel, campbellbarton Differential Revision: http://developer.blender.org/D12155
275 lines
7.2 KiB
YAML
275 lines
7.2 KiB
YAML
|
|
# Configuration of clang-format
|
|
# =============================
|
|
#
|
|
# Tested to work with versions: 8 to 11.
|
|
|
|
# This causes parameters on continuations to align to the opening brace.
|
|
#
|
|
# like_this_long_name(parameter_one,
|
|
# parameter_two,
|
|
# parameter_three);
|
|
#
|
|
AlignAfterOpenBracket: 'Align'
|
|
|
|
# Disallow short functions on one line; break them up.
|
|
AllowShortBlocksOnASingleLine: false
|
|
|
|
# These two settings trigger stacking of parameters in most cases; this is
|
|
# easier to read and also makes diffs easier to read (since an added or removed
|
|
# parameter is obvious). For example, function calls will look like this:
|
|
#
|
|
# like_this_long_name(parameter_one,
|
|
# parameter_two,
|
|
# parameter_three,
|
|
# parameter_four,
|
|
# parameter_five,
|
|
# parameter_six);
|
|
#
|
|
# Instead of:
|
|
#
|
|
# like_this_long_name(parameter_one, parameter_two, parameter_three, parameter_four,
|
|
# parameter_five, parameter_six);
|
|
#
|
|
BinPackArguments: false
|
|
BinPackParameters: false
|
|
|
|
# Line width (don't exceed 100).
|
|
ColumnLimit: 99
|
|
|
|
# Cause initializer lists to have one member initialized per line, in the case
|
|
# that all initializers can't fit on a single line.
|
|
ConstructorInitializerAllOnOneLineOrOnePerLine: true
|
|
|
|
# Indent the : after a constructor. For example:
|
|
#
|
|
# explicit foo_class ()
|
|
# : member1_(5)
|
|
# {
|
|
# }
|
|
#
|
|
ConstructorInitializerIndentWidth: 4
|
|
|
|
# Make access modifier slightly more visible.
|
|
AccessModifierOffset: -1
|
|
|
|
# This will unfortunately use spaces in some cases where it's not desired (like
|
|
# function calls) but the overall result is better since it will allow
|
|
# alignment to work properly with different tab width settings.
|
|
ContinuationIndentWidth: 4
|
|
|
|
# This tries to match Blender's style as much as possible. One
|
|
BreakBeforeBraces: Custom
|
|
BraceWrapping: {
|
|
AfterClass: 'false'
|
|
AfterControlStatement: 'false'
|
|
AfterEnum : 'false'
|
|
AfterFunction : 'true'
|
|
AfterNamespace : 'false'
|
|
AfterStruct : 'false'
|
|
AfterUnion : 'false'
|
|
BeforeCatch : 'true'
|
|
BeforeElse : 'true'
|
|
IndentBraces : 'false'
|
|
AfterObjCDeclaration: 'true'
|
|
}
|
|
|
|
# For switch statements, indent the cases.
|
|
IndentCaseLabels: true
|
|
|
|
# Indent after the hash inside preprocessor directives
|
|
IndentPPDirectives: AfterHash
|
|
|
|
BreakBeforeTernaryOperators: false
|
|
|
|
SpaceAfterTemplateKeyword: false
|
|
|
|
# Handy comment at the end of each C++ name space.
|
|
FixNamespaceComments: true
|
|
|
|
# Use "if (...)" instead of "if(...)", but have function calls like foo().
|
|
SpaceBeforeParens: ControlStatements
|
|
SpaceInEmptyParentheses: false
|
|
|
|
# Use two spaces before trailing comments, for example
|
|
#
|
|
# foo = bar; // comment
|
|
#
|
|
# Note that this doesn't work for C-style comments.
|
|
SpacesBeforeTrailingComments: 2
|
|
|
|
# Reflow comments, developers must disable formatting as with code to override this.
|
|
ReflowComments: true
|
|
|
|
# Never use tabs for indentation.
|
|
# Note: TabWidth and IndentWidth must be the same, or strange things happen.
|
|
UseTab: Never
|
|
TabWidth: 2
|
|
IndentWidth: 2
|
|
|
|
# Add a big penalty on breaking after the return type of functions. For example,
|
|
#
|
|
# static void foo(...)
|
|
#
|
|
# Instead of:
|
|
#
|
|
# static void
|
|
# foo(very long content here that maybe could be stacked)
|
|
#
|
|
PenaltyReturnTypeOnItsOwnLine: 10000
|
|
|
|
# Avoid having function calls broken onto a new line:
|
|
#
|
|
# int a = foo(
|
|
# long, list, of, many, params);
|
|
#
|
|
# Instead of:
|
|
#
|
|
# int a =
|
|
# foo(long, list, of, many, params);
|
|
#
|
|
PenaltyBreakAssignment: 100
|
|
|
|
AllowShortFunctionsOnASingleLine: None
|
|
|
|
SortIncludes: true
|
|
|
|
# Don't right align escaped newlines to the right because we have a wide default
|
|
AlignEscapedNewlines: DontAlign
|
|
|
|
# Always break:
|
|
#
|
|
# const char *foo =
|
|
# "multi"
|
|
# "line";
|
|
#
|
|
# Instead of:
|
|
#
|
|
# const char *foo = "multi"
|
|
# "line";
|
|
#
|
|
AlwaysBreakBeforeMultilineStrings: true
|
|
|
|
# We don't want literal strings to break,
|
|
# however clang-format seems to ignore this (sigh).
|
|
PenaltyBreakString: 1000000
|
|
|
|
# There are macros in Blender for custom for loops; tell Clang to treat them
|
|
# like loops rather than an expression, and so put the { on the same line.
|
|
#
|
|
# To find these use multi-line regex search:
|
|
# "^\s+[A-Z][A-Z0-9_]+\s*\([^\n]*\)\n\s*\{"
|
|
ForEachMacros:
|
|
- BEGIN_ANIMFILTER_SUBCHANNELS
|
|
- BKE_pbvh_vertex_iter_begin
|
|
- BLI_FOREACH_SPARSE_RANGE
|
|
- BLI_SMALLSTACK_ITER_BEGIN
|
|
- BMO_ITER
|
|
- BMO_ITER_INDEX
|
|
- BMW_ITER
|
|
- BM_FACES_OF_VERT_ITER_BEGIN
|
|
- BM_ITER_BPY_BM_SEQ
|
|
- BM_ITER_ELEM
|
|
- BM_ITER_ELEM_INDEX
|
|
- BM_ITER_MESH
|
|
- BM_ITER_MESH_INDEX
|
|
- BM_ITER_MESH_MUTABLE
|
|
- BM_LOOPS_OF_VERT_ITER_BEGIN
|
|
- BOOST_FOREACH
|
|
- CTX_DATA_BEGIN
|
|
- CTX_DATA_BEGIN_WITH_ID
|
|
- DEG_OBJECT_ITER_BEGIN
|
|
- DEG_OBJECT_ITER_FOR_RENDER_ENGINE_BEGIN
|
|
- DRW_ENABLED_ENGINE_ITER
|
|
- DRIVER_TARGETS_LOOPER_BEGIN
|
|
- DRIVER_TARGETS_USED_LOOPER_BEGIN
|
|
- FOREACH_BASE_IN_EDIT_MODE_BEGIN
|
|
- FOREACH_BASE_IN_MODE_BEGIN
|
|
- FOREACH_BEGIN
|
|
- FOREACH_COLLECTION_BEGIN
|
|
- FOREACH_COLLECTION_OBJECT_RECURSIVE_BEGIN
|
|
- FOREACH_COLLECTION_VISIBLE_OBJECT_RECURSIVE_BEGIN
|
|
- FOREACH_EDIT_OBJECT_BEGIN
|
|
- FOREACH_MAIN_ID_BEGIN
|
|
- FOREACH_MAIN_LISTBASE_BEGIN
|
|
- FOREACH_MAIN_LISTBASE_ID_BEGIN
|
|
- FOREACH_MESH_BUFFER_CACHE
|
|
- FOREACH_NODETREE_BEGIN
|
|
- FOREACH_OBJECT_BEGIN
|
|
- FOREACH_OBJECT_FLAG_BEGIN
|
|
- FOREACH_OBJECT_IN_EDIT_MODE_BEGIN
|
|
- FOREACH_OBJECT_IN_MODE_BEGIN
|
|
- FOREACH_OBJECT_RENDERABLE_BEGIN
|
|
- FOREACH_PCHAN_SELECTED_IN_OBJECT_BEGIN
|
|
- FOREACH_PCHAN_VISIBLE_IN_OBJECT_BEGIN
|
|
- FOREACH_SCENE_COLLECTION_BEGIN
|
|
- FOREACH_SCENE_OBJECT_BEGIN
|
|
- FOREACH_SELECTED_BASE_BEGIN
|
|
- FOREACH_SELECTED_BEZT_BEGIN
|
|
- FOREACH_SELECTED_EDITABLE_OBJECT_BEGIN
|
|
- FOREACH_SELECTED_OBJECT_BEGIN
|
|
- FOREACH_TRANS_DATA_CONTAINER
|
|
- FOREACH_VIEW_LAYER_TO_RENDER_BEGIN
|
|
- FOREACH_VISIBLE_BASE_BEGIN
|
|
- FOREACH_VISIBLE_OBJECT_BEGIN
|
|
- GHASH_FOREACH_BEGIN
|
|
- GHASH_ITER
|
|
- GHASH_ITER_INDEX
|
|
- GPU_SELECT_LOAD_IF_PICKSEL_LIST
|
|
- GP_EDITABLE_STROKES_BEGIN
|
|
- GP_EVALUATED_STROKES_BEGIN
|
|
- GSET_FOREACH_BEGIN
|
|
- GSET_ITER
|
|
- GSET_ITER_INDEX
|
|
- ITER_BEGIN
|
|
- ITER_PIXELS
|
|
- ITER_SLOTS
|
|
- ITER_SLOTS_BEGIN
|
|
- LOOP_EDITED_POINTS
|
|
- LOOP_KEYS
|
|
- LOOP_POINTS
|
|
- LOOP_SELECTED_KEYS
|
|
- LOOP_SELECTED_POINTS
|
|
- LOOP_TAGGED_KEYS
|
|
- LOOP_TAGGED_POINTS
|
|
- LOOP_UNSELECTED_POINTS
|
|
- LOOP_VISIBLE_KEYS
|
|
- LOOP_VISIBLE_POINTS
|
|
- LISTBASE_CIRCULAR_BACKWARD_BEGIN
|
|
- LISTBASE_CIRCULAR_FORWARD_BEGIN
|
|
- LISTBASE_FOREACH
|
|
- LISTBASE_FOREACH_BACKWARD
|
|
- LISTBASE_FOREACH_MUTABLE
|
|
- LISTBASE_FOREACH_BACKWARD_MUTABLE
|
|
- LISTBASE_FOREACH_INDEX
|
|
- MAN_ITER_AXES_BEGIN
|
|
- NODE_INSTANCE_HASH_ITER
|
|
- NODE_SOCKET_TYPES_BEGIN
|
|
- NODE_TREE_TYPES_BEGIN
|
|
- NODE_TYPES_BEGIN
|
|
- PIXEL_LOOPER_BEGIN
|
|
- PIXEL_LOOPER_BEGIN_CHANNELS
|
|
- RENDER_PASS_ITER_BEGIN
|
|
- RNA_BEGIN
|
|
- RNA_PROP_BEGIN
|
|
- RNA_STRUCT_BEGIN
|
|
- RNA_STRUCT_BEGIN_SKIP_RNA_TYPE
|
|
- SCULPT_VERTEX_DUPLICATES_AND_NEIGHBORS_ITER_BEGIN
|
|
- SCULPT_VERTEX_NEIGHBORS_ITER_BEGIN
|
|
- SEQ_ALL_BEGIN
|
|
- SEQ_ITERATOR_FOREACH
|
|
- SURFACE_QUAD_ITER_BEGIN
|
|
- foreach
|
|
- ED_screen_areas_iter
|
|
- SLOT_PROBING_BEGIN
|
|
- SET_SLOT_PROBING_BEGIN
|
|
- MAP_SLOT_PROBING_BEGIN
|
|
- VECTOR_SET_SLOT_PROBING_BEGIN
|
|
|
|
StatementMacros:
|
|
- PyObject_HEAD
|
|
- PyObject_VAR_HEAD
|
|
|
|
MacroBlockBegin: "^BSDF_CLOSURE_CLASS_BEGIN$"
|
|
MacroBlockEnd: "^BSDF_CLOSURE_CLASS_END$"
|