import SwiftUI

@Animatable
struct Face: Shape {
   var smile: CGFloat

   func path(in rect: CGRect) -> Path {
      let width = rect.width
      let smileClamp = min(max(smile, 0), 1)
      let section = rect.height / 5
      let smilePos = section + (section * 3 * smileClamp)

      var path = Path()
      path.addEllipse(in: CGRect(x: width/10*2 - 10, y: rect.minY + 10, width: 20, height: 20))
      path.addEllipse(in: CGRect(x: width/10*8 - 10, y: rect.minY + 10, width: 20, height: 20))

      path.move(to: CGPoint(x: width/10*2, y: rect.midY))
      path.addCurve(to: CGPoint(x: width/10*8, y: rect.midY), control1: CGPoint(x: width / 4, y: smilePos), control2: CGPoint(x: width / 4 * 3, y: smilePos))
      return path
   }
}