14d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Copyright 2014 PDFium Authors. All rights reserved. 24d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be 34d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// found in the LICENSE file. 44d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 54d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 64d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 74d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fwl/cfx_barcode.h" 84d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 9d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include <memory> 10d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 11d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "fxbarcode/cbc_codabar.h" 12d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "fxbarcode/cbc_code128.h" 13d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "fxbarcode/cbc_code39.h" 14d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "fxbarcode/cbc_codebase.h" 15d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "fxbarcode/cbc_datamatrix.h" 16d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "fxbarcode/cbc_ean13.h" 17d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "fxbarcode/cbc_ean8.h" 18d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "fxbarcode/cbc_pdf417i.h" 19d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "fxbarcode/cbc_qrcode.h" 20d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "fxbarcode/cbc_upca.h" 21d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "fxbarcode/utils.h" 22d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "third_party/base/ptr_util.h" 234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannnamespace { 254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 26d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannstd::unique_ptr<CBC_CodeBase> CreateBarCodeEngineObject(BC_TYPE type) { 274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (type) { 284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE39: 29d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return pdfium::MakeUnique<CBC_Code39>(); 304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODABAR: 31d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return pdfium::MakeUnique<CBC_Codabar>(); 324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE128: 33d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return pdfium::MakeUnique<CBC_Code128>(BC_CODE128_B); 344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE128_B: 35d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return pdfium::MakeUnique<CBC_Code128>(BC_CODE128_B); 364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE128_C: 37d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return pdfium::MakeUnique<CBC_Code128>(BC_CODE128_C); 384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_EAN8: 39d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return pdfium::MakeUnique<CBC_EAN8>(); 404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_UPCA: 41d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return pdfium::MakeUnique<CBC_UPCA>(); 424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_EAN13: 43d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return pdfium::MakeUnique<CBC_EAN13>(); 444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_QR_CODE: 45d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return pdfium::MakeUnique<CBC_QRCode>(); 464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_PDF417: 47d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return pdfium::MakeUnique<CBC_PDF417I>(); 484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_DATAMATRIX: 49d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return pdfium::MakeUnique<CBC_DataMatrix>(); 504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_UNKNOWN: 514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} // namespace 574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCFX_Barcode::CFX_Barcode() {} 594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCFX_Barcode::~CFX_Barcode() {} 614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CFX_Barcode::Create(BC_TYPE type) { 63d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann m_pBCEngine = CreateBarCodeEngineObject(type); 644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return !!m_pBCEngine; 654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannBC_TYPE CFX_Barcode::GetType() { 684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pBCEngine ? m_pBCEngine->GetType() : BC_UNKNOWN; 694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CFX_Barcode::SetCharEncoding(BC_CHAR_ENCODING encoding) { 724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pBCEngine ? m_pBCEngine->SetCharEncoding(encoding) : false; 734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CFX_Barcode::SetModuleHeight(int32_t moduleHeight) { 764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pBCEngine ? m_pBCEngine->SetModuleHeight(moduleHeight) : false; 774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CFX_Barcode::SetModuleWidth(int32_t moduleWidth) { 804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pBCEngine ? m_pBCEngine->SetModuleWidth(moduleWidth) : false; 814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CFX_Barcode::SetHeight(int32_t height) { 844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pBCEngine ? m_pBCEngine->SetHeight(height) : false; 854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CFX_Barcode::SetWidth(int32_t width) { 884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pBCEngine ? m_pBCEngine->SetWidth(width) : false; 894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CFX_Barcode::SetPrintChecksum(bool checksum) { 924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (GetType()) { 934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE39: 944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODABAR: 954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE128: 964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE128_B: 974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE128_C: 984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_EAN8: 994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_EAN13: 1004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_UPCA: 1014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pBCEngine ? (static_cast<CBC_OneCode*>(m_pBCEngine.get()) 1024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ->SetPrintChecksum(checksum), 1034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann true) 1044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann : false; 1054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 1064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 1074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CFX_Barcode::SetDataLength(int32_t length) { 1114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (GetType()) { 1124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE39: 1134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODABAR: 1144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE128: 1154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE128_B: 1164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE128_C: 1174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_EAN8: 1184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_EAN13: 1194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_UPCA: 1204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pBCEngine ? (static_cast<CBC_OneCode*>(m_pBCEngine.get()) 1214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ->SetDataLength(length), 1224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann true) 1234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann : false; 1244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 1254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 1264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CFX_Barcode::SetCalChecksum(bool state) { 1304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (GetType()) { 1314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE39: 1324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODABAR: 1334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE128: 1344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE128_B: 1354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE128_C: 1364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_EAN8: 1374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_EAN13: 1384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_UPCA: 1394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pBCEngine ? (static_cast<CBC_OneCode*>(m_pBCEngine.get()) 1404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ->SetCalChecksum(state), 1414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann true) 1424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann : false; 1434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 1444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 1454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CFX_Barcode::SetFont(CFX_Font* pFont) { 1494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (GetType()) { 1504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE39: 1514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODABAR: 1524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE128: 1534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE128_B: 1544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE128_C: 1554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_EAN8: 1564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_EAN13: 1574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_UPCA: 1584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pBCEngine 1594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ? static_cast<CBC_OneCode*>(m_pBCEngine.get())->SetFont(pFont) 1604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann : false; 1614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 1624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 1634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 166d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannbool CFX_Barcode::SetFontSize(float size) { 1674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (GetType()) { 1684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE39: 1694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODABAR: 1704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE128: 1714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE128_B: 1724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE128_C: 1734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_EAN8: 1744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_EAN13: 1754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_UPCA: 1764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pBCEngine ? (static_cast<CBC_OneCode*>(m_pBCEngine.get()) 1774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ->SetFontSize(size), 1784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann true) 1794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann : false; 1804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 1814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 1824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CFX_Barcode::SetFontColor(FX_ARGB color) { 1864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (GetType()) { 1874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE39: 1884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODABAR: 1894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE128: 1904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE128_B: 1914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE128_C: 1924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_EAN8: 1934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_EAN13: 1944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_UPCA: 1954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pBCEngine ? (static_cast<CBC_OneCode*>(m_pBCEngine.get()) 1964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ->SetFontColor(color), 1974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann true) 1984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann : false; 1994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 2004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 2014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CFX_Barcode::SetTextLocation(BC_TEXT_LOC location) { 2054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann typedef bool (CBC_CodeBase::*memptrtype)(BC_TEXT_LOC); 2064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann memptrtype memptr = nullptr; 2074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (GetType()) { 2084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE39: 2094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann memptr = (memptrtype)&CBC_Code39::SetTextLocation; 2104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 2114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODABAR: 2124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann memptr = (memptrtype)&CBC_Codabar::SetTextLocation; 2134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 2144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE128: 2154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE128_B: 2164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE128_C: 2174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann memptr = (memptrtype)&CBC_Code128::SetTextLocation; 2184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 2194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 2204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 2214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pBCEngine && memptr ? (m_pBCEngine.get()->*memptr)(location) : false; 2234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 225d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannbool CFX_Barcode::SetWideNarrowRatio(int8_t ratio) { 226d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann typedef bool (CBC_CodeBase::*memptrtype)(int8_t); 2274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann memptrtype memptr = nullptr; 2284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (GetType()) { 2294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODE39: 2304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann memptr = (memptrtype)&CBC_Code39::SetWideNarrowRatio; 2314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 2324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODABAR: 2334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann memptr = (memptrtype)&CBC_Codabar::SetWideNarrowRatio; 2344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 2354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 2364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 2374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pBCEngine && memptr ? (m_pBCEngine.get()->*memptr)(ratio) : false; 2394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 241d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannbool CFX_Barcode::SetStartChar(char start) { 242d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann typedef bool (CBC_CodeBase::*memptrtype)(char); 2434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann memptrtype memptr = nullptr; 2444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (GetType()) { 2454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODABAR: 2464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann memptr = (memptrtype)&CBC_Codabar::SetStartChar; 2474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 2484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 2494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 2504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pBCEngine && memptr ? (m_pBCEngine.get()->*memptr)(start) : false; 2524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 254d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannbool CFX_Barcode::SetEndChar(char end) { 255d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann typedef bool (CBC_CodeBase::*memptrtype)(char); 2564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann memptrtype memptr = nullptr; 2574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (GetType()) { 2584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_CODABAR: 2594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann memptr = (memptrtype)&CBC_Codabar::SetEndChar; 2604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 2614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 2624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 2634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pBCEngine && memptr ? (m_pBCEngine.get()->*memptr)(end) : false; 2654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CFX_Barcode::SetErrorCorrectionLevel(int32_t level) { 2684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann typedef bool (CBC_CodeBase::*memptrtype)(int32_t); 2694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann memptrtype memptr = nullptr; 2704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (GetType()) { 2714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_QR_CODE: 2724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann memptr = (memptrtype)&CBC_QRCode::SetErrorCorrectionLevel; 2734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 2744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_PDF417: 2754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann memptr = (memptrtype)&CBC_PDF417I::SetErrorCorrectionLevel; 2764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 2774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 2784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 2794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pBCEngine && memptr ? (m_pBCEngine.get()->*memptr)(level) : false; 2814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 282d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 2834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CFX_Barcode::SetTruncated(bool truncated) { 2844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann typedef void (CBC_CodeBase::*memptrtype)(bool); 2854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann memptrtype memptr = nullptr; 2864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (GetType()) { 2874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case BC_PDF417: 2884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann memptr = (memptrtype)&CBC_PDF417I::SetTruncated; 2894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 2904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 2914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 2924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pBCEngine && memptr ? ((m_pBCEngine.get()->*memptr)(truncated), true) 2944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann : false; 2954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 297d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannbool CFX_Barcode::Encode(const WideStringView& contents) { 298d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return m_pBCEngine && m_pBCEngine->Encode(contents); 2994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CFX_Barcode::RenderDevice(CFX_RenderDevice* device, 302d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann const CFX_Matrix* matrix) { 303d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return m_pBCEngine && m_pBCEngine->RenderDevice(device, matrix); 3044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 305