| General Key Flags | |
| #define | IKEY_SELECTED (1<<0) | 
| #define | IKEY_XSEL (1<<1) | 
| #define | IKEY_YSEL (1<<2) | 
| #define | IKEY_ZSEL (1<<3) | 
| #define | IKEY_WSEL (1<<30) | 
| #define | IKEY_FLAGGED (1<<31) | 
| #define | IKEY_TIME_LOCK (1<<14) | 
| #define | IKEY_ALLSEL (IKEY_SELECTED|IKEY_XSEL|IKEY_YSEL|IKEY_ZSEL|IKEY_WSEL) | 
| #define | IKEY_VALLOCK_SHIFT 16 | 
| #define | IKEY_VALX_LOCK (1<<IKEY_VALLOCK_SHIFT) | 
| #define | IKEY_VALY_LOCK (1<<(IKEY_VALLOCK_SHIFT+1)) | 
| #define | IKEY_VALZ_LOCK (1<<(IKEY_VALLOCK_SHIFT+2)) | 
| #define | IKEY_VALA_LOCK (1<<(IKEY_VALLOCK_SHIFT+3)) | 
| TCB-specific Key Flags | |
| #define | TCBKEY_QUATVALID (1<<4) | 
| Angle/axis is derived from the quat instead of vice/versa.  More... | |
| Bezier-specific Key Flags | |
| #define | BEZKEY_XBROKEN (1<<4) | 
| Broken means not locked.  More... | |
| #define | BEZKEY_YBROKEN (1<<5) | 
| #define | BEZKEY_ZBROKEN (1<<6) | 
| #define | BEZKEY_WBROKEN (1<<21) | 
| In and Out types | |
| #define | BEZKEY_NUMTYPEBITS 3 | 
| #define | BEZKEY_INTYPESHIFT 7 | 
| #define | BEZKEY_OUTTYPESHIFT (BEZKEY_INTYPESHIFT+BEZKEY_NUMTYPEBITS) | 
| #define | BEZKEY_TYPEMASK 7 | 
| Bezier Tangeant Types | |
| #define | BEZKEY_SMOOTH 0 | 
| #define | BEZKEY_LINEAR 1 | 
| #define | BEZKEY_STEP 2 | 
| #define | BEZKEY_FAST 3 | 
| #define | BEZKEY_SLOW 4 | 
| #define | BEZKEY_USER 5 | 
| #define | BEZKEY_FLAT 6 | 
| #define | NUM_TANGENTTYPES 7 | 
| Key Flagbit Macros | |
| #define | BEZKEY_CONSTVELOCITY (1<<15) | 
| Interpolated using arclength as the interpolation parameter.  More... | |
| #define | BEZKEY_UNCONSTRAINHANDLE (1<<20) | 
| Determines whether a user handle is limited.  More... | |
| #define | TangentsLocked(f, j) (!(f&(j <= 2 ? (BEZKEY_XBROKEN<<j) : BEZKEY_WBROKEN))) | 
| #define | SetTangentLock(f, j, l) {if (l) (f)=(f)&(~(j <= 2 ? (BEZKEY_XBROKEN<<j) : BEZKEY_WBROKEN)); else (f)|=(j <= 2 ? (BEZKEY_XBROKEN<<j) : BEZKEY_WBROKEN);} | 
| Macros to Access Hybrid Tangent Types | |
| #define | GetInTanType(f) int(((f)>>BEZKEY_INTYPESHIFT)&BEZKEY_TYPEMASK) | 
| #define | GetOutTanType(f) int(((f)>>BEZKEY_OUTTYPESHIFT)&BEZKEY_TYPEMASK) | 
| #define | SetInTanType(f, t) {(f) = ((f)&(~(BEZKEY_TYPEMASK<<BEZKEY_INTYPESHIFT)))|(t<<BEZKEY_INTYPESHIFT);} | 
| #define | SetOutTanType(f, t) {(f) = ((f)&(~(BEZKEY_TYPEMASK<<BEZKEY_OUTTYPESHIFT)))|(t<<BEZKEY_OUTTYPESHIFT);} | 
| #define | HITKEY_INTAN (1<<22) | 
| #define | HITKEY_OUTTAN (1<<23) | 
| #define | HITKEY_TIME (1<<24) | 
| #define | HITKEY_KEY (1<<25) | 
| #define | HITKEY_ANY (HITKEY_INTAN|HITKEY_OUTTAN|HITKEY_TIME|HITKEY_KEY) | 
| #define IKEY_SELECTED (1<<0) | 
| #define IKEY_XSEL (1<<1) | 
| #define IKEY_YSEL (1<<2) | 
| #define IKEY_ZSEL (1<<3) | 
| #define IKEY_WSEL (1<<30) | 
| #define IKEY_FLAGGED (1<<31) | 
| #define IKEY_TIME_LOCK (1<<14) | 
| #define IKEY_ALLSEL (IKEY_SELECTED|IKEY_XSEL|IKEY_YSEL|IKEY_ZSEL|IKEY_WSEL) | 
| #define IKEY_VALLOCK_SHIFT 16 | 
| #define IKEY_VALX_LOCK (1<<IKEY_VALLOCK_SHIFT) | 
| #define IKEY_VALY_LOCK (1<<(IKEY_VALLOCK_SHIFT+1)) | 
| #define IKEY_VALZ_LOCK (1<<(IKEY_VALLOCK_SHIFT+2)) | 
| #define IKEY_VALA_LOCK (1<<(IKEY_VALLOCK_SHIFT+3)) | 
| #define TCBKEY_QUATVALID (1<<4) | 
Angle/axis is derived from the quat instead of vice/versa.
| #define BEZKEY_XBROKEN (1<<4) | 
Broken means not locked.
| #define BEZKEY_YBROKEN (1<<5) | 
| #define BEZKEY_ZBROKEN (1<<6) | 
| #define BEZKEY_WBROKEN (1<<21) | 
| #define BEZKEY_NUMTYPEBITS 3 | 
| #define BEZKEY_INTYPESHIFT 7 | 
| #define BEZKEY_OUTTYPESHIFT (BEZKEY_INTYPESHIFT+BEZKEY_NUMTYPEBITS) | 
| #define BEZKEY_TYPEMASK 7 | 
| #define BEZKEY_SMOOTH 0 | 
| #define BEZKEY_LINEAR 1 | 
| #define BEZKEY_STEP 2 | 
| #define BEZKEY_FAST 3 | 
| #define BEZKEY_SLOW 4 | 
| #define BEZKEY_USER 5 | 
| #define BEZKEY_FLAT 6 | 
| #define NUM_TANGENTTYPES 7 | 
| #define BEZKEY_CONSTVELOCITY (1<<15) | 
Interpolated using arclength as the interpolation parameter.
| #define BEZKEY_UNCONSTRAINHANDLE (1<<20) | 
Determines whether a user handle is limited.
| #define TangentsLocked | ( | f, | |
| j | |||
| ) | (!(f&(j <= 2 ? (BEZKEY_XBROKEN<<j) : BEZKEY_WBROKEN))) | 
| #define SetTangentLock | ( | f, | |
| j, | |||
| l | |||
| ) | {if (l) (f)=(f)&(~(j <= 2 ? (BEZKEY_XBROKEN<<j) : BEZKEY_WBROKEN)); else (f)|=(j <= 2 ? (BEZKEY_XBROKEN<<j) : BEZKEY_WBROKEN);} | 
| #define GetInTanType | ( | f | ) | int(((f)>>BEZKEY_INTYPESHIFT)&BEZKEY_TYPEMASK) | 
| #define GetOutTanType | ( | f | ) | int(((f)>>BEZKEY_OUTTYPESHIFT)&BEZKEY_TYPEMASK) | 
| #define SetInTanType | ( | f, | |
| t | |||
| ) | {(f) = ((f)&(~(BEZKEY_TYPEMASK<<BEZKEY_INTYPESHIFT)))|(t<<BEZKEY_INTYPESHIFT);} | 
| #define SetOutTanType | ( | f, | |
| t | |||
| ) | {(f) = ((f)&(~(BEZKEY_TYPEMASK<<BEZKEY_OUTTYPESHIFT)))|(t<<BEZKEY_OUTTYPESHIFT);} | 
| #define HITKEY_INTAN (1<<22) | 
| #define HITKEY_OUTTAN (1<<23) | 
| #define HITKEY_TIME (1<<24) | 
| #define HITKEY_KEY (1<<25) | 
| #define HITKEY_ANY (HITKEY_INTAN|HITKEY_OUTTAN|HITKEY_TIME|HITKEY_KEY) |