OpenTTD Source  20241108-master-g80f628063a
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. More...
 
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. More...
 
std::string FS2OTTD (const std::wstring &name)
 Convert to OpenTTD's encoding from a wide string. More...
 
std::wstring OTTD2FS (const std::string &name)
 Convert from OpenTTD's encoding to a wide string. More...
 
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. More...
 
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. More...
 
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. More...
 
void SetCurrentThreadName (const char *)
 Name the thread this function is called on for the debugger. More...
 

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.

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.

◆ 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().

◆ 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.

◆ 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(), NetworkError::AsString(), FillLanguageList(), 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.

Referenced by Textbuf::InsertClipboard().

◆ 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(), FileExists(), FillLanguageList(), FioCreateDirectory(), FioRemove(), FileHandle::Open(), IniFile::SaveToDisk(), and FileScanner::Scan().

◆ 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.

◆ 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().