本文整理汇总了C++中QChar::mirroredChar方法的典型用法代码示例。如果您正苦于以下问题:C++ QChar::mirroredChar方法的具体用法?C++ QChar::mirroredChar怎么用?C++ QChar::mirroredChar使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QChar
的用法示例。
在下文中一共展示了QChar::mirroredChar方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: bidiReorderString
void tst_QComplexText::bidiReorderString()
{
QFETCH( QString, logical );
QFETCH( int, basicDir );
// replace \n with Unicode newline. The new algorithm ignores \n
logical.replace(QChar('\n'), QChar(0x2028));
QTextEngine e(logical, QFont());
e.option.setTextDirection((QChar::Direction)basicDir == QChar::DirL ? Qt::LeftToRight : Qt::RightToLeft);
e.itemize();
quint8 levels[256];
int visualOrder[256];
int nitems = e.layoutData->items.size();
int i;
for (i = 0; i < nitems; ++i) {
//qDebug("item %d bidiLevel=%d", i, e.items[i].analysis.bidiLevel);
levels[i] = e.layoutData->items[i].analysis.bidiLevel;
}
e.bidiReorder(nitems, levels, visualOrder);
QString visual;
for (i = 0; i < nitems; ++i) {
QScriptItem &si = e.layoutData->items[visualOrder[i]];
QString sub = logical.mid(si.position, e.length(visualOrder[i]));
if (si.analysis.bidiLevel % 2) {
// reverse sub
QChar *a = (QChar *)sub.unicode();
QChar *b = a + sub.length() - 1;
while (a < b) {
QChar tmp = *a;
*a = *b;
*b = tmp;
++a;
--b;
}
a = (QChar *)sub.unicode();
b = a + sub.length();
while (a<b) {
*a = a->mirroredChar();
++a;
}
}
visual += sub;
}
// replace Unicode newline back with \n to compare.
visual.replace(QChar(0x2028), QChar('\n'));
QTEST(visual, "VISUAL");
}