Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
sxychenjing
engine
提交
56885f79
E
engine
项目概览
sxychenjing
/
engine
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
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,发现更多精彩内容 >>
未验证
提交
56885f79
编写于
7月 10, 2019
作者:
D
Dan Field
提交者:
GitHub
7月 10, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Let pushColorFilter accept all types of ColorFilters (#9641)
上级
6dccb21e
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
53 addition
and
21 deletion
+53
-21
flow/layers/color_filter_layer.cc
flow/layers/color_filter_layer.cc
+3
-3
flow/layers/color_filter_layer.h
flow/layers/color_filter_layer.h
+4
-3
lib/stub_ui/lib/src/engine/compositor/layer_scene_builder.dart
...tub_ui/lib/src/engine/compositor/layer_scene_builder.dart
+1
-1
lib/stub_ui/lib/src/ui/compositing.dart
lib/stub_ui/lib/src/ui/compositing.dart
+1
-1
lib/ui/compositing.dart
lib/ui/compositing.dart
+4
-3
lib/ui/compositing/scene_builder.cc
lib/ui/compositing/scene_builder.cc
+4
-4
lib/ui/compositing/scene_builder.h
lib/ui/compositing/scene_builder.h
+2
-1
lib/ui/painting.dart
lib/ui/painting.dart
+2
-2
testing/dart/compositing_test.dart
testing/dart/compositing_test.dart
+32
-3
未找到文件。
flow/layers/color_filter_layer.cc
浏览文件 @
56885f79
...
...
@@ -6,8 +6,8 @@
namespace
flutter
{
ColorFilterLayer
::
ColorFilterLayer
(
SkColor
color
,
SkBlendMode
blend_mode
)
:
color_
(
color
),
blend_mode_
(
blend_mode
)
{}
ColorFilterLayer
::
ColorFilterLayer
(
sk_sp
<
SkColorFilter
>
filter
)
:
filter_
(
std
::
move
(
filter
)
)
{}
ColorFilterLayer
::~
ColorFilterLayer
()
=
default
;
...
...
@@ -16,7 +16,7 @@ void ColorFilterLayer::Paint(PaintContext& context) const {
FML_DCHECK
(
needs_painting
());
SkPaint
paint
;
paint
.
setColorFilter
(
SkColorFilters
::
Blend
(
color_
,
blend_mode_
)
);
paint
.
setColorFilter
(
filter_
);
Layer
::
AutoSaveLayer
save
=
Layer
::
AutoSaveLayer
::
Create
(
context
,
paint_bounds
(),
&
paint
);
...
...
flow/layers/color_filter_layer.h
浏览文件 @
56885f79
...
...
@@ -7,18 +7,19 @@
#include "flutter/flow/layers/container_layer.h"
#include "third_party/skia/include/core/SkColorFilter.h"
namespace
flutter
{
class
ColorFilterLayer
:
public
ContainerLayer
{
public:
ColorFilterLayer
(
SkColor
color
,
SkBlendMode
blend_mode
);
ColorFilterLayer
(
sk_sp
<
SkColorFilter
>
filter
);
~
ColorFilterLayer
()
override
;
void
Paint
(
PaintContext
&
context
)
const
override
;
private:
SkColor
color_
;
SkBlendMode
blend_mode_
;
sk_sp
<
SkColorFilter
>
filter_
;
FML_DISALLOW_COPY_AND_ASSIGN
(
ColorFilterLayer
);
};
...
...
lib/stub_ui/lib/src/engine/compositor/layer_scene_builder.dart
浏览文件 @
56885f79
...
...
@@ -116,7 +116,7 @@ class LayerSceneBuilder implements ui.SceneBuilder {
}
@override
ui
.
ColorFilterEngineLayer
pushColorFilter
(
ui
.
Color
color
,
ui
.
BlendMode
blendMode
,
ui
.
ColorFilterEngineLayer
pushColorFilter
(
ui
.
Color
Filter
filter
,
{
ui
.
ColorFilterEngineLayer
oldLayer
})
{
throw
new
UnimplementedError
();
}
...
...
lib/stub_ui/lib/src/ui/compositing.dart
浏览文件 @
56885f79
...
...
@@ -257,7 +257,7 @@ class SceneBuilder {
/// blend mode.
///
/// See [pop] for details about the operation stack.
ColorFilterEngineLayer
pushColorFilter
(
Color
color
,
BlendMode
blendMode
,
{
ColorFilterEngineLayer
oldLayer
})
{
ColorFilterEngineLayer
pushColorFilter
(
Color
Filter
filter
,
{
ColorFilterEngineLayer
oldLayer
})
{
throw
new
UnimplementedError
();
}
...
...
lib/ui/compositing.dart
浏览文件 @
56885f79
...
...
@@ -387,13 +387,14 @@ class SceneBuilder extends NativeFieldWrapperClass2 {
/// {@macro dart.ui.sceneBuilder.oldLayerVsRetained}
///
/// See [pop] for details about the operation stack.
ColorFilterEngineLayer
pushColorFilter
(
Color
color
,
BlendMode
blendMode
,
{
ColorFilterEngineLayer
oldLayer
})
{
ColorFilterEngineLayer
pushColorFilter
(
ColorFilter
filter
,
{
ColorFilterEngineLayer
oldLayer
})
{
assert
(
filter
!=
null
);
assert
(
_debugCheckCanBeUsedAsOldLayer
(
oldLayer
,
'pushColorFilter'
));
final
ColorFilterEngineLayer
layer
=
ColorFilterEngineLayer
.
_
(
_pushColorFilter
(
color
.
value
,
blendMode
.
index
));
final
ColorFilterEngineLayer
layer
=
ColorFilterEngineLayer
.
_
(
_pushColorFilter
(
filter
.
_toNativeColorFilter
()
));
assert
(
_debugPushLayer
(
layer
));
return
layer
;
}
EngineLayer
_pushColorFilter
(
int
color
,
int
blendMode
)
native
'SceneBuilder_pushColorFilter'
;
EngineLayer
_pushColorFilter
(
_ColorFilter
filter
)
native
'SceneBuilder_pushColorFilter'
;
/// Pushes a backdrop filter operation onto the operation stack.
///
...
...
lib/ui/compositing/scene_builder.cc
浏览文件 @
56885f79
...
...
@@ -141,10 +141,10 @@ fml::RefPtr<EngineLayer> SceneBuilder::pushOpacity(int alpha,
return
EngineLayer
::
MakeRetained
(
layer
);
}
fml
::
RefPtr
<
EngineLayer
>
SceneBuilder
::
pushColorFilter
(
int
color
,
int
blendMode
)
{
auto
layer
=
std
::
make_shared
<
flutter
::
ColorFilterLayer
>
(
st
atic_cast
<
SkColor
>
(
color
),
static_cast
<
SkBlendMode
>
(
blendMode
));
fml
::
RefPtr
<
EngineLayer
>
SceneBuilder
::
pushColorFilter
(
const
ColorFilter
*
color_filter
)
{
auto
layer
=
st
d
::
make_shared
<
flutter
::
ColorFilterLayer
>
(
color_filter
->
filter
(
));
PushLayer
(
layer
);
return
EngineLayer
::
MakeRetained
(
layer
);
}
...
...
lib/ui/compositing/scene_builder.h
浏览文件 @
56885f79
...
...
@@ -12,6 +12,7 @@
#include "flutter/lib/ui/compositing/scene.h"
#include "flutter/lib/ui/dart_wrapper.h"
#include "flutter/lib/ui/painting/color_filter.h"
#include "flutter/lib/ui/painting/engine_layer.h"
#include "flutter/lib/ui/painting/image_filter.h"
#include "flutter/lib/ui/painting/path.h"
...
...
@@ -48,7 +49,7 @@ class SceneBuilder : public RefCountedDartWrappable<SceneBuilder> {
fml
::
RefPtr
<
EngineLayer
>
pushClipPath
(
const
CanvasPath
*
path
,
int
clipBehavior
);
fml
::
RefPtr
<
EngineLayer
>
pushOpacity
(
int
alpha
,
double
dx
=
0
,
double
dy
=
0
);
fml
::
RefPtr
<
EngineLayer
>
pushColorFilter
(
int
color
,
int
blendMode
);
fml
::
RefPtr
<
EngineLayer
>
pushColorFilter
(
const
ColorFilter
*
color_filter
);
fml
::
RefPtr
<
EngineLayer
>
pushBackdropFilter
(
ImageFilter
*
filter
);
fml
::
RefPtr
<
EngineLayer
>
pushShaderMask
(
Shader
*
shader
,
double
maskRectLeft
,
...
...
lib/ui/painting.dart
浏览文件 @
56885f79
...
...
@@ -2500,8 +2500,8 @@ class ColorFilter {
/// matrix is in row-major order and the translation column is specified in
/// unnormalized, 0...255, space.
const
ColorFilter
.
matrix
(
List
<
double
>
matrix
)
:
assert
(
matrix
!=
null
),
assert
(
matrix
.
length
==
20
),
:
assert
(
matrix
!=
null
,
'Color Matrix argument was null.'
),
assert
(
matrix
.
length
==
20
,
'Color Matrix must have 20 entries.'
),
_color
=
null
,
_blendMode
=
null
,
_matrix
=
matrix
,
...
...
testing/dart/compositing_test.dart
浏览文件 @
56885f79
...
...
@@ -273,9 +273,6 @@ void main() {
testNoSharing
((
SceneBuilder
builder
,
EngineLayer
oldLayer
)
{
return
builder
.
pushOpacity
(
100
,
oldLayer:
oldLayer
);
});
testNoSharing
((
SceneBuilder
builder
,
EngineLayer
oldLayer
)
{
return
builder
.
pushColorFilter
(
const
Color
.
fromARGB
(
0
,
0
,
0
,
0
),
BlendMode
.
color
,
oldLayer:
oldLayer
);
});
testNoSharing
((
SceneBuilder
builder
,
EngineLayer
oldLayer
)
{
return
builder
.
pushBackdropFilter
(
ImageFilter
.
blur
(),
oldLayer:
oldLayer
);
});
...
...
@@ -294,6 +291,38 @@ void main() {
testNoSharing
((
SceneBuilder
builder
,
EngineLayer
oldLayer
)
{
return
builder
.
pushPhysicalShape
(
path:
Path
(),
color:
const
Color
.
fromARGB
(
0
,
0
,
0
,
0
),
oldLayer:
oldLayer
);
});
testNoSharing
((
SceneBuilder
builder
,
EngineLayer
oldLayer
)
{
return
builder
.
pushColorFilter
(
const
ColorFilter
.
mode
(
Color
.
fromARGB
(
0
,
0
,
0
,
0
),
BlendMode
.
color
,
),
oldLayer:
oldLayer
,
);
});
testNoSharing
((
SceneBuilder
builder
,
EngineLayer
oldLayer
)
{
return
builder
.
pushColorFilter
(
const
ColorFilter
.
matrix
(<
double
>[
1
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
]),
oldLayer:
oldLayer
,
);
});
testNoSharing
((
SceneBuilder
builder
,
EngineLayer
oldLayer
)
{
return
builder
.
pushColorFilter
(
const
ColorFilter
.
linearToSrgbGamma
(),
oldLayer:
oldLayer
,
);
});
testNoSharing
((
SceneBuilder
builder
,
EngineLayer
oldLayer
)
{
return
builder
.
pushColorFilter
(
const
ColorFilter
.
srgbToLinearGamma
(),
oldLayer:
oldLayer
,
);
});
});
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录