import 'dart:math';

import 'package:flutter/material.dart';

class HexagonClipper extends CustomClipper<Path> {
  @override
  Path getClip(Size size) {
    final path = Path();
    final height = size.height;
    final width = size.width;
    final centerX = width / 2;
    final centerY = height / 2;
    final radius = width / 2;

    const angle = 2 * pi / 10; // Angle between each side of the hexagon

    // Start at the top right vertex of the hexagon
    final startX = centerX + radius * cos(0);
    final startY = centerY + radius * sin(0);
    path.moveTo(startX, startY);

    // Draw the remaining sides of the hexagon
    for (int i = 1; i < 10; i++) {
      final x = centerX + radius * cos(angle * i);
      final y = centerY + radius * sin(angle * i);
      path.lineTo(x, y);
    }

    path.close();

    return path;
  }

  @override
  bool shouldReclip(HexagonClipper oldClipper) => false;
}

class ArrowClipper extends CustomClipper<Path> {
  @override
  Path getClip(Size size) {
    final path = Path();
    path.moveTo(0, size.height / 2);
    path.lineTo(size.width / 2, 0);
    path.lineTo(size.width, size.height / 2);
    path.lineTo(size.width / 2, size.height);
    path.close();
    return path;
  }

  @override
  bool shouldReclip(ArrowClipper oldClipper) => false;
}
