Path: blob/main/src/vs/editor/common/viewLayout/viewLinesViewportData.ts
3294 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { Range } from '../core/range.js';6import { Selection } from '../core/selection.js';7import { IPartialViewLinesViewportData, IViewModel, IViewWhitespaceViewportData, ViewLineRenderingData } from '../viewModel.js';8import { ViewModelDecoration } from '../viewModel/viewModelDecoration.js';910/**11* Contains all data needed to render at a specific viewport.12*/13export class ViewportData {1415public readonly selections: Selection[];1617/**18* The line number at which to start rendering (inclusive).19*/20public readonly startLineNumber: number;2122/**23* The line number at which to end rendering (inclusive).24*/25public readonly endLineNumber: number;2627/**28* relativeVerticalOffset[i] is the `top` position for line at `i` + `startLineNumber`.29*/30public readonly relativeVerticalOffset: number[];3132/**33* The viewport as a range (startLineNumber,1) -> (endLineNumber,maxColumn(endLineNumber)).34*/35public readonly visibleRange: Range;3637/**38* Value to be substracted from `scrollTop` (in order to vertical offset numbers < 1MM)39*/40public readonly bigNumbersDelta: number;4142/**43* Positioning information about gaps whitespace.44*/45public readonly whitespaceViewportData: IViewWhitespaceViewportData[];4647private readonly _model: IViewModel;4849public readonly lineHeight: number;5051constructor(52selections: Selection[],53partialData: IPartialViewLinesViewportData,54whitespaceViewportData: IViewWhitespaceViewportData[],55model: IViewModel56) {57this.selections = selections;58this.startLineNumber = partialData.startLineNumber | 0;59this.endLineNumber = partialData.endLineNumber | 0;60this.relativeVerticalOffset = partialData.relativeVerticalOffset;61this.bigNumbersDelta = partialData.bigNumbersDelta | 0;62this.lineHeight = partialData.lineHeight | 0;63this.whitespaceViewportData = whitespaceViewportData;6465this._model = model;6667this.visibleRange = new Range(68partialData.startLineNumber,69this._model.getLineMinColumn(partialData.startLineNumber),70partialData.endLineNumber,71this._model.getLineMaxColumn(partialData.endLineNumber)72);73}7475public getViewLineRenderingData(lineNumber: number): ViewLineRenderingData {76return this._model.getViewportViewLineRenderingData(this.visibleRange, lineNumber);77}7879public getDecorationsInViewport(): ViewModelDecoration[] {80return this._model.getDecorationsInViewport(this.visibleRange);81}82}838485