[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [46960] trunk/blender: Restoring Group Colours for Animation Channels - Part 1

Joshua Leung aligorith at gmail.com
Thu May 24 03:25:33 CEST 2012


Revision: 46960
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=46960
Author:   aligorith
Date:     2012-05-24 01:25:31 +0000 (Thu, 24 May 2012)
Log Message:
-----------
Restoring Group Colours for Animation Channels - Part 1

This commit restores the group colours support for F-Curves and F-Curve Groups
in the DopeSheet and Graph Editors. Currently the relevant settings for groups
are only exposed via RNA, but a followup commit will add support for
automatically setting these colours. By default, DopeSheet and Graph Editors are
set to display these colours if/when they are available.

This functionality used to be in 2.48, and is a useful mechanism for visually
distinguishing between channels for different controls when animating (if group
colours are used on the rigs too).

Modified Paths:
--------------
    trunk/blender/release/scripts/startup/bl_ui/space_dopesheet.py
    trunk/blender/release/scripts/startup/bl_ui/space_graph.py
    trunk/blender/source/blender/editors/animation/anim_channels_defines.c
    trunk/blender/source/blender/makesdna/DNA_action_types.h
    trunk/blender/source/blender/makesdna/DNA_space_types.h
    trunk/blender/source/blender/makesrna/RNA_enum_types.h
    trunk/blender/source/blender/makesrna/intern/rna_action.c
    trunk/blender/source/blender/makesrna/intern/rna_internal.h
    trunk/blender/source/blender/makesrna/intern/rna_pose.c
    trunk/blender/source/blender/makesrna/intern/rna_space.c

Modified: trunk/blender/release/scripts/startup/bl_ui/space_dopesheet.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_ui/space_dopesheet.py	2012-05-23 23:16:10 UTC (rev 46959)
+++ trunk/blender/release/scripts/startup/bl_ui/space_dopesheet.py	2012-05-24 01:25:31 UTC (rev 46960)
@@ -149,6 +149,7 @@
         layout.prop(st, "use_realtime_update")
         layout.prop(st, "show_frame_indicator")
         layout.prop(st, "show_sliders")
+        layout.prop(st, "show_group_colors")
         layout.prop(st, "use_auto_merge_keyframes")
         layout.prop(st, "use_marker_sync")
 

Modified: trunk/blender/release/scripts/startup/bl_ui/space_graph.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_ui/space_graph.py	2012-05-23 23:16:10 UTC (rev 46959)
+++ trunk/blender/release/scripts/startup/bl_ui/space_graph.py	2012-05-24 01:25:31 UTC (rev 46960)
@@ -75,6 +75,7 @@
         layout.prop(st, "show_frame_indicator")
         layout.prop(st, "show_cursor")
         layout.prop(st, "show_sliders")
+        layout.prop(st, "show_group_colors")
         layout.prop(st, "use_auto_merge_keyframes")
 
         layout.separator()

Modified: trunk/blender/source/blender/editors/animation/anim_channels_defines.c
===================================================================
--- trunk/blender/source/blender/editors/animation/anim_channels_defines.c	2012-05-23 23:16:10 UTC (rev 46959)
+++ trunk/blender/source/blender/editors/animation/anim_channels_defines.c	2012-05-24 01:25:31 UTC (rev 46960)
@@ -146,18 +146,39 @@
 	glRectf(offset, yminc,  v2d->cur.xmax + EXTRA_SCROLL_PAD, ymaxc);
 }
 
+/* helper method to test if group colors should be drawn */
+static short acf_show_channel_colors(bAnimContext *ac)
+{
+	short showGroupColors = 0;
+	
+	if (ac->sl) {
+		switch (ac->spacetype) {
+			case SPACE_ACTION:
+			{
+				SpaceAction *saction = (SpaceAction *)ac->sl;
+				showGroupColors = !(saction->flag & SACTION_NODRAWGCOLORS);
+			}
+				break;
+			case SPACE_IPO:
+			{
+				SpaceIpo *sipo = (SpaceIpo *)ac->sl;
+				showGroupColors = !(sipo->flag & SIPO_NODRAWGCOLORS);
+			}
+				break;
+		}
+	}
+	
+	return showGroupColors;
+}
+
 /* get backdrop color for generic channels */
 static void acf_generic_channel_color(bAnimContext *ac, bAnimListElem *ale, float r_color[3])
 {
 	bAnimChannelType *acf = ANIM_channel_get_typeinfo(ale);
-	SpaceAction *saction = NULL;
 	bActionGroup *grp = NULL;
 	short indent = (acf->get_indent_level) ? acf->get_indent_level(ac, ale) : 0;
+	short showGroupColors = acf_show_channel_colors(ac);
 	
-	/* get context info needed... */
-	if ((ac->sl) && (ac->spacetype == SPACE_ACTION))
-		saction = (SpaceAction *)ac->sl;
-		
 	if (ale->type == ANIMTYPE_FCURVE) {
 		FCurve *fcu = (FCurve *)ale->data;
 		grp = fcu->grp;
@@ -167,9 +188,7 @@
 	 *	- use 3 shades of color group/standard color for 3 indention level
 	 *	- only use group colors if allowed to, and if actually feasible
 	 */
-	if ( (saction && !(saction->flag & SACTION_NODRAWGCOLORS)) && 
-	     ((grp) && (grp->customCol)) )
-	{
+	if (showGroupColors && (grp) && (grp->customCol)) {
 		unsigned char cp[3];
 		
 		if (indent == 2) {
@@ -730,13 +749,30 @@
 /* Group ------------------------------------------- */
 
 /* get backdrop color for group widget */
-static void acf_group_color(bAnimContext *UNUSED(ac), bAnimListElem *ale, float r_color[3])
+static void acf_group_color(bAnimContext *ac, bAnimListElem *ale, float r_color[3])
 {
-	/* highlight only for action group channels */
-	if (ale->flag & AGRP_ACTIVE)
-		UI_GetThemeColorShade3fv(TH_GROUP_ACTIVE, 10, r_color);
-	else
-		UI_GetThemeColorShade3fv(TH_GROUP, 20, r_color);
+	bActionGroup *agrp = (bActionGroup *)ale->data;
+	short showGroupColors = acf_show_channel_colors(ac);
+	
+	if (showGroupColors && agrp->customCol) {
+		unsigned char cp[3];
+		
+		/* highlight only for active */
+		if (ale->flag & AGRP_ACTIVE)
+			copy_v3_v3_char((char *)cp, agrp->cs.active);
+		else
+			copy_v3_v3_char((char *)cp, agrp->cs.solid);
+		
+		/* copy the colors over, transforming from bytes to floats */
+		rgb_uchar_to_float(r_color, cp);
+	}
+	else {
+		/* highlight only for active */
+		if (ale->flag & AGRP_ACTIVE)
+			UI_GetThemeColorShade3fv(TH_GROUP_ACTIVE, 10, r_color);
+		else
+			UI_GetThemeColorShade3fv(TH_GROUP, 20, r_color);
+	}
 }
 
 /* backdrop for group widget */

Modified: trunk/blender/source/blender/makesdna/DNA_action_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_action_types.h	2012-05-23 23:16:10 UTC (rev 46959)
+++ trunk/blender/source/blender/makesdna/DNA_action_types.h	2012-05-24 01:25:31 UTC (rev 46960)
@@ -612,7 +612,7 @@
 		/* show pose-markers (local to action) in Action Editor mode  */
 	SACTION_POSEMARKERS_SHOW = (1<<6),
 		/* don't draw action channels using group colors (where applicable) */
-	SACTION_NODRAWGCOLORS = (1<<7), // XXX depreceated... irrelevant for current groups implementation
+	SACTION_NODRAWGCOLORS = (1<<7),
 		/* don't draw current frame number beside frame indicator */
 	SACTION_NODRAWCFRANUM = (1<<8),
 		/* temporary flag to force channel selections to be synced with main */

Modified: trunk/blender/source/blender/makesdna/DNA_space_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_space_types.h	2012-05-23 23:16:10 UTC (rev 46959)
+++ trunk/blender/source/blender/makesdna/DNA_space_types.h	2012-05-24 01:25:31 UTC (rev 46960)
@@ -763,6 +763,8 @@
 #define SIPO_NOREALTIMEUPDATES	(1<<11)
 	/* don't draw curves with AA ("beauty-draw") for performance */
 #define SIPO_BEAUTYDRAW_OFF		(1<<12)
+	/* draw grouped channels with colors set in group */
+#define SIPO_NODRAWGCOLORS		(1<<13)
 
 /* SpaceIpo->mode (Graph Editor Mode) */
 enum {

Modified: trunk/blender/source/blender/makesrna/RNA_enum_types.h
===================================================================
--- trunk/blender/source/blender/makesrna/RNA_enum_types.h	2012-05-23 23:16:10 UTC (rev 46959)
+++ trunk/blender/source/blender/makesrna/RNA_enum_types.h	2012-05-24 01:25:31 UTC (rev 46960)
@@ -55,6 +55,8 @@
 extern EnumPropertyItem image_color_mode_items[];
 extern EnumPropertyItem image_depth_mode_items[];
 
+extern EnumPropertyItem color_sets_items[];
+
 extern EnumPropertyItem beztriple_keyframe_type_items[];
 extern EnumPropertyItem beztriple_handle_type_items[];
 extern EnumPropertyItem beztriple_interpolation_mode_items[];

Modified: trunk/blender/source/blender/makesrna/intern/rna_action.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_action.c	2012-05-23 23:16:10 UTC (rev 46959)
+++ trunk/blender/source/blender/makesrna/intern/rna_action.c	2012-05-24 01:25:31 UTC (rev 46960)
@@ -480,10 +480,8 @@
 	RNA_def_property_ui_text(prop, "Expanded", "Action Group is expanded");
 	RNA_def_property_update(prop, NC_ANIMATION | ND_ANIMCHAN | NA_EDITED, NULL);
 	
-	prop = RNA_def_property(srna, "custom_color", PROP_INT, PROP_NONE);
-	RNA_def_property_int_sdna(prop, NULL, "customCol");
-	RNA_def_property_ui_text(prop, "Custom Color", "Index of custom color set");
-	RNA_def_property_update(prop, NC_ANIMATION | ND_ANIMCHAN | NA_EDITED, NULL);
+	/* color set */
+	rna_def_actionbone_group_common(srna, NC_ANIMATION | ND_ANIMCHAN | NA_EDITED, NULL);
 }
 
 /* fcurve.keyframe_points */

Modified: trunk/blender/source/blender/makesrna/intern/rna_internal.h
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_internal.h	2012-05-23 23:16:10 UTC (rev 46959)
+++ trunk/blender/source/blender/makesrna/intern/rna_internal.h	2012-05-24 01:25:31 UTC (rev 46960)
@@ -193,6 +193,9 @@
                          const char *structname_slots, const char *update);
 void rna_def_render_layer_common(struct StructRNA *srna, int scene);
 
+void rna_def_actionbone_group_common(struct StructRNA *srna, int update_flag, const char *update_cb);
+void rna_ActionGroup_colorset_set(struct PointerRNA *ptr, int value);
+
 void rna_ID_name_get(struct PointerRNA *ptr, char *value);
 int rna_ID_name_length(struct PointerRNA *ptr);
 void rna_ID_name_set(struct PointerRNA *ptr, const char *value);

Modified: trunk/blender/source/blender/makesrna/intern/rna_pose.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_pose.c	2012-05-23 23:16:10 UTC (rev 46959)
+++ trunk/blender/source/blender/makesrna/intern/rna_pose.c	2012-05-24 01:25:31 UTC (rev 46960)
@@ -60,6 +60,33 @@
 	{0, NULL, 0, NULL, NULL}
 };
 
+/* Bone and Group Color Sets */
+EnumPropertyItem color_sets_items[] = {
+	{0, "DEFAULT", 0, "Default Colors", ""},
+	{1, "THEME01", 0, "01 - Theme Color Set", ""},
+	{2, "THEME02", 0, "02 - Theme Color Set", ""},
+	{3, "THEME03", 0, "03 - Theme Color Set", ""},
+	{4, "THEME04", 0, "04 - Theme Color Set", ""},
+	{5, "THEME05", 0, "05 - Theme Color Set", ""},
+	{6, "THEME06", 0, "06 - Theme Color Set", ""},
+	{7, "THEME07", 0, "07 - Theme Color Set", ""},
+	{8, "THEME08", 0, "08 - Theme Color Set", ""},
+	{9, "THEME09", 0, "09 - Theme Color Set", ""},
+	{10, "THEME10", 0, "10 - Theme Color Set", ""},
+	{11, "THEME11", 0, "11 - Theme Color Set", ""},
+	{12, "THEME12", 0, "12 - Theme Color Set", ""},
+	{13, "THEME13", 0, "13 - Theme Color Set", ""},
+	{14, "THEME14", 0, "14 - Theme Color Set", ""},
+	{15, "THEME15", 0, "15 - Theme Color Set", ""},
+	{16, "THEME16", 0, "16 - Theme Color Set", ""},
+	{17, "THEME17", 0, "17 - Theme Color Set", ""},
+	{18, "THEME18", 0, "18 - Theme Color Set", ""},
+	{19, "THEME19", 0, "19 - Theme Color Set", ""},
+	{20, "THEME20", 0, "20 - Theme Color Set", ""},
+	{-1, "CUSTOM", 0, "Custom Color Set", ""},
+	{0, NULL, 0, NULL, NULL}
+};
+
 #ifdef RNA_RUNTIME
 
 #include "BIK_api.h"
@@ -107,7 +134,8 @@
 	return BLI_sprintfN("pose.bones[\"%s\"]", ((bPoseChannel *)ptr->data)->name);
 }
 
-static void rna_BoneGroup_color_set_set(PointerRNA *ptr, int value)
+/* shared for actions groups and bone groups */
+void rna_ActionGroup_colorset_set(PointerRNA *ptr, int value)
 {
 	bActionGroup *grp = ptr->data;
 	
@@ -622,34 +650,31 @@
 
 #else
 
+/* common properties for Action/Bone Groups - related to color */

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list