mirror of
https://github.com/holub/mame
synced 2025-07-02 16:49:22 +03:00
Set global locale when parsing with nanosvg - fixes SVG display issues when locale is not English
This commit is contained in:
parent
addf59de2f
commit
76a2e99d6b
@ -15,8 +15,11 @@
|
|||||||
|
|
||||||
#include <nanosvg/src/nanosvg.h>
|
#include <nanosvg/src/nanosvg.h>
|
||||||
#include <nanosvg/src/nanosvgrast.h>
|
#include <nanosvg/src/nanosvgrast.h>
|
||||||
|
|
||||||
|
#include <clocale>
|
||||||
#include <set>
|
#include <set>
|
||||||
|
|
||||||
|
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
// DEBUGGING
|
// DEBUGGING
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
@ -91,10 +94,17 @@ private:
|
|||||||
|
|
||||||
screen_device::svg_renderer::svg_renderer(memory_region *region)
|
screen_device::svg_renderer::svg_renderer(memory_region *region)
|
||||||
{
|
{
|
||||||
|
// nanosvg makes assumptions about the global locale
|
||||||
char *s = new char[region->bytes()+1];
|
char *s = new char[region->bytes()+1];
|
||||||
memcpy(s, region->base(), region->bytes());
|
memcpy(s, region->base(), region->bytes());
|
||||||
s[region->bytes()] = 0;
|
s[region->bytes()] = 0;
|
||||||
|
const char *const lcctype(std::setlocale(LC_CTYPE, nullptr));
|
||||||
|
const char *const lcnumeric(std::setlocale(LC_NUMERIC, nullptr));
|
||||||
|
std::setlocale(LC_CTYPE, "C");
|
||||||
|
std::setlocale(LC_NUMERIC, "C");
|
||||||
m_image = nsvgParse(s, "px", 72);
|
m_image = nsvgParse(s, "px", 72);
|
||||||
|
std::setlocale(LC_CTYPE, lcctype);
|
||||||
|
std::setlocale(LC_NUMERIC, lcnumeric);
|
||||||
delete[] s;
|
delete[] s;
|
||||||
m_rasterizer = nsvgCreateRasterizer();
|
m_rasterizer = nsvgCreateRasterizer();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user