Files
Schnappix/node_modules/expo-image-manipulator/ios/Transformers/ImageFlipTransformer.swift
T

26 lines
871 B
Swift

// Copyright 2024-present 650 Industries. All rights reserved.
/**
Transformer that creates a new image by flipping given image vertically or horizontally.
*/
internal struct ImageFlipTransformer: ImageTransformer {
let flip: FlipType
@MainActor
func transform(image: UIImage) async -> UIImage {
let imageView = UIImageView(image: image)
return drawInNewContext(size: imageView.frame.size) { context in
switch flip {
case .vertical:
let transform = CGAffineTransform(a: 1, b: 0, c: 0, d: -1, tx: 0, ty: imageView.frame.size.height)
context.cgContext.concatenate(transform)
case .horizontal:
let transform = CGAffineTransform(a: -1, b: 0, c: 0, d: 1, tx: imageView.frame.size.width, ty: 0)
context.cgContext.concatenate(transform)
}
imageView.layer.render(in: context.cgContext)
}
}
}