OpenTTD Source 20241224-master-gee860a5c8e
win32_v.cpp File Reference

Implementation of the Windows (GDI) video driver. More...

#include "../stdafx.h"
#include "../openttd.h"
#include "../error_func.h"
#include "../gfx_func.h"
#include "../os/windows/win32.h"
#include "../blitter/factory.hpp"
#include "../core/geometry_func.hpp"
#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 "../library_loader.h"
#include "win32_v.h"
#include <windows.h>
#include <imm.h>
#include <versionhelpers.h>
#include "../safeguards.h"

Go to the source code of this file.

Data Structures

struct  Win32VkMapping
 

Macros

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

Functions

static uint MapWindowsKey (uint sym)
 
static LRESULT HandleCharMsg (uint keycode, char32_t 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.
 
LRESULT CALLBACK WndProcGdi (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
 
static void RegisterWndClass ()
 
static void FindResolutions (uint8_t bpp)
 
static BOOL CALLBACK MonitorEnumProc (HMONITOR hMonitor, HDC, LPRECT, LPARAM data)
 

Variables

bool _window_maximize
 
static Dimension _bck_resolution
 
DWORD _imm_props
 
static Palette _local_palette
 Current palette to use for drawing.
 
static const Win32VkMapping _vk_mapping []
 
static const Dimension default_resolutions []
 
static FVideoDriver_Win32GDI iFVideoDriver_Win32GDI
 

Detailed Description

Implementation of the Windows (GDI) video driver.

Definition in file win32_v.cpp.

Macro Definition Documentation

◆ AM

#define AM (   x,
  y,
  z,
 
)    {x, y - x + 1, z}

Definition at line 65 of file win32_v.cpp.

◆ AS

#define AS (   x,
 
)    {x, 1, z}

Definition at line 64 of file win32_v.cpp.

◆ MAPVK_VK_TO_CHAR

#define MAPVK_VK_TO_CHAR   (2)

Definition at line 35 of file win32_v.cpp.

◆ PM_QS_INPUT

#define PM_QS_INPUT   0x20000

Definition at line 39 of file win32_v.cpp.

◆ WM_DPICHANGED

#define WM_DPICHANGED   0x02E0

Definition at line 43 of file win32_v.cpp.

Function Documentation

◆ CancelIMEComposition()

static void CancelIMEComposition ( HWND  hwnd)
static

Clear the current composition string.

Definition at line 391 of file win32_v.cpp.

References HandleTextInput().

Referenced by VideoDriver_Win32Base::EditBoxLostFocus().

◆ DrawIMECompositionString()

static bool DrawIMECompositionString ( )
static

Should we draw the composition string ourself, i.e is this a normal IME?

Definition at line 269 of file win32_v.cpp.

Referenced by HandleIMEComposition().

◆ FindResolutions()

static void FindResolutions ( uint8_t  bpp)
static

Definition at line 796 of file win32_v.cpp.

◆ HandleCharMsg()

static LRESULT HandleCharMsg ( uint  keycode,
char32_t  charcode 
)
static

Forward key presses to the window system.

Definition at line 242 of file win32_v.cpp.

References Debug, HandleKeypress(), Utf16DecodeSurrogate(), Utf16IsLeadSurrogate(), and Utf16IsTrailSurrogate().

◆ HandleIMEComposition()

static LRESULT HandleIMEComposition ( HWND  hwnd,
WPARAM  wParam,
LPARAM  lParam 
)
static

Handle WM_IME_COMPOSITION messages.

Definition at line 331 of file win32_v.cpp.

References convert_from_fs(), DrawIMECompositionString(), FS2OTTD(), HandleTextInput(), SetCompositionPos(), and Utf16IsLeadSurrogate().

◆ MapWindowsKey()

static uint MapWindowsKey ( uint  sym)
static

Definition at line 108 of file win32_v.cpp.

◆ MonitorEnumProc()

static BOOL CALLBACK MonitorEnumProc ( HMONITOR  hMonitor,
HDC  ,
LPRECT  ,
LPARAM  data 
)
static

Definition at line 937 of file win32_v.cpp.

◆ RegisterWndClass()

static void RegisterWndClass ( )
static

Definition at line 758 of file win32_v.cpp.

◆ SetCandidatePos()

◆ SetCompositionPos()

static void SetCompositionPos ( HWND  hwnd)
static

Set position of the composition window to the caret position.

Definition at line 275 of file win32_v.cpp.

References EditBoxInGlobalFocus(), Window::GetCaretPosition(), Window::left, and Window::top.

Referenced by VideoDriver_Win32Base::EditBoxLostFocus(), and HandleIMEComposition().

◆ WndProcGdi()

LRESULT CALLBACK WndProcGdi ( HWND  hwnd,
UINT  msg,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 400 of file win32_v.cpp.

Variable Documentation

◆ _bck_resolution

Dimension _bck_resolution
static

Definition at line 47 of file win32_v.cpp.

◆ _imm_props

DWORD _imm_props

Definition at line 48 of file win32_v.cpp.

◆ _local_palette

Palette _local_palette
static

Current palette to use for drawing.

Definition at line 50 of file win32_v.cpp.

Referenced by VideoDriver_Win32Base::CheckPaletteAnim(), and VideoDriver_Win32GDI::Paint().

◆ _vk_mapping

const Win32VkMapping _vk_mapping[]
static

Definition at line 67 of file win32_v.cpp.

◆ _window_maximize

bool _window_maximize

Definition at line 46 of file win32_v.cpp.

◆ 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 782 of file win32_v.cpp.

◆ iFVideoDriver_Win32GDI

FVideoDriver_Win32GDI iFVideoDriver_Win32GDI
static

Definition at line 1031 of file win32_v.cpp.