本文整理汇总了TypeScript中vs/editor/browser/editorBrowser.IRenderingContext.visibleRangeForPosition方法的典型用法代码示例。如果您正苦于以下问题:TypeScript IRenderingContext.visibleRangeForPosition方法的具体用法?TypeScript IRenderingContext.visibleRangeForPosition怎么用?TypeScript IRenderingContext.visibleRangeForPosition使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类vs/editor/browser/editorBrowser.IRenderingContext
的用法示例。
在下文中一共展示了IRenderingContext.visibleRangeForPosition方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: prepareRender
public prepareRender(ctx:IRenderingContext): void {
var visibleRange = ctx.visibleRangeForPosition(this._position);
if (visibleRange) {
this._positionTop = visibleRange.top;
this._positionLeft = visibleRange.left;
this._isInViewport = true;
} else {
this._isInViewport = false;
}
}
示例2: _prepareRenderWidgetAtExactPosition
private _prepareRenderWidgetAtExactPosition(position:editorCommon.IEditorPosition, ctx:IRenderingContext): IMyWidgetRenderData {
let visibleRange = ctx.visibleRangeForPosition(position);
if (!visibleRange) {
return null;
}
return {
top: visibleRange.top,
left: visibleRange.left
};
}
示例3: _layoutBoxInPage
private _layoutBoxInPage(position: editorCommon.IEditorPosition, domNode: HTMLElement, ctx: IRenderingContext): IBoxLayoutResult {
let visibleRange = ctx.visibleRangeForPosition(position);
if (!visibleRange) {
return null;
}
let left0 = visibleRange.left - ctx.viewportLeft;
let width = domNode.clientWidth,
height = domNode.clientHeight;
if (left0 + width < 0 || left0 > this._contentWidth) {
return null;
}
let aboveTop = visibleRange.top - height,
belowTop = visibleRange.top + this._context.configuration.editor.lineHeight,
left = left0 + this._contentLeft;
let domNodePosition = dom.getDomNodePosition(this._viewDomNode);
let absoluteAboveTop = domNodePosition.top + aboveTop - document.body.scrollTop - document.documentElement.scrollTop,
absoluteBelowTop = domNodePosition.top + belowTop - document.body.scrollTop - document.documentElement.scrollTop,
absoluteLeft = domNodePosition.left + left - document.body.scrollLeft - document.documentElement.scrollLeft;
let INNER_WIDTH = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth,
INNER_HEIGHT = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
// Leave some clearance to the bottom
let BOTTOM_PADDING = 22;
let fitsAbove = (absoluteAboveTop >= 0),
fitsBelow = (absoluteBelowTop + height <= INNER_HEIGHT - BOTTOM_PADDING);
if (absoluteLeft + width + 20 > INNER_WIDTH) {
let delta = absoluteLeft - (INNER_WIDTH - width - 20);
absoluteLeft -= delta;
left -= delta;
}
if (absoluteLeft < 0) {
let delta = absoluteLeft;
absoluteLeft -= delta;
left -= delta;
}
return {
aboveTop: aboveTop,
fitsAbove: fitsAbove,
belowTop: belowTop,
fitsBelow: fitsBelow,
left: left
};
}
示例4: _layoutBoxInViewport
private _layoutBoxInViewport(position:editorCommon.IEditorPosition, domNode:HTMLElement, ctx:IRenderingContext): IBoxLayoutResult {
let visibleRange = ctx.visibleRangeForPosition(position);
if (!visibleRange) {
return null;
}
let width = domNode.clientWidth;
let height = domNode.clientHeight;
// Our visible box is split horizontally by the current line => 2 boxes
// a) the box above the line
let aboveLineTop = visibleRange.top;
let heightAboveLine = aboveLineTop;
// b) the box under the line
let underLineTop = visibleRange.top + this._context.configuration.editor.lineHeight;
let heightUnderLine = ctx.viewportHeight - underLineTop;
let aboveTop = aboveLineTop - height;
let fitsAbove = (heightAboveLine >= height);
let belowTop = underLineTop;
let fitsBelow = (heightUnderLine >= height);
// And its left
let actualLeft = visibleRange.left;
if (actualLeft + width > ctx.viewportLeft + ctx.viewportWidth) {
actualLeft = ctx.viewportLeft + ctx.viewportWidth - width;
}
if (actualLeft < ctx.viewportLeft) {
actualLeft = ctx.viewportLeft;
}
return {
aboveTop: aboveTop,
fitsAbove: fitsAbove,
belowTop: belowTop,
fitsBelow: fitsBelow,
left: actualLeft
};
}