1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
|
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef PLATFORM_SDL_WIN32_WRAPPER_H
#define PLATFORM_SDL_WIN32_WRAPPER_H
#include "common/scummsys.h"
#include "common/str.h"
HRESULT SHGetFolderPathFunc(HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags, LPTSTR pszPath);
// Helper functions
namespace Win32 {
/**
* Gets the full path to the ScummVM application data directory
* in the user's profile and creates it if it doesn't exist.
*
* @param profileDirectory MAX_PATH sized output array
*
* @return True if the user's profile directory was found, false if
* it was not.
*
* @note if the user's profile directory is found but the "ScummVM"
* subdirectory can't be created then this function calls error().
*/
bool getApplicationDataDirectory(TCHAR *profileDirectory);
/**
* Gets the full path to the directory that the currently executing
* process resides in.
*
* @param processDirectory output array
* @param size size in characters of output array
*/
void getProcessDirectory(TCHAR *processDirectory, DWORD size);
/**
* Checks if the current running Windows version is greater or equal to the specified version.
* See: https://docs.microsoft.com/en-us/windows/win32/sysinfo/operating-system-version
*
* @param majorVersion The major version number (x.0)
* @param minorVersion The minor version number (0.x)
*/
bool confirmWindowsVersion(int majorVersion, int minorVersion);
/**
* Moves a file within the same volume. Replaces any existing file.
*/
bool moveFile(const Common::String &src, const Common::String &dst);
/**
* Returns true if the drive letter is a CDROM
*
* @param driveLetter The drive letter to test
*/
bool isDriveCD(char driveLetter);
/**
* Converts a C string into a Windows wide-character string.
* Used to interact with Win32 Unicode APIs with no ANSI fallback.
* If UNICODE is defined then the conversion will use code page CP_UTF8,
* otherwise CP_ACP will be used.
*
* @param s Source string
* @return Converted string
*
* @note Return value must be freed by the caller.
*/
wchar_t *ansiToUnicode(const char *s);
/**
* Converts a Windows wide-character string into a C string.
* Used to interact with Win32 Unicode APIs with no ANSI fallback.
* If UNICODE is defined then the conversion will use code page CP_UTF8,
* otherwise CP_ACP will be used.
*
* @param s Source string
* @return Converted string
*
* @note Return value must be freed by the caller.
*/
char *unicodeToAnsi(const wchar_t *s);
/**
* Converts a Common::String to a TCHAR array for the purpose of passing to
* a Windows API or CRT call. If UNICODE is defined then the string will be
* converted from UTF8 to wide characters, otherwise the character array
* will be copied with no conversion.
*
* @param s Source string
* @return Converted string
*
* @note Return value must be freed by the caller.
*/
TCHAR *stringToTchar(const Common::String& s);
/**
* Converts a TCHAR array returned from a Windows API or CRT call to a Common::String.
* If UNICODE is defined then the wide character array will be converted to UTF8,
* otherwise the char array will be copied with no conversion.
*
* @param s Source string
* @return Converted string
*/
Common::String tcharToString(const TCHAR *s);
#ifdef UNICODE
/**
* Returns command line arguments in argc / argv format in UTF8.
*
* @param argc argument count
* @return argument array
*
* @note Return value must be freed by the caller with freeArgvUtf8()
*/
char **getArgvUtf8(int *argc);
/**
* Frees an argument array created by getArgvUtf8()
*
* @param argc argument count in argv
* @param argv argument array created by getArgvUtf8()
*/
void freeArgvUtf8(int argc, char **argv);
#endif
} // End of namespace Win32
#endif
|