[Libreoffice-commits] libcdr.git: 4 commits - src/lib
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Tue Feb 4 10:53:23 UTC 2020
src/lib/CDRParser.cpp | 54 +++++++++++++++++++++++++++++++++++++-------------
src/lib/CDRTypes.h | 2 -
2 files changed, 42 insertions(+), 14 deletions(-)
New commits:
commit 206178e5e978e4194cdfe42560aef3cd14088bcf
Author: Fridrich Štrba <fridrich.strba at bluewin.ch>
AuthorDate: Tue Feb 4 11:52:20 2020 +0100
Commit: Fridrich Štrba <fridrich.strba at bluewin.ch>
CommitDate: Tue Feb 4 11:52:20 2020 +0100
Fix txsm reading for versions 16 and above
Change-Id: I7f03558e5aa5aa73fdb22f58d29eeb64342c198d
diff --git a/src/lib/CDRParser.cpp b/src/lib/CDRParser.cpp
index eb8ab61..1b2b4ab 100644
--- a/src/lib/CDRParser.cpp
+++ b/src/lib/CDRParser.cpp
@@ -3086,7 +3086,9 @@ void libcdr::CDRParser::readTxsm16(librevenge::RVNGInputStream *input)
std::vector<unsigned char> charDescriptions(numChars);
for (i=0; i<numChars; ++i)
{
- charDescriptions[i] = readU64(input);
+ unsigned tmpCharDescription = 0;
+ tmpCharDescription = readU64(input) & 0xffffffff;
+ charDescriptions[i] = (tmpCharDescription >> 16) | (tmpCharDescription & 0x01);
}
unsigned numBytes = readU32(input);
unsigned long numBytesRead = 0;
commit eb46ee4ca53fd37406ee71cb04edd260a9134622
Author: Fridrich Štrba <fridrich.strba at bluewin.ch>
AuthorDate: Tue Feb 4 11:51:24 2020 +0100
Commit: Fridrich Štrba <fridrich.strba at bluewin.ch>
CommitDate: Tue Feb 4 11:51:24 2020 +0100
boost::property_tree::ptree::count does not recurse into children
Change-Id: I6892218152d14036b468826fc91f763787554ee3
diff --git a/src/lib/CDRParser.cpp b/src/lib/CDRParser.cpp
index bd3d1bb..eb8ab61 100644
--- a/src/lib/CDRParser.cpp
+++ b/src/lib/CDRParser.cpp
@@ -3416,16 +3416,20 @@ void libcdr::CDRParser::_readX6StyleString(librevenge::RVNGInputStream *input, u
CDR_DEBUG_MSG(("CDRParser::_readX6StyleString - styleString = \"%s\"\n", styleString.cstr()));
boost::property_tree::ptree pt;
+#ifndef DEBUG
try
+#endif
{
std::stringstream ss;
ss << styleString.cstr();
boost::property_tree::read_json(ss, pt);
}
+#ifndef DEBUG
catch (...)
{
return;
}
+#endif
if (pt.count("character"))
{
@@ -3440,7 +3444,7 @@ void libcdr::CDRParser::_readX6StyleString(librevenge::RVNGInputStream *input, u
if (!!fontSize)
style.m_fontSize = (double)fontSize.get() / 254000.0;
- if (pt.count("character.outline"))
+ if (!!pt.get_child_optional("character.outline"))
{
style.m_lineStyle.lineType = 0;
boost::optional<unsigned> lineWidth = pt.get_optional<unsigned>("character.outline.width");
@@ -3454,7 +3458,7 @@ void libcdr::CDRParser::_readX6StyleString(librevenge::RVNGInputStream *input, u
}
}
- if (pt.count("character.fill"))
+ if (!!pt.get_child_optional("character.fill"))
{
boost::optional<unsigned short> type = pt.get_optional<unsigned short>("character.fill.type");
if (!!type)
commit 4923f95bde2c07f33b645a298238cb79f615a016
Author: Fridrich Štrba <fridrich.strba at bluewin.ch>
AuthorDate: Tue Feb 4 11:49:57 2020 +0100
Commit: Fridrich Štrba <fridrich.strba at bluewin.ch>
CommitDate: Tue Feb 4 11:49:57 2020 +0100
Extend colour string parsing to RBG255 model
Change-Id: I935d553727aef0e9ee21bac254c6fdc24349c93f
diff --git a/src/lib/CDRParser.cpp b/src/lib/CDRParser.cpp
index 40b9b68..bd3d1bb 100644
--- a/src/lib/CDRParser.cpp
+++ b/src/lib/CDRParser.cpp
@@ -108,7 +108,7 @@ static int parseColourString(const char *colourString, libcdr::CDRColor &colour,
bool bRes = false;
boost::optional<unsigned> colourModel;
- unsigned val0, val1, val2, val3, val4;
+ std::vector<unsigned> val;
if (colourString)
{
@@ -116,6 +116,7 @@ static int parseColourString(const char *colourString, libcdr::CDRColor &colour,
cmodel.add
("CMYK", 2)
("CMYK255", 3)
+ ("RGB255", 5)
;
auto it = colourString;
const auto end = it + std::strlen(it);
@@ -124,27 +125,48 @@ static int parseColourString(const char *colourString, libcdr::CDRColor &colour,
(
(cmodel | omit[+alnum]) >> -lit(',')
>> omit[+alnum] >> -lit(',')
- >> uint_ >> -lit(',')
- >> uint_ >> -lit(',')
- >> uint_ >> -lit(',')
- >> uint_ >> -lit(',')
- >> uint_ >> -lit(',')
+ >> *(uint_ >> -lit(','))
>> (repeat(8)[alnum] >> '-' >> repeat(3)[repeat(4)[alnum] >> '-'] >> repeat(12)[alnum])
),
// End grammar
space,
- colourModel, val0, val1, val2, val3, val4)
+ colourModel, val)
&& it == end;
}
- if (!bRes)
+ if (bRes)
return -1;
if (colourModel)
colour.m_colorModel = get(colourModel);
- colour.m_colorValue = val0 | (val1 << 8) | (val2 << 16) | (val3 << 24);
- opacity = (double)val4 / 100.0;
+ switch (colour.m_colorModel)
+ {
+ case 5:
+ if (val.size() >= 4)
+ {
+ colour.m_colorValue = val[0] | (val[1] << 8) | (val[2] << 16);
+ opacity = (double)val[3] / 100.0;
+ break;
+ }
+ else
+ {
+ CDR_DEBUG_MSG(("parseColourString error: not enough values read: %lu\n", val.size()));
+ return 0;
+ }
+ default:
+ if (val.size() >= 5)
+ {
+ colour.m_colorValue = val[0] | (val[1] << 8) | (val[2] << 16) | (val[3] << 24);
+ opacity = (double)val[4] / 100.0;
+ break;
+ }
+ else
+ {
+ CDR_DEBUG_MSG(("parseColourString error: not enough values read: %lu\n", val.size()));
+ return 0;
+ }
+ }
return 1;
}
commit 6ec73cd4131fbb4bc6a5e4b3401cea19d5fa406b
Author: Fridrich Štrba <fridrich.strba at bluewin.ch>
AuthorDate: Tue Feb 4 11:38:35 2020 +0100
Commit: Fridrich Štrba <fridrich.strba at bluewin.ch>
CommitDate: Tue Feb 4 11:38:35 2020 +0100
astyle
Change-Id: Ibe31785f36920fc43de52833be25a1b82be9832c
diff --git a/src/lib/CDRTypes.h b/src/lib/CDRTypes.h
index 3ea5667..f3010e0 100644
--- a/src/lib/CDRTypes.h
+++ b/src/lib/CDRTypes.h
@@ -370,7 +370,7 @@ struct CDRFont
CDRFont(const librevenge::RVNGString &name, unsigned short encoding)
: m_name(name), m_encoding(encoding) {}
CDRFont(const CDRFont &font) = default;
- CDRFont& operator=(const CDRFont &font) = default;
+ CDRFont &operator=(const CDRFont &font) = default;
librevenge::RVNGString m_name;
unsigned short m_encoding;
};
More information about the Libreoffice-commits
mailing list