|
OpenTTD Source 20260129-master-g2bb01bd0e4
|
Public Member Functions | |
| VideoDriver_Cocoa (bool uses_hardware_acceleration=false) | |
| void | Stop () override |
| Stop Cocoa video driver. | |
| void | MainLoop () override |
| Start the main programme loop when using a cocoa video driver. | |
| void | MakeDirty (int left, int top, int width, int height) override |
| Set dirty a rectangle managed by a cocoa video subdriver. | |
| bool | AfterBlitterChange () override |
| Callback invoked after the blitter was changed. | |
| bool | ChangeResolution (int w, int h) override |
| Change the resolution when using a cocoa video driver. | |
| bool | ToggleFullscreen (bool fullscreen) override |
| Toggle between windowed and full screen mode for cocoa display driver. | |
| void | ClearSystemSprites () override |
| Clear all cached sprites. | |
| void | PopulateSystemSprites () override |
| Populate all sprites in cache. | |
| void | EditBoxLostFocus () override |
| An edit box lost the input focus. | |
| std::vector< int > | GetListOfMonitorRefreshRates () override |
| Get refresh rates of all connected monitors. | |
| void | MainLoopReal () |
| Main game loop. | |
| virtual void | AllocateBackingStore (bool force=false)=0 |
Public Member Functions inherited from VideoDriver | |
| VideoDriver (bool uses_hardware_acceleration=false) | |
| virtual void | ToggleVsync (bool vsync) |
| Change the vsync setting. | |
| virtual bool | ClaimMousePointer () |
| virtual bool | UseSystemCursor () |
| Get whether the mouse cursor is drawn by the video driver. | |
| virtual bool | HasGUI () const |
| Whether the driver has a graphical user interface with the end user. | |
| virtual bool | HasEfficient8Bpp () const |
| Has this video driver an efficient code path for palette animated 8-bpp sprites? | |
| virtual bool | HasAnimBuffer () |
| Does this video driver support a separate animation buffer in addition to the colour buffer? | |
| virtual uint8_t * | GetAnimBuffer () |
| Get a pointer to the animation buffer of the video back-end. | |
| virtual void | EditBoxGainedFocus () |
| An edit box gained the input focus. | |
| virtual std::string_view | GetInfoString () const |
| void | QueueOnMainThread (std::function< void()> &&func) |
| Queue a function to be called on the main thread with game state lock held and video buffer locked. | |
| void | GameLoopPause () |
| Pause the game-loop for a bit, releasing the game-state lock. | |
| virtual void | SetScreensaverInhibited (bool inhibited) |
| Prevents the system from going to sleep. | |
Public Member Functions inherited from Driver | |
| virtual std::optional< std::string_view > | Start (const StringList &parm)=0 |
| Start this driver. | |
| virtual std::string_view | GetName () const =0 |
| Get the name of this driver. | |
Data Fields | |
| bool | setup |
| Window is currently being created. | |
| OTTD_CocoaWindow * | window |
| Pointer to window object. | |
| OTTD_CocoaView * | cocoaview |
| Pointer to view object. | |
| CGColorSpaceRef | colour_space |
| Window colour space. | |
| OTTD_CocoaWindowDelegate * | delegate |
| Window delegate object. | |
Protected Member Functions | |
| Dimension | GetScreenSize () const override |
| Get the resolution of the main screen. | |
| void | InputLoop () override |
| Handle input logic, is CTRL pressed, should we fast-forward, etc. | |
| bool | LockVideoBuffer () override |
| Lock video buffer for drawing if it isn't already mapped. | |
| void | UnlockVideoBuffer () override |
| Unlock video buffer. | |
| bool | PollEvent () override |
| Poll and handle a single event from the OS. | |
| void | GameSizeChanged () |
| Handle a change of the display area. | |
| std::optional< std::string_view > | Initialize () |
| Common driver initialization. | |
| void | UpdateVideoModes () |
| Update the video mode. | |
| bool | MakeWindow (int width, int height) |
| Build window and view with a given size. | |
| virtual NSView * | AllocateDrawView ()=0 |
| virtual void * | GetVideoPointer ()=0 |
| Get a pointer to the video buffer. | |
| virtual void | ReleaseVideoPointer () |
| Hand video buffer back to the drawing backend. | |
Protected Member Functions inherited from VideoDriver | |
| void | UpdateAutoResolution () |
| Apply resolution auto-detection and clamp to sensible defaults. | |
| virtual void | Paint () |
| Paint the window. | |
| virtual void | CheckPaletteAnim () |
| Process any pending palette animation. | |
| void | StartGameThread () |
| Start the loop for game-tick. | |
| void | StopGameThread () |
| Stop the loop for the game-tick. | |
| void | Tick () |
| Give the video-driver a tick. | |
| void | SleepTillNextTick () |
| Sleep till the next tick is about to happen. | |
| std::chrono::steady_clock::duration | GetGameInterval () |
| std::chrono::steady_clock::duration | GetDrawInterval () |
| void | DrainCommandQueue () |
| Execute all queued commands. | |
Protected Attributes | |
| Rect | dirty_rect |
| Region of the screen that needs redrawing. | |
| bool | buffer_locked |
| Video buffer was locked by the main thread. | |
Protected Attributes inherited from VideoDriver | |
| const uint | ALLOWED_DRIFT = 5 |
| How many times videodriver can miss deadlines without it being overly compensated. | |
| std::chrono::steady_clock::time_point | next_game_tick |
| std::chrono::steady_clock::time_point | next_draw_tick |
| bool | fast_forward_key_pressed |
| The fast-forward key is being pressed. | |
| bool | fast_forward_via_key |
| The fast-forward was enabled by key press. | |
| bool | is_game_threaded |
| std::thread | game_thread |
| std::mutex | game_state_mutex |
| std::mutex | game_thread_wait_mutex |
| bool | uses_hardware_acceleration |
Private Member Functions | |
| bool | IsFullscreen () |
| Are we in fullscreen mode? | |
Private Attributes | |
| Dimension | orig_res |
| Saved window size for non-fullscreen mode. | |
| bool | refresh_sys_sprites |
| System sprites need refreshing. | |
Additional Inherited Members | |
Public Types inherited from Driver | |
| enum | Type : uint8_t { DT_BEGIN = 0 , DT_MUSIC = 0 , DT_SOUND , DT_VIDEO , DT_END } |
| The type of driver. More... | |
Static Public Member Functions inherited from VideoDriver | |
| static VideoDriver * | GetInstance () |
| Get the currently active instance of the video driver. | |
| static std::string | GetCaption () |
| Get the caption to use for the game's title bar. | |
Static Protected Member Functions inherited from VideoDriver | |
| static void | GameThreadThunk (VideoDriver *drv) |
| VideoDriver_Cocoa::VideoDriver_Cocoa | ( | bool | uses_hardware_acceleration = false | ) |
Definition at line 66 of file cocoa_v.mm.
|
overridevirtual |
Callback invoked after the blitter was changed.
Reimplemented from VideoDriver.
Definition at line 214 of file cocoa_v.mm.
|
pure virtual |
Implemented in VideoDriver_CocoaOpenGL, and VideoDriver_CocoaQuartz.
|
overridevirtual |
Change the resolution when using a cocoa video driver.
| w | New window width. |
| h | New window height. |
Implements VideoDriver.
Definition at line 150 of file cocoa_v.mm.
|
overridevirtual |
Clear all cached sprites.
Reimplemented from VideoDriver.
Reimplemented in VideoDriver_CocoaOpenGL.
Definition at line 197 of file cocoa_v.mm.
References refresh_sys_sprites.
Referenced by VideoDriver_CocoaOpenGL::ClearSystemSprites().
|
overridevirtual |
An edit box lost the input focus.
Abort character compositing if necessary.
Reimplemented from VideoDriver.
Definition at line 223 of file cocoa_v.mm.
References cocoaview, and HandleTextInput().
|
protected |
Handle a change of the display area.
Definition at line 302 of file cocoa_v.mm.
References _cur_resolution, cocoaview, GameSizeChanged(), BlitterFactory::GetCurrentBlitter(), IsFullscreen(), orig_res, and Blitter::PostResize().
Referenced by VideoDriver_CocoaQuartz::AllocateBackingStore(), GameSizeChanged(), and VideoDriver_CocoaQuartz::Start().
|
overridevirtual |
Get refresh rates of all connected monitors.
Reimplemented from VideoDriver.
Definition at line 234 of file cocoa_v.mm.
|
overrideprotectedvirtual |
Get the resolution of the main screen.
Reimplemented from VideoDriver.
Definition at line 257 of file cocoa_v.mm.
|
protectedpure virtual |
Get a pointer to the video buffer.
Implemented in VideoDriver_CocoaOpenGL, and VideoDriver_CocoaQuartz.
Referenced by LockVideoBuffer().
|
protected |
Common driver initialization.
Definition at line 104 of file cocoa_v.mm.
References _cocoa_video_started, _cur_resolution, CocoaSetupApplication(), orig_res, and VideoDriver::UpdateAutoResolution().
Referenced by VideoDriver_CocoaQuartz::Start().
|
overrideprotectedvirtual |
Handle input logic, is CTRL pressed, should we fast-forward, etc.
Reimplemented from VideoDriver.
Definition at line 439 of file cocoa_v.mm.
References _ctrl_pressed, _settings_client, _shift_pressed, _tab_is_down, VideoDriver::fast_forward_key_pressed, ClientSettings::gui, HandleCtrlChanged(), and GUISettings::right_mouse_btn_emulation.
|
private |
Are we in fullscreen mode?
Definition at line 294 of file cocoa_v.mm.
References window.
Referenced by GameSizeChanged(), MainLoopReal(), ToggleFullscreen(), and UpdateVideoModes().
|
overrideprotectedvirtual |
Lock video buffer for drawing if it isn't already mapped.
Reimplemented from VideoDriver.
Definition at line 267 of file cocoa_v.mm.
References buffer_locked, and GetVideoPointer().
|
overridevirtual |
Start the main programme loop when using a cocoa video driver.
Implements VideoDriver.
Definition at line 134 of file cocoa_v.mm.
References OTTDMainLaunchGameEngine.
| void VideoDriver_Cocoa::MainLoopReal | ( | ) |
Main game loop.
Definition at line 454 of file cocoa_v.mm.
References _cur_resolution, IsFullscreen(), orig_res, VideoDriver::SleepTillNextTick(), VideoDriver::StartGameThread(), VideoDriver::StopGameThread(), and VideoDriver::Tick().
|
overridevirtual |
Set dirty a rectangle managed by a cocoa video subdriver.
| left | Left x cooordinate of the dirty rectangle. |
| top | Upper y coordinate of the dirty rectangle. |
| width | Width of the dirty rectangle. |
| height | Height of the dirty rectangle. |
Implements VideoDriver.
Definition at line 125 of file cocoa_v.mm.
References BoundingRect(), and dirty_rect.
Referenced by VideoDriver_CocoaQuartz::AllocateBackingStore(), and VideoDriver_CocoaQuartz::UpdatePalette().
|
protected |
Build window and view with a given size.
Definition at line 347 of file cocoa_v.mm.
References cocoaview, colour_space, Debug, delegate, setup, and window.
Referenced by VideoDriver_CocoaQuartz::Start().
|
overrideprotectedvirtual |
Poll and handle a single event from the OS.
Reimplemented from VideoDriver.
Definition at line 427 of file cocoa_v.mm.
|
overridevirtual |
Populate all sprites in cache.
Reimplemented from VideoDriver.
Reimplemented in VideoDriver_CocoaOpenGL.
Definition at line 202 of file cocoa_v.mm.
References refresh_sys_sprites, and window.
Referenced by VideoDriver_CocoaOpenGL::PopulateSystemSprites().
|
inlineprotectedvirtual |
Hand video buffer back to the drawing backend.
Reimplemented in VideoDriver_CocoaOpenGL.
Definition at line 85 of file cocoa_v.h.
Referenced by UnlockVideoBuffer().
|
overridevirtual |
Stop Cocoa video driver.
Implements Driver.
Reimplemented in VideoDriver_CocoaOpenGL, and VideoDriver_CocoaQuartz.
Definition at line 84 of file cocoa_v.mm.
References _cocoa_video_started, CocoaExitApplication(), cocoaview, colour_space, delegate, and window.
Referenced by VideoDriver_CocoaOpenGL::Stop(), and VideoDriver_CocoaQuartz::Stop().
|
overridevirtual |
Toggle between windowed and full screen mode for cocoa display driver.
| full_screen | Whether to switch to full screen or not. |
Implements VideoDriver.
Definition at line 179 of file cocoa_v.mm.
References InvalidateWindowClassesData(), IsFullscreen(), UpdateVideoModes(), WC_GAME_OPTIONS, and window.
Referenced by VideoDriver_CocoaQuartz::Start().
|
overrideprotectedvirtual |
Unlock video buffer.
Reimplemented from VideoDriver.
Definition at line 279 of file cocoa_v.mm.
References buffer_locked, and ReleaseVideoPointer().
|
protected |
Update the video mode.
Definition at line 322 of file cocoa_v.mm.
References _default_resolutions, _resolutions, IsFullscreen(), and window.
Referenced by VideoDriver_CocoaQuartz::Start(), and ToggleFullscreen().
|
protected |
Video buffer was locked by the main thread.
Definition at line 64 of file cocoa_v.h.
Referenced by LockVideoBuffer(), and UnlockVideoBuffer().
| OTTD_CocoaView* VideoDriver_Cocoa::cocoaview |
Pointer to view object.
Definition at line 32 of file cocoa_v.h.
Referenced by VideoDriver_CocoaQuartz::AllocateBackingStore(), ChangeResolution(), EditBoxLostFocus(), GameSizeChanged(), MakeWindow(), and Stop().
| CGColorSpaceRef VideoDriver_Cocoa::colour_space |
Window colour space.
Definition at line 33 of file cocoa_v.h.
Referenced by MakeWindow(), and Stop().
| OTTD_CocoaWindowDelegate* VideoDriver_Cocoa::delegate |
Window delegate object.
Definition at line 35 of file cocoa_v.h.
Referenced by MakeWindow(), and Stop().
|
protected |
Region of the screen that needs redrawing.
Definition at line 63 of file cocoa_v.h.
Referenced by MakeDirty(), and VideoDriver_CocoaQuartz::Paint().
|
private |
Saved window size for non-fullscreen mode.
Definition at line 25 of file cocoa_v.h.
Referenced by GameSizeChanged(), Initialize(), and MainLoopReal().
|
private |
System sprites need refreshing.
Definition at line 26 of file cocoa_v.h.
Referenced by ClearSystemSprites(), and PopulateSystemSprites().
| bool VideoDriver_Cocoa::setup |
Window is currently being created.
Definition at line 29 of file cocoa_v.h.
Referenced by VideoDriver_CocoaQuartz::AllocateBackingStore(), and MakeWindow().
| OTTD_CocoaWindow* VideoDriver_Cocoa::window |
Pointer to window object.
Definition at line 31 of file cocoa_v.h.
Referenced by VideoDriver_CocoaQuartz::AllocateBackingStore(), ChangeResolution(), IsFullscreen(), MakeWindow(), VideoDriver_CocoaQuartz::Paint(), PopulateSystemSprites(), Stop(), ToggleFullscreen(), and UpdateVideoModes().