31 if( ((nCharPos +
int(bRTL)) == nRunPos1) && ((nRunPos0 > nRunPos1) == bRTL) )
38 if( (nRunPos0 <= nCharPos) && (nCharPos < nRunPos1) )
40 if( (nRunPos1 <= nCharPos) && (nCharPos < nRunPos0) )
45 maRuns.push_back( nCharPos + (bRTL ? 1 : 0) );
46 maRuns.push_back( nCharPos + (bRTL ? 0 : 1) );
51 if( nCharPos0 == nCharPos1 )
55 if( bRTL == (nCharPos0 < nCharPos1) )
56 std::swap( nCharPos0, nCharPos1 );
65 maRuns.push_back( nCharPos0 );
66 maRuns.push_back( nCharPos1 );
76 if( nMinCharPos > nEndCharPos )
77 std::swap( nMinCharPos, nEndCharPos );
79 if( nCharPos < nMinCharPos )
81 if( nCharPos >= nEndCharPos )
95 for (
size_t i = 0;
i <
maRuns.size();
i+=2)
119 *bRightToLeft = (nRunPos0 > nRunPos1);
124 *nCharPos = nRunPos0;
133 if( *nCharPos == nRunPos1 )
139 *bRightToLeft = (nRunPos0 > nRunPos1);
140 *nCharPos = nRunPos0;
158 *bRightToLeft = (nRunPos1 < nRunPos0) ;
161 *nMinRunPos = nRunPos0;
162 *nEndRunPos = nRunPos1;
166 *nMinRunPos = nRunPos1;
167 *nEndRunPos = nRunPos0;
bool PosIsInRun(int nCharPos) const
void AddPos(int nCharPos, bool bRTL)
boost::container::small_vector< int, 8 > maRuns
bool GetNextPos(int *nCharPos, bool *bRTL)
bool GetRun(int *nMinRunPos, int *nEndRunPos, bool *bRTL) const
void AddRun(int nMinRunPos, int nEndRunPos, bool bRTL)
bool PosIsInAnyRun(int nCharPos) const
const wchar_t *typedef int(__stdcall *DllNativeUnregProc)(int