| 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 |