diff options
Diffstat (limited to 'intern')
-rw-r--r-- | intern/opencolorio/ocio_impl.cc | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/intern/opencolorio/ocio_impl.cc b/intern/opencolorio/ocio_impl.cc index 82536a74159..5c05d18ac48 100644 --- a/intern/opencolorio/ocio_impl.cc +++ b/intern/opencolorio/ocio_impl.cc @@ -25,6 +25,7 @@ * ***** END GPL LICENSE BLOCK ***** */ +#include <fstream> #include <iostream> #include <sstream> #include <string.h> @@ -55,6 +56,19 @@ using namespace OCIO_NAMESPACE; # define __func__ __FUNCTION__ #endif +#ifdef _WIN32 +# ifndef NOGDI +# define NOGDI +# endif +# ifndef NOMINMAX +# define NOMINMAX +# endif +# ifndef WIN32_LEAN_AND_MEAN +# define WIN32_LEAN_AND_MEAN +# endif +# include <windows.h> +#endif + static void OCIO_reportError(const char *err) { std::cerr << "OpenColorIO Error: " << err << std::endl; @@ -121,7 +135,26 @@ OCIO_ConstConfigRcPtr *OCIOImpl::configCreateFromFile(const char *filename) ConstConfigRcPtr *config = OBJECT_GUARDED_NEW(ConstConfigRcPtr); try { - *config = Config::CreateFromFile(filename); +#ifdef _WIN32 + const int length_mb = strlen(filename); + const int length_wc = MultiByteToWideChar(CP_UTF8, + 0, + filename, + length_mb, + NULL, + 0); + std::wstring wfilename(length_wc, 0); + MultiByteToWideChar(CP_UTF8, + 0, + filename, + length_mb, + &wfilename[0], + length_wc); + std::fstream stream(wfilename); +#else + std::fstream stream(filename); +#endif + *config = Config::CreateFromStream(stream); if (*config) return (OCIO_ConstConfigRcPtr *) config; @@ -622,7 +655,7 @@ void OCIOImpl::matrixTransformScale(float *m44, float *offset4, const float *sca const char *OCIOImpl::getVersionString(void) { - return GetVersion(); + return OCIO_NAMESPACE::GetVersion(); } int OCIOImpl::getVersionHex(void) |