perf ui browser: Add method to draw up/ down arrow line
Commit-ID: 944e1abed9e1c04e410ddfee849529eedd3e534a Gitweb: http://git.kernel.org/tip/944e1abed9e1c04e410ddfee849529eedd3e534a Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Fri, 27 Apr 2012 16:27:52 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Fri, 27 Apr 2012 16:27:52 -0300
perf ui browser: Add method to draw up/down arrow line
It figures out the direction and draws downwards arrows too if that is the case.
Cc David Ahern <[email protected]>
Cc Frederic Weisbecker <[email protected]>
Cc Mike Galbraith <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Paul Mackerras <[email protected]>
Cc Peter Zijlstra <[email protected]>
Cc Stephane Eranian <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/perf/ui/browser.c | 54 +++++++++++++++++++++++++++++++++++++++++++++- tools/perf/ui/browser.h | 4 +- 2 files changed, 54 insertions(+), 4 deletions(-)
tools/perf/ui/browser.c +52 -2
@@ -600,8 +600,9 @@ void ui_browser__write_graph(struct ui_browser *browser __used, int graph)SLsmg_set_char_set (0 ); } -void __ui_browser__line_arrow_up (struct ui_browser *browser,unsigned int column, -u64 start,u64 end,int start_width) +static void __ui_browser__line_arrow_up (struct ui_browser *browser, +unsigned int column, +u64 start,u64 end,int start_width) {unsigned int row, end_row;
@@ -639,6 +640,55 @@ out:SLsmg_set_char_set (0 ); } +static void __ui_browser__line_arrow_down (struct ui_browser *browser, +unsigned int column, +u64 start,u64 end,int start_width) +{ +unsigned int row, end_row; + +SLsmg_set_char_set (1 ); + +if (start >= browser->top_idx) { + row = start - browser->top_idx; +ui_browser__gotorc (browser, row, column); +SLsmg_write_char (SLSMG_ULCORN_CHAR ); +ui_browser__gotorc (browser, row, column +1 ); +SLsmg_draw_hline (start_width); + +if (row++ ==0 ) + goto out; + }else + row =0 ; + +if (end >= browser->top_idx + browser->height) + end_row = browser->height -1 ; +else + end_row = end - browser->top_idx;; + +ui_browser__gotorc (browser, row, column); +SLsmg_draw_vline (end_row - row +1 ); + +ui_browser__gotorc (browser, end_row, column); +if (end < browser->top_idx + browser->height) { +SLsmg_write_char (SLSMG_LLCORN_CHAR ); +ui_browser__gotorc (browser, end_row, column +1 ); +SLsmg_write_char (SLSMG_HLINE_CHAR ); +ui_browser__gotorc (browser, end_row, column +2 ); +SLsmg_write_char (SLSMG_RARROW_CHAR ); + } +out: +SLsmg_set_char_set (0 ); +} + +void __ui_browser__line_arrow (struct ui_browser *browser,unsigned int column, +u64 start,u64 end,int start_width) +{ +if (start > end) +__ui_browser__line_arrow_up (browser, column, start, end, start_width); +else +__ui_browser__line_arrow_down (browser, column, start, end, start_width); +} +void ui_browser__init (void ) {int i =0 ;
tools/perf/ui/browser.h +2 -2
@@ -38,8 +38,8 @@ void ui_browser__reset_index(struct ui_browser *self);void ui_browser__gotorc (struct ui_browser *self,int y,int x);void ui_browser__write_graph (struct ui_browser *browser,int graph); -void __ui_browser__line_arrow_up (struct ui_browser *browser,unsigned int column, -u64 start,u64 end,int start_width); +void __ui_browser__line_arrow (struct ui_browser *browser,unsigned int column, +u64 start,u64 end,int start_width);void __ui_browser__show_title (struct ui_browser *browser,const char *title);void ui_browser__show_title (struct ui_browser *browser,const char *title); int ui_browser__show(struct ui_browser *self, const char *title,