2 * This file is part of OpenTTD.
3 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
4 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
5 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
8 /** @file cocoa_wnd.h OS interface for the cocoa video driver. */
13 #import <Cocoa/Cocoa.h>
15 #ifdef MAC_OS_X_VERSION_10_12_2
16 # define HAVE_TOUCHBAR_SUPPORT
19 class VideoDriver_Cocoa
;
21 /* Right Mouse Button Emulation enum */
22 enum RightMouseButtonEmulationState
{
28 extern NSString
*OTTDMainLaunchGameEngine
;
30 /** Category of NSCursor to allow cursor showing/hiding */
31 @interface
NSCursor (OTTD_QuickdrawCursor
)
32 + (NSCursor
*) clearCocoaCursor
;
35 /** Subclass of NSWindow to cater our special needs */
36 @interface OTTD_CocoaWindow
: NSWindow
37 #ifdef HAVE_TOUCHBAR_SUPPORT
41 - (instancetype
)initWithContentRect
:(NSRect
)contentRect styleMask
:(NSUInteger
)styleMask backing
:(NSBackingStoreType
)backingType defer
:(BOOL
)flag driver
:(VideoDriver_Cocoa
*)drv
;
43 - (void)setFrame
:(NSRect
)frameRect display
:(BOOL
)flag
;
45 - (void)refreshSystemSprites
;
48 /** Subclass of NSView to support mouse awareness and text input. */
49 @interface OTTD_CocoaView
: NSView
<NSTextInputClient
>
50 - (NSRect
)getRealRect
:(NSRect
)rect
;
51 - (NSRect
)getVirtualRect
:(NSRect
)rect
;
52 - (CGFloat
)getContentsScale
;
53 - (NSPoint
)mousePositionFromEvent
:(NSEvent
*)e
;
56 /** Delegate for our NSWindow to send ask for quit on close */
57 @interface OTTD_CocoaWindowDelegate
: NSObject
<NSWindowDelegate
>
58 - (instancetype
)initWithDriver
:(VideoDriver_Cocoa
*)drv
;
60 - (BOOL
)windowShouldClose
:(id
)sender
;
61 - (void)windowDidEnterFullScreen
:(NSNotification
*)aNotification
;
62 - (void)windowDidChangeBackingProperties
:(NSNotification
*)notification
;
63 - (NSApplicationPresentationOptions
)window
:(NSWindow
*)window willUseFullScreenPresentationOptions
:(NSApplicationPresentationOptions
)proposedOptions
;
67 extern bool _allow_hidpi_window
;
69 bool CocoaSetupApplication();
70 void CocoaExitApplication();
72 #endif /* COCOA_WND_H */