本文整理汇总了C++中ZLTextWordCursor::previousWord方法的典型用法代码示例。如果您正苦于以下问题:C++ ZLTextWordCursor::previousWord方法的具体用法?C++ ZLTextWordCursor::previousWord怎么用?C++ ZLTextWordCursor::previousWord使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ZLTextWordCursor
的用法示例。
在下文中一共展示了ZLTextWordCursor::previousWord方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: internalRange
const std::vector<ZLTextSelectionModel::Range> &ZLTextSelectionModel::ranges() const {
if (!myRangeVectorIsUpToDate && !isEmpty()) {
Range r = internalRange();
ZLTextWordCursor cursor = myArea.startCursor();
cursor.moveToParagraph(r.first.ParagraphIndex);
cursor.moveToParagraphStart();
int startLevel = 0;
for (int i = r.first.ElementIndex; i > 0; --i) {
switch (cursor.element().kind()) {
case ZLTextElement::START_REVERSED_SEQUENCE_ELEMENT:
++startLevel;
break;
case ZLTextElement::END_REVERSED_SEQUENCE_ELEMENT:
--startLevel;
break;
default:
break;
}
cursor.nextWord();
}
cursor.moveToParagraph(r.second.ParagraphIndex);
cursor.moveToParagraphEnd();
int endLevel = 0;
for (int i = cursor.elementIndex() - r.second.ElementIndex; i > 0; --i) {
cursor.previousWord();
switch (cursor.element().kind()) {
case ZLTextElement::START_REVERSED_SEQUENCE_ELEMENT:
--endLevel;
break;
case ZLTextElement::END_REVERSED_SEQUENCE_ELEMENT:
++endLevel;
break;
default:
break;
}
}
if ((startLevel == 0) && (endLevel == 0)) {
myRanges.push_back(r);
} else if (r.first.ParagraphIndex == r.second.ParagraphIndex) {
BoundElement leftBound = r.first;
BoundElement rightBound;
rightBound.Exists = true;
rightBound.ParagraphIndex = leftBound.ParagraphIndex;
rightBound.CharIndex = 0;
cursor.moveTo(r.first.ElementIndex, 0);
for (int i = r.first.ElementIndex; i < r.second.ElementIndex; ++i) {
ZLTextElement::Kind kind = cursor.element().kind();
if ((kind == ZLTextElement::START_REVERSED_SEQUENCE_ELEMENT) ||
(kind == ZLTextElement::END_REVERSED_SEQUENCE_ELEMENT)) {
rightBound.ElementIndex = i;
myRanges.push_back(Range(leftBound, rightBound));
leftBound = rightBound;
}
cursor.nextWord();
}
myRanges.push_back(Range(leftBound, r.second));
} else {
BoundElement leftBound = r.first;
if (startLevel > 0) {
BoundElement rightBound;
rightBound.Exists = true;
rightBound.ParagraphIndex = leftBound.ParagraphIndex;
rightBound.ElementIndex = leftBound.ElementIndex;
rightBound.CharIndex = 0;
cursor.moveToParagraph(r.first.ParagraphIndex);
cursor.moveTo(r.first.ElementIndex, 0);
while (startLevel > 0) {
switch(cursor.element().kind()) {
case ZLTextElement::START_REVERSED_SEQUENCE_ELEMENT:
++startLevel;
rightBound.ElementIndex = cursor.elementIndex();
myRanges.push_back(Range(leftBound, rightBound));
leftBound = rightBound;
break;
case ZLTextElement::END_REVERSED_SEQUENCE_ELEMENT:
--startLevel;
rightBound.ElementIndex = cursor.elementIndex();
myRanges.push_back(Range(leftBound, rightBound));
leftBound = rightBound;
break;
default:
break;
}
cursor.nextWord();
}
}
BoundElement rightBound1 = r.second;
if (endLevel > 0) {
BoundElement leftBound1;
leftBound1.Exists = true;
leftBound1.ParagraphIndex = rightBound1.ParagraphIndex;
leftBound1.ElementIndex = rightBound1.ElementIndex;
leftBound1.CharIndex = 0;
cursor.moveToParagraph(r.second.ParagraphIndex);
cursor.moveTo(r.second.ElementIndex, 0);
while (endLevel > 0) {
//.........这里部分代码省略.........