Skip to content
Snippets Groups Projects
Commit 43dea65a authored by Olivier Lauffenburger's avatar Olivier Lauffenburger Committed by Brian Paul
Browse files

st/wgl: Implement wglUseFontBitmaps.


wglUseFontBitmaps is currently a noop.
This patch implements this function for Windows.
Misc code clean-ups by Brian.

Signed-off-by: default avatarOlivier Lauffenburger <o.lauffenburger@topsolid.com>
Reviewed-by: default avatarBrian Paul <brianp@vmware.com>
parent 80c6598c
No related branches found
No related tags found
No related merge requests found
...@@ -214,14 +214,7 @@ wglUseFontBitmapsA( ...@@ -214,14 +214,7 @@ wglUseFontBitmapsA(
DWORD count, DWORD count,
DWORD listBase ) DWORD listBase )
{ {
(void) hdc; return wglUseFontBitmapsW(hdc, first, count, listBase);
(void) first;
(void) count;
(void) listBase;
assert( 0 );
return FALSE;
} }
WINGDIAPI BOOL APIENTRY WINGDIAPI BOOL APIENTRY
...@@ -240,14 +233,54 @@ wglUseFontBitmapsW( ...@@ -240,14 +233,54 @@ wglUseFontBitmapsW(
DWORD count, DWORD count,
DWORD listBase ) DWORD listBase )
{ {
(void) hdc; GLYPHMETRICS gm;
(void) first; MAT2 tra;
(void) count; FIXED one, minus_one, zero;
(void) listBase; void *buffer = NULL;
BOOL result = TRUE;
assert( 0 );
one.value = 1;
return FALSE; one.fract = 0;
minus_one.value = -1;
minus_one.fract = 0;
zero.value = 0;
zero.fract = 0;
tra.eM11 = one;
tra.eM22 = minus_one;
tra.eM12 = tra.eM21 = zero;
for (int i = 0; i < count; i++) {
DWORD size = GetGlyphOutline(hdc, first + i, GGO_BITMAP, &gm, 0,
NULL, &tra);
glNewList(listBase + i, GL_COMPILE);
if (size != GDI_ERROR) {
if (size == 0) {
glBitmap(0, 0, -gm.gmptGlyphOrigin.x, gm.gmptGlyphOrigin.y,
gm.gmCellIncX, gm.gmCellIncY, NULL);
}
else {
buffer = realloc(buffer, size);
size = GetGlyphOutline(hdc, first + i, GGO_BITMAP, &gm,
size, buffer, &tra);
glBitmap(gm.gmBlackBoxX, gm.gmBlackBoxY,
-gm.gmptGlyphOrigin.x, gm.gmptGlyphOrigin.y,
gm.gmCellIncX, gm.gmCellIncY, buffer);
}
}
else {
result = FALSE;
}
glEndList();
}
free(buffer);
return result;
} }
WINGDIAPI BOOL APIENTRY WINGDIAPI BOOL APIENTRY
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment