From 39bcf9d6d4f4531ae3cd6504d4632f03482bc0c8 Mon Sep 17 00:00:00 2001
From: Leo van den Berg <leo@connectux.com>
Date: Tue, 19 Mar 2002 02:14:34 +0000
Subject: [PATCH] Added some stubs.

---
 dlls/msimg32/msimg32.spec   |   8 +--
 dlls/msimg32/msimg32_main.c |  52 +++++++++++++++--
 include/wingdi.h            | 109 +++++++++++++++++++++++++-----------
 3 files changed, 126 insertions(+), 43 deletions(-)

diff --git a/dlls/msimg32/msimg32.spec b/dlls/msimg32/msimg32.spec
index f1385de6f98..580532935e8 100644
--- a/dlls/msimg32/msimg32.spec
+++ b/dlls/msimg32/msimg32.spec
@@ -5,8 +5,8 @@ import ntdll.dll
 
 debug_channels (msimg32)
 
-@ stub AlphaBlend
+@ stdcall AlphaBlend(long long long long long long long long long long long) AlphaBlend
 @ stub DllInitialize
-@ stdcall GradientFill (long ptr long ptr long long ) GradientFill
-@ stub TransparentBlt
-@ stub vSetDdrawflag
+@ stdcall GradientFill(long ptr long ptr long long) GradientFill
+@ stdcall TransparentBlt(long long long long long long long long long long long) TransparentBlt
+@ stdcall vSetDdrawflag() vSetDdrawflag
diff --git a/dlls/msimg32/msimg32_main.c b/dlls/msimg32/msimg32_main.c
index 9d0e09c5113..31f36798961 100644
--- a/dlls/msimg32/msimg32_main.c
+++ b/dlls/msimg32/msimg32_main.c
@@ -17,15 +17,57 @@
  */
 
 #include "winbase.h"
+#include "wingdi.h"
 #include "winerror.h"
 #include "wine/debug.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(msimg32);
 
-BOOL WINAPI GradientFill(HDC hdc, void * vert_array, ULONG nvert, 
-		    void * grad_array, ULONG ngrad, ULONG mode)
+
+/******************************************************************************
+ *           GradientFill   (MSIMG32.@)
+ */
+BOOL WINAPI GradientFill( HDC hdc, TRIVERTEX *vert_array, ULONG nvert,
+                          void * grad_array, ULONG ngrad, ULONG mode )
+{
+    FIXME("stub: %ld vertices %ld gradients mode %lx\n", nvert, ngrad, mode);
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return FALSE;
+}
+
+
+/******************************************************************************
+ *           AlphaBlend   (MSIMG32.@)
+ */
+BOOL WINAPI AlphaBlend( HDC hdcDest, int xDest, int yDest, int widthDest, int heightDst,
+                        HDC hdcSrc, int xSrc, int ySrc, int widthSrc, int heightSrc,
+                        BLENDFUNCTION func )
+{
+    FIXME("stub: AlphaBlend from %x to %x\n", hdcSrc, hdcDest );
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return FALSE;
+}
+
+
+/******************************************************************************
+ *           TransparentBlt   (MSIMG32.@)
+ */
+BOOL WINAPI TransparentBlt( HDC hdcDest, int xDest, int yDest, int widthDest, int heightDst,
+                            HDC hdcSrc, int xSrc, int ySrc, int widthSrc, int heightSrc,
+                            UINT crTransparent )
+{
+    FIXME("stub: TransparentBlt from %x to %x\n", hdcSrc, hdcDest );
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return FALSE;
+}
+
+
+/******************************************************************************
+ *           vSetDdrawflag   (MSIMG32.@)
+ */
+void WINAPI vSetDdrawflag(void)
 {
-  FIXME("stub: %ld vertices %ld gradients mode %lx\n", nvert, ngrad, mode);
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return FALSE;
+    static unsigned int vDrawflag=1;
+    FIXME("stub: vSetDrawFlag %u\n", vDrawflag);
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
 }
diff --git a/include/wingdi.h b/include/wingdi.h
index 5624c7854d8..be65455d854 100644
--- a/include/wingdi.h
+++ b/include/wingdi.h
@@ -3002,36 +3002,75 @@ DECL_WINELIB_TYPE_AW(LPDISPLAY_DEVICE)
 #define	DISPLAY_DEVICE_MIRRORING_DRIVER		0x00000008
 #define	DISPLAY_DEVICE_VGA_COMPATIBLE		0x00000010
 
+typedef USHORT COLOR16;
+
+typedef struct _TRIVERTEX
+{
+    LONG    x;
+    LONG    y;
+    COLOR16 Red;
+    COLOR16 Green;
+    COLOR16 Blue;
+    COLOR16 Alpha;
+} TRIVERTEX, *PTRIVERTEX, *LPTRIVERTEX;
+
+typedef struct _GRADIENT_TRIANGLE
+{
+    ULONG Vertex1;
+    ULONG Vertex2;
+    ULONG Vertex3;
+} GRADIENT_TRIANGLE, *PGRADIENT_TRIANGLE, *LPGRADIENT_TRIANGLE;
+
+typedef struct _GRADIENT_RECT
+{
+    ULONG UpperLeft;
+    ULONG LowerRight;
+} GRADIENT_RECT, *PGRADIENT_RECT, *LPGRADIENT_RECT;
+
+typedef struct _BLENDFUNCTION
+{
+    BYTE BlendOp;
+    BYTE BlendFlags;
+    BYTE SourceConstantAlpha;
+    BYTE AlphaFormat;
+} BLENDFUNCTION, *PBLENDFUNCTION;
+
+#define GRADIENT_FILL_RECT_H      0x00000000
+#define GRADIENT_FILL_RECT_V      0x00000001
+#define GRADIENT_FILL_TRIANGLE    0x00000002
+#define GRADIENT_FILL_OP_FLAG     0x000000ff
+
 #define GDI_ERROR                               (0xFFFFFFFFL)
 #define HGDI_ERROR                              ((HANDLE)0xFFFFFFFFL)
 
-INT       WINAPI AbortDoc(HDC);
-BOOL      WINAPI AbortPath(HDC);
-INT       WINAPI AddFontResourceA(LPCSTR);
-INT       WINAPI AddFontResourceW(LPCWSTR);
+INT         WINAPI AbortDoc(HDC);
+BOOL        WINAPI AbortPath(HDC);
+INT         WINAPI AddFontResourceA(LPCSTR);
+INT         WINAPI AddFontResourceW(LPCWSTR);
 #define     AddFontResource WINELIB_NAME_AW(AddFontResource)
-BOOL      WINAPI AngleArc(HDC, INT, INT, DWORD, FLOAT, FLOAT);
-BOOL      WINAPI AnimatePalette(HPALETTE,UINT,UINT,const PALETTEENTRY*);
-BOOL      WINAPI Arc(HDC,INT,INT,INT,INT,INT,INT,INT,INT);
-BOOL      WINAPI ArcTo(HDC, INT, INT, INT, INT, INT, INT, INT, INT); 
-BOOL      WINAPI BeginPath(HDC);
-BOOL      WINAPI BitBlt(HDC,INT,INT,INT,INT,HDC,INT,INT,DWORD);
-INT       WINAPI ChoosePixelFormat(HDC,const LPPIXELFORMATDESCRIPTOR);
-BOOL      WINAPI Chord(HDC,INT,INT,INT,INT,INT,INT,INT,INT);
+BOOL        WINAPI AlphaBlend(HDC,int,int,int,int,HDC,int,int,int,int,BLENDFUNCTION);
+BOOL        WINAPI AngleArc(HDC, INT, INT, DWORD, FLOAT, FLOAT);
+BOOL        WINAPI AnimatePalette(HPALETTE,UINT,UINT,const PALETTEENTRY*);
+BOOL        WINAPI Arc(HDC,INT,INT,INT,INT,INT,INT,INT,INT);
+BOOL        WINAPI ArcTo(HDC, INT, INT, INT, INT, INT, INT, INT, INT); 
+BOOL        WINAPI BeginPath(HDC);
+BOOL        WINAPI BitBlt(HDC,INT,INT,INT,INT,HDC,INT,INT,DWORD);
+INT         WINAPI ChoosePixelFormat(HDC,const LPPIXELFORMATDESCRIPTOR);
+BOOL        WINAPI Chord(HDC,INT,INT,INT,INT,INT,INT,INT,INT);
 HENHMETAFILE WINAPI CloseEnhMetaFile(HDC);
-BOOL      WINAPI CloseFigure(HDC);
-HMETAFILE WINAPI CloseMetaFile(HDC);
-INT       WINAPI CombineRgn(HRGN,HRGN,HRGN,INT);
-BOOL      WINAPI CombineTransform(LPXFORM,const XFORM *,const XFORM *);
+BOOL        WINAPI CloseFigure(HDC);
+HMETAFILE   WINAPI CloseMetaFile(HDC);
+INT         WINAPI CombineRgn(HRGN,HRGN,HRGN,INT);
+BOOL        WINAPI CombineTransform(LPXFORM,const XFORM *,const XFORM *);
 HENHMETAFILE WINAPI CopyEnhMetaFileA(HENHMETAFILE,LPCSTR);
 HENHMETAFILE WINAPI CopyEnhMetaFileW(HENHMETAFILE,LPCWSTR);
 #define     CopyEnhMetaFile WINELIB_NAME_AW(CopyEnhMetaFile)
-HMETAFILE WINAPI CopyMetaFileA(HMETAFILE,LPCSTR);
-HMETAFILE WINAPI CopyMetaFileW(HMETAFILE,LPCWSTR);
+HMETAFILE   WINAPI CopyMetaFileA(HMETAFILE,LPCSTR);
+HMETAFILE   WINAPI CopyMetaFileW(HMETAFILE,LPCWSTR);
 #define     CopyMetaFile WINELIB_NAME_AW(CopyMetaFile)
-HBITMAP   WINAPI CreateBitmap(INT,INT,UINT,UINT,LPCVOID);
-HBITMAP   WINAPI CreateBitmapIndirect(const BITMAP*);
-HBRUSH    WINAPI CreateBrushIndirect(const LOGBRUSH*);
+HBITMAP     WINAPI CreateBitmap(INT,INT,UINT,UINT,LPCVOID);
+HBITMAP     WINAPI CreateBitmapIndirect(const BITMAP*);
+HBRUSH      WINAPI CreateBrushIndirect(const LOGBRUSH*);
 HCOLORSPACE WINAPI CreateColorSpaceA(LPLOGCOLORSPACEA);
 HCOLORSPACE WINAPI CreateColorSpaceW(LPLOGCOLORSPACEW);
 #define     CreateColorSpace WINELIB_NAME_AW(CreateColorSpace)
@@ -3238,19 +3277,20 @@ INT       WINAPI GetTextFaceW(HDC,INT,LPWSTR);
 BOOL      WINAPI GetTextMetricsA(HDC,LPTEXTMETRICA);
 BOOL      WINAPI GetTextMetricsW(HDC,LPTEXTMETRICW);
 #define     GetTextMetrics WINELIB_NAME_AW(GetTextMetrics)
-BOOL      WINAPI GetViewportExtEx(HDC,LPSIZE);
-BOOL      WINAPI GetViewportOrgEx(HDC,LPPOINT);
-BOOL      WINAPI GetWindowExtEx(HDC,LPSIZE);
-BOOL      WINAPI GetWindowOrgEx(HDC,LPPOINT);
-BOOL      WINAPI GetWorldTransform(HDC,LPXFORM);
-INT       WINAPI IntersectClipRect(HDC,INT,INT,INT,INT);
-BOOL      WINAPI InvertRgn(HDC,HRGN);
-BOOL      WINAPI LineDDA(INT,INT,INT,INT,LINEDDAPROC,LPARAM);
-BOOL      WINAPI LineTo(HDC,INT,INT);
-BOOL      WINAPI LPtoDP(HDC,LPPOINT,INT);
-BOOL      WINAPI MaskBlt(HDC,INT,INT,INT,INT,HDC,INT,INT,HBITMAP,INT,INT,DWORD);
-BOOL      WINAPI ModifyWorldTransform(HDC,const XFORM *, DWORD);
-BOOL      WINAPI MoveToEx(HDC,INT,INT,LPPOINT);
+BOOL        WINAPI GetViewportExtEx(HDC,LPSIZE);
+BOOL        WINAPI GetViewportOrgEx(HDC,LPPOINT);
+BOOL        WINAPI GetWindowExtEx(HDC,LPSIZE);
+BOOL        WINAPI GetWindowOrgEx(HDC,LPPOINT);
+BOOL        WINAPI GetWorldTransform(HDC,LPXFORM);
+BOOL        WINAPI GradientFill(HDC,PTRIVERTEX,ULONG,PVOID,ULONG,ULONG);
+INT         WINAPI IntersectClipRect(HDC,INT,INT,INT,INT);
+BOOL        WINAPI InvertRgn(HDC,HRGN);
+BOOL        WINAPI LineDDA(INT,INT,INT,INT,LINEDDAPROC,LPARAM);
+BOOL        WINAPI LineTo(HDC,INT,INT);
+BOOL        WINAPI LPtoDP(HDC,LPPOINT,INT);
+BOOL        WINAPI MaskBlt(HDC,INT,INT,INT,INT,HDC,INT,INT,HBITMAP,INT,INT,DWORD);
+BOOL        WINAPI ModifyWorldTransform(HDC,const XFORM *, DWORD);
+BOOL        WINAPI MoveToEx(HDC,INT,INT,LPPOINT);
 /* FIXME This is defined in kernel32.spec !?*/
 INT       WINAPI MulDiv(INT,INT,INT);
 INT       WINAPI OffsetClipRgn(HDC,INT,INT);
@@ -3356,6 +3396,7 @@ BOOL      WINAPI TextOutA(HDC,INT,INT,LPCSTR,INT);
 BOOL      WINAPI TextOutW(HDC,INT,INT,LPCWSTR,INT);
 #define     TextOut WINELIB_NAME_AW(TextOut)
 BOOL      WINAPI TranslateCharsetInfo(LPDWORD,LPCHARSETINFO,DWORD);
+BOOL      WINAPI TransparentBlt(HDC,int,int,int,int,HDC,int,int,int,int,UINT);
 BOOL      WINAPI UnrealizeObject(HGDIOBJ);
 BOOL      WINAPI UpdateColors(HDC);
 BOOL      WINAPI WidenPath(HDC);
-- 
GitLab