Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
solid_color_contents.cc
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
6
12
13namespace impeller {
14
16
18
22
24 return color_.WithAlpha(color_.alpha * GetOpacityFactor());
25}
26
28 return true;
29}
30
32 return GetColor().IsOpaque();
33}
34
36 const Entity& entity) const {
37 if (GetColor().IsTransparent()) {
38 return std::nullopt;
39 }
40
41 const std::shared_ptr<Geometry>& geometry = GetGeometry();
42 if (geometry == nullptr) {
43 return std::nullopt;
44 }
45 return geometry->GetCoverage(entity.GetTransform());
46};
47
49 const Entity& entity,
50 RenderPass& pass) const {
51 auto capture = entity.GetCapture().CreateChild("SolidColorContents");
53
54 VS::FrameInfo frame_info;
55 frame_info.color = capture.AddColor("Color", GetColor()).Premultiply();
56
57 PipelineBuilderCallback pipeline_callback =
58 [&renderer](ContentContextOptions options) {
59 return renderer.GetSolidFillPipeline(options);
60 };
61 return ColorSourceContents::DrawGeometry<VS>(
62 renderer, entity, pass, pipeline_callback, frame_info,
63 [](RenderPass& pass) {
64 pass.SetCommandLabel("Solid Fill");
65 return true;
66 });
67}
68
69std::unique_ptr<SolidColorContents> SolidColorContents::Make(const Path& path,
70 Color color) {
71 auto contents = std::make_unique<SolidColorContents>();
72 contents->SetGeometry(Geometry::MakeFillPath(path));
73 contents->SetColor(color);
74 return contents;
75}
76
78 const Entity& entity,
79 ISize target_size) const {
80 Rect target_rect = Rect::MakeSize(target_size);
81 return GetGeometry()->CoversArea(entity.GetTransform(), target_rect)
82 ? GetColor()
83 : std::optional<Color>();
84}
85
87 const ColorFilterProc& color_filter_proc) {
88 color_ = color_filter_proc(color_);
89 return true;
90}
91
92} // namespace impeller
const char * options
SkColor4f color
Capture CreateChild(std::string_view label)
Definition capture.h:239
Scalar GetOpacityFactor() const
Get the opacity factor for this color source.
std::function< std::shared_ptr< Pipeline< PipelineDescriptor > >(ContentContextOptions)> PipelineBuilderCallback
const std::shared_ptr< Geometry > & GetGeometry() const
Get the geometry that this contents will use to render.
std::function< Color(Color)> ColorFilterProc
Definition contents.h:38
Capture & GetCapture() const
Definition entity.cc:191
const Matrix & GetTransform() const
Get the global transform matrix for this Entity.
Definition entity.cc:46
static std::shared_ptr< Geometry > MakeFillPath(const Path &path, std::optional< Rect > inner_rect=std::nullopt)
Definition geometry.cc:60
Paths are lightweight objects that describe a collection of linear, quadratic, or cubic segments....
Definition path.h:51
Render passes encode render commands directed as one specific render target into an underlying comman...
Definition render_pass.h:33
virtual void SetCommandLabel(std::string_view label)
The debugging label to use for the command.
bool IsOpaque() const override
Whether this Contents only emits opaque source colors from the fragment stage. This value does not ac...
bool ApplyColorFilter(const ColorFilterProc &color_filter_proc) override
If possible, applies a color filter to this contents inputs on the CPU.
bool Render(const ContentContext &renderer, const Entity &entity, RenderPass &pass) const override
static std::unique_ptr< SolidColorContents > Make(const Path &path, Color color)
std::optional< Color > AsBackgroundColor(const Entity &entity, ISize target_size) const override
Returns a color if this Contents will flood the given target_size with a color. This output color is ...
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.
SolidFillVertexShader VS
constexpr bool IsOpaque() const
Definition color.h:886
Scalar alpha
Definition color.h:143
constexpr Color WithAlpha(Scalar new_alpha) const
Definition color.h:270
static constexpr TRect MakeSize(const TSize< U > &size)
Definition rect.h:146