summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/menu.cc
diff options
context:
space:
mode:
authorpauldubois <pauldubois@c06c8d41-db1a-0410-9941-cceddc491573>2008-04-07 06:20:32 +0000
committerpauldubois <pauldubois@c06c8d41-db1a-0410-9941-cceddc491573>2008-04-07 06:20:32 +0000
commit2f63d14e46fcb39b0021fb209f85207cddf7b404 (patch)
tree9bb9d77a3394ff6b159397308aeb2f8651ecb468 /crawl-ref/source/menu.cc
parent149c6fb2d95c12bcd27c067929da23c8a8335f33 (diff)
downloadcrawl-ref-2f63d14e46fcb39b0021fb209f85207cddf7b404.tar.gz
crawl-ref-2f63d14e46fcb39b0021fb209f85207cddf7b404.zip
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
Diffstat (limited to 'crawl-ref/source/menu.cc')
-rw-r--r--crawl-ref/source/menu.cc37
1 files changed, 37 insertions, 0 deletions
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))