OpenTTD Source 20241224-master-gee860a5c8e
VideoDriver_Cocoa Class Referenceabstract
Inheritance diagram for VideoDriver_Cocoa:
VideoDriver Driver VideoDriver_CocoaOpenGL VideoDriver_CocoaQuartz

Public Member Functions

 VideoDriver_Cocoa (bool uses_hardware_acceleration=false)
 
void Stop () override
 Stop this driver.
 
void MainLoop () override
 Perform the actual drawing.
 
void MakeDirty (int left, int top, int width, int height) override
 Mark a particular area dirty.
 
bool AfterBlitterChange () override
 Callback invoked after the blitter was changed.
 
bool ChangeResolution (int w, int h) override
 Change the resolution of the window.
 
bool ToggleFullscreen (bool fullscreen) override
 Change the full screen setting.
 
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 a list of refresh rates of each available monitor.
 
void MainLoopReal ()
 
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 int GetSuggestedUIScale ()
 Get a suggested default GUI scale taking screen DPI into account.
 
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.
 
- 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_CocoaWindowwindow
 Pointer to window object.
 
OTTD_CocoaViewcocoaview
 Pointer to view object.
 
CGColorSpaceRef color_space
 Window color space.
 
OTTD_CocoaWindowDelegatedelegate
 Window delegate object.
 

Protected Member Functions

Dimension GetScreenSize () const override
 Get the resolution of the main screen.
 
float GetDPIScale () override
 Get DPI scaling factor of the screen OTTD is displayed on.
 
void InputLoop () override
 Handle input logic, is CTRL pressed, should we fast-forward, etc.
 
bool LockVideoBuffer () override
 Make sure the video buffer is ready for drawing.
 
void UnlockVideoBuffer () override
 Unlock a previously locked video buffer.
 
bool PollEvent () override
 Process a single system event.
 
void GameSizeChanged ()
 
std::optional< std::string_view > Initialize ()
 
void UpdateVideoModes ()
 
bool MakeWindow (int width, int height)
 
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 ()
 

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 {
  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 VideoDriverGetInstance ()
 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)
 

Detailed Description

Definition at line 23 of file cocoa_v.h.

Member Function Documentation

◆ AfterBlitterChange()

bool VideoDriver_Cocoa::AfterBlitterChange ( )
overridevirtual

Callback invoked after the blitter was changed.

Returns
True if no error.

Reimplemented from VideoDriver.

◆ ChangeResolution()

bool VideoDriver_Cocoa::ChangeResolution ( int  w,
int  h 
)
overridevirtual

Change the resolution of the window.

Parameters
wThe new width.
hThe new height.
Returns
True if the change succeeded.

Implements VideoDriver.

◆ ClearSystemSprites()

void VideoDriver_Cocoa::ClearSystemSprites ( )
overridevirtual

Clear all cached sprites.

Reimplemented from VideoDriver.

Reimplemented in VideoDriver_CocoaOpenGL.

◆ EditBoxLostFocus()

void VideoDriver_Cocoa::EditBoxLostFocus ( )
overridevirtual

An edit box lost the input focus.

Abort character compositing if necessary.

Reimplemented from VideoDriver.

◆ GetDPIScale()

float VideoDriver_Cocoa::GetDPIScale ( )
overrideprotectedvirtual

Get DPI scaling factor of the screen OTTD is displayed on.

Returns
1.0 for default platform DPI, > 1.0 for higher DPI values, and < 1.0 for smaller DPI values.

Reimplemented from VideoDriver.

◆ GetListOfMonitorRefreshRates()

std::vector< int > VideoDriver_Cocoa::GetListOfMonitorRefreshRates ( )
overridevirtual

Get a list of refresh rates of each available monitor.

Returns
A vector of the refresh rates of all available monitors.

Reimplemented from VideoDriver.

◆ GetScreenSize()

Dimension VideoDriver_Cocoa::GetScreenSize ( ) const
overrideprotectedvirtual

Get the resolution of the main screen.

Reimplemented from VideoDriver.

◆ GetVideoPointer()

virtual void * VideoDriver_Cocoa::GetVideoPointer ( )
protectedpure virtual

Get a pointer to the video buffer.

Implemented in VideoDriver_CocoaOpenGL, and VideoDriver_CocoaQuartz.

◆ InputLoop()

void VideoDriver_Cocoa::InputLoop ( )
overrideprotectedvirtual

Handle input logic, is CTRL pressed, should we fast-forward, etc.

Reimplemented from VideoDriver.

◆ LockVideoBuffer()

bool VideoDriver_Cocoa::LockVideoBuffer ( )
overrideprotectedvirtual

Make sure the video buffer is ready for drawing.

Returns
True if the video buffer has to be unlocked.

Reimplemented from VideoDriver.

◆ MainLoop()

void VideoDriver_Cocoa::MainLoop ( )
overridevirtual

Perform the actual drawing.

Implements VideoDriver.

◆ MakeDirty()

void VideoDriver_Cocoa::MakeDirty ( int  left,
int  top,
int  width,
int  height 
)
overridevirtual

Mark a particular area dirty.

Parameters
leftThe left most line of the dirty area.
topThe top most line of the dirty area.
widthThe width of the dirty area.
heightThe height of the dirty area.

Implements VideoDriver.

◆ PollEvent()

bool VideoDriver_Cocoa::PollEvent ( )
overrideprotectedvirtual

Process a single system event.

Returns
False if there are no more events to process.

Reimplemented from VideoDriver.

◆ PopulateSystemSprites()

void VideoDriver_Cocoa::PopulateSystemSprites ( )
overridevirtual

Populate all sprites in cache.

Reimplemented from VideoDriver.

Reimplemented in VideoDriver_CocoaOpenGL.

◆ ReleaseVideoPointer()

virtual void VideoDriver_Cocoa::ReleaseVideoPointer ( )
inlineprotectedvirtual

Hand video buffer back to the drawing backend.

Reimplemented in VideoDriver_CocoaOpenGL.

Definition at line 86 of file cocoa_v.h.

◆ Stop()

void VideoDriver_Cocoa::Stop ( )
overridevirtual

Stop this driver.

Implements Driver.

Reimplemented in VideoDriver_CocoaOpenGL, and VideoDriver_CocoaQuartz.

◆ ToggleFullscreen()

bool VideoDriver_Cocoa::ToggleFullscreen ( bool  fullscreen)
overridevirtual

Change the full screen setting.

Parameters
fullscreenThe new setting.
Returns
True if the change succeeded.

Implements VideoDriver.

◆ UnlockVideoBuffer()

void VideoDriver_Cocoa::UnlockVideoBuffer ( )
overrideprotectedvirtual

Unlock a previously locked video buffer.

Reimplemented from VideoDriver.

Field Documentation

◆ buffer_locked

bool VideoDriver_Cocoa::buffer_locked
protected

Video buffer was locked by the main thread.

Definition at line 64 of file cocoa_v.h.

◆ cocoaview

OTTD_CocoaView* VideoDriver_Cocoa::cocoaview

Pointer to view object.

Definition at line 32 of file cocoa_v.h.

◆ color_space

CGColorSpaceRef VideoDriver_Cocoa::color_space

Window color space.

Definition at line 33 of file cocoa_v.h.

◆ delegate

OTTD_CocoaWindowDelegate* VideoDriver_Cocoa::delegate

Window delegate object.

Definition at line 35 of file cocoa_v.h.

◆ dirty_rect

Rect VideoDriver_Cocoa::dirty_rect
protected

Region of the screen that needs redrawing.

Definition at line 63 of file cocoa_v.h.

◆ orig_res

Dimension VideoDriver_Cocoa::orig_res
private

Saved window size for non-fullscreen mode.

Definition at line 25 of file cocoa_v.h.

◆ refresh_sys_sprites

bool VideoDriver_Cocoa::refresh_sys_sprites
private

System sprites need refreshing.

Definition at line 26 of file cocoa_v.h.

◆ setup

bool VideoDriver_Cocoa::setup

Window is currently being created.

Definition at line 29 of file cocoa_v.h.

◆ window

OTTD_CocoaWindow* VideoDriver_Cocoa::window

Pointer to window object.

Definition at line 31 of file cocoa_v.h.


The documentation for this class was generated from the following file: