Added some functions and types used for glutin

This commit is contained in:
David Partouche
2014-10-04 15:39:00 +02:00
parent 06c3c4a0f7
commit 51a5137a20
2 changed files with 255 additions and 0 deletions
+224
View File
@@ -68,6 +68,11 @@ impl NSRect {
#[link(name = "AppKit", kind = "framework")]
extern {}
#[link(name = "Foundation", kind = "framework")]
extern {
pub static NSDefaultRunLoopMode: id;
}
pub unsafe fn NSApp() -> id {
"NSApplication".send("sharedApplication", ())
}
@@ -142,6 +147,114 @@ bitflags! {
| NSAlignMinYNearest.bits
| NSAlignMaxYNearest.bits,
}
#[repr(u64)]
pub enum NSOpenGLPixelFormatAttribute {
NSOpenGLPFAAllRenderers = 1,
NSOpenGLPFATripleBuffer = 3,
NSOpenGLPFADoubleBuffer = 5,
NSOpenGLPFAStereo = 6,
NSOpenGLPFAAuxBuffers = 7,
NSOpenGLPFAColorSize = 8,
NSOpenGLPFAAlphaSize = 11,
NSOpenGLPFADepthSize = 12,
NSOpenGLPFAStencilSize = 13,
NSOpenGLPFAAccumSize = 14,
NSOpenGLPFAMinimumPolicy = 51,
NSOpenGLPFAMaximumPolicy = 52,
NSOpenGLPFAOffScreen = 53,
NSOpenGLPFAFullScreen = 54,
NSOpenGLPFASampleBuffers = 55,
NSOpenGLPFASamples = 56,
NSOpenGLPFAAuxDepthStencil = 57,
NSOpenGLPFAColorFloat = 58,
NSOpenGLPFAMultisample = 59,
NSOpenGLPFASupersample = 60,
NSOpenGLPFASampleAlpha = 61,
NSOpenGLPFARendererID = 70,
NSOpenGLPFASingleRenderer = 71,
NSOpenGLPFANoRecovery = 72,
NSOpenGLPFAAccelerated = 73,
NSOpenGLPFAClosestPolicy = 74,
NSOpenGLPFARobust = 75,
NSOpenGLPFABackingStore = 76,
NSOpenGLPFAMPSafe = 78,
NSOpenGLPFAWindow = 80,
NSOpenGLPFAMultiScreen = 81,
NSOpenGLPFACompliant = 83,
NSOpenGLPFAScreenMask = 84,
NSOpenGLPFAPixelBuffer = 90,
NSOpenGLPFARemotePixelBuffer = 91,
NSOpenGLPFAAllowOfflineRenderers = 96,
NSOpenGLPFAAcceleratedCompute = 97,
NSOpenGLPFAOpenGLProfile = 99,
NSOpenGLPFAVirtualScreenCount = 128,
}
#[repr(u64)]
pub enum NSEventType {
NSLeftMouseDown = 1,
NSLeftMouseUp = 2,
NSRightMouseDown = 3,
NSRightMouseUp = 4,
NSMouseMoved = 5,
NSLeftMouseDragged = 6,
NSRightMouseDragged = 7,
NSMouseEntered = 8,
NSMouseExited = 9,
NSKeyDown = 10,
NSKeyUp = 11,
NSFlagsChanged = 12,
NSAppKitDefined = 13,
NSSystemDefined = 14,
NSApplicationDefined = 15,
NSPeriodic = 16,
NSCursorUpdate = 17,
NSScrollWheel = 22,
NSTabletPoint = 23,
NSTabletProximity = 24,
NSOtherMouseDown = 25,
NSOtherMouseUp = 26,
NSOtherMouseDragged = 27,
NSEventTypeGesture = 29,
NSEventTypeMagnify = 30,
NSEventTypeSwipe = 31,
NSEventTypeRotate = 18,
NSEventTypeBeginGesture = 19,
NSEventTypeEndGesture = 20,
}
#[repr(u64)]
pub enum NSEventMask {
NSLeftMouseDownMask = 1 << NSLeftMouseDown as uint,
NSLeftMouseUpMask = 1 << NSLeftMouseUp as uint,
NSRightMouseDownMask = 1 << NSRightMouseDown as uint,
NSRightMouseUpMask = 1 << NSRightMouseUp as uint,
NSMouseMovedMask = 1 << NSMouseMoved as uint,
NSLeftMouseDraggedMask = 1 << NSLeftMouseDragged as uint,
NSRightMouseDraggedMask = 1 << NSRightMouseDragged as uint,
NSMouseEnteredMask = 1 << NSMouseEntered as uint,
NSMouseExitedMask = 1 << NSMouseExited as uint,
NSKeyDownMask = 1 << NSKeyDown as uint,
NSKeyUpMask = 1 << NSKeyUp as uint,
NSFlagsChangedMask = 1 << NSFlagsChanged as uint,
NSAppKitDefinedMask = 1 << NSAppKitDefined as uint,
NSSystemDefinedMask = 1 << NSSystemDefined as uint,
NSAPplicationDefinedMask = 1 << NSApplicationDefined as uint,
NSPeriodicMask = 1 << NSPeriodic as uint,
NSCursorUpdateMask = 1 << NSCursorUpdate as uint,
NSScrollWheelMask = 1 << NSScrollWheel as uint,
NSTabletPointMask = 1 << NSTabletPoint as uint,
NSTabletProximityMask = 1 << NSTabletProximity as uint,
NSOtherMouseDownMask = 1 << NSOtherMouseDown as uint,
NSOtherMouseUpMask = 1 << NSOtherMouseUp as uint,
NSOtherMouseDraggedMask = 1 << NSOtherMouseDragged as uint,
NSEventMaskgesture = 1 << NSEventTypeGesture as uint,
NSEventMaskSwipe = 1 << NSEventTypeSwipe as uint,
NSEventMaskRotate = 1 << NSEventTypeRotate as uint,
NSEventMaskBeginGesture = 1 << NSEventTypeBeginGesture as uint,
NSEventMaskEndGesture = 1 << NSEventTypeEndGesture as uint,
NSAnyEventMask = 0xffffffff,
}
pub trait NSAutoreleasePool {
@@ -181,6 +294,9 @@ pub trait NSApplication {
unsafe fn setMainMenu_(self, menu: id);
unsafe fn activateIgnoringOtherApps_(self, ignore: bool);
unsafe fn run(self);
unsafe fn finishLaunching(self);
unsafe fn nextEventMatchingMask_untilDate_inMode_dequeue_(self, mask: NSUInteger, expiration: id, in_mode: id, dequeue: bool) -> id;
unsafe fn sendEvent_(self, an_event: id);
}
impl NSApplication for id {
@@ -199,6 +315,18 @@ impl NSApplication for id {
unsafe fn run(self) {
self.send_void("run", ());
}
unsafe fn finishLaunching(self) {
self.send_void("finishLaunching", ())
}
unsafe fn nextEventMatchingMask_untilDate_inMode_dequeue_(self, mask: NSUInteger, expiration: id, in_mode: id, dequeue: bool) -> id {
self.send("nextEventMatchingMask:untilDate:inMode:dequeue:", (mask, expiration, in_mode, dequeue))
}
unsafe fn sendEvent_(self, an_event: id) {
self.send_void("sendEvent:", an_event)
}
}
pub trait NSMenu {
@@ -333,6 +461,8 @@ pub trait NSWindow {
// skipped: setMiniwindowImage
unsafe fn miniwindowTitle(self) -> id;
unsafe fn setMiniwindowTitle_(self, miniwindowTitle: id);
unsafe fn setContentView(self, view: id);
}
impl NSWindow for id {
@@ -584,6 +714,10 @@ impl NSWindow for id {
unsafe fn setMiniwindowTitle_(self, miniwindowTitle: id) {
self.send_void("setMiniwindowTitle:", miniwindowTitle);
}
unsafe fn setContentView(self, view: id) {
self.send_void("setContentView:", view)
}
}
pub trait NSString {
@@ -610,3 +744,93 @@ impl NSString for id {
}
}
pub trait NSView {
unsafe fn alloc(_: Self) -> id {
"NSView".send("alloc", ())
}
unsafe fn init(self) -> id;
unsafe fn initWithFrame_(self, frameRect: NSRect) -> id;
unsafe fn display_(self);
unsafe fn setWantsBestResolutionOpenGLSurface_(self, flag: bool);
}
impl NSView for id {
unsafe fn init(self) -> id {
self.send("init", ())
}
unsafe fn initWithFrame_(self, frameRect: NSRect) -> id {
self.send("initWithFrame:", frameRect)
}
unsafe fn display_(self) {
self.send_void("display", ())
}
unsafe fn setWantsBestResolutionOpenGLSurface_(self, flag: bool) {
self.send_void("setWantsBestResolutionOpenGLSurface:", flag)
}
}
pub trait NSOpenGLView {
unsafe fn alloc(_: Self) -> id {
"NSOpenGLView".send("alloc", ())
}
unsafe fn initWithFrame_pixelFormat_(self, frameRect: NSRect, format: id) -> id;
unsafe fn display_(self);
}
impl NSOpenGLView for id {
unsafe fn initWithFrame_pixelFormat_(self, frameRect: NSRect, format: id) -> id {
self.send("initWithFrame:pixelFormat:", (frameRect, format))
}
unsafe fn display_(self) {
self.send_void("display", ())
}
}
pub trait NSOpenGLPixelFormat {
unsafe fn alloc(_: Self) -> id {
"NSOpenGLPixelFormat".send("alloc", ())
}
unsafe fn initWithAttributes_(self, attributes: &[uint]) -> id;
}
impl NSOpenGLPixelFormat for id {
unsafe fn initWithAttributes_(self, attributes: &[uint]) -> id {
self.send("initWithAttributes:", attributes)
}
}
pub trait NSOpenGLContext {
unsafe fn alloc(_: Self) -> id {
"NSOpenGLContext".send("alloc", ())
}
unsafe fn initWithFormat_shareContext_(self, format: id, shareContext: id) -> id;
unsafe fn setView_(self, view: id);
unsafe fn makeCurrentContext(self);
unsafe fn flushBuffer(self);
}
impl NSOpenGLContext for id {
unsafe fn initWithFormat_shareContext_(self, format: id, shareContext: id) -> id {
self.send("initWithFormat:shareContext:", (format, shareContext))
}
unsafe fn setView_(self, view: id) {
self.send_void("setView:", view)
}
unsafe fn makeCurrentContext(self) {
self.send_void("makeCurrentContext", ())
}
unsafe fn flushBuffer(self) {
self.send_void("flushBuffer", ())
}
}
+31
View File
@@ -306,6 +306,37 @@ impl ObjCMethodArgs for (id, id, id, id, id) {
}
}
impl ObjCMethodArgs for (NSRect, id) {
#[inline]
unsafe fn send_args(self, receiver: id, selector: SEL) -> id {
let (first, second) = self;
invoke_msg_id_NSRect_id(receiver, selector, first, second)
}
}
impl<'a> ObjCMethodArgs for &'a [uint] {
#[inline]
unsafe fn send_args(self, receiver: id, selector: SEL) -> id {
invoke_msg_id_array(receiver, selector, self)
}
}
impl ObjCMethodArgs for (id, id) {
#[inline]
unsafe fn send_args(self, receiver: id, selector: SEL) -> id {
let (first, second) = self;
invoke_msg_id_id_id(receiver, selector, first, second)
}
}
impl ObjCMethodArgs for (NSUInteger, id, id, bool) {
#[inline]
unsafe fn send_args(self, receiver: id, selector: SEL) -> id {
let (first, second, third, fourth) = self;
invoke_msg_id_NSUInteger_id_id_bool(receiver, selector, first, second, third, fourth)
}
}
impl ObjCMethodDoubleArgs for () {
#[inline]
unsafe fn send_double_args(self, receiver: id, selector: SEL) -> f64 {