diff options
author | unknown <paulx161@umn.edu> | 2021-02-03 14:22:28 -0600 |
---|---|---|
committer | unknown <paulx161@umn.edu> | 2021-02-03 14:22:28 -0600 |
commit | 9b83919815f6a6ce5d73da1c28483970d0ca5589 (patch) | |
tree | 4558864445dccc1605e5315e0bb11c46d2018da1 /dev/MinGfx/src/platform.cc | |
parent | Added worksheet and support code for assignment 2 (diff) | |
download | csci4611-9b83919815f6a6ce5d73da1c28483970d0ca5589.tar csci4611-9b83919815f6a6ce5d73da1c28483970d0ca5589.tar.gz csci4611-9b83919815f6a6ce5d73da1c28483970d0ca5589.tar.bz2 csci4611-9b83919815f6a6ce5d73da1c28483970d0ca5589.tar.lz csci4611-9b83919815f6a6ce5d73da1c28483970d0ca5589.tar.xz csci4611-9b83919815f6a6ce5d73da1c28483970d0ca5589.tar.zst csci4611-9b83919815f6a6ce5d73da1c28483970d0ca5589.zip |
added dev/MinGfx/
Diffstat (limited to 'dev/MinGfx/src/platform.cc')
-rw-r--r-- | dev/MinGfx/src/platform.cc | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/dev/MinGfx/src/platform.cc b/dev/MinGfx/src/platform.cc new file mode 100644 index 0000000..5d941b6 --- /dev/null +++ b/dev/MinGfx/src/platform.cc @@ -0,0 +1,78 @@ +/* + Copyright (c) 2017,2018 Regents of the University of Minnesota. + All Rights Reserved. + See corresponding header file for details. + */ + +#include "platform.h" + +#include "mingfx_config.h" + +#include <vector> +#include <sstream> + +#ifdef WIN32 + #include <windows.h> +#else + #include <sys/stat.h> +#endif + + +namespace mingfx { + +bool Platform::FileExists(const std::string &filename) { +#ifdef WIN32 + LPCTSTR szPath = (LPCTSTR)filename.c_str(); + DWORD dwAttrib = GetFileAttributes(szPath); + return (dwAttrib != INVALID_FILE_ATTRIBUTES && + !(dwAttrib & FILE_ATTRIBUTE_DIRECTORY)); +#else + struct stat buf; + return (stat(filename.c_str(), &buf) == 0); +#endif +} + + +std::string Platform::FindFile(const std::string &basename, const std::vector<std::string> &searchpath) { + for (int i=0; i<searchpath.size(); i++) { + std::string fname = searchpath[i] + "/" + basename; + if (Platform::FileExists(fname)) { + return fname; + } + } + return basename; +} + +std::string Platform::FindFile(const std::string &basename, const std::string &searchpath) { + std::vector<std::string> paths; + std::stringstream ss(searchpath); + std::string path; + while (ss >> path) { + paths.push_back(path); + if (ss.peek() == ';') + ss.ignore(); + } + return FindFile(basename, paths); +} + + +std::string Platform::FindMinGfxDataFile(const std::string &basename) { + std::vector<std::string> searchpath; + searchpath.push_back("."); + searchpath.push_back("data"); + searchpath.push_back(MINGFX_DATA_DIR_INSTALL); + searchpath.push_back(MINGFX_DATA_DIR_BUILD); + return FindFile(basename, searchpath); +} + +std::string Platform::FindMinGfxShaderFile(const std::string &basename) { + std::vector<std::string> searchpath; + searchpath.push_back("."); + searchpath.push_back("shaders"); + searchpath.push_back(MINGFX_SHADERS_DIR_INSTALL); + searchpath.push_back(MINGFX_SHADERS_DIR_BUILD); + return FindFile(basename, searchpath); +} + + +} // end namespace |