#ifndef UI_GFX_BIDI_LINE_ITERATOR_H_
#define UI_GFX_BIDI_LINE_ITERATOR_H_
#include <memory>
#include <string_view>
#include "base/component_export.h"
#include "base/i18n/rtl.h"
#include "third_party/icu/source/common/unicode/ubidi.h"
#include "third_party/icu/source/common/unicode/uchar.h"
#include "ui/gfx/ubidi_deleter.h"
namespace ui {
namespace gfx {
class COMPONENT_EXPORT(GFX) BiDiLineIterator {
public:
BiDiLineIterator();
BiDiLineIterator(const BiDiLineIterator&) = delete;
BiDiLineIterator& operator=(const BiDiLineIterator&) = delete;
~BiDiLineIterator();
bool Open(std::u16string_view text, base::i18n::TextDirection direction);
int CountRuns() const;
UBiDiDirection GetVisualRun(int index, int* start, int* length) const;
void GetLogicalRun(int start, int* end, UBiDiLevel* level) const;
private:
std::unique_ptr<UBiDi, UBiDiDeleter> bidi_;
};
}
}
#endif