summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFridrich Štrba <fridrich.strba@bluewin.ch>2021-03-29 11:34:02 +0200
committerFridrich Štrba <fridrich.strba@bluewin.ch>2021-03-29 11:34:02 +0200
commit6fbf17368a4233071846cd2bb46c13b24a84598d (patch)
tree57302c0a6a9064e878fee117e34853cd16bd5943
parent059e890e4289ffaa1971f0159c167ccb997c5795 (diff)
Build with maximum werror
Change-Id: I44ca70cc7c0ce726b91cccfb11128b163e7e4a4b
-rw-r--r--src/lib/CDRCollector.cpp6
-rw-r--r--src/lib/CDRContentCollector.cpp32
-rw-r--r--src/lib/CDRInternalStream.cpp6
-rw-r--r--src/lib/CDRParser.cpp117
-rw-r--r--src/lib/CDRParser.h2
-rw-r--r--src/lib/CDRPath.cpp10
-rw-r--r--src/lib/CDRStylesCollector.cpp12
-rw-r--r--src/lib/CDRTypes.h2
-rw-r--r--src/lib/CMXParser.cpp96
-rw-r--r--src/lib/CMXParser.h4
-rw-r--r--src/lib/CommonParser.cpp4
-rw-r--r--src/lib/libcdr_utils.cpp8
-rw-r--r--src/lib/libcdr_utils.h1
13 files changed, 151 insertions, 149 deletions
diff --git a/src/lib/CDRCollector.cpp b/src/lib/CDRCollector.cpp
index 3f204d0..8435ade 100644
--- a/src/lib/CDRCollector.cpp
+++ b/src/lib/CDRCollector.cpp
@@ -139,9 +139,9 @@ unsigned libcdr::CDRParserState::_getRGBColor(const CDRColor &color)
// todo handle tint
}
unsigned char col0 = colorValue & 0xff;
- unsigned char col1 = (colorValue & 0xff00) >> 8;
- unsigned char col2 = (colorValue & 0xff0000) >> 16;
- unsigned char col3 = (colorValue & 0xff000000) >> 24;
+ unsigned char col1 = (colorValue >> 8) & 0xff;
+ unsigned char col2 = (colorValue >> 16) & 0xff;
+ unsigned char col3 = (unsigned char)((colorValue >> 24) & 0xff);
switch (colorModel)
{
case 0x00: // Pantone palette in CDR1
diff --git a/src/lib/CDRContentCollector.cpp b/src/lib/CDRContentCollector.cpp
index 683d8fd..f1a5817 100644
--- a/src/lib/CDRContentCollector.cpp
+++ b/src/lib/CDRContentCollector.cpp
@@ -409,7 +409,7 @@ void libcdr::CDRContentCollector::_flushCurrentPath()
while (rotate > 2.0*M_PI)
rotate -= 2.0*M_PI;
- if (rotate != 0.0)
+ if (!CDR_ALMOST_ZERO(rotate))
propList.insert("librevenge:rotate", rotate * 180 / M_PI, librevenge::RVNG_GENERIC);
propList.insert("librevenge:mime-type", "image/bmp");
@@ -606,7 +606,7 @@ void libcdr::CDRContentCollector::collectLevel(unsigned level)
const char *header =
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n";
librevenge::RVNGBinaryData output((const unsigned char *)header, strlen(header));
- output.append((unsigned char *)svgOutput[0].cstr(), strlen(svgOutput[0].cstr()));
+ output.append((const unsigned char *)svgOutput[0].cstr(), strlen(svgOutput[0].cstr()));
m_ps.m_vects[m_spnd] = output;
}
#if DUMP_VECT
@@ -827,20 +827,20 @@ void libcdr::CDRContentCollector::_fillProperties(librevenge::RVNGPropertyList &
propList.insert("draw:fill-image-ref-point", "bottom-left");
if (m_currentFillStyle.imageFill.isRelative)
{
- if (m_currentFillStyle.imageFill.xOffset != 0.0 && m_currentFillStyle.imageFill.xOffset != 1.0)
+ if (!CDR_ALMOST_ZERO(m_currentFillStyle.imageFill.xOffset) && !CDR_ALMOST_ZERO(m_currentFillStyle.imageFill.xOffset))
propList.insert("draw:fill-image-ref-point-x", m_currentFillStyle.imageFill.xOffset, librevenge::RVNG_PERCENT);
- if (m_currentFillStyle.imageFill.yOffset != 0.0 && m_currentFillStyle.imageFill.yOffset != 1.0)
+ if (!CDR_ALMOST_ZERO(m_currentFillStyle.imageFill.yOffset) && !CDR_ALMOST_ZERO(m_currentFillStyle.imageFill.yOffset))
propList.insert("draw:fill-image-ref-point-y", m_currentFillStyle.imageFill.yOffset, librevenge::RVNG_PERCENT);
}
else
{
- if (m_fillTransforms.getTranslateX() != 0.0)
+ if (!CDR_ALMOST_ZERO(m_fillTransforms.getTranslateX()))
{
double xOffset = m_fillTransforms.getTranslateX() / m_currentFillStyle.imageFill.width;
normalize(xOffset);
propList.insert("draw:fill-image-ref-point-x", xOffset, librevenge::RVNG_PERCENT);
}
- if (m_fillTransforms.getTranslateY() != 0.0)
+ if (!CDR_ALMOST_ZERO(m_fillTransforms.getTranslateY()))
{
double yOffset = m_fillTransforms.getTranslateY() / m_currentFillStyle.imageFill.width;
normalize(yOffset);
@@ -887,14 +887,14 @@ void libcdr::CDRContentCollector::_fillProperties(librevenge::RVNGPropertyList &
propList.insert("draw:fill-image-ref-point", "bottom-left");
if (m_currentFillStyle.imageFill.isRelative)
{
- if (m_currentFillStyle.imageFill.xOffset != 0.0 && m_currentFillStyle.imageFill.xOffset != 1.0)
+ if (!CDR_ALMOST_ZERO(m_currentFillStyle.imageFill.xOffset) && !CDR_ALMOST_ZERO(m_currentFillStyle.imageFill.xOffset))
propList.insert("draw:fill-image-ref-point-x", m_currentFillStyle.imageFill.xOffset, librevenge::RVNG_PERCENT);
- if (m_currentFillStyle.imageFill.yOffset != 0.0 && m_currentFillStyle.imageFill.yOffset != 1.0)
+ if (!CDR_ALMOST_ZERO(m_currentFillStyle.imageFill.yOffset) && !CDR_ALMOST_ZERO(m_currentFillStyle.imageFill.yOffset))
propList.insert("draw:fill-image-ref-point-y", m_currentFillStyle.imageFill.yOffset, librevenge::RVNG_PERCENT);
}
else
{
- if (m_fillTransforms.getTranslateX() != 0.0)
+ if (!CDR_ALMOST_ZERO(m_fillTransforms.getTranslateX()))
{
double xOffset = m_fillTransforms.getTranslateX() / m_currentFillStyle.imageFill.width;
while (xOffset < 0.0)
@@ -903,7 +903,7 @@ void libcdr::CDRContentCollector::_fillProperties(librevenge::RVNGPropertyList &
xOffset -= 1.0;
propList.insert("draw:fill-image-ref-point-x", xOffset, librevenge::RVNG_PERCENT);
}
- if (m_fillTransforms.getTranslateY() != 0.0)
+ if (!CDR_ALMOST_ZERO(m_fillTransforms.getTranslateY()))
{
double yOffset = m_fillTransforms.getTranslateY() / m_currentFillStyle.imageFill.width;
while (yOffset < 0.0)
@@ -947,14 +947,14 @@ void libcdr::CDRContentCollector::_fillProperties(librevenge::RVNGPropertyList &
propList.insert("draw:fill-image-ref-point", "bottom-left");
if (m_currentFillStyle.imageFill.isRelative)
{
- if (m_currentFillStyle.imageFill.xOffset != 0.0 && m_currentFillStyle.imageFill.xOffset != 1.0)
+ if (!CDR_ALMOST_ZERO(m_currentFillStyle.imageFill.xOffset) && !CDR_ALMOST_ZERO(m_currentFillStyle.imageFill.xOffset))
propList.insert("draw:fill-image-ref-point-x", m_currentFillStyle.imageFill.xOffset, librevenge::RVNG_PERCENT);
- if (m_currentFillStyle.imageFill.yOffset != 0.0 && m_currentFillStyle.imageFill.yOffset != 1.0)
+ if (!CDR_ALMOST_ZERO(m_currentFillStyle.imageFill.yOffset) && !CDR_ALMOST_ZERO(m_currentFillStyle.imageFill.yOffset))
propList.insert("draw:fill-image-ref-point-y", m_currentFillStyle.imageFill.yOffset, librevenge::RVNG_PERCENT);
}
else
{
- if (m_fillTransforms.getTranslateX() != 0.0)
+ if (!CDR_ALMOST_ZERO(m_fillTransforms.getTranslateX()))
{
double xOffset = m_fillTransforms.getTranslateX() / m_currentFillStyle.imageFill.width;
while (xOffset < 0.0)
@@ -963,7 +963,7 @@ void libcdr::CDRContentCollector::_fillProperties(librevenge::RVNGPropertyList &
xOffset -= 1.0;
propList.insert("draw:fill-image-ref-point-x", xOffset, librevenge::RVNG_PERCENT);
}
- if (m_fillTransforms.getTranslateY() != 0.0)
+ if (!CDR_ALMOST_ZERO(m_fillTransforms.getTranslateY()))
{
double yOffset = m_fillTransforms.getTranslateY() / m_currentFillStyle.imageFill.width;
while (yOffset < 0.0)
@@ -1231,7 +1231,7 @@ void libcdr::CDRContentCollector::collectFillOpacity(double opacity)
void libcdr::CDRContentCollector::collectBBox(double x0, double y0, double x1, double y1)
{
CDRBox bBox(x0, y0, x1, y1);
- if (m_currentVectLevel && m_page.width == 0.0 && m_page.height == 0.0)
+ if (m_currentVectLevel && CDR_ALMOST_ZERO(m_page.width) && CDR_ALMOST_ZERO(m_page.height))
{
m_page.width = bBox.getWidth();
m_page.height = bBox.getHeight();
@@ -1268,7 +1268,7 @@ void libcdr::CDRContentCollector::collectVectorPattern(unsigned id, const librev
const char *header =
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n";
librevenge::RVNGBinaryData output((const unsigned char *)header, strlen(header));
- output.append((unsigned char *)svgOutput[0].cstr(), strlen(svgOutput[0].cstr()));
+ output.append((const unsigned char *)svgOutput[0].cstr(), strlen(svgOutput[0].cstr()));
m_ps.m_vects[id] = output;
}
#if DUMP_VECT
diff --git a/src/lib/CDRInternalStream.cpp b/src/lib/CDRInternalStream.cpp
index d8171d7..6063a02 100644
--- a/src/lib/CDRInternalStream.cpp
+++ b/src/lib/CDRInternalStream.cpp
@@ -67,7 +67,7 @@ libcdr::CDRInternalStream::CDRInternalStream(librevenge::RVNGInputStream *input,
}
strm.avail_in = (uInt)tmpNumBytesRead;
- strm.next_in = (Bytef *)tmpBuffer;
+ strm.next_in = const_cast<Bytef *>(tmpBuffer);
do
{
@@ -82,6 +82,8 @@ libcdr::CDRInternalStream::CDRInternalStream(librevenge::RVNGInputStream *input,
(void)inflateEnd(&strm);
m_buffer.clear();
return;
+ default:
+ break;
}
unsigned have = CHUNK - strm.avail_out;
@@ -102,7 +104,7 @@ const unsigned char *libcdr::CDRInternalStream::read(unsigned long numBytes, uns
if (numBytes == 0)
return nullptr;
- unsigned numBytesToRead;
+ unsigned long numBytesToRead;
if ((m_offset+numBytes) < m_buffer.size())
numBytesToRead = numBytes;
diff --git a/src/lib/CDRParser.cpp b/src/lib/CDRParser.cpp
index b9a95e9..1488a13 100644
--- a/src/lib/CDRParser.cpp
+++ b/src/lib/CDRParser.cpp
@@ -180,10 +180,10 @@ static int parseColourString(const char *colourString, libcdr::CDRColor &colour,
return parseColourString(fallbackColours.begin()->c_str(), colour, opacity);
if (colourModel)
- colour.m_colorModel = get(colourModel);
+ colour.m_colorModel = (unsigned short)(get(colourModel));
if (colourPalette)
- colour.m_colorPalette = get(colourPalette);
+ colour.m_colorPalette = (unsigned short)(get(colourPalette));
if (val.size() >= 5)
{
@@ -344,7 +344,7 @@ bool libcdr::CDRParser::parseWaldo(librevenge::RVNGInputStream *input)
if (iter1 != records1.end())
{
waldoStack.push(iter1->second);
- m_collector->collectVect(waldoStack.size());
+ m_collector->collectVect((unsigned)(waldoStack.size()));
parseWaldoStructure(input, waldoStack, records1, records2);
}
iter1 = records1.find(0);
@@ -352,7 +352,7 @@ bool libcdr::CDRParser::parseWaldo(librevenge::RVNGInputStream *input)
return false;
waldoStack = std::stack<WaldoRecordType1>();
waldoStack.push(iter1->second);
- m_collector->collectPage(waldoStack.size());
+ m_collector->collectPage((unsigned)(waldoStack.size()));
if (!parseWaldoStructure(input, waldoStack, records1, records2))
return false;
}
@@ -427,7 +427,7 @@ bool libcdr::CDRParser::parseWaldoStructure(librevenge::RVNGInputStream *input,
{
if (waldoStack.size() > 1)
{
- m_collector->collectGroup(waldoStack.size());
+ m_collector->collectGroup((unsigned)(waldoStack.size()));
m_collector->collectSpnd(waldoStack.top().m_id);
CDRTransforms trafos;
trafos.append(waldoStack.top().m_trafo);
@@ -437,19 +437,19 @@ bool libcdr::CDRParser::parseWaldoStructure(librevenge::RVNGInputStream *input,
if (iter1 == records1.end())
return false;
waldoStack.push(iter1->second);
- m_collector->collectLevel(waldoStack.size());
+ m_collector->collectLevel((unsigned)(waldoStack.size()));
}
else
{
if (waldoStack.size() > 1)
- m_collector->collectObject(waldoStack.size());
+ m_collector->collectObject((unsigned)(waldoStack.size()));
std::map<unsigned, WaldoRecordInfo>::const_iterator iter2 = records2.find(waldoStack.top().m_child);
if (iter2 == records2.end())
return false;
readWaldoRecord(input, iter2->second);
while (!waldoStack.empty() && !waldoStack.top().m_next)
waldoStack.pop();
- m_collector->collectLevel(waldoStack.size());
+ m_collector->collectLevel((unsigned)(waldoStack.size()));
if (waldoStack.empty())
return true;
iter1 = records1.find(waldoStack.top().m_next);
@@ -634,7 +634,7 @@ bool libcdr::CDRParser::parseRecord(librevenge::RVNGInputStream *input, const st
m_collector->collectGroup(level);
else if ((listType & 0xffffff) == CDR_FOURCC_CDR || (listType & 0xffffff) == CDR_FOURCC_cdr)
{
- m_version = getCDRVersion((listType & 0xff000000) >> 24);
+ m_version = getCDRVersion((unsigned char)((listType & 0xff000000) >> 24));
if (m_version < 600)
m_precision = libcdr::PRECISION_16BIT;
else
@@ -653,7 +653,7 @@ bool libcdr::CDRParser::parseRecord(librevenge::RVNGInputStream *input, const st
else
{
std::vector<unsigned> tmpBlockLengths;
- unsigned blocksLength = length + position - input->tell();
+ unsigned long blocksLength = length + position - input->tell();
CDRInternalStream tmpBlocksStream(input, blocksLength, compressed);
while (!tmpBlocksStream.isEnd())
tmpBlockLengths.push_back(readU32(&tmpBlocksStream));
@@ -835,10 +835,10 @@ void libcdr::CDRParser::readRectangle(librevenge::RVNGInputStream *input)
else
{
double scale = readDouble(input);
- if (scale != 0)
+ if (!CDR_ALMOST_ZERO(scale))
scaleX = scale;
scale = readDouble(input);
- if (scale != 0)
+ if (!CDR_ALMOST_ZERO(scale))
scaleY = scale;
unsigned int scale_with = readU8(input);
input->seek(7, librevenge::RVNG_SEEK_CUR);
@@ -948,7 +948,7 @@ void libcdr::CDRParser::readEllipse(librevenge::RVNGInputStream *input)
normalizeAngle(angle2);
CDRPath path;
- if (angle1 != angle2)
+ if (!CDR_ALMOST_EQUAL(angle1, angle2))
{
if (angle2 < angle1)
angle2 += 2*M_PI;
@@ -1033,7 +1033,7 @@ void libcdr::CDRParser::readLineAndCurve(librevenge::RVNGInputStream *input)
{
CDR_DEBUG_MSG(("CDRParser::readLineAndCurve\n"));
- unsigned short pointNum = readU16(input);
+ unsigned long pointNum = readU16(input);
const unsigned short pointSize = 2 * (m_precision == PRECISION_16BIT ? 2 : 4) + 1;
input->seek(2, librevenge::RVNG_SEEK_CUR);
if (pointNum > getRemainingLength(input) / pointSize)
@@ -1042,14 +1042,14 @@ void libcdr::CDRParser::readLineAndCurve(librevenge::RVNGInputStream *input)
std::vector<unsigned char> pointTypes;
points.reserve(pointNum);
pointTypes.reserve(pointNum);
- for (unsigned j=0; j<pointNum; j++)
+ for (unsigned long j=0; j<pointNum; j++)
{
std::pair<double, double> point;
point.first = (double)readCoordinate(input);
point.second = (double)readCoordinate(input);
points.push_back(point);
}
- for (unsigned k=0; k<pointNum; k++)
+ for (unsigned long k=0; k<pointNum; k++)
pointTypes.push_back(readU8(input));
outputPath(points, pointTypes);
}
@@ -1059,7 +1059,7 @@ void libcdr::CDRParser::readPath(librevenge::RVNGInputStream *input)
CDR_DEBUG_MSG(("CDRParser::readPath\n"));
input->seek(4, librevenge::RVNG_SEEK_CUR);
- unsigned short pointNum = readU16(input)+readU16(input);
+ unsigned long pointNum = readU16(input)+readU16(input);
const unsigned short pointSize = 2 * (m_precision == PRECISION_16BIT ? 2 : 4) + 1;
const unsigned long maxLength = getRemainingLength(input);
if (maxLength < 16)
@@ -1071,14 +1071,14 @@ void libcdr::CDRParser::readPath(librevenge::RVNGInputStream *input)
std::vector<unsigned char> pointTypes;
points.reserve(pointNum);
pointTypes.reserve(pointNum);
- for (unsigned j=0; j<pointNum; j++)
+ for (unsigned long j=0; j<pointNum; j++)
{
std::pair<double, double> point;
point.first = (double)readCoordinate(input);
point.second = (double)readCoordinate(input);
points.push_back(point);
}
- for (unsigned k=0; k<pointNum; k++)
+ for (unsigned long k=0; k<pointNum; k++)
pointTypes.push_back(readU8(input));
outputPath(points, pointTypes);
}
@@ -1092,7 +1092,7 @@ void libcdr::CDRParser::readArrw(librevenge::RVNGInputStream *input, unsigned le
throw GenericException();
unsigned arrowId = readU32(input);
input->seek(4, librevenge::RVNG_SEEK_CUR);
- unsigned short pointNum = readU16(input);
+ unsigned long pointNum = readU16(input);
const unsigned short pointSize = 2 * (m_precision == PRECISION_16BIT ? 2 : 4) + 1;
const unsigned long maxLength = getRemainingLength(input);
if (maxLength < 5)
@@ -1102,12 +1102,12 @@ void libcdr::CDRParser::readArrw(librevenge::RVNGInputStream *input, unsigned le
input->seek(4, librevenge::RVNG_SEEK_CUR);
std::vector<unsigned char> pointTypes;
pointTypes.reserve(pointSize);
- for (unsigned k=0; k<pointNum; k++)
+ for (unsigned long k=0; k<pointNum; k++)
pointTypes.push_back(readU8(input));
input->seek(1, librevenge::RVNG_SEEK_CUR);
std::vector<std::pair<double, double> > points;
points.reserve(pointSize);
- for (unsigned j=0; j<pointNum; j++)
+ for (unsigned long j=0; j<pointNum; j++)
{
std::pair<double, double> point;
point.second = (double)readCoordinate(input);
@@ -1164,7 +1164,7 @@ void libcdr::CDRParser::readBitmap(librevenge::RVNGInputStream *input)
else
input->seek(20, librevenge::RVNG_SEEK_CUR);
- unsigned short pointNum = readU16(input);
+ unsigned long pointNum = readU16(input);
input->seek(2, librevenge::RVNG_SEEK_CUR);
const unsigned short pointSize = 2 * (m_precision == PRECISION_16BIT ? 2 : 4) + 1;
if (pointNum > getRemainingLength(input) / pointSize)
@@ -1173,14 +1173,14 @@ void libcdr::CDRParser::readBitmap(librevenge::RVNGInputStream *input)
std::vector<unsigned char> pointTypes;
points.reserve(pointNum);
pointTypes.reserve(pointNum);
- for (unsigned j=0; j<pointNum; j++)
+ for (unsigned long j=0; j<pointNum; j++)
{
std::pair<double, double> point;
point.first = (double)readCoordinate(input);
point.second = (double)readCoordinate(input);
points.push_back(point);
}
- for (unsigned k=0; k<pointNum; k++)
+ for (unsigned long k=0; k<pointNum; k++)
pointTypes.push_back(readU8(input));
outputPath(points, pointTypes);
}
@@ -1199,7 +1199,7 @@ void libcdr::CDRParser::readWaldoOutl(librevenge::RVNGInputStream *input)
libcdr::CDRColor color = readColor(input);
input->seek(7, librevenge::RVNG_SEEK_CUR);
unsigned short numDash = readU8(input);
- int fixPosition = input->tell();
+ long fixPosition = input->tell();
std::vector<unsigned> dashArray;
for (unsigned short i = 0; i < numDash; ++i)
dashArray.push_back(readU8(input));
@@ -1696,13 +1696,13 @@ void libcdr::CDRParser::readOutl(librevenge::RVNGInputStream *input, unsigned le
input->seek(10, librevenge::RVNG_SEEK_CUR);
else
input->seek(16, librevenge::RVNG_SEEK_CUR);
- unsigned short numDash = readU16(input);
+ unsigned long numDash = readU16(input);
if (numDash > getRemainingLength(input) / 2)
numDash = getRemainingLength(input) / 2;
- int fixPosition = input->tell();
+ long fixPosition = input->tell();
std::vector<unsigned> dashArray;
dashArray.reserve(numDash);
- for (unsigned short i = 0; i < numDash; ++i)
+ for (unsigned long i = 0; i < numDash; ++i)
dashArray.push_back(readU16(input));
if (m_version < 600)
input->seek(fixPosition + 20, librevenge::RVNG_SEEK_SET);
@@ -1862,7 +1862,7 @@ void libcdr::CDRParser::readPolygonCoords(librevenge::RVNGInputStream *input)
{
CDR_DEBUG_MSG(("CDRParser::readPolygonCoords\n"));
- unsigned short pointNum = readU16(input);
+ unsigned long pointNum = readU16(input);
const unsigned short pointSize = 2 * (m_precision == PRECISION_16BIT ? 2 : 4) + 1;
if (pointNum > getRemainingLength(input) / pointSize)
pointNum = getRemainingLength(input) / pointSize;
@@ -1871,14 +1871,14 @@ void libcdr::CDRParser::readPolygonCoords(librevenge::RVNGInputStream *input)
std::vector<unsigned char> pointTypes;
points.reserve(pointNum);
pointTypes.reserve(pointNum);
- for (unsigned j=0; j<pointNum; j++)
+ for (unsigned long j=0; j<pointNum; j++)
{
std::pair<double, double> point;
point.first = (double)readCoordinate(input);
point.second = (double)readCoordinate(input);
points.push_back(point);
}
- for (unsigned k=0; k<pointNum; k++)
+ for (unsigned long k=0; k<pointNum; k++)
pointTypes.push_back(readU8(input));
outputPath(points, pointTypes);
m_collector->collectPolygon();
@@ -2012,7 +2012,7 @@ void libcdr::CDRParser::readPpdt(librevenge::RVNGInputStream *input, unsigned le
{
if (!_redirectX6Chunk(&input, length))
throw GenericException();
- unsigned short pointNum = readU16(input);
+ unsigned long pointNum = readU16(input);
const unsigned short pointSize = 2 * (m_precision == PRECISION_16BIT ? 2 : 4) + 4;
if (pointNum > getRemainingLength(input) / pointSize)
pointNum = getRemainingLength(input) / pointSize;
@@ -2021,14 +2021,14 @@ void libcdr::CDRParser::readPpdt(librevenge::RVNGInputStream *input, unsigned le
std::vector<unsigned> knotVector;
points.reserve(pointNum);
knotVector.reserve(pointNum);
- for (unsigned j=0; j<pointNum; j++)
+ for (unsigned long j=0; j<pointNum; j++)
{
std::pair<double, double> point;
point.first = (double)readCoordinate(input);
point.second = (double)readCoordinate(input);
points.push_back(point);
}
- for (unsigned k=0; k<pointNum; k++)
+ for (unsigned long k=0; k<pointNum; k++)
knotVector.push_back(readU32(input));
m_collector->collectPpdt(points, knotVector);
}
@@ -2207,14 +2207,13 @@ void libcdr::CDRParser::readStlt(librevenge::RVNGInputStream *input, unsigned le
CDR_DEBUG_MSG(("CDRParser::readStlt numRecords 0x%x\n", numRecords));
if (!numRecords)
return;
- unsigned numFills = readU32(input);
+ unsigned long numFills = readU32(input);
const unsigned fillSize = 3 * 4 + (m_version >= 1300 ? 48 : 0);
if (numFills > getRemainingLength(input) / fillSize)
numFills = getRemainingLength(input) / fillSize;
CDR_DEBUG_MSG(("CDRParser::readStlt numFills 0x%x\n", numFills));
- unsigned i = 0;
std::map<unsigned, unsigned> fillIds;
- for (i=0; i<numFills; ++i)
+ for (unsigned long i=0; i<numFills; ++i)
{
unsigned fillId = readU32(input);
input->seek(4, librevenge::RVNG_SEEK_CUR);
@@ -2222,25 +2221,25 @@ void libcdr::CDRParser::readStlt(librevenge::RVNGInputStream *input, unsigned le
if (m_version >= 1300)
input->seek(48, librevenge::RVNG_SEEK_CUR);
}
- unsigned numOutls = readU32(input);
+ unsigned long numOutls = readU32(input);
if (numOutls > getRemainingLength(input) / 12)
numOutls = getRemainingLength(input) / 12;
CDR_DEBUG_MSG(("CDRParser::readStlt numOutls 0x%x\n", numOutls));
std::map<unsigned, unsigned> outlIds;
- for (i=0; i<numOutls; ++i)
+ for (unsigned long i=0; i<numOutls; ++i)
{
unsigned outlId = readU32(input);
input->seek(4, librevenge::RVNG_SEEK_CUR);
outlIds[outlId] = readU32(input);
}
- unsigned numFonts = readU32(input);
+ unsigned long numFonts = readU32(input);
const unsigned fontsSize = 4 + 2 * 2 + 8 + (m_precision == PRECISION_16BIT ? 2 : 4) + 2 * (m_version < 1000 ? 12 : 20);
if (numFonts > getRemainingLength(input) / fontsSize)
numFonts = getRemainingLength(input) / fontsSize;
CDR_DEBUG_MSG(("CDRParser::readStlt numFonts 0x%x\n", numFonts));
std::map<unsigned,unsigned short> fontIds, fontEncodings;
std::map<unsigned,double> fontSizes;
- for (i=0; i<numFonts; ++i)
+ for (unsigned long i=0; i<numFonts; ++i)
{
unsigned fontStyleId = readU32(input);
if (m_version < 1000)
@@ -2256,12 +2255,12 @@ void libcdr::CDRParser::readStlt(librevenge::RVNGInputStream *input, unsigned le
else
input->seek(20, librevenge::RVNG_SEEK_CUR);
}
- unsigned numAligns = readU32(input);
+ unsigned long numAligns = readU32(input);
if (numAligns > getRemainingLength(input) / 12)
numAligns = getRemainingLength(input) / 12;
std::map<unsigned,unsigned> aligns;
CDR_DEBUG_MSG(("CDRParser::readStlt numAligns 0x%x\n", numAligns));
- for (i=0; i<numAligns; ++i)
+ for (unsigned long i=0; i<numAligns; ++i)
{
unsigned alignId = readU32(input);
input->seek(4, librevenge::RVNG_SEEK_CUR);
@@ -2278,7 +2277,7 @@ void libcdr::CDRParser::readStlt(librevenge::RVNGInputStream *input, unsigned le
input->seek(784 * static_cast<long>(numTabs), librevenge::RVNG_SEEK_CUR);
unsigned numBullets = readU32(input);
CDR_DEBUG_MSG(("CDRParser::readStlt numBullets 0x%x\n", numBullets));
- for (i=0; i<numBullets && getRemainingLength(input) >= 16; ++i)
+ for (unsigned i=0; i<numBullets && getRemainingLength(input) >= 16; ++i)
{
input->seek(40, librevenge::RVNG_SEEK_CUR);
if (m_version > 1300)
@@ -2300,13 +2299,13 @@ void libcdr::CDRParser::readStlt(librevenge::RVNGInputStream *input, unsigned le
input->seek(8, librevenge::RVNG_SEEK_CUR);
}
}
- unsigned numIndents = readU32(input);
+ unsigned long numIndents = readU32(input);
const unsigned indentSize = 4 + 3 * (m_precision == PRECISION_16BIT ? 2 : 4);
if (numIndents > getRemainingLength(input) / indentSize)
numIndents = getRemainingLength(input) / indentSize;
std::map<unsigned, double> rightIndents, firstIndents, leftIndents;
CDR_DEBUG_MSG(("CDRParser::readStlt numIndents 0x%x\n", numIndents));
- for (i=0; i<numIndents; ++i)
+ for (unsigned long i=0; i<numIndents; ++i)
{
unsigned indentId = readU32(input);
input->seek(12, librevenge::RVNG_SEEK_CUR);
@@ -2334,7 +2333,7 @@ void libcdr::CDRParser::readStlt(librevenge::RVNGInputStream *input, unsigned le
input->seek(12 * static_cast<long>(numSet11s), librevenge::RVNG_SEEK_CUR);
}
std::map<unsigned, CDRStltRecord> styles;
- for (i=0; i<numRecords && getRemainingLength(input) >= 32; ++i)
+ for (unsigned i=0; i<numRecords && getRemainingLength(input) >= 32; ++i)
{
CDR_DEBUG_MSG(("CDRParser::readStlt parsing styles\n"));
unsigned num = readU32(input);
@@ -2641,21 +2640,21 @@ void libcdr::CDRParser::readTxsm(librevenge::RVNGInputStream *input, unsigned le
}
styles[2*i] = style;
}
- unsigned numChars = readU32(input);
+ unsigned long numChars = readU32(input);
const unsigned charSize = m_version >= 1200 ? 8 : 4;
if (numChars > getRemainingLength(input) / charSize)
numChars = getRemainingLength(input) / charSize;
std::vector<unsigned char> charDescriptions(numChars);
- for (unsigned i = 0; i < numChars; ++i)
+ for (unsigned long i = 0; i < numChars; ++i)
{
unsigned tmpCharDescription = 0;
if (m_version >= 1200)
tmpCharDescription = readU64(input) & 0xffffffff;
else
tmpCharDescription = readU32(input);
- charDescriptions[i] = (tmpCharDescription >> 16) | (tmpCharDescription & 0x01);
+ charDescriptions[i] = (unsigned char)((tmpCharDescription >> 16) | (tmpCharDescription & 0x01));
}
- unsigned numBytes = numChars;
+ unsigned long numBytes = numChars;
if (m_version >= 1200)
numBytes = readU32(input);
unsigned long numBytesRead = 0;
@@ -2777,7 +2776,7 @@ void libcdr::CDRParser::readTxsm16(librevenge::RVNGInputStream *input)
{
unsigned tmpCharDescription = 0;
tmpCharDescription = readU64(input) & 0xffffffff;
- charDescriptions[i] = (tmpCharDescription >> 16) | (tmpCharDescription & 0x01);
+ charDescriptions[i] = (unsigned char)((tmpCharDescription >> 16) | (tmpCharDescription & 0x01));
}
unsigned numBytes = readU32(input);
unsigned long numBytesRead = 0;
@@ -2961,19 +2960,19 @@ void libcdr::CDRParser::readTxsm5(librevenge::RVNGInputStream *input)
input->seek(14, librevenge::RVNG_SEEK_CUR);
styles[2*i] = style;
}
- unsigned numChars = readU16(input);
+ unsigned long numChars = readU16(input);
if (numChars > getRemainingLength(input) / 8)
numChars = getRemainingLength(input) / 8;
std::vector<unsigned char> textData;
std::vector<unsigned char> charDescriptions;
textData.reserve(numChars);
charDescriptions.reserve(numChars);
- for (unsigned i=0; i<numChars; ++i)
+ for (unsigned long i=0; i<numChars; ++i)
{
input->seek(4, librevenge::RVNG_SEEK_CUR);
textData.push_back(readU8(input));
input->seek(1, librevenge::RVNG_SEEK_CUR);
- charDescriptions.push_back((readU16(input) >> 3) & 0xff);
+ charDescriptions.push_back((unsigned char)((readU16(input) >> 3) & 0xff));
}
if (!textData.empty())
m_collector->collectText(textId, stlId, textData, charDescriptions, styles);
@@ -3119,7 +3118,7 @@ void libcdr::CDRParser::readParagraphText(librevenge::RVNGInputStream *input)
m_collector->collectParagraphText(0.0, 0.0, width, height);
}
-void libcdr::CDRParser::_readX6StyleString(librevenge::RVNGInputStream *input, unsigned length, libcdr::CDRStyle &style)
+void libcdr::CDRParser::_readX6StyleString(librevenge::RVNGInputStream *input, unsigned long length, libcdr::CDRStyle &style)
{
if (length > getRemainingLength(input))
{
@@ -3161,7 +3160,7 @@ void libcdr::CDRParser::_readX6StyleString(librevenge::RVNGInputStream *input, u
boost::optional<std::string> fontName = pt.get_optional<std::string>("character.latin.font");
if (!!fontName)
style.m_fontName = fontName.get().c_str();
- unsigned short encoding = pt.get("character.latin.charset", 0);
+ unsigned short encoding = (unsigned short)(pt.get("character.latin.charset", 0));
if (encoding || style.m_charSet == (unsigned short)-1)
style.m_charSet = encoding;
processNameForEncoding(style.m_fontName, style.m_charSet);
@@ -3259,7 +3258,7 @@ void libcdr::CDRParser::_resolveColorPalette(libcdr::CDRColor &color)
unsigned char k = 100;
unsigned short ix = color.m_colorValue & 0xffff;
- unsigned short tint = (color.m_colorValue >> 16) & 0xffff;
+ unsigned short tint = (unsigned short)((color.m_colorValue >> 16) & 0xffff);
if (color.m_colorModel == 0x19)
{
diff --git a/src/lib/CDRParser.h b/src/lib/CDRParser.h
index 75acc0e..b14f100 100644
--- a/src/lib/CDRParser.h
+++ b/src/lib/CDRParser.h
@@ -93,7 +93,7 @@ private:
void readParagraphText(librevenge::RVNGInputStream *input);
bool _redirectX6Chunk(librevenge::RVNGInputStream **input, unsigned &length);
- void _readX6StyleString(librevenge::RVNGInputStream *input, unsigned length, CDRStyle &style);
+ void _readX6StyleString(librevenge::RVNGInputStream *input, unsigned long length, CDRStyle &style);
void _skipX3Optional(librevenge::RVNGInputStream *input);
void _resolveColorPalette(CDRColor &color);
diff --git a/src/lib/CDRPath.cpp b/src/lib/CDRPath.cpp
index cb45f67..e060ebd 100644
--- a/src/lib/CDRPath.cpp
+++ b/src/lib/CDRPath.cpp
@@ -40,7 +40,7 @@ static void getEllipticalArcBBox(double x0, double y0,
if (ry < 0.0)
ry *= -1.0;
- if (rx == 0.0 || ry == 0.0)
+ if (CDR_ALMOST_ZERO(rx) || CDR_ALMOST_ZERO(ry))
{
xmin = (x0 < x ? x0 : x);
xmax = (x0 > x ? x0 : x);
@@ -83,7 +83,7 @@ static void getEllipticalArcBBox(double x0, double y0,
double txmin, txmax, tymin, tymax;
- if (phi == 0 || phi == M_PI)
+ if (CDR_ALMOST_ZERO(phi) || CDR_ALMOST_EQUAL(phi, M_PI))
{
xmin = cx - rx;
txmin = getAngle(-rx, 0);
@@ -94,7 +94,7 @@ static void getEllipticalArcBBox(double x0, double y0,
ymax = cy + ry;
tymax = getAngle(0, ry);
}
- else if (phi == M_PI / 2.0 || phi == 3.0*M_PI/2.0)
+ else if (CDR_ALMOST_EQUAL(phi, M_PI / 2.0) || CDR_ALMOST_EQUAL(phi, 3.0*M_PI/2.0))
{
xmin = cx - ry;
txmin = getAngle(-ry, 0);
@@ -166,7 +166,7 @@ static inline double quadraticExtreme(double t, double a, double b, double c)
static inline double quadraticDerivative(double a, double b, double c)
{
double denominator = a - 2.0*b + c;
- if (fabs(denominator) != 0.0)
+ if (!CDR_ALMOST_ZERO(denominator))
return (a - b)/denominator;
return -1.0;
}
@@ -501,7 +501,7 @@ void CDRSplineToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
* The NURBS Book, 2nd Edition, 1997
*/
- unsigned m = m_points.size() + CDR_SPLINE_DEGREE + 1;
+ unsigned long m = m_points.size() + CDR_SPLINE_DEGREE + 1;
unsigned a = CDR_SPLINE_DEGREE;
unsigned b = CDR_SPLINE_DEGREE + 1;
std::vector< std::pair<double, double> > Qw(CDR_SPLINE_DEGREE+1), NextQw(CDR_SPLINE_DEGREE+1);
diff --git a/src/lib/CDRStylesCollector.cpp b/src/lib/CDRStylesCollector.cpp
index 3222a34..daeb295 100644
--- a/src/lib/CDRStylesCollector.cpp
+++ b/src/lib/CDRStylesCollector.cpp
@@ -70,7 +70,7 @@ void libcdr::CDRStylesCollector::collectBmp(unsigned imageId, unsigned colorMode
writeU32(image, 0); // ColorsImportant
// Cater for eventual padding
- unsigned lineWidth = bitmap.size() / height;
+ unsigned long lineWidth = bitmap.size() / height;
bool storeBMP = true;
@@ -103,18 +103,18 @@ void libcdr::CDRStylesCollector::collectBmp(unsigned imageId, unsigned colorMode
{
unsigned char c = bitmap[j*lineWidth+i];
i++;
- writeU32(image, m_ps.getBMPColor(libcdr::CDRColor(colorModel, c)));
+ writeU32(image, m_ps.getBMPColor(libcdr::CDRColor((unsigned short)colorModel, c)));
}
}
else if (!palette.empty())
{
while (i < lineWidth && i < width)
{
- unsigned char c = bitmap[j*lineWidth+i];
+ unsigned long c = bitmap[j*lineWidth+i];
if (c >= palette.size())
c = palette.size() - 1;
i++;
- writeU32(image, m_ps.getBMPColor(libcdr::CDRColor(colorModel, palette[c])));
+ writeU32(image, m_ps.getBMPColor(libcdr::CDRColor((unsigned short)colorModel, palette[c])));
}
}
else if (bpp == 24 && lineWidth >= 3)
@@ -123,7 +123,7 @@ void libcdr::CDRStylesCollector::collectBmp(unsigned imageId, unsigned colorMode
{
unsigned c = ((unsigned)bitmap[j*lineWidth+i+2] << 16) | ((unsigned)bitmap[j*lineWidth+i+1] << 8) | ((unsigned)bitmap[j*lineWidth+i]);
i += 3;
- writeU32(image, m_ps.getBMPColor(libcdr::CDRColor(colorModel, c)));
+ writeU32(image, m_ps.getBMPColor(libcdr::CDRColor((unsigned short)colorModel, c)));
k++;
}
}
@@ -133,7 +133,7 @@ void libcdr::CDRStylesCollector::collectBmp(unsigned imageId, unsigned colorMode
{
unsigned c = (bitmap[j*lineWidth+i+3] << 24) | (bitmap[j*lineWidth+i+2] << 16) | (bitmap[j*lineWidth+i+1] << 8) | (bitmap[j*lineWidth+i]);
i += 4;
- writeU32(image, m_ps.getBMPColor(libcdr::CDRColor(colorModel, c)));
+ writeU32(image, m_ps.getBMPColor(libcdr::CDRColor((unsigned short)colorModel, c)));
k++;
}
}
diff --git a/src/lib/CDRTypes.h b/src/lib/CDRTypes.h
index 9144592..6225a62 100644
--- a/src/lib/CDRTypes.h
+++ b/src/lib/CDRTypes.h
@@ -166,7 +166,7 @@ struct CDRStyle
m_fontSize = override.m_fontSize;
if (override.m_align)
m_align = override.m_align;
- if (override.m_leftIndent != 0.0 && override.m_firstIndent != 0.0 && override.m_rightIndent != 0.0)
+ if (!CDR_ALMOST_ZERO(override.m_leftIndent) && !CDR_ALMOST_ZERO(override.m_firstIndent) && !CDR_ALMOST_ZERO(override.m_rightIndent))
{
m_leftIndent = override.m_leftIndent;
m_firstIndent = override.m_firstIndent;
diff --git a/src/lib/CMXParser.cpp b/src/lib/CMXParser.cpp
index 02852c9..f87bb91 100644
--- a/src/lib/CMXParser.cpp
+++ b/src/lib/CMXParser.cpp
@@ -47,7 +47,7 @@ uint16_t readTagLength(librevenge::RVNGInputStream *const input, const bool bigE
}
void sanitizeNumRecords(
- unsigned &numRecords,
+ unsigned long &numRecords,
const libcdr::CoordinatePrecision precision, const unsigned size16, const unsigned size32,
const unsigned long remainingLength)
{
@@ -61,7 +61,7 @@ void sanitizeNumRecords(
}
void sanitizeNumRecords(
- unsigned &numRecords,
+ unsigned long &numRecords,
const libcdr::CoordinatePrecision precision, const unsigned size16, const unsigned size32, const unsigned tags,
const unsigned long remainingLength)
{
@@ -116,7 +116,7 @@ bool libcdr::CMXParser::parseRecord(librevenge::RVNGInputStream *input, unsigned
else
return true;
unsigned fourCC = readU32(input, m_bigEndian);
- unsigned length = readU32(input, m_bigEndian);
+ unsigned long length = readU32(input, m_bigEndian);
const unsigned long maxLength = getRemainingLength(input);
if (length > maxLength)
length = maxLength;
@@ -134,7 +134,7 @@ bool libcdr::CMXParser::parseRecord(librevenge::RVNGInputStream *input, unsigned
input->seek(4, librevenge::RVNG_SEEK_CUR);
#endif
CDR_DEBUG_MSG(("CMX listType: %s\n", toFourCC(listType)));
- unsigned dataSize = length-4;
+ unsigned long dataSize = length-4;
if (!parseRecords(input, dataSize, level+1))
return false;
}
@@ -167,7 +167,7 @@ void libcdr::CMXParser::parseImage(librevenge::RVNGInputStream *input)
else
return;
unsigned fourCC = readU32(input, m_bigEndian);
- unsigned length = readU32(input, m_bigEndian);
+ unsigned long length = readU32(input, m_bigEndian);
const unsigned long maxLength = getRemainingLength(input);
if (length > maxLength)
length = maxLength;
@@ -179,7 +179,7 @@ void libcdr::CMXParser::parseImage(librevenge::RVNGInputStream *input)
CDR_DEBUG_MSG(("CMX listType: %s\n", toFourCC(listType)));
if (listType != CDR_FOURCC_imag)
return;
- unsigned dataSize = length-4;
+ unsigned long dataSize = length-4;
if (!parseRecords(input, dataSize, (unsigned)-1))
return;
@@ -191,7 +191,7 @@ void libcdr::CMXParser::parseImage(librevenge::RVNGInputStream *input)
}
}
-void libcdr::CMXParser::readRecord(unsigned fourCC, unsigned &length, librevenge::RVNGInputStream *input)
+void libcdr::CMXParser::readRecord(unsigned fourCC, unsigned long length, librevenge::RVNGInputStream *input)
{
long recordEnd = input->tell() + length;
switch (fourCC)
@@ -293,7 +293,7 @@ void libcdr::CMXParser::readDisp(librevenge::RVNGInputStream *input)
unsigned fourCC = readU32(input, m_bigEndian);
if (CDR_FOURCC_DISP != fourCC)
return;
- unsigned length = readU32(input, m_bigEndian);
+ unsigned long length = readU32(input, m_bigEndian);
const unsigned long maxLength = getRemainingLength(input);
if (length > maxLength)
length = maxLength;
@@ -314,7 +314,7 @@ void libcdr::CMXParser::readDisp(librevenge::RVNGInputStream *input)
long startPosition = input->tell();
input->seek(0x18, librevenge::RVNG_SEEK_CUR);
- int lengthX = length + 10 - readU32(input, m_bigEndian);
+ unsigned long lengthX = length + 10 - readU32(input, m_bigEndian);
input->seek(startPosition, librevenge::RVNG_SEEK_SET);
previewImage.append((unsigned char)((lengthX) & 0x000000ff));
@@ -323,7 +323,7 @@ void libcdr::CMXParser::readDisp(librevenge::RVNGInputStream *input)
previewImage.append((unsigned char)(((lengthX) & 0xff000000) >> 24));
input->seek(4, librevenge::RVNG_SEEK_CUR);
- for (unsigned i = 4; i<length; i++)
+ for (unsigned long i = 4; i<length; i++)
previewImage.append(readU8(input, m_bigEndian));
#if DUMP_PREVIEW_IMAGE
FILE *f = fopen("previewImage.bmp", "wb");
@@ -354,11 +354,11 @@ void libcdr::CMXParser::readIxmr(librevenge::RVNGInputStream *input)
readU16(input, m_bigEndian); // Master ID
readU16(input, m_bigEndian); // Size
- unsigned short recordCount = readU16(input, m_bigEndian);
+ unsigned long recordCount = readU16(input, m_bigEndian);
if (recordCount > getRemainingLength(input) / 6)
recordCount = getRemainingLength(input) / 6;
std::map<unsigned short, unsigned> offsets;
- for (unsigned short i = 1; i <= recordCount; ++i)
+ for (unsigned long i = 1; i <= recordCount; ++i)
{
unsigned short indexRecordId = readU16(input, m_bigEndian);
unsigned offset = readU32(input, m_bigEndian);
@@ -590,7 +590,7 @@ void libcdr::CMXParser::readBeginGroup(librevenge::RVNGInputStream *input)
void libcdr::CMXParser::readPolyCurve(librevenge::RVNGInputStream *input)
{
m_collector->collectObject(1);
- unsigned pointNum = 0;
+ unsigned long pointNum = 0;
std::vector<std::pair<double, double> > points;
std::vector<unsigned char> pointTypes;
if (m_precision == libcdr::PRECISION_32BIT)
@@ -619,14 +619,14 @@ void libcdr::CMXParser::readPolyCurve(librevenge::RVNGInputStream *input)
pointNum = getRemainingLength(input) / (2 * 4 + 1);
points.reserve(pointNum);
pointTypes.reserve(pointNum);
- for (unsigned i = 0; i < pointNum; ++i)
+ for (unsigned long i = 0; i < pointNum; ++i)
{
std::pair<double, double> point;
point.first = readCoordinate(input, m_bigEndian);
point.second = readCoordinate(input, m_bigEndian);
points.push_back(point);
}
- for (unsigned j = 0; j < pointNum; ++j)
+ for (unsigned long j = 0; j < pointNum; ++j)
pointTypes.push_back(readU8(input, m_bigEndian));
break;
default:
@@ -645,14 +645,14 @@ void libcdr::CMXParser::readPolyCurve(librevenge::RVNGInputStream *input)
const unsigned long maxPoints = getRemainingLength(input) / (2 * 2 + 1);
if (pointNum > maxPoints)
pointNum = maxPoints;
- for (unsigned i = 0; i < pointNum; ++i)
+ for (unsigned long i = 0; i < pointNum; ++i)
{
std::pair<double, double> point;
point.first = readCoordinate(input, m_bigEndian);
point.second = readCoordinate(input, m_bigEndian);
points.push_back(point);
}
- for (unsigned j = 0; j < pointNum; ++j)
+ for (unsigned long j = 0; j < pointNum; ++j)
pointTypes.push_back(readU8(input, m_bigEndian));
}
else
@@ -729,7 +729,7 @@ void libcdr::CMXParser::readEllipse(librevenge::RVNGInputStream *input)
return;
CDRPath path;
- if (angle1 != angle2)
+ if (!CDR_ALMOST_EQUAL(angle1,angle2))
{
if (angle2 < angle1)
angle2 += 2*M_PI;
@@ -1006,11 +1006,11 @@ libcdr::CDRBox libcdr::CMXParser::readBBox(librevenge::RVNGInputStream *input)
librevenge::RVNGString libcdr::CMXParser::readString(librevenge::RVNGInputStream *input)
{
- unsigned short count = readU16(input, m_bigEndian);
+ unsigned long count = readU16(input, m_bigEndian);
if (count > getRemainingLength(input))
count = getRemainingLength(input);
librevenge::RVNGString tmpString;
- for (unsigned short i = 0; i < count; ++i)
+ for (unsigned long i = 0; i < count; ++i)
tmpString.append((char)readU8(input, m_bigEndian));
return tmpString;
}
@@ -1143,10 +1143,10 @@ bool libcdr::CMXParser::readFill(librevenge::RVNGInputStream *input)
}
case CMX_Tag_RenderAttr_FillSpec_Fountain_Color:
{
- unsigned short colorCount = readU16(input, m_bigEndian);
+ unsigned long colorCount = readU16(input, m_bigEndian);
if (colorCount > getRemainingLength(input) / 4)
colorCount = getRemainingLength(input) / 4;
- for (unsigned short i = 0; i < colorCount; ++i)
+ for (unsigned long i = 0; i < colorCount; ++i)
{
unsigned short colorRef = readU16(input, m_bigEndian);
unsigned short offset = readU16(input, m_bigEndian);
@@ -1176,10 +1176,10 @@ bool libcdr::CMXParser::readFill(librevenge::RVNGInputStream *input)
gradient.m_centerYOffset = readS16(input, m_bigEndian);
/* unsigned short steps = */ readU16(input, m_bigEndian);
gradient.m_mode = (unsigned char)(readU16(input, m_bigEndian) & 0xff);
- unsigned short colorCount = readU16(input, m_bigEndian);
+ unsigned long colorCount = readU16(input, m_bigEndian);
if (colorCount > getRemainingLength(input) / 4)
colorCount = getRemainingLength(input) / 4;
- for (unsigned short i = 0; i < colorCount; ++i)
+ for (unsigned long i = 0; i < colorCount; ++i)
{
unsigned short colorRef = readU16(input, m_bigEndian);
unsigned short offset = readU16(input, m_bigEndian);
@@ -1198,10 +1198,10 @@ bool libcdr::CMXParser::readFill(librevenge::RVNGInputStream *input)
else if (m_precision == libcdr::PRECISION_16BIT)
{
/* unsigned atom = */ readU32(input, m_bigEndian);
- unsigned short count = readU16(input, m_bigEndian);
+ unsigned long count = readU16(input, m_bigEndian);
if (count > getRemainingLength(input) / 2)
count = getRemainingLength(input) / 2;
- for (unsigned short i = 0; i < count; ++i)
+ for (unsigned long i = 0; i < count; ++i)
readU16(input, m_bigEndian);
readString(input);
}
@@ -1234,7 +1234,7 @@ bool libcdr::CMXParser::readFill(librevenge::RVNGInputStream *input)
double tileOffsetX = (double)readU16(input, m_bigEndian) / 100.0;
double tileOffsetY = (double)readU16(input, m_bigEndian) / 100.0;
double rcpOffset = (double)readU16(input, m_bigEndian) / 100.0;
- unsigned char flags = readU16(input, m_bigEndian) & 0xff;
+ unsigned char flags = (unsigned char)(readU16(input, m_bigEndian) & 0xff);
input->seek(1, librevenge::RVNG_SEEK_CUR); // CMX_Tag_EndTag
double patternWidth = (double)tmpWidth / 254000.0;
double patternHeight = (double)tmpHeight / 254000.0;
@@ -1267,7 +1267,7 @@ bool libcdr::CMXParser::readFill(librevenge::RVNGInputStream *input)
double tileOffsetX = (double)readU16(input, m_bigEndian) / 100.0;
double tileOffsetY = (double)readU16(input, m_bigEndian) / 100.0;
double rcpOffset = (double)readU16(input, m_bigEndian) / 100.0;
- unsigned char flags = readU16(input, m_bigEndian) & 0xff;
+ unsigned char flags = (unsigned char)(readU16(input, m_bigEndian) & 0xff);
double patternWidth = (double)tmpWidth / 1000.0;
double patternHeight = (double)tmpHeight / 1000.0;
bool isRelative = false;
@@ -1311,7 +1311,7 @@ bool libcdr::CMXParser::readFill(librevenge::RVNGInputStream *input)
double tileOffsetX = (double)readU16(input, m_bigEndian) / 100.0;
double tileOffsetY = (double)readU16(input, m_bigEndian) / 100.0;
double rcpOffset = (double)readU16(input, m_bigEndian) / 100.0;
- unsigned char flags = readU16(input, m_bigEndian) & 0xff;
+ unsigned char flags = (unsigned char)(readU16(input, m_bigEndian) & 0xff);
input->seek(1, librevenge::RVNG_SEEK_CUR); // CMX_Tag_EndTag
double patternWidth = (double)tmpWidth / 254000.0;
double patternHeight = (double)tmpHeight / 254000.0;
@@ -1342,7 +1342,7 @@ bool libcdr::CMXParser::readFill(librevenge::RVNGInputStream *input)
double tileOffsetX = (double)readU16(input, m_bigEndian) / 100.0;
double tileOffsetY = (double)readU16(input, m_bigEndian) / 100.0;
double rcpOffset = (double)readU16(input, m_bigEndian) / 100.0;
- unsigned char flags = readU16(input, m_bigEndian) & 0xff;
+ unsigned char flags = (unsigned char)(readU16(input, m_bigEndian) & 0xff);
double patternWidth = (double)tmpWidth / 1000.0;
double patternHeight = (double)tmpHeight / 1000.0;
bool isRelative = false;
@@ -1396,7 +1396,7 @@ bool libcdr::CMXParser::readFill(librevenge::RVNGInputStream *input)
double tileOffsetX = (double)readU16(input, m_bigEndian) / 100.0;
double tileOffsetY = (double)readU16(input, m_bigEndian) / 100.0;
double rcpOffset = (double)readU16(input, m_bigEndian) / 100.0;
- unsigned char flags = readU16(input, m_bigEndian) & 0xff;
+ unsigned char flags = (unsigned char)(readU16(input, m_bigEndian) & 0xff);
input->seek(1, librevenge::RVNG_SEEK_CUR); // CMX_Tag_EndTag
double patternWidth = (double)tmpWidth / 254000.0;
double patternHeight = (double)tmpHeight / 254000.0;
@@ -1434,7 +1434,7 @@ bool libcdr::CMXParser::readFill(librevenge::RVNGInputStream *input)
double tileOffsetX = (double)readU16(input, m_bigEndian) / 100.0;
double tileOffsetY = (double)readU16(input, m_bigEndian) / 100.0;
double rcpOffset = (double)readU16(input, m_bigEndian) / 100.0;
- unsigned char flags = readU16(input, m_bigEndian) & 0xff;
+ unsigned char flags = (unsigned char)(readU16(input, m_bigEndian) & 0xff);
double patternWidth = (double)tmpWidth / 1000.0;
double patternHeight = (double)tmpHeight / 1000.0;
bool isRelative = false;
@@ -1451,10 +1451,10 @@ bool libcdr::CMXParser::readFill(librevenge::RVNGInputStream *input)
/* librevenge::RVNGString lib = */ readString(input);
/* librevenge::RVNGString name = */ readString(input);
/* librevenge::RVNGString stl = */ readString(input);
- unsigned short count = readU16(input, m_bigEndian);
+ unsigned long count = readU16(input, m_bigEndian);
if (count > getRemainingLength(input) / 8)
count = getRemainingLength(input) / 8;
- for (unsigned short i = 0; i < count; ++i)
+ for (unsigned long i = 0; i < count; ++i)
{
readU16(input, m_bigEndian);
readU16(input, m_bigEndian);
@@ -1469,7 +1469,7 @@ bool libcdr::CMXParser::readFill(librevenge::RVNGInputStream *input)
return false;
break;
}
- m_collector->collectFillStyle(fillId, CDRFillStyle(fillType, color1, color2, gradient, imageFill));
+ m_collector->collectFillStyle(fillId, CDRFillStyle((unsigned short)fillType, color1, color2, gradient, imageFill));
m_collector->collectFillStyleId(fillId);
return true;
}
@@ -1688,7 +1688,7 @@ void libcdr::CMXParser::readRclr(librevenge::RVNGInputStream *input)
return;
/* unsigned length = */ readU32(input, m_bigEndian);
- unsigned numRecords = readU16(input, m_bigEndian);
+ unsigned long numRecords = readU16(input, m_bigEndian);
CDR_DEBUG_MSG(("CMXParser::readRclr - numRecords %i\n", numRecords));
sanitizeNumRecords(numRecords, m_precision, 2, 2 + 0, 2, getRemainingLength(input));
for (unsigned j = 1; j <= numRecords; ++j)
@@ -1739,7 +1739,7 @@ void libcdr::CMXParser::readRdot(librevenge::RVNGInputStream *input)
return;
/* unsigned length = */ readU32(input, m_bigEndian);
- unsigned numRecords = readU16(input, m_bigEndian);
+ unsigned long numRecords = readU16(input, m_bigEndian);
CDR_DEBUG_MSG(("CMXParser::readRdot - numRecords %i\n", numRecords));
sanitizeNumRecords(numRecords, m_precision, 2, 2, 1, getRemainingLength(input));
for (unsigned j = 1; j <= numRecords; ++j)
@@ -1759,10 +1759,10 @@ void libcdr::CMXParser::readRdot(librevenge::RVNGInputStream *input)
{
case CMX_Tag_DescrSection_Dash:
{
- unsigned short dotCount = readU16(input, m_bigEndian);
+ unsigned long dotCount = readU16(input, m_bigEndian);
if (dotCount > getRemainingLength(input) / 2)
dotCount = getRemainingLength(input) / 2;
- for (unsigned short i = 0; i < dotCount; ++i)
+ for (unsigned long i = 0; i < dotCount; ++i)
dots.push_back(readU16(input, m_bigEndian));
break;
}
@@ -1775,10 +1775,10 @@ void libcdr::CMXParser::readRdot(librevenge::RVNGInputStream *input)
}
else if (m_precision == libcdr::PRECISION_16BIT)
{
- unsigned short dotCount = readU16(input, m_bigEndian);
+ unsigned long dotCount = readU16(input, m_bigEndian);
if (dotCount > getRemainingLength(input) / 2)
dotCount = getRemainingLength(input) / 2;
- for (unsigned short i = 0; i < dotCount; ++i)
+ for (unsigned long i = 0; i < dotCount; ++i)
dots.push_back(readU16(input, m_bigEndian));
}
else
@@ -1794,7 +1794,7 @@ void libcdr::CMXParser::readRott(librevenge::RVNGInputStream *input)
return;
/* unsigned length = */ readU32(input, m_bigEndian);
- unsigned numRecords = readU16(input, m_bigEndian);
+ unsigned long numRecords = readU16(input, m_bigEndian);
CDR_DEBUG_MSG(("CMXParser::readRott - numRecords %i\n", numRecords));
sanitizeNumRecords(numRecords, m_precision, 2, 2, 1, getRemainingLength(input));
for (unsigned j = 1; j <= numRecords; ++j)
@@ -1843,7 +1843,7 @@ void libcdr::CMXParser::readRotl(librevenge::RVNGInputStream *input)
return;
/* unsigned length = */ readU32(input, m_bigEndian);
- unsigned numRecords = readU16(input, m_bigEndian);
+ unsigned long numRecords = readU16(input, m_bigEndian);
CDR_DEBUG_MSG(("CMXParser::readRotl - numRecords %i\n", numRecords));
sanitizeNumRecords(numRecords, m_precision, 12, 12, 1, getRemainingLength(input));
for (unsigned j = 1; j <= numRecords; ++j)
@@ -1900,7 +1900,7 @@ void libcdr::CMXParser::readRpen(librevenge::RVNGInputStream *input)
return;
/* unsigned length = */ readU32(input, m_bigEndian);
- unsigned numRecords = readU16(input, m_bigEndian);
+ unsigned long numRecords = readU16(input, m_bigEndian);
CDR_DEBUG_MSG(("CMXParser::readRpen - numRecords %i\n", numRecords));
sanitizeNumRecords(numRecords, m_precision, 10, 12, 1, getRemainingLength(input));
for (unsigned j = 1; j <= numRecords; ++j)
@@ -1954,7 +1954,7 @@ void libcdr::CMXParser::readIxtl(librevenge::RVNGInputStream *input)
return;
/* unsigned length = */ readU32(input, m_bigEndian);
- unsigned numRecords = readU16(input, m_bigEndian);
+ unsigned long numRecords = readU16(input, m_bigEndian);
CDR_DEBUG_MSG(("CMXParser::readIxtl - numRecords %i\n", numRecords));
int sizeInFile(0);
if (m_precision == libcdr::PRECISION_32BIT)
@@ -1999,7 +1999,7 @@ void libcdr::CMXParser::readIxef(librevenge::RVNGInputStream *input)
return;
/* unsigned length = */ readU32(input, m_bigEndian);
- unsigned numRecords = readU16(input, m_bigEndian);
+ unsigned long numRecords = readU16(input, m_bigEndian);
CDR_DEBUG_MSG(("CMXParser::readIxef - numRecords %i\n", numRecords));
sanitizeNumRecords(numRecords, m_precision, 6, 8, getRemainingLength(input));
for (unsigned j = 1; j <= numRecords; ++j)
@@ -2036,7 +2036,7 @@ void libcdr::CMXParser::readIxpg(librevenge::RVNGInputStream *input)
return;
/* unsigned length = */ readU32(input, m_bigEndian);
- unsigned numRecords = readU16(input, m_bigEndian);
+ unsigned long numRecords = readU16(input, m_bigEndian);
CDR_DEBUG_MSG(("CMXParser::readIxpg - numRecords %i\n", numRecords));
sanitizeNumRecords(numRecords, m_precision, 16, 18, getRemainingLength(input));
for (unsigned j = 1; j <= numRecords; ++j)
@@ -2359,7 +2359,7 @@ libcdr::CDRLineStyle libcdr::CMXParser::getLineStyle(unsigned id)
if (iterPen != m_parserState.m_pens.end())
{
tmpLineStyle.lineWidth = iterPen->second.m_width * (iterPen->second.m_matrix.getScaleX()+iterPen->second.m_matrix.getScaleY())/ 2.0;
- if (iterPen->second.m_matrix.getScaleY() != 0)
+ if (!CDR_ALMOST_ZERO(iterPen->second.m_matrix.getScaleY()))
tmpLineStyle.stretch = iterPen->second.m_matrix.getScaleX()/iterPen->second.m_matrix.getScaleY();
else
tmpLineStyle.stretch = 1.0;
diff --git a/src/lib/CMXParser.h b/src/lib/CMXParser.h
index ffdb861..01d436a 100644
--- a/src/lib/CMXParser.h
+++ b/src/lib/CMXParser.h
@@ -114,7 +114,7 @@ private:
CMXParser(const CMXParser &);
CMXParser &operator=(const CMXParser &);
bool parseRecord(librevenge::RVNGInputStream *input, unsigned level = 0);
- void readRecord(unsigned fourCC, unsigned &length, librevenge::RVNGInputStream *input);
+ void readRecord(unsigned fourCC, unsigned long length, librevenge::RVNGInputStream *input);
void parseImage(librevenge::RVNGInputStream *input);
void readCMXHeader(librevenge::RVNGInputStream *input);
@@ -167,7 +167,7 @@ private:
double m_scale;
double m_xmin, m_xmax, m_ymin, m_ymax;
unsigned m_fillIndex;
- unsigned m_nextInstructionOffset;
+ unsigned long m_nextInstructionOffset;
CMXParserState &m_parserState;
CMXImageInfo m_currentImageInfo;
std::unique_ptr<CDRPattern> m_currentPattern;
diff --git a/src/lib/CommonParser.cpp b/src/lib/CommonParser.cpp
index d604a39..0f37646 100644
--- a/src/lib/CommonParser.cpp
+++ b/src/lib/CommonParser.cpp
@@ -149,11 +149,11 @@ void libcdr::CommonParser::readRImage(unsigned &colorModel, unsigned &width, uns
{
palette.clear();
input->seek(2, librevenge::RVNG_SEEK_CUR);
- unsigned short palettesize = readU16(input);
+ unsigned long palettesize = readU16(input);
if (palettesize > getRemainingLength(input) / 3)
palettesize = getRemainingLength(input) / 3;
palette.reserve(palettesize);
- for (unsigned short i = 0; i <palettesize; ++i)
+ for (unsigned long i = 0; i <palettesize; ++i)
{
unsigned b = readU8(input);
unsigned g = readU8(input);
diff --git a/src/lib/libcdr_utils.cpp b/src/lib/libcdr_utils.cpp
index c900b0a..d92e62d 100644
--- a/src/lib/libcdr_utils.cpp
+++ b/src/lib/libcdr_utils.cpp
@@ -97,7 +97,7 @@ static unsigned short getEncodingFromICUName(const char *name)
return 0;
}
-static unsigned short getEncoding(const unsigned char *buffer, unsigned bufferLength)
+static unsigned short getEncoding(const unsigned char *buffer, unsigned long bufferLength)
{
if (!buffer)
return 0;
@@ -109,7 +109,7 @@ static unsigned short getEncoding(const unsigned char *buffer, unsigned bufferLe
if (U_FAILURE(status) || !csd)
return 0;
ucsdet_enableInputFilter(csd, true);
- ucsdet_setText(csd, (const char *)buffer, bufferLength, &status);
+ ucsdet_setText(csd, (const char *)buffer, (unsigned)bufferLength, &status);
if (U_FAILURE(status))
throw libcdr::EncodingException();
const UCharsetMatch *csm = ucsdet_detect(csd, &status);
@@ -189,8 +189,8 @@ uint16_t libcdr::readU16(librevenge::RVNGInputStream *input, bool bigEndian)
if (p && numBytesRead == sizeof(uint16_t))
{
if (bigEndian)
- return (uint16_t)p[1]|((uint16_t)p[0]<<8);
- return (uint16_t)p[0]|((uint16_t)p[1]<<8);
+ return (uint16_t)(p[1]|((uint16_t)p[0]<<8));
+ return (uint16_t)(p[0]|((uint16_t)p[1]<<8));
}
CDR_DEBUG_MSG(("Throwing EndOfStreamException\n"));
throw EndOfStreamException();
diff --git a/src/lib/libcdr_utils.h b/src/lib/libcdr_utils.h
index 52871e3..5f3fccb 100644
--- a/src/lib/libcdr_utils.h
+++ b/src/lib/libcdr_utils.h
@@ -29,6 +29,7 @@
#define CDR_EPSILON 1E-6
#define CDR_ALMOST_ZERO(m) (fabs(m) <= CDR_EPSILON)
+#define CDR_ALMOST_EQUAL(m, n) CDR_ALMOST_ZERO(m-n)
#if defined(HAVE_FUNC_ATTRIBUTE_FORMAT)
# define CDR_ATTRIBUTE_PRINTF(fmt, arg) __attribute__((__format__(__printf__, fmt, arg)))