Flutter Engine
 
Loading...
Searching...
No Matches
image_filter.cc
Go to the documentation of this file.
1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
6
11
12namespace impeller::interop {
13
14ImageFilter::ImageFilter(std::shared_ptr<flutter::DlImageFilter> filter)
15 : filter_(std::move(filter)) {}
16
18
20 Scalar y_sigma,
21 flutter::DlTileMode tile_mode) {
22 auto filter = flutter::DlBlurImageFilter::Make(x_sigma, y_sigma, tile_mode);
23 if (!filter) {
24 return nullptr;
25 }
26 return Create<ImageFilter>(std::move(filter));
27}
28
30 Scalar y_radius) {
31 auto filter = flutter::DlDilateImageFilter::Make(x_radius, y_radius);
32 if (!filter) {
33 return nullptr;
34 }
35 return Create<ImageFilter>(std::move(filter));
36}
37
39 Scalar y_radius) {
40 auto filter = flutter::DlErodeImageFilter::Make(x_radius, y_radius);
41 if (!filter) {
42 return nullptr;
43 }
44 return Create<ImageFilter>(std::move(filter));
45}
46
48 const Matrix& matrix,
49 flutter::DlImageSampling sampling) {
50 auto filter = flutter::DlMatrixImageFilter::Make(matrix, sampling);
51 if (!filter) {
52 return nullptr;
53 }
54 return Create<ImageFilter>(std::move(filter));
55}
56
58 const Context& context,
59 const FragmentProgram& program,
60 std::vector<std::shared_ptr<flutter::DlColorSource>> samplers,
61 std::shared_ptr<std::vector<uint8_t>> uniform_data) {
62 auto runtime_stage =
63 program.FindRuntimeStage(context.GetContext()->GetRuntimeStageBackend());
64 if (!runtime_stage) {
65 VALIDATION_LOG << "Could not find runtime stage for backend.";
66 return nullptr;
67 }
68 auto runtime_effect =
69 flutter::DlRuntimeEffectImpeller::Make(std::move(runtime_stage));
70 if (!runtime_effect) {
71 VALIDATION_LOG << "Could not make runtime effect.";
72 return nullptr;
73 }
74 auto filter =
75 flutter::DlRuntimeEffectImageFilter::Make(std::move(runtime_effect), //
76 std::move(samplers), //
77 std::move(uniform_data) //
78 );
79 if (!filter) {
80 VALIDATION_LOG << "Could not create runtime effect image filter.";
81 return nullptr;
82 }
83 return Create<ImageFilter>(std::move(filter));
84}
85
87 const ImageFilter& inner) {
89 inner.GetImageFilter());
90 if (!filter) {
91 return nullptr;
92 }
93 return Create<ImageFilter>(std::move(filter));
94}
95
96const std::shared_ptr<flutter::DlImageFilter>& ImageFilter::GetImageFilter()
97 const {
98 return filter_;
99}
100
101} // namespace impeller::interop
static std::shared_ptr< DlImageFilter > Make(DlScalar sigma_x, DlScalar sigma_y, DlTileMode tile_mode)
static std::shared_ptr< DlImageFilter > Make(const std::shared_ptr< DlImageFilter > &outer, const std::shared_ptr< DlImageFilter > &inner)
static std::shared_ptr< DlImageFilter > Make(DlScalar radius_x, DlScalar radius_y)
static std::shared_ptr< DlImageFilter > Make(DlScalar radius_x, DlScalar radius_y)
static std::shared_ptr< DlImageFilter > Make(const DlMatrix &matrix, DlImageSampling sampling)
static std::shared_ptr< DlImageFilter > Make(sk_sp< DlRuntimeEffect > runtime_effect, std::vector< std::shared_ptr< DlColorSource > > samplers, std::shared_ptr< std::vector< uint8_t > > uniform_data)
static sk_sp< DlRuntimeEffect > Make(std::shared_ptr< impeller::RuntimeStage > runtime_stage)
std::shared_ptr< impeller::Context > GetContext() const
Definition context.cc:20
std::shared_ptr< RuntimeStage > FindRuntimeStage(RuntimeStageBackend backend) const
static ScopedObject< ImageFilter > MakeDilate(Scalar x_radius, Scalar y_radius)
ImageFilter(std::shared_ptr< flutter::DlImageFilter > filter)
static ScopedObject< ImageFilter > MakeErode(Scalar x_radius, Scalar y_radius)
const std::shared_ptr< flutter::DlImageFilter > & GetImageFilter() const
static ScopedObject< ImageFilter > MakeCompose(const ImageFilter &outer, const ImageFilter &inner)
static ScopedObject< ImageFilter > MakeFragmentProgram(const Context &context, const FragmentProgram &program, std::vector< std::shared_ptr< flutter::DlColorSource > > samplers, std::shared_ptr< std::vector< uint8_t > > uniform_data)
static ScopedObject< ImageFilter > MakeBlur(Scalar x_sigma, Scalar y_sigma, flutter::DlTileMode tile_mode)
static ScopedObject< ImageFilter > MakeMatrix(const Matrix &matrix, flutter::DlImageSampling sampling)
float Scalar
Definition scalar.h:19
Definition ref_ptr.h:261
A 4x4 matrix using column-major storage.
Definition matrix.h:37
#define VALIDATION_LOG
Definition validation.h:91