[Hdrflow-svn] SF.net SVN: hdrflow: [193] trunk/app/HDRFlow
Status: Pre-Alpha
Brought to you by:
glslang
From: <gl...@us...> - 2007-07-19 22:24:37
|
Revision: 193 http://hdrflow.svn.sourceforge.net/hdrflow/?rev=193&view=rev Author: glslang Date: 2007-07-19 15:24:34 -0700 (Thu, 19 Jul 2007) Log Message: ----------- +initial fullscreen code Modified Paths: -------------- trunk/app/HDRFlow/English.lproj/MainMenu.nib/classes.nib trunk/app/HDRFlow/English.lproj/MainMenu.nib/keyedobjects.nib trunk/app/HDRFlow/HDRFlowController.h trunk/app/HDRFlow/HDRFlowController.m trunk/app/HDRFlow/ViewportOpenGLView.h trunk/app/HDRFlow/ViewportOpenGLView.m Modified: trunk/app/HDRFlow/English.lproj/MainMenu.nib/classes.nib =================================================================== --- trunk/app/HDRFlow/English.lproj/MainMenu.nib/classes.nib 2007-07-18 21:42:24 UTC (rev 192) +++ trunk/app/HDRFlow/English.lproj/MainMenu.nib/classes.nib 2007-07-19 22:24:34 UTC (rev 193) @@ -5,7 +5,7 @@ ACTIONS = {fileOpen = id; scriptEditor = id; viewFullscreen = id; }; CLASS = HDRFlowController; LANGUAGE = ObjC; - OUTLETS = {OpenGLView = ViewportOpenGLView; scriptEditor = ScriptEditorController; }; + OUTLETS = {openGLView = ViewportOpenGLView; }; SUPERCLASS = NSObject; }, {CLASS = ViewportOpenGLView; LANGUAGE = ObjC; SUPERCLASS = CustomOpenGLView; } Modified: trunk/app/HDRFlow/English.lproj/MainMenu.nib/keyedobjects.nib =================================================================== (Binary files differ) Modified: trunk/app/HDRFlow/HDRFlowController.h =================================================================== --- trunk/app/HDRFlow/HDRFlowController.h 2007-07-18 21:42:24 UTC (rev 192) +++ trunk/app/HDRFlow/HDRFlowController.h 2007-07-19 22:24:34 UTC (rev 193) @@ -14,7 +14,7 @@ @interface HDRFlowController : NSObject { ScriptEditorController* scriptEditor; - IBOutlet ViewportOpenGLView* OpenGLView; + IBOutlet ViewportOpenGLView* openGLView; } - ( BOOL ) acceptsFirstResponder; Modified: trunk/app/HDRFlow/HDRFlowController.m =================================================================== --- trunk/app/HDRFlow/HDRFlowController.m 2007-07-18 21:42:24 UTC (rev 192) +++ trunk/app/HDRFlow/HDRFlowController.m 2007-07-19 22:24:34 UTC (rev 193) @@ -6,6 +6,7 @@ // For more information, see http://www.cryogenicgraphics.com/hdrflow. #import "HDRFlowController.h" +#import "ViewportOpenGLView.h" @implementation HDRFlowController @@ -47,6 +48,7 @@ - ( IBAction ) viewFullscreen: ( id ) sender { + [ openGLView fullscreen ]; } - ( BOOL ) acceptsFirstResponder Modified: trunk/app/HDRFlow/ViewportOpenGLView.h =================================================================== --- trunk/app/HDRFlow/ViewportOpenGLView.h 2007-07-18 21:42:24 UTC (rev 192) +++ trunk/app/HDRFlow/ViewportOpenGLView.h 2007-07-19 22:24:34 UTC (rev 193) @@ -18,6 +18,6 @@ - ( void ) drawRect: ( NSRect ) theRect; - ( void ) update; -- ( BOOL ) fullscreen; +- ( void ) fullscreen; @end Modified: trunk/app/HDRFlow/ViewportOpenGLView.m =================================================================== --- trunk/app/HDRFlow/ViewportOpenGLView.m 2007-07-18 21:42:24 UTC (rev 192) +++ trunk/app/HDRFlow/ViewportOpenGLView.m 2007-07-19 22:24:34 UTC (rev 193) @@ -75,9 +75,65 @@ ; } -- ( BOOL ) fullscreen +- ( void ) fullscreen { - return NO; + NSOpenGLPixelFormatAttribute attribs[ ] = + { + NSOpenGLPFAFullScreen, + NSOpenGLPFAScreenMask, + CGDisplayIDToOpenGLDisplayMask( kCGDirectMainDisplay ), + NSOpenGLPFADoubleBuffer, + NSOpenGLPFADepthSize, 24, + NSOpenGLPFAStencilSize, 8, + 0 + }; + + NSOpenGLPixelFormat* pixelFormat = [ [ [ NSOpenGLPixelFormat alloc ] initWithAttributes: attribs ] autorelease ]; + NSOpenGLContext* fullScreenContext = [ [ NSOpenGLContext alloc ] initWithFormat: pixelFormat shareContext: nil ]; + + if( fullScreenContext == nil ) return; + + CGDisplayErr err = CGCaptureAllDisplays( ); + if( err != CGDisplayNoErr ) return; + + [ fullScreenContext setFullScreen ]; + [ fullScreenContext makeCurrentContext ]; + + glViewport( 0, 0, CGDisplayPixelsWide( kCGDirectMainDisplay ), CGDisplayPixelsHigh( kCGDirectMainDisplay ) ); + + BOOL stayInFullScreenMode = YES; + while( stayInFullScreenMode ) + { + NSEvent* event; + while( event = [ NSApp nextEventMatchingMask: NSAnyEventMask untilDate: [ NSDate distantPast ] inMode: NSDefaultRunLoopMode dequeue: YES ] ) + { + switch( [ event type ] ) + { + case NSKeyDown: + stayInFullScreenMode = NO; + break; + + default: + break; + } + } + + [ fullScreenContext flushBuffer ]; + } + + glClearColor( 0.0, 0.0, 0.0, 0.0 ); + glClear( GL_COLOR_BUFFER_BIT ); + [ fullScreenContext flushBuffer ]; + glClear( GL_COLOR_BUFFER_BIT ); + [ fullScreenContext flushBuffer ]; + + [ NSOpenGLContext clearCurrentContext ]; + [ fullScreenContext clearDrawable ]; + [ fullScreenContext release ]; + + CGReleaseAllDisplays( ); + + [ self setNeedsDisplay: YES ]; } @end This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |