xref: /openbmc/linux/tools/perf/ui/browser.h (revision b181f7029bd71238ac2754ce7052dffd69432085)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2aca7a94dSNamhyung Kim #ifndef _PERF_UI_BROWSER_H_
3aca7a94dSNamhyung Kim #define _PERF_UI_BROWSER_H_ 1
4aca7a94dSNamhyung Kim 
5d944c4eeSBorislav Petkov #include <linux/types.h>
6c5220243SArnaldo Carvalho de Melo #include <stdarg.h>
7215a0d30SArnaldo Carvalho de Melo #include <sys/types.h>
8aca7a94dSNamhyung Kim 
9aca7a94dSNamhyung Kim #define HE_COLORSET_TOP		50
10aca7a94dSNamhyung Kim #define HE_COLORSET_MEDIUM	51
11aca7a94dSNamhyung Kim #define HE_COLORSET_NORMAL	52
12aca7a94dSNamhyung Kim #define HE_COLORSET_SELECTED	53
1378ce08dfSTaeung Song #define HE_COLORSET_JUMP_ARROWS	54
14aca7a94dSNamhyung Kim #define HE_COLORSET_ADDR	55
156692c262SArnaldo Carvalho de Melo #define HE_COLORSET_ROOT	56
16aca7a94dSNamhyung Kim 
17aca7a94dSNamhyung Kim struct ui_browser {
18aca7a94dSNamhyung Kim 	u64	      index, top_idx;
19aca7a94dSNamhyung Kim 	void	      *top, *entries;
20faae6f69SArnaldo Carvalho de Melo 	u16	      y, x, width, height, rows, columns, horiz_scroll;
21ef9ff601SArnaldo Carvalho de Melo 	u8	      extra_title_lines;
22aca7a94dSNamhyung Kim 	int	      current_color;
23aca7a94dSNamhyung Kim 	void	      *priv;
24*a8860002SIan Rogers 	char	      *title;
25aca7a94dSNamhyung Kim 	char	      *helpline;
262284cf80SArnaldo Carvalho de Melo 	const char    *no_samples_msg;
27fa70b5d6SArnaldo Carvalho de Melo 	void 	      (*refresh_dimensions)(struct ui_browser *browser);
28316c7136SArnaldo Carvalho de Melo 	unsigned int  (*refresh)(struct ui_browser *browser);
29316c7136SArnaldo Carvalho de Melo 	void	      (*write)(struct ui_browser *browser, void *entry, int row);
30316c7136SArnaldo Carvalho de Melo 	void	      (*seek)(struct ui_browser *browser, off_t offset, int whence);
31316c7136SArnaldo Carvalho de Melo 	bool	      (*filter)(struct ui_browser *browser, void *entry);
32aca7a94dSNamhyung Kim 	u32	      nr_entries;
33aca7a94dSNamhyung Kim 	bool	      navkeypressed;
34aca7a94dSNamhyung Kim 	bool	      use_navkeypressed;
35aca7a94dSNamhyung Kim };
36aca7a94dSNamhyung Kim 
37aca7a94dSNamhyung Kim int  ui_browser__set_color(struct ui_browser *browser, int color);
38316c7136SArnaldo Carvalho de Melo void ui_browser__set_percent_color(struct ui_browser *browser,
39aca7a94dSNamhyung Kim 				   double percent, bool current);
40316c7136SArnaldo Carvalho de Melo bool ui_browser__is_current_entry(struct ui_browser *browser, unsigned row);
41316c7136SArnaldo Carvalho de Melo void ui_browser__refresh_dimensions(struct ui_browser *browser);
42316c7136SArnaldo Carvalho de Melo void ui_browser__reset_index(struct ui_browser *browser);
43aca7a94dSNamhyung Kim 
44ef9ff601SArnaldo Carvalho de Melo void ui_browser__gotorc_title(struct ui_browser *browser, int y, int x);
45316c7136SArnaldo Carvalho de Melo void ui_browser__gotorc(struct ui_browser *browser, int y, int x);
4626270a00SArnaldo Carvalho de Melo void ui_browser__write_nstring(struct ui_browser *browser, const char *msg,
4726270a00SArnaldo Carvalho de Melo 			       unsigned int width);
48c5220243SArnaldo Carvalho de Melo void ui_browser__vprintf(struct ui_browser *browser, const char *fmt, va_list args);
49517dfdb3SArnaldo Carvalho de Melo void ui_browser__printf(struct ui_browser *browser, const char *fmt, ...);
5059d038d5SArnaldo Carvalho de Melo void ui_browser__write_graph(struct ui_browser *browser, int graph);
51944e1abeSArnaldo Carvalho de Melo void __ui_browser__line_arrow(struct ui_browser *browser, unsigned int column,
5283b1f2aaSArnaldo Carvalho de Melo 			      u64 start, u64 end);
537e63a13aSJin Yao void ui_browser__mark_fused(struct ui_browser *browser, unsigned int column,
547efbcc8cSRavi Bangoria 			    unsigned int row, int diff, bool arrow_down);
55aca7a94dSNamhyung Kim void __ui_browser__show_title(struct ui_browser *browser, const char *title);
56aca7a94dSNamhyung Kim void ui_browser__show_title(struct ui_browser *browser, const char *title);
57316c7136SArnaldo Carvalho de Melo int ui_browser__show(struct ui_browser *browser, const char *title,
58aca7a94dSNamhyung Kim 		     const char *helpline, ...);
59316c7136SArnaldo Carvalho de Melo void ui_browser__hide(struct ui_browser *browser);
60316c7136SArnaldo Carvalho de Melo int ui_browser__refresh(struct ui_browser *browser);
61aca7a94dSNamhyung Kim int ui_browser__run(struct ui_browser *browser, int delay_secs);
62aca7a94dSNamhyung Kim void ui_browser__update_nr_entries(struct ui_browser *browser, u32 nr_entries);
63aca7a94dSNamhyung Kim void ui_browser__handle_resize(struct ui_browser *browser);
644656cca1SArnaldo Carvalho de Melo void __ui_browser__vline(struct ui_browser *browser, unsigned int column,
654656cca1SArnaldo Carvalho de Melo 			 u16 start, u16 end);
66aca7a94dSNamhyung Kim 
67aca7a94dSNamhyung Kim int ui_browser__warning(struct ui_browser *browser, int timeout,
68aca7a94dSNamhyung Kim 			const char *format, ...);
69aca7a94dSNamhyung Kim int ui_browser__help_window(struct ui_browser *browser, const char *text);
70aca7a94dSNamhyung Kim bool ui_browser__dialog_yesno(struct ui_browser *browser, const char *text);
71aca7a94dSNamhyung Kim int ui_browser__input_window(const char *title, const char *text, char *input,
72aca7a94dSNamhyung Kim 			     const char *exit_msg, int delay_sec);
73ce80d3beSKan Liang struct perf_env;
74ce80d3beSKan Liang int tui__header_window(struct perf_env *env);
75aca7a94dSNamhyung Kim 
76aca7a94dSNamhyung Kim void ui_browser__argv_seek(struct ui_browser *browser, off_t offset, int whence);
77aca7a94dSNamhyung Kim unsigned int ui_browser__argv_refresh(struct ui_browser *browser);
78aca7a94dSNamhyung Kim 
79316c7136SArnaldo Carvalho de Melo void ui_browser__rb_tree_seek(struct ui_browser *browser, off_t offset, int whence);
80316c7136SArnaldo Carvalho de Melo unsigned int ui_browser__rb_tree_refresh(struct ui_browser *browser);
81aca7a94dSNamhyung Kim 
82316c7136SArnaldo Carvalho de Melo void ui_browser__list_head_seek(struct ui_browser *browser, off_t offset, int whence);
83316c7136SArnaldo Carvalho de Melo unsigned int ui_browser__list_head_refresh(struct ui_browser *browser);
84aca7a94dSNamhyung Kim 
85aca7a94dSNamhyung Kim void ui_browser__init(void);
86aca7a94dSNamhyung Kim #endif /* _PERF_UI_BROWSER_H_ */
87