// 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 FXBARCODE_DATAMATRIX_BC_HIGHLEVELENCODER_H_
#define FXBARCODE_DATAMATRIX_BC_HIGHLEVELENCODER_H_

#include <vector>

#include "core/fxcrt/widestring.h"

#define ASCII_ENCODATION 0
#define C40_ENCODATION 1
#define TEXT_ENCODATION 2
#define X12_ENCODATION 3
#define EDIFACT_ENCODATION 4
#define BASE256_ENCODATION 5

class CBC_HighLevelEncoder {
 public:
  CBC_HighLevelEncoder() = delete;
  ~CBC_HighLevelEncoder() = delete;

  // Returns an empty string on failure.
  static WideString EncodeHighLevel(const WideString& msg,
                                    bool bAllowRectangular);

  static int32_t LookAheadTest(const WideString& msg,
                               size_t startpos,
                               int32_t currentMode);
  static bool IsExtendedASCII(wchar_t ch);

  static const wchar_t LATCH_TO_C40 = 230;
  static const wchar_t LATCH_TO_BASE256 = 231;
  static const wchar_t UPPER_SHIFT = 235;
  static const wchar_t LATCH_TO_ANSIX12 = 238;
  static const wchar_t LATCH_TO_TEXT = 239;
  static const wchar_t LATCH_TO_EDIFACT = 240;
  static const wchar_t C40_UNLATCH = 254;
  static const wchar_t X12_UNLATCH = 254;
};

#endif  // FXBARCODE_DATAMATRIX_BC_HIGHLEVELENCODER_H_
