kfcurve.h File Reference


Detailed Description

Definition in file kfcurve.h.

#include <fbxfilesdk/fbxfilesdk_def.h>
#include <fbxfilesdk/components/kbaselib/klib/karrayul.h>
#include <fbxfilesdk/components/kbaselib/klib/ktime.h>
#include <fbxfilesdk/components/kbaselib/klib/kdebug.h>
#include <fbxfilesdk/components/kbaselib/object/e/keventbase.h>
#include <fbxfilesdk/fbxfilesdk_nsbegin.h>
#include <fbxfilesdk/fbxfilesdk_nsend.h>

Include dependency graph for kfcurve.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.


Classes

class   KFCurveEvent
  Curve event class. More...
class   KFCurveTangeantInfo
  Defines a tangent derivative and weight. More...
struct   KPriFCurveKeyAttr
  KPriFCurveKeyAttr stores the additional attributes for KFCurveKey. More...
struct   KPriFCurveKey
  KPriFCurveKey is used as the internal storage format for motion data, We need to make its size as small as possible. More...
class   KFCurveKey
  Defines a key within a function curve. More...
class   KFCurve
  Function curve class. More...

Defines

#define  KFBX_FCURVE_INLINE   inline
#define  KFCURVE_FLOAT
#define  IKFCurveID   43763635

Typedefs

typedef float  kFCurveDouble
typedef HKFCurve  HIKFCurve
typedef class KFBX_DLL
KArrayTemplate< KFCurve * > 
KArrayKFCurve
typedef kUInt  kFCurveInterpolation
typedef kUInt  kFCurveConstantMode
typedef kUInt  kFCurveTangeantMode
typedef kUInt  kFCurveTangeantWeightMode
typedef kUInt  kFCurveTangeantVelocityMode
typedef kUInt  kFCurveExtrapolationMode
typedef kUInt  kFCurveTangeantVisibility
typedef int  kFCurveIndex
typedef void(*  kFCurveCallback )(KFCurve *pFCurve, KFCurveEvent *FCurveEvent, void *pObject)

Enumerations

enum   {
   KFCURVE_INTERPOLATION_CONSTANT = 0x00000002,
   KFCURVE_INTERPOLATION_LINEAR = 0x00000004,
   KFCURVE_INTERPOLATION_CUBIC = 0x00000008,
   KFCURVE_INTERPOLATION_ALL = KFCURVE_INTERPOLATION_CONSTANT|KFCURVE_INTERPOLATION_LINEAR|KFCURVE_INTERPOLATION_CUBIC,
   KFCURVE_INTERPOLATION_COUNT = 3
}
  Key interpolation type. More...
enum   {
   KFCURVE_CONSTANT_STANDARD = 0x00000000,
   KFCURVE_CONSTANT_NEXT = 0x00000100,
   KFCURVE_CONSTANT_ALL = KFCURVE_CONSTANT_STANDARD | KFCURVE_CONSTANT_NEXT,
   KFCURVE_CONSTANT_COUNT = 2
}
  Key constant mode. More...
enum   {
   KFCURVE_TANGEANT_AUTO = 0x00000100,
   KFCURVE_TANGEANT_TCB = 0x00000200,
   KFCURVE_TANGEANT_USER = 0x00000400,
   KFCURVE_GENERIC_BREAK = 0x00000800,
   KFCURVE_GENERIC_CLAMP = 0x00001000,
   KFCURVE_GENERIC_TIME_INDEPENDENT = 0x00002000,
   KFCURVE_TANGEANT_BREAK = KFCURVE_TANGEANT_USER|KFCURVE_GENERIC_BREAK,
   KFCURVE_TANGEANT_AUTO_BREAK = KFCURVE_TANGEANT_AUTO|KFCURVE_GENERIC_BREAK,
   KFCURVE_TANGEANT_ALL = KFCURVE_TANGEANT_AUTO|KFCURVE_TANGEANT_TCB|KFCURVE_TANGEANT_USER|KFCURVE_GENERIC_BREAK|KFCURVE_GENERIC_CLAMP|KFCURVE_GENERIC_TIME_INDEPENDENT,
   KFCURVE_TANGEANT_TYPE_MASK = KFCURVE_TANGEANT_AUTO|KFCURVE_TANGEANT_TCB|KFCURVE_TANGEANT_USER|KFCURVE_TANGEANT_BREAK,
   KFCURVE_TANGEANT_OVERRIDES_MASK = KFCURVE_GENERIC_CLAMP|KFCURVE_GENERIC_TIME_INDEPENDENT
}
  Key tangent mode for cubic interpolation. More...
enum   {
   KFCURVE_SELECT_POINT = 0x00010000,
   KFCURVE_SELECT_LEFT = 0x00020000,
   KFCURVE_SELECT_RIGHT = 0x00040000,
   KFCURVE_SELECT_ALL = KFCURVE_SELECT_POINT|KFCURVE_SELECT_LEFT|KFCURVE_SELECT_RIGHT
}
  Selection mode. More...
enum   {
   KFCURVE_MARKED_FOR_MANIP = 0x00080000,
   KFCURVE_MARKED_ALL = KFCURVE_MARKED_FOR_MANIP
}
  Manipulation flag. More...
enum   {
   KFCURVE_TANGEANT_SHOW_NONE = 0x00000000,
   KFCURVE_TANGEANT_SHOW_LEFT = 0x00100000,
   KFCURVE_TANGEANT_SHOW_RIGHT = 0x00200000,
   KFCURVE_TANGEANT_SHOW_BOTH = KFCURVE_TANGEANT_SHOW_LEFT|KFCURVE_TANGEANT_SHOW_RIGHT
}
  Tangent visibility. More...
enum   {
   KFCURVE_CONTINUITY = 0x00000000,
   KFCURVE_CONTINUITY_FLAT = 0x00100000,
   KFCURVE_CONTINUITY_BREAK = 0x00200000,
   KFCURVE_CONTINUITY_INSERT = 0x00400000
}
  Continuity flag. More...
enum   {
   KFCURVE_WEIGHTED_NONE = 0x00000000,
   KFCURVE_WEIGHTED_RIGHT = 0x01000000,
   KFCURVE_WEIGHTED_NEXT_LEFT = 0x02000000,
   KFCURVE_WEIGHTED_ALL = KFCURVE_WEIGHTED_RIGHT|KFCURVE_WEIGHTED_NEXT_LEFT
}
  Weighted mode. More...
enum   {
   KFCURVE_VELOCITY_NONE = 0x00000000,
   KFCURVE_VELOCITY_RIGHT = 0x10000000,
   KFCURVE_VELOCITY_NEXT_LEFT = 0x20000000,
   KFCURVE_VELOCITY_ALL = KFCURVE_VELOCITY_RIGHT | KFCURVE_VELOCITY_NEXT_LEFT
}
  Velocity mode. More...
enum   EKFCurveDataIndex {
   KFCURVEKEY_RIGHT_SLOPE = 0,
   KFCURVEKEY_NEXT_LEFT_SLOPE = 1,
   KFCURVEKEY_WEIGHTS = 2,
   KFCURVEKEY_RIGHT_WEIGHT = 2,
   KFCURVEKEY_NEXT_LEFT_WEIGHT = 3,
   KFCURVEKEY_VELOCITY = 4,
   KFCURVEKEY_RIGHT_VELOCITY = 4,
   KFCURVEKEY_NEXT_LEFT_VELOCITY = 5,
   KFCURVEKEY_TCB_TENSION = 0,
   KFCURVEKEY_TCB_CONTINUITY = 1,
   KFCURVEKEY_TCB_BIAS = 2,
   KFCURVEKEY_RIGHT_AUTO = 0,
   KFCURVEKEY_NEXT_LEFT_AUTO = 1
}
  KFCurveKey data indices for cubic interpolation tangent information. More...
enum   {
   KFCURVE_EXTRAPOLATION_CONST = 1,
   KFCURVE_EXTRAPOLATION_REPETITION = 2,
   KFCURVE_EXTRAPOLATION_MIRROR_REPETITION = 3,
   KFCURVE_EXTRAPOLATION_KEEP_SLOPE = 4
}
  Extrapolation mode for function curve extremities. More...
enum   {
   KFCURVE_BEZIER = 0,
   KFCURVE_SAMPLE = 1,
   KFCURVE_ISO = 2
}
enum   {
   KFCURVEEVENT_NONE = 0,
   KFCURVEEVENT_CANDIDATE = 1 << 0,
   KFCURVEEVENT_UNUSED1 = 1 << 1,
   KFCURVEEVENT_UNUSED2 = 1 << 2,
   KFCURVEEVENT_UNUSED3 = 1 << 3,
   KFCURVEEVENT_KEY = 1 << 4,
   KFCURVEEVENT_DEPRECATED5 = 1 << 5,
   KFCURVEEVENT_UNUSED6 = 1 << 6,
   KFCURVEEVENT_UNUSED7 = 1 << 7,
   KFCURVEEVENT_SELECTION = 1 << 8,
   KFCURVEEVENT_DESTROY = 1 << 9,
   KFCURVEEVENT_DEPRECATED10 = 1 << 10,
   KFCURVEEVENT_KEYADD = 1 << 11,
   KFCURVEEVENT_KEYREMOVE = 1 << 12,
   KFCURVEEVENT_EDITVALUE = 1 << 13,
   KFCURVEEVENT_EDITTIME = 1 << 14,
   KFCURVEEVENT_EDITOTHER = 1 << 15
}
  Curve event type. More...

Functions

  KFBX_FORWARD (KFbx)
  KFBX_FORWARD (KDataType)
  KFBX_FORWARD (KgeQuaternion)
  KFBX_FORWARD (KgeRMatrix)
  KFBX_FORWARD (KFCurve)
KFBX_DLL kULong  GetRecordingMemory ()
KFBX_DLL void  WatchFree (void *pPtr, kULong pSize)
KFBX_DLL void *  WatchMalloc (kULong pSize)
void  TangentWeightAndAdjustTangent (EKFCurveDataIndex pIndex, kFCurveDouble pWeight, float mData[4])
KFBX_DLL void  KFCURVE_SetFCurveRecordMemoryBlockCount (int pBlockCount)
KFBX_DLL int  KFCURVE_GetFCurveMemoryBlockSize ()
KFBX_DLL void  KFCURVE_ClearMemoryBlockQueue ()
KFBX_DLL HKFCurve  KFCurveCreate ()
  Create a function curve.
KFBX_DLL HKFCurve  KFCurveCreate (KFbx *pFbx, bool pOnlyDefaults=false, bool pColor=false)
KFBX_DLL HKFCurve  KFCurveCreate (KFbx *pFbx, HKFCurve pCurve, bool pOnlyDefaults=false, bool pColor=false)

Variables

class KFBX_DLL  KMemoryBlockQueue
  class KMemoryBlockQueue: Memory queue for KFCurveKey attributes.
const int  KEY_BLOCK_SIZE = 1024
const int  KEY_BLOCK_COUNT = KEY_BLOCK_SIZE/sizeof (KPriFCurveKey)
const int  KEY_LIST_BLOCK_SIZE = 256
const int  KEY_LIST_BLOCK_COUNT = KEY_LIST_BLOCK_SIZE/sizeof (KPriFCurveKey *)

Define Documentation

#define IKFCurveID   43763635

Definition at line 68 of file kfcurve.h.

#define KFBX_FCURVE_INLINE   inline

Definition at line 49 of file kfcurve.h.

#define KFCURVE_FLOAT

Definition at line 58 of file kfcurve.h.


Typedef Documentation

typedef HKFCurve HIKFCurve

Definition at line 70 of file kfcurve.h.

typedef class KFBX_DLL KArrayTemplate< KFCurve * > KArrayKFCurve

Definition at line 71 of file kfcurve.h.

typedef void(* kFCurveCallback)(KFCurve *pFCurve, KFCurveEvent *FCurveEvent, void *pObject)

Definition at line 372 of file kfcurve.h.

Definition at line 298 of file kfcurve.h.

typedef float kFCurveDouble

Definition at line 60 of file kfcurve.h.

Definition at line 302 of file kfcurve.h.

typedef int kFCurveIndex

Definition at line 304 of file kfcurve.h.

Definition at line 297 of file kfcurve.h.

Definition at line 299 of file kfcurve.h.

Definition at line 301 of file kfcurve.h.

Definition at line 303 of file kfcurve.h.

Definition at line 300 of file kfcurve.h.


Enumeration Type Documentation

anonymous enum

Tangent visibility.

  • KFCURVE_TANGEANT_SHOW_NONE
  • KFCURVE_TANGEANT_SHOW_LEFT
  • KFCURVE_TANGEANT_SHOW_RIGHT
  • KFCURVE_TANGEANT_SHOW_BOTH
Enumerator:
KFCURVE_TANGEANT_SHOW_NONE 
KFCURVE_TANGEANT_SHOW_LEFT 
KFCURVE_TANGEANT_SHOW_RIGHT 
KFCURVE_TANGEANT_SHOW_BOTH 

Definition at line 166 of file kfcurve.h.

anonymous enum

Continuity flag.

  • KFCURVE_CONTINUITY
  • KFCURVE_CONTINUITY_FLAT
  • KFCURVE_CONTINUITY_BREAK
  • KFCURVE_CONTINUITY_INSERT Used to prevent the curve shape from changing when inserting a key
Enumerator:
KFCURVE_CONTINUITY 
KFCURVE_CONTINUITY_FLAT 
KFCURVE_CONTINUITY_BREAK 
KFCURVE_CONTINUITY_INSERT 

Definition at line 180 of file kfcurve.h.

anonymous enum

Weighted mode.

  • KFCURVE_WEIGHTED_NONE
  • KFCURVE_WEIGHTED_RIGHT
  • KFCURVE_WEIGHTED_NEXT_LEFT
  • KFCURVE_WEIGHTED_ALL
Enumerator:
KFCURVE_WEIGHTED_NONE 
KFCURVE_WEIGHTED_RIGHT 
KFCURVE_WEIGHTED_NEXT_LEFT 
KFCURVE_WEIGHTED_ALL 

Definition at line 194 of file kfcurve.h.

anonymous enum

Velocity mode.

  • KFCURVE_VELOCITY_NONE
  • KFCURVE_VELOCITY_RIGHT
  • KFCURVE_VELOCITY_NEXT_LEFT
  • KFCURVE_VELOCITY_ALL
Enumerator:
KFCURVE_VELOCITY_NONE 
KFCURVE_VELOCITY_RIGHT 
KFCURVE_VELOCITY_NEXT_LEFT 
KFCURVE_VELOCITY_ALL 

Definition at line 208 of file kfcurve.h.

anonymous enum

Extrapolation mode for function curve extremities.

  • KFCURVE_EXTRAPOLATION_CONST
  • KFCURVE_EXTRAPOLATION_REPETITION
  • KFCURVE_EXTRAPOLATION_MIRROR_REPETITION
  • KFCURVE_EXTRAPOLATION_KEEP_SLOPE
Enumerator:
KFCURVE_EXTRAPOLATION_CONST 
KFCURVE_EXTRAPOLATION_REPETITION 
KFCURVE_EXTRAPOLATION_MIRROR_REPETITION 
KFCURVE_EXTRAPOLATION_KEEP_SLOPE 

Definition at line 282 of file kfcurve.h.

anonymous enum
Enumerator:
KFCURVE_BEZIER 
KFCURVE_SAMPLE 
KFCURVE_ISO 

Definition at line 290 of file kfcurve.h.

anonymous enum

Curve event type.

  • KFCURVEEVENT_NONE default event value
  • KFCURVEEVENT_CANDIDATE curve value (not candidate) changed
  • KFCURVEEVENT_UNUSED1
  • KFCURVEEVENT_UNUSED2
  • KFCURVEEVENT_UNUSED3
  • KFCURVEEVENT_KEY key changed (add, removed, edited); see bits 11-15 for precisions
  • KFCURVEEVENT_DEPRECATED5
  • KFCURVEEVENT_UNUSED6
  • KFCURVEEVENT_UNUSED7
  • KFCURVEEVENT_SELECTION key selection changed
  • KFCURVEEVENT_DESTROY fcurve destruction
  • KFCURVEEVENT_DEPRECATED10
  • KFCURVEEVENT_KEYADD
  • KFCURVEEVENT_KEYREMOVE
  • KFCURVEEVENT_EDITVALUE
  • KFCURVEEVENT_EDITTIME
  • KFCURVEEVENT_EDITOTHER
Enumerator:
KFCURVEEVENT_NONE 
KFCURVEEVENT_CANDIDATE 
KFCURVEEVENT_UNUSED1 
KFCURVEEVENT_UNUSED2 
KFCURVEEVENT_UNUSED3 
KFCURVEEVENT_KEY 
KFCURVEEVENT_DEPRECATED5 
KFCURVEEVENT_UNUSED6 
KFCURVEEVENT_UNUSED7 
KFCURVEEVENT_SELECTION 
KFCURVEEVENT_DESTROY 
KFCURVEEVENT_DEPRECATED10 
KFCURVEEVENT_KEYADD 
KFCURVEEVENT_KEYREMOVE 
KFCURVEEVENT_EDITVALUE 
KFCURVEEVENT_EDITTIME 
KFCURVEEVENT_EDITOTHER 

Definition at line 325 of file kfcurve.h.

anonymous enum

Key interpolation type.

  • KFCURVE_INTERPOLATION_CONSTANT Constant value until next key.
  • KFCURVE_INTERPOLATION_LINEAR Linear progression to next key.
  • KFCURVE_INTERPOLATION_CUBIC Cubic progression to next key.
  • KFCURVE_INTERPOLATION_ALL
  • KFCURVE_INTERPOLATION_COUNT
Enumerator:
KFCURVE_INTERPOLATION_CONSTANT 
KFCURVE_INTERPOLATION_LINEAR 
KFCURVE_INTERPOLATION_CUBIC 
KFCURVE_INTERPOLATION_ALL 
KFCURVE_INTERPOLATION_COUNT 

Definition at line 85 of file kfcurve.h.

anonymous enum

Key constant mode.

  • KFCURVE_CONSTANT_STANDARD
  • KFCURVE_CONSTANT_NEXT
  • KFCURVE_CONSTANT_ALL
  • KFCURVE_CONSTANT_COUNT
Enumerator:
KFCURVE_CONSTANT_STANDARD 
KFCURVE_CONSTANT_NEXT 
KFCURVE_CONSTANT_ALL 
KFCURVE_CONSTANT_COUNT 

Definition at line 100 of file kfcurve.h.

anonymous enum

Key tangent mode for cubic interpolation.

  • KFCURVE_TANGEANT_AUTO Spline cardinal.
  • KFCURVE_TANGEANT_TCB Spline TCB.
  • KFCURVE_TANGEANT_USER Next slope at the left equal to slope at the right.
  • KFCURVE_GENERIC_BREAK Independent left and right slopes.
  • KFCURVE_GENERIC_CLAMP Auto key should be flat if next or previous keys have same value.
  • KFCURVE_GENERIC_TIME_INDEPENDENT Auto key time independent.
  • KFCURVE_TANGEANT_BREAK
  • KFCURVE_TANGEANT_AUTO_BREAK
  • KFCURVE_TANGEANT_ALL
  • KFCURVE_TANGEANT_TYPE_MASK
  • KFCURVE_TANGEANT_OVERRIDES_MASK
Enumerator:
KFCURVE_TANGEANT_AUTO 
KFCURVE_TANGEANT_TCB 
KFCURVE_TANGEANT_USER 
KFCURVE_GENERIC_BREAK 
KFCURVE_GENERIC_CLAMP 
KFCURVE_GENERIC_TIME_INDEPENDENT 
KFCURVE_TANGEANT_BREAK 
KFCURVE_TANGEANT_AUTO_BREAK 
KFCURVE_TANGEANT_ALL 
KFCURVE_TANGEANT_TYPE_MASK 
KFCURVE_TANGEANT_OVERRIDES_MASK 

Definition at line 121 of file kfcurve.h.

anonymous enum

Selection mode.

  • KFCURVE_SELECT_POINT
  • KFCURVE_SELECT_LEFT
  • KFCURVE_SELECT_RIGHT
  • KFCURVE_SELECT_ALL
Enumerator:
KFCURVE_SELECT_POINT 
KFCURVE_SELECT_LEFT 
KFCURVE_SELECT_RIGHT 
KFCURVE_SELECT_ALL 

Definition at line 142 of file kfcurve.h.

anonymous enum

Manipulation flag.

  • KFCURVE_MARKED_FOR_MANIP
  • KFCURVE_MARKED_ALL
Enumerator:
KFCURVE_MARKED_FOR_MANIP 
KFCURVE_MARKED_ALL 

Definition at line 154 of file kfcurve.h.

KFCurveKey data indices for cubic interpolation tangent information.

User and Break tangent mode (data are doubles).

  • KFCURVEKEY_RIGHT_SLOPE
  • KFCURVEKEY_NEXT_LEFT_SLOPE

User and Break tangent break mode (data are kInt16 tokens from weight and converted to doubles).

  • KFCURVEKEY_WEIGHTS
  • KFCURVEKEY_RIGHT_WEIGHT
  • KFCURVEKEY_NEXT_LEFT_WEIGHT

Velocity mode

  • KFCURVEKEY_VELOCITY
  • KFCURVEKEY_RIGHT_VELOCITY
  • KFCURVEKEY_NEXT_LEFT_VELOCITY

TCB tangent mode (data are floats).

  • KFCURVEKEY_TCB_TENSION
  • KFCURVEKEY_TCB_CONTINUITY
  • KFCURVEKEY_TCB_BIAS
  • KFCURVEKEY_RIGHT_AUTO
  • KFCURVEKEY_NEXT_LEFT_AUTO
Enumerator:
KFCURVEKEY_RIGHT_SLOPE 
KFCURVEKEY_NEXT_LEFT_SLOPE 
KFCURVEKEY_WEIGHTS 
KFCURVEKEY_RIGHT_WEIGHT 
KFCURVEKEY_NEXT_LEFT_WEIGHT 
KFCURVEKEY_VELOCITY 
KFCURVEKEY_RIGHT_VELOCITY 
KFCURVEKEY_NEXT_LEFT_VELOCITY 
KFCURVEKEY_TCB_TENSION 
KFCURVEKEY_TCB_CONTINUITY 
KFCURVEKEY_TCB_BIAS 
KFCURVEKEY_RIGHT_AUTO 
KFCURVEKEY_NEXT_LEFT_AUTO 

Definition at line 251 of file kfcurve.h.


Function Documentation

KFBX_DLL kULong GetRecordingMemory (  ) 

KFBX_FORWARD ( KFCurve   ) 

KFBX_FORWARD ( KgeRMatrix   ) 

KFBX_FORWARD ( KgeQuaternion   ) 

KFBX_FORWARD ( KDataType   ) 

KFBX_FORWARD ( KFbx   ) 

KFBX_DLL void KFCURVE_ClearMemoryBlockQueue (  ) 

KFBX_DLL int KFCURVE_GetFCurveMemoryBlockSize (  ) 

KFBX_DLL void KFCURVE_SetFCurveRecordMemoryBlockCount ( int  pBlockCount  ) 

KFBX_DLL HKFCurve KFCurveCreate ( KFbx pFbx,
HKFCurve  pCurve,
bool  pOnlyDefaults = false,
bool  pColor = false  
)

KFBX_DLL HKFCurve KFCurveCreate ( KFbx pFbx,
bool  pOnlyDefaults = false,
bool  pColor = false  
)

KFBX_DLL HKFCurve KFCurveCreate (  ) 

Create a function curve.

void TangentWeightAndAdjustTangent ( EKFCurveDataIndex  pIndex,
kFCurveDouble  pWeight,
float  mData[4]  
)

KFBX_DLL void WatchFree ( void *  pPtr,
kULong  pSize  
)

KFBX_DLL void* WatchMalloc ( kULong  pSize  ) 

Variable Documentation

Definition at line 894 of file kfcurve.h.

const int KEY_BLOCK_SIZE = 1024

Definition at line 893 of file kfcurve.h.

Definition at line 897 of file kfcurve.h.

const int KEY_LIST_BLOCK_SIZE = 256

Definition at line 896 of file kfcurve.h.

class KFBX_DLL KMemoryBlockQueue

class KMemoryBlockQueue: Memory queue for KFCurveKey attributes.

Definition at line 402 of file kfcurve.h.