| 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
10 #include "impeller/entity/contents/color_source_contents.h"
11 #include "impeller/entity/entity.h"
12
13 namespace impeller {
14
15 enum class BlendSelectValues {
16 kScreen = 0,
17 kOverlay,
18 kDarken,
19 kLighten,
20 kColorDodge,
21 kColorBurn,
22 kHardLight,
23 kSoftLight,
24 kDifference,
25 kExclusion,
26 kMultiply,
27 kHue,
28 kSaturation,
29 kColor,
30 kLuminosity,
31 };
32
33 class FramebufferBlendContents final : public ColorSourceContents {
34 public:
35 FramebufferBlendContents();
36
37 ~FramebufferBlendContents() override;
38
39 void SetBlendMode(BlendMode blend_mode);
40
41 void SetChildContents(std::shared_ptr<Contents> child_contents);
42
43 private:
44 // |Contents|
45 std::optional<Rect> GetCoverage(const Entity& entity) const override;
46
47 // |Contents|
48 bool Render(const ContentContext& renderer,
49 const Entity& entity,
50 RenderPass& pass) const override;
51
52 BlendMode blend_mode_;
53 std::shared_ptr<Contents> child_contents_;
54
55 FramebufferBlendContents(const FramebufferBlendContents&) = delete;
56
57 FramebufferBlendContents& operator=(const FramebufferBlendContents&) = delete;
58 };
59
60 } // namespace impeller
61
62 #endif // FLUTTER_IMPELLER_ENTITY_CONTENTS_FRAMEBUFFER_BLEND_CONTENTS_H_
impeller::ColorSourceContents
Definition: color_source_contents.h:38
impeller::ContentContext
Definition: content_context.h:122
impeller::Entity
Definition: entity.h:26
impeller::FramebufferBlendContents
Definition: framebuffer_blend_contents.h:33
impeller::FramebufferBlendContents::SetChildContents
void SetChildContents(std::shared_ptr< Contents > child_contents)
Definition: framebuffer_blend_contents.cc:20
impeller::FramebufferBlendContents::~FramebufferBlendContents
~FramebufferBlendContents() override
impeller::FramebufferBlendContents::SetBlendMode
void SetBlendMode(BlendMode blend_mode)
Definition: framebuffer_blend_contents.cc:16
impeller::FramebufferBlendContents::FramebufferBlendContents
FramebufferBlendContents()
impeller::RenderPass
Render passes encode render commands directed as one specific render target into an underlying comman...
Definition: render_pass.h:30
color_source_contents.h
entity.h
impeller
Definition: allocation.cc:12
impeller::BlendMode
BlendMode
Definition: color.h:58
impeller::BlendSelectValues
BlendSelectValues
Definition: framebuffer_blend_contents.h:15
impeller::BlendSelectValues::kExclusion
@ kExclusion
impeller::BlendSelectValues::kSaturation
@ kSaturation
impeller::BlendSelectValues::kColorBurn
@ kColorBurn
impeller::BlendSelectValues::kLighten
@ kLighten
impeller::BlendSelectValues::kHue
@ kHue
impeller::BlendSelectValues::kMultiply
@ kMultiply
impeller::BlendSelectValues::kColorDodge
@ kColorDodge
impeller::BlendSelectValues::kScreen
@ kScreen
impeller::BlendSelectValues::kLuminosity
@ kLuminosity
impeller::BlendSelectValues::kSoftLight
@ kSoftLight
impeller::BlendSelectValues::kDifference
@ kDifference
impeller::BlendSelectValues::kOverlay
@ kOverlay
impeller::BlendSelectValues::kColor
@ kColor
impeller::BlendSelectValues::kHardLight
@ kHardLight
impeller::BlendSelectValues::kDarken
@ kDarken