Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
weixin_43355755
engine
提交
ae724f13
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,体验更适合开发者的 AI 搜索 >>
未验证
提交
ae724f13
编写于
4月 29, 2019
作者:
R
reed-at-google
提交者:
GitHub
4月 29, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
colormatrix is now 0...1 (#8772)
* colormatrix is now 0...1 * reformat
上级
48a5ce87
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
17 addition
and
4 deletion
+17
-4
lib/ui/painting/paint.cc
lib/ui/painting/paint.cc
+17
-4
未找到文件。
lib/ui/painting/paint.cc
浏览文件 @
ae724f13
...
...
@@ -52,7 +52,7 @@ constexpr double kStrokeMiterLimitDefault = 4.0;
// A color matrix which inverts colors.
// clang-format off
constexpr
SkScalar
invert_colors
[
20
]
=
{
constexpr
float
invert_colors
[
20
]
=
{
-
1.0
,
0
,
0
,
1.0
,
0
,
0
,
-
1.0
,
0
,
1.0
,
0
,
0
,
0
,
-
1.0
,
1.0
,
0
,
...
...
@@ -72,6 +72,19 @@ enum ColorFilterType {
SRGBToLinearGamma
};
// Flutter still defines the matrix to be biased by 255 in the last column
// (translate). skia is normalized, treating the last column as 0...1, so we
// post-scale here before calling the skia factory.
static
sk_sp
<
SkColorFilter
>
MakeColorMatrixFilter255
(
const
float
array
[
20
])
{
float
tmp
[
20
];
memcpy
(
tmp
,
array
,
sizeof
(
tmp
));
tmp
[
4
]
*=
1.0
f
/
255
;
tmp
[
9
]
*=
1.0
f
/
255
;
tmp
[
14
]
*=
1.0
f
/
255
;
tmp
[
19
]
*=
1.0
f
/
255
;
return
SkColorFilters
::
Matrix
(
tmp
);
}
sk_sp
<
SkColorFilter
>
ExtractColorFilter
(
const
uint32_t
*
uint_data
,
Dart_Handle
*
values
)
{
switch
(
uint_data
[
kColorFilterIndex
])
{
...
...
@@ -92,7 +105,7 @@ sk_sp<SkColorFilter> ExtractColorFilter(const uint32_t* uint_data,
FML_CHECK
(
length
==
20
);
tonic
::
Float32List
decoded
(
matrixHandle
);
return
SkColorFilters
::
MatrixRowMajo
r255
(
decoded
.
data
());
return
MakeColorMatrixFilte
r255
(
decoded
.
data
());
}
return
nullptr
;
}
...
...
@@ -178,11 +191,11 @@ Paint::Paint(Dart_Handle paint_objects, Dart_Handle paint_data) {
sk_sp
<
SkColorFilter
>
color_filter
=
ExtractColorFilter
(
uint_data
,
values
);
if
(
color_filter
)
{
sk_sp
<
SkColorFilter
>
invert_filter
=
SkColorFilters
::
MatrixRowMajo
r255
(
invert_colors
);
MakeColorMatrixFilte
r255
(
invert_colors
);
paint_
.
setColorFilter
(
invert_filter
->
makeComposed
(
color_filter
));
}
}
else
if
(
uint_data
[
kInvertColorIndex
])
{
paint_
.
setColorFilter
(
SkColorFilters
::
MatrixRowMajo
r255
(
invert_colors
));
paint_
.
setColorFilter
(
MakeColorMatrixFilte
r255
(
invert_colors
));
}
else
if
(
uint_data
[
kColorFilterIndex
])
{
sk_sp
<
SkColorFilter
>
color_filter
=
ExtractColorFilter
(
uint_data
,
values
);
if
(
color_filter
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录