70 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			70 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								#ifdef KINC_METAL
							 | 
						||
| 
								 | 
							
								#import <MetalKit/MTKView.h>
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								#import <Cocoa/Cocoa.h>
							 | 
						||
| 
								 | 
							
								#import <OpenGL/CGLContext.h>
							 | 
						||
| 
								 | 
							
								#import <OpenGL/OpenGL.h>
							 | 
						||
| 
								 | 
							
								#import <OpenGL/gl.h>
							 | 
						||
| 
								 | 
							
								#import <OpenGL/glext.h>
							 | 
						||
| 
								 | 
							
								#import <OpenGL/glu.h>
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef KINC_METAL
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct kinc_g5_render_target;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@interface BasicOpenGLView : MTKView {
							 | 
						||
| 
								 | 
							
								@private
							 | 
						||
| 
								 | 
							
									id<MTLDevice> device;
							 | 
						||
| 
								 | 
							
									id<MTLCommandQueue> commandQueue;
							 | 
						||
| 
								 | 
							
									id<MTLLibrary> library;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// (DK) context sharing
							 | 
						||
| 
								 | 
							
								// www.cocoabuilder.com/archive/cocoa/29573-sharing-opengl-context.html
							 | 
						||
| 
								 | 
							
								// basically:
							 | 
						||
| 
								 | 
							
								//  -don't use NSOpenGLView, but implement all that by hand
							 | 
						||
| 
								 | 
							
								//  -use -initWithFormat:shareContext: (NSOpenGLContext) to setup the shared contexts
							 | 
						||
| 
								 | 
							
								@interface BasicOpenGLView : NSOpenGLView {
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef KINC_METAL
							 | 
						||
| 
								 | 
							
								- (CAMetalLayer *)metalLayer;
							 | 
						||
| 
								 | 
							
								- (id<MTLDevice>)metalDevice;
							 | 
						||
| 
								 | 
							
								- (id<MTLLibrary>)metalLibrary;
							 | 
						||
| 
								 | 
							
								- (id<MTLCommandQueue>)metalQueue;
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								- (void)prepareOpenGL;
							 | 
						||
| 
								 | 
							
								- (void)switchBuffers;
							 | 
						||
| 
								 | 
							
								+ (NSOpenGLPixelFormat *)basicPixelFormat;
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- (void)keyDown:(NSEvent *)theEvent;
							 | 
						||
| 
								 | 
							
								- (void)keyUp:(NSEvent *)theEvent;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- (void)mouseDown:(NSEvent *)theEvent;
							 | 
						||
| 
								 | 
							
								- (void)mouseUp:(NSEvent *)theEvent;
							 | 
						||
| 
								 | 
							
								- (void)mouseMoved:(NSEvent *)theEvent;
							 | 
						||
| 
								 | 
							
								- (void)mouseDragged:(NSEvent *)theEvent;
							 | 
						||
| 
								 | 
							
								- (void)rightMouseDown:(NSEvent *)theEvent;
							 | 
						||
| 
								 | 
							
								- (void)rightMouseUp:(NSEvent *)theEvent;
							 | 
						||
| 
								 | 
							
								- (void)rightMouseDragged:(NSEvent *)theEvent;
							 | 
						||
| 
								 | 
							
								- (void)scrollWheel:(NSEvent *)theEvent;
							 | 
						||
| 
								 | 
							
								- (NSDragOperation)draggingEntered:(id<NSDraggingInfo>)sender;
							 | 
						||
| 
								 | 
							
								- (BOOL)performDragOperation:(id<NSDraggingInfo>)sender;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- (void)update; // moved or resized
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- (BOOL)acceptsFirstResponder;
							 | 
						||
| 
								 | 
							
								- (BOOL)becomeFirstResponder;
							 | 
						||
| 
								 | 
							
								- (BOOL)resignFirstResponder;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- (id)initWithFrame:(NSRect)frameRect;
							 | 
						||
| 
								 | 
							
								- (void)resize:(NSSize)size;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@end
							 |