mirror of https://github.com/oxen-io/session-ios
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
28 lines
1.3 KiB
Swift
28 lines
1.3 KiB
Swift
6 years ago
|
|
||
|
enum QRCode {
|
||
|
|
||
5 years ago
|
static func generate(for string: String, isInverted: Bool = false, hasBackground: Bool = false) -> UIImage {
|
||
6 years ago
|
let data = string.data(using: .utf8)
|
||
|
var qrCodeAsCIImage: CIImage
|
||
|
let filter1 = CIFilter(name: "CIQRCodeGenerator")!
|
||
|
filter1.setValue(data, forKey: "inputMessage")
|
||
|
qrCodeAsCIImage = filter1.outputImage!
|
||
5 years ago
|
if hasBackground {
|
||
|
let filter2 = CIFilter(name: "CIFalseColor")!
|
||
|
filter2.setValue(qrCodeAsCIImage, forKey: "inputImage")
|
||
5 years ago
|
filter2.setValue(CIColor(color: UIColor(hex: isInverted ? 0xFFFFFF : 0x000000)), forKey: "inputColor0")
|
||
|
filter2.setValue(CIColor(color: UIColor(hex: isInverted ? 0x1B1B1B : 0xFFFFFF)), forKey: "inputColor1")
|
||
5 years ago
|
qrCodeAsCIImage = filter2.outputImage!
|
||
|
} else {
|
||
6 years ago
|
let filter2 = CIFilter(name: "CIColorInvert")!
|
||
|
filter2.setValue(qrCodeAsCIImage, forKey: "inputImage")
|
||
|
qrCodeAsCIImage = filter2.outputImage!
|
||
|
let filter3 = CIFilter(name: "CIMaskToAlpha")!
|
||
|
filter3.setValue(qrCodeAsCIImage, forKey: "inputImage")
|
||
|
qrCodeAsCIImage = filter3.outputImage!
|
||
|
}
|
||
|
let scaledQRCodeAsCIImage = qrCodeAsCIImage.transformed(by: CGAffineTransform(scaleX: 6.4, y: 6.4))
|
||
|
return UIImage(ciImage: scaledQRCodeAsCIImage)
|
||
|
}
|
||
|
}
|