72 lines
1.1 KiB
C
72 lines
1.1 KiB
C
|
|
/*
|
||
|
|
* Copyright 2016 Nu-book Inc.
|
||
|
|
* Copyright 2016 ZXing authors
|
||
|
|
*/
|
||
|
|
// SPDX-License-Identifier: Apache-2.0
|
||
|
|
|
||
|
|
#pragma once
|
||
|
|
|
||
|
|
namespace ZXing {
|
||
|
|
namespace Pdf417 {
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @author Guenther Grau
|
||
|
|
*/
|
||
|
|
class Codeword
|
||
|
|
{
|
||
|
|
static const int BARCODE_ROW_UNKNOWN = -1;
|
||
|
|
|
||
|
|
int _startX = 0;
|
||
|
|
int _endX = 0;
|
||
|
|
int _bucket = 0;
|
||
|
|
int _value = 0;
|
||
|
|
int _rowNumber = BARCODE_ROW_UNKNOWN;
|
||
|
|
|
||
|
|
public:
|
||
|
|
Codeword() {}
|
||
|
|
Codeword(int startX, int endX, int bucket, int value) : _startX(startX), _endX(endX), _bucket(bucket), _value(value) {}
|
||
|
|
|
||
|
|
bool hasValidRowNumber() const {
|
||
|
|
return isValidRowNumber(_rowNumber);
|
||
|
|
}
|
||
|
|
|
||
|
|
bool isValidRowNumber(int rowNumber) const {
|
||
|
|
return rowNumber != BARCODE_ROW_UNKNOWN && _bucket == (rowNumber % 3) * 3;
|
||
|
|
}
|
||
|
|
|
||
|
|
void setRowNumberAsRowIndicatorColumn() {
|
||
|
|
_rowNumber = (_value / 30) * 3 + _bucket / 3;
|
||
|
|
}
|
||
|
|
|
||
|
|
int width() const {
|
||
|
|
return _endX - _startX;
|
||
|
|
}
|
||
|
|
|
||
|
|
int startX() const {
|
||
|
|
return _startX;
|
||
|
|
}
|
||
|
|
|
||
|
|
int endX() const {
|
||
|
|
return _endX;
|
||
|
|
}
|
||
|
|
|
||
|
|
int bucket() const {
|
||
|
|
return _bucket;
|
||
|
|
}
|
||
|
|
|
||
|
|
int value() const {
|
||
|
|
return _value;
|
||
|
|
}
|
||
|
|
|
||
|
|
int rowNumber() const {
|
||
|
|
return _rowNumber;
|
||
|
|
}
|
||
|
|
|
||
|
|
void setRowNumber(int rowNumber) {
|
||
|
|
_rowNumber = rowNumber;
|
||
|
|
}
|
||
|
|
};
|
||
|
|
|
||
|
|
} // Pdf417
|
||
|
|
} // ZXing
|