Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
weixin_43355755
engine
提交
14f6c6f4
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,发现更多精彩内容 >>
未验证
提交
14f6c6f4
编写于
6月 01, 2021
作者:
F
Ferhat
提交者:
GitHub
6月 01, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix gradient stop out of range error (#26518)
上级
be28622b
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
38 addition
and
1 deletion
+38
-1
lib/web_ui/lib/src/engine/html/shaders/shader.dart
lib/web_ui/lib/src/engine/html/shaders/shader.dart
+2
-1
lib/web_ui/test/golden_tests/engine/gradient_golden_test.dart
...web_ui/test/golden_tests/engine/gradient_golden_test.dart
+36
-0
未找到文件。
lib/web_ui/lib/src/engine/html/shaders/shader.dart
浏览文件 @
14f6c6f4
...
...
@@ -387,8 +387,9 @@ void _addColorStopsToCanvasGradient(html.CanvasGradient gradient,
gradient
.
addColorStop
(
1
-
offset
,
colorToCssString
(
colors
[
1
])!);
}
else
{
for
(
int
i
=
0
;
i
<
colors
.
length
;
i
++)
{
final
double
colorStop
=
colorStops
[
i
].
clamp
(
0.0
,
1.0
);
gradient
.
addColorStop
(
colorStop
s
[
i
]
*
scale
+
offset
,
colorToCssString
(
colors
[
i
])!);
colorStop
*
scale
+
offset
,
colorToCssString
(
colors
[
i
])!);
}
}
if
(
isDecal
)
{
...
...
lib/web_ui/test/golden_tests/engine/gradient_golden_test.dart
浏览文件 @
14f6c6f4
...
...
@@ -345,6 +345,42 @@ void testMain() async {
await
_checkScreenshot
(
canvas
,
'linear_gradient_rect_shifted'
);
});
/// Regression test for https://github.com/flutter/flutter/issues/82748.
test
(
'Paints gradient with gradient stop outside range'
,
()
async
{
final
RecordingCanvas
canvas
=
RecordingCanvas
(
const
Rect
.
fromLTRB
(
0
,
0
,
400
,
300
));
canvas
.
save
();
final
Paint
borderPaint
=
Paint
()
..
style
=
PaintingStyle
.
stroke
..
strokeWidth
=
1
..
color
=
Color
(
0xFF000000
);
List
<
Color
>
colors
=
<
Color
>[
Color
(
0xFF000000
),
Color
(
0xFFFF3C38
)];
List
<
double
>
stops
=
<
double
>[
0.0
,
10.0
];
EngineGradient
linearGradient
=
GradientLinear
(
Offset
(
50
,
50
),
Offset
(
200
,
130
),
colors
,
stops
,
TileMode
.
clamp
,
Matrix4
.
identity
().
storage
);
const
double
kBoxWidth
=
150
;
const
double
kBoxHeight
=
80
;
// Gradient with default center.
Rect
rectBounds
=
Rect
.
fromLTWH
(
10
,
20
,
kBoxWidth
,
kBoxHeight
);
canvas
.
drawRect
(
rectBounds
,
Paint
()..
shader
=
engineLinearGradientToShader
(
linearGradient
,
rectBounds
));
canvas
.
drawRect
(
rectBounds
,
borderPaint
);
canvas
.
restore
();
final
EngineCanvas
engineCanvas
=
BitmapCanvas
(
screenRect
,
RenderStrategy
());
canvas
.
endRecording
();
canvas
.
apply
(
engineCanvas
,
screenRect
);
});
test
(
'Paints clamped, rotated and shifted linear gradient'
,
()
async
{
final
RecordingCanvas
canvas
=
RecordingCanvas
(
const
Rect
.
fromLTRB
(
0
,
0
,
400
,
300
));
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录