Swift OpenGL неразрешенный идентификатор kCGImageAlphaPremultipliedLast
Я получаю неразрешенную ошибку идентификатора для 'kCGImageAlphaPremultipliedLast'. Свифт не может его найти. Это доступно в Swift?
var gc = CGBitmapContextCreate(&pixelData, width: width, height: height, bitsPerComponent: 8, bytesPerRow: width*4, imageCS, bitmapInfo: kCGImageAlphaPremultipliedLast);
2 ответа
Решение
Последний параметр CGBitmapContextCreate()
определяется как структура
struct CGBitmapInfo : RawOptionSetType {
init(_ rawValue: UInt32)
init(rawValue: UInt32)
static var AlphaInfoMask: CGBitmapInfo { get }
static var FloatComponents: CGBitmapInfo { get }
// ...
}
где возможные биты "альфа-информации" определяются отдельно как перечисление:
enum CGImageAlphaInfo : UInt32 {
case None /* For example, RGB. */
case PremultipliedLast /* For example, premultiplied RGBA */
case PremultipliedFirst /* For example, premultiplied ARGB */
// ...
}
Поэтому вы должны преобразовать перечисление в его основную UInt32
значение, а затем создать CGBitmapInfo
от него:
let bitmapInfo = CGBitmapInfo(CGImageAlphaInfo.PremultipliedLast.rawValue)
let gc = CGBitmapContextCreate(..., bitmapInfo)
Обновление для Swift 2: The CGBitmapInfo
определение изменено на
public struct CGBitmapInfo : OptionSetType
и это может быть инициализировано с
let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.PremultipliedLast.rawValue)
Документация Apple предлагает CGImageAlphaInfo.PremultipliedLast
,
https://developer.apple.com/library/ios/documentation/GraphicsImaging/Reference/CGImage/index.html