Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
sxychenjing
engine
提交
6ca2f8e7
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,发现更多精彩内容 >>
提交
6ca2f8e7
编写于
2月 09, 2017
作者:
J
Jason Simmons
提交者:
GitHub
2月 09, 2017
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Export the Skia ShadowMaskFilter API (#3401)
See
https://github.com/flutter/flutter/issues/6807
上级
44eaa416
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
76 addition
and
7 deletion
+76
-7
lib/ui/painting.dart
lib/ui/painting.dart
+42
-2
lib/ui/painting/mask_filter.cc
lib/ui/painting/mask_filter.cc
+25
-4
lib/ui/painting/mask_filter.h
lib/ui/painting/mask_filter.h
+9
-1
未找到文件。
lib/ui/painting.dart
浏览文件 @
6ca2f8e7
...
@@ -861,9 +861,49 @@ class MaskFilter extends NativeFieldWrapperClass2 {
...
@@ -861,9 +861,49 @@ class MaskFilter extends NativeFieldWrapperClass2 {
///
///
/// A blur is an expensive operation and should therefore be used sparingly.
/// A blur is an expensive operation and should therefore be used sparingly.
MaskFilter
.
blur
(
BlurStyle
style
,
double
sigma
)
{
MaskFilter
.
blur
(
BlurStyle
style
,
double
sigma
)
{
_constructor
(
style
.
index
,
sigma
);
_constructor
Blur
(
style
.
index
,
sigma
);
}
}
void
_constructor
(
int
style
,
double
sigma
)
native
"MaskFilter_constructor"
;
void
_constructorBlur
(
int
style
,
double
sigma
)
native
"MaskFilter_constructorBlur"
;
/// Creates a mask filter that implements a pair of shadows for an occluding
/// object - one representing ambient occlusion, and one representing a
/// displaced shadow from a point light.
///
/// `occluderHeight`: Height of occluding object off of ground plane.
///
/// `lightPos`: Position of the light applied to this object.
///
/// `lightRadius`: Radius of the light (light is assumed to be spherical).
///
/// `ambientAlpha`: Base opacity of the ambient occlusion shadow.
///
/// `spotAlpha`: Base opacity of the displaced spot shadow.
MaskFilter
.
shadow
({
double
occluderHeight:
0.0
,
double
lightPosX:
0.0
,
double
lightPosY:
0.0
,
double
lightPosZ:
0.0
,
double
lightRadius:
0.0
,
double
ambientAlpha:
0.0
,
double
spotAlpha:
0.0
,
})
{
if
(!(
occluderHeight
>
0.0
&&
lightPosZ
>
occluderHeight
&&
lightRadius
>
0.0
&&
ambientAlpha
>=
0.0
&&
spotAlpha
>=
0.0
))
throw
new
ArgumentError
(
"Invalid shadow mask filter parameters"
);
_constructorShadow
(
occluderHeight
,
lightPosX
,
lightPosY
,
lightPosZ
,
lightRadius
,
ambientAlpha
,
spotAlpha
);
}
void
_constructorShadow
(
double
occluderHeight
,
double
lightPosX
,
double
lightPosY
,
double
lightPosZ
,
double
lightRadius
,
double
ambientAlpha
,
double
spotAlpha
)
native
"MaskFilter_constructorShadow"
;
}
}
/// A description of a color filter to apply when drawing a shape or compositing
/// A description of a color filter to apply when drawing a shape or compositing
...
...
lib/ui/painting/mask_filter.cc
浏览文件 @
6ca2f8e7
...
@@ -11,26 +11,47 @@
...
@@ -11,26 +11,47 @@
#include "lib/tonic/converter/dart_converter.h"
#include "lib/tonic/converter/dart_converter.h"
#include "lib/tonic/dart_library_natives.h"
#include "lib/tonic/dart_library_natives.h"
#include "third_party/skia/include/effects/SkBlurMaskFilter.h"
#include "third_party/skia/include/effects/SkBlurMaskFilter.h"
#include "third_party/skia/include/effects/SkShadowMaskFilter.h"
namespace
blink
{
namespace
blink
{
static
void
MaskFilter_constructor
(
Dart_NativeArguments
args
)
{
static
void
MaskFilter_constructorBlur
(
Dart_NativeArguments
args
)
{
DartCallConstructor
(
&
MaskFilter
::
Create
,
args
);
DartCallConstructor
(
&
MaskFilter
::
CreateBlur
,
args
);
}
static
void
MaskFilter_constructorShadow
(
Dart_NativeArguments
args
)
{
DartCallConstructor
(
&
MaskFilter
::
CreateShadow
,
args
);
}
}
IMPLEMENT_WRAPPERTYPEINFO
(
ui
,
MaskFilter
);
IMPLEMENT_WRAPPERTYPEINFO
(
ui
,
MaskFilter
);
void
MaskFilter
::
RegisterNatives
(
tonic
::
DartLibraryNatives
*
natives
)
{
void
MaskFilter
::
RegisterNatives
(
tonic
::
DartLibraryNatives
*
natives
)
{
natives
->
Register
({
natives
->
Register
({
{
"MaskFilter_constructor"
,
MaskFilter_constructor
,
3
,
true
},
{
"MaskFilter_constructorBlur"
,
MaskFilter_constructorBlur
,
3
,
true
},
{
"MaskFilter_constructorShadow"
,
MaskFilter_constructorShadow
,
8
,
true
},
});
});
}
}
ftl
::
RefPtr
<
MaskFilter
>
MaskFilter
::
Create
(
unsigned
style
,
double
sigma
)
{
ftl
::
RefPtr
<
MaskFilter
>
MaskFilter
::
Create
Blur
(
unsigned
style
,
double
sigma
)
{
return
ftl
::
MakeRefCounted
<
MaskFilter
>
(
return
ftl
::
MakeRefCounted
<
MaskFilter
>
(
SkBlurMaskFilter
::
Make
(
static_cast
<
SkBlurStyle
>
(
style
),
sigma
));
SkBlurMaskFilter
::
Make
(
static_cast
<
SkBlurStyle
>
(
style
),
sigma
));
}
}
ftl
::
RefPtr
<
MaskFilter
>
MaskFilter
::
CreateShadow
(
double
occluderHeight
,
double
lightPosX
,
double
lightPosY
,
double
lightPosZ
,
double
lightRadius
,
double
ambientAlpha
,
double
spotAlpha
)
{
return
ftl
::
MakeRefCounted
<
MaskFilter
>
(
SkShadowMaskFilter
::
Make
(
occluderHeight
,
SkPoint3
::
Make
(
lightPosX
,
lightPosY
,
lightPosZ
),
lightRadius
,
ambientAlpha
,
spotAlpha
));
}
MaskFilter
::
MaskFilter
(
sk_sp
<
SkMaskFilter
>
filter
)
MaskFilter
::
MaskFilter
(
sk_sp
<
SkMaskFilter
>
filter
)
:
filter_
(
std
::
move
(
filter
))
{}
:
filter_
(
std
::
move
(
filter
))
{}
...
...
lib/ui/painting/mask_filter.h
浏览文件 @
6ca2f8e7
...
@@ -23,7 +23,15 @@ class MaskFilter : public ftl::RefCountedThreadSafe<MaskFilter>,
...
@@ -23,7 +23,15 @@ class MaskFilter : public ftl::RefCountedThreadSafe<MaskFilter>,
public:
public:
~
MaskFilter
()
override
;
~
MaskFilter
()
override
;
static
ftl
::
RefPtr
<
MaskFilter
>
Create
(
unsigned
style
,
double
sigma
);
static
ftl
::
RefPtr
<
MaskFilter
>
CreateBlur
(
unsigned
style
,
double
sigma
);
static
ftl
::
RefPtr
<
MaskFilter
>
CreateShadow
(
double
occluderHeight
,
double
lightPosX
,
double
lightPosY
,
double
lightPosZ
,
double
lightRadius
,
double
ambientAlpha
,
double
spotAlpha
);
const
sk_sp
<
SkMaskFilter
>&
filter
()
{
return
filter_
;
}
const
sk_sp
<
SkMaskFilter
>&
filter
()
{
return
filter_
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录