OpenTTD Source 20241224-master-gf74b0cf984
VideoDriver_Win32GDI Class Reference

The GDI video driver for windows. More...

#include <win32_v.h>

Inheritance diagram for VideoDriver_Win32GDI:
VideoDriver_Win32Base 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 AfterBlitterChange () override
 Callback invoked after the blitter was changed.
 
std::string_view GetName () const override
 Get the name of this driver.
 
- Public Member Functions inherited from VideoDriver_Win32Base
 VideoDriver_Win32Base (bool uses_hardware_acceleration=false)
 
void MakeDirty (int left, int top, int width, int height) override
 Mark a particular area dirty.
 
void MainLoop () override
 Perform the actual drawing.
 
bool ChangeResolution (int w, int h) override
 Change the resolution of the window.
 
bool ToggleFullscreen (bool fullscreen) override
 Change the full screen setting.
 
bool ClaimMousePointer () override
 
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.
 
- Public Member Functions inherited from VideoDriver
 VideoDriver (bool uses_hardware_acceleration=false)
 
virtual void ToggleVsync (bool vsync)
 Change the vsync setting.
 
virtual bool UseSystemCursor ()
 Get whether the mouse cursor is drawn by the video driver.
 
virtual void PopulateSystemSprites ()
 Populate all sprites in cache.
 
virtual void ClearSystemSprites ()
 Clear all cached sprites.
 
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.
 

Protected Member Functions

void Paint () override
 Paint the window.
 
void * GetVideoPointer () override
 Get a pointer to the video buffer.
 
bool AllocateBackingStore (int w, int h, bool force=false) override
 (Re-)create the backing store.
 
void PaletteChanged (HWND hWnd) override
 Palette of the window has changed.
 
void MakePalette ()
 
void UpdatePalette (HDC dc, uint start, uint count)
 
- Protected Member Functions inherited from VideoDriver_Win32Base
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.
 
void CheckPaletteAnim () override
 Process any pending palette animation.
 
bool PollEvent () override
 Process a single system event.
 
void Initialize ()
 
bool MakeWindow (bool full_screen, bool resize=true)
 Instantiate a new window.
 
void ClientSizeChanged (int w, int h, bool force=false)
 
virtual uint8_t GetFullscreenBpp ()
 Get screen depth to use for fullscreen mode.
 
virtual void ReleaseVideoPointer ()
 Hand video buffer back to the painting 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.
 

Protected Attributes

HBITMAP dib_sect
 System bitmap object referencing our rendering buffer.
 
HPALETTE gdi_palette
 Palette object for 8bpp blitter.
 
void * buffer_bits
 Internal rendering buffer.
 
- Protected Attributes inherited from VideoDriver_Win32Base
HWND main_wnd
 Handle to system window.
 
bool fullscreen
 Whether to use (true) fullscreen mode.
 
bool has_focus = false
 Does our window have system focus?
 
Rect dirty_rect
 Region of the screen that needs redrawing.
 
int width = 0
 Width in pixels of our display surface.
 
int height = 0
 Height in pixels of our display surface.
 
int width_org = 0
 Original monitor resolution width, before we changed it.
 
int height_org = 0
 Original monitor resolution height, before we changed it.
 
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
 

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

The GDI video driver for windows.

Definition at line 78 of file win32_v.h.

Constructor & Destructor Documentation

◆ VideoDriver_Win32GDI()

VideoDriver_Win32GDI::VideoDriver_Win32GDI ( )
inline

Definition at line 80 of file win32_v.h.

Member Function Documentation

◆ AfterBlitterChange()

bool VideoDriver_Win32GDI::AfterBlitterChange ( )
overridevirtual

Callback invoked after the blitter was changed.

Returns
True if no error.

Reimplemented from VideoDriver.

Definition at line 1096 of file win32_v.cpp.

References AllocateBackingStore(), BlitterFactory::GetCurrentBlitter(), and VideoDriver_Win32Base::MakeWindow().

◆ AllocateBackingStore()

bool VideoDriver_Win32GDI::AllocateBackingStore ( int  w,
int  h,
bool  force = false 
)
overrideprotectedvirtual

◆ GetName()

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

Get the name of this driver.

Returns
The name of the driver.

Implements Driver.

Definition at line 88 of file win32_v.h.

◆ GetVideoPointer()

void * VideoDriver_Win32GDI::GetVideoPointer ( )
inlineoverrideprotectedvirtual

Get a pointer to the video buffer.

Implements VideoDriver_Win32Base.

Definition at line 96 of file win32_v.h.

References buffer_bits.

Referenced by AllocateBackingStore().

◆ MakePalette()

void VideoDriver_Win32GDI::MakePalette ( )
protected

Definition at line 1102 of file win32_v.cpp.

◆ Paint()

◆ PaletteChanged()

void VideoDriver_Win32GDI::PaletteChanged ( HWND  hWnd)
overrideprotectedvirtual

Palette of the window has changed.

Implements VideoDriver_Win32Base.

Definition at line 1137 of file win32_v.cpp.

References gdi_palette, and VideoDriver_Win32Base::MakeDirty().

◆ Start()

std::optional< std::string_view > VideoDriver_Win32GDI::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 1033 of file win32_v.cpp.

References _cur_resolution, AllocateBackingStore(), BlitterFactory::GetCurrentBlitter(), GetDriverParamBool(), VideoDriver_Win32Base::MakeWindow(), and MarkWholeScreenDirty().

◆ Stop()

void VideoDriver_Win32GDI::Stop ( )
overridevirtual

Stop this driver.

Reimplemented from VideoDriver_Win32Base.

Definition at line 1050 of file win32_v.cpp.

References dib_sect, gdi_palette, and VideoDriver_Win32Base::Stop().

◆ UpdatePalette()

void VideoDriver_Win32GDI::UpdatePalette ( HDC  dc,
uint  start,
uint  count 
)
protected

Definition at line 1123 of file win32_v.cpp.

Field Documentation

◆ buffer_bits

void* VideoDriver_Win32GDI::buffer_bits
protected

Internal rendering buffer.

Definition at line 93 of file win32_v.h.

Referenced by AllocateBackingStore(), and GetVideoPointer().

◆ dib_sect

HBITMAP VideoDriver_Win32GDI::dib_sect
protected

System bitmap object referencing our rendering buffer.

Definition at line 91 of file win32_v.h.

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

◆ gdi_palette

HPALETTE VideoDriver_Win32GDI::gdi_palette
protected

Palette object for 8bpp blitter.

Definition at line 92 of file win32_v.h.

Referenced by Paint(), PaletteChanged(), and Stop().


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