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

#include "../../include/fxcrt/fx_arb.h"

class CFX_BidiChar final : public IFX_BidiChar
{
public:
    CFX_BidiChar();
    ~CFX_BidiChar() override {}

    void SetPolicy(bool bSeparateNeutral = true) override;
    bool AppendChar(FX_WCHAR wch) override;
    bool EndChar() override;
    int32_t GetBidiInfo(int32_t &iStart, int32_t &iCount) override;
    void Reset() override;

private:
    bool	m_bSeparateNeutral;
    int32_t	m_iCurStart;
    int32_t	m_iCurCount;
    int32_t	m_iCurBidi;
    int32_t	m_iLastBidi;
    int32_t	m_iLastStart;
    int32_t	m_iLastCount;
};

#endif  // CORE_SRC_FXCRT_FX_ARABIC_H_
