forked from Mirrors/wine-wine
Implement GetTextExtentPointI and add support for ETO_GLYPH_INDEX.
parent
e1e51f9922
commit
5b01b50631
|
@ -1723,6 +1723,33 @@ BOOL WineEngGetTextExtentPoint(GdiFont font, LPCWSTR wstr, INT count,
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*************************************************************
|
||||||
|
* WineEngGetTextExtentPointI
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
BOOL WineEngGetTextExtentPointI(GdiFont font, const WORD *indices, INT count,
|
||||||
|
LPSIZE size)
|
||||||
|
{
|
||||||
|
UINT idx;
|
||||||
|
GLYPHMETRICS gm;
|
||||||
|
TEXTMETRICW tm;
|
||||||
|
|
||||||
|
TRACE("%p, %p, %d, %p\n", font, indices, count, size);
|
||||||
|
|
||||||
|
size->cx = 0;
|
||||||
|
WineEngGetTextMetrics(font, &tm);
|
||||||
|
size->cy = tm.tmHeight;
|
||||||
|
|
||||||
|
for(idx = 0; idx < count; idx++) {
|
||||||
|
WineEngGetGlyphOutline(font, indices[idx],
|
||||||
|
GGO_METRICS | GGO_GLYPH_INDEX, &gm, 0, NULL,
|
||||||
|
NULL);
|
||||||
|
size->cx += font->gm[indices[idx]].adv;
|
||||||
|
}
|
||||||
|
TRACE("return %ld,%ld\n", size->cx, size->cy);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
/*************************************************************
|
/*************************************************************
|
||||||
* WineEngGetFontData
|
* WineEngGetFontData
|
||||||
*
|
*
|
||||||
|
@ -1824,6 +1851,13 @@ BOOL WineEngGetTextExtentPoint(GdiFont font, LPCWSTR wstr, INT count,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOL WineEngGetTextExtentPointI(GdiFont font, LPWORD indices, INT count,
|
||||||
|
LPSIZE size)
|
||||||
|
{
|
||||||
|
ERR("called but we don't have FreeType\n");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
DWORD WineEngGetFontData(GdiFont font, DWORD table, DWORD offset, LPVOID buf,
|
DWORD WineEngGetFontData(GdiFont font, DWORD table, DWORD offset, LPVOID buf,
|
||||||
DWORD cbData)
|
DWORD cbData)
|
||||||
{
|
{
|
||||||
|
|
|
@ -273,10 +273,11 @@ debug_channels (bitblt bitmap clipping dc ddraw driver enhmetafile font gdi
|
||||||
@ stdcall GetTextColor(long) GetTextColor
|
@ stdcall GetTextColor(long) GetTextColor
|
||||||
@ stdcall GetTextExtentExPointA(long str long long ptr ptr ptr) GetTextExtentExPointA
|
@ stdcall GetTextExtentExPointA(long str long long ptr ptr ptr) GetTextExtentExPointA
|
||||||
@ stdcall GetTextExtentExPointW(long wstr long long ptr ptr ptr) GetTextExtentExPointW
|
@ stdcall GetTextExtentExPointW(long wstr long long ptr ptr ptr) GetTextExtentExPointW
|
||||||
@ stdcall GetTextExtentPoint32A(long ptr long ptr) GetTextExtentPoint32A
|
@ stdcall GetTextExtentPoint32A(long str long ptr) GetTextExtentPoint32A
|
||||||
@ stdcall GetTextExtentPoint32W(long ptr long ptr) GetTextExtentPoint32W
|
@ stdcall GetTextExtentPoint32W(long wstr long ptr) GetTextExtentPoint32W
|
||||||
@ stdcall GetTextExtentPointA(long ptr long ptr) GetTextExtentPointA
|
@ stdcall GetTextExtentPointA(long str long ptr) GetTextExtentPointA
|
||||||
@ stdcall GetTextExtentPointW(long ptr long ptr) GetTextExtentPointW
|
@ stdcall GetTextExtentPointI(long ptr long ptr) GetTextExtentPointI
|
||||||
|
@ stdcall GetTextExtentPointW(long wstr long ptr) GetTextExtentPointW
|
||||||
@ stdcall GetTextFaceA(long long ptr) GetTextFaceA
|
@ stdcall GetTextFaceA(long long ptr) GetTextFaceA
|
||||||
@ stdcall GetTextFaceW(long long ptr) GetTextFaceW
|
@ stdcall GetTextFaceW(long long ptr) GetTextFaceW
|
||||||
@ stdcall GetTextMetricsA(long ptr) GetTextMetricsA
|
@ stdcall GetTextMetricsA(long ptr) GetTextMetricsA
|
||||||
|
|
|
@ -365,7 +365,7 @@ void X11DRV_XRender_UpdateDrawable(X11DRV_PDEVICE *physDev)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
static BOOL UploadGlyph(X11DRV_PDEVICE *physDev, WCHAR glyph)
|
static BOOL UploadGlyph(X11DRV_PDEVICE *physDev, int glyph)
|
||||||
{
|
{
|
||||||
int buflen;
|
int buflen;
|
||||||
char *buf;
|
char *buf;
|
||||||
|
@ -373,7 +373,7 @@ static BOOL UploadGlyph(X11DRV_PDEVICE *physDev, WCHAR glyph)
|
||||||
GLYPHMETRICS gm;
|
GLYPHMETRICS gm;
|
||||||
XGlyphInfo gi;
|
XGlyphInfo gi;
|
||||||
gsCacheEntry *entry = physDev->xrender->cacheEntry;
|
gsCacheEntry *entry = physDev->xrender->cacheEntry;
|
||||||
UINT ggo_format;
|
UINT ggo_format = GGO_GLYPH_INDEX;
|
||||||
BOOL aa;
|
BOOL aa;
|
||||||
|
|
||||||
if(entry->nrealized <= glyph) {
|
if(entry->nrealized <= glyph) {
|
||||||
|
@ -387,10 +387,10 @@ static BOOL UploadGlyph(X11DRV_PDEVICE *physDev, WCHAR glyph)
|
||||||
|
|
||||||
if(entry->font_format->depth == 8) {
|
if(entry->font_format->depth == 8) {
|
||||||
aa = TRUE;
|
aa = TRUE;
|
||||||
ggo_format = WINE_GGO_GRAY16_BITMAP;
|
ggo_format |= WINE_GGO_GRAY16_BITMAP;
|
||||||
} else {
|
} else {
|
||||||
aa = FALSE;
|
aa = FALSE;
|
||||||
ggo_format = GGO_BITMAP;
|
ggo_format |= GGO_BITMAP;
|
||||||
}
|
}
|
||||||
|
|
||||||
buflen = GetGlyphOutlineW(physDev->hdc, glyph, ggo_format, &gm, 0, NULL,
|
buflen = GetGlyphOutlineW(physDev->hdc, glyph, ggo_format, &gm, 0, NULL,
|
||||||
|
@ -490,11 +490,20 @@ BOOL X11DRV_XRender_ExtTextOut( X11DRV_PDEVICE *physDev, INT x, INT y, UINT flag
|
||||||
XGCValues xgcval;
|
XGCValues xgcval;
|
||||||
LOGFONTW lf;
|
LOGFONTW lf;
|
||||||
int render_op = PictOpOver;
|
int render_op = PictOpOver;
|
||||||
|
WORD *glyphs;
|
||||||
HDC hdc = physDev->hdc;
|
HDC hdc = physDev->hdc;
|
||||||
DC *dc = physDev->dc;
|
DC *dc = physDev->dc;
|
||||||
|
|
||||||
TRACE("%04x, %d, %d, %08x, %p, %s, %d, %p)\n", hdc, x, y, flags,
|
TRACE("%04x, %d, %d, %08x, %p, %s, %d, %p)\n", hdc, x, y, flags,
|
||||||
lprect, debugstr_wn(wstr, count), count, lpDx);
|
lprect, debugstr_wn(wstr, count), count, lpDx);
|
||||||
|
|
||||||
|
if(flags & ETO_GLYPH_INDEX)
|
||||||
|
glyphs = (LPWORD)wstr;
|
||||||
|
else {
|
||||||
|
glyphs = HeapAlloc(GetProcessHeap(), 0, count * sizeof(WCHAR));
|
||||||
|
GetGlyphIndicesW(hdc, wstr, count, glyphs, 0);
|
||||||
|
}
|
||||||
|
|
||||||
if(lprect)
|
if(lprect)
|
||||||
TRACE("rect: %d,%d - %d,%d\n", lprect->left, lprect->top, lprect->right,
|
TRACE("rect: %d,%d - %d,%d\n", lprect->left, lprect->top, lprect->right,
|
||||||
lprect->bottom);
|
lprect->bottom);
|
||||||
|
@ -517,7 +526,7 @@ BOOL X11DRV_XRender_ExtTextOut( X11DRV_PDEVICE *physDev, INT x, INT y, UINT flag
|
||||||
if(flags & (ETO_CLIPPED | ETO_OPAQUE)) {
|
if(flags & (ETO_CLIPPED | ETO_OPAQUE)) {
|
||||||
if(!lprect) {
|
if(!lprect) {
|
||||||
if(flags & ETO_CLIPPED) return FALSE;
|
if(flags & ETO_CLIPPED) return FALSE;
|
||||||
GetTextExtentPointW(hdc, wstr, count, &sz);
|
GetTextExtentPointI(hdc, glyphs, count, &sz);
|
||||||
done_extents = TRUE;
|
done_extents = TRUE;
|
||||||
rc.left = x;
|
rc.left = x;
|
||||||
rc.top = y;
|
rc.top = y;
|
||||||
|
@ -567,7 +576,7 @@ BOOL X11DRV_XRender_ExtTextOut( X11DRV_PDEVICE *physDev, INT x, INT y, UINT flag
|
||||||
width += lpDx[idx];
|
width += lpDx[idx];
|
||||||
} else {
|
} else {
|
||||||
if(!done_extents) {
|
if(!done_extents) {
|
||||||
GetTextExtentPointW(hdc, wstr, count, &sz);
|
GetTextExtentPointI(hdc, glyphs, count, &sz);
|
||||||
done_extents = TRUE;
|
done_extents = TRUE;
|
||||||
}
|
}
|
||||||
width = sz.cx;
|
width = sz.cx;
|
||||||
|
@ -746,9 +755,9 @@ BOOL X11DRV_XRender_ExtTextOut( X11DRV_PDEVICE *physDev, INT x, INT y, UINT flag
|
||||||
render_op = PictOpOutReverse; /* This gives us 'black' text */
|
render_op = PictOpOutReverse; /* This gives us 'black' text */
|
||||||
|
|
||||||
for(idx = 0; idx < count; idx++) {
|
for(idx = 0; idx < count; idx++) {
|
||||||
if(wstr[idx] >= physDev->xrender->cacheEntry->nrealized ||
|
if(glyphs[idx] >= physDev->xrender->cacheEntry->nrealized ||
|
||||||
physDev->xrender->cacheEntry->realized[wstr[idx]] == FALSE) {
|
physDev->xrender->cacheEntry->realized[glyphs[idx]] == FALSE) {
|
||||||
UploadGlyph(physDev, wstr[idx]);
|
UploadGlyph(physDev, glyphs[idx]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -761,8 +770,8 @@ BOOL X11DRV_XRender_ExtTextOut( X11DRV_PDEVICE *physDev, INT x, INT y, UINT flag
|
||||||
physDev->xrender->pict,
|
physDev->xrender->pict,
|
||||||
physDev->xrender->cacheEntry->font_format,
|
physDev->xrender->cacheEntry->font_format,
|
||||||
physDev->xrender->cacheEntry->glyphset,
|
physDev->xrender->cacheEntry->glyphset,
|
||||||
0, 0, dc->DCOrgX + x, dc->DCOrgY + y, (unsigned short *)wstr,
|
0, 0, dc->DCOrgX + x, dc->DCOrgY + y,
|
||||||
count);
|
glyphs, count);
|
||||||
|
|
||||||
else {
|
else {
|
||||||
INT offset = 0, xoff = 0, yoff = 0;
|
INT offset = 0, xoff = 0, yoff = 0;
|
||||||
|
@ -774,7 +783,7 @@ BOOL X11DRV_XRender_ExtTextOut( X11DRV_PDEVICE *physDev, INT x, INT y, UINT flag
|
||||||
physDev->xrender->cacheEntry->glyphset,
|
physDev->xrender->cacheEntry->glyphset,
|
||||||
0, 0, dc->DCOrgX + x + xoff,
|
0, 0, dc->DCOrgX + x + xoff,
|
||||||
dc->DCOrgY + y + yoff,
|
dc->DCOrgY + y + yoff,
|
||||||
(unsigned short *)wstr + idx, 1);
|
glyphs + idx, 1);
|
||||||
offset += INTERNAL_XWSTODS(dc, lpDx[idx]);
|
offset += INTERNAL_XWSTODS(dc, lpDx[idx]);
|
||||||
xoff = offset * cosEsc;
|
xoff = offset * cosEsc;
|
||||||
yoff = offset * -sinEsc;
|
yoff = offset * -sinEsc;
|
||||||
|
@ -791,6 +800,7 @@ BOOL X11DRV_XRender_ExtTextOut( X11DRV_PDEVICE *physDev, INT x, INT y, UINT flag
|
||||||
RestoreVisRgn16( hdc );
|
RestoreVisRgn16( hdc );
|
||||||
|
|
||||||
X11DRV_UnlockDIBSection( physDev, TRUE );
|
X11DRV_UnlockDIBSection( physDev, TRUE );
|
||||||
|
if(glyphs != wstr) HeapFree(GetProcessHeap(), 0, glyphs);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -99,6 +99,7 @@ extern DWORD WineEngGetGlyphOutline(GdiFont, UINT glyph, UINT format,
|
||||||
const MAT2*);
|
const MAT2*);
|
||||||
extern UINT WineEngGetOutlineTextMetrics(GdiFont, UINT, LPOUTLINETEXTMETRICW);
|
extern UINT WineEngGetOutlineTextMetrics(GdiFont, UINT, LPOUTLINETEXTMETRICW);
|
||||||
extern BOOL WineEngGetTextExtentPoint(GdiFont, LPCWSTR, INT, LPSIZE);
|
extern BOOL WineEngGetTextExtentPoint(GdiFont, LPCWSTR, INT, LPSIZE);
|
||||||
|
extern BOOL WineEngGetTextExtentPointI(GdiFont, const WORD *, INT, LPSIZE);
|
||||||
extern BOOL WineEngGetTextMetrics(GdiFont, LPTEXTMETRICW);
|
extern BOOL WineEngGetTextMetrics(GdiFont, LPTEXTMETRICW);
|
||||||
extern BOOL WineEngInit(void);
|
extern BOOL WineEngInit(void);
|
||||||
|
|
||||||
|
|
|
@ -493,6 +493,58 @@ static inline INT WINE_UNUSED INTERNAL_YWSTODS(DC *dc, INT height)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Device -> World size conversion */
|
||||||
|
|
||||||
|
/* Performs a device to world transformation on the specified width (which
|
||||||
|
* is in floating point format).
|
||||||
|
*/
|
||||||
|
static inline void INTERNAL_XDSTOWS_FLOAT(DC *dc, FLOAT *width)
|
||||||
|
{
|
||||||
|
/* Perform the transformation */
|
||||||
|
*width = *width * dc->xformVport2World.eM11;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Performs a device to world transformation on the specified width (which
|
||||||
|
* is in integer format).
|
||||||
|
*/
|
||||||
|
static inline INT INTERNAL_XDSTOWS(DC *dc, INT width)
|
||||||
|
{
|
||||||
|
FLOAT floatWidth;
|
||||||
|
|
||||||
|
/* Perform operation with floating point */
|
||||||
|
floatWidth = (FLOAT)width;
|
||||||
|
INTERNAL_XDSTOWS_FLOAT(dc, &floatWidth);
|
||||||
|
|
||||||
|
/* Round to integers */
|
||||||
|
return GDI_ROUND(floatWidth);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Performs a device to world transformation on the specified size (which
|
||||||
|
* is in floating point format).
|
||||||
|
*/
|
||||||
|
static inline void INTERNAL_YDSTOWS_FLOAT(DC *dc, FLOAT *height)
|
||||||
|
{
|
||||||
|
/* Perform the transformation */
|
||||||
|
*height = *height * dc->xformVport2World.eM22;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Performs a device to world transformation on the specified size (which
|
||||||
|
* is in integer format).
|
||||||
|
*/
|
||||||
|
static inline INT INTERNAL_YDSTOWS(DC *dc, INT height)
|
||||||
|
{
|
||||||
|
FLOAT floatHeight;
|
||||||
|
|
||||||
|
/* Perform operation with floating point */
|
||||||
|
floatHeight = (FLOAT)height;
|
||||||
|
INTERNAL_YDSTOWS_FLOAT(dc, &floatHeight);
|
||||||
|
|
||||||
|
/* Round to integers */
|
||||||
|
return GDI_ROUND(floatHeight);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Device <-> logical size conversion */
|
/* Device <-> logical size conversion */
|
||||||
|
|
||||||
#define XDSTOLS(dc,x) \
|
#define XDSTOLS(dc,x) \
|
||||||
|
|
|
@ -1343,7 +1343,7 @@ typedef struct tagGCP_RESULTSW
|
||||||
UINT *lpOrder;
|
UINT *lpOrder;
|
||||||
INT *lpDx;
|
INT *lpDx;
|
||||||
INT *lpCaretPos;
|
INT *lpCaretPos;
|
||||||
LPWSTR lpClass;
|
LPSTR lpClass;
|
||||||
LPWSTR lpGlyphs;
|
LPWSTR lpGlyphs;
|
||||||
UINT nGlyphs;
|
UINT nGlyphs;
|
||||||
UINT nMaxFit;
|
UINT nMaxFit;
|
||||||
|
@ -3270,13 +3270,15 @@ BOOL WINAPI GetTextExtentExPointA(HDC,LPCSTR,INT,INT,
|
||||||
LPINT,LPINT,LPSIZE);
|
LPINT,LPINT,LPSIZE);
|
||||||
BOOL WINAPI GetTextExtentExPointW(HDC,LPCWSTR,INT,INT,
|
BOOL WINAPI GetTextExtentExPointW(HDC,LPCWSTR,INT,INT,
|
||||||
LPINT,LPINT,LPSIZE);
|
LPINT,LPINT,LPSIZE);
|
||||||
|
#define GetTextExtentExPoint WINELIB_NAME_AW(GetTextExtentExPoint)
|
||||||
BOOL WINAPI GetTextExtentPointA(HDC,LPCSTR,INT,LPSIZE);
|
BOOL WINAPI GetTextExtentPointA(HDC,LPCSTR,INT,LPSIZE);
|
||||||
BOOL WINAPI GetTextExtentPointW(HDC,LPCWSTR,INT,LPSIZE);
|
BOOL WINAPI GetTextExtentPointW(HDC,LPCWSTR,INT,LPSIZE);
|
||||||
#define GetTextExtentPoint WINELIB_NAME_AW(GetTextExtentPoint)
|
#define GetTextExtentPoint WINELIB_NAME_AW(GetTextExtentPoint)
|
||||||
BOOL WINAPI GetTextExtentPoint32A(HDC,LPCSTR,INT,LPSIZE);
|
BOOL WINAPI GetTextExtentPoint32A(HDC,LPCSTR,INT,LPSIZE);
|
||||||
BOOL WINAPI GetTextExtentPoint32W(HDC,LPCWSTR,INT,LPSIZE);
|
BOOL WINAPI GetTextExtentPoint32W(HDC,LPCWSTR,INT,LPSIZE);
|
||||||
#define GetTextExtentPoint32 WINELIB_NAME_AW(GetTextExtentPoint32)
|
#define GetTextExtentPoint32 WINELIB_NAME_AW(GetTextExtentPoint32)
|
||||||
#define GetTextExtentExPoint WINELIB_NAME_AW(GetTextExtentExPoint)
|
BOOL WINAPI GetTextExtentExPointI(HDC,const WORD*,INT,INT,LPINT,LPINT,LPSIZE);
|
||||||
|
BOOL WINAPI GetTextExtentPointI(HDC,const WORD*,INT,LPSIZE);
|
||||||
INT WINAPI GetTextFaceA(HDC,INT,LPSTR);
|
INT WINAPI GetTextFaceA(HDC,INT,LPSTR);
|
||||||
INT WINAPI GetTextFaceW(HDC,INT,LPWSTR);
|
INT WINAPI GetTextFaceW(HDC,INT,LPWSTR);
|
||||||
#define GetTextFace WINELIB_NAME_AW(GetTextFace)
|
#define GetTextFace WINELIB_NAME_AW(GetTextFace)
|
||||||
|
|
|
@ -1084,8 +1084,11 @@ BOOL WINAPI GetTextExtentPoint32W(
|
||||||
DC * dc = DC_GetDCPtr( hdc );
|
DC * dc = DC_GetDCPtr( hdc );
|
||||||
if (!dc) return FALSE;
|
if (!dc) return FALSE;
|
||||||
|
|
||||||
if(dc->gdiFont)
|
if(dc->gdiFont) {
|
||||||
ret = WineEngGetTextExtentPoint(dc->gdiFont, str, count, size);
|
ret = WineEngGetTextExtentPoint(dc->gdiFont, str, count, size);
|
||||||
|
size->cx = abs(INTERNAL_XDSTOWS(dc, size->cx));
|
||||||
|
size->cy = abs(INTERNAL_YDSTOWS(dc, size->cy));
|
||||||
|
}
|
||||||
else if(dc->funcs->pGetTextExtentPoint)
|
else if(dc->funcs->pGetTextExtentPoint)
|
||||||
ret = dc->funcs->pGetTextExtentPoint( dc->physDev, str, count, size );
|
ret = dc->funcs->pGetTextExtentPoint( dc->physDev, str, count, size );
|
||||||
|
|
||||||
|
@ -1096,6 +1099,42 @@ BOOL WINAPI GetTextExtentPoint32W(
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* GetTextExtentPointI [GDI32.@]
|
||||||
|
*
|
||||||
|
* Computes width and height of the array of glyph indices.
|
||||||
|
*
|
||||||
|
* RETURNS
|
||||||
|
* Success: TRUE
|
||||||
|
* Failure: FALSE
|
||||||
|
*/
|
||||||
|
BOOL WINAPI GetTextExtentPointI(
|
||||||
|
HDC hdc, /* [in] Handle of device context */
|
||||||
|
const WORD *indices, /* [in] Address of glyph index array */
|
||||||
|
INT count, /* [in] Number of glyphs in array */
|
||||||
|
LPSIZE size) /* [out] Address of structure for string size */
|
||||||
|
{
|
||||||
|
BOOL ret = FALSE;
|
||||||
|
DC * dc = DC_GetDCPtr( hdc );
|
||||||
|
if (!dc) return FALSE;
|
||||||
|
|
||||||
|
if(dc->gdiFont) {
|
||||||
|
ret = WineEngGetTextExtentPointI(dc->gdiFont, indices, count, size);
|
||||||
|
size->cx = abs(INTERNAL_XDSTOWS(dc, size->cx));
|
||||||
|
size->cy = abs(INTERNAL_YDSTOWS(dc, size->cy));
|
||||||
|
}
|
||||||
|
else if(dc->funcs->pGetTextExtentPoint) {
|
||||||
|
FIXME("calling GetTextExtentPoint\n");
|
||||||
|
ret = dc->funcs->pGetTextExtentPoint( dc, (LPCWSTR)indices, count, size );
|
||||||
|
}
|
||||||
|
|
||||||
|
GDI_ReleaseObj( hdc );
|
||||||
|
|
||||||
|
TRACE("(%08x %p %d %p): returning %ld x %ld\n",
|
||||||
|
hdc, indices, count, size, size->cx, size->cy );
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* GetTextExtentPointA (GDI32.@)
|
* GetTextExtentPointA (GDI32.@)
|
||||||
|
|
Loading…
Reference in New Issue