DecodedBitStreamParser.h Example File
appdemos/qtws/QZXing/zxing/zxing/datamatrix/decoder/DecodedBitStreamParser.h
#ifndef __DECODED_BIT_STREAM_PARSER_DM_H__
#define __DECODED_BIT_STREAM_PARSER_DM_H__
#include <string>
#include <sstream>
#include <zxing/common/Array.h>
#include <zxing/common/BitSource.h>
#include <zxing/common/Counted.h>
#include <zxing/common/DecoderResult.h>
namespace zxing {
namespace datamatrix {
class DecodedBitStreamParser {
private:
static const int PAD_ENCODE = 0;
static const int ASCII_ENCODE = 1;
static const int C40_ENCODE = 2;
static const int TEXT_ENCODE = 3;
static const int ANSIX12_ENCODE = 4;
static const int EDIFACT_ENCODE = 5;
static const int BASE256_ENCODE = 6;
static const char C40_BASIC_SET_CHARS[];
static const char C40_SHIFT2_SET_CHARS[];
static const char TEXT_BASIC_SET_CHARS[];
static const char TEXT_SHIFT3_SET_CHARS[];
int decodeAsciiSegment(Ref<BitSource> bits, std::ostringstream &result, std::ostringstream &resultTrailer);
void decodeC40Segment(Ref<BitSource> bits, std::ostringstream &result);
void decodeTextSegment(Ref<BitSource> bits, std::ostringstream &result);
void decodeAnsiX12Segment(Ref<BitSource> bits, std::ostringstream &result);
void decodeEdifactSegment(Ref<BitSource> bits, std::ostringstream &result);
void decodeBase256Segment(Ref<BitSource> bits, std::ostringstream &result, std::vector<byte> byteSegments);
void parseTwoBytes(int firstByte, int secondByte, int* result);
char unrandomize255State(int randomizedBase256Codeword,
int base256CodewordPosition) {
int pseudoRandomNumber = ((149 * base256CodewordPosition) % 255) + 1;
int tempVariable = randomizedBase256Codeword - pseudoRandomNumber;
return (byte) (tempVariable >= 0 ? tempVariable : (tempVariable + 256));
};
void append(std::ostream &ost, const char *bufIn, size_t nIn, const char *src);
public:
DecodedBitStreamParser() { };
Ref<DecoderResult> decode(ArrayRef<byte> bytes);
};
}
}
#endif // __DECODED_BIT_STREAM_PARSER_DM_H__