Explorar o código

Merge pull request #2361 from MarchingCube/perf-fixes

[perf] Add Equals implementation to the TransformedBounds
Steven Kirk %!s(int64=6) %!d(string=hai) anos
pai
achega
b9edd8c17d
Modificáronse 1 ficheiros con 36 adicións e 0 borrados
  1. 36 0
      src/Avalonia.Visuals/VisualTree/TransformedBounds.cs

+ 36 - 0
src/Avalonia.Visuals/VisualTree/TransformedBounds.cs

@@ -50,5 +50,41 @@ namespace Avalonia.VisualTree
                 return Bounds.Contains(point);
             }
         }
+
+        public bool Equals(TransformedBounds other)
+        {
+            return Bounds == other.Bounds && Clip == other.Clip && Transform == other.Transform;
+        }
+
+        public override bool Equals(object obj)
+        {
+            if (obj is null)
+            {
+                return false;
+            }
+
+            return obj is TransformedBounds other && Equals(other);
+        }
+
+        public override int GetHashCode()
+        {
+            unchecked
+            {
+                var hashCode = Bounds.GetHashCode();
+                hashCode = (hashCode * 397) ^ Clip.GetHashCode();
+                hashCode = (hashCode * 397) ^ Transform.GetHashCode();
+                return hashCode;
+            }
+        }
+
+        public static bool operator ==(TransformedBounds left, TransformedBounds right)
+        {
+            return left.Equals(right);
+        }
+
+        public static bool operator !=(TransformedBounds left, TransformedBounds right)
+        {
+            return !left.Equals(right);
+        }
     }
 }