OpenTTD Source 20241224-master-gf74b0cf984
VideoDriver_CocoaOpenGL Class Reference
Inheritance diagram for VideoDriver_CocoaOpenGL:
VideoDriver_Cocoa VideoDriver Driver

Public Member Functions

std::optional< std::string_view > Start (const StringList &param) override
 Start this driver.
 
void Stop () override
 Stop this driver.
 
bool HasEfficient8Bpp () const override
 Has this video driver an efficient code path for palette animated 8-bpp sprites?
 
bool UseSystemCursor () override
 Get whether the mouse cursor is drawn by the video driver.
 
void ClearSystemSprites () override
 Clear all cached sprites.
 
void PopulateSystemSprites () override
 Populate all sprites in cache.
 
bool HasAnimBuffer () override
 Does this video driver support a separate animation buffer in addition to the colour buffer?
 
uint8_t * GetAnimBuffer () override
 Get a pointer to the animation buffer of the video back-end.
 
std::string_view GetName () const override
 Return driver name.
 
std::string_view GetInfoString () const override
 
void AllocateBackingStore (bool force=false) override
 
- Public Member Functions inherited from VideoDriver_Cocoa
 VideoDriver_Cocoa (bool uses_hardware_acceleration=false)
 
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 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 ()
 
- 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 HasGUI () const
 Whether the driver has a graphical user interface with the end user.
 
virtual void EditBoxGainedFocus ()
 An edit box gained the input focus.
 
virtual int GetSuggestedUIScale ()
 Get a suggested default GUI scale taking screen DPI into account.
 
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.
 

Protected Member Functions

void Paint () override
 Paint the window.
 
void * GetVideoPointer () override
 Get a pointer to the video buffer.
 
void ReleaseVideoPointer () override
 Hand video buffer back to the drawing backend.
 
NSView * AllocateDrawView () override
 
- Protected Member Functions inherited from VideoDriver_Cocoa
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)
 
- Protected Member Functions inherited from VideoDriver
void UpdateAutoResolution ()
 Apply resolution auto-detection and clamp to sensible defaults.
 
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.
 

Private Member Functions

std::optional< std::string_view > AllocateContext (bool allow_software)
 

Private Attributes

CGLContextObj gl_context
 
uint8_t * anim_buffer
 Animation buffer from OpenGL back-end.
 
std::string driver_info
 Information string about selected driver.
 

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.
 
- Data Fields inherited from VideoDriver_Cocoa
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.
 
- Static Protected Member Functions inherited from VideoDriver
static void GameThreadThunk (VideoDriver *drv)
 
- Protected Attributes inherited from VideoDriver_Cocoa
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
 

Detailed Description

Definition at line 17 of file cocoa_ogl.h.

Constructor & Destructor Documentation

◆ VideoDriver_CocoaOpenGL()

VideoDriver_CocoaOpenGL::VideoDriver_CocoaOpenGL ( )
inline

Definition at line 26 of file cocoa_ogl.h.

Member Function Documentation

◆ AllocateBackingStore()

void VideoDriver_CocoaOpenGL::AllocateBackingStore ( bool  force = false)
overridevirtual

Implements VideoDriver_Cocoa.

◆ AllocateDrawView()

NSView * VideoDriver_CocoaOpenGL::AllocateDrawView ( )
overrideprotectedvirtual

Implements VideoDriver_Cocoa.

◆ ClearSystemSprites()

void VideoDriver_CocoaOpenGL::ClearSystemSprites ( )
overridevirtual

Clear all cached sprites.

Reimplemented from VideoDriver_Cocoa.

◆ GetAnimBuffer()

uint8_t * VideoDriver_CocoaOpenGL::GetAnimBuffer ( )
inlineoverridevirtual

Get a pointer to the animation buffer of the video back-end.

Returns
Pointer to the buffer or nullptr if no animation buffer is supported.

Reimplemented from VideoDriver.

Definition at line 40 of file cocoa_ogl.h.

References anim_buffer.

◆ GetInfoString()

std::string_view VideoDriver_CocoaOpenGL::GetInfoString ( ) const
inlineoverridevirtual

Reimplemented from VideoDriver.

Definition at line 45 of file cocoa_ogl.h.

◆ GetName()

std::string_view VideoDriver_CocoaOpenGL::GetName ( ) const
inlineoverridevirtual

Return driver name.

Implements Driver.

Definition at line 43 of file cocoa_ogl.h.

◆ GetVideoPointer()

void * VideoDriver_CocoaOpenGL::GetVideoPointer ( )
overrideprotectedvirtual

Get a pointer to the video buffer.

Implements VideoDriver_Cocoa.

◆ HasAnimBuffer()

bool VideoDriver_CocoaOpenGL::HasAnimBuffer ( )
inlineoverridevirtual

Does this video driver support a separate animation buffer in addition to the colour buffer?

Returns
True if a separate animation buffer is supported.

Reimplemented from VideoDriver.

Definition at line 39 of file cocoa_ogl.h.

◆ HasEfficient8Bpp()

bool VideoDriver_CocoaOpenGL::HasEfficient8Bpp ( ) const
inlineoverridevirtual

Has this video driver an efficient code path for palette animated 8-bpp sprites?

Returns
True if the driver has an efficient code path for 8-bpp.

Reimplemented from VideoDriver.

Definition at line 31 of file cocoa_ogl.h.

◆ Paint()

void VideoDriver_CocoaOpenGL::Paint ( )
overrideprotectedvirtual

Paint the window.

Reimplemented from VideoDriver.

◆ PopulateSystemSprites()

void VideoDriver_CocoaOpenGL::PopulateSystemSprites ( )
overridevirtual

Populate all sprites in cache.

Reimplemented from VideoDriver_Cocoa.

◆ ReleaseVideoPointer()

void VideoDriver_CocoaOpenGL::ReleaseVideoPointer ( )
overrideprotectedvirtual

Hand video buffer back to the drawing backend.

Reimplemented from VideoDriver_Cocoa.

◆ Start()

std::optional< std::string_view > VideoDriver_CocoaOpenGL::Start ( const StringList parm)
overridevirtual

Start this driver.

Parameters
parmParameters passed to the driver.
Returns
std::nullopt if everything went okay, otherwise an error message.

Implements Driver.

◆ Stop()

void VideoDriver_CocoaOpenGL::Stop ( )
overridevirtual

Stop this driver.

Reimplemented from VideoDriver_Cocoa.

◆ UseSystemCursor()

bool VideoDriver_CocoaOpenGL::UseSystemCursor ( )
inlineoverridevirtual

Get whether the mouse cursor is drawn by the video driver.

Returns
True if cursor drawing is done by the video driver.

Reimplemented from VideoDriver.

Definition at line 33 of file cocoa_ogl.h.

Field Documentation

◆ anim_buffer

uint8_t* VideoDriver_CocoaOpenGL::anim_buffer
private

Animation buffer from OpenGL back-end.

Definition at line 20 of file cocoa_ogl.h.

Referenced by GetAnimBuffer().

◆ driver_info

std::string VideoDriver_CocoaOpenGL::driver_info
private

Information string about selected driver.

Definition at line 21 of file cocoa_ogl.h.

◆ gl_context

CGLContextObj VideoDriver_CocoaOpenGL::gl_context
private

Definition at line 18 of file cocoa_ogl.h.


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