730
731
public getVerticalOffsetForWhitespaceIndex(whitespaceIndex: number): number {
733
>
734
>
const afterLineNumber = this.getAfterLineNumberForWhitespaceIndex(whitespaceIndex);
735
>
736
>
let previousLinesHeight: number;
737
>
if (afterLineNumber >= 1) {
738
>
previousLinesHeight = this._lineHeightsManager.getAccumulatedLineHeightsIncludingLineNumber(afterLineNumber);
739
>
} else {
740
previousLinesHeight = 0;
741
}
743
>
let previousWhitespacesHeight: number;
744
>
if (whitespaceIndex > 0) {
745
>
previousWhitespacesHeight = this.getWhitespacesAccumulatedHeight(whitespaceIndex - 1);
746
>
} else {
747
>
previousWhitespacesHeight = 0;
748
>
}
749
>
return previousLinesHeight + previousWhitespacesHeight + this._paddingTop;
750
>
}
751
752
public getWhitespaceIndexAtOrAfterVerticallOffset(verticalOffset: number): number {
754
>
755
>
let minWhitespaceIndex = 0;
756
>
let maxWhitespaceIndex = this.getWhitespacesCount() - 1;
757
>
758
>
if (maxWhitespaceIndex < 0) {
759
return -1;
760
}
762
>
// Special case: nothing to be found
763
>
const maxWhitespaceVerticalOffset = this.getVerticalOffsetForWhitespaceIndex(maxWhitespaceIndex);
764
>
const maxWhitespaceHeight = this.getHeightForWhitespaceIndex(maxWhitespaceIndex);
765
>
if (verticalOffset >= maxWhitespaceVerticalOffset + maxWhitespaceHeight) {
766
return -1;
767
}
769
>
while (minWhitespaceIndex < maxWhitespaceIndex) {
770
>
const midWhitespaceIndex = Math.floor((minWhitespaceIndex + maxWhitespaceIndex) / 2);
771
>
772
>
const midWhitespaceVerticalOffset = this.getVerticalOffsetForWhitespaceIndex(midWhitespaceIndex);
773
>
const midWhitespaceHeight = this.getHeightForWhitespaceIndex(midWhitespaceIndex);
774
>
775
>
if (verticalOffset >= midWhitespaceVerticalOffset + midWhitespaceHeight) {
776
// vertical offset is after whitespace
777
minWhitespaceIndex = midWhitespaceIndex + 1;
778
>
} else if (verticalOffset >= midWhitespaceVerticalOffset) {
linesLayout.ts
779
// Hit
780
return midWhitespaceIndex;
782
>
// vertical offset is before whitespace, but midWhitespaceIndex might still be what we're searching for
783
>
maxWhitespaceIndex = midWhitespaceIndex;
784
>
}
785
>
}
786
>
return minWhitespaceIndex;
787
>
}
788
789
/**