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 
18 
19  void SetMatrix(Matrix matrix);
20 
21  // |FilterContents|
22  void SetRenderingMode(Entity::RenderingMode rendering_mode) override;
23 
24  void SetSamplerDescriptor(const SamplerDescriptor& desc);
25 
26  // |FilterContents|
27  std::optional<Rect> GetFilterCoverage(
28  const FilterInput::Vector& inputs,
29  const Entity& entity,
30  const Matrix& effect_transform) const override;
31 
32  private:
33  // |FilterContents|
34  std::optional<Entity> RenderFilter(
35  const FilterInput::Vector& input_textures,
36  const ContentContext& renderer,
37  const Entity& entity,
38  const Matrix& effect_transform,
39  const Rect& coverage,
40  const std::optional<Rect>& coverage_hint) const override;
41 
42  // |FilterContents|
43  std::optional<Rect> GetFilterSourceCoverage(
44  const Matrix& effect_transform,
45  const Rect& output_limit) const override;
46 
47  Matrix matrix_;
48  SamplerDescriptor sampler_descriptor_ = {};
50 
52 
53  MatrixFilterContents& operator=(const MatrixFilterContents&) = delete;
54 };
55 
56 } // namespace impeller
57 
58 #endif // FLUTTER_IMPELLER_ENTITY_CONTENTS_FILTERS_MATRIX_FILTER_CONTENTS_H_
std::vector< FilterInput::Ref > Vector
Definition: filter_input.h:33
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...
void SetRenderingMode(Entity::RenderingMode rendering_mode) override
Marks this filter chain as applying in a subpass scenario.
void SetSamplerDescriptor(const SamplerDescriptor &desc)
A 4x4 matrix using column-major storage.
Definition: matrix.h:37