Added patch to add Standard OLE Types typelib to olepro32.dll.

This commit is contained in:
Sebastian Lackner 2016-01-22 17:26:45 +01:00
parent 5bb59bbf48
commit 35a2b6a62a
4 changed files with 618 additions and 0 deletions

View File

@ -0,0 +1,304 @@
From 2db7b6af860b34134a0a1177fd5628f8cc6506cc Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Fri, 22 Jan 2016 17:40:43 +0800
Subject: include: Make stdole32.idl a public component.
This makes it possible to import stdole32.tlb from other .idl files.
---
dlls/stdole32.tlb/std_ole_v1.idl | 119 +-------------------------------
include/Makefile.in | 1 +
include/stdole32.idl | 143 +++++++++++++++++++++++++++++++++++++++
3 files changed, 145 insertions(+), 118 deletions(-)
create mode 100644 include/stdole32.idl
diff --git a/dlls/stdole32.tlb/std_ole_v1.idl b/dlls/stdole32.tlb/std_ole_v1.idl
index 359a810..de053e9 100644
--- a/dlls/stdole32.tlb/std_ole_v1.idl
+++ b/dlls/stdole32.tlb/std_ole_v1.idl
@@ -20,121 +20,4 @@
#pragma makedep regtypelib
-[
- uuid(00020430-0000-0000-C000-000000000046),
- restricted,
- version(1.0),
- helpstring("OLE Automation")
-]
-library stdole
-{
- /* typedefs aren't stored in the type library.
- These type names are known by the type compiler so it
- doesn't really matter what we define them as. */
-
- typedef void *VARIANT;
- typedef wchar_t *BSTR;
- typedef unsigned long SCODE;
- typedef unsigned long HRESULT;
-
- typedef struct GUID {
- unsigned long Data1;
- unsigned short Data2;
- unsigned short Data3;
- unsigned char Data4[ 8 ];
- } GUID;
-
- typedef struct DISPPARAMS {
- VARIANT *rgvarg;
- long *rgdispidNamedArgs;
- unsigned int cArgs;
- unsigned int cNamedArgs;
- } DISPPARAMS;
-
- typedef struct EXCEPINFO {
- unsigned short wCode;
- unsigned short wReserved;
- BSTR bstrSource;
- BSTR bstrDescription;
- BSTR bstrHelpFile;
- unsigned long dwHelpContext;
- void *pvReserved;
- void *pfnDeferredFillIn;
- SCODE scode;
- } EXCEPINFO;
-
- [
- odl,
- uuid(00000000-0000-0000-C000-000000000046)
- ]
- interface IUnknown
- {
- [restricted]
- HRESULT QueryInterface(
- [in] GUID *riid,
- [out] void **ppvObj);
-
- [restricted]
- unsigned long AddRef();
-
- [restricted]
- unsigned long Release();
- }
-
- [
- odl,
- uuid(00020400-0000-0000-C000-000000000046)
- ]
- interface IDispatch : IUnknown
- {
- [restricted]
- HRESULT GetTypeInfoCount(
- [out] unsigned int *pctinfo);
-
- [restricted]
- HRESULT GetTypeInfo(
- [in] unsigned int itinfo,
- [in] unsigned long lcid,
- [out] void **pptinfo);
-
- [restricted]
- HRESULT GetIDsOfNames(
- [in] GUID *riid,
- [in] char **rgszNames,
- [in] unsigned int cNames,
- [in] unsigned long lcid,
- [out] long *rgdispid);
-
- [restricted]
- HRESULT Invoke(
- [in] long dispidMember,
- [in] GUID *riid,
- [in] unsigned long lcid,
- [in] unsigned short wFlags,
- [in] DISPPARAMS *pdispparams,
- [out] VARIANT *pvarResult,
- [out] EXCEPINFO *pexcepinfo,
- [out] unsigned int *puArgErr);
-
- }
-
- [
- odl,
- uuid(00020404-0000-0000-C000-000000000046)
- ]
- interface IEnumVARIANT : IUnknown
- {
- HRESULT Next(
- [in] unsigned long celt,
- [in] VARIANT *rgvar,
- [out] unsigned long *pceltFetched);
-
- HRESULT Skip(
- [in] unsigned long celt);
-
- HRESULT Reset();
-
- HRESULT Clone(
- [out] IEnumVARIANT **ppenum);
- }
-};
+#include "stdole32.idl"
diff --git a/include/Makefile.in b/include/Makefile.in
index 129ff6d..c15544a 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -140,6 +140,7 @@ IDL_SRCS = \
shtypes.idl \
srcrst.idl \
stdole2.idl \
+ stdole32.idl \
strmif.idl \
structuredquerycondition.idl \
taskschd.idl \
diff --git a/include/stdole32.idl b/include/stdole32.idl
new file mode 100644
index 0000000..107cee8
--- /dev/null
+++ b/include/stdole32.idl
@@ -0,0 +1,143 @@
+/*
+ * Copyright (C) 2003 Robert Shearman
+ * 2005 Huw Davies
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#if 0
+#pragma makedep install
+#pragma makedep typelib
+#endif
+
+[
+ uuid(00020430-0000-0000-C000-000000000046),
+ restricted,
+ version(1.0),
+ helpstring("OLE Automation")
+]
+library stdole
+{
+ /* typedefs aren't stored in the type library.
+ These type names are known by the type compiler so it
+ doesn't really matter what we define them as. */
+
+ typedef void *VARIANT;
+ typedef wchar_t *BSTR;
+ typedef unsigned long SCODE;
+ typedef unsigned long HRESULT;
+
+ typedef struct GUID {
+ unsigned long Data1;
+ unsigned short Data2;
+ unsigned short Data3;
+ unsigned char Data4[ 8 ];
+ } GUID;
+
+ typedef struct DISPPARAMS {
+ VARIANT *rgvarg;
+ long *rgdispidNamedArgs;
+ unsigned int cArgs;
+ unsigned int cNamedArgs;
+ } DISPPARAMS;
+
+ typedef struct EXCEPINFO {
+ unsigned short wCode;
+ unsigned short wReserved;
+ BSTR bstrSource;
+ BSTR bstrDescription;
+ BSTR bstrHelpFile;
+ unsigned long dwHelpContext;
+ void *pvReserved;
+ void *pfnDeferredFillIn;
+ SCODE scode;
+ } EXCEPINFO;
+
+ [
+ odl,
+ uuid(00000000-0000-0000-C000-000000000046)
+ ]
+ interface IUnknown
+ {
+ [restricted]
+ HRESULT QueryInterface(
+ [in] GUID *riid,
+ [out] void **ppvObj);
+
+ [restricted]
+ unsigned long AddRef();
+
+ [restricted]
+ unsigned long Release();
+ }
+
+ [
+ odl,
+ uuid(00020400-0000-0000-C000-000000000046)
+ ]
+ interface IDispatch : IUnknown
+ {
+ [restricted]
+ HRESULT GetTypeInfoCount(
+ [out] unsigned int *pctinfo);
+
+ [restricted]
+ HRESULT GetTypeInfo(
+ [in] unsigned int itinfo,
+ [in] unsigned long lcid,
+ [out] void **pptinfo);
+
+ [restricted]
+ HRESULT GetIDsOfNames(
+ [in] GUID *riid,
+ [in] char **rgszNames,
+ [in] unsigned int cNames,
+ [in] unsigned long lcid,
+ [out] long *rgdispid);
+
+ [restricted]
+ HRESULT Invoke(
+ [in] long dispidMember,
+ [in] GUID *riid,
+ [in] unsigned long lcid,
+ [in] unsigned short wFlags,
+ [in] DISPPARAMS *pdispparams,
+ [out] VARIANT *pvarResult,
+ [out] EXCEPINFO *pexcepinfo,
+ [out] unsigned int *puArgErr);
+
+ }
+
+ [
+ odl,
+ uuid(00020404-0000-0000-C000-000000000046)
+ ]
+ interface IEnumVARIANT : IUnknown
+ {
+ HRESULT Next(
+ [in] unsigned long celt,
+ [in] VARIANT *rgvar,
+ [out] unsigned long *pceltFetched);
+
+ HRESULT Skip(
+ [in] unsigned long celt);
+
+ HRESULT Reset();
+
+ HRESULT Clone(
+ [out] IEnumVARIANT **ppenum);
+ }
+};
--
2.6.4

View File

@ -0,0 +1,291 @@
From 389f6141334056d3d91f004ea6b3e02f25cbea29 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Fri, 22 Jan 2016 18:20:29 +0800
Subject: olepro32: Add typelib resource.
Based on a patch by Alistair Leslie-Hughes.
---
dlls/olepro32/Makefile.in | 2 +
dlls/olepro32/olepro.idl | 259 ++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 261 insertions(+)
create mode 100644 dlls/olepro32/olepro.idl
diff --git a/dlls/olepro32/Makefile.in b/dlls/olepro32/Makefile.in
index a6163d1..032fdbd 100644
--- a/dlls/olepro32/Makefile.in
+++ b/dlls/olepro32/Makefile.in
@@ -4,4 +4,6 @@ IMPORTS = oleaut32
C_SRCS = olepro32stubs.c
+IDL_SRCS = olepro.idl
+
RC_SRCS = version.rc
diff --git a/dlls/olepro32/olepro.idl b/dlls/olepro32/olepro.idl
new file mode 100644
index 0000000..5b2fb3e
--- /dev/null
+++ b/dlls/olepro32/olepro.idl
@@ -0,0 +1,259 @@
+/*
+ * Copyright (C) 2003 Robert Shearman
+ * 2005 Huw Davies
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#pragma makedep regtypelib
+
+import "oaidl.idl";
+
+#include <olectl.h>
+
+[
+ uuid(bef6e001-a874-101a-8bba-00aa00300cab),
+ version(2.0),
+ helpstring("Standard OLE Types")
+]
+library StdType
+{
+#if 0 /* FIXME */
+ importlib("stdole32.tlb");
+#endif
+
+ /* typedefs aren't stored in the type library.
+ These type names are known by the type compiler so it
+ doesn't really matter what we define them as. */
+ typedef short VARIANT_BOOL;
+ typedef long BSTR;
+ typedef double CURRENCY;
+ typedef unsigned long HRESULT;
+ typedef void *VARIANT;
+ typedef unsigned long SCODE;
+
+ typedef [uuid(66504301-BE0F-101A-8BBB-00AA00300CAB), public]
+ unsigned long OLE_COLOR;
+
+ typedef [uuid(66504302-BE0F-101A-8BBB-00AA00300CAB), public]
+ long OLE_XPOS_PIXELS;
+
+ typedef [uuid(66504303-BE0F-101A-8BBB-00AA00300CAB), public]
+ long OLE_YPOS_PIXELS;
+
+ typedef [uuid(66504304-BE0F-101A-8BBB-00AA00300CAB), public]
+ long OLE_XSIZE_PIXELS;
+
+ typedef [uuid(66504305-BE0F-101A-8BBB-00AA00300CAB), public]
+ long OLE_YSIZE_PIXELS;
+
+ typedef [uuid(66504306-BE0F-101A-8BBB-00AA00300CAB), public]
+ long OLE_XPOS_HIMETRIC;
+
+ typedef [uuid(66504307-BE0F-101A-8BBB-00AA00300CAB), public]
+ long OLE_YPOS_HIMETRIC;
+
+ typedef [uuid(66504308-BE0F-101A-8BBB-00AA00300CAB), public]
+ long OLE_XSIZE_HIMETRIC;
+
+ typedef [uuid(66504309-BE0F-101A-8BBB-00AA00300CAB), public]
+ long OLE_YSIZE_HIMETRIC;
+
+ typedef [uuid(BF030640-9069-101B-AE2D-08002B2EC713), public]
+ float OLE_XPOS_CONTAINER;
+
+ typedef [uuid(BF030641-9069-101B-AE2D-08002B2EC713), public]
+ float OLE_YPOS_CONTAINER;
+
+ typedef [uuid(BF030642-9069-101B-AE2D-08002B2EC713), public]
+ float OLE_XSIZE_CONTAINER;
+
+ typedef [uuid(BF030643-9069-101B-AE2D-08002B2EC713), public]
+ float OLE_YSIZE_CONTAINER;
+
+ typedef [uuid(66504313-BE0F-101A-8BBB-00AA00300CAB), public]
+ int OLE_HANDLE;
+
+ typedef [uuid(6650430B-BE0F-101A-8BBB-00AA00300CAB), public]
+ VARIANT_BOOL OLE_OPTEXCLUSIVE;
+
+ typedef [uuid(BF030644-9069-101B-AE2D-08002B2EC713), public]
+ VARIANT_BOOL OLE_CANCELBOOL;
+
+ typedef [uuid(BF030645-9069-101B-AE2D-08002B2EC713), public]
+ VARIANT_BOOL OLE_ENABLEDEFAULTBOOL;
+
+ [uuid(6650430A-BE0F-101A-8BBB-00AA00300CAB)]
+ enum OLE_TRISTATE
+ {
+ Unchecked = 0,
+ Checked = 1,
+ Gray = 2
+ };
+
+ typedef [uuid(6650430D-BE0F-101A-8BBB-00AA00300CAB), public]
+ BSTR FONTNAME;
+
+ typedef [uuid(6650430E-BE0F-101A-8BBB-00AA00300CAB), public]
+ CURRENCY FONTSIZE;
+
+ typedef [uuid(6650430F-BE0F-101A-8BBB-00AA00300CAB), public]
+ VARIANT_BOOL FONTBOLD;
+
+ typedef [uuid(66504310-BE0F-101A-8BBB-00AA00300CAB), public]
+ VARIANT_BOOL FONTITALIC;
+
+ typedef [uuid(66504311-BE0F-101A-8BBB-00AA00300CAB), public]
+ VARIANT_BOOL FONTUNDERSCORE;
+
+ typedef [uuid(66504312-BE0F-101A-8BBB-00AA00300CAB), public]
+ VARIANT_BOOL FONTSTRIKETHROUGH;
+
+ [
+ odl,
+ uuid(BEF6E002-A874-101A-8BBA-00AA00300CAB),
+ helpstring("Font Object"),
+ hidden
+ ]
+ interface IFont : IUnknown
+ {
+ [propget] HRESULT Name([out, retval] BSTR *pname);
+ [propput] HRESULT Name([in] BSTR pname);
+ [propget] HRESULT Size([out, retval] CURRENCY *psize);
+ [propput] HRESULT Size([in] CURRENCY psize);
+ [propget] HRESULT Bold([out, retval] VARIANT_BOOL *pbold);
+ [propput] HRESULT Bold([in] VARIANT_BOOL pbold);
+ [propget] HRESULT Italic([out, retval] VARIANT_BOOL *pitalic);
+ [propput] HRESULT Italic([in] VARIANT_BOOL pitalic);
+ [propget] HRESULT Underline([out, retval] VARIANT_BOOL *punderline);
+ [propput] HRESULT Underline([in] VARIANT_BOOL punderline);
+ [propget] HRESULT Strikethrough([out, retval] VARIANT_BOOL *pstrikethrough);
+ [propput] HRESULT Strikethrough([in] VARIANT_BOOL pstrikethrough);
+ [propget] HRESULT Weight([out, retval] short *pweight);
+ [propput] HRESULT Weight([in] short pweight);
+ [propget] HRESULT Charset([out, retval] short *pcharset);
+ [propput] HRESULT Charset([in] short pcharset);
+ [propget] HRESULT hFont([out, retval] OLE_HANDLE *phfont);
+ HRESULT Clone([out] IFont **ppfont);
+ HRESULT IsEqual([in] IFont *pfontOther);
+ HRESULT SetRatio([in] long cyLogical, [in] long cyHimetric);
+ HRESULT AddRefHfont([in] OLE_HANDLE hFont);
+ HRESULT ReleaseHfont([in] OLE_HANDLE hFont);
+ };
+
+ [
+ odl,
+ uuid(BEF6E003-A874-101A-8BBA-00AA00300CAB)
+ ]
+ dispinterface Font
+ {
+ properties:
+ [id(DISPID_FONT_NAME)] BSTR Name;
+ [id(DISPID_FONT_SIZE)] CURRENCY Size;
+ [id(DISPID_FONT_BOLD)] VARIANT_BOOL Bold;
+ [id(DISPID_FONT_ITALIC)] VARIANT_BOOL Italic;
+ [id(DISPID_FONT_UNDER)] VARIANT_BOOL Underline;
+ [id(DISPID_FONT_STRIKE)] VARIANT_BOOL Strikethrough;
+ [id(DISPID_FONT_WEIGHT)] short Weight;
+ [id(DISPID_FONT_CHARSET)] short Charset;
+ methods:
+ }
+
+ typedef [public] Font IFontDisp;
+
+ [
+ uuid(0BE35203-8F91-11CE-9DE3-00AA004BB851)
+ ]
+ coclass StdFont
+ {
+ [default] dispinterface Font;
+ interface IFont;
+ };
+
+ [
+ odl,
+ uuid(7BF80980-BF32-101A-8BBB-00AA00300CAB),
+ helpstring("Picture Object"),
+ hidden
+ ]
+ interface IPicture : IUnknown
+ {
+ [propget] HRESULT Handle([out, retval] OLE_HANDLE *phandle);
+ [propget] HRESULT hPal([out, retval] OLE_HANDLE *phpal);
+ [propget] HRESULT Type([out, retval] short *ptype);
+ [propget] HRESULT Width([out, retval] OLE_XSIZE_HIMETRIC *pwidth);
+ [propget] HRESULT Height([out, retval] OLE_YSIZE_HIMETRIC *pheight);
+ HRESULT Render([in] int hdc,
+ [in] long x,
+ [in] long y,
+ [in] long cx,
+ [in] long cy,
+ [in] OLE_XPOS_HIMETRIC xSrc,
+ [in] OLE_YPOS_HIMETRIC ySrc,
+ [in] OLE_XSIZE_HIMETRIC cxSrc,
+ [in] OLE_YSIZE_HIMETRIC cySrc,
+ [in] void *prcWBounds);
+
+ [propput] HRESULT hPal([in] OLE_HANDLE phpal);
+ [propget] HRESULT CurDC([out, retval] int *phdcOut);
+ HRESULT SelectPicture([in] int hdcIn,
+ [out] int *phdcOut,
+ [out] OLE_HANDLE *phbmpOut);
+ [propget] HRESULT KeepOriginalFormat([out, retval] VARIANT_BOOL *pfkeep);
+ [propput] HRESULT KeepOriginalFormat([in] VARIANT_BOOL pfkeep);
+ HRESULT PictureChanged();
+ HRESULT SaveAsFile([in] void *pstm,
+ [in] VARIANT_BOOL fSaveMemCopy,
+ [out] long *pcbSize);
+ [propget] HRESULT Attributes([out, retval] long *pdwAttr);
+ HRESULT SetHdc([in] OLE_HANDLE hdc);
+ };
+
+ [
+ uuid(7BF80981-BF32-101A-8BBB-00AA00300CAB)
+ ]
+ dispinterface Picture
+ {
+ properties:
+ [id(DISPID_PICT_HANDLE), readonly] OLE_HANDLE Handle;
+ [id(DISPID_PICT_HPAL)] OLE_HANDLE hPal;
+ [id(DISPID_PICT_TYPE), readonly] short Type;
+ [id(DISPID_PICT_WIDTH), readonly] OLE_XSIZE_HIMETRIC Width;
+ [id(DISPID_PICT_HEIGHT), readonly] OLE_YSIZE_HIMETRIC Height;
+ methods:
+ [id(DISPID_PICT_RENDER)]
+ void Render(int hdc,
+ long x,
+ long y,
+ long cx,
+ long cy,
+ OLE_XPOS_HIMETRIC xSrc,
+ OLE_YPOS_HIMETRIC ySrc,
+ OLE_XSIZE_HIMETRIC cxSrc,
+ OLE_YSIZE_HIMETRIC cySrc,
+ void *prcWBounds);
+ };
+
+ typedef [public] Picture IPictureDisp;
+
+ [
+ uuid(0BE35204-8F91-11CE-9DE3-00AA004BB851)
+ ]
+ coclass StdPicture
+ {
+ [default] dispinterface Picture;
+ interface IPicture;
+ };
+}
--
2.6.4

View File

@ -0,0 +1 @@
Fixes: [14617] Add Standard OLE Types typelib to olepro32.dll

View File

@ -240,6 +240,7 @@ patch_enable_all ()
enable_ole32_CoGetApartmentType="$1"
enable_oleaut32_TKIND_COCLASS="$1"
enable_oleaut32_x86_64_Marshaller="$1"
enable_olepro32_Typelib="$1"
enable_openal32_EFX_Extension="$1"
enable_opengl32_Revert_Disable_Ext="$1"
enable_quartz_MediaSeeking_Positions="$1"
@ -857,6 +858,9 @@ patch_enable ()
oleaut32-x86_64_Marshaller)
enable_oleaut32_x86_64_Marshaller="$2"
;;
olepro32-Typelib)
enable_olepro32_Typelib="$2"
;;
openal32-EFX_Extension)
enable_openal32_EFX_Extension="$2"
;;
@ -5167,6 +5171,24 @@ if test "$enable_oleaut32_x86_64_Marshaller" -eq 1; then
) >> "$patchlist"
fi
# Patchset olepro32-Typelib
# |
# | This patchset fixes the following Wine bugs:
# | * [#14617] Add Standard OLE Types typelib to olepro32.dll
# |
# | Modified files:
# | * dlls/olepro32/Makefile.in, dlls/olepro32/olepro.idl, dlls/stdole32.tlb/std_ole_v1.idl, include/Makefile.in,
# | include/stdole32.idl
# |
if test "$enable_olepro32_Typelib" -eq 1; then
patch_apply olepro32-Typelib/0001-include-Make-stdole32.idl-a-public-component.patch
patch_apply olepro32-Typelib/0002-olepro32-Add-typelib-resource.patch
(
echo '+ { "Dmitry Timoshkov", "include: Make stdole32.idl a public component.", 1 },';
echo '+ { "Dmitry Timoshkov", "olepro32: Add typelib resource.", 1 },';
) >> "$patchlist"
fi
# Patchset openal32-EFX_Extension
# |
# | This patchset fixes the following Wine bugs: