Author: fireball Date: Fri Jun 11 20:18:59 2010 New Revision: 47757 URL: http://svn.reactos.org/svn/reactos?rev=47757&view=rev Log: - Merge in changes from Wine-1.1.44 related to supporting the ETO_PDY flag. Unregresses the text rendering in FF 3.5. Thanks to Jan Roeloffzen for help finding this problem and suggesting the right solution.
Modified: branches/arwinss/reactos/dll/win32/winent.drv/font.c branches/arwinss/reactos/subsystems/win32/win32k/gre/font.c Modified: branches/arwinss/reactos/dll/win32/winent.drv/font.c URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winent.drv/font.c?rev=47757&r1=47756&r2=47757&view=diff ============================================================================== --- branches/arwinss/reactos/dll/win32/winent.drv/font.c [iso-8859-1] (original) +++ branches/arwinss/reactos/dll/win32/winent.drv/font.c [iso-8859-1] Fri Jun 11 20:18:59 2010 @@ -591,8 +591,6 @@ AA_Type aa_type = AA_None; //DIBSECTION bmp; unsigned int idx; - double cosEsc, sinEsc; - LOGFONTW lf; //enum drawable_depth_type depth_type = (physDev->depth == 1) ? mono_drawable : color_drawable; //Picture tile_pict = 0; @@ -645,16 +643,6 @@ { retv = TRUE; goto done_unlock; - } - - - GetObjectW(GetCurrentObject(physDev->hUserDC, OBJ_FONT), sizeof(lf), &lf); - if(lf.lfEscapement != 0) { - cosEsc = cos(lf.lfEscapement * M_PI / 1800); - sinEsc = sin(lf.lfEscapement * M_PI / 1800); - } else { - cosEsc = 1; - sinEsc = 0; } if (flags & ETO_CLIPPED) Modified: branches/arwinss/reactos/subsystems/win32/win32k/gre/font.c URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/subsystems/win32/win32k/gre/font.c?rev=47757&r1=47756&r2=47757&view=diff ============================================================================== --- branches/arwinss/reactos/subsystems/win32/win32k/gre/font.c [iso-8859-1] (original) +++ branches/arwinss/reactos/subsystems/win32/win32k/gre/font.c [iso-8859-1] Fri Jun 11 20:18:59 2010 @@ -135,10 +135,9 @@ const RECT *lprect, LPCWSTR wstr, UINT count, const INT *lpDx, gsCacheEntryFormat *formatEntry) { - INT offset = 0, xoff = 0, yoff = 0; + POINT offset = {0, 0}; AA_Type aa_type = AA_None; INT idx; - /*double*/ int cosEsc = 1, sinEsc = 0; BRUSHGDI *pTextPen; /* Create pen for text output */ @@ -154,22 +153,31 @@ //sharp_glyph_fn = SharpGlyphGray; for(idx = 0; idx < count; idx++) { - sharp_glyph_fn(pDC, pDC->rcDcRect.left + pDC->rcVport.left + x + xoff, - pDC->rcDcRect.top + pDC->rcVport.top + y + yoff, - formatEntry->bitmaps[wstr[idx]], - &formatEntry->gis[wstr[idx]], - pTextPen); - if(lpDx) { - offset += lpDx[idx]; - xoff = offset * cosEsc; - yoff = offset * -sinEsc; - } else { - xoff += formatEntry->gis[wstr[idx]].xOff; - yoff += formatEntry->gis[wstr[idx]].yOff; + sharp_glyph_fn(pDC, + pDC->rcDcRect.left + pDC->rcVport.left + x + offset.x, + pDC->rcDcRect.top + pDC->rcVport.top + y + offset.y, + formatEntry->bitmaps[wstr[idx]], + &formatEntry->gis[wstr[idx]], + pTextPen); + if(lpDx) + { + if(flags & ETO_PDY) + { + offset.x += lpDx[idx * 2]; + offset.y += lpDx[idx * 2 + 1]; + } + else + offset.x += lpDx[idx]; + } + else + { + offset.x += formatEntry->gis[wstr[idx]].xOff; + offset.y += formatEntry->gis[wstr[idx]].yOff; } } } else { #if 0 + OUTDATED (need to merge 47289 and higher) XImage *image; int image_x, image_y, image_off_x, image_off_y, image_w, image_h; RECT extents = {0, 0, 0, 0};