class TBidirectionalState |
The bidirectional state class. This class contains functions that implement the Unicode Bidirectional Algorithm, which changes text from logical order to display order for the correct display of right-to-left scripts, like Arabic and Hebrew. A TBidirectionalState object carries the embedding level and stack from one line to the next. On construction it is in its 'start of paragraph' state.
Private Member Functions | |
---|---|
TCategory | Pop() |
TCategory | Push(TCategory) |
const TStackItem & | State() |
Private Member Enumerations | |
---|---|
enum | anonymous { EMaxExplicitLevel = 61, EMaxLevel = 63, EMaxStackLevels = 62 } |
enum | TCategory { ELeftToRight = 1 << TChar::ELeftToRight, ELeftToRightEmbedding = 1 << TChar::ELeftToRightEmbedding, ELeftToRightOverride = 1 << TChar::ELeftToRightOverride, ERightToLeft = 1 << TChar::ERightToLeft, ERightToLeftArabic = 1 << TChar::ERightToLeftArabic, ERightToLeftEmbedding = 1 << TChar::ERightToLeftEmbedding, ERightToLeftOverride = 1 << TChar::ERightToLeftOverride, EPopDirectionalFormat = 1 << TChar::EPopDirectionalFormat, EEuropeanNumber = 1 << TChar::EEuropeanNumber, EEuropeanNumberSeparator = 1 << TChar::EEuropeanNumberSeparator, EEuropeanNumberTerminator = 1 << TChar::EEuropeanNumberTerminator, EArabicNumber = 1 << TChar::EArabicNumber, ECommonNumberSeparator = 1 << TChar::ECommonNumberSeparator, ENonSpacingMark = 1 << TChar::ENonSpacingMark, EBoundaryNeutral = 1 << TChar::EBoundaryNeutral, EParagraphSeparator = 1 << TChar::EParagraphSeparator, ESegmentSeparator = 1 << TChar::ESegmentSeparator, EWhitespace = 1 << TChar::EWhitespace, EOtherNeutral = 1 << TChar::EOtherNeutral, EBdControlsGroup = ELeftToRightEmbedding | ERightToLeftEmbedding | ELeftToRightOverride | ERightToLeftOverride | EPopDirectionalFormat, ELeftToRightGroup = ELeftToRight | EEuropeanNumber | ELeftToRightOverride | ELeftToRightEmbedding, ERightToLeftGroup = ERightToLeft | EArabicNumber | ERightToLeftArabic | ERightToLeftOverride | ERightToLeftEmbedding, EStrongGroup = ELeftToRightEmbedding | ERightToLeftEmbedding | ELeftToRightOverride | ERightToLeftOverride | ELeftToRight | ERightToLeft | ERightToLeftArabic, ENoCategory = 0 } |
enum | TOverrideState { ENoOverrideState = 0, ELeftToRightOverrideState = ELeftToRightOverride, ERightToLeftOverrideState = ERightToLeftOverride } |
Private Attributes | |
---|---|
TCategory | iPreviousCategory |
TCategory | iPreviousStrongCategory |
TInt8 | iPushesBeyond60 |
TInt8 | iPushesBeyond61 |
TStackItem | iStack |
TInt16 | iStackLevel |
TBidirectionalState | ( | TChar::TBdCategory | aPrevCat, |
TChar::TBdCategory | aPrevStrongCat, | ||
TBool | aParRightToLeft | ||
) |
TChar::TBdCategory aPrevCat | |
TChar::TBdCategory aPrevStrongCat | |
TBool aParRightToLeft |
TCategory | CharToBdCat | ( | TChar::TBdCategory | aCat | ) | [static] |
TChar::TBdCategory aCat |
void | DeneutralizeRuns | ( | TRunInfo * | aStart, |
TRunInfo * | aEnd, | |||
TCategory | aStartCategory, | |||
TCategory | aEndCategory | |||
) | [static] |
IMPORT_C void | ExternalizeL | ( | RWriteStream & | aDest | ) |
RWriteStream & aDest |
TInt | GenerateBdRunArray | ( | const TText * | aText, |
TInt | aLength, | |||
TBidirectionalState::TRunInfo * | aRun, | |||
TInt | aMaxRuns | |||
) | [static] |
const TText * aText | |
TInt aLength | |
TBidirectionalState::TRunInfo * aRun | |
TInt aMaxRuns |
void | HandleBdControls | ( | TReorderContext & | aContext | ) |
TReorderContext & aContext |
IMPORT_C void | InternalizeL | ( | RReadStream & | aSource | ) |
RReadStream & aSource |
void | PrepareForNextLine | ( | const TReorderContext & | aContext | ) |
const TReorderContext & aContext |
IMPORT_C void | ReorderLine | ( | TRunInfo * | aRunInfo, |
TInt | aRuns, | |||
TBool | aParStart, | |||
TBool | aParEnd, | |||
TBool | aParRightToLeft, | |||
TChar::TBdCategory | aNextCategory, | |||
TChar::TBdCategory | aNextStrongCategory, | |||
TBool & | aVisualEndIsAmbiguous | |||
) |
TRunInfo * aRunInfo | |
TInt aRuns | |
TBool aParStart | |
TBool aParEnd | |
TBool aParRightToLeft | |
TChar::TBdCategory aNextCategory | |
TChar::TBdCategory aNextStrongCategory | |
TBool & aVisualEndIsAmbiguous |
IMPORT_C void | ReorderLine | ( | TRunInfo * | aRunInfo, |
TInt | aRuns, | |||
TBool | aParStart, | |||
TBool | aParEnd, | |||
TBool | aParRightToLeft, | |||
TChar::TBdCategory | aNextCategory, | |||
TChar::TBdCategory | aNextStrongCategory | |||
) |
TRunInfo * aRunInfo | |
TInt aRuns | |
TBool aParStart | |
TBool aParEnd | |
TBool aParRightToLeft | |
TChar::TBdCategory aNextCategory | |
TChar::TBdCategory aNextStrongCategory |
void | ReorderRuns | ( | TReorderContext & | aContext | ) |
TReorderContext & aContext |
IMPORT_C TInt | ReorderText | ( | const TText * | aText, |
TInt | aLength, | |||
TBool | aParRightToLeft, | |||
TText *& | aNewText | |||
) | [static] |
void | ResolveImplicitLevels | ( | TReorderContext & | aContext | ) |
TReorderContext & aContext |
void | ResolveNeutralTypes | ( | TReorderContext & | aContext | ) |
TReorderContext & aContext |
void | ResolveWeakTypesW1W2W3 | ( | TReorderContext & | aContext | ) |
TReorderContext & aContext |
void | ResolveWeakTypesW4W5W6 | ( | TReorderContext & | aContext | ) |
TReorderContext & aContext |
void | ResolveWeakTypesW7 | ( | TReorderContext & | aContext | ) |
TReorderContext & aContext |
IMPORT_C TBool | operator== | ( | const TBidirectionalState & | aState | ) | const |
const TBidirectionalState & aState |
ELeftToRight = 1 << TChar::ELeftToRight | |
ELeftToRightEmbedding = 1 << TChar::ELeftToRightEmbedding | |
ELeftToRightOverride = 1 << TChar::ELeftToRightOverride | |
ERightToLeft = 1 << TChar::ERightToLeft | |
ERightToLeftArabic = 1 << TChar::ERightToLeftArabic | |
ERightToLeftEmbedding = 1 << TChar::ERightToLeftEmbedding | |
ERightToLeftOverride = 1 << TChar::ERightToLeftOverride | |
EPopDirectionalFormat = 1 << TChar::EPopDirectionalFormat | |
EEuropeanNumber = 1 << TChar::EEuropeanNumber | |
EEuropeanNumberSeparator = 1 << TChar::EEuropeanNumberSeparator | |
EEuropeanNumberTerminator = 1 << TChar::EEuropeanNumberTerminator | |
EArabicNumber = 1 << TChar::EArabicNumber | |
ECommonNumberSeparator = 1 << TChar::ECommonNumberSeparator | |
ENonSpacingMark = 1 << TChar::ENonSpacingMark | |
EBoundaryNeutral = 1 << TChar::EBoundaryNeutral | |
EParagraphSeparator = 1 << TChar::EParagraphSeparator | |
ESegmentSeparator = 1 << TChar::ESegmentSeparator | |
EWhitespace = 1 << TChar::EWhitespace | |
EOtherNeutral = 1 << TChar::EOtherNeutral | |
EBdControlsGroup = ELeftToRightEmbedding | ERightToLeftEmbedding | ELeftToRightOverride | ERightToLeftOverride | EPopDirectionalFormat | |
ELeftToRightGroup = ELeftToRight | EEuropeanNumber | ELeftToRightOverride | ELeftToRightEmbedding | |
ERightToLeftGroup = ERightToLeft | EArabicNumber | ERightToLeftArabic | ERightToLeftOverride | ERightToLeftEmbedding | |
EStrongGroup = ELeftToRightEmbedding | ERightToLeftEmbedding | ELeftToRightOverride | ERightToLeftOverride | ELeftToRight | ERightToLeft | ERightToLeftArabic | |
ENoCategory = 0 |
ENoOverrideState = 0 | |
ELeftToRightOverrideState = ELeftToRightOverride | |
ERightToLeftOverrideState = ERightToLeftOverride |