679 FIXME(
"not implemented for object type %u.\n",
object->type);
684 object->u.object =
NULL;
697 WARN(
"metafile closed while recording\n");
704 IStream_Release(
metafile->record_stream);
731 metafile->comment_data_size = data_size;
737 if (size_needed >
metafile->comment_data_size)
739 DWORD data_size = size_needed * 2;
747 metafile->comment_data_size = data_size;
756 record->Type = record_type;
772 if (
metafile->comment_data_length > 4)
843 GpRectF frameRectF, *pFrameRectF;
849 set_rect(&frameRectF, frameRect->
X, frameRect->Y, frameRect->Width, frameRect->Height);
850 pFrameRectF = &frameRectF;
861 GpRectF frameRectF, *pFrameRectF;
867 set_rect(&frameRectF, frameRect->
X, frameRect->Y, frameRect->Width, frameRect->Height);
868 pFrameRectF = &frameRectF;
890 (*metafile)->record_stream =
stream;
902 if (!
metafile->auto_frame || !num_points)
908 for (
i=0;
i<num_points;
i++)
910 if (
points[
i].X < metafile->auto_frame_min.X)
914 if (
points[
i].Y < metafile->auto_frame_min.Y)
1040 data->BrushData.solid.SolidColor = solid->
color;
1057 data->BrushData.lineargradient.BrushDataFlags = 0;
1058 data->BrushData.lineargradient.WrapMode = gradient->
wrap;
1059 data->BrushData.lineargradient.RectF.X = gradient->
rect.
X;
1060 data->BrushData.lineargradient.RectF.Y = gradient->
rect.
Y;
1061 data->BrushData.lineargradient.RectF.Width = gradient->
rect.
Width;
1062 data->BrushData.lineargradient.RectF.Height = gradient->
rect.
Height;
1063 data->BrushData.lineargradient.StartColor = gradient->
startcolor;
1064 data->BrushData.lineargradient.EndColor = gradient->
endcolor;
1066 data->BrushData.lineargradient.Reserved2 = gradient->
endcolor;
1068 if (gradient->
gamma)
1071 cursor = &
data->BrushData.lineargradient.OptionalData[0];
1118 DWORD *ret_cap_data_size,
DWORD *ret_path_size)
1120 DWORD cap_size, path_size = 0;
1143 path_size +=
sizeof(
PointF) *
cap->pathdata.Count;
1144 path_size +=
sizeof(
BYTE) *
cap->pathdata.Count;
1145 path_size = (path_size + 3) & ~3;
1147 cap_size += path_size;
1150 *ret_cap_size = cap_size;
1152 *ret_path_size = path_size;
1229 path->PathPointCount =
cap->pathdata.Count;
1230 path->PathPointFlags = 0;
1289 integer_rects =
FALSE;
1304 record->BrushID = brushid;
1331 corners[0].
X = rects[
i].X;
1332 corners[0].
Y = rects[
i].Y;
1333 corners[1].
X = rects[
i].X + rects[
i].Width;
1334 corners[1].
Y = rects[
i].Y;
1335 corners[2].
X = rects[
i].X;
1336 corners[2].
Y = rects[
i].Y + rects[
i].Height;
1337 corners[3].
X = rects[
i].X + rects[
i].Width;
1338 corners[3].
Y = rects[
i].Y + rects[
i].Height;
1577 record->DestRect = *dstrect;
1578 record->SrcRect = *srcrect;
1579 record->StackIndex = StackIndex;
1599 record->StackIndex = StackIndex;
1619 record->StackIndex = StackIndex;
1639 record->StackIndex = StackIndex;
1659 record->StackIndex = StackIndex;
1697 RECTL bounds_rc, gdi_bounds_rc;
1703 gdi_bounds_rc =
header.EmfHeader.rclBounds;
1704 if (gdi_bounds_rc.
right > gdi_bounds_rc.
left &&
1705 gdi_bounds_rc.
bottom > gdi_bounds_rc.
top)
1710 af_min->
X =
fmin(af_min->
X, gdi_bounds_rc.
left);
1711 af_min->
Y =
fmin(af_min->
Y, gdi_bounds_rc.
top);
1725 HENHMETAFILE new_hemf;
1785 IStream_Release(
metafile->record_stream);
1892 switch (bitmapdata->
Type)
1921 if (data_size < bitmapdata->
Height * bitmapdata->
Stride)
1947 IWICImagingFactory_Release(
factory);
1956 IWICStream_Release(
stream);
1960 WARN(
"Invalid bitmap type %ld.\n", bitmapdata->
Type);
1973 switch (metafiledata->
Type) {
1993 FIXME(
"metafile type %ld not supported.\n", metafiledata->
Type);
1999 FIXME(
"image type %d not supported.\n",
data->Type);
2019 if (
data->PathPointFlags & 0x800)
2021 FIXME(
"RLE encoded path data is not supported.\n");
2026 if (
data->PathPointFlags & 0x4000)
2034 if (data_size <
size)
2037 if (
data->PathPointCount)
2039 if (
data->PathPointFlags & 0x4000)
2044 for (
i = 0;
i <
data->PathPointCount;
i++)
2107 node->elementdata.combine.left =
left;
2108 node->elementdata.combine.right =
right;
2132 const BYTE *path_data;
2133 const UINT *data_size;
2157 FIXME(
"element type %#lx is not supported\n", *
type);
2206 if (data_size < header_size)
2222 data->BrushData.hatch.BackColor, (
GpHatch **)brush);
2232 brushflags =
data->BrushData.texture.BrushDataFlags;
2256 UINT position_count = 0;
2262 brushflags =
data->BrushData.lineargradient.BrushDataFlags;
2278 position_count = *(
DWORD *)(record_data +
offset);
2284 if (data_size !=
offset + position_count * (
sizeof(
float) +
sizeof(
EmfPlusARGB)))
2289 if (data_size !=
offset + position_count * 2 *
sizeof(
float))
2293 rect.X =
data->BrushData.lineargradient.RectF.X;
2294 rect.Y =
data->BrushData.lineargradient.RectF.Y;
2295 rect.Width =
data->BrushData.lineargradient.RectF.Width;
2296 rect.Height =
data->BrushData.lineargradient.RectF.Height;
2300 data->BrushData.lineargradient.WrapMode, &gradient);
2310 position_count *
sizeof(
REAL)), (
REAL *)(record_data +
offset), position_count);
2313 (
REAL *)(record_data +
offset), position_count);
2316 FIXME(
"BrushDataIsGammaCorrected is not handled.\n");
2328 FIXME(
"brush type %lu is not supported.\n",
data->Type);
2370 goto arrow_cap_failed;
2372 goto arrow_cap_failed;
2374 goto arrow_cap_failed;
2376 goto arrow_cap_failed;
2404 if (data_size < offset + fill_path->FillPathLength)
2415 if (data_size < offset + line_path->LinePathLength)
2431 goto default_cap_failed;
2433 goto default_cap_failed;
2435 goto default_cap_failed;
2437 goto default_cap_failed;
2542 void *
object =
NULL;
2579 FIXME(
"PenDataTransform is not supported.\n");
2620 FIXME(
"PenDataDashedLineCap is not supported.\n");
2634 FIXME(
"PenDataDashedLine is not supported.\n");
2640 FIXME(
"PenDataNonCenter is not supported.\n");
2647 FIXME(
"PenDataCompoundLine is not supported.\n");
2704 if (!(familyname =
malloc((
data->Length + 1) *
sizeof(*familyname))))
2707 memcpy(familyname,
data->FamilyName,
data->Length *
sizeof(*familyname));
2708 familyname[
data->Length] = 0;
2729 if (data_size !=
sizeof(*
data))
2736 !!
data->ObjectClamp);
2744 FIXME(
"not implemented for object type %d.\n",
type);
2777 if (recordType >= 1 && recordType <= 0x7a)
2786 record->iType = recordType;
2795 ERR(
"PlayEnhMetaFileRecord failed\n");
2873 rects[
i].
X = int_rects[
i].
X;
2874 rects[
i].
Y = int_rects[
i].
Y;
3043 REAL scale_x, scale_y;
3047 cont =
calloc(1,
sizeof(*cont));
3079 scaled_srcrect.
X = scale_x *
record->SrcRect.X;
3080 scaled_srcrect.
Y = scale_y *
record->SrcRect.Y;
3081 scaled_srcrect.
Width = scale_x *
record->SrcRect.Width;
3082 scaled_srcrect.
Height = scale_y *
record->SrcRect.Height;
3101 cont =
calloc(1,
sizeof(*cont));
3276 if (draw->
count != 3)
3279 if ((
flags >> 13) & 1)
3280 FIXME(
"image effects are not supported.\n");
3282 if ((
flags >> 11) & 1)
3292 if ((
flags >> 11) & 1)
3296 for (
i = 1;
i < 3;
i++)
3302 else if ((
flags >> 14) & 1)
3304 for (
i = 0;
i < 3;
i++)
3343 brush = real_metafile->
objtable[
fill->data.BrushId].u.brush;
3363 if (
fill->Count == 0)
3368 else if (
flags & 0x4000)
3391 brush = real_metafile->
objtable[
fill->BrushId].u.brush;
3394 if (
flags & (0x800 | 0x4000))
3403 for (
i = 1;
i <
fill->Count;
i++)
3411 for (
i = 0;
i <
fill->Count;
i++)
3458 brush = real_metafile->
objtable[
fill->BrushId].u.brush;
3463 fill->RectData.rect.Y,
fill->RectData.rect.Width,
fill->RectData.rect.Height);
3466 fill->RectData.rectF.Y,
fill->RectData.rectF.Width,
fill->RectData.rectF.Height);
3497 brush = real_metafile->
objtable[
fill->BrushId].u.brush;
3502 fill->RectData.rect.Y,
fill->RectData.rect.Width,
fill->RectData.rect.Height,
3503 fill->StartAngle,
fill->SweepAngle);
3506 fill->RectData.rectF.Y,
fill->RectData.rectF.Width,
fill->RectData.rectF.Height,
3507 fill->StartAngle,
fill->SweepAngle);
3633 DWORD expected_size;
3637 void* alignedmem =
NULL;
3648 if (dataSize < expected_size || draw->GlyphCount <= 0)
3651 expected_size += draw->
GlyphCount * (
sizeof(*text) +
sizeof(*positions));
3653 expected_size +=
sizeof(*matrix);
3656 expected_size = (expected_size + 3) & ~3;
3689 alloc_size +=
sizeof(*matrix);
3691 positions = alignedmem =
malloc(alloc_size);
3707 real_metafile->
objtable[
font].u.font, brush, positions,
3742 brush = real_metafile->
objtable[
fill->data.BrushId].u.brush;
3746 real_metafile->
objtable[region].u.region);
3764 FIXME(
"Not implemented for record type %x\n", recordType);
3787 data->metafile->handle_count = nObj;
3808 pStr,
data->callback_data);
3820 if (lpEMFR->
nSize != 8)
3826 pStr,
data->callback_data);
3841 TRACE(
"(%p,%p,%p,%i,%p,%i,%p,%p,%p)\n", graphics,
metafile,
3842 destPoints,
count, srcRect, srcUnit,
callback, callbackData,
3845 if (!graphics || !
metafile || !destPoints ||
count != 3 || !srcRect)
3859 data.callback_data = callbackData;
3860 data.metafile = real_metafile;
3864 real_metafile->
src_rect = *srcRect;
3941 &
data, &dst_bounds);
3994 destRectF.
X = destRect->X;
3995 destRectF.
Y = destRect->Y;
3996 destRectF.
Width = destRect->Width;
3997 destRectF.
Height = destRect->Height;
3999 srcRectF.
X = srcRect->X;
4000 srcRectF.
Y = srcRect->Y;
4001 srcRectF.
Width = srcRect->Width;
4002 srcRectF.
Height = srcRect->Height;
4157 header->Type = metafile_type;
4165 header->EmfHeader = emfheader;
4178 header->EmfPlusFlags = 0;
4179 header->EmfPlusHeaderSize = 0;
4264 (*metafile)->image.format = ImageFormatEMF;
4265 (*metafile)->image.frame_count = 1;
4266 (*metafile)->image.xres =
header.DpiX;
4267 (*metafile)->image.yres =
header.DpiY;
4268 (*metafile)->bounds.X = (
REAL)
header.EmfHeader.rclFrame.left / 2540.0 *
header.DpiX;
4269 (*metafile)->bounds.Y = (
REAL)
header.EmfHeader.rclFrame.top / 2540.0 *
header.DpiY;
4270 (*metafile)->bounds.Width = (
REAL)(
header.EmfHeader.rclFrame.right -
header.EmfHeader.rclFrame.left)
4272 (*metafile)->bounds.Height = (
REAL)(
header.EmfHeader.rclFrame.bottom -
header.EmfHeader.rclFrame.top)
4275 (*metafile)->metafile_type =
header.Type;
4276 (*metafile)->hemf = hemf;
4277 (*metafile)->preserve_hemf = !
delete;
4280 (*metafile)->printer_display = !(
header.EmfPlusFlags & (1u << 31));
4281 (*metafile)->logical_dpix =
header.LogicalDpiX;
4282 (*metafile)->logical_dpiy =
header.LogicalDpiY;
4298 TRACE(
"(%p, %d, %p, %p)\n", hwmf,
delete, placeable,
metafile);
4320 (*metafile)->image.xres = (
REAL)placeable->Inch;
4321 (*metafile)->image.yres = (
REAL)placeable->Inch;
4322 (*metafile)->bounds.X = ((
REAL)placeable->BoundingBox.Left) / ((
REAL)placeable->Inch);
4323 (*metafile)->bounds.Y = ((
REAL)placeable->BoundingBox.Top) / ((
REAL)placeable->Inch);
4324 (*metafile)->bounds.Width = (
REAL)(placeable->BoundingBox.Right -
4325 placeable->BoundingBox.Left);
4326 (*metafile)->bounds.Height = (
REAL)(placeable->BoundingBox.Bottom -
4327 placeable->BoundingBox.Top);
4332 (*metafile)->image.format = ImageFormatWMF;
4442 TRACE(
"(%p,%p,%p,%u,%s,%p)\n",
ref,
metafile, succ, emfType,
4450 *out_metafile =
NULL;
4453 FIXME(
"not implemented\n");
4461 FIXME(
"(%p, %d, %p, %d, %d): stub\n", hemf, cbData16, pData16, iMapMode, eFlags);
4472 REAL framerect_factor_x, framerect_factor_y;
4490 framerect_factor_x = 2540.0 / dpix;
4491 framerect_factor_y = 2540.0 / dpiy;
4494 framerect_factor_x = framerect_factor_y = 2540.0 / 72.0;
4497 framerect_factor_x = framerect_factor_y = 2540.0;
4500 framerect_factor_x = framerect_factor_y = 2540.0 / 300.0;
4503 framerect_factor_x = framerect_factor_y = 100.0;
4506 framerect_factor_x = framerect_factor_y = 1.0;
4512 rc.
left = framerect_factor_x * pFrameRect->X;
4513 rc.
top = framerect_factor_y * pFrameRect->Y;
4514 rc.
right = rc.
left + framerect_factor_x * pFrameRect->Width;
4515 rc.
bottom = rc.
top + framerect_factor_y * pFrameRect->Height;
4536 (*metafile)->image.palette =
NULL;
4537 (*metafile)->image.xres = dpix;
4538 (*metafile)->image.yres = dpiy;
4539 (*metafile)->bounds.X = (*metafile)->bounds.Y = 0.0;
4540 (*metafile)->bounds.Width = (*metafile)->bounds.Height = 1.0;
4543 (*metafile)->record_dc = record_dc;
4544 (*metafile)->comment_data =
NULL;
4545 (*metafile)->comment_data_size = 0;
4546 (*metafile)->comment_data_length = 0;
4547 (*metafile)->limit_dpi = 96;
4548 (*metafile)->hemf =
NULL;
4556 (*metafile)->auto_frame =
TRUE;
4557 (*metafile)->auto_frame_min.X = 0;
4558 (*metafile)->auto_frame_min.Y = 0;
4559 (*metafile)->auto_frame_max.X = -1;
4560 (*metafile)->auto_frame_max.Y = -1;
4595 FIXME(
"stub: %p, %p, %p, %p, %u, %p, %p\n", refGraphics,
metafile, conversionSuccess,
filename, emfType,
description, out_metafile);
4614 IStream_Release(*
stream);
4618 hr = IStream_Stat(*
stream, &statstg, 1);
4621 IStream_Release(*
stream);
4624 *
size = statstg.cbSize.u.LowPart;
4630 IStream_Release(*
stream);
4670 aligned_size = (
size + 3) & ~3;
4674 (
void**)&object_record);
4680 memset(object_record->ObjectData.image.ImageData.bitmap.BitmapData +
size, 0, aligned_size -
size);
4704 (
void**)&object_record);
4711 metafile_record = &object_record->ObjectData.image.ImageData.metafile;
4723 FIXME(
"not supported image type (%d)\n",
image->type);
4744 (
void**)&object_record);
4765 DWORD image_id, attributes_id;
4772 FIXME(
"MetafileTypeEmf metafiles not supported\n");
4776 FIXME(
"semi-stub\n");
4778 if (!imageAttributes)
4814 FIXME(
"imageAttributes not supported (image type %d)\n",
image->type);
4833 draw_image_record->
count = 3;
4869 (
void**)&object_record);
4880 DWORD custom_start_cap_size = 0, custom_start_cap_data_size = 0, custom_start_cap_path_size = 0;
4881 DWORD custom_end_cap_size = 0, custom_end_cap_data_size = 0, custom_end_cap_path_size = 0;
4882 DWORD i, data_flags, pen_data_size, brush_size;
4904 pen_data_size +=
sizeof(
DWORD);
4909 pen_data_size +=
sizeof(
DWORD);
4914 pen_data_size +=
sizeof(
DWORD);
4919 pen_data_size +=
sizeof(
REAL);
4924 pen_data_size +=
sizeof(
DWORD);
4929 pen_data_size +=
sizeof(
DWORD);
4932 pen_data_size +=
sizeof(
REAL);
4941 pen_data_size +=
sizeof(
DWORD);
4948 &custom_start_cap_data_size, &custom_start_cap_path_size);
4949 pen_data_size += custom_start_cap_size;
4955 &custom_end_cap_data_size, &custom_end_cap_path_size);
4956 pen_data_size += custom_end_cap_size;
4964 (
void**)&object_record);
5049 custom_start_cap_path_size);
5050 i += custom_start_cap_size;
5056 custom_end_cap_path_size);
5057 i += custom_end_cap_size;
5089 draw_path_record->
PenId = pen_id;
5118 record->Header.Flags = pen_id;
5121 record->Header.Flags |= 0x4000;
5137 DWORD brush_id = -1, path_id;
5162 fill_path_record->
Header.
Flags = 0x8000 | path_id;
5177 BOOL is_int_rect, inline_color;
5179 DWORD brush_id = -1;
5203 record->Header.Flags = 0x8000;
5207 record->BrushId = brush_id;
5211 record->Header.Flags |= 0x4000;
5227 BOOL is_int_rect, inline_color;
5229 DWORD brush_id = -1;
5253 record->Header.Flags = 0x8000;
5257 record->BrushId = brush_id;
5259 record->StartAngle = startAngle;
5260 record->SweepAngle = sweepAngle;
5264 record->Header.Flags |= 0x4000;
5300 (
void**)&object_record);
5314 font_record->
Length = fn_len;
5317 fn_len *
sizeof(*
font->family->FamilyName));
5341 FIXME(
"metafile type not supported: %i\n",
metafile->metafile_type);
5369 length * (
sizeof(*text) +
sizeof(*positions));
5372 alloc_size +=
sizeof(*matrix);
5375 alloc_size = (alloc_size + 3) & ~3;
5414 fixme_written =
TRUE;
5415 FIXME(
"serializing RealizedAdvance flag and single GlyphPos with padding\n");
5445 FIXME(
"metafile type not supported: %i\n",
metafile->metafile_type);
5462 (
void**)&fill_region_record);
5502 integer_rects =
FALSE;
5508 count * (integer_rects ?
sizeof(
record->RectData.rect) :
sizeof(
record->RectData.rectF)),
5513 record->Header.Flags = pen_id;
5515 record->Header.Flags |= 0x4000;
5555 (integer_rect ?
sizeof(
record->RectData.rect) :
sizeof(
record->RectData.rectF)),
5560 record->Header.Flags = pen_id;
5562 record->Header.Flags |= 0x4000;
5563 record->StartAngle = startAngle;
5564 record->SweepAngle = sweepAngle;
5646 record->Flags = ((
mode & 0xf) << 8) | path_id;
_STLP_MOVE_TO_STD_NAMESPACE void fill(_ForwardIter __first, _ForwardIter __last, const _Tp &__val)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static void list_remove(struct list_entry *entry)
static void list_add_head(struct list_entry *head, struct list_entry *entry)
static void list_init(struct list_entry *head)
INT copy(TCHAR source[MAX_PATH], TCHAR dest[MAX_PATH], INT append, DWORD lpdwFlags, BOOL bTouch)
static unsigned int palette_size(DWORD flags)
HRESULT WINAPI CreateStreamOnHGlobal(HGLOBAL hGlobal, BOOL delete_on_release, IStream **stream)
GpStatus WINGDIPAPI GdipCreateLineBrushFromRect(GDIPCONST GpRectF *rect, ARGB startcolor, ARGB endcolor, LinearGradientMode mode, GpWrapMode wrap, GpLineGradient **line)
GpStatus WINGDIPAPI GdipDeleteBrush(GpBrush *brush)
GpStatus WINGDIPAPI GdipCreateHatchBrush(GpHatchStyle hatchstyle, ARGB forecol, ARGB backcol, GpHatch **brush)
GpStatus WINGDIPAPI GdipSetTextureTransform(GpTexture *texture, GDIPCONST GpMatrix *matrix)
GpStatus WINGDIPAPI GdipSetLinePresetBlend(GpLineGradient *brush, GDIPCONST ARGB *blend, GDIPCONST REAL *positions, INT count)
GpStatus WINGDIPAPI GdipSetLineTransform(GpLineGradient *brush, GDIPCONST GpMatrix *matrix)
GpStatus WINGDIPAPI GdipSetLineBlend(GpLineGradient *brush, GDIPCONST REAL *factors, GDIPCONST REAL *positions, INT count)
GpStatus WINGDIPAPI GdipCreateSolidFill(ARGB color, GpSolidFill **sf)
GpStatus WINGDIPAPI GdipCreateTexture(GpImage *image, GpWrapMode wrapmode, GpTexture **texture)
GpStatus WINGDIPAPI GdipSetCustomLineCapStrokeCaps(GpCustomLineCap *custom, GpLineCap startcap, GpLineCap endcap)
GpStatus WINGDIPAPI GdipSetCustomLineCapWidthScale(GpCustomLineCap *custom, REAL width)
GpStatus WINGDIPAPI GdipCreateCustomLineCap(GpPath *fillPath, GpPath *strokePath, GpLineCap baseCap, REAL baseInset, GpCustomLineCap **customCap)
GpStatus WINGDIPAPI GdipDeleteCustomLineCap(GpCustomLineCap *customCap)
GpStatus WINGDIPAPI GdipCreateAdjustableArrowCap(REAL height, REAL width, BOOL fill, GpAdjustableArrowCap **cap)
GpStatus WINGDIPAPI GdipSetCustomLineCapStrokeJoin(GpCustomLineCap *custom, GpLineJoin join)
GpStatus WINGDIPAPI GdipSetAdjustableArrowCapMiddleInset(GpAdjustableArrowCap *cap, REAL middle)
GpStatus WINGDIPAPI GdipDeleteFontFamily(GpFontFamily *FontFamily)
GpStatus WINGDIPAPI GdipDeleteFont(GpFont *font)
GpStatus WINGDIPAPI GdipGetFontStyle(GpFont *font, INT *style)
GpStatus WINGDIPAPI GdipGetGenericFontFamilySansSerif(GpFontFamily **nativeFamily)
GpStatus WINGDIPAPI GdipCreateFont(GDIPCONST GpFontFamily *fontFamily, REAL emSize, INT style, Unit unit, GpFont **font)
GpStatus WINGDIPAPI GdipCreateFontFamilyFromName(GDIPCONST WCHAR *name, GpFontCollection *collection, GpFontFamily **family)
GpStatus WINGDIPAPI GdipFillRectangles(GpGraphics *graphics, GpBrush *brush, GDIPCONST GpRectF *rects, INT count)
GpStatus WINGDIPAPI GdipCreateStreamOnFile(GDIPCONST WCHAR *filename, UINT access, IStream **stream)
GpStatus WINGDIPAPI GdipDrawEllipseI(GpGraphics *graphics, GpPen *pen, INT x, INT y, INT width, INT height)
GpStatus WINGDIPAPI GdipFillRegion(GpGraphics *graphics, GpBrush *brush, GpRegion *region)
GpStatus WINGDIPAPI GdipDeleteGraphics(GpGraphics *graphics)
GpStatus WINGDIPAPI GdipFillEllipse(GpGraphics *graphics, GpBrush *brush, REAL x, REAL y, REAL width, REAL height)
GpStatus WINGDIPAPI GdipGetClip(GpGraphics *graphics, GpRegion *region)
GpStatus WINGDIPAPI GdipSetCompositingMode(GpGraphics *graphics, CompositingMode mode)
GpStatus WINGDIPAPI GdipFillClosedCurve2(GpGraphics *graphics, GpBrush *brush, GDIPCONST GpPointF *points, INT count, REAL tension, GpFillMode fill)
GpStatus WINGDIPAPI GdipDrawPie(GpGraphics *graphics, GpPen *pen, REAL x, REAL y, REAL width, REAL height, REAL startAngle, REAL sweepAngle)
GpStatus WINGDIPAPI GdipGetDC(GpGraphics *graphics, HDC *hdc)
GpStatus WINGDIPAPI GdipGraphicsClear(GpGraphics *graphics, ARGB color)
GpStatus WINGDIPAPI GdipDrawRectangles(GpGraphics *graphics, GpPen *pen, GDIPCONST GpRectF *rects, INT count)
GpStatus WINGDIPAPI GdipFillPie(GpGraphics *graphics, GpBrush *brush, REAL x, REAL y, REAL width, REAL height, REAL startAngle, REAL sweepAngle)
GpStatus WINGDIPAPI GdipSetTextRenderingHint(GpGraphics *graphics, TextRenderingHint hint)
GpStatus WINGDIPAPI GdipDrawDriverString(GpGraphics *graphics, GDIPCONST UINT16 *text, INT length, GDIPCONST GpFont *font, GDIPCONST GpBrush *brush, GDIPCONST PointF *positions, INT flags, GDIPCONST GpMatrix *matrix)
GpStatus WINGDIPAPI GdipSetWorldTransform(GpGraphics *graphics, GpMatrix *matrix)
GpStatus WINGDIPAPI GdipDrawImageRectRectI(GpGraphics *graphics, GpImage *image, INT dstx, INT dsty, INT dstwidth, INT dstheight, INT srcx, INT srcy, INT srcwidth, INT srcheight, GpUnit srcUnit, GDIPCONST GpImageAttributes *imageAttributes, DrawImageAbort callback, VOID *callbackData)
GpStatus WINGDIPAPI GdipSaveGraphics(GpGraphics *graphics, GraphicsState *state)
GpStatus WINGDIPAPI GdipDrawPath(GpGraphics *graphics, GpPen *pen, GpPath *path)
GpStatus WINGDIPAPI GdipEndContainer(GpGraphics *graphics, GraphicsContainer state)
GpStatus WINGDIPAPI GdipSetCompositingQuality(GpGraphics *graphics, CompositingQuality quality)
GpStatus WINGDIPAPI GdipSetInterpolationMode(GpGraphics *graphics, InterpolationMode mode)
GpStatus WINGDIPAPI GdipDrawImagePointsRect(GpGraphics *graphics, GpImage *image, GDIPCONST GpPointF *points, INT count, REAL srcx, REAL srcy, REAL srcwidth, REAL srcheight, GpUnit srcUnit, GDIPCONST GpImageAttributes *imageAttributes, DrawImageAbort callback, VOID *callbackData)
GpStatus WINGDIPAPI GdipDrawEllipse(GpGraphics *graphics, GpPen *pen, REAL x, REAL y, REAL width, REAL height)
GpStatus WINGDIPAPI GdipFillPath(GpGraphics *graphics, GpBrush *brush, GpPath *path)
GpStatus WINGDIPAPI GdipDrawPieI(GpGraphics *graphics, GpPen *pen, INT x, INT y, INT width, INT height, REAL startAngle, REAL sweepAngle)
GpStatus WINGDIPAPI GdipReleaseDC(GpGraphics *graphics, HDC hdc)
GpStatus WINGDIPAPI GdipSetRenderingOrigin(GpGraphics *graphics, INT x, INT y)
GpStatus WINGDIPAPI GdipDrawArc(GpGraphics *graphics, GpPen *pen, REAL x, REAL y, REAL width, REAL height, REAL startAngle, REAL sweepAngle)
GpStatus WINGDIPAPI GdipDrawArcI(GpGraphics *graphics, GpPen *pen, INT x, INT y, INT width, INT height, REAL startAngle, REAL sweepAngle)
GpStatus WINGDIPAPI GdipTransformPoints(GpGraphics *graphics, GpCoordinateSpace dst_space, GpCoordinateSpace src_space, GpPointF *points, INT count)
GpStatus WINGDIPAPI GdipFillPieI(GpGraphics *graphics, GpBrush *brush, INT x, INT y, INT width, INT height, REAL startAngle, REAL sweepAngle)
GpStatus WINGDIPAPI GdipRestoreGraphics(GpGraphics *graphics, GraphicsState state)
GpStatus WINGDIPAPI GdipSetPageUnit(GpGraphics *graphics, GpUnit unit)
GpStatus WINGDIPAPI GdipSetSmoothingMode(GpGraphics *graphics, SmoothingMode mode)
GpStatus WINGDIPAPI GdipFillEllipseI(GpGraphics *graphics, GpBrush *brush, INT x, INT y, INT width, INT height)
GpStatus WINGDIPAPI GdipSetPixelOffsetMode(GpGraphics *graphics, PixelOffsetMode mode)
GpStatus WINGDIPAPI GdipResetWorldTransform(GpGraphics *graphics)
GpStatus WINGDIPAPI GdipSetPageScale(GpGraphics *graphics, REAL scale)
GpStatus WINGDIPAPI GdipBeginContainer2(GpGraphics *graphics, GraphicsContainer *state)
GpStatus WINGDIPAPI GdipCreatePath(GpFillMode fill, GpPath **path)
GpStatus WINGDIPAPI GdipDeletePath(GpPath *path)
GpStatus WINGDIPAPI GdipCreatePath2(GDIPCONST GpPointF *points, GDIPCONST BYTE *types, INT count, GpFillMode fill, GpPath **path)
GpStatus WINGDIPAPI GdipAddPathPolygon(GpPath *path, GDIPCONST GpPointF *points, INT count)
GpStatus WINGDIPAPI GdipCreateBitmapFromScan0(INT width, INT height, INT stride, PixelFormat format, BYTE *scan0, GpBitmap **bitmap)
GpStatus WINGDIPAPI GdipSetImagePalette(GpImage *image, GDIPCONST ColorPalette *palette)
GpStatus WINGDIPAPI GdipGetImageGraphicsContext(GpImage *image, GpGraphics **graphics)
GpStatus WINGDIPAPI GdipDisposeImage(GpImage *image)
GpStatus WINGDIPAPI GdipLoadImageFromStream(IStream *stream, GpImage **image)
GpStatus WINGDIPAPI GdipCreateBitmapFromStream(IStream *stream, GpBitmap **bitmap)
GpStatus WINGDIPAPI GdipScaleMatrix(GpMatrix *matrix, REAL scaleX, REAL scaleY, GpMatrixOrder order)
GpStatus WINGDIPAPI GdipMultiplyMatrix(GpMatrix *matrix, GDIPCONST GpMatrix *matrix2, GpMatrixOrder order)
GpStatus WINGDIPAPI GdipTranslateMatrix(GpMatrix *matrix, REAL offsetX, REAL offsetY, GpMatrixOrder order)
GpStatus WINGDIPAPI GdipCreateMatrix3(GDIPCONST GpRectF *rect, GDIPCONST GpPointF *pt, GpMatrix **matrix)
GpStatus WINGDIPAPI GdipSetMatrixElements(GpMatrix *matrix, REAL m11, REAL m12, REAL m21, REAL m22, REAL dx, REAL dy)
GpStatus WINGDIPAPI GdipRotateMatrix(GpMatrix *matrix, REAL angle, GpMatrixOrder order)
GpStatus WINGDIPAPI GdipIsMatrixIdentity(GDIPCONST GpMatrix *matrix, BOOL *result)
GpStatus WINGDIPAPI GdipDeleteMatrix(GpMatrix *matrix)
GpStatus WINGDIPAPI GdipCreateMatrix(GpMatrix **matrix)
GpStatus WINGDIPAPI GdipSetPenLineJoin(GpPen *pen, GpLineJoin join)
GpStatus WINGDIPAPI GdipDeletePen(GpPen *pen)
GpStatus WINGDIPAPI GdipCreatePen2(GpBrush *brush, REAL width, GpUnit unit, GpPen **pen)
GpStatus WINGDIPAPI GdipSetPenMiterLimit(GpPen *pen, REAL limit)
GpStatus WINGDIPAPI GdipSetPenDashStyle(GpPen *pen, GpDashStyle dash)
GpStatus WINGDIPAPI GdipSetPenCustomEndCap(GpPen *pen, GpCustomLineCap *customCap)
GpStatus WINGDIPAPI GdipSetPenEndCap(GpPen *pen, GpLineCap cap)
GpStatus WINGDIPAPI GdipSetPenStartCap(GpPen *pen, GpLineCap cap)
GpStatus WINGDIPAPI GdipSetPenCustomStartCap(GpPen *pen, GpCustomLineCap *customCap)
GpStatus WINGDIPAPI GdipSetPenDashOffset(GpPen *pen, REAL offset)
GpStatus WINGDIPAPI GdipCombineRegionPath(GpRegion *region, GpPath *path, CombineMode mode)
GpStatus WINGDIPAPI GdipTransformRegion(GpRegion *region, GpMatrix *matrix)
GpStatus WINGDIPAPI GdipCreateRegionRect(GDIPCONST GpRectF *rect, GpRegion **region)
GpStatus WINGDIPAPI GdipCreateRegion(GpRegion **region)
GpStatus WINGDIPAPI GdipCombineRegionRegion(GpRegion *region1, GpRegion *region2, CombineMode mode)
GpStatus WINGDIPAPI GdipCreateRegionPath(GpPath *path, GpRegion **region)
GpStatus WINGDIPAPI GdipDeleteRegion(GpRegion *region)
GpStatus WINGDIPAPI GdipCloneRegion(GpRegion *region, GpRegion **clone)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
_ACRTIMP double __cdecl fmin(double, double)
_ACRTIMP double __cdecl fmax(double, double)
GpStatus hresult_to_status(HRESULT res)
const char * debugstr_rectf(const RectF *rc)
REAL units_to_pixels(REAL units, GpUnit unit, REAL dpi, BOOL printer_display)
const char * debugstr_pointf(const PointF *pt)
DWORD write_region_data(const GpRegion *region, void *data)
GpStatus encode_image_png(GpImage *image, IStream *stream, GDIPCONST EncoderParameters *params)
GpStatus get_graphics_transform(GpGraphics *graphics, GpCoordinateSpace dst_space, GpCoordinateSpace src_space, GpMatrix *matrix)
static INT gdip_round(REAL x)
#define EmfPlusObjectTableSize
static void init_memory_buffer(struct memory_buffer *mbuf, const BYTE *buffer, INT size)
DWORD write_path_data(GpPath *path, void *data)
static void set_rect(GpRectF *rect, REAL x, REAL y, REAL width, REAL height)
@ ObjectTypeImageAttributes
static const void * buffer_read(struct memory_buffer *mbuf, INT size)
GpStatus graphics_from_image(GpImage *image, GpGraphics **graphics)
#define GP_DEFAULT_PENSTYLE
#define GDIP_EMFPLUS_RECORD_BASE
@ EmfPlusRecordTypeDrawPie
@ EmfPlusRecordTypeSetCompositingQuality
@ EmfPlusRecordTypeSetClipRect
@ EmfPlusRecordTypeSetClipPath
@ EmfPlusRecordTypeResetWorldTransform
@ EmfPlusRecordTypeResetClip
@ EmfPlusRecordTypeEndContainer
@ EmfPlusRecordTypeRotateWorldTransform
@ EmfPlusRecordTypeTranslateWorldTransform
@ EmfPlusRecordTypeDrawImagePoints
@ EmfPlusRecordTypeRestore
@ EmfPlusRecordTypeFillPath
@ EmfPlusRecordTypeSetPixelOffsetMode
@ EmfPlusRecordTypeDrawArc
@ EmfPlusRecordTypeSetCompositingMode
@ EmfPlusRecordTypeBeginContainer
@ EmfPlusRecordTypeDrawDriverString
@ EmfPlusRecordTypeDrawPath
@ EmfPlusRecordTypeOffsetClip
@ EmfPlusRecordTypeObject
@ EmfPlusRecordTypeFillClosedCurve
@ EmfPlusRecordTypeFillPie
@ EmfPlusRecordTypeSetWorldTransform
@ EmfPlusRecordTypeFillRects
@ EmfPlusRecordTypeHeader
@ EmfPlusRecordTypeDrawEllipse
@ EmfPlusRecordTypeFillEllipse
@ EmfPlusRecordTypeSetInterpolationMode
@ EmfPlusRecordTypeEndOfFile
@ EmfPlusRecordTypeDrawRects
@ EmfPlusRecordTypeSetPageTransform
@ EmfPlusRecordTypeSetRenderingOrigin
@ EmfPlusRecordTypeSetAntiAliasMode
@ EmfPlusRecordTypeBeginContainerNoParams
@ EmfPlusRecordTypeFillRegion
@ EmfPlusRecordTypeDrawImage
@ EmfPlusRecordTypeScaleWorldTransform
@ EmfPlusRecordTypeMultiplyWorldTransform
@ EmfPlusRecordTypeSetClipRegion
@ EmfPlusRecordTypeSetTextRenderingHint
@ CustomLineCapTypeAdjustableArrow
@ DriverStringOptionsRealizedAdvance
@ MetafileTypeEmfPlusOnly
@ MetafileTypeWmfPlaceable
@ MetafileTypeEmfPlusDual
@ BrushTypeLinearGradient
@ LinearGradientModeHorizontal
@ MetafileFrameUnitMillimeter
@ MetafileFrameUnitDocument
ImageAbort DrawImageAbort
BOOL(CALLBACK * EnumerateMetafileProc)(EmfPlusRecordType, UINT, UINT, const BYTE *, VOID *)
GLint GLint GLint GLint GLint x
GLuint GLuint GLsizei count
GLuint GLuint GLsizei GLenum type
GLint GLint GLint GLint GLint GLint y
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLint GLint GLsizei GLsizei height
GLint GLint GLsizei width
GLuint GLenum GLenum transform
GLenum GLenum GLenum GLenum GLenum scale
GLuint GLsizei GLsizei * length
GLuint GLdouble GLdouble GLint GLint order
GLsizei const GLfloat * points
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
GpStatus WINGDIPAPI GdipCreateImageAttributes(GpImageAttributes **imageattr)
GpStatus WINGDIPAPI GdipDisposeImageAttributes(GpImageAttributes *imageattr)
GpStatus WINGDIPAPI GdipSetImageAttributesWrapMode(GpImageAttributes *imageAttr, WrapMode wrap, ARGB argb, BOOL clamp)
#define memcpy(s1, s2, n)
#define comment(fmt, arg1)
static IPrintDialogCallback callback
D3D11_SHADER_VARIABLE_DESC desc
static const unsigned char metafile[]
static float(__cdecl *square_half_float)(float x
_In_ ULONG _In_ ULONG _In_ ULONG Length
static HANDLE ACCESS_MASK ULONG attributes
png_const_structrp png_const_inforp int * unit
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
wchar_t const *const size_t const buffer_size
EmfPlusRecordHeader Header
EmfPlusLinearGradientBrushData lineargradient
EmfPlusTextureBrushData texture
EmfPlusSolidBrushData solid
EmfPlusHatchBrushData hatch
union EmfPlusBrush::@408 BrushData
EmfPlusRecordHeader Header
DWORD CompoundLineDataSize
EmfPlusRecordHeader Header
EmfPlusPointF FillHotSpot
EmfPlusPointF LineHotSpot
EmfPlusPointF FillHotSpot
EmfPlusPointF LineHotSpot
DWORD CustomLineCapDataFlags
union EmfPlusDrawArc::@413 RectData
EmfPlusRecordHeader Header
EmfPlusRecordHeader Header
union EmfPlusDrawDriverString::@421 brush
DWORD DriverStringOptionsFlags
EmfPlusRecordHeader Header
union EmfPlusDrawEllipse::@414 RectData
EmfPlusPointR7 pointsR[3]
union EmfPlusDrawImagePoints::@412 PointData
EmfPlusRecordHeader Header
union EmfPlusDrawImage::@411 RectData
EmfPlusRecordHeader Header
EmfPlusRecordHeader Header
EmfPlusRecordHeader Header
union EmfPlusDrawPie::@415 RectData
EmfPlusRecordHeader Header
union EmfPlusDrawRects::@416 RectData
EmfPlusPointR7 pointsR[1]
union EmfPlusFillClosedCurve::@418 PointData
EmfPlusRecordHeader Header
EmfPlusRecordHeader Header
union EmfPlusFillEllipse::@419 RectData
EmfPlusRecordHeader Header
union EmfPlusFillPath::@417 data
EmfPlusRecordHeader Header
union EmfPlusFillPie::@420 RectData
EmfPlusRecordHeader Header
EmfPlusRecordHeader Header
union EmfPlusFillRegion::@422 data
union EmfPlusImage::@409 ImageData
EmfPlusRecordHeader Header
EmfPlusImageAttributes image_attributes
union EmfPlusObject::@410 ObjectData
EmfPlusRecordHeader Header
DWORD RegionNodePathLength
EmfPlusPath RegionNodePath
EmfPlusRecordHeader Header
EmfPlusRecordHeader Header
EmfPlusRecordHeader Header
GpCustomLineCap * customend
GpCustomLineCap * customstart
#define FIELD_OFFSET(t, f)
_In_ HFONT _Out_ PUINT _Out_ PUINT Width
_In_ HFONT _Out_ PUINT Height
BOOL WINAPI DeleteMetaFile(_In_ HMETAFILE)
UINT WINAPI GetEnhMetaFileBits(_In_ HENHMETAFILE hEMF, _In_ UINT nSize, _Out_writes_bytes_opt_(nSize) LPBYTE lpData)
BOOL WINAPI DeleteEnhMetaFile(_In_opt_ HENHMETAFILE)
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
HMETAFILE WINAPI GetMetaFileW(_In_ LPCWSTR)
BOOL WINAPI PlayEnhMetaFileRecord(_In_ HDC hdc, _In_reads_(cht) LPHANDLETABLE pht, _In_ CONST ENHMETARECORD *pmr, _In_ UINT cht)
HDC WINAPI CreateEnhMetaFileW(_In_opt_ HDC, _In_opt_ LPCWSTR, _In_opt_ LPCRECT, _In_opt_ LPCWSTR)
BOOL WINAPI FillPath(_In_ HDC)
UINT WINAPI GetMetaFileBitsEx(_In_ HMETAFILE hMF, _In_ UINT cbBuffer, _Out_writes_bytes_opt_(cbBuffer) LPVOID lpData)
BOOL WINAPI GdiComment(_In_ HDC hdc, _In_ UINT nSize, _In_reads_bytes_(nSize) const BYTE *lpData)
BOOL WINAPI EnumEnhMetaFile(_In_opt_ HDC, _In_ HENHMETAFILE, _In_ ENHMFENUMPROC, _In_opt_ PVOID, _In_opt_ LPCRECT)
HENHMETAFILE WINAPI CloseEnhMetaFile(_In_ HDC hdc)
HENHMETAFILE WINAPI SetEnhMetaFileBits(_In_ UINT nSize, _In_reads_bytes_(nSize) const BYTE *pb)
UINT WINAPI GetEnhMetaFileHeader(_In_ HENHMETAFILE hemf, _In_ UINT nSize, _Out_writes_bytes_opt_(nSize) LPENHMETAHEADER lpEnhMetaHeader)
int WINAPI SetStretchBltMode(_In_ HDC, _In_ int)
HENHMETAFILE WINAPI GetEnhMetaFileW(_In_ LPCWSTR)
HENHMETAFILE WINAPI SetWinMetaFileBits(_In_ UINT nSize, _In_reads_bytes_(nSize) const BYTE *lpMeta16Data, _In_opt_ HDC hdcRef, _In_opt_ const METAFILEPICT *lpMFP)
_In_ int _Inout_ LPRECT lprc