本文整理汇总了C++中ZLTextWordCursor::moveToParagraphEnd方法的典型用法代码示例。如果您正苦于以下问题:C++ ZLTextWordCursor::moveToParagraphEnd方法的具体用法?C++ ZLTextWordCursor::moveToParagraphEnd怎么用?C++ ZLTextWordCursor::moveToParagraphEnd使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ZLTextWordCursor
的用法示例。
在下文中一共展示了ZLTextWordCursor::moveToParagraphEnd方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: buildInfos
ZLTextWordCursor ZLTextAreaController::buildInfos(const ZLTextWordCursor &start) {
myArea.myLineInfos.clear();
ZLTextWordCursor cursor = start;
int textHeight = myArea.height();
int counter = 0;
do {
ZLTextWordCursor paragraphEnd = cursor;
paragraphEnd.moveToParagraphEnd();
ZLTextWordCursor paragraphStart = cursor;
paragraphStart.moveToParagraphStart();
ZLTextArea::Style style(myArea, myArea.myProperties.baseStyle());
style.applyControls(paragraphStart, cursor);
ZLTextLineInfoPtr info = new ZLTextLineInfo(cursor, style.textStyle(), style.bidiLevel());
while (!info->End.isEndOfParagraph()) {
info = myArea.processTextLine(style, info->End, paragraphEnd);
textHeight -= info->Height + info->Descent;
if ((textHeight < 0) && (counter > 0)) {
break;
}
textHeight -= info->VSpaceAfter;
cursor = info->End;
myArea.myLineInfos.push_back(info);
if (textHeight < 0) {
break;
}
++counter;
}
} while (cursor.isEndOfParagraph() && cursor.nextParagraph() && !cursor.paragraphCursor().isEndOfSection() && (textHeight >= 0));
return cursor;
}
示例2: skip
void ZLTextAreaController::skip(ZLTextWordCursor &cursor, SizeUnit unit, int size) {
ZLTextWordCursor paragraphStart = cursor;
paragraphStart.moveToParagraphStart();
ZLTextWordCursor paragraphEnd = cursor;
paragraphEnd.moveToParagraphEnd();
ZLTextArea::Style style(myArea, myArea.myProperties.baseStyle());
style.applyControls(paragraphStart, cursor);
while (!cursor.isEndOfParagraph() && (size > 0)) {
const ZLTextLineInfoPtr info =
myArea.processTextLine(style, cursor, paragraphEnd);
cursor = info->End;
size -= infoHeight(*info, unit);
}
}
示例3: paragraphHeight
int ZLTextAreaController::paragraphHeight(const ZLTextWordCursor &cursor, bool beforeCurrentPosition, SizeUnit unit) {
ZLTextWordCursor word = cursor;
word.moveToParagraphStart();
ZLTextWordCursor end = cursor;
if (!beforeCurrentPosition) {
end.moveToParagraphEnd();
}
int size = 0;
ZLTextArea::Style style(myArea, myArea.myProperties.baseStyle());
while (!word.equalElementIndex(end)) {
const ZLTextLineInfoPtr info = myArea.processTextLine(style, word, end);
word = info->End;
size += infoHeight(*info, unit);
}
return size;
}
示例4: extendWordSelectionToParagraph
void ZLTextSelectionModel::extendWordSelectionToParagraph() {
clear();
myFirstBound.Before.ElementIndex = 0;
myFirstBound.Before.CharIndex = 0;
myFirstBound.After = myFirstBound.Before;
ZLTextWordCursor cursor = myView.startCursor();
cursor.moveToParagraph(myFirstBound.Before.ParagraphIndex);
cursor.moveToParagraphEnd();
mySecondBound.Before.ElementIndex = cursor.elementIndex();
mySecondBound.Before.CharIndex = 0;
mySecondBound.After = mySecondBound.Before;
myIsEmpty = false;
myTextIsUpToDate = false;
myRangeVectorIsUpToDate = false;
myDoUpdate = false;
}
示例5: extendWordSelectionToParagraph
void ZLTextSelectionModel::extendWordSelectionToParagraph() {
clear();
myFirstBound.Before.ElementIndex = 0;
myFirstBound.Before.CharIndex = 0;
myFirstBound.After = myFirstBound.Before;
ZLTextWordCursor cursor = myArea.startCursor();
cursor.moveToParagraph(myFirstBound.Before.ParagraphIndex);
cursor.moveToParagraphEnd();
mySecondBound.Before.ElementIndex = cursor.elementIndex();
mySecondBound.Before.CharIndex = 0;
mySecondBound.After = mySecondBound.Before;
myIsEmpty = false;
myTextIsUpToDate = false;
myRangeVectorIsUpToDate = false;
copySelectionToClipboard(ZLDialogManager::CLIPBOARD_SELECTION);
}
示例6: 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) {
//.........这里部分代码省略.........