 |
Flutter Impeller
|
|
Go to the documentation of this file.
5 #ifndef FLUTTER_IMPELLER_ENTITY_CONTENTS_FILTERS_FILTER_CONTENTS_H_
6 #define FLUTTER_IMPELLER_ENTITY_CONTENTS_FILTERS_FILTER_CONTENTS_H_
47 const std::shared_ptr<Geometry>& mask_geometry =
nullptr);
76 std::shared_ptr<Texture> y_texture,
77 std::shared_ptr<Texture> uv_texture,
103 const std::optional<Rect>& coverage_hint)
const;
115 const std::shared_ptr<LazyGlyphAtlas>& lazy_glyph_atlas,
122 std::optional<Rect> coverage_limit = std::nullopt,
123 const std::optional<SamplerDescriptor>& sampler_descriptor = std::nullopt,
124 bool msaa_enabled =
true,
125 int32_t mip_count = 1,
126 const std::string& label =
"Filter Snapshot")
const override;
162 const Rect& output_limit)
const;
199 virtual std::optional<Rect> GetFilterCoverage(
202 const Matrix& effect_transform)
const;
208 virtual std::optional<Rect> GetFilterSourceCoverage(
209 const Matrix& effect_transform,
210 const Rect& output_limit)
const = 0;
213 virtual std::optional<Entity> RenderFilter(
217 const Matrix& effect_transform,
218 const Rect& coverage,
219 const std::optional<Rect>& coverage_hint)
const = 0;
226 std::optional<Rect> GetLocalCoverage(
const Entity& local_entity)
const;
238 #endif // FLUTTER_IMPELLER_ENTITY_CONTENTS_FILTERS_FILTER_CONTENTS_H_
void PopulateGlyphAtlas(const std::shared_ptr< LazyGlyphAtlas > &lazy_glyph_atlas, Scalar scale) override
Add any text data to the specified lazy atlas. The scale parameter must be used again later when draw...
bool IsLeaf() const
Returns true if this filter does not have any FilterInput children.
void SetInputs(FilterInput::Vector inputs)
The input texture sources for this filter. Each input's emitted texture is expected to have premultip...
std::optional< Rect > GetSourceCoverage(const Matrix &effect_transform, const Rect &output_limit) const
Determines the coverage of source pixels that will be needed to produce results for the specified |ou...
void SetEffectTransform(const Matrix &effect_transform)
Sets the transform which gets appended to the effect of this filter. Note that this is in addition to...
Matrix GetTransform(const Matrix &parent_transform) const
@ kNormal
Blurred inside and outside.
bool Render(const ContentContext &renderer, const Entity &entity, RenderPass &pass) const override
For convolution filters, the "radius" is the size of the convolution kernel to use on the local space...
@ kSolid
Solid inside, blurred outside.
virtual bool IsTranslationOnly() const
Returns true if this filter graph doesn't perform any basis transforms to the filtered content....
static std::shared_ptr< FilterContents > MakeDirectionalMorphology(FilterInput::Ref input, Radius radius, Vector2 direction, MorphType morph_type)
In filters that use Gaussian distributions, "sigma" is a size of one standard deviation in terms of t...
static std::shared_ptr< FilterContents > MakeBorderMaskBlur(FilterInput::Ref input, Sigma sigma_x, Sigma sigma_y, BlurStyle blur_style=BlurStyle::kNormal)
@ kInner
Blurred inside, nothing outside.
static const int32_t kBlurFilterRequiredMipCount
static std::shared_ptr< FilterContents > MakeYUVToRGBFilter(std::shared_ptr< Texture > y_texture, std::shared_ptr< Texture > uv_texture, YUVColorSpace yuv_color_space)
Render passes encode render commands directed as one specific render target into an underlying comman...
@ kOuter
Nothing inside, blurred outside.
static std::shared_ptr< FilterContents > MakeMorphology(FilterInput::Ref input, Radius radius_x, Radius radius_y, MorphType morph_type)
std::optional< Snapshot > RenderToSnapshot(const ContentContext &renderer, const Entity &entity, std::optional< Rect > coverage_limit=std::nullopt, const std::optional< SamplerDescriptor > &sampler_descriptor=std::nullopt, bool msaa_enabled=true, int32_t mip_count=1, const std::string &label="Filter Snapshot") const override
Render this contents to a snapshot, respecting the entity's transform, path, clip depth,...
std::optional< Rect > GetCoverage(const Entity &entity) const override
Get the area of the render pass that will be affected when this contents is rendered.
std::optional< Entity > GetEntity(const ContentContext &renderer, const Entity &entity, const std::optional< Rect > &coverage_hint) const
Create an Entity that renders this filter's output.
void SetLeafInputs(const FilterInput::Vector &inputs)
Replaces the set of all leaf FilterContents with a new set of FilterInputs.
static std::shared_ptr< FilterContents > MakeMatrixFilter(FilterInput::Ref input, const Matrix &matrix, const SamplerDescriptor &desc)
virtual Matrix GetLocalTransform(const Matrix &parent_transform) const
virtual void SetRenderingMode(Entity::RenderingMode rendering_mode)
Marks this filter chain as applying in a subpass scenario.
static std::shared_ptr< FilterContents > MakeLocalMatrixFilter(FilterInput::Ref input, const Matrix &matrix)
~FilterContents() override
const FilterContents * AsFilter() const override
Cast to a filter. Returns nullptr if this Contents is not a filter.
A 4x4 matrix using column-major storage.
static std::shared_ptr< FilterContents > MakeGaussianBlur(const FilterInput::Ref &input, Sigma sigma_x, Sigma sigma_y, Entity::TileMode tile_mode=Entity::TileMode::kDecal, BlurStyle mask_blur_style=BlurStyle::kNormal, const std::shared_ptr< Geometry > &mask_geometry=nullptr)