/* * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ #pragma once #include #include #include namespace facebook { namespace react { /* * Generic data structure describes some values associated with *corners* * of a rectangle. */ template struct RectangleCorners { T topLeft{}; T topRight{}; T bottomLeft{}; T bottomRight{}; bool operator==(RectangleCorners const &rhs) const noexcept { return std::tie( this->topLeft, this->topRight, this->bottomLeft, this->bottomRight) == std::tie(rhs.topLeft, rhs.topRight, rhs.bottomLeft, rhs.bottomRight); } bool operator!=(RectangleCorners const &rhs) const noexcept { return !(*this == rhs); } bool isUniform() const noexcept { return topLeft == topRight && topLeft == bottomLeft && topLeft == bottomRight; } }; /* * CornerInsets */ using CornerInsets = RectangleCorners; } // namespace react } // namespace facebook namespace std { template struct hash> { size_t operator()( facebook::react::RectangleCorners const &corners) const noexcept { return folly::hash::hash_combine( 0, corners.topLeft, corners.bottomLeft, corners.topRight, corners.bottomRight); } }; } // namespace std