https://git.reactos.org/?p=reactos.git;a=commitdiff;h=8767aada7563962a1e301…
commit 8767aada7563962a1e3015a4dcbab22770c59850
Author: James Tabor <james.tabor(a)reactos.org>
AuthorDate: Mon Sep 27 19:08:43 2021 -0500
Commit: James Tabor <james.tabor(a)reactos.org>
CommitDate: Mon Sep 27 19:08:43 2021 -0500
[GDI32] Fix IV msvc build.
---
win32ss/gdi/gdi32/objects/dc.c | 22 ++++++++++++++++++++--
win32ss/gdi/gdi32/wine/emfdc.c | 14 +++++++-------
win32ss/gdi/gdi32/wine/metadc.c | 4 ++--
3 files changed, 29 insertions(+), 11 deletions(-)
diff --git a/win32ss/gdi/gdi32/objects/dc.c b/win32ss/gdi/gdi32/objects/dc.c
index f929dfdd011..3f20b9f6392 100644
--- a/win32ss/gdi/gdi32/objects/dc.c
+++ b/win32ss/gdi/gdi32/objects/dc.c
@@ -1314,8 +1314,26 @@ SelectPalette(
HPALETTE hpal,
BOOL bForceBackground)
{
- HANDLE_METADC(HPALETTE, SelectPalette, NULL, hdc, hpal);
-
+ if (GDI_HANDLE_GET_TYPE(hdc) != GDILoObjType_LO_DC_TYPE)
+ {
+ if (GDI_HANDLE_GET_TYPE(hdc) == GDILoObjType_LO_METADC16_TYPE)
+ {
+ return (HPALETTE)((ULONG_PTR)METADC_SelectPalette(hdc, hpal));
+ }
+ else
+ {
+ PLDC pLDC = GdiGetLDC(hdc);
+ if ( !pLDC )
+ {
+ SetLastError(ERROR_INVALID_HANDLE);
+ return NULL;
+ }
+ if ( pLDC->iType == LDC_EMFLDC && !(EMFDC_SelectPalette(pLDC,
hpal)) )
+ {
+ return NULL;
+ }
+ }
+ }
return NtUserSelectPalette(hdc, hpal, bForceBackground);
}
diff --git a/win32ss/gdi/gdi32/wine/emfdc.c b/win32ss/gdi/gdi32/wine/emfdc.c
index 75abcf94837..c396f3df3a3 100644
--- a/win32ss/gdi/gdi32/wine/emfdc.c
+++ b/win32ss/gdi/gdi32/wine/emfdc.c
@@ -184,7 +184,7 @@ static UINT get_bitmap_info( HDC *hdc, HBITMAP *bitmap, BITMAPINFO
*info )
bpp = info->bmiHeader.biBitCount;
if (bpp <= 8)
- return sizeof(BITMAPINFOHEADER) + (1 << bpp) * sizeof(RGBQUAD);
+ return sizeof(BITMAPINFOHEADER) + (1L << bpp) * sizeof(RGBQUAD);
else if (bpp == 16 || bpp == 32)
return sizeof(BITMAPINFOHEADER) + 3 * sizeof(RGBQUAD);
@@ -853,7 +853,7 @@ static BOOL emfdc_polylinegon( WINEDC *dc_attr, const POINT *points,
INT count,
DWORD size;
BOOL ret, use_small_emr = can_use_short_points( points, count );
- size = use_small_emr ? offsetof( EMRPOLYLINE16, apts[count] ) : offsetof(
EMRPOLYLINE, aptl[count] );
+ size = use_small_emr ? (DWORD)offsetof( EMRPOLYLINE16, apts[count] ) :
(DWORD)offsetof( EMRPOLYLINE, aptl[count] );
emr = HeapAlloc( GetProcessHeap(), 0, size );
emr->emr.iType = use_small_emr ? type + EMR_POLYLINE16 - EMR_POLYLINE : type;
@@ -970,8 +970,8 @@ BOOL EMFDC_PolyDraw( WINEDC *dc_attr, const POINT *pts, const BYTE
*types, DWORD
BOOL use_small_emr = can_use_short_points( pts, count );
DWORD size;
- size = use_small_emr ? offsetof( EMRPOLYDRAW16, apts[count] )
- : offsetof( EMRPOLYDRAW, aptl[count] );
+ size = use_small_emr ? (DWORD)offsetof( EMRPOLYDRAW16, apts[count] )
+ : (DWORD)offsetof( EMRPOLYDRAW, aptl[count] );
size += (count + 3) & ~3;
if (!(emr = HeapAlloc( GetProcessHeap(), 0, size ))) return FALSE;
@@ -2273,7 +2273,7 @@ BOOL EMFDC_WriteNamedEscape( WINEDC *dc_attr, PWCHAR pDriver, INT
nEscape, INT c
rounded_size = (cbInput+3) & ~3;
total = offsetof(EMRNAMEDESCAPE,Data) + rounded_size;
- total += sizestr = (wcslen(pDriver) + 1 ) * sizeof(WCHAR);
+ total += sizestr = (UINT)((wcslen(pDriver) + 1 ) * sizeof(WCHAR));
pemr = RtlAllocateHeap( GetProcessHeap(), 0, total );
if ( !pemr )
@@ -2369,8 +2369,8 @@ HDC WINAPI CreateEnhMetaFileA( HDC hdc, const char *filename, const
RECT *rect,
if(description)
{
- len1 = strlen(description);
- len2 = strlen(description + len1 + 1);
+ len1 = (DWORD)strlen(description);
+ len2 = (DWORD)strlen(description + len1 + 1);
total = MultiByteToWideChar( CP_ACP, 0, description, len1 + len2 + 3, NULL, 0 );
descriptionW = HeapAlloc( GetProcessHeap(), 0, total * sizeof(WCHAR) );
MultiByteToWideChar( CP_ACP, 0, description, len1 + len2 + 3, descriptionW, total
);
diff --git a/win32ss/gdi/gdi32/wine/metadc.c b/win32ss/gdi/gdi32/wine/metadc.c
index 38ba8e6f641..c159880c93b 100644
--- a/win32ss/gdi/gdi32/wine/metadc.c
+++ b/win32ss/gdi/gdi32/wine/metadc.c
@@ -667,7 +667,7 @@ static INT16 metadc_create_region( struct metadc *metadc, HRGN hrgn )
mr->rdParm[1] = 6;
mr->rdParm[2] = 0x2f6;
mr->rdParm[3] = 0;
- mr->rdParm[4] = (param - &mr->rdFunction) * sizeof(WORD);
+ mr->rdParm[4] = (WORD)((param - &mr->rdFunction) * sizeof(WORD));
mr->rdParm[5] = bands;
mr->rdParm[6] = max_bounds;
mr->rdParm[7] = rgndata->rdh.rcBound.left;
@@ -757,7 +757,7 @@ static BOOL metadc_stretchblt( HDC hdc, INT x_dst, INT y_dst, INT
width_dst, INT
bpp = src_info.bmiHeader.biBitCount;
if (bpp <= 8)
- bmi_size = sizeof(BITMAPINFOHEADER) + (1 << bpp) * sizeof(RGBQUAD);
+ bmi_size = sizeof(BITMAPINFOHEADER) + (1L << bpp) * sizeof(RGBQUAD);
else if (bpp == 16 || bpp == 32)
bmi_size = sizeof(BITMAPINFOHEADER) + 3 * sizeof(RGBQUAD);
else