Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
98604a98
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
98604a98
编写于
1月 16, 2017
作者:
A
Alex Dima
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add RenderingContext and adopt it
上级
d9df1796
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
97 addition
and
57 deletion
+97
-57
src/vs/editor/browser/view/viewImpl.ts
src/vs/editor/browser/view/viewImpl.ts
+2
-54
src/vs/editor/browser/viewLayout/layoutProvider.ts
src/vs/editor/browser/viewLayout/layoutProvider.ts
+2
-1
src/vs/editor/browser/viewParts/lines/viewLines.ts
src/vs/editor/browser/viewParts/lines/viewLines.ts
+2
-2
src/vs/editor/common/view/renderingContext.ts
src/vs/editor/common/view/renderingContext.ts
+91
-0
未找到文件。
src/vs/editor/browser/view/viewImpl.ts
浏览文件 @
98604a98
...
...
@@ -12,7 +12,6 @@ import * as dom from 'vs/base/browser/dom';
import
{
StyleMutator
}
from
'
vs/base/browser/styleMutator
'
;
import
{
ICommandService
}
from
'
vs/platform/commands/common/commands
'
;
import
{
Range
}
from
'
vs/editor/common/core/range
'
;
import
{
Position
}
from
'
vs/editor/common/core/position
'
;
import
*
as
editorCommon
from
'
vs/editor/common/editorCommon
'
;
import
{
ViewEventHandler
}
from
'
vs/editor/common/viewModel/viewEventHandler
'
;
import
{
Configuration
}
from
'
vs/editor/browser/config/configuration
'
;
...
...
@@ -45,8 +44,7 @@ import { ViewZones } from 'vs/editor/browser/viewParts/viewZones/viewZones';
import
{
ViewPart
,
PartFingerprint
,
PartFingerprints
}
from
'
vs/editor/browser/view/viewPart
'
;
import
{
ViewContext
,
IViewEventHandler
}
from
'
vs/editor/common/view/viewContext
'
;
import
{
IViewModel
}
from
'
vs/editor/common/viewModel/viewModel
'
;
import
{
ViewLinesViewportData
}
from
'
vs/editor/common/viewLayout/viewLinesViewportData
'
;
import
{
IRenderingContext
}
from
'
vs/editor/common/view/renderingContext
'
;
import
{
RenderingContext
}
from
'
vs/editor/common/view/renderingContext
'
;
import
{
IPointerHandlerHelper
}
from
'
vs/editor/browser/controller/mouseHandler
'
;
import
{
ViewOutgoingEvents
}
from
'
vs/editor/browser/view/viewOutgoingEvents
'
;
...
...
@@ -846,56 +844,6 @@ export class View extends ViewEventHandler implements editorBrowser.IView, IDisp
safeInvokeNoArg
(()
=>
this
.
_actualRender
());
}
private
createRenderingContext
(
linesViewportData
:
ViewLinesViewportData
):
IRenderingContext
{
let
vInfo
=
this
.
layoutProvider
.
getCurrentViewport
();
let
deltaTop
=
linesViewportData
.
visibleRangesDeltaTop
;
let
r
:
IRenderingContext
=
{
linesViewportData
:
linesViewportData
,
scrollWidth
:
this
.
layoutProvider
.
getScrollWidth
(),
scrollHeight
:
this
.
layoutProvider
.
getScrollHeight
(),
visibleRange
:
linesViewportData
.
visibleRange
,
bigNumbersDelta
:
linesViewportData
.
bigNumbersDelta
,
viewportWidth
:
vInfo
.
width
,
viewportHeight
:
vInfo
.
height
,
viewportLeft
:
vInfo
.
left
,
viewportTop
:
vInfo
.
top
,
getScrolledTopFromAbsoluteTop
:
(
absoluteTop
:
number
)
=>
{
return
this
.
layoutProvider
.
getScrolledTopFromAbsoluteTop
(
absoluteTop
);
},
getViewportVerticalOffsetForLineNumber
:
(
lineNumber
:
number
)
=>
{
let
verticalOffset
=
this
.
layoutProvider
.
getVerticalOffsetForLineNumber
(
lineNumber
);
let
scrolledTop
=
this
.
layoutProvider
.
getScrolledTopFromAbsoluteTop
(
verticalOffset
);
return
scrolledTop
;
},
getDecorationsInViewport
:
()
=>
linesViewportData
.
getDecorationsInViewport
(),
linesVisibleRangesForRange
:
(
range
:
Range
,
includeNewLines
:
boolean
)
=>
{
return
this
.
viewLines
.
linesVisibleRangesForRange
(
range
,
includeNewLines
);
},
visibleRangeForPosition
:
(
position
:
Position
)
=>
{
let
visibleRanges
=
this
.
viewLines
.
visibleRangesForRange2
(
new
Range
(
position
.
lineNumber
,
position
.
column
,
position
.
lineNumber
,
position
.
column
),
deltaTop
);
if
(
!
visibleRanges
)
{
return
null
;
}
return
visibleRanges
[
0
];
},
lineIsVisible
:
(
lineNumber
:
number
)
=>
{
return
linesViewportData
.
visibleRange
.
startLineNumber
<=
lineNumber
&&
lineNumber
<=
linesViewportData
.
visibleRange
.
endLineNumber
;
}
};
return
r
;
}
private
_getViewPartsToRender
():
ViewPart
[]
{
let
result
:
ViewPart
[]
=
[];
for
(
let
i
=
0
,
len
=
this
.
viewParts
.
length
;
i
<
len
;
i
++
)
{
...
...
@@ -934,7 +882,7 @@ export class View extends ViewEventHandler implements editorBrowser.IView, IDisp
this
.
keyboardHandler
.
writeToTextArea
();
}
let
renderingContext
=
this
.
createRenderingContext
(
linesViewportData
);
let
renderingContext
=
new
RenderingContext
(
this
.
viewLines
,
this
.
layoutProvider
,
linesViewportData
);
// Render the rest of the parts
for
(
let
i
=
0
,
len
=
viewPartsToRender
.
length
;
i
<
len
;
i
++
)
{
...
...
src/vs/editor/browser/viewLayout/layoutProvider.ts
浏览文件 @
98604a98
...
...
@@ -13,6 +13,7 @@ import { ScrollManager } from 'vs/editor/browser/viewLayout/scrollManager';
import
{
IViewModel
}
from
'
vs/editor/common/viewModel/viewModel
'
;
import
{
ViewLinesViewportData
}
from
'
vs/editor/common/viewLayout/viewLinesViewportData
'
;
import
{
IViewEventBus
}
from
'
vs/editor/common/view/viewContext
'
;
import
{
ILayoutProvider
as
IRenderingLayoutProvider
}
from
'
vs/editor/common/view/renderingContext
'
;
export
interface
IWhitespaceManager
{
/**
...
...
@@ -101,7 +102,7 @@ export interface IVerticalLayoutProvider {
}
export
class
LayoutProvider
extends
ViewEventHandler
implements
IDisposable
,
ILayoutProvider
,
IWhitespaceManager
{
export
class
LayoutProvider
extends
ViewEventHandler
implements
IDisposable
,
ILayoutProvider
,
IWhitespaceManager
,
IRenderingLayoutProvider
{
static
LINES_HORIZONTAL_EXTRA_PX
=
30
;
...
...
src/vs/editor/browser/viewParts/lines/viewLines.ts
浏览文件 @
98604a98
...
...
@@ -16,7 +16,7 @@ import { ViewLine } from 'vs/editor/browser/viewParts/lines/viewLine';
import
{
Configuration
}
from
'
vs/editor/browser/config/configuration
'
;
import
{
ViewContext
}
from
'
vs/editor/common/view/viewContext
'
;
import
{
ViewLinesViewportData
}
from
'
vs/editor/common/viewLayout/viewLinesViewportData
'
;
import
{
VisibleRange
,
LineVisibleRanges
}
from
'
vs/editor/common/view/renderingContext
'
;
import
{
IViewLines
,
VisibleRange
,
LineVisibleRanges
}
from
'
vs/editor/common/view/renderingContext
'
;
import
{
ILayoutProvider
}
from
'
vs/editor/browser/viewLayout/layoutProvider
'
;
import
{
PartFingerprint
,
PartFingerprints
}
from
'
vs/editor/browser/view/viewPart
'
;
...
...
@@ -47,7 +47,7 @@ class LastRenderedData {
}
}
export
class
ViewLines
extends
ViewLayer
<
ViewLine
>
{
export
class
ViewLines
extends
ViewLayer
<
ViewLine
>
implements
IViewLines
{
/**
* Width to extends a line to render the line feed at the end of the line
*/
...
...
src/vs/editor/common/view/renderingContext.ts
浏览文件 @
98604a98
...
...
@@ -8,6 +8,97 @@ import { ViewModelDecoration } from 'vs/editor/common/viewModel/viewModel';
import
{
ViewLinesViewportData
}
from
'
vs/editor/common/viewLayout/viewLinesViewportData
'
;
import
{
Range
}
from
'
vs/editor/common/core/range
'
;
import
{
Position
}
from
'
vs/editor/common/core/position
'
;
import
{
Viewport
}
from
'
vs/editor/common/editorCommon
'
;
export
interface
ILayoutProvider
{
getScrollWidth
():
number
;
getScrollHeight
():
number
;
getCurrentViewport
():
Viewport
;
getScrolledTopFromAbsoluteTop
(
top
:
number
):
number
;
getVerticalOffsetForLineNumber
(
lineNumber
:
number
):
number
;
}
export
interface
IViewLines
{
linesVisibleRangesForRange
(
range
:
Range
,
includeNewLines
:
boolean
):
LineVisibleRanges
[];
visibleRangesForRange2
(
range
:
Range
,
deltaTop
:
number
):
VisibleRange
[];
}
export
class
RenderingContext
implements
IRenderingContext
{
_renderingContextBrand
:
void
;
public
readonly
linesViewportData
:
ViewLinesViewportData
;
public
readonly
scrollWidth
:
number
;
public
readonly
scrollHeight
:
number
;
public
readonly
visibleRange
:
Range
;
public
readonly
bigNumbersDelta
:
number
;
public
readonly
viewportTop
:
number
;
public
readonly
viewportWidth
:
number
;
public
readonly
viewportHeight
:
number
;
public
readonly
viewportLeft
:
number
;
private
readonly
_layoutProvider
:
ILayoutProvider
;
private
readonly
_viewLines
:
IViewLines
;
constructor
(
viewLines
:
IViewLines
,
layoutProvider
:
ILayoutProvider
,
linesViewportData
:
ViewLinesViewportData
)
{
this
.
_viewLines
=
viewLines
;
this
.
_layoutProvider
=
layoutProvider
;
this
.
linesViewportData
=
linesViewportData
;
this
.
scrollWidth
=
this
.
_layoutProvider
.
getScrollWidth
();
this
.
scrollHeight
=
this
.
_layoutProvider
.
getScrollHeight
();
this
.
visibleRange
=
this
.
linesViewportData
.
visibleRange
;
this
.
bigNumbersDelta
=
this
.
linesViewportData
.
bigNumbersDelta
;
const
vInfo
=
this
.
_layoutProvider
.
getCurrentViewport
();
this
.
viewportWidth
=
vInfo
.
width
;
this
.
viewportHeight
=
vInfo
.
height
;
this
.
viewportLeft
=
vInfo
.
left
;
this
.
viewportTop
=
vInfo
.
top
;
}
public
getScrolledTopFromAbsoluteTop
(
absoluteTop
:
number
):
number
{
return
this
.
_layoutProvider
.
getScrolledTopFromAbsoluteTop
(
absoluteTop
);
}
public
getViewportVerticalOffsetForLineNumber
(
lineNumber
:
number
):
number
{
const
verticalOffset
=
this
.
_layoutProvider
.
getVerticalOffsetForLineNumber
(
lineNumber
);
const
scrolledTop
=
this
.
_layoutProvider
.
getScrolledTopFromAbsoluteTop
(
verticalOffset
);
return
scrolledTop
;
}
public
lineIsVisible
(
lineNumber
:
number
):
boolean
{
return
(
this
.
linesViewportData
.
visibleRange
.
startLineNumber
<=
lineNumber
&&
lineNumber
<=
this
.
linesViewportData
.
visibleRange
.
endLineNumber
);
}
public
getDecorationsInViewport
():
ViewModelDecoration
[]
{
return
this
.
linesViewportData
.
getDecorationsInViewport
();
}
public
linesVisibleRangesForRange
(
range
:
Range
,
includeNewLines
:
boolean
):
LineVisibleRanges
[]
{
return
this
.
_viewLines
.
linesVisibleRangesForRange
(
range
,
includeNewLines
);
}
public
visibleRangeForPosition
(
position
:
Position
):
VisibleRange
{
const
deltaTop
=
this
.
linesViewportData
.
visibleRangesDeltaTop
;
const
visibleRanges
=
this
.
_viewLines
.
visibleRangesForRange2
(
new
Range
(
position
.
lineNumber
,
position
.
column
,
position
.
lineNumber
,
position
.
column
),
deltaTop
);
if
(
!
visibleRanges
)
{
return
null
;
}
return
visibleRanges
[
0
];
}
}
export
interface
IRestrictedRenderingContext
{
linesViewportData
:
ViewLinesViewportData
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录