1 // Copyright 2014 PDFium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 // Original code is licensed as follows: 7 /* 8 * Copyright 2007 ZXing authors 9 * 10 * Licensed under the Apache License, Version 2.0 (the "License"); 11 * you may not use this file except in compliance with the License. 12 * You may obtain a copy of the License at 13 * 14 * http://www.apache.org/licenses/LICENSE-2.0 15 * 16 * Unless required by applicable law or agreed to in writing, software 17 * distributed under the License is distributed on an "AS IS" BASIS, 18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 19 * See the License for the specific language governing permissions and 20 * limitations under the License. 21 */ 22 23 #include "xfa/src/fxbarcode/barcode.h" 24 #include "xfa/src/fxbarcode/BC_BinaryBitmap.h" 25 #include "xfa/src/fxbarcode/BC_Reader.h" 26 #include "xfa/src/fxbarcode/qrcode/BC_QRDetectorResult.h" 27 #include "xfa/src/fxbarcode/common/BC_CommonDecoderResult.h" 28 #include "BC_DataMatrixDecoder.h" 29 #include "BC_DataMatrixDetector.h" 30 #include "BC_DataMatrixReader.h" 31 CBC_DataMatrixReader::CBC_DataMatrixReader() { 32 m_decoder = NULL; 33 } 34 void CBC_DataMatrixReader::Init() { 35 m_decoder = new CBC_DataMatrixDecoder; 36 m_decoder->Init(); 37 } 38 CBC_DataMatrixReader::~CBC_DataMatrixReader() { 39 if (m_decoder != NULL) { 40 delete m_decoder; 41 } 42 m_decoder = NULL; 43 } 44 CFX_ByteString CBC_DataMatrixReader::Decode(CBC_BinaryBitmap* image, 45 int32_t hints, 46 int32_t& e) { 47 CBC_CommonBitMatrix* cdr = image->GetBlackMatrix(e); 48 BC_EXCEPTION_CHECK_ReturnValue(e, ""); 49 CBC_DataMatrixDetector detector(cdr); 50 detector.Init(e); 51 BC_EXCEPTION_CHECK_ReturnValue(e, ""); 52 CBC_QRDetectorResult* ddr = detector.Detect(e); 53 BC_EXCEPTION_CHECK_ReturnValue(e, ""); 54 CBC_AutoPtr<CBC_QRDetectorResult> detectorResult(ddr); 55 CBC_CommonDecoderResult* ResultTemp = 56 m_decoder->Decode(detectorResult->GetBits(), e); 57 BC_EXCEPTION_CHECK_ReturnValue(e, ""); 58 CBC_AutoPtr<CBC_CommonDecoderResult> decodeResult(ResultTemp); 59 return decodeResult->GetText(); 60 } 61 CFX_ByteString CBC_DataMatrixReader::Decode(CBC_BinaryBitmap* image, 62 int32_t& e) { 63 CFX_ByteString bs = Decode(image, 0, e); 64 BC_EXCEPTION_CHECK_ReturnValue(e, ""); 65 return bs; 66 } 67