gdiplus/tests: Test EMF+ records flags.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Vincent Povirk <vincent@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
c9e37d8142
commit
1df5f2fab7
|
@ -33,11 +33,13 @@ static BOOL load_metafiles;
|
||||||
|
|
||||||
typedef struct emfplus_record
|
typedef struct emfplus_record
|
||||||
{
|
{
|
||||||
|
DWORD record_type;
|
||||||
|
DWORD flags; /* Used for EMF+ records only. */
|
||||||
BOOL todo;
|
BOOL todo;
|
||||||
ULONG record_type;
|
|
||||||
BOOL playback_todo;
|
BOOL playback_todo;
|
||||||
void (*playback_fn)(GpMetafile* metafile, EmfPlusRecordType record_type,
|
void (*playback_fn)(GpMetafile* metafile, EmfPlusRecordType record_type,
|
||||||
unsigned int flags, unsigned int dataSize, const unsigned char *pStr);
|
unsigned int flags, unsigned int dataSize, const unsigned char *pStr);
|
||||||
|
DWORD broken_flags;
|
||||||
} emfplus_record;
|
} emfplus_record;
|
||||||
|
|
||||||
typedef struct emfplus_check_state
|
typedef struct emfplus_check_state
|
||||||
|
@ -50,10 +52,21 @@ typedef struct emfplus_check_state
|
||||||
|
|
||||||
static void check_record(int count, const char *desc, const struct emfplus_record *expected, const struct emfplus_record *actual)
|
static void check_record(int count, const char *desc, const struct emfplus_record *expected, const struct emfplus_record *actual)
|
||||||
{
|
{
|
||||||
|
if (actual->record_type > GDIP_EMFPLUS_RECORD_BASE)
|
||||||
|
{
|
||||||
|
todo_wine_if (expected->todo)
|
||||||
|
ok(expected->record_type == actual->record_type && (expected->flags == actual->flags ||
|
||||||
|
broken(expected->broken_flags == actual->flags)),
|
||||||
|
"%s.%i: Expected record type 0x%x, got 0x%x. Expected flags %#x, got %#x.\n", desc, count,
|
||||||
|
expected->record_type, actual->record_type, expected->flags, actual->flags);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
todo_wine_if (expected->todo)
|
todo_wine_if (expected->todo)
|
||||||
ok(expected->record_type == actual->record_type,
|
ok(expected->record_type == actual->record_type,
|
||||||
"%s.%i: Expected record type 0x%x, got 0x%x\n", desc, count,
|
"%s.%i: Expected record type 0x%x, got 0x%x.\n", desc, count,
|
||||||
expected->record_type, actual->record_type);
|
expected->record_type, actual->record_type);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct EmfPlusRecordHeader
|
typedef struct EmfPlusRecordHeader
|
||||||
|
@ -128,6 +141,7 @@ static int CALLBACK enum_emf_proc(HDC hDC, HANDLETABLE *lpHTable, const ENHMETAR
|
||||||
{
|
{
|
||||||
actual.todo = FALSE;
|
actual.todo = FALSE;
|
||||||
actual.record_type = record->Type;
|
actual.record_type = record->Type;
|
||||||
|
actual.flags = record->Flags;
|
||||||
|
|
||||||
check_record(state->count, state->desc, &state->expected[state->count], &actual);
|
check_record(state->count, state->desc, &state->expected[state->count], &actual);
|
||||||
state->count++;
|
state->count++;
|
||||||
|
@ -167,6 +181,7 @@ static int CALLBACK enum_emf_proc(HDC hDC, HANDLETABLE *lpHTable, const ENHMETAR
|
||||||
{
|
{
|
||||||
actual.todo = FALSE;
|
actual.todo = FALSE;
|
||||||
actual.record_type = lpEMFR->iType;
|
actual.record_type = lpEMFR->iType;
|
||||||
|
actual.flags = 0;
|
||||||
|
|
||||||
check_record(state->count, state->desc, &state->expected[state->count], &actual);
|
check_record(state->count, state->desc, &state->expected[state->count], &actual);
|
||||||
|
|
||||||
|
@ -202,6 +217,7 @@ static BOOL CALLBACK enum_metafile_proc(EmfPlusRecordType record_type, unsigned
|
||||||
|
|
||||||
actual.todo = FALSE;
|
actual.todo = FALSE;
|
||||||
actual.record_type = record_type;
|
actual.record_type = record_type;
|
||||||
|
actual.flags = flags;
|
||||||
|
|
||||||
if (dataSize == 0)
|
if (dataSize == 0)
|
||||||
ok(pStr == NULL, "non-NULL pStr\n");
|
ok(pStr == NULL, "non-NULL pStr\n");
|
||||||
|
@ -342,11 +358,11 @@ static void sync_metafile(GpMetafile **metafile, const char *filename)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const emfplus_record empty_records[] = {
|
static const emfplus_record empty_records[] = {
|
||||||
{0, EMR_HEADER},
|
{ EMR_HEADER },
|
||||||
{0, EmfPlusRecordTypeHeader},
|
{ EmfPlusRecordTypeHeader },
|
||||||
{0, EmfPlusRecordTypeEndOfFile},
|
{ EmfPlusRecordTypeEndOfFile },
|
||||||
{0, EMR_EOF},
|
{ EMR_EOF },
|
||||||
{0}
|
{ 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
static void test_empty(void)
|
static void test_empty(void)
|
||||||
|
@ -541,17 +557,17 @@ static void test_empty(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const emfplus_record getdc_records[] = {
|
static const emfplus_record getdc_records[] = {
|
||||||
{0, EMR_HEADER},
|
{ EMR_HEADER },
|
||||||
{0, EmfPlusRecordTypeHeader},
|
{ EmfPlusRecordTypeHeader },
|
||||||
{0, EmfPlusRecordTypeGetDC},
|
{ EmfPlusRecordTypeGetDC },
|
||||||
{0, EMR_CREATEBRUSHINDIRECT},
|
{ EMR_CREATEBRUSHINDIRECT },
|
||||||
{0, EMR_SELECTOBJECT},
|
{ EMR_SELECTOBJECT },
|
||||||
{0, EMR_RECTANGLE},
|
{ EMR_RECTANGLE },
|
||||||
{0, EMR_SELECTOBJECT},
|
{ EMR_SELECTOBJECT },
|
||||||
{0, EMR_DELETEOBJECT},
|
{ EMR_DELETEOBJECT },
|
||||||
{0, EmfPlusRecordTypeEndOfFile},
|
{ EmfPlusRecordTypeEndOfFile },
|
||||||
{0, EMR_EOF},
|
{ EMR_EOF },
|
||||||
{0}
|
{ 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
static void test_getdc(void)
|
static void test_getdc(void)
|
||||||
|
@ -679,34 +695,34 @@ static void test_getdc(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const emfplus_record emfonly_records[] = {
|
static const emfplus_record emfonly_records[] = {
|
||||||
{0, EMR_HEADER},
|
{ EMR_HEADER },
|
||||||
{0, EMR_CREATEBRUSHINDIRECT},
|
{ EMR_CREATEBRUSHINDIRECT },
|
||||||
{0, EMR_SELECTOBJECT},
|
{ EMR_SELECTOBJECT },
|
||||||
{0, EMR_RECTANGLE},
|
{ EMR_RECTANGLE },
|
||||||
{0, EMR_SELECTOBJECT},
|
{ EMR_SELECTOBJECT },
|
||||||
{0, EMR_DELETEOBJECT},
|
{ EMR_DELETEOBJECT },
|
||||||
{0, EMR_EOF},
|
{ EMR_EOF },
|
||||||
{0}
|
{ 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
static const emfplus_record emfonly_draw_records[] = {
|
static const emfplus_record emfonly_draw_records[] = {
|
||||||
{0, EMR_HEADER},
|
{ EMR_HEADER },
|
||||||
{1, EMR_SAVEDC},
|
{ EMR_SAVEDC, 0, 1 },
|
||||||
{1, EMR_SETICMMODE},
|
{ EMR_SETICMMODE, 0, 1 },
|
||||||
{1, EMR_SETMITERLIMIT},
|
{ EMR_SETMITERLIMIT, 0, 1 },
|
||||||
{1, EMR_MODIFYWORLDTRANSFORM},
|
{ EMR_MODIFYWORLDTRANSFORM, 0, 1 },
|
||||||
{1, EMR_EXTCREATEPEN},
|
{ EMR_EXTCREATEPEN, 0, 1 },
|
||||||
{1, EMR_SELECTOBJECT},
|
{ EMR_SELECTOBJECT, 0, 1 },
|
||||||
{1, EMR_SELECTOBJECT},
|
{ EMR_SELECTOBJECT, 0, 1 },
|
||||||
{1, EMR_POLYLINE16},
|
{ EMR_POLYLINE16, 0, 1 },
|
||||||
{1, EMR_SELECTOBJECT},
|
{ EMR_SELECTOBJECT, 0, 1 },
|
||||||
{1, EMR_SELECTOBJECT},
|
{ EMR_SELECTOBJECT, 0, 1 },
|
||||||
{1, EMR_MODIFYWORLDTRANSFORM},
|
{ EMR_MODIFYWORLDTRANSFORM, 0, 1 },
|
||||||
{1, EMR_DELETEOBJECT},
|
{ EMR_DELETEOBJECT, 0, 1 },
|
||||||
{1, EMR_SETMITERLIMIT},
|
{ EMR_SETMITERLIMIT, 0, 1 },
|
||||||
{1, EMR_RESTOREDC},
|
{ EMR_RESTOREDC, 0, 1 },
|
||||||
{0, EMR_EOF},
|
{ EMR_EOF },
|
||||||
{1}
|
{ 0, 0, 1 }
|
||||||
};
|
};
|
||||||
|
|
||||||
static void test_emfonly(void)
|
static void test_emfonly(void)
|
||||||
|
@ -1002,12 +1018,12 @@ static void test_emfonly(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const emfplus_record fillrect_records[] = {
|
static const emfplus_record fillrect_records[] = {
|
||||||
{0, EMR_HEADER},
|
{ EMR_HEADER },
|
||||||
{0, EmfPlusRecordTypeHeader},
|
{ EmfPlusRecordTypeHeader },
|
||||||
{0, EmfPlusRecordTypeFillRects},
|
{ EmfPlusRecordTypeFillRects, 0xc000 },
|
||||||
{0, EmfPlusRecordTypeEndOfFile},
|
{ EmfPlusRecordTypeEndOfFile },
|
||||||
{0, EMR_EOF},
|
{ EMR_EOF },
|
||||||
{0}
|
{ 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
static void test_fillrect(void)
|
static void test_fillrect(void)
|
||||||
|
@ -1112,16 +1128,16 @@ static void test_fillrect(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const emfplus_record clear_emf_records[] = {
|
static const emfplus_record clear_emf_records[] = {
|
||||||
{0, EMR_HEADER},
|
{ EMR_HEADER },
|
||||||
{0, EmfPlusRecordTypeHeader},
|
{ EmfPlusRecordTypeHeader },
|
||||||
{0, EmfPlusRecordTypeClear},
|
{ EmfPlusRecordTypeClear },
|
||||||
{1, EMR_SAVEDC},
|
{ EMR_SAVEDC, 0, 1 },
|
||||||
{1, EMR_SETICMMODE},
|
{ EMR_SETICMMODE, 0, 1 },
|
||||||
{1, EMR_BITBLT},
|
{ EMR_BITBLT, 0, 1 },
|
||||||
{1, EMR_RESTOREDC},
|
{ EMR_RESTOREDC, 0, 1 },
|
||||||
{0, EmfPlusRecordTypeEndOfFile},
|
{ EmfPlusRecordTypeEndOfFile },
|
||||||
{0, EMR_EOF},
|
{ EMR_EOF },
|
||||||
{0}
|
{ 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
static void test_clear(void)
|
static void test_clear(void)
|
||||||
|
@ -1316,20 +1332,20 @@ static void test_nullframerect(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static const emfplus_record pagetransform_records[] = {
|
static const emfplus_record pagetransform_records[] = {
|
||||||
{0, EMR_HEADER},
|
{ EMR_HEADER },
|
||||||
{0, EmfPlusRecordTypeHeader},
|
{ EmfPlusRecordTypeHeader },
|
||||||
{0, EmfPlusRecordTypeFillRects},
|
{ EmfPlusRecordTypeFillRects, 0xc000 },
|
||||||
{0, EmfPlusRecordTypeSetPageTransform},
|
{ EmfPlusRecordTypeSetPageTransform, UnitPixel },
|
||||||
{0, EmfPlusRecordTypeFillRects},
|
{ EmfPlusRecordTypeFillRects, 0xc000 },
|
||||||
{0, EmfPlusRecordTypeSetPageTransform},
|
{ EmfPlusRecordTypeSetPageTransform, UnitPixel },
|
||||||
{0, EmfPlusRecordTypeFillRects},
|
{ EmfPlusRecordTypeFillRects, 0xc000 },
|
||||||
{0, EmfPlusRecordTypeSetPageTransform},
|
{ EmfPlusRecordTypeSetPageTransform, UnitInch },
|
||||||
{0, EmfPlusRecordTypeFillRects},
|
{ EmfPlusRecordTypeFillRects, 0x8000 },
|
||||||
{0, EmfPlusRecordTypeSetPageTransform},
|
{ EmfPlusRecordTypeSetPageTransform, UnitDisplay },
|
||||||
{0, EmfPlusRecordTypeFillRects},
|
{ EmfPlusRecordTypeFillRects, 0xc000 },
|
||||||
{0, EmfPlusRecordTypeEndOfFile},
|
{ EmfPlusRecordTypeEndOfFile },
|
||||||
{0, EMR_EOF},
|
{ EMR_EOF },
|
||||||
{0}
|
{ 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
static void test_pagetransform(void)
|
static void test_pagetransform(void)
|
||||||
|
@ -1517,24 +1533,24 @@ static void test_pagetransform(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const emfplus_record worldtransform_records[] = {
|
static const emfplus_record worldtransform_records[] = {
|
||||||
{0, EMR_HEADER},
|
{ EMR_HEADER },
|
||||||
{0, EmfPlusRecordTypeHeader},
|
{ EmfPlusRecordTypeHeader },
|
||||||
{0, EmfPlusRecordTypeFillRects},
|
{ EmfPlusRecordTypeFillRects, 0xc000 },
|
||||||
{0, EmfPlusRecordTypeScaleWorldTransform},
|
{ EmfPlusRecordTypeScaleWorldTransform },
|
||||||
{0, EmfPlusRecordTypeFillRects},
|
{ EmfPlusRecordTypeFillRects, 0x8000 },
|
||||||
{0, EmfPlusRecordTypeResetWorldTransform},
|
{ EmfPlusRecordTypeResetWorldTransform },
|
||||||
{0, EmfPlusRecordTypeFillRects},
|
{ EmfPlusRecordTypeFillRects, 0xc000 },
|
||||||
{0, EmfPlusRecordTypeMultiplyWorldTransform},
|
{ EmfPlusRecordTypeMultiplyWorldTransform },
|
||||||
{0, EmfPlusRecordTypeFillRects},
|
{ EmfPlusRecordTypeFillRects, 0x8000 },
|
||||||
{0, EmfPlusRecordTypeRotateWorldTransform},
|
{ EmfPlusRecordTypeRotateWorldTransform, 0x2000 },
|
||||||
{0, EmfPlusRecordTypeFillRects},
|
{ EmfPlusRecordTypeFillRects, 0x8000 },
|
||||||
{0, EmfPlusRecordTypeSetWorldTransform},
|
{ EmfPlusRecordTypeSetWorldTransform },
|
||||||
{0, EmfPlusRecordTypeFillRects},
|
{ EmfPlusRecordTypeFillRects, 0xc000 },
|
||||||
{0, EmfPlusRecordTypeTranslateWorldTransform},
|
{ EmfPlusRecordTypeTranslateWorldTransform, 0x2000 },
|
||||||
{0, EmfPlusRecordTypeFillRects},
|
{ EmfPlusRecordTypeFillRects, 0xc000 },
|
||||||
{0, EmfPlusRecordTypeEndOfFile},
|
{ EmfPlusRecordTypeEndOfFile },
|
||||||
{0, EMR_EOF},
|
{ EMR_EOF },
|
||||||
{0}
|
{ 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
static void test_worldtransform(void)
|
static void test_worldtransform(void)
|
||||||
|
@ -1942,29 +1958,29 @@ static void test_frameunit(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const emfplus_record container_records[] = {
|
static const emfplus_record container_records[] = {
|
||||||
{0, EMR_HEADER},
|
{ EMR_HEADER },
|
||||||
{0, EmfPlusRecordTypeHeader},
|
{ EmfPlusRecordTypeHeader },
|
||||||
{0, EmfPlusRecordTypeBeginContainerNoParams},
|
{ EmfPlusRecordTypeBeginContainerNoParams },
|
||||||
{0, EmfPlusRecordTypeScaleWorldTransform},
|
{ EmfPlusRecordTypeScaleWorldTransform },
|
||||||
{0, EmfPlusRecordTypeFillRects},
|
{ EmfPlusRecordTypeFillRects, 0xc000 },
|
||||||
{0, EmfPlusRecordTypeEndContainer},
|
{ EmfPlusRecordTypeEndContainer },
|
||||||
{0, EmfPlusRecordTypeScaleWorldTransform},
|
{ EmfPlusRecordTypeScaleWorldTransform },
|
||||||
{0, EmfPlusRecordTypeFillRects},
|
{ EmfPlusRecordTypeFillRects, 0xc000 },
|
||||||
{0, EmfPlusRecordTypeSave},
|
{ EmfPlusRecordTypeSave },
|
||||||
{0, EmfPlusRecordTypeRestore},
|
{ EmfPlusRecordTypeRestore },
|
||||||
{0, EmfPlusRecordTypeScaleWorldTransform},
|
{ EmfPlusRecordTypeScaleWorldTransform },
|
||||||
{0, EmfPlusRecordTypeBeginContainerNoParams},
|
{ EmfPlusRecordTypeBeginContainerNoParams },
|
||||||
{0, EmfPlusRecordTypeScaleWorldTransform},
|
{ EmfPlusRecordTypeScaleWorldTransform },
|
||||||
{0, EmfPlusRecordTypeBeginContainerNoParams},
|
{ EmfPlusRecordTypeBeginContainerNoParams },
|
||||||
{0, EmfPlusRecordTypeEndContainer},
|
{ EmfPlusRecordTypeEndContainer },
|
||||||
{0, EmfPlusRecordTypeFillRects},
|
{ EmfPlusRecordTypeFillRects, 0xc000 },
|
||||||
{0, EmfPlusRecordTypeBeginContainer},
|
{ EmfPlusRecordTypeBeginContainer, UnitInch },
|
||||||
{0, EmfPlusRecordTypeFillRects},
|
{ EmfPlusRecordTypeFillRects, 0xc000 },
|
||||||
{0, EmfPlusRecordTypeEndContainer},
|
{ EmfPlusRecordTypeEndContainer },
|
||||||
{0, EmfPlusRecordTypeBeginContainerNoParams},
|
{ EmfPlusRecordTypeBeginContainerNoParams },
|
||||||
{0, EmfPlusRecordTypeEndOfFile},
|
{ EmfPlusRecordTypeEndOfFile },
|
||||||
{0, EMR_EOF},
|
{ EMR_EOF },
|
||||||
{0}
|
{ 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
static void test_containers(void)
|
static void test_containers(void)
|
||||||
|
@ -2146,19 +2162,19 @@ static void test_containers(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const emfplus_record clipping_records[] = {
|
static const emfplus_record clipping_records[] = {
|
||||||
{0, EMR_HEADER},
|
{ EMR_HEADER },
|
||||||
{0, EmfPlusRecordTypeHeader},
|
{ EmfPlusRecordTypeHeader },
|
||||||
{0, EmfPlusRecordTypeSave},
|
{ EmfPlusRecordTypeSave },
|
||||||
{0, EmfPlusRecordTypeSetClipRect},
|
{ EmfPlusRecordTypeSetClipRect },
|
||||||
{0, EmfPlusRecordTypeFillRects},
|
{ EmfPlusRecordTypeFillRects, 0xc000 },
|
||||||
{0, EmfPlusRecordTypeRestore},
|
{ EmfPlusRecordTypeRestore },
|
||||||
{0, EmfPlusRecordTypeSetClipRect},
|
{ EmfPlusRecordTypeSetClipRect, 0x300 },
|
||||||
{0, EmfPlusRecordTypeFillRects},
|
{ EmfPlusRecordTypeFillRects, 0xc000 },
|
||||||
{0, EmfPlusRecordTypeObject, 1},
|
{ EmfPlusRecordTypeObject, ObjectTypeRegion << 8, 0, 1 },
|
||||||
{0, EmfPlusRecordTypeSetClipRegion, 1},
|
{ EmfPlusRecordTypeSetClipRegion, 0x100, 0, 1 },
|
||||||
{0, EmfPlusRecordTypeEndOfFile},
|
{ EmfPlusRecordTypeEndOfFile },
|
||||||
{0, EMR_EOF},
|
{ EMR_EOF },
|
||||||
{0}
|
{ 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
static void test_clipping(void)
|
static void test_clipping(void)
|
||||||
|
@ -2295,14 +2311,14 @@ static void test_gditransform_cb(GpMetafile* metafile, EmfPlusRecordType record_
|
||||||
}
|
}
|
||||||
|
|
||||||
static const emfplus_record gditransform_records[] = {
|
static const emfplus_record gditransform_records[] = {
|
||||||
{0, EMR_HEADER},
|
{ EMR_HEADER },
|
||||||
{0, EMR_CREATEBRUSHINDIRECT},
|
{ EMR_CREATEBRUSHINDIRECT },
|
||||||
{0, EMR_SELECTOBJECT},
|
{ EMR_SELECTOBJECT },
|
||||||
{0, EMR_GDICOMMENT, 0, test_gditransform_cb},
|
{ EMR_GDICOMMENT, 0, 0, 0, test_gditransform_cb },
|
||||||
{0, EMR_SELECTOBJECT},
|
{ EMR_SELECTOBJECT },
|
||||||
{0, EMR_DELETEOBJECT},
|
{ EMR_DELETEOBJECT },
|
||||||
{0, EMR_EOF},
|
{ EMR_EOF },
|
||||||
{0}
|
{ 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
static void test_gditransform(void)
|
static void test_gditransform(void)
|
||||||
|
@ -2399,45 +2415,45 @@ static void test_gditransform(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const emfplus_record draw_image_bitmap_records[] = {
|
static const emfplus_record draw_image_bitmap_records[] = {
|
||||||
{0, EMR_HEADER},
|
{ EMR_HEADER },
|
||||||
{0, EmfPlusRecordTypeHeader},
|
{ EmfPlusRecordTypeHeader },
|
||||||
{0, EmfPlusRecordTypeObject},
|
{ EmfPlusRecordTypeObject, ObjectTypeImage << 8 },
|
||||||
{0, EmfPlusRecordTypeObject},
|
{ EmfPlusRecordTypeObject, (ObjectTypeImageAttributes << 8) | 1 },
|
||||||
{0, EmfPlusRecordTypeDrawImagePoints},
|
{ EmfPlusRecordTypeDrawImagePoints, 0, 0, 0, NULL, 0x4000 },
|
||||||
{1, EMR_SAVEDC},
|
{ EMR_SAVEDC, 0, 1 },
|
||||||
{1, EMR_SETICMMODE},
|
{ EMR_SETICMMODE, 0, 1 },
|
||||||
{1, EMR_BITBLT},
|
{ EMR_BITBLT, 0, 1 },
|
||||||
{1, EMR_RESTOREDC},
|
{ EMR_RESTOREDC, 0, 1 },
|
||||||
{0, EmfPlusRecordTypeEndOfFile},
|
{ EmfPlusRecordTypeEndOfFile },
|
||||||
{0, EMR_EOF},
|
{ EMR_EOF },
|
||||||
{0}
|
{ 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
static const emfplus_record draw_image_metafile_records[] = {
|
static const emfplus_record draw_image_metafile_records[] = {
|
||||||
{0, EMR_HEADER},
|
{ EMR_HEADER },
|
||||||
{0, EmfPlusRecordTypeHeader},
|
{ EmfPlusRecordTypeHeader },
|
||||||
{0, EmfPlusRecordTypeObject},
|
{ EmfPlusRecordTypeObject, ObjectTypeImage << 8 },
|
||||||
/* metafile object */
|
/* metafile object */
|
||||||
{0, EMR_HEADER},
|
{ EMR_HEADER },
|
||||||
{0, EmfPlusRecordTypeHeader},
|
{ EmfPlusRecordTypeHeader },
|
||||||
{0, EmfPlusRecordTypeObject},
|
{ EmfPlusRecordTypeObject, ObjectTypeImage << 8 },
|
||||||
{0, EmfPlusRecordTypeObject},
|
{ EmfPlusRecordTypeObject, (ObjectTypeImageAttributes << 8) | 1 },
|
||||||
{0, EmfPlusRecordTypeDrawImagePoints},
|
{ EmfPlusRecordTypeDrawImagePoints },
|
||||||
{1, EMR_SAVEDC},
|
{ EMR_SAVEDC, 0, 1 },
|
||||||
{1, EMR_SETICMMODE},
|
{ EMR_SETICMMODE, 0, 1 },
|
||||||
{1, EMR_BITBLT},
|
{ EMR_BITBLT, 0, 1 },
|
||||||
{1, EMR_RESTOREDC},
|
{ EMR_RESTOREDC, 0, 1 },
|
||||||
{0, EmfPlusRecordTypeEndOfFile},
|
{ EmfPlusRecordTypeEndOfFile },
|
||||||
{0, EMR_EOF},
|
{ EMR_EOF },
|
||||||
/* end of metafile object */
|
/* end of metafile object */
|
||||||
{0, EmfPlusRecordTypeDrawImagePoints},
|
{ EmfPlusRecordTypeDrawImagePoints },
|
||||||
{1, EMR_SAVEDC},
|
{ EMR_SAVEDC, 0, 1 },
|
||||||
{1, EMR_SETICMMODE},
|
{ EMR_SETICMMODE, 0, 1 },
|
||||||
{1, EMR_BITBLT},
|
{ EMR_BITBLT, 0, 1 },
|
||||||
{1, EMR_RESTOREDC},
|
{ EMR_RESTOREDC, 0, 1 },
|
||||||
{0, EmfPlusRecordTypeEndOfFile},
|
{ EmfPlusRecordTypeEndOfFile },
|
||||||
{0, EMR_EOF},
|
{ EMR_EOF },
|
||||||
{0}
|
{ 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
static void test_drawimage(void)
|
static void test_drawimage(void)
|
||||||
|
@ -2542,17 +2558,17 @@ static void test_drawimage(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const emfplus_record properties_records[] = {
|
static const emfplus_record properties_records[] = {
|
||||||
{0, EMR_HEADER},
|
{ EMR_HEADER },
|
||||||
{0, EmfPlusRecordTypeHeader},
|
{ EmfPlusRecordTypeHeader },
|
||||||
{0, EmfPlusRecordTypeSetTextRenderingHint},
|
{ EmfPlusRecordTypeSetTextRenderingHint, TextRenderingHintAntiAlias },
|
||||||
{0, EmfPlusRecordTypeSetPixelOffsetMode},
|
{ EmfPlusRecordTypeSetPixelOffsetMode, PixelOffsetModeHighQuality },
|
||||||
{0, EmfPlusRecordTypeSetAntiAliasMode},
|
{ EmfPlusRecordTypeSetAntiAliasMode, (SmoothingModeAntiAlias << 1) | 1, 0, 0, NULL, 0x1 },
|
||||||
{0, EmfPlusRecordTypeSetCompositingMode},
|
{ EmfPlusRecordTypeSetCompositingMode, CompositingModeSourceCopy },
|
||||||
{0, EmfPlusRecordTypeSetCompositingQuality},
|
{ EmfPlusRecordTypeSetCompositingQuality, CompositingQualityHighQuality },
|
||||||
{0, EmfPlusRecordTypeSetInterpolationMode},
|
{ EmfPlusRecordTypeSetInterpolationMode, InterpolationModeHighQualityBicubic },
|
||||||
{0, EmfPlusRecordTypeEndOfFile},
|
{ EmfPlusRecordTypeEndOfFile },
|
||||||
{0, EMR_EOF},
|
{ EMR_EOF },
|
||||||
{0}
|
{ 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
static void test_properties(void)
|
static void test_properties(void)
|
||||||
|
@ -2619,18 +2635,18 @@ static void test_properties(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const emfplus_record draw_path_records[] = {
|
static const emfplus_record draw_path_records[] = {
|
||||||
{0, EMR_HEADER},
|
{ EMR_HEADER },
|
||||||
{0, EmfPlusRecordTypeHeader},
|
{ EmfPlusRecordTypeHeader },
|
||||||
{0, EmfPlusRecordTypeObject},
|
{ EmfPlusRecordTypeObject, ObjectTypePen << 8 },
|
||||||
{0, EmfPlusRecordTypeObject},
|
{ EmfPlusRecordTypeObject, (ObjectTypePath << 8) | 1 },
|
||||||
{0, EmfPlusRecordTypeDrawPath},
|
{ EmfPlusRecordTypeDrawPath, 1 },
|
||||||
{1, EMR_SAVEDC},
|
{ EMR_SAVEDC, 0, 1 },
|
||||||
{1, EMR_SETICMMODE},
|
{ EMR_SETICMMODE, 0, 1 },
|
||||||
{1, EMR_BITBLT},
|
{ EMR_BITBLT, 0, 1 },
|
||||||
{1, EMR_RESTOREDC},
|
{ EMR_RESTOREDC, 0, 1 },
|
||||||
{0, EmfPlusRecordTypeEndOfFile},
|
{ EmfPlusRecordTypeEndOfFile },
|
||||||
{0, EMR_EOF},
|
{ EMR_EOF },
|
||||||
{0}
|
{ 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
static void test_drawpath(void)
|
static void test_drawpath(void)
|
||||||
|
@ -2685,17 +2701,17 @@ static void test_drawpath(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const emfplus_record fill_path_records[] = {
|
static const emfplus_record fill_path_records[] = {
|
||||||
{0, EMR_HEADER},
|
{ EMR_HEADER },
|
||||||
{0, EmfPlusRecordTypeHeader},
|
{ EmfPlusRecordTypeHeader },
|
||||||
{0, EmfPlusRecordTypeObject},
|
{ EmfPlusRecordTypeObject, ObjectTypePath << 8 },
|
||||||
{0, EmfPlusRecordTypeFillPath},
|
{ EmfPlusRecordTypeFillPath, 0x8000 },
|
||||||
{1, EMR_SAVEDC},
|
{ EMR_SAVEDC, 0, 1 },
|
||||||
{1, EMR_SETICMMODE},
|
{ EMR_SETICMMODE, 0, 1 },
|
||||||
{1, EMR_BITBLT},
|
{ EMR_BITBLT, 0, 1 },
|
||||||
{1, EMR_RESTOREDC},
|
{ EMR_RESTOREDC, 0, 1 },
|
||||||
{0, EmfPlusRecordTypeEndOfFile},
|
{ EmfPlusRecordTypeEndOfFile },
|
||||||
{0, EMR_EOF},
|
{ EMR_EOF },
|
||||||
{0}
|
{ 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
static void test_fillpath(void)
|
static void test_fillpath(void)
|
||||||
|
|
Loading…
Reference in New Issue