getClip method

  1. @override
Path getClip(
  1. Size size
)
override

Returns a description of the clip given that the render object being clipped is of the given size.

Implementation

@override
Path getClip(Size size) {
  const sz = 20.0;
  var path = Path();

  switch (test) {
    case 0:
      // clockwise - normal
      path
        ..addRect(Rect.fromLTRB(sz / 2, sz / 2, size.width, size.height))
        ..moveTo(0, 0)
        ..lineTo(sz, 0)
        ..lineTo(sz, sz)
        ..lineTo(0, sz)
        ..close();
      break;

    case 1:
      // counterclockwise - hole
      path
        ..addRect(Rect.fromLTRB(sz / 2, sz / 2, size.width, size.height))
        ..moveTo(0, 0)
        ..lineTo(0, sz)
        ..lineTo(sz, sz)
        ..lineTo(sz, 0)
        ..close();
      break;

    case 2:
      path.addRRect(RRect.fromLTRBR(
          sz, 0, size.width, size.height, const Radius.circular(sz)));

      // Magic shadow
      final path2 = Path()
        ..moveTo(sz + sz, 0)
        ..lineTo(sz + sz, sz)
        ..lineTo(0, sz)
        ..lineTo(0, 0)
        ..close();

      path = Path.combine(PathOperation.union, path, path2);
      break;

    case 3:
      path.addRRect(RRect.fromLTRBR(
          sz, 0, size.width, size.height, const Radius.circular(0)));

      // Magic shadow
      final path2 = Path()
        ..moveTo(sz + sz, 0)
        ..lineTo(sz + sz, sz)
        ..lineTo(0, sz)
        ..lineTo(0, 0)
        ..close();

      path = Path.combine(PathOperation.union, path, path2);
      break;
  }

  return path;
}