Flutter Impeller
framebuffer_blend_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_FRAMEBUFFER_BLEND_CONTENTS_H_
6 #define FLUTTER_IMPELLER_ENTITY_CONTENTS_FRAMEBUFFER_BLEND_CONTENTS_H_
7 
8 #include <memory>
9 
11 #include "impeller/entity/entity.h"
12 
13 namespace impeller {
14 
15 enum class BlendSelectValues {
16  kScreen = 0,
17  kOverlay,
18  kDarken,
19  kLighten,
21  kColorBurn,
22  kHardLight,
23  kSoftLight,
25  kExclusion,
26  kMultiply,
27  kHue,
29  kColor,
31 };
32 
34  public:
36 
38 
39  const Geometry* GetGeometry() const override;
40 
41  void SetBlendMode(BlendMode blend_mode);
42 
43  void SetChildContents(std::shared_ptr<Contents> child_contents);
44 
45  private:
46  // |Contents|
47  std::optional<Rect> GetCoverage(const Entity& entity) const override;
48 
49  // |Contents|
50  bool Render(const ContentContext& renderer,
51  const Entity& entity,
52  RenderPass& pass) const override;
53 
54  BlendMode blend_mode_;
55  std::shared_ptr<Contents> child_contents_;
56 
58 
59  FramebufferBlendContents& operator=(const FramebufferBlendContents&) = delete;
60 };
61 
62 } // namespace impeller
63 
64 #endif // FLUTTER_IMPELLER_ENTITY_CONTENTS_FRAMEBUFFER_BLEND_CONTENTS_H_
void SetChildContents(std::shared_ptr< Contents > child_contents)
const Geometry * GetGeometry() const override
Get the geometry that this contents will use to render.
Render passes encode render commands directed as one specific render target into an underlying comman...
Definition: render_pass.h:30
BlendMode
Definition: color.h:58