OLE32 header files from Jurgen Van Gael
authorJason Filby <jason.filby@gmail.com>
Tue, 13 Mar 2001 19:00:13 +0000 (19:00 +0000)
committerJason Filby <jason.filby@gmail.com>
Tue, 13 Mar 2001 19:00:13 +0000 (19:00 +0000)
svn path=/trunk/; revision=1684

reactos/include/ddk/winddi.h
reactos/include/ole32/basetyps.h [new file with mode: 0644]
reactos/include/ole32/guiddef.h [new file with mode: 0644]
reactos/include/structs.h
reactos/include/win32k/color.h

index bc15f4a..8ddb1b6 100644 (file)
@@ -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 (file)
index 0000000..d1fa50b
--- /dev/null
@@ -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 <jurgen.vangael@student.kuleuven.ac.be>
+   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 <scottc@net-community.com> 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 (file)
index 0000000..c231079
--- /dev/null
@@ -0,0 +1,184 @@
+/* 
+   guiddef.h
+
+   guid declaration
+
+   Copyright (C) 1996 Free Software Foundation, Inc.
+
+   Author:  Jurgen Van Gael <jurgen.vangael@student.kuleuven.ac.be>
+   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 <scottc@net-community.com> 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 <string.h>
+
+
+#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
index b0cefd3..90b41bd 100644 (file)
@@ -185,7 +185,7 @@ typedef struct tagRGBTRIPLE {
   BYTE rgbtBlue; 
   BYTE rgbtGreen; 
   BYTE rgbtRed; 
-} RGBTRIPLE; 
+} RGBTRIPLE, *PRGBTRIPLE
  
 typedef struct _BITMAPCOREINFO {
   BITMAPCOREHEADER  bmciHeader; 
index fa79cda..2b68d19 100644 (file)
@@ -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 (