Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
folium-app
GitHub Repository: folium-app/Folium
Path: blob/a-new-beginning/Folium-macOS/Extensions/CGImage.swift
2 views
//
//  CGImage.swift
//  Folium (macOS)
//
//  Created by Jarrod Norwell on 13/12/2025.
//

import CoreGraphics

extension CGImage {
    static func snes(_ pointer: UnsafeMutablePointer<UInt8>, _ width: Int, _ height: Int) -> CGImage? {
        let bitsPerComponent = 8
        let bytesPerPixel = 4
        let bitsPerPixel = bytesPerPixel * bitsPerComponent
        let bytesPerRow = bytesPerPixel * width
        let size = height * bytesPerRow
        
        guard let provider: CGDataProvider = .init(dataInfo: nil, data: pointer, size: size, releaseData: { info, data, size in
            
        }) else {
            return nil
        }
        
        // guard let provider: CGDataProvider = .init(dataInfo: nil, data: pointer, size: size, releaseData: { _, data, _ in
        //     data.deallocate()
        // }) else {
        //     return nil
        // }
        
        return .init(width: width,
                     height: height,
                     bitsPerComponent: bitsPerComponent,
                     bitsPerPixel: bitsPerPixel,
                     bytesPerRow: bytesPerRow,
                     space: CGColorSpaceCreateDeviceRGB(),
                     bitmapInfo: CGBitmapInfo(rawValue: CGImageAlphaInfo.noneSkipLast.rawValue).union(.byteOrder32Little),
                     provider: provider,
                     decode: nil,
                     shouldInterpolate: false,
                     intent: .defaultIntent)
    }
}