fbsdk/fbproperties.h File Reference

fbproperties.h File Reference
#include <kaydaradef.h>
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <fbsdk/fbplug.h>
#include <fbsdk/fbarray.h>
#include <fbsdk/fbstring.h>
#include <fbsdk/fbtime.h>
#include <fbsdk/fbevaluateinfo.h>

File Description

Property classes.

Properties are callback variables that insert a layer of abstraction between the internal objects and the software development kit.

Definition in file fbproperties.h.

Classes

class  FBProperty
 Property: Base property class. More...
 
class  FBPropertyEvent
 PropertyEvent: Base event class. More...
 
class  FBPropertyEventUIIdle
 PropertyEvent: UI idle event. More...
 
class  FBPropertyEventVideoFrameRendering
 PropertyEvent: Video Frame Rendering Event More...
 
class  FBPropertyEventConnectionNotify
 PropertyEvent: Global ConnectionNotify event. More...
 
class  FBPropertyEventConnectionDataNotify
 PropertyEvent: Global ConnectionDataNotify event. More...
 
class  FBPropertyEventConnectionStateNotify
 PropertyEvent: Global ConnectionStateNotify event. More...
 
class  FBPropertyEventConnectionKeyingNotify
 PropertyEvent: Global KeyingNotify event. More...
 
class  FBPropertyBase< tType, pPT >
 
class  FBPropertyBaseEnum< tType >
 
class  FBPropertyBasicList
 
class  FBPropertyBaseList< tType >
 
class  FBPropertyStringList
 Property: StringList More...
 
class  FBPropertyManager
 Property Manager. More...
 
class  FBPropertyBaseComponent< tType >
 
class  FBPropertyString
 Property class: const char * (String). More...
 
class  FBPropertyAction
 Property: Action Action property to trigger function. More...
 
class  FBPropertyAnimatable
 Animatable property base class. More...
 
class  FBPropertyBaseAnimatable< tType, pPT >
 
class  FBPropertyBaseAnimatableEnum< tType >
 

Namespaces

 ORSDK2018
 

Macros

#define FBSDK_DLL   K_DLLIMPORT
 Be sure that FBSDK_DLL is defined only once... More...
 
#define FB_DEFINE_COMPONENT(DllTag, Type)
 Define a component and give it the ability to be a property. More...
 
#define FB_DEFINE_ENUM(DllTag, Type)   typedef class DllTag FBPropertyBaseEnum< enum FB##Type > FBProperty##Type;
 Define an enum and give it the ability to be a property. More...
 
#define FB_DEFINE_CLASS_ENUM(EnumName)   typedef class FBPropertyBaseEnum< enum __FBClassType::e##EnumName > Property##EnumName;
 Define a private enum and give it the ability to be a property. More...
 
#define FB_DEFINE_LIST(DllTag, Type)   typedef class DllTag FBPropertyBaseList< FB##Type* > FBPropertyBaseList##Type;
 Define a component list. More...
 
#define FBImplementPropertyComponent(DllTag, Type)
 Implement a property based on a component. More...
 
#define FBImplementPropertyEnum(DllTag, Type)   template class DllTag FBSDKNamespaceFunc(FBPropertyBaseEnum)< enum FB##Type >
 Implement a property based on an enumeration. More...
 
#define FBImplementClassPropertyEnum(DllTag, Class, EnumName)   template class DllTag FBSDKNamespaceFunc(FBPropertyBaseEnum)< enum Class::E##EnumName >
 
#define FBImplementPropertyList(DllTag, Type)   template class DllTag FBSDKNamespaceFunc(FBPropertyBaseList) < FB##Type* >
 Implement a property list for a component. More...
 
#define FBPropertyInit(Param, Type, PropName, Get, Set)
 Initialize a property: default. More...
 
#define FBPropertyInitList(Param, PropName)
 Initialize a property: list. More...
 
#define FBPropertyInitStringList(Param, PropName)
 Initialize a property: string list. More...
 
#define FBPropertyInitEvent(Param, Type, SubType, PropName)
 Initialize a property: event. More...
 
#define FBPropertyInitEventGlobal(GlobalEventName, PropName)
 Initialize a property: global event. More...
 
#define FBPropertyInitInternal(Parent, PropName, MBProperty)
 Mapping to internal properties. More...
 
#define FBPropertyInitInternalEnum(Param, Type, PropName, MBProperty, Get, Set )
 Mapping to internal enum properties. More...
 
#define FBPropertyPublish(Parent, Prop, PropName, Get, Set)
 Publish a property. More...
 
#define FBPropertyInitTextureConnectable(Parent, Prop, PropName)
 Initialize a property: user texture connect property. More...
 

Typedefs

typedef KEventBase * HKEventBase
 
typedef KObject * HKObject
 
typedef KProperty * HKProperty
 
typedef KEvaluationProperty * HKEvaluationProperty
 
typedef KDataType * HKDataType
 
typedef IFBObject * HIFBObject
 
typedef IRegister * HIRegister
 
typedef void(* fbGetSetHandler) (void)
 function pointer More...
 
typedef void(* fbExternalGetSetHandler) (HIObject pObject)
 function pointer More...
 
typedef class FBPropertyBaseEnum< enum kDefaultEnum > FBPropertyEnum
 A typedef Definition. More...
 
typedef class FBPropertyBase< bool, kFBPT_bool > FBPropertyBool
 Property: bool More...
 
typedef class FBPropertyBase< int, kFBPT_int > FBPropertyInt
 Property: int More...
 
typedef class FBPropertyBase< long long, kFBPT_int64 > FBPropertyInt64
 Property: int More...
 
typedef class FBPropertyBase< unsigned long long, kFBPT_uint64 > FBPropertyUInt64
 Property: int More...
 
typedef class FBPropertyBase< double, kFBPT_double > FBPropertyDouble
 Property: double More...
 
typedef class FBPropertyBase< float, kFBPT_float > FBPropertyFloat
 Property: float More...
 
typedef class FBPropertyBase< FBTime, kFBPT_Time > FBPropertyTime
 Property: FBTime More...
 
typedef class FBPropertyBase< FBTimeCode, kFBPT_TimeCode > FBPropertyTimeCode
 Property: FBTimeCode More...
 
typedef class FBPropertyBase< FBTimeSpan, kFBPT_TimeSpan > FBPropertyTimeSpan
 Property: FBTimeSpan More...
 
typedef class FBPropertyBase< kReference, kFBPT_kReference > FBPropertykReference
 Property: kReference More...
 
typedef class FBPropertyBase< FBProperty *, kFBPT_Reference > FBPropertyReference
 Property: FBProperty * More...
 
typedef class FBPropertyBase< FBComponent *, kFBPT_object > _FBPropertyBaseComponent
 Property: FBPropertyBase(FBComponent*) More...
 
typedef class FBPropertyBaseComponent< FBComponent * > FBPropertyComponent
 Property: FBPropertyBaseComponent(FBComponent*) More...
 
typedef class FBPropertyBase< FBPlug *, kFBPT_object > _FBPropertyBasePlug
 Property: FBPropertyBase(FBPlug*) More...
 
typedef class FBPropertyBaseComponent< FBPlug * > FBPropertyPlug
 Property: FBPropertyBaseComponent(FBPlug*) More...
 
typedef class FBPropertyBase< FBColor, kFBPT_ColorRGB > FBPropertyColor
 FBPropertyColor type definition. More...
 
typedef class FBPropertyBase< FBColorAndAlpha, kFBPT_ColorRGBA > FBPropertyColorAndAlpha
 FBPropertyColorAndAlpha type definition. More...
 
typedef class FBPropertyBase< FBVector2d, kFBPT_Vector2D > FBPropertyVector2d
 FBPropertyVector2d type definition. More...
 
typedef class FBPropertyBase< FBVector3d, kFBPT_Vector3D > FBPropertyVector3d
 FBPropertyVector3d type definition. More...
 
typedef class FBPropertyBase< FBVector4d, kFBPT_Vector4D > FBPropertyVector4d
 FBPropertyVector4d type definition. More...
 
typedef class FBPropertyBaseAnimatable< bool, kFBPT_Action > FBPropertyAnimatableAction
 FBPropertyAnimatableAction type definition. More...
 
typedef class FBPropertyBaseAnimatable< bool, kFBPT_bool > FBPropertyAnimatableBool
 FBPropertyAnimatableBool type definition. More...
 
typedef class FBPropertyBaseAnimatable< int, kFBPT_int > FBPropertyAnimatableInt
 FBPropertyAnimatableInt type definition. More...
 
typedef class FBPropertyBaseAnimatable< long long, kFBPT_int64 > FBPropertyAnimatableInt64
 FBPropertyAnimatableInt64 type definition. More...
 
typedef class FBPropertyBaseAnimatable< unsigned long long, kFBPT_uint64 > FBPropertyAnimatableUInt64
 FBPropertyAnimatableUInt64 type definition. More...
 
typedef class FBPropertyBaseAnimatable< int, kFBPT_enum > FBPropertyAnimatableEnum
 FBPropertyBaseAnimatableEnum type definition. More...
 
typedef class FBPropertyBaseAnimatable< double, kFBPT_double > FBPropertyAnimatableDouble
 FBPropertyBaseAnimatableDouble type definition. More...
 
typedef class FBPropertyBaseAnimatable< FBTime, kFBPT_Time > FBPropertyAnimatableTime
 FBPropertyBaseAnimatableTime type definition. More...
 
typedef class FBPropertyBaseAnimatable< FBTimeCode, kFBPT_TimeCode > FBPropertyAnimatableTimeCode
 FBPropertyBaseAnimatableTimeCode type definition. More...
 
typedef class FBPropertyBaseAnimatable< FBVector2d, kFBPT_Vector2D > FBPropertyAnimatableVector2d
 FBPropertyAnimatableVector2D type definition. More...
 
typedef class FBPropertyBaseAnimatable< FBVector3d, kFBPT_Vector3D > FBPropertyAnimatableVector3d
 FBPropertyAnimatableVector3D type definition. More...
 
typedef class FBPropertyBaseAnimatable< FBVector4d, kFBPT_Vector4D > FBPropertyAnimatableVector4d
 FBPropertyAnimatableVector4D type definition. More...
 
typedef class FBPropertyBaseAnimatable< FBColor, kFBPT_ColorRGB > FBPropertyAnimatableColor
 FBPropertyAnimatableColor type definition. More...
 
typedef class FBPropertyBaseAnimatable< FBColorAndAlpha, kFBPT_ColorRGBA > FBPropertyAnimatableColorAndAlpha
 FBPropertyAnimatableColorAndAlpha type definition. More...
 

Enumerations

enum  FBPropertyType {
  kFBPT_unknown, kFBPT_int, kFBPT_int64, kFBPT_uint64,
  kFBPT_bool, kFBPT_float, kFBPT_double, kFBPT_charptr,
  kFBPT_enum, kFBPT_Time, kFBPT_TimeCode, kFBPT_object,
  kFBPT_event, kFBPT_stringlist, kFBPT_Vector4D, kFBPT_Vector3D,
  kFBPT_ColorRGB, kFBPT_ColorRGBA, kFBPT_Action, kFBPT_Reference,
  kFBPT_TimeSpan, kFBPT_kReference, kFBPT_Vector2D
}
 Property types. More...
 
enum  FBDataAsStringFlag { kFBDataAsStringUI = 0, kFBDataAsStringPersistence = 1 }
 FBDataAsStringFlag. More...
 
enum  FBPropertyFlag {
  kFBPropertyFlagNotSet = 0, kFBPropertyFlagHideProperty = (1 << 0), kFBPropertyFlagForceStaticProperty = (1 << 1), kFBPropertyFlagDisableProperty = (1 << 2),
  kFBPropertyFlagSlavedProperty = (1 << 3), kFBPropertyFlagAnimated = (1 << 4), kFBPropertyFlagNotSavable = (1 << 5), kFBPropertyFlagReadOnly = (1 << 6),
  kFBPropertyFlagNotUserDeletable = (1 << 7), kFBValueAllocated = (1 << 8), kFBDynamicHidden = (1 << 9), kFBSlaveSetByMaster = (1 << 10),
  kFBLoadedUserProperty = (1 << 11)
}
 Available flags for FBProperty objects. More...
 
enum  kDefaultEnum { kDefaultItemNone }
 Patch to use the base enum for casting values . More...
 

Functions

template<class T >
T * FBCast (FBProperty *pProperty, bool pAutoCreate=false)
 Cast property using it's IObject interface into the proper type. More...
 

Macro Definition Documentation

#define FB_DEFINE_CLASS_ENUM (   EnumName)    typedef class FBPropertyBaseEnum< enum __FBClassType::e##EnumName > Property##EnumName;

Define a private enum and give it the ability to be a property.

Parameters
EnumNameName of the Enum to register as a property.

Definition at line 154 of file fbproperties.h.

#define FB_DEFINE_COMPONENT (   DllTag,
  Type 
)
Value:
class FB##Type; \
typedef class DllTag FBPropertyBase< FB##Type*,kFBPT_object > FBPropertyBase##Type; \
typedef class DllTag FBPropertyBaseComponent< FB##Type* > FBProperty##Type

Define a component and give it the ability to be a property.

Parameters
DllTagAssociated DLL.
TypeComponent to register as a property.

Definition at line 139 of file fbproperties.h.

#define FB_DEFINE_ENUM (   DllTag,
  Type 
)    typedef class DllTag FBPropertyBaseEnum< enum FB##Type > FBProperty##Type;

Define an enum and give it the ability to be a property.

Parameters
DllTagAssociated DLL.
TypeEnum to register as a property.

Definition at line 148 of file fbproperties.h.

#define FB_DEFINE_LIST (   DllTag,
  Type 
)    typedef class DllTag FBPropertyBaseList< FB##Type* > FBPropertyBaseList##Type;

Define a component list.

Parameters
DllTagAssociated DLL.
TypeComponent to use as a list item.

Definition at line 161 of file fbproperties.h.

#define FBImplementClassPropertyEnum (   DllTag,
  Class,
  EnumName 
)    template class DllTag FBSDKNamespaceFunc(FBPropertyBaseEnum)< enum Class::E##EnumName >

Definition at line 1269 of file fbproperties.h.

#define FBImplementPropertyComponent (   DllTag,
  Type 
)
Value:
template class DllTag FBSDKNamespaceFunc(FBPropertyBase)< FB##Type*,kFBPT_object >; \
template class DllTag FBSDKNamespaceFunc(FBPropertyBaseComponent)< FB##Type* >;
#define FBSDKNamespaceFunc(Name)
FBSDKNamespaceFunc define.
Definition: fbversion.h:66

Implement a property based on a component.

Parameters
DllTagAssociated DLL.
TypeClass to implement.

Definition at line 1254 of file fbproperties.h.

#define FBImplementPropertyEnum (   DllTag,
  Type 
)    template class DllTag FBSDKNamespaceFunc(FBPropertyBaseEnum)< enum FB##Type >

Implement a property based on an enumeration.

Parameters
DllTagAssociated DLL.
TypeClass to implement.

Definition at line 1267 of file fbproperties.h.

#define FBImplementPropertyList (   DllTag,
  Type 
)    template class DllTag FBSDKNamespaceFunc(FBPropertyBaseList) < FB##Type* >

Implement a property list for a component.

Parameters
DllTagAssociated DLL.
TypeClass to implement list for.

Definition at line 1280 of file fbproperties.h.

#define FBPropertyInit (   Param,
  Type,
  PropName,
  Get,
  Set 
)
Value:
{ \
PropertyAdd(PropName.Init( (void*)Param,#PropName,(Type (*)(void *))Get,(void (*)(void *,Type))Set )); \
}
#define Set(a0, a1, a2, a3)
Definition: Python-ast.h:467

Initialize a property: default.

Parameters
ParamOwner name.
TypeType of variable.
PropNameVariable name.
GetGet function pointer.
SetSet function pointer.

Definition at line 1381 of file fbproperties.h.

#define FBPropertyInitEvent (   Param,
  Type,
  SubType,
  PropName 
)
Value:
{ \
PropertyAdd(PropName.Init( this, IQ(Param,IRegister),#PropName,Type,SubType )); \
}
#define IQ(Object, Interface)
Definition: iobject.h:66

Initialize a property: event.

Parameters
ParamOwner name.
TypeEvent Type.
SubTypeEvent SubType.
PropNameVariable name.

Definition at line 1410 of file fbproperties.h.

#define FBPropertyInitEventGlobal (   GlobalEventName,
  PropName 
)
Value:
{ \
PropertyAdd(PropName.InitGlobal( #PropName,GlobalEventName )); \
}

Initialize a property: global event.

Parameters
GlobalEventNameName of the global eventEvent Type.
PropNameVariable name.

Definition at line 1419 of file fbproperties.h.

#define FBPropertyInitInternal (   Parent,
  PropName,
  MBProperty 
)
Value:
{\
PropertyAdd(PropName.InitInternal( MBProperty ));\
}

Mapping to internal properties.

Definition at line 1425 of file fbproperties.h.

#define FBPropertyInitInternalEnum (   Param,
  Type,
  PropName,
  MBProperty,
  Get,
  Set 
)
Value:
{\
PropName.InitInternal( MBProperty ); \
PropertyAdd(PropName.Init( (void*)Param,#PropName,(Type (*)(void *))Get,(void (*)(void *,Type))Set )); \
}
#define Set(a0, a1, a2, a3)
Definition: Python-ast.h:467

Mapping to internal enum properties.

Definition at line 1431 of file fbproperties.h.

#define FBPropertyInitList (   Param,
  PropName 
)
Value:
{ \
PropertyAdd(PropName.Init( Param,#PropName )); \
}

Initialize a property: list.

Parameters
ParamOwner name.
PropNameVariable name.

Definition at line 1390 of file fbproperties.h.

#define FBPropertyInitStringList (   Param,
  PropName 
)
Value:
{ \
PropertyAdd(PropName.Init( Param, #PropName )); \
}

Initialize a property: string list.

Parameters
ParamOwner name.
PropNameVariable name .

Definition at line 1399 of file fbproperties.h.

#define FBPropertyInitTextureConnectable (   Parent,
  Prop,
  PropName 
)
Value:
{ \
PropertyAdd(Prop.CreateTextureConnectable( Parent,PropName )); \
}

Initialize a property: user texture connect property.

Only support Color, ColorAndAlpha, Number, Vector, Vector2, Vector4 data type for user texture connectable property!

Remarks
Need initialize the property before assign a value for it, otherwise may get assert failure.
Parameters
ParentOwner name.
PropVariable
PropNameVariable Name.
+ Examples:

Definition at line 1455 of file fbproperties.h.

#define FBPropertyPublish (   Parent,
  Prop,
  PropName,
  Get,
  Set 
)
Value:
{ \
PropertyAdd(Prop.CreateInternal( Parent,PropName,(fbExternalGetSetHandler)Get,(fbExternalGetSetHandler)Set )); \
}
#define Set(a0, a1, a2, a3)
Definition: Python-ast.h:467
void(* fbExternalGetSetHandler)(HIObject pObject)
function pointer
Definition: fbproperties.h:167

Publish a property.

Parameters
ParentOwner name.
PropVariable
PropNameVariable Name.
GetGet function pointer.
SetSet function pointer.
+ Examples:

Definition at line 1444 of file fbproperties.h.

#define FBSDK_DLL   K_DLLIMPORT

Be sure that FBSDK_DLL is defined only once...

Definition at line 51 of file fbproperties.h.

Typedef Documentation

typedef IFBObject* HIFBObject

Definition at line 69 of file fbproperties.h.

typedef IRegister* HIRegister

Definition at line 70 of file fbproperties.h.

typedef KDataType* HKDataType

Definition at line 68 of file fbproperties.h.

typedef KEvaluationProperty* HKEvaluationProperty

Definition at line 67 of file fbproperties.h.

typedef KEventBase* HKEventBase

Definition at line 64 of file fbproperties.h.

typedef KObject* HKObject

Definition at line 65 of file fbproperties.h.

typedef KProperty* HKProperty

Definition at line 66 of file fbproperties.h.

Go to the source code of this file.