hitTestStroke function

bool hitTestStroke(
  1. Offset point,
  2. List<Offset> points,
  3. double thickness, {
  4. double hitPadding = 0,
  5. double hitSlop = kHitSlop,
})

Returns true if point hits the polyline points with thickness.

Implementation

bool hitTestStroke(
  Offset point,
  List<Offset> points,
  double thickness, {
  double hitPadding = 0,
  double hitSlop = kHitSlop,
}) {
  final baseThickness = clampNonNegativeFinite(thickness);
  final baseHitPadding = clampNonNegativeFinite(hitPadding);
  final baseHitSlop = clampNonNegativeFinite(hitSlop, fallback: kHitSlop);
  if (points.isEmpty) return false;
  if (points.length == 1) {
    final radius = baseThickness / 2 + baseHitPadding + baseHitSlop;
    return (point - points.first).distance <= radius;
  }
  final effectiveThickness = baseThickness + 2 * (baseHitPadding + baseHitSlop);
  for (var i = 0; i < points.length - 1; i++) {
    if (hitTestLine(point, points[i], points[i + 1], effectiveThickness)) {
      return true;
    }
  }
  return false;
}