5 #ifndef FLUTTER_IMPELLER_GEOMETRY_SCALAR_H_
6 #define FLUTTER_IMPELLER_GEOMETRY_SCALAR_H_
10 #include <type_traits>
21 template <
class T,
class = std::enable_if_t<std::is_arithmetic_v<T>>>
23 return val >= T{} ? val : -val;
127 return out <<
"Degrees(" << d.
degrees <<
")";
131 return out <<
"Radians(" << r.
radians <<
")";
constexpr float kEhCloseEnough
constexpr bool ScalarNearlyZero(Scalar x, Scalar tolerance=kEhCloseEnough)
constexpr bool ScalarNearlyEqual(Scalar x, Scalar y, Scalar tolerance=kEhCloseEnough)
constexpr T Absolute(const T &val)
constexpr Scalar Absolute< Scalar >(const float &val)
std::ostream & operator<<(std::ostream &out, const impeller::Arc &a)
constexpr bool operator==(Degrees d)
constexpr Degrees operator-(Degrees d) const
constexpr Degrees operator-() const
constexpr bool operator>(Degrees d)
constexpr Degrees operator+(Degrees d) const
constexpr bool operator<(Degrees d)
constexpr bool IsFinite() const
constexpr Degrees()=default
constexpr bool operator>=(Degrees d)
constexpr bool operator!=(Degrees d)
constexpr Degrees(Scalar p_degrees)
constexpr Degrees GetPositive() const
constexpr bool operator<=(Degrees d)
constexpr bool IsFinite() const
constexpr bool operator!=(Radians r)
constexpr Radians()=default
constexpr Radians operator-(Radians r)
constexpr bool operator>=(Radians r)
constexpr Radians operator-()
constexpr bool operator<=(Radians r)
constexpr Radians operator+(Radians r)
constexpr bool operator==(Radians r)
constexpr bool operator<(Radians r)
constexpr Radians(Scalar p_radians)
constexpr bool operator>(Radians r)