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 )
}
}
-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 ) {
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;
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);