1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2025-01-31 17:15:14 +01:00

Some more code cleanup

This commit is contained in:
Martin Tůma 2021-10-03 11:08:26 +02:00
parent 3338bfa73f
commit c364922625

View File

@ -164,6 +164,18 @@ static bool skipNodes(const NODFile *nod, SubFile::Handle &nodHdl,
return true; return true;
} }
static int sign(quint32 flags, quint32 &bits)
{
if (!((flags >> bits) & 1)) {
bits--;
return 0;
} else {
quint32 sb = bits - 1;
bits -= 2;
return ((flags >> sb) & 1) ? -1 : 1;
}
}
static bool readShape(const NODFile *nod, SubFile::Handle &nodHdl, static bool readShape(const NODFile *nod, SubFile::Handle &nodHdl,
NODFile::AdjacencyInfo &adj, BitStream4R &bs, const HuffmanTable *table, NODFile::AdjacencyInfo &adj, BitStream4R &bs, const HuffmanTable *table,
const SubDiv *subdiv, quint32 shift, MapData::Poly &poly, const SubDiv *subdiv, quint32 shift, MapData::Poly &poly,
@ -185,29 +197,14 @@ static bool readShape(const NODFile *nod, SubFile::Handle &nodHdl,
bool startWithStream = flags & (1 << (v2b + 6)); bool startWithStream = flags & (1 << (v2b + 6));
bool useEosBit = flags & (1 << (v2b + 5)); bool useEosBit = flags & (1 << (v2b + 5));
quint32 extraBits; quint32 extraBits = v2b + 4;
int lonSign, latSign; int lonSign = sign(flags, extraBits);
int latSign = sign(flags, extraBits);
HuffmanStreamR stream(bs, *table);
if (!stream.init(lonSign, latSign, flags, extraBits + 1))
return false;
if ((flags >> (v2b + 4) & 1) == 0) {
extraBits = v2b + 4;
lonSign = 0;
} else {
extraBits = v2b + 3;
lonSign = 1;
if ((flags >> (v2b + 3) & 1) != 0) {
lonSign = -1;
}
}
extraBits -= 1;
if ((flags >> extraBits & 1) == 0) {
latSign = 0;
} else {
extraBits -= 1;
latSign = -1;
if ((flags >> extraBits & 1) == 0) {
latSign = 1;
}
}
if (nod->nextNode(nodHdl, adj)) if (nod->nextNode(nodHdl, adj))
return false; return false;
@ -236,12 +233,9 @@ static bool readShape(const NODFile *nod, SubFile::Handle &nodHdl,
} }
} }
HuffmanStreamR stream(bs, *table);
if (!stream.init(lonSign, latSign, flags, extraBits))
return false;
qint32 lonDelta, latDelta; qint32 lonDelta, latDelta;
QVector<QPoint> deltas; QVector<QPoint> deltas;
quint32 adjustBit = 0; quint32 adjustBit = 0;
quint32 stepsCnt = 0; quint32 stepsCnt = 0;
quint32 steps = 0; quint32 steps = 0;