blob: 7ce67587165a96bdc5ce7b97d66645180f73d979 [file] [log] [blame]
#ifndef _RIVE_STATE_TRANSITION_FLAGS_HPP_
#define _RIVE_STATE_TRANSITION_FLAGS_HPP_
#include <type_traits>
namespace rive {
enum class StateTransitionFlags : unsigned char {
None = 0,
/// Whether the transition is disabled.
Disabled = 1 << 0,
/// Whether the transition duration is a percentage or time in ms.
DurationIsPercentage = 1 << 1,
/// Whether exit time is enabled.
EnableExitTime = 1 << 2,
/// Whether the exit time is a percentage or time in ms.
ExitTimeIsPercentage = 1 << 3,
/// Whether the animation is held at exit or if it keeps advancing
/// during mixing.
PauseOnExit = 1 << 4
};
inline constexpr StateTransitionFlags operator&(StateTransitionFlags lhs,
StateTransitionFlags rhs) {
return static_cast<StateTransitionFlags>(
static_cast<std::underlying_type<StateTransitionFlags>::type>(lhs) &
static_cast<std::underlying_type<StateTransitionFlags>::type>(rhs));
}
inline constexpr StateTransitionFlags operator^(StateTransitionFlags lhs,
StateTransitionFlags rhs) {
return static_cast<StateTransitionFlags>(
static_cast<std::underlying_type<StateTransitionFlags>::type>(lhs) ^
static_cast<std::underlying_type<StateTransitionFlags>::type>(rhs));
}
inline constexpr StateTransitionFlags operator|(StateTransitionFlags lhs,
StateTransitionFlags rhs) {
return static_cast<StateTransitionFlags>(
static_cast<std::underlying_type<StateTransitionFlags>::type>(lhs) |
static_cast<std::underlying_type<StateTransitionFlags>::type>(rhs));
}
inline constexpr StateTransitionFlags operator~(StateTransitionFlags rhs) {
return static_cast<StateTransitionFlags>(
~static_cast<std::underlying_type<StateTransitionFlags>::type>(rhs));
}
inline StateTransitionFlags& operator|=(StateTransitionFlags& lhs, StateTransitionFlags rhs) {
lhs = static_cast<StateTransitionFlags>(
static_cast<std::underlying_type<StateTransitionFlags>::type>(lhs) |
static_cast<std::underlying_type<StateTransitionFlags>::type>(rhs));
return lhs;
}
inline StateTransitionFlags& operator&=(StateTransitionFlags& lhs, StateTransitionFlags rhs) {
lhs = static_cast<StateTransitionFlags>(
static_cast<std::underlying_type<StateTransitionFlags>::type>(lhs) &
static_cast<std::underlying_type<StateTransitionFlags>::type>(rhs));
return lhs;
}
inline StateTransitionFlags& operator^=(StateTransitionFlags& lhs, StateTransitionFlags rhs) {
lhs = static_cast<StateTransitionFlags>(
static_cast<std::underlying_type<StateTransitionFlags>::type>(lhs) ^
static_cast<std::underlying_type<StateTransitionFlags>::type>(rhs));
return lhs;
}
} // namespace rive
#endif