|
OpenTTD Source 20260129-master-g2bb01bd0e4
|
Public Member Functions | |
| std::optional< std::string_view > | Start (const StringList ¶m) 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_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 | |
| 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 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) |
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 |
| VideoDriver_CocoaQuartz::VideoDriver_CocoaQuartz | ( | ) |
Definition at line 572 of file cocoa_v.mm.
|
overridevirtual |
Resize the window.
| force | If true window resizing will be forced. |
Implements VideoDriver_Cocoa.
Definition at line 633 of file cocoa_v.mm.
References Align(), buffer_depth, cgcontext, ClearWindowBuffer(), VideoDriver_Cocoa::cocoaview, VideoDriver_Cocoa::GameSizeChanged(), BlitterFactory::GetCurrentBlitter(), Blitter::GetScreenDepth(), GetVideoPointer(), VideoDriver_Cocoa::MakeDirty(), pixel_buffer, VideoDriver_Cocoa::setup, UpdatePalette(), VideoDriver_Cocoa::window, window_buffer, window_height, and window_width.
Referenced by Start().
|
overrideprotectedvirtual |
Implements VideoDriver_Cocoa.
Definition at line 624 of file cocoa_v.mm.
|
private |
This function copies 8bpp pixels from the screen buffer in 32bpp windowed mode.
| left | The x coord for the left edge of the box to blit. |
| top | The y coord for the top edge of the box to blit. |
| right | The x coord for the right edge of the box to blit. |
| bottom | The 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().
|
overrideprotectedvirtual |
Process any pending palette animation.
Reimplemented from VideoDriver.
Definition at line 727 of file cocoa_v.mm.
References _local_palette, Blitter::Blitter, CopyPalette(), Palette::count_dirty, Palette::first_dirty, BlitterFactory::GetCurrentBlitter(), Blitter::None, Blitter::PaletteAnimate(), UpdatePalette(), Blitter::UsePaletteAnimation(), and Blitter::VideoBackend.
|
inlineoverridevirtual |
|
inlineoverrideprotectedvirtual |
Get a pointer to the video buffer.
Implements VideoDriver_Cocoa.
Definition at line 125 of file cocoa_v.h.
Referenced by AllocateBackingStore().
|
overrideprotectedvirtual |
Draw window.
Reimplemented from VideoDriver.
Definition at line 751 of file cocoa_v.mm.
References BlitIndexedToView32(), buffer_depth, VideoDriver_Cocoa::dirty_rect, IsEmptyRect(), PFE_VIDEO, VideoDriver_Cocoa::window, and window_height.
|
overridevirtual |
Start this driver.
| parm | Parameters passed to the driver. |
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().
|
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().
|
private |
Update the palette.
| first_colour | Index of first colour to update. |
| num_colours | How 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().
|
private |
Colour depth of used frame buffer.
Definition at line 93 of file cocoa_v.h.
Referenced by AllocateBackingStore(), Paint(), and UpdatePalette().
| CGContextRef VideoDriver_CocoaQuartz::cgcontext |
Context reference for Quartz subdriver.
Definition at line 107 of file cocoa_v.h.
Referenced by AllocateBackingStore(), and Stop().
|
private |
Colour Palette.
Definition at line 101 of file cocoa_v.h.
Referenced by BlitIndexedToView32(), and UpdatePalette().
|
private |
used for direct pixel access
Definition at line 94 of file cocoa_v.h.
Referenced by AllocateBackingStore(), BlitIndexedToView32(), and Stop().
|
private |
Colour translation from palette to screen.
Definition at line 95 of file cocoa_v.h.
Referenced by AllocateBackingStore(), BlitIndexedToView32(), and Stop().
|
private |
Current window height in pixel.
Definition at line 98 of file cocoa_v.h.
Referenced by AllocateBackingStore(), and Paint().
|
private |
Current window width in pixel.
Definition at line 97 of file cocoa_v.h.
Referenced by AllocateBackingStore(), and BlitIndexedToView32().