Files
core-foundation-rs/io_surface.rs
T
2012-09-06 19:00:23 -07:00

86 lines
2.4 KiB
Rust

// Rust bindings to the IOSurface framework on Mac OS X.
use core_foundation::base::{AbstractCFType, CFRelease, CFType, CFTypeOps, CFTypeRef};
use core_foundation::dictionary::{CFDictionary, CFDictionaryRef};
use core_foundation::number::CFNumber;
use core_foundation::string::{CFString, CFStringRef};
use unsafe::transmute;
struct __IOSurface { private: () }
pub type IOSurfaceRef = *__IOSurface;
pub type IOSurfaceID = u32;
pub struct IOSurface {
obj: IOSurfaceRef,
drop {
unsafe {
CFRelease(transmute(copy self.obj));
}
}
}
pub mod IOSurface {
fn wrap(obj: IOSurfaceRef) -> IOSurface {
assert obj != ptr::null();
IOSurface { obj: obj }
}
fn new_io_surface(properties: &CFDictionary<CFString,CFType>) -> IOSurface {
wrap(IOSurfaceCreate(properties.obj))
}
fn lookup(csid: IOSurfaceID) -> IOSurface {
wrap(IOSurfaceLookup(csid))
}
}
impl IOSurface : AbstractCFType {
pure fn as_type_ref(&self) -> CFTypeRef {
unsafe {
transmute(copy self.obj)
}
}
}
impl IOSurface {
fn get_id(&self) -> IOSurfaceID {
IOSurfaceGetID(self.obj)
}
}
#[link_args="-framework IOSurface"]
#[nolink]
extern {
const kIOSurfaceAllocSize: CFStringRef;
const kIOSurfaceWidth: CFStringRef;
const kIOSurfaceHeight: CFStringRef;
const kIOSurfaceBytesPerRow: CFStringRef;
const kIOSurfaceBytesPerElement: CFStringRef;
const kIOSurfaceElementWidth: CFStringRef;
const kIOSurfaceElementHeight: CFStringRef;
const kIOSurfaceOffset: CFStringRef;
const kIOSurfacePlaneInfo: CFStringRef;
const kIOSurfacePlaneWidth: CFStringRef;
const kIOSurfacePlaneHeight: CFStringRef;
const kIOSurfacePlaneBytesPerRow: CFStringRef;
const kIOSurfacePlaneOffset: CFStringRef;
const kIOSurfacePlaneSize: CFStringRef;
const kIOSurfacePlaneBase: CFStringRef;
const kIOSurfacePlaneBytesPerElement: CFStringRef;
const kIOSurfacePlaneElementWidth: CFStringRef;
const kIOSurfacePlaneElementHeight: CFStringRef;
const kIOSurfaceCacheMode: CFStringRef;
const kIOSurfaceIsGlobal: CFStringRef;
const kIOSurfacePixelFormat: CFStringRef;
fn IOSurfaceCreate(properties: CFDictionaryRef) -> IOSurfaceRef;
fn IOSurfaceLookup(csid: IOSurfaceID) -> IOSurfaceRef;
fn IOSurfaceGetID(buffer: IOSurfaceRef) -> IOSurfaceID;
}