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 {
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 
											6 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!
							 | 
						||
| 
								 
											6 years ago
										 
									 | 
							
								        if hasBackground {
							 | 
						||
| 
								 | 
							
								            let filter2 = CIFilter(name: "CIFalseColor")!
							 | 
						||
| 
								 | 
							
								            filter2.setValue(qrCodeAsCIImage, forKey: "inputImage")
							 | 
						||
| 
								 
											6 years ago
										 
									 | 
							
								            filter2.setValue(CIColor(color: UIColor(hex: isInverted ? 0xFFFFFF : 0x000000)), forKey: "inputColor0")
							 | 
						||
| 
								 | 
							
								            filter2.setValue(CIColor(color: UIColor(hex: isInverted ? 0x1B1B1B : 0xFFFFFF)), forKey: "inputColor1")
							 | 
						||
| 
								 
											6 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)
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |