Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
weixin_43355755
engine
提交
bb57fb47
E
engine
项目概览
weixin_43355755
/
engine
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
E
engine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
bb57fb47
编写于
8月 21, 2020
作者:
D
David Worsham
提交者:
GitHub
8月 21, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fuchsia: Fix elevation issues (#20681)
上级
0f1b1bab
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
14 addition
and
7 deletion
+14
-7
flow/scene_update_context.cc
flow/scene_update_context.cc
+14
-7
未找到文件。
flow/scene_update_context.cc
浏览文件 @
bb57fb47
...
...
@@ -115,6 +115,7 @@ void SceneUpdateContext::CreateFrame(scenic::EntityNode& entity_node,
SkAlpha
opacity
,
const
SkRect
&
paint_bounds
,
std
::
vector
<
Layer
*>
paint_layers
)
{
// We don't need a shape if the frame is zero size.
if
(
rrect
.
isEmpty
())
return
;
...
...
@@ -122,7 +123,6 @@ void SceneUpdateContext::CreateFrame(scenic::EntityNode& entity_node,
SkRect
shape_bounds
=
rrect
.
getBounds
();
SetEntityNodeClipPlanes
(
entity_node
,
shape_bounds
);
// and possibly for its texture.
// TODO(SCN-137): Need to be able to express the radii as vectors.
scenic
::
ShapeNode
shape_node
(
session_
.
get
());
scenic
::
Rectangle
shape
(
session_
.
get
(),
rrect
.
width
(),
rrect
.
height
());
...
...
@@ -140,7 +140,7 @@ void SceneUpdateContext::CreateFrame(scenic::EntityNode& entity_node,
entity_node
.
AddChild
(
shape_node
);
// Check whether a solid color will suffice.
if
(
paint_layers
.
empty
()
||
shape_bounds
.
isEmpty
()
)
{
if
(
paint_layers
.
empty
())
{
SetMaterialColor
(
material
,
color
,
opacity
);
}
else
{
// The final shape's color is material_color * texture_color. The passed in
...
...
@@ -182,6 +182,9 @@ void SceneUpdateContext::UpdateView(int64_t view_id,
view_holder
->
UpdateScene
(
session_
.
get
(),
top_entity_
->
embedder_node
(),
offset
,
size
,
SkScalarRoundToInt
(
alphaf
()
*
255
),
hit_testable
);
// Assume embedded views are 10 "layers" wide.
next_elevation_
+=
10
*
kScenicZElevationBetweenLayers
;
}
void
SceneUpdateContext
::
CreateView
(
int64_t
view_id
,
...
...
@@ -286,13 +289,17 @@ SceneUpdateContext::Frame::Frame(SceneUpdateContext& context,
opacity_
(
opacity
),
opacity_node_
(
context
.
session_
.
get
()),
paint_bounds_
(
SkRect
::
MakeEmpty
())
{
entity_node
().
SetLabel
(
label
);
entity_node
().
SetTranslation
(
0.
f
,
0.
f
,
context
.
next_elevation_
-
previous_elevation_
);
// Increment elevation trackers before calculating any local elevation.
// |UpdateView| can modify context.next_elevation_, which is why it is
// neccesary to track this addtional state.
context
.
top_elevation_
+=
kScenicZElevationBetweenLayers
;
context
.
next_elevation_
+=
kScenicZElevationBetweenLayers
;
float
local_elevation
=
context
.
next_elevation_
-
previous_elevation_
;
entity_node
().
SetTranslation
(
0.
f
,
0.
f
,
-
local_elevation
);
entity_node
().
SetLabel
(
label
);
entity_node
().
AddChild
(
opacity_node_
);
// Scenic currently lacks an API to enable rendering of alpha channel; alpha
// channels are only rendered if there is a OpacityNode higher in the tree
// with opacity != 1. For now, clamp to a infinitesimally smaller value than
...
...
@@ -301,11 +308,11 @@ SceneUpdateContext::Frame::Frame(SceneUpdateContext& context,
}
SceneUpdateContext
::
Frame
::~
Frame
()
{
context
().
top_elevation_
=
previous_elevation_
;
// Add a part which represents the frame's geometry for clipping purposes
context
().
CreateFrame
(
entity_node
(),
rrect_
,
color_
,
opacity_
,
paint_bounds_
,
std
::
move
(
paint_layers_
));
context
().
top_elevation_
=
previous_elevation_
;
}
void
SceneUpdateContext
::
Frame
::
AddPaintLayer
(
Layer
*
layer
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录