X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=ETL%2Ftags%2Fstable%2FETL%2F_angle.h;h=c15f90d813e97601ec0a2ba71fd011571f4d8cfd;hb=5341f6b31c84503582f48aac574cfea6c49cfcb2;hp=78e91baba524b8645472becf07647d9032466b22;hpb=26d279453f9f77f36658584e5d2b3dbbdf56b761;p=synfig.git diff --git a/ETL/tags/stable/ETL/_angle.h b/ETL/tags/stable/ETL/_angle.h index 78e91ba..c15f90d 100644 --- a/ETL/tags/stable/ETL/_angle.h +++ b/ETL/tags/stable/ETL/_angle.h @@ -118,6 +118,7 @@ public: return ret; } +#ifdef ETL_NOT_USED //! 180 degree rotation operator /*! Returns the angle directly opposite of the given angle, and will yield a result @@ -129,7 +130,9 @@ public: ret.v = v+PI; return ret.mod(); } +#endif // ETL_NOT_USED +#ifdef ETL_WRAP_ANGLES /*! Returns true if the shortest angle from the left-hand to the right-hand side is counter-clockwise */ @@ -175,6 +178,47 @@ public: bool operator!=(const angle &rhs)const { return std::abs(dist(rhs).v)>ANGLE_EPSILON; } +#else // ETL_WRAP_ANGLES + /*! Returns true if the left-hand + side is less than the + right-hand side */ + bool + operator<(const angle &rhs)const + { return v < rhs.v; } + + /*! Returns true if the left-hand + side is greater than the + right-hand side */ + bool + operator>(const angle &rhs)const + { return v > rhs.v; } + + /*! Returns true if the left-hand + side is less or equal to the + right-hand side */ + bool + operator<=(const angle &rhs)const + { return v <= rhs.v; } + + /*! Returns true if the left-hand + side is greater than or equal + to the right-hand side */ + bool + operator>=(const angle &rhs)const + { return v >= rhs.v; } + + /*! Returns true if the angles + are the same, or close */ + bool + operator==(const angle &rhs)const + { return std::abs(v - rhs.v)ANGLE_EPSILON; } +#endif // ETL_WRAP_ANGLES //! Absolute Angle Function /*! This function will return the @@ -187,6 +231,7 @@ public: return ret; } +#ifdef ETL_WRAP_ANGLES //! Angle Difference Function /*! This function will return the shortest physical distance between @@ -211,6 +256,26 @@ public: ret.v-=rot_floor(ret.v); return ret; } +#else // ETL_WRAP_ANGLES + //! Angle Difference Function + /*! This function will return the + difference between + two angles, just like + \sa angle operator-(const angle &) */ + angle + dist(const angle &rhs)const + { return angle(*this)-=rhs; } + + //! Rotation Modulus + /*! This function will return the + value of the angle */ + angle + mod()const + { + angle ret(*this); + return ret; + } +#endif // ETL_WRAP_ANGLES //! Zero Rotation (0 degrees) static angle @@ -243,8 +308,10 @@ public: private: +#ifdef ETL_WRAP_ANGLES static value_type rot_floor(value_type x) { return static_cast(std::floor(x/(PI*2))*PI*2); } +#endif // ETL_WRAP_ANGLES public: /*