hitTestMask method
Determines whether the localPoint
specified in the local coordinates
of this object lies inside its mask.
If the object has no mask or maskRect, this method returns true
.
If the object has a maskRect, this method determines whether the point is inside the rectangle.
If the object has a $mask, this method transforms the point into the
local coordinate system of the mask using the $mask's transformation
matrix and then checks if the point is inside the mask's boundary. If
maskInverted is true
, the result is inverted.
Implementation
bool hitTestMask(GPoint localPoint) {
if ($mask == null && maskRect == null) {
return true;
}
if (maskRect != null) {
final isHit = maskRect!.containsPoint(localPoint);
return maskRectInverted ? !isHit : isHit;
}
if ($mask!.inStage) {
getTransformationMatrix($mask, _sHelperMatrixAlt);
} else {
_sHelperMatrixAlt.copyFrom($mask!.transformationMatrix);
_sHelperMatrixAlt.invert();
}
var helperPoint = localPoint == _sHelperPoint ? GPoint() : _sHelperPoint;
_sHelperMatrixAlt.transformPoint(localPoint, helperPoint);
final isHit = mask!.hitTest(helperPoint) != null;
return maskInverted ? !isHit : isHit;
}