[Libreoffice-commits] libcdr.git: 2 commits - src/lib
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Mon Mar 22 15:40:37 UTC 2021
src/lib/CDRParser.cpp | 15 +++++++++------
src/lib/libcdr_utils.cpp | 9 +++++++++
src/lib/libcdr_utils.h | 1 +
3 files changed, 19 insertions(+), 6 deletions(-)
New commits:
commit e2b0c8a788ec124a58a63ddc56d77fa317624bf5
Author: Fridrich Štrba <fridrich.strba at bluewin.ch>
AuthorDate: Mon Mar 22 16:40:12 2021 +0100
Commit: Fridrich Štrba <fridrich.strba at bluewin.ch>
CommitDate: Mon Mar 22 16:40:12 2021 +0100
use boost spirit in unicode when appropriate
Change-Id: I9c97f3010ba7d4ec38dde0825e61fca6c7bce62e
diff --git a/src/lib/CDRParser.cpp b/src/lib/CDRParser.cpp
index 045a1b9..f9dba55 100644
--- a/src/lib/CDRParser.cpp
+++ b/src/lib/CDRParser.cpp
@@ -17,6 +17,9 @@
#ifndef BOOST_ALL_NO_LIB
#define BOOST_ALL_NO_LIB 1
#endif
+#ifndef BOOST_SPIRIT_UNICODE
+#define BOOST_SPIRIT_UNICODE 1
+#endif
#include <boost/algorithm/string.hpp>
#include <boost/optional.hpp>
#include <boost/property_tree/json_parser.hpp>
@@ -147,14 +150,14 @@ static int parseColourString(const char *colourString, libcdr::CDRColor &colour,
bRes = phrase_parse(it, end,
// Begin grammar
(
- (cmodel | omit[+iso8859_1::alnum]) >> lit(',')
- >> (cpalette | omit[+iso8859_1::alnum]) >> lit(',')
+ (cmodel | omit[+unicode::alnum]) >> lit(',')
+ >> (cpalette | omit[+unicode::alnum]) >> lit(',')
>> *(uint_ >> lit(','))
- >> omit[(repeat(8)[iso8859_1::xdigit] >> '-' >> repeat(3)[repeat(4)[iso8859_1::xdigit] >> '-'] >> repeat(12)[iso8859_1::xdigit])]
- >> -(lit(',') >> *iso8859_1::char_)
+ >> omit[(repeat(8)[unicode::xdigit] >> '-' >> repeat(3)[repeat(4)[unicode::xdigit] >> '-'] >> repeat(12)[unicode::xdigit])]
+ >> -(lit(',') >> *unicode::char_)
),
// End grammar
- iso8859_1::space,
+ unicode::space,
colourModel, colourPalette, val, rest)
&& it == end;
}
commit 9bbf5b653324ea567269b5ac18e09853dff4a0cd
Author: Fridrich Štrba <fridrich.strba at bluewin.ch>
AuthorDate: Mon Mar 22 16:25:38 2021 +0100
Commit: Fridrich Štrba <fridrich.strba at bluewin.ch>
CommitDate: Mon Mar 22 16:25:38 2021 +0100
Read the json as utf-8 for versions 17+
Change-Id: I4fa754ba03be06594e421de1d03be25aec0e5c1e
diff --git a/src/lib/CDRParser.cpp b/src/lib/CDRParser.cpp
index 62bdf0d..045a1b9 100644
--- a/src/lib/CDRParser.cpp
+++ b/src/lib/CDRParser.cpp
@@ -3055,7 +3055,7 @@ void libcdr::CDRParser::_readX6StyleString(librevenge::RVNGInputStream *input, u
memcpy(&styleBuffer[0], tmpBuffer, numBytesRead);
librevenge::RVNGString styleString;
if (m_version >= 1700)
- libcdr::appendCharacters(styleString, styleBuffer, 0);
+ libcdr::appendUTF8Characters(styleString, styleBuffer);
else
libcdr::appendCharacters(styleString, styleBuffer);
CDR_DEBUG_MSG(("CDRParser::_readX6StyleString - styleString = \"%s\"\n", styleString.cstr()));
diff --git a/src/lib/libcdr_utils.cpp b/src/lib/libcdr_utils.cpp
index 250f0a0..c900b0a 100644
--- a/src/lib/libcdr_utils.cpp
+++ b/src/lib/libcdr_utils.cpp
@@ -462,6 +462,15 @@ void libcdr::appendCharacters(librevenge::RVNGString &text, std::vector<unsigned
ucnv_close(conv);
}
+void libcdr::appendUTF8Characters(librevenge::RVNGString &text, std::vector<unsigned char> characters)
+{
+ if (characters.empty())
+ return;
+
+ for (std::vector<unsigned char>::const_iterator iter = characters.begin(); iter != characters.end(); ++iter)
+ text.append((char)*iter);
+}
+
#ifdef DEBUG
void libcdr::debugPrint(const char *const format, ...)
diff --git a/src/lib/libcdr_utils.h b/src/lib/libcdr_utils.h
index a4472fc..52871e3 100644
--- a/src/lib/libcdr_utils.h
+++ b/src/lib/libcdr_utils.h
@@ -91,6 +91,7 @@ void writeU16(librevenge::RVNGBinaryData &buffer, const int value);
void writeU32(librevenge::RVNGBinaryData &buffer, const int value);
void appendCharacters(librevenge::RVNGString &text, std::vector<unsigned char> characters, unsigned short charset);
void appendCharacters(librevenge::RVNGString &text, std::vector<unsigned char> characters);
+void appendUTF8Characters(librevenge::RVNGString &text, std::vector<unsigned char> characters);
#ifdef DEBUG
const char *toFourCC(unsigned value, bool bigEndian=false);
More information about the Libreoffice-commits
mailing list