mirror of
https://github.com/NoelFB/blah.git
synced 2025-02-20 13:48:27 +08:00
removing non std::filesystem calls in platform_sdl2
This commit is contained in:
parent
ccd02fa9ef
commit
09f88d293f
@ -11,24 +11,21 @@
|
|||||||
|
|
||||||
#include <SDL.h>
|
#include <SDL.h>
|
||||||
|
|
||||||
|
// for File Reading/Writing
|
||||||
|
#include <filesystem>
|
||||||
|
namespace fs = std::filesystem;
|
||||||
|
|
||||||
#if _WIN32
|
#if _WIN32
|
||||||
#include <SDL_syswm.h>
|
|
||||||
// on Windows we're using the C++ <filesystem> API for now
|
|
||||||
#define WIN32_LEAN_AND_MEAN
|
#define WIN32_LEAN_AND_MEAN
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <winuser.h> // for SetProcessDPIAware
|
#include <winuser.h> // for SetProcessDPIAware
|
||||||
#include <filesystem> // for File Reading/Writing
|
|
||||||
#include <shellapi.h> // for file explore
|
#include <shellapi.h> // for file explore
|
||||||
namespace fs = std::filesystem;
|
#include <SDL_syswm.h>
|
||||||
#else
|
|
||||||
// on non-Windows we use POSIX standard file system stuff
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <dirent.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <cstring>
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Macro defined by X11 conflicts with MouseButton enum
|
||||||
|
#undef None
|
||||||
|
|
||||||
namespace Blah
|
namespace Blah
|
||||||
{
|
{
|
||||||
// Blah SDL2 Platform State
|
// Blah SDL2 Platform State
|
||||||
@ -248,9 +245,6 @@ u64 Platform::ticks()
|
|||||||
return (u64)(counter * (Time::ticks_per_second / per_second));
|
return (u64)(counter * (Time::ticks_per_second / per_second));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Macro defined by X11 conflicts with MouseButton enum
|
|
||||||
#undef None
|
|
||||||
|
|
||||||
void Platform::update(InputState& state)
|
void Platform::update(InputState& state)
|
||||||
{
|
{
|
||||||
// update the mouse every frame
|
// update the mouse every frame
|
||||||
@ -603,9 +597,6 @@ FileRef Platform::file_open(const char* path, FileMode mode)
|
|||||||
return FileRef(new SDL2File(ptr));
|
return FileRef(new SDL2File(ptr));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Windows File System methods
|
|
||||||
#if _WIN32
|
|
||||||
|
|
||||||
bool Platform::file_exists(const char* path)
|
bool Platform::file_exists(const char* path)
|
||||||
{
|
{
|
||||||
return fs::is_regular_file(path);
|
return fs::is_regular_file(path);
|
||||||
@ -650,85 +641,21 @@ void Platform::dir_enumerate(Vector<FilePath>& list, const char* path, bool recu
|
|||||||
|
|
||||||
void Platform::dir_explore(const char* path)
|
void Platform::dir_explore(const char* path)
|
||||||
{
|
{
|
||||||
ShellExecute(NULL, "open", path, NULL, NULL, SW_SHOWDEFAULT);
|
#if _WIN32
|
||||||
}
|
|
||||||
|
ShellExecute(NULL, "open", path, NULL, NULL, SW_SHOWDEFAULT);
|
||||||
|
|
||||||
|
#elif __linux__
|
||||||
|
|
||||||
|
system(String::fmt("xdg-open \"%s\"", path).cstr());
|
||||||
|
|
||||||
// Non-Windows File System Methods
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
bool Platform::file_exists(const char* path)
|
BLAH_ASSERT(false, "'dir_explore' not implemented");
|
||||||
{
|
|
||||||
struct stat buffer;
|
|
||||||
return (stat(path, &buffer) == 0) && S_ISREG(buffer.st_mode);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Platform::file_delete(const char* path)
|
|
||||||
{
|
|
||||||
return unlink(path) == 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Platform::dir_create(const char* path)
|
|
||||||
{
|
|
||||||
char tmp[265];
|
|
||||||
char* p = NULL;
|
|
||||||
size_t len;
|
|
||||||
|
|
||||||
snprintf(tmp, sizeof(tmp), "%s", path);
|
|
||||||
len = strlen(tmp);
|
|
||||||
if (tmp[len - 1] == '/')
|
|
||||||
tmp[len - 1] = 0;
|
|
||||||
for (p = tmp + 1; *p; p++)
|
|
||||||
if (*p == '/') {
|
|
||||||
*p = 0;
|
|
||||||
mkdir(tmp, S_IRWXU);
|
|
||||||
*p = '/';
|
|
||||||
}
|
|
||||||
return mkdir(tmp, S_IRWXU) == 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Platform::dir_exists(const char* path)
|
|
||||||
{
|
|
||||||
struct stat buffer;
|
|
||||||
return (stat(path, &buffer) == 0) && S_ISDIR(buffer.st_mode);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Platform::dir_delete(const char* path)
|
|
||||||
{
|
|
||||||
BLAH_ASSERT(false, "not implemented");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Platform::dir_enumerate(Vector<FilePath>& list, const char* path, bool recursive)
|
|
||||||
{
|
|
||||||
DIR* dirp = opendir(path);
|
|
||||||
if (dirp != NULL)
|
|
||||||
{
|
|
||||||
struct dirent* dp;
|
|
||||||
while ((dp = readdir(dirp)) != NULL)
|
|
||||||
{
|
|
||||||
if (dp->d_name[0] == '.')
|
|
||||||
continue;
|
|
||||||
|
|
||||||
FilePath subpath = FilePath(path);
|
|
||||||
if (subpath.end()[-1] != '/') subpath = subpath.append("/");
|
|
||||||
subpath = subpath.append(dp->d_name);
|
|
||||||
list.push_back(subpath);
|
|
||||||
|
|
||||||
if (recursive && dp->d_type == DT_DIR)
|
|
||||||
dir_enumerate(list, subpath + "/", true);
|
|
||||||
}
|
|
||||||
closedir(dirp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Platform::dir_explore(const char* path)
|
|
||||||
{
|
|
||||||
BLAH_ASSERT(false, "'dir_explore' Not Implemented");
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
// clipboard
|
|
||||||
void Platform::set_clipboard(const char* text)
|
void Platform::set_clipboard(const char* text)
|
||||||
{
|
{
|
||||||
SDL_SetClipboardText(text);
|
SDL_SetClipboardText(text);
|
||||||
|
Loading…
Reference in New Issue
Block a user