8 #ifndef PXR_BASE_VT_VALUE_COMPOSE_OVER_H
9 #define PXR_BASE_VT_VALUE_COMPOSE_OVER_H
48 VT_API std::optional<VtValue>
77 std::type_info
const &weakType,
84 template <
class Ret,
class Strong,
class Weak>
89 "Unexpected compose-over registration for one of the "
93 "Use VT_VALUE_TYPE_CAN_COMPOSE or specialize "
94 "VtValueTypeCanCompose<> before registering compose-over "
97 using TypedFn = Ret (*)(Strong
const &, Weak
const &);
98 using VoidFn =
void (*)();
100 VoidFn voidFn =
reinterpret_cast<VoidFn
>(fn);
102 typeid(Strong),
typeid(Weak), voidFn,
104 TypedFn tFn =
reinterpret_cast<TypedFn
>(vFn);
115 #endif // PXR_BASE_VT_VALUE_COMPOSE_OVER_H
#define PXR_NAMESPACE_OPEN_SCOPE
PXR_NAMESPACE_OPEN_SCOPE bool VtValueCanComposeOver(VtValueRef val)
VT_API std::optional< VtValue > VtValueTryComposeOver(VtValueRef stronger, VtValueRef weaker)
void VtRegisterComposeOver(Ret(*fn)(Strong const &, Weak const &))
VT_API bool VtValueTypeCanComposeOver(std::type_info const &strongType)
#define TF_DEV_AXIOM(cond)
bool CanComposeOver() const
ImageBuf OIIO_API over(const ImageBuf &A, const ImageBuf &B, ROI roi={}, int nthreads=0)
constexpr VtBackgroundType VtBackground
_TypeInfoFor< T >::GetObjResultType UncheckedGet() const
#define PXR_NAMESPACE_CLOSE_SCOPE
VT_API void Vt_RegisterComposeOver(std::type_info const &strongType, std::type_info const &weakType, void(*voidFn)(), VtValue(*over)(VtValueRef, VtValueRef, void(*)()))
VT_API VtValue VtValueComposeOver(VtValueRef stronger, VtValueRef weaker)
bool operator==(const Mat3< T0 > &m0, const Mat3< T1 > &m1)
Equality operator, does exact floating point comparisons.
A trait to detect instantiations of VtArrayEdit, specialized in arrayEdit.h.