1 /* 2 * Copyright 2024 Google LLC 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 #ifndef SkBidiICUFactory_DEFINED 8 #define SkBidiICUFactory_DEFINED 9 10 #include "modules/skunicode/include/SkUnicode.h" 11 #include "modules/skunicode/src/SkUnicode_icu_bidi.h" 12 13 #include <unicode/ubidi.h> 14 #include <unicode/umachine.h> 15 #include <unicode/utypes.h> 16 17 #include <cstdint> 18 19 class SkBidiICUFactory : public SkBidiFactory { 20 public: 21 const char* errorName(UErrorCode status) const override; 22 SkBidiFactory::BidiCloseCallback bidi_close_callback() const override; 23 UBiDiDirection bidi_getDirection(const UBiDi* bidi) const override; 24 SkBidiIterator::Position bidi_getLength(const UBiDi* bidi) const override; 25 SkBidiIterator::Level bidi_getLevelAt(const UBiDi* bidi, int pos) const override; 26 UBiDi* bidi_openSized(int32_t maxLength, 27 int32_t maxRunCount, 28 UErrorCode* pErrorCode) const override; 29 void bidi_setPara(UBiDi* bidi, 30 const UChar* text, 31 int32_t length, 32 UBiDiLevel paraLevel, 33 UBiDiLevel* embeddingLevels, 34 UErrorCode* status) const override; 35 void bidi_reorderVisual(const SkUnicode::BidiLevel runLevels[], 36 int levelsCount, 37 int32_t logicalFromVisual[]) const override; 38 }; 39 40 #endif 41