Ticket #554: mbitter.text_bbox.patch

File mbitter.text_bbox.patch, 1.4 KB (added by thomas0782, 10 years ago)
  • navit/graphics/win32/graphics_win32.c

     
    14201419    int yMax = 13*font->size/256;
    14211420    int xMax = 9*font->size*len/256;
    14221421
     1422    if ( NULL == font->hfont )
     1423    {
     1424#ifdef WIN_USE_SYSFONT
     1425        font->hfont = (HFONT) GetStockObject (SYSTEM_FONT);
     1426        GetObject (font->hfont, sizeof (LOGFONT), &font->lf);
     1427#else
     1428        font->hfont = EzCreateFont (gr->hMemDC, TEXT ("Arial"), font->size/2, 0, 0, TRUE);
     1429        GetObject ( font->hfont, sizeof (LOGFONT), &font->lf) ;
     1430#endif
     1431    }
     1432
     1433    HFONT hOldFont = SelectObject(gr->hMemDC, font->hfont );
     1434
     1435    {
     1436        wchar_t utf16[1024];
     1437        const UTF8 *utf8 = (UTF8 *)text;
     1438        UTF16 *utf16p = (UTF16 *) utf16;
     1439        if (ConvertUTF8toUTF16(&utf8, utf8+strlen(text),
     1440                               &utf16p, utf16p+sizeof(utf16),
     1441                               lenientConversion) == conversionOK)
     1442        {
     1443            SIZE size;
     1444            if (GetTextExtentPointW(gr->hMemDC, utf16, (wchar_t*) utf16p - utf16, &size)) {
     1445                yMax = size.cy;
     1446                xMax = size.cx;
     1447            }
     1448        }
     1449    }
     1450
     1451    SelectObject(gr->hMemDC, hOldFont);
     1452
     1453    DeleteObject(font->hfont);
     1454    font->hfont = NULL;
     1455   
    14231456    ret[0].x = xMin;
    14241457    ret[0].y = -yMin;
    14251458    ret[1].x = xMin;