• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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