|
OpenTTD Source
1.11.0-beta2
|
The base of all video drivers. More...
#include <video_driver.hpp>
Data Structures | |
| struct | VideoBufferLocker |
| Helper struct to ensure the video buffer is locked and ready for drawing. More... | |
Public Member Functions | |
| virtual void | MakeDirty (int left, int top, int width, int height)=0 |
| Mark a particular area dirty. More... | |
| virtual void | MainLoop ()=0 |
| Perform the actual drawing. | |
| virtual bool | ChangeResolution (int w, int h)=0 |
| Change the resolution of the window. More... | |
| virtual bool | ToggleFullscreen (bool fullscreen)=0 |
| Change the full screen setting. More... | |
| virtual bool | AfterBlitterChange () |
| Callback invoked after the blitter was changed. More... | |
| virtual void | AcquireBlitterLock () |
| Acquire any lock(s) required to be held when changing blitters. More... | |
| virtual void | ReleaseBlitterLock () |
| Release any lock(s) required to be held when changing blitters. More... | |
| virtual bool | ClaimMousePointer () |
| virtual bool | UseSystemCursor () |
| Get whether the mouse cursor is drawn by the video driver. More... | |
| virtual void | ClearSystemSprites () |
| Clear all cached sprites. | |
| virtual bool | HasGUI () const |
| Whether the driver has a graphical user interface with the end user. More... | |
| virtual bool | HasEfficient8Bpp () const |
| Has this video driver an efficient code path for palette animated 8-bpp sprites? More... | |
| virtual bool | HasAnimBuffer () |
| Does this video driver support a separate animation buffer in addition to the colour buffer? More... | |
| virtual uint8 * | GetAnimBuffer () |
| Get a pointer to the animation buffer of the video back-end. More... | |
| virtual void | EditBoxLostFocus () |
| An edit box lost the input focus. More... | |
| virtual void | EditBoxGainedFocus () |
| An edit box gained the input focus. | |
| virtual ZoomLevel | GetSuggestedUIZoom () |
| Get a suggested default GUI zoom taking screen DPI into account. | |
Public Member Functions inherited from Driver | |
| virtual const char * | Start (const StringList &parm)=0 |
| Start this driver. More... | |
| virtual void | Stop ()=0 |
| Stop this driver. | |
| virtual const char * | GetName () const =0 |
| Get the name of this driver. More... | |
Static Public Member Functions | |
| static VideoDriver * | GetInstance () |
| Get the currently active instance of the video driver. | |
Protected Member Functions | |
| virtual Dimension | GetScreenSize () const |
| Get the resolution of the main screen. | |
| virtual float | GetDPIScale () |
| Get DPI scaling factor of the screen OTTD is displayed on. More... | |
| void | UpdateAutoResolution () |
| Apply resolution auto-detection and clamp to sensible defaults. | |
| virtual void | InputLoop () |
| Handle input logic, is CTRL pressed, should we fast-forward, etc. | |
| virtual bool | LockVideoBuffer () |
| Make sure the video buffer is ready for drawing. More... | |
| virtual void | UnlockVideoBuffer () |
| Unlock a previously locked video buffer. | |
| virtual void | Paint () |
| Paint the window. | |
| virtual void | PaintThread () |
| Thread function for threaded drawing. | |
| virtual void | CheckPaletteAnim () |
| Process any pending palette animation. | |
| virtual bool | PollEvent () |
| Process a single system event. More... | |
| bool | Tick () |
| Run the game for a single tick, processing boththe game-tick and draw-tick. More... | |
| void | SleepTillNextTick () |
| Sleep till the next tick is about to happen. | |
| std::chrono::steady_clock::duration | GetGameInterval () |
| std::chrono::steady_clock::duration | GetDrawInterval () |
Protected Attributes | |
| 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. | |
Private Attributes | |
| const uint | DEFAULT_WINDOW_WIDTH = 640u |
| Default window width. | |
| const uint | DEFAULT_WINDOW_HEIGHT = 480u |
| Default window height. | |
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... | |
The base of all video drivers.
Definition at line 28 of file video_driver.hpp.
|
inlinevirtual |
Acquire any lock(s) required to be held when changing blitters.
These lock(s) may not be acquired recursively.
Reimplemented in VideoDriver_SDL_Base, VideoDriver_SDL, and VideoDriver_Win32Base.
Definition at line 76 of file video_driver.hpp.
|
inlinevirtual |
Callback invoked after the blitter was changed.
This may only be called between AcquireBlitterLock and ReleaseBlitterLock.
Reimplemented in VideoDriver_Win32GDI, VideoDriver_Cocoa, VideoDriver_SDL_Base, VideoDriver_Allegro, and VideoDriver_SDL.
Definition at line 67 of file video_driver.hpp.
|
pure virtual |
Change the resolution of the window.
| w | The new width. |
| h | The new height. |
Implemented in VideoDriver_Cocoa, VideoDriver_SDL_Base, VideoDriver_Null, VideoDriver_Win32Base, VideoDriver_Allegro, VideoDriver_Dedicated, and VideoDriver_SDL.
|
inlinevirtual |
An edit box lost the input focus.
Abort character compositing if necessary.
Reimplemented in VideoDriver_Cocoa, VideoDriver_SDL_Base, and VideoDriver_Win32Base.
Definition at line 146 of file video_driver.hpp.
Referenced by OskWindow::OnFocusLost(), IConsoleWindow::OnFocusLost(), Window::OnFocusLost(), Window::SetFocusedWidget(), and Window::UnfocusFocusedWidget().
|
inlinevirtual |
Get a pointer to the animation buffer of the video back-end.
Reimplemented in VideoDriver_CocoaOpenGL, and VideoDriver_SDL_OpenGL.
Definition at line 138 of file video_driver.hpp.
Referenced by Blitter_40bppAnim::CopyImageToBuffer(), Blitter_40bppAnim::Draw(), and Blitter_40bppAnim::DrawColourMappingRect().
|
inlineprotectedvirtual |
Get DPI scaling factor of the screen OTTD is displayed on.
Reimplemented in VideoDriver_Cocoa, and VideoDriver_Win32Base.
Definition at line 203 of file video_driver.hpp.
Referenced by GetSuggestedUIZoom().
|
inlinevirtual |
Does this video driver support a separate animation buffer in addition to the colour buffer?
Reimplemented in VideoDriver_CocoaOpenGL, and VideoDriver_SDL_OpenGL.
Definition at line 129 of file video_driver.hpp.
Referenced by FBlitter_40bppAnim::IsUsable().
|
inlinevirtual |
Has this video driver an efficient code path for palette animated 8-bpp sprites?
Reimplemented in VideoDriver_CocoaOpenGL, and VideoDriver_SDL_OpenGL.
Definition at line 120 of file video_driver.hpp.
|
inlinevirtual |
Whether the driver has a graphical user interface with the end user.
Or in other words, whether we should spawn a thread for world generation and NewGRF scanning so the graphical updates can keep coming. Otherwise progress has to be shown on the console, which uses by definition another thread/process for display purposes.
Reimplemented in VideoDriver_Null, and VideoDriver_Dedicated.
Definition at line 111 of file video_driver.hpp.
|
inlineprotectedvirtual |
Make sure the video buffer is ready for drawing.
Reimplemented in VideoDriver_Cocoa, VideoDriver_SDL_Base, VideoDriver_Win32Base, and VideoDriver_SDL.
Definition at line 229 of file video_driver.hpp.
Referenced by SleepTillNextTick().
|
pure virtual |
Mark a particular area dirty.
| left | The left most line of the dirty area. |
| top | The top most line of the dirty area. |
| width | The width of the dirty area. |
| height | The height of the dirty area. |
Implemented in VideoDriver_Cocoa, VideoDriver_SDL_Base, VideoDriver_Null, VideoDriver_Win32Base, VideoDriver_Allegro, VideoDriver_Dedicated, and VideoDriver_SDL.
|
inlineprotectedvirtual |
Process a single system event.
Reimplemented in VideoDriver_Cocoa, VideoDriver_SDL_Base, VideoDriver_Win32Base, VideoDriver_SDL, and VideoDriver_Allegro.
Definition at line 257 of file video_driver.hpp.
|
inlinevirtual |
Release any lock(s) required to be held when changing blitters.
These lock(s) may not be acquired recursively.
Reimplemented in VideoDriver_SDL_Base, VideoDriver_SDL, and VideoDriver_Win32Base.
Definition at line 82 of file video_driver.hpp.
|
protected |
Run the game for a single tick, processing boththe game-tick and draw-tick.
Definition at line 20 of file video_driver.cpp.
References UnlockVideoBuffer().
|
pure virtual |
Change the full screen setting.
| fullscreen | The new setting. |
Implemented in VideoDriver_Cocoa, VideoDriver_SDL_Base, VideoDriver_Null, VideoDriver_Win32Base, VideoDriver_Allegro, VideoDriver_Dedicated, and VideoDriver_SDL.
|
inlinevirtual |
Get whether the mouse cursor is drawn by the video driver.
Reimplemented in VideoDriver_CocoaOpenGL, and VideoDriver_SDL_OpenGL.
Definition at line 93 of file video_driver.hpp.