+static int
+draw_text(struct view *view, const char *string, int max_len, int col,
+ bool use_tilde, int tilde_attr)
+{
+ int n;
+
+ n = 0;
+ if (max_len > 0) {
+ int len;
+ int trimmed = FALSE;
+
+ if (opt_utf8) {
+ int pad = 0;
+
+ len = utf8_length(string, max_len, &pad, &trimmed);
+ if (trimmed && use_tilde) {
+ max_len -= 1;
+ len = utf8_length(
+ string, max_len, &pad, &trimmed);
+ }
+ n = len;
+ } else {
+ len = strlen(string);
+ if (len > max_len) {
+ if (use_tilde) {
+ max_len -= 1;
+ }
+ len = max_len;
+ trimmed = TRUE;
+ }
+ n = len;
+ }
+ waddnstr(view->win, string, n);
+ if (trimmed && use_tilde) {
+ if (tilde_attr != -1)
+ wattrset(view->win, tilde_attr);
+ waddch(view->win, '~');
+ n++;
+ }
+ }
+
+ return n;
+}
+