QRCodeLibrary/QRCodeLibrary/DataBlocks.hpp
dm1sh d9f9a26bde
Fixed error correction bytes number to write in final bytes array
Added exclipt size_t to unsigned conversion
Fixed google test in Visual Studio
2021-12-21 15:00:26 +03:00

29 lines
968 B
C++

#pragma once
#include <vector>
#include "BitArray.hpp"
#include "Method.hpp"
using namespace std;
class DataBlocks
{
public:
DataBlocks(const vector<unsigned char>& e_data_, CorrectionLevel corr_lvl_, char version_) : e_data{ e_data_ }, corr_lvl{ corr_lvl_ }, version{ version_ } {};
vector<unsigned char>& compose_joined_data_and_EC_blocks();
static void divide_to_blocks(vector<pair<unsigned, unsigned>>& db_sizes, unsigned data_size, unsigned db_number);
static void compose_EC_bytes(vector<unsigned char>& res, const vector<unsigned char>::const_iterator& src, unsigned corr_bytes_num, unsigned db_size);
static void join_data_and_EC_blocks(vector<unsigned char>&res, const vector<unsigned char>& e_data, const vector<pair<unsigned, unsigned>>& db_sizes, const vector<vector<unsigned char>>& ec_codes, unsigned ec_bytes_number);
private:
const vector<unsigned char>& e_data;
CorrectionLevel corr_lvl;
char version;
vector<unsigned char> data;
};