void cvSetModeWindow_CARBON( const char* name, double prop_value)//Yannick Verdie { OSStatus err = noErr; CV_FUNCNAME( "cvSetModeWindow_QT" ); __BEGIN__; CvWindow* window; if(!name) CV_ERROR( CV_StsNullPtr, "NULL name string" ); window = icvFindWindowByName( name ); if( !window ) CV_ERROR( CV_StsNullPtr, "NULL window" ); if(window->flags & CV_WINDOW_AUTOSIZE)//if the flag CV_WINDOW_AUTOSIZE is set EXIT; if (window->status==CV_WINDOW_FULLSCREEN && prop_value==CV_WINDOW_NORMAL) { err = EndFullScreen(window->restoreState,0); if (err != noErr) fprintf(stdout,"Error EndFullScreen\n"); window->window = window->oldwindow; ShowWindow( window->window ); window->status=CV_WINDOW_NORMAL; EXIT; } if (window->status==CV_WINDOW_NORMAL && prop_value==CV_WINDOW_FULLSCREEN) { GDHandle device; err = GetWindowGreatestAreaDevice(window->window, kWindowTitleBarRgn, &device, NULL); if (err != noErr) fprintf(stdout,"Error GetWindowGreatestAreaDevice\n"); HideWindow(window->window); window->oldwindow = window->window; err = BeginFullScreen(&(window->restoreState), device, 0, 0, &window->window, 0, fullScreenAllowEvents | fullScreenDontSwitchMonitorResolution); if (err != noErr) fprintf(stdout,"Error BeginFullScreen\n"); window->status=CV_WINDOW_FULLSCREEN; EXIT; } __END__; }
static void full_screen(void) { if(!amFullScreen) { oldWindow = theWindow; HideWindow(theWindow); GDHandle device; GetWindowGreatestAreaDevice(theWindow, kWindowTitleBarRgn, &device, NULL); BeginFullScreen(&fullScreenRestore, device, 0, 0, &theWindow, 0, 0); amFullScreen = 1; window_resized(); Rectangle rect = { { 0, 0 }, { bounds.size.width, bounds.size.height } }; wmtrack(0, rect.max.x, rect.max.y, 0); drawqlock(); flushmemscreen(rect); drawqunlock(); } else leave_full_screen(); }