OpenTTD Source 20241224-master-gf74b0cf984
|
The GDI video driver for windows. More...
#include <win32_v.h>
Public Member Functions | |
std::optional< std::string_view > | Start (const StringList ¶m) 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 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) |
|
overridevirtual |
Callback invoked after the blitter was changed.
Reimplemented from VideoDriver.
Definition at line 1096 of file win32_v.cpp.
References AllocateBackingStore(), BlitterFactory::GetCurrentBlitter(), and VideoDriver_Win32Base::MakeWindow().
|
overrideprotectedvirtual |
(Re-)create the backing store.
Implements VideoDriver_Win32Base.
Definition at line 1058 of file win32_v.cpp.
References Align(), buffer_bits, dib_sect, BlitterFactory::GetCurrentBlitter(), Blitter::GetScreenDepth(), GetVideoPointer(), VideoDriver_Win32Base::height, and VideoDriver_Win32Base::width.
Referenced by AfterBlitterChange(), and Start().
|
inlineoverridevirtual |
|
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().
|
protected |
Definition at line 1102 of file win32_v.cpp.
|
overrideprotectedvirtual |
Paint the window.
Reimplemented from VideoDriver.
Definition at line 1148 of file win32_v.cpp.
References _local_palette, Palette::count_dirty, dib_sect, VideoDriver_Win32Base::dirty_rect, Palette::first_dirty, gdi_palette, BlitterFactory::GetCurrentBlitter(), VideoDriver_Win32Base::height, IsEmptyRect(), VideoDriver_Win32Base::main_wnd, Blitter::PALETTE_ANIMATION_BLITTER, Blitter::PALETTE_ANIMATION_NONE, Blitter::PALETTE_ANIMATION_VIDEO_BACKEND, Blitter::PaletteAnimate(), PFE_VIDEO, Blitter::UsePaletteAnimation(), and VideoDriver_Win32Base::width.
|
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().
|
overridevirtual |
Start this driver.
parm | Parameters passed to the driver. |
Implements Driver.
Definition at line 1033 of file win32_v.cpp.
References _cur_resolution, AllocateBackingStore(), BlitterFactory::GetCurrentBlitter(), GetDriverParamBool(), VideoDriver_Win32Base::MakeWindow(), and MarkWholeScreenDirty().
|
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().
|
protected |
Definition at line 1123 of file win32_v.cpp.
|
protected |
Internal rendering buffer.
Definition at line 93 of file win32_v.h.
Referenced by AllocateBackingStore(), and GetVideoPointer().
|
protected |
System bitmap object referencing our rendering buffer.
Definition at line 91 of file win32_v.h.
Referenced by AllocateBackingStore(), Paint(), and Stop().
|
protected |