OpenTTD Source  1.11.0-beta1
win32_v.cpp File Reference
#include "../stdafx.h"
#include "../openttd.h"
#include "../gfx_func.h"
#include "../os/windows/win32.h"
#include "../rev.h"
#include "../blitter/factory.hpp"
#include "../network/network.h"
#include "../core/math_func.hpp"
#include "../core/random_func.hpp"
#include "../texteff.hpp"
#include "../thread.h"
#include "../progress.h"
#include "../window_gui.h"
#include "../window_func.h"
#include "../framerate_type.h"
#include "win32_v.h"
#include <windows.h>
#include <imm.h>
#include <mutex>
#include <condition_variable>
#include "../safeguards.h"

Go to the source code of this file.

Data Structures

struct  VkMapping
 

Macros

#define MAPVK_VK_TO_CHAR   (2)
 
#define PM_QS_INPUT   0x20000
 
#define AS(x, z)   {x, 0, z}
 
#define AM(x, y, z, w)   {x, y - x, z}
 
#define WM_MOUSEWHEEL   0x020A
 
#define GET_WHEEL_DELTA_WPARAM(wparam)   ((short)HIWORD(wparam))
 

Functions

static void MakePalette ()
 
static void UpdatePalette (HDC dc, uint start, uint count)
 
static uint MapWindowsKey (uint sym)
 
static bool AllocateDibSection (int w, int h, bool force=false)
 
static void ClientSizeChanged (int w, int h)
 
static void PaintWindow (HDC dc)
 Do palette animation and blit to the window.
 
static void PaintWindowThread ()
 
static LRESULT HandleCharMsg (uint keycode, WChar charcode)
 Forward key presses to the window system.
 
static bool DrawIMECompositionString ()
 Should we draw the composition string ourself, i.e is this a normal IME?
 
static void SetCompositionPos (HWND hwnd)
 Set position of the composition window to the caret position.
 
static void SetCandidatePos (HWND hwnd)
 Set the position of the candidate window.
 
static LRESULT HandleIMEComposition (HWND hwnd, WPARAM wParam, LPARAM lParam)
 Handle WM_IME_COMPOSITION messages.
 
static void CancelIMEComposition (HWND hwnd)
 Clear the current composition string.
 
static LRESULT CALLBACK WndProcGdi (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
 
static void RegisterWndClass ()
 
static void FindResolutions ()
 
static void CheckPaletteAnim ()
 

Variables

struct {
   HWND   main_wnd
 Handle to system window.
 
   HBITMAP   dib_sect
 System bitmap object referencing our rendering buffer.
 
   void *   buffer_bits
 Internal rendering buffer.
 
   HPALETTE   gdi_palette
 Palette object for 8bpp blitter.
 
   RECT   update_rect
 Current dirty rect.
 
   int   width
 Width in pixels of our display surface.
 
   int   height
 Height in pixels of our display surface.
 
   int   width_org
 Original monitor resolution width, before we changed it.
 
   int   height_org
 Original monitor resolution height, before we changed it.
 
   bool   fullscreen
 Whether to use (true) fullscreen mode.
 
   bool   has_focus
 Does our window have system focus?
 
   bool   running
 Is the main loop running?
 
_wnd
 
bool _force_full_redraw
 
bool _window_maximize
 
uint _display_hz
 
static Dimension _bck_resolution
 
DWORD _imm_props
 
static bool _draw_threaded
 Whether the drawing is/may be done in a separate thread.
 
static std::recursive_mutex * _draw_mutex = nullptr
 Mutex to keep the access to the shared memory controlled.
 
static std::condition_variable_any * _draw_signal = nullptr
 Signal to draw the next frame.
 
static volatile bool _draw_continue
 Should we keep continue drawing?
 
static Palette _local_palette
 Local copy of the palette for use in the drawing thread.
 
static const VkMapping _vk_mapping []
 
static const Dimension default_resolutions []
 
static FVideoDriver_Win32 iFVideoDriver_Win32
 

Detailed Description

Implementation of the Windows (GDI) video driver.

Definition in file win32_v.cpp.

Variable Documentation

◆ default_resolutions

const Dimension default_resolutions[]
static
Initial value:
= {
{ 640, 480 },
{ 800, 600 },
{ 1024, 768 },
{ 1152, 864 },
{ 1280, 800 },
{ 1280, 960 },
{ 1280, 1024 },
{ 1400, 1050 },
{ 1600, 1200 },
{ 1680, 1050 },
{ 1920, 1200 }
}

Definition at line 1035 of file win32_v.cpp.