/* * Copyright (c) Meta Platforms, Inc. and 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 #include namespace facebook::yoga { struct CachedMeasurement { float availableWidth{-1}; float availableHeight{-1}; MeasureMode widthMeasureMode{MeasureMode::Undefined}; MeasureMode heightMeasureMode{MeasureMode::Undefined}; float computedWidth{-1}; float computedHeight{-1}; bool operator==(CachedMeasurement measurement) const { bool isEqual = widthMeasureMode == measurement.widthMeasureMode && heightMeasureMode == measurement.heightMeasureMode; if (!yoga::isUndefined(availableWidth) || !yoga::isUndefined(measurement.availableWidth)) { isEqual = isEqual && availableWidth == measurement.availableWidth; } if (!yoga::isUndefined(availableHeight) || !yoga::isUndefined(measurement.availableHeight)) { isEqual = isEqual && availableHeight == measurement.availableHeight; } if (!yoga::isUndefined(computedWidth) || !yoga::isUndefined(measurement.computedWidth)) { isEqual = isEqual && computedWidth == measurement.computedWidth; } if (!yoga::isUndefined(computedHeight) || !yoga::isUndefined(measurement.computedHeight)) { isEqual = isEqual && computedHeight == measurement.computedHeight; } return isEqual; } }; } // namespace facebook::yoga