// 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();
    virtual void		Release() override
    {
        delete this;
    }
    virtual void		SetPolicy(FX_BOOL bSeparateNeutral = TRUE) override
    {
        m_bSeparateNeutral = bSeparateNeutral;
    }
    virtual FX_BOOL		AppendChar(FX_WCHAR wch) override;
    virtual FX_BOOL		EndChar() override;
    virtual int32_t 	GetBidiInfo(int32_t &iStart, int32_t &iCount) override;
    virtual void		Reset() override;

private:
    ~CFX_BidiChar() { }
    FX_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_
