5#ifndef FLUTTER_IMPELLER_GEOMETRY_SCALAR_H_
6#define FLUTTER_IMPELLER_GEOMETRY_SCALAR_H_
21template <
class T,
class = std::enable_if_t<std::is_arithmetic_v<T>>>
23 return val >= T{} ? val : -val;
107 return out <<
"Degrees(" <<
d.degrees <<
")";
111 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 Degrees operator-(Degrees d) const
constexpr Degrees operator-() const
constexpr Degrees operator+(Degrees d) const
constexpr bool IsFinite() const
constexpr Degrees()=default
constexpr auto operator<=>(const Degrees &d) const =default
constexpr Degrees(Scalar p_degrees)
constexpr Degrees GetPositive() const
constexpr bool IsFinite() const
constexpr Radians()=default
constexpr Radians operator-(Radians r)
constexpr Radians operator-()
constexpr Radians operator+(Radians r)
constexpr auto operator<=>(const Radians &r) const =default
constexpr Radians(Scalar p_radians)