[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18009] branches/blender2.5/blender/source /blender/editors: 2.5 - Animation tweaks - bringing back more code

Joshua Leung aligorith at gmail.com
Mon Dec 22 11:15:02 CET 2008


Revision: 18009
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18009
Author:   aligorith
Date:     2008-12-22 11:15:02 +0100 (Mon, 22 Dec 2008)

Log Message:
-----------
2.5 - Animation tweaks - bringing back more code

* Action Editor - IPO curve names are shown properly again. Added anim_ipo_utils.c (old editipo_lib.c) file back. This will need to be removed when I port IPO system to RNA.

* Keyframing code - uncommented more of the code that's now working

* Made the 'preview range' button on timeline header draw more clearly

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/animation/anim_keyframes_draw.c
    branches/blender2.5/blender/source/blender/editors/animation/anim_keyframing.c
    branches/blender2.5/blender/source/blender/editors/include/ED_anim_api.h
    branches/blender2.5/blender/source/blender/editors/space_action/action_draw.c
    branches/blender2.5/blender/source/blender/editors/space_time/time_header.c

Added Paths:
-----------
    branches/blender2.5/blender/source/blender/editors/animation/anim_ipo_utils.c

Added: branches/blender2.5/blender/source/blender/editors/animation/anim_ipo_utils.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/animation/anim_ipo_utils.c	                        (rev 0)
+++ branches/blender2.5/blender/source/blender/editors/animation/anim_ipo_utils.c	2008-12-22 10:15:02 UTC (rev 18009)
@@ -0,0 +1,345 @@
+/**
+ * $Id: 
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+ * All rights reserved.
+ *
+ * Contributor(s): Blender Foundation, 2005. Full recode
+ *				   Joshua Leung
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+/* XXX:
+ * This file contains some assorted channel-name defines for IPO Curves, which are required
+ * under the 'old' Adrcode system. These should be replaced in the near future after all
+ * editors are in place, to use the RNA system instead, in conjunction with the RNA-IPO 
+ * integration step.
+ *
+ * -- Joshua Leung, Dec 2008
+ */
+
+
+#include <stdio.h>
+
+#include "BLI_blenlib.h"
+#include "BLI_arithb.h"
+
+#include "DNA_curve_types.h"
+#include "DNA_ipo_types.h"
+#include "DNA_key_types.h"
+#include "DNA_object_types.h"
+#include "DNA_space_types.h"
+#include "DNA_scene_types.h"
+#include "DNA_view3d_types.h"
+
+#include "BKE_ipo.h"
+#include "BKE_key.h"
+#include "BKE_utildefines.h"
+
+#include "UI_resources.h"
+#include "ED_anim_api.h"
+
+
+	// XXX should these be exposed too?
+char *getname_ac_ei(int nr);
+char *getname_co_ei(int nr);
+char *getname_ob_ei(int nr, int colipo);
+char *getname_tex_ei(int nr);
+char *getname_mtex_ei(int nr);
+char *getname_mat_ei(int nr);
+char *getname_world_ei(int nr);
+char *getname_seq_ei(int nr);
+char *getname_cu_ei(int nr);
+char *getname_la_ei(int nr);
+char *getname_cam_ei(int nr);
+char *getname_snd_ei(int nr);
+char *getname_fluidsim_ei(int nr);
+char *getname_part_ei(int nr);
+
+
+/* ------------------------- Channel Name Defines ------------------------ */
+
+char *ob_ic_names[OB_TOTNAM] = { "LocX", "LocY", "LocZ", "dLocX", "dLocY", "dLocZ",
+	"RotX", "RotY", "RotZ", "dRotX", "dRotY", "dRotZ",
+	"ScaleX", "ScaleY", "ScaleZ", "dScaleX", "dScaleY", "dScaleZ",
+	"Layer", "Time", "ColR", "ColG", "ColB", "ColA",
+	"FStreng", "FFall", "RDamp", "Damping", "Perm", "FMaxD" };
+
+char *co_ic_names[CO_TOTNAM] = { "Inf", "HeadTail" };
+char *mtex_ic_names[TEX_TOTNAM] = { "OfsX", "OfsY", "OfsZ", "SizeX", "SizeY", "SizeZ",
+	"texR", "texG", "texB", "DefVar", "Col", "Nor", "Var",
+	"Disp" };
+char *tex_ic_names[TE_TOTNAM] = { "NSize", "NDepth", "NType", "Turb", "Vnw1", "Vnw2",
+	"Vnw3", "Vnw4", "MinkMExp", "DistM", "ColT", "iScale",
+	"DistA", "MgType", "MgH", "Lacu", "Oct", "MgOff",
+	"MgGain", "NBase1", "NBase2", "ColR", "ColG", "ColB", "Bright", "Contras"};
+char *ma_ic_names[MA_TOTNAM] = { "R", "G", "B", "SpecR", "SpecG", "SpecB", "MirR",
+	"MirG", "MirB", "Ref", "Alpha", "Emit", "Amb", "Spec",
+	"Hard", "SpTra", "Ior", "Mode", "HaSize", "Translu",
+	"RayMir", "FresMir", "FresMirI", "FresTra", "FresTraI",
+	"TraGlow" };
+char *seq_ic_names[SEQ_TOTNAM] = { "Fac" };
+char *cu_ic_names[CU_TOTNAM] = { "Speed" };
+char *key_ic_names[KEY_TOTNAM] = { "Speed", "Key 1", "Key 2", "Key 3", "Key 4", "Key 5",
+	"Key 6", "Key 7", "Key 8", "Key 9", "Key 10",
+	"Key 11", "Key 12", "Key 13", "Key 14", "Key 15",
+	"Key 16", "Key 17", "Key 18", "Key 19", "Key 20",
+	"Key 21", "Key 22", "Key 23", "Key 24", "Key 25",
+	"Key 26", "Key 27", "Key 28", "Key 29", "Key 30",
+	"Key 31", "Key 32", "Key 33", "Key 34", "Key 35",
+	"Key 36", "Key 37", "Key 38", "Key 39", "Key 40",
+	"Key 41", "Key 42", "Key 43", "Key 44", "Key 45",
+	"Key 46", "Key 47", "Key 48", "Key 49", "Key 50",
+	"Key 51", "Key 52", "Key 53", "Key 54", "Key 55",
+	"Key 56", "Key 57", "Key 58", "Key 59", "Key 60",
+	"Key 61", "Key 62", "Key 63"};
+char *wo_ic_names[WO_TOTNAM] = { "HorR", "HorG", "HorB", "ZenR", "ZenG", "ZenB", "Expos",
+	"Misi", "MisDi", "MisSta", "MisHi", "StarR", "StarB",
+	"StarG", "StarDi", "StarSi" };
+char *la_ic_names[LA_TOTNAM] = { "Energy", "R", "G", "B", "Dist", "SpoSi", "SpoBl",
+	"Quad1", "Quad2", "HaInt" };
+/* yafray: two curve names added, 'Apert' for aperture, and 'FDist' for focal distance */
+char *cam_ic_names[CAM_TOTNAM] = { "Lens", "ClSta", "ClEnd", "Apert", "FDist", "ShiftX", "ShiftY" };
+char *snd_ic_names[SND_TOTNAM] = { "Vol", "Pitch", "Pan", "Atten" };
+char *ac_ic_names[AC_TOTNAM] = {"LocX", "LocY", "LocZ", "ScaleX", "ScaleY",
+	"ScaleZ", "RotX", "RotY", "RotZ", "QuatW", "QuatX", "QuatY", "QuatZ"};
+char *ic_name_empty[1] ={ "" };
+char *fluidsim_ic_names[FLUIDSIM_TOTNAM] = { "Fac-Visc", "Fac-Time",  "GravX","GravY","GravZ",  "VelX","VelY","VelZ", "Active", "AttrForceStr", "AttrForceRad", "VelForceStr", "VelForceRad" };
+char *part_ic_names[PART_TOTNAM] = { "E_Freq", "E_Life", "E_Speed", "E_Angular", "E_Size",
+"Angular", "Size", "Drag", "Brown", "Damp", "Length", "Clump",
+"GravX", "GravY", "GravZ", "KinkAmp", "KinkFreq", "KinkShape", "BBTilt",
+"FStreng", "FFall", "FMaxD", "F2Streng", "F2Fall", "F2MaxD"};
+
+/* ----------------------- Getter functions ----------------------- */
+
+/* gets the appropriate icon for the given blocktype */
+int geticon_ipo_blocktype(short blocktype)
+{
+	switch (blocktype) {
+		case ID_OB:
+			return ICON_OBJECT;
+		case ID_PO:
+			return ICON_POSE_HLT;
+		case ID_KE:
+			return ICON_EDIT;
+		case ID_MA:
+			return ICON_MATERIAL;
+		case ID_WO:
+			return ICON_WORLD;
+		case ID_CU:
+			return ICON_CURVE;
+		case ID_CA:
+			return ICON_CAMERA;
+		case ID_LA:
+			return ICON_LAMP;
+		case ID_TE:
+			return ICON_TEXTURE;
+		case ID_CO:
+			return ICON_CONSTRAINT;
+		case ID_FLUIDSIM:
+			return ICON_WORLD; // uggh
+		default:
+			return 0; // what about blank icon?
+	}
+}
+
+/* get name of ipo-curve
+ * 	- icu should be valid pointer
+ *	- ob is only needed for a shapekey-related hack
+ */
+char *getname_ipocurve(IpoCurve *icu, Object *ob)
+{
+	switch (icu->blocktype) {
+		case ID_OB: 
+			return getname_ob_ei(icu->adrcode, 0); /* dummy 2nd arg */ 
+		case ID_PO:
+			return getname_ac_ei(icu->adrcode);
+		case ID_KE:
+		{
+			static char name[32];
+			Key *key= ob_get_key(ob);
+			KeyBlock *kb= key_get_keyblock(key, icu->adrcode);
+			
+			/* only return name if it has been set, otherwise use 
+			 * default method using static string (Key #)
+			 */
+			if ((kb) && (kb->name[0] != '\0'))
+				return kb->name; /* return keyblock's name  */
+			
+			/* in case keyblock is not named or no key/keyblock was found */
+			sprintf(name, "Key %d", icu->adrcode);
+			return name;
+		}
+		case ID_MA:
+			return getname_mat_ei(icu->adrcode);
+		case ID_LA:
+			return getname_la_ei(icu->adrcode);
+		case ID_CA:
+			return getname_cam_ei(icu->adrcode);
+		case ID_CU:
+			return getname_cu_ei(icu->adrcode);
+			
+		default: /* fixme - add all of the other types! */
+			return NULL;
+	}
+}
+
+
+char *getname_ac_ei(int nr) 
+{
+	switch(nr) {
+		case AC_LOC_X:
+		case AC_LOC_Y:
+		case AC_LOC_Z:
+			return ac_ic_names[nr-1];
+		
+		case AC_SIZE_X:
+		case AC_SIZE_Y:
+		case AC_SIZE_Z:
+			return ac_ic_names[nr-10];
+			
+		case AC_EUL_X:
+		case AC_EUL_Y:
+		case AC_EUL_Z:
+			return ac_ic_names[nr-10];
+		
+		case AC_QUAT_X:
+		case AC_QUAT_Y:
+		case AC_QUAT_Z:
+		case AC_QUAT_W:
+			return ac_ic_names[nr-16];
+		
+		default:
+			return ic_name_empty[0]; /* empty */
+	}
+}
+
+char *getname_co_ei(int nr)
+{
+	switch(nr){
+		case CO_ENFORCE:
+		case CO_HEADTAIL:
+			return co_ic_names[nr-1];
+	}
+	return ic_name_empty[0];
+}
+
+char *getname_ob_ei(int nr, int colipo)
+{
+	if(nr>=OB_LOC_X && nr <= OB_PD_FMAXD) return ob_ic_names[nr-1];
+	
+	return ic_name_empty[0];
+}
+
+char *getname_tex_ei(int nr)
+{
+	if(nr>=TE_NSIZE && nr<=TE_CONTRA) return tex_ic_names[nr-1];
+	
+	return ic_name_empty[0];
+}
+
+char *getname_mtex_ei(int nr)
+{
+	if(nr>=MAP_OFS_X && nr<=MAP_DISP) return mtex_ic_names[nr-1];
+	
+	return ic_name_empty[0];
+}
+
+char *getname_mat_ei(int nr)
+{
+	if(nr>=MA_MAP1) return getname_mtex_ei((nr & (MA_MAP1-1)));
+	else {
+		if(nr>=MA_COL_R && nr<=MA_ADD) return ma_ic_names[nr-1];
+	}
+	return ic_name_empty[0];
+}
+
+char *getname_world_ei(int nr)
+{
+	if(nr>=MA_MAP1) return getname_mtex_ei((nr & (MA_MAP1-1)));
+	else {
+		if(nr>=WO_HOR_R && nr<=WO_STARSIZE) return wo_ic_names[nr-1];
+	}
+	return ic_name_empty[0];
+}
+
+char *getname_seq_ei(int nr)
+{
+	if(nr == SEQ_FAC1) return seq_ic_names[nr-1];
+	return ic_name_empty[0];
+}
+
+char *getname_cu_ei(int nr)
+{
+	if(nr==CU_SPEED) return cu_ic_names[nr-1];
+	return ic_name_empty[0];
+}
+
+char *getname_la_ei(int nr)
+{
+	if(nr>=MA_MAP1) return getname_mtex_ei((nr & (MA_MAP1-1)));
+	else {
+		if(nr>=LA_ENERGY && nr<=LA_HALOINT) return la_ic_names[nr-1];
+	}
+	return ic_name_empty[0];
+}
+
+char *getname_cam_ei(int nr)
+{
+	if(nr>=CAM_LENS && nr<=CAM_SHIFT_Y) return cam_ic_names[nr-1];
+	return ic_name_empty[0];
+}
+
+char *getname_snd_ei(int nr)
+{
+	if(nr>=SND_VOLUME && nr<=SND_ATTEN) return snd_ic_names[nr-1];
+	return ic_name_empty[0];
+}
+
+char *getname_fluidsim_ei(int nr)
+{
+	if(nr <= FLUIDSIM_TOTIPO) return fluidsim_ic_names[nr-1];
+	return ic_name_empty[0];
+}
+char *getname_part_ei(int nr)
+{
+	if(nr <= PART_TOTIPO) return part_ic_names[nr-1];
+	return ic_name_empty[0];
+}
+
+/* ------------------------------- Color Codes for IPO Channels ---------------------------- */
+
+unsigned int ipo_rainbow(int cur, int tot)
+{
+	float dfac, fac, sat;
+	
+	dfac= (float)(1.0/( (float)tot+1.0));
+	
+	/* this calculation makes 2 or 4 different cycles of rainbow colors */
+	if(cur< tot/2) fac= (float)(cur*2.0f*dfac);
+	else fac= (float)((cur-tot/2)*2.0f*dfac +dfac);
+	if(tot > 32) fac= fac*1.95f;
+	if(fac>1.0f) fac-= 1.0f;
+	
+	if(fac>0.5f && fac<0.8f) sat= 0.4f;
+	else sat= 0.5f;
+	

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list