5#ifndef FLUTTER_IMPELLER_ENTITY_CONTENTS_CONTENTS_H_
6#define FLUTTER_IMPELLER_ENTITY_CONTENTS_CONTENTS_H_
12#include "flutter/fml/macros.h"
23struct ContentContextOptions;
32 const Entity& entity);
62 const std::shared_ptr<LazyGlyphAtlas>& lazy_glyph_atlas,
110 const std::optional<Rect>& current_clip_coverage)
const;
121 std::optional<Rect> coverage_limit = std::nullopt,
122 const std::optional<SamplerDescriptor>& sampler_descriptor = std::nullopt,
123 bool msaa_enabled =
true,
124 int32_t mip_count = 1,
125 const std::string& label =
"Snapshot")
const;
128 const std::optional<Rect> clip_coverage)
const;
169 ISize target_size)
const;
197 std::optional<Rect> coverage_hint_;
198 std::optional<Size> color_source_size_;
virtual bool Render(const ContentContext &renderer, const Entity &entity, RenderPass &pass) const =0
virtual bool CanInheritOpacity(const Entity &entity) const
Whether or not this contents can accept the opacity peephole optimization.
virtual std::optional< Color > AsBackgroundColor(const Entity &entity, ISize target_size) const
Returns a color if this Contents will flood the given target_size with a color. This output color is ...
virtual std::optional< Rect > GetCoverage(const Entity &entity) const =0
Get the area of the render pass that will be affected when this contents is rendered.
std::optional< Size > GetColorSourceSize() const
Return the color source's intrinsic size, if available.
virtual void PopulateGlyphAtlas(const std::shared_ptr< LazyGlyphAtlas > &lazy_glyph_atlas, Scalar scale)
Add any text data to the specified lazy atlas. The scale parameter must be used again later when draw...
virtual bool ApplyColorFilter(const ColorFilterProc &color_filter_proc)
If possible, applies a color filter to this contents inputs on the CPU.
const std::optional< Rect > & GetCoverageHint() const
virtual 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="Snapshot") const
Render this contents to a snapshot, respecting the entity's transform, path, clip depth,...
virtual ClipCoverage GetClipCoverage(const Entity &entity, const std::optional< Rect > ¤t_clip_coverage) const
Given the current pass space bounding rectangle of the clip buffer, return the expected clip coverage...
void SetColorSourceSize(Size size)
virtual bool IsOpaque() const
Whether this Contents only emits opaque source colors from the fragment stage. This value does not ac...
virtual bool ShouldRender(const Entity &entity, const std::optional< Rect > clip_coverage) const
std::function< std::optional< Rect >(const Entity &entity)> CoverageProc
virtual void SetInheritedOpacity(Scalar opacity)
Inherit the provided opacity.
static std::shared_ptr< Contents > MakeAnonymous(RenderProc render_proc, CoverageProc coverage_proc)
std::function< Color(Color)> ColorFilterProc
void SetCoverageHint(std::optional< Rect > coverage_hint)
Hint that specifies the coverage area of this Contents that will actually be used during rendering....
virtual const FilterContents * AsFilter() const
Cast to a filter. Returns nullptr if this Contents is not a filter.
std::function< bool(const ContentContext &renderer, const Entity &entity, RenderPass &pass)> RenderProc
Render passes encode render commands directed as one specific render target into an underlying comman...
ContentContextOptions OptionsFromPassAndEntity(const RenderPass &pass, const Entity &entity)
ContentContextOptions OptionsFromPass(const RenderPass &pass)
std::optional< Rect > coverage