2014-10-29 1 views
8

Ich erhalte einen nicht aufgelösten Bezeichnerfehler für 'kCGImageAlphaPremultipliedLast'. Swift kann es nicht finden. Ist das in Swift verfügbar?Swift OpenGL unaufgelöster Bezeichner kCGImageAlphaPremultipliedLast

var gc = CGBitmapContextCreate(&pixelData, width: width, height: height, bitsPerComponent: 8, bytesPerRow: width*4, imageCS, bitmapInfo: kCGImageAlphaPremultipliedLast); 

Antwort

21

Der letzte Parameter von CGBitmapContextCreate() ist als Struktur definiert

struct CGBitmapInfo : RawOptionSetType { 
    init(_ rawValue: UInt32) 
    init(rawValue: UInt32) 

    static var AlphaInfoMask: CGBitmapInfo { get } 
    static var FloatComponents: CGBitmapInfo { get } 
    // ... 
} 

wo die möglichen "alpha info" Bits separat als Aufzählung definiert sind: Deshalb Sie

enum CGImageAlphaInfo : UInt32 { 
    case None /* For example, RGB. */ 
    case PremultipliedLast /* For example, premultiplied RGBA */ 
    case PremultipliedFirst /* For example, premultiplied ARGB */ 
    // ... 
} 

muss die Enumeration in den zugrunde liegenden UInt32 Wert konvertieren und dann eineerstellenvon ihm:

let bitmapInfo = CGBitmapInfo(CGImageAlphaInfo.PremultipliedLast.rawValue) 
let gc = CGBitmapContextCreate(..., bitmapInfo) 

Update für Swift 2: Die CGBitmapInfo Definition geändert

public struct CGBitmapInfo : OptionSetType 

und es kann mir einfach gespeichert viel Zeit mit

let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.PremultipliedLast.rawValue) 
+1

Dank initialisiert werden ! – NJGUY

+0

@Martin R Großartig Danke! – BurtK