123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226 |
- using UnityEngine;
-
- namespace XCharts.Runtime
- {
- public static class LayerHelper
- {
- private static Vector2 s_Vector0And0 = new Vector2(0, 0);
- private static Vector2 s_Vector0And0Dot5 = new Vector2(0, 0.5f);
- private static Vector2 s_Vector0And1 = new Vector2(0, 1f);
- private static Vector2 s_Vector0Dot5And1 = new Vector2(0.5f, 1f);
- private static Vector2 s_Vector0Dot5And0Dot5 = new Vector2(0.5f, 0.5f);
- private static Vector2 s_Vector0Dot5And0 = new Vector2(0.5f, 0f);
- private static Vector2 s_Vector1And1 = new Vector2(1f, 1f);
- private static Vector2 s_Vector1And0Dot5 = new Vector2(1f, 0.5f);
- private static Vector2 s_Vector1And0 = new Vector2(1f, 0);
-
- internal static Vector2 ResetChartPositionAndPivot(Vector2 minAnchor, Vector2 maxAnchor, float width,
- float height, ref float chartX, ref float chartY)
- {
- if (IsLeftTop(minAnchor, maxAnchor))
- {
- chartX = 0;
- chartY = -height;
- return s_Vector0And1;
- }
- else if (IsLeftCenter(minAnchor, maxAnchor))
- {
- chartX = 0;
- chartY = -height / 2;
- return s_Vector0And0Dot5;
- }
- else if (IsLeftBottom(minAnchor, maxAnchor))
- {
- chartX = 0;
- chartY = 0;
- return s_Vector0And0;
- }
- else if (IsCenterTop(minAnchor, maxAnchor))
- {
- chartX = -width / 2;
- chartY = -height;
- return s_Vector0Dot5And1;
- }
- else if (IsCenterCenter(minAnchor, maxAnchor))
- {
- chartX = -width / 2;
- chartY = -height / 2;
- return s_Vector0Dot5And0Dot5;
- }
- else if (IsCenterBottom(minAnchor, maxAnchor))
- {
- chartX = -width / 2;
- chartY = 0;
- return s_Vector0Dot5And0;
- }
- else if (IsRightTop(minAnchor, maxAnchor))
- {
- chartX = -width;
- chartY = -height;
- return s_Vector1And1;
- }
- else if (IsRightCenter(minAnchor, maxAnchor))
- {
- chartX = -width;
- chartY = -height / 2;
- return s_Vector1And0Dot5;
- }
- else if (IsRightBottom(minAnchor, maxAnchor))
- {
- chartX = -width;
- chartY = 0;
- return s_Vector1And0;
- }
- else if (IsStretchTop(minAnchor, maxAnchor))
- {
- chartX = -width / 2;
- chartY = -height;
- return s_Vector0Dot5And1;
- }
- else if (IsStretchMiddle(minAnchor, maxAnchor))
- {
- chartX = -width / 2;
- chartY = -height / 2;
- return s_Vector0Dot5And0Dot5;
- }
- else if (IsStretchBottom(minAnchor, maxAnchor))
- {
- chartX = -width / 2;
- chartY = 0;
- return s_Vector0Dot5And0;
- }
- else if (IsStretchLeft(minAnchor, maxAnchor))
- {
- chartX = 0;
- chartY = -height / 2;
- return s_Vector0And0Dot5;
- }
- else if (IsStretchCenter(minAnchor, maxAnchor))
- {
- chartX = -width / 2;
- chartY = -height / 2;
- return s_Vector0Dot5And0Dot5;
- }
- else if (IsStretchRight(minAnchor, maxAnchor))
- {
- chartX = -width;
- chartY = -height / 2;
- return s_Vector1And0Dot5;
- }
- else if (IsStretchStrech(minAnchor, maxAnchor))
- {
- chartX = -width / 2;
- chartY = -height / 2;
- return s_Vector0Dot5And0Dot5;
- }
- chartX = 0;
- chartY = 0;
- return Vector2.zero;
- }
-
- private static bool IsLeftTop(Vector2 minAnchor, Vector2 maxAnchor)
- {
- return minAnchor == s_Vector0And1 && maxAnchor == s_Vector0And1;
- }
-
- private static bool IsLeftCenter(Vector2 minAnchor, Vector2 maxAnchor)
- {
- return minAnchor == s_Vector0And0Dot5 && maxAnchor == s_Vector0And0Dot5;
- }
-
- private static bool IsLeftBottom(Vector2 minAnchor, Vector2 maxAnchor)
- {
- return minAnchor == Vector2.zero && maxAnchor == Vector2.zero;
- }
-
- private static bool IsCenterTop(Vector2 minAnchor, Vector2 maxAnchor)
- {
- return minAnchor == s_Vector0Dot5And1 && maxAnchor == s_Vector0Dot5And1;
- }
-
- private static bool IsCenterCenter(Vector2 minAnchor, Vector2 maxAnchor)
- {
- return minAnchor == s_Vector0Dot5And0Dot5 && maxAnchor == s_Vector0Dot5And0Dot5;
- }
-
- private static bool IsCenterBottom(Vector2 minAnchor, Vector2 maxAnchor)
- {
- return minAnchor == s_Vector0Dot5And0 && maxAnchor == s_Vector0Dot5And0;
- }
-
- private static bool IsRightTop(Vector2 minAnchor, Vector2 maxAnchor)
- {
- return minAnchor == s_Vector1And1 && maxAnchor == s_Vector1And1;
- }
-
- private static bool IsRightCenter(Vector2 minAnchor, Vector2 maxAnchor)
- {
- return minAnchor == s_Vector1And0Dot5 && maxAnchor == s_Vector1And0Dot5;
- }
-
- private static bool IsRightBottom(Vector2 minAnchor, Vector2 maxAnchor)
- {
- return minAnchor == s_Vector1And0 && maxAnchor == s_Vector1And0;
- }
-
- private static bool IsStretchTop(Vector2 minAnchor, Vector2 maxAnchor)
- {
- return minAnchor == s_Vector0And1 && maxAnchor == s_Vector1And1;
- }
-
- private static bool IsStretchMiddle(Vector2 minAnchor, Vector2 maxAnchor)
- {
- return minAnchor == s_Vector0And0Dot5 && maxAnchor == s_Vector1And0Dot5;
- }
-
- private static bool IsStretchBottom(Vector2 minAnchor, Vector2 maxAnchor)
- {
- return minAnchor == s_Vector0And0 && maxAnchor == s_Vector1And0;
- }
-
- private static bool IsStretchLeft(Vector2 minAnchor, Vector2 maxAnchor)
- {
- return minAnchor == s_Vector0And0 && maxAnchor == s_Vector0And1;
- }
-
- private static bool IsStretchCenter(Vector2 minAnchor, Vector2 maxAnchor)
- {
- return minAnchor == s_Vector0Dot5And0 && maxAnchor == s_Vector0Dot5And1;
- }
-
- private static bool IsStretchRight(Vector2 minAnchor, Vector2 maxAnchor)
- {
- return minAnchor == s_Vector1And0 && maxAnchor == s_Vector1And1;
- }
-
- private static bool IsStretchStrech(Vector2 minAnchor, Vector2 maxAnchor)
- {
- return minAnchor == s_Vector0And0 && maxAnchor == s_Vector1And1;
- }
-
- public static bool IsStretchPivot(RectTransform rt)
- {
- return IsStretchTop(rt.anchorMin, rt.anchorMax) ||
- IsStretchMiddle(rt.anchorMin, rt.anchorMax) ||
- IsStretchBottom(rt.anchorMin, rt.anchorMax) ||
- IsStretchLeft(rt.anchorMin, rt.anchorMax) ||
- IsStretchCenter(rt.anchorMin, rt.anchorMax) ||
- IsStretchRight(rt.anchorMin, rt.anchorMax) ||
- IsStretchStrech(rt.anchorMin, rt.anchorMax);
- }
-
- public static bool IsFixedWidthHeight(RectTransform rt)
- {
- return IsLeftTop(rt.anchorMin, rt.anchorMax) ||
- IsLeftCenter(rt.anchorMin, rt.anchorMax) ||
- IsLeftBottom(rt.anchorMin, rt.anchorMax) ||
- IsCenterTop(rt.anchorMin, rt.anchorMax) ||
- IsCenterCenter(rt.anchorMin, rt.anchorMax) ||
- IsCenterBottom(rt.anchorMin, rt.anchorMax) ||
- IsRightTop(rt.anchorMin, rt.anchorMax) ||
- IsRightCenter(rt.anchorMin, rt.anchorMax) ||
- IsRightBottom(rt.anchorMin, rt.anchorMax);
- }
-
- }
- }
|