source: ogBrowser-Git/qtermwidget/lib/konsole_wcwidth.cpp @ c0cec9d

jenkinsmain
Last change on this file since c0cec9d was 64efc22, checked in by Vadim Troshchinskiy <vtroshchinskiy@…>, 19 months ago

Update qtermwidget to modern version

  • Property mode set to 100644
File size: 1.1 KB
Line 
1/* $XFree86: xc/programs/xterm/wcwidth.character,v 1.3 2001/07/29 22:08:16 tsi Exp $ */
2/*
3 * This is an implementation of wcwidth() and wcswidth() as defined in
4 * "The Single UNIX Specification, Version 2, The Open Group, 1997"
5 * <http://www.UNIX-systems.org/online.html>
6 *
7 * Markus Kuhn -- 2001-01-12 -- public domain
8 */
9
10#include <QString>
11
12#ifdef HAVE_UTF8PROC
13#include <utf8proc.h>
14#else
15#include <cwchar>
16#endif
17
18#include "konsole_wcwidth.h"
19
20int konsole_wcwidth(wchar_t ucs)
21{
22#ifdef HAVE_UTF8PROC
23    utf8proc_category_t cat = utf8proc_category( ucs );
24    if (cat == UTF8PROC_CATEGORY_CO) {
25        // Co: Private use area. libutf8proc makes them zero width, while tmux
26        // assumes them to be width 1, and glibc's default width is also 1
27        return 1;
28    }
29    return utf8proc_charwidth( ucs );
30#else
31    return wcwidth( ucs );
32#endif
33}
34
35// single byte char: +1, multi byte char: +2
36int string_width( const std::wstring & wstr )
37{
38    int w = 0;
39    for ( size_t i = 0; i < wstr.length(); ++i ) {
40        w += konsole_wcwidth( wstr[ i ] );
41    }
42    return w;
43}
Note: See TracBrowser for help on using the repository browser.