summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFridrich Štrba <fridrich.strba@bluewin.ch>2020-02-05 10:22:08 +0100
committerFridrich Štrba <fridrich.strba@bluewin.ch>2020-02-05 10:22:08 +0100
commit0e746ed7ac28c2c1f4d480f52b6b7792ef1ce867 (patch)
tree375e8f725d7bfcaa711f2dfb4782116a52898d30
parent206178e5e978e4194cdfe42560aef3cd14088bcf (diff)
Simplify the parseColourString function a bit
Change-Id: I000c8ad4dfdaa7cc250687d542284585e2a903ea
-rw-r--r--src/lib/CDRParser.cpp41
1 files changed, 14 insertions, 27 deletions
diff --git a/src/lib/CDRParser.cpp b/src/lib/CDRParser.cpp
index 1b2b4ab..51434d1 100644
--- a/src/lib/CDRParser.cpp
+++ b/src/lib/CDRParser.cpp
@@ -105,7 +105,7 @@ static void processNameForEncoding(librevenge::RVNGString &name, unsigned short
static int parseColourString(const char *colourString, libcdr::CDRColor &colour, double &opacity)
{
using namespace boost::spirit::qi;
- bool bRes = false;
+ bool bRes = true;
boost::optional<unsigned> colourModel;
std::vector<unsigned> val;
@@ -140,34 +140,21 @@ static int parseColourString(const char *colourString, libcdr::CDRColor &colour,
if (colourModel)
colour.m_colorModel = get(colourModel);
- switch (colour.m_colorModel)
+ if (val.size() >= 5)
{
- 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;
- }
+ colour.m_colorValue = val[0] | (val[1] << 8) | (val[2] << 16) | (val[3] << 24);
+ opacity = (double)val[4] / 100.0;
+ return 1;
}
- return 1;
+
+ if (val.size() >= 4)
+ {
+ colour.m_colorValue = val[0] | (val[1] << 8) | (val[2] << 16);
+ opacity = (double)val[3] / 100.0;
+ return 1;
+ }
+
+ return 0;
}
void normalizeAngle(double &angle)