OpenTTD Source 20260129-master-g2bb01bd0e4
VideoDriver_CocoaQuartz Class Reference
Inheritance diagram for VideoDriver_CocoaQuartz:
VideoDriver_Cocoa VideoDriver Driver

Public Member Functions

std::optional< std::string_view > Start (const StringList &param) override
 Start this driver.
 
void Stop () override
 Stop Cocoa video driver.
 
std::string_view GetName () const override
 Return driver name.
 
void AllocateBackingStore (bool force=false) override
 Resize the window.
 
- Public Member Functions inherited from VideoDriver_Cocoa
 VideoDriver_Cocoa (bool uses_hardware_acceleration=false)
 
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.
 
- 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.
 

Data Fields

CGContextRef cgcontext
 Context reference for Quartz subdriver.
 
- 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 colour_space
 Window colour space.
 
OTTD_CocoaWindowDelegatedelegate
 Window delegate object.
 

Protected Member Functions

void Paint () override
 Draw window.
 
void CheckPaletteAnim () override
 Process any pending palette animation.
 
NSView * AllocateDrawView () override
 
void * GetVideoPointer () override
 Get a pointer to the video buffer.
 
- Protected Member Functions inherited from VideoDriver_Cocoa
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 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.
 
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

void BlitIndexedToView32 (int left, int top, int right, int bottom)
 This function copies 8bpp pixels from the screen buffer in 32bpp windowed mode.
 
void UpdatePalette (uint first_colour, uint num_colours)
 Update the palette.
 

Private Attributes

int buffer_depth
 Colour depth of used frame buffer.
 
std::unique_ptr< uint8_t[]> pixel_buffer
 used for direct pixel access
 
std::unique_ptr< uint32_t[]> window_buffer
 Colour translation from palette to screen.
 
int window_width
 Current window width in pixel.
 
int window_height
 Current window height in pixel.
 
int window_pitch
 
uint32_t palette [256]
 Colour Palette.
 

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 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)
 
- 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 91 of file cocoa_v.h.

Constructor & Destructor Documentation

◆ VideoDriver_CocoaQuartz()

VideoDriver_CocoaQuartz::VideoDriver_CocoaQuartz ( )

Definition at line 572 of file cocoa_v.mm.

Member Function Documentation

◆ AllocateBackingStore()

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

◆ AllocateDrawView()

NSView * VideoDriver_CocoaQuartz::AllocateDrawView ( )
overrideprotectedvirtual

Implements VideoDriver_Cocoa.

Definition at line 624 of file cocoa_v.mm.

◆ BlitIndexedToView32()

void VideoDriver_CocoaQuartz::BlitIndexedToView32 ( int  left,
int  top,
int  right,
int  bottom 
)
private

This function copies 8bpp pixels from the screen buffer in 32bpp windowed mode.

Parameters
leftThe x coord for the left edge of the box to blit.
topThe y coord for the top edge of the box to blit.
rightThe x coord for the right edge of the box to blit.
bottomThe y coord for the bottom edge of the box to blit.

Definition at line 692 of file cocoa_v.mm.

References palette, pixel_buffer, window_buffer, and window_width.

Referenced by Paint().

◆ CheckPaletteAnim()

void VideoDriver_CocoaQuartz::CheckPaletteAnim ( )
overrideprotectedvirtual

◆ GetName()

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

Return driver name.

Implements Driver.

Definition at line 115 of file cocoa_v.h.

◆ GetVideoPointer()

void * VideoDriver_CocoaQuartz::GetVideoPointer ( )
inlineoverrideprotectedvirtual

Get a pointer to the video buffer.

Implements VideoDriver_Cocoa.

Definition at line 125 of file cocoa_v.h.

Referenced by AllocateBackingStore().

◆ Paint()

void VideoDriver_CocoaQuartz::Paint ( )
overrideprotectedvirtual

◆ Start()

std::optional< std::string_view > VideoDriver_CocoaQuartz::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.

Definition at line 584 of file cocoa_v.mm.

References _cur_resolution, AllocateBackingStore(), VideoDriver_Cocoa::GameSizeChanged(), BlitterFactory::GetCurrentBlitter(), GetDriverParamBool(), Blitter::GetScreenDepth(), VideoDriver_Cocoa::Initialize(), VideoDriver_Cocoa::MakeWindow(), Stop(), VideoDriver_Cocoa::ToggleFullscreen(), and VideoDriver_Cocoa::UpdateVideoModes().

◆ Stop()

void VideoDriver_CocoaQuartz::Stop ( )
overridevirtual

Stop Cocoa video driver.

Reimplemented from VideoDriver_Cocoa.

Definition at line 614 of file cocoa_v.mm.

References cgcontext, pixel_buffer, VideoDriver_Cocoa::Stop(), and window_buffer.

Referenced by Start().

◆ UpdatePalette()

void VideoDriver_CocoaQuartz::UpdatePalette ( uint  first_colour,
uint  num_colours 
)
private

Update the palette.

Parameters
first_colourIndex of first colour to update.
num_coloursHow many colours to update, should be greater than 0.

Definition at line 712 of file cocoa_v.mm.

References _local_palette, buffer_depth, VideoDriver_Cocoa::MakeDirty(), Palette::palette, and palette.

Referenced by AllocateBackingStore(), and CheckPaletteAnim().

Field Documentation

◆ buffer_depth

int VideoDriver_CocoaQuartz::buffer_depth
private

Colour depth of used frame buffer.

Definition at line 93 of file cocoa_v.h.

Referenced by AllocateBackingStore(), Paint(), and UpdatePalette().

◆ cgcontext

CGContextRef VideoDriver_CocoaQuartz::cgcontext

Context reference for Quartz subdriver.

Definition at line 107 of file cocoa_v.h.

Referenced by AllocateBackingStore(), and Stop().

◆ palette

uint32_t VideoDriver_CocoaQuartz::palette[256]
private

Colour Palette.

Definition at line 101 of file cocoa_v.h.

Referenced by BlitIndexedToView32(), and UpdatePalette().

◆ pixel_buffer

std::unique_ptr<uint8_t[]> VideoDriver_CocoaQuartz::pixel_buffer
private

used for direct pixel access

Definition at line 94 of file cocoa_v.h.

Referenced by AllocateBackingStore(), BlitIndexedToView32(), and Stop().

◆ window_buffer

std::unique_ptr<uint32_t[]> VideoDriver_CocoaQuartz::window_buffer
private

Colour translation from palette to screen.

Definition at line 95 of file cocoa_v.h.

Referenced by AllocateBackingStore(), BlitIndexedToView32(), and Stop().

◆ window_height

int VideoDriver_CocoaQuartz::window_height
private

Current window height in pixel.

Definition at line 98 of file cocoa_v.h.

Referenced by AllocateBackingStore(), and Paint().

◆ window_pitch

int VideoDriver_CocoaQuartz::window_pitch
private

Definition at line 99 of file cocoa_v.h.

◆ window_width

int VideoDriver_CocoaQuartz::window_width
private

Current window width in pixel.

Definition at line 97 of file cocoa_v.h.

Referenced by AllocateBackingStore(), and BlitIndexedToView32().


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