// Copyright 2015 The Servo Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution. // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. use core_foundation::base::{CFRelease, CFRetain, CFTypeID}; use core_foundation::string::CFStringRef; use foreign_types::ForeignType; foreign_type! { #[doc(hidden)] type CType = ::sys::CGColorSpace; fn drop = |p| CFRelease(p as *mut _); fn clone = |p| CFRetain(p as *const _) as *mut _; pub struct CGColorSpace; pub struct CGColorSpaceRef; } impl CGColorSpace { pub fn type_id() -> CFTypeID { unsafe { CGColorSpaceGetTypeID() } } pub fn create_with_name(name: CFStringRef) -> Option { unsafe { let p = CGColorSpaceCreateWithName(name); if !p.is_null() {Some(CGColorSpace::from_ptr(p))} else {None} } } #[inline] pub fn create_device_rgb() -> CGColorSpace { unsafe { let result = CGColorSpaceCreateDeviceRGB(); CGColorSpace::from_ptr(result) } } #[inline] pub fn create_device_gray() -> CGColorSpace { unsafe { let result = CGColorSpaceCreateDeviceGray(); CGColorSpace::from_ptr(result) } } } #[link(name = "CoreGraphics", kind = "framework")] extern { pub static kCGColorSpaceSRGB: CFStringRef; pub static kCGColorSpaceAdobeRGB1998: CFStringRef; pub static kCGColorSpaceGenericGray: CFStringRef; pub static kCGColorSpaceGenericRGB: CFStringRef; pub static kCGColorSpaceGenericCMYK: CFStringRef; pub static kCGColorSpaceGenericRGBLinear: CFStringRef; pub static kCGColorSpaceGenericGrayGamma2_2: CFStringRef; fn CGColorSpaceCreateDeviceRGB() -> ::sys::CGColorSpaceRef; fn CGColorSpaceCreateDeviceGray() -> ::sys::CGColorSpaceRef; fn CGColorSpaceCreateWithName(name: CFStringRef) -> ::sys::CGColorSpaceRef; fn CGColorSpaceGetTypeID() -> CFTypeID; }