Added support for providing typelibs and use it to provide stdole2.tlb.

This commit is contained in:
Jacek Caban 2017-01-30 14:49:39 +01:00
parent d495b23a96
commit 17e09279ac
6 changed files with 462 additions and 9 deletions

View File

@ -34,7 +34,7 @@ CLEANFILES = $(nodist_sdkshead_HEADERS)
DISTCHECK_CONFIGURE_FLAGS = --enable-crt --enable-sdk=all --enable-idl
EXTRA_DIST = $(srcdir)/ChangeLog.* include crt direct-x ddk
EXTRA_DIST = $(srcdir)/ChangeLog.* include crt direct-x ddk tlb
dist-hook:
find $(distdir) -name ".svn" -type d -delete
@ -60,7 +60,8 @@ EXTRA_HEADERS = \
crt/sec_api/sys/*.h \
direct-x/include/*.h \
direct-x/include/*.idl \
ddk/include/ddk/*.h
ddk/include/ddk/*.h \
tlb/*.tlb
if HAVE_WIDL
@ -213,11 +214,17 @@ IDL_SRCS = \
direct-x/include/qnetwork.idl \
direct-x/include/vmr9.idl
BUILT_SOURCES = $(IDL_SRCS:.idl=.h)
TLB_SRCS = \
tlb/stdole2.idl
BUILT_SOURCES = $(IDL_SRCS:.idl=.h) $(TLB_SRCS:.idl=.tlb)
.idl.h: crt/_mingw.h
$(WIDL) -DBOOL=WINBOOL -I$(srcdir)/include -I$(srcdir)/direct-x/include -Icrt -I$(srcdir)/crt -h -o $@ $<
.idl.tlb:
$(WIDL) -I$(srcdir)/include -t -o $@ $<
endif
_mingw_directx.h: $(srcdir)/crt/sdks/_mingw_directx.h.in

View File

@ -339,7 +339,7 @@ dxhead_HEADERS = @DXHEAD_LIST@
idlhead_HEADERS = @IDLHEAD_LIST@
CLEANFILES = $(nodist_sdkshead_HEADERS)
DISTCHECK_CONFIGURE_FLAGS = --enable-crt --enable-sdk=all --enable-idl
EXTRA_DIST = $(srcdir)/ChangeLog.* include crt direct-x ddk
EXTRA_DIST = $(srcdir)/ChangeLog.* include crt direct-x ddk tlb
EXTRA_HEADERS = \
include/*.c \
include/*.dlg \
@ -361,7 +361,8 @@ EXTRA_HEADERS = \
crt/sec_api/sys/*.h \
direct-x/include/*.h \
direct-x/include/*.idl \
ddk/include/ddk/*.h
ddk/include/ddk/*.h \
tlb/*.tlb
@HAVE_WIDL_TRUE@IDL_SRCS = \
@HAVE_WIDL_TRUE@ include/activation.idl \
@ -512,12 +513,15 @@ EXTRA_HEADERS = \
@HAVE_WIDL_TRUE@ direct-x/include/qnetwork.idl \
@HAVE_WIDL_TRUE@ direct-x/include/vmr9.idl
@HAVE_WIDL_TRUE@BUILT_SOURCES = $(IDL_SRCS:.idl=.h)
@HAVE_WIDL_TRUE@TLB_SRCS = \
@HAVE_WIDL_TRUE@ tlb/stdole2.idl
@HAVE_WIDL_TRUE@BUILT_SOURCES = $(IDL_SRCS:.idl=.h) $(TLB_SRCS:.idl=.tlb)
all: $(BUILT_SOURCES) config.h
$(MAKE) $(AM_MAKEFLAGS) all-am
.SUFFIXES:
.SUFFIXES: .h .idl
.SUFFIXES: .h .idl .tlb
am--refresh: Makefile
@:
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@ -1228,6 +1232,9 @@ dist-hook:
@HAVE_WIDL_TRUE@.idl.h: crt/_mingw.h
@HAVE_WIDL_TRUE@ $(WIDL) -DBOOL=WINBOOL -I$(srcdir)/include -I$(srcdir)/direct-x/include -Icrt -I$(srcdir)/crt -h -o $@ $<
@HAVE_WIDL_TRUE@.idl.tlb:
@HAVE_WIDL_TRUE@ $(WIDL) -I$(srcdir)/include -t -o $@ $<
_mingw_directx.h: $(srcdir)/crt/sdks/_mingw_directx.h.in
$(SED) s/MINGW_HAS_DX$$/@MINGW_HAS_DX@/ $< > $@

View File

@ -2787,7 +2787,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_idl" >&5
$as_echo "$enable_idl" >&6; }
if test "x$enable_idl" = xyes; then :
IDLHEAD_LIST=$srcdir/include/*.idl
IDLHEAD_LIST=$srcdir/include/*.idl" "$srcdir/tlb/*.tlb
else
IDLHEAD_LIST=""
fi

View File

@ -136,7 +136,7 @@ AC_ARG_ENABLE([idl],
[enable_idl=no])
AC_MSG_RESULT([$enable_idl])
AS_VAR_IF([enable_idl],[yes],
[IDLHEAD_LIST=$srcdir/include/*.idl],
[IDLHEAD_LIST=$srcdir/include/*.idl" "$srcdir/tlb/*.tlb],
[IDLHEAD_LIST=""])
AC_SUBST([IDLHEAD_LIST])

View File

@ -0,0 +1,439 @@
/*
* 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
#include <olectl.h>
[
uuid(00020430-0000-0000-C000-000000000046),
version(2.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 short VARIANT_BOOL;
typedef long BSTR;
typedef double CURRENCY;
typedef unsigned long HRESULT;
typedef void *VARIANT;
typedef unsigned long SCODE;
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),
hidden
]
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),
restricted
]
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),
hidden
]
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);
}
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;
/* FIXME: We can't reference dispinterface FontEvents here because we need it to
appear at the end of the typelib. */
/* [default, source] dispinterface FontEvents;*/
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;
};
[
uuid(E6C8FA08-BD9F-11D0-985E-00C04FC29993)
]
enum LoadPictureConstants {
Default = 0,
Monochrome = 1,
VgaColor = 2,
Color = 4
};
[
dllname("oleaut32.dll"),
uuid(91209AC0-60F6-11CF-9C5D-00AA00C1489E),
helpstring("Functions for Standard OLE Objects"),
helpcontext(0x2775)
]
module StdFunctions{
[
entry("OleLoadPictureFileEx"),
helpstring("Loads a picture from a file"),
helpcontext(0x2775)
]
HRESULT LoadPicture([in, optional] VARIANT filename,
[in, defaultvalue(0)] int widthDesired,
[in, defaultvalue(0)] int heightDesired,
[in, defaultvalue(Default)] enum LoadPictureConstants flags,
[out, retval] IPictureDisp **retval);
[
entry("OleSavePictureFile"),
helpstring("Saves a picture to a file"),
helpcontext(0x2775)
]
HRESULT SavePicture([in] IPictureDisp *Picture,
[in] BSTR filename);
};
[
uuid(4EF6100A-AF88-11D0-9846-00C04FC29993),
helpstring("Event Interface for the Font Object"),
hidden
]
dispinterface FontEvents {
properties:
methods:
[id(DISPID_FONT_CHANGED)] void FontChanged([in] BSTR PropertyName);
};
typedef [public] FontEvents IFontEventsDisp;
};

Binary file not shown.