forked from teamnwah/openmw-tes3coop
be more verbose on change reasons
This commit is contained in:
parent
8f9091550e
commit
663d5c314e
8 changed files with 42 additions and 1 deletions
|
@ -41,6 +41,13 @@ private:
|
|||
std::vector<std::string> args;
|
||||
};
|
||||
|
||||
/* The only way to pass Unicode on Winodws with CLI is to use wide
|
||||
characters interface which presents UTF-16 encoding. The rest of
|
||||
OpenMW application stack assumes UTF-8 encoding, therefore this
|
||||
conversion.
|
||||
|
||||
For boost::filesystem::path::imbue see components/files/windowspath.cpp
|
||||
*/
|
||||
int wmain(int argc, wchar_t *wargv[]) {
|
||||
utf8argv converter(argc, wargv);
|
||||
char **argv = converter.get();
|
||||
|
|
|
@ -27,6 +27,13 @@ namespace Files
|
|||
WindowsPath::WindowsPath(const std::string& application_name)
|
||||
: mName(application_name)
|
||||
{
|
||||
/* Since on Windows boost::path.string() returns string of narrow
|
||||
characters in local encoding, it is required to path::imbue()
|
||||
with UTF-8 encoding (generated for empty name from boost::locale)
|
||||
to handle Unicode in platform-agnostic way using std::string.
|
||||
|
||||
See boost::filesystem and boost::locale reference for details.
|
||||
*/
|
||||
boost::filesystem::path::imbue(boost::locale::generator().generate(""));
|
||||
}
|
||||
|
||||
|
|
|
@ -26,6 +26,13 @@ namespace bfs = boost::filesystem;
|
|||
|
||||
namespace
|
||||
{
|
||||
/** \brief Custom Ogre::LogListener interface implementation being
|
||||
able to portably handle UTF-8 encoded path.
|
||||
|
||||
Effectively this is used in conjunction with default listener,
|
||||
but since on every message messageLogged() set 'skip' flag to
|
||||
true, there should be no troubles sharing same file.
|
||||
*/
|
||||
class LogListener : public Ogre::LogListener
|
||||
{
|
||||
bfs::ofstream file;
|
||||
|
@ -87,6 +94,7 @@ namespace OgreInit
|
|||
Ogre::Log *log = Ogre::LogManager::getSingleton().createLog(logPath);
|
||||
|
||||
#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
|
||||
// Use custom listener only on Windows
|
||||
log->addListener(new LogListener(logPath));
|
||||
#endif
|
||||
|
||||
|
|
2
extern/oics/tinyxml.cpp
vendored
2
extern/oics/tinyxml.cpp
vendored
|
@ -32,7 +32,7 @@ distribution.
|
|||
#include "tinyxml.h"
|
||||
|
||||
#ifdef _WIN32
|
||||
#include <Windows.h>
|
||||
#include <Windows.h> // import MultiByteToWideChar
|
||||
#endif
|
||||
|
||||
|
||||
|
|
9
extern/shiny/Main/Preprocessor.cpp
vendored
9
extern/shiny/Main/Preprocessor.cpp
vendored
|
@ -6,6 +6,15 @@
|
|||
|
||||
#include <boost/filesystem/fstream.hpp>
|
||||
|
||||
/*
|
||||
Almost exact copy of load_file_to_string policy found in
|
||||
boost::wave headers with the only change that it uses
|
||||
boost::filesystem facility to handle UTF-8 paths used
|
||||
throughout OpenMW (bfs::fstream, bfs::path).
|
||||
|
||||
Original namespace is used due to required bost::wave
|
||||
internal symbols.
|
||||
*/
|
||||
namespace boost {
|
||||
namespace wave {
|
||||
namespace iteration_context_policies {
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
|
||||
namespace MyGUI
|
||||
{
|
||||
/// \brief Custom MyGUI::ILogListener interface implementation
|
||||
/// being able to portably handle UTF-8 encoded path.
|
||||
class CustomLogListener : public ILogListener
|
||||
{
|
||||
public:
|
||||
|
|
|
@ -559,6 +559,8 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
/// \brief Helper class holding data that required during
|
||||
/// MyGUI log creation
|
||||
class LogFacility
|
||||
{
|
||||
ConsoleLogListener mConsole;
|
||||
|
@ -615,6 +617,8 @@ void MyGUIManager::setup(Ogre::RenderWindow *wnd, Ogre::SceneManager *mgr, bool
|
|||
mRenderManager = new MyGUI::OgreRenderManager();
|
||||
mDataManager = new MyGUI::FixedOgreDataManager();
|
||||
|
||||
// Do not use default log since it don't support Unicode path on Windows.
|
||||
// Instead, manually create log source using LogFacility and pass it.
|
||||
mLogFacility = new MyGUI::LogFacility(theLogFile, logging);
|
||||
LogManager::getInstance().addLogSource(mLogFacility->getSource());
|
||||
|
||||
|
|
|
@ -51,6 +51,10 @@ void OgreRenderer::update(float dt)
|
|||
|
||||
void OgreRenderer::screenshot(const std::string &file)
|
||||
{
|
||||
/* Since Ogre uses narrow character interfaces, it does not support
|
||||
Unicode paths on Windows. Therefore we had to implement screenshot
|
||||
saving manually.
|
||||
*/
|
||||
namespace bfs = boost::filesystem;
|
||||
bfs::ofstream out(bfs::path(file), std::ios::binary);
|
||||
|
||||
|
|
Loading…
Reference in a new issue