Esme Povirk (@madewokherd) commented about dlls/gdiplus/metafile.c:
return InvalidParameter;
offset += FIELD_OFFSET(EmfPlusCustomLineCapDataLinePath, LinePath);
path = (EmfPlusPath *)(record_data + offset);
}
if (path->PathPointFlags & 0x800) /* R */
{
FIXME("RLE encoded path data is not supported.\n");
return NotImplemented;
}
if (path->PathPointFlags & 0x4000) /* C */
point_size = sizeof(EmfPlusPoint);
else
point_size = sizeof(EmfPlusPointF);
I think this has reached the level of complexity where we need to share code. Maybe metafile_deseralize_path should output GpPathData instead of a path? Either that or you could construct the path and move the path data.