|
OpenTTD Source
1.11.0-beta2
|
Base class for Windows video drivers. More...
#include <win32_v.h>
Public Member Functions | |
| void | Stop () override |
| Stop this driver. | |
| void | MakeDirty (int left, int top, int width, int height) override |
| Mark a particular area dirty. More... | |
| void | MainLoop () override |
| Perform the actual drawing. | |
| bool | ChangeResolution (int w, int h) override |
| Change the resolution of the window. More... | |
| bool | ToggleFullscreen (bool fullscreen) override |
| Change the full screen setting. More... | |
| void | AcquireBlitterLock () override |
| Acquire any lock(s) required to be held when changing blitters. More... | |
| void | ReleaseBlitterLock () override |
| Release any lock(s) required to be held when changing blitters. More... | |
| bool | ClaimMousePointer () override |
| void | EditBoxLostFocus () override |
| An edit box lost the input focus. More... | |
Public Member Functions inherited from VideoDriver | |
| virtual bool | AfterBlitterChange () |
| Callback invoked after the blitter was changed. More... | |
| 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 | 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 const char * | GetName () const =0 |
| Get the name of this driver. More... | |
Protected Member Functions | |
| 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. More... | |
| 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. More... | |
| 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. More... | |
| void | Initialize () |
| bool | MakeWindow (bool full_screen) |
| Instantiate a new window. More... | |
| void | ClientSizeChanged (int w, int h, bool force=false) |
| virtual uint8 | GetFullscreenBpp () |
| Get screen depth to use for fullscreen mode. More... | |
| virtual bool | AllocateBackingStore (int w, int h, bool force=false)=0 |
| (Re-)create the backing store. | |
| virtual void * | GetVideoPointer ()=0 |
| Get a pointer to the video buffer. | |
| virtual void | ReleaseVideoPointer () |
| Hand video buffer back to the painting backend. | |
| virtual void | PaletteChanged (HWND hWnd)=0 |
| Palette of the window has changed. | |
Protected Member Functions inherited from VideoDriver | |
| void | UpdateAutoResolution () |
| Apply resolution auto-detection and clamp to sensible defaults. | |
| virtual void | Paint () |
| Paint the window. | |
| virtual void | PaintThread () |
| Thread function for threaded drawing. | |
| 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 | |
| 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 | draw_threaded |
| Whether the drawing is/may be done in a separate thread. | |
| bool | buffer_locked |
| Video buffer was locked by the main thread. | |
| volatile bool | draw_continue |
| Should we keep continue drawing? | |
| std::recursive_mutex * | draw_mutex |
| Mutex to keep the access to the shared memory controlled. | |
| std::condition_variable_any * | draw_signal |
| Signal to draw the next frame. | |
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. | |
Static Private Member Functions | |
| static void | PaintThreadThunk (VideoDriver_Win32Base *drv) |
Private Attributes | |
| std::unique_lock< std::recursive_mutex > | draw_lock |
Friends | |
| LRESULT CALLBACK | WndProcGdi (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) |
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. | |
|
overridevirtual |
Acquire any lock(s) required to be held when changing blitters.
These lock(s) may not be acquired recursively.
Reimplemented from VideoDriver.
Definition at line 971 of file win32_v.cpp.
References draw_mutex.
|
overridevirtual |
Change the resolution of the window.
| w | The new width. |
| h | The new height. |
Implements VideoDriver.
Definition at line 950 of file win32_v.cpp.
References draw_mutex, and lock.
|
overridevirtual |
An edit box lost the input focus.
Abort character compositing if necessary.
Reimplemented from VideoDriver.
Definition at line 981 of file win32_v.cpp.
References CancelIMEComposition(), draw_mutex, lock, main_wnd, SetCandidatePos(), and SetCompositionPos().
|
overrideprotectedvirtual |
Get DPI scaling factor of the screen OTTD is displayed on.
Reimplemented from VideoDriver.
Definition at line 996 of file win32_v.cpp.
|
protectedvirtual |
Get screen depth to use for fullscreen mode.
Colour depth to use for fullscreen display modes.
Definition at line 122 of file win32_v.cpp.
|
overrideprotectedvirtual |
Make sure the video buffer is ready for drawing.
Reimplemented from VideoDriver.
Definition at line 1036 of file win32_v.cpp.
References buffer_locked, and draw_threaded.
|
overridevirtual |
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. |
Implements VideoDriver.
Definition at line 811 of file win32_v.cpp.
References BoundingRect(), dirty_rect, height, and width.
Referenced by CheckPaletteAnim(), and VideoDriver_Win32GDI::PaletteChanged().
|
protected |
Instantiate a new window.
| full_screen | Whether to make a full screen window or not. |
Definition at line 133 of file win32_v.cpp.
Referenced by VideoDriver_Win32GDI::Start(), and ToggleFullscreen().
|
overrideprotectedvirtual |
Process a single system event.
Reimplemented from VideoDriver.
Definition at line 854 of file win32_v.cpp.
References EditBoxInGlobalFocus().
|
overridevirtual |
Release any lock(s) required to be held when changing blitters.
These lock(s) may not be acquired recursively.
Reimplemented from VideoDriver.
Definition at line 976 of file win32_v.cpp.
References draw_mutex.
|
overridevirtual |
Change the full screen setting.
| fullscreen | The new setting. |
Implements VideoDriver.
Definition at line 963 of file win32_v.cpp.
References draw_mutex, lock, and MakeWindow().