• 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 
getDimensions()19     SkISize getDimensions() const override { return SkISize::MakeEmpty(); }
20 
21     void draw(SkCanvas* canvas) override;
22     bool animate(double nanos) override;
23 
resize(SkScalar winWidth,SkScalar winHeight)24     void resize(SkScalar winWidth, SkScalar winHeight) override {}
25     void load(SkScalar winWidth, SkScalar winHeight) override;
26     void unload() override;
27 
onMouse(SkScalar x,SkScalar y,skui::InputState state,skui::ModifierKey modifiers)28     bool onMouse(SkScalar x, SkScalar y, skui::InputState state,
29                  skui::ModifierKey modifiers) override { return true; }
30 
31 private:
32     void showRootGUI();
33     void showLoadTraceGUI();
34     void showDebuggerGUI();
35     void showStackTraceTable();
36     void showVariableTable();
37     void showCodeTable();
38 
39     static constexpr int kNumTopRows = 12;
40 
41     sk_sp<SkSL::SkVMDebugTrace> fTrace;
42     SkSL::SkVMDebugTracePlayer fPlayer;
43     bool fRefresh = false;
44 
45     char fTraceFile[256] = "SkVMDebugTrace.json";
46 };
47 
48 #endif
49