diff options
Diffstat (limited to 'xfa/src/fxbarcode/pdf417/BC_PDF417Writer.cpp')
-rw-r--r-- | xfa/src/fxbarcode/pdf417/BC_PDF417Writer.cpp | 180 |
1 files changed, 94 insertions, 86 deletions
diff --git a/xfa/src/fxbarcode/pdf417/BC_PDF417Writer.cpp b/xfa/src/fxbarcode/pdf417/BC_PDF417Writer.cpp index 6dd4a8264f..b3263f5559 100644 --- a/xfa/src/fxbarcode/pdf417/BC_PDF417Writer.cpp +++ b/xfa/src/fxbarcode/pdf417/BC_PDF417Writer.cpp @@ -28,99 +28,107 @@ #include "BC_PDF417.h"
#include "BC_PDF417BarcodeMatrix.h"
#include "BC_PDF417Writer.h"
-CBC_PDF417Writer::CBC_PDF417Writer()
-{
- m_bFixedSize = FALSE;
+CBC_PDF417Writer::CBC_PDF417Writer() {
+ m_bFixedSize = FALSE;
}
-CBC_PDF417Writer::~CBC_PDF417Writer()
-{
- m_bTruncated = TRUE;
+CBC_PDF417Writer::~CBC_PDF417Writer() {
+ m_bTruncated = TRUE;
}
-FX_BOOL CBC_PDF417Writer:: SetErrorCorrectionLevel(int32_t level)
-{
- if (level < 0 || level > 8) {
- return FALSE;
- }
- m_iCorrectLevel = level;
- return TRUE;
-}
-void CBC_PDF417Writer::SetTruncated(FX_BOOL truncated)
-{
- m_bTruncated = truncated;
+FX_BOOL CBC_PDF417Writer::SetErrorCorrectionLevel(int32_t level) {
+ if (level < 0 || level > 8) {
+ return FALSE;
+ }
+ m_iCorrectLevel = level;
+ return TRUE;
}
-uint8_t* CBC_PDF417Writer::Encode(const CFX_ByteString &contents, BCFORMAT format, int32_t &outWidth, int32_t &outHeight, int32_t &e)
-{
- if ( format != BCFORMAT_PDF_417) {
- return NULL;
- }
- CFX_WideString encodeContents = contents.UTF8Decode();
- return Encode(encodeContents, outWidth, outHeight, e );
+void CBC_PDF417Writer::SetTruncated(FX_BOOL truncated) {
+ m_bTruncated = truncated;
}
-uint8_t* CBC_PDF417Writer::Encode(const CFX_ByteString &contents, BCFORMAT format, int32_t &outWidth, int32_t &outHeight, int32_t hints, int32_t &e)
-{
+uint8_t* CBC_PDF417Writer::Encode(const CFX_ByteString& contents,
+ BCFORMAT format,
+ int32_t& outWidth,
+ int32_t& outHeight,
+ int32_t& e) {
+ if (format != BCFORMAT_PDF_417) {
return NULL;
+ }
+ CFX_WideString encodeContents = contents.UTF8Decode();
+ return Encode(encodeContents, outWidth, outHeight, e);
}
-uint8_t* CBC_PDF417Writer::Encode(const CFX_WideString &contents, int32_t &outWidth, int32_t &outHeight, int32_t &e)
-{
- CBC_PDF417 encoder;
- int32_t col = (m_Width / m_ModuleWidth - 69) / 17;
- int32_t row = m_Height / (m_ModuleWidth * 20);
- if (row >= 3 && row <= 90 && col >= 1 && col <= 30) {
- encoder.setDimensions(col, col, row, row);
- } else if (col >= 1 && col <= 30) {
- encoder.setDimensions(col, col, 90, 3);
- } else if (row >= 3 && row <= 90) {
- encoder.setDimensions(30, 1, row, row);
- }
- encoder.generateBarcodeLogic(contents, m_iCorrectLevel, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
- int32_t lineThickness = 2;
- int32_t aspectRatio = 4;
- CBC_BarcodeMatrix* barcodeMatrix = encoder.getBarcodeMatrix();
- CFX_ByteArray originalScale;
- originalScale.Copy(barcodeMatrix->getScaledMatrix(lineThickness, aspectRatio * lineThickness));
- int32_t width = outWidth;
- int32_t height = outHeight;
- outWidth = barcodeMatrix->getWidth();
- outHeight = barcodeMatrix->getHeight();
- FX_BOOL rotated = FALSE;
- if ((height > width) ^ (outWidth < outHeight)) {
- rotateArray(originalScale, outHeight, outWidth);
- rotated = TRUE;
- int32_t temp = outHeight;
- outHeight = outWidth;
- outWidth = temp;
- }
- int32_t scaleX = width / outWidth;
- int32_t scaleY = height / outHeight;
- int32_t scale;
- if (scaleX < scaleY) {
- scale = scaleX;
- } else {
- scale = scaleY;
- }
- if (scale > 1) {
- originalScale.RemoveAll();
- originalScale.Copy(barcodeMatrix->getScaledMatrix(scale * lineThickness, scale * aspectRatio * lineThickness));
- if (rotated) {
- rotateArray(originalScale, outHeight, outWidth);
- int32_t temp = outHeight;
- outHeight = outWidth;
- outWidth = temp;
- }
+uint8_t* CBC_PDF417Writer::Encode(const CFX_ByteString& contents,
+ BCFORMAT format,
+ int32_t& outWidth,
+ int32_t& outHeight,
+ int32_t hints,
+ int32_t& e) {
+ return NULL;
+}
+uint8_t* CBC_PDF417Writer::Encode(const CFX_WideString& contents,
+ int32_t& outWidth,
+ int32_t& outHeight,
+ int32_t& e) {
+ CBC_PDF417 encoder;
+ int32_t col = (m_Width / m_ModuleWidth - 69) / 17;
+ int32_t row = m_Height / (m_ModuleWidth * 20);
+ if (row >= 3 && row <= 90 && col >= 1 && col <= 30) {
+ encoder.setDimensions(col, col, row, row);
+ } else if (col >= 1 && col <= 30) {
+ encoder.setDimensions(col, col, 90, 3);
+ } else if (row >= 3 && row <= 90) {
+ encoder.setDimensions(30, 1, row, row);
+ }
+ encoder.generateBarcodeLogic(contents, m_iCorrectLevel, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
+ int32_t lineThickness = 2;
+ int32_t aspectRatio = 4;
+ CBC_BarcodeMatrix* barcodeMatrix = encoder.getBarcodeMatrix();
+ CFX_ByteArray originalScale;
+ originalScale.Copy(barcodeMatrix->getScaledMatrix(
+ lineThickness, aspectRatio * lineThickness));
+ int32_t width = outWidth;
+ int32_t height = outHeight;
+ outWidth = barcodeMatrix->getWidth();
+ outHeight = barcodeMatrix->getHeight();
+ FX_BOOL rotated = FALSE;
+ if ((height > width) ^ (outWidth < outHeight)) {
+ rotateArray(originalScale, outHeight, outWidth);
+ rotated = TRUE;
+ int32_t temp = outHeight;
+ outHeight = outWidth;
+ outWidth = temp;
+ }
+ int32_t scaleX = width / outWidth;
+ int32_t scaleY = height / outHeight;
+ int32_t scale;
+ if (scaleX < scaleY) {
+ scale = scaleX;
+ } else {
+ scale = scaleY;
+ }
+ if (scale > 1) {
+ originalScale.RemoveAll();
+ originalScale.Copy(barcodeMatrix->getScaledMatrix(
+ scale * lineThickness, scale * aspectRatio * lineThickness));
+ if (rotated) {
+ rotateArray(originalScale, outHeight, outWidth);
+ int32_t temp = outHeight;
+ outHeight = outWidth;
+ outWidth = temp;
}
- uint8_t* result = (uint8_t*)FX_Alloc(uint8_t, outHeight * outWidth);
- FXSYS_memcpy(result, originalScale.GetData(), outHeight * outWidth);
- return result;
+ }
+ uint8_t* result = (uint8_t*)FX_Alloc(uint8_t, outHeight * outWidth);
+ FXSYS_memcpy(result, originalScale.GetData(), outHeight * outWidth);
+ return result;
}
-void CBC_PDF417Writer::rotateArray(CFX_ByteArray& bitarray, int32_t height, int32_t width)
-{
- CFX_ByteArray temp;
- temp.Copy(bitarray);
- for (int32_t ii = 0; ii < height; ii++) {
- int32_t inverseii = height - ii - 1;
- for (int32_t jj = 0; jj < width; jj++) {
- bitarray[jj * height + inverseii] = temp[ii * width + jj];
- }
+void CBC_PDF417Writer::rotateArray(CFX_ByteArray& bitarray,
+ int32_t height,
+ int32_t width) {
+ CFX_ByteArray temp;
+ temp.Copy(bitarray);
+ for (int32_t ii = 0; ii < height; ii++) {
+ int32_t inverseii = height - ii - 1;
+ for (int32_t jj = 0; jj < width; jj++) {
+ bitarray[jj * height + inverseii] = temp[ii * width + jj];
}
+ }
}
|