[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [37682] branches/soc-2011-pepper/source/ blender/editors: Animation Channel Filtering Refactor - Part 1

Joshua Leung aligorith at gmail.com
Tue Jun 21 03:41:41 CEST 2011


Revision: 37682
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37682
Author:   aligorith
Date:     2011-06-21 01:41:39 +0000 (Tue, 21 Jun 2011)
Log Message:
-----------
Animation Channel Filtering Refactor - Part 1

* Removed list-expanders for Materials, Textures, and Particles. So
instead of:
  Object
     Materials
        Material 1
             ... material 1 anim data ...
  we now have
  Object
     Material 1
         ... material 1 anim data ...
 This makes it faster+easier to get to these items. If you don't want
to see all of these, you can still use the data-block filters from the
header to hide these.

* Internal cleanup - removed "owner" and "ownertype" settings from
bAnimListElem. The purpose of these was muddled, and more of a hassle
to maintain than doing anything useful - it was only really used for
the stuff above.

* Removed need for "sa->spacedata.first" casts all over the show for
animation editor tools which needed access to editor data. This can
now be retrieved directly.

Modified Paths:
--------------
    branches/soc-2011-pepper/source/blender/editors/animation/anim_channels_defines.c
    branches/soc-2011-pepper/source/blender/editors/animation/anim_filter.c
    branches/soc-2011-pepper/source/blender/editors/include/ED_anim_api.h
    branches/soc-2011-pepper/source/blender/editors/space_action/action_draw.c
    branches/soc-2011-pepper/source/blender/editors/space_action/action_select.c
    branches/soc-2011-pepper/source/blender/editors/space_graph/graph_edit.c
    branches/soc-2011-pepper/source/blender/editors/space_graph/graph_select.c
    branches/soc-2011-pepper/source/blender/editors/space_nla/nla_draw.c
    branches/soc-2011-pepper/source/blender/editors/transform/transform_generics.c

Modified: branches/soc-2011-pepper/source/blender/editors/animation/anim_channels_defines.c
===================================================================
--- branches/soc-2011-pepper/source/blender/editors/animation/anim_channels_defines.c	2011-06-21 01:14:21 UTC (rev 37681)
+++ branches/soc-2011-pepper/source/blender/editors/animation/anim_channels_defines.c	2011-06-21 01:41:39 UTC (rev 37682)
@@ -159,8 +159,8 @@
 	short indent= (acf->get_indent_level) ? acf->get_indent_level(ac, ale) : 0;
 	
 	/* get context info needed... */
-	if ((ac->sa) && (ac->sa->spacetype == SPACE_ACTION))
-		saction= (SpaceAction *)ac->sa->spacedata.first;
+	if ((ac->sl) && (ac->spacetype == SPACE_ACTION))
+		saction= (SpaceAction *)ac->sl;
 		
 	if (ale->type == ANIMTYPE_FCURVE) {
 		FCurve *fcu= (FCurve *)ale->data;
@@ -235,13 +235,6 @@
 {
 	short indent= 0;
 	
-	if (ale->id) {
-		/* special exception for materials, textures, and particles */
-		// xxx should tex use indention 2?
-		if (ELEM3(GS(ale->id->name),ID_MA,ID_PA,ID_TE))
-			indent++;
-	}
-	
 	/* grouped F-Curves need extra level of indention */
 	if (ale->type == ANIMTYPE_FCURVE) {
 		FCurve *fcu= (FCurve *)ale->data;
@@ -274,24 +267,11 @@
 	if (ale->id) {
 		/* special exception for textures */
 		if (GS(ale->id->name) == ID_TE) {
-			/* minimum offset */
 			offset += 21;
-			
-			/* special offset from owner type */
-			switch (ale->ownertype) {
-				case ANIMTYPE_DSMAT:
-					offset += 21;
-					break;
-					
-				case ANIMTYPE_DSLAM:
-				case ANIMTYPE_DSWOR:
-					offset += 14;
-					break;
-			}
 		}
 		/* special exception for materials and particles */
 		else if (ELEM(GS(ale->id->name),ID_MA,ID_PA)) 
-			offset += 21;
+			offset += 14;
 			
 		/* if not in Action Editor mode, groupings must carry some offset too... */
 		else if (ac->datatype != ANIMCONT_ACTION)
@@ -324,46 +304,6 @@
 }
 #endif
 
-/* check if some setting exists for this object-based data-expander (category only) */
-static short acf_generic_dsexpand_setting_valid(bAnimContext *ac, bAnimListElem *ale, int setting)
-{
-	switch (setting) {
-		/* only expand supported everywhere */
-		case ACHANNEL_SETTING_EXPAND:
-			return 1;
-			
-		/* visible 
-		 * 	- only available in Graph Editor 
-		 *	- NOT available for 'filler' channels
-		 */
-		case ACHANNEL_SETTING_VISIBLE: 
-			if (ELEM3(ale->type, ANIMTYPE_FILLMATD, ANIMTYPE_FILLPARTD, ANIMTYPE_FILLTEXD))
-				return 0;
-			else
-				return ((ac) && (ac->spacetype == SPACE_IPO));
-			
-		default:
-			return 0;
-	}
-}
-
-/* get pointer to the setting (category only) */
-static void *acf_generic_dsexpand_setting_ptr(bAnimListElem *ale, int setting, short *type)
-{
-	Object *ob= (Object *)ale->data;
-	
-	/* clear extra return data first */
-	*type= 0;
-	
-	switch (setting) {
-		case ACHANNEL_SETTING_EXPAND: /* expanded */
-			GET_ACF_FLAG_PTR(ob->nlaflag); // XXX
-		
-		default: /* unsupported */
-			return NULL;
-	}
-}
-
 /* check if some setting exists for this object-based data-expander (datablock only) */
 static short acf_generic_dataexpand_setting_valid(bAnimContext *ac, bAnimListElem *UNUSED(ale), int setting)
 {
@@ -459,8 +399,8 @@
 	/* if data is valid, return pointer to active dopesheet's relevant flag 
 	 *	- this is restricted to DopeSheet/Action Editor only
 	 */
-	if ((ac->sa) && (ac->spacetype == SPACE_ACTION) && (setting == ACHANNEL_SETTING_EXPAND)) {
-		SpaceAction *saction= (SpaceAction *)ac->sa->spacedata.first;
+	if ((ac->sl) && (ac->spacetype == SPACE_ACTION) && (setting == ACHANNEL_SETTING_EXPAND)) {
+		SpaceAction *saction= (SpaceAction *)ac->sl;
 		bDopeSheet *ads= &saction->ads;
 		
 		/* return pointer to DopeSheet's flag */
@@ -782,7 +722,7 @@
 	/* for now, all settings are supported, though some are only conditionally */
 	switch (setting) {
 		case ACHANNEL_SETTING_VISIBLE: /* Only available in Graph Editor */
-			return ((ac->sa) && (ac->sa->spacetype==SPACE_IPO));
+			return (ac->spacetype==SPACE_IPO);
 			
 		default: /* always supported */
 			return 1;
@@ -879,7 +819,7 @@
 				return 0; // NOTE: in this special case, we need to draw ICON_ZOOMOUT
 				
 		case ACHANNEL_SETTING_VISIBLE: /* Only available in Graph Editor */
-			return ((ac->sa) && (ac->sa->spacetype==SPACE_IPO));
+			return (ac->spacetype==SPACE_IPO);
 			
 		/* always available */
 		default:
@@ -1101,204 +1041,7 @@
 	acf_filldrivers_setting_ptr		/* pointer for setting */
 };
 
-/* Materials Expander  ------------------------------------------- */
 
-// TODO: just get this from RNA?
-static int acf_fillmatd_icon(bAnimListElem *UNUSED(ale))
-{
-	return ICON_MATERIAL_DATA;
-}
-
-static void acf_fillmatd_name(bAnimListElem *UNUSED(ale), char *name)
-{
-	BLI_strncpy(name, "Materials", ANIM_CHAN_NAME_SIZE);
-}
-
-/* get the appropriate flag(s) for the setting when it is valid  */
-static int acf_fillmatd_setting_flag(bAnimContext *UNUSED(ac), int setting, short *neg)
-{
-	/* clear extra return data first */
-	*neg= 0;
-	
-	switch (setting) {
-		case ACHANNEL_SETTING_EXPAND: /* expanded */
-			return OB_ADS_SHOWMATS;
-		
-		default: /* unsupported */
-			return 0;
-	}
-}
-
-/* materials expander type define */
-static bAnimChannelType ACF_FILLMATD= 
-{
-	"Materials Filler",				/* type name */
-	
-	acf_generic_dataexpand_color,	/* backdrop color */
-	acf_generic_dataexpand_backdrop,/* backdrop */
-	acf_generic_indention_1,		/* indent level */
-	acf_generic_basic_offset,		/* offset */
-	
-	acf_fillmatd_name,				/* name */
-	acf_fillmatd_icon,				/* icon */
-	
-	acf_generic_dsexpand_setting_valid,	/* has setting */
-	acf_fillmatd_setting_flag,				/* flag for setting */
-	acf_generic_dsexpand_setting_ptr		/* pointer for setting */
-};
-
-/* Particles Expander  ------------------------------------------- */
-
-// TODO: just get this from RNA?
-static int acf_fillpartd_icon(bAnimListElem *UNUSED(ale))
-{
-	return ICON_PARTICLE_DATA;
-}
-
-static void acf_fillpartd_name(bAnimListElem *UNUSED(ale), char *name)
-{
-	BLI_strncpy(name, "Particles", ANIM_CHAN_NAME_SIZE);
-}
-
-/* get the appropriate flag(s) for the setting when it is valid  */
-static int acf_fillpartd_setting_flag(bAnimContext *UNUSED(ac), int setting, short *neg)
-{
-	/* clear extra return data first */
-	*neg= 0;
-	
-	switch (setting) {
-		case ACHANNEL_SETTING_EXPAND: /* expanded */
-			return OB_ADS_SHOWPARTS;
-		
-		default: /* unsupported */
-			return 0;
-	}
-}
-
-/* particles expander type define */
-static bAnimChannelType ACF_FILLPARTD= 
-{
-	"Particles Filler",				/* type name */
-	
-	acf_generic_dataexpand_color,	/* backdrop color */
-	acf_generic_dataexpand_backdrop,/* backdrop */
-	acf_generic_indention_1,		/* indent level */
-	acf_generic_basic_offset,		/* offset */
-	
-	acf_fillpartd_name,				/* name */
-	acf_fillpartd_icon,				/* icon */
-	
-	acf_generic_dsexpand_setting_valid,	/* has setting */
-	acf_fillpartd_setting_flag,				/* flag for setting */
-	acf_generic_dsexpand_setting_ptr		/* pointer for setting */
-};
-
-/* Textures Expander  ------------------------------------------- */
-
-/* offset for groups + grouped entities */
-static short acf_filltexd_offset(bAnimContext *ac, bAnimListElem *ale)
-{
-	short offset= acf_generic_basic_offset(ac, ale);
-	
-	if (ale->id) {
-		/* materials */
-		switch (GS(ale->id->name)) {
-			case ID_MA:
-				offset += 21;
-				break;
-				
-			case ID_LA:
-			case ID_WO:
-				offset += 14;
-				break;
-		}
-	}
-	
-	return offset;
-}
-
-// TODO: just get this from RNA?
-static int acf_filltexd_icon(bAnimListElem *UNUSED(ale))
-{
-	return ICON_TEXTURE_DATA;
-}
-
-static void acf_filltexd_name(bAnimListElem *UNUSED(ale), char *name)
-{
-	BLI_strncpy(name, "Textures", ANIM_CHAN_NAME_SIZE);
-}
-
-/* get pointer to the setting (category only) */
-static void *acf_filltexd_setting_ptr(bAnimListElem *ale, int setting, short *type)
-{
-	ID *id= (ID *)ale->data;
-	
-	/* clear extra return data first */
-	*type= 0;
-	
-	switch (setting) {
-		case ACHANNEL_SETTING_EXPAND: /* expanded */
-		{
-			switch (GS(id->name)) {
-				case ID_MA:
-				{
-					Material *ma= (Material *)id;
-					GET_ACF_FLAG_PTR(ma->flag);
-				}
-				
-				case ID_LA:
-				{
-					Lamp *la= (Lamp *)id;
-					GET_ACF_FLAG_PTR(la->flag);
-				}
-					
-				case ID_WO:
-				{
-					World *wo= (World *)id;
-					GET_ACF_FLAG_PTR(wo->flag);
-				}
-			}
-		}
-		
-		default: /* unsupported */
-			return NULL;
-	}
-}
-
-/* get the appropriate flag(s) for the setting when it is valid  */
-static int acf_filltexd_setting_flag(bAnimContext *UNUSED(ac), int setting, short *neg)
-{
-	/* clear extra return data first */
-	*neg= 0;
-	
-	switch (setting) {
-		case ACHANNEL_SETTING_EXPAND: /* expanded */
-			/* NOTE: the exact same flag must be used for other texture stack types too! */
-			return MA_DS_SHOW_TEXS;	
-		
-		default: /* unsupported */
-			return 0;
-	}
-}
-
-/* particles expander type define */
-static bAnimChannelType ACF_FILLTEXD= 
-{
-	"Textures Filler",				/* type name */
-	
-	acf_generic_dataexpand_color,	/* backdrop color */
-	acf_generic_dataexpand_backdrop,/* backdrop */
-	acf_generic_indention_flexible,	/* indent level */
-	acf_filltexd_offset,			/* offset */
-	
-	acf_filltexd_name,				/* name */
-	acf_filltexd_icon,				/* icon */
-	
-	acf_generic_dsexpand_setting_valid,	/* has setting */	
-	acf_filltexd_setting_flag,			/* flag for setting */
-	acf_filltexd_setting_ptr			/* pointer for setting */
-};
-
 /* Material Expander  ------------------------------------------- */
 
 // TODO: just get this from RNA?
@@ -1307,12 +1050,6 @@
 	return ICON_MATERIAL_DATA;
 }
 
-/* offset for material expanders */
-static short acf_dsmat_offset(bAnimContext *UNUSED(ac), bAnimListElem *UNUSED(ale))
-{
-	return 21;
-}
-
 /* get the appropriate flag(s) for the setting when it is valid  */
 static int acf_dsmat_setting_flag(bAnimContext *UNUSED(ac), int setting, short *neg)
 {
@@ -1368,10 +1105,10 @@
 {
 	"Material Data Expander",		/* type name */
 	
-	acf_generic_channel_color,		/* backdrop color */
-	acf_generic_channel_backdrop,	/* backdrop */
-	acf_generic_indention_0,		/* indent level */
-	acf_dsmat_offset,				/* offset */
+	acf_generic_dataexpand_color,	/* backdrop color */
+	acf_generic_dataexpand_backdrop,/* backdrop */
+	acf_generic_indention_1,		/* indent level */
+	acf_generic_basic_offset,		/* offset */
 	
 	acf_generic_idblock_name,		/* name */
 	acf_dsmat_icon,					/* icon */
@@ -1466,22 +1203,10 @@
 }
 
 /* offset for texture expanders */
+// FIXME: soon to be obsolete?
 static short acf_dstex_offset(bAnimContext *UNUSED(ac), bAnimListElem *ale)
 {
-	short offset = 21;
-	

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list