diff dstep/appkit/NSOpenGL.d @ 16:19885b43130e

Huge update, the bridge actually works now
author Jacob Carlborg <doob@me.com>
date Sun, 03 Jan 2010 22:06:11 +0100
parents
children b9de51448c6b
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dstep/appkit/NSOpenGL.d	Sun Jan 03 22:06:11 2010 +0100
@@ -0,0 +1,321 @@
+/**
+ * Copyright: Copyright (c) 2009 Jacob Carlborg.
+ * Authors: Jacob Carlborg
+ * Version: Initial created: Sep 24, 2009 
+ * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0)
+ */
+module dstep.appkit.NSOpenGL;
+
+import dstep.appkit.NSScreen;
+import dstep.appkit.NSView;
+import dstep.foundation.NSCoder;
+import dstep.foundation.NSData;
+import dstep.foundation.NSObject;
+import dstep.objc.bridge.Bridge;
+import dstep.objc.objc;
+import dstep.opengl.gl;
+import dstep.opengl.CGLTypes;
+
+typedef uint NSOpenGLPixelFormatAttribute;
+alias _CGLPixelFormatObject NSOpenGLPixelFormatAuxiliary;
+alias _CGLContextObject NSOpenGLContextAuxiliary;
+
+enum
+{
+	NSOpenGLGOFormatCacheSize = 501,
+	NSOpenGLGOClearFormatCache = 502,
+	NSOpenGLGORetainRenderers = 503,
+	NSOpenGLGOResetLibrary = 504
+}
+
+enum : uint
+{
+	NSOpenGLPFAAllRenderers = 1,
+	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,
+	NSOpenGLPFAAllowOfflineRenderers = 96,
+	NSOpenGLPFAVirtualScreenCount = 128
+}
+
+enum
+{
+	NSOpenGLCPSwapRectangle = 200,
+	NSOpenGLCPSwapRectangleEnable = 201,
+	NSOpenGLCPRasterizationEnable = 221,
+	NSOpenGLCPSwapInterval = 222,
+	NSOpenGLCPSurfaceOrder = 235,
+	NSOpenGLCPSurfaceOpacity = 236,
+	NSOpenGLCPStateValidation = 301
+}
+
+class NSOpenGLPixelFormat : NSObject, INSCoding
+{
+	mixin (ObjcWrap);
+	
+	this (NSCoder aDecoder)
+	{
+		super(typeof(this).alloc.initWithCoder(aDecoder).objcObject);
+	}
+	
+	void encodeWithCoder (NSCoder aCoder)
+	{
+		return invokeObjcSelf!(void, "encodeWithCoder:", NSCoder)(aCoder);
+	}
+	
+	typeof(this) initWithCoder (NSCoder aDecoder)
+	{
+		return invokeObjcSelf!(typeof(this), "initWithCoder:", NSCoder)(aDecoder);
+	}
+
+	NSOpenGLPixelFormat initWithAttributes (NSOpenGLPixelFormatAttribute* attribs)
+	{
+		id result = invokeObjcSelf!(id, "initWithAttributes:", NSOpenGLPixelFormatAttribute*)(attribs);
+		return result is this.objcObject ? this : (result !is null ? new NSOpenGLPixelFormat(result) : null);
+	}
+
+	this (NSOpenGLPixelFormatAttribute* attribs)
+	{
+		super(NSOpenGLPixelFormat.alloc.initWithAttributes(attribs).objcObject);
+	}
+
+	NSOpenGLPixelFormat initWithData (NSData attribs)
+	{
+		id result = invokeObjcSelf!(id, "initWithData:", NSData)(attribs);
+		return result is this.objcObject ? this : (result !is null ? new NSOpenGLPixelFormat(result) : null);
+	}
+
+	this (NSData attribs)
+	{
+		super(NSOpenGLPixelFormat.alloc.initWithData(attribs).objcObject);
+	}
+
+	NSData attributes ()
+	{
+		return invokeObjcSelf!(NSData, "attributes");
+	}
+
+	void setAttributes (NSData attribs)
+	{
+		return invokeObjcSelf!(void, "setAttributes:", NSData)(attribs);
+	}
+
+	void getValues (ref GLint vals, uint attrib, int screen)
+	{
+		return invokeObjcSelf!(void, "getValues:forAttribute:forVirtualScreen:", GLint*, uint, int)(&vals, attrib, screen);
+	}
+
+	int numberOfVirtualScreens ()
+	{
+		return invokeObjcSelf!(int, "numberOfVirtualScreens");
+	}
+
+	void* CGLPixelFormatObj ()
+	{
+		return invokeObjcSelf!(void*, "CGLPixelFormatObj");
+	}
+
+}
+
+class NSOpenGLContext : NSObject
+{
+	mixin (ObjcWrap);
+
+	NSOpenGLContext initWithFormat (NSOpenGLPixelFormat format, NSOpenGLContext share)
+	{
+		id result = invokeObjcSelf!(id, "initWithFormat:shareContext:", NSOpenGLPixelFormat, NSOpenGLContext)(format, share);
+		return result is this.objcObject ? this : (result !is null ? new NSOpenGLContext(result) : null);
+	}
+
+	this (NSOpenGLPixelFormat format, NSOpenGLContext share)
+	{
+		super(NSOpenGLContext.alloc.initWithFormat(format, share).objcObject);
+	}
+
+	void setView (NSView view)
+	{
+		return invokeObjcSelf!(void, "setView:", NSView)(view);
+	}
+
+	NSView view ()
+	{
+		return invokeObjcSelf!(NSView, "view");
+	}
+
+	void setFullScreen ()
+	{
+		return invokeObjcSelf!(void, "setFullScreen");
+	}
+
+	void setOffScreen (void* baseaddr, int width, int height, int rowbytes)
+	{
+		return invokeObjcSelf!(void, "setOffScreen:width:height:rowbytes:", void*, int, int, int)(baseaddr, width, height, rowbytes);
+	}
+
+	void clearDrawable ()
+	{
+		return invokeObjcSelf!(void, "clearDrawable");
+	}
+
+	void update ()
+	{
+		return invokeObjcSelf!(void, "update");
+	}
+
+	void flushBuffer ()
+	{
+		return invokeObjcSelf!(void, "flushBuffer");
+	}
+
+	void makeCurrentContext ()
+	{
+		return invokeObjcSelf!(void, "makeCurrentContext");
+	}
+
+	static void clearCurrentContext ()
+	{
+		return invokeObjcSelfClass!(void, "clearCurrentContext");
+	}
+
+	static NSOpenGLContext currentContext ()
+	{
+		return invokeObjcSelfClass!(NSOpenGLContext, "currentContext");
+	}
+
+	void copyAttributesFromContext (NSOpenGLContext context, uint mask)
+	{
+		return invokeObjcSelf!(void, "copyAttributesFromContext:withMask:", NSOpenGLContext, uint)(context, mask);
+	}
+
+	void setValues (GLint* vals, int param)
+	{
+		return invokeObjcSelf!(void, "setValues:forParameter:", GLint*, int)(vals, param);
+	}
+
+	void getValues (GLint* vals, int param)
+	{
+		return invokeObjcSelf!(void, "getValues:forParameter:", GLint*, int)(vals, param);
+	}
+
+	void setCurrentVirtualScreen (int screen)
+	{
+		return invokeObjcSelf!(void, "setCurrentVirtualScreen:", int)(screen);
+	}
+
+	int currentVirtualScreen ()
+	{
+		return invokeObjcSelf!(int, "currentVirtualScreen");
+	}
+
+	void createTexture (uint target, NSView view, uint format)
+	{
+		return invokeObjcSelf!(void, "createTexture:fromView:internalFormat:", uint, NSView, uint)(target, view, format);
+	}
+
+	void* CGLContextObj ()
+	{
+		return invokeObjcSelf!(void*, "CGLContextObj");
+	}
+
+	void setPixelBuffer (NSOpenGLPixelBuffer pixelBuffer, uint face, int level, int screen)
+	{
+		return invokeObjcSelf!(void, "setPixelBuffer:cubeMapFace:mipMapLevel:currentVirtualScreen:", NSOpenGLPixelBuffer, uint, int, int)(pixelBuffer, face, level, screen);
+	}
+
+	NSOpenGLPixelBuffer pixelBuffer ()
+	{
+		return invokeObjcSelf!(NSOpenGLPixelBuffer, "pixelBuffer");
+	}
+
+	uint pixelBufferCubeMapFace ()
+	{
+		return invokeObjcSelf!(uint, "pixelBufferCubeMapFace");
+	}
+
+	int pixelBufferMipMapLevel ()
+	{
+		return invokeObjcSelf!(int, "pixelBufferMipMapLevel");
+	}
+
+	void setTextureImageToPixelBuffer (NSOpenGLPixelBuffer pixelBuffer, uint source)
+	{
+		return invokeObjcSelf!(void, "setTextureImageToPixelBuffer:colorBuffer:", NSOpenGLPixelBuffer, uint)(pixelBuffer, source);
+	}
+}
+
+class NSOpenGLPixelBuffer : NSObject
+{
+	mixin (ObjcWrap);
+
+	NSOpenGLPixelBuffer initWithTextureTarget (uint target, uint format, int maxLevel, int pixelsWide, int pixelsHigh)
+	{
+		id result = invokeObjcSelf!(id, "initWithTextureTarget:textureInternalFormat:textureMaxMipMapLevel:pixelsWide:pixelsHigh:", uint, uint, int, int, int)(target, format, maxLevel, pixelsWide, pixelsHigh);
+		return result is this.objcObject ? this : (result !is null ? new NSOpenGLPixelBuffer(result) : null);
+	}
+
+	this (uint target, uint format, int maxLevel, int pixelsWide, int pixelsHigh)
+	{
+		super(NSOpenGLPixelBuffer.alloc.initWithTextureTarget(target, format, maxLevel, pixelsWide, pixelsHigh).objcObject);
+	}
+
+	int pixelsWide ()
+	{
+		return invokeObjcSelf!(int, "pixelsWide");
+	}
+
+	int pixelsHigh ()
+	{
+		return invokeObjcSelf!(int, "pixelsHigh");
+	}
+
+	uint textureTarget ()
+	{
+		return invokeObjcSelf!(uint, "textureTarget");
+	}
+
+	uint textureInternalFormat ()
+	{
+		return invokeObjcSelf!(uint, "textureInternalFormat");
+	}
+
+	int textureMaxMipMapLevel ()
+	{
+		return invokeObjcSelf!(int, "textureMaxMipMapLevel");
+	}
+}
+
+extern (C)
+{
+	void NSOpenGLSetOption (int pname, int param);
+	void NSOpenGLGetOption (int pname, GLint* param);
+	void NSOpenGLGetVersion (GLint* major, GLint* minor);
+}
\ No newline at end of file