Encoder.h Example File
appdemos/qtws/QZXing/zxing/zxing/qrcode/encoder/Encoder.h
#ifndef ENCODER_H
#define ENCODER_H
#include <vector>
#include <zxing/common/CharacterSetECI.h>
#include <zxing/qrcode/ErrorCorrectionLevel.h>
#include <zxing/qrcode/encoder/QRCode.h>
#include <zxing/EncodeHint.h>
#include <vector>
#include <string>
namespace zxing {
namespace qrcode {
class Encoder {
public:
static Ref<QRCode> encode(const std::string& content, ErrorCorrectionLevel &ecLevel);
static Ref<QRCode> encode(const std::string& content, ErrorCorrectionLevel &ecLevel, const EncodeHint* hints);
static int getAlphanumericCode(int code);
static Mode chooseMode(const std::string& content, const std::string& encoding = "");
static void appendModeInfo(const Mode& mode, BitArray &bits);
static void appendLengthInfo(int numLetters, const Version& version, const Mode& mode, BitArray& bits);
static void appendBytes(const std::string& content,
Mode& mode,
BitArray& bits,
const std::string& encoding);
protected:
static void terminateBits(int numDataBytes, BitArray& bits);
static void getNumDataBytesAndNumECBytesForBlockID(int numTotalBytes,
int numDataBytes,
int numRSBlocks,
int blockID,
std::vector<int>& numDataBytesInBlock,
std::vector<int>& numECBytesInBlock);
static BitArray* interleaveWithECBytes(const BitArray& bits,
int numTotalBytes,
int numDataBytes,
int numRSBlocks);
static ArrayRef<byte> generateECBytes(const std::vector<byte> &dataBytes, int numEcBytesInBlock);
static void appendNumericBytes(const std::string& content, BitArray& bits);
static void appendAlphanumericBytes(const std::string& content, BitArray& bits);
static void append8BitBytes(const std::string& content, BitArray& bits, const std::string& encoding);
static void appendKanjiBytes(const std::string& content, BitArray& bits);
private:
static int chooseMaskPattern(Ref<BitArray> bits,
ErrorCorrectionLevel& ecLevel,
Ref<Version> version,
Ref<ByteMatrix> matrix);
static Ref<Version> chooseVersion(int numInputBits, const ErrorCorrectionLevel &ecLevel) ;
static void appendECI(const zxing::common::CharacterSetECI& eci, BitArray& bits);
static int calculateMaskPenalty(const ByteMatrix& matrix);
static int calculateBitsNeeded(const Mode &mode, const BitArray &headerBits, const BitArray &dataBits, const
Ref<Version> version);
static bool willFit(int numInputBits, Ref<Version> version, const ErrorCorrectionLevel &ecLevel);
static Ref<Version> recommendVersion(ErrorCorrectionLevel &ecLevel,
Mode &mode,
BitArray &headerBits,
BitArray &dataBits);
static const int ALPHANUMERIC_TABLE_SIZE;
static const int ALPHANUMERIC_TABLE[];
public:
static const std::string DEFAULT_BYTE_MODE_ENCODING;
};
}
}
#endif // ENCODER_H