blob: 583b90effa8692f0c75b916534266a5fbe83d6fc [file] [log] [blame]
/*
* Copyright 2024 Google LLC
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef SkBidiSubsetFactory_DEFINED
#define SkBidiSubsetFactory_DEFINED
#include "modules/skunicode/include/SkUnicode.h"
#include "modules/skunicode/src/SkUnicode_icu_bidi.h"
#include <unicode/ubidi.h>
#include <unicode/umachine.h>
#include <unicode/utypes.h>
#include <cstdint>
class SkBidiSubsetFactory : public SkBidiFactory {
public:
const char* errorName(UErrorCode status) const override;
SkBidiFactory::BidiCloseCallback bidi_close_callback() const override;
UBiDiDirection bidi_getDirection(const UBiDi* bidi) const override;
SkBidiIterator::Position bidi_getLength(const UBiDi* bidi) const override;
SkBidiIterator::Level bidi_getLevelAt(const UBiDi* bidi, int pos) const override;
UBiDi* bidi_openSized(int32_t maxLength,
int32_t maxRunCount,
UErrorCode* pErrorCode) const override;
void bidi_setPara(UBiDi* bidi,
const UChar* text,
int32_t length,
UBiDiLevel paraLevel,
UBiDiLevel* embeddingLevels,
UErrorCode* status) const override;
void bidi_reorderVisual(const SkUnicode::BidiLevel runLevels[],
int levelsCount,
int32_t logicalFromVisual[]) const override;
};
#endif