Hi, are you sure that 1 means original and 9 means nine grid? I kept fields that I don't know what are for as ... unknown.
Peter Hater <7elem...@mail.bg> wrote on Wed, May 3rd, 2017, 8:23 PM: > Hi, > > Why not use constant for 0x44727753 and rename unknown1 and unknown2 to > srcImageType and dstImageType (or something similar) and use defines for > these types also 1 = OriginalImage, 9 = NineGridImage (or similar). > This will make code a little bit less magical :) IMHO > > BR, > Peter > > > On May 3, 2017, at 14:13, gadamopou...@svn.reactos.org wrote: > > > > Author: gadamopoulos > > Date: Wed May 3 11:13:23 2017 > > New Revision: 74457 > > > > URL: http://svn.reactos.org/svn/reactos?rev=74457&view=rev > > Log: > > [UXTHEME] -Use GdiDrawStream in UXTHEME_DrawImageGlyph and > > UXTHEME_DrawImageBackground. > > > > Modified: > > trunk/reactos/dll/win32/uxtheme/draw.c > > trunk/reactos/dll/win32/uxtheme/uxthemep.h > > > > Modified: trunk/reactos/dll/win32/uxtheme/draw.c > > URL: > > http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/uxtheme/draw.c?rev=74457&r1=74456&r2=74457&view=diff > > ============================================================================== > > --- trunk/reactos/dll/win32/uxtheme/draw.c [iso-8859-1] (original) > > +++ trunk/reactos/dll/win32/uxtheme/draw.c [iso-8859-1] Wed May 3 > > 11:13:23 2017 > > @@ -269,163 +269,6 @@ > > return S_OK; > > } > > > > -/*********************************************************************** > > - * UXTHEME_StretchBlt > > - * > > - * Pseudo TransparentBlt/StretchBlt > > - */ > > -static inline BOOL UXTHEME_StretchBlt(HDC hdcDst, int nXOriginDst, int > > nYOriginDst, int nWidthDst, int nHeightDst, > > - HDC hdcSrc, int nXOriginSrc, int > > nYOriginSrc, int nWidthSrc, int nHeightSrc, > > - INT transparent, COLORREF transcolor) > > -{ > > - static const BLENDFUNCTION blendFunc = > > - { > > - AC_SRC_OVER, /* BlendOp */ > > - 0, /* BlendFlag */ > > - 255, /* SourceConstantAlpha */ > > - AC_SRC_ALPHA /* AlphaFormat */ > > - }; > > - > > - BOOL ret = TRUE; > > - int old_stretch_mode; > > - POINT old_brush_org; > > - > > - old_stretch_mode = SetStretchBltMode(hdcDst, HALFTONE); > > - SetBrushOrgEx(hdcDst, nXOriginDst, nYOriginDst, &old_brush_org); > > - > > - if (transparent == ALPHABLEND_BINARY) { > > - /* Ensure we don't pass any negative values to TransparentBlt */ > > - ret = TransparentBlt(hdcDst, nXOriginDst, nYOriginDst, > > abs(nWidthDst), abs(nHeightDst), > > - hdcSrc, nXOriginSrc, nYOriginSrc, > > abs(nWidthSrc), abs(nHeightSrc), > > - transcolor); > > - } else if ((transparent == ALPHABLEND_NONE) || > > - !AlphaBlend(hdcDst, nXOriginDst, nYOriginDst, nWidthDst, > > nHeightDst, > > - hdcSrc, nXOriginSrc, nYOriginSrc, nWidthSrc, > > nHeightSrc, > > - blendFunc)) > > - { > > - ret = StretchBlt(hdcDst, nXOriginDst, nYOriginDst, nWidthDst, > > nHeightDst, > > - hdcSrc, nXOriginSrc, nYOriginSrc, nWidthSrc, > > nHeightSrc, > > - SRCCOPY); > > - } > > - > > - SetBrushOrgEx(hdcDst, old_brush_org.x, old_brush_org.y, NULL); > > - SetStretchBltMode(hdcDst, old_stretch_mode); > > - > > - return ret; > > -} > > - > > -/*********************************************************************** > > - * UXTHEME_Blt > > - * > > - * Simplify sending same width/height for both source and dest > > - */ > > -static inline BOOL UXTHEME_Blt(HDC hdcDest, int nXOriginDest, int > > nYOriginDest, int nWidthDest, int nHeightDest, > > - HDC hdcSrc, int nXOriginSrc, int > > nYOriginSrc, > > - INT transparent, COLORREF transcolor) > > -{ > > - return UXTHEME_StretchBlt(hdcDest, nXOriginDest, nYOriginDest, > > nWidthDest, nHeightDest, > > - hdcSrc, nXOriginSrc, nYOriginSrc, > > nWidthDest, nHeightDest, > > - transparent, transcolor); > > -} > > - > > -/*********************************************************************** > > - * UXTHEME_SizedBlt > > - * > > - * Stretches or tiles, depending on sizingtype. > > - */ > > -static inline BOOL UXTHEME_SizedBlt (HDC hdcDst, int nXOriginDst, int > > nYOriginDst, > > - int nWidthDst, int nHeightDst, > > - HDC hdcSrc, int nXOriginSrc, int > > nYOriginSrc, > > - int nWidthSrc, int nHeightSrc, > > - int sizingtype, > > - INT transparent, COLORREF transcolor) > > -{ > > - if (sizingtype == ST_TILE) > > - { > > - HDC hdcTemp; > > - BOOL result = FALSE; > > - > > - if (!nWidthSrc || !nHeightSrc) return TRUE; > > - > > - /* For destination width/height less than or equal to source > > - width/height, do not bother with memory bitmap optimization */ > > - if (nWidthSrc >= nWidthDst && nHeightSrc >= nHeightDst) > > - { > > - int bltWidth = min (nWidthDst, nWidthSrc); > > - int bltHeight = min (nHeightDst, nHeightSrc); > > - > > - return UXTHEME_Blt (hdcDst, nXOriginDst, nYOriginDst, > > bltWidth, bltHeight, > > - hdcSrc, nXOriginSrc, nYOriginSrc, > > - transparent, transcolor); > > - } > > - > > - /* Create a DC with a bitmap consisting of a tiling of the source > > - bitmap, with standard GDI functions. This is faster than an > > - iteration with UXTHEME_Blt(). */ > > - hdcTemp = CreateCompatibleDC(hdcSrc); > > - if (hdcTemp != 0) > > - { > > - HBITMAP bitmapTemp; > > - HBITMAP bitmapOrig; > > - int nWidthTemp, nHeightTemp; > > - int xOfs, xRemaining; > > - int yOfs, yRemaining; > > - int growSize; > > - > > - /* Calculate temp dimensions of integer multiples of source > > dimensions */ > > - nWidthTemp = ((nWidthDst + nWidthSrc - 1) / nWidthSrc) * > > nWidthSrc; > > - nHeightTemp = ((nHeightDst + nHeightSrc - 1) / nHeightSrc) * > > nHeightSrc; > > - bitmapTemp = CreateCompatibleBitmap(hdcSrc, nWidthTemp, > > nHeightTemp); > > - bitmapOrig = SelectObject(hdcTemp, bitmapTemp); > > - > > - /* Initial copy of bitmap */ > > - BitBlt(hdcTemp, 0, 0, nWidthSrc, nHeightSrc, hdcSrc, > > nXOriginSrc, nYOriginSrc, SRCCOPY); > > - > > - /* Extend bitmap in the X direction. Growth of width is > > exponential */ > > - xOfs = nWidthSrc; > > - xRemaining = nWidthTemp - nWidthSrc; > > - growSize = nWidthSrc; > > - while (xRemaining > 0) > > - { > > - growSize = min(growSize, xRemaining); > > - BitBlt(hdcTemp, xOfs, 0, growSize, nHeightSrc, hdcTemp, 0, > > 0, SRCCOPY); > > - xOfs += growSize; > > - xRemaining -= growSize; > > - growSize *= 2; > > - } > > - > > - /* Extend bitmap in the Y direction. Growth of height is > > exponential */ > > - yOfs = nHeightSrc; > > - yRemaining = nHeightTemp - nHeightSrc; > > - growSize = nHeightSrc; > > - while (yRemaining > 0) > > - { > > - growSize = min(growSize, yRemaining); > > - BitBlt(hdcTemp, 0, yOfs, nWidthTemp, growSize, hdcTemp, 0, > > 0, SRCCOPY); > > - yOfs += growSize; > > - yRemaining -= growSize; > > - growSize *= 2; > > - } > > - > > - /* Use temporary hdc for source */ > > - result = UXTHEME_Blt (hdcDst, nXOriginDst, nYOriginDst, > > nWidthDst, nHeightDst, > > - hdcTemp, 0, 0, > > - transparent, transcolor); > > - > > - SelectObject(hdcTemp, bitmapOrig); > > - DeleteObject(bitmapTemp); > > - } > > - DeleteDC(hdcTemp); > > - return result; > > - } > > - else > > - { > > - return UXTHEME_StretchBlt (hdcDst, nXOriginDst, nYOriginDst, > > nWidthDst, nHeightDst, > > - hdcSrc, nXOriginSrc, nYOriginSrc, > > nWidthSrc, nHeightSrc, > > - transparent, transcolor); > > - } > > -} > > - > > /* Get transparency parameters passed to UXTHEME_StretchBlt() - the > > parameters > > * depend on whether the image has full alpha or whether it is > > * color-transparent or just opaque. */ > > @@ -468,8 +311,6 @@ > > { > > HRESULT hr; > > HBITMAP bmpSrc = NULL; > > - HDC hdcSrc = NULL; > > - HGDIOBJ oldSrc = NULL; > > RECT rcSrc; > > INT transparent = 0; > > COLORREF transparentcolor; > > @@ -477,18 +318,13 @@ > > int halign = HA_CENTER; > > POINT dstSize; > > POINT srcSize; > > - POINT topleft; > > BOOL hasAlpha; > > + RECT rcDst; > > + GDI_DRAW_STREAM DrawStream; > > > > hr = UXTHEME_LoadImage(hTheme, hdc, iPartId, iStateId, pRect, TRUE, > > &bmpSrc, &rcSrc, &hasAlpha); > > if(FAILED(hr)) return hr; > > - hdcSrc = CreateCompatibleDC(hdc); > > - if(!hdcSrc) { > > - hr = HRESULT_FROM_WIN32(GetLastError()); > > - return hr; > > - } > > - oldSrc = SelectObject(hdcSrc, bmpSrc); > > > > dstSize.x = pRect->right-pRect->left; > > dstSize.y = pRect->bottom-pRect->top; > > @@ -500,22 +336,37 @@ > > GetThemeEnumValue(hTheme, iPartId, iStateId, TMT_VALIGN, &valign); > > GetThemeEnumValue(hTheme, iPartId, iStateId, TMT_HALIGN, &halign); > > > > - topleft.x = pRect->left; > > - topleft.y = pRect->top; > > - if(halign == HA_CENTER) topleft.x += (dstSize.x/2)-(srcSize.x/2); > > - else if(halign == HA_RIGHT) topleft.x += dstSize.x-srcSize.x; > > - if(valign == VA_CENTER) topleft.y += (dstSize.y/2)-(srcSize.y/2); > > - else if(valign == VA_BOTTOM) topleft.y += dstSize.y-srcSize.y; > > - > > - if(!UXTHEME_Blt(hdc, topleft.x, topleft.y, srcSize.x, srcSize.y, > > - hdcSrc, rcSrc.left, rcSrc.top, > > - transparent, transparentcolor)) { > > - hr = HRESULT_FROM_WIN32(GetLastError()); > > - } > > - > > - SelectObject(hdcSrc, oldSrc); > > - DeleteDC(hdcSrc); > > - return hr; > > + rcDst = *pRect; > > + if(halign == HA_CENTER) rcDst.left += (dstSize.x/2)-(srcSize.x/2); > > + else if(halign == HA_RIGHT) rcDst.left += dstSize.x-srcSize.x; > > + if(valign == VA_CENTER) rcDst.top += (dstSize.y/2)-(srcSize.y/2); > > + else if(valign == VA_BOTTOM) rcDst.top += dstSize.y-srcSize.y; > > + > > + rcDst.right = rcDst.left + srcSize.x; > > + rcDst.bottom = rcDst.top + srcSize.y; > > + > > + DrawStream.signature = 0x44727753; > > + DrawStream.reserved = 0; > > + DrawStream.unknown1 = 1; > > + DrawStream.unknown2 = 9; > > + DrawStream.hDC = hdc; > > + DrawStream.hImage = bmpSrc; > > + DrawStream.crTransparent = transparentcolor; > > + DrawStream.rcSrc = rcSrc; > > + DrawStream.rcDest = rcDst; > > + DrawStream.leftSizingMargin = 0; > > + DrawStream.rightSizingMargin = 0; > > + DrawStream.topSizingMargin = 0; > > + DrawStream.bottomSizingMargin = 0; > > + DrawStream.drawOption = DS_TRUESIZE; > > + > > + if (transparent == ALPHABLEND_FULL) > > + DrawStream.drawOption |= DS_TRANSPARENTALPHA; > > + else if (transparent == ALPHABLEND_BINARY) > > + DrawStream.drawOption |= DS_TRANSPARENTCLR; > > + > > + GdiDrawStream(hdc, sizeof(DrawStream), &DrawStream); > > + return HRESULT_FROM_WIN32(GetLastError()); > > } > > > > /*********************************************************************** > > @@ -655,40 +506,33 @@ > > const DTBGOPTS *pOptions) > > { > > HRESULT hr = S_OK; > > - HBITMAP bmpSrc, bmpSrcResized = NULL; > > - HGDIOBJ oldSrc; > > - HDC hdcSrc, hdcOrigSrc = NULL; > > + HBITMAP bmpSrc; > > RECT rcSrc; > > RECT rcDst; > > POINT dstSize; > > - POINT srcSize; > > POINT drawSize; > > int sizingtype = ST_STRETCH; > > INT transparent; > > COLORREF transparentcolor = 0; > > BOOL hasAlpha; > > - > > - hr = UXTHEME_LoadImage(hTheme, hdc, iPartId, iStateId, pRect, FALSE, > > - &bmpSrc, &rcSrc, &hasAlpha); > > - if(FAILED(hr)) return hr; > > - hdcSrc = CreateCompatibleDC(hdc); > > - if(!hdcSrc) { > > - hr = HRESULT_FROM_WIN32(GetLastError()); > > + MARGINS sm; > > + GDI_DRAW_STREAM DrawStream; > > + > > + hr = UXTHEME_LoadImage(hTheme, hdc, iPartId, iStateId, pRect, FALSE, > > &bmpSrc, &rcSrc, &hasAlpha); > > + if(FAILED(hr)) > > return hr; > > - } > > - oldSrc = SelectObject(hdcSrc, bmpSrc); > > + get_transparency (hTheme, iPartId, iStateId, hasAlpha, &transparent, > > &transparentcolor, FALSE); > > > > rcDst = *pRect; > > - > > - get_transparency (hTheme, iPartId, iStateId, hasAlpha, &transparent, > > - &transparentcolor, FALSE); > > - > > dstSize.x = rcDst.right-rcDst.left; > > dstSize.y = rcDst.bottom-rcDst.top; > > - srcSize.x = rcSrc.right-rcSrc.left; > > - srcSize.y = rcSrc.bottom-rcSrc.top; > > - > > + > > + GetThemeMargins(hTheme, hdc, iPartId, iStateId, TMT_SIZINGMARGINS, > > NULL, &sm); > > GetThemeEnumValue(hTheme, iPartId, iStateId, TMT_SIZINGTYPE, > > &sizingtype); > > + > > + /*FIXME: Is this ever used? */ > > + /*GetThemeBool(hTheme, iPartId, iStateId, TMT_BORDERONLY, > > &borderonly);*/ > > + > > if(sizingtype == ST_TRUESIZE) { > > int valign = VA_CENTER, halign = HA_CENTER; > > > > @@ -706,161 +550,36 @@ > > rcDst.top = rcDst.bottom - drawSize.y; > > rcDst.right = rcDst.left + drawSize.x; > > rcDst.bottom = rcDst.top + drawSize.y; > > - if(!UXTHEME_StretchBlt(hdc, rcDst.left, rcDst.top, drawSize.x, > > drawSize.y, > > - hdcSrc, rcSrc.left, rcSrc.top, srcSize.x, > > srcSize.y, > > - transparent, transparentcolor)) > > - hr = HRESULT_FROM_WIN32(GetLastError()); > > - } > > - else { > > - HDC hdcDst = NULL; > > - MARGINS sm; > > - POINT org; > > - > > - dstSize.x = abs(dstSize.x); > > - dstSize.y = abs(dstSize.y); > > - > > - GetThemeMargins(hTheme, hdc, iPartId, iStateId, TMT_SIZINGMARGINS, > > NULL, &sm); > > - > > - /* Resize source image if destination smaller than margins */ > > -#ifndef __REACTOS__ > > - /* Revert Wine Commit 2b650fa as it breaks themed Explorer Toolbar > > Separators > > - FIXME: Revisit this when the bug is fixed. CORE-9636 and Wine > > Bug #38538 */ > > - if (sm.cyTopHeight + sm.cyBottomHeight > dstSize.y || > > sm.cxLeftWidth + sm.cxRightWidth > dstSize.x) { > > - if (sm.cyTopHeight + sm.cyBottomHeight > dstSize.y) { > > - sm.cyTopHeight = MulDiv(sm.cyTopHeight, dstSize.y, > > srcSize.y); > > - sm.cyBottomHeight = dstSize.y - sm.cyTopHeight; > > - srcSize.y = dstSize.y; > > - } > > - > > - if (sm.cxLeftWidth + sm.cxRightWidth > dstSize.x) { > > - sm.cxLeftWidth = MulDiv(sm.cxLeftWidth, dstSize.x, > > srcSize.x); > > - sm.cxRightWidth = dstSize.x - sm.cxLeftWidth; > > - srcSize.x = dstSize.x; > > - } > > - > > - hdcOrigSrc = hdcSrc; > > - hdcSrc = CreateCompatibleDC(NULL); > > - bmpSrcResized = CreateBitmap(srcSize.x, srcSize.y, 1, 32, > > NULL); > > - SelectObject(hdcSrc, bmpSrcResized); > > - > > - UXTHEME_StretchBlt(hdcSrc, 0, 0, srcSize.x, srcSize.y, > > hdcOrigSrc, rcSrc.left, rcSrc.top, > > - rcSrc.right - rcSrc.left, rcSrc.bottom - > > rcSrc.top, transparent, transparentcolor); > > - > > - rcSrc.left = 0; > > - rcSrc.top = 0; > > - rcSrc.right = srcSize.x; > > - rcSrc.bottom = srcSize.y; > > - } > > -#endif /* __REACTOS__ */ > > - > > - hdcDst = hdc; > > - OffsetViewportOrgEx(hdcDst, rcDst.left, rcDst.top, &org); > > - > > - /* Upper left corner */ > > - if(!UXTHEME_Blt(hdcDst, 0, 0, sm.cxLeftWidth, sm.cyTopHeight, > > - hdcSrc, rcSrc.left, rcSrc.top, > > - transparent, transparentcolor)) { > > - hr = HRESULT_FROM_WIN32(GetLastError()); > > - goto draw_error; > > - } > > - /* Upper right corner */ > > - if(!UXTHEME_Blt (hdcDst, dstSize.x-sm.cxRightWidth, 0, > > - sm.cxRightWidth, sm.cyTopHeight, > > - hdcSrc, rcSrc.right-sm.cxRightWidth, rcSrc.top, > > - transparent, transparentcolor)) { > > - hr = HRESULT_FROM_WIN32(GetLastError()); > > - goto draw_error; > > - } > > - /* Lower left corner */ > > - if(!UXTHEME_Blt (hdcDst, 0, dstSize.y-sm.cyBottomHeight, > > - sm.cxLeftWidth, sm.cyBottomHeight, > > - hdcSrc, rcSrc.left, > > rcSrc.bottom-sm.cyBottomHeight, > > - transparent, transparentcolor)) { > > - hr = HRESULT_FROM_WIN32(GetLastError()); > > - goto draw_error; > > - } > > - /* Lower right corner */ > > - if(!UXTHEME_Blt (hdcDst, dstSize.x-sm.cxRightWidth, > > dstSize.y-sm.cyBottomHeight, > > - sm.cxRightWidth, sm.cyBottomHeight, > > - hdcSrc, rcSrc.right-sm.cxRightWidth, > > rcSrc.bottom-sm.cyBottomHeight, > > - transparent, transparentcolor)) { > > - hr = HRESULT_FROM_WIN32(GetLastError()); > > - goto draw_error; > > - } > > - > > - if ((sizingtype == ST_STRETCH) || (sizingtype == ST_TILE)) { > > - int destCenterWidth = dstSize.x - (sm.cxLeftWidth + > > sm.cxRightWidth); > > - int srcCenterWidth = srcSize.x - (sm.cxLeftWidth + > > sm.cxRightWidth); > > - int destCenterHeight = dstSize.y - (sm.cyTopHeight + > > sm.cyBottomHeight); > > - int srcCenterHeight = srcSize.y - (sm.cyTopHeight + > > sm.cyBottomHeight); > > - > > - if(destCenterWidth > 0) { > > - /* Center top */ > > - if(!UXTHEME_SizedBlt (hdcDst, sm.cxLeftWidth, 0, > > - destCenterWidth, sm.cyTopHeight, > > - hdcSrc, rcSrc.left+sm.cxLeftWidth, > > rcSrc.top, > > - srcCenterWidth, sm.cyTopHeight, > > - sizingtype, transparent, > > transparentcolor)) { > > - hr = HRESULT_FROM_WIN32(GetLastError()); > > - goto draw_error; > > - } > > - /* Center bottom */ > > - if(!UXTHEME_SizedBlt (hdcDst, sm.cxLeftWidth, > > dstSize.y-sm.cyBottomHeight, > > - destCenterWidth, sm.cyBottomHeight, > > - hdcSrc, rcSrc.left+sm.cxLeftWidth, > > rcSrc.bottom-sm.cyBottomHeight, > > - srcCenterWidth, sm.cyBottomHeight, > > - sizingtype, transparent, > > transparentcolor)) { > > - hr = HRESULT_FROM_WIN32(GetLastError()); > > - goto draw_error; > > - } > > - } > > - if(destCenterHeight > 0) { > > - /* Left center */ > > - if(!UXTHEME_SizedBlt (hdcDst, 0, sm.cyTopHeight, > > - sm.cxLeftWidth, destCenterHeight, > > - hdcSrc, rcSrc.left, > > rcSrc.top+sm.cyTopHeight, > > - sm.cxLeftWidth, srcCenterHeight, > > - sizingtype, > > - transparent, transparentcolor)) { > > - hr = HRESULT_FROM_WIN32(GetLastError()); > > - goto draw_error; > > - } > > - /* Right center */ > > - if(!UXTHEME_SizedBlt (hdcDst, dstSize.x-sm.cxRightWidth, > > sm.cyTopHeight, > > - sm.cxRightWidth, destCenterHeight, > > - hdcSrc, rcSrc.right-sm.cxRightWidth, > > rcSrc.top+sm.cyTopHeight, > > - sm.cxRightWidth, srcCenterHeight, > > - sizingtype, transparent, > > transparentcolor)) { > > - hr = HRESULT_FROM_WIN32(GetLastError()); > > - goto draw_error; > > - } > > - } > > - if(destCenterHeight > 0 && destCenterWidth > 0) { > > - BOOL borderonly = FALSE; > > - GetThemeBool(hTheme, iPartId, iStateId, TMT_BORDERONLY, > > &borderonly); > > - if(!borderonly) { > > - /* Center */ > > - if(!UXTHEME_SizedBlt (hdcDst, sm.cxLeftWidth, > > sm.cyTopHeight, > > - destCenterWidth, > > destCenterHeight, > > - hdcSrc, > > rcSrc.left+sm.cxLeftWidth, rcSrc.top+sm.cyTopHeight, > > - srcCenterWidth, srcCenterHeight, > > - sizingtype, transparent, > > transparentcolor)) { > > - hr = HRESULT_FROM_WIN32(GetLastError()); > > - goto draw_error; > > - } > > - } > > - } > > - } > > - > > -draw_error: > > - SetViewportOrgEx (hdcDst, org.x, org.y, NULL); > > - } > > - SelectObject(hdcSrc, oldSrc); > > - DeleteDC(hdcSrc); > > - if (bmpSrcResized) DeleteObject(bmpSrcResized); > > - if (hdcOrigSrc) DeleteDC(hdcOrigSrc); > > - *pRect = rcDst; > > - return hr; > > + *pRect = rcDst; > > + } > > + > > + DrawStream.signature = 0x44727753; > > + DrawStream.reserved = 0; > > + DrawStream.unknown1 = 1; > > + DrawStream.unknown2 = 9; > > + DrawStream.hDC = hdc; > > + DrawStream.hImage = bmpSrc; > > + DrawStream.crTransparent = transparentcolor; > > + DrawStream.rcSrc = rcSrc; > > + DrawStream.rcDest = rcDst; > > + DrawStream.leftSizingMargin = sm.cxLeftWidth; > > + DrawStream.rightSizingMargin = sm.cxRightWidth; > > + DrawStream.topSizingMargin = sm.cyTopHeight; > > + DrawStream.bottomSizingMargin = sm.cyBottomHeight; > > + DrawStream.drawOption = 0; > > + > > + if (transparent == ALPHABLEND_FULL) > > + DrawStream.drawOption |= DS_TRANSPARENTALPHA; > > + else if (transparent == ALPHABLEND_BINARY) > > + DrawStream.drawOption |= DS_TRANSPARENTCLR; > > + > > + if (sizingtype == ST_TILE) > > + DrawStream.drawOption |= DS_TILE; > > + else if (sizingtype == ST_TRUESIZE) > > + DrawStream.drawOption |= DS_TRUESIZE; > > + > > + GdiDrawStream(hdc, sizeof(DrawStream), &DrawStream); > > + return HRESULT_FROM_WIN32(GetLastError()); > > } > > > > /*********************************************************************** > > @@ -1050,7 +769,9 @@ > > /* This should never happen, and hence I don't know what to return > > */ > > hr = E_FAIL; > > } > > +#if 0 > > if(SUCCEEDED(hr)) > > +#endif > > { > > RECT rcGlyph = *pRect; > > MARGINS margin; > > > > Modified: trunk/reactos/dll/win32/uxtheme/uxthemep.h > > URL: > > http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/uxtheme/uxthemep.h?rev=74457&r1=74456&r2=74457&view=diff > > ============================================================================== > > --- trunk/reactos/dll/win32/uxtheme/uxthemep.h [iso-8859-1] (original) > > +++ trunk/reactos/dll/win32/uxtheme/uxthemep.h [iso-8859-1] Wed May 3 > > 11:13:23 2017 > > @@ -14,6 +14,7 @@ > > #include <winnls.h> > > #include <windowsx.h> > > #include <undocuser.h> > > +#include <undocgdi.h> > > #include <uxtheme.h> > > #include <uxundoc.h> > > #include <vfwmsgs.h> > > > > > > > > > _______________________________________________ > Ros-dev mailing list > Ros-dev@reactos.org > http://www.reactos.org/mailman/listinfo/ros-dev _______________________________________________ Ros-dev mailing list Ros-dev@reactos.org http://www.reactos.org/mailman/listinfo/ros-dev