mirror of
https://git.code.sf.net/p/mingw-w64/mingw-w64
synced 2024-11-23 09:54:39 +08:00
headers: Add d2d1_3helper.h
Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com>
This commit is contained in:
parent
6055f9cf8d
commit
c1d9408f6f
210
mingw-w64-headers/include/d2d1_3helper.h
Normal file
210
mingw-w64-headers/include/d2d1_3helper.h
Normal file
@ -0,0 +1,210 @@
|
||||
/**
|
||||
* 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 <d2d1_3.h>
|
||||
#endif
|
||||
|
||||
#ifndef D2D_USE_C_DEFINITIONS
|
||||
|
||||
#include <winapifamily.h>
|
||||
|
||||
#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_ */
|
Loading…
Reference in New Issue
Block a user