Author: akhaldi
Date: Sat Jun 3 22:34:09 2017
New Revision: 74831
URL:
http://svn.reactos.org/svn/reactos?rev=74831&view=rev
Log:
[OLEAUT32] Sync with Wine Staging 2.9. CORE-13362
6e7179e oleaut32: Make OleLoadPicture load DIBs using WIC decoder.
1762f89 oleaut32: Use VariantChangeTypeEx to convert to VT_BOOL.
c260de0 oleaut32: Remove dead code.
efc86ec oleaut32: Fix parse error when converting non-ascii string to VT_DATE.
f506ffc oleaut32: Use VariantInit() rather than open coding it.
c082edb oleaut32: Remove redundant call to VariantClear().
7fb4809 oleaut32: Implement GetAltMonthNames().
d90fcb4 oleaut32: Fix OleLoadPictureEx spec file entry.
Modified:
trunk/reactos/dll/win32/oleaut32/oleaut.c
trunk/reactos/dll/win32/oleaut32/oleaut32.spec
trunk/reactos/dll/win32/oleaut32/olepicture.c
trunk/reactos/dll/win32/oleaut32/variant.c
trunk/reactos/dll/win32/oleaut32/vartype.c
trunk/reactos/media/doc/README.WINE
Modified: trunk/reactos/dll/win32/oleaut32/oleaut.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/oleaut.…
==============================================================================
--- trunk/reactos/dll/win32/oleaut32/oleaut.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/oleaut32/oleaut.c [iso-8859-1] Sat Jun 3 22:34:09 2017
@@ -918,3 +918,112 @@
/* FIXME: make an extended conversation from HICON to HCURSOR */
return CopyCursor(hIcon);
}
+
+/***********************************************************************
+ * GetAltMonthNames (OLEAUT32.@)
+ */
+HRESULT WINAPI GetAltMonthNames(LCID lcid, LPOLESTR **str)
+{
+ static const WCHAR ar_month1W[] = {0x645,0x62d,0x631,0x645,0};
+ static const WCHAR ar_month2W[] = {0x635,0x641,0x631,0};
+ static const WCHAR ar_month3W[] = {0x631,0x628,0x64a,0x639,'
',0x627,0x644,0x627,0x648,0x644,0};
+ static const WCHAR ar_month4W[] = {0x631,0x628,0x64a,0x639,'
',0x627,0x644,0x62b,0x627,0x646,0x64a,0};
+ static const WCHAR ar_month5W[] = {0x62c,0x645,0x627,0x62f,0x649,'
',0x627,0x644,0x627,0x648,0x644,0x649,0};
+ static const WCHAR ar_month6W[] = {0x62c,0x645,0x627,0x62f,0x649,'
',0x627,0x644,0x62b,0x627,0x646,0x64a,0x629,0};
+ static const WCHAR ar_month7W[] = {0x631,0x62c,0x628,0};
+ static const WCHAR ar_month8W[] = {0x634,0x639,0x628,0x627,0x646,0};
+ static const WCHAR ar_month9W[] = {0x631,0x645,0x636,0x627,0x646,0};
+ static const WCHAR ar_month10W[] = {0x634,0x648,0x627,0x643,0};
+ static const WCHAR ar_month11W[] = {0x630,0x648,'
',0x627,0x644,0x642,0x639,0x62f,0x629,0};
+ static const WCHAR ar_month12W[] = {0x630,0x648,'
',0x627,0x644,0x62d,0x62c,0x629,0};
+
+ static const WCHAR *arabic_hijri[] =
+ {
+ ar_month1W,
+ ar_month2W,
+ ar_month3W,
+ ar_month4W,
+ ar_month5W,
+ ar_month6W,
+ ar_month7W,
+ ar_month8W,
+ ar_month9W,
+ ar_month10W,
+ ar_month11W,
+ ar_month12W,
+ NULL
+ };
+
+ static const WCHAR pl_month1W[] =
{'s','t','y','c','z','n','i','a',0};
+ static const WCHAR pl_month2W[] =
{'l','u','t','e','g','o',0};
+ static const WCHAR pl_month3W[] =
{'m','a','r','c','a',0};
+ static const WCHAR pl_month4W[] =
{'k','w','i','e','t','n','i','a',0};
+ static const WCHAR pl_month5W[] =
{'m','a','j','a',0};
+ static const WCHAR pl_month6W[] =
{'c','z','e','r','w','c','a',0};
+ static const WCHAR pl_month7W[] =
{'l','i','p','c','a',0};
+ static const WCHAR pl_month8W[] =
{'s','i','e','r','p','n','i','a',0};
+ static const WCHAR pl_month9W[] =
{'w','r','z','e',0x15b,'n','i','a',0};
+ static const WCHAR pl_month10W[] =
{'p','a',0x17a,'d','z','i','e','r','n','i','k','a',0};
+ static const WCHAR pl_month11W[] =
{'l','i','s','t','o','p','a','d','a',0};
+ static const WCHAR pl_month12W[] =
{'g','r','u','d','n','i','a',0};
+
+ static const WCHAR *polish_genitive_names[] =
+ {
+ pl_month1W,
+ pl_month2W,
+ pl_month3W,
+ pl_month4W,
+ pl_month5W,
+ pl_month6W,
+ pl_month7W,
+ pl_month8W,
+ pl_month9W,
+ pl_month10W,
+ pl_month11W,
+ pl_month12W,
+ NULL
+ };
+
+ static const WCHAR ru_month1W[] = {0x44f,0x43d,0x432,0x430,0x440,0x44f,0};
+ static const WCHAR ru_month2W[] = {0x444,0x435,0x432,0x440,0x430,0x43b,0x44f,0};
+ static const WCHAR ru_month3W[] = {0x43c,0x430,0x440,0x442,0x430,0};
+ static const WCHAR ru_month4W[] = {0x430,0x43f,0x440,0x435,0x43b,0x44f,0};
+ static const WCHAR ru_month5W[] = {0x43c,0x430,0x44f,0};
+ static const WCHAR ru_month6W[] = {0x438,0x44e,0x43d,0x44f,0};
+ static const WCHAR ru_month7W[] = {0x438,0x44e,0x43b,0x44f,0};
+ static const WCHAR ru_month8W[] = {0x430,0x432,0x433,0x443,0x441,0x442,0x430,0};
+ static const WCHAR ru_month9W[] =
{0x441,0x435,0x43d,0x442,0x44f,0x431,0x440,0x44f,0};
+ static const WCHAR ru_month10W[] = {0x43e,0x43a,0x442,0x44f,0x431,0x440,0x44f,0};
+ static const WCHAR ru_month11W[] = {0x43d,0x43e,0x44f,0x431,0x440,0x44f,0};
+ static const WCHAR ru_month12W[] = {0x434,0x435,0x43a,0x430,0x431,0x440,0x44f,0};
+
+ static const WCHAR *russian_genitive_names[] =
+ {
+ ru_month1W,
+ ru_month2W,
+ ru_month3W,
+ ru_month4W,
+ ru_month5W,
+ ru_month6W,
+ ru_month7W,
+ ru_month8W,
+ ru_month9W,
+ ru_month10W,
+ ru_month11W,
+ ru_month12W,
+ NULL
+ };
+
+ TRACE("%#x, %p\n", lcid, str);
+
+ if (PRIMARYLANGID(LANGIDFROMLCID(lcid)) == LANG_ARABIC)
+ *str = (LPOLESTR *)arabic_hijri;
+ else if (PRIMARYLANGID(LANGIDFROMLCID(lcid)) == LANG_POLISH)
+ *str = (LPOLESTR *)polish_genitive_names;
+ else if (PRIMARYLANGID(LANGIDFROMLCID(lcid)) == LANG_RUSSIAN)
+ *str = (LPOLESTR *)russian_genitive_names;
+ else
+ *str = NULL;
+
+ return S_OK;
+}
Modified: trunk/reactos/dll/win32/oleaut32/oleaut32.spec
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/oleaut3…
==============================================================================
--- trunk/reactos/dll/win32/oleaut32/oleaut32.spec [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/oleaut32/oleaut32.spec [iso-8859-1] Sat Jun 3 22:34:09 2017
@@ -323,7 +323,7 @@
329 stdcall VarCyMulI8(int64 int64 ptr)
330 stdcall VarDateFromUdate(ptr long ptr)
331 stdcall VarUdateFromDate(double long ptr)
-332 stub GetAltMonthNames
+332 stdcall GetAltMonthNames(long ptr)
333 stdcall VarI8FromUI1(long long)
334 stdcall VarI8FromI2(long long)
335 stdcall VarI8FromR4(float long)
@@ -361,7 +361,7 @@
377 stdcall VarI1FromUI8(int64 ptr)
378 stdcall VarUI2FromI8(int64 ptr)
379 stdcall VarUI2FromUI8(int64 ptr)
-401 stdcall OleLoadPictureEx(ptr long long long long long long ptr)
+401 stdcall OleLoadPictureEx(ptr long long ptr long long long ptr)
402 stub OleLoadPictureFileEx
411 stdcall SafeArrayCreateVector(long long long)
412 stdcall SafeArrayCopyData(ptr ptr)
Modified: trunk/reactos/dll/win32/oleaut32/olepicture.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/olepict…
==============================================================================
--- trunk/reactos/dll/win32/oleaut32/olepicture.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/oleaut32/olepicture.c [iso-8859-1] Sat Jun 3 22:34:09 2017
@@ -976,25 +976,6 @@
OLEPictureImpl *This = impl_from_IPersistStream(iface);
FIXME("(%p),stub!\n",This);
return E_NOTIMPL;
-}
-
-static HRESULT OLEPictureImpl_LoadDIB(OLEPictureImpl *This, BYTE *xbuf, ULONG xread)
-{
- BITMAPFILEHEADER *bfh = (BITMAPFILEHEADER*)xbuf;
- BITMAPINFO *bi = (BITMAPINFO*)(bfh+1);
- void *bits;
- BITMAP bmp;
-
- This->desc.u.bmp.hbitmap = CreateDIBSection(0, bi, DIB_RGB_COLORS, &bits,
NULL, 0);
- if (This->desc.u.bmp.hbitmap == 0)
- return E_FAIL;
-
- GetObjectA(This->desc.u.bmp.hbitmap, sizeof(bmp), &bmp);
- memcpy(bits, xbuf + bfh->bfOffBits, bmp.bmHeight * bmp.bmWidthBytes);
-
- This->desc.picType = PICTYPE_BITMAP;
- OLEPictureImpl_SetBitmap(This);
- return S_OK;
}
static HRESULT OLEPictureImpl_LoadWICSource(OLEPictureImpl *This, IWICBitmapSource *src)
@@ -1477,7 +1458,7 @@
hr = OLEPictureImpl_LoadWICDecoder(This, &CLSID_WICJpegDecoder, xbuf, xread);
break;
case BITMAP_FORMAT_BMP: /* Bitmap */
- hr = OLEPictureImpl_LoadDIB(This, xbuf, xread);
+ hr = OLEPictureImpl_LoadWICDecoder(This, &CLSID_WICBmpDecoder, xbuf, xread);
break;
case BITMAP_FORMAT_PNG: /* PNG */
hr = OLEPictureImpl_LoadWICDecoder(This, &CLSID_WICPngDecoder, xbuf, xread);
Modified: trunk/reactos/dll/win32/oleaut32/variant.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/variant…
==============================================================================
--- trunk/reactos/dll/win32/oleaut32/variant.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/oleaut32/variant.c [iso-8859-1] Sat Jun 3 22:34:09 2017
@@ -2487,18 +2487,11 @@
{
VARTYPE leftvt,rightvt,resultvt;
HRESULT hres;
- static WCHAR str_true[32];
- static WCHAR str_false[32];
static const WCHAR sz_empty[] = {'\0'};
leftvt = V_VT(left);
rightvt = V_VT(right);
TRACE("%s,%s,%p)\n", debugstr_variant(left), debugstr_variant(right),
out);
-
- if (!str_true[0]) {
- VARIANT_GetLocalisedText(LOCALE_USER_DEFAULT, IDS_FALSE, str_false);
- VARIANT_GetLocalisedText(LOCALE_USER_DEFAULT, IDS_TRUE, str_true);
- }
/* when both left and right are NULL the result is NULL */
if (leftvt == VT_NULL && rightvt == VT_NULL)
@@ -2580,38 +2573,18 @@
/* Convert left side variant to string */
if (leftvt != VT_BSTR)
{
- if (leftvt == VT_BOOL)
- {
- /* Bools are handled as localized True/False strings instead of 0/-1 as
in MSDN */
- V_VT(&bstrvar_left) = VT_BSTR;
- if (V_BOOL(left))
- V_BSTR(&bstrvar_left) = SysAllocString(str_true);
- else
- V_BSTR(&bstrvar_left) = SysAllocString(str_false);
- }
/* Fill with empty string for later concat with right side */
- else if (leftvt == VT_NULL)
+ if (leftvt == VT_NULL)
{
V_VT(&bstrvar_left) = VT_BSTR;
V_BSTR(&bstrvar_left) = SysAllocString(sz_empty);
}
else
{
- hres = VariantChangeTypeEx(&bstrvar_left,left,0,0,VT_BSTR);
+ hres =
VariantChangeTypeEx(&bstrvar_left,left,0,VARIANT_ALPHABOOL|VARIANT_LOCALBOOL,VT_BSTR);
if (hres != S_OK) {
VariantClear(&bstrvar_left);
VariantClear(&bstrvar_right);
- if (leftvt == VT_NULL && (rightvt == VT_EMPTY ||
- rightvt == VT_NULL || rightvt == VT_I2 ||
- rightvt == VT_I4 || rightvt == VT_R4 ||
- rightvt == VT_R8 || rightvt == VT_CY ||
- rightvt == VT_DATE || rightvt == VT_BSTR ||
- rightvt == VT_BOOL || rightvt == VT_DECIMAL ||
- rightvt == VT_I1 || rightvt == VT_UI1 ||
- rightvt == VT_UI2 || rightvt == VT_UI4 ||
- rightvt == VT_I8 || rightvt == VT_UI8 ||
- rightvt == VT_INT || rightvt == VT_UINT))
- return DISP_E_BADVARTYPE;
return hres;
}
}
@@ -2620,38 +2593,18 @@
/* convert right side variant to string */
if (rightvt != VT_BSTR)
{
- if (rightvt == VT_BOOL)
- {
- /* Bools are handled as localized True/False strings instead of 0/-1 as
in MSDN */
- V_VT(&bstrvar_right) = VT_BSTR;
- if (V_BOOL(right))
- V_BSTR(&bstrvar_right) = SysAllocString(str_true);
- else
- V_BSTR(&bstrvar_right) = SysAllocString(str_false);
- }
/* Fill with empty string for later concat with right side */
- else if (rightvt == VT_NULL)
+ if (rightvt == VT_NULL)
{
V_VT(&bstrvar_right) = VT_BSTR;
V_BSTR(&bstrvar_right) = SysAllocString(sz_empty);
}
else
{
- hres = VariantChangeTypeEx(&bstrvar_right,right,0,0,VT_BSTR);
+ hres =
VariantChangeTypeEx(&bstrvar_right,right,0,VARIANT_ALPHABOOL|VARIANT_LOCALBOOL,VT_BSTR);
if (hres != S_OK) {
VariantClear(&bstrvar_left);
VariantClear(&bstrvar_right);
- if (rightvt == VT_NULL && (leftvt == VT_EMPTY ||
- leftvt == VT_NULL || leftvt == VT_I2 ||
- leftvt == VT_I4 || leftvt == VT_R4 ||
- leftvt == VT_R8 || leftvt == VT_CY ||
- leftvt == VT_DATE || leftvt == VT_BSTR ||
- leftvt == VT_BOOL || leftvt == VT_DECIMAL ||
- leftvt == VT_I1 || leftvt == VT_UI1 ||
- leftvt == VT_UI2 || leftvt == VT_UI4 ||
- leftvt == VT_I8 || leftvt == VT_UI8 ||
- leftvt == VT_INT || leftvt == VT_UINT))
- return DISP_E_BADVARTYPE;
return hres;
}
}
Modified: trunk/reactos/dll/win32/oleaut32/vartype.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/vartype…
==============================================================================
--- trunk/reactos/dll/win32/oleaut32/vartype.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/oleaut32/vartype.c [iso-8859-1] Sat Jun 3 22:34:09 2017
@@ -119,15 +119,12 @@
if (SUCCEEDED(hRet))
{
/* Convert the property to the requested type */
- V_VT(&dstVar) = VT_EMPTY;
+ VariantInit(&dstVar);
hRet = VariantChangeTypeEx(&dstVar, &srcVar, lcid, dwFlags, vt);
VariantClear(&srcVar);
if (SUCCEEDED(hRet))
- {
VARIANT_CopyData(&dstVar, vt, pOut);
- VariantClear(&srcVar);
- }
}
else
hRet = DISP_E_TYPEMISMATCH;
@@ -7669,7 +7666,7 @@
dp.dwCount++;
strIn--;
}
- else if (isalpha(*strIn))
+ else if (isalphaW(*strIn))
{
BOOL bFound = FALSE;
Modified: trunk/reactos/media/doc/README.WINE
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=…
==============================================================================
--- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original)
+++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Sat Jun 3 22:34:09 2017
@@ -141,7 +141,7 @@
reactos/dll/win32/odbccp32 # Synced to WineStaging-2.9
reactos/dll/win32/ole32 # Synced to WineStaging-2.9
reactos/dll/win32/oleacc # Synced to WineStaging-1.9.11
-reactos/dll/win32/oleaut32 # Synced to WineStaging-2.2
+reactos/dll/win32/oleaut32 # Synced to WineStaging-2.9
reactos/dll/win32/olecli32 # Synced to WineStaging-1.9.11
reactos/dll/win32/oledlg # Synced to WineStaging-1.9.23
reactos/dll/win32/olepro32 # Synced to WineStaging-1.9.11