// 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 _BC_ONEDUPCEANREADER_H_ | |
#define _BC_ONEDUPCEANREADER_H_ | |
class CBC_OneDReader; | |
class CBC_CommonBitArray; | |
class CBC_OneDimReader; | |
class CBC_OneDimReader : public CBC_OneDReader { | |
private: | |
const static int32_t MAX_AVG_VARIANCE; | |
const static int32_t MAX_INDIVIDUAL_VARIANCE; | |
FX_BOOL CheckStandardUPCEANChecksum(CFX_ByteString& s, int32_t& e); | |
public: | |
const static int32_t START_END_PATTERN[3]; | |
const static int32_t MIDDLE_PATTERN[5]; | |
const static int32_t L_PATTERNS[10][4]; | |
const static int32_t L_AND_G_PATTERNS[20][4]; | |
CBC_OneDimReader(); | |
virtual ~CBC_OneDimReader(); | |
CFX_ByteString DecodeRow(int32_t rowNumber, | |
CBC_CommonBitArray* row, | |
int32_t hints, | |
int32_t& e); | |
CFX_ByteString DecodeRow(int32_t rowNumber, | |
CBC_CommonBitArray* row, | |
CFX_Int32Array* startGuardRange, | |
int32_t hints, | |
int32_t& e); | |
protected: | |
CFX_Int32Array* FindStartGuardPattern(CBC_CommonBitArray* row, int32_t& e); | |
virtual FX_BOOL CheckChecksum(CFX_ByteString& s, int32_t& e); | |
CFX_Int32Array* FindGuardPattern(CBC_CommonBitArray* row, | |
int32_t rowOffset, | |
FX_BOOL whiteFirst, | |
CFX_Int32Array* pattern, | |
int32_t& e); | |
int32_t DecodeDigit(CBC_CommonBitArray* row, | |
CFX_Int32Array* counters, | |
int32_t rowOffset, | |
const int32_t* patterns, | |
int32_t patternLength, | |
int32_t& e); | |
virtual int32_t DecodeMiddle(CBC_CommonBitArray* row, | |
CFX_Int32Array* startRange, | |
CFX_ByteString& resultResult, | |
int32_t& e) { | |
return 0; | |
} | |
virtual CFX_Int32Array* DecodeEnd(CBC_CommonBitArray* row, | |
int32_t endStart, | |
int32_t& e); | |
}; | |
#endif |