| #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 |