mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-28 12:33:35 +01:00
Move renderingContext to /browser/
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { RenderingContext } from 'vs/editor/common/view/renderingContext';
|
||||
import { RenderingContext } from 'vs/editor/browser/view/renderingContext';
|
||||
import { ViewEventHandler } from 'vs/editor/common/viewModel/viewEventHandler';
|
||||
|
||||
export abstract class DynamicViewOverlay extends ViewEventHandler {
|
||||
|
||||
159
src/vs/editor/browser/view/renderingContext.ts
Normal file
159
src/vs/editor/browser/view/renderingContext.ts
Normal file
@@ -0,0 +1,159 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { Position } from 'vs/editor/common/core/position';
|
||||
import { Range } from 'vs/editor/common/core/range';
|
||||
import { ViewportData } from 'vs/editor/common/viewLayout/viewLinesViewportData';
|
||||
import { IViewLayout, ViewModelDecoration } from 'vs/editor/common/viewModel/viewModel';
|
||||
|
||||
export interface IViewLines {
|
||||
linesVisibleRangesForRange(range: Range, includeNewLines: boolean): LineVisibleRanges[] | null;
|
||||
visibleRangeForPosition(position: Position): HorizontalPosition | null;
|
||||
}
|
||||
|
||||
export abstract class RestrictedRenderingContext {
|
||||
_restrictedRenderingContextBrand: void = undefined;
|
||||
|
||||
public readonly viewportData: ViewportData;
|
||||
|
||||
public readonly scrollWidth: number;
|
||||
public readonly scrollHeight: number;
|
||||
|
||||
public readonly visibleRange: Range;
|
||||
public readonly bigNumbersDelta: number;
|
||||
|
||||
public readonly scrollTop: number;
|
||||
public readonly scrollLeft: number;
|
||||
|
||||
public readonly viewportWidth: number;
|
||||
public readonly viewportHeight: number;
|
||||
|
||||
private readonly _viewLayout: IViewLayout;
|
||||
|
||||
constructor(viewLayout: IViewLayout, viewportData: ViewportData) {
|
||||
this._viewLayout = viewLayout;
|
||||
this.viewportData = viewportData;
|
||||
|
||||
this.scrollWidth = this._viewLayout.getScrollWidth();
|
||||
this.scrollHeight = this._viewLayout.getScrollHeight();
|
||||
|
||||
this.visibleRange = this.viewportData.visibleRange;
|
||||
this.bigNumbersDelta = this.viewportData.bigNumbersDelta;
|
||||
|
||||
const vInfo = this._viewLayout.getCurrentViewport();
|
||||
this.scrollTop = vInfo.top;
|
||||
this.scrollLeft = vInfo.left;
|
||||
this.viewportWidth = vInfo.width;
|
||||
this.viewportHeight = vInfo.height;
|
||||
}
|
||||
|
||||
public getScrolledTopFromAbsoluteTop(absoluteTop: number): number {
|
||||
return absoluteTop - this.scrollTop;
|
||||
}
|
||||
|
||||
public getVerticalOffsetForLineNumber(lineNumber: number): number {
|
||||
return this._viewLayout.getVerticalOffsetForLineNumber(lineNumber);
|
||||
}
|
||||
|
||||
public getDecorationsInViewport(): ViewModelDecoration[] {
|
||||
return this.viewportData.getDecorationsInViewport();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export class RenderingContext extends RestrictedRenderingContext {
|
||||
_renderingContextBrand: void = undefined;
|
||||
|
||||
private readonly _viewLines: IViewLines;
|
||||
|
||||
constructor(viewLayout: IViewLayout, viewportData: ViewportData, viewLines: IViewLines) {
|
||||
super(viewLayout, viewportData);
|
||||
this._viewLines = viewLines;
|
||||
}
|
||||
|
||||
public linesVisibleRangesForRange(range: Range, includeNewLines: boolean): LineVisibleRanges[] | null {
|
||||
return this._viewLines.linesVisibleRangesForRange(range, includeNewLines);
|
||||
}
|
||||
|
||||
public visibleRangeForPosition(position: Position): HorizontalPosition | null {
|
||||
return this._viewLines.visibleRangeForPosition(position);
|
||||
}
|
||||
}
|
||||
|
||||
export class LineVisibleRanges {
|
||||
constructor(
|
||||
public readonly outsideRenderedLine: boolean,
|
||||
public readonly lineNumber: number,
|
||||
public readonly ranges: HorizontalRange[]
|
||||
) { }
|
||||
}
|
||||
|
||||
export class HorizontalRange {
|
||||
_horizontalRangeBrand: void = undefined;
|
||||
|
||||
public left: number;
|
||||
public width: number;
|
||||
|
||||
public static from(ranges: FloatHorizontalRange[]): HorizontalRange[] {
|
||||
const result = new Array(ranges.length);
|
||||
for (let i = 0, len = ranges.length; i < len; i++) {
|
||||
const range = ranges[i];
|
||||
result[i] = new HorizontalRange(range.left, range.width);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
constructor(left: number, width: number) {
|
||||
this.left = Math.round(left);
|
||||
this.width = Math.round(width);
|
||||
}
|
||||
|
||||
public toString(): string {
|
||||
return `[${this.left},${this.width}]`;
|
||||
}
|
||||
}
|
||||
|
||||
export class FloatHorizontalRange {
|
||||
_floatHorizontalRangeBrand: void = undefined;
|
||||
|
||||
public left: number;
|
||||
public width: number;
|
||||
|
||||
constructor(left: number, width: number) {
|
||||
this.left = left;
|
||||
this.width = width;
|
||||
}
|
||||
|
||||
public toString(): string {
|
||||
return `[${this.left},${this.width}]`;
|
||||
}
|
||||
|
||||
public static compare(a: FloatHorizontalRange, b: FloatHorizontalRange): number {
|
||||
return a.left - b.left;
|
||||
}
|
||||
}
|
||||
|
||||
export class HorizontalPosition {
|
||||
public outsideRenderedLine: boolean;
|
||||
/**
|
||||
* Math.round(this.originalLeft)
|
||||
*/
|
||||
public left: number;
|
||||
public originalLeft: number;
|
||||
|
||||
constructor(outsideRenderedLine: boolean, left: number) {
|
||||
this.outsideRenderedLine = outsideRenderedLine;
|
||||
this.originalLeft = left;
|
||||
this.left = Math.round(this.originalLeft);
|
||||
}
|
||||
}
|
||||
|
||||
export class VisibleRanges {
|
||||
constructor(
|
||||
public readonly outsideRenderedLine: boolean,
|
||||
public readonly ranges: FloatHorizontalRange[]
|
||||
) {
|
||||
}
|
||||
}
|
||||
@@ -41,7 +41,7 @@ import { Position } from 'vs/editor/common/core/position';
|
||||
import { Range } from 'vs/editor/common/core/range';
|
||||
import { ScrollType } from 'vs/editor/common/editorCommon';
|
||||
import { IEditorConfiguration } from 'vs/editor/common/config/editorConfiguration';
|
||||
import { RenderingContext } from 'vs/editor/common/view/renderingContext';
|
||||
import { RenderingContext } from 'vs/editor/browser/view/renderingContext';
|
||||
import { ViewContext } from 'vs/editor/common/viewModel/viewContext';
|
||||
import * as viewEvents from 'vs/editor/common/viewModel/viewEvents';
|
||||
import { ViewportData } from 'vs/editor/common/viewLayout/viewLinesViewportData';
|
||||
|
||||
@@ -10,7 +10,7 @@ import { IVisibleLine, IVisibleLinesHost, VisibleLinesCollection } from 'vs/edit
|
||||
import { ViewPart } from 'vs/editor/browser/view/viewPart';
|
||||
import { IStringBuilder } from 'vs/editor/common/core/stringBuilder';
|
||||
import { IEditorConfiguration } from 'vs/editor/common/config/editorConfiguration';
|
||||
import { RenderingContext, RestrictedRenderingContext } from 'vs/editor/common/view/renderingContext';
|
||||
import { RenderingContext, RestrictedRenderingContext } from 'vs/editor/browser/view/renderingContext';
|
||||
import { ViewContext } from 'vs/editor/common/viewModel/viewContext';
|
||||
import * as viewEvents from 'vs/editor/common/viewModel/viewEvents';
|
||||
import { ViewportData } from 'vs/editor/common/viewLayout/viewLinesViewportData';
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { FastDomNode } from 'vs/base/browser/fastDomNode';
|
||||
import { RenderingContext, RestrictedRenderingContext } from 'vs/editor/common/view/renderingContext';
|
||||
import { RenderingContext, RestrictedRenderingContext } from 'vs/editor/browser/view/renderingContext';
|
||||
import { ViewContext } from 'vs/editor/common/viewModel/viewContext';
|
||||
import { ViewEventHandler } from 'vs/editor/common/viewModel/viewEventHandler';
|
||||
|
||||
|
||||
Reference in New Issue
Block a user