5 #ifndef FLUTTER_IMPELLER_ENTITY_CONTENTS_CONTENTS_H_
6 #define FLUTTER_IMPELLER_ENTITY_CONTENTS_CONTENTS_H_
20 struct ContentContextOptions;
29 const Entity& entity);
94 std::optional<Rect> coverage_limit = std::nullopt,
95 const std::optional<SamplerDescriptor>& sampler_descriptor = std::nullopt,
96 bool msaa_enabled =
true,
97 int32_t mip_count = 1,
98 std::string_view label =
"Snapshot")
const;
127 ISize target_size)
const;
149 std::optional<Rect> coverage_hint_;
150 std::optional<Size> color_source_size_;
virtual bool Render(const ContentContext &renderer, const Entity &entity, RenderPass &pass) const =0
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< 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, std::string_view label="Snapshot") const
Render this contents to a snapshot, respecting the entity's transform, path, clip depth,...
std::optional< Size > GetColorSourceSize() const
Return the color source's intrinsic size, if available.
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 bool IsOpaque(const Matrix &transform) const
Whether this Contents only emits opaque source colors from the fragment stage. This value does not ac...
void SetColorSourceSize(Size size)
std::function< std::optional< Rect >(const Entity &entity)> CoverageProc
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.
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....
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)
A 4x4 matrix using column-major storage.