Flutter Engine
 
Loading...
Searching...
No Matches
entity_playground.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
9#include "third_party/imgui/imgui.h"
10
11namespace impeller {
12
14 : typographer_context_(TypographerContextSkia::Make()) {}
15
17
19 std::shared_ptr<TypographerContext> typographer_context) {
20 typographer_context_ = std::move(typographer_context);
21}
22
23std::shared_ptr<TypographerContext> EntityPlayground::GetTypographerContext()
24 const {
25 return typographer_context_;
26}
27
28std::shared_ptr<ContentContext> EntityPlayground::GetContentContext() const {
29 return std::make_shared<ContentContext>(GetContext(), typographer_context_);
30}
31
34 return true;
35 }
36
37 auto content_context = GetContentContext();
38 if (!content_context->IsValid()) {
39 return false;
40 }
41 SinglePassCallback callback = [&](RenderPass& pass) -> bool {
42 content_context->GetRenderTargetCache()->Start();
43 bool result = entity.Render(*content_context, pass);
44 content_context->GetRenderTargetCache()->End();
45 content_context->GetTransientsDataBuffer().Reset();
46 content_context->GetTransientsIndexesBuffer().Reset();
47 return result;
48 };
50}
51
54 return true;
55 }
56
57 ContentContext content_context(GetContext(), typographer_context_);
58 if (!content_context.IsValid()) {
59 return false;
60 }
61 SinglePassCallback pass_callback = [&](RenderPass& pass) -> bool {
62 content_context.GetRenderTargetCache()->Start();
63 bool result = callback(content_context, pass);
64 content_context.GetRenderTargetCache()->End();
65 content_context.GetTransientsDataBuffer().Reset();
66 content_context.GetTransientsIndexesBuffer().Reset();
67 return result;
68 };
69 return Playground::OpenPlaygroundHere(pass_callback);
70}
71
72} // namespace impeller
HostBuffer & GetTransientsDataBuffer() const
Retrieve the current host buffer for transient storage of other non-index data.
const std::shared_ptr< RenderTargetAllocator > & GetRenderTargetCache() const
HostBuffer & GetTransientsIndexesBuffer() const
Retrieve the current host buffer for transient storage of indexes used for indexed draws.
bool Render(const ContentContext &renderer, RenderPass &parent_pass) const
Definition entity.cc:144
bool OpenPlaygroundHere(Entity entity)
std::shared_ptr< ContentContext > GetContentContext() const
std::shared_ptr< TypographerContext > GetTypographerContext() const
std::function< bool(ContentContext &context, RenderPass &pass)> EntityPlaygroundCallback
void SetTypographerContext(std::shared_ptr< TypographerContext > typographer_context)
void Reset()
Resets the contents of the HostBuffer to nothing so it can be reused.
bool OpenPlaygroundHere(const RenderCallback &render_callback)
std::function< bool(RenderPass &pass)> SinglePassCallback
Definition playground.h:50
const PlaygroundSwitches switches_
Definition playground.h:131
std::shared_ptr< Context > GetContext() const
Definition playground.cc:91
Render passes encode render commands directed as one specific render target into an underlying comman...
Definition render_pass.h:30
FlutterDesktopBinaryReply callback