summaryrefslogtreecommitdiff
path: root/3rdparty/imgui-node-editor/imgui_extra_math.h
diff options
context:
space:
mode:
authorrtk0c <[email protected]>2021-04-17 20:01:40 -0700
committerrtk0c <[email protected]>2021-04-17 20:01:40 -0700
commit7b6b229ad9d85d1145322b2edd5992a4629c2106 (patch)
treeedc5861d7e526ff6aae0fa8038a9ad07c743e0ab /3rdparty/imgui-node-editor/imgui_extra_math.h
parentdca1286661f61e51943863de8ce68849a9578363 (diff)
Change imnodes to imgui-node-editor (more mature, more features)
Diffstat (limited to '3rdparty/imgui-node-editor/imgui_extra_math.h')
-rw-r--r--3rdparty/imgui-node-editor/imgui_extra_math.h71
1 files changed, 71 insertions, 0 deletions
diff --git a/3rdparty/imgui-node-editor/imgui_extra_math.h b/3rdparty/imgui-node-editor/imgui_extra_math.h
new file mode 100644
index 0000000..2a3a2fe
--- /dev/null
+++ b/3rdparty/imgui-node-editor/imgui_extra_math.h
@@ -0,0 +1,71 @@
+//------------------------------------------------------------------------------
+// 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
+
+
+//------------------------------------------------------------------------------
+# include <imgui.h>
+# ifndef IMGUI_DEFINE_MATH_OPERATORS
+# define IMGUI_DEFINE_MATH_OPERATORS
+# endif
+# include <imgui_internal.h>
+
+
+//------------------------------------------------------------------------------
+struct ImLine
+{
+ ImVec2 A, B;
+};
+
+
+//------------------------------------------------------------------------------
+inline bool operator==(const ImVec2& lhs, const ImVec2& rhs);
+inline bool operator!=(const ImVec2& lhs, const ImVec2& rhs);
+inline ImVec2 operator*(const float lhs, const ImVec2& rhs);
+inline ImVec2 operator-(const ImVec2& lhs);
+
+
+//------------------------------------------------------------------------------
+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 <typename V, typename T>
+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__