mirror of https://github.com/status-im/qzxing.git
First time that all written tests for Qr Encoding are succeeding. #10
Still the Qr code that is generated is not recognizable
This commit is contained in:
parent
ae144f213d
commit
94de33f4f5
|
@ -38,7 +38,7 @@ void ReedSolomonEncoder::encode(std::vector<byte> &toEncode, int ecBytes)
|
||||||
if (ecBytes == 0) {
|
if (ecBytes == 0) {
|
||||||
throw Exception("No error correction bytes");
|
throw Exception("No error correction bytes");
|
||||||
}
|
}
|
||||||
//int dataBytes = toEncode.size() - ecBytes;
|
|
||||||
int dataBytes = toEncode.size();// - ecBytes;
|
int dataBytes = toEncode.size();// - ecBytes;
|
||||||
toEncode.resize(toEncode.size()+ecBytes);
|
toEncode.resize(toEncode.size()+ecBytes);
|
||||||
if (dataBytes <= 0) {
|
if (dataBytes <= 0) {
|
||||||
|
@ -46,7 +46,7 @@ void ReedSolomonEncoder::encode(std::vector<byte> &toEncode, int ecBytes)
|
||||||
}
|
}
|
||||||
Ref<GenericGFPoly> generator = buildGenerator(ecBytes);
|
Ref<GenericGFPoly> generator = buildGenerator(ecBytes);
|
||||||
ArrayRef<int> infoCoefficients(dataBytes);
|
ArrayRef<int> infoCoefficients(dataBytes);
|
||||||
//memcpy(infoCoefficients.operator ->(), toEncode.data(), dataBytes);
|
|
||||||
//to-do optimize the following loop
|
//to-do optimize the following loop
|
||||||
for(int i=0; i< dataBytes; i++)
|
for(int i=0; i< dataBytes; i++)
|
||||||
infoCoefficients[i] = toEncode[i];
|
infoCoefficients[i] = toEncode[i];
|
||||||
|
@ -60,15 +60,6 @@ void ReedSolomonEncoder::encode(std::vector<byte> &toEncode, int ecBytes)
|
||||||
toEncode[dataBytes + i] = 0;
|
toEncode[dataBytes + i] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//original kept for future checks
|
|
||||||
//System.arraycopy(coefficients, 0, toEncode, dataBytes + numZeroCoefficients, coefficients.length);
|
|
||||||
|
|
||||||
//toEncode.insert(toEncode.begin() + (dataBytes-1) + numZeroCoefficients,
|
|
||||||
// coefficients.array_->values().begin(),
|
|
||||||
// coefficients.array_->values().end());
|
|
||||||
|
|
||||||
//toEncode.resize(toEncode.size() + numZeroCoefficients + coefficients->size());
|
|
||||||
|
|
||||||
for (size_t i = 0; i < coefficients->size(); i++)
|
for (size_t i = 0; i < coefficients->size(); i++)
|
||||||
toEncode[dataBytes + numZeroCoefficients + i] = coefficients[i];
|
toEncode[dataBytes + numZeroCoefficients + i] = coefficients[i];
|
||||||
}
|
}
|
||||||
|
|
|
@ -77,7 +77,7 @@ protected:
|
||||||
int numDataBytes,
|
int numDataBytes,
|
||||||
int numRSBlocks);
|
int numRSBlocks);
|
||||||
|
|
||||||
static ArrayRef<byte> generateECBytes(std::vector<byte> &dataBytes, int numEcBytesInBlock);
|
static ArrayRef<byte> generateECBytes(const std::vector<byte> &dataBytes, int numEcBytesInBlock);
|
||||||
|
|
||||||
static void appendNumericBytes(const QString& content, BitArray& bits);
|
static void appendNumericBytes(const QString& content, BitArray& bits);
|
||||||
|
|
||||||
|
|
|
@ -423,20 +423,17 @@ BitArray* Encoder::interleaveWithECBytes(const BitArray& bits,
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
ArrayRef<byte> Encoder::generateECBytes(std::vector<byte>& dataBytes, int numEcBytesInBlock)
|
ArrayRef<byte> Encoder::generateECBytes(const std::vector<byte>& dataBytes, int numEcBytesInBlock)
|
||||||
{
|
{
|
||||||
int numDataBytes = dataBytes.size();
|
int numDataBytes = dataBytes.size();
|
||||||
// std::vector<int> toEncode(numDataBytes);
|
std::vector<byte> dataBytesCopy(dataBytes);
|
||||||
//toEncode.resize(numDataBytes + numEcBytesInBlock);
|
|
||||||
// for (int i = 0; i < numDataBytes; i++)
|
|
||||||
// toEncode[i] = dataBytes[i];
|
|
||||||
|
|
||||||
zxing::ReedSolomonEncoder encoder(GenericGF::QR_CODE_FIELD_256);
|
zxing::ReedSolomonEncoder encoder(GenericGF::QR_CODE_FIELD_256);
|
||||||
encoder.encode(dataBytes, numEcBytesInBlock);
|
encoder.encode(dataBytesCopy, numEcBytesInBlock);
|
||||||
|
|
||||||
ArrayRef<byte> ecBytes(numEcBytesInBlock);
|
ArrayRef<byte> ecBytes(numEcBytesInBlock);
|
||||||
for (int i = 0; i < numEcBytesInBlock; i++) {
|
for (int i = 0; i < numEcBytesInBlock; i++) {
|
||||||
ecBytes[i] = dataBytes[numDataBytes + i];
|
ecBytes[i] = dataBytesCopy[numDataBytes + i];
|
||||||
}
|
}
|
||||||
return ecBytes;
|
return ecBytes;
|
||||||
}
|
}
|
||||||
|
|
|
@ -364,7 +364,7 @@ void EncoderTests::testGenerateECBytes()
|
||||||
const byte expected[] = {
|
const byte expected[] = {
|
||||||
42, 159, 74, 221, 244, 169, 239, 150, 138, 70, 237, 85, 224, 96, 74, 219, 61
|
42, 159, 74, 221, 244, 169, 239, 150, 138, 70, 237, 85, 224, 96, 74, 219, 61
|
||||||
};
|
};
|
||||||
assertEquals( getArrayLength(expected), ecBytes.count());
|
assertEquals( getArrayLength(expected), ecBytes->size());
|
||||||
for (int x = 0; x < getArrayLength(expected); x++) {
|
for (int x = 0; x < getArrayLength(expected); x++) {
|
||||||
assertEquals(expected[x], ecBytes[x]);
|
assertEquals(expected[x], ecBytes[x]);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue