Lines Matching refs:current
133 // Let's fill the resolved blocks with the current font
755 Position SelectableText::previousPosition(Position current) const {
756 const BoxLine* currentLine = &fBoxLines[current.fLineIndex];
757 if (this->isFirstOnTheLine(current)) {
759 if (current.fLineIndex == 0) {
761 current.fGlyphRange = GlyphRange(0, 0);
762 return current;
764 current.fLineIndex -= 1;
765 currentLine = &fBoxLines[current.fLineIndex];
766 current.fGlyphRange.fStart = currentLine->fBoxGlyphs.size();
769 auto position = this->findPosition(current.fPositionType, *currentLine, currentLine->fBoxGlyphs[current.fGlyphRange.fStart].centerX());
770 if (current.fPositionType == PositionType::kGraphemeCluster) {
772 SkASSERT(this->hasProperty(current.fTextRange.fStart, GlyphUnitFlags::kGraphemeClusterStart));
777 Position SelectableText::nextPosition(Position current) const {
778 const BoxLine* currentLine = &fBoxLines[current.fLineIndex];
779 if (this->isLastOnTheLine(current)) {
781 if (current.fLineIndex == this->fBoxLines.size() - 1) {
783 current.fGlyphRange = GlyphRange(currentLine->fBoxGlyphs.size(), currentLine->fBoxGlyphs.size());
784 return current;
786 current.fLineIndex += 1;
787 currentLine = &fBoxLines[current.fLineIndex];
788 current.fGlyphRange.fEnd = 0;
791 auto position = this->findPosition(current.fPositionType, *currentLine, currentLine->fBoxGlyphs[current.fGlyphRange.fStart].centerX());
792 if (current.fPositionType == PositionType::kGraphemeCluster) {
794 SkASSERT(this->hasProperty(current.fTextRange.fEnd, GlyphUnitFlags::kGraphemeClusterStart));
799 Position SelectableText::upPosition(Position current) const {
801 if (current.fLineIndex == 0) {
803 return this->firstPosition(current.fPositionType);
807 const BoxLine* currentLine = &fBoxLines[current.fLineIndex];
808 auto position = this->findPosition(current.fPositionType, fBoxLines[current.fLineIndex - 1], currentLine->fBoxGlyphs[current.fGlyphRange.fStart].centerX());
809 if (current.fPositionType == PositionType::kGraphemeCluster) {
811 SkASSERT(this->hasProperty(current.fTextRange.fEnd, GlyphUnitFlags::kGraphemeClusterStart));
816 Position SelectableText::downPosition(Position current) const {
818 if (current.fLineIndex == this->countLines() - 1) {
820 return this->lastPosition(current.fPositionType);
824 const BoxLine* currentLine = &fBoxLines[current.fLineIndex];
825 auto position = this->findPosition(current.fPositionType, fBoxLines[current.fLineIndex + 1], currentLine->fBoxGlyphs[current.fGlyphRange.fStart].centerX());
826 if (current.fPositionType == PositionType::kGraphemeCluster) {
828 SkASSERT(this->hasProperty(current.fTextRange.fEnd, GlyphUnitFlags::kGraphemeClusterStart));