Defines | Functions | Variables

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 "../../fios.h"
#include <windows.h>
#include <fcntl.h>
#include <shlobj.h>
#include <Shellapi.h>
#include "win32.h"
#include "../../core/alloc_func.hpp"
#include "../../openttd.h"
#include "../../core/random_func.hpp"
#include "../../string_func.h"
#include "../../crashlog.h"
#include <errno.h>
#include <sys/stat.h>

Go to the source code of this file.

Defines

#define W(x)   x "W"

Functions

bool MyShowCursor (bool show, bool toggle)
bool LoadLibraryList (Function proc[], const char *dll)
 Helper function needed by dynamically loading libraries XXX: Hurray for MS only having an ANSI GetProcAddress function on normal windows and no Wide version except for in Windows Mobile/CE.
void ShowOSErrorBox (const char *buf, bool system)
void OSOpenBrowser (const char *url)
static DIR * dir_calloc ()
static void dir_free (DIR *d)
DIR * opendir (const TCHAR *path)
struct dirent * readdir (DIR *d)
int closedir (DIR *d)
bool FiosIsRoot (const char *file)
void FiosGetDrives ()
bool FiosIsValidFile (const char *path, const struct dirent *ent, struct stat *sb)
bool FiosIsHiddenFile (const struct dirent *ent)
bool FiosGetDiskFreeSpace (const char *path, uint64 *tot)
static int ParseCommandLine (char *line, char **argv, int max_argc)
void CreateConsole ()
static INT_PTR CALLBACK HelpDialogFunc (HWND wnd, UINT msg, WPARAM wParam, LPARAM lParam)
 Callback function to handle the window.
void ShowInfo (const char *str)
int APIENTRY WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
char * getcwd (char *buf, size_t size)
void DetermineBasePaths (const char *exe)
bool GetClipboardContents (char *buffer, size_t buff_len)
 Try to retrive the current clipboard contents.
void CSleep (int milliseconds)
const char * FS2OTTD (const TCHAR *name)
 Convert to OpenTTD's encoding from that of the local environment.
const TCHAR * OTTD2FS (const char *name)
 Convert from OpenTTD's encoding to that of the local environment.
char * convert_from_fs (const wchar_t *name, char *utf8_buf, size_t buflen)
 Convert to OpenTTD's encoding from that of the environment in UNICODE.
wchar_t * convert_to_fs (const char *name, wchar_t *utf16_buf, size_t buflen)
 Convert from OpenTTD's encoding to that of the environment in UNICODE.
HRESULT OTTDSHGetFolderPath (HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags, LPTSTR pszPath)
 Our very own SHGetFolderPath function for support of windows operating systems that don't have this function (eg Win9x, etc.
const char * GetCurrentLocale (const char *)
 Determine the current user's locale.
uint GetCPUCoreCount ()
 Get number of processor cores in the system, including HyperThreading or similar.

Variables

static bool _has_console
static bool _cursor_disable = true
static bool _cursor_visible = true
static DIR _global_dir
static LONG _global_dir_is_in_use = false
static const char * _help_msg
 Temporary pointer to get the help message to the window.

Detailed Description

Implementation of MS Windows system calls.

Definition in file win32.cpp.


Function Documentation

char* convert_from_fs ( const wchar_t *  name,
char *  utf8_buf,
size_t  buflen 
)

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

OpenTTD encoding is UTF8, local is wide

Parameters:
name pointer to a valid string that will be converted
utf8_buf pointer to a valid buffer that will receive the converted string
buflen length in characters of the receiving buffer
Returns:
pointer to utf8_buf. If conversion fails the string is of zero-length

Definition at line 666 of file win32.cpp.

References DEBUG.

Referenced by FS2OTTD(), and GetClipboardContents().

wchar_t* convert_to_fs ( const char *  name,
wchar_t *  utf16_buf,
size_t  buflen 
)

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

OpenTTD encoding is UTF8, local is wide

Parameters:
name pointer to a valid string that will be converted
utf16_buf pointer to a valid wide-char buffer that will receive the converted string
buflen length in wide characters of the receiving buffer
Returns:
pointer to utf16_buf. If conversion fails the string is of zero-length

Definition at line 687 of file win32.cpp.

References DEBUG.

Referenced by OTTD2FS().

const char* FS2OTTD ( const TCHAR *  name  ) 

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

When the project is built in UNICODE, the system codepage is irrelevant and the input string is wide. In ANSI mode, the string is in the local codepage which we'll convert to wide-char, and then to UTF-8. OpenTTD internal encoding is UTF8. The returned value's contents can only be guaranteed until the next call to this function. So if the value is needed for anything else, use convert_from_fs

Parameters:
name pointer to a valid string that will be converted (local, or wide)
Returns:
pointer to the 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 593 of file win32.cpp.

References convert_from_fs(), DEBUG, lastof, lengthof, Utf8CharLen(), and Utf8Encode().

Referenced by FiosGetFileList(), GetClipboardContents(), GetLanguageList(), NetworkAddress::Resolve(), and ScanPath().

bool GetClipboardContents ( char *  buffer,
size_t  buff_len 
)

Try to retrive the current clipboard contents.

Note:
OS-specific funtion.
Returns:
True if some text could be retrived.

Definition at line 540 of file win32.cpp.

References convert_from_fs(), FS2OTTD(), and ttd_strlcpy().

uint GetCPUCoreCount (  ) 

Get number of processor cores in the system, including HyperThreading or similar.

Returns:
Total number of processor cores.

Definition at line 763 of file win32.cpp.

const char* GetCurrentLocale ( const char *   ) 

Determine the current user's locale.

Definition at line 750 of file win32.cpp.

References lengthof.

Referenced by InitializeLanguagePacks().

const TCHAR* OTTD2FS ( const char *  name  ) 

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

When the project is built in UNICODE the system codepage is irrelevant and the converted string is wide. In ANSI mode, the UTF8 string is converted to multi-byte. OpenTTD internal encoding is UTF8. The returned value's contents can only be guaranteed until the next call to this function. So if the value is needed for anything else, use convert_from_fs

Parameters:
name pointer to a valid string that will be converted (UTF8)
Returns:
pointer to the 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 631 of file win32.cpp.

References convert_to_fs(), DEBUG, lastof, and lengthof.

HRESULT OTTDSHGetFolderPath ( HWND  hwnd,
int  csidl,
HANDLE  hToken,
DWORD  dwFlags,
LPTSTR  pszPath 
)

Our very own SHGetFolderPath function for support of windows operating systems that don't have this function (eg Win9x, etc.

). We try using the native function, and if that doesn't exist we will try a more crude approach of environment variables and hope for the best

Definition at line 704 of file win32.cpp.

References DEBUG, and LoadLibraryList().