From a010f94390422eefa366a5f390c1f9e3ccc66fd5 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Sat, 24 May 2008 10:10:37 +0000 Subject: text_length functions, improved lighting, r_bbox draws bounding boxes --- src/auxiliary/functions.cc | 28 ++++++++++++++++++++++++++++ src/auxiliary/functions.h | 9 ++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) (limited to 'src/auxiliary') diff --git a/src/auxiliary/functions.cc b/src/auxiliary/functions.cc index 373a6f0..2b42bae 100644 --- a/src/auxiliary/functions.cc +++ b/src/auxiliary/functions.cc @@ -48,4 +48,32 @@ const std::string article(const char * word) return w; } +size_t text_length(const std::string &text) +{ + const char *c = text.c_str(); + size_t len = 0; + while (*c) { + if (is_color_code(c)) { + c++; + } else { + len++; + } + c++; + } + + return len; +} + +const std::string spaces(const std::string &text,size_t n) +{ + size_t l = text_length(text); + if (n <= l) + return text; + + std::string s; + s.assign(n-l, ' '); + s.append(text); + return s; +} + } diff --git a/src/auxiliary/functions.h b/src/auxiliary/functions.h index eff5143..cd9ed13 100644 --- a/src/auxiliary/functions.h +++ b/src/auxiliary/functions.h @@ -14,9 +14,10 @@ namespace aux { -/// if n != 1, append a plural s to word +/// append an "s" to a word, depending on the amount const std::string plural(const char * word, size_t n); +/// append an "s" to a word, depending on the amount inline const std::string plural(const std::string & word, size_t n) { return plural(word.c_str(), n); } /// prepend the "a" or "an" article to a word @@ -29,6 +30,12 @@ inline bool is_base_color_code(char const *c) { return ((*c == '^') && (*(c+1) > inline bool is_core_color_code(char const *c) { return ((*c == '^') && (*(c+1) >= 'A') && (*(c+1) <= 'Z')); } inline bool is_color_code(char const *c) { return (is_base_color_code(c) || is_core_color_code(c)); } + +/// length of a string, excluding color codes +size_t text_length(const std::string &text); + +/// prepend spaces to a string up to the desired lenght, excluding color codes +const std::string spaces(const std::string &text, size_t n); } #endif // __INCLUDED_AUX_FUNCTIONS_H__ -- cgit v1.2.3