From 2f63d14e46fcb39b0021fb209f85207cddf7b404 Mon Sep 17 00:00:00 2001 From: pauldubois Date: Mon, 7 Apr 2008 06:20:32 +0000 Subject: For David. Menu's draw_title_suffix can now accept a formatted_string instead of a string. See example in StashSearchMenu::draw_title. If you want everything in cyan, you might want to figure out who sets the StashSearchMenu's title->color and change that, too. Added formatted_string::substr(). Lightly tested, seems to work fine. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@4091 c06c8d41-db1a-0410-9941-cceddc491573 --- crawl-ref/source/menu.cc | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'crawl-ref/source/menu.cc') diff --git a/crawl-ref/source/menu.cc b/crawl-ref/source/menu.cc index 783d3dd69f..40be0a8598 100644 --- a/crawl-ref/source/menu.cc +++ b/crawl-ref/source/menu.cc @@ -428,6 +428,43 @@ bool Menu::draw_title_suffix( const std::string &s, bool titlefirst ) return true; } +bool Menu::draw_title_suffix( const formatted_string &fs, bool titlefirst ) +{ + int oldx = wherex(), oldy = wherey(); + + if (titlefirst) + draw_title(); + + int x = wherex(); + if (x > get_number_of_cols() || x < 1) + { + cgotoxy(oldx, oldy); + return false; + } + + // Note: 1 <= x <= get_number_of_cols(); we have no fear of overflow. + const unsigned int avail_width = get_number_of_cols() - x + 1; + const unsigned int fs_length = fs.length(); + if (fs_length > avail_width) + { + formatted_string fs_trunc = fs.substr(0, avail_width); + fs_trunc.display(); + } + else + { + fs.display(); + if (fs_length < avail_width) + { + char fmt[20]; + sprintf(fmt, "%%%ds", avail_width-fs_length); + cprintf(fmt, " "); + } + } + + cgotoxy( oldx, oldy ); + return true; +} + void Menu::draw_select_count( int count, bool force ) { if (!force && !is_set(MF_MULTISELECT)) -- cgit v1.2.3-54-g00ecf