31 m_inputWidth = codeWidth;
32 m_inputHeight = codeHeight;
33 int32_t tempWidth = m_inputWidth + 2;
34 int32_t tempHeight = m_inputHeight + 2;
35 const float module_size =
39 scaledWidth *= module_size;
40 scaledHeight *= module_size;
41 m_outputWidth = scaledWidth.ValueOrDie();
42 m_outputHeight = scaledHeight.ValueOrDie();
50 int32_t width_factor =
static_cast<int32_t>(
51 floor(
static_cast<
float>(
m_Width) / m_outputWidth));
52 int32_t height_factor =
static_cast<int32_t>(
53 floor(
static_cast<
float>(
m_Height) / m_outputHeight));
54 width_factor =
std::max(width_factor, 1);
55 height_factor =
std::max(height_factor, 1);
57 m_outputWidth *= width_factor;
58 m_outputHeight *= height_factor;
62 static_cast<int32_t>(ceil(
static_cast<
float>(m_outputWidth) / tempWidth));
63 m_multiY =
static_cast<int32_t>(
64 ceil(
static_cast<
float>(m_outputHeight) / tempHeight));
66 m_multiX =
std::min(m_multiX, m_multiY);
70 m_leftPadding =
std::max((
m_Width - m_outputWidth) / 2, 0);
71 m_topPadding =
std::max((
m_Height - m_outputHeight) / 2, 0);
73 m_output = std::make_unique<CBC_CommonBitMatrix>(m_inputWidth, m_inputHeight);
74 for (int32_t y = 0; y < m_inputHeight; ++y) {
75 for (int32_t x = 0; x < m_inputWidth; ++x) {
76 if (code[x + y * m_inputWidth] == 1)
92 int32_t leftPos = m_leftPadding;
93 int32_t topPos = m_topPadding;
98 static_cast<
float>(
m_Height) / m_outputHeight
, 0.0
,
105 for (int32_t x = 0; x < m_inputWidth; x++) {
106 for (int32_t y = 0; y < m_inputHeight; y++) {
107 if (m_output->Get(x, y)) {
110 int start_x_output = x + 1;
111 int end_x_output = x + 2;
112 int start_y_output = y + 1;
113 int end_y_output = y + 2;
117 topPos + start_y_output * m_multiY
,
118 leftPos + end_x_output * m_multiX
,
119 topPos + end_y_output * m_multiY
);
bool DrawPath(const CFX_Path &path, const CFX_Matrix *pObject2Device, const CFX_GraphStateData *pGraphState, uint32_t fill_color, uint32_t stroke_color, const CFX_FillRenderOptions &fill_options)