summaryrefslogtreecommitdiff
path: root/xfa
diff options
context:
space:
mode:
authorDan Sinclair <dsinclair@chromium.org>2016-03-21 15:15:56 -0400
committerDan Sinclair <dsinclair@chromium.org>2016-03-21 15:15:56 -0400
commita98600aeb8d815c297834aa5006f5c3ea20dde6d (patch)
treef5e8d107353a1355378f096098c58b01b3d8f828 /xfa
parent69bbb0010cb83a7fa63d0901df6aef1de0ccfc0c (diff)
downloadpdfium-a98600aeb8d815c297834aa5006f5c3ea20dde6d.tar.xz
Move xfa/include/fxbarcode/BC_Barcode.h to xfa/fxbarcode.
This CL splits apart the larger header into individual class headers in the xfa/fxbarcode directory. R=tsepez@chromium.org Review URL: https://codereview.chromium.org/1816133002 .
Diffstat (limited to 'xfa')
-rw-r--r--xfa/fwl/basewidget/fxmath_barcodeimp.cpp15
-rw-r--r--xfa/fwl/basewidget/fxmath_barcodeimp.h8
-rw-r--r--xfa/fxbarcode/BC_BarCode.cpp877
-rw-r--r--xfa/fxbarcode/BC_Library.cpp70
-rw-r--r--xfa/fxbarcode/cbc_codabar.cpp121
-rw-r--r--xfa/fxbarcode/cbc_codabar.h40
-rw-r--r--xfa/fxbarcode/cbc_code128.cpp106
-rw-r--r--xfa/fxbarcode/cbc_code128.h37
-rw-r--r--xfa/fxbarcode/cbc_code39.cpp124
-rw-r--r--xfa/fxbarcode/cbc_code39.h39
-rw-r--r--xfa/fxbarcode/cbc_codebase.cpp58
-rw-r--r--xfa/fxbarcode/cbc_codebase.h52
-rw-r--r--xfa/fxbarcode/cbc_datamatrix.cpp83
-rw-r--r--xfa/fxbarcode/cbc_datamatrix.h32
-rw-r--r--xfa/fxbarcode/cbc_ean13.cpp114
-rw-r--r--xfa/fxbarcode/cbc_ean13.h36
-rw-r--r--xfa/fxbarcode/cbc_ean8.cpp113
-rw-r--r--xfa/fxbarcode/cbc_ean8.h36
-rw-r--r--xfa/fxbarcode/cbc_onecode.cpp77
-rw-r--r--xfa/fxbarcode/cbc_onecode.h52
-rw-r--r--xfa/fxbarcode/cbc_pdf417i.cpp91
-rw-r--r--xfa/fxbarcode/cbc_pdf417i.h35
-rw-r--r--xfa/fxbarcode/cbc_qrcode.cpp101
-rw-r--r--xfa/fxbarcode/cbc_qrcode.h35
-rw-r--r--xfa/fxbarcode/cbc_upca.cpp116
-rw-r--r--xfa/fxbarcode/cbc_upca.h33
-rw-r--r--xfa/fxbarcode/include/BC_Library.h38
-rw-r--r--xfa/fxbarcode/oned/BC_OneDimWriter.h35
-rw-r--r--xfa/fxbarcode/oned/BC_OnedCodaBarWriter.h16
-rw-r--r--xfa/fxbarcode/oned/BC_OnedCode128Reader.h4
-rw-r--r--xfa/fxbarcode/oned/BC_OnedCode128Writer.cpp6
-rw-r--r--xfa/fxbarcode/oned/BC_OnedCode128Writer.h21
-rw-r--r--xfa/fxbarcode/oned/BC_OnedCode39Reader.cpp1
-rw-r--r--xfa/fxbarcode/oned/BC_OnedCode39Reader.h16
-rw-r--r--xfa/fxbarcode/oned/BC_OnedCode39Writer.h10
-rw-r--r--xfa/fxbarcode/oned/BC_OnedEAN13Reader.h13
-rw-r--r--xfa/fxbarcode/oned/BC_OnedEAN13Writer.h16
-rw-r--r--xfa/fxbarcode/oned/BC_OnedEAN8Reader.h5
-rw-r--r--xfa/fxbarcode/oned/BC_OnedEAN8Writer.h13
-rw-r--r--xfa/fxbarcode/oned/BC_OnedUPCAReader.h18
-rw-r--r--xfa/fxbarcode/oned/BC_OnedUPCAWriter.h18
-rw-r--r--xfa/fxbarcode/pdf417/BC_PDF417Reader.h6
-rw-r--r--xfa/fxbarcode/pdf417/BC_PDF417Writer.h6
-rw-r--r--xfa/fxfa/app/xfa_ffbarcode.h2
-rw-r--r--xfa/fxfa/parser/xfa_objectacc_imp.cpp2
-rw-r--r--xfa/include/fwl/basewidget/fwl_barcode.h5
-rw-r--r--xfa/include/fwl/basewidget/fxmath_barcode.h12
-rw-r--r--xfa/include/fwl/lightwidget/barcode.h1
-rw-r--r--xfa/include/fxbarcode/BC_BarCode.h257
49 files changed, 1742 insertions, 1280 deletions
diff --git a/xfa/fwl/basewidget/fxmath_barcodeimp.cpp b/xfa/fwl/basewidget/fxmath_barcodeimp.cpp
index c27805ef83..9792c6f7cc 100644
--- a/xfa/fwl/basewidget/fxmath_barcodeimp.cpp
+++ b/xfa/fwl/basewidget/fxmath_barcodeimp.cpp
@@ -6,6 +6,17 @@
#include "xfa/fwl/basewidget/fxmath_barcodeimp.h"
+#include "xfa/fxbarcode/cbc_codabar.h"
+#include "xfa/fxbarcode/cbc_code128.h"
+#include "xfa/fxbarcode/cbc_code39.h"
+#include "xfa/fxbarcode/cbc_codebase.h"
+#include "xfa/fxbarcode/cbc_datamatrix.h"
+#include "xfa/fxbarcode/cbc_ean13.h"
+#include "xfa/fxbarcode/cbc_ean8.h"
+#include "xfa/fxbarcode/cbc_pdf417i.h"
+#include "xfa/fxbarcode/cbc_qrcode.h"
+#include "xfa/fxbarcode/cbc_upca.h"
+
static CBC_CodeBase* FX_Barcode_CreateBarCodeEngineObject(BC_TYPE type) {
switch (type) {
case BC_CODE39:
@@ -42,7 +53,7 @@ CFX_Barcode::~CFX_Barcode() {
m_pBCEngine = NULL;
}
}
-FX_BOOL CFX_Barcode::Crreate(BC_TYPE type) {
+FX_BOOL CFX_Barcode::Create(BC_TYPE type) {
m_pBCEngine = FX_Barcode_CreateBarCodeEngineObject(type);
return m_pBCEngine != NULL;
}
@@ -377,7 +388,7 @@ CFX_WideString CFX_Barcode::Decode(CFX_DIBitmap* pBitmap, int32_t& errorCode) {
}
IFX_Barcode* FX_Barcode_Create(BC_TYPE type) {
CFX_Barcode* pBarcode = new CFX_Barcode;
- if (pBarcode->Crreate(type)) {
+ if (pBarcode->Create(type)) {
return pBarcode;
}
pBarcode->Release();
diff --git a/xfa/fwl/basewidget/fxmath_barcodeimp.h b/xfa/fwl/basewidget/fxmath_barcodeimp.h
index a26761e0d7..077aeea952 100644
--- a/xfa/fwl/basewidget/fxmath_barcodeimp.h
+++ b/xfa/fwl/basewidget/fxmath_barcodeimp.h
@@ -7,13 +7,19 @@
#ifndef XFA_FWL_BASEWIDGET_FXMATH_BARCODEIMP_H_
#define XFA_FWL_BASEWIDGET_FXMATH_BARCODEIMP_H_
+#include "core/include/fxcrt/fx_string.h"
+#include "core/include/fxcrt/fx_system.h"
+#include "xfa/fxbarcode/include/BC_Library.h"
#include "xfa/include/fwl/basewidget/fxmath_barcode.h"
+class CBC_CodeBase;
+
class CFX_Barcode : public IFX_Barcode {
public:
CFX_Barcode();
~CFX_Barcode();
- FX_BOOL Crreate(BC_TYPE type);
+
+ FX_BOOL Create(BC_TYPE type);
virtual void Release();
virtual BC_TYPE GetType();
virtual FX_BOOL Encode(const CFX_WideStringC& contents,
diff --git a/xfa/fxbarcode/BC_BarCode.cpp b/xfa/fxbarcode/BC_BarCode.cpp
deleted file mode 100644
index 11f47b5578..0000000000
--- a/xfa/fxbarcode/BC_BarCode.cpp
+++ /dev/null
@@ -1,877 +0,0 @@
-// Copyright 2014 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-// Original code is licensed as follows:
-/*
- * Copyright 2011 ZXing authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "xfa/fxbarcode/BC_Binarizer.h"
-#include "xfa/fxbarcode/BC_BinaryBitmap.h"
-#include "xfa/fxbarcode/BC_BinaryBitmap.h"
-#include "xfa/fxbarcode/BC_BufferedImageLuminanceSource.h"
-#include "xfa/fxbarcode/BC_DecoderResult.h"
-#include "xfa/fxbarcode/BC_LuminanceSource.h"
-#include "xfa/fxbarcode/BC_Reader.h"
-#include "xfa/fxbarcode/BC_ResultPoint.h"
-#include "xfa/fxbarcode/BC_TwoDimWriter.h"
-#include "xfa/fxbarcode/BC_UtilCodingConvert.h"
-#include "xfa/fxbarcode/BC_Writer.h"
-#include "xfa/fxbarcode/common/BC_CommonBitArray.h"
-#include "xfa/fxbarcode/common/BC_CommonBitMatrix.h"
-#include "xfa/fxbarcode/common/BC_CommonBitMatrix.h"
-#include "xfa/fxbarcode/common/BC_CommonDecoderResult.h"
-#include "xfa/fxbarcode/common/BC_GlobalHistogramBinarizer.h"
-#include "xfa/fxbarcode/datamatrix/BC_DataMatrixReader.h"
-#include "xfa/fxbarcode/datamatrix/BC_DataMatrixWriter.h"
-#include "xfa/fxbarcode/oned/BC_OneDReader.h"
-#include "xfa/fxbarcode/oned/BC_OneDimReader.h"
-#include "xfa/fxbarcode/oned/BC_OneDimWriter.h"
-#include "xfa/fxbarcode/oned/BC_OnedCodaBarReader.h"
-#include "xfa/fxbarcode/oned/BC_OnedCodaBarWriter.h"
-#include "xfa/fxbarcode/oned/BC_OnedCode128Reader.h"
-#include "xfa/fxbarcode/oned/BC_OnedCode128Writer.h"
-#include "xfa/fxbarcode/oned/BC_OnedCode39Reader.h"
-#include "xfa/fxbarcode/oned/BC_OnedCode39Writer.h"
-#include "xfa/fxbarcode/oned/BC_OnedEAN13Reader.h"
-#include "xfa/fxbarcode/oned/BC_OnedEAN13Writer.h"
-#include "xfa/fxbarcode/oned/BC_OnedEAN8Reader.h"
-#include "xfa/fxbarcode/oned/BC_OnedEAN8Writer.h"
-#include "xfa/fxbarcode/oned/BC_OnedUPCAReader.h"
-#include "xfa/fxbarcode/oned/BC_OnedUPCAWriter.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417BarcodeMetadata.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417BarcodeValue.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417BoundingBox.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417Codeword.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417CodewordDecoder.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417Common.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417Compaction.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417DecodedBitStreamParser.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417DecodedBitStreamParser.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417DecodedBitStreamParser.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417DetectionResult.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417DetectionResultColumn.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417DetectionResultRowIndicatorColumn.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417Detector.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417DetectorResult.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417DetectorResult.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417ECErrorCorrection.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417ECModulusGF.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417ECModulusPoly.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417HighLevelEncoder.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417Reader.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417ScanningDecoder.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417Writer.h"
-#include "xfa/fxbarcode/qrcode/BC_QRCodeReader.h"
-#include "xfa/fxbarcode/qrcode/BC_QRCodeWriter.h"
-
-CBC_CodeBase::CBC_CodeBase() {}
-CBC_CodeBase::~CBC_CodeBase() {}
-FX_BOOL CBC_CodeBase::SetCharEncoding(int32_t encoding) {
- if (m_pBCWriter) {
- return m_pBCWriter->SetCharEncoding(encoding);
- }
- return FALSE;
-}
-FX_BOOL CBC_CodeBase::SetModuleHeight(int32_t moduleHeight) {
- if (m_pBCWriter) {
- return m_pBCWriter->SetModuleHeight(moduleHeight);
- }
- return FALSE;
-}
-FX_BOOL CBC_CodeBase::SetModuleWidth(int32_t moduleWidth) {
- if (m_pBCWriter) {
- return m_pBCWriter->SetModuleWidth(moduleWidth);
- }
- return FALSE;
-}
-FX_BOOL CBC_CodeBase::SetHeight(int32_t height) {
- if (m_pBCWriter) {
- return m_pBCWriter->SetHeight(height);
- }
- return FALSE;
-}
-FX_BOOL CBC_CodeBase::SetWidth(int32_t width) {
- if (m_pBCWriter) {
- return m_pBCWriter->SetWidth(width);
- }
- return FALSE;
-}
-void CBC_CodeBase::SetBackgroundColor(FX_ARGB backgroundColor) {
- if (m_pBCWriter) {
- m_pBCWriter->SetBackgroundColor(backgroundColor);
- }
-}
-void CBC_CodeBase::SetBarcodeColor(FX_ARGB foregroundColor) {
- if (m_pBCWriter) {
- m_pBCWriter->SetBarcodeColor(foregroundColor);
- }
-}
-CBC_OneCode::CBC_OneCode() {}
-CBC_OneCode::~CBC_OneCode() {}
-FX_BOOL CBC_OneCode::CheckContentValidity(const CFX_WideStringC& contents) {
- if (m_pBCWriter) {
- return ((CBC_OneDimWriter*)m_pBCWriter)->CheckContentValidity(contents);
- }
- return FALSE;
-}
-CFX_WideString CBC_OneCode::FilterContents(const CFX_WideStringC& contents) {
- CFX_WideString tmp;
- if (m_pBCWriter == NULL) {
- return tmp;
- }
- return ((CBC_OneDimWriter*)m_pBCWriter)->FilterContents(contents);
-}
-void CBC_OneCode::SetPrintChecksum(FX_BOOL checksum) {
- if (m_pBCWriter) {
- ((CBC_OneDimWriter*)m_pBCWriter)->SetPrintChecksum(checksum);
- }
-}
-void CBC_OneCode::SetDataLength(int32_t length) {
- if (m_pBCWriter) {
- ((CBC_OneDimWriter*)m_pBCWriter)->SetDataLength(length);
- }
-}
-void CBC_OneCode::SetCalChecksum(FX_BOOL calc) {
- if (m_pBCWriter) {
- ((CBC_OneDimWriter*)m_pBCWriter)->SetCalcChecksum(calc);
- }
-}
-FX_BOOL CBC_OneCode::SetFont(CFX_Font* cFont) {
- if (m_pBCWriter) {
- return ((CBC_OneDimWriter*)m_pBCWriter)->SetFont(cFont);
- }
- return FALSE;
-}
-void CBC_OneCode::SetFontSize(FX_FLOAT size) {
- if (m_pBCWriter) {
- ((CBC_OneDimWriter*)m_pBCWriter)->SetFontSize(size);
- }
-}
-void CBC_OneCode::SetFontStyle(int32_t style) {
- if (m_pBCWriter) {
- ((CBC_OneDimWriter*)m_pBCWriter)->SetFontStyle(style);
- }
-}
-void CBC_OneCode::SetFontColor(FX_ARGB color) {
- if (m_pBCWriter) {
- ((CBC_OneDimWriter*)m_pBCWriter)->SetFontColor(color);
- }
-}
-CBC_Code39::CBC_Code39() {
- m_pBCReader = (CBC_Reader*)new (CBC_OnedCode39Reader);
- m_pBCWriter = (CBC_Writer*)new (CBC_OnedCode39Writer);
-}
-CBC_Code39::CBC_Code39(FX_BOOL usingCheckDigit) {
- m_pBCReader = (CBC_Reader*)new CBC_OnedCode39Reader(usingCheckDigit);
- m_pBCWriter = (CBC_Writer*)new CBC_OnedCode39Writer;
-}
-CBC_Code39::CBC_Code39(FX_BOOL usingCheckDigit, FX_BOOL extendedMode) {
- m_pBCReader =
- (CBC_Reader*)new CBC_OnedCode39Reader(usingCheckDigit, extendedMode);
- m_pBCWriter = (CBC_Writer*)new CBC_OnedCode39Writer(extendedMode);
-}
-CBC_Code39::~CBC_Code39() {
- if (m_pBCReader) {
- delete (m_pBCReader);
- m_pBCReader = NULL;
- }
- if (m_pBCWriter) {
- delete (m_pBCWriter);
- m_pBCWriter = NULL;
- }
-}
-FX_BOOL CBC_Code39::Encode(const CFX_WideStringC& contents,
- FX_BOOL isDevice,
- int32_t& e) {
- if (contents.IsEmpty()) {
- e = BCExceptionNoContents;
- return FALSE;
- }
- BCFORMAT format = BCFORMAT_CODE_39;
- int32_t outWidth = 0;
- int32_t outHeight = 0;
- CFX_WideString filtercontents =
- ((CBC_OnedCode39Writer*)m_pBCWriter)->FilterContents(contents);
- CFX_WideString renderContents =
- ((CBC_OnedCode39Writer*)m_pBCWriter)->RenderTextContents(contents);
- m_renderContents = renderContents;
- CFX_ByteString byteString = filtercontents.UTF8Encode();
- uint8_t* data = static_cast<CBC_OnedCode39Writer*>(m_pBCWriter)
- ->Encode(byteString, format, outWidth, outHeight, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- ((CBC_OneDimWriter*)m_pBCWriter)
- ->RenderResult(renderContents, data, outWidth, isDevice, e);
- FX_Free(data);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- return TRUE;
-}
-FX_BOOL CBC_Code39::RenderDevice(CFX_RenderDevice* device,
- const CFX_Matrix* matirx,
- int32_t& e) {
- CFX_WideString renderCon = ((CBC_OnedCode39Writer*)m_pBCWriter)
- ->encodedContents(m_renderContents, e);
- ((CBC_OneDimWriter*)m_pBCWriter)
- ->RenderDeviceResult(device, matirx, renderCon, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- return TRUE;
-}
-FX_BOOL CBC_Code39::RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e) {
- CFX_WideString renderCon = ((CBC_OnedCode39Writer*)m_pBCWriter)
- ->encodedContents(m_renderContents, e);
- ((CBC_OneDimWriter*)m_pBCWriter)
- ->RenderBitmapResult(pOutBitmap, renderCon, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- return TRUE;
-}
-CFX_WideString CBC_Code39::Decode(uint8_t* buf,
- int32_t width,
- int32_t hight,
- int32_t& e) {
- CFX_WideString str;
- return str;
-}
-CFX_WideString CBC_Code39::Decode(CFX_DIBitmap* pBitmap, int32_t& e) {
- CBC_BufferedImageLuminanceSource source(pBitmap);
- CBC_GlobalHistogramBinarizer binarizer(&source);
- CBC_BinaryBitmap bitmap(&binarizer);
- CFX_ByteString str = m_pBCReader->Decode(&bitmap, 0, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FX_WSTRC(L""));
- return CFX_WideString::FromUTF8(str, str.GetLength());
-}
-FX_BOOL CBC_Code39::SetTextLocation(BC_TEXT_LOC location) {
- if (m_pBCWriter) {
- return ((CBC_OnedCode39Writer*)m_pBCWriter)->SetTextLocation(location);
- }
- return FALSE;
-}
-FX_BOOL CBC_Code39::SetWideNarrowRatio(int32_t ratio) {
- if (m_pBCWriter) {
- return ((CBC_OnedCode39Writer*)m_pBCWriter)->SetWideNarrowRatio(ratio);
- }
- return FALSE;
-}
-CBC_Codabar::CBC_Codabar() {
- m_pBCReader = (CBC_Reader*)new (CBC_OnedCodaBarReader);
- m_pBCWriter = (CBC_Writer*)new (CBC_OnedCodaBarWriter);
-}
-CBC_Codabar::~CBC_Codabar() {
- if (m_pBCReader) {
- delete (m_pBCReader);
- m_pBCReader = NULL;
- }
- if (m_pBCWriter) {
- delete (m_pBCWriter);
- m_pBCWriter = NULL;
- }
-}
-FX_BOOL CBC_Codabar::SetStartChar(FX_CHAR start) {
- if (m_pBCWriter) {
- return ((CBC_OnedCodaBarWriter*)m_pBCWriter)->SetStartChar(start);
- }
- return FALSE;
-}
-FX_BOOL CBC_Codabar::SetEndChar(FX_CHAR end) {
- if (m_pBCWriter) {
- return ((CBC_OnedCodaBarWriter*)m_pBCWriter)->SetEndChar(end);
- }
- return FALSE;
-}
-FX_BOOL CBC_Codabar::SetTextLocation(BC_TEXT_LOC location) {
- return ((CBC_OnedCodaBarWriter*)m_pBCWriter)->SetTextLocation(location);
-}
-FX_BOOL CBC_Codabar::SetWideNarrowRatio(int32_t ratio) {
- if (m_pBCWriter) {
- return ((CBC_OnedCodaBarWriter*)m_pBCWriter)->SetWideNarrowRatio(ratio);
- }
- return FALSE;
-}
-FX_BOOL CBC_Codabar::Encode(const CFX_WideStringC& contents,
- FX_BOOL isDevice,
- int32_t& e) {
- if (contents.IsEmpty()) {
- e = BCExceptionNoContents;
- return FALSE;
- }
- BCFORMAT format = BCFORMAT_CODABAR;
- int32_t outWidth = 0;
- int32_t outHeight = 0;
- CFX_WideString filtercontents =
- ((CBC_OneDimWriter*)m_pBCWriter)->FilterContents(contents);
- CFX_ByteString byteString = filtercontents.UTF8Encode();
- m_renderContents = filtercontents;
- uint8_t* data = static_cast<CBC_OnedCodaBarWriter*>(m_pBCWriter)
- ->Encode(byteString, format, outWidth, outHeight, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- ((CBC_OneDimWriter*)m_pBCWriter)
- ->RenderResult(filtercontents, data, outWidth, isDevice, e);
- FX_Free(data);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- return TRUE;
-}
-FX_BOOL CBC_Codabar::RenderDevice(CFX_RenderDevice* device,
- const CFX_Matrix* matirx,
- int32_t& e) {
- CFX_WideString renderCon =
- ((CBC_OnedCodaBarWriter*)m_pBCWriter)->encodedContents(m_renderContents);
- ((CBC_OneDimWriter*)m_pBCWriter)
- ->RenderDeviceResult(device, matirx, renderCon, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- return TRUE;
-}
-FX_BOOL CBC_Codabar::RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e) {
- CFX_WideString renderCon =
- ((CBC_OnedCodaBarWriter*)m_pBCWriter)->encodedContents(m_renderContents);
- ((CBC_OneDimWriter*)m_pBCWriter)
- ->RenderBitmapResult(pOutBitmap, renderCon, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- return TRUE;
-}
-CFX_WideString CBC_Codabar::Decode(uint8_t* buf,
- int32_t width,
- int32_t hight,
- int32_t& e) {
- CFX_WideString str;
- return str;
-}
-CFX_WideString CBC_Codabar::Decode(CFX_DIBitmap* pBitmap, int32_t& e) {
- CBC_BufferedImageLuminanceSource source(pBitmap);
- CBC_GlobalHistogramBinarizer binarizer(&source);
- CBC_BinaryBitmap bitmap(&binarizer);
- CFX_ByteString str = m_pBCReader->Decode(&bitmap, 0, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FX_WSTRC(L""));
- return CFX_WideString::FromUTF8(str, str.GetLength());
-}
-CBC_Code128::CBC_Code128(BC_TYPE type) {
- m_pBCReader = (CBC_Reader*)new (CBC_OnedCode128Reader);
- m_pBCWriter = (CBC_Writer*)new CBC_OnedCode128Writer(type);
-}
-CBC_Code128::~CBC_Code128() {
- if (m_pBCReader) {
- delete (m_pBCReader);
- m_pBCReader = NULL;
- }
- if (m_pBCWriter) {
- delete (m_pBCWriter);
- m_pBCWriter = NULL;
- }
-}
-FX_BOOL CBC_Code128::SetTextLocation(BC_TEXT_LOC location) {
- if (m_pBCWriter) {
- return ((CBC_OnedCode128Writer*)m_pBCWriter)->SetTextLocation(location);
- }
- return FALSE;
-}
-FX_BOOL CBC_Code128::Encode(const CFX_WideStringC& contents,
- FX_BOOL isDevice,
- int32_t& e) {
- if (contents.IsEmpty()) {
- e = BCExceptionNoContents;
- return FALSE;
- }
- BCFORMAT format = BCFORMAT_CODE_128;
- int32_t outWidth = 0;
- int32_t outHeight = 0;
- CFX_WideString content = contents;
- if (contents.GetLength() % 2 &&
- ((CBC_OnedCode128Writer*)m_pBCWriter)->GetType() == BC_CODE128_C) {
- content += '0';
- }
- CFX_WideString encodeContents =
- ((CBC_OnedCode128Writer*)m_pBCWriter)->FilterContents(content);
- m_renderContents = encodeContents;
- CFX_ByteString byteString = encodeContents.UTF8Encode();
- uint8_t* data = static_cast<CBC_OnedCode128Writer*>(m_pBCWriter)
- ->Encode(byteString, format, outWidth, outHeight, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- ((CBC_OneDimWriter*)m_pBCWriter)
- ->RenderResult(encodeContents, data, outWidth, isDevice, e);
- FX_Free(data);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- return TRUE;
-}
-FX_BOOL CBC_Code128::RenderDevice(CFX_RenderDevice* device,
- const CFX_Matrix* matirx,
- int32_t& e) {
- ((CBC_OneDimWriter*)m_pBCWriter)
- ->RenderDeviceResult(device, matirx, m_renderContents, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- return TRUE;
-}
-FX_BOOL CBC_Code128::RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e) {
- ((CBC_OneDimWriter*)m_pBCWriter)
- ->RenderBitmapResult(pOutBitmap, m_renderContents, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- return TRUE;
-}
-CFX_WideString CBC_Code128::Decode(uint8_t* buf,
- int32_t width,
- int32_t hight,
- int32_t& e) {
- CFX_WideString str;
- return str;
-}
-CFX_WideString CBC_Code128::Decode(CFX_DIBitmap* pBitmap, int32_t& e) {
- CBC_BufferedImageLuminanceSource source(pBitmap);
- CBC_GlobalHistogramBinarizer binarizer(&source);
- CBC_BinaryBitmap bitmap(&binarizer);
- CFX_ByteString str = m_pBCReader->Decode(&bitmap, 0, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FX_WSTRC(L""));
- return CFX_WideString::FromUTF8(str, str.GetLength());
-}
-CBC_EAN8::CBC_EAN8() {
- m_pBCReader = (CBC_Reader*)new (CBC_OnedEAN8Reader);
- m_pBCWriter = (CBC_Writer*)new (CBC_OnedEAN8Writer);
-}
-CBC_EAN8::~CBC_EAN8() {
- if (m_pBCReader) {
- delete (m_pBCReader);
- m_pBCReader = NULL;
- }
- if (m_pBCWriter) {
- delete (m_pBCWriter);
- m_pBCWriter = NULL;
- }
-}
-CFX_WideString CBC_EAN8::Preprocess(const CFX_WideStringC& contents) {
- CFX_WideString encodeContents =
- ((CBC_OnedEAN8Writer*)m_pBCWriter)->FilterContents(contents);
- int32_t length = encodeContents.GetLength();
- if (length <= 7) {
- for (int32_t i = 0; i < 7 - length; i++) {
- encodeContents = FX_WCHAR('0') + encodeContents;
- }
- CFX_ByteString byteString = encodeContents.UTF8Encode();
- int32_t checksum =
- ((CBC_OnedEAN8Writer*)m_pBCWriter)->CalcChecksum(byteString);
- encodeContents += FX_WCHAR(checksum - 0 + '0');
- }
- if (length > 8) {
- encodeContents = encodeContents.Mid(0, 8);
- }
- return encodeContents;
-}
-FX_BOOL CBC_EAN8::Encode(const CFX_WideStringC& contents,
- FX_BOOL isDevice,
- int32_t& e) {
- if (contents.IsEmpty()) {
- e = BCExceptionNoContents;
- return FALSE;
- }
- BCFORMAT format = BCFORMAT_EAN_8;
- int32_t outWidth = 0;
- int32_t outHeight = 0;
- CFX_WideString encodeContents = Preprocess(contents);
- CFX_ByteString byteString = encodeContents.UTF8Encode();
- m_renderContents = encodeContents;
- uint8_t* data = static_cast<CBC_OnedEAN8Writer*>(m_pBCWriter)
- ->Encode(byteString, format, outWidth, outHeight, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- ((CBC_OneDimWriter*)m_pBCWriter)
- ->RenderResult(encodeContents, data, outWidth, isDevice, e);
- FX_Free(data);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- return TRUE;
-}
-FX_BOOL CBC_EAN8::RenderDevice(CFX_RenderDevice* device,
- const CFX_Matrix* matirx,
- int32_t& e) {
- ((CBC_OneDimWriter*)m_pBCWriter)
- ->RenderDeviceResult(device, matirx, m_renderContents, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- return TRUE;
-}
-FX_BOOL CBC_EAN8::RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e) {
- ((CBC_OneDimWriter*)m_pBCWriter)
- ->RenderBitmapResult(pOutBitmap, m_renderContents, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- return TRUE;
-}
-CFX_WideString CBC_EAN8::Decode(uint8_t* buf,
- int32_t width,
- int32_t hight,
- int32_t& e) {
- CFX_WideString str;
- return str;
-}
-CFX_WideString CBC_EAN8::Decode(CFX_DIBitmap* pBitmap, int32_t& e) {
- CBC_BufferedImageLuminanceSource source(pBitmap);
- CBC_GlobalHistogramBinarizer binarizer(&source);
- CBC_BinaryBitmap bitmap(&binarizer);
- CFX_ByteString str = m_pBCReader->Decode(&bitmap, 0, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FX_WSTRC(L""));
- return CFX_WideString::FromUTF8(str, str.GetLength());
-}
-CBC_EAN13::CBC_EAN13() {
- m_pBCReader = (CBC_Reader*)new (CBC_OnedEAN13Reader);
- m_pBCWriter = (CBC_Writer*)new (CBC_OnedEAN13Writer);
-}
-CBC_EAN13::~CBC_EAN13() {
- if (m_pBCReader) {
- delete (m_pBCReader);
- m_pBCReader = NULL;
- }
- if (m_pBCWriter) {
- delete (m_pBCWriter);
- m_pBCWriter = NULL;
- }
-}
-CFX_WideString CBC_EAN13::Preprocess(const CFX_WideStringC& contents) {
- CFX_WideString encodeContents =
- ((CBC_OnedEAN8Writer*)m_pBCWriter)->FilterContents(contents);
- int32_t length = encodeContents.GetLength();
- if (length <= 12) {
- for (int32_t i = 0; i < 12 - length; i++) {
- encodeContents = FX_WCHAR('0') + encodeContents;
- }
- CFX_ByteString byteString = encodeContents.UTF8Encode();
- int32_t checksum =
- ((CBC_OnedEAN13Writer*)m_pBCWriter)->CalcChecksum(byteString);
- byteString += checksum - 0 + '0';
- encodeContents = byteString.UTF8Decode();
- }
- if (length > 13) {
- encodeContents = encodeContents.Mid(0, 13);
- }
- return encodeContents;
-}
-FX_BOOL CBC_EAN13::Encode(const CFX_WideStringC& contents,
- FX_BOOL isDevice,
- int32_t& e) {
- if (contents.IsEmpty()) {
- e = BCExceptionNoContents;
- return FALSE;
- }
- BCFORMAT format = BCFORMAT_EAN_13;
- int32_t outWidth = 0;
- int32_t outHeight = 0;
- CFX_WideString encodeContents = Preprocess(contents);
- CFX_ByteString byteString = encodeContents.UTF8Encode();
- m_renderContents = encodeContents;
- uint8_t* data = static_cast<CBC_OnedEAN13Writer*>(m_pBCWriter)
- ->Encode(byteString, format, outWidth, outHeight, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- ((CBC_OneDimWriter*)m_pBCWriter)
- ->RenderResult(encodeContents, data, outWidth, isDevice, e);
- FX_Free(data);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- return TRUE;
-}
-FX_BOOL CBC_EAN13::RenderDevice(CFX_RenderDevice* device,
- const CFX_Matrix* matirx,
- int32_t& e) {
- ((CBC_OneDimWriter*)m_pBCWriter)
- ->RenderDeviceResult(device, matirx, m_renderContents, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- return TRUE;
-}
-FX_BOOL CBC_EAN13::RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e) {
- ((CBC_OneDimWriter*)m_pBCWriter)
- ->RenderBitmapResult(pOutBitmap, m_renderContents, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- return TRUE;
-}
-CFX_WideString CBC_EAN13::Decode(uint8_t* buf,
- int32_t width,
- int32_t hight,
- int32_t& e) {
- CFX_WideString str;
- return str;
-}
-CFX_WideString CBC_EAN13::Decode(CFX_DIBitmap* pBitmap, int32_t& e) {
- CBC_BufferedImageLuminanceSource source(pBitmap);
- CBC_GlobalHistogramBinarizer binarizer(&source);
- CBC_BinaryBitmap bitmap(&binarizer);
- CFX_ByteString str = m_pBCReader->Decode(&bitmap, 0, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FX_WSTRC(L""));
- return CFX_WideString::FromUTF8(str, str.GetLength());
-}
-CBC_UPCA::CBC_UPCA() {
- m_pBCReader = (CBC_Reader*)new (CBC_OnedUPCAReader);
- ((CBC_OnedUPCAReader*)m_pBCReader)->Init();
- m_pBCWriter = (CBC_Writer*)new (CBC_OnedUPCAWriter);
-}
-CBC_UPCA::~CBC_UPCA() {
- if (m_pBCReader) {
- delete (m_pBCReader);
- m_pBCReader = NULL;
- }
- if (m_pBCWriter) {
- delete (m_pBCWriter);
- m_pBCWriter = NULL;
- }
-}
-CFX_WideString CBC_UPCA::Preprocess(const CFX_WideStringC& contents) {
- CFX_WideString encodeContents =
- ((CBC_OnedEAN8Writer*)m_pBCWriter)->FilterContents(contents);
- int32_t length = encodeContents.GetLength();
- if (length <= 11) {
- for (int32_t i = 0; i < 11 - length; i++) {
- encodeContents = FX_WCHAR('0') + encodeContents;
- }
- CFX_ByteString byteString = encodeContents.UTF8Encode();
- int32_t checksum =
- ((CBC_OnedUPCAWriter*)m_pBCWriter)->CalcChecksum(byteString);
- byteString += checksum - 0 + '0';
- encodeContents = byteString.UTF8Decode();
- }
- if (length > 12) {
- encodeContents = encodeContents.Mid(0, 12);
- }
- return encodeContents;
-}
-FX_BOOL CBC_UPCA::Encode(const CFX_WideStringC& contents,
- FX_BOOL isDevice,
- int32_t& e) {
- if (contents.IsEmpty()) {
- e = BCExceptionNoContents;
- return FALSE;
- }
- BCFORMAT format = BCFORMAT_UPC_A;
- int32_t outWidth = 0;
- int32_t outHeight = 0;
- CFX_WideString encodeContents = Preprocess(contents);
- CFX_ByteString byteString = encodeContents.UTF8Encode();
- m_renderContents = encodeContents;
- ((CBC_OnedUPCAWriter*)m_pBCWriter)->Init();
- uint8_t* data = static_cast<CBC_OnedUPCAWriter*>(m_pBCWriter)
- ->Encode(byteString, format, outWidth, outHeight, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- ((CBC_OneDimWriter*)m_pBCWriter)
- ->RenderResult(encodeContents, data, outWidth, isDevice, e);
- FX_Free(data);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- return TRUE;
-}
-FX_BOOL CBC_UPCA::RenderDevice(CFX_RenderDevice* device,
- const CFX_Matrix* matirx,
- int32_t& e) {
- ((CBC_OneDimWriter*)m_pBCWriter)
- ->RenderDeviceResult(device, matirx, m_renderContents, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- return TRUE;
-}
-FX_BOOL CBC_UPCA::RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e) {
- ((CBC_OneDimWriter*)m_pBCWriter)
- ->RenderBitmapResult(pOutBitmap, m_renderContents, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- return TRUE;
-}
-CFX_WideString CBC_UPCA::Decode(uint8_t* buf,
- int32_t width,
- int32_t hight,
- int32_t& e) {
- CFX_WideString str;
- return str;
-}
-CFX_WideString CBC_UPCA::Decode(CFX_DIBitmap* pBitmap, int32_t& e) {
- CBC_BufferedImageLuminanceSource source(pBitmap);
- CBC_GlobalHistogramBinarizer binarizer(&source);
- CBC_BinaryBitmap bitmap(&binarizer);
- CFX_ByteString str = m_pBCReader->Decode(&bitmap, 0, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FX_WSTRC(L""));
- return CFX_WideString::FromUTF8(str, str.GetLength());
-}
-CBC_QRCode::CBC_QRCode() {
- m_pBCReader = (CBC_Reader*)new (CBC_QRCodeReader);
- ((CBC_QRCodeReader*)m_pBCReader)->Init();
- m_pBCWriter = (CBC_Writer*)new (CBC_QRCodeWriter);
-}
-CBC_QRCode::~CBC_QRCode() {
- if (m_pBCReader) {
- delete (m_pBCReader);
- m_pBCReader = NULL;
- }
- if (m_pBCWriter) {
- delete (m_pBCWriter);
- m_pBCWriter = NULL;
- }
-}
-FX_BOOL CBC_QRCode::SetVersion(int32_t version) {
- if (version < 0 || version > 40) {
- return FALSE;
- }
- if (m_pBCWriter == NULL) {
- return FALSE;
- }
- return ((CBC_QRCodeWriter*)m_pBCWriter)->SetVersion(version);
-}
-FX_BOOL CBC_QRCode::SetErrorCorrectionLevel(int32_t level) {
- if (level < 0 || level > 3) {
- return FALSE;
- }
- if (m_pBCWriter == NULL) {
- return FALSE;
- }
- return ((CBC_TwoDimWriter*)m_pBCWriter)->SetErrorCorrectionLevel(level);
-}
-FX_BOOL CBC_QRCode::Encode(const CFX_WideStringC& contents,
- FX_BOOL isDevice,
- int32_t& e) {
- int32_t outWidth = 0;
- int32_t outHeight = 0;
- uint8_t* data = ((CBC_QRCodeWriter*)m_pBCWriter)
- ->Encode(contents, ((CBC_QRCodeWriter*)m_pBCWriter)
- ->GetErrorCorrectionLevel(),
- outWidth, outHeight, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- ((CBC_TwoDimWriter*)m_pBCWriter)->RenderResult(data, outWidth, outHeight, e);
- FX_Free(data);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- return TRUE;
-}
-FX_BOOL CBC_QRCode::RenderDevice(CFX_RenderDevice* device,
- const CFX_Matrix* matirx,
- int32_t& e) {
- ((CBC_TwoDimWriter*)m_pBCWriter)->RenderDeviceResult(device, matirx);
- return TRUE;
-}
-FX_BOOL CBC_QRCode::RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e) {
- ((CBC_TwoDimWriter*)m_pBCWriter)->RenderBitmapResult(pOutBitmap, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- return TRUE;
-}
-CFX_WideString CBC_QRCode::Decode(uint8_t* buf,
- int32_t width,
- int32_t hight,
- int32_t& e) {
- CFX_WideString str;
- return str;
-}
-CFX_WideString CBC_QRCode::Decode(CFX_DIBitmap* pBitmap, int32_t& e) {
- CBC_BufferedImageLuminanceSource source(pBitmap);
- CBC_GlobalHistogramBinarizer binarizer(&source);
- CBC_BinaryBitmap bitmap(&binarizer);
- CFX_ByteString retStr = m_pBCReader->Decode(&bitmap, 0, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FX_WSTRC(L""));
- return CFX_WideString::FromUTF8(retStr, retStr.GetLength());
-}
-CBC_PDF417I::CBC_PDF417I() {
- m_pBCReader = (CBC_Reader*)new (CBC_PDF417Reader);
- m_pBCWriter = (CBC_Writer*)new (CBC_PDF417Writer);
-}
-CBC_PDF417I::~CBC_PDF417I() {
- if (m_pBCReader) {
- delete (m_pBCReader);
- m_pBCReader = NULL;
- }
- if (m_pBCWriter) {
- delete (m_pBCWriter);
- m_pBCWriter = NULL;
- }
-}
-FX_BOOL CBC_PDF417I::SetErrorCorrectionLevel(int32_t level) {
- ((CBC_PDF417Writer*)m_pBCWriter)->SetErrorCorrectionLevel(level);
- return TRUE;
-}
-void CBC_PDF417I::SetTruncated(FX_BOOL truncated) {
- ((CBC_PDF417Writer*)m_pBCWriter)->SetTruncated(truncated);
-}
-FX_BOOL CBC_PDF417I::Encode(const CFX_WideStringC& contents,
- FX_BOOL isDevice,
- int32_t& e) {
- int32_t outWidth = 0;
- int32_t outHeight = 0;
- uint8_t* data = ((CBC_PDF417Writer*)m_pBCWriter)
- ->Encode(contents, outWidth, outHeight, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- ((CBC_TwoDimWriter*)m_pBCWriter)->RenderResult(data, outWidth, outHeight, e);
- FX_Free(data);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- return TRUE;
-}
-FX_BOOL CBC_PDF417I::RenderDevice(CFX_RenderDevice* device,
- const CFX_Matrix* matirx,
- int32_t& e) {
- ((CBC_TwoDimWriter*)m_pBCWriter)->RenderDeviceResult(device, matirx);
- return TRUE;
-}
-FX_BOOL CBC_PDF417I::RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e) {
- ((CBC_TwoDimWriter*)m_pBCWriter)->RenderBitmapResult(pOutBitmap, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- return TRUE;
-}
-CFX_WideString CBC_PDF417I::Decode(uint8_t* buf,
- int32_t width,
- int32_t hight,
- int32_t& e) {
- CFX_WideString str;
- return str;
-}
-CFX_WideString CBC_PDF417I::Decode(CFX_DIBitmap* pBitmap, int32_t& e) {
- CBC_BufferedImageLuminanceSource source(pBitmap);
- CBC_GlobalHistogramBinarizer binarizer(&source);
- CBC_BinaryBitmap bitmap(&binarizer);
- CFX_ByteString bytestring = m_pBCReader->Decode(&bitmap, 0, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FX_WSTRC(L""));
- return CFX_WideString::FromUTF8(bytestring, bytestring.GetLength());
-}
-CBC_DataMatrix::CBC_DataMatrix() {
- m_pBCReader = (CBC_Reader*)new (CBC_DataMatrixReader);
- ((CBC_DataMatrixReader*)m_pBCReader)->Init();
- m_pBCWriter = (CBC_Writer*)new (CBC_DataMatrixWriter);
-}
-CBC_DataMatrix::~CBC_DataMatrix() {
- if (m_pBCReader) {
- delete (m_pBCReader);
- m_pBCReader = NULL;
- }
- if (m_pBCWriter) {
- delete (m_pBCWriter);
- m_pBCWriter = NULL;
- }
-}
-FX_BOOL CBC_DataMatrix::Encode(const CFX_WideStringC& contents,
- FX_BOOL isDevice,
- int32_t& e) {
- int32_t outWidth = 0;
- int32_t outHeight = 0;
- uint8_t* data = ((CBC_DataMatrixWriter*)m_pBCWriter)
- ->Encode(contents, outWidth, outHeight, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- ((CBC_TwoDimWriter*)m_pBCWriter)->RenderResult(data, outWidth, outHeight, e);
- FX_Free(data);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- return TRUE;
-}
-FX_BOOL CBC_DataMatrix::RenderDevice(CFX_RenderDevice* device,
- const CFX_Matrix* matirx,
- int32_t& e) {
- ((CBC_TwoDimWriter*)m_pBCWriter)->RenderDeviceResult(device, matirx);
- return TRUE;
-}
-FX_BOOL CBC_DataMatrix::RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e) {
- ((CBC_TwoDimWriter*)m_pBCWriter)->RenderBitmapResult(pOutBitmap, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
- return TRUE;
-}
-CFX_WideString CBC_DataMatrix::Decode(uint8_t* buf,
- int32_t width,
- int32_t hight,
- int32_t& e) {
- CFX_WideString str;
- return str;
-}
-CFX_WideString CBC_DataMatrix::Decode(CFX_DIBitmap* pBitmap, int32_t& e) {
- CBC_BufferedImageLuminanceSource source(pBitmap);
- CBC_GlobalHistogramBinarizer binarizer(&source);
- CBC_BinaryBitmap bitmap(&binarizer);
- CFX_ByteString retStr = m_pBCReader->Decode(&bitmap, 0, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, FX_WSTRC(L""));
- return CFX_WideString::FromUTF8(retStr, retStr.GetLength());
-}
diff --git a/xfa/fxbarcode/BC_Library.cpp b/xfa/fxbarcode/BC_Library.cpp
index d6da15cd29..311dd511fd 100644
--- a/xfa/fxbarcode/BC_Library.cpp
+++ b/xfa/fxbarcode/BC_Library.cpp
@@ -4,87 +4,22 @@
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-#include "xfa/fxbarcode/BC_Binarizer.h"
-#include "xfa/fxbarcode/BC_BinaryBitmap.h"
-#include "xfa/fxbarcode/BC_BinaryBitmap.h"
-#include "xfa/fxbarcode/BC_BufferedImageLuminanceSource.h"
-#include "xfa/fxbarcode/BC_DecoderResult.h"
-#include "xfa/fxbarcode/BC_Dimension.h"
-#include "xfa/fxbarcode/BC_LuminanceSource.h"
-#include "xfa/fxbarcode/BC_Reader.h"
-#include "xfa/fxbarcode/BC_ResultPoint.h"
-#include "xfa/fxbarcode/BC_TwoDimWriter.h"
-#include "xfa/fxbarcode/BC_UtilCodingConvert.h"
-#include "xfa/fxbarcode/BC_UtilCodingConvert.h"
-#include "xfa/fxbarcode/BC_Writer.h"
-#include "xfa/fxbarcode/common/BC_CommonBitArray.h"
-#include "xfa/fxbarcode/common/BC_CommonBitMatrix.h"
-#include "xfa/fxbarcode/common/BC_CommonBitMatrix.h"
-#include "xfa/fxbarcode/common/BC_CommonBitMatrix.h"
-#include "xfa/fxbarcode/common/BC_CommonByteMatrix.h"
-#include "xfa/fxbarcode/common/BC_CommonDecoderResult.h"
-#include "xfa/fxbarcode/common/BC_GlobalHistogramBinarizer.h"
+#include <stdint.h>
+
#include "xfa/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256.h"
-#include "xfa/fxbarcode/datamatrix/BC_ASCIIEncoder.h"
-#include "xfa/fxbarcode/datamatrix/BC_Base256Encoder.h"
-#include "xfa/fxbarcode/datamatrix/BC_C40Encoder.h"
-#include "xfa/fxbarcode/datamatrix/BC_DataMatrixReader.h"
-#include "xfa/fxbarcode/datamatrix/BC_DataMatrixSymbolInfo144.h"
#include "xfa/fxbarcode/datamatrix/BC_DataMatrixVersion.h"
-#include "xfa/fxbarcode/datamatrix/BC_DataMatrixWriter.h"
-#include "xfa/fxbarcode/datamatrix/BC_DefaultPlacement.h"
-#include "xfa/fxbarcode/datamatrix/BC_EdifactEncoder.h"
-#include "xfa/fxbarcode/datamatrix/BC_Encoder.h"
-#include "xfa/fxbarcode/datamatrix/BC_EncoderContext.h"
#include "xfa/fxbarcode/datamatrix/BC_ErrorCorrection.h"
-#include "xfa/fxbarcode/datamatrix/BC_HighLevelEncoder.h"
#include "xfa/fxbarcode/datamatrix/BC_SymbolInfo.h"
-#include "xfa/fxbarcode/datamatrix/BC_SymbolShapeHint.h"
-#include "xfa/fxbarcode/datamatrix/BC_TextEncoder.h"
-#include "xfa/fxbarcode/datamatrix/BC_X12Encoder.h"
-#include "xfa/fxbarcode/oned/BC_OneDReader.h"
-#include "xfa/fxbarcode/oned/BC_OneDimReader.h"
-#include "xfa/fxbarcode/oned/BC_OneDimWriter.h"
-#include "xfa/fxbarcode/oned/BC_OnedCodaBarReader.h"
-#include "xfa/fxbarcode/oned/BC_OnedCode128Reader.h"
-#include "xfa/fxbarcode/oned/BC_OnedCode128Writer.h"
-#include "xfa/fxbarcode/oned/BC_OnedCode39Reader.h"
-#include "xfa/fxbarcode/oned/BC_OnedCode39Writer.h"
-#include "xfa/fxbarcode/oned/BC_OnedEAN13Reader.h"
-#include "xfa/fxbarcode/oned/BC_OnedEAN13Writer.h"
-#include "xfa/fxbarcode/oned/BC_OnedEAN8Reader.h"
-#include "xfa/fxbarcode/oned/BC_OnedEAN8Writer.h"
-#include "xfa/fxbarcode/oned/BC_OnedUPCAReader.h"
-#include "xfa/fxbarcode/oned/BC_OnedUPCAWriter.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417BarcodeMetadata.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417BarcodeValue.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417BoundingBox.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417Codeword.h"
#include "xfa/fxbarcode/pdf417/BC_PDF417CodewordDecoder.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417Common.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417Compaction.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417DecodedBitStreamParser.h"
#include "xfa/fxbarcode/pdf417/BC_PDF417DecodedBitStreamParser.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417DecodedBitStreamParser.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417DetectionResult.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417DetectionResultColumn.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417DetectionResultRowIndicatorColumn.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417Detector.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417DetectorResult.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417DetectorResult.h"
#include "xfa/fxbarcode/pdf417/BC_PDF417ECErrorCorrection.h"
#include "xfa/fxbarcode/pdf417/BC_PDF417ECModulusGF.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417ECModulusPoly.h"
#include "xfa/fxbarcode/pdf417/BC_PDF417HighLevelEncoder.h"
-#include "xfa/fxbarcode/pdf417/BC_PDF417Reader.h"
#include "xfa/fxbarcode/pdf417/BC_PDF417ScanningDecoder.h"
-#include "xfa/fxbarcode/qrcode/BC_QRCodeReader.h"
-#include "xfa/fxbarcode/qrcode/BC_QRCodeWriter.h"
#include "xfa/fxbarcode/qrcode/BC_QRCoderErrorCorrectionLevel.h"
#include "xfa/fxbarcode/qrcode/BC_QRCoderMode.h"
#include "xfa/fxbarcode/qrcode/BC_QRCoderVersion.h"
#include "xfa/fxbarcode/qrcode/BC_QRDataMask.h"
-#include "xfa/fxbarcode/qrcode/BC_QRDecodedBitStreamParser.h"
void BC_Library_Init() {
CBC_QRCoderErrorCorrectionLevel::Initialize();
@@ -96,6 +31,7 @@ void BC_Library_Init() {
CBC_SymbolInfo::Initialize();
CBC_ErrorCorrection::Initialize();
CBC_PDF417HighLevelEncoder::Initialize();
+
int32_t e = 0;
CBC_PDF417ECModulusGF::Initialize(e);
CBC_DecodedBitStreamPaser::Initialize();
diff --git a/xfa/fxbarcode/cbc_codabar.cpp b/xfa/fxbarcode/cbc_codabar.cpp
new file mode 100644
index 0000000000..a7310ba1fc
--- /dev/null
+++ b/xfa/fxbarcode/cbc_codabar.cpp
@@ -0,0 +1,121 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+/*
+ * Copyright 2011 ZXing authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "xfa/fxbarcode/cbc_codabar.h"
+
+#include "xfa/fxbarcode/BC_BinaryBitmap.h"
+#include "xfa/fxbarcode/BC_BufferedImageLuminanceSource.h"
+#include "xfa/fxbarcode/common/BC_GlobalHistogramBinarizer.h"
+#include "xfa/fxbarcode/oned/BC_OnedCodaBarReader.h"
+#include "xfa/fxbarcode/oned/BC_OnedCodaBarWriter.h"
+
+CBC_Codabar::CBC_Codabar() {
+ m_pBCReader = (CBC_Reader*)new (CBC_OnedCodaBarReader);
+ m_pBCWriter = (CBC_Writer*)new (CBC_OnedCodaBarWriter);
+}
+
+CBC_Codabar::~CBC_Codabar() {
+ delete (m_pBCReader);
+ delete (m_pBCWriter);
+}
+
+FX_BOOL CBC_Codabar::SetStartChar(FX_CHAR start) {
+ if (m_pBCWriter)
+ return ((CBC_OnedCodaBarWriter*)m_pBCWriter)->SetStartChar(start);
+ return FALSE;
+}
+
+FX_BOOL CBC_Codabar::SetEndChar(FX_CHAR end) {
+ if (m_pBCWriter)
+ return ((CBC_OnedCodaBarWriter*)m_pBCWriter)->SetEndChar(end);
+ return FALSE;
+}
+
+FX_BOOL CBC_Codabar::SetTextLocation(BC_TEXT_LOC location) {
+ return ((CBC_OnedCodaBarWriter*)m_pBCWriter)->SetTextLocation(location);
+}
+
+FX_BOOL CBC_Codabar::SetWideNarrowRatio(int32_t ratio) {
+ if (m_pBCWriter)
+ return ((CBC_OnedCodaBarWriter*)m_pBCWriter)->SetWideNarrowRatio(ratio);
+ return FALSE;
+}
+
+FX_BOOL CBC_Codabar::Encode(const CFX_WideStringC& contents,
+ FX_BOOL isDevice,
+ int32_t& e) {
+ if (contents.IsEmpty()) {
+ e = BCExceptionNoContents;
+ return FALSE;
+ }
+ BCFORMAT format = BCFORMAT_CODABAR;
+ int32_t outWidth = 0;
+ int32_t outHeight = 0;
+ CFX_WideString filtercontents =
+ ((CBC_OneDimWriter*)m_pBCWriter)->FilterContents(contents);
+ CFX_ByteString byteString = filtercontents.UTF8Encode();
+ m_renderContents = filtercontents;
+ uint8_t* data = static_cast<CBC_OnedCodaBarWriter*>(m_pBCWriter)
+ ->Encode(byteString, format, outWidth, outHeight, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ ((CBC_OneDimWriter*)m_pBCWriter)
+ ->RenderResult(filtercontents, data, outWidth, isDevice, e);
+ FX_Free(data);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ return TRUE;
+}
+
+FX_BOOL CBC_Codabar::RenderDevice(CFX_RenderDevice* device,
+ const CFX_Matrix* matirx,
+ int32_t& e) {
+ CFX_WideString renderCon =
+ ((CBC_OnedCodaBarWriter*)m_pBCWriter)->encodedContents(m_renderContents);
+ ((CBC_OneDimWriter*)m_pBCWriter)
+ ->RenderDeviceResult(device, matirx, renderCon, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ return TRUE;
+}
+
+FX_BOOL CBC_Codabar::RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e) {
+ CFX_WideString renderCon =
+ ((CBC_OnedCodaBarWriter*)m_pBCWriter)->encodedContents(m_renderContents);
+ ((CBC_OneDimWriter*)m_pBCWriter)
+ ->RenderBitmapResult(pOutBitmap, renderCon, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ return TRUE;
+}
+
+CFX_WideString CBC_Codabar::Decode(uint8_t* buf,
+ int32_t width,
+ int32_t hight,
+ int32_t& e) {
+ CFX_WideString str;
+ return str;
+}
+
+CFX_WideString CBC_Codabar::Decode(CFX_DIBitmap* pBitmap, int32_t& e) {
+ CBC_BufferedImageLuminanceSource source(pBitmap);
+ CBC_GlobalHistogramBinarizer binarizer(&source);
+ CBC_BinaryBitmap bitmap(&binarizer);
+ CFX_ByteString str = m_pBCReader->Decode(&bitmap, 0, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FX_WSTRC(L""));
+ return CFX_WideString::FromUTF8(str, str.GetLength());
+}
diff --git a/xfa/fxbarcode/cbc_codabar.h b/xfa/fxbarcode/cbc_codabar.h
new file mode 100644
index 0000000000..8da2383fc5
--- /dev/null
+++ b/xfa/fxbarcode/cbc_codabar.h
@@ -0,0 +1,40 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef XFA_FXBARCODE_CBC_CODABAR_H_
+#define XFA_FXBARCODE_CBC_CODABAR_H_
+
+#include "core/include/fxcrt/fx_coordinates.h"
+#include "core/include/fxcrt/fx_system.h"
+#include "core/include/fxge/fx_dib.h"
+#include "xfa/fxbarcode/cbc_onecode.h"
+
+class CBC_Codabar : public CBC_OneCode {
+ public:
+ CBC_Codabar();
+ ~CBC_Codabar() override;
+
+ FX_BOOL Encode(const CFX_WideStringC& contents, FX_BOOL isDevice, int32_t& e) override;
+ CFX_WideString Decode(uint8_t* buf, int32_t width, int32_t hight, int32_t& e) override;
+ CFX_WideString Decode(CFX_DIBitmap* pBitmap, int32_t& e) override;
+
+ FX_BOOL RenderDevice(CFX_RenderDevice* device,
+ const CFX_Matrix* matirx,
+ int32_t& e) override;
+ FX_BOOL RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e) override;
+
+ BC_TYPE GetType() override { return BC_CODABAR; }
+
+ FX_BOOL SetStartChar(FX_CHAR start);
+ FX_BOOL SetEndChar(FX_CHAR end);
+ FX_BOOL SetTextLocation(BC_TEXT_LOC location);
+ FX_BOOL SetWideNarrowRatio(int32_t ratio);
+
+ private:
+ CFX_WideString m_renderContents;
+};
+
+#endif // XFA_FXBARCODE_CBC_CODABAR_H_
diff --git a/xfa/fxbarcode/cbc_code128.cpp b/xfa/fxbarcode/cbc_code128.cpp
new file mode 100644
index 0000000000..e585de302c
--- /dev/null
+++ b/xfa/fxbarcode/cbc_code128.cpp
@@ -0,0 +1,106 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+/*
+ * Copyright 2011 ZXing authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "xfa/fxbarcode/cbc_code128.h"
+
+#include "xfa/fxbarcode/BC_BinaryBitmap.h"
+#include "xfa/fxbarcode/BC_BufferedImageLuminanceSource.h"
+#include "xfa/fxbarcode/common/BC_GlobalHistogramBinarizer.h"
+#include "xfa/fxbarcode/oned/BC_OnedCode128Reader.h"
+#include "xfa/fxbarcode/oned/BC_OnedCode128Writer.h"
+
+CBC_Code128::CBC_Code128(BC_TYPE type) {
+ m_pBCReader = (CBC_Reader*)new (CBC_OnedCode128Reader);
+ m_pBCWriter = (CBC_Writer*)new CBC_OnedCode128Writer(type);
+}
+
+CBC_Code128::~CBC_Code128() {
+ delete (m_pBCReader);
+ delete (m_pBCWriter);
+}
+
+FX_BOOL CBC_Code128::SetTextLocation(BC_TEXT_LOC location) {
+ if (m_pBCWriter)
+ return ((CBC_OnedCode128Writer*)m_pBCWriter)->SetTextLocation(location);
+ return FALSE;
+}
+
+FX_BOOL CBC_Code128::Encode(const CFX_WideStringC& contents,
+ FX_BOOL isDevice,
+ int32_t& e) {
+ if (contents.IsEmpty()) {
+ e = BCExceptionNoContents;
+ return FALSE;
+ }
+ BCFORMAT format = BCFORMAT_CODE_128;
+ int32_t outWidth = 0;
+ int32_t outHeight = 0;
+ CFX_WideString content = contents;
+ if (contents.GetLength() % 2 &&
+ ((CBC_OnedCode128Writer*)m_pBCWriter)->GetType() == BC_CODE128_C) {
+ content += '0';
+ }
+ CFX_WideString encodeContents =
+ ((CBC_OnedCode128Writer*)m_pBCWriter)->FilterContents(content);
+ m_renderContents = encodeContents;
+ CFX_ByteString byteString = encodeContents.UTF8Encode();
+ uint8_t* data = static_cast<CBC_OnedCode128Writer*>(m_pBCWriter)
+ ->Encode(byteString, format, outWidth, outHeight, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ ((CBC_OneDimWriter*)m_pBCWriter)
+ ->RenderResult(encodeContents, data, outWidth, isDevice, e);
+ FX_Free(data);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ return TRUE;
+}
+
+FX_BOOL CBC_Code128::RenderDevice(CFX_RenderDevice* device,
+ const CFX_Matrix* matirx,
+ int32_t& e) {
+ ((CBC_OneDimWriter*)m_pBCWriter)
+ ->RenderDeviceResult(device, matirx, m_renderContents, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ return TRUE;
+}
+
+FX_BOOL CBC_Code128::RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e) {
+ ((CBC_OneDimWriter*)m_pBCWriter)
+ ->RenderBitmapResult(pOutBitmap, m_renderContents, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ return TRUE;
+}
+
+CFX_WideString CBC_Code128::Decode(uint8_t* buf,
+ int32_t width,
+ int32_t hight,
+ int32_t& e) {
+ CFX_WideString str;
+ return str;
+}
+
+CFX_WideString CBC_Code128::Decode(CFX_DIBitmap* pBitmap, int32_t& e) {
+ CBC_BufferedImageLuminanceSource source(pBitmap);
+ CBC_GlobalHistogramBinarizer binarizer(&source);
+ CBC_BinaryBitmap bitmap(&binarizer);
+ CFX_ByteString str = m_pBCReader->Decode(&bitmap, 0, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FX_WSTRC(L""));
+ return CFX_WideString::FromUTF8(str, str.GetLength());
+}
diff --git a/xfa/fxbarcode/cbc_code128.h b/xfa/fxbarcode/cbc_code128.h
new file mode 100644
index 0000000000..3f12e1bc75
--- /dev/null
+++ b/xfa/fxbarcode/cbc_code128.h
@@ -0,0 +1,37 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef XFA_FXBARCODE_CBC_CODE128_H_
+#define XFA_FXBARCODE_CBC_CODE128_H_
+
+#include "core/include/fxcrt/fx_coordinates.h"
+#include "core/include/fxcrt/fx_system.h"
+#include "core/include/fxge/fx_dib.h"
+#include "xfa/fxbarcode/cbc_onecode.h"
+
+class CBC_Code128 : public CBC_OneCode {
+ public:
+ explicit CBC_Code128(BC_TYPE type);
+ virtual ~CBC_Code128();
+
+ FX_BOOL Encode(const CFX_WideStringC& contents, FX_BOOL isDevice, int32_t& e) override;
+ CFX_WideString Decode(uint8_t* buf, int32_t width, int32_t hight, int32_t& e) override;
+ CFX_WideString Decode(CFX_DIBitmap* pBitmap, int32_t& e) override;
+
+ FX_BOOL RenderDevice(CFX_RenderDevice* device,
+ const CFX_Matrix* matirx,
+ int32_t& e) override;
+ FX_BOOL RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e) override;
+
+ BC_TYPE GetType() override { return BC_CODE128; }
+
+ FX_BOOL SetTextLocation(BC_TEXT_LOC loction);
+
+ private:
+ CFX_WideString m_renderContents;
+};
+
+#endif // XFA_FXBARCODE_CBC_CODE128_H_
diff --git a/xfa/fxbarcode/cbc_code39.cpp b/xfa/fxbarcode/cbc_code39.cpp
new file mode 100644
index 0000000000..a0e3d17fc1
--- /dev/null
+++ b/xfa/fxbarcode/cbc_code39.cpp
@@ -0,0 +1,124 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+/*
+ * Copyright 2011 ZXing authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "xfa/fxbarcode/cbc_code39.h"
+
+#include "xfa/fxbarcode/BC_BinaryBitmap.h"
+#include "xfa/fxbarcode/BC_BufferedImageLuminanceSource.h"
+#include "xfa/fxbarcode/common/BC_GlobalHistogramBinarizer.h"
+#include "xfa/fxbarcode/oned/BC_OnedCode39Reader.h"
+#include "xfa/fxbarcode/oned/BC_OnedCode39Writer.h"
+
+CBC_Code39::CBC_Code39() {
+ m_pBCReader = (CBC_Reader*)new (CBC_OnedCode39Reader);
+ m_pBCWriter = (CBC_Writer*)new (CBC_OnedCode39Writer);
+}
+
+CBC_Code39::CBC_Code39(FX_BOOL usingCheckDigit) {
+ m_pBCReader = (CBC_Reader*)new CBC_OnedCode39Reader(usingCheckDigit);
+ m_pBCWriter = (CBC_Writer*)new CBC_OnedCode39Writer;
+}
+
+CBC_Code39::CBC_Code39(FX_BOOL usingCheckDigit, FX_BOOL extendedMode) {
+ m_pBCReader =
+ (CBC_Reader*)new CBC_OnedCode39Reader(usingCheckDigit, extendedMode);
+ m_pBCWriter = (CBC_Writer*)new CBC_OnedCode39Writer(extendedMode);
+}
+
+CBC_Code39::~CBC_Code39() {
+ delete (m_pBCReader);
+ delete (m_pBCWriter);
+}
+
+FX_BOOL CBC_Code39::Encode(const CFX_WideStringC& contents,
+ FX_BOOL isDevice,
+ int32_t& e) {
+ if (contents.IsEmpty()) {
+ e = BCExceptionNoContents;
+ return FALSE;
+ }
+ BCFORMAT format = BCFORMAT_CODE_39;
+ int32_t outWidth = 0;
+ int32_t outHeight = 0;
+ CFX_WideString filtercontents =
+ ((CBC_OnedCode39Writer*)m_pBCWriter)->FilterContents(contents);
+ CFX_WideString renderContents =
+ ((CBC_OnedCode39Writer*)m_pBCWriter)->RenderTextContents(contents);
+ m_renderContents = renderContents;
+ CFX_ByteString byteString = filtercontents.UTF8Encode();
+ uint8_t* data = static_cast<CBC_OnedCode39Writer*>(m_pBCWriter)
+ ->Encode(byteString, format, outWidth, outHeight, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ ((CBC_OneDimWriter*)m_pBCWriter)
+ ->RenderResult(renderContents, data, outWidth, isDevice, e);
+ FX_Free(data);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ return TRUE;
+}
+
+FX_BOOL CBC_Code39::RenderDevice(CFX_RenderDevice* device,
+ const CFX_Matrix* matirx,
+ int32_t& e) {
+ CFX_WideString renderCon = ((CBC_OnedCode39Writer*)m_pBCWriter)
+ ->encodedContents(m_renderContents, e);
+ ((CBC_OneDimWriter*)m_pBCWriter)
+ ->RenderDeviceResult(device, matirx, renderCon, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ return TRUE;
+}
+
+FX_BOOL CBC_Code39::RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e) {
+ CFX_WideString renderCon = ((CBC_OnedCode39Writer*)m_pBCWriter)
+ ->encodedContents(m_renderContents, e);
+ ((CBC_OneDimWriter*)m_pBCWriter)
+ ->RenderBitmapResult(pOutBitmap, renderCon, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ return TRUE;
+}
+
+CFX_WideString CBC_Code39::Decode(uint8_t* buf,
+ int32_t width,
+ int32_t hight,
+ int32_t& e) {
+ CFX_WideString str;
+ return str;
+}
+
+CFX_WideString CBC_Code39::Decode(CFX_DIBitmap* pBitmap, int32_t& e) {
+ CBC_BufferedImageLuminanceSource source(pBitmap);
+ CBC_GlobalHistogramBinarizer binarizer(&source);
+ CBC_BinaryBitmap bitmap(&binarizer);
+ CFX_ByteString str = m_pBCReader->Decode(&bitmap, 0, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FX_WSTRC(L""));
+ return CFX_WideString::FromUTF8(str, str.GetLength());
+}
+
+FX_BOOL CBC_Code39::SetTextLocation(BC_TEXT_LOC location) {
+ if (m_pBCWriter)
+ return ((CBC_OnedCode39Writer*)m_pBCWriter)->SetTextLocation(location);
+ return FALSE;
+}
+
+FX_BOOL CBC_Code39::SetWideNarrowRatio(int32_t ratio) {
+ if (m_pBCWriter)
+ return ((CBC_OnedCode39Writer*)m_pBCWriter)->SetWideNarrowRatio(ratio);
+ return FALSE;
+}
diff --git a/xfa/fxbarcode/cbc_code39.h b/xfa/fxbarcode/cbc_code39.h
new file mode 100644
index 0000000000..9e296650a8
--- /dev/null
+++ b/xfa/fxbarcode/cbc_code39.h
@@ -0,0 +1,39 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef XFA_FXBARCODE_CBC_CODE39_H_
+#define XFA_FXBARCODE_CBC_CODE39_H_
+
+#include "core/include/fxcrt/fx_string.h"
+#include "core/include/fxcrt/fx_system.h"
+#include "core/include/fxge/fx_dib.h"
+#include "xfa/fxbarcode/cbc_onecode.h"
+
+class CBC_Code39 : public CBC_OneCode {
+ public:
+ CBC_Code39();
+ explicit CBC_Code39(FX_BOOL usingCheckDigit);
+ CBC_Code39(FX_BOOL usingCheckDigit, FX_BOOL extendedMode);
+ virtual ~CBC_Code39();
+
+ FX_BOOL Encode(const CFX_WideStringC& contents, FX_BOOL isDevice, int32_t& e);
+ CFX_WideString Decode(uint8_t* buf, int32_t width, int32_t hight, int32_t& e);
+ CFX_WideString Decode(CFX_DIBitmap* pBitmap, int32_t& e);
+
+ FX_BOOL RenderDevice(CFX_RenderDevice* device,
+ const CFX_Matrix* matirx,
+ int32_t& e);
+ FX_BOOL RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e);
+
+ BC_TYPE GetType() { return BC_CODE39; }
+ FX_BOOL SetTextLocation(BC_TEXT_LOC location);
+ FX_BOOL SetWideNarrowRatio(int32_t ratio);
+
+ private:
+ CFX_WideString m_renderContents;
+};
+
+#endif // XFA_FXBARCODE_CBC_CODE39_H_
diff --git a/xfa/fxbarcode/cbc_codebase.cpp b/xfa/fxbarcode/cbc_codebase.cpp
new file mode 100644
index 0000000000..64a358a038
--- /dev/null
+++ b/xfa/fxbarcode/cbc_codebase.cpp
@@ -0,0 +1,58 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+/*
+ * Copyright 2011 ZXing authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "xfa/fxbarcode/cbc_codebase.h"
+
+#include "xfa/fxbarcode/BC_Writer.h"
+
+CBC_CodeBase::CBC_CodeBase() {}
+
+CBC_CodeBase::~CBC_CodeBase() {}
+
+FX_BOOL CBC_CodeBase::SetCharEncoding(int32_t encoding) {
+ return m_pBCWriter && m_pBCWriter->SetCharEncoding(encoding);
+}
+
+FX_BOOL CBC_CodeBase::SetModuleHeight(int32_t moduleHeight) {
+ return m_pBCWriter && m_pBCWriter->SetModuleHeight(moduleHeight);
+}
+
+FX_BOOL CBC_CodeBase::SetModuleWidth(int32_t moduleWidth) {
+ return m_pBCWriter && m_pBCWriter->SetModuleWidth(moduleWidth);
+}
+
+FX_BOOL CBC_CodeBase::SetHeight(int32_t height) {
+ return m_pBCWriter && m_pBCWriter->SetHeight(height);
+}
+
+FX_BOOL CBC_CodeBase::SetWidth(int32_t width) {
+ return m_pBCWriter && m_pBCWriter->SetWidth(width);
+}
+
+void CBC_CodeBase::SetBackgroundColor(FX_ARGB backgroundColor) {
+ if (m_pBCWriter)
+ m_pBCWriter->SetBackgroundColor(backgroundColor);
+}
+
+void CBC_CodeBase::SetBarcodeColor(FX_ARGB foregroundColor) {
+ if (m_pBCWriter)
+ m_pBCWriter->SetBarcodeColor(foregroundColor);
+}
diff --git a/xfa/fxbarcode/cbc_codebase.h b/xfa/fxbarcode/cbc_codebase.h
new file mode 100644
index 0000000000..20f25b58b0
--- /dev/null
+++ b/xfa/fxbarcode/cbc_codebase.h
@@ -0,0 +1,52 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef XFA_FXBARCODE_CBC_CODEBASE_H_
+#define XFA_FXBARCODE_CBC_CODEBASE_H_
+
+#include "core/include/fxcrt/fx_system.h"
+#include "core/include/fxge/fx_dib.h"
+#include "xfa/fxbarcode/include/BC_Library.h"
+
+class CBC_Writer;
+class CBC_Reader;
+class CFX_DIBitmap;
+class CFX_RenderDevice;
+
+class CBC_CodeBase {
+ public:
+ CBC_CodeBase();
+ virtual ~CBC_CodeBase();
+
+ virtual BC_TYPE GetType() = 0;
+ virtual FX_BOOL Encode(const CFX_WideStringC& contents,
+ FX_BOOL isDevice,
+ int32_t& e) = 0;
+ virtual FX_BOOL RenderDevice(CFX_RenderDevice* device,
+ const CFX_Matrix* matirx,
+ int32_t& e) = 0;
+ virtual FX_BOOL RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e) = 0;
+ virtual CFX_WideString Decode(uint8_t* buf,
+ int32_t width,
+ int32_t hight,
+ int32_t& e) = 0;
+ virtual CFX_WideString Decode(CFX_DIBitmap* pBitmap, int32_t& e) = 0;
+
+ virtual FX_BOOL SetCharEncoding(int32_t encoding);
+ virtual FX_BOOL SetModuleHeight(int32_t moduleHeight);
+ virtual FX_BOOL SetModuleWidth(int32_t moduleWidth);
+
+ virtual FX_BOOL SetHeight(int32_t height);
+ virtual FX_BOOL SetWidth(int32_t width);
+ virtual void SetBackgroundColor(FX_ARGB backgroundColor);
+ virtual void SetBarcodeColor(FX_ARGB foregroundColor);
+
+ protected:
+ CBC_Writer* m_pBCWriter;
+ CBC_Reader* m_pBCReader;
+};
+
+#endif // XFA_FXBARCODE_CBC_CODEBASE_H_
diff --git a/xfa/fxbarcode/cbc_datamatrix.cpp b/xfa/fxbarcode/cbc_datamatrix.cpp
new file mode 100644
index 0000000000..d3e1a073a5
--- /dev/null
+++ b/xfa/fxbarcode/cbc_datamatrix.cpp
@@ -0,0 +1,83 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+/*
+ * Copyright 2011 ZXing authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "xfa/fxbarcode/cbc_datamatrix.h"
+
+#include "xfa/fxbarcode/BC_BinaryBitmap.h"
+#include "xfa/fxbarcode/BC_BufferedImageLuminanceSource.h"
+#include "xfa/fxbarcode/common/BC_GlobalHistogramBinarizer.h"
+#include "xfa/fxbarcode/datamatrix/BC_DataMatrixReader.h"
+#include "xfa/fxbarcode/datamatrix/BC_DataMatrixWriter.h"
+
+CBC_DataMatrix::CBC_DataMatrix() {
+ m_pBCReader = (CBC_Reader*)new (CBC_DataMatrixReader);
+ ((CBC_DataMatrixReader*)m_pBCReader)->Init();
+ m_pBCWriter = (CBC_Writer*)new (CBC_DataMatrixWriter);
+}
+
+CBC_DataMatrix::~CBC_DataMatrix() {
+ delete (m_pBCReader);
+ delete (m_pBCWriter);
+}
+
+FX_BOOL CBC_DataMatrix::Encode(const CFX_WideStringC& contents,
+ FX_BOOL isDevice,
+ int32_t& e) {
+ int32_t outWidth = 0;
+ int32_t outHeight = 0;
+ uint8_t* data = ((CBC_DataMatrixWriter*)m_pBCWriter)
+ ->Encode(contents, outWidth, outHeight, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ ((CBC_TwoDimWriter*)m_pBCWriter)->RenderResult(data, outWidth, outHeight, e);
+ FX_Free(data);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ return TRUE;
+}
+
+FX_BOOL CBC_DataMatrix::RenderDevice(CFX_RenderDevice* device,
+ const CFX_Matrix* matirx,
+ int32_t& e) {
+ ((CBC_TwoDimWriter*)m_pBCWriter)->RenderDeviceResult(device, matirx);
+ return TRUE;
+}
+
+FX_BOOL CBC_DataMatrix::RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e) {
+ ((CBC_TwoDimWriter*)m_pBCWriter)->RenderBitmapResult(pOutBitmap, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ return TRUE;
+}
+
+CFX_WideString CBC_DataMatrix::Decode(uint8_t* buf,
+ int32_t width,
+ int32_t hight,
+ int32_t& e) {
+ CFX_WideString str;
+ return str;
+}
+
+CFX_WideString CBC_DataMatrix::Decode(CFX_DIBitmap* pBitmap, int32_t& e) {
+ CBC_BufferedImageLuminanceSource source(pBitmap);
+ CBC_GlobalHistogramBinarizer binarizer(&source);
+ CBC_BinaryBitmap bitmap(&binarizer);
+ CFX_ByteString retStr = m_pBCReader->Decode(&bitmap, 0, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FX_WSTRC(L""));
+ return CFX_WideString::FromUTF8(retStr, retStr.GetLength());
+}
diff --git a/xfa/fxbarcode/cbc_datamatrix.h b/xfa/fxbarcode/cbc_datamatrix.h
new file mode 100644
index 0000000000..903d0b2472
--- /dev/null
+++ b/xfa/fxbarcode/cbc_datamatrix.h
@@ -0,0 +1,32 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef XFA_FXBARCODE_CBC_DATAMATRIX_H_
+#define XFA_FXBARCODE_CBC_DATAMATRIX_H_
+
+#include "core/include/fxcrt/fx_string.h"
+#include "core/include/fxcrt/fx_system.h"
+#include "core/include/fxge/fx_dib.h"
+#include "xfa/fxbarcode/cbc_codebase.h"
+
+class CBC_DataMatrix : public CBC_CodeBase {
+ public:
+ CBC_DataMatrix();
+ virtual ~CBC_DataMatrix();
+
+ FX_BOOL Encode(const CFX_WideStringC& contents, FX_BOOL isDevice, int32_t& e);
+ CFX_WideString Decode(uint8_t* buf, int32_t width, int32_t hight, int32_t& e);
+ CFX_WideString Decode(CFX_DIBitmap* pBitmap, int32_t& e);
+
+ FX_BOOL RenderDevice(CFX_RenderDevice* device,
+ const CFX_Matrix* matirx,
+ int32_t& e);
+ FX_BOOL RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e);
+
+ BC_TYPE GetType() { return BC_DATAMATRIX; }
+};
+
+#endif // XFA_FXBARCODE_CBC_DATAMATRIX_H_
diff --git a/xfa/fxbarcode/cbc_ean13.cpp b/xfa/fxbarcode/cbc_ean13.cpp
new file mode 100644
index 0000000000..e764122e3c
--- /dev/null
+++ b/xfa/fxbarcode/cbc_ean13.cpp
@@ -0,0 +1,114 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+/*
+ * Copyright 2011 ZXing authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "xfa/fxbarcode/cbc_ean13.h"
+
+#include "xfa/fxbarcode/BC_BinaryBitmap.h"
+#include "xfa/fxbarcode/BC_BufferedImageLuminanceSource.h"
+#include "xfa/fxbarcode/common/BC_GlobalHistogramBinarizer.h"
+#include "xfa/fxbarcode/oned/BC_OnedEAN13Reader.h"
+#include "xfa/fxbarcode/oned/BC_OnedEAN13Writer.h"
+
+CBC_EAN13::CBC_EAN13() {
+ m_pBCReader = (CBC_Reader*)new (CBC_OnedEAN13Reader);
+ m_pBCWriter = (CBC_Writer*)new (CBC_OnedEAN13Writer);
+}
+
+CBC_EAN13::~CBC_EAN13() {
+ delete (m_pBCReader);
+ delete (m_pBCWriter);
+}
+
+CFX_WideString CBC_EAN13::Preprocess(const CFX_WideStringC& contents) {
+ CFX_WideString encodeContents =
+ ((CBC_OnedEAN13Writer*)m_pBCWriter)->FilterContents(contents);
+ int32_t length = encodeContents.GetLength();
+ if (length <= 12) {
+ for (int32_t i = 0; i < 12 - length; i++)
+ encodeContents = FX_WCHAR('0') + encodeContents;
+
+ CFX_ByteString byteString = encodeContents.UTF8Encode();
+ int32_t checksum =
+ ((CBC_OnedEAN13Writer*)m_pBCWriter)->CalcChecksum(byteString);
+ byteString += checksum - 0 + '0';
+ encodeContents = byteString.UTF8Decode();
+ }
+ if (length > 13)
+ encodeContents = encodeContents.Mid(0, 13);
+
+ return encodeContents;
+}
+
+FX_BOOL CBC_EAN13::Encode(const CFX_WideStringC& contents,
+ FX_BOOL isDevice,
+ int32_t& e) {
+ if (contents.IsEmpty()) {
+ e = BCExceptionNoContents;
+ return FALSE;
+ }
+ BCFORMAT format = BCFORMAT_EAN_13;
+ int32_t outWidth = 0;
+ int32_t outHeight = 0;
+ CFX_WideString encodeContents = Preprocess(contents);
+ CFX_ByteString byteString = encodeContents.UTF8Encode();
+ m_renderContents = encodeContents;
+ uint8_t* data = static_cast<CBC_OnedEAN13Writer*>(m_pBCWriter)
+ ->Encode(byteString, format, outWidth, outHeight, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ ((CBC_OneDimWriter*)m_pBCWriter)
+ ->RenderResult(encodeContents, data, outWidth, isDevice, e);
+ FX_Free(data);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ return TRUE;
+}
+
+FX_BOOL CBC_EAN13::RenderDevice(CFX_RenderDevice* device,
+ const CFX_Matrix* matirx,
+ int32_t& e) {
+ ((CBC_OneDimWriter*)m_pBCWriter)
+ ->RenderDeviceResult(device, matirx, m_renderContents, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ return TRUE;
+}
+
+FX_BOOL CBC_EAN13::RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e) {
+ ((CBC_OneDimWriter*)m_pBCWriter)
+ ->RenderBitmapResult(pOutBitmap, m_renderContents, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ return TRUE;
+}
+
+CFX_WideString CBC_EAN13::Decode(uint8_t* buf,
+ int32_t width,
+ int32_t hight,
+ int32_t& e) {
+ CFX_WideString str;
+ return str;
+}
+
+CFX_WideString CBC_EAN13::Decode(CFX_DIBitmap* pBitmap, int32_t& e) {
+ CBC_BufferedImageLuminanceSource source(pBitmap);
+ CBC_GlobalHistogramBinarizer binarizer(&source);
+ CBC_BinaryBitmap bitmap(&binarizer);
+ CFX_ByteString str = m_pBCReader->Decode(&bitmap, 0, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FX_WSTRC(L""));
+ return CFX_WideString::FromUTF8(str, str.GetLength());
+}
diff --git a/xfa/fxbarcode/cbc_ean13.h b/xfa/fxbarcode/cbc_ean13.h
new file mode 100644
index 0000000000..c9ecc90cd9
--- /dev/null
+++ b/xfa/fxbarcode/cbc_ean13.h
@@ -0,0 +1,36 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef XFA_FXBARCODE_CBC_EAN13_H_
+#define XFA_FXBARCODE_CBC_EAN13_H_
+
+#include "core/include/fxcrt/fx_string.h"
+#include "core/include/fxcrt/fx_system.h"
+#include "core/include/fxge/fx_dib.h"
+#include "xfa/fxbarcode/cbc_onecode.h"
+
+class CBC_EAN13 : public CBC_OneCode {
+ public:
+ CBC_EAN13();
+ virtual ~CBC_EAN13();
+
+ FX_BOOL Encode(const CFX_WideStringC& contents, FX_BOOL isDevice, int32_t& e);
+ CFX_WideString Decode(uint8_t* buf, int32_t width, int32_t hight, int32_t& e);
+ CFX_WideString Decode(CFX_DIBitmap* pBitmap, int32_t& e);
+
+ FX_BOOL RenderDevice(CFX_RenderDevice* device,
+ const CFX_Matrix* matirx,
+ int32_t& e);
+ FX_BOOL RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e);
+
+ BC_TYPE GetType() { return BC_EAN13; }
+
+ private:
+ CFX_WideString Preprocess(const CFX_WideStringC& contents);
+ CFX_WideString m_renderContents;
+};
+
+#endif // XFA_FXBARCODE_CBC_EAN13_H_
diff --git a/xfa/fxbarcode/cbc_ean8.cpp b/xfa/fxbarcode/cbc_ean8.cpp
new file mode 100644
index 0000000000..bc983b8c47
--- /dev/null
+++ b/xfa/fxbarcode/cbc_ean8.cpp
@@ -0,0 +1,113 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+/*
+ * Copyright 2011 ZXing authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "xfa/fxbarcode/cbc_ean8.h"
+
+#include "xfa/fxbarcode/BC_BinaryBitmap.h"
+#include "xfa/fxbarcode/BC_BufferedImageLuminanceSource.h"
+#include "xfa/fxbarcode/common/BC_GlobalHistogramBinarizer.h"
+#include "xfa/fxbarcode/oned/BC_OnedEAN8Reader.h"
+#include "xfa/fxbarcode/oned/BC_OnedEAN8Writer.h"
+
+CBC_EAN8::CBC_EAN8() {
+ m_pBCReader = (CBC_Reader*)new (CBC_OnedEAN8Reader);
+ m_pBCWriter = (CBC_Writer*)new (CBC_OnedEAN8Writer);
+}
+
+CBC_EAN8::~CBC_EAN8() {
+ delete (m_pBCReader);
+ delete (m_pBCWriter);
+}
+
+CFX_WideString CBC_EAN8::Preprocess(const CFX_WideStringC& contents) {
+ CFX_WideString encodeContents =
+ ((CBC_OnedEAN8Writer*)m_pBCWriter)->FilterContents(contents);
+ int32_t length = encodeContents.GetLength();
+ if (length <= 7) {
+ for (int32_t i = 0; i < 7 - length; i++)
+ encodeContents = FX_WCHAR('0') + encodeContents;
+
+ CFX_ByteString byteString = encodeContents.UTF8Encode();
+ int32_t checksum =
+ ((CBC_OnedEAN8Writer*)m_pBCWriter)->CalcChecksum(byteString);
+ encodeContents += FX_WCHAR(checksum - 0 + '0');
+ }
+ if (length > 8)
+ encodeContents = encodeContents.Mid(0, 8);
+
+ return encodeContents;
+}
+
+FX_BOOL CBC_EAN8::Encode(const CFX_WideStringC& contents,
+ FX_BOOL isDevice,
+ int32_t& e) {
+ if (contents.IsEmpty()) {
+ e = BCExceptionNoContents;
+ return FALSE;
+ }
+ BCFORMAT format = BCFORMAT_EAN_8;
+ int32_t outWidth = 0;
+ int32_t outHeight = 0;
+ CFX_WideString encodeContents = Preprocess(contents);
+ CFX_ByteString byteString = encodeContents.UTF8Encode();
+ m_renderContents = encodeContents;
+ uint8_t* data = static_cast<CBC_OnedEAN8Writer*>(m_pBCWriter)
+ ->Encode(byteString, format, outWidth, outHeight, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ ((CBC_OneDimWriter*)m_pBCWriter)
+ ->RenderResult(encodeContents, data, outWidth, isDevice, e);
+ FX_Free(data);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ return TRUE;
+}
+
+FX_BOOL CBC_EAN8::RenderDevice(CFX_RenderDevice* device,
+ const CFX_Matrix* matirx,
+ int32_t& e) {
+ ((CBC_OneDimWriter*)m_pBCWriter)
+ ->RenderDeviceResult(device, matirx, m_renderContents, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ return TRUE;
+}
+
+FX_BOOL CBC_EAN8::RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e) {
+ ((CBC_OneDimWriter*)m_pBCWriter)
+ ->RenderBitmapResult(pOutBitmap, m_renderContents, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ return TRUE;
+}
+
+CFX_WideString CBC_EAN8::Decode(uint8_t* buf,
+ int32_t width,
+ int32_t hight,
+ int32_t& e) {
+ CFX_WideString str;
+ return str;
+}
+
+CFX_WideString CBC_EAN8::Decode(CFX_DIBitmap* pBitmap, int32_t& e) {
+ CBC_BufferedImageLuminanceSource source(pBitmap);
+ CBC_GlobalHistogramBinarizer binarizer(&source);
+ CBC_BinaryBitmap bitmap(&binarizer);
+ CFX_ByteString str = m_pBCReader->Decode(&bitmap, 0, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FX_WSTRC(L""));
+ return CFX_WideString::FromUTF8(str, str.GetLength());
+}
diff --git a/xfa/fxbarcode/cbc_ean8.h b/xfa/fxbarcode/cbc_ean8.h
new file mode 100644
index 0000000000..95a61d2ab3
--- /dev/null
+++ b/xfa/fxbarcode/cbc_ean8.h
@@ -0,0 +1,36 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef XFA_FXBARCODE_CBC_EAN8_H_
+#define XFA_FXBARCODE_CBC_EAN8_H_
+
+#include "core/include/fxcrt/fx_string.h"
+#include "core/include/fxcrt/fx_system.h"
+#include "core/include/fxge/fx_dib.h"
+#include "xfa/fxbarcode/cbc_onecode.h"
+
+class CBC_EAN8 : public CBC_OneCode {
+ public:
+ CBC_EAN8();
+ virtual ~CBC_EAN8();
+
+ FX_BOOL Encode(const CFX_WideStringC& contents, FX_BOOL isDevice, int32_t& e);
+ CFX_WideString Decode(uint8_t* buf, int32_t width, int32_t hight, int32_t& e);
+ CFX_WideString Decode(CFX_DIBitmap* pBitmap, int32_t& e);
+
+ FX_BOOL RenderDevice(CFX_RenderDevice* device,
+ const CFX_Matrix* matirx,
+ int32_t& e);
+ FX_BOOL RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e);
+
+ BC_TYPE GetType() { return BC_EAN8; }
+
+ private:
+ CFX_WideString Preprocess(const CFX_WideStringC& contents);
+ CFX_WideString m_renderContents;
+};
+
+#endif // XFA_FXBARCODE_CBC_EAN8_H_
diff --git a/xfa/fxbarcode/cbc_onecode.cpp b/xfa/fxbarcode/cbc_onecode.cpp
new file mode 100644
index 0000000000..f5e1a3960a
--- /dev/null
+++ b/xfa/fxbarcode/cbc_onecode.cpp
@@ -0,0 +1,77 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+/*
+ * Copyright 2011 ZXing authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "xfa/fxbarcode/cbc_onecode.h"
+
+#include "xfa/fxbarcode/oned/BC_OneDimWriter.h"
+
+CBC_OneCode::CBC_OneCode() {}
+
+CBC_OneCode::~CBC_OneCode() {}
+
+FX_BOOL CBC_OneCode::CheckContentValidity(const CFX_WideStringC& contents) {
+ if (m_pBCWriter)
+ return ((CBC_OneDimWriter*)m_pBCWriter)->CheckContentValidity(contents);
+ return FALSE;
+}
+
+CFX_WideString CBC_OneCode::FilterContents(const CFX_WideStringC& contents) {
+ CFX_WideString tmp;
+ if (!m_pBCWriter)
+ return tmp;
+ return ((CBC_OneDimWriter*)m_pBCWriter)->FilterContents(contents);
+}
+
+void CBC_OneCode::SetPrintChecksum(FX_BOOL checksum) {
+ if (m_pBCWriter)
+ ((CBC_OneDimWriter*)m_pBCWriter)->SetPrintChecksum(checksum);
+}
+
+void CBC_OneCode::SetDataLength(int32_t length) {
+ if (m_pBCWriter)
+ ((CBC_OneDimWriter*)m_pBCWriter)->SetDataLength(length);
+}
+
+void CBC_OneCode::SetCalChecksum(FX_BOOL calc) {
+ if (m_pBCWriter)
+ ((CBC_OneDimWriter*)m_pBCWriter)->SetCalcChecksum(calc);
+}
+
+FX_BOOL CBC_OneCode::SetFont(CFX_Font* cFont) {
+ if (m_pBCWriter)
+ return ((CBC_OneDimWriter*)m_pBCWriter)->SetFont(cFont);
+ return FALSE;
+}
+
+void CBC_OneCode::SetFontSize(FX_FLOAT size) {
+ if (m_pBCWriter)
+ ((CBC_OneDimWriter*)m_pBCWriter)->SetFontSize(size);
+}
+
+void CBC_OneCode::SetFontStyle(int32_t style) {
+ if (m_pBCWriter)
+ ((CBC_OneDimWriter*)m_pBCWriter)->SetFontStyle(style);
+}
+
+void CBC_OneCode::SetFontColor(FX_ARGB color) {
+ if (m_pBCWriter)
+ ((CBC_OneDimWriter*)m_pBCWriter)->SetFontColor(color);
+}
diff --git a/xfa/fxbarcode/cbc_onecode.h b/xfa/fxbarcode/cbc_onecode.h
new file mode 100644
index 0000000000..ac070a496c
--- /dev/null
+++ b/xfa/fxbarcode/cbc_onecode.h
@@ -0,0 +1,52 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef XFA_FXBARCODE_CBC_ONECODE_H_
+#define XFA_FXBARCODE_CBC_ONECODE_H_
+
+#include "core/include/fxcrt/fx_string.h"
+#include "core/include/fxcrt/fx_system.h"
+#include "xfa/fxbarcode/cbc_codebase.h"
+
+class CFX_DIBitmap;
+class CFX_Font;
+class CFX_RenderDevice;
+
+class CBC_OneCode : public CBC_CodeBase {
+ public:
+ CBC_OneCode();
+ virtual ~CBC_OneCode();
+
+ virtual BC_TYPE GetType() = 0;
+
+ virtual FX_BOOL Encode(const CFX_WideStringC& contents,
+ FX_BOOL isDevice,
+ int32_t& e) = 0;
+ virtual CFX_WideString Decode(uint8_t* buf,
+ int32_t width,
+ int32_t hight,
+ int32_t& e) = 0;
+ virtual CFX_WideString Decode(CFX_DIBitmap* pBitmap, int32_t& e) = 0;
+
+ virtual FX_BOOL RenderDevice(CFX_RenderDevice* device,
+ const CFX_Matrix* matirx,
+ int32_t& e) = 0;
+ virtual FX_BOOL RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e) = 0;
+
+
+ virtual FX_BOOL CheckContentValidity(const CFX_WideStringC& contents);
+ virtual CFX_WideString FilterContents(const CFX_WideStringC& contents);
+
+ virtual void SetPrintChecksum(FX_BOOL checksum);
+ virtual void SetDataLength(int32_t length);
+ virtual void SetCalChecksum(FX_BOOL calc);
+ virtual FX_BOOL SetFont(CFX_Font* cFont);
+ virtual void SetFontSize(FX_FLOAT size);
+ virtual void SetFontStyle(int32_t style);
+ virtual void SetFontColor(FX_ARGB color);
+};
+
+#endif // XFA_FXBARCODE_CBC_ONECODE_H_
diff --git a/xfa/fxbarcode/cbc_pdf417i.cpp b/xfa/fxbarcode/cbc_pdf417i.cpp
new file mode 100644
index 0000000000..b27af1cefc
--- /dev/null
+++ b/xfa/fxbarcode/cbc_pdf417i.cpp
@@ -0,0 +1,91 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+/*
+ * Copyright 2011 ZXing authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "xfa/fxbarcode/cbc_pdf417i.h"
+
+#include "xfa/fxbarcode/BC_BinaryBitmap.h"
+#include "xfa/fxbarcode/BC_BufferedImageLuminanceSource.h"
+#include "xfa/fxbarcode/common/BC_GlobalHistogramBinarizer.h"
+#include "xfa/fxbarcode/pdf417/BC_PDF417Reader.h"
+#include "xfa/fxbarcode/pdf417/BC_PDF417Writer.h"
+
+CBC_PDF417I::CBC_PDF417I() {
+ m_pBCReader = (CBC_Reader*)new (CBC_PDF417Reader);
+ m_pBCWriter = (CBC_Writer*)new (CBC_PDF417Writer);
+}
+
+CBC_PDF417I::~CBC_PDF417I() {
+ delete (m_pBCReader);
+ delete (m_pBCWriter);
+}
+
+FX_BOOL CBC_PDF417I::SetErrorCorrectionLevel(int32_t level) {
+ ((CBC_PDF417Writer*)m_pBCWriter)->SetErrorCorrectionLevel(level);
+ return TRUE;
+}
+
+void CBC_PDF417I::SetTruncated(FX_BOOL truncated) {
+ ((CBC_PDF417Writer*)m_pBCWriter)->SetTruncated(truncated);
+}
+
+FX_BOOL CBC_PDF417I::Encode(const CFX_WideStringC& contents,
+ FX_BOOL isDevice,
+ int32_t& e) {
+ int32_t outWidth = 0;
+ int32_t outHeight = 0;
+ uint8_t* data = ((CBC_PDF417Writer*)m_pBCWriter)
+ ->Encode(contents, outWidth, outHeight, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ ((CBC_TwoDimWriter*)m_pBCWriter)->RenderResult(data, outWidth, outHeight, e);
+ FX_Free(data);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ return TRUE;
+}
+
+FX_BOOL CBC_PDF417I::RenderDevice(CFX_RenderDevice* device,
+ const CFX_Matrix* matirx,
+ int32_t& e) {
+ ((CBC_TwoDimWriter*)m_pBCWriter)->RenderDeviceResult(device, matirx);
+ return TRUE;
+}
+
+FX_BOOL CBC_PDF417I::RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e) {
+ ((CBC_TwoDimWriter*)m_pBCWriter)->RenderBitmapResult(pOutBitmap, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ return TRUE;
+}
+
+CFX_WideString CBC_PDF417I::Decode(uint8_t* buf,
+ int32_t width,
+ int32_t hight,
+ int32_t& e) {
+ CFX_WideString str;
+ return str;
+}
+
+CFX_WideString CBC_PDF417I::Decode(CFX_DIBitmap* pBitmap, int32_t& e) {
+ CBC_BufferedImageLuminanceSource source(pBitmap);
+ CBC_GlobalHistogramBinarizer binarizer(&source);
+ CBC_BinaryBitmap bitmap(&binarizer);
+ CFX_ByteString bytestring = m_pBCReader->Decode(&bitmap, 0, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FX_WSTRC(L""));
+ return CFX_WideString::FromUTF8(bytestring, bytestring.GetLength());
+}
diff --git a/xfa/fxbarcode/cbc_pdf417i.h b/xfa/fxbarcode/cbc_pdf417i.h
new file mode 100644
index 0000000000..b8f45fa098
--- /dev/null
+++ b/xfa/fxbarcode/cbc_pdf417i.h
@@ -0,0 +1,35 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef XFA_FXBARCODE_CBC_PDF417I_H_
+#define XFA_FXBARCODE_CBC_PDF417I_H_
+
+#include "core/include/fxcrt/fx_string.h"
+#include "core/include/fxcrt/fx_system.h"
+#include "core/include/fxge/fx_dib.h"
+#include "xfa/fxbarcode/cbc_codebase.h"
+
+class CBC_PDF417I : public CBC_CodeBase {
+ public:
+ CBC_PDF417I();
+ virtual ~CBC_PDF417I();
+
+ FX_BOOL Encode(const CFX_WideStringC& contents, FX_BOOL isDevice, int32_t& e);
+ CFX_WideString Decode(uint8_t* buf, int32_t width, int32_t hight, int32_t& e);
+ CFX_WideString Decode(CFX_DIBitmap* pBitmap, int32_t& e);
+
+ FX_BOOL RenderDevice(CFX_RenderDevice* device,
+ const CFX_Matrix* matirx,
+ int32_t& e);
+ FX_BOOL RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e);
+
+ BC_TYPE GetType() { return BC_PDF417; }
+
+ FX_BOOL SetErrorCorrectionLevel(int32_t level);
+ void SetTruncated(FX_BOOL truncated);
+};
+
+#endif // XFA_FXBARCODE_CBC_PDF417I_H_
diff --git a/xfa/fxbarcode/cbc_qrcode.cpp b/xfa/fxbarcode/cbc_qrcode.cpp
new file mode 100644
index 0000000000..4518594944
--- /dev/null
+++ b/xfa/fxbarcode/cbc_qrcode.cpp
@@ -0,0 +1,101 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+/*
+ * Copyright 2011 ZXing authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "xfa/fxbarcode/cbc_qrcode.h"
+
+#include "xfa/fxbarcode/BC_BinaryBitmap.h"
+#include "xfa/fxbarcode/BC_BufferedImageLuminanceSource.h"
+#include "xfa/fxbarcode/common/BC_GlobalHistogramBinarizer.h"
+#include "xfa/fxbarcode/qrcode/BC_QRCodeReader.h"
+#include "xfa/fxbarcode/qrcode/BC_QRCodeWriter.h"
+
+CBC_QRCode::CBC_QRCode() {
+ m_pBCReader = (CBC_Reader*)new (CBC_QRCodeReader);
+ ((CBC_QRCodeReader*)m_pBCReader)->Init();
+ m_pBCWriter = (CBC_Writer*)new (CBC_QRCodeWriter);
+}
+
+CBC_QRCode::~CBC_QRCode() {
+ delete (m_pBCReader);
+ delete (m_pBCWriter);
+}
+
+FX_BOOL CBC_QRCode::SetVersion(int32_t version) {
+ if (version < 0 || version > 40)
+ return FALSE;
+ if (!m_pBCWriter)
+ return FALSE;
+ return ((CBC_QRCodeWriter*)m_pBCWriter)->SetVersion(version);
+}
+
+FX_BOOL CBC_QRCode::SetErrorCorrectionLevel(int32_t level) {
+ if (level < 0 || level > 3)
+ return FALSE;
+ if (!m_pBCWriter)
+ return FALSE;
+ return ((CBC_TwoDimWriter*)m_pBCWriter)->SetErrorCorrectionLevel(level);
+}
+
+FX_BOOL CBC_QRCode::Encode(const CFX_WideStringC& contents,
+ FX_BOOL isDevice,
+ int32_t& e) {
+ int32_t outWidth = 0;
+ int32_t outHeight = 0;
+ uint8_t* data = ((CBC_QRCodeWriter*)m_pBCWriter)
+ ->Encode(contents, ((CBC_QRCodeWriter*)m_pBCWriter)
+ ->GetErrorCorrectionLevel(),
+ outWidth, outHeight, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ ((CBC_TwoDimWriter*)m_pBCWriter)->RenderResult(data, outWidth, outHeight, e);
+ FX_Free(data);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ return TRUE;
+}
+
+FX_BOOL CBC_QRCode::RenderDevice(CFX_RenderDevice* device,
+ const CFX_Matrix* matirx,
+ int32_t& e) {
+ ((CBC_TwoDimWriter*)m_pBCWriter)->RenderDeviceResult(device, matirx);
+ return TRUE;
+}
+
+FX_BOOL CBC_QRCode::RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e) {
+ ((CBC_TwoDimWriter*)m_pBCWriter)->RenderBitmapResult(pOutBitmap, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ return TRUE;
+}
+
+CFX_WideString CBC_QRCode::Decode(uint8_t* buf,
+ int32_t width,
+ int32_t hight,
+ int32_t& e) {
+ CFX_WideString str;
+ return str;
+}
+
+CFX_WideString CBC_QRCode::Decode(CFX_DIBitmap* pBitmap, int32_t& e) {
+ CBC_BufferedImageLuminanceSource source(pBitmap);
+ CBC_GlobalHistogramBinarizer binarizer(&source);
+ CBC_BinaryBitmap bitmap(&binarizer);
+ CFX_ByteString retStr = m_pBCReader->Decode(&bitmap, 0, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FX_WSTRC(L""));
+ return CFX_WideString::FromUTF8(retStr, retStr.GetLength());
+}
diff --git a/xfa/fxbarcode/cbc_qrcode.h b/xfa/fxbarcode/cbc_qrcode.h
new file mode 100644
index 0000000000..1198194b97
--- /dev/null
+++ b/xfa/fxbarcode/cbc_qrcode.h
@@ -0,0 +1,35 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef XFA_FXBARCODE_CBC_QRCODE_H_
+#define XFA_FXBARCODE_CBC_QRCODE_H_
+
+#include "core/include/fxcrt/fx_string.h"
+#include "core/include/fxcrt/fx_system.h"
+#include "core/include/fxge/fx_dib.h"
+#include "xfa/fxbarcode/cbc_codebase.h"
+
+class CBC_QRCode : public CBC_CodeBase {
+ public:
+ CBC_QRCode();
+ virtual ~CBC_QRCode();
+
+ FX_BOOL Encode(const CFX_WideStringC& contents, FX_BOOL isDevice, int32_t& e);
+ CFX_WideString Decode(uint8_t* buf, int32_t width, int32_t hight, int32_t& e);
+ CFX_WideString Decode(CFX_DIBitmap* pBitmap, int32_t& e);
+
+ FX_BOOL RenderDevice(CFX_RenderDevice* device,
+ const CFX_Matrix* matirx,
+ int32_t& e);
+ FX_BOOL RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e);
+
+ BC_TYPE GetType() { return BC_QR_CODE; }
+
+ FX_BOOL SetVersion(int32_t version);
+ FX_BOOL SetErrorCorrectionLevel(int32_t level);
+};
+
+#endif // XFA_FXBARCODE_CBC_QRCODE_H_
diff --git a/xfa/fxbarcode/cbc_upca.cpp b/xfa/fxbarcode/cbc_upca.cpp
new file mode 100644
index 0000000000..220b8fa2d8
--- /dev/null
+++ b/xfa/fxbarcode/cbc_upca.cpp
@@ -0,0 +1,116 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+/*
+ * Copyright 2011 ZXing authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "xfa/fxbarcode/cbc_upca.h"
+
+#include "xfa/fxbarcode/BC_BinaryBitmap.h"
+#include "xfa/fxbarcode/BC_BufferedImageLuminanceSource.h"
+#include "xfa/fxbarcode/common/BC_GlobalHistogramBinarizer.h"
+#include "xfa/fxbarcode/oned/BC_OnedUPCAReader.h"
+#include "xfa/fxbarcode/oned/BC_OnedUPCAWriter.h"
+
+CBC_UPCA::CBC_UPCA() {
+ m_pBCReader = (CBC_Reader*)new (CBC_OnedUPCAReader);
+ ((CBC_OnedUPCAReader*)m_pBCReader)->Init();
+ m_pBCWriter = (CBC_Writer*)new (CBC_OnedUPCAWriter);
+}
+
+CBC_UPCA::~CBC_UPCA() {
+ delete (m_pBCReader);
+ delete (m_pBCWriter);
+}
+
+CFX_WideString CBC_UPCA::Preprocess(const CFX_WideStringC& contents) {
+ CFX_WideString encodeContents =
+ ((CBC_OnedUPCAWriter*)m_pBCWriter)->FilterContents(contents);
+ int32_t length = encodeContents.GetLength();
+ if (length <= 11) {
+ for (int32_t i = 0; i < 11 - length; i++)
+ encodeContents = FX_WCHAR('0') + encodeContents;
+
+ CFX_ByteString byteString = encodeContents.UTF8Encode();
+ int32_t checksum =
+ ((CBC_OnedUPCAWriter*)m_pBCWriter)->CalcChecksum(byteString);
+ byteString += checksum - 0 + '0';
+ encodeContents = byteString.UTF8Decode();
+ }
+ if (length > 12)
+ encodeContents = encodeContents.Mid(0, 12);
+
+ return encodeContents;
+}
+
+FX_BOOL CBC_UPCA::Encode(const CFX_WideStringC& contents,
+ FX_BOOL isDevice,
+ int32_t& e) {
+ if (contents.IsEmpty()) {
+ e = BCExceptionNoContents;
+ return FALSE;
+ }
+ BCFORMAT format = BCFORMAT_UPC_A;
+ int32_t outWidth = 0;
+ int32_t outHeight = 0;
+ CFX_WideString encodeContents = Preprocess(contents);
+ CFX_ByteString byteString = encodeContents.UTF8Encode();
+ m_renderContents = encodeContents;
+ ((CBC_OnedUPCAWriter*)m_pBCWriter)->Init();
+ uint8_t* data = static_cast<CBC_OnedUPCAWriter*>(m_pBCWriter)
+ ->Encode(byteString, format, outWidth, outHeight, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ ((CBC_OneDimWriter*)m_pBCWriter)
+ ->RenderResult(encodeContents, data, outWidth, isDevice, e);
+ FX_Free(data);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ return TRUE;
+}
+
+FX_BOOL CBC_UPCA::RenderDevice(CFX_RenderDevice* device,
+ const CFX_Matrix* matirx,
+ int32_t& e) {
+ ((CBC_OneDimWriter*)m_pBCWriter)
+ ->RenderDeviceResult(device, matirx, m_renderContents, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ return TRUE;
+}
+
+FX_BOOL CBC_UPCA::RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e) {
+ ((CBC_OneDimWriter*)m_pBCWriter)
+ ->RenderBitmapResult(pOutBitmap, m_renderContents, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FALSE);
+ return TRUE;
+}
+
+CFX_WideString CBC_UPCA::Decode(uint8_t* buf,
+ int32_t width,
+ int32_t hight,
+ int32_t& e) {
+ CFX_WideString str;
+ return str;
+}
+
+CFX_WideString CBC_UPCA::Decode(CFX_DIBitmap* pBitmap, int32_t& e) {
+ CBC_BufferedImageLuminanceSource source(pBitmap);
+ CBC_GlobalHistogramBinarizer binarizer(&source);
+ CBC_BinaryBitmap bitmap(&binarizer);
+ CFX_ByteString str = m_pBCReader->Decode(&bitmap, 0, e);
+ BC_EXCEPTION_CHECK_ReturnValue(e, FX_WSTRC(L""));
+ return CFX_WideString::FromUTF8(str, str.GetLength());
+}
diff --git a/xfa/fxbarcode/cbc_upca.h b/xfa/fxbarcode/cbc_upca.h
new file mode 100644
index 0000000000..ee4c31bee4
--- /dev/null
+++ b/xfa/fxbarcode/cbc_upca.h
@@ -0,0 +1,33 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef XFA_FXBARCODE_CBC_UPCA_H_
+#define XFA_FXBARCODE_CBC_UPCA_H_
+
+#include "core/include/fxcrt/fx_string.h"
+#include "core/include/fxcrt/fx_system.h"
+#include "core/include/fxge/fx_dib.h"
+#include "xfa/fxbarcode/cbc_onecode.h"
+
+class CBC_UPCA : public CBC_OneCode {
+ public:
+ CBC_UPCA();
+ virtual ~CBC_UPCA();
+ FX_BOOL Encode(const CFX_WideStringC& contents, FX_BOOL isDevice, int32_t& e);
+ FX_BOOL RenderDevice(CFX_RenderDevice* device,
+ const CFX_Matrix* matirx,
+ int32_t& e);
+ FX_BOOL RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e);
+ CFX_WideString Decode(uint8_t* buf, int32_t width, int32_t hight, int32_t& e);
+ CFX_WideString Decode(CFX_DIBitmap* pBitmap, int32_t& e);
+ BC_TYPE GetType() { return BC_UPCA; }
+
+ private:
+ CFX_WideString Preprocess(const CFX_WideStringC& contents);
+ CFX_WideString m_renderContents;
+};
+
+#endif // XFA_FXBARCODE_CBC_UPCA_H_
diff --git a/xfa/fxbarcode/include/BC_Library.h b/xfa/fxbarcode/include/BC_Library.h
new file mode 100644
index 0000000000..d0bd85b118
--- /dev/null
+++ b/xfa/fxbarcode/include/BC_Library.h
@@ -0,0 +1,38 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef XFA_FXBARCODE_INCLUDE_BC_LIBRARY_H_
+#define XFA_FXBARCODE_INCLUDE_BC_LIBRARY_H_
+
+enum BC_TEXT_LOC {
+ BC_TEXT_LOC_NONE = 0,
+ BC_TEXT_LOC_ABOVE,
+ BC_TEXT_LOC_BELOW,
+ BC_TEXT_LOC_ABOVEEMBED,
+ BC_TEXT_LOC_BELOWEMBED
+};
+
+enum BC_CHAR_ENCODING { CHAR_ENCODING_UTF8 = 0, CHAR_ENCODING_UNICODE };
+
+enum BC_TYPE {
+ BC_UNKNOWN = -1,
+ BC_CODE39 = 0,
+ BC_CODABAR,
+ BC_CODE128,
+ BC_CODE128_B,
+ BC_CODE128_C,
+ BC_EAN8,
+ BC_UPCA,
+ BC_EAN13,
+ BC_QR_CODE,
+ BC_PDF417,
+ BC_DATAMATRIX
+};
+
+void BC_Library_Init();
+void BC_Library_Destory();
+
+#endif // XFA_FXBARCODE_INCLUDE_BC_LIBRARY_H_
diff --git a/xfa/fxbarcode/oned/BC_OneDimWriter.h b/xfa/fxbarcode/oned/BC_OneDimWriter.h
index e91a9297e1..b015070968 100644
--- a/xfa/fxbarcode/oned/BC_OneDimWriter.h
+++ b/xfa/fxbarcode/oned/BC_OneDimWriter.h
@@ -9,7 +9,7 @@
#include "core/include/fxge/fx_ge.h"
#include "xfa/fxbarcode/BC_Writer.h"
-#include "xfa/include/fxbarcode/BC_BarCode.h"
+#include "xfa/fxbarcode/include/BC_Library.h"
class CBC_CommonBitMatrix;
class CFX_Font;
@@ -19,6 +19,7 @@ class CBC_OneDimWriter : public CBC_Writer {
public:
CBC_OneDimWriter();
virtual ~CBC_OneDimWriter();
+
uint8_t* Encode(const CFX_ByteString& contents,
BCFORMAT format,
int32_t& outWidth,
@@ -35,6 +36,7 @@ class CBC_OneDimWriter : public CBC_Writer {
int32_t& e) {
return NULL;
}
+
virtual void RenderResult(const CFX_WideStringC& contents,
uint8_t* code,
int32_t codeLength,
@@ -65,21 +67,6 @@ class CBC_OneDimWriter : public CBC_Writer {
virtual FX_BOOL SetFont(CFX_Font* cFont);
protected:
- FX_BOOL m_bPrintChecksum;
- int32_t m_iDataLenth;
- FX_BOOL m_bCalcChecksum;
- CFX_Font* m_pFont;
- FX_FLOAT m_fFontSize;
- int32_t m_iFontStyle;
- FX_DWORD m_fontColor;
- BC_TEXT_LOC m_locTextLoc;
- int32_t m_iContentLen;
- FX_BOOL m_bLeftPadding;
- FX_BOOL m_bRightPadding;
- CBC_CommonBitMatrix* m_output;
- int32_t m_barWidth;
- int32_t m_multiple;
- FX_FLOAT m_outputHScale;
void CalcTextInfo(const CFX_ByteString& text,
FXTEXT_CHARPOS* charPos,
CFX_Font* cFont,
@@ -115,6 +102,22 @@ class CBC_OneDimWriter : public CBC_Writer {
int32_t startColor,
int32_t& e);
FX_WCHAR Upper(FX_WCHAR ch);
+
+ FX_BOOL m_bPrintChecksum;
+ int32_t m_iDataLenth;
+ FX_BOOL m_bCalcChecksum;
+ CFX_Font* m_pFont;
+ FX_FLOAT m_fFontSize;
+ int32_t m_iFontStyle;
+ FX_DWORD m_fontColor;
+ BC_TEXT_LOC m_locTextLoc;
+ int32_t m_iContentLen;
+ FX_BOOL m_bLeftPadding;
+ FX_BOOL m_bRightPadding;
+ CBC_CommonBitMatrix* m_output;
+ int32_t m_barWidth;
+ int32_t m_multiple;
+ FX_FLOAT m_outputHScale;
};
#endif // XFA_FXBARCODE_ONED_BC_ONEDIMWRITER_H_
diff --git a/xfa/fxbarcode/oned/BC_OnedCodaBarWriter.h b/xfa/fxbarcode/oned/BC_OnedCodaBarWriter.h
index 92a31bd989..53af246796 100644
--- a/xfa/fxbarcode/oned/BC_OnedCodaBarWriter.h
+++ b/xfa/fxbarcode/oned/BC_OnedCodaBarWriter.h
@@ -7,13 +7,16 @@
#ifndef XFA_FXBARCODE_ONED_BC_ONEDCODABARWRITER_H_
#define XFA_FXBARCODE_ONED_BC_ONEDCODABARWRITER_H_
-enum BC_TEXT_LOC;
-class CBC_OneDimWriter;
-class CBC_OnedCodaBarWriter;
+#include "core/include/fxcrt/fx_string.h"
+#include "core/include/fxcrt/fx_system.h"
+#include "xfa/fxbarcode/include/BC_Library.h"
+#include "xfa/fxbarcode/oned/BC_OneDimWriter.h"
+
class CBC_OnedCodaBarWriter : public CBC_OneDimWriter {
public:
CBC_OnedCodaBarWriter();
virtual ~CBC_OnedCodaBarWriter();
+
uint8_t* Encode(const CFX_ByteString& contents,
int32_t& outLength,
int32_t& e);
@@ -28,6 +31,7 @@ class CBC_OnedCodaBarWriter : public CBC_OneDimWriter {
int32_t& outHeight,
int32_t hints,
int32_t& e);
+
CFX_WideString encodedContents(const CFX_WideStringC& contents);
FX_BOOL CheckContentValidity(const CFX_WideStringC& contents);
CFX_WideString FilterContents(const CFX_WideStringC& contents);
@@ -39,13 +43,15 @@ class CBC_OnedCodaBarWriter : public CBC_OneDimWriter {
FX_BOOL FindChar(FX_WCHAR ch, FX_BOOL isContent);
private:
+ static const FX_CHAR START_END_CHARS[];
+ static const FX_CHAR CONTENT_CHARS[];
+
void RenderResult(const CFX_WideStringC& contents,
uint8_t* code,
int32_t codeLength,
FX_BOOL isDevice,
int32_t& e);
- static const FX_CHAR START_END_CHARS[];
- static const FX_CHAR CONTENT_CHARS[];
+
FX_CHAR m_chStart;
FX_CHAR m_chEnd;
int32_t m_iWideNarrRatio;
diff --git a/xfa/fxbarcode/oned/BC_OnedCode128Reader.h b/xfa/fxbarcode/oned/BC_OnedCode128Reader.h
index d9ac4853bf..df21d7a220 100644
--- a/xfa/fxbarcode/oned/BC_OnedCode128Reader.h
+++ b/xfa/fxbarcode/oned/BC_OnedCode128Reader.h
@@ -7,8 +7,10 @@
#ifndef XFA_FXBARCODE_ONED_BC_ONEDCODE128READER_H_
#define XFA_FXBARCODE_ONED_BC_ONEDCODE128READER_H_
-class CBC_OneDReader;
+#include "xfa/fxbarcode/oned/BC_OneDReader.h"
+
class CBC_CommonBitArray;
+
class CBC_OnedCode128Reader : public CBC_OneDReader {
public:
CBC_OnedCode128Reader();
diff --git a/xfa/fxbarcode/oned/BC_OnedCode128Writer.cpp b/xfa/fxbarcode/oned/BC_OnedCode128Writer.cpp
index 4d759b48a3..ac05e78910 100644
--- a/xfa/fxbarcode/oned/BC_OnedCode128Writer.cpp
+++ b/xfa/fxbarcode/oned/BC_OnedCode128Writer.cpp
@@ -27,12 +27,6 @@
#include "xfa/fxbarcode/oned/BC_OnedCode128Reader.h"
#include "xfa/fxbarcode/oned/BC_OnedCode128Writer.h"
-const int32_t CBC_OnedCode128Writer::CODE_CODE_B = 100;
-const int32_t CBC_OnedCode128Writer::CODE_CODE_C = 99;
-const int32_t CBC_OnedCode128Writer::CODE_START_B = 104;
-const int32_t CBC_OnedCode128Writer::CODE_START_C = 105;
-const int32_t CBC_OnedCode128Writer::CODE_STOP = 106;
-
CBC_OnedCode128Writer::CBC_OnedCode128Writer() {
m_codeFormat = BC_CODE128_B;
}
diff --git a/xfa/fxbarcode/oned/BC_OnedCode128Writer.h b/xfa/fxbarcode/oned/BC_OnedCode128Writer.h
index 9be05a19b0..5b68d5cd2e 100644
--- a/xfa/fxbarcode/oned/BC_OnedCode128Writer.h
+++ b/xfa/fxbarcode/oned/BC_OnedCode128Writer.h
@@ -7,12 +7,16 @@
#ifndef XFA_FXBARCODE_ONED_BC_ONEDCODE128WRITER_H_
#define XFA_FXBARCODE_ONED_BC_ONEDCODE128WRITER_H_
-class CBC_OneDimWriter;
+#include "core/include/fxcrt/fx_string.h"
+#include "core/include/fxcrt/fx_system.h"
+#include "xfa/fxbarcode/oned/BC_OneDimWriter.h"
+
class CBC_OnedCode128Writer : public CBC_OneDimWriter {
public:
CBC_OnedCode128Writer();
- CBC_OnedCode128Writer(BC_TYPE type);
+ explicit CBC_OnedCode128Writer(BC_TYPE type);
virtual ~CBC_OnedCode128Writer();
+
uint8_t* Encode(const CFX_ByteString& contents,
BCFORMAT format,
int32_t& outWidth,
@@ -27,23 +31,26 @@ class CBC_OnedCode128Writer : public CBC_OneDimWriter {
uint8_t* Encode(const CFX_ByteString& contents,
int32_t& outLength,
int32_t& e);
+
FX_BOOL CheckContentValidity(const CFX_WideStringC& contents);
CFX_WideString FilterContents(const CFX_WideStringC& contents);
FX_BOOL SetTextLocation(BC_TEXT_LOC location);
BC_TYPE GetType();
private:
+ static const int32_t CODE_CODE_B = 100;
+ static const int32_t CODE_CODE_C = 99;
+ static const int32_t CODE_START_B = 104;
+ static const int32_t CODE_START_C = 105;
+ static const int32_t CODE_STOP = 106;
+
FX_BOOL IsDigits(const CFX_ByteString& contents,
int32_t start,
int32_t length);
int32_t Encode128B(const CFX_ByteString& contents, CFX_PtrArray& patterns);
int32_t Encode128C(const CFX_ByteString& contents, CFX_PtrArray& patterns);
+
BC_TYPE m_codeFormat;
- static const int32_t CODE_START_B;
- static const int32_t CODE_START_C;
- static const int32_t CODE_CODE_B;
- static const int32_t CODE_CODE_C;
- static const int32_t CODE_STOP;
};
#endif // XFA_FXBARCODE_ONED_BC_ONEDCODE128WRITER_H_
diff --git a/xfa/fxbarcode/oned/BC_OnedCode39Reader.cpp b/xfa/fxbarcode/oned/BC_OnedCode39Reader.cpp
index e2f88e7a79..0eb4c990b4 100644
--- a/xfa/fxbarcode/oned/BC_OnedCode39Reader.cpp
+++ b/xfa/fxbarcode/oned/BC_OnedCode39Reader.cpp
@@ -38,7 +38,6 @@ const int32_t CBC_OnedCode39Reader::CHARACTER_ENCODINGS[44] = {
0x04C, 0x01C, 0x103, 0x043, 0x142, 0x013, 0x112, 0x052, 0x007,
0x106, 0x046, 0x016, 0x181, 0x0C1, 0x1C0, 0x091, 0x190, 0x0D0,
0x085, 0x184, 0x0C4, 0x094, 0x0A8, 0x0A2, 0x08A, 0x02A};
-const int32_t CBC_OnedCode39Reader::ASTERISK_ENCODING = 0x094;
CBC_OnedCode39Reader::CBC_OnedCode39Reader()
: m_usingCheckDigit(FALSE), m_extendedMode(FALSE) {}
diff --git a/xfa/fxbarcode/oned/BC_OnedCode39Reader.h b/xfa/fxbarcode/oned/BC_OnedCode39Reader.h
index f1551e4761..315ffa6faf 100644
--- a/xfa/fxbarcode/oned/BC_OnedCode39Reader.h
+++ b/xfa/fxbarcode/oned/BC_OnedCode39Reader.h
@@ -7,30 +7,36 @@
#ifndef XFA_FXBARCODE_ONED_BC_ONEDCODE39READER_H_
#define XFA_FXBARCODE_ONED_BC_ONEDCODE39READER_H_
-class CBC_OneDReader;
+#include "core/include/fxcrt/fx_system.h"
+#include "xfa/fxbarcode/oned/BC_OneDReader.h"
+
class CBC_CommonBitArray;
+
class CBC_OnedCode39Reader : public CBC_OneDReader {
public:
static const FX_CHAR* ALPHABET_STRING;
static const FX_CHAR* CHECKSUM_STRING;
static const int32_t CHARACTER_ENCODINGS[44];
- static const int32_t ASTERISK_ENCODING;
+ static const int32_t ASTERISK_ENCODING = 0x094;
+
CBC_OnedCode39Reader();
- CBC_OnedCode39Reader(FX_BOOL usingCheckDigit);
+ explicit CBC_OnedCode39Reader(FX_BOOL usingCheckDigit);
CBC_OnedCode39Reader(FX_BOOL usingCheckDigit, FX_BOOL extendedMode);
virtual ~CBC_OnedCode39Reader();
+
CFX_ByteString DecodeRow(int32_t rowNumber,
CBC_CommonBitArray* row,
int32_t hints,
int32_t& e);
private:
- FX_BOOL m_usingCheckDigit;
- FX_BOOL m_extendedMode;
CFX_Int32Array* FindAsteriskPattern(CBC_CommonBitArray* row, int32_t& e);
int32_t ToNarrowWidePattern(CFX_Int32Array* counters);
FX_CHAR PatternToChar(int32_t pattern, int32_t& e);
CFX_ByteString DecodeExtended(CFX_ByteString& encoded, int32_t& e);
+
+ FX_BOOL m_usingCheckDigit;
+ FX_BOOL m_extendedMode;
};
#endif // XFA_FXBARCODE_ONED_BC_ONEDCODE39READER_H_
diff --git a/xfa/fxbarcode/oned/BC_OnedCode39Writer.h b/xfa/fxbarcode/oned/BC_OnedCode39Writer.h
index b438727130..f2c340b3fb 100644
--- a/xfa/fxbarcode/oned/BC_OnedCode39Writer.h
+++ b/xfa/fxbarcode/oned/BC_OnedCode39Writer.h
@@ -7,13 +7,15 @@
#ifndef XFA_FXBARCODE_ONED_BC_ONEDCODE39WRITER_H_
#define XFA_FXBARCODE_ONED_BC_ONEDCODE39WRITER_H_
-enum BC_TEXT_LOC;
-class CBC_OneDimWriter;
+#include "xfa/fxbarcode/include/BC_Library.h"
+#include "xfa/fxbarcode/oned/BC_OneDimWriter.h"
+
class CBC_OnedCode39Writer : public CBC_OneDimWriter {
public:
CBC_OnedCode39Writer();
- CBC_OnedCode39Writer(FX_BOOL extendedMode);
+ explicit CBC_OnedCode39Writer(FX_BOOL extendedMode);
virtual ~CBC_OnedCode39Writer();
+
uint8_t* Encode(const CFX_ByteString& contents,
BCFORMAT format,
int32_t& outWidth,
@@ -33,6 +35,7 @@ class CBC_OnedCode39Writer : public CBC_OneDimWriter {
int32_t codeLength,
FX_BOOL isDevice,
int32_t& e);
+
CFX_WideString encodedContents(const CFX_WideStringC& contents, int32_t& e);
FX_BOOL CheckContentValidity(const CFX_WideStringC& contents);
FX_BOOL CheckExtendedContentValidity(const CFX_WideStringC& contents);
@@ -46,6 +49,7 @@ class CBC_OnedCode39Writer : public CBC_OneDimWriter {
private:
void ToIntArray(int32_t a, int32_t* toReturn);
FX_CHAR CalcCheckSum(const CFX_ByteString& contents, int32_t& e);
+
int32_t m_iWideNarrRatio;
FX_BOOL m_extendedMode;
};
diff --git a/xfa/fxbarcode/oned/BC_OnedEAN13Reader.h b/xfa/fxbarcode/oned/BC_OnedEAN13Reader.h
index 0d9d614901..4d01e42abf 100644
--- a/xfa/fxbarcode/oned/BC_OnedEAN13Reader.h
+++ b/xfa/fxbarcode/oned/BC_OnedEAN13Reader.h
@@ -6,12 +6,18 @@
#ifndef XFA_FXBARCODE_ONED_BC_ONEDEAN13READER_H_
#define XFA_FXBARCODE_ONED_BC_ONEDEAN13READER_H_
-class CBC_OneDimReader;
+
+#include "core/include/fxcrt/fx_string.h"
+#include "core/include/fxcrt/fx_system.h"
+#include "xfa/fxbarcode/oned/BC_OneDimReader.h"
+
class CBC_CommonBitArray;
-class CBC_OnedEAN13Reader;
+class CBC_OnedUPCAReader;
+
class CBC_OnedEAN13Reader : public CBC_OneDimReader {
public:
static const int32_t FIRST_DIGIT_ENCODINGS[10];
+
CBC_OnedEAN13Reader();
virtual ~CBC_OnedEAN13Reader();
@@ -21,11 +27,12 @@ class CBC_OnedEAN13Reader : public CBC_OneDimReader {
int32_t& e);
protected:
+ friend class CBC_OnedUPCAReader;
+
int32_t DecodeMiddle(CBC_CommonBitArray* row,
CFX_Int32Array* startRange,
CFX_ByteString& resultString,
int32_t& e);
- friend class CBC_OnedUPCAReader;
};
#endif // XFA_FXBARCODE_ONED_BC_ONEDEAN13READER_H_
diff --git a/xfa/fxbarcode/oned/BC_OnedEAN13Writer.h b/xfa/fxbarcode/oned/BC_OnedEAN13Writer.h
index fd23129975..de17ac713e 100644
--- a/xfa/fxbarcode/oned/BC_OnedEAN13Writer.h
+++ b/xfa/fxbarcode/oned/BC_OnedEAN13Writer.h
@@ -7,12 +7,14 @@
#ifndef XFA_FXBARCODE_ONED_BC_ONEDEAN13WRITER_H_
#define XFA_FXBARCODE_ONED_BC_ONEDEAN13WRITER_H_
-class CBC_OneDimWriter;
-class CBC_OnedEAN13Writer;
-class CBC_OnedEAN13Writer : public CBC_OneDimWriter {
- private:
- int32_t m_codeWidth;
+#include "core/include/fxcrt/fx_string.h"
+#include "core/include/fxcrt/fx_system.h"
+#include "xfa/fxbarcode/oned/BC_OneDimWriter.h"
+class CFX_DIBitmap;
+class CFX_RenderDevice;
+
+class CBC_OnedEAN13Writer : public CBC_OneDimWriter {
public:
CBC_OnedEAN13Writer();
virtual ~CBC_OnedEAN13Writer();
@@ -31,6 +33,7 @@ class CBC_OnedEAN13Writer : public CBC_OneDimWriter {
uint8_t* Encode(const CFX_ByteString& contents,
int32_t& outLength,
int32_t& e);
+
void RenderResult(const CFX_WideStringC& contents,
uint8_t* code,
int32_t codeLength,
@@ -48,6 +51,9 @@ class CBC_OnedEAN13Writer : public CBC_OneDimWriter {
int32_t barWidth,
int32_t multiple,
int32_t& e);
+
+ private:
+ int32_t m_codeWidth;
};
#endif // XFA_FXBARCODE_ONED_BC_ONEDEAN13WRITER_H_
diff --git a/xfa/fxbarcode/oned/BC_OnedEAN8Reader.h b/xfa/fxbarcode/oned/BC_OnedEAN8Reader.h
index fe2d33d66f..ab2d5e3178 100644
--- a/xfa/fxbarcode/oned/BC_OnedEAN8Reader.h
+++ b/xfa/fxbarcode/oned/BC_OnedEAN8Reader.h
@@ -7,9 +7,10 @@
#ifndef XFA_FXBARCODE_ONED_BC_ONEDEAN8READER_H_
#define XFA_FXBARCODE_ONED_BC_ONEDEAN8READER_H_
-class CBC_OneDimReader;
+#include "xfa/fxbarcode/oned/BC_OneDimReader.h"
+
class CBC_CommonBitArray;
-class CBC_OnedEAN8Reader;
+
class CBC_OnedEAN8Reader : public CBC_OneDimReader {
public:
CBC_OnedEAN8Reader();
diff --git a/xfa/fxbarcode/oned/BC_OnedEAN8Writer.h b/xfa/fxbarcode/oned/BC_OnedEAN8Writer.h
index fc033ffcbf..9110d94e20 100644
--- a/xfa/fxbarcode/oned/BC_OnedEAN8Writer.h
+++ b/xfa/fxbarcode/oned/BC_OnedEAN8Writer.h
@@ -7,9 +7,14 @@
#ifndef XFA_FXBARCODE_ONED_BC_ONEDEAN8WRITER_H_
#define XFA_FXBARCODE_ONED_BC_ONEDEAN8WRITER_H_
-enum BC_TEXT_LOC;
-class CBC_OneDimWriter;
-class CBC_OnedEAN8Writer;
+#include "core/include/fxcrt/fx_string.h"
+#include "core/include/fxcrt/fx_system.h"
+#include "xfa/fxbarcode/include/BC_Library.h"
+#include "xfa/fxbarcode/oned/BC_OneDimWriter.h"
+
+class CFX_DIBitmap;
+class CFX_RenderDevice;
+
class CBC_OnedEAN8Writer : public CBC_OneDimWriter {
private:
int32_t m_codeWidth;
@@ -17,6 +22,7 @@ class CBC_OnedEAN8Writer : public CBC_OneDimWriter {
public:
CBC_OnedEAN8Writer();
virtual ~CBC_OnedEAN8Writer();
+
uint8_t* Encode(const CFX_ByteString& contents,
BCFORMAT format,
int32_t& outWidth,
@@ -31,6 +37,7 @@ class CBC_OnedEAN8Writer : public CBC_OneDimWriter {
uint8_t* Encode(const CFX_ByteString& contents,
int32_t& outLength,
int32_t& e);
+
void RenderResult(const CFX_WideStringC& contents,
uint8_t* code,
int32_t codeLength,
diff --git a/xfa/fxbarcode/oned/BC_OnedUPCAReader.h b/xfa/fxbarcode/oned/BC_OnedUPCAReader.h
index 306683e1cc..4d3f479b71 100644
--- a/xfa/fxbarcode/oned/BC_OnedUPCAReader.h
+++ b/xfa/fxbarcode/oned/BC_OnedUPCAReader.h
@@ -7,18 +7,21 @@
#ifndef XFA_FXBARCODE_ONED_BC_ONEDUPCAREADER_H_
#define XFA_FXBARCODE_ONED_BC_ONEDUPCAREADER_H_
+#include "core/include/fxcrt/fx_string.h"
+#include "core/include/fxcrt/fx_system.h"
+#include "xfa/fxbarcode/oned/BC_OneDimReader.h"
+
class CBC_BinaryBitmap;
class CBC_CommonBitArray;
-class CBC_OneDimReader;
class CBC_OnedEAN13Reader;
-class CBC_OnedUPCAReader;
-class CBC_OnedUPCAReader : public CBC_OneDimReader {
- private:
- CBC_OnedEAN13Reader* m_ean13Reader;
+class CBC_OnedUPCAReader : public CBC_OneDimReader {
public:
CBC_OnedUPCAReader();
virtual ~CBC_OnedUPCAReader();
+
+ virtual void Init();
+
CFX_ByteString DecodeRow(int32_t rowNumber,
CBC_CommonBitArray* row,
int32_t hints,
@@ -30,7 +33,6 @@ class CBC_OnedUPCAReader : public CBC_OneDimReader {
int32_t& e);
CFX_ByteString Decode(CBC_BinaryBitmap* image, int32_t& e);
CFX_ByteString Decode(CBC_BinaryBitmap* image, int32_t hints, int32_t& e);
- virtual void Init();
protected:
int32_t DecodeMiddle(CBC_CommonBitArray* row,
@@ -38,6 +40,10 @@ class CBC_OnedUPCAReader : public CBC_OneDimReader {
CFX_ByteString& resultString,
int32_t& e);
CFX_ByteString MaybeReturnResult(CFX_ByteString& result, int32_t& e);
+
+ private:
+ CBC_OnedEAN13Reader* m_ean13Reader;
+
};
#endif // XFA_FXBARCODE_ONED_BC_ONEDUPCAREADER_H_
diff --git a/xfa/fxbarcode/oned/BC_OnedUPCAWriter.h b/xfa/fxbarcode/oned/BC_OnedUPCAWriter.h
index f376929b1b..38f3ca57dd 100644
--- a/xfa/fxbarcode/oned/BC_OnedUPCAWriter.h
+++ b/xfa/fxbarcode/oned/BC_OnedUPCAWriter.h
@@ -7,16 +7,22 @@
#ifndef XFA_FXBARCODE_ONED_BC_ONEDUPCAWRITER_H_
#define XFA_FXBARCODE_ONED_BC_ONEDUPCAWRITER_H_
+#include "core/include/fxcrt/fx_string.h"
+#include "core/include/fxcrt/fx_system.h"
+#include "xfa/fxbarcode/oned/BC_OneDimWriter.h"
+
class CBC_OnedEAN13Writer;
-class CBC_OnedUPCAWriter;
-class CBC_OnedUPCAWriter : public CBC_OneDimWriter {
- private:
- CBC_OnedEAN13Writer* m_subWriter;
+class CFX_DIBitmap;
+class CFX_Matrix;
+class CFX_RenderDevice;
+class CBC_OnedUPCAWriter : public CBC_OneDimWriter {
public:
CBC_OnedUPCAWriter();
virtual ~CBC_OnedUPCAWriter();
+
virtual void Init();
+
uint8_t* Encode(const CFX_ByteString& contents,
BCFORMAT format,
int32_t& outWidth,
@@ -33,6 +39,7 @@ class CBC_OnedUPCAWriter : public CBC_OneDimWriter {
int32_t& e) {
return nullptr;
}
+
void RenderResult(const CFX_WideStringC& contents,
uint8_t* code,
int32_t codeLength,
@@ -50,6 +57,9 @@ class CBC_OnedUPCAWriter : public CBC_OneDimWriter {
int32_t barWidth,
int32_t multiple,
int32_t& e);
+
+ private:
+ CBC_OnedEAN13Writer* m_subWriter;
};
#endif // XFA_FXBARCODE_ONED_BC_ONEDUPCAWRITER_H_
diff --git a/xfa/fxbarcode/pdf417/BC_PDF417Reader.h b/xfa/fxbarcode/pdf417/BC_PDF417Reader.h
index 2a5c39bae2..f1e0eda8b6 100644
--- a/xfa/fxbarcode/pdf417/BC_PDF417Reader.h
+++ b/xfa/fxbarcode/pdf417/BC_PDF417Reader.h
@@ -7,9 +7,13 @@
#ifndef XFA_FXBARCODE_PDF417_BC_PDF417READER_H_
#define XFA_FXBARCODE_PDF417_BC_PDF417READER_H_
+#include "core/include/fxcrt/fx_string.h"
+#include "core/include/fxcrt/fx_system.h"
+#include "xfa/fxbarcode/BC_Reader.h"
+
class CBC_BinaryBitmap;
class CBC_ResultPoint;
-class CBC_PDF417Reader;
+
class CBC_PDF417Reader : public CBC_Reader {
public:
CBC_PDF417Reader();
diff --git a/xfa/fxbarcode/pdf417/BC_PDF417Writer.h b/xfa/fxbarcode/pdf417/BC_PDF417Writer.h
index f92f57b82c..bc646b8a49 100644
--- a/xfa/fxbarcode/pdf417/BC_PDF417Writer.h
+++ b/xfa/fxbarcode/pdf417/BC_PDF417Writer.h
@@ -7,8 +7,10 @@
#ifndef XFA_FXBARCODE_PDF417_BC_PDF417WRITER_H_
#define XFA_FXBARCODE_PDF417_BC_PDF417WRITER_H_
-class CBC_TwoDimWriter;
-class CBC_PDF417Writer;
+#include "core/include/fxcrt/fx_string.h"
+#include "core/include/fxcrt/fx_system.h"
+#include "xfa/fxbarcode/BC_TwoDimWriter.h"
+
class CBC_PDF417Writer : public CBC_TwoDimWriter {
public:
CBC_PDF417Writer();
diff --git a/xfa/fxfa/app/xfa_ffbarcode.h b/xfa/fxfa/app/xfa_ffbarcode.h
index 114a492e4d..cd390e8bcb 100644
--- a/xfa/fxfa/app/xfa_ffbarcode.h
+++ b/xfa/fxfa/app/xfa_ffbarcode.h
@@ -7,9 +7,9 @@
#ifndef XFA_FXFA_APP_XFA_FFBARCODE_H_
#define XFA_FXFA_APP_XFA_FFBARCODE_H_
+#include "xfa/fxbarcode/include/BC_Library.h"
#include "xfa/fxfa/app/xfa_ffpageview.h"
#include "xfa/fxfa/app/xfa_fftextedit.h"
-#include "xfa/include/fxbarcode/BC_BarCode.h"
class CXFA_FFBarcode : public CXFA_FFTextEdit {
public:
diff --git a/xfa/fxfa/parser/xfa_objectacc_imp.cpp b/xfa/fxfa/parser/xfa_objectacc_imp.cpp
index 104fc044ff..1e86e73a22 100644
--- a/xfa/fxfa/parser/xfa_objectacc_imp.cpp
+++ b/xfa/fxfa/parser/xfa_objectacc_imp.cpp
@@ -5,6 +5,7 @@
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
#include "core/include/fxcrt/fx_ext.h"
+#include "xfa/fxbarcode/include/BC_Library.h"
#include "xfa/fxfa/fm2js/xfa_fm2jsapi.h"
#include "xfa/fxfa/parser/xfa_docdata.h"
#include "xfa/fxfa/parser/xfa_doclayout.h"
@@ -15,7 +16,6 @@
#include "xfa/fxfa/parser/xfa_parser.h"
#include "xfa/fxfa/parser/xfa_script.h"
#include "xfa/fxfa/parser/xfa_utils.h"
-#include "xfa/include/fxbarcode/BC_BarCode.h"
static FX_ARGB XFA_WStringToColor(const CFX_WideStringC& wsValue) {
uint8_t r = 0, g = 0, b = 0;
diff --git a/xfa/include/fwl/basewidget/fwl_barcode.h b/xfa/include/fwl/basewidget/fwl_barcode.h
index 944dd4aa6c..0d3db83421 100644
--- a/xfa/include/fwl/basewidget/fwl_barcode.h
+++ b/xfa/include/fwl/basewidget/fwl_barcode.h
@@ -7,11 +7,11 @@
#ifndef XFA_INCLUDE_FWL_BASEWIDGET_FWL_BARCODE_H_
#define XFA_INCLUDE_FWL_BASEWIDGET_FWL_BARCODE_H_
+#include "xfa/fxbarcode/include/BC_Library.h"
#include "xfa/include/fwl/basewidget/fwl_edit.h"
-#include "xfa/include/fxbarcode/BC_BarCode.h"
class CFWL_WidgetImpProperties;
-class IFWL_Barcode;
+
#define FWL_CLASS_Barcode L"FWL_BARCODE"
#define FWL_CLASSHASH_Barcode 366886968
#define FWL_BCDATTRIBUTE_CHARENCODING (1L << 0)
@@ -31,6 +31,7 @@ class IFWL_Barcode;
#define FWL_PART_BCD_Edge 2
#define FWL_PART_BCD_Background 3
#define FWL_BCUPDATECMD_Data FWL_WGTUPDATECMD_User
+
class IFWL_BarcodeDP : public IFWL_EditDP {
public:
virtual BC_CHAR_ENCODING GetCharEncoding() = 0;
diff --git a/xfa/include/fwl/basewidget/fxmath_barcode.h b/xfa/include/fwl/basewidget/fxmath_barcode.h
index c6ef766f7f..58ce11727c 100644
--- a/xfa/include/fwl/basewidget/fxmath_barcode.h
+++ b/xfa/include/fwl/basewidget/fxmath_barcode.h
@@ -7,12 +7,21 @@
#ifndef XFA_INCLUDE_FWL_BASEWIDGET_FXMATH_BARCODE_H_
#define XFA_INCLUDE_FWL_BASEWIDGET_FXMATH_BARCODE_H_
-#include "xfa/include/fxbarcode/BC_BarCode.h"
+#include "core/include/fxcrt/fx_string.h"
+#include "core/include/fxcrt/fx_system.h"
+#include "core/include/fxge/fx_dib.h"
+#include "xfa/fxbarcode/include/BC_Library.h"
+
+class CFX_Font;
+class CFX_Matrix;
+class CFX_RenderDevice;
class IFX_Barcode {
public:
virtual ~IFX_Barcode() {}
+
virtual void Release() = 0;
+
virtual BC_TYPE GetType() = 0;
virtual FX_BOOL Encode(const CFX_WideStringC& contents,
FX_BOOL isDevice,
@@ -47,6 +56,7 @@ class IFX_Barcode {
virtual FX_BOOL SetErrorCorrectionLevel(int32_t level) = 0;
virtual FX_BOOL SetTruncated(FX_BOOL truncated) = 0;
};
+
IFX_Barcode* FX_Barcode_Create(BC_TYPE type);
#endif // XFA_INCLUDE_FWL_BASEWIDGET_FXMATH_BARCODE_H_
diff --git a/xfa/include/fwl/lightwidget/barcode.h b/xfa/include/fwl/lightwidget/barcode.h
index 2dec2a8806..7056f3ac58 100644
--- a/xfa/include/fwl/lightwidget/barcode.h
+++ b/xfa/include/fwl/lightwidget/barcode.h
@@ -10,7 +10,6 @@
#include "xfa/include/fwl/basewidget/fwl_barcode.h"
#include "xfa/include/fwl/core/fwl_error.h"
#include "xfa/include/fwl/lightwidget/edit.h"
-#include "xfa/include/fxbarcode/BC_BarCode.h"
class CFWL_Widget;
class CFWL_WidgetProperties;
diff --git a/xfa/include/fxbarcode/BC_BarCode.h b/xfa/include/fxbarcode/BC_BarCode.h
deleted file mode 100644
index 84745acb77..0000000000
--- a/xfa/include/fxbarcode/BC_BarCode.h
+++ /dev/null
@@ -1,257 +0,0 @@
-// Copyright 2014 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef XFA_INCLUDE_FXBARCODE_BC_BARCODE_H_
-#define XFA_INCLUDE_FXBARCODE_BC_BARCODE_H_
-
-#include "core/include/fxcrt/fx_string.h"
-#include "core/include/fxcrt/fx_system.h"
-#include "core/include/fxge/fx_dib.h"
-
-class CBC_Reader;
-class CBC_Writer;
-class CFX_Font;
-class CFX_RenderDevice;
-
-enum BC_TEXT_LOC {
- BC_TEXT_LOC_NONE = 0,
- BC_TEXT_LOC_ABOVE,
- BC_TEXT_LOC_BELOW,
- BC_TEXT_LOC_ABOVEEMBED,
- BC_TEXT_LOC_BELOWEMBED
-};
-
-enum BC_CHAR_ENCODING { CHAR_ENCODING_UTF8 = 0, CHAR_ENCODING_UNICODE };
-
-enum BC_TYPE {
- BC_UNKNOWN = -1,
- BC_CODE39 = 0,
- BC_CODABAR,
- BC_CODE128,
- BC_CODE128_B,
- BC_CODE128_C,
- BC_EAN8,
- BC_UPCA,
- BC_EAN13,
- BC_QR_CODE,
- BC_PDF417,
- BC_DATAMATRIX
-};
-
-void BC_Library_Init();
-void BC_Library_Destory();
-
-class CBC_CodeBase {
- public:
- CBC_CodeBase();
- virtual ~CBC_CodeBase();
- virtual BC_TYPE GetType() = 0;
- virtual FX_BOOL Encode(const CFX_WideStringC& contents,
- FX_BOOL isDevice,
- int32_t& e) = 0;
- virtual FX_BOOL RenderDevice(CFX_RenderDevice* device,
- const CFX_Matrix* matirx,
- int32_t& e) = 0;
- virtual FX_BOOL RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e) = 0;
- virtual CFX_WideString Decode(uint8_t* buf,
- int32_t width,
- int32_t hight,
- int32_t& e) = 0;
- virtual CFX_WideString Decode(CFX_DIBitmap* pBitmap, int32_t& e) = 0;
-
- virtual FX_BOOL SetCharEncoding(int32_t encoding);
- virtual FX_BOOL SetModuleHeight(int32_t moduleHeight);
- virtual FX_BOOL SetModuleWidth(int32_t moduleWidth);
-
- virtual FX_BOOL SetHeight(int32_t height);
- virtual FX_BOOL SetWidth(int32_t width);
- virtual void SetBackgroundColor(FX_ARGB backgroundColor);
- virtual void SetBarcodeColor(FX_ARGB foregroundColor);
-
- protected:
- CBC_Writer* m_pBCWriter;
- CBC_Reader* m_pBCReader;
-};
-class CBC_OneCode : public CBC_CodeBase {
- public:
- CBC_OneCode();
- virtual ~CBC_OneCode();
- virtual BC_TYPE GetType() = 0;
- virtual FX_BOOL Encode(const CFX_WideStringC& contents,
- FX_BOOL isDevice,
- int32_t& e) = 0;
- virtual FX_BOOL RenderDevice(CFX_RenderDevice* device,
- const CFX_Matrix* matirx,
- int32_t& e) = 0;
- virtual FX_BOOL RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e) = 0;
- virtual CFX_WideString Decode(uint8_t* buf,
- int32_t width,
- int32_t hight,
- int32_t& e) = 0;
- virtual CFX_WideString Decode(CFX_DIBitmap* pBitmap, int32_t& e) = 0;
- virtual FX_BOOL CheckContentValidity(const CFX_WideStringC& contents);
- virtual CFX_WideString FilterContents(const CFX_WideStringC& contents);
- virtual void SetPrintChecksum(FX_BOOL checksum);
- virtual void SetDataLength(int32_t length);
- virtual void SetCalChecksum(FX_BOOL calc);
- virtual FX_BOOL SetFont(CFX_Font* cFont);
- virtual void SetFontSize(FX_FLOAT size);
- virtual void SetFontStyle(int32_t style);
- virtual void SetFontColor(FX_ARGB color);
-};
-class CBC_Code39 : public CBC_OneCode {
- public:
- CBC_Code39();
- CBC_Code39(FX_BOOL usingCheckDigit);
- CBC_Code39(FX_BOOL usingCheckDigit, FX_BOOL extendedMode);
- virtual ~CBC_Code39();
- FX_BOOL Encode(const CFX_WideStringC& contents, FX_BOOL isDevice, int32_t& e);
- FX_BOOL RenderDevice(CFX_RenderDevice* device,
- const CFX_Matrix* matirx,
- int32_t& e);
- FX_BOOL RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e);
- CFX_WideString Decode(uint8_t* buf, int32_t width, int32_t hight, int32_t& e);
- CFX_WideString Decode(CFX_DIBitmap* pBitmap, int32_t& e);
- BC_TYPE GetType() { return BC_CODE39; }
- FX_BOOL SetTextLocation(BC_TEXT_LOC location);
- FX_BOOL SetWideNarrowRatio(int32_t ratio);
-
- private:
- CFX_WideString m_renderContents;
-};
-class CBC_Codabar : public CBC_OneCode {
- public:
- CBC_Codabar();
- virtual ~CBC_Codabar();
- FX_BOOL Encode(const CFX_WideStringC& contents, FX_BOOL isDevice, int32_t& e);
- FX_BOOL RenderDevice(CFX_RenderDevice* device,
- const CFX_Matrix* matirx,
- int32_t& e);
- FX_BOOL RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e);
- CFX_WideString Decode(uint8_t* buf, int32_t width, int32_t hight, int32_t& e);
- CFX_WideString Decode(CFX_DIBitmap* pBitmap, int32_t& e);
- BC_TYPE GetType() { return BC_CODABAR; }
- FX_BOOL SetStartChar(FX_CHAR start);
- FX_BOOL SetEndChar(FX_CHAR end);
- FX_BOOL SetTextLocation(BC_TEXT_LOC location);
- FX_BOOL SetWideNarrowRatio(int32_t ratio);
-
- private:
- CFX_WideString m_renderContents;
-};
-class CBC_Code128 : public CBC_OneCode {
- public:
- CBC_Code128(BC_TYPE type);
- virtual ~CBC_Code128();
- FX_BOOL Encode(const CFX_WideStringC& contents, FX_BOOL isDevice, int32_t& e);
- FX_BOOL RenderDevice(CFX_RenderDevice* device,
- const CFX_Matrix* matirx,
- int32_t& e);
- FX_BOOL RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e);
- CFX_WideString Decode(uint8_t* buf, int32_t width, int32_t hight, int32_t& e);
- CFX_WideString Decode(CFX_DIBitmap* pBitmap, int32_t& e);
- BC_TYPE GetType() { return BC_CODE128; }
- FX_BOOL SetTextLocation(BC_TEXT_LOC loction);
-
- private:
- CFX_WideString m_renderContents;
-};
-class CBC_EAN8 : public CBC_OneCode {
- public:
- CBC_EAN8();
- virtual ~CBC_EAN8();
- FX_BOOL Encode(const CFX_WideStringC& contents, FX_BOOL isDevice, int32_t& e);
- FX_BOOL RenderDevice(CFX_RenderDevice* device,
- const CFX_Matrix* matirx,
- int32_t& e);
- FX_BOOL RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e);
- CFX_WideString Decode(uint8_t* buf, int32_t width, int32_t hight, int32_t& e);
- CFX_WideString Decode(CFX_DIBitmap* pBitmap, int32_t& e);
- BC_TYPE GetType() { return BC_EAN8; }
-
- private:
- CFX_WideString Preprocess(const CFX_WideStringC& contents);
- CFX_WideString m_renderContents;
-};
-class CBC_EAN13 : public CBC_OneCode {
- public:
- CBC_EAN13();
- virtual ~CBC_EAN13();
- FX_BOOL Encode(const CFX_WideStringC& contents, FX_BOOL isDevice, int32_t& e);
- FX_BOOL RenderDevice(CFX_RenderDevice* device,
- const CFX_Matrix* matirx,
- int32_t& e);
- FX_BOOL RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e);
- CFX_WideString Decode(uint8_t* buf, int32_t width, int32_t hight, int32_t& e);
- CFX_WideString Decode(CFX_DIBitmap* pBitmap, int32_t& e);
- BC_TYPE GetType() { return BC_EAN13; }
-
- private:
- CFX_WideString Preprocess(const CFX_WideStringC& contents);
- CFX_WideString m_renderContents;
-};
-class CBC_UPCA : public CBC_OneCode {
- public:
- CBC_UPCA();
- virtual ~CBC_UPCA();
- FX_BOOL Encode(const CFX_WideStringC& contents, FX_BOOL isDevice, int32_t& e);
- FX_BOOL RenderDevice(CFX_RenderDevice* device,
- const CFX_Matrix* matirx,
- int32_t& e);
- FX_BOOL RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e);
- CFX_WideString Decode(uint8_t* buf, int32_t width, int32_t hight, int32_t& e);
- CFX_WideString Decode(CFX_DIBitmap* pBitmap, int32_t& e);
- BC_TYPE GetType() { return BC_UPCA; }
-
- private:
- CFX_WideString Preprocess(const CFX_WideStringC& contents);
- CFX_WideString m_renderContents;
-};
-class CBC_QRCode : public CBC_CodeBase {
- public:
- CBC_QRCode();
- virtual ~CBC_QRCode();
- FX_BOOL Encode(const CFX_WideStringC& contents, FX_BOOL isDevice, int32_t& e);
- FX_BOOL RenderDevice(CFX_RenderDevice* device,
- const CFX_Matrix* matirx,
- int32_t& e);
- FX_BOOL RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e);
- CFX_WideString Decode(uint8_t* buf, int32_t width, int32_t hight, int32_t& e);
- CFX_WideString Decode(CFX_DIBitmap* pBitmap, int32_t& e);
- BC_TYPE GetType() { return BC_QR_CODE; }
- FX_BOOL SetVersion(int32_t version);
- FX_BOOL SetErrorCorrectionLevel(int32_t level);
-};
-class CBC_PDF417I : public CBC_CodeBase {
- public:
- CBC_PDF417I();
- virtual ~CBC_PDF417I();
- FX_BOOL Encode(const CFX_WideStringC& contents, FX_BOOL isDevice, int32_t& e);
- FX_BOOL RenderDevice(CFX_RenderDevice* device,
- const CFX_Matrix* matirx,
- int32_t& e);
- FX_BOOL RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e);
- CFX_WideString Decode(uint8_t* buf, int32_t width, int32_t hight, int32_t& e);
- CFX_WideString Decode(CFX_DIBitmap* pBitmap, int32_t& e);
- BC_TYPE GetType() { return BC_PDF417; }
- FX_BOOL SetErrorCorrectionLevel(int32_t level);
- void SetTruncated(FX_BOOL truncated);
-};
-class CBC_DataMatrix : public CBC_CodeBase {
- public:
- CBC_DataMatrix();
- virtual ~CBC_DataMatrix();
- FX_BOOL Encode(const CFX_WideStringC& contents, FX_BOOL isDevice, int32_t& e);
- FX_BOOL RenderDevice(CFX_RenderDevice* device,
- const CFX_Matrix* matirx,
- int32_t& e);
- FX_BOOL RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e);
- CFX_WideString Decode(uint8_t* buf, int32_t width, int32_t hight, int32_t& e);
- CFX_WideString Decode(CFX_DIBitmap* pBitmap, int32_t& e);
- BC_TYPE GetType() { return BC_DATAMATRIX; }
-};
-
-#endif // XFA_INCLUDE_FXBARCODE_BC_BARCODE_H_