xref: /aosp_15_r20/external/skia/tools/viewer/SkSLDebuggerSlide.h (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
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 "include/core/SkRefCnt.h"
12 #include "include/core/SkScalar.h"
13 #include "src/sksl/tracing/SkSLDebugTracePlayer.h"
14 #include "src/sksl/tracing/SkSLDebugTracePriv.h"
15 #include "tools/viewer/Slide.h"
16 
17 class SkCanvas;
18 
19 namespace skui {
20 enum class InputState;
21 enum class ModifierKey;
22 }  // namespace sk
23 
24 class SkSLDebuggerSlide : public Slide {
25 public:
26     SkSLDebuggerSlide();
27 
28     void draw(SkCanvas* canvas) override;
29     bool animate(double nanos) override;
30 
resize(SkScalar winWidth,SkScalar winHeight)31     void resize(SkScalar winWidth, SkScalar winHeight) override {}
32     void load(SkScalar winWidth, SkScalar winHeight) override;
33     void unload() override;
34 
onMouse(SkScalar x,SkScalar y,skui::InputState state,skui::ModifierKey modifiers)35     bool onMouse(SkScalar x, SkScalar y, skui::InputState state,
36                  skui::ModifierKey modifiers) override { return true; }
37 
38 private:
39     void showRootGUI();
40     void showLoadTraceGUI();
41     void showDebuggerGUI();
42     void showStackTraceTable();
43     void showVariableTable();
44     void showCodeTable();
45 
46     static constexpr int kNumTopRows = 12;
47 
48     sk_sp<SkSL::DebugTracePriv> fTrace;
49     SkSL::SkSLDebugTracePlayer fPlayer;
50     bool fRefresh = false;
51 
52     char fTraceFile[256] = "SkSLDebugTrace.json";
53 };
54 
55 #endif  // SkSLDebuggerSlide_DEFINED
56