diff options
author | janekptacijarabaci <janekptacijarabaci@seznam.cz> | 2018-07-06 15:53:52 +0200 |
---|---|---|
committer | janekptacijarabaci <janekptacijarabaci@seznam.cz> | 2018-07-06 15:53:52 +0200 |
commit | 941e54654eabed0a3568f7fefe424a45aa02eddb (patch) | |
tree | 49aa02b174c428962d99142d8061267bfcd79e69 /layout/base/nsBidi.cpp | |
parent | ad9ee72dcd7981bc47b3844a224d69fadfdfd8ef (diff) | |
parent | 0daa12376295d5d796256a116eb2a348a3a9273f (diff) | |
download | UXP-941e54654eabed0a3568f7fefe424a45aa02eddb.tar UXP-941e54654eabed0a3568f7fefe424a45aa02eddb.tar.gz UXP-941e54654eabed0a3568f7fefe424a45aa02eddb.tar.lz UXP-941e54654eabed0a3568f7fefe424a45aa02eddb.tar.xz UXP-941e54654eabed0a3568f7fefe424a45aa02eddb.zip |
Merge branch 'master' of https://github.com/MoonchildProductions/UXP into _testBranch_test_1
Diffstat (limited to 'layout/base/nsBidi.cpp')
-rw-r--r-- | layout/base/nsBidi.cpp | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/layout/base/nsBidi.cpp b/layout/base/nsBidi.cpp new file mode 100644 index 000000000..1d6975869 --- /dev/null +++ b/layout/base/nsBidi.cpp @@ -0,0 +1,68 @@ +/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "nsBidi.h" +#include "ICUUtils.h" + +nsBidi::nsBidi() +{ + mBiDi = ubidi_open(); +} + +nsBidi::~nsBidi() +{ + ubidi_close(mBiDi); +} + +nsresult nsBidi::SetPara(const char16_t *aText, int32_t aLength, + nsBidiLevel aParaLevel) +{ + UErrorCode error = U_ZERO_ERROR; + ubidi_setPara(mBiDi, reinterpret_cast<const UChar*>(aText), aLength, + aParaLevel, nullptr, &error); + return ICUUtils::UErrorToNsResult(error); +} + +nsresult nsBidi::GetDirection(nsBidiDirection* aDirection) +{ + *aDirection = nsBidiDirection(ubidi_getDirection(mBiDi)); + return NS_OK; +} + +nsresult nsBidi::GetParaLevel(nsBidiLevel* aParaLevel) +{ + *aParaLevel = ubidi_getParaLevel(mBiDi); + return NS_OK; +} + +nsresult nsBidi::GetLogicalRun(int32_t aLogicalStart, int32_t* aLogicalLimit, + nsBidiLevel* aLevel) +{ + ubidi_getLogicalRun(mBiDi, aLogicalStart, aLogicalLimit, aLevel); + return NS_OK; +} + +nsresult nsBidi::CountRuns(int32_t* aRunCount) +{ + UErrorCode errorCode = U_ZERO_ERROR; + *aRunCount = ubidi_countRuns(mBiDi, &errorCode); + return ICUUtils::UErrorToNsResult(errorCode); +} + +nsresult nsBidi::GetVisualRun(int32_t aRunIndex, int32_t* aLogicalStart, + int32_t* aLength, nsBidiDirection* aDirection) +{ + *aDirection = nsBidiDirection(ubidi_getVisualRun(mBiDi, aRunIndex, + aLogicalStart, aLength)); + return NS_OK; +} + +nsresult nsBidi::ReorderVisual(const nsBidiLevel* aLevels, int32_t aLength, + int32_t* aIndexMap) +{ + ubidi_reorderVisual(aLevels, aLength, aIndexMap); + return NS_OK; +} |