/** * This file has no copyright assigned and is placed in the Public Domain. * This file is part of the mingw-w64 runtime package. * No warranty is given; refer to the file DISCLAIMER.PD within this package. */ #ifndef _D2D1_3HELPER_H_ #define _D2D1_3HELPER_H_ #if NTDDI_VERSION >= NTDDI_WINTHRESHOLD #ifndef _D2D1_3_H_ #include #endif #ifndef D2D_USE_C_DEFINITIONS #include #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) namespace D2D1 { COM_DECLSPEC_NOTHROW D2D1FORCEINLINE D2D1_GRADIENT_MESH_PATCH GradientMeshPatch( D2D1_POINT_2F point00, D2D1_POINT_2F point01, D2D1_POINT_2F point02, D2D1_POINT_2F point03, D2D1_POINT_2F point10, D2D1_POINT_2F point11, D2D1_POINT_2F point12, D2D1_POINT_2F point13, D2D1_POINT_2F point20, D2D1_POINT_2F point21, D2D1_POINT_2F point22, D2D1_POINT_2F point23, D2D1_POINT_2F point30, D2D1_POINT_2F point31, D2D1_POINT_2F point32, D2D1_POINT_2F point33, D2D1_COLOR_F color00, D2D1_COLOR_F color03, D2D1_COLOR_F color30, D2D1_COLOR_F color33, D2D1_PATCH_EDGE_MODE top_edge_mode, D2D1_PATCH_EDGE_MODE left_edge_mode, D2D1_PATCH_EDGE_MODE bottom_edge_mode, D2D1_PATCH_EDGE_MODE right_edge_mode ) { D2D1_GRADIENT_MESH_PATCH new_patch; new_patch.point00 = point00; new_patch.point01 = point01; new_patch.point02 = point02; new_patch.point03 = point03; new_patch.point10 = point10; new_patch.point11 = point11; new_patch.point12 = point12; new_patch.point13 = point13; new_patch.point20 = point20; new_patch.point21 = point21; new_patch.point22 = point22; new_patch.point23 = point23; new_patch.point30 = point30; new_patch.point31 = point31; new_patch.point32 = point32; new_patch.point33 = point33; new_patch.color00 = color00; new_patch.color03 = color03; new_patch.color30 = color30; new_patch.color33 = color33; new_patch.topEdgeMode = top_edge_mode; new_patch.leftEdgeMode = left_edge_mode; new_patch.bottomEdgeMode = bottom_edge_mode; new_patch.rightEdgeMode = right_edge_mode; return new_patch; } COM_DECLSPEC_NOTHROW D2D1FORCEINLINE D2D1_GRADIENT_MESH_PATCH GradientMeshPatchFromCoonsPatch( D2D1_POINT_2F point0, D2D1_POINT_2F point1, D2D1_POINT_2F point2, D2D1_POINT_2F point3, D2D1_POINT_2F point4, D2D1_POINT_2F point5, D2D1_POINT_2F point6, D2D1_POINT_2F point7, D2D1_POINT_2F point8, D2D1_POINT_2F point9, D2D1_POINT_2F point10, D2D1_POINT_2F point11, D2D1_COLOR_F color0, D2D1_COLOR_F color1, D2D1_COLOR_F color2, D2D1_COLOR_F color3, D2D1_PATCH_EDGE_MODE top_edge_mode, D2D1_PATCH_EDGE_MODE left_edge_mode, D2D1_PATCH_EDGE_MODE bottom_edge_mode, D2D1_PATCH_EDGE_MODE right_edge_mode ) { D2D1_GRADIENT_MESH_PATCH new_patch; new_patch.point00 = point0; new_patch.point01 = point1; new_patch.point02 = point2; new_patch.point03 = point3; new_patch.point13 = point4; new_patch.point23 = point5; new_patch.point33 = point6; new_patch.point32 = point7; new_patch.point31 = point8; new_patch.point30 = point9; new_patch.point20 = point10; new_patch.point10 = point11; D2D1GetGradientMeshInteriorPointsFromCoonsPatch( &point0, &point1, &point2, &point3, &point4, &point5, &point6, &point7, &point8, &point9, &point10, &point11, &new_patch.point11, &new_patch.point12, &new_patch.point21, &new_patch.point22 ); new_patch.color00 = color0; new_patch.color03 = color1; new_patch.color33 = color2; new_patch.color30 = color3; new_patch.topEdgeMode = top_edge_mode; new_patch.leftEdgeMode = left_edge_mode; new_patch.bottomEdgeMode = bottom_edge_mode; new_patch.rightEdgeMode = right_edge_mode; return new_patch; } COM_DECLSPEC_NOTHROW D2D1FORCEINLINE D2D1_INK_POINT InkPoint(const D2D1_POINT_2F &point, FLOAT radius) { D2D1_INK_POINT ink_point; ink_point.x = point.x; ink_point.y = point.y; ink_point.radius = radius; return ink_point; } COM_DECLSPEC_NOTHROW D2D1FORCEINLINE D2D1_INK_BEZIER_SEGMENT InkBezierSegment(const D2D1_INK_POINT &point1, const D2D1_INK_POINT &point2, const D2D1_INK_POINT &point3) { D2D1_INK_BEZIER_SEGMENT ink_bezier_segment; ink_bezier_segment.point1 = point1; ink_bezier_segment.point2 = point2; ink_bezier_segment.point3 = point3; return ink_bezier_segment; } COM_DECLSPEC_NOTHROW D2D1FORCEINLINE D2D1_INK_STYLE_PROPERTIES InkStyleProperties(D2D1_INK_NIB_SHAPE nib_shape, const D2D1_MATRIX_3X2_F &nib_transform) { D2D1_INK_STYLE_PROPERTIES ink_style_properties; ink_style_properties.nibShape = nib_shape; ink_style_properties.nibTransform = nib_transform; return ink_style_properties; } COM_DECLSPEC_NOTHROW D2D1FORCEINLINE D2D1_RECT_U InfiniteRectU(void) { D2D1_RECT_U rect = { 0, 0, UINT_MAX, UINT_MAX }; return rect; } COM_DECLSPEC_NOTHROW D2D1FORCEINLINE D2D1_SIMPLE_COLOR_PROFILE SimpleColorProfile( const D2D1_POINT_2F &red_primary, const D2D1_POINT_2F &green_primary, const D2D1_POINT_2F &blue_primary, const D2D1_GAMMA1 gamma, const D2D1_POINT_2F &white_point_xz ) { D2D1_SIMPLE_COLOR_PROFILE simple_color_profile; simple_color_profile.redPrimary = red_primary; simple_color_profile.greenPrimary = green_primary; simple_color_profile.bluePrimary = blue_primary; simple_color_profile.gamma = gamma; simple_color_profile.whitePointXZ = white_point_xz; return simple_color_profile; } } /* namespace D2D1 */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* D2D_USE_C_DEFINITIONS */ #endif /* NTDDI_VERSION >= NTDDI_WINTHRESHOLD */ #endif /* _D2D1_HELPER_H_ */