OpenTTD
Data Structures | Macros | Functions | Variables
win32_v.cpp File Reference

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

#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/thread.h"
#include "../progress.h"
#include "../window_gui.h"
#include "../window_func.h"
#include "win32_v.h"
#include <windows.h>
#include <imm.h>
#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_MOUSELEAVE   0x02A3
 
#define TID_POLLMOUSE   1
 
#define MOUSE_POLL_DELAY   75
 
#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 CALLBACK TrackMouseTimerProc (HWND hwnd, UINT msg, UINT event, DWORD time)
 
static void PaintWindow (HDC dc)
 Do palette animation and blit to the window. More...
 
static void PaintWindowThread (void *)
 
static LRESULT HandleCharMsg (uint keycode, WChar charcode)
 Forward key presses to the window system. More...
 
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. More...
 
static void SetCandidatePos (HWND hwnd)
 Set the position of the candidate window. More...
 
static LRESULT HandleIMEComposition (HWND hwnd, WPARAM wParam, LPARAM lParam)
 Handle WM_IME_COMPOSITION messages. More...
 
static void CancelIMEComposition (HWND hwnd)
 Clear the current composition string. More...
 
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
 
   HBITMAP   dib_sect
 
   void *   buffer_bits
 
   HPALETTE   gdi_palette
 
   RECT   update_rect
 
   int   width
 
   int   height
 
   int   width_org
 
   int   height_org
 
   bool   fullscreen
 
   bool   has_focus
 
   bool   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. More...
 
static ThreadObject_draw_thread = NULL
 Thread used to 'draw' to the screen, i.e. More...
 
static ThreadMutex_draw_mutex = NULL
 Mutex to keep the access to the shared memory controlled. More...
 
static HANDLE _draw_thread_initialized = NULL
 Event that is signaled when the drawing thread has finished initializing. More...
 
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. More...
 
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.

Function Documentation

◆ CancelIMEComposition()

static void CancelIMEComposition ( HWND  hwnd)
static

Clear the current composition string.

Definition at line 625 of file win32_v.cpp.

References DrawIMECompositionString(), HandleTextInput(), SetCandidatePos(), and SetCompositionPos().

Referenced by VideoDriver_Win32::EditBoxLostFocus().

◆ HandleCharMsg()

static LRESULT HandleCharMsg ( uint  keycode,
WChar  charcode 
)
static

Forward key presses to the window system.

Definition at line 435 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 561 of file win32_v.cpp.

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

◆ PaintWindow()

static void PaintWindow ( HDC  dc)
static

Do palette animation and blit to the window.

Definition at line 365 of file win32_v.cpp.

◆ SetCandidatePos()

static void SetCandidatePos ( HWND  hwnd)
static

Set the position of the candidate window.

Definition at line 527 of file win32_v.cpp.

References EditBoxInGlobalFocus().

Referenced by CancelIMEComposition().

◆ SetCompositionPos()

static void SetCompositionPos ( HWND  hwnd)
static

Set position of the composition window to the caret position.

Definition at line 505 of file win32_v.cpp.

References EditBoxInGlobalFocus().

Referenced by CancelIMEComposition(), and HandleIMEComposition().

Variable Documentation

◆ _draw_mutex

ThreadMutex* _draw_mutex = NULL
static

Mutex to keep the access to the shared memory controlled.

Definition at line 69 of file win32_v.cpp.

◆ _draw_thread

ThreadObject* _draw_thread = NULL
static

Thread used to 'draw' to the screen, i.e.

push data to the screen.

Definition at line 67 of file win32_v.cpp.

◆ _draw_thread_initialized

HANDLE _draw_thread_initialized = NULL
static

Event that is signaled when the drawing thread has finished initializing.

Definition at line 71 of file win32_v.cpp.

Referenced by VideoDriver_Win32::MainLoop().

◆ _draw_threaded

bool _draw_threaded
static

Whether the drawing is/may be done in a separate thread.

Definition at line 65 of file win32_v.cpp.

Referenced by VideoDriver_Win32::MainLoop().

◆ _local_palette

Palette _local_palette
static

Local copy of the palette for use in the drawing thread.

Definition at line 75 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 1083 of file win32_v.cpp.