2463{
2466
2468
2471
2472 if (recordType >= 1 && recordType <= 0x7a)
2473 {
2474
2476 {
2477 switch (recordType)
2478 {
2489 FIXME(
"not implemented for record type %x\n", recordType);
2490 break;
2492 {
2496 break;
2497 }
2499 {
2504
2506 {
2508
2510
2512 }
2513
2515
2517
2519 }
2520 default:
2521 {
2523
2525 {
2526 record->iType = recordType;
2529
2532 ERR(
"PlayEnhMetaFileRecord failed\n");
2533
2535 }
2536 else
2538
2539 break;
2540 }
2541 }
2542 }
2543 }
2544 else
2545 {
2547
2549
2550 switch(recordType)
2551 {
2554 break;
2557 break;
2559 {
2561
2564
2566 }
2568 {
2572
2575
2577 {
2580 }
2581 else
2582 {
2585 }
2586
2588 {
2590 brush = temp_brush;
2591 }
2592 else
2593 {
2597
2600 }
2601
2603 {
2605 {
2608
2609 rects = temp_rects = heap_alloc_zero(
sizeof(
GpRectF) *
record->Count);
2610 if (rects)
2611 {
2613 {
2614 rects[
i].
X = int_rects[
i].
X;
2615 rects[
i].
Y = int_rects[
i].
Y;
2618 }
2619 }
2620 else
2622 }
2623 else
2625 }
2626
2628 {
2630 }
2631
2634
2636 }
2638 {
2642
2645
2647
2649 {
2652 }
2653
2655 }
2657 {
2661
2664
2667
2670 {
2673 }
2674
2676 }
2678 {
2682
2685
2688
2691 {
2694 }
2695
2697 }
2699 {
2702
2705
2708
2710 }
2712 {
2714
2717
2719
2721 }
2723 {
2726
2729
2731
2733 }
2735 {
2739
2742
2744
2746
2748 }
2750 {
2753
2756
2758
2760 }
2762 {
2765
2768
2770
2772 }
2774 {
2776
2778 }
2780 {
2784 REAL scale_x, scale_y;
2787
2788 cont = heap_alloc_zero(sizeof(*cont));
2789 if (!cont)
2791
2794 {
2797 }
2798
2800
2802 {
2806 }
2807
2814
2816
2819
2820 scaled_srcrect.
X = scale_x *
record->SrcRect.X;
2821 scaled_srcrect.
Y = scale_y *
record->SrcRect.Y;
2822 scaled_srcrect.
Width = scale_x *
record->SrcRect.Width;
2823 scaled_srcrect.
Height = scale_y *
record->SrcRect.Height;
2824
2831
2833
2835 }
2838 {
2841
2842 cont = heap_alloc_zero(sizeof(*cont));
2843 if (!cont)
2845
2848 {
2851 }
2852
2855 else
2857
2859 {
2863 }
2864
2868 else
2874
2875 break;
2876 }
2879 {
2884
2887 else
2889
2891 {
2893 {
2895 break;
2896 }
2897 }
2898
2899 if (found)
2900 {
2902
2903
2905 {
2909 }
2910
2913 else
2915
2920
2924 }
2925
2926 break;
2927 }
2929 {
2931 }
2933 {
2935 }
2937 {
2939 }
2941 {
2943 }
2945 {
2947 }
2949 {
2951 }
2953 {
2955 }
2957 {
2961
2964
2968
2972
2974 {
2981 }
2982 else
2983 {
2990 }
2991
2995 }
2997 {
3005
3008
3012
3016
3017 if (draw->
count != 3)
3019
3020 if ((
flags >> 13) & 1)
3021 FIXME(
"image effects are not supported.\n");
3022
3023 if ((
flags >> 11) & 1)
3027 else
3029
3032
3033 if ((
flags >> 11) & 1)
3034 {
3037 for (
i = 1;
i < 3;
i++)
3038 {
3041 }
3042 }
3043 else if ((
flags >> 14) & 1)
3044 {
3045 for (
i = 0;
i < 3;
i++)
3046 {
3049 }
3050 }
3051 else
3053
3057 }
3059 {
3064
3067
3070
3072 {
3077 }
3078 else
3079 {
3083
3084 brush = real_metafile->
objtable[
fill->data.BrushId].u.brush;
3085 }
3086
3090 }
3092 {
3100
3103
3104 if (
fill->Count == 0)
3106
3109 else if (
flags & 0x4000)
3111 else
3113
3116
3118
3120 {
3125 }
3126 else
3127 {
3131
3132 brush = real_metafile->
objtable[
fill->BrushId].u.brush;
3133 }
3134
3135 if (
flags & (0x800 | 0x4000))
3136 {
3139 {
3141 {
3142 for (
i = 1;
i <
fill->Count;
i++)
3143 {
3146 }
3147 }
3148 else
3149 {
3150 for (
i = 0;
i <
fill->Count;
i++)
3151 {
3154 }
3155 }
3156
3160 }
3161 else
3163 }
3164 else
3167
3170 }
3172 {
3176
3180
3183
3185 {
3190 }
3191 else
3192 {
3196
3197 brush = real_metafile->
objtable[
fill->BrushId].u.brush;
3198 }
3199
3202 fill->RectData.rect.Y,
fill->RectData.rect.Width,
fill->RectData.rect.Height);
3203 else
3205 fill->RectData.rectF.Y,
fill->RectData.rectF.Width,
fill->RectData.rectF.Height);
3206
3209 }
3211 {
3215
3219
3222
3224 {
3229 }
3230 else
3231 {
3235
3236 brush = real_metafile->
objtable[
fill->BrushId].u.brush;
3237 }
3238
3241 fill->RectData.rect.Y,
fill->RectData.rect.Width,
fill->RectData.rect.Height,
3242 fill->StartAngle,
fill->SweepAngle);
3243 else
3245 fill->RectData.rectF.Y,
fill->RectData.rectF.Width,
fill->RectData.rectF.Height,
3246 fill->StartAngle,
fill->SweepAngle);
3247
3250 }
3252 {
3255
3258
3261
3265
3268 }
3270 {
3273
3276
3280
3285 else
3289 }
3291 {
3294
3297
3300
3305 else
3309 }
3311 {
3314
3317
3321
3326 else
3330 }
3332 {
3336
3339
3343
3346
3348 {
3350
3352 if (!rects)
3354
3356 {
3361 }
3362 }
3363
3368 }
3369 default:
3370 FIXME(
"Not implemented for record type %x\n", recordType);
3372 }
3373 }
3374
3376}
_STLP_MOVE_TO_STD_NAMESPACE void fill(_ForwardIter __first, _ForwardIter __last, const _Tp &__val)
static void list_add_head(struct list_entry *head, struct list_entry *entry)
GpStatus WINGDIPAPI GdipDeleteBrush(GpBrush *brush)
GpStatus WINGDIPAPI GdipCreateSolidFill(ARGB color, GpSolidFill **sf)
GpStatus WINGDIPAPI GdipFillRectangles(GpGraphics *graphics, GpBrush *brush, GDIPCONST GpRectF *rects, INT count)
GpStatus WINGDIPAPI GdipDrawEllipseI(GpGraphics *graphics, GpPen *pen, INT x, INT y, INT width, INT height)
GpStatus WINGDIPAPI GdipFillEllipse(GpGraphics *graphics, GpBrush *brush, REAL x, REAL y, REAL width, REAL height)
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 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 GdipSaveGraphics(GpGraphics *graphics, GraphicsState *state)
GpStatus WINGDIPAPI GdipDrawPath(GpGraphics *graphics, GpPen *pen, GpPath *path)
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 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 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 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 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 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 GdipCreateRegionRect(GDIPCONST GpRectF *rect, GpRegion **region)
GpStatus WINGDIPAPI GdipCombineRegionRegion(GpRegion *region1, GpRegion *region2, CombineMode mode)
GpStatus WINGDIPAPI GdipCreateRegionPath(GpPath *path, GpRegion **region)
GpStatus WINGDIPAPI GdipCloneRegion(GpRegion *region, GpRegion **clone)
void WINGDIPAPI GdipFree(void *ptr)
void *WINGDIPAPI GdipAlloc(SIZE_T size)
#define EmfPlusObjectTableSize
@ ObjectTypeImageAttributes
@ EmfPlusRecordTypeDrawPie
@ EmfPlusRecordTypeSetCompositingQuality
@ EmfPlusRecordTypeSetClipRect
@ EmfPlusRecordTypeSetClipPath
@ EmfPlusRecordTypeResetWorldTransform
@ EmfPlusRecordTypeEndContainer
@ EmfPlusRecordTypeRotateWorldTransform
@ EmfPlusRecordTypeTranslateWorldTransform
@ EmfPlusRecordTypeDrawImagePoints
@ EmfPlusRecordTypeRestore
@ EmfPlusRecordTypeFillPath
@ EmfPlusRecordTypeSetPixelOffsetMode
@ EmfPlusRecordTypeDrawArc
@ EmfPlusRecordTypeSetCompositingMode
@ EmfPlusRecordTypeBeginContainer
@ EmfPlusRecordTypeDrawPath
@ EmfPlusRecordTypeObject
@ EmfPlusRecordTypeFillClosedCurve
@ EmfPlusRecordTypeFillPie
@ EmfPlusRecordTypeSetWorldTransform
@ EmfPlusRecordTypeFillRects
@ EmfPlusRecordTypeDrawEllipse
@ EmfPlusRecordTypeFillEllipse
@ EmfPlusRecordTypeSetInterpolationMode
@ EmfPlusRecordTypeEndOfFile
@ EmfPlusRecordTypeDrawRects
@ EmfPlusRecordTypeSetPageTransform
@ EmfPlusRecordTypeSetAntiAliasMode
@ EmfPlusRecordTypeBeginContainerNoParams
@ EmfPlusRecordTypeDrawImage
@ EmfPlusRecordTypeScaleWorldTransform
@ EmfPlusRecordTypeMultiplyWorldTransform
@ EmfPlusRecordTypeSetClipRegion
@ EmfPlusRecordTypeSetTextRenderingHint
GLuint GLuint GLsizei GLenum type
GLuint GLenum GLenum transform
GLuint GLdouble GLdouble GLint GLint order
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
png_const_structrp png_const_inforp int * unit
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
union EmfPlusDrawArc::@422 RectData
union EmfPlusDrawEllipse::@423 RectData
union EmfPlusDrawImagePoints::@421 PointData
EmfPlusPointR7 pointsR[3]
union EmfPlusDrawImage::@420 RectData
union EmfPlusDrawPie::@424 RectData
union EmfPlusDrawRects::@425 RectData
#define FIELD_OFFSET(t, f)
#define EMR_SETWINDOWEXTEX
#define EMR_SETVIEWPORTEXTEX
#define EMR_EXTSELECTCLIPRGN
BOOL WINAPI PlayEnhMetaFileRecord(_In_ HDC hdc, _In_reads_(cht) LPHANDLETABLE pht, _In_ CONST ENHMETARECORD *pmr, _In_ UINT cht)
HRGN WINAPI ExtCreateRegion(_In_opt_ const XFORM *lpx, _In_ DWORD nCount, _In_reads_bytes_(nCount) const RGNDATA *lpData)
#define EMR_SETWINDOWORGEX
#define EMR_SETVIEWPORTORGEX
#define EMR_MODIFYWORLDTRANSFORM
#define EMR_SCALEWINDOWEXTEX
#define EMR_SETWORLDTRANSFORM
int WINAPI ExtSelectClipRgn(_In_ HDC, _In_opt_ HRGN, _In_ int)
#define EMR_SCALEVIEWPORTEXTEX