| Flutter Impeller |

Public Types | Public Member Functions | List of all members
impeller::EntityPlayground Class Reference

`#include <entity_playground.h>`

Inheritance diagram for impeller::EntityPlayground:

## Public Types
using | EntityPlaygroundCallback = std::function< bool(ContentContext &context, RenderPass &pass)>
Public Types inherited from impeller::Playground
using | SinglePassCallback = std::function< bool(RenderPass &pass)>

## Public Member Functions
| EntityPlayground ()
| ~EntityPlayground ()
void | SetTypographerContext (std::shared_ptr< TypographerContext > typographer_context)
bool | OpenPlaygroundHere (Entity entity)
bool | OpenPlaygroundHere (EntityPass &entity_pass)
bool | OpenPlaygroundHere (EntityPlaygroundCallback callback)
std::shared_ptr< ContentContext > | GetContentContext () const
Public Member Functions inherited from impeller::PlaygroundTest
| PlaygroundTest ()
virtual | ~PlaygroundTest ()
void | SetUp () override
void | TearDown () override
PlaygroundBackend | GetBackend () const
std::unique_ptr< fml::Mapping > | OpenAssetAsMapping (std::string asset_name) const override
RuntimeStage::Map | OpenAssetAsRuntimeStage (const char *asset_name) const
std::string | GetWindowTitle () const override
Public Member Functions inherited from impeller::Playground
| Playground (PlaygroundSwitches switches)
virtual | ~Playground ()
void | SetupContext (PlaygroundBackend backend, const PlaygroundSwitches &switches)
void | SetupWindow ()
void | TeardownWindow ()
bool | IsPlaygroundEnabled () const
Point | GetCursorPosition () const
ISize | GetWindowSize () const
Point | GetContentScale () const
Scalar | GetSecondsElapsed () const
| Get the amount of time elapsed from the start of the playground's execution. More...
std::shared_ptr< Context > | GetContext () const
std::shared_ptr< Context > | MakeContext () const
bool | OpenPlaygroundHere (const Renderer::RenderCallback &render_callback)
bool | OpenPlaygroundHere (SinglePassCallback pass_callback)
std::shared_ptr< Texture > | CreateTextureForFixture (const char *fixture_name, bool enable_mipmapping=false) const
std::shared_ptr< Texture > | CreateTextureCubeForFixture (std::array< const char *, 6 > fixture_names) const
fml::Status | SetCapabilities (const std::shared_ptr< Capabilities > &capabilities)
bool | WillRenderSomething () const

## Additional Inherited Members
Static Public Member Functions inherited from impeller::Playground
static bool | ShouldOpenNewPlaygrounds ()
static std::shared_ptr< CompressedImage > | LoadFixtureImageCompressed (std::shared_ptr< fml::Mapping > mapping)
static std::optional< DecompressedImage > | DecodeImageRGBA (const std::shared_ptr< CompressedImage > &compressed)
static std::shared_ptr< Texture > | CreateTextureForMapping (const std::shared_ptr< Context > &context, std::shared_ptr< fml::Mapping > mapping, bool enable_mipmapping=false)
static bool | SupportsBackend (PlaygroundBackend backend)
Protected Member Functions inherited from impeller::Playground
void | SetWindowSize (ISize size)
Protected Attributes inherited from impeller::Playground
const PlaygroundSwitches | switches_

## Detailed Description

Definition at line 17 of file entity_playground.h.

## Member Typedef Documentation

## ◆ EntityPlaygroundCallback

using impeller::EntityPlayground::EntityPlaygroundCallback = std::function<bool(ContentContext& context, RenderPass& pass)>

Definition at line 20 of file entity_playground.h.

## Constructor & Destructor Documentation

## ◆ EntityPlayground()

impeller::EntityPlayground::EntityPlayground | ( |  | ) |

Definition at line 13 of file entity_playground.cc.

14 : typographer_context_(TypographerContextSkia::Make()) {}

## ◆ ~EntityPlayground()

impeller::EntityPlayground::~EntityPlayground | ( |  | ) |
| default

## Member Function Documentation

## ◆ GetContentContext()

std::shared_ptr< ContentContext > impeller::EntityPlayground::GetContentContext | ( |  | ) | const

Definition at line 45 of file entity_playground.cc.

45 {
46 return std::make_shared<ContentContext>(GetContext(), typographer_context_);
47 }

References impeller::Playground::GetContext().

Referenced by impeller::testing::BlendFilterContentsTest::MakeTexture(), impeller::testing::MatrixFilterContentsTest::MakeTexture(), impeller::testing::GaussianBlurFilterContentsTest::MakeTexture(), and OpenPlaygroundHere().

## ◆ OpenPlaygroundHere() [1/3]

bool impeller::EntityPlayground::OpenPlaygroundHere | ( | Entity | entity | ) |

Definition at line 49 of file entity_playground.cc.

49 {
50 if (!switches_.enable_playground) {
51 return true;
52 }
53
54 auto content_context = GetContentContext();
55 if (!content_context->IsValid()) {
56 return false;
57 }
58 SinglePassCallback callback = [&](RenderPass& pass) -> bool {
59 content_context->GetRenderTargetCache()->Start();
60 bool result = entity.Render(*content_context, pass);
61 content_context->GetRenderTargetCache()->End();
62 content_context->GetTransientsBuffer().Reset();
63 return result;
64 };
65 return Playground::OpenPlaygroundHere(callback);
66 }

References impeller::PlaygroundSwitches::enable_playground, GetContentContext(), impeller::Playground::OpenPlaygroundHere(), impeller::Entity::Render(), and impeller::Playground::switches_.

## ◆ OpenPlaygroundHere() [2/3]

bool impeller::EntityPlayground::OpenPlaygroundHere | ( | EntityPass & | entity_pass | ) |

Definition at line 23 of file entity_playground.cc.

23 {
24 if (!switches_.enable_playground) {
25 return true;
26 }
27
28 ContentContext content_context(GetContext(), typographer_context_);
29 if (!content_context.IsValid()) {
30 return false;
31 }
32
33 // Resolve any lingering tracked clips by assigning an arbitrarily high
34 // number. The number to assign just needs to be at least as high as larger
35 // any previously assigned clip depth in the scene. Normally, Aiks handles
36 // this correctly when wrapping up the base pass as an `impeller::Picture`.
37 entity_pass.PopAllClips(99999);
38
39 auto callback = [&](RenderTarget& render_target) -> bool {
40 return entity_pass.Render(content_context, render_target);
41 };
42 return Playground::OpenPlaygroundHere(callback);
43 }

References impeller::PlaygroundSwitches::enable_playground, impeller::Playground::GetContext(), impeller::ContentContext::IsValid(), impeller::Playground::OpenPlaygroundHere(), impeller::EntityPass::PopAllClips(), impeller::EntityPass::Render(), and impeller::Playground::switches_.

## ◆ OpenPlaygroundHere() [3/3]

bool impeller::EntityPlayground::OpenPlaygroundHere | ( | EntityPlaygroundCallback | callback | ) |

Definition at line 68 of file entity_playground.cc.

68 {
69 if (!switches_.enable_playground) {
70 return true;
71 }
72
73 ContentContext content_context(GetContext(), typographer_context_);
74 if (!content_context.IsValid()) {
75 return false;
76 }
77 SinglePassCallback pass_callback = [&](RenderPass& pass) -> bool {
78 static bool wireframe = false;
79 if (ImGui::IsKeyPressed(ImGuiKey_Z)) {
80 wireframe = !wireframe;
81 content_context.SetWireframe(wireframe);
82 }
83 content_context.GetRenderTargetCache()->Start();
84 bool result = callback(content_context, pass);
85 content_context.GetRenderTargetCache()->End();
86 content_context.GetTransientsBuffer().Reset();
87 return result;
88 };
89 return Playground::OpenPlaygroundHere(pass_callback);
90 }

References impeller::PlaygroundSwitches::enable_playground, impeller::Playground::GetContext(), impeller::ContentContext::GetRenderTargetCache(), impeller::ContentContext::GetTransientsBuffer(), impeller::ContentContext::IsValid(), impeller::Playground::OpenPlaygroundHere(), impeller::HostBuffer::Reset(), impeller::ContentContext::SetWireframe(), and impeller::Playground::switches_.

## ◆ SetTypographerContext()

void impeller::EntityPlayground::SetTypographerContext | ( | std::shared_ptr< TypographerContext > | typographer_context | ) |

Definition at line 18 of file entity_playground.cc.

19 {
20 typographer_context_ = std::move(typographer_context);
21 }

The documentation for this class was generated from the following files:

- impeller/entity/entity_playground.h
- impeller/entity/entity_playground.cc

impeller::Playground::switches_
const PlaygroundSwitches switches_
Definition: playground.h:118
impeller::Playground::SinglePassCallback
std::function< bool(RenderPass &pass)> SinglePassCallback
Definition: playground.h:50
impeller::Playground::OpenPlaygroundHere
bool OpenPlaygroundHere(const Renderer::RenderCallback &render_callback)
Definition: playground.cc:204
impeller::Playground::GetContext
std::shared_ptr< Context > GetContext() const
Definition: playground.cc:90
impeller::PlaygroundSwitches::enable_playground
bool enable_playground
Definition: switches.h:16
impeller::TypographerContextSkia::Make
static std::shared_ptr< TypographerContext > Make()
Definition: typographer_context_skia.cc:78
impeller::EntityPlayground::GetContentContext
std::shared_ptr< ContentContext > GetContentContext() const
Definition: entity_playground.cc:45