From efbd594370467678eeee56ca9492897db3a87ac3 Mon Sep 17 00:00:00 2001 From: Jason Filby Date: Tue, 13 Mar 2001 19:00:13 +0000 Subject: [PATCH] OLE32 header files from Jurgen Van Gael svn path=/trunk/; revision=1684 --- reactos/include/ddk/winddi.h | 26 +++-- reactos/include/ole32/basetyps.h | 132 ++++++++++++++++++++++ reactos/include/ole32/guiddef.h | 184 +++++++++++++++++++++++++++++++ reactos/include/structs.h | 2 +- reactos/include/win32k/color.h | 5 + 5 files changed, 337 insertions(+), 12 deletions(-) create mode 100644 reactos/include/ole32/basetyps.h create mode 100644 reactos/include/ole32/guiddef.h diff --git a/reactos/include/ddk/winddi.h b/reactos/include/ddk/winddi.h index bc15f4aee3d..8ddb1b6d72d 100644 --- a/reactos/include/ddk/winddi.h +++ b/reactos/include/ddk/winddi.h @@ -644,9 +644,23 @@ typedef struct _IFIMETRICS PANOSE panose; } IFIMETRICS, *PIFIMETRICS; +#define NB_RESERVED_COLORS 20 // number of fixed colors in system palette + +typedef struct _XLATEOBJ +{ + ULONG iUniq; + ULONG flXlate; + USHORT iSrcType; + USHORT iDstType; + ULONG cEntries; + ULONG *pulXlate; +} XLATEOBJ, *PXLATEOBJ; + typedef struct _PALOBJ { - ULONG ulReserved; + PXLATEOBJ logicalToSystem; + int *mapping; + LOGPALETTE logpalette; // _MUST_ be the last field } PALOBJ, *PPALOBJ; typedef struct _PATHOBJ @@ -686,16 +700,6 @@ typedef struct _XFORMOBJ /* FIXME: what does this beast look like? */ } XFORMOBJ, *PXFORMOBJ; -typedef struct _XLATEOBJ -{ - ULONG iUniq; - ULONG flXlate; - USHORT iSrcType; - USHORT iDstType; - ULONG cEntries; - ULONG *pulXlate; -} XLATEOBJ, *PXLATEOBJ; - /* * Functions Prefixed with Drv are calls made from GDI to DDI, and * everything else are calls made from DDI to GDI. DDI is diff --git a/reactos/include/ole32/basetyps.h b/reactos/include/ole32/basetyps.h new file mode 100644 index 00000000000..d1fa50b1f9d --- /dev/null +++ b/reactos/include/ole32/basetyps.h @@ -0,0 +1,132 @@ +/* + basetyps.h + + definitions for basic types used to develop COM + macro definitions for interface declaration + + Copyright (C) 1996 Free Software Foundation, Inc. + + Author: Jurgen Van Gael + Date: january 2001 + + This file is part of the Windows32 API Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 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 + Library General Public License for more details. + + If you are interested in a warranty or support for this source code, + contact Scott Christley for more information. + + You should have received a copy of the GNU Library General Public + License along with this library; see the file COPYING.LIB. + If not, write to the Free Software Foundation, + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ +#ifndef _BASETYPS +#define _BASETYPS + +#ifndef EXTERN_C +#ifdef __cplusplus + #define EXTERN_C extern "C" +#else + #define EXTERN_C extern +#endif +#endif + + +#ifndef _ERROR_STATUS_T_DEFINED +typedef unsigned long error_status_t; +#define _ERROR_STATUS_T_DEFINED +#endif + + +#ifndef _WCHAR_T_DEFINED +typedef unsigned short wchar_t; +#define _WCHAR_T_DEFINED +#endif + + +#define STDMETHODCALLTYPE __stdcall +#define STDMETHODVCALLTYPE __cdecl + +#define STDAPICALLTYPE __stdcall +#define STDAPIVCALLTYPE __cdecl + + +#define STDAPI EXTERN_C HRESULT STDMETHODCALLTYPE +#define STDAPI_(type) EXTERN_C type STDAPICALLTYPE + +#define STDMETHODIMP HRESULT STDMETHODCALLTYPE +#define STDMETHODIMP_(type) type STDMETHODCALLTYPE + + +// variable argument lists versions +#define STDAPIV EXTERN_C HRESULT STDAPIVCALLTYPE +#define STDAPIV_(type) EXTERN_C type STDAPIVCALLTYPE + +#define STDMETHODIMPV HRESULT STDMETHODVCALLTYPE +#define STDMETHODIMPV_(type) type STDMETHODVCALLTYPE + + +/************************* interface declaration ********************************** + * + * Here are some macros you can use to define interfaces. These macro's are + * usefull because they declare an interface for a c++ implementation or a + * a c implementation. The c interface will be made when the user compiles a + * .c file. The c++ interface will be declared when a .cpp file is compiled. + * + * use DECLARE_INTERFACE(iface) when the interface does not derive from another + * use DECLARE_INTERFACE_(iface, baseiface) when the interface derives from another + * interface + */ +#if defined(__cplusplus) && !defined(CINTERFACE) + // define the c++ macros + #define interface struct + #define STDMETHOD(method) virtual HRESULT STDMETHODCALLTYPE method + #define STDMETHOD_(type,method) virtual type STDMETHODCALLTYPE method + #define STDMETHODV(method) virtual HRESULT STDMETHODVCALLTYPE method + #define STDMETHODV_(type,method) virtual type STDMETHODVCALLTYPE method + #define PURE = 0 + #define THIS_ + #define THIS void + #define DECLARE_INTERFACE(iface) interface DECLSPEC_NOVTABLE iface + #define DECLARE_INTERFACE_(iface, baseiface) interface DECLSPEC_NOVTABLE iface : public baseiface + +#else + // define the c macros + #define interface struct + #define STDMETHOD(method) HRESULT (STDMETHODCALLTYPE* method) + #define STDMETHOD_(type,method) type (STDMETHODCALLTYPE* method) + #define STDMETHODV(method) HRESULT (STDMETHODVCALLTYPE* method) + #define STDMETHODV_(type,method)type (STDMETHODVCALLTYPE* method) + #define PURE + #define THIS_ INTERFACE FAR* This, + #define THIS INTERFACE FAR* This + + #ifdef CONST_VTABLE + #define DECLARE_INTERFACE(iface) typedef interface iface { \ + const struct iface##Vtbl FAR* lpVtbl; \ + } iface; \ + typedef const struct iface##Vtbl iface##Vtbl; \ + const struct iface##Vtbl + #else + #define DECLARE_INTERFACE(iface) typedef interface iface { \ + struct iface##Vtbl FAR* lpVtbl; \ + } iface; \ + typedef struct iface##Vtbl iface##Vtbl; \ + struct iface##Vtbl + #endif + + #define DECLARE_INTERFACE_(iface, baseiface) DECLARE_INTERFACE(iface) +#endif + + +#endif + diff --git a/reactos/include/ole32/guiddef.h b/reactos/include/ole32/guiddef.h new file mode 100644 index 00000000000..c2310798765 --- /dev/null +++ b/reactos/include/ole32/guiddef.h @@ -0,0 +1,184 @@ +/* + guiddef.h + + guid declaration + + Copyright (C) 1996 Free Software Foundation, Inc. + + Author: Jurgen Van Gael + Date: january 2001 + + This file is part of the Windows32 API Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 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 + Library General Public License for more details. + + If you are interested in a warranty or support for this source code, + contact Scott Christley for more information. + + You should have received a copy of the GNU Library General Public + License along with this library; see the file COPYING.LIB. + If not, write to the Free Software Foundation, + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ +#ifndef _GUIDDEF_H +#define _GUIDDEF_H + +#include + + +#ifndef EXTERN_C + #ifdef __cplusplus + #define EXTERN_C extern "C" + #else + #define EXTERN_C extern + #endif +#endif + + +// guid definition +#ifndef GUID_DEFINED + #define GUID_DEFINED + typedef struct _GUID { + unsigned long Data1; + unsigned short Data2; + unsigned short Data3; + unsigned char Data4[ 8 ]; + } GUID; + typedef GUID* LPGUID; + typedef const GUID* LPCGUID; +#endif + + +// guid definition macro +#ifdef DEFINE_GUID + #undef DEFINE_GUID +#endif + +#ifdef INITGUID + #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ + EXTERN_C const GUID name = {l, w1, w2, {b1, b2, b3, b4, b5, b6, b7, b8}} +#else + #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ + EXTERN_C const GUID name +#endif +#define DEFINE_OLEGUID(name, l, w1, w2) DEFINE_GUID(name, l, w1, w2, 0xC0,0,0,0,0,0,0,0x46) + + +// IID section +typedef GUID IID; +typedef IID* LPIID; +#define IsEqualIID(riid1, riid2) IsEqualGUID(riid1, riid2) + + +// CLSID section +typedef GUID CLSID; +typedef CLSID* LPCLSID; +#define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID(rclsid1, rclsid2) + +// FMTID +typedef GUID FMTID; +typedef FMTID* LPFMTID; +#define IsEqualFMTID(rfmtid1, rfmtid2) IsEqualGUID(rfmtid1, rfmtid2) + + +// REFGUID section +#ifndef _REFGUID_DEFINED + #define _REFGUID_DEFINED + #ifdef __cplusplus + #define REFGUID const GUID & + #else + #define REFGUID const GUID * + #endif +#endif + +// REFIID section +#ifndef _REFIID_DEFINED + #define _REFIID_DEFINED + #ifdef __cplusplus + #define REFIID const IID & + #else + #define REFIID const IID * + #endif +#endif + +// REFCLSID section +#ifndef _REFCLSID_DEFINED + #define _REFCLSID_DEFINED + #ifdef __cplusplus + #define REFCLSID const IID & + #else + #define REFCLSID const IID * + #endif +#endif + +// REFFMTID section +#ifndef _REFFMTID_DEFINED + #define _REFFMTID_DEFINED + #ifdef __cplusplus + #define REFFMTID const IID & + #else + #define REFFMTID const IID * + #endif +#endif + + +// compare functions for GUID +#ifdef __cplusplus + // cpp versions + __inline int InlineIsEqualGUID(REFGUID rguid1, REFGUID rguid2) + { + return(((unsigned long *) &rguid1)[0] == ((unsigned long *) &rguid2)[0] && + ((unsigned long *) &rguid1)[1] == ((unsigned long *) &rguid2)[1] && + ((unsigned long *) &rguid1)[2] == ((unsigned long *) &rguid2)[2] && + ((unsigned long *) &rguid1)[3] == ((unsigned long *) &rguid2)[3]); + } + __inline int IsEqualGUID(REFGUID rguid1, REFGUID rguid2) + { + return !memcmp(&rguid1, &rguid2, sizeof(GUID)); + } +#else + // c versions + #define InlineIsEqualGUID(rguid1, rguid2) \ + (((unsigned long *) rguid1)[0] == ((unsigned long *) rguid2)[0] && \ + ((unsigned long *) rguid1)[1] == ((unsigned long *) rguid2)[1] && \ + ((unsigned long *) rguid1)[2] == ((unsigned long *) rguid2)[2] && \ + ((unsigned long *) rguid1)[3] == ((unsigned long *) rguid2)[3]) + + #define IsEqualGUID(rguid1, rguid2) (!memcmp(rguid1, rguid2, sizeof(GUID))) +#endif + +// use the inline version??? +#ifdef __INLINE_ISEQUAL_GUID + #define IsEqualGUID(rguid1, rguid2) InlineIsEqualGUID(rguid1, rguid2) +#endif + + +// compare functions for IID CLSID +#define IsEqualIID(riid1, riid2) IsEqualGUID(riid1, riid2) +#define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID(rclsid1, rclsid2) + +// c++ helper functions +#if !defined _SYS_GUID_OPERATOR_EQ_ && !defined _NO_SYS_GUID_OPERATOR_EQ_ + #define _SYS_GUID_OPERATOR_EQ_ + #ifdef __cplusplus + __inline int operator==(REFGUID guidOne, REFGUID guidTwo) + { + return IsEqualGUID(guidOne ,guidTwo); + } + + __inline int operator!=(REFGUID guidOne, REFGUID guidTwo) + { + return !(guidOne == guidTwo); + } + #endif +#endif + +#endif \ No newline at end of file diff --git a/reactos/include/structs.h b/reactos/include/structs.h index b0cefd3a8ed..90b41bdd5a6 100644 --- a/reactos/include/structs.h +++ b/reactos/include/structs.h @@ -185,7 +185,7 @@ typedef struct tagRGBTRIPLE { BYTE rgbtBlue; BYTE rgbtGreen; BYTE rgbtRed; -} RGBTRIPLE; +} RGBTRIPLE, *PRGBTRIPLE; typedef struct _BITMAPCOREINFO { BITMAPCOREHEADER bmciHeader; diff --git a/reactos/include/win32k/color.h b/reactos/include/win32k/color.h index fa79cdaefcb..2b68d196ac6 100644 --- a/reactos/include/win32k/color.h +++ b/reactos/include/win32k/color.h @@ -1,6 +1,11 @@ #ifndef __WIN32K_COLOR_H #define __WIN32K_COLOR_H +#define CLR_INVALID 0xffffffff +#define PC_SYS_USED 0x80 // palentry is used (both system and logical) +#define PC_SYS_RESERVED 0x40 // system palentry is not to be mapped to +#define PC_SYS_MAPPED 0x10 // logical palentry is a direct alias for system palentry + BOOL STDCALL W32kAnimatePalette (