// Copyright 2017 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_FGAS_LAYOUT_CFX_BREAKLINE_H_
#define XFA_FGAS_LAYOUT_CFX_BREAKLINE_H_

#include <vector>

#include "core/fxcrt/cfx_char.h"
#include "xfa/fgas/layout/cfx_breakpiece.h"

class CFX_BreakLine {
 public:
  CFX_BreakLine();
  ~CFX_BreakLine();

  int32_t CountChars() const;
  CFX_Char* GetChar(int32_t index);
  const CFX_Char* GetChar(int32_t index) const;

  int32_t CountPieces() const;
  const CFX_BreakPiece* GetPiece(int32_t index) const;

  void GetString(CFX_WideString& wsStr) const;
  int32_t GetLineEnd() const;

  void Clear();

  std::vector<CFX_Char> m_LineChars;
  std::vector<CFX_BreakPiece> m_LinePieces;
  int32_t m_iStart;
  int32_t m_iWidth;
  int32_t m_iArabicChars;
};

#endif  // XFA_FGAS_LAYOUT_CFX_BREAKLINE_H_
