blob: ec2bc94c2e577f896e610d8ea909ae6201a1cdc1 [file]
#ifndef _RIVE_TEXT_MODIFIER_FLAGS_HPP_
#define _RIVE_TEXT_MODIFIER_FLAGS_HPP_
#include <cstdint>
namespace rive
{
enum class TextModifierFlags : uint8_t
{
modifyOrigin = 1 << 0,
modifyTranslation = 1 << 2,
modifyRotation = 1 << 3,
modifyScale = 1 << 4,
modifyOpacity = 1 << 5,
invertOpacity = 1 << 6
};
inline constexpr TextModifierFlags operator&(
TextModifierFlags lhs,
TextModifierFlags rhs)
{
return static_cast<TextModifierFlags>(
static_cast<std::underlying_type<TextModifierFlags>::type>(lhs) &
static_cast<std::underlying_type<TextModifierFlags>::type>(rhs));
}
inline constexpr TextModifierFlags operator^(
TextModifierFlags lhs,
TextModifierFlags rhs)
{
return static_cast<TextModifierFlags>(
static_cast<std::underlying_type<TextModifierFlags>::type>(lhs) ^
static_cast<std::underlying_type<TextModifierFlags>::type>(rhs));
}
inline constexpr TextModifierFlags operator|(
TextModifierFlags lhs,
TextModifierFlags rhs)
{
return static_cast<TextModifierFlags>(
static_cast<std::underlying_type<TextModifierFlags>::type>(lhs) |
static_cast<std::underlying_type<TextModifierFlags>::type>(rhs));
}
inline constexpr TextModifierFlags operator~(TextModifierFlags rhs)
{
return static_cast<TextModifierFlags>(
~static_cast<std::underlying_type<TextModifierFlags>::type>(rhs));
}
inline TextModifierFlags& operator|=(
TextModifierFlags& lhs,
TextModifierFlags rhs)
{
lhs = static_cast<TextModifierFlags>(
static_cast<std::underlying_type<TextModifierFlags>::type>(lhs) |
static_cast<std::underlying_type<TextModifierFlags>::type>(rhs));
return lhs;
}
inline TextModifierFlags& operator&=(
TextModifierFlags& lhs,
TextModifierFlags rhs)
{
lhs = static_cast<TextModifierFlags>(
static_cast<std::underlying_type<TextModifierFlags>::type>(lhs) &
static_cast<std::underlying_type<TextModifierFlags>::type>(rhs));
return lhs;
}
inline TextModifierFlags& operator^=(
TextModifierFlags& lhs,
TextModifierFlags rhs)
{
lhs = static_cast<TextModifierFlags>(
static_cast<std::underlying_type<TextModifierFlags>::type>(lhs) ^
static_cast<std::underlying_type<TextModifierFlags>::type>(rhs));
return lhs;
}
} // namespace rive
#endif