diff options
Diffstat (limited to 'tools/perf/ui/browser.c')
-rw-r--r-- | tools/perf/ui/browser.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/tools/perf/ui/browser.c b/tools/perf/ui/browser.c index 973ff74e3640..32ac1165100d 100644 --- a/tools/perf/ui/browser.c +++ b/tools/perf/ui/browser.c | |||
@@ -600,6 +600,45 @@ void ui_browser__write_graph(struct ui_browser *browser __used, int graph) | |||
600 | SLsmg_set_char_set(0); | 600 | SLsmg_set_char_set(0); |
601 | } | 601 | } |
602 | 602 | ||
603 | void __ui_browser__line_arrow_up(struct ui_browser *browser, unsigned int column, | ||
604 | u64 start, u64 end, int start_width) | ||
605 | { | ||
606 | unsigned int row, end_row; | ||
607 | |||
608 | SLsmg_set_char_set(1); | ||
609 | |||
610 | if (start < browser->top_idx + browser->height) { | ||
611 | row = start - browser->top_idx; | ||
612 | ui_browser__gotorc(browser, row, column); | ||
613 | SLsmg_write_char(SLSMG_LLCORN_CHAR); | ||
614 | ui_browser__gotorc(browser, row, column + 1); | ||
615 | SLsmg_draw_hline(start_width); | ||
616 | |||
617 | if (row-- == 0) | ||
618 | goto out; | ||
619 | } else | ||
620 | row = browser->height - 1; | ||
621 | |||
622 | if (end > browser->top_idx) | ||
623 | end_row = end - browser->top_idx; | ||
624 | else | ||
625 | end_row = 0; | ||
626 | |||
627 | ui_browser__gotorc(browser, end_row, column); | ||
628 | SLsmg_draw_vline(row - end_row + 1); | ||
629 | |||
630 | ui_browser__gotorc(browser, end_row, column); | ||
631 | if (end >= browser->top_idx) { | ||
632 | SLsmg_write_char(SLSMG_ULCORN_CHAR); | ||
633 | ui_browser__gotorc(browser, end_row, column + 1); | ||
634 | SLsmg_write_char(SLSMG_HLINE_CHAR); | ||
635 | ui_browser__gotorc(browser, end_row, column + 2); | ||
636 | SLsmg_write_char(SLSMG_RARROW_CHAR); | ||
637 | } | ||
638 | out: | ||
639 | SLsmg_set_char_set(0); | ||
640 | } | ||
641 | |||
603 | void ui_browser__init(void) | 642 | void ui_browser__init(void) |
604 | { | 643 | { |
605 | int i = 0; | 644 | int i = 0; |