| /* |
| * Copyright 2024 Google LLC |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| #include "include/private/base/SkAssert.h" |
| #include "modules/skunicode/src/SkBidiFactory_icu_subset.h" |
| |
| #include <unicode/umachine.h> |
| |
| const char* SkBidiSubsetFactory::errorName(UErrorCode status) const { |
| return u_errorName_skia(status); |
| } |
| |
| SkBidiFactory::BidiCloseCallback SkBidiSubsetFactory::bidi_close_callback() const { |
| return ubidi_close_skia; |
| } |
| |
| UBiDiDirection SkBidiSubsetFactory::bidi_getDirection(const UBiDi* bidi) const { |
| return ubidi_getDirection_skia(bidi); |
| } |
| |
| SkBidiIterator::Position SkBidiSubsetFactory::bidi_getLength(const UBiDi* bidi) const { |
| return ubidi_getLength_skia(bidi); |
| } |
| |
| SkBidiIterator::Level SkBidiSubsetFactory::bidi_getLevelAt(const UBiDi* bidi, int pos) const { |
| return ubidi_getLevelAt_skia(bidi, pos); |
| } |
| |
| UBiDi* SkBidiSubsetFactory::bidi_openSized(int32_t maxLength, |
| int32_t maxRunCount, |
| UErrorCode* pErrorCode) const { |
| return ubidi_openSized_skia(maxLength, maxRunCount, pErrorCode); |
| } |
| |
| void SkBidiSubsetFactory::bidi_setPara(UBiDi* bidi, |
| const UChar* text, |
| int32_t length, |
| UBiDiLevel paraLevel, |
| UBiDiLevel* embeddingLevels, |
| UErrorCode* status) const { |
| return ubidi_setPara_skia(bidi, text, length, paraLevel, embeddingLevels, status); |
| } |
| |
| void SkBidiSubsetFactory::bidi_reorderVisual(const SkUnicode::BidiLevel runLevels[], |
| int levelsCount, |
| int32_t logicalFromVisual[]) const { |
| if (levelsCount == 0) { |
| // To avoid an assert in unicode |
| return; |
| } |
| SkASSERT(runLevels != nullptr); |
| ubidi_reorderVisual_skia(runLevels, levelsCount, logicalFromVisual); |
| } |