Source code

Revision control

Copy as Markdown

Other Tools

/* 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 "mozilla/intl/BidiEmbeddingLevel.h"
#include "mozilla/Casting.h"
#include "mozilla/intl/ICU4CGlue.h"
#include "unicode/ubidi.h"
namespace mozilla::intl {
bool BidiEmbeddingLevel::IsDefaultLTR() const {
return mValue == UBIDI_DEFAULT_LTR;
};
bool BidiEmbeddingLevel::IsDefaultRTL() const {
return mValue == UBIDI_DEFAULT_RTL;
};
bool BidiEmbeddingLevel::IsRTL() const {
// If the least significant bit is 1, then the embedding level
// is right-to-left.
// If the least significant bit is 0, then the embedding level
// is left-to-right.
return (mValue & 0x1) == 1;
};
bool BidiEmbeddingLevel::IsLTR() const { return !IsRTL(); };
bool BidiEmbeddingLevel::IsSameDirection(BidiEmbeddingLevel aOther) const {
return (((mValue ^ aOther) & 1) == 0);
}
BidiEmbeddingLevel BidiEmbeddingLevel::LTR() { return BidiEmbeddingLevel(0); };
BidiEmbeddingLevel BidiEmbeddingLevel::RTL() { return BidiEmbeddingLevel(1); };
BidiEmbeddingLevel BidiEmbeddingLevel::DefaultLTR() {
return BidiEmbeddingLevel(UBIDI_DEFAULT_LTR);
};
BidiEmbeddingLevel BidiEmbeddingLevel::DefaultRTL() {
return BidiEmbeddingLevel(UBIDI_DEFAULT_RTL);
};
BidiDirection BidiEmbeddingLevel::Direction() {
return IsRTL() ? BidiDirection::RTL : BidiDirection::LTR;
};
uint8_t BidiEmbeddingLevel::Value() const { return mValue; }
} // namespace mozilla::intl