gdiplus: Test the types of records in an empty EMF+.
This commit is contained in:
parent
a06b4bc59b
commit
757012cd3c
|
@ -25,6 +25,129 @@
|
|||
|
||||
#define expect(expected, got) ok(got == expected, "Expected %.8x, got %.8x\n", expected, got)
|
||||
|
||||
typedef struct emfplus_record
|
||||
{
|
||||
ULONG todo;
|
||||
ULONG record_type;
|
||||
int is_emfplus;
|
||||
} emfplus_record;
|
||||
|
||||
typedef struct emfplus_check_state
|
||||
{
|
||||
const char *desc;
|
||||
int count;
|
||||
const struct emfplus_record *expected;
|
||||
} emfplus_check_state;
|
||||
|
||||
static void check_record(int count, const char *desc, const struct emfplus_record *expected, const struct emfplus_record *actual)
|
||||
{
|
||||
ok(expected->record_type == actual->record_type,
|
||||
"%s.%i: Expected record type 0x%x, got 0x%x\n", desc, count,
|
||||
expected->record_type, actual->record_type);
|
||||
|
||||
ok(expected->is_emfplus == actual->is_emfplus,
|
||||
"%s.%i: Expected is_emfplus %i, got %i\n", desc, count,
|
||||
expected->record_type, actual->record_type);
|
||||
}
|
||||
|
||||
typedef struct EmfPlusRecordHeader
|
||||
{
|
||||
WORD Type;
|
||||
WORD Flags;
|
||||
DWORD Size;
|
||||
DWORD DataSize;
|
||||
} EmfPlusRecordHeader;
|
||||
|
||||
static int CALLBACK enum_emf_proc(HDC hDC, HANDLETABLE *lpHTable, const ENHMETARECORD *lpEMFR,
|
||||
int nObj, LPARAM lpData)
|
||||
{
|
||||
emfplus_check_state *state = (emfplus_check_state*)lpData;
|
||||
emfplus_record actual;
|
||||
|
||||
if (lpEMFR->iType == EMR_GDICOMMENT)
|
||||
{
|
||||
const EMRGDICOMMENT *comment = (const EMRGDICOMMENT*)lpEMFR;
|
||||
|
||||
if (comment->cbData >= 4 && memcmp(comment->Data, "EMF+", 4) == 0)
|
||||
{
|
||||
int offset = 4;
|
||||
|
||||
while (offset + sizeof(EmfPlusRecordHeader) <= comment->cbData)
|
||||
{
|
||||
const EmfPlusRecordHeader *record = (const EmfPlusRecordHeader*)&comment->Data[offset];
|
||||
|
||||
ok(record->Size == record->DataSize + sizeof(EmfPlusRecordHeader),
|
||||
"%s: EMF+ record datasize %u and size %u mismatch\n", state->desc, record->DataSize, record->Size);
|
||||
|
||||
ok(offset + record->DataSize <= comment->cbData,
|
||||
"%s: EMF+ record truncated\n", state->desc);
|
||||
|
||||
if (offset + record->DataSize > comment->cbData)
|
||||
return 0;
|
||||
|
||||
if (state->expected[state->count].record_type)
|
||||
{
|
||||
actual.todo = 0;
|
||||
actual.record_type = record->Type;
|
||||
actual.is_emfplus = 1;
|
||||
|
||||
check_record(state->count, state->desc, &state->expected[state->count], &actual);
|
||||
|
||||
state->count++;
|
||||
}
|
||||
else
|
||||
{
|
||||
ok(0, "%s: Unexpected EMF+ 0x%x record\n", state->desc, record->Type);
|
||||
}
|
||||
|
||||
offset += record->Size;
|
||||
}
|
||||
|
||||
ok(offset == comment->cbData, "%s: truncated EMF+ record data?\n", state->desc);
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (state->expected[state->count].record_type)
|
||||
{
|
||||
actual.todo = 0;
|
||||
actual.record_type = lpEMFR->iType;
|
||||
actual.is_emfplus = 0;
|
||||
|
||||
check_record(state->count, state->desc, &state->expected[state->count], &actual);
|
||||
|
||||
state->count++;
|
||||
}
|
||||
else
|
||||
{
|
||||
ok(0, "%s: Unexpected EMF 0x%x record\n", state->desc, lpEMFR->iType);
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void check_emfplus(HENHMETAFILE hemf, const emfplus_record *expected, const char *desc)
|
||||
{
|
||||
emfplus_check_state state;
|
||||
|
||||
state.desc = desc;
|
||||
state.count = 0;
|
||||
state.expected = expected;
|
||||
|
||||
EnumEnhMetaFile(0, hemf, enum_emf_proc, &state, NULL);
|
||||
|
||||
ok(expected[state.count].record_type == 0, "%s: Got %i records, expecting more\n", desc, state.count);
|
||||
}
|
||||
|
||||
static const emfplus_record empty_records[] = {
|
||||
{0, EMR_HEADER, 0},
|
||||
{0, EmfPlusRecordTypeHeader, 1},
|
||||
{0, EmfPlusRecordTypeEndOfFile, 1},
|
||||
{0, EMR_EOF, 0},
|
||||
{0}
|
||||
};
|
||||
|
||||
static void test_empty(void)
|
||||
{
|
||||
GpStatus stat;
|
||||
|
@ -67,6 +190,8 @@ static void test_empty(void)
|
|||
stat = GdipDisposeImage((GpImage*)metafile);
|
||||
expect(Ok, stat);
|
||||
|
||||
check_emfplus(hemf, empty_records, "empty");
|
||||
|
||||
ret = DeleteEnhMetaFile(hemf);
|
||||
ok(ret != 0, "Failed to delete enhmetafile %p\n", hemf);
|
||||
}
|
||||
|
|
|
@ -430,6 +430,279 @@ enum HatchStyle
|
|||
HatchStyleMax = HatchStyleTotal - 1
|
||||
};
|
||||
|
||||
#define GDIP_EMFPLUS_RECORD_BASE 0x00004000
|
||||
#define GDIP_WMF_RECORD_BASE 0x00010000
|
||||
#define GDIP_WMF_RECORD_TO_EMFPLUS(x) ((x)|GDIP_WMF_RECORD_BASE)
|
||||
|
||||
enum EmfPlusRecordType {
|
||||
WmfRecordTypeSetBkColor = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETBKCOLOR),
|
||||
WmfRecordTypeSetBkMode = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETBKMODE),
|
||||
WmfRecordTypeSetMapMode = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETMAPMODE),
|
||||
WmfRecordTypeSetROP2 = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETROP2),
|
||||
WmfRecordTypeSetRelAbs = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETRELABS),
|
||||
WmfRecordTypeSetPolyFillMode = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETPOLYFILLMODE),
|
||||
WmfRecordTypeSetStretchBltMode = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETSTRETCHBLTMODE),
|
||||
WmfRecordTypeSetTextCharExtra = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETTEXTCHAREXTRA),
|
||||
WmfRecordTypeSetTextColor = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETTEXTCOLOR),
|
||||
WmfRecordTypeSetTextJustification = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETTEXTJUSTIFICATION),
|
||||
WmfRecordTypeSetWindowOrg = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETWINDOWORG),
|
||||
WmfRecordTypeSetWindowExt = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETWINDOWEXT),
|
||||
WmfRecordTypeSetViewportOrg = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETVIEWPORTORG),
|
||||
WmfRecordTypeSetViewportExt = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETVIEWPORTEXT),
|
||||
WmfRecordTypeOffsetWindowOrg = GDIP_WMF_RECORD_TO_EMFPLUS(META_OFFSETWINDOWORG),
|
||||
WmfRecordTypeScaleWindowExt = GDIP_WMF_RECORD_TO_EMFPLUS(META_SCALEWINDOWEXT),
|
||||
WmfRecordTypeOffsetViewportOrg = GDIP_WMF_RECORD_TO_EMFPLUS(META_OFFSETVIEWPORTORG),
|
||||
WmfRecordTypeScaleViewportExt = GDIP_WMF_RECORD_TO_EMFPLUS(META_SCALEVIEWPORTEXT),
|
||||
WmfRecordTypeLineTo = GDIP_WMF_RECORD_TO_EMFPLUS(META_LINETO),
|
||||
WmfRecordTypeMoveTo = GDIP_WMF_RECORD_TO_EMFPLUS(META_MOVETO),
|
||||
WmfRecordTypeExcludeClipRect = GDIP_WMF_RECORD_TO_EMFPLUS(META_EXCLUDECLIPRECT),
|
||||
WmfRecordTypeIntersectClipRect = GDIP_WMF_RECORD_TO_EMFPLUS(META_INTERSECTCLIPRECT),
|
||||
WmfRecordTypeArc = GDIP_WMF_RECORD_TO_EMFPLUS(META_ARC),
|
||||
WmfRecordTypeEllipse = GDIP_WMF_RECORD_TO_EMFPLUS(META_ELLIPSE),
|
||||
WmfRecordTypeFloodFill = GDIP_WMF_RECORD_TO_EMFPLUS(META_FLOODFILL),
|
||||
WmfRecordTypePie = GDIP_WMF_RECORD_TO_EMFPLUS(META_PIE),
|
||||
WmfRecordTypeRectangle = GDIP_WMF_RECORD_TO_EMFPLUS(META_RECTANGLE),
|
||||
WmfRecordTypeRoundRect = GDIP_WMF_RECORD_TO_EMFPLUS(META_ROUNDRECT),
|
||||
WmfRecordTypePatBlt = GDIP_WMF_RECORD_TO_EMFPLUS(META_PATBLT),
|
||||
WmfRecordTypeSaveDC = GDIP_WMF_RECORD_TO_EMFPLUS(META_SAVEDC),
|
||||
WmfRecordTypeSetPixel = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETPIXEL),
|
||||
WmfRecordTypeOffsetClipRgn = GDIP_WMF_RECORD_TO_EMFPLUS(META_OFFSETCLIPRGN),
|
||||
WmfRecordTypeTextOut = GDIP_WMF_RECORD_TO_EMFPLUS(META_TEXTOUT),
|
||||
WmfRecordTypeBitBlt = GDIP_WMF_RECORD_TO_EMFPLUS(META_BITBLT),
|
||||
WmfRecordTypeStretchBlt = GDIP_WMF_RECORD_TO_EMFPLUS(META_STRETCHBLT),
|
||||
WmfRecordTypePolygon = GDIP_WMF_RECORD_TO_EMFPLUS(META_POLYGON),
|
||||
WmfRecordTypePolyline = GDIP_WMF_RECORD_TO_EMFPLUS(META_POLYLINE),
|
||||
WmfRecordTypeEscape = GDIP_WMF_RECORD_TO_EMFPLUS(META_ESCAPE),
|
||||
WmfRecordTypeRestoreDC = GDIP_WMF_RECORD_TO_EMFPLUS(META_RESTOREDC),
|
||||
WmfRecordTypeFillRegion = GDIP_WMF_RECORD_TO_EMFPLUS(META_FILLREGION),
|
||||
WmfRecordTypeFrameRegion = GDIP_WMF_RECORD_TO_EMFPLUS(META_FRAMEREGION),
|
||||
WmfRecordTypeInvertRegion = GDIP_WMF_RECORD_TO_EMFPLUS(META_INVERTREGION),
|
||||
WmfRecordTypePaintRegion = GDIP_WMF_RECORD_TO_EMFPLUS(META_PAINTREGION),
|
||||
WmfRecordTypeSelectClipRegion = GDIP_WMF_RECORD_TO_EMFPLUS(META_SELECTCLIPREGION),
|
||||
WmfRecordTypeSelectObject = GDIP_WMF_RECORD_TO_EMFPLUS(META_SELECTOBJECT),
|
||||
WmfRecordTypeSetTextAlign = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETTEXTALIGN),
|
||||
WmfRecordTypeDrawText = GDIP_WMF_RECORD_TO_EMFPLUS(0x062F),
|
||||
WmfRecordTypeChord = GDIP_WMF_RECORD_TO_EMFPLUS(META_CHORD),
|
||||
WmfRecordTypeSetMapperFlags = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETMAPPERFLAGS),
|
||||
WmfRecordTypeExtTextOut = GDIP_WMF_RECORD_TO_EMFPLUS(META_EXTTEXTOUT),
|
||||
WmfRecordTypeSetDIBToDev = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETDIBTODEV),
|
||||
WmfRecordTypeSelectPalette = GDIP_WMF_RECORD_TO_EMFPLUS(META_SELECTPALETTE),
|
||||
WmfRecordTypeRealizePalette = GDIP_WMF_RECORD_TO_EMFPLUS(META_REALIZEPALETTE),
|
||||
WmfRecordTypeAnimatePalette = GDIP_WMF_RECORD_TO_EMFPLUS(META_ANIMATEPALETTE),
|
||||
WmfRecordTypeSetPalEntries = GDIP_WMF_RECORD_TO_EMFPLUS(META_SETPALENTRIES),
|
||||
WmfRecordTypePolyPolygon = GDIP_WMF_RECORD_TO_EMFPLUS(META_POLYPOLYGON),
|
||||
WmfRecordTypeResizePalette = GDIP_WMF_RECORD_TO_EMFPLUS(META_RESIZEPALETTE),
|
||||
WmfRecordTypeDIBBitBlt = GDIP_WMF_RECORD_TO_EMFPLUS(META_DIBBITBLT),
|
||||
WmfRecordTypeDIBStretchBlt = GDIP_WMF_RECORD_TO_EMFPLUS(META_DIBSTRETCHBLT),
|
||||
WmfRecordTypeDIBCreatePatternBrush = GDIP_WMF_RECORD_TO_EMFPLUS(META_DIBCREATEPATTERNBRUSH),
|
||||
WmfRecordTypeStretchDIB = GDIP_WMF_RECORD_TO_EMFPLUS(META_STRETCHDIB),
|
||||
WmfRecordTypeExtFloodFill = GDIP_WMF_RECORD_TO_EMFPLUS(META_EXTFLOODFILL),
|
||||
WmfRecordTypeSetLayout = GDIP_WMF_RECORD_TO_EMFPLUS(0x0149),
|
||||
WmfRecordTypeResetDC = GDIP_WMF_RECORD_TO_EMFPLUS(0x014C),
|
||||
WmfRecordTypeStartDoc = GDIP_WMF_RECORD_TO_EMFPLUS(0x014D),
|
||||
WmfRecordTypeStartPage = GDIP_WMF_RECORD_TO_EMFPLUS(0x004F),
|
||||
WmfRecordTypeEndPage = GDIP_WMF_RECORD_TO_EMFPLUS(0x0050),
|
||||
WmfRecordTypeAbortDoc = GDIP_WMF_RECORD_TO_EMFPLUS(0x0052),
|
||||
WmfRecordTypeEndDoc = GDIP_WMF_RECORD_TO_EMFPLUS(0x005E),
|
||||
WmfRecordTypeDeleteObject = GDIP_WMF_RECORD_TO_EMFPLUS(META_DELETEOBJECT),
|
||||
WmfRecordTypeCreatePalette = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEPALETTE),
|
||||
WmfRecordTypeCreateBrush = GDIP_WMF_RECORD_TO_EMFPLUS(0x00F8),
|
||||
WmfRecordTypeCreatePatternBrush = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEPATTERNBRUSH),
|
||||
WmfRecordTypeCreatePenIndirect = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEPENINDIRECT),
|
||||
WmfRecordTypeCreateFontIndirect = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEFONTINDIRECT),
|
||||
WmfRecordTypeCreateBrushIndirect = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEBRUSHINDIRECT),
|
||||
WmfRecordTypeCreateBitmapIndirect = GDIP_WMF_RECORD_TO_EMFPLUS(0x02FD),
|
||||
WmfRecordTypeCreateBitmap = GDIP_WMF_RECORD_TO_EMFPLUS(0x06FE),
|
||||
WmfRecordTypeCreateRegion = GDIP_WMF_RECORD_TO_EMFPLUS(META_CREATEREGION),
|
||||
EmfRecordTypeHeader = EMR_HEADER,
|
||||
EmfRecordTypePolyBezier = EMR_POLYBEZIER,
|
||||
EmfRecordTypePolygon = EMR_POLYGON,
|
||||
EmfRecordTypePolyline = EMR_POLYLINE,
|
||||
EmfRecordTypePolyBezierTo = EMR_POLYBEZIERTO,
|
||||
EmfRecordTypePolyLineTo = EMR_POLYLINETO,
|
||||
EmfRecordTypePolyPolyline = EMR_POLYPOLYLINE,
|
||||
EmfRecordTypePolyPolygon = EMR_POLYPOLYGON,
|
||||
EmfRecordTypeSetWindowExtEx = EMR_SETWINDOWEXTEX,
|
||||
EmfRecordTypeSetWindowOrgEx = EMR_SETWINDOWORGEX,
|
||||
EmfRecordTypeSetViewportExtEx = EMR_SETVIEWPORTEXTEX,
|
||||
EmfRecordTypeSetViewportOrgEx = EMR_SETVIEWPORTORGEX,
|
||||
EmfRecordTypeSetBrushOrgEx = EMR_SETBRUSHORGEX,
|
||||
EmfRecordTypeEOF = EMR_EOF,
|
||||
EmfRecordTypeSetPixelV = EMR_SETPIXELV,
|
||||
EmfRecordTypeSetMapperFlags = EMR_SETMAPPERFLAGS,
|
||||
EmfRecordTypeSetMapMode = EMR_SETMAPMODE,
|
||||
EmfRecordTypeSetBkMode = EMR_SETBKMODE,
|
||||
EmfRecordTypeSetPolyFillMode = EMR_SETPOLYFILLMODE,
|
||||
EmfRecordTypeSetROP2 = EMR_SETROP2,
|
||||
EmfRecordTypeSetStretchBltMode = EMR_SETSTRETCHBLTMODE,
|
||||
EmfRecordTypeSetTextAlign = EMR_SETTEXTALIGN,
|
||||
EmfRecordTypeSetColorAdjustment = EMR_SETCOLORADJUSTMENT,
|
||||
EmfRecordTypeSetTextColor = EMR_SETTEXTCOLOR,
|
||||
EmfRecordTypeSetBkColor = EMR_SETBKCOLOR,
|
||||
EmfRecordTypeOffsetClipRgn = EMR_OFFSETCLIPRGN,
|
||||
EmfRecordTypeMoveToEx = EMR_MOVETOEX,
|
||||
EmfRecordTypeSetMetaRgn = EMR_SETMETARGN,
|
||||
EmfRecordTypeExcludeClipRect = EMR_EXCLUDECLIPRECT,
|
||||
EmfRecordTypeIntersectClipRect = EMR_INTERSECTCLIPRECT,
|
||||
EmfRecordTypeScaleViewportExtEx = EMR_SCALEVIEWPORTEXTEX,
|
||||
EmfRecordTypeScaleWindowExtEx = EMR_SCALEWINDOWEXTEX,
|
||||
EmfRecordTypeSaveDC = EMR_SAVEDC,
|
||||
EmfRecordTypeRestoreDC = EMR_RESTOREDC,
|
||||
EmfRecordTypeSetWorldTransform = EMR_SETWORLDTRANSFORM,
|
||||
EmfRecordTypeModifyWorldTransform = EMR_MODIFYWORLDTRANSFORM,
|
||||
EmfRecordTypeSelectObject = EMR_SELECTOBJECT,
|
||||
EmfRecordTypeCreatePen = EMR_CREATEPEN,
|
||||
EmfRecordTypeCreateBrushIndirect = EMR_CREATEBRUSHINDIRECT,
|
||||
EmfRecordTypeDeleteObject = EMR_DELETEOBJECT,
|
||||
EmfRecordTypeAngleArc = EMR_ANGLEARC,
|
||||
EmfRecordTypeEllipse = EMR_ELLIPSE,
|
||||
EmfRecordTypeRectangle = EMR_RECTANGLE,
|
||||
EmfRecordTypeRoundRect = EMR_ROUNDRECT,
|
||||
EmfRecordTypeArc = EMR_ARC,
|
||||
EmfRecordTypeChord = EMR_CHORD,
|
||||
EmfRecordTypePie = EMR_PIE,
|
||||
EmfRecordTypeSelectPalette = EMR_SELECTPALETTE,
|
||||
EmfRecordTypeCreatePalette = EMR_CREATEPALETTE,
|
||||
EmfRecordTypeSetPaletteEntries = EMR_SETPALETTEENTRIES,
|
||||
EmfRecordTypeResizePalette = EMR_RESIZEPALETTE,
|
||||
EmfRecordTypeRealizePalette = EMR_REALIZEPALETTE,
|
||||
EmfRecordTypeExtFloodFill = EMR_EXTFLOODFILL,
|
||||
EmfRecordTypeLineTo = EMR_LINETO,
|
||||
EmfRecordTypeArcTo = EMR_ARCTO,
|
||||
EmfRecordTypePolyDraw = EMR_POLYDRAW,
|
||||
EmfRecordTypeSetArcDirection = EMR_SETARCDIRECTION,
|
||||
EmfRecordTypeSetMiterLimit = EMR_SETMITERLIMIT,
|
||||
EmfRecordTypeBeginPath = EMR_BEGINPATH,
|
||||
EmfRecordTypeEndPath = EMR_ENDPATH,
|
||||
EmfRecordTypeCloseFigure = EMR_CLOSEFIGURE,
|
||||
EmfRecordTypeFillPath = EMR_FILLPATH,
|
||||
EmfRecordTypeStrokeAndFillPath = EMR_STROKEANDFILLPATH,
|
||||
EmfRecordTypeStrokePath = EMR_STROKEPATH,
|
||||
EmfRecordTypeFlattenPath = EMR_FLATTENPATH,
|
||||
EmfRecordTypeWidenPath = EMR_WIDENPATH,
|
||||
EmfRecordTypeSelectClipPath = EMR_SELECTCLIPPATH,
|
||||
EmfRecordTypeAbortPath = EMR_ABORTPATH,
|
||||
EmfRecordTypeReserved_069 = 69,
|
||||
EmfRecordTypeGdiComment = EMR_GDICOMMENT,
|
||||
EmfRecordTypeFillRgn = EMR_FILLRGN,
|
||||
EmfRecordTypeFrameRgn = EMR_FRAMERGN,
|
||||
EmfRecordTypeInvertRgn = EMR_INVERTRGN,
|
||||
EmfRecordTypePaintRgn = EMR_PAINTRGN,
|
||||
EmfRecordTypeExtSelectClipRgn = EMR_EXTSELECTCLIPRGN,
|
||||
EmfRecordTypeBitBlt = EMR_BITBLT,
|
||||
EmfRecordTypeStretchBlt = EMR_STRETCHBLT,
|
||||
EmfRecordTypeMaskBlt = EMR_MASKBLT,
|
||||
EmfRecordTypePlgBlt = EMR_PLGBLT,
|
||||
EmfRecordTypeSetDIBitsToDevice = 80,
|
||||
EmfRecordTypeStretchDIBits = EMR_STRETCHDIBITS,
|
||||
EmfRecordTypeExtCreateFontIndirect = EMR_EXTCREATEFONTINDIRECTW,
|
||||
EmfRecordTypeExtTextOutA = EMR_EXTTEXTOUTA,
|
||||
EmfRecordTypeExtTextOutW = EMR_EXTTEXTOUTW,
|
||||
EmfRecordTypePolyBezier16 = EMR_POLYBEZIER16,
|
||||
EmfRecordTypePolygon16 = EMR_POLYGON16,
|
||||
EmfRecordTypePolyline16 = EMR_POLYLINE16,
|
||||
EmfRecordTypePolyBezierTo16 = EMR_POLYBEZIERTO16,
|
||||
EmfRecordTypePolylineTo16 = EMR_POLYLINETO16,
|
||||
EmfRecordTypePolyPolyline16 = EMR_POLYPOLYLINE16,
|
||||
EmfRecordTypePolyPolygon16 = EMR_POLYPOLYGON16,
|
||||
EmfRecordTypePolyDraw16 = EMR_POLYDRAW16,
|
||||
EmfRecordTypeCreateMonoBrush = EMR_CREATEMONOBRUSH,
|
||||
EmfRecordTypeCreateDIBPatternBrushPt = EMR_CREATEDIBPATTERNBRUSHPT,
|
||||
EmfRecordTypeExtCreatePen = EMR_EXTCREATEPEN,
|
||||
EmfRecordTypePolyTextOutA = EMR_POLYTEXTOUTA,
|
||||
EmfRecordTypePolyTextOutW = EMR_POLYTEXTOUTW,
|
||||
EmfRecordTypeSetICMMode = 98,
|
||||
EmfRecordTypeCreateColorSpace = 99,
|
||||
EmfRecordTypeSetColorSpace = 100,
|
||||
EmfRecordTypeDeleteColorSpace = 101,
|
||||
EmfRecordTypeGLSRecord = 102,
|
||||
EmfRecordTypeGLSBoundedRecord = 103,
|
||||
EmfRecordTypePixelFormat = 104,
|
||||
EmfRecordTypeDrawEscape = 105,
|
||||
EmfRecordTypeExtEscape = 106,
|
||||
EmfRecordTypeStartDoc = 107,
|
||||
EmfRecordTypeSmallTextOut = 108,
|
||||
EmfRecordTypeForceUFIMapping = 109,
|
||||
EmfRecordTypeNamedEscape = 110,
|
||||
EmfRecordTypeColorCorrectPalette = 111,
|
||||
EmfRecordTypeSetICMProfileA = 112,
|
||||
EmfRecordTypeSetICMProfileW = 113,
|
||||
EmfRecordTypeAlphaBlend = 114,
|
||||
EmfRecordTypeSetLayout = 115,
|
||||
EmfRecordTypeTransparentBlt = 116,
|
||||
EmfRecordTypeReserved_117 = 117,
|
||||
EmfRecordTypeGradientFill = 118,
|
||||
EmfRecordTypeSetLinkedUFIs = 119,
|
||||
EmfRecordTypeSetTextJustification = 120,
|
||||
EmfRecordTypeColorMatchToTargetW = 121,
|
||||
EmfRecordTypeCreateColorSpaceW = 122,
|
||||
EmfRecordTypeMax = 122,
|
||||
EmfRecordTypeMin = 1,
|
||||
EmfPlusRecordTypeInvalid = GDIP_EMFPLUS_RECORD_BASE,
|
||||
EmfPlusRecordTypeHeader,
|
||||
EmfPlusRecordTypeEndOfFile,
|
||||
EmfPlusRecordTypeComment,
|
||||
EmfPlusRecordTypeGetDC,
|
||||
EmfPlusRecordTypeMultiFormatStart,
|
||||
EmfPlusRecordTypeMultiFormatSection,
|
||||
EmfPlusRecordTypeMultiFormatEnd,
|
||||
EmfPlusRecordTypeObject,
|
||||
EmfPlusRecordTypeClear,
|
||||
EmfPlusRecordTypeFillRects,
|
||||
EmfPlusRecordTypeDrawRects,
|
||||
EmfPlusRecordTypeFillPolygon,
|
||||
EmfPlusRecordTypeDrawLines,
|
||||
EmfPlusRecordTypeFillEllipse,
|
||||
EmfPlusRecordTypeDrawEllipse,
|
||||
EmfPlusRecordTypeFillPie,
|
||||
EmfPlusRecordTypeDrawPie,
|
||||
EmfPlusRecordTypeDrawArc,
|
||||
EmfPlusRecordTypeFillRegion,
|
||||
EmfPlusRecordTypeFillPath,
|
||||
EmfPlusRecordTypeDrawPath,
|
||||
EmfPlusRecordTypeFillClosedCurve,
|
||||
EmfPlusRecordTypeDrawClosedCurve,
|
||||
EmfPlusRecordTypeDrawCurve,
|
||||
EmfPlusRecordTypeDrawBeziers,
|
||||
EmfPlusRecordTypeDrawImage,
|
||||
EmfPlusRecordTypeDrawImagePoints,
|
||||
EmfPlusRecordTypeDrawString,
|
||||
EmfPlusRecordTypeSetRenderingOrigin,
|
||||
EmfPlusRecordTypeSetAntiAliasMode,
|
||||
EmfPlusRecordTypeSetTextRenderingHint,
|
||||
EmfPlusRecordTypeSetTextContrast,
|
||||
EmfPlusRecordTypeSetGammaValue,
|
||||
EmfPlusRecordTypeSetInterpolationMode,
|
||||
EmfPlusRecordTypeSetPixelOffsetMode,
|
||||
EmfPlusRecordTypeSetCompositingMode,
|
||||
EmfPlusRecordTypeSetCompositingQuality,
|
||||
EmfPlusRecordTypeSave,
|
||||
EmfPlusRecordTypeRestore,
|
||||
EmfPlusRecordTypeBeginContainer,
|
||||
EmfPlusRecordTypeBeginContainerNoParams,
|
||||
EmfPlusRecordTypeEndContainer,
|
||||
EmfPlusRecordTypeSetWorldTransform,
|
||||
EmfPlusRecordTypeResetWorldTransform,
|
||||
EmfPlusRecordTypeMultiplyWorldTransform,
|
||||
EmfPlusRecordTypeTranslateWorldTransform,
|
||||
EmfPlusRecordTypeScaleWorldTransform,
|
||||
EmfPlusRecordTypeRotateWorldTransform,
|
||||
EmfPlusRecordTypeSetPageTransform,
|
||||
EmfPlusRecordTypeResetClip,
|
||||
EmfPlusRecordTypeSetClipRect,
|
||||
EmfPlusRecordTypeSetClipPath,
|
||||
EmfPlusRecordTypeSetClipRegion,
|
||||
EmfPlusRecordTypeOffsetClip,
|
||||
EmfPlusRecordTypeDrawDriverString,
|
||||
EmfPlusRecordTypeStrokeFillPath,
|
||||
EmfPlusRecordTypeSerializableObject,
|
||||
EmfPlusRecordTypeSetTSGraphics,
|
||||
EmfPlusRecordTypeSetTSClip,
|
||||
EmfPlusRecordTotal,
|
||||
EmfPlusRecordTypeMax = EmfPlusRecordTotal-1,
|
||||
EmfPlusRecordTypeMin = EmfPlusRecordTypeHeader
|
||||
};
|
||||
|
||||
#ifndef __cplusplus
|
||||
|
||||
typedef enum Unit Unit;
|
||||
|
@ -471,7 +744,11 @@ typedef enum GpTestControlEnum GpTestControlEnum;
|
|||
typedef enum MetafileFrameUnit MetafileFrameUnit;
|
||||
typedef enum PenType PenType;
|
||||
typedef enum HatchStyle HatchStyle;
|
||||
typedef enum EmfPlusRecordType EmfPlusRecordType;
|
||||
|
||||
#endif /* end of c typedefs */
|
||||
|
||||
#undef GDIP_WMF_RECORD_TO_EMFPLUS
|
||||
#define GDIP_WMF_RECORD_TO_EMFPLUS(x) ((EmfPlusRecordType)((x)|GDIP_WMF_RECORD_BASE))
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue