Lines Matching refs:start
57 if (a.start == b.start && a.end == b.end) return a;
58 auto begin = std::max(a.start, b.start);
64 if (a.width() <= 0 || b.width() <= 0 || a.end < b.start || a.start > b.end) {
68 return TextRange(std::min(a.start, b.start), std::max(a.end, b.end));
176 fLines[lineNumber - 1].clusters().start;
182 targetRun.clusterRange().start;
213 &fText[textRange.start], textRange.width(),
214 [&](SkUnichar unichar, int32_t start, int32_t end, int32_t count) {
223 if (sourceRange.end <= deletedRange.start) {
228 if (sourceRange.start >= deletedRange.end) {
229 return TextRange(sourceRange.start + changeSize, sourceRange.end + changeSize);
233 target.start = sourceRange.start <= deletedRange.start ? sourceRange.start : deletedRange.start + ellSize;
234 target.end = sourceRange.end <= deletedRange.end ? deletedRange.start + ellSize : sourceRange.end + changeSize;
235 return target.start <= target.end ? target : EMPTY_RANGE;
245 static_cast<unsigned long>(fs.fRange.start), static_cast<unsigned long>(fs.fRange.end),
246 static_cast<unsigned long>(newTextRange.start), static_cast<unsigned long>(newTextRange.end));
264 static_cast<unsigned long>(ph.fRange.start), static_cast<unsigned long>(ph.fRange.end),
265 static_cast<unsigned long>(newTextRange.start), static_cast<unsigned long>(newTextRange.end));
271 newTextRange.start = fPlaceholders.empty() ? 0 : fPlaceholders.back().fRange.end;
272 if (newTextRange.end > deletedRange.start) {
274 deletedRange.start + ellSize : newTextRange.end + ellSize - deletedRange.width();
313 size_t start = 0;
320 scanTextCutPoint(ltrTextSize, start, end);
322 charbegin = ltrTextSize[start].charbegin;
324 fText.remove(ltrTextSize[start].charbegin, ltrTextSize[end].charOver - ltrTextSize[start].charbegin);
325 fText.insert(ltrTextSize[start].charbegin, ellStr);
337 size_t start = 0;
338 scanTextCutPoint(rtlTextSize, start, end);
339 if (start < 1 || end + PARAM_DOUBLE >= rtlTextSize.size()) {
340 start = 0;
344 charbegin = rtlTextSize[start - 1].charbegin;
346 fText.remove(rtlTextSize[start - 1].charbegin,
347 rtlTextSize[end + PARAM_DOUBLE].charbegin - rtlTextSize[start - 1].charbegin);
348 fText.insert(rtlTextSize[start - 1].charbegin, ellStr);
372 void ParagraphImpl::scanRTLTextCutPoint(const std::vector<TextCutRecord>& rawTextSize, size_t& start, size_t& end)
394 start = left;
397 start = 0;
402 void ParagraphImpl::scanLTRTextCutPoint(const std::vector<TextCutRecord>& rawTextSize, size_t& start, size_t& end)
429 start = begin;
432 start = 0;
437 void ParagraphImpl::scanTextCutPoint(const std::vector<TextCutRecord>& rawTextSize, size_t& start, size_t& end)
445 scanLTRTextCutPoint(rawTextSize, start, end);
447 scanRTLTextCutPoint(rawTextSize, start, end);
699 return TextRange(getUTF16Index(ellipsisClusterRange.start),
836 for (auto i = unicodeSetRange.start; i <= unicodeSetRange.end; ++i) {
852 size_t start,
861 , fStart(start)
877 for (auto i = fTextRange.start; i < fTextRange.end; ++i) {
895 fIsTabulation = fOwner->codeUnitHasProperty(fTextRange.start,
898 auto unicodeStart = fOwner->getUnicodeIndex(fTextRange.start);
909 SkScalar Run::calculateWidth(size_t start, size_t end, bool clip) const {
910 SkASSERT(start <= end);
913 if (end > start && !fJustificationShifts.empty()) {
916 fJustificationShifts[start].fY;
918 if (end > start && !fAutoSpacings.empty()) {
920 correction += fAutoSpacings[end - 1].fX - fAutoSpacings[start].fY;
922 return posX(end) - posX(start) + correction;
1045 fCodeUnitProperties[run.fTextRange.start] |= SkUnicode::CodeUnitFlags::kGraphemeStart;
1046 fCodeUnitProperties[run.fTextRange.start] |= SkUnicode::CodeUnitFlags::kGlyphClusterStart;
1060 for (auto i = run.textRange().start; i < run.textRange().end; ++i) {
1065 fCodeUnitProperties[run.textRange().start] |= SkUnicode::CodeUnitFlags::kSoftLineBreakBefore;
1087 fCodeUnitProperties[run.textRange().start] |= SkUnicode::CodeUnitFlags::kGlyphClusterStart;
1416 if (block.fRange.end <= textRange.start) {
1419 if (block.fRange.start >= textRange.end) {
1499 // start and end glyph indexes, including start and excluding end
1500 std::vector<TextBox> ParagraphImpl::getRectsForRange(unsigned start,
1507 if (start == 0 && end > 0) {
1509 //SkDebugf("getRectsForRange(%d, %d): %f\n", start, end, fHeight);
1521 if (start >= end || start > SkToSizeT(fUTF8IndexForUTF16Index.size()) || end == 0) {
1536 // that belongs to the given [start:end) range entirely (not the ones that intersect with it)
1537 if (start < SkToSizeT(fUTF8IndexForUTF16Index.size())) {
1538 auto utf8 = fUTF8IndexForUTF16Index[start];
1539 // If start points to a trailing surrogate, skip it
1540 if (start > 0 && fUTF8IndexForUTF16Index[start - 1] == utf8) {
1541 utf8 = fUTF8IndexForUTF16Index[start + 1];
1543 text.start = this->findNextGraphemeBoundary(utf8);
1549 //SkDebugf("getRectsForRange(%d,%d) -> (%d:%d)\n", start, end, text.start, text.end);
1554 if (intersect.empty() && lineText.start != text.start) {
1561 SkDebugf("getRectsForRange(%d, %d)\n", start, end);
1640 int32_t start = 0;
1645 start = word;
1653 //SkDebugf("getWordBoundary(%d): %d - %d\n", offset, start, end);
1654 return { SkToU32(start), SkToU32(end) };
1665 SkASSERT(textRange.start <= fText.size() && textRange.end <= fText.size());
1666 auto start = fText.c_str() + textRange.start;
1667 return SkSpan<const char>(start, textRange.width());
1671 SkASSERT(clusterRange.start < SkToSizeT(fClusters.size()) &&
1673 return SkSpan<Cluster>(&fClusters[clusterRange.start], clusterRange.width());
1682 auto start = cluster(clusterIndex);
1683 return this->run(start.fRunIndex);
1687 SkASSERT(blockRange.start < SkToSizeT(fTextStyles.size()) &&
1689 return SkSpan<Block>(&fTextStyles[blockRange.start], blockRange.width());
1907 if (from > fRange.start) {
1925 if ((fCodeUnitProperties[textRange.start] & SkUnicode::CodeUnitFlags::kGraphemeStart) == 0) {
1927 graphemes.emplace_back(textRange.start);
1929 for (auto index = textRange.start; index < textRange.end; ++index) {
2057 for (auto c = line.clustersWithSpaces().start; c < line.clustersWithSpaces().end; ++c) {