Flutter Impeller
dl_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 
7 #include "flutter/testing/testing.h"
11 #include "third_party/imgui/imgui.h"
12 #include "third_party/skia/include/core/SkData.h"
13 #include "third_party/skia/include/core/SkFontMgr.h"
14 #include "third_party/skia/include/core/SkTypeface.h"
15 #include "txt/platform.h"
16 
17 namespace impeller {
18 
19 DlPlayground::DlPlayground() = default;
20 
21 DlPlayground::~DlPlayground() = default;
22 
23 bool DlPlayground::OpenPlaygroundHere(flutter::DisplayListBuilder& builder) {
24  return OpenPlaygroundHere(builder.Build());
25 }
26 
27 bool DlPlayground::OpenPlaygroundHere(sk_sp<flutter::DisplayList> list) {
28  return OpenPlaygroundHere([&list]() { return list; });
29 }
30 
33  return true;
34  }
35 
37  if (!context.IsValid()) {
38  return false;
39  }
41  [&context, &callback](RenderTarget& render_target) -> bool {
42  static bool wireframe = false;
43  if (ImGui::IsKeyPressed(ImGuiKey_Z)) {
44  wireframe = !wireframe;
45  context.GetContentContext().SetWireframe(wireframe);
46  }
47 
48  auto list = callback();
49 
50  DlDispatcher dispatcher;
51  list->Dispatch(dispatcher);
52  auto picture = dispatcher.EndRecordingAsPicture();
53 
54  return context.Render(picture, render_target, true);
55  });
56 }
57 
58 SkFont DlPlayground::CreateTestFontOfSize(SkScalar scalar) {
59  static constexpr const char* kTestFontFixture = "Roboto-Regular.ttf";
60  auto mapping = flutter::testing::OpenFixtureAsSkData(kTestFontFixture);
61  FML_CHECK(mapping);
62  sk_sp<SkFontMgr> font_mgr = txt::GetDefaultFontManager();
63  return SkFont{font_mgr->makeFromData(mapping), scalar};
64 }
65 
67  return CreateTestFontOfSize(50);
68 }
69 
70 } // namespace impeller
impeller::AiksContext
Definition: aiks_context.h:20
impeller::DlPlayground::DlPlayground
DlPlayground()
impeller::DlDispatcher
Definition: dl_dispatcher.h:14
impeller::AiksContext::GetContentContext
ContentContext & GetContentContext() const
Definition: aiks_context.cc:44
impeller::DlDispatcher::EndRecordingAsPicture
Picture EndRecordingAsPicture()
Definition: dl_dispatcher.cc:1149
aiks_context.h
dl_dispatcher.h
impeller::DlPlayground::OpenPlaygroundHere
bool OpenPlaygroundHere(flutter::DisplayListBuilder &builder)
Definition: dl_playground.cc:23
impeller::AiksContext::Render
bool Render(const Picture &picture, RenderTarget &render_target, bool reset_host_buffer)
Definition: aiks_context.cc:48
typographer_context_skia.h
dl_playground.h
impeller::DlPlayground::DisplayListPlaygroundCallback
std::function< sk_sp< flutter::DisplayList >()> DisplayListPlaygroundCallback
Definition: dl_playground.h:18
impeller::DlPlayground::~DlPlayground
~DlPlayground()
impeller::DlPlayground::CreateTestFontOfSize
SkFont CreateTestFontOfSize(SkScalar scalar)
Definition: dl_playground.cc:58
impeller::Playground::switches_
const PlaygroundSwitches switches_
Definition: playground.h:117
impeller::RenderTarget
Definition: render_target.h:38
impeller::Playground::OpenPlaygroundHere
bool OpenPlaygroundHere(const Renderer::RenderCallback &render_callback)
Definition: playground.cc:198
impeller::Playground::GetContext
std::shared_ptr< Context > GetContext() const
Definition: playground.cc:89
impeller
Definition: aiks_blur_unittests.cc:20
impeller::PlaygroundSwitches::enable_playground
bool enable_playground
Definition: switches.h:17
impeller::TypographerContextSkia::Make
static std::shared_ptr< TypographerContext > Make()
Definition: typographer_context_skia.cc:32
impeller::AiksContext::IsValid
bool IsValid() const
Definition: aiks_context.cc:36
impeller::DlPlayground::CreateTestFont
SkFont CreateTestFont()
Definition: dl_playground.cc:66