1 /* 2 * Copyright 2023 Google Inc. 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 SkUnicode_icu_bidi_DEFINED 8 #define SkUnicode_icu_bidi_DEFINED 9 10 #include "modules/skunicode/include/SkUnicode.h" 11 #include <unicode/ubidi.h> 12 #include <unicode/umachine.h> 13 #include <unicode/utypes.h> 14 #include <cstdint> 15 16 class SkUnicode_IcuBidi { 17 public: 18 static const char* errorName(UErrorCode status); 19 static void bidi_close(UBiDi* bidi); 20 static UBiDiDirection bidi_getDirection(const UBiDi* bidi); 21 static SkBidiIterator::Position bidi_getLength(const UBiDi* bidi); 22 static SkBidiIterator::Level bidi_getLevelAt(const UBiDi* bidi, int pos); 23 static UBiDi* bidi_openSized(int32_t maxLength, int32_t maxRunCount, UErrorCode* pErrorCode); 24 static void bidi_setPara(UBiDi* bidi, 25 const UChar* text, 26 int32_t length, 27 UBiDiLevel paraLevel, 28 UBiDiLevel* embeddingLevels, 29 UErrorCode* status); 30 static void bidi_reorderVisual(const SkUnicode::BidiLevel runLevels[], 31 int levelsCount, 32 int32_t logicalFromVisual[]); 33 }; 34 35 #endif // SkUnicode_icu_bidi_DEFINED 36