//------------------------------------------------------------------------------ // VERSION 0.9.1 // // LICENSE // This software is dual-licensed to the public domain and under the following // license: you are granted a perpetual, irrevocable license to copy, modify, // publish, and distribute this file as you see fit. // // CREDITS // Written by Michal Cichon //------------------------------------------------------------------------------ #ifndef __IMGUI_EXTRA_MATH_H__ #define __IMGUI_EXTRA_MATH_H__ #pragma once //------------------------------------------------------------------------------ #ifndef IMGUI_DEFINE_MATH_OPERATORS #define IMGUI_DEFINE_MATH_OPERATORS #endif #include "imgui.h" #include "imgui_internal.h" //------------------------------------------------------------------------------ struct ImLine { ImVec2 A, B; }; //------------------------------------------------------------------------------ #if IMGUI_VERSION_NUM < 19002 inline bool operator==(const ImVec2 &lhs, const ImVec2 &rhs); inline bool operator!=(const ImVec2 &lhs, const ImVec2 &rhs); #endif inline ImVec2 operator*(const float lhs, const ImVec2 &rhs); #if IMGUI_VERSION_NUM < 18955 inline ImVec2 operator-(const ImVec2 &lhs); #endif //------------------------------------------------------------------------------ inline float ImLength(float v); inline float ImLength(const ImVec2 &v); inline float ImLengthSqr(float v); inline ImVec2 ImNormalized(const ImVec2 &v); //------------------------------------------------------------------------------ inline bool ImRect_IsEmpty(const ImRect &rect); inline ImVec2 ImRect_ClosestPoint(const ImRect &rect, const ImVec2 &p, bool snap_to_edge); inline ImVec2 ImRect_ClosestPoint(const ImRect &rect, const ImVec2 &p, bool snap_to_edge, float radius); inline ImVec2 ImRect_ClosestPoint(const ImRect &rect, const ImRect &b); inline ImLine ImRect_ClosestLine(const ImRect &rect_a, const ImRect &rect_b); inline ImLine ImRect_ClosestLine(const ImRect &rect_a, const ImRect &rect_b, float radius_a, float radius_b); //------------------------------------------------------------------------------ namespace ImEasing { template inline V EaseOutQuad(V b, V c, T t) { return b - c * (t * (t - 2)); } } // namespace ImEasing //------------------------------------------------------------------------------ #include "imgui_extra_math.inl" //------------------------------------------------------------------------------ #endif // __IMGUI_EXTRA_MATH_H__