LCOV - code coverage report
Current view: top level - SDL - GameController+SDLFullScreen.m (source / functions) Hit Total Coverage
Test: coverxygen.info Lines: 0 1 0.0 %
Date: 2025-05-28 07:50:54 Functions: 0 0 -

          Line data    Source code
       1           0 : /*
       2             : 
       3             : GameController+SDLFullScreen.m
       4             : 
       5             : Full-screen rendering support for SDL targets.
       6             : 
       7             : 
       8             : Oolite
       9             : Copyright (C) 2004-2013 Giles C Williams and contributors
      10             : 
      11             : This program is free software; you can redistribute it and/or
      12             : modify it under the terms of the GNU General Public License
      13             : as published by the Free Software Foundation; either version 2
      14             : of the License, or (at your option) any later version.
      15             : 
      16             : This program is distributed in the hope that it will be useful,
      17             : but WITHOUT ANY WARRANTY; without even the implied warranty of
      18             : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      19             : GNU General Public License for more details.
      20             : 
      21             : You should have received a copy of the GNU General Public License
      22             : along with this program; if not, write to the Free Software
      23             : Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
      24             : MA 02110-1301, USA.
      25             : 
      26             : */
      27             : 
      28             : 
      29             : #import "GameController.h"
      30             : 
      31             : #if OOLITE_SDL
      32             : 
      33             : #import "MyOpenGLView.h"
      34             : #import "Universe.h"
      35             : #import "OOFullScreenController.h"
      36             : 
      37             : 
      38             : @implementation GameController (FullScreen)
      39             : 
      40             : - (void) setUpDisplayModes
      41             : {
      42             :         NSArray                         *modes = [gameView getScreenSizeArray];
      43             :         NSDictionary            *mode = nil;
      44             :         unsigned        int             modeIndex, modeCount;
      45             :         unsigned        int             modeWidth, modeHeight;
      46             : 
      47             :         displayModes = [[NSMutableArray alloc] init];
      48             :         modeCount = [modes count];
      49             :         for (modeIndex = 0; modeIndex < modeCount; modeIndex++)
      50             :         {
      51             :                 mode = [modes objectAtIndex: modeIndex];
      52             :                 modeWidth = [[mode objectForKey: kOODisplayWidth] intValue];
      53             :                 modeHeight = [[mode objectForKey: kOODisplayHeight] intValue];
      54             :                 
      55             :                 if (modeWidth < DISPLAY_MIN_WIDTH ||
      56             :                         modeWidth > DISPLAY_MAX_WIDTH ||
      57             :                         modeHeight < DISPLAY_MIN_HEIGHT ||
      58             :                         modeHeight > DISPLAY_MAX_HEIGHT)
      59             :                         continue;
      60             :                 [displayModes addObject: mode];
      61             :         }
      62             :         
      63             :         NSSize fsmSize = [gameView currentScreenSize];
      64             :         width = fsmSize.width;
      65             :         height = fsmSize.height;
      66             : }
      67             : 
      68             : 
      69             : - (void) setFullScreenMode:(BOOL)fsm
      70             : {
      71             :         fullscreen = fsm;
      72             : }
      73             : 
      74             : 
      75             : - (void) exitFullScreenMode
      76             : {
      77             :         [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"fullscreen"];
      78             :         stayInFullScreenMode = NO;
      79             : }
      80             : 
      81             : 
      82             : - (BOOL) inFullScreenMode
      83             : {
      84             :         return [gameView inFullScreenMode];
      85             : }
      86             : 
      87             : 
      88             : - (BOOL) setDisplayWidth:(unsigned int) d_width Height:(unsigned int) d_height Refresh:(unsigned int) d_refresh
      89             : {
      90             :         NSDictionary *d_mode = [self findDisplayModeForWidth: d_width Height: d_height Refresh: d_refresh];
      91             :         if (d_mode)
      92             :         {
      93             :                 width = d_width;
      94             :                 height = d_height;
      95             :                 refresh = d_refresh;
      96             :                 fullscreenDisplayMode = d_mode;
      97             :                 
      98             :                 NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
      99             :                 
     100             :                 [userDefaults setInteger:width   forKey:@"display_width"];
     101             :                 [userDefaults setInteger:height  forKey:@"display_height"];
     102             :                 [userDefaults setInteger:refresh forKey:@"display_refresh"];
     103             :                 
     104             :                 // Manual synchronization is required for SDL And doesn't hurt much for OS X.
     105             :                 [userDefaults synchronize];
     106             :                 
     107             :                 return YES;
     108             :         }
     109             :         return NO;
     110             : }
     111             : 
     112             : 
     113             : - (NSDictionary *) findDisplayModeForWidth:(unsigned int) d_width Height:(unsigned int) d_height Refresh:(unsigned int) d_refresh
     114             : {
     115             :         int i, modeCount;
     116             :         NSDictionary *mode;
     117             :         unsigned int modeWidth, modeHeight, modeRefresh;
     118             :         
     119             :         modeCount = [displayModes count];
     120             :         
     121             :         for (i = 0; i < modeCount; i++)
     122             :         {
     123             :                 mode = [displayModes objectAtIndex: i];
     124             :                 modeWidth = [[mode objectForKey:kOODisplayWidth] intValue];
     125             :                 modeHeight = [[mode objectForKey:kOODisplayHeight] intValue];
     126             :                 modeRefresh = [[mode objectForKey:kOODisplayRefreshRate] intValue];
     127             :                 if ((modeWidth == d_width)&&(modeHeight == d_height)&&(modeRefresh == d_refresh))
     128             :                 {
     129             :                         return mode;
     130             :                 }
     131             :         }
     132             :         return nil;
     133             : }
     134             : 
     135             : 
     136             : - (NSArray *) displayModes
     137             : {
     138             :         return [NSArray arrayWithArray:displayModes];
     139             : }
     140             : 
     141             : 
     142             : - (NSUInteger) indexOfCurrentDisplayMode
     143             : {
     144             :         NSDictionary    *mode;
     145             :         
     146             :         mode = [self findDisplayModeForWidth: width Height: height Refresh: refresh];
     147             :         if (mode == nil)
     148             :                 return NSNotFound;
     149             :         else
     150             :                 return [displayModes indexOfObject:mode];
     151             : 
     152             :    return NSNotFound;
     153             : }
     154             : 
     155             : 
     156             : - (void) pauseFullScreenModeToPerform:(SEL) selector onTarget:(id) target
     157             : {
     158             :         pauseSelector = selector;
     159             :         pauseTarget = target;
     160             :         stayInFullScreenMode = NO;
     161             : }
     162             : 
     163             : @end
     164             : 
     165             : #endif

Generated by: LCOV version 1.14