gdiplus: Added GdipCreateStreamOnFile.
This commit is contained in:
parent
7a9a30d95c
commit
3ea77f5cfd
@ -4,7 +4,7 @@ SRCDIR = @srcdir@
|
|||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
MODULE = gdiplus.dll
|
MODULE = gdiplus.dll
|
||||||
IMPORTLIB = libgdiplus.$(IMPLIBEXT)
|
IMPORTLIB = libgdiplus.$(IMPLIBEXT)
|
||||||
IMPORTS = oleaut32 ole32 user32 gdi32 advapi32 kernel32 ntdll
|
IMPORTS = shlwapi oleaut32 ole32 user32 gdi32 advapi32 kernel32 ntdll
|
||||||
EXTRALIBS = -luuid
|
EXTRALIBS = -luuid
|
||||||
|
|
||||||
C_SRCS = \
|
C_SRCS = \
|
||||||
|
@ -27,6 +27,9 @@
|
|||||||
|
|
||||||
#include "objbase.h"
|
#include "objbase.h"
|
||||||
|
|
||||||
|
#include "winreg.h"
|
||||||
|
#include "shlwapi.h"
|
||||||
|
|
||||||
#include "gdiplus.h"
|
#include "gdiplus.h"
|
||||||
#include "gdiplus_private.h"
|
#include "gdiplus_private.h"
|
||||||
|
|
||||||
@ -246,3 +249,17 @@ REAL gdiplus_atan2(REAL dy, REAL dx)
|
|||||||
|
|
||||||
return atan2(dy, dx);
|
return atan2(dy, dx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GpStatus hresult_to_status(HRESULT res)
|
||||||
|
{
|
||||||
|
switch(res){
|
||||||
|
case S_OK:
|
||||||
|
return Ok;
|
||||||
|
case E_OUTOFMEMORY:
|
||||||
|
return OutOfMemory;
|
||||||
|
case E_INVALIDARG:
|
||||||
|
return InvalidParameter;
|
||||||
|
default:
|
||||||
|
return GenericError;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -129,7 +129,7 @@
|
|||||||
@ stub GdipCreateRegionRectI
|
@ stub GdipCreateRegionRectI
|
||||||
@ stub GdipCreateRegionRgnData
|
@ stub GdipCreateRegionRgnData
|
||||||
@ stdcall GdipCreateSolidFill(long ptr)
|
@ stdcall GdipCreateSolidFill(long ptr)
|
||||||
@ stub GdipCreateStreamOnFile
|
@ stdcall GdipCreateStreamOnFile(ptr long ptr)
|
||||||
@ stub GdipCreateStringFormat
|
@ stub GdipCreateStringFormat
|
||||||
@ stub GdipCreateTexture2
|
@ stub GdipCreateTexture2
|
||||||
@ stub GdipCreateTexture2I
|
@ stub GdipCreateTexture2I
|
||||||
|
@ -41,6 +41,7 @@ COLORREF ARGB2COLORREF(ARGB color);
|
|||||||
extern INT arc2polybezier(GpPointF * points, REAL x1, REAL y1, REAL x2, REAL y2,
|
extern INT arc2polybezier(GpPointF * points, REAL x1, REAL y1, REAL x2, REAL y2,
|
||||||
REAL startAngle, REAL sweepAngle);
|
REAL startAngle, REAL sweepAngle);
|
||||||
extern REAL gdiplus_atan2(REAL dy, REAL dx);
|
extern REAL gdiplus_atan2(REAL dy, REAL dx);
|
||||||
|
extern GpStatus hresult_to_status(HRESULT res);
|
||||||
|
|
||||||
static inline INT roundr(REAL x)
|
static inline INT roundr(REAL x)
|
||||||
{
|
{
|
||||||
|
@ -30,6 +30,9 @@
|
|||||||
#include "olectl.h"
|
#include "olectl.h"
|
||||||
#include "ole2.h"
|
#include "ole2.h"
|
||||||
|
|
||||||
|
#include "winreg.h"
|
||||||
|
#include "shlwapi.h"
|
||||||
|
|
||||||
#include "gdiplus.h"
|
#include "gdiplus.h"
|
||||||
#include "gdiplus_private.h"
|
#include "gdiplus_private.h"
|
||||||
#include "wine/debug.h"
|
#include "wine/debug.h"
|
||||||
@ -873,6 +876,27 @@ end:
|
|||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GpStatus WINGDIPAPI GdipCreateStreamOnFile(GDIPCONST WCHAR * filename,
|
||||||
|
UINT access, IStream **stream)
|
||||||
|
{
|
||||||
|
DWORD dwMode;
|
||||||
|
HRESULT ret;
|
||||||
|
|
||||||
|
if(!stream || !filename)
|
||||||
|
return InvalidParameter;
|
||||||
|
|
||||||
|
if(access & GENERIC_WRITE)
|
||||||
|
dwMode = STGM_SHARE_DENY_WRITE | STGM_WRITE | STGM_CREATE;
|
||||||
|
else if(access & GENERIC_READ)
|
||||||
|
dwMode = STGM_SHARE_DENY_WRITE | STGM_READ | STGM_FAILIFTHERE;
|
||||||
|
else
|
||||||
|
return InvalidParameter;
|
||||||
|
|
||||||
|
ret = SHCreateStreamOnFileW(filename, dwMode, stream);
|
||||||
|
|
||||||
|
return hresult_to_status(ret);
|
||||||
|
}
|
||||||
|
|
||||||
GpStatus WINGDIPAPI GdipDeleteGraphics(GpGraphics *graphics)
|
GpStatus WINGDIPAPI GdipDeleteGraphics(GpGraphics *graphics)
|
||||||
{
|
{
|
||||||
if(!graphics) return InvalidParameter;
|
if(!graphics) return InvalidParameter;
|
||||||
|
@ -52,6 +52,7 @@ GpStatus WINGDIPAPI GdipCreateFromHWND(HWND,GpGraphics**);
|
|||||||
GpStatus WINGDIPAPI GdipCreateMetafileFromEmf(HENHMETAFILE,BOOL,GpMetafile**);
|
GpStatus WINGDIPAPI GdipCreateMetafileFromEmf(HENHMETAFILE,BOOL,GpMetafile**);
|
||||||
GpStatus WINGDIPAPI GdipCreateMetafileFromWmf(HMETAFILE,BOOL,
|
GpStatus WINGDIPAPI GdipCreateMetafileFromWmf(HMETAFILE,BOOL,
|
||||||
GDIPCONST WmfPlaceableFileHeader*,GpMetafile**);
|
GDIPCONST WmfPlaceableFileHeader*,GpMetafile**);
|
||||||
|
GpStatus WINGDIPAPI GdipCreateStreamOnFile(GDIPCONST WCHAR*,UINT,IStream**);
|
||||||
GpStatus WINGDIPAPI GdipDeleteGraphics(GpGraphics *);
|
GpStatus WINGDIPAPI GdipDeleteGraphics(GpGraphics *);
|
||||||
GpStatus WINGDIPAPI GdipDrawArc(GpGraphics*,GpPen*,REAL,REAL,REAL,REAL,REAL,REAL);
|
GpStatus WINGDIPAPI GdipDrawArc(GpGraphics*,GpPen*,REAL,REAL,REAL,REAL,REAL,REAL);
|
||||||
GpStatus WINGDIPAPI GdipDrawBezier(GpGraphics*,GpPen*,REAL,REAL,REAL,REAL,REAL,
|
GpStatus WINGDIPAPI GdipDrawBezier(GpGraphics*,GpPen*,REAL,REAL,REAL,REAL,REAL,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user