blob: a9ca3697588d49c1c5cdf32a9ec0be3f08091141 [file] [log] [blame]
/*
* Copyright 2020 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#pragma once
#include <inttypes.h>
#include <iosfwd>
#include <iostream>
#include <math/HashCombine.h>
namespace android {
struct BlurRegion {
uint32_t blurRadius;
float cornerRadiusTL;
float cornerRadiusTR;
float cornerRadiusBL;
float cornerRadiusBR;
float alpha;
int left;
int top;
int right;
int bottom;
inline bool operator==(const BlurRegion& other) const {
return blurRadius == other.blurRadius && cornerRadiusTL == other.cornerRadiusTL &&
cornerRadiusTR == other.cornerRadiusTR && cornerRadiusBL == other.cornerRadiusBL &&
cornerRadiusBR == other.cornerRadiusBR && alpha == other.alpha &&
left == other.left && top == other.top && right == other.right &&
bottom == other.bottom;
}
inline bool operator!=(const BlurRegion& other) const { return !(*this == other); }
};
static inline void PrintTo(const BlurRegion& blurRegion, ::std::ostream* os) {
*os << "BlurRegion {";
*os << "\n .blurRadius = " << blurRegion.blurRadius;
*os << "\n .cornerRadiusTL = " << blurRegion.cornerRadiusTL;
*os << "\n .cornerRadiusTR = " << blurRegion.cornerRadiusTR;
*os << "\n .cornerRadiusBL = " << blurRegion.cornerRadiusBL;
*os << "\n .cornerRadiusBR = " << blurRegion.cornerRadiusBR;
*os << "\n .alpha = " << blurRegion.alpha;
*os << "\n .left = " << blurRegion.left;
*os << "\n .top = " << blurRegion.top;
*os << "\n .right = " << blurRegion.right;
*os << "\n .bottom = " << blurRegion.bottom;
*os << "\n}";
}
} // namespace android
namespace std {
template <>
struct hash<android::BlurRegion> {
size_t operator()(const android::BlurRegion& region) const {
return android::hashCombine(region.blurRadius, region.cornerRadiusTL, region.cornerRadiusTR,
region.cornerRadiusBL, region.cornerRadiusBR, region.alpha,
region.left, region.top, region.right, region.bottom);
}
};
} // namespace std