• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2021 Google LLC
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 
8 #ifndef SkSLDebuggerSlide_DEFINED
9 #define SkSLDebuggerSlide_DEFINED
10 
11 #include "src/sksl/tracing/SkVMDebugTrace.h"
12 #include "src/sksl/tracing/SkVMDebugTracePlayer.h"
13 #include "tools/viewer/Slide.h"
14 
15 class SkSLDebuggerSlide : public Slide {
16 public:
17     SkSLDebuggerSlide();
18 
19     void draw(SkCanvas* canvas) override;
20     bool animate(double nanos) override;
21 
resize(SkScalar winWidth,SkScalar winHeight)22     void resize(SkScalar winWidth, SkScalar winHeight) override {}
23     void load(SkScalar winWidth, SkScalar winHeight) override;
24     void unload() override;
25 
onMouse(SkScalar x,SkScalar y,skui::InputState state,skui::ModifierKey modifiers)26     bool onMouse(SkScalar x, SkScalar y, skui::InputState state,
27                  skui::ModifierKey modifiers) override { return true; }
28 
29 private:
30     void showRootGUI();
31     void showLoadTraceGUI();
32     void showDebuggerGUI();
33     void showStackTraceTable();
34     void showVariableTable();
35     void showCodeTable();
36 
37     static constexpr int kNumTopRows = 12;
38 
39     sk_sp<SkSL::SkVMDebugTrace> fTrace;
40     SkSL::SkVMDebugTracePlayer fPlayer;
41     bool fRefresh = false;
42 
43     char fTraceFile[256] = "SkVMDebugTrace.json";
44 };
45 
46 #endif
47