forked from Mirrors/wine-wine
- Added some missing EMR record types and updated and fixed others
- Added stubs and headers for CreateColorSpace,DeleteColorSpace and SetColorSpace - Added header for SetICMMode - Added ability to play more enhanced metafile recordsoldstable
parent
40d5f4cddc
commit
f2b8492285
|
@ -1966,9 +1966,15 @@ typedef struct {
|
||||||
DWORD nPalEntries;
|
DWORD nPalEntries;
|
||||||
SIZEL szlDevice;
|
SIZEL szlDevice;
|
||||||
SIZEL szlMillimeters;
|
SIZEL szlMillimeters;
|
||||||
|
|
||||||
|
/* Fields for winver >= win95 */
|
||||||
DWORD cbPixelFormat;
|
DWORD cbPixelFormat;
|
||||||
DWORD offPixelFormat;
|
DWORD offPixelFormat;
|
||||||
DWORD bOpenGL;
|
DWORD bOpenGL;
|
||||||
|
|
||||||
|
/* Fields for winver >= win98 */
|
||||||
|
SIZEL szlMicrometers;
|
||||||
|
|
||||||
} ENHMETAHEADER, *LPENHMETAHEADER;
|
} ENHMETAHEADER, *LPENHMETAHEADER;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
@ -2049,9 +2055,18 @@ typedef struct {
|
||||||
typedef struct {
|
typedef struct {
|
||||||
EMR emr;
|
EMR emr;
|
||||||
DWORD ihCS;
|
DWORD ihCS;
|
||||||
LOGCOLORSPACEW lcs;
|
LOGCOLORSPACEA lcs;
|
||||||
} EMRCREATECOLORSPACE, *PEMRCREATECOLORSPACE;
|
} EMRCREATECOLORSPACE, *PEMRCREATECOLORSPACE;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
EMR emr;
|
||||||
|
DWORD ihCS;
|
||||||
|
LOGCOLORSPACEW lcs;
|
||||||
|
DWORD dwFlags;
|
||||||
|
DWORD cbData;
|
||||||
|
BYTE Data[1];
|
||||||
|
} EMRCREATECOLORSPACEW, *PEMRCREATECOLORSPACEW;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
EMR emr;
|
EMR emr;
|
||||||
DWORD ihBrush;
|
DWORD ihBrush;
|
||||||
|
@ -2508,6 +2523,24 @@ typedef struct {
|
||||||
LONG cyDst;
|
LONG cyDst;
|
||||||
} EMRSTRETCHDIBITS, *PEMRSTRETCHDIBITS;
|
} EMRSTRETCHDIBITS, *PEMRSTRETCHDIBITS;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
EMR emr;
|
||||||
|
PIXELFORMATDESCRIPTOR pfd;
|
||||||
|
} EMRPIXELFORMAT, *PEMRPIXELFORMAT;
|
||||||
|
|
||||||
|
typedef struct tagEMRGLSRECORD {
|
||||||
|
EMR emr;
|
||||||
|
DWORD cbData;
|
||||||
|
BYTE Data[1];
|
||||||
|
} EMRGLSRECORD, *PEMRGLSRECORD;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
EMR emr;
|
||||||
|
RECTL rclBounds;
|
||||||
|
DWORD cbData;
|
||||||
|
BYTE Data[1];
|
||||||
|
} EMRGLSBOUNDEDRECORD, *PEMRGLSBOUNDEDRECORD;
|
||||||
|
|
||||||
typedef INT (CALLBACK *ENHMFENUMPROC)(HDC, LPHANDLETABLE,
|
typedef INT (CALLBACK *ENHMFENUMPROC)(HDC, LPHANDLETABLE,
|
||||||
LPENHMETARECORD, INT, LPVOID);
|
LPENHMETARECORD, INT, LPVOID);
|
||||||
|
|
||||||
|
@ -3046,6 +3079,9 @@ HMETAFILE WINAPI CopyMetaFileW(HMETAFILE,LPCWSTR);
|
||||||
HBITMAP WINAPI CreateBitmap(INT,INT,UINT,UINT,LPCVOID);
|
HBITMAP WINAPI CreateBitmap(INT,INT,UINT,UINT,LPCVOID);
|
||||||
HBITMAP WINAPI CreateBitmapIndirect(const BITMAP*);
|
HBITMAP WINAPI CreateBitmapIndirect(const BITMAP*);
|
||||||
HBRUSH WINAPI CreateBrushIndirect(const LOGBRUSH*);
|
HBRUSH WINAPI CreateBrushIndirect(const LOGBRUSH*);
|
||||||
|
HCOLORSPACE WINAPI CreateColorSpaceA(LPLOGCOLORSPACEA);
|
||||||
|
HCOLORSPACE WINAPI CreateColorSpaceW(LPLOGCOLORSPACEW);
|
||||||
|
#define CreateColorSpace WINELIB_NAME_AW(CreateColorSpace)
|
||||||
HBITMAP WINAPI CreateCompatibleBitmap(HDC,INT,INT);
|
HBITMAP WINAPI CreateCompatibleBitmap(HDC,INT,INT);
|
||||||
HDC WINAPI CreateCompatibleDC(HDC);
|
HDC WINAPI CreateCompatibleDC(HDC);
|
||||||
HDC WINAPI CreateDCA(LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*);
|
HDC WINAPI CreateDCA(LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*);
|
||||||
|
@ -3093,6 +3129,7 @@ BOOL WINAPI CreateScalableFontResourceW(DWORD,LPCWSTR,LPCWSTR,LPCWSTR);
|
||||||
#define CreateScalableFontResource WINELIB_NAME_AW(CreateScalableFontResource)
|
#define CreateScalableFontResource WINELIB_NAME_AW(CreateScalableFontResource)
|
||||||
HBRUSH WINAPI CreateSolidBrush(COLORREF);
|
HBRUSH WINAPI CreateSolidBrush(COLORREF);
|
||||||
BOOL WINAPI DPtoLP(HDC,LPPOINT,INT);
|
BOOL WINAPI DPtoLP(HDC,LPPOINT,INT);
|
||||||
|
BOOL WINAPI DeleteColorSpace(HCOLORSPACE);
|
||||||
BOOL WINAPI DeleteDC(HDC);
|
BOOL WINAPI DeleteDC(HDC);
|
||||||
BOOL WINAPI DeleteEnhMetaFile(HENHMETAFILE);
|
BOOL WINAPI DeleteEnhMetaFile(HENHMETAFILE);
|
||||||
BOOL WINAPI DeleteMetaFile(HMETAFILE);
|
BOOL WINAPI DeleteMetaFile(HMETAFILE);
|
||||||
|
@ -3308,12 +3345,14 @@ INT WINAPI SetBkMode(HDC,INT);
|
||||||
UINT WINAPI SetBoundsRect(HDC,const RECT*,UINT);
|
UINT WINAPI SetBoundsRect(HDC,const RECT*,UINT);
|
||||||
BOOL WINAPI SetBrushOrgEx(HDC,INT,INT,LPPOINT);
|
BOOL WINAPI SetBrushOrgEx(HDC,INT,INT,LPPOINT);
|
||||||
BOOL WINAPI SetColorAdjustment(HDC,const COLORADJUSTMENT*);
|
BOOL WINAPI SetColorAdjustment(HDC,const COLORADJUSTMENT*);
|
||||||
|
HCOLORSPACE WINAPI SetColorSpace(HDC,HCOLORSPACE);
|
||||||
UINT WINAPI SetDIBColorTable(HDC,UINT,UINT,RGBQUAD*);
|
UINT WINAPI SetDIBColorTable(HDC,UINT,UINT,RGBQUAD*);
|
||||||
INT WINAPI SetDIBits(HDC,HBITMAP,UINT,UINT,LPCVOID,const BITMAPINFO*,UINT);
|
INT WINAPI SetDIBits(HDC,HBITMAP,UINT,UINT,LPCVOID,const BITMAPINFO*,UINT);
|
||||||
INT WINAPI SetDIBitsToDevice(HDC,INT,INT,DWORD,DWORD,INT,
|
INT WINAPI SetDIBitsToDevice(HDC,INT,INT,DWORD,DWORD,INT,
|
||||||
INT,UINT,UINT,LPCVOID,const BITMAPINFO*,UINT);
|
INT,UINT,UINT,LPCVOID,const BITMAPINFO*,UINT);
|
||||||
HENHMETAFILE WINAPI SetEnhMetaFileBits(UINT,const BYTE *);
|
HENHMETAFILE WINAPI SetEnhMetaFileBits(UINT,const BYTE *);
|
||||||
INT WINAPI SetGraphicsMode(HDC,INT);
|
INT WINAPI SetGraphicsMode(HDC,INT);
|
||||||
|
INT WINAPI SetICMMode(HDC,INT);
|
||||||
DWORD WINAPI SetLayout(HDC,DWORD);
|
DWORD WINAPI SetLayout(HDC,DWORD);
|
||||||
INT WINAPI SetMapMode(HDC,INT);
|
INT WINAPI SetMapMode(HDC,INT);
|
||||||
DWORD WINAPI SetMapperFlags(HDC,DWORD);
|
DWORD WINAPI SetMapperFlags(HDC,DWORD);
|
||||||
|
|
|
@ -352,7 +352,39 @@ BOOL WINAPI PlayEnhMetaFileRecord(
|
||||||
{
|
{
|
||||||
case EMR_HEADER:
|
case EMR_HEADER:
|
||||||
{
|
{
|
||||||
/* ENHMETAHEADER *h = (LPENHMETAHEADER) mr; */
|
#if 0
|
||||||
|
ENHMETAHEADER* h = (LPENHMETAHEADER)mr;
|
||||||
|
XFORM dcTransform;
|
||||||
|
|
||||||
|
/* Scale the enhanced metafile according to the reference hdc
|
||||||
|
it was created with */
|
||||||
|
if( h->szlDevice.cx )
|
||||||
|
{
|
||||||
|
dcTransform.eM11 = (FLOAT)( (DOUBLE)GetDeviceCaps( hdc, HORZRES ) /
|
||||||
|
(DOUBLE)h->szlDevice.cx );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ERR( "Invalid szlDevice.cx in header\n" );
|
||||||
|
dcTransform.eM11 = (FLOAT)1.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( h->szlDevice.cy )
|
||||||
|
{
|
||||||
|
dcTransform.eM22 = (FLOAT)( (DOUBLE)GetDeviceCaps( hdc, VERTRES ) /
|
||||||
|
(DOUBLE)h->szlDevice.cy );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ERR( "Invalid szlDevice.cy in header\n" );
|
||||||
|
dcTransform.eM22 = (FLOAT)1.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
dcTransform.eM12 = dcTransform.eM21 = (FLOAT)0;
|
||||||
|
dcTransform.eDx = dcTransform.eDy = (FLOAT)0;
|
||||||
|
|
||||||
|
ModifyWorldTransform( hdc, &dcTransform, MWT_RIGHTMULTIPLY );
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case EMR_EOF:
|
case EMR_EOF:
|
||||||
|
@ -1048,6 +1080,100 @@ BOOL WINAPI PlayEnhMetaFileRecord(
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case EMR_CREATECOLORSPACE:
|
||||||
|
{
|
||||||
|
PEMRCREATECOLORSPACE lpCreateColorSpace = (PEMRCREATECOLORSPACE)mr;
|
||||||
|
|
||||||
|
(handletable->objectHandle)[lpCreateColorSpace->ihCS] =
|
||||||
|
CreateColorSpaceA( &lpCreateColorSpace->lcs );
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case EMR_SETCOLORSPACE:
|
||||||
|
{
|
||||||
|
PEMRSETCOLORSPACE lpSetColorSpace = (PEMRSETCOLORSPACE)mr;
|
||||||
|
|
||||||
|
SetColorSpace( hdc,
|
||||||
|
(handletable->objectHandle)[lpSetColorSpace->ihCS] );
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case EMR_DELETECOLORSPACE:
|
||||||
|
{
|
||||||
|
PEMRDELETECOLORSPACE lpDeleteColorSpace = (PEMRDELETECOLORSPACE)mr;
|
||||||
|
|
||||||
|
DeleteColorSpace( (handletable->objectHandle)[lpDeleteColorSpace->ihCS] );
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case EMR_SETICMMODE:
|
||||||
|
{
|
||||||
|
PERMSETICMMODE lpSetICMMode = (PERMSETICMMODE)mr;
|
||||||
|
|
||||||
|
SetICMMode( hdc,
|
||||||
|
(INT)lpSetICMMode->iMode );
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case EMR_PIXELFORMAT:
|
||||||
|
{
|
||||||
|
INT iPixelFormat;
|
||||||
|
PEMRPIXELFORMAT lpPixelFormat = (PEMRPIXELFORMAT)mr;
|
||||||
|
|
||||||
|
iPixelFormat = ChoosePixelFormat( hdc, &lpPixelFormat->pfd );
|
||||||
|
SetPixelFormat( hdc, iPixelFormat, &lpPixelFormat->pfd );
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case EMR_SETPALETTEENTRIES:
|
||||||
|
{
|
||||||
|
PEMRSETPALETTEENTRIES lpSetPaletteEntries = (PEMRSETPALETTEENTRIES)mr;
|
||||||
|
|
||||||
|
SetPaletteEntries( (handletable->objectHandle)[lpSetPaletteEntries->ihPal],
|
||||||
|
(UINT)lpSetPaletteEntries->iStart,
|
||||||
|
(UINT)lpSetPaletteEntries->cEntries,
|
||||||
|
lpSetPaletteEntries->aPalEntries );
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case EMR_RESIZEPALETTE:
|
||||||
|
{
|
||||||
|
PEMRRESIZEPALETTE lpResizePalette = (PEMRRESIZEPALETTE)mr;
|
||||||
|
|
||||||
|
ResizePalette( (handletable->objectHandle)[lpResizePalette->ihPal],
|
||||||
|
(UINT)lpResizePalette->cEntries );
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case EMR_CREATEDIBPATTERNBRUSHPT:
|
||||||
|
{
|
||||||
|
PEMRCREATEDIBPATTERNBRUSHPT lpCreate = (PEMRCREATEDIBPATTERNBRUSHPT)mr;
|
||||||
|
|
||||||
|
/* This is a BITMAPINFO struct followed directly by bitmap bits */
|
||||||
|
LPVOID lpPackedStruct = HeapAlloc( GetProcessHeap(),
|
||||||
|
0,
|
||||||
|
lpCreate->cbBmi + lpCreate->cbBits );
|
||||||
|
/* Now pack this structure */
|
||||||
|
memcpy( lpPackedStruct,
|
||||||
|
((BYTE*)lpCreate) + lpCreate->offBmi,
|
||||||
|
lpCreate->cbBmi );
|
||||||
|
memcpy( ((BYTE*)lpPackedStruct) + lpCreate->cbBmi,
|
||||||
|
((BYTE*)lpCreate) + lpCreate->offBits,
|
||||||
|
lpCreate->cbBits );
|
||||||
|
|
||||||
|
(handletable->objectHandle)[lpCreate->ihBrush] =
|
||||||
|
CreateDIBPatternBrushPt( lpPackedStruct,
|
||||||
|
(UINT)lpCreate->iUsage );
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case EMR_BITBLT:
|
case EMR_BITBLT:
|
||||||
case EMR_STRETCHBLT:
|
case EMR_STRETCHBLT:
|
||||||
|
@ -1062,22 +1188,14 @@ BOOL WINAPI PlayEnhMetaFileRecord(
|
||||||
case EMR_POLYPOLYGON16:
|
case EMR_POLYPOLYGON16:
|
||||||
case EMR_POLYDRAW16:
|
case EMR_POLYDRAW16:
|
||||||
case EMR_CREATEMONOBRUSH:
|
case EMR_CREATEMONOBRUSH:
|
||||||
case EMR_CREATEDIBPATTERNBRUSHPT:
|
|
||||||
case EMR_POLYTEXTOUTA:
|
case EMR_POLYTEXTOUTA:
|
||||||
case EMR_POLYTEXTOUTW:
|
case EMR_POLYTEXTOUTW:
|
||||||
case EMR_SETICMMODE:
|
|
||||||
case EMR_CREATECOLORSPACE:
|
|
||||||
case EMR_SETCOLORSPACE:
|
|
||||||
case EMR_DELETECOLORSPACE:
|
|
||||||
case EMR_GLSRECORD:
|
|
||||||
case EMR_GLSBOUNDEDRECORD:
|
|
||||||
case EMR_PIXELFORMAT:
|
|
||||||
case EMR_SETPALETTEENTRIES:
|
|
||||||
case EMR_RESIZEPALETTE:
|
|
||||||
case EMR_FILLRGN:
|
case EMR_FILLRGN:
|
||||||
case EMR_FRAMERGN:
|
case EMR_FRAMERGN:
|
||||||
case EMR_INVERTRGN:
|
case EMR_INVERTRGN:
|
||||||
case EMR_PAINTRGN:
|
case EMR_PAINTRGN:
|
||||||
|
case EMR_GLSRECORD:
|
||||||
|
case EMR_GLSBOUNDEDRECORD:
|
||||||
default:
|
default:
|
||||||
/* From docs: If PlayEnhMetaFileRecord doesn't recognize a
|
/* From docs: If PlayEnhMetaFileRecord doesn't recognize a
|
||||||
record then ignore and return TRUE. */
|
record then ignore and return TRUE. */
|
||||||
|
|
|
@ -39,8 +39,8 @@ init MAIN_GdiInit
|
||||||
@ stdcall CreateBitmap(long long long long ptr) CreateBitmap
|
@ stdcall CreateBitmap(long long long long ptr) CreateBitmap
|
||||||
@ stdcall CreateBitmapIndirect(ptr) CreateBitmapIndirect
|
@ stdcall CreateBitmapIndirect(ptr) CreateBitmapIndirect
|
||||||
@ stdcall CreateBrushIndirect(ptr) CreateBrushIndirect
|
@ stdcall CreateBrushIndirect(ptr) CreateBrushIndirect
|
||||||
@ stub CreateColorSpaceA
|
@ stdcall CreateColorSpaceA(ptr) CreateColorSpaceA
|
||||||
@ stub CreateColorSpaceW
|
@ stdcall CreateColorSpaceW(ptr) CreateColorSpaceW
|
||||||
@ stdcall CreateCompatibleBitmap(long long long) CreateCompatibleBitmap
|
@ stdcall CreateCompatibleBitmap(long long long) CreateCompatibleBitmap
|
||||||
@ stdcall CreateCompatibleDC(long) CreateCompatibleDC
|
@ stdcall CreateCompatibleDC(long) CreateCompatibleDC
|
||||||
@ stdcall CreateDCA(str str str ptr) CreateDCA
|
@ stdcall CreateDCA(str str str ptr) CreateDCA
|
||||||
|
@ -77,7 +77,7 @@ init MAIN_GdiInit
|
||||||
@ stdcall CreateScalableFontResourceW(long wstr wstr wstr) CreateScalableFontResourceW
|
@ stdcall CreateScalableFontResourceW(long wstr wstr wstr) CreateScalableFontResourceW
|
||||||
@ stdcall CreateSolidBrush(long) CreateSolidBrush
|
@ stdcall CreateSolidBrush(long) CreateSolidBrush
|
||||||
@ stdcall DPtoLP(long ptr long) DPtoLP
|
@ stdcall DPtoLP(long ptr long) DPtoLP
|
||||||
@ stub DeleteColorSpace
|
@ stdcall DeleteColorSpace(long) DeleteColorSpace
|
||||||
@ stdcall DeleteDC(long) DeleteDC
|
@ stdcall DeleteDC(long) DeleteDC
|
||||||
@ stdcall DeleteEnhMetaFile(long) DeleteEnhMetaFile
|
@ stdcall DeleteEnhMetaFile(long) DeleteEnhMetaFile
|
||||||
@ stdcall DeleteMetaFile(long) DeleteMetaFile
|
@ stdcall DeleteMetaFile(long) DeleteMetaFile
|
||||||
|
@ -343,7 +343,7 @@ init MAIN_GdiInit
|
||||||
@ stdcall SetBoundsRect(long ptr long) SetBoundsRect
|
@ stdcall SetBoundsRect(long ptr long) SetBoundsRect
|
||||||
@ stdcall SetBrushOrgEx(long long long ptr) SetBrushOrgEx
|
@ stdcall SetBrushOrgEx(long long long ptr) SetBrushOrgEx
|
||||||
@ stdcall SetColorAdjustment(long ptr) SetColorAdjustment
|
@ stdcall SetColorAdjustment(long ptr) SetColorAdjustment
|
||||||
@ stub SetColorSpace
|
@ stdcall SetColorSpace(long long) SetColorSpace
|
||||||
@ stdcall SetDIBColorTable(long long long ptr) SetDIBColorTable
|
@ stdcall SetDIBColorTable(long long long ptr) SetDIBColorTable
|
||||||
@ stdcall SetDIBits(long long long long ptr ptr long) SetDIBits
|
@ stdcall SetDIBits(long long long long ptr ptr long) SetDIBits
|
||||||
@ stdcall SetDIBitsToDevice(long long long long long long long long long ptr ptr long) SetDIBitsToDevice
|
@ stdcall SetDIBitsToDevice(long long long long long long long long long ptr ptr long) SetDIBitsToDevice
|
||||||
|
|
Loading…
Reference in New Issue