33 if (
IsEqualGUID(iid, &IID_ID2D1GradientStopCollection)
37 ID2D1GradientStopCollection_AddRef(iface);
68 ID3D11ShaderResourceView_Release(gradient->
view);
69 ID2D1Factory_Release(gradient->
factory);
89 TRACE(
"iface %p.\n", iface);
106 FIXME(
"iface %p stub!\n", iface);
113 FIXME(
"iface %p stub!\n", iface);
133 D3D11_SHADER_RESOURCE_VIEW_DESC srv_desc;
134 D3D11_SUBRESOURCE_DATA buffer_data;
135 ID3D11ShaderResourceView *
view;
137 D3D11_BUFFER_DESC buffer_desc;
146 ERR(
"Failed to allocate data.\n");
150 for (
i = 0;
i < stop_count; ++
i)
159 buffer_desc.ByteWidth = 2 * stop_count *
sizeof(*data);
160 buffer_desc.Usage = D3D11_USAGE_DEFAULT;
161 buffer_desc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
162 buffer_desc.CPUAccessFlags = 0;
163 buffer_desc.MiscFlags = 0;
165 buffer_data.pSysMem =
data;
166 buffer_data.SysMemPitch = 0;
167 buffer_data.SysMemSlicePitch = 0;
169 hr = ID3D11Device1_CreateBuffer(
device, &buffer_desc, &buffer_data, &
buffer);
173 ERR(
"Failed to create buffer, hr %#lx.\n",
hr);
179 srv_desc.Buffer.ElementOffset = 0;
180 srv_desc.Buffer.ElementWidth = 2 * stop_count;
182 hr = ID3D11Device1_CreateShaderResourceView(
device, (ID3D11Resource *)
buffer, &srv_desc, &
view);
183 ID3D11Buffer_Release(
buffer);
186 ERR(
"Failed to create view, hr %#lx.\n",
hr);
190 if (!(gradient =
calloc(1,
sizeof(*gradient))))
192 ID3D11ShaderResourceView_Release(
view);
197 FIXME(
"Ignoring gamma %#x.\n", gamma);
199 FIXME(
"Ignoring extend mode %#x.\n", extend_mode);
207 if (!(gradient->
stops =
calloc(stop_count,
sizeof(*stops))))
209 ID3D11ShaderResourceView_Release(
view);
213 memcpy(gradient->
stops, stops, stop_count *
sizeof(*stops));
215 TRACE(
"Created gradient %p.\n", gradient);
232 ID3D11DeviceContext_PSSetShaderResources(
context, 2 + brush_idx, 1, &gradient->
view);
233 ID3D11DeviceContext_Release(
context);
238 ID2D1Factory_Release(brush->
factory);
275 ID2D1SolidColorBrush_AddRef(iface);
341 TRACE(
"iface %p.\n", iface);
392 if (!(*brush =
calloc(1,
sizeof(**brush))))
397 (*brush)->u.solid.color = *
color;
399 TRACE(
"Created brush %p.\n", *brush);
413 if (
IsEqualGUID(iid, &IID_ID2D1LinearGradientBrush)
418 ID2D1LinearGradientBrush_AddRef(iface);
448 ID2D1GradientStopCollection_Release(&brush->
u.
linear.gradient->ID2D1GradientStopCollection_iface);
488 TRACE(
"iface %p.\n", iface);
510 brush->
u.
linear.start = start_point;
520 brush->
u.
linear.end = end_point;
552 ID2D1GradientStopCollection_AddRef(*
gradient = &brush->
u.
linear.gradient->ID2D1GradientStopCollection_iface);
576 if (!(*brush =
calloc(1,
sizeof(**brush))))
582 ID2D1GradientStopCollection_AddRef(&(*brush)->u.linear.gradient->ID2D1GradientStopCollection_iface);
583 (*brush)->u.linear.start = gradient_brush_desc->
startPoint;
584 (*brush)->u.linear.end = gradient_brush_desc->
endPoint;
586 TRACE(
"Created brush %p.\n", *brush);
600 if (
IsEqualGUID(iid, &IID_ID2D1RadialGradientBrush)
605 ID2D1RadialGradientBrush_AddRef(iface);
635 ID2D1GradientStopCollection_Release(&brush->
u.
radial.gradient->ID2D1GradientStopCollection_iface);
675 TRACE(
"iface %p.\n", iface);
754 TRACE(
"iface %p.\n", iface);
756 return brush->
u.
radial.radius.x;
763 TRACE(
"iface %p.\n", iface);
765 return brush->
u.
radial.radius.y;
775 ID2D1GradientStopCollection_AddRef(*
gradient = &brush->
u.
radial.gradient->ID2D1GradientStopCollection_iface);
810 ID2D1GradientStopCollection_AddRef(&
b->u.radial.gradient->ID2D1GradientStopCollection_iface);
811 b->u.radial.centre = gradient_desc->
center;
813 b->u.radial.radius.
x = gradient_desc->
radiusX;
814 b->u.radial.radius.y = gradient_desc->
radiusY;
816 TRACE(
"Created brush %p.\n",
b);
838 ID2D1BitmapBrush1_AddRef(iface);
869 ID2D1Bitmap1_Release(&brush->
u.
bitmap.bitmap->ID2D1Bitmap1_iface);
909 TRACE(
"iface %p.\n", iface);
928 TRACE(
"iface %p, mode %#x.\n", iface,
mode);
937 TRACE(
"iface %p, mode %#x.\n", iface,
mode);
947 TRACE(
"iface %p, mode %#x.\n", iface,
mode);
955 WARN(
"Unknown interpolation mode %#x.\n",
mode);
969 ID2D1Bitmap_AddRef(
bitmap);
971 ID2D1Bitmap1_Release(&brush->
u.
bitmap.bitmap->ID2D1Bitmap1_iface);
979 TRACE(
"iface %p.\n", iface);
981 return brush->
u.
bitmap.extend_mode_x;
988 TRACE(
"iface %p.\n", iface);
990 return brush->
u.
bitmap.extend_mode_y;
997 TRACE(
"iface %p.\n", iface);
999 switch (brush->
u.
bitmap.interpolation_mode)
1016 ID2D1Bitmap_AddRef(*
bitmap);
1024 TRACE(
"iface %p, mode %#x.\n", iface,
mode);
1035 FIXME(
"Unhandled interpolation mode %#x.\n",
mode);
1038 WARN(
"Unknown interpolation mode %#x.\n",
mode);
1049 TRACE(
"iface %p.\n", iface);
1051 return brush->
u.
bitmap.interpolation_mode;
1080 if (!(*brush =
calloc(1,
sizeof(**brush))))
1086 ID2D1Bitmap1_AddRef(&(*brush)->u.bitmap.bitmap->ID2D1Bitmap1_iface);
1087 if (bitmap_brush_desc)
1089 (*brush)->u.bitmap.extend_mode_x = bitmap_brush_desc->
extendModeX;
1090 (*brush)->u.bitmap.extend_mode_y = bitmap_brush_desc->
extendModeY;
1100 TRACE(
"Created brush %p.\n", *brush);
1119 ID2D1ImageBrush_AddRef(iface);
1149 if (brush->
u.
image.image)
1150 ID2D1Image_Release(brush->
u.
image.image);
1190 TRACE(
"iface %p.\n", iface);
1209 TRACE(
"iface %p, image %p.\n", iface,
image);
1212 ID2D1Image_AddRef(
image);
1213 if (brush->
u.
image.image)
1214 ID2D1Image_Release(brush->
u.
image.image);
1222 TRACE(
"iface %p, mode %#x.\n", iface,
mode);
1231 TRACE(
"iface %p, mode %#x.\n", iface,
mode);
1241 TRACE(
"iface %p, mode %#x.\n", iface,
mode);
1259 TRACE(
"iface %p, image %p.\n", iface,
image);
1262 ID2D1Image_AddRef(*
image);
1269 TRACE(
"iface %p.\n", iface);
1271 return brush->
u.
image.extend_mode_x;
1278 TRACE(
"iface %p.\n", iface);
1280 return brush->
u.
image.extend_mode_y;
1287 TRACE(
"iface %p.\n", iface);
1289 return brush->
u.
image.interpolation_mode;
1296 TRACE(
"iface %p, rect %p.\n", iface,
rect);
1327 if (!(*brush =
calloc(1,
sizeof(**brush))))
1332 if (((*brush)->u.image.image =
image))
1333 ID2D1Image_AddRef((*brush)->u.image.image);
1336 (*brush)->u.image.extend_mode_x = image_brush_desc->
extendModeX;
1337 (*brush)->u.image.extend_mode_y = image_brush_desc->
extendModeY;
1340 TRACE(
"Created brush %p.\n", *brush);
1361 return D3D11_TEXTURE_ADDRESS_CLAMP;
1363 return D3D11_TEXTURE_ADDRESS_WRAP;
1365 return D3D11_TEXTURE_ADDRESS_MIRROR;
1367 FIXME(
"Unhandled extend mode %#x.\n",
mode);
1368 return D3D11_TEXTURE_ADDRESS_CLAMP;
1374 float theta, sin_theta, cos_theta;
1375 float dpi_scale,
d,
s1,
s2,
t,
u;
1390 switch (brush->
type)
1393 colour = &
cb->u.solid.colour;
1395 *colour = brush->
u.
solid.color;
1396 colour->
r *= colour->
a;
1397 colour->
g *= colour->
a;
1398 colour->
b *= colour->
a;
1406 cb->u.linear.stop_count = brush->
u.
linear.gradient->stop_count;
1413 b._31 =
b._32 = 0.0f;
1440 sin_theta =
sinf(theta);
1441 cos_theta =
cosf(theta);
1448 cb->u.radial.stop_count = brush->
u.
linear.gradient->stop_count;
1461 if (
FAILED(ID2D1Image_QueryInterface(brush->
u.
image.image, &IID_ID2D1Bitmap, (
void **)&image_bitmap)))
1463 FIXME(
"Only image brushes with bitmaps are supported.\n");
1483 d =
b._11 *
b._22 -
b._21 *
b._12;
1486 cb->u.bitmap._11 =
b._22 /
d;
1487 cb->u.bitmap._21 = -
b._21 /
d;
1488 cb->u.bitmap._31 = (
b._21 *
b._32 -
b._31 *
b._22) /
d;
1489 cb->u.bitmap._12 = -
b._12 /
d;
1490 cb->u.bitmap._22 =
b._11 /
d;
1491 cb->u.bitmap._32 = -(
b._11 *
b._32 -
b._31 *
b._12) /
d;
1494 cb->u.bitmap.ignore_alpha =
bitmap->format.alphaMode == D2D1_ALPHA_MODE_IGNORE;
1497 ID2D1Bitmap_Release(image_bitmap);
1503 FIXME(
"Unhandled brush type %#x.\n", brush->
type);
1512 ID3D11SamplerState **sampler_state;
1513 ID3D11DeviceContext *d3d_context;
1516 ID3D11Device1_GetImmediateContext(
context->d3d_device, &d3d_context);
1517 ID3D11DeviceContext_PSSetShaderResources(d3d_context, brush_idx, 1, &
bitmap->srv);
1519 sampler_state = &
context->sampler_states
1524 if (!*sampler_state)
1526 D3D11_SAMPLER_DESC sampler_desc;
1534 sampler_desc.AddressW = D3D11_TEXTURE_ADDRESS_CLAMP;
1535 sampler_desc.MipLODBias = 0.0f;
1536 sampler_desc.MaxAnisotropy = 0;
1538 sampler_desc.BorderColor[0] = 0.0f;
1539 sampler_desc.BorderColor[1] = 0.0f;
1540 sampler_desc.BorderColor[2] = 0.0f;
1541 sampler_desc.BorderColor[3] = 0.0f;
1542 sampler_desc.MinLOD = 0.0f;
1543 sampler_desc.MaxLOD = 0.0f;
1545 if (
FAILED(
hr = ID3D11Device1_CreateSamplerState(
context->d3d_device, &sampler_desc, sampler_state)))
1546 ERR(
"Failed to create sampler state, hr %#lx.\n",
hr);
1549 ID3D11DeviceContext_PSSetSamplers(d3d_context, brush_idx, 1, sampler_state);
1550 ID3D11DeviceContext_Release(d3d_context);
1554 unsigned int brush_idx)
1559 if (
FAILED(ID2D1Image_QueryInterface(brush->
u.
image.image, &IID_ID2D1Bitmap, (
void **)&image_bitmap)))
1561 FIXME(
"Only image brushes with bitmaps are supported.\n");
1568 brush->
u.
image.interpolation_mode, brush_idx);
1570 ID2D1Bitmap_Release(image_bitmap);
1575 switch (brush->
type)
1590 brush->
u.
bitmap.extend_mode_y, brush->
u.
bitmap.interpolation_mode, brush_idx);
1598 FIXME(
"Unhandled brush type %#x.\n", brush->
type);
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define STDMETHODCALLTYPE
D2D1_BITMAP_INTERPOLATION_MODE
@ D2D1_BITMAP_INTERPOLATION_MODE_LINEAR
@ D2D1_BITMAP_INTERPOLATION_MODE_NEAREST_NEIGHBOR
@ D2D1_EXTEND_MODE_MIRROR
@ D2D1_INTERPOLATION_MODE_HIGH_QUALITY_CUBIC
@ D2D1_INTERPOLATION_MODE_CUBIC
@ D2D1_INTERPOLATION_MODE_ANISOTROPIC
@ D2D1_INTERPOLATION_MODE_NEAREST_NEIGHBOR
@ D2D1_INTERPOLATION_MODE_LINEAR
@ D2D1_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR
static const char * debug_d2d_point_2f(const D2D1_POINT_2F *point)
static float d2d_point_dot(const D2D1_POINT_2F *p0, const D2D1_POINT_2F *p1)
@ D2D_SAMPLER_EXTEND_MODE_COUNT
@ D2D_SAMPLER_INTERPOLATION_MODE_COUNT
static const char * debug_d2d_rect_f(const D2D1_RECT_F *rect)
static D2D1_INTERPOLATION_MODE d2d1_1_interp_mode_from_d2d1(D2D1_BITMAP_INTERPOLATION_MODE mode)
static void d2d_point_set(D2D1_POINT_2F *dst, float x, float y)
static void d2d_point_transform(D2D1_POINT_2F *dst, const D2D1_MATRIX_3X2_F *matrix, float x, float y)
@ D3D11_FILTER_MIN_MAG_MIP_POINT
@ D3D11_FILTER_MIN_MAG_MIP_LINEAR
@ D3D11_SRV_DIMENSION_BUFFER
struct d2d_bitmap * unsafe_impl_from_ID2D1Bitmap(ID2D1Bitmap *iface)
static void STDMETHODCALLTYPE d2d_bitmap_brush_SetInterpolationMode(ID2D1BitmapBrush1 *iface, D2D1_BITMAP_INTERPOLATION_MODE mode)
static ULONG STDMETHODCALLTYPE d2d_image_brush_AddRef(ID2D1ImageBrush *iface)
static void STDMETHODCALLTYPE d2d_image_brush_SetExtendModeY(ID2D1ImageBrush *iface, D2D1_EXTEND_MODE mode)
static const struct ID2D1ImageBrushVtbl d2d_image_brush_vtbl
static void STDMETHODCALLTYPE d2d_image_brush_GetFactory(ID2D1ImageBrush *iface, ID2D1Factory **factory)
static HRESULT STDMETHODCALLTYPE d2d_solid_color_brush_QueryInterface(ID2D1SolidColorBrush *iface, REFIID iid, void **out)
static ULONG STDMETHODCALLTYPE d2d_gradient_AddRef(ID2D1GradientStopCollection *iface)
BOOL d2d_brush_fill_cb(const struct d2d_brush *brush, struct d2d_brush_cb *cb)
static D2D1_BITMAP_INTERPOLATION_MODE STDMETHODCALLTYPE d2d_bitmap_brush_GetInterpolationMode(ID2D1BitmapBrush1 *iface)
static float STDMETHODCALLTYPE d2d_linear_gradient_brush_GetOpacity(ID2D1LinearGradientBrush *iface)
static void STDMETHODCALLTYPE d2d_bitmap_brush_SetExtendModeX(ID2D1BitmapBrush1 *iface, D2D1_EXTEND_MODE mode)
static void STDMETHODCALLTYPE d2d_radial_gradient_brush_SetGradientOriginOffset(ID2D1RadialGradientBrush *iface, D2D1_POINT_2F offset)
static void STDMETHODCALLTYPE d2d_linear_gradient_brush_SetOpacity(ID2D1LinearGradientBrush *iface, float opacity)
static float STDMETHODCALLTYPE d2d_radial_gradient_brush_GetRadiusY(ID2D1RadialGradientBrush *iface)
static const struct ID2D1GradientStopCollectionVtbl d2d_gradient_vtbl
static void STDMETHODCALLTYPE d2d_bitmap_brush_SetTransform(ID2D1BitmapBrush1 *iface, const D2D1_MATRIX_3X2_F *transform)
static D2D1_COLOR_F *STDMETHODCALLTYPE d2d_solid_color_brush_GetColor(ID2D1SolidColorBrush *iface, D2D1_COLOR_F *color)
static void STDMETHODCALLTYPE d2d_radial_gradient_brush_SetRadiusY(ID2D1RadialGradientBrush *iface, float radius)
static ULONG STDMETHODCALLTYPE d2d_radial_gradient_brush_AddRef(ID2D1RadialGradientBrush *iface)
static void STDMETHODCALLTYPE d2d_image_brush_GetImage(ID2D1ImageBrush *iface, ID2D1Image **image)
static void d2d_brush_bind_bitmap(struct d2d_bitmap *bitmap, struct d2d_device_context *context, D2D1_EXTEND_MODE extend_mode_x, D2D1_EXTEND_MODE extend_mode_y, D2D1_INTERPOLATION_MODE interpolation_mode, unsigned int brush_idx)
static struct d2d_gradient * impl_from_ID2D1GradientStopCollection(ID2D1GradientStopCollection *iface)
static void STDMETHODCALLTYPE d2d_linear_gradient_brush_GetGradientStopCollection(ID2D1LinearGradientBrush *iface, ID2D1GradientStopCollection **gradient)
static D2D1_POINT_2F *STDMETHODCALLTYPE d2d_linear_gradient_brush_GetEndPoint(ID2D1LinearGradientBrush *iface, D2D1_POINT_2F *point)
static void STDMETHODCALLTYPE d2d_bitmap_brush_SetBitmap(ID2D1BitmapBrush1 *iface, ID2D1Bitmap *bitmap)
static void STDMETHODCALLTYPE d2d_bitmap_brush_GetTransform(ID2D1BitmapBrush1 *iface, D2D1_MATRIX_3X2_F *transform)
static void STDMETHODCALLTYPE d2d_solid_color_brush_SetOpacity(ID2D1SolidColorBrush *iface, float opacity)
static struct d2d_brush * impl_from_ID2D1RadialGradientBrush(ID2D1RadialGradientBrush *iface)
static HRESULT STDMETHODCALLTYPE d2d_radial_gradient_brush_QueryInterface(ID2D1RadialGradientBrush *iface, REFIID iid, void **out)
static D2D1_POINT_2F *STDMETHODCALLTYPE d2d_radial_gradient_brush_GetCenter(ID2D1RadialGradientBrush *iface, D2D1_POINT_2F *centre)
static D2D1_POINT_2F *STDMETHODCALLTYPE d2d_radial_gradient_brush_GetGradientOriginOffset(ID2D1RadialGradientBrush *iface, D2D1_POINT_2F *offset)
static UINT32 STDMETHODCALLTYPE d2d_gradient_GetGradientStopCount(ID2D1GradientStopCollection *iface)
static void STDMETHODCALLTYPE d2d_bitmap_brush_SetOpacity(ID2D1BitmapBrush1 *iface, float opacity)
HRESULT d2d_gradient_create(ID2D1Factory *factory, ID3D11Device1 *device, const D2D1_GRADIENT_STOP *stops, UINT32 stop_count, D2D1_GAMMA gamma, D2D1_EXTEND_MODE extend_mode, struct d2d_gradient **out)
HRESULT d2d_image_brush_create(ID2D1Factory *factory, ID2D1Image *image, const D2D1_IMAGE_BRUSH_PROPERTIES *image_brush_desc, const D2D1_BRUSH_PROPERTIES *brush_desc, struct d2d_brush **brush)
static void STDMETHODCALLTYPE d2d_image_brush_GetSourceRectangle(ID2D1ImageBrush *iface, D2D1_RECT_F *rect)
static const struct ID2D1BitmapBrush1Vtbl d2d_bitmap_brush_vtbl
static const struct ID2D1LinearGradientBrushVtbl d2d_linear_gradient_brush_vtbl
static struct d2d_brush * impl_from_ID2D1BitmapBrush1(ID2D1BitmapBrush1 *iface)
static ULONG STDMETHODCALLTYPE d2d_linear_gradient_brush_Release(ID2D1LinearGradientBrush *iface)
static ULONG STDMETHODCALLTYPE d2d_radial_gradient_brush_Release(ID2D1RadialGradientBrush *iface)
static ULONG STDMETHODCALLTYPE d2d_linear_gradient_brush_AddRef(ID2D1LinearGradientBrush *iface)
HRESULT d2d_solid_color_brush_create(ID2D1Factory *factory, const D2D1_COLOR_F *color, const D2D1_BRUSH_PROPERTIES *desc, struct d2d_brush **brush)
static void STDMETHODCALLTYPE d2d_image_brush_SetInterpolationMode(ID2D1ImageBrush *iface, D2D1_INTERPOLATION_MODE mode)
static ULONG STDMETHODCALLTYPE d2d_bitmap_brush_AddRef(ID2D1BitmapBrush1 *iface)
static D2D1_EXTEND_MODE STDMETHODCALLTYPE d2d_bitmap_brush_GetExtendModeX(ID2D1BitmapBrush1 *iface)
static void STDMETHODCALLTYPE d2d_image_brush_SetSourceRectangle(ID2D1ImageBrush *iface, const D2D1_RECT_F *rect)
static void STDMETHODCALLTYPE d2d_radial_gradient_brush_GetFactory(ID2D1RadialGradientBrush *iface, ID2D1Factory **factory)
static void STDMETHODCALLTYPE d2d_radial_gradient_brush_GetTransform(ID2D1RadialGradientBrush *iface, D2D1_MATRIX_3X2_F *transform)
static struct d2d_brush * impl_from_ID2D1ImageBrush(ID2D1ImageBrush *iface)
static void d2d_brush_init(struct d2d_brush *brush, ID2D1Factory *factory, enum d2d_brush_type type, const D2D1_BRUSH_PROPERTIES *desc, const struct ID2D1BrushVtbl *vtbl)
static void STDMETHODCALLTYPE d2d_radial_gradient_brush_SetCenter(ID2D1RadialGradientBrush *iface, D2D1_POINT_2F centre)
static HRESULT STDMETHODCALLTYPE d2d_bitmap_brush_QueryInterface(ID2D1BitmapBrush1 *iface, REFIID iid, void **out)
static void d2d_gradient_bind(struct d2d_gradient *gradient, ID3D11Device1 *device, unsigned int brush_idx)
static float STDMETHODCALLTYPE d2d_radial_gradient_brush_GetOpacity(ID2D1RadialGradientBrush *iface)
static void STDMETHODCALLTYPE d2d_bitmap_brush_SetInterpolationMode1(ID2D1BitmapBrush1 *iface, D2D1_INTERPOLATION_MODE mode)
static const struct ID2D1RadialGradientBrushVtbl d2d_radial_gradient_brush_vtbl
static void STDMETHODCALLTYPE d2d_bitmap_brush_SetExtendModeY(ID2D1BitmapBrush1 *iface, D2D1_EXTEND_MODE mode)
static float STDMETHODCALLTYPE d2d_solid_color_brush_GetOpacity(ID2D1SolidColorBrush *iface)
static void STDMETHODCALLTYPE d2d_gradient_GetGradientStops(ID2D1GradientStopCollection *iface, D2D1_GRADIENT_STOP *stops, UINT32 stop_count)
static ULONG STDMETHODCALLTYPE d2d_image_brush_Release(ID2D1ImageBrush *iface)
static void STDMETHODCALLTYPE d2d_radial_gradient_brush_SetRadiusX(ID2D1RadialGradientBrush *iface, float radius)
static ULONG STDMETHODCALLTYPE d2d_gradient_Release(ID2D1GradientStopCollection *iface)
static void STDMETHODCALLTYPE d2d_radial_gradient_brush_SetTransform(ID2D1RadialGradientBrush *iface, const D2D1_MATRIX_3X2_F *transform)
static HRESULT STDMETHODCALLTYPE d2d_gradient_QueryInterface(ID2D1GradientStopCollection *iface, REFIID iid, void **out)
static void STDMETHODCALLTYPE d2d_image_brush_SetExtendModeX(ID2D1ImageBrush *iface, D2D1_EXTEND_MODE mode)
static void STDMETHODCALLTYPE d2d_solid_color_brush_GetFactory(ID2D1SolidColorBrush *iface, ID2D1Factory **factory)
static void STDMETHODCALLTYPE d2d_gradient_GetFactory(ID2D1GradientStopCollection *iface, ID2D1Factory **factory)
static void STDMETHODCALLTYPE d2d_solid_color_brush_SetColor(ID2D1SolidColorBrush *iface, const D2D1_COLOR_F *color)
static const struct ID2D1SolidColorBrushVtbl d2d_solid_color_brush_vtbl
static void d2d_brush_bind_image(struct d2d_brush *brush, struct d2d_device_context *context, unsigned int brush_idx)
static void STDMETHODCALLTYPE d2d_radial_gradient_brush_GetGradientStopCollection(ID2D1RadialGradientBrush *iface, ID2D1GradientStopCollection **gradient)
static D2D1_EXTEND_MODE STDMETHODCALLTYPE d2d_image_brush_GetExtendModeY(ID2D1ImageBrush *iface)
static void STDMETHODCALLTYPE d2d_linear_gradient_brush_SetTransform(ID2D1LinearGradientBrush *iface, const D2D1_MATRIX_3X2_F *transform)
static void STDMETHODCALLTYPE d2d_solid_color_brush_GetTransform(ID2D1SolidColorBrush *iface, D2D1_MATRIX_3X2_F *transform)
static void STDMETHODCALLTYPE d2d_solid_color_brush_SetTransform(ID2D1SolidColorBrush *iface, const D2D1_MATRIX_3X2_F *transform)
static void STDMETHODCALLTYPE d2d_linear_gradient_brush_GetFactory(ID2D1LinearGradientBrush *iface, ID2D1Factory **factory)
static void STDMETHODCALLTYPE d2d_bitmap_brush_GetBitmap(ID2D1BitmapBrush1 *iface, ID2D1Bitmap **bitmap)
static D3D11_TEXTURE_ADDRESS_MODE texture_address_mode_from_extend_mode(D2D1_EXTEND_MODE mode)
static void d2d_brush_destroy(struct d2d_brush *brush)
static void STDMETHODCALLTYPE d2d_radial_gradient_brush_SetOpacity(ID2D1RadialGradientBrush *iface, float opacity)
static D2D1_EXTEND_MODE STDMETHODCALLTYPE d2d_gradient_GetExtendMode(ID2D1GradientStopCollection *iface)
static struct d2d_brush * impl_from_ID2D1SolidColorBrush(ID2D1SolidColorBrush *iface)
HRESULT d2d_linear_gradient_brush_create(ID2D1Factory *factory, const D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES *gradient_brush_desc, const D2D1_BRUSH_PROPERTIES *brush_desc, ID2D1GradientStopCollection *gradient, struct d2d_brush **brush)
static void STDMETHODCALLTYPE d2d_bitmap_brush_GetFactory(ID2D1BitmapBrush1 *iface, ID2D1Factory **factory)
static float STDMETHODCALLTYPE d2d_bitmap_brush_GetOpacity(ID2D1BitmapBrush1 *iface)
static void STDMETHODCALLTYPE d2d_linear_gradient_brush_SetStartPoint(ID2D1LinearGradientBrush *iface, D2D1_POINT_2F start_point)
static ULONG STDMETHODCALLTYPE d2d_bitmap_brush_Release(ID2D1BitmapBrush1 *iface)
static D2D1_INTERPOLATION_MODE STDMETHODCALLTYPE d2d_bitmap_brush_GetInterpolationMode1(ID2D1BitmapBrush1 *iface)
static HRESULT STDMETHODCALLTYPE d2d_image_brush_QueryInterface(ID2D1ImageBrush *iface, REFIID iid, void **out)
static void STDMETHODCALLTYPE d2d_linear_gradient_brush_SetEndPoint(ID2D1LinearGradientBrush *iface, D2D1_POINT_2F end_point)
static void STDMETHODCALLTYPE d2d_image_brush_SetOpacity(ID2D1ImageBrush *iface, float opacity)
static D2D1_POINT_2F *STDMETHODCALLTYPE d2d_linear_gradient_brush_GetStartPoint(ID2D1LinearGradientBrush *iface, D2D1_POINT_2F *point)
static struct d2d_brush * impl_from_ID2D1LinearGradientBrush(ID2D1LinearGradientBrush *iface)
static ULONG STDMETHODCALLTYPE d2d_solid_color_brush_AddRef(ID2D1SolidColorBrush *iface)
static void STDMETHODCALLTYPE d2d_linear_gradient_brush_GetTransform(ID2D1LinearGradientBrush *iface, D2D1_MATRIX_3X2_F *transform)
HRESULT d2d_bitmap_brush_create(ID2D1Factory *factory, ID2D1Bitmap *bitmap, const D2D1_BITMAP_BRUSH_PROPERTIES1 *bitmap_brush_desc, const D2D1_BRUSH_PROPERTIES *brush_desc, struct d2d_brush **brush)
struct d2d_brush * unsafe_impl_from_ID2D1Brush(ID2D1Brush *iface)
void d2d_brush_bind_resources(struct d2d_brush *brush, struct d2d_device_context *context, unsigned int brush_idx)
HRESULT d2d_radial_gradient_brush_create(ID2D1Factory *factory, const D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES *gradient_desc, const D2D1_BRUSH_PROPERTIES *brush_desc, ID2D1GradientStopCollection *gradient, struct d2d_brush **brush)
static struct d2d_gradient * unsafe_impl_from_ID2D1GradientStopCollection(ID2D1GradientStopCollection *iface)
static ULONG STDMETHODCALLTYPE d2d_solid_color_brush_Release(ID2D1SolidColorBrush *iface)
static void STDMETHODCALLTYPE d2d_image_brush_SetTransform(ID2D1ImageBrush *iface, const D2D1_MATRIX_3X2_F *transform)
static D2D1_EXTEND_MODE STDMETHODCALLTYPE d2d_image_brush_GetExtendModeX(ID2D1ImageBrush *iface)
static float STDMETHODCALLTYPE d2d_radial_gradient_brush_GetRadiusX(ID2D1RadialGradientBrush *iface)
static D2D1_INTERPOLATION_MODE STDMETHODCALLTYPE d2d_image_brush_GetInterpolationMode(ID2D1ImageBrush *iface)
static void STDMETHODCALLTYPE d2d_image_brush_SetImage(ID2D1ImageBrush *iface, ID2D1Image *image)
static D2D1_EXTEND_MODE STDMETHODCALLTYPE d2d_bitmap_brush_GetExtendModeY(ID2D1BitmapBrush1 *iface)
static D2D1_GAMMA STDMETHODCALLTYPE d2d_gradient_GetColorInterpolationGamma(ID2D1GradientStopCollection *iface)
static float STDMETHODCALLTYPE d2d_image_brush_GetOpacity(ID2D1ImageBrush *iface)
static void STDMETHODCALLTYPE d2d_image_brush_GetTransform(ID2D1ImageBrush *iface, D2D1_MATRIX_3X2_F *transform)
static HRESULT STDMETHODCALLTYPE d2d_linear_gradient_brush_QueryInterface(ID2D1LinearGradientBrush *iface, REFIID iid, void **out)
_ACRTIMP float __cdecl cosf(float)
_ACRTIMP float __cdecl sinf(float)
_ACRTIMP double __cdecl atan2(double, double)
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLuint GLenum GLenum transform
GLboolean GLboolean GLboolean b
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 * u
#define memcpy(s1, s2, n)
D3D11_SHADER_VARIABLE_DESC desc
#define IsEqualGUID(rguid1, rguid2)
D2D1_INTERPOLATION_MODE interpolationMode
D2D1_EXTEND_MODE extendModeY
D2D1_EXTEND_MODE extendModeX
D2D1_INTERPOLATION_MODE interpolationMode
D2D1_EXTEND_MODE extendModeX
D2D1_EXTEND_MODE extendModeY
D2D1_RECT_F sourceRectangle
D2D1_POINT_2F gradientOriginOffset
ID2D1Brush ID2D1Brush_iface
D2D1_MATRIX_3X2_F transform
struct d2d_brush::@234::@235 solid
struct d2d_gradient * gradient
struct d2d_brush::@234::@237 radial
struct d2d_brush::@234::@236 linear
struct d2d_bitmap * bitmap
D2D1_GRADIENT_STOP * stops
ID2D1GradientStopCollection ID2D1GradientStopCollection_iface
ID3D11ShaderResourceView * view
#define CONTAINING_RECORD(address, type, field)
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out