Flutter Impeller
matrix_filter_contents.h
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 
5 #ifndef FLUTTER_IMPELLER_ENTITY_CONTENTS_FILTERS_MATRIX_FILTER_CONTENTS_H_
6 #define FLUTTER_IMPELLER_ENTITY_CONTENTS_FILTERS_MATRIX_FILTER_CONTENTS_H_
7 
10 
11 namespace impeller {
12 
13 class MatrixFilterContents final : public FilterContents {
14  public:
16 
17  ~MatrixFilterContents() override;
18 
19  void SetMatrix(Matrix matrix);
20 
21  // |FilterContents|
22  void SetRenderingMode(Entity::RenderingMode rendering_mode) override;
23 
24  // |FilterContents|
25  bool IsTranslationOnly() const override;
26 
28 
29  // |FilterContents|
30  std::optional<Rect> GetFilterCoverage(
31  const FilterInput::Vector& inputs,
32  const Entity& entity,
33  const Matrix& effect_transform) const override;
34 
35  private:
36  // |FilterContents|
37  std::optional<Entity> RenderFilter(
38  const FilterInput::Vector& input_textures,
39  const ContentContext& renderer,
40  const Entity& entity,
41  const Matrix& effect_transform,
42  const Rect& coverage,
43  const std::optional<Rect>& coverage_hint) const override;
44 
45  // |FilterContents|
46  std::optional<Rect> GetFilterSourceCoverage(
47  const Matrix& effect_transform,
48  const Rect& output_limit) const override;
49 
50  Matrix matrix_;
51  SamplerDescriptor sampler_descriptor_ = {};
53 
55 
56  MatrixFilterContents& operator=(const MatrixFilterContents&) = delete;
57 };
58 
59 } // namespace impeller
60 
61 #endif // FLUTTER_IMPELLER_ENTITY_CONTENTS_FILTERS_MATRIX_FILTER_CONTENTS_H_
impeller::MatrixFilterContents::SetRenderingMode
void SetRenderingMode(Entity::RenderingMode rendering_mode) override
Marks this filter chain as applying in a subpass scenario.
Definition: matrix_filter_contents.cc:17
impeller::MatrixFilterContents::SetMatrix
void SetMatrix(Matrix matrix)
Definition: matrix_filter_contents.cc:13
impeller::MatrixFilterContents
Definition: matrix_filter_contents.h:13
impeller::SamplerDescriptor
Definition: sampler_descriptor.h:15
impeller::Entity
Definition: entity.h:21
impeller::MatrixFilterContents::~MatrixFilterContents
~MatrixFilterContents() override
filter_contents.h
impeller::Entity::RenderingMode::kDirect
@ kDirect
filter_input.h
impeller::MatrixFilterContents::MatrixFilterContents
MatrixFilterContents()
impeller::Entity::RenderingMode
RenderingMode
Definition: entity.h:28
impeller::MatrixFilterContents::GetFilterCoverage
std::optional< Rect > GetFilterCoverage(const FilterInput::Vector &inputs, const Entity &entity, const Matrix &effect_transform) const override
Internal utility method for |GetLocalCoverage| that computes the output coverage of this filter acros...
Definition: matrix_filter_contents.cc:87
impeller::FilterInput::Vector
std::vector< FilterInput::Ref > Vector
Definition: filter_input.h:33
impeller::MatrixFilterContents::IsTranslationOnly
bool IsTranslationOnly() const override
Returns true if this filter graph doesn't perform any basis transforms to the filtered content....
Definition: matrix_filter_contents.cc:23
impeller
Definition: aiks_blur_unittests.cc:20
impeller::MatrixFilterContents::SetSamplerDescriptor
void SetSamplerDescriptor(SamplerDescriptor desc)
Definition: matrix_filter_contents.cc:27
impeller::ContentContext
Definition: content_context.h:392
impeller::TRect< Scalar >
impeller::Matrix
A 4x4 matrix using column-major storage.
Definition: matrix.h:37
impeller::FilterContents
Definition: filter_contents.h:22