mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-10-23 00:31:11 -06:00
Unicode handling:
Removed the Perl dependencies on Encode, Encode::Locale and Unicode::Normalize. Added dependency on boost::locale. Added encode_path, decode_path, normalize_utf8 functions to Slic3r.xs Slic3r.xs has been made mostly utf8 safe by using the boost::nowide library, thanks to @alexrj for the idea. Simplified the encode_path / decode_path stuff: wxWidgets are unicode already, so there is no need to decode_path() from it. Perl / win32 interfacing is non-unicode, so decode_path() is executed on ARGV just at the beginning of the perl scripts.
This commit is contained in:
parent
31085fb1d7
commit
1385018724
33 changed files with 236 additions and 186 deletions
|
@ -3,6 +3,8 @@
|
|||
#include <string>
|
||||
#include <expat/expat.h>
|
||||
|
||||
#include <boost/nowide/cstdio.hpp>
|
||||
|
||||
#include "../libslic3r.h"
|
||||
#include "../Model.hpp"
|
||||
#include "AMF.hpp"
|
||||
|
@ -480,7 +482,7 @@ bool load_amf(const char *path, Model *model)
|
|||
return false;
|
||||
}
|
||||
|
||||
FILE *pFile = ::fopen(path, "rt");
|
||||
FILE *pFile = boost::nowide::fopen(path, "rt");
|
||||
if (pFile == nullptr) {
|
||||
printf("Cannot open file %s\n", path);
|
||||
return false;
|
||||
|
@ -522,7 +524,7 @@ bool load_amf(const char *path, Model *model)
|
|||
|
||||
bool store_amf(const char *path, Model *model)
|
||||
{
|
||||
FILE *file = ::fopen(path, "wb");
|
||||
FILE *file = boost::nowide::fopen(path, "wb");
|
||||
if (file == nullptr)
|
||||
return false;
|
||||
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
#include <string.h>
|
||||
|
||||
#include <boost/nowide/convert.hpp>
|
||||
|
||||
#include <wx/string.h>
|
||||
#include <wx/wfstream.h>
|
||||
#include <wx/zipstrm.h>
|
||||
|
@ -119,7 +121,14 @@ bool load_prus(const char *path, Model *model)
|
|||
{
|
||||
// To receive the content of the zipped 'scene.xml' file.
|
||||
std::vector<char> scene_xml_data;
|
||||
wxFFileInputStream in(path);
|
||||
wxFFileInputStream in(
|
||||
#ifdef WIN32
|
||||
// On Windows, convert to a 16bit unicode string.
|
||||
boost::nowide::widen(path).c_str()
|
||||
#else
|
||||
path
|
||||
#endif
|
||||
);
|
||||
wxZipInputStream zip(in);
|
||||
std::unique_ptr<wxZipEntry> entry;
|
||||
size_t num_models = 0;
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <boost/nowide/cstdio.hpp>
|
||||
|
||||
#include "objparser.hpp"
|
||||
|
||||
namespace ObjParser {
|
||||
|
@ -318,7 +320,7 @@ static bool obj_parseline(const char *line, ObjData &data)
|
|||
|
||||
bool objparse(const char *path, ObjData &data)
|
||||
{
|
||||
FILE *pFile = ::fopen(path, "rt");
|
||||
FILE *pFile = boost::nowide::fopen(path, "rt");
|
||||
if (pFile == 0)
|
||||
return false;
|
||||
|
||||
|
@ -446,7 +448,7 @@ bool loadvectornameidx(FILE *pFile, std::vector<T> &v)
|
|||
|
||||
bool objbinsave(const char *path, const ObjData &data)
|
||||
{
|
||||
FILE *pFile = ::fopen(path, "wb");
|
||||
FILE *pFile = boost::nowide::fopen(path, "wb");
|
||||
if (pFile == 0)
|
||||
return false;
|
||||
|
||||
|
@ -471,7 +473,7 @@ bool objbinsave(const char *path, const ObjData &data)
|
|||
|
||||
bool objbinload(const char *path, ObjData &data)
|
||||
{
|
||||
FILE *pFile = ::fopen(path, "rb");
|
||||
FILE *pFile = boost::nowide::fopen(path, "rb");
|
||||
if (pFile == 0)
|
||||
return false;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue