#include "ui/views/masked_targeter_delegate.h"
#include "third_party/skia/include/core/SkPath.h"
#include "third_party/skia/include/core/SkRegion.h"
#include "ui/gfx/geometry/skia_conversions.h"
#include "ui/views/view.h"
namespace views {
bool MaskedTargeterDelegate::DoesIntersectRect(const View* target,
const gfx::Rect& rect) const {
if (!ViewTargeterDelegate::DoesIntersectRect(target, rect)) {
return false;
}
SkPath mask;
if (!GetHitTestMask(&mask)) {
return false;
}
SkRegion clip_region;
clip_region.setRect({0, 0, target->width(), target->height()});
SkRegion mask_region;
return mask_region.setPath(mask, clip_region) &&
mask_region.intersects(RectToSkIRect(rect));
}
}