display OpenType fonts, small fixes in Win32 drawtext
This commit is contained in:
parent
19dd4a1730
commit
238d49ce35
38
src/text.c
38
src/text.c
@ -292,17 +292,22 @@ int TrueType_font(int index)
|
|||||||
#if defined(WIN32) && defined(NOTTF)
|
#if defined(WIN32) && defined(NOTTF)
|
||||||
static int CALLBACK EnumFontFamCallback(CONST LOGFONTA *lpelf, CONST TEXTMETRICA *lpntm, DWORD FontType, LPARAM lParam)
|
static int CALLBACK EnumFontFamCallback(CONST LOGFONTA *lpelf, CONST TEXTMETRICA *lpntm, DWORD FontType, LPARAM lParam)
|
||||||
{
|
{
|
||||||
|
char type[3] = { ' ', ' ', '\0' };
|
||||||
T_Font * font;
|
T_Font * font;
|
||||||
if (FontType & TRUETYPE_FONTTYPE)
|
|
||||||
{
|
|
||||||
font = malloc(sizeof(T_Font));
|
|
||||||
font->Is_bitmap = 0;
|
|
||||||
font->Is_truetype = 1;
|
|
||||||
snprintf(font->Label, sizeof(font->Label), "%-17.17sTT", lpelf->lfFaceName);
|
|
||||||
font->Name = strdup(lpelf->lfFaceName);
|
|
||||||
|
|
||||||
Insert_font(font);
|
if (FontType & TRUETYPE_FONTTYPE)
|
||||||
}
|
type[0] = type[1] = 'T';
|
||||||
|
else if (FontType & RASTER_FONTTYPE)
|
||||||
|
type[0] = 'R'; // Raster font.
|
||||||
|
if (((CONST NEWTEXTMETRICA *)lpntm)->ntmFlags & NTM_TT_OPENTYPE)
|
||||||
|
type[0] = 'O'; // OpenType font
|
||||||
|
font = (T_Font *)malloc(sizeof(T_Font));
|
||||||
|
font->Is_bitmap = 0;
|
||||||
|
font->Is_truetype = 1;
|
||||||
|
snprintf(font->Label, sizeof(font->Label), "%-17.17s%s", lpelf->lfFaceName, type);
|
||||||
|
font->Name = strdup(lpelf->lfFaceName);
|
||||||
|
|
||||||
|
Insert_font(font);
|
||||||
return 1; // non-zero : continue enumeration
|
return 1; // non-zero : continue enumeration
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -632,17 +637,20 @@ byte *Render_text_Win32(const char *str, int font_number, int size, int antialia
|
|||||||
bi->bmiHeader.biBitCount = 8;
|
bi->bmiHeader.biBitCount = 8;
|
||||||
bi->bmiHeader.biCompression = BI_RGB;
|
bi->bmiHeader.biCompression = BI_RGB;
|
||||||
|
|
||||||
for (i = 0; i < 255; i++) {
|
for (i = 0; i < 256; i++) {
|
||||||
bi->bmiColors[i].rgbBlue = i;
|
bi->bmiColors[i].rgbRed = i;
|
||||||
bi->bmiColors[i].rgbBlue = i;
|
bi->bmiColors[i].rgbGreen = i;
|
||||||
bi->bmiColors[i].rgbBlue = i;
|
bi->bmiColors[i].rgbBlue = i;
|
||||||
|
palette[i].R = i;
|
||||||
|
palette[i].G = i;
|
||||||
|
palette[i].B = i;
|
||||||
}
|
}
|
||||||
bm = CreateDIBSection(dc, bi, DIB_RGB_COLORS, &pixels, NULL, 0);
|
bm = CreateDIBSection(dc, bi, DIB_RGB_COLORS, (void **)&pixels, NULL, 0);
|
||||||
oldobj = SelectObject(dc, bm);
|
oldobj = SelectObject(dc, bm);
|
||||||
|
|
||||||
SetTextColor(dc, RGB(255,255,255));
|
SetTextColor(dc, RGB(255,255,255));
|
||||||
SetBkColor(dc, RGB(0,0,0));
|
SetBkColor(dc, RGB(0,0,0));
|
||||||
//SetBkMode(dc,TRANSPARENT);
|
SetBkMode(dc, OPAQUE);
|
||||||
rect.left=0;
|
rect.left=0;
|
||||||
rect.top=0;
|
rect.top=0;
|
||||||
rect.right = s.cx;
|
rect.right = s.cx;
|
||||||
@ -652,7 +660,7 @@ byte *Render_text_Win32(const char *str, int font_number, int size, int antialia
|
|||||||
SelectObject(dc, oldobj);
|
SelectObject(dc, oldobj);
|
||||||
SelectObject(dc, oldfont);
|
SelectObject(dc, oldfont);
|
||||||
|
|
||||||
new_brush = malloc(s.cx*s.cy);
|
new_brush = (byte *)malloc(s.cx*s.cy);
|
||||||
if (antialias)
|
if (antialias)
|
||||||
{
|
{
|
||||||
int y;
|
int y;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user