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:
authorCampbell Barton <ideasman42@gmail.com>2019-04-17 07:17:24 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-04-17 07:21:24 +0300
commite12c08e8d170b7ca40f204a5b0423c23a9fbc2c1 (patch)
tree8cf3453d12edb177a218ef8009357518ec6cab6a /source/blender/editors/animation/anim_ipo_utils.c
parentb3dabc200a4b0399ec6b81f2ff2730d07b44fcaa (diff)
ClangFormat: apply to source, most of intern
Apply clang format as proposed in T53211. For details on usage and instructions for migrating branches without conflicts, see: https://wiki.blender.org/wiki/Tools/ClangFormat
Diffstat (limited to 'source/blender/editors/animation/anim_ipo_utils.c')
-rw-r--r--source/blender/editors/animation/anim_ipo_utils.c322
1 files changed, 162 insertions, 160 deletions
diff --git a/source/blender/editors/animation/anim_ipo_utils.c b/source/blender/editors/animation/anim_ipo_utils.c
index 03cc4855a4b..fd22fa16fe8 100644
--- a/source/blender/editors/animation/anim_ipo_utils.c
+++ b/source/blender/editors/animation/anim_ipo_utils.c
@@ -21,14 +21,12 @@
* \ingroup edanimation
*/
-
/* This file contains code for presenting F-Curves and other animation data
* in the UI (especially for use in the Animation Editors).
*
* -- Joshua Leung, Dec 2008
*/
-
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
@@ -51,172 +49,176 @@
*/
int getname_anim_fcurve(char *name, ID *id, FCurve *fcu)
{
- int icon = 0;
-
- /* sanity checks */
- if (name == NULL)
- return icon;
- else if (ELEM(NULL, id, fcu, fcu->rna_path)) {
- if (fcu == NULL)
- strcpy(name, IFACE_("<invalid>"));
- else if (fcu->rna_path == NULL)
- strcpy(name, IFACE_("<no path>"));
- else /* id == NULL */
- BLI_snprintf(name, 256, "%s[%d]", fcu->rna_path, fcu->array_index);
- }
- else {
- PointerRNA id_ptr, ptr;
- PropertyRNA *prop;
-
- /* get RNA pointer, and resolve the path */
- RNA_id_pointer_create(id, &id_ptr);
-
- /* try to resolve the path */
- if (RNA_path_resolve_property(&id_ptr, fcu->rna_path, &ptr, &prop)) {
- const char *structname = NULL, *propname = NULL;
- char arrayindbuf[16];
- const char *arrayname = NULL;
- short free_structname = 0;
-
- /* For now, name will consist of 3 parts: struct-name, property name, array index
- * There are several options possible:
- * 1) <struct-name>.<property-name>.<array-index>
- * i.e. Bone1.Location.X, or Object.Location.X
- * 2) <array-index> <property-name> (<struct name>)
- * i.e. X Location (Bone1), or X Location (Object)
- *
- * Currently, option 2 is in use, to try and make it easier to quickly identify F-Curves (it does have
- * problems with looking rather odd though). Option 1 is better in terms of revealing a consistent sense of
- * hierarchy though, which isn't so clear with option 2.
- */
-
- /* for structname
- * - as base, we use a custom name from the structs if one is available
- * - however, if we're showing subdata of bones (probably there will be other exceptions later)
- * need to include that info too since it gets confusing otherwise
- * - if a pointer just refers to the ID-block, then don't repeat this info
- * since this just introduces clutter
- */
- if (strstr(fcu->rna_path, "bones") && strstr(fcu->rna_path, "constraints")) {
- /* perform string 'chopping' to get "Bone Name : Constraint Name" */
- char *pchanName = BLI_str_quoted_substrN(fcu->rna_path, "bones[");
- char *constName = BLI_str_quoted_substrN(fcu->rna_path, "constraints[");
-
- /* assemble the string to display in the UI... */
- structname = BLI_sprintfN("%s : %s", pchanName, constName);
- free_structname = 1;
-
- /* free the temp names */
- if (pchanName) MEM_freeN(pchanName);
- if (constName) MEM_freeN(constName);
- }
- else if (ptr.data != ptr.id.data) {
- PropertyRNA *nameprop = RNA_struct_name_property(ptr.type);
- if (nameprop) {
- /* this gets a string which will need to be freed */
- structname = RNA_property_string_get_alloc(&ptr, nameprop, NULL, 0, NULL);
- free_structname = 1;
- }
- else
- structname = RNA_struct_ui_name(ptr.type);
- }
-
- /* Property Name is straightforward */
- propname = RNA_property_ui_name(prop);
-
- /* Array Index - only if applicable */
- if (RNA_property_array_check(prop)) {
- char c = RNA_property_array_item_char(prop, fcu->array_index);
-
- /* we need to write the index to a temp buffer (in py syntax) */
- if (c) BLI_snprintf(arrayindbuf, sizeof(arrayindbuf), "%c ", c);
- else BLI_snprintf(arrayindbuf, sizeof(arrayindbuf), "[%d]", fcu->array_index);
-
- arrayname = &arrayindbuf[0];
- }
- else {
- /* no array index */
- arrayname = "";
- }
-
- /* putting this all together into the buffer */
- /* XXX we need to check for invalid names...
- * XXX the name length limit needs to be passed in or as some define */
- if (structname)
- BLI_snprintf(name, 256, "%s%s (%s)", arrayname, propname, structname);
- else
- BLI_snprintf(name, 256, "%s%s", arrayname, propname);
-
- /* free temp name if nameprop is set */
- if (free_structname)
- MEM_freeN((void *)structname);
-
-
- /* Icon for this property's owner:
- * use the struct's icon if it is set
- */
- icon = RNA_struct_ui_icon(ptr.type);
-
- /* valid path - remove the invalid tag since we now know how to use it saving
- * users manual effort to reenable using "Revive Disabled FCurves" [#29629]
- */
- fcu->flag &= ~FCURVE_DISABLED;
- }
- else {
- /* invalid path */
- BLI_snprintf(name, 256, "\"%s[%d]\"", fcu->rna_path, fcu->array_index);
-
- /* icon for this should be the icon for the base ID */
- /* TODO: or should we just use the error icon? */
- icon = RNA_struct_ui_icon(id_ptr.type);
-
- /* tag F-Curve as disabled - as not usable path */
- fcu->flag |= FCURVE_DISABLED;
- }
- }
-
- /* return the icon that the active data had */
- return icon;
+ int icon = 0;
+
+ /* sanity checks */
+ if (name == NULL)
+ return icon;
+ else if (ELEM(NULL, id, fcu, fcu->rna_path)) {
+ if (fcu == NULL)
+ strcpy(name, IFACE_("<invalid>"));
+ else if (fcu->rna_path == NULL)
+ strcpy(name, IFACE_("<no path>"));
+ else /* id == NULL */
+ BLI_snprintf(name, 256, "%s[%d]", fcu->rna_path, fcu->array_index);
+ }
+ else {
+ PointerRNA id_ptr, ptr;
+ PropertyRNA *prop;
+
+ /* get RNA pointer, and resolve the path */
+ RNA_id_pointer_create(id, &id_ptr);
+
+ /* try to resolve the path */
+ if (RNA_path_resolve_property(&id_ptr, fcu->rna_path, &ptr, &prop)) {
+ const char *structname = NULL, *propname = NULL;
+ char arrayindbuf[16];
+ const char *arrayname = NULL;
+ short free_structname = 0;
+
+ /* For now, name will consist of 3 parts: struct-name, property name, array index
+ * There are several options possible:
+ * 1) <struct-name>.<property-name>.<array-index>
+ * i.e. Bone1.Location.X, or Object.Location.X
+ * 2) <array-index> <property-name> (<struct name>)
+ * i.e. X Location (Bone1), or X Location (Object)
+ *
+ * Currently, option 2 is in use, to try and make it easier to quickly identify F-Curves (it does have
+ * problems with looking rather odd though). Option 1 is better in terms of revealing a consistent sense of
+ * hierarchy though, which isn't so clear with option 2.
+ */
+
+ /* for structname
+ * - as base, we use a custom name from the structs if one is available
+ * - however, if we're showing subdata of bones (probably there will be other exceptions later)
+ * need to include that info too since it gets confusing otherwise
+ * - if a pointer just refers to the ID-block, then don't repeat this info
+ * since this just introduces clutter
+ */
+ if (strstr(fcu->rna_path, "bones") && strstr(fcu->rna_path, "constraints")) {
+ /* perform string 'chopping' to get "Bone Name : Constraint Name" */
+ char *pchanName = BLI_str_quoted_substrN(fcu->rna_path, "bones[");
+ char *constName = BLI_str_quoted_substrN(fcu->rna_path, "constraints[");
+
+ /* assemble the string to display in the UI... */
+ structname = BLI_sprintfN("%s : %s", pchanName, constName);
+ free_structname = 1;
+
+ /* free the temp names */
+ if (pchanName)
+ MEM_freeN(pchanName);
+ if (constName)
+ MEM_freeN(constName);
+ }
+ else if (ptr.data != ptr.id.data) {
+ PropertyRNA *nameprop = RNA_struct_name_property(ptr.type);
+ if (nameprop) {
+ /* this gets a string which will need to be freed */
+ structname = RNA_property_string_get_alloc(&ptr, nameprop, NULL, 0, NULL);
+ free_structname = 1;
+ }
+ else
+ structname = RNA_struct_ui_name(ptr.type);
+ }
+
+ /* Property Name is straightforward */
+ propname = RNA_property_ui_name(prop);
+
+ /* Array Index - only if applicable */
+ if (RNA_property_array_check(prop)) {
+ char c = RNA_property_array_item_char(prop, fcu->array_index);
+
+ /* we need to write the index to a temp buffer (in py syntax) */
+ if (c)
+ BLI_snprintf(arrayindbuf, sizeof(arrayindbuf), "%c ", c);
+ else
+ BLI_snprintf(arrayindbuf, sizeof(arrayindbuf), "[%d]", fcu->array_index);
+
+ arrayname = &arrayindbuf[0];
+ }
+ else {
+ /* no array index */
+ arrayname = "";
+ }
+
+ /* putting this all together into the buffer */
+ /* XXX we need to check for invalid names...
+ * XXX the name length limit needs to be passed in or as some define */
+ if (structname)
+ BLI_snprintf(name, 256, "%s%s (%s)", arrayname, propname, structname);
+ else
+ BLI_snprintf(name, 256, "%s%s", arrayname, propname);
+
+ /* free temp name if nameprop is set */
+ if (free_structname)
+ MEM_freeN((void *)structname);
+
+ /* Icon for this property's owner:
+ * use the struct's icon if it is set
+ */
+ icon = RNA_struct_ui_icon(ptr.type);
+
+ /* valid path - remove the invalid tag since we now know how to use it saving
+ * users manual effort to reenable using "Revive Disabled FCurves" [#29629]
+ */
+ fcu->flag &= ~FCURVE_DISABLED;
+ }
+ else {
+ /* invalid path */
+ BLI_snprintf(name, 256, "\"%s[%d]\"", fcu->rna_path, fcu->array_index);
+
+ /* icon for this should be the icon for the base ID */
+ /* TODO: or should we just use the error icon? */
+ icon = RNA_struct_ui_icon(id_ptr.type);
+
+ /* tag F-Curve as disabled - as not usable path */
+ fcu->flag |= FCURVE_DISABLED;
+ }
+ }
+
+ /* return the icon that the active data had */
+ return icon;
}
/* ------------------------------- Color Codes for F-Curve Channels ---------------------------- */
/* step between the major distinguishable color bands of the primary colors */
-#define HSV_BANDWIDTH 0.3f
+#define HSV_BANDWIDTH 0.3f
/* used to determine the color of F-Curves with FCURVE_COLOR_AUTO_RAINBOW set */
// void fcurve_rainbow(unsigned int cur, unsigned int tot, float *out)
void getcolor_fcurve_rainbow(int cur, int tot, float out[3])
{
- float hsv[3], fac;
- int grouping;
-
- /* we try to divide the color into groupings of n colors,
- * where n is:
- * 3 - for 'odd' numbers of curves - there should be a majority of triplets of curves
- * 4 - for 'even' numbers of curves - there should be a majority of quartets of curves
- * so the base color is simply one of the three primary colors
- */
- grouping = (4 - (tot % 2));
- hsv[0] = HSV_BANDWIDTH * (float)(cur % grouping);
-
- /* 'Value' (i.e. darkness) needs to vary so that larger sets of three will be
- * 'darker' (i.e. smaller value), so that they don't look that similar to previous ones.
- * However, only a range of 0.3 to 1.0 is really usable to avoid clashing
- * with some other stuff
- */
- fac = ((float)cur / (float)tot) * 0.7f;
-
- /* the base color can get offset a bit so that the colors aren't so identical */
- hsv[0] += fac * HSV_BANDWIDTH;
- if (hsv[0] > 1.0f) hsv[0] = fmod(hsv[0], 1.0f);
-
- /* saturation adjustments for more visible range */
- hsv[1] = ((hsv[0] > 0.5f) && (hsv[0] < 0.8f)) ? 0.5f : 0.6f;
-
- /* value is fixed at 1.0f, otherwise we cannot clearly see the curves... */
- hsv[2] = 1.0f;
-
- /* finally, conver this to RGB colors */
- hsv_to_rgb_v(hsv, out);
+ float hsv[3], fac;
+ int grouping;
+
+ /* we try to divide the color into groupings of n colors,
+ * where n is:
+ * 3 - for 'odd' numbers of curves - there should be a majority of triplets of curves
+ * 4 - for 'even' numbers of curves - there should be a majority of quartets of curves
+ * so the base color is simply one of the three primary colors
+ */
+ grouping = (4 - (tot % 2));
+ hsv[0] = HSV_BANDWIDTH * (float)(cur % grouping);
+
+ /* 'Value' (i.e. darkness) needs to vary so that larger sets of three will be
+ * 'darker' (i.e. smaller value), so that they don't look that similar to previous ones.
+ * However, only a range of 0.3 to 1.0 is really usable to avoid clashing
+ * with some other stuff
+ */
+ fac = ((float)cur / (float)tot) * 0.7f;
+
+ /* the base color can get offset a bit so that the colors aren't so identical */
+ hsv[0] += fac * HSV_BANDWIDTH;
+ if (hsv[0] > 1.0f)
+ hsv[0] = fmod(hsv[0], 1.0f);
+
+ /* saturation adjustments for more visible range */
+ hsv[1] = ((hsv[0] > 0.5f) && (hsv[0] < 0.8f)) ? 0.5f : 0.6f;
+
+ /* value is fixed at 1.0f, otherwise we cannot clearly see the curves... */
+ hsv[2] = 1.0f;
+
+ /* finally, conver this to RGB colors */
+ hsv_to_rgb_v(hsv, out);
}