OpenTTD Source 20241224-master-gf74b0cf984
win32.cpp File Reference

Implementation of MS Windows system calls. More...

#include "../../stdafx.h"
#include "../../debug.h"
#include "../../gfx_func.h"
#include "../../textbuf_gui.h"
#include "../../fileio_func.h"
#include <windows.h>
#include <fcntl.h>
#include <mmsystem.h>
#include <regstr.h>
#include <shlobj.h>
#include <shellapi.h>
#include <winnls.h>
#include "win32.h"
#include "../../fios.h"
#include "../../core/alloc_func.hpp"
#include "../../string_func.h"
#include <sys/stat.h>
#include "../../language.h"
#include "../../thread.h"
#include "../../library_loader.h"
#include "../../safeguards.h"

Go to the source code of this file.

Macros

#define NO_SHOBJIDL_SORTDIRECTION
 
#define SORT_DIGITSASNUMBERS   0x00000008
 
#define LINGUISTIC_IGNORECASE   0x00000010
 

Functions

bool MyShowCursor (bool show, bool toggle)
 
void ShowOSErrorBox (const char *buf, bool)
 
void OSOpenBrowser (const std::string &url)
 
bool FiosIsRoot (const std::string &file)
 
void FiosGetDrives (FileList &file_list)
 
bool FiosIsHiddenFile (const std::filesystem::path &path)
 
std::optional< uint64_t > FiosGetDiskFreeSpace (const std::string &path)
 
void CreateConsole ()
 
static std::string ConvertLfToCrLf (std::string_view msg)
 Replace linefeeds with carriage-return and linefeed.
 
static INT_PTR CALLBACK HelpDialogFunc (HWND wnd, UINT msg, WPARAM wParam, LPARAM lParam)
 Callback function to handle the window.
 
void ShowInfoI (const std::string &str)
 
char * getcwd (char *buf, size_t size)
 
void DetermineBasePaths (const char *exe)
 
std::optional< std::string > GetClipboardContents ()
 Try to retrieve the current clipboard contents.
 
std::string FS2OTTD (const std::wstring &name)
 Convert to OpenTTD's encoding from a wide string.
 
std::wstring OTTD2FS (const std::string &name)
 Convert from OpenTTD's encoding to a wide string.
 
char * convert_from_fs (const std::wstring_view src, std::span< char > dst_buf)
 Convert to OpenTTD's encoding from that of the environment in UNICODE.
 
wchar_t * convert_to_fs (const std::string_view src, std::span< wchar_t > dst_buf)
 Convert from OpenTTD's encoding to that of the environment in UNICODE.
 
const char * GetCurrentLocale (const char *)
 Determine the current user's locale.
 
void Win32SetCurrentLocaleName (std::string iso_code)
 
int OTTDStringCompare (std::string_view s1, std::string_view s2)
 
int Win32StringContains (const std::string_view str, const std::string_view value, bool case_insensitive)
 Search if a string is contained in another string using the current locale.
 
void SetCurrentThreadName (const char *)
 Name the thread this function is called on for the debugger.
 

Variables

static bool _has_console
 
static bool _cursor_disable = true
 
static bool _cursor_visible = true
 
std::string _config_file
 Configuration file of OpenTTD.
 
static WCHAR _cur_iso_locale [16] = L""
 

Detailed Description

Implementation of MS Windows system calls.

Definition in file win32.cpp.

Macro Definition Documentation

◆ NO_SHOBJIDL_SORTDIRECTION

#define NO_SHOBJIDL_SORTDIRECTION

Definition at line 19 of file win32.cpp.

Function Documentation

◆ convert_from_fs()

char * convert_from_fs ( const std::wstring_view  src,
std::span< char >  dst_buf 
)

Convert to OpenTTD's encoding from that of the environment in UNICODE.

OpenTTD encoding is UTF8, local is wide.

Parameters
srcwide string that will be converted
dst_bufspan of valid char buffer that will receive the converted string
Returns
pointer to dst_buf. If conversion fails the string is of zero-length

Definition at line 372 of file win32.cpp.

Referenced by HandleIMEComposition(), MusicDriver_DMusic::Start(), and MusicDriver_Win32::Start().

◆ convert_to_fs()

wchar_t * convert_to_fs ( const std::string_view  src,
std::span< wchar_t >  dst_buf 
)

Convert from OpenTTD's encoding to that of the environment in UNICODE.

OpenTTD encoding is UTF8, local is wide.

Parameters
srcstring that will be converted
dst_bufspan of valid wide-char buffer that will receive the converted string
Returns
pointer to dst_buf. If conversion fails the string is of zero-length

Definition at line 389 of file win32.cpp.

Referenced by HFontFromFont(), and LoadWin32Font().

◆ ConvertLfToCrLf()

static std::string ConvertLfToCrLf ( std::string_view  msg)
static

Replace linefeeds with carriage-return and linefeed.

Parameters
msgstring with LF linefeeds.
Returns
String with Lf linefeeds converted to CrLf linefeeds.

Definition at line 165 of file win32.cpp.

◆ CreateConsole()

void CreateConsole ( )

Definition at line 107 of file win32.cpp.

◆ DetermineBasePaths()

void DetermineBasePaths ( const char *  exe)

Definition at line 234 of file win32.cpp.

◆ FiosGetDiskFreeSpace()

std::optional< uint64_t > FiosGetDiskFreeSpace ( const std::string &  path)

Definition at line 94 of file win32.cpp.

◆ FiosGetDrives()

void FiosGetDrives ( FileList file_list)

Definition at line 66 of file win32.cpp.

◆ FiosIsHiddenFile()

bool FiosIsHiddenFile ( const std::filesystem::path &  path)

Definition at line 83 of file win32.cpp.

◆ FiosIsRoot()

bool FiosIsRoot ( const std::string &  file)

Definition at line 61 of file win32.cpp.

◆ FS2OTTD()

std::string FS2OTTD ( const std::wstring &  name)

Convert to OpenTTD's encoding from a wide string.

OpenTTD internal encoding is UTF8.

Parameters
namevalid string that will be converted (local, or wide)
Returns
converted string; if failed string is of zero-length
See also
the current code-page comes from video\win32_v.cpp, event-notification WM_INPUTLANGCHANGE

Definition at line 337 of file win32.cpp.

Referenced by _ValidateSignatureFile(), TarScanner::AddFile(), NetworkError::AsString(), DetermineBasePaths(), FillLanguageList(), FiosGetFileList(), GetClipboardContents(), HandleIMEComposition(), InitializeLanguagePacks(), openttd_main(), ReadLanguagePack(), ReconsiderGameScriptLanguage(), NetworkAddress::Resolve(), ScanPath(), and SurveyConfiguration().

◆ GetClipboardContents()

std::optional< std::string > GetClipboardContents ( )

Try to retrieve the current clipboard contents.

Note
OS-specific function.
Returns
The (optional) clipboard contents.

Definition at line 313 of file win32.cpp.

References FS2OTTD().

◆ GetCurrentLocale()

const char * GetCurrentLocale ( const char *  )

Determine the current user's locale.

Definition at line 398 of file win32.cpp.

◆ getcwd()

char * getcwd ( char *  buf,
size_t  size 
)

Definition at line 224 of file win32.cpp.

◆ HelpDialogFunc()

static INT_PTR CALLBACK HelpDialogFunc ( HWND  wnd,
UINT  msg,
WPARAM  wParam,
LPARAM  lParam 
)
static

Callback function to handle the window.

Definition at line 182 of file win32.cpp.

◆ MyShowCursor()

bool MyShowCursor ( bool  show,
bool  toggle 
)

Definition at line 38 of file win32.cpp.

◆ OSOpenBrowser()

void OSOpenBrowser ( const std::string &  url)

Definition at line 56 of file win32.cpp.

◆ OTTD2FS()

std::wstring OTTD2FS ( const std::string &  name)

Convert from OpenTTD's encoding to a wide string.

OpenTTD internal encoding is UTF8.

Parameters
namevalid string that will be converted (UTF8)
console_cpconvert to the console encoding instead of the normal system encoding.
Returns
converted string; if failed string is of zero-length

Definition at line 354 of file win32.cpp.

Referenced by _ValidateSignatureFile(), FiosFileScanner::AddFile(), TarScanner::AddFile(), DetermineBasePaths(), FileExists(), FillLanguageList(), FioCreateDirectory(), FioRemove(), FiosGetFileList(), VideoDriver_Win32Base::MakeWindow(), FileHandle::Open(), openttd_main(), IniFile::SaveToDisk(), FileScanner::Scan(), and FileScanner::Scan().

◆ OTTDStringCompare()

int OTTDStringCompare ( std::string_view  s1,
std::string_view  s2 
)

Definition at line 434 of file win32.cpp.

◆ SetCurrentThreadName()

void SetCurrentThreadName ( const char *  name)

Name the thread this function is called on for the debugger.

Parameters
nameName to set for the thread..

Definition at line 540 of file win32.cpp.

Referenced by StartNewThread().

◆ ShowInfoI()

void ShowInfoI ( const std::string &  str)

Definition at line 201 of file win32.cpp.

◆ ShowOSErrorBox()

void ShowOSErrorBox ( const char *  buf,
bool  system 
)

Definition at line 50 of file win32.cpp.

◆ Win32SetCurrentLocaleName()

void Win32SetCurrentLocaleName ( std::string  iso_code)

Definition at line 417 of file win32.cpp.

◆ Win32StringContains()

int Win32StringContains ( const std::string_view  str,
const std::string_view  value,
bool  case_insensitive 
)

Search if a string is contained in another string using the current locale.

Parameters
strString to search in.
valueString to search for.
case_insensitiveSearch case-insensitive.
Returns
1 if value was found, 0 if it was not found, or -1 if not supported by the OS.

Definition at line 479 of file win32.cpp.

References LibraryLoader::GetFunction().

Referenced by StrNaturalContains(), and StrNaturalContainsIgnoreCase().

Variable Documentation

◆ _config_file

std::string _config_file
extern

Configuration file of OpenTTD.

Definition at line 60 of file settings.cpp.

Referenced by DeleteGRFPresetFromConfig(), GetGRFPresetList(), LoadFromConfig(), LoadGRFPresetFromConfig(), SaveGRFPresetToConfig(), and SaveToConfig().

◆ _cur_iso_locale

WCHAR _cur_iso_locale[16] = L""
static

Definition at line 415 of file win32.cpp.

◆ _cursor_disable

bool _cursor_disable = true
static

Definition at line 35 of file win32.cpp.

◆ _cursor_visible

bool _cursor_visible = true
static

Definition at line 36 of file win32.cpp.

◆ _has_console

bool _has_console
static

Definition at line 34 of file win32.cpp.