import SwiftUI
import CoreImage.CIFilterBuiltins

struct ContentView: View {
   @State private var barcode = UIImage(named: "nopicture")!

   var body: some View {
      VStack {
         Button("Create") {
            Task {
               await createBarcode(value: "JD Gauchat")
            }
         }.buttonStyle(.borderedProminent)

         Image(uiImage: barcode)
            .interpolation(.none)
            .resizable()
            .scaledToFit()
         Spacer()
      }
      .padding()
   }
   func createBarcode(value: String) async {
      let context = CIContext()
      let barcodeFilter = CIFilter.qrCodeGenerator()
      if let data = value.data(using: .utf8) {
         barcodeFilter.message = data
         
         if let output = barcodeFilter.outputImage {
            if let image = context.createCGImage(output, from: output.extent) {
               barcode = UIImage(cgImage: image)
            }
         }
      }
   }
}