X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;ds=sidebyside;f=cinelerra-5.1%2Fguicast%2Fbcwindowdraw.C;h=eb35b63e7ca34e2cf0fed664a641e2926d24b187;hb=9e3d90a964c0fbe97c0b58235336a47111932d5d;hp=7164bab70a1cb5f53dcbd438aace39c575c9d09b;hpb=0df48ad2d876409c5beeae2e21933a728ea76c33;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/guicast/bcwindowdraw.C b/cinelerra-5.1/guicast/bcwindowdraw.C index 7164bab7..eb35b63e 100644 --- a/cinelerra-5.1/guicast/bcwindowdraw.C +++ b/cinelerra-5.1/guicast/bcwindowdraw.C @@ -211,21 +211,21 @@ void BC_WindowBase::draw_xft_text(int x, int y, const char *text, int length, BC_Pixmap *pixmap, int is_utf8) { int l = length + 1; - wchar_t wide_text[l]; + wchr_t wide_text[l]; length = BC_Resources::encode( is_utf8 ? "UTF8" : BC_Resources::encoding, BC_Resources::wide_encoding, - (char*)text, length, (char*)wide_text, l*sizeof(wchar_t)) / sizeof(wchar_t); + (char*)text, length, (char*)wide_text, l*sizeof(wchr_t)) / sizeof(wchr_t); draw_xft_text(x, y, wide_text, length, pixmap); } void BC_WindowBase::draw_xft_text(int x, int y, - const wchar_t *text, int length, BC_Pixmap *pixmap) + const wchr_t *text, int length, BC_Pixmap *pixmap) { int dy = -1; - const wchar_t *wsp = text, *wep = wsp + length; + const wchr_t *wsp = text, *wep = wsp + length; int font = top_level->current_font; while( wsp < wep ) { - const wchar_t *wcp = wsp; + const wchr_t *wcp = wsp; while( wcp < wep && *wcp != '\n' ) ++wcp; int len = wcp - wsp; if( len > 0 ) @@ -272,16 +272,16 @@ void BC_WindowBase::xft_draw_string(XftColor *xft_color, XftFont *xft_font, } } -int BC_WindowBase::get_single_text_width(int font, const wchar_t *text, int length) +int BC_WindowBase::get_single_text_width(int font, const wchr_t *text, int length) { return draw_single_text(0, font, 0,0, text, length); } int BC_WindowBase::draw_single_text(int draw, int font, - int x, int y, const wchar_t *text, int length, BC_Pixmap *pixmap) + int x, int y, const wchr_t *text, int length, BC_Pixmap *pixmap) { if( length < 0 ) - length = wcslen(text); + length = wstrlen(text); if( !length ) return 0; if( !get_resources()->use_xft ) { @@ -319,7 +319,7 @@ int BC_WindowBase::draw_single_text(int draw, int font, int x0 = x; XftFont *basefont = top_level->get_xft_struct(font); XftFont *curfont = 0, *altfont = 0; - const wchar_t *up = text, *ubp = up, *uep = ubp + length; + const wchr_t *up = text, *ubp = up, *uep = ubp + length; while( up < uep ) { XftFont *xft_font = 0; @@ -380,40 +380,6 @@ int BC_WindowBase::draw_single_text(int draw, int font, return x - x0; } -void BC_WindowBase::truncate_text(char *result, const char *text, int w) -{ - int new_w = get_text_width(current_font, text); - - if( new_w > w ) { - const char* separator = "..."; - int separator_w = get_text_width(current_font, separator); -// can't fit - if( separator_w >= w ) { - strcpy(result, separator); - return; - } - - int text_len = strlen(text); -// widen middle gap until it fits - for( int i=text_len/2; i>0; --i ) { - strncpy(result, text, i); - result[i] = 0; - strcat(result, separator); - strncat(result, text + text_len - i, i); - result[i + strlen(separator) + i] = 0; - new_w = get_text_width(current_font, result); -//printf("BC_WindowBase::truncate_text %d %d %d %s\n", __LINE__, new_w, w, result); - if(new_w < w) return; - } - -// Didn't fit - strcpy(result, separator); - return; - } - - strcpy(result, text); -} - void BC_WindowBase::draw_center_text(int x, int y, const char *text, int length) { if(length < 0) length = strlen(text);