Last active
          April 6, 2023 20:46 
        
      - 
      
- 
        Save Jesse-calkin/9e07cb6d9145d04008a21e6528b3c924 to your computer and use it in GitHub Desktop. 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | import UIKit | |
| public extension UIColor { | |
| public static func checkerboardColor(size: CGSize? = CGSize(width: 100, height: 100), color1: UIColor? = UIColor.grayColor(), color2: UIColor? = UIColor.darkGrayColor()) -> UIColor? { | |
| guard let checkers = CIFilter(name: "CICheckerboardGenerator") else { return nil } | |
| let color0 = CoreImage.CIColor(color: color1!) | |
| let color1 = CoreImage.CIColor(color: color2!) | |
| checkers.setValue(color0, forKey: "inputColor0") | |
| checkers.setValue(color1, forKey: "inputColor1") | |
| checkers.setValue(25.0, forKey: kCIInputWidthKey) | |
| guard let image = checkers.outputImage else { return nil } | |
| let rect = CGRect(origin: CGPointZero, size: size!) | |
| let glContext = EAGLContext(API: EAGLRenderingAPI.OpenGLES2) | |
| let ciContext = CIContext(EAGLContext: glContext) | |
| let patternImage = UIImage(CGImage: ciContext.createCGImage(image, fromRect: rect)) | |
| return UIColor(patternImage: patternImage) | |
| } | |
| } | |
| public extension UIImage { | |
| public static func checkerboard(size: CGSize? = CGSize(width: 100, height: 100), color1: UIColor? = UIColor.grayColor(), color2: UIColor? = UIColor.darkGrayColor()) -> UIImage? { | |
| guard let checkers = CIFilter(name: "CICheckerboardGenerator") else { return nil } | |
| let color0 = CIColor(color: color1!) | |
| let color1 = CIColor(color: color2!) | |
| checkers.setValue(color0, forKey: "inputColor0") | |
| checkers.setValue(color1, forKey: "inputColor1") | |
| checkers.setValue(25.0, forKey: kCIInputWidthKey) | |
| guard let image = checkers.outputImage else { return nil } | |
| let rect = CGRect(origin: CGPointZero, size: size!) | |
| let glContext = EAGLContext(API: EAGLRenderingAPI.OpenGLES2) | |
| let ciContext = CIContext(EAGLContext: glContext) | |
| return UIImage(CGImage: ciContext.createCGImage(image, fromRect: rect)) | |
| } | |
| } | 
  
    Sign up for free
    to join this conversation on GitHub.
    Already have an account?
    Sign in to comment