ReactOS 0.4.17-dev-934-g091855f
brush.c File Reference
#include "d2d1_private.h"
Include dependency graph for brush.c:

Go to the source code of this file.

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (d2d)
 
static struct d2d_gradient * impl_from_ID2D1GradientStopCollection (ID2D1GradientStopCollection *iface)
 
static HRESULT STDMETHODCALLTYPE d2d_gradient_QueryInterface (ID2D1GradientStopCollection *iface, REFIID iid, void **out)
 
static ULONG STDMETHODCALLTYPE d2d_gradient_AddRef (ID2D1GradientStopCollection *iface)
 
static ULONG STDMETHODCALLTYPE d2d_gradient_Release (ID2D1GradientStopCollection *iface)
 
static void STDMETHODCALLTYPE d2d_gradient_GetFactory (ID2D1GradientStopCollection *iface, ID2D1Factory **factory)
 
static UINT32 STDMETHODCALLTYPE d2d_gradient_GetGradientStopCount (ID2D1GradientStopCollection *iface)
 
static void STDMETHODCALLTYPE d2d_gradient_GetGradientStops (ID2D1GradientStopCollection *iface, D2D1_GRADIENT_STOP *stops, UINT32 stop_count)
 
static D2D1_GAMMA STDMETHODCALLTYPE d2d_gradient_GetColorInterpolationGamma (ID2D1GradientStopCollection *iface)
 
static D2D1_EXTEND_MODE STDMETHODCALLTYPE d2d_gradient_GetExtendMode (ID2D1GradientStopCollection *iface)
 
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)
 
static struct d2d_gradient * unsafe_impl_from_ID2D1GradientStopCollection (ID2D1GradientStopCollection *iface)
 
static void d2d_gradient_bind (struct d2d_gradient *gradient, ID3D11Device1 *device, unsigned int brush_idx)
 
static void d2d_brush_destroy (struct d2d_brush *brush)
 
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 struct d2d_brush * impl_from_ID2D1SolidColorBrush (ID2D1SolidColorBrush *iface)
 
static HRESULT STDMETHODCALLTYPE d2d_solid_color_brush_QueryInterface (ID2D1SolidColorBrush *iface, REFIID iid, void **out)
 
static ULONG STDMETHODCALLTYPE d2d_solid_color_brush_AddRef (ID2D1SolidColorBrush *iface)
 
static ULONG STDMETHODCALLTYPE d2d_solid_color_brush_Release (ID2D1SolidColorBrush *iface)
 
static void STDMETHODCALLTYPE d2d_solid_color_brush_GetFactory (ID2D1SolidColorBrush *iface, ID2D1Factory **factory)
 
static void STDMETHODCALLTYPE d2d_solid_color_brush_SetOpacity (ID2D1SolidColorBrush *iface, float opacity)
 
static void STDMETHODCALLTYPE d2d_solid_color_brush_SetTransform (ID2D1SolidColorBrush *iface, const D2D1_MATRIX_3X2_F *transform)
 
static float STDMETHODCALLTYPE d2d_solid_color_brush_GetOpacity (ID2D1SolidColorBrush *iface)
 
static void STDMETHODCALLTYPE d2d_solid_color_brush_GetTransform (ID2D1SolidColorBrush *iface, D2D1_MATRIX_3X2_F *transform)
 
static void STDMETHODCALLTYPE d2d_solid_color_brush_SetColor (ID2D1SolidColorBrush *iface, const D2D1_COLOR_F *color)
 
static D2D1_COLOR_F *STDMETHODCALLTYPE d2d_solid_color_brush_GetColor (ID2D1SolidColorBrush *iface, D2D1_COLOR_F *color)
 
HRESULT d2d_solid_color_brush_create (ID2D1Factory *factory, const D2D1_COLOR_F *color, const D2D1_BRUSH_PROPERTIES *desc, struct d2d_brush **brush)
 
static struct d2d_brush * impl_from_ID2D1LinearGradientBrush (ID2D1LinearGradientBrush *iface)
 
static HRESULT STDMETHODCALLTYPE d2d_linear_gradient_brush_QueryInterface (ID2D1LinearGradientBrush *iface, REFIID iid, void **out)
 
static ULONG STDMETHODCALLTYPE d2d_linear_gradient_brush_AddRef (ID2D1LinearGradientBrush *iface)
 
static ULONG STDMETHODCALLTYPE d2d_linear_gradient_brush_Release (ID2D1LinearGradientBrush *iface)
 
static void STDMETHODCALLTYPE d2d_linear_gradient_brush_GetFactory (ID2D1LinearGradientBrush *iface, ID2D1Factory **factory)
 
static void STDMETHODCALLTYPE d2d_linear_gradient_brush_SetOpacity (ID2D1LinearGradientBrush *iface, float opacity)
 
static void STDMETHODCALLTYPE d2d_linear_gradient_brush_SetTransform (ID2D1LinearGradientBrush *iface, const D2D1_MATRIX_3X2_F *transform)
 
static float STDMETHODCALLTYPE d2d_linear_gradient_brush_GetOpacity (ID2D1LinearGradientBrush *iface)
 
static void STDMETHODCALLTYPE d2d_linear_gradient_brush_GetTransform (ID2D1LinearGradientBrush *iface, D2D1_MATRIX_3X2_F *transform)
 
static void STDMETHODCALLTYPE d2d_linear_gradient_brush_SetStartPoint (ID2D1LinearGradientBrush *iface, D2D1_POINT_2F start_point)
 
static void STDMETHODCALLTYPE d2d_linear_gradient_brush_SetEndPoint (ID2D1LinearGradientBrush *iface, D2D1_POINT_2F end_point)
 
static D2D1_POINT_2F *STDMETHODCALLTYPE d2d_linear_gradient_brush_GetStartPoint (ID2D1LinearGradientBrush *iface, D2D1_POINT_2F *point)
 
static D2D1_POINT_2F *STDMETHODCALLTYPE d2d_linear_gradient_brush_GetEndPoint (ID2D1LinearGradientBrush *iface, D2D1_POINT_2F *point)
 
static void STDMETHODCALLTYPE d2d_linear_gradient_brush_GetGradientStopCollection (ID2D1LinearGradientBrush *iface, ID2D1GradientStopCollection **gradient)
 
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 struct d2d_brush * impl_from_ID2D1RadialGradientBrush (ID2D1RadialGradientBrush *iface)
 
static HRESULT STDMETHODCALLTYPE d2d_radial_gradient_brush_QueryInterface (ID2D1RadialGradientBrush *iface, REFIID iid, void **out)
 
static ULONG STDMETHODCALLTYPE d2d_radial_gradient_brush_AddRef (ID2D1RadialGradientBrush *iface)
 
static ULONG STDMETHODCALLTYPE d2d_radial_gradient_brush_Release (ID2D1RadialGradientBrush *iface)
 
static void STDMETHODCALLTYPE d2d_radial_gradient_brush_GetFactory (ID2D1RadialGradientBrush *iface, ID2D1Factory **factory)
 
static void STDMETHODCALLTYPE d2d_radial_gradient_brush_SetOpacity (ID2D1RadialGradientBrush *iface, float opacity)
 
static void STDMETHODCALLTYPE d2d_radial_gradient_brush_SetTransform (ID2D1RadialGradientBrush *iface, const D2D1_MATRIX_3X2_F *transform)
 
static float STDMETHODCALLTYPE d2d_radial_gradient_brush_GetOpacity (ID2D1RadialGradientBrush *iface)
 
static void STDMETHODCALLTYPE d2d_radial_gradient_brush_GetTransform (ID2D1RadialGradientBrush *iface, D2D1_MATRIX_3X2_F *transform)
 
static void STDMETHODCALLTYPE d2d_radial_gradient_brush_SetCenter (ID2D1RadialGradientBrush *iface, D2D1_POINT_2F centre)
 
static void STDMETHODCALLTYPE d2d_radial_gradient_brush_SetGradientOriginOffset (ID2D1RadialGradientBrush *iface, D2D1_POINT_2F offset)
 
static void STDMETHODCALLTYPE d2d_radial_gradient_brush_SetRadiusX (ID2D1RadialGradientBrush *iface, float radius)
 
static void STDMETHODCALLTYPE d2d_radial_gradient_brush_SetRadiusY (ID2D1RadialGradientBrush *iface, float radius)
 
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 float STDMETHODCALLTYPE d2d_radial_gradient_brush_GetRadiusX (ID2D1RadialGradientBrush *iface)
 
static float STDMETHODCALLTYPE d2d_radial_gradient_brush_GetRadiusY (ID2D1RadialGradientBrush *iface)
 
static void STDMETHODCALLTYPE d2d_radial_gradient_brush_GetGradientStopCollection (ID2D1RadialGradientBrush *iface, ID2D1GradientStopCollection **gradient)
 
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_brush * impl_from_ID2D1BitmapBrush1 (ID2D1BitmapBrush1 *iface)
 
static HRESULT STDMETHODCALLTYPE d2d_bitmap_brush_QueryInterface (ID2D1BitmapBrush1 *iface, REFIID iid, void **out)
 
static ULONG STDMETHODCALLTYPE d2d_bitmap_brush_AddRef (ID2D1BitmapBrush1 *iface)
 
static ULONG STDMETHODCALLTYPE d2d_bitmap_brush_Release (ID2D1BitmapBrush1 *iface)
 
static void STDMETHODCALLTYPE d2d_bitmap_brush_GetFactory (ID2D1BitmapBrush1 *iface, ID2D1Factory **factory)
 
static void STDMETHODCALLTYPE d2d_bitmap_brush_SetOpacity (ID2D1BitmapBrush1 *iface, float opacity)
 
static void STDMETHODCALLTYPE d2d_bitmap_brush_SetTransform (ID2D1BitmapBrush1 *iface, const D2D1_MATRIX_3X2_F *transform)
 
static float STDMETHODCALLTYPE d2d_bitmap_brush_GetOpacity (ID2D1BitmapBrush1 *iface)
 
static void STDMETHODCALLTYPE d2d_bitmap_brush_GetTransform (ID2D1BitmapBrush1 *iface, D2D1_MATRIX_3X2_F *transform)
 
static void STDMETHODCALLTYPE d2d_bitmap_brush_SetExtendModeX (ID2D1BitmapBrush1 *iface, D2D1_EXTEND_MODE mode)
 
static void STDMETHODCALLTYPE d2d_bitmap_brush_SetExtendModeY (ID2D1BitmapBrush1 *iface, D2D1_EXTEND_MODE mode)
 
static void STDMETHODCALLTYPE d2d_bitmap_brush_SetInterpolationMode (ID2D1BitmapBrush1 *iface, D2D1_BITMAP_INTERPOLATION_MODE mode)
 
static void STDMETHODCALLTYPE d2d_bitmap_brush_SetBitmap (ID2D1BitmapBrush1 *iface, ID2D1Bitmap *bitmap)
 
static D2D1_EXTEND_MODE STDMETHODCALLTYPE d2d_bitmap_brush_GetExtendModeX (ID2D1BitmapBrush1 *iface)
 
static D2D1_EXTEND_MODE STDMETHODCALLTYPE d2d_bitmap_brush_GetExtendModeY (ID2D1BitmapBrush1 *iface)
 
static D2D1_BITMAP_INTERPOLATION_MODE STDMETHODCALLTYPE d2d_bitmap_brush_GetInterpolationMode (ID2D1BitmapBrush1 *iface)
 
static void STDMETHODCALLTYPE d2d_bitmap_brush_GetBitmap (ID2D1BitmapBrush1 *iface, ID2D1Bitmap **bitmap)
 
static void STDMETHODCALLTYPE d2d_bitmap_brush_SetInterpolationMode1 (ID2D1BitmapBrush1 *iface, D2D1_INTERPOLATION_MODE mode)
 
static D2D1_INTERPOLATION_MODE STDMETHODCALLTYPE d2d_bitmap_brush_GetInterpolationMode1 (ID2D1BitmapBrush1 *iface)
 
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)
 
static struct d2d_brush * impl_from_ID2D1ImageBrush (ID2D1ImageBrush *iface)
 
static HRESULT STDMETHODCALLTYPE d2d_image_brush_QueryInterface (ID2D1ImageBrush *iface, REFIID iid, void **out)
 
static ULONG STDMETHODCALLTYPE d2d_image_brush_AddRef (ID2D1ImageBrush *iface)
 
static ULONG STDMETHODCALLTYPE d2d_image_brush_Release (ID2D1ImageBrush *iface)
 
static void STDMETHODCALLTYPE d2d_image_brush_GetFactory (ID2D1ImageBrush *iface, ID2D1Factory **factory)
 
static void STDMETHODCALLTYPE d2d_image_brush_SetOpacity (ID2D1ImageBrush *iface, float opacity)
 
static void STDMETHODCALLTYPE d2d_image_brush_SetTransform (ID2D1ImageBrush *iface, const D2D1_MATRIX_3X2_F *transform)
 
static float STDMETHODCALLTYPE d2d_image_brush_GetOpacity (ID2D1ImageBrush *iface)
 
static void STDMETHODCALLTYPE d2d_image_brush_GetTransform (ID2D1ImageBrush *iface, D2D1_MATRIX_3X2_F *transform)
 
static void STDMETHODCALLTYPE d2d_image_brush_SetImage (ID2D1ImageBrush *iface, ID2D1Image *image)
 
static void STDMETHODCALLTYPE d2d_image_brush_SetExtendModeX (ID2D1ImageBrush *iface, D2D1_EXTEND_MODE mode)
 
static void STDMETHODCALLTYPE d2d_image_brush_SetExtendModeY (ID2D1ImageBrush *iface, D2D1_EXTEND_MODE mode)
 
static void STDMETHODCALLTYPE d2d_image_brush_SetInterpolationMode (ID2D1ImageBrush *iface, D2D1_INTERPOLATION_MODE mode)
 
static void STDMETHODCALLTYPE d2d_image_brush_SetSourceRectangle (ID2D1ImageBrush *iface, const D2D1_RECT_F *rect)
 
static void STDMETHODCALLTYPE d2d_image_brush_GetImage (ID2D1ImageBrush *iface, ID2D1Image **image)
 
static D2D1_EXTEND_MODE STDMETHODCALLTYPE d2d_image_brush_GetExtendModeX (ID2D1ImageBrush *iface)
 
static D2D1_EXTEND_MODE STDMETHODCALLTYPE d2d_image_brush_GetExtendModeY (ID2D1ImageBrush *iface)
 
static D2D1_INTERPOLATION_MODE STDMETHODCALLTYPE d2d_image_brush_GetInterpolationMode (ID2D1ImageBrush *iface)
 
static void STDMETHODCALLTYPE d2d_image_brush_GetSourceRectangle (ID2D1ImageBrush *iface, D2D1_RECT_F *rect)
 
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)
 
struct d2d_brush * unsafe_impl_from_ID2D1Brush (ID2D1Brush *iface)
 
static D3D11_TEXTURE_ADDRESS_MODE texture_address_mode_from_extend_mode (D2D1_EXTEND_MODE mode)
 
BOOL d2d_brush_fill_cb (const struct d2d_brush *brush, struct d2d_brush_cb *cb)
 
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 void d2d_brush_bind_image (struct d2d_brush *brush, struct d2d_device_context *context, unsigned int brush_idx)
 
void d2d_brush_bind_resources (struct d2d_brush *brush, struct d2d_device_context *context, unsigned int brush_idx)
 

Variables

static const struct ID2D1GradientStopCollectionVtbl d2d_gradient_vtbl
 
static const struct ID2D1SolidColorBrushVtbl d2d_solid_color_brush_vtbl
 
static const struct ID2D1LinearGradientBrushVtbl d2d_linear_gradient_brush_vtbl
 
static const struct ID2D1RadialGradientBrushVtbl d2d_radial_gradient_brush_vtbl
 
static const struct ID2D1BitmapBrush1Vtbl d2d_bitmap_brush_vtbl
 
static const struct ID2D1ImageBrushVtbl d2d_image_brush_vtbl
 

Function Documentation

◆ d2d_bitmap_brush_AddRef()

static ULONG STDMETHODCALLTYPE d2d_bitmap_brush_AddRef ( ID2D1BitmapBrush1 *  iface)
static

Definition at line 849 of file brush.c.

850{
851 struct d2d_brush *brush = impl_from_ID2D1BitmapBrush1(iface);
853
854 TRACE("%p increasing refcount to %lu.\n", iface, refcount);
855
856 return refcount;
857}
#define InterlockedIncrement
Definition: armddk.h:53
static struct d2d_brush * impl_from_ID2D1BitmapBrush1(ID2D1BitmapBrush1 *iface)
Definition: brush.c:822
#define TRACE(s)
Definition: solgame.cpp:4
LONG refcount
Definition: d2d1_private.h:324
uint32_t ULONG
Definition: typedefs.h:59

◆ d2d_bitmap_brush_create()

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 
)

Definition at line 1076 of file brush.c.

1079{
1080 if (!(*brush = calloc(1, sizeof(**brush))))
1081 return E_OUTOFMEMORY;
1082
1084 brush_desc, (ID2D1BrushVtbl *)&d2d_bitmap_brush_vtbl);
1085 if (((*brush)->u.bitmap.bitmap = unsafe_impl_from_ID2D1Bitmap(bitmap)))
1086 ID2D1Bitmap1_AddRef(&(*brush)->u.bitmap.bitmap->ID2D1Bitmap1_iface);
1087 if (bitmap_brush_desc)
1088 {
1089 (*brush)->u.bitmap.extend_mode_x = bitmap_brush_desc->extendModeX;
1090 (*brush)->u.bitmap.extend_mode_y = bitmap_brush_desc->extendModeY;
1091 (*brush)->u.bitmap.interpolation_mode = bitmap_brush_desc->interpolationMode;
1092 }
1093 else
1094 {
1095 (*brush)->u.bitmap.extend_mode_x = D2D1_EXTEND_MODE_CLAMP;
1096 (*brush)->u.bitmap.extend_mode_y = D2D1_EXTEND_MODE_CLAMP;
1097 (*brush)->u.bitmap.interpolation_mode = D2D1_INTERPOLATION_MODE_LINEAR;
1098 }
1099
1100 TRACE("Created brush %p.\n", *brush);
1101 return S_OK;
1102}
@ D2D1_EXTEND_MODE_CLAMP
Definition: d2d1.idl:199
@ D2D1_INTERPOLATION_MODE_LINEAR
Definition: d2d1_1.idl:126
@ D2D_BRUSH_TYPE_BITMAP
Definition: d2d1_private.h:44
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
struct d2d_bitmap * unsafe_impl_from_ID2D1Bitmap(ID2D1Bitmap *iface)
Definition: bitmap.c:769
static const struct ID2D1BitmapBrush1Vtbl d2d_bitmap_brush_vtbl
Definition: brush.c:1054
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)
Definition: brush.c:242
#define S_OK
Definition: intsafe.h:52
#define calloc
Definition: rosglue.h:14
D2D1_INTERPOLATION_MODE interpolationMode
Definition: d2d1_1.idl:285
D2D1_EXTEND_MODE extendModeY
Definition: d2d1_1.idl:284
D2D1_EXTEND_MODE extendModeX
Definition: d2d1_1.idl:283
Definition: uimain.c:89
Definition: main.c:439

Referenced by d2d_device_context_CreateBitmapBrush(), d2d_device_context_draw_bitmap(), and d2d_device_context_ID2D1DeviceContext_CreateBitmapBrush().

◆ d2d_bitmap_brush_GetBitmap()

static void STDMETHODCALLTYPE d2d_bitmap_brush_GetBitmap ( ID2D1BitmapBrush1 *  iface,
ID2D1Bitmap **  bitmap 
)
static

Definition at line 1009 of file brush.c.

1010{
1011 struct d2d_brush *brush = impl_from_ID2D1BitmapBrush1(iface);
1012
1013 TRACE("iface %p, bitmap %p.\n", iface, bitmap);
1014
1015 if ((*bitmap = (ID2D1Bitmap *)&brush->u.bitmap.bitmap->ID2D1Bitmap1_iface))
1016 ID2D1Bitmap_AddRef(*bitmap);
1017}
union d2d_brush::@234 u
struct d2d_bitmap * bitmap
Definition: d2d1_private.h:352

◆ d2d_bitmap_brush_GetExtendModeX()

static D2D1_EXTEND_MODE STDMETHODCALLTYPE d2d_bitmap_brush_GetExtendModeX ( ID2D1BitmapBrush1 *  iface)
static

Definition at line 975 of file brush.c.

976{
977 struct d2d_brush *brush = impl_from_ID2D1BitmapBrush1(iface);
978
979 TRACE("iface %p.\n", iface);
980
981 return brush->u.bitmap.extend_mode_x;
982}

◆ d2d_bitmap_brush_GetExtendModeY()

static D2D1_EXTEND_MODE STDMETHODCALLTYPE d2d_bitmap_brush_GetExtendModeY ( ID2D1BitmapBrush1 *  iface)
static

Definition at line 984 of file brush.c.

985{
986 struct d2d_brush *brush = impl_from_ID2D1BitmapBrush1(iface);
987
988 TRACE("iface %p.\n", iface);
989
990 return brush->u.bitmap.extend_mode_y;
991}

◆ d2d_bitmap_brush_GetFactory()

static void STDMETHODCALLTYPE d2d_bitmap_brush_GetFactory ( ID2D1BitmapBrush1 *  iface,
ID2D1Factory **  factory 
)
static

Definition at line 876 of file brush.c.

878{
879 struct d2d_brush *brush = impl_from_ID2D1BitmapBrush1(iface);
880
881 TRACE("iface %p, factory %p.\n", iface, factory);
882
883 ID2D1Factory_AddRef(*factory = brush->factory);
884}
ID2D1Factory * factory
Definition: d2d1_private.h:326

◆ d2d_bitmap_brush_GetInterpolationMode()

static D2D1_BITMAP_INTERPOLATION_MODE STDMETHODCALLTYPE d2d_bitmap_brush_GetInterpolationMode ( ID2D1BitmapBrush1 *  iface)
static

Definition at line 993 of file brush.c.

994{
995 struct d2d_brush *brush = impl_from_ID2D1BitmapBrush1(iface);
996
997 TRACE("iface %p.\n", iface);
998
999 switch (brush->u.bitmap.interpolation_mode)
1000 {
1004 default:
1006 }
1007}
@ D2D1_BITMAP_INTERPOLATION_MODE_LINEAR
Definition: d2d1.idl:208
@ D2D1_BITMAP_INTERPOLATION_MODE_NEAREST_NEIGHBOR
Definition: d2d1.idl:207
@ D2D1_INTERPOLATION_MODE_NEAREST_NEIGHBOR
Definition: d2d1_1.idl:125

◆ d2d_bitmap_brush_GetInterpolationMode1()

static D2D1_INTERPOLATION_MODE STDMETHODCALLTYPE d2d_bitmap_brush_GetInterpolationMode1 ( ID2D1BitmapBrush1 *  iface)
static

Definition at line 1045 of file brush.c.

1046{
1047 struct d2d_brush *brush = impl_from_ID2D1BitmapBrush1(iface);
1048
1049 TRACE("iface %p.\n", iface);
1050
1051 return brush->u.bitmap.interpolation_mode;
1052}

◆ d2d_bitmap_brush_GetOpacity()

static float STDMETHODCALLTYPE d2d_bitmap_brush_GetOpacity ( ID2D1BitmapBrush1 *  iface)
static

Definition at line 905 of file brush.c.

906{
907 struct d2d_brush *brush = impl_from_ID2D1BitmapBrush1(iface);
908
909 TRACE("iface %p.\n", iface);
910
911 return brush->opacity;
912}
float opacity
Definition: d2d1_private.h:327

◆ d2d_bitmap_brush_GetTransform()

static void STDMETHODCALLTYPE d2d_bitmap_brush_GetTransform ( ID2D1BitmapBrush1 *  iface,
D2D1_MATRIX_3X2_F *  transform 
)
static

Definition at line 914 of file brush.c.

916{
917 struct d2d_brush *brush = impl_from_ID2D1BitmapBrush1(iface);
918
919 TRACE("iface %p, transform %p.\n", iface, transform);
920
921 *transform = brush->transform;
922}
GLuint GLenum GLenum transform
Definition: glext.h:9407
D2D1_MATRIX_3X2_F transform
Definition: d2d1_private.h:328

◆ d2d_bitmap_brush_QueryInterface()

static HRESULT STDMETHODCALLTYPE d2d_bitmap_brush_QueryInterface ( ID2D1BitmapBrush1 *  iface,
REFIID  iid,
void **  out 
)
static

Definition at line 827 of file brush.c.

829{
830 TRACE("iface %p, iid %s, out %p.\n", iface, debugstr_guid(iid), out);
831
832 if (IsEqualGUID(iid, &IID_ID2D1BitmapBrush1)
833 || IsEqualGUID(iid, &IID_ID2D1BitmapBrush)
834 || IsEqualGUID(iid, &IID_ID2D1Brush)
835 || IsEqualGUID(iid, &IID_ID2D1Resource)
836 || IsEqualGUID(iid, &IID_IUnknown))
837 {
838 ID2D1BitmapBrush1_AddRef(iface);
839 *out = iface;
840 return S_OK;
841 }
842
843 WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid));
844
845 *out = NULL;
846 return E_NOINTERFACE;
847}
#define WARN(fmt,...)
Definition: precomp.h:61
const GUID IID_IUnknown
#define NULL
Definition: types.h:112
#define debugstr_guid
Definition: kernel32.h:35
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383
#define E_NOINTERFACE
Definition: winerror.h:3479

◆ d2d_bitmap_brush_Release()

static ULONG STDMETHODCALLTYPE d2d_bitmap_brush_Release ( ID2D1BitmapBrush1 *  iface)
static

Definition at line 859 of file brush.c.

860{
861 struct d2d_brush *brush = impl_from_ID2D1BitmapBrush1(iface);
863
864 TRACE("%p decreasing refcount to %lu.\n", iface, refcount);
865
866 if (!refcount)
867 {
868 if (brush->u.bitmap.bitmap)
869 ID2D1Bitmap1_Release(&brush->u.bitmap.bitmap->ID2D1Bitmap1_iface);
870 d2d_brush_destroy(brush);
871 }
872
873 return refcount;
874}
#define InterlockedDecrement
Definition: armddk.h:52
static void d2d_brush_destroy(struct d2d_brush *brush)
Definition: brush.c:236

◆ d2d_bitmap_brush_SetBitmap()

static void STDMETHODCALLTYPE d2d_bitmap_brush_SetBitmap ( ID2D1BitmapBrush1 *  iface,
ID2D1Bitmap *  bitmap 
)
static

Definition at line 962 of file brush.c.

963{
964 struct d2d_brush *brush = impl_from_ID2D1BitmapBrush1(iface);
965
966 TRACE("iface %p, bitmap %p.\n", iface, bitmap);
967
968 if (bitmap)
969 ID2D1Bitmap_AddRef(bitmap);
970 if (brush->u.bitmap.bitmap)
971 ID2D1Bitmap1_Release(&brush->u.bitmap.bitmap->ID2D1Bitmap1_iface);
973}

◆ d2d_bitmap_brush_SetExtendModeX()

static void STDMETHODCALLTYPE d2d_bitmap_brush_SetExtendModeX ( ID2D1BitmapBrush1 *  iface,
D2D1_EXTEND_MODE  mode 
)
static

Definition at line 924 of file brush.c.

925{
926 struct d2d_brush *brush = impl_from_ID2D1BitmapBrush1(iface);
927
928 TRACE("iface %p, mode %#x.\n", iface, mode);
929
930 brush->u.bitmap.extend_mode_x = mode;
931}
GLenum mode
Definition: glext.h:6217

◆ d2d_bitmap_brush_SetExtendModeY()

static void STDMETHODCALLTYPE d2d_bitmap_brush_SetExtendModeY ( ID2D1BitmapBrush1 *  iface,
D2D1_EXTEND_MODE  mode 
)
static

Definition at line 933 of file brush.c.

934{
935 struct d2d_brush *brush = impl_from_ID2D1BitmapBrush1(iface);
936
937 TRACE("iface %p, mode %#x.\n", iface, mode);
938
939 brush->u.bitmap.extend_mode_y = mode;
940}

◆ d2d_bitmap_brush_SetInterpolationMode()

static void STDMETHODCALLTYPE d2d_bitmap_brush_SetInterpolationMode ( ID2D1BitmapBrush1 *  iface,
D2D1_BITMAP_INTERPOLATION_MODE  mode 
)
static

Definition at line 942 of file brush.c.

944{
945 struct d2d_brush *brush = impl_from_ID2D1BitmapBrush1(iface);
946
947 TRACE("iface %p, mode %#x.\n", iface, mode);
948
949 switch (mode)
950 {
953 break;
954 default:
955 WARN("Unknown interpolation mode %#x.\n", mode);
956 return;
957 }
958
959 brush->u.bitmap.interpolation_mode = d2d1_1_interp_mode_from_d2d1(mode);
960}
static D2D1_INTERPOLATION_MODE d2d1_1_interp_mode_from_d2d1(D2D1_BITMAP_INTERPOLATION_MODE mode)
Definition: d2d1_private.h:981

◆ d2d_bitmap_brush_SetInterpolationMode1()

static void STDMETHODCALLTYPE d2d_bitmap_brush_SetInterpolationMode1 ( ID2D1BitmapBrush1 *  iface,
D2D1_INTERPOLATION_MODE  mode 
)
static

Definition at line 1019 of file brush.c.

1021{
1022 struct d2d_brush *brush = impl_from_ID2D1BitmapBrush1(iface);
1023
1024 TRACE("iface %p, mode %#x.\n", iface, mode);
1025
1026 switch (mode)
1027 {
1030 break;
1035 FIXME("Unhandled interpolation mode %#x.\n", mode);
1036 break;
1037 default:
1038 WARN("Unknown interpolation mode %#x.\n", mode);
1039 return;
1040 }
1041
1042 brush->u.bitmap.interpolation_mode = mode;
1043}
#define FIXME(fmt,...)
Definition: precomp.h:53
@ D2D1_INTERPOLATION_MODE_HIGH_QUALITY_CUBIC
Definition: d2d1_1.idl:130
@ D2D1_INTERPOLATION_MODE_CUBIC
Definition: d2d1_1.idl:127
@ D2D1_INTERPOLATION_MODE_ANISOTROPIC
Definition: d2d1_1.idl:129
@ D2D1_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR
Definition: d2d1_1.idl:128

◆ d2d_bitmap_brush_SetOpacity()

static void STDMETHODCALLTYPE d2d_bitmap_brush_SetOpacity ( ID2D1BitmapBrush1 *  iface,
float  opacity 
)
static

Definition at line 886 of file brush.c.

887{
888 struct d2d_brush *brush = impl_from_ID2D1BitmapBrush1(iface);
889
890 TRACE("iface %p, opacity %.8e.\n", iface, opacity);
891
892 brush->opacity = opacity;
893}

◆ d2d_bitmap_brush_SetTransform()

static void STDMETHODCALLTYPE d2d_bitmap_brush_SetTransform ( ID2D1BitmapBrush1 *  iface,
const D2D1_MATRIX_3X2_F *  transform 
)
static

Definition at line 895 of file brush.c.

897{
898 struct d2d_brush *brush = impl_from_ID2D1BitmapBrush1(iface);
899
900 TRACE("iface %p, transform %p.\n", iface, transform);
901
902 brush->transform = *transform;
903}

◆ d2d_brush_bind_bitmap()

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

Definition at line 1508 of file brush.c.

1511{
1512 ID3D11SamplerState **sampler_state;
1513 ID3D11DeviceContext *d3d_context;
1514 HRESULT hr;
1515
1516 ID3D11Device1_GetImmediateContext(context->d3d_device, &d3d_context);
1517 ID3D11DeviceContext_PSSetShaderResources(d3d_context, brush_idx, 1, &bitmap->srv);
1518
1519 sampler_state = &context->sampler_states
1520 [interpolation_mode % D2D_SAMPLER_INTERPOLATION_MODE_COUNT]
1521 [extend_mode_x % D2D_SAMPLER_EXTEND_MODE_COUNT]
1522 [extend_mode_y % D2D_SAMPLER_EXTEND_MODE_COUNT];
1523
1524 if (!*sampler_state)
1525 {
1526 D3D11_SAMPLER_DESC sampler_desc;
1527
1528 if (interpolation_mode == D2D1_INTERPOLATION_MODE_NEAREST_NEIGHBOR)
1529 sampler_desc.Filter = D3D11_FILTER_MIN_MAG_MIP_POINT;
1530 else
1531 sampler_desc.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR;
1532 sampler_desc.AddressU = texture_address_mode_from_extend_mode(extend_mode_x);
1533 sampler_desc.AddressV = texture_address_mode_from_extend_mode(extend_mode_y);
1534 sampler_desc.AddressW = D3D11_TEXTURE_ADDRESS_CLAMP;
1535 sampler_desc.MipLODBias = 0.0f;
1536 sampler_desc.MaxAnisotropy = 0;
1537 sampler_desc.ComparisonFunc = D3D11_COMPARISON_NEVER;
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;
1544
1545 if (FAILED(hr = ID3D11Device1_CreateSamplerState(context->d3d_device, &sampler_desc, sampler_state)))
1546 ERR("Failed to create sampler state, hr %#lx.\n", hr);
1547 }
1548
1549 ID3D11DeviceContext_PSSetSamplers(d3d_context, brush_idx, 1, sampler_state);
1550 ID3D11DeviceContext_Release(d3d_context);
1551}
#define ERR(fmt,...)
Definition: precomp.h:57
@ D2D_SAMPLER_EXTEND_MODE_COUNT
Definition: d2d1_private.h:152
@ D2D_SAMPLER_INTERPOLATION_MODE_COUNT
Definition: d2d1_private.h:151
@ D3D11_FILTER_MIN_MAG_MIP_POINT
Definition: d3d11.idl:895
@ D3D11_FILTER_MIN_MAG_MIP_LINEAR
Definition: d3d11.idl:902
@ D3D11_COMPARISON_NEVER
Definition: d3d11.idl:587
HRESULT hr
Definition: delayimp.cpp:582
static D3D11_TEXTURE_ADDRESS_MODE texture_address_mode_from_extend_mode(D2D1_EXTEND_MODE mode)
Definition: brush.c:1356
#define FAILED(hr)
Definition: intsafe.h:51
Definition: http.c:7252

Referenced by d2d_brush_bind_image(), and d2d_brush_bind_resources().

◆ d2d_brush_bind_image()

static void d2d_brush_bind_image ( struct d2d_brush *  brush,
struct d2d_device_context *  context,
unsigned int  brush_idx 
)
static

Definition at line 1553 of file brush.c.

1555{
1556 ID2D1Bitmap *image_bitmap;
1557 struct d2d_bitmap *bitmap;
1558
1559 if (FAILED(ID2D1Image_QueryInterface(brush->u.image.image, &IID_ID2D1Bitmap, (void **)&image_bitmap)))
1560 {
1561 FIXME("Only image brushes with bitmaps are supported.\n");
1562 return;
1563 }
1564
1565 bitmap = unsafe_impl_from_ID2D1Bitmap(image_bitmap);
1566
1567 d2d_brush_bind_bitmap(bitmap, context, brush->u.image.extend_mode_x, brush->u.image.extend_mode_y,
1568 brush->u.image.interpolation_mode, brush_idx);
1569
1570 ID2D1Bitmap_Release(image_bitmap);
1571}
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)
Definition: brush.c:1508
ID2D1Image * image
Definition: d2d1_private.h:359

Referenced by d2d_brush_bind_resources().

◆ d2d_brush_bind_resources()

void d2d_brush_bind_resources ( struct d2d_brush *  brush,
struct d2d_device_context *  context,
unsigned int  brush_idx 
)

Definition at line 1573 of file brush.c.

1574{
1575 switch (brush->type)
1576 {
1578 break;
1579
1581 d2d_gradient_bind(brush->u.linear.gradient, context->d3d_device, brush_idx);
1582 break;
1583
1585 d2d_gradient_bind(brush->u.radial.gradient, context->d3d_device, brush_idx);
1586 break;
1587
1589 d2d_brush_bind_bitmap(brush->u.bitmap.bitmap, context, brush->u.bitmap.extend_mode_x,
1590 brush->u.bitmap.extend_mode_y, brush->u.bitmap.interpolation_mode, brush_idx);
1591 break;
1592
1594 d2d_brush_bind_image(brush, context, brush_idx);
1595 break;
1596
1597 default:
1598 FIXME("Unhandled brush type %#x.\n", brush->type);
1599 break;
1600 }
1601}
@ D2D_BRUSH_TYPE_SOLID
Definition: d2d1_private.h:41
@ D2D_BRUSH_TYPE_RADIAL
Definition: d2d1_private.h:43
@ D2D_BRUSH_TYPE_LINEAR
Definition: d2d1_private.h:42
@ D2D_BRUSH_TYPE_IMAGE
Definition: d2d1_private.h:45
static void d2d_gradient_bind(struct d2d_gradient *gradient, ID3D11Device1 *device, unsigned int brush_idx)
Definition: brush.c:228
static void d2d_brush_bind_image(struct d2d_brush *brush, struct d2d_device_context *context, unsigned int brush_idx)
Definition: brush.c:1553
enum d2d_brush_type type
Definition: d2d1_private.h:330
struct d2d_brush::@234::@237 radial
struct d2d_brush::@234::@236 linear

Referenced by d2d_device_context_draw().

◆ d2d_brush_destroy()

static void d2d_brush_destroy ( struct d2d_brush *  brush)
static

Definition at line 236 of file brush.c.

237{
238 ID2D1Factory_Release(brush->factory);
239 free(brush);
240}
#define free
Definition: debug_ros.c:5

Referenced by d2d_bitmap_brush_Release(), d2d_image_brush_Release(), d2d_linear_gradient_brush_Release(), d2d_radial_gradient_brush_Release(), and d2d_solid_color_brush_Release().

◆ d2d_brush_fill_cb()

BOOL d2d_brush_fill_cb ( const struct d2d_brush *  brush,
struct d2d_brush_cb *  cb 
)

Definition at line 1372 of file brush.c.

1373{
1374 float theta, sin_theta, cos_theta;
1375 float dpi_scale, d, s1, s2, t, u;
1376 struct d2d_bitmap *bitmap;
1377 D2D1_POINT_2F v_p, v_q;
1378 D2D1_COLOR_F *colour;
1380
1381 if (!brush)
1382 {
1383 cb->type = D2D_BRUSH_TYPE_COUNT;
1384 return TRUE;
1385 }
1386
1387 cb->type = brush->type;
1388 cb->opacity = brush->opacity;
1389
1390 switch (brush->type)
1391 {
1393 colour = &cb->u.solid.colour;
1394
1395 *colour = brush->u.solid.color;
1396 colour->r *= colour->a;
1397 colour->g *= colour->a;
1398 colour->b *= colour->a;
1399
1400 return TRUE;
1401
1403 b = brush->transform;
1404 d2d_point_transform(&cb->u.linear.start, &b, brush->u.linear.start.x, brush->u.linear.start.y);
1405 d2d_point_transform(&cb->u.linear.end, &b, brush->u.linear.end.x, brush->u.linear.end.y);
1406 cb->u.linear.stop_count = brush->u.linear.gradient->stop_count;
1407
1408 return TRUE;
1409
1411 b = brush->transform;
1412 d2d_point_transform(&cb->u.radial.centre, &b, brush->u.radial.centre.x, brush->u.radial.centre.y);
1413 b._31 = b._32 = 0.0f;
1414 d2d_point_transform(&cb->u.radial.offset, &b, brush->u.radial.offset.x, brush->u.radial.offset.y);
1415
1416 /* After a transformation, the axes of the ellipse are no longer
1417 * necessarily orthogonal, but they are conjugate diameters.
1418 *
1419 * A = ⎡a.x b.x⎤
1420 * ⎣a.y b.y⎦
1421 *
1422 * = ⎡cos(θ) -sin(θ)⎤⎡σ₁ 0 ⎤⎡cos(φ) -sin(φ)⎤
1423 * ⎣sin(θ) cos(θ)⎦⎣0 σ₂⎦⎣sin(φ) cos(φ)⎦
1424 *
1425 * a' = [σ₁· cos(θ) σ₁·sin(θ)]
1426 * b' = [σ₂·-sin(θ) σ₂·cos(θ)] */
1427
1428 d2d_point_set(&v_p, brush->u.radial.radius.x * b._11, brush->u.radial.radius.y * b._21);
1429 d2d_point_set(&v_q, brush->u.radial.radius.x * b._12, brush->u.radial.radius.y * b._22);
1430
1431 t = 0.5f * d2d_point_dot(&v_p, &v_p);
1432 u = 0.5f * d2d_point_dot(&v_q, &v_q);
1433 s1 = t + u;
1434
1435 t = t - u;
1436 u = d2d_point_dot(&v_p, &v_q);
1437 s2 = sqrtf(t * t + u * u);
1438
1439 theta = 0.5f * atan2(u, t);
1440 sin_theta = sinf(theta);
1441 cos_theta = cosf(theta);
1442
1443 t = sqrtf(s1 + s2);
1444 d2d_point_set(&cb->u.radial.ra, t * cos_theta, t * sin_theta);
1445 t = sqrtf(s1 - s2);
1446 d2d_point_set(&cb->u.radial.rb, t * -sin_theta, t * cos_theta);
1447
1448 cb->u.radial.stop_count = brush->u.linear.gradient->stop_count;
1449
1450 return TRUE;
1451
1454 {
1455 ID2D1Bitmap *image_bitmap = NULL;
1456
1457 if (brush->type == D2D_BRUSH_TYPE_BITMAP)
1458 bitmap = brush->u.bitmap.bitmap;
1459 else
1460 {
1461 if (FAILED(ID2D1Image_QueryInterface(brush->u.image.image, &IID_ID2D1Bitmap, (void **)&image_bitmap)))
1462 {
1463 FIXME("Only image brushes with bitmaps are supported.\n");
1464 return FALSE;
1465 }
1466
1467 bitmap = unsafe_impl_from_ID2D1Bitmap(image_bitmap);
1468 cb->type = D2D_BRUSH_TYPE_BITMAP;
1469 }
1470
1471 /* Scale for bitmap size and dpi. */
1472 b = brush->transform;
1473 dpi_scale = bitmap->pixel_size.width * (96.0f / bitmap->dpi_x);
1474 b._11 *= dpi_scale;
1475 b._21 *= dpi_scale;
1476 dpi_scale = bitmap->pixel_size.height * (96.0f / bitmap->dpi_y);
1477 b._12 *= dpi_scale;
1478 b._22 *= dpi_scale;
1479
1480 /* Invert the matrix. (Because the matrix is applied to the
1481 * sampling coordinates. I.e., to scale the bitmap by 2 we need to
1482 * divide the coordinates by 2.) */
1483 d = b._11 * b._22 - b._21 * b._12;
1484 if (d != 0.0f)
1485 {
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;
1492 }
1493
1494 cb->u.bitmap.ignore_alpha = bitmap->format.alphaMode == D2D1_ALPHA_MODE_IGNORE;
1495
1496 if (image_bitmap)
1497 ID2D1Bitmap_Release(image_bitmap);
1498
1499 return TRUE;
1500 }
1501
1502 default:
1503 FIXME("Unhandled brush type %#x.\n", brush->type);
1504 return FALSE;
1505 }
1506}
static float d2d_point_dot(const D2D1_POINT_2F *p0, const D2D1_POINT_2F *p1)
Definition: d2d1_private.h:958
@ D2D_BRUSH_TYPE_COUNT
Definition: d2d1_private.h:46
static void d2d_point_set(D2D1_POINT_2F *dst, float x, float y)
Definition: d2d1_private.h:952
static void d2d_point_transform(D2D1_POINT_2F *dst, const D2D1_MATRIX_3X2_F *matrix, float x, float y)
Definition: d2d1_private.h:963
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
static MonoProfilerRuntimeShutdownBeginCallback cb
Definition: metahost.c:118
_ACRTIMP float __cdecl cosf(float)
Definition: cosf.c:13
_ACRTIMP float __cdecl sinf(float)
Definition: sinf.c:13
_ACRTIMP double __cdecl atan2(double, double)
Definition: atan2.c:52
GLdouble GLdouble t
Definition: gl.h:2047
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
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
Definition: glfuncs.h:240
#define d
Definition: ke_i.h:81
#define b
Definition: ke_i.h:79
struct S1 s1
#define sqrtf(x)
Definition: mymath.h:59
PCWSTR s2
Definition: shell32_main.h:38
uint32 width
Definition: uimain.c:91
uint32 height
Definition: uimain.c:92
struct d2d_brush::@234::@235 solid

Referenced by d2d_device_context_update_ps_cb().

◆ d2d_brush_init()

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

Definition at line 242 of file brush.c.

244{
245 static const D2D1_MATRIX_3X2_F identity =
246 {{{
247 1.0f, 0.0f,
248 0.0f, 1.0f,
249 0.0f, 0.0f,
250 }}};
251
252 brush->ID2D1Brush_iface.lpVtbl = vtbl;
253 brush->refcount = 1;
254 ID2D1Factory_AddRef(brush->factory = factory);
255 brush->opacity = desc ? desc->opacity : 1.0f;
256 brush->transform = desc ? desc->transform : identity;
257 brush->type = type;
258}
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
D3D11_SHADER_VARIABLE_DESC desc
Definition: reflection.c:1683
ID2D1Brush ID2D1Brush_iface
Definition: d2d1_private.h:323

Referenced by d2d_bitmap_brush_create(), d2d_image_brush_create(), d2d_linear_gradient_brush_create(), d2d_radial_gradient_brush_create(), and d2d_solid_color_brush_create().

◆ d2d_gradient_AddRef()

static ULONG STDMETHODCALLTYPE d2d_gradient_AddRef ( ID2D1GradientStopCollection *  iface)
static

Definition at line 48 of file brush.c.

49{
52
53 TRACE("%p increasing refcount to %lu.\n", iface, refcount);
54
55 return refcount;
56}
static struct d2d_gradient * impl_from_ID2D1GradientStopCollection(ID2D1GradientStopCollection *iface)
Definition: brush.c:23

◆ d2d_gradient_bind()

static void d2d_gradient_bind ( struct d2d_gradient *  gradient,
ID3D11Device1 *  device,
unsigned int  brush_idx 
)
static

Definition at line 228 of file brush.c.

229{
230 ID3D11DeviceContext *context;
231 ID3D11Device1_GetImmediateContext(device, &context);
232 ID3D11DeviceContext_PSSetShaderResources(context, 2 + brush_idx, 1, &gradient->view);
233 ID3D11DeviceContext_Release(context);
234}
ID3D11ShaderResourceView * view
Definition: d2d1_private.h:312
Definition: devices.h:37

Referenced by d2d_brush_bind_resources().

◆ d2d_gradient_create()

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 
)

Definition at line 130 of file brush.c.

132{
133 D3D11_SHADER_RESOURCE_VIEW_DESC srv_desc;
134 D3D11_SUBRESOURCE_DATA buffer_data;
135 ID3D11ShaderResourceView *view;
136 struct d2d_gradient *gradient;
137 D3D11_BUFFER_DESC buffer_desc;
138 struct d2d_vec4 *data;
139 ID3D11Buffer *buffer;
140 unsigned int i;
141 HRESULT hr;
142
143 *out = NULL;
144 if (!(data = calloc(stop_count, 2 * sizeof(*data))))
145 {
146 ERR("Failed to allocate data.\n");
147 return E_OUTOFMEMORY;
148 }
149
150 for (i = 0; i < stop_count; ++i)
151 {
152 data[i * 2].x = stops[i].position;
153 data[i * 2 + 1].x = stops[i].color.r;
154 data[i * 2 + 1].y = stops[i].color.g;
155 data[i * 2 + 1].z = stops[i].color.b;
156 data[i * 2 + 1].w = stops[i].color.a;
157 }
158
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;
164
165 buffer_data.pSysMem = data;
166 buffer_data.SysMemPitch = 0;
167 buffer_data.SysMemSlicePitch = 0;
168
169 hr = ID3D11Device1_CreateBuffer(device, &buffer_desc, &buffer_data, &buffer);
170 free(data);
171 if (FAILED(hr))
172 {
173 ERR("Failed to create buffer, hr %#lx.\n", hr);
174 return hr;
175 }
176
177 srv_desc.Format = DXGI_FORMAT_R32G32B32A32_FLOAT;
178 srv_desc.ViewDimension = D3D11_SRV_DIMENSION_BUFFER;
179 srv_desc.Buffer.ElementOffset = 0;
180 srv_desc.Buffer.ElementWidth = 2 * stop_count;
181
182 hr = ID3D11Device1_CreateShaderResourceView(device, (ID3D11Resource *)buffer, &srv_desc, &view);
183 ID3D11Buffer_Release(buffer);
184 if (FAILED(hr))
185 {
186 ERR("Failed to create view, hr %#lx.\n", hr);
187 return hr;
188 }
189
190 if (!(gradient = calloc(1, sizeof(*gradient))))
191 {
192 ID3D11ShaderResourceView_Release(view);
193 return E_OUTOFMEMORY;
194 }
195
196 if (gamma != D2D1_GAMMA_2_2)
197 FIXME("Ignoring gamma %#x.\n", gamma);
198 if (extend_mode != D2D1_EXTEND_MODE_CLAMP)
199 FIXME("Ignoring extend mode %#x.\n", extend_mode);
200
202 gradient->refcount = 1;
203 ID2D1Factory_AddRef(gradient->factory = factory);
204 gradient->view = view;
205
206 gradient->stop_count = stop_count;
207 if (!(gradient->stops = calloc(stop_count, sizeof(*stops))))
208 {
209 ID3D11ShaderResourceView_Release(view);
210 free(gradient);
211 return E_OUTOFMEMORY;
212 }
213 memcpy(gradient->stops, stops, stop_count * sizeof(*stops));
214
215 TRACE("Created gradient %p.\n", gradient);
216 *out = gradient;
217 return S_OK;
218}
@ D2D1_GAMMA_2_2
Definition: d2d1.idl:214
@ D3D11_SRV_DIMENSION_BUFFER
Definition: d3dcommon.idl:583
static const struct ID2D1GradientStopCollectionVtbl d2d_gradient_vtbl
Definition: brush.c:118
@ DXGI_FORMAT_R32G32B32A32_FLOAT
Definition: dxgiformat.idl:25
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLuint buffer
Definition: glext.h:5915
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
Definition: glfuncs.h:248
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
D2D1_COLOR_F color
Definition: d2d1.idl:357
D2D1_GRADIENT_STOP * stops
Definition: d2d1_private.h:313
ID2D1GradientStopCollection ID2D1GradientStopCollection_iface
Definition: d2d1_private.h:308
ID2D1Factory * factory
Definition: d2d1_private.h:311
UINT32 stop_count
Definition: d2d1_private.h:314

Referenced by d2d_device_context_CreateGradientStopCollection().

◆ d2d_gradient_GetColorInterpolationGamma()

static D2D1_GAMMA STDMETHODCALLTYPE d2d_gradient_GetColorInterpolationGamma ( ID2D1GradientStopCollection *  iface)
static

Definition at line 104 of file brush.c.

105{
106 FIXME("iface %p stub!\n", iface);
107
108 return D2D1_GAMMA_1_0;
109}
@ D2D1_GAMMA_1_0
Definition: d2d1.idl:215

◆ d2d_gradient_GetExtendMode()

static D2D1_EXTEND_MODE STDMETHODCALLTYPE d2d_gradient_GetExtendMode ( ID2D1GradientStopCollection *  iface)
static

Definition at line 111 of file brush.c.

112{
113 FIXME("iface %p stub!\n", iface);
114
116}

◆ d2d_gradient_GetFactory()

static void STDMETHODCALLTYPE d2d_gradient_GetFactory ( ID2D1GradientStopCollection *  iface,
ID2D1Factory **  factory 
)
static

Definition at line 76 of file brush.c.

77{
79
80 TRACE("iface %p, factory %p.\n", iface, factory);
81
82 ID2D1Factory_AddRef(*factory = gradient->factory);
83}

◆ d2d_gradient_GetGradientStopCount()

static UINT32 STDMETHODCALLTYPE d2d_gradient_GetGradientStopCount ( ID2D1GradientStopCollection *  iface)
static

Definition at line 85 of file brush.c.

86{
88
89 TRACE("iface %p.\n", iface);
90
91 return gradient->stop_count;
92}

◆ d2d_gradient_GetGradientStops()

static void STDMETHODCALLTYPE d2d_gradient_GetGradientStops ( ID2D1GradientStopCollection *  iface,
D2D1_GRADIENT_STOP *  stops,
UINT32  stop_count 
)
static

Definition at line 94 of file brush.c.

96{
98
99 TRACE("iface %p, stops %p, stop_count %u.\n", iface, stops, stop_count);
100
101 memcpy(stops, gradient->stops, min(gradient->stop_count, stop_count) * sizeof(*stops));
102}
#define min(a, b)
Definition: monoChain.cc:55

◆ d2d_gradient_QueryInterface()

static HRESULT STDMETHODCALLTYPE d2d_gradient_QueryInterface ( ID2D1GradientStopCollection *  iface,
REFIID  iid,
void **  out 
)
static

Definition at line 28 of file brush.c.

30{
31 TRACE("iface %p, iid %s, out %p.\n", iface, debugstr_guid(iid), out);
32
33 if (IsEqualGUID(iid, &IID_ID2D1GradientStopCollection)
34 || IsEqualGUID(iid, &IID_ID2D1Resource)
35 || IsEqualGUID(iid, &IID_IUnknown))
36 {
37 ID2D1GradientStopCollection_AddRef(iface);
38 *out = iface;
39 return S_OK;
40 }
41
42 WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid));
43
44 *out = NULL;
45 return E_NOINTERFACE;
46}

◆ d2d_gradient_Release()

static ULONG STDMETHODCALLTYPE d2d_gradient_Release ( ID2D1GradientStopCollection *  iface)
static

Definition at line 58 of file brush.c.

59{
62
63 TRACE("%p decreasing refcount to %lu.\n", iface, refcount);
64
65 if (!refcount)
66 {
67 free(gradient->stops);
68 ID3D11ShaderResourceView_Release(gradient->view);
69 ID2D1Factory_Release(gradient->factory);
70 free(gradient);
71 }
72
73 return refcount;
74}

◆ d2d_image_brush_AddRef()

static ULONG STDMETHODCALLTYPE d2d_image_brush_AddRef ( ID2D1ImageBrush *  iface)
static

Definition at line 1130 of file brush.c.

1131{
1132 struct d2d_brush *brush = impl_from_ID2D1ImageBrush(iface);
1134
1135 TRACE("%p increasing refcount to %lu.\n", iface, refcount);
1136
1137 return refcount;
1138}
static struct d2d_brush * impl_from_ID2D1ImageBrush(ID2D1ImageBrush *iface)
Definition: brush.c:1104

◆ d2d_image_brush_create()

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 
)

Definition at line 1323 of file brush.c.

1326{
1327 if (!(*brush = calloc(1, sizeof(**brush))))
1328 return E_OUTOFMEMORY;
1329
1331 brush_desc, (ID2D1BrushVtbl *)&d2d_image_brush_vtbl);
1332 if (((*brush)->u.image.image = image))
1333 ID2D1Image_AddRef((*brush)->u.image.image);
1334
1335 (*brush)->u.image.source_rect = image_brush_desc->sourceRectangle;
1336 (*brush)->u.image.extend_mode_x = image_brush_desc->extendModeX;
1337 (*brush)->u.image.extend_mode_y = image_brush_desc->extendModeY;
1338 (*brush)->u.image.interpolation_mode = image_brush_desc->interpolationMode;
1339
1340 TRACE("Created brush %p.\n", *brush);
1341 return S_OK;
1342}
static const struct ID2D1ImageBrushVtbl d2d_image_brush_vtbl
Definition: brush.c:1301
D2D1_INTERPOLATION_MODE interpolationMode
Definition: d2d1_1.idl:278
D2D1_EXTEND_MODE extendModeX
Definition: d2d1_1.idl:276
D2D1_EXTEND_MODE extendModeY
Definition: d2d1_1.idl:277
D2D1_RECT_F sourceRectangle
Definition: d2d1_1.idl:275
Definition: image.c:84

Referenced by d2d_device_context_CreateImageBrush().

◆ d2d_image_brush_GetExtendModeX()

static D2D1_EXTEND_MODE STDMETHODCALLTYPE d2d_image_brush_GetExtendModeX ( ID2D1ImageBrush *  iface)
static

Definition at line 1265 of file brush.c.

1266{
1267 struct d2d_brush *brush = impl_from_ID2D1ImageBrush(iface);
1268
1269 TRACE("iface %p.\n", iface);
1270
1271 return brush->u.image.extend_mode_x;
1272}

◆ d2d_image_brush_GetExtendModeY()

static D2D1_EXTEND_MODE STDMETHODCALLTYPE d2d_image_brush_GetExtendModeY ( ID2D1ImageBrush *  iface)
static

Definition at line 1274 of file brush.c.

1275{
1276 struct d2d_brush *brush = impl_from_ID2D1ImageBrush(iface);
1277
1278 TRACE("iface %p.\n", iface);
1279
1280 return brush->u.image.extend_mode_y;
1281}

◆ d2d_image_brush_GetFactory()

static void STDMETHODCALLTYPE d2d_image_brush_GetFactory ( ID2D1ImageBrush *  iface,
ID2D1Factory **  factory 
)
static

Definition at line 1157 of file brush.c.

1159{
1160 struct d2d_brush *brush = impl_from_ID2D1ImageBrush(iface);
1161
1162 TRACE("iface %p, factory %p.\n", iface, factory);
1163
1164 ID2D1Factory_AddRef(*factory = brush->factory);
1165}

◆ d2d_image_brush_GetImage()

static void STDMETHODCALLTYPE d2d_image_brush_GetImage ( ID2D1ImageBrush *  iface,
ID2D1Image **  image 
)
static

Definition at line 1255 of file brush.c.

1256{
1257 struct d2d_brush *brush = impl_from_ID2D1ImageBrush(iface);
1258
1259 TRACE("iface %p, image %p.\n", iface, image);
1260
1261 if ((*image = brush->u.image.image))
1262 ID2D1Image_AddRef(*image);
1263}

◆ d2d_image_brush_GetInterpolationMode()

static D2D1_INTERPOLATION_MODE STDMETHODCALLTYPE d2d_image_brush_GetInterpolationMode ( ID2D1ImageBrush *  iface)
static

Definition at line 1283 of file brush.c.

1284{
1285 struct d2d_brush *brush = impl_from_ID2D1ImageBrush(iface);
1286
1287 TRACE("iface %p.\n", iface);
1288
1289 return brush->u.image.interpolation_mode;
1290}

◆ d2d_image_brush_GetOpacity()

static float STDMETHODCALLTYPE d2d_image_brush_GetOpacity ( ID2D1ImageBrush *  iface)
static

Definition at line 1186 of file brush.c.

1187{
1188 struct d2d_brush *brush = impl_from_ID2D1ImageBrush(iface);
1189
1190 TRACE("iface %p.\n", iface);
1191
1192 return brush->opacity;
1193}

◆ d2d_image_brush_GetSourceRectangle()

static void STDMETHODCALLTYPE d2d_image_brush_GetSourceRectangle ( ID2D1ImageBrush *  iface,
D2D1_RECT_F *  rect 
)
static

Definition at line 1292 of file brush.c.

1293{
1294 struct d2d_brush *brush = impl_from_ID2D1ImageBrush(iface);
1295
1296 TRACE("iface %p, rect %p.\n", iface, rect);
1297
1298 *rect = brush->u.image.source_rect;
1299}
RECT rect
Definition: combotst.c:67

◆ d2d_image_brush_GetTransform()

static void STDMETHODCALLTYPE d2d_image_brush_GetTransform ( ID2D1ImageBrush *  iface,
D2D1_MATRIX_3X2_F *  transform 
)
static

Definition at line 1195 of file brush.c.

1197{
1198 struct d2d_brush *brush = impl_from_ID2D1ImageBrush(iface);
1199
1200 TRACE("iface %p, transform %p.\n", iface, transform);
1201
1202 *transform = brush->transform;
1203}

◆ d2d_image_brush_QueryInterface()

static HRESULT STDMETHODCALLTYPE d2d_image_brush_QueryInterface ( ID2D1ImageBrush *  iface,
REFIID  iid,
void **  out 
)
static

Definition at line 1109 of file brush.c.

1111{
1112 TRACE("iface %p, iid %s, out %p.\n", iface, debugstr_guid(iid), out);
1113
1114 if (IsEqualGUID(iid, &IID_ID2D1ImageBrush)
1115 || IsEqualGUID(iid, &IID_ID2D1Brush)
1116 || IsEqualGUID(iid, &IID_ID2D1Resource)
1117 || IsEqualGUID(iid, &IID_IUnknown))
1118 {
1119 ID2D1ImageBrush_AddRef(iface);
1120 *out = iface;
1121 return S_OK;
1122 }
1123
1124 WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid));
1125
1126 *out = NULL;
1127 return E_NOINTERFACE;
1128}

◆ d2d_image_brush_Release()

static ULONG STDMETHODCALLTYPE d2d_image_brush_Release ( ID2D1ImageBrush *  iface)
static

Definition at line 1140 of file brush.c.

1141{
1142 struct d2d_brush *brush = impl_from_ID2D1ImageBrush(iface);
1144
1145 TRACE("%p decreasing refcount to %lu.\n", iface, refcount);
1146
1147 if (!refcount)
1148 {
1149 if (brush->u.image.image)
1150 ID2D1Image_Release(brush->u.image.image);
1151 d2d_brush_destroy(brush);
1152 }
1153
1154 return refcount;
1155}

◆ d2d_image_brush_SetExtendModeX()

static void STDMETHODCALLTYPE d2d_image_brush_SetExtendModeX ( ID2D1ImageBrush *  iface,
D2D1_EXTEND_MODE  mode 
)
static

Definition at line 1218 of file brush.c.

1219{
1220 struct d2d_brush *brush = impl_from_ID2D1ImageBrush(iface);
1221
1222 TRACE("iface %p, mode %#x.\n", iface, mode);
1223
1224 brush->u.image.extend_mode_x = mode;
1225}

◆ d2d_image_brush_SetExtendModeY()

static void STDMETHODCALLTYPE d2d_image_brush_SetExtendModeY ( ID2D1ImageBrush *  iface,
D2D1_EXTEND_MODE  mode 
)
static

Definition at line 1227 of file brush.c.

1228{
1229 struct d2d_brush *brush = impl_from_ID2D1ImageBrush(iface);
1230
1231 TRACE("iface %p, mode %#x.\n", iface, mode);
1232
1233 brush->u.image.extend_mode_y = mode;
1234}

◆ d2d_image_brush_SetImage()

static void STDMETHODCALLTYPE d2d_image_brush_SetImage ( ID2D1ImageBrush *  iface,
ID2D1Image *  image 
)
static

Definition at line 1205 of file brush.c.

1206{
1207 struct d2d_brush *brush = impl_from_ID2D1ImageBrush(iface);
1208
1209 TRACE("iface %p, image %p.\n", iface, image);
1210
1211 if (image)
1212 ID2D1Image_AddRef(image);
1213 if (brush->u.image.image)
1214 ID2D1Image_Release(brush->u.image.image);
1215 brush->u.image.image = image;
1216}

◆ d2d_image_brush_SetInterpolationMode()

static void STDMETHODCALLTYPE d2d_image_brush_SetInterpolationMode ( ID2D1ImageBrush *  iface,
D2D1_INTERPOLATION_MODE  mode 
)
static

Definition at line 1236 of file brush.c.

1238{
1239 struct d2d_brush *brush = impl_from_ID2D1ImageBrush(iface);
1240
1241 TRACE("iface %p, mode %#x.\n", iface, mode);
1242
1243 brush->u.image.interpolation_mode = mode;
1244}

◆ d2d_image_brush_SetOpacity()

static void STDMETHODCALLTYPE d2d_image_brush_SetOpacity ( ID2D1ImageBrush *  iface,
float  opacity 
)
static

Definition at line 1167 of file brush.c.

1168{
1169 struct d2d_brush *brush = impl_from_ID2D1ImageBrush(iface);
1170
1171 TRACE("iface %p, opacity %.8e.\n", iface, opacity);
1172
1173 brush->opacity = opacity;
1174}

◆ d2d_image_brush_SetSourceRectangle()

static void STDMETHODCALLTYPE d2d_image_brush_SetSourceRectangle ( ID2D1ImageBrush *  iface,
const D2D1_RECT_F *  rect 
)
static

Definition at line 1246 of file brush.c.

1247{
1248 struct d2d_brush *brush = impl_from_ID2D1ImageBrush(iface);
1249
1250 TRACE("iface %p, rect %s.\n", iface, debug_d2d_rect_f(rect));
1251
1252 brush->u.image.source_rect = *rect;
1253}
static const char * debug_d2d_rect_f(const D2D1_RECT_F *rect)

◆ d2d_image_brush_SetTransform()

static void STDMETHODCALLTYPE d2d_image_brush_SetTransform ( ID2D1ImageBrush *  iface,
const D2D1_MATRIX_3X2_F *  transform 
)
static

Definition at line 1176 of file brush.c.

1178{
1179 struct d2d_brush *brush = impl_from_ID2D1ImageBrush(iface);
1180
1181 TRACE("iface %p, transform %p.\n", iface, transform);
1182
1183 brush->transform = *transform;
1184}

◆ d2d_linear_gradient_brush_AddRef()

static ULONG STDMETHODCALLTYPE d2d_linear_gradient_brush_AddRef ( ID2D1LinearGradientBrush *  iface)
static

Definition at line 429 of file brush.c.

430{
431 struct d2d_brush *brush = impl_from_ID2D1LinearGradientBrush(iface);
433
434 TRACE("%p increasing refcount to %lu.\n", iface, refcount);
435
436 return refcount;
437}
static struct d2d_brush * impl_from_ID2D1LinearGradientBrush(ID2D1LinearGradientBrush *iface)
Definition: brush.c:403

◆ d2d_linear_gradient_brush_create()

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 
)

Definition at line 572 of file brush.c.

575{
576 if (!(*brush = calloc(1, sizeof(**brush))))
577 return E_OUTOFMEMORY;
578
579 d2d_brush_init(*brush, factory, D2D_BRUSH_TYPE_LINEAR, brush_desc,
580 (ID2D1BrushVtbl *)&d2d_linear_gradient_brush_vtbl);
581 (*brush)->u.linear.gradient = unsafe_impl_from_ID2D1GradientStopCollection(gradient);
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;
585
586 TRACE("Created brush %p.\n", *brush);
587 return S_OK;
588}
static const struct ID2D1LinearGradientBrushVtbl d2d_linear_gradient_brush_vtbl
Definition: brush.c:555
static struct d2d_gradient * unsafe_impl_from_ID2D1GradientStopCollection(ID2D1GradientStopCollection *iface)
Definition: brush.c:220

Referenced by d2d_device_context_CreateLinearGradientBrush().

◆ d2d_linear_gradient_brush_GetEndPoint()

static D2D1_POINT_2F *STDMETHODCALLTYPE d2d_linear_gradient_brush_GetEndPoint ( ID2D1LinearGradientBrush *  iface,
D2D1_POINT_2F *  point 
)
static

Definition at line 534 of file brush.c.

536{
537 struct d2d_brush *brush = impl_from_ID2D1LinearGradientBrush(iface);
538
539 TRACE("iface %p, point %p.\n", iface, point);
540
541 *point = brush->u.linear.end;
542 return point;
543}
POINTL point
Definition: edittest.c:50

◆ d2d_linear_gradient_brush_GetFactory()

static void STDMETHODCALLTYPE d2d_linear_gradient_brush_GetFactory ( ID2D1LinearGradientBrush *  iface,
ID2D1Factory **  factory 
)
static

Definition at line 455 of file brush.c.

457{
458 struct d2d_brush *brush = impl_from_ID2D1LinearGradientBrush(iface);
459
460 TRACE("iface %p, factory %p.\n", iface, factory);
461
462 ID2D1Factory_AddRef(*factory = brush->factory);
463}

◆ d2d_linear_gradient_brush_GetGradientStopCollection()

static void STDMETHODCALLTYPE d2d_linear_gradient_brush_GetGradientStopCollection ( ID2D1LinearGradientBrush *  iface,
ID2D1GradientStopCollection **  gradient 
)
static

Definition at line 545 of file brush.c.

547{
548 struct d2d_brush *brush = impl_from_ID2D1LinearGradientBrush(iface);
549
550 TRACE("iface %p, gradient %p.\n", iface, gradient);
551
552 ID2D1GradientStopCollection_AddRef(*gradient = &brush->u.linear.gradient->ID2D1GradientStopCollection_iface);
553}
struct d2d_gradient * gradient
Definition: d2d1_private.h:339

◆ d2d_linear_gradient_brush_GetOpacity()

static float STDMETHODCALLTYPE d2d_linear_gradient_brush_GetOpacity ( ID2D1LinearGradientBrush *  iface)
static

Definition at line 484 of file brush.c.

485{
486 struct d2d_brush *brush = impl_from_ID2D1LinearGradientBrush(iface);
487
488 TRACE("iface %p.\n", iface);
489
490 return brush->opacity;
491}

◆ d2d_linear_gradient_brush_GetStartPoint()

static D2D1_POINT_2F *STDMETHODCALLTYPE d2d_linear_gradient_brush_GetStartPoint ( ID2D1LinearGradientBrush *  iface,
D2D1_POINT_2F *  point 
)
static

Definition at line 523 of file brush.c.

525{
526 struct d2d_brush *brush = impl_from_ID2D1LinearGradientBrush(iface);
527
528 TRACE("iface %p, point %p.\n", iface, point);
529
530 *point = brush->u.linear.start;
531 return point;
532}

◆ d2d_linear_gradient_brush_GetTransform()

static void STDMETHODCALLTYPE d2d_linear_gradient_brush_GetTransform ( ID2D1LinearGradientBrush *  iface,
D2D1_MATRIX_3X2_F *  transform 
)
static

Definition at line 493 of file brush.c.

495{
496 struct d2d_brush *brush = impl_from_ID2D1LinearGradientBrush(iface);
497
498 TRACE("iface %p, transform %p.\n", iface, transform);
499
500 *transform = brush->transform;
501}

◆ d2d_linear_gradient_brush_QueryInterface()

static HRESULT STDMETHODCALLTYPE d2d_linear_gradient_brush_QueryInterface ( ID2D1LinearGradientBrush *  iface,
REFIID  iid,
void **  out 
)
static

Definition at line 408 of file brush.c.

410{
411 TRACE("iface %p, iid %s, out %p.\n", iface, debugstr_guid(iid), out);
412
413 if (IsEqualGUID(iid, &IID_ID2D1LinearGradientBrush)
414 || IsEqualGUID(iid, &IID_ID2D1Brush)
415 || IsEqualGUID(iid, &IID_ID2D1Resource)
416 || IsEqualGUID(iid, &IID_IUnknown))
417 {
418 ID2D1LinearGradientBrush_AddRef(iface);
419 *out = iface;
420 return S_OK;
421 }
422
423 WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid));
424
425 *out = NULL;
426 return E_NOINTERFACE;
427}

◆ d2d_linear_gradient_brush_Release()

static ULONG STDMETHODCALLTYPE d2d_linear_gradient_brush_Release ( ID2D1LinearGradientBrush *  iface)
static

Definition at line 439 of file brush.c.

440{
441 struct d2d_brush *brush = impl_from_ID2D1LinearGradientBrush(iface);
443
444 TRACE("%p decreasing refcount to %lu.\n", iface, refcount);
445
446 if (!refcount)
447 {
448 ID2D1GradientStopCollection_Release(&brush->u.linear.gradient->ID2D1GradientStopCollection_iface);
449 d2d_brush_destroy(brush);
450 }
451
452 return refcount;
453}

◆ d2d_linear_gradient_brush_SetEndPoint()

static void STDMETHODCALLTYPE d2d_linear_gradient_brush_SetEndPoint ( ID2D1LinearGradientBrush *  iface,
D2D1_POINT_2F  end_point 
)
static

Definition at line 513 of file brush.c.

515{
516 struct d2d_brush *brush = impl_from_ID2D1LinearGradientBrush(iface);
517
518 TRACE("iface %p, end_point %s.\n", iface, debug_d2d_point_2f(&end_point));
519
520 brush->u.linear.end = end_point;
521}
static const char * debug_d2d_point_2f(const D2D1_POINT_2F *point)
Definition: d2d1_private.h:993

◆ d2d_linear_gradient_brush_SetOpacity()

static void STDMETHODCALLTYPE d2d_linear_gradient_brush_SetOpacity ( ID2D1LinearGradientBrush *  iface,
float  opacity 
)
static

Definition at line 465 of file brush.c.

466{
467 struct d2d_brush *brush = impl_from_ID2D1LinearGradientBrush(iface);
468
469 TRACE("iface %p, opacity %.8e.\n", iface, opacity);
470
471 brush->opacity = opacity;
472}

◆ d2d_linear_gradient_brush_SetStartPoint()

static void STDMETHODCALLTYPE d2d_linear_gradient_brush_SetStartPoint ( ID2D1LinearGradientBrush *  iface,
D2D1_POINT_2F  start_point 
)
static

Definition at line 503 of file brush.c.

505{
506 struct d2d_brush *brush = impl_from_ID2D1LinearGradientBrush(iface);
507
508 TRACE("iface %p, start_point %s.\n", iface, debug_d2d_point_2f(&start_point));
509
510 brush->u.linear.start = start_point;
511}

◆ d2d_linear_gradient_brush_SetTransform()

static void STDMETHODCALLTYPE d2d_linear_gradient_brush_SetTransform ( ID2D1LinearGradientBrush *  iface,
const D2D1_MATRIX_3X2_F *  transform 
)
static

Definition at line 474 of file brush.c.

476{
477 struct d2d_brush *brush = impl_from_ID2D1LinearGradientBrush(iface);
478
479 TRACE("iface %p, transform %p.\n", iface, transform);
480
481 brush->transform = *transform;
482}

◆ d2d_radial_gradient_brush_AddRef()

static ULONG STDMETHODCALLTYPE d2d_radial_gradient_brush_AddRef ( ID2D1RadialGradientBrush *  iface)
static

Definition at line 616 of file brush.c.

617{
618 struct d2d_brush *brush = impl_from_ID2D1RadialGradientBrush(iface);
620
621 TRACE("%p increasing refcount to %lu.\n", iface, refcount);
622
623 return refcount;
624}
static struct d2d_brush * impl_from_ID2D1RadialGradientBrush(ID2D1RadialGradientBrush *iface)
Definition: brush.c:590

◆ d2d_radial_gradient_brush_create()

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 
)

Definition at line 799 of file brush.c.

802{
803 struct d2d_brush *b;
804
805 if (!(b = calloc(1, sizeof(*b))))
806 return E_OUTOFMEMORY;
807
810 ID2D1GradientStopCollection_AddRef(&b->u.radial.gradient->ID2D1GradientStopCollection_iface);
811 b->u.radial.centre = gradient_desc->center;
812 b->u.radial.offset = gradient_desc->gradientOriginOffset;
813 b->u.radial.radius.x = gradient_desc->radiusX;
814 b->u.radial.radius.y = gradient_desc->radiusY;
815
816 TRACE("Created brush %p.\n", b);
817 *brush = b;
818
819 return S_OK;
820}
static const struct ID2D1RadialGradientBrushVtbl d2d_radial_gradient_brush_vtbl
Definition: brush.c:778

Referenced by d2d_device_context_CreateRadialGradientBrush().

◆ d2d_radial_gradient_brush_GetCenter()

static D2D1_POINT_2F *STDMETHODCALLTYPE d2d_radial_gradient_brush_GetCenter ( ID2D1RadialGradientBrush *  iface,
D2D1_POINT_2F *  centre 
)
static

Definition at line 728 of file brush.c.

730{
731 struct d2d_brush *brush = impl_from_ID2D1RadialGradientBrush(iface);
732
733 TRACE("iface %p, centre %p.\n", iface, centre);
734
735 *centre = brush->u.radial.centre;
736 return centre;
737}
D2D1_POINT_2F centre
Definition: d2d1_private.h:346

◆ d2d_radial_gradient_brush_GetFactory()

static void STDMETHODCALLTYPE d2d_radial_gradient_brush_GetFactory ( ID2D1RadialGradientBrush *  iface,
ID2D1Factory **  factory 
)
static

Definition at line 642 of file brush.c.

644{
645 struct d2d_brush *brush = impl_from_ID2D1RadialGradientBrush(iface);
646
647 TRACE("iface %p, factory %p.\n", iface, factory);
648
649 ID2D1Factory_AddRef(*factory = brush->factory);
650}

◆ d2d_radial_gradient_brush_GetGradientOriginOffset()

static D2D1_POINT_2F *STDMETHODCALLTYPE d2d_radial_gradient_brush_GetGradientOriginOffset ( ID2D1RadialGradientBrush *  iface,
D2D1_POINT_2F *  offset 
)
static

Definition at line 739 of file brush.c.

741{
742 struct d2d_brush *brush = impl_from_ID2D1RadialGradientBrush(iface);
743
744 TRACE("iface %p, offset %p.\n", iface, offset);
745
746 *offset = brush->u.radial.offset;
747 return offset;
748}
GLintptr offset
Definition: glext.h:5920

◆ d2d_radial_gradient_brush_GetGradientStopCollection()

static void STDMETHODCALLTYPE d2d_radial_gradient_brush_GetGradientStopCollection ( ID2D1RadialGradientBrush *  iface,
ID2D1GradientStopCollection **  gradient 
)
static

Definition at line 768 of file brush.c.

770{
771 struct d2d_brush *brush = impl_from_ID2D1RadialGradientBrush(iface);
772
773 TRACE("iface %p, gradient %p.\n", iface, gradient);
774
775 ID2D1GradientStopCollection_AddRef(*gradient = &brush->u.radial.gradient->ID2D1GradientStopCollection_iface);
776}

◆ d2d_radial_gradient_brush_GetOpacity()

static float STDMETHODCALLTYPE d2d_radial_gradient_brush_GetOpacity ( ID2D1RadialGradientBrush *  iface)
static

Definition at line 671 of file brush.c.

672{
673 struct d2d_brush *brush = impl_from_ID2D1RadialGradientBrush(iface);
674
675 TRACE("iface %p.\n", iface);
676
677 return brush->opacity;
678}

◆ d2d_radial_gradient_brush_GetRadiusX()

static float STDMETHODCALLTYPE d2d_radial_gradient_brush_GetRadiusX ( ID2D1RadialGradientBrush *  iface)
static

Definition at line 750 of file brush.c.

751{
752 struct d2d_brush *brush = impl_from_ID2D1RadialGradientBrush(iface);
753
754 TRACE("iface %p.\n", iface);
755
756 return brush->u.radial.radius.x;
757}

◆ d2d_radial_gradient_brush_GetRadiusY()

static float STDMETHODCALLTYPE d2d_radial_gradient_brush_GetRadiusY ( ID2D1RadialGradientBrush *  iface)
static

Definition at line 759 of file brush.c.

760{
761 struct d2d_brush *brush = impl_from_ID2D1RadialGradientBrush(iface);
762
763 TRACE("iface %p.\n", iface);
764
765 return brush->u.radial.radius.y;
766}

◆ d2d_radial_gradient_brush_GetTransform()

static void STDMETHODCALLTYPE d2d_radial_gradient_brush_GetTransform ( ID2D1RadialGradientBrush *  iface,
D2D1_MATRIX_3X2_F *  transform 
)
static

Definition at line 680 of file brush.c.

682{
683 struct d2d_brush *brush = impl_from_ID2D1RadialGradientBrush(iface);
684
685 TRACE("iface %p, transform %p.\n", iface, transform);
686
687 *transform = brush->transform;
688}

◆ d2d_radial_gradient_brush_QueryInterface()

static HRESULT STDMETHODCALLTYPE d2d_radial_gradient_brush_QueryInterface ( ID2D1RadialGradientBrush *  iface,
REFIID  iid,
void **  out 
)
static

Definition at line 595 of file brush.c.

597{
598 TRACE("iface %p, iid %s, out %p.\n", iface, debugstr_guid(iid), out);
599
600 if (IsEqualGUID(iid, &IID_ID2D1RadialGradientBrush)
601 || IsEqualGUID(iid, &IID_ID2D1Brush)
602 || IsEqualGUID(iid, &IID_ID2D1Resource)
603 || IsEqualGUID(iid, &IID_IUnknown))
604 {
605 ID2D1RadialGradientBrush_AddRef(iface);
606 *out = iface;
607 return S_OK;
608 }
609
610 WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid));
611
612 *out = NULL;
613 return E_NOINTERFACE;
614}

◆ d2d_radial_gradient_brush_Release()

static ULONG STDMETHODCALLTYPE d2d_radial_gradient_brush_Release ( ID2D1RadialGradientBrush *  iface)
static

Definition at line 626 of file brush.c.

627{
628 struct d2d_brush *brush = impl_from_ID2D1RadialGradientBrush(iface);
630
631 TRACE("%p decreasing refcount to %lu.\n", iface, refcount);
632
633 if (!refcount)
634 {
635 ID2D1GradientStopCollection_Release(&brush->u.radial.gradient->ID2D1GradientStopCollection_iface);
636 d2d_brush_destroy(brush);
637 }
638
639 return refcount;
640}

◆ d2d_radial_gradient_brush_SetCenter()

static void STDMETHODCALLTYPE d2d_radial_gradient_brush_SetCenter ( ID2D1RadialGradientBrush *  iface,
D2D1_POINT_2F  centre 
)
static

Definition at line 690 of file brush.c.

692{
693 struct d2d_brush *brush = impl_from_ID2D1RadialGradientBrush(iface);
694
695 TRACE("iface %p, centre %s.\n", iface, debug_d2d_point_2f(&centre));
696
697 brush->u.radial.centre = centre;
698}

◆ d2d_radial_gradient_brush_SetGradientOriginOffset()

static void STDMETHODCALLTYPE d2d_radial_gradient_brush_SetGradientOriginOffset ( ID2D1RadialGradientBrush *  iface,
D2D1_POINT_2F  offset 
)
static

Definition at line 700 of file brush.c.

702{
703 struct d2d_brush *brush = impl_from_ID2D1RadialGradientBrush(iface);
704
705 TRACE("iface %p, offset %s.\n", iface, debug_d2d_point_2f(&offset));
706
707 brush->u.radial.offset = offset;
708}

◆ d2d_radial_gradient_brush_SetOpacity()

static void STDMETHODCALLTYPE d2d_radial_gradient_brush_SetOpacity ( ID2D1RadialGradientBrush *  iface,
float  opacity 
)
static

Definition at line 652 of file brush.c.

653{
654 struct d2d_brush *brush = impl_from_ID2D1RadialGradientBrush(iface);
655
656 TRACE("iface %p, opacity %.8e.\n", iface, opacity);
657
658 brush->opacity = opacity;
659}

◆ d2d_radial_gradient_brush_SetRadiusX()

static void STDMETHODCALLTYPE d2d_radial_gradient_brush_SetRadiusX ( ID2D1RadialGradientBrush *  iface,
float  radius 
)
static

Definition at line 710 of file brush.c.

711{
712 struct d2d_brush *brush = impl_from_ID2D1RadialGradientBrush(iface);
713
714 TRACE("iface %p, radius %.8e.\n", iface, radius);
715
716 brush->u.radial.radius.x = radius;
717}
D2D1_POINT_2F radius
Definition: d2d1_private.h:348

◆ d2d_radial_gradient_brush_SetRadiusY()

static void STDMETHODCALLTYPE d2d_radial_gradient_brush_SetRadiusY ( ID2D1RadialGradientBrush *  iface,
float  radius 
)
static

Definition at line 719 of file brush.c.

720{
721 struct d2d_brush *brush = impl_from_ID2D1RadialGradientBrush(iface);
722
723 TRACE("iface %p, radius %.8e.\n", iface, radius);
724
725 brush->u.radial.radius.y = radius;
726}

◆ d2d_radial_gradient_brush_SetTransform()

static void STDMETHODCALLTYPE d2d_radial_gradient_brush_SetTransform ( ID2D1RadialGradientBrush *  iface,
const D2D1_MATRIX_3X2_F *  transform 
)
static

Definition at line 661 of file brush.c.

663{
664 struct d2d_brush *brush = impl_from_ID2D1RadialGradientBrush(iface);
665
666 TRACE("iface %p, transform %p.\n", iface, transform);
667
668 brush->transform = *transform;
669}

◆ d2d_solid_color_brush_AddRef()

static ULONG STDMETHODCALLTYPE d2d_solid_color_brush_AddRef ( ID2D1SolidColorBrush *  iface)
static

Definition at line 286 of file brush.c.

287{
288 struct d2d_brush *brush = impl_from_ID2D1SolidColorBrush(iface);
290
291 TRACE("%p increasing refcount to %lu.\n", iface, refcount);
292
293 return refcount;
294}
static struct d2d_brush * impl_from_ID2D1SolidColorBrush(ID2D1SolidColorBrush *iface)
Definition: brush.c:260

◆ d2d_solid_color_brush_create()

HRESULT d2d_solid_color_brush_create ( ID2D1Factory *  factory,
const D2D1_COLOR_F *  color,
const D2D1_BRUSH_PROPERTIES *  desc,
struct d2d_brush **  brush 
)

Definition at line 389 of file brush.c.

391{
392 if (!(*brush = calloc(1, sizeof(**brush))))
393 return E_OUTOFMEMORY;
394
396 (ID2D1BrushVtbl *)&d2d_solid_color_brush_vtbl);
397 (*brush)->u.solid.color = *color;
398
399 TRACE("Created brush %p.\n", *brush);
400 return S_OK;
401}
static const struct ID2D1SolidColorBrushVtbl d2d_solid_color_brush_vtbl
Definition: brush.c:375
GLuint color
Definition: glext.h:6243

Referenced by d2d_device_context_CreateSolidColorBrush().

◆ d2d_solid_color_brush_GetColor()

static D2D1_COLOR_F *STDMETHODCALLTYPE d2d_solid_color_brush_GetColor ( ID2D1SolidColorBrush *  iface,
D2D1_COLOR_F *  color 
)
static

Definition at line 365 of file brush.c.

366{
367 struct d2d_brush *brush = impl_from_ID2D1SolidColorBrush(iface);
368
369 TRACE("iface %p, color %p.\n", iface, color);
370
371 *color = brush->u.solid.color;
372 return color;
373}

◆ d2d_solid_color_brush_GetFactory()

static void STDMETHODCALLTYPE d2d_solid_color_brush_GetFactory ( ID2D1SolidColorBrush *  iface,
ID2D1Factory **  factory 
)
static

Definition at line 309 of file brush.c.

310{
311 struct d2d_brush *brush = impl_from_ID2D1SolidColorBrush(iface);
312
313 TRACE("iface %p, factory %p.\n", iface, factory);
314
315 ID2D1Factory_AddRef(*factory = brush->factory);
316}

◆ d2d_solid_color_brush_GetOpacity()

static float STDMETHODCALLTYPE d2d_solid_color_brush_GetOpacity ( ID2D1SolidColorBrush *  iface)
static

Definition at line 337 of file brush.c.

338{
339 struct d2d_brush *brush = impl_from_ID2D1SolidColorBrush(iface);
340
341 TRACE("iface %p.\n", iface);
342
343 return brush->opacity;
344}

◆ d2d_solid_color_brush_GetTransform()

static void STDMETHODCALLTYPE d2d_solid_color_brush_GetTransform ( ID2D1SolidColorBrush *  iface,
D2D1_MATRIX_3X2_F *  transform 
)
static

Definition at line 346 of file brush.c.

348{
349 struct d2d_brush *brush = impl_from_ID2D1SolidColorBrush(iface);
350
351 TRACE("iface %p, transform %p.\n", iface, transform);
352
353 *transform = brush->transform;
354}

◆ d2d_solid_color_brush_QueryInterface()

static HRESULT STDMETHODCALLTYPE d2d_solid_color_brush_QueryInterface ( ID2D1SolidColorBrush *  iface,
REFIID  iid,
void **  out 
)
static

Definition at line 265 of file brush.c.

267{
268 TRACE("iface %p, iid %s, out %p.\n", iface, debugstr_guid(iid), out);
269
270 if (IsEqualGUID(iid, &IID_ID2D1SolidColorBrush)
271 || IsEqualGUID(iid, &IID_ID2D1Brush)
272 || IsEqualGUID(iid, &IID_ID2D1Resource)
273 || IsEqualGUID(iid, &IID_IUnknown))
274 {
275 ID2D1SolidColorBrush_AddRef(iface);
276 *out = iface;
277 return S_OK;
278 }
279
280 WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid));
281
282 *out = NULL;
283 return E_NOINTERFACE;
284}

◆ d2d_solid_color_brush_Release()

static ULONG STDMETHODCALLTYPE d2d_solid_color_brush_Release ( ID2D1SolidColorBrush *  iface)
static

Definition at line 296 of file brush.c.

297{
298 struct d2d_brush *brush = impl_from_ID2D1SolidColorBrush(iface);
300
301 TRACE("%p decreasing refcount to %lu.\n", iface, refcount);
302
303 if (!refcount)
304 d2d_brush_destroy(brush);
305
306 return refcount;
307}

◆ d2d_solid_color_brush_SetColor()

static void STDMETHODCALLTYPE d2d_solid_color_brush_SetColor ( ID2D1SolidColorBrush *  iface,
const D2D1_COLOR_F *  color 
)
static

Definition at line 356 of file brush.c.

357{
358 struct d2d_brush *brush = impl_from_ID2D1SolidColorBrush(iface);
359
360 TRACE("iface %p, color %p.\n", iface, color);
361
362 brush->u.solid.color = *color;
363}

◆ d2d_solid_color_brush_SetOpacity()

static void STDMETHODCALLTYPE d2d_solid_color_brush_SetOpacity ( ID2D1SolidColorBrush *  iface,
float  opacity 
)
static

Definition at line 318 of file brush.c.

319{
320 struct d2d_brush *brush = impl_from_ID2D1SolidColorBrush(iface);
321
322 TRACE("iface %p, opacity %.8e.\n", iface, opacity);
323
324 brush->opacity = opacity;
325}

◆ d2d_solid_color_brush_SetTransform()

static void STDMETHODCALLTYPE d2d_solid_color_brush_SetTransform ( ID2D1SolidColorBrush *  iface,
const D2D1_MATRIX_3X2_F *  transform 
)
static

Definition at line 327 of file brush.c.

329{
330 struct d2d_brush *brush = impl_from_ID2D1SolidColorBrush(iface);
331
332 TRACE("iface %p, transform %p.\n", iface, transform);
333
334 brush->transform = *transform;
335}

◆ impl_from_ID2D1BitmapBrush1()

◆ impl_from_ID2D1GradientStopCollection()

static struct d2d_gradient * impl_from_ID2D1GradientStopCollection ( ID2D1GradientStopCollection *  iface)
inlinestatic

Definition at line 23 of file brush.c.

24{
25 return CONTAINING_RECORD(iface, struct d2d_gradient, ID2D1GradientStopCollection_iface);
26}

Referenced by d2d_gradient_AddRef(), d2d_gradient_GetFactory(), d2d_gradient_GetGradientStopCount(), d2d_gradient_GetGradientStops(), and d2d_gradient_Release().

◆ impl_from_ID2D1ImageBrush()

◆ impl_from_ID2D1LinearGradientBrush()

◆ impl_from_ID2D1RadialGradientBrush()

◆ impl_from_ID2D1SolidColorBrush()

◆ texture_address_mode_from_extend_mode()

static D3D11_TEXTURE_ADDRESS_MODE texture_address_mode_from_extend_mode ( D2D1_EXTEND_MODE  mode)
static

Definition at line 1356 of file brush.c.

1357{
1358 switch (mode)
1359 {
1361 return D3D11_TEXTURE_ADDRESS_CLAMP;
1363 return D3D11_TEXTURE_ADDRESS_WRAP;
1365 return D3D11_TEXTURE_ADDRESS_MIRROR;
1366 default:
1367 FIXME("Unhandled extend mode %#x.\n", mode);
1368 return D3D11_TEXTURE_ADDRESS_CLAMP;
1369 }
1370}
@ D2D1_EXTEND_MODE_WRAP
Definition: d2d1.idl:200
@ D2D1_EXTEND_MODE_MIRROR
Definition: d2d1.idl:201

Referenced by d2d_brush_bind_bitmap().

◆ unsafe_impl_from_ID2D1Brush()

struct d2d_brush * unsafe_impl_from_ID2D1Brush ( ID2D1Brush *  iface)

Definition at line 1344 of file brush.c.

1345{
1346 if (!iface)
1347 return NULL;
1348 assert(iface->lpVtbl == (const ID2D1BrushVtbl *)&d2d_solid_color_brush_vtbl
1349 || iface->lpVtbl == (const ID2D1BrushVtbl *)&d2d_linear_gradient_brush_vtbl
1350 || iface->lpVtbl == (const ID2D1BrushVtbl *)&d2d_radial_gradient_brush_vtbl
1351 || iface->lpVtbl == (const ID2D1BrushVtbl *)&d2d_bitmap_brush_vtbl
1352 || iface->lpVtbl == (const ID2D1BrushVtbl *)&d2d_image_brush_vtbl);
1353 return CONTAINING_RECORD(iface, struct d2d_brush, ID2D1Brush_iface);
1354}
#define assert(_expr)
Definition: assert.h:32

Referenced by d2d_command_list_create_brush(), d2d_device_context_draw_glyph_run_bitmap(), d2d_device_context_draw_glyph_run_outline(), d2d_device_context_DrawGeometry(), and d2d_device_context_FillGeometry().

◆ unsafe_impl_from_ID2D1GradientStopCollection()

static struct d2d_gradient * unsafe_impl_from_ID2D1GradientStopCollection ( ID2D1GradientStopCollection *  iface)
static

Definition at line 220 of file brush.c.

221{
222 if (!iface)
223 return NULL;
224 assert(iface->lpVtbl == &d2d_gradient_vtbl);
225 return CONTAINING_RECORD(iface, struct d2d_gradient, ID2D1GradientStopCollection_iface);
226}

Referenced by d2d_linear_gradient_brush_create(), and d2d_radial_gradient_brush_create().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( d2d  )

Variable Documentation

◆ d2d_bitmap_brush_vtbl

const struct ID2D1BitmapBrush1Vtbl d2d_bitmap_brush_vtbl
static
Initial value:
=
{
}
static void STDMETHODCALLTYPE d2d_bitmap_brush_SetInterpolationMode(ID2D1BitmapBrush1 *iface, D2D1_BITMAP_INTERPOLATION_MODE mode)
Definition: brush.c:942
static D2D1_BITMAP_INTERPOLATION_MODE STDMETHODCALLTYPE d2d_bitmap_brush_GetInterpolationMode(ID2D1BitmapBrush1 *iface)
Definition: brush.c:993
static void STDMETHODCALLTYPE d2d_bitmap_brush_SetExtendModeX(ID2D1BitmapBrush1 *iface, D2D1_EXTEND_MODE mode)
Definition: brush.c:924
static void STDMETHODCALLTYPE d2d_bitmap_brush_SetTransform(ID2D1BitmapBrush1 *iface, const D2D1_MATRIX_3X2_F *transform)
Definition: brush.c:895
static void STDMETHODCALLTYPE d2d_bitmap_brush_SetBitmap(ID2D1BitmapBrush1 *iface, ID2D1Bitmap *bitmap)
Definition: brush.c:962
static void STDMETHODCALLTYPE d2d_bitmap_brush_GetTransform(ID2D1BitmapBrush1 *iface, D2D1_MATRIX_3X2_F *transform)
Definition: brush.c:914
static void STDMETHODCALLTYPE d2d_bitmap_brush_SetOpacity(ID2D1BitmapBrush1 *iface, float opacity)
Definition: brush.c:886
static ULONG STDMETHODCALLTYPE d2d_bitmap_brush_AddRef(ID2D1BitmapBrush1 *iface)
Definition: brush.c:849
static D2D1_EXTEND_MODE STDMETHODCALLTYPE d2d_bitmap_brush_GetExtendModeX(ID2D1BitmapBrush1 *iface)
Definition: brush.c:975
static HRESULT STDMETHODCALLTYPE d2d_bitmap_brush_QueryInterface(ID2D1BitmapBrush1 *iface, REFIID iid, void **out)
Definition: brush.c:827
static void STDMETHODCALLTYPE d2d_bitmap_brush_SetInterpolationMode1(ID2D1BitmapBrush1 *iface, D2D1_INTERPOLATION_MODE mode)
Definition: brush.c:1019
static void STDMETHODCALLTYPE d2d_bitmap_brush_SetExtendModeY(ID2D1BitmapBrush1 *iface, D2D1_EXTEND_MODE mode)
Definition: brush.c:933
static void STDMETHODCALLTYPE d2d_bitmap_brush_GetBitmap(ID2D1BitmapBrush1 *iface, ID2D1Bitmap **bitmap)
Definition: brush.c:1009
static void STDMETHODCALLTYPE d2d_bitmap_brush_GetFactory(ID2D1BitmapBrush1 *iface, ID2D1Factory **factory)
Definition: brush.c:876
static float STDMETHODCALLTYPE d2d_bitmap_brush_GetOpacity(ID2D1BitmapBrush1 *iface)
Definition: brush.c:905
static ULONG STDMETHODCALLTYPE d2d_bitmap_brush_Release(ID2D1BitmapBrush1 *iface)
Definition: brush.c:859
static D2D1_INTERPOLATION_MODE STDMETHODCALLTYPE d2d_bitmap_brush_GetInterpolationMode1(ID2D1BitmapBrush1 *iface)
Definition: brush.c:1045
static D2D1_EXTEND_MODE STDMETHODCALLTYPE d2d_bitmap_brush_GetExtendModeY(ID2D1BitmapBrush1 *iface)
Definition: brush.c:984

Definition at line 1054 of file brush.c.

Referenced by d2d_bitmap_brush_create(), and unsafe_impl_from_ID2D1Brush().

◆ d2d_gradient_vtbl

const struct ID2D1GradientStopCollectionVtbl d2d_gradient_vtbl
static
Initial value:
=
{
}
static ULONG STDMETHODCALLTYPE d2d_gradient_AddRef(ID2D1GradientStopCollection *iface)
Definition: brush.c:48
static UINT32 STDMETHODCALLTYPE d2d_gradient_GetGradientStopCount(ID2D1GradientStopCollection *iface)
Definition: brush.c:85
static void STDMETHODCALLTYPE d2d_gradient_GetGradientStops(ID2D1GradientStopCollection *iface, D2D1_GRADIENT_STOP *stops, UINT32 stop_count)
Definition: brush.c:94
static ULONG STDMETHODCALLTYPE d2d_gradient_Release(ID2D1GradientStopCollection *iface)
Definition: brush.c:58
static HRESULT STDMETHODCALLTYPE d2d_gradient_QueryInterface(ID2D1GradientStopCollection *iface, REFIID iid, void **out)
Definition: brush.c:28
static void STDMETHODCALLTYPE d2d_gradient_GetFactory(ID2D1GradientStopCollection *iface, ID2D1Factory **factory)
Definition: brush.c:76
static D2D1_EXTEND_MODE STDMETHODCALLTYPE d2d_gradient_GetExtendMode(ID2D1GradientStopCollection *iface)
Definition: brush.c:111
static D2D1_GAMMA STDMETHODCALLTYPE d2d_gradient_GetColorInterpolationGamma(ID2D1GradientStopCollection *iface)
Definition: brush.c:104

Definition at line 118 of file brush.c.

Referenced by d2d_gradient_create(), and unsafe_impl_from_ID2D1GradientStopCollection().

◆ d2d_image_brush_vtbl

const struct ID2D1ImageBrushVtbl d2d_image_brush_vtbl
static
Initial value:
=
{
}
static ULONG STDMETHODCALLTYPE d2d_image_brush_AddRef(ID2D1ImageBrush *iface)
Definition: brush.c:1130
static void STDMETHODCALLTYPE d2d_image_brush_SetExtendModeY(ID2D1ImageBrush *iface, D2D1_EXTEND_MODE mode)
Definition: brush.c:1227
static void STDMETHODCALLTYPE d2d_image_brush_GetFactory(ID2D1ImageBrush *iface, ID2D1Factory **factory)
Definition: brush.c:1157
static void STDMETHODCALLTYPE d2d_image_brush_GetImage(ID2D1ImageBrush *iface, ID2D1Image **image)
Definition: brush.c:1255
static void STDMETHODCALLTYPE d2d_image_brush_GetSourceRectangle(ID2D1ImageBrush *iface, D2D1_RECT_F *rect)
Definition: brush.c:1292
static void STDMETHODCALLTYPE d2d_image_brush_SetInterpolationMode(ID2D1ImageBrush *iface, D2D1_INTERPOLATION_MODE mode)
Definition: brush.c:1236
static void STDMETHODCALLTYPE d2d_image_brush_SetSourceRectangle(ID2D1ImageBrush *iface, const D2D1_RECT_F *rect)
Definition: brush.c:1246
static ULONG STDMETHODCALLTYPE d2d_image_brush_Release(ID2D1ImageBrush *iface)
Definition: brush.c:1140
static void STDMETHODCALLTYPE d2d_image_brush_SetExtendModeX(ID2D1ImageBrush *iface, D2D1_EXTEND_MODE mode)
Definition: brush.c:1218
static D2D1_EXTEND_MODE STDMETHODCALLTYPE d2d_image_brush_GetExtendModeY(ID2D1ImageBrush *iface)
Definition: brush.c:1274
static HRESULT STDMETHODCALLTYPE d2d_image_brush_QueryInterface(ID2D1ImageBrush *iface, REFIID iid, void **out)
Definition: brush.c:1109
static void STDMETHODCALLTYPE d2d_image_brush_SetOpacity(ID2D1ImageBrush *iface, float opacity)
Definition: brush.c:1167
static void STDMETHODCALLTYPE d2d_image_brush_SetTransform(ID2D1ImageBrush *iface, const D2D1_MATRIX_3X2_F *transform)
Definition: brush.c:1176
static D2D1_EXTEND_MODE STDMETHODCALLTYPE d2d_image_brush_GetExtendModeX(ID2D1ImageBrush *iface)
Definition: brush.c:1265
static D2D1_INTERPOLATION_MODE STDMETHODCALLTYPE d2d_image_brush_GetInterpolationMode(ID2D1ImageBrush *iface)
Definition: brush.c:1283
static void STDMETHODCALLTYPE d2d_image_brush_SetImage(ID2D1ImageBrush *iface, ID2D1Image *image)
Definition: brush.c:1205
static float STDMETHODCALLTYPE d2d_image_brush_GetOpacity(ID2D1ImageBrush *iface)
Definition: brush.c:1186
static void STDMETHODCALLTYPE d2d_image_brush_GetTransform(ID2D1ImageBrush *iface, D2D1_MATRIX_3X2_F *transform)
Definition: brush.c:1195

Definition at line 1301 of file brush.c.

Referenced by d2d_image_brush_create(), and unsafe_impl_from_ID2D1Brush().

◆ d2d_linear_gradient_brush_vtbl

const struct ID2D1LinearGradientBrushVtbl d2d_linear_gradient_brush_vtbl
static
Initial value:
=
{
}
static float STDMETHODCALLTYPE d2d_linear_gradient_brush_GetOpacity(ID2D1LinearGradientBrush *iface)
Definition: brush.c:484
static void STDMETHODCALLTYPE d2d_linear_gradient_brush_SetOpacity(ID2D1LinearGradientBrush *iface, float opacity)
Definition: brush.c:465
static void STDMETHODCALLTYPE d2d_linear_gradient_brush_GetGradientStopCollection(ID2D1LinearGradientBrush *iface, ID2D1GradientStopCollection **gradient)
Definition: brush.c:545
static D2D1_POINT_2F *STDMETHODCALLTYPE d2d_linear_gradient_brush_GetEndPoint(ID2D1LinearGradientBrush *iface, D2D1_POINT_2F *point)
Definition: brush.c:534
static ULONG STDMETHODCALLTYPE d2d_linear_gradient_brush_Release(ID2D1LinearGradientBrush *iface)
Definition: brush.c:439
static ULONG STDMETHODCALLTYPE d2d_linear_gradient_brush_AddRef(ID2D1LinearGradientBrush *iface)
Definition: brush.c:429
static void STDMETHODCALLTYPE d2d_linear_gradient_brush_SetTransform(ID2D1LinearGradientBrush *iface, const D2D1_MATRIX_3X2_F *transform)
Definition: brush.c:474
static void STDMETHODCALLTYPE d2d_linear_gradient_brush_GetFactory(ID2D1LinearGradientBrush *iface, ID2D1Factory **factory)
Definition: brush.c:455
static void STDMETHODCALLTYPE d2d_linear_gradient_brush_SetStartPoint(ID2D1LinearGradientBrush *iface, D2D1_POINT_2F start_point)
Definition: brush.c:503
static void STDMETHODCALLTYPE d2d_linear_gradient_brush_SetEndPoint(ID2D1LinearGradientBrush *iface, D2D1_POINT_2F end_point)
Definition: brush.c:513
static D2D1_POINT_2F *STDMETHODCALLTYPE d2d_linear_gradient_brush_GetStartPoint(ID2D1LinearGradientBrush *iface, D2D1_POINT_2F *point)
Definition: brush.c:523
static void STDMETHODCALLTYPE d2d_linear_gradient_brush_GetTransform(ID2D1LinearGradientBrush *iface, D2D1_MATRIX_3X2_F *transform)
Definition: brush.c:493
static HRESULT STDMETHODCALLTYPE d2d_linear_gradient_brush_QueryInterface(ID2D1LinearGradientBrush *iface, REFIID iid, void **out)
Definition: brush.c:408

Definition at line 555 of file brush.c.

Referenced by d2d_linear_gradient_brush_create(), and unsafe_impl_from_ID2D1Brush().

◆ d2d_radial_gradient_brush_vtbl

const struct ID2D1RadialGradientBrushVtbl d2d_radial_gradient_brush_vtbl
static
Initial value:
=
{
}
static void STDMETHODCALLTYPE d2d_radial_gradient_brush_SetGradientOriginOffset(ID2D1RadialGradientBrush *iface, D2D1_POINT_2F offset)
Definition: brush.c:700
static float STDMETHODCALLTYPE d2d_radial_gradient_brush_GetRadiusY(ID2D1RadialGradientBrush *iface)
Definition: brush.c:759
static void STDMETHODCALLTYPE d2d_radial_gradient_brush_SetRadiusY(ID2D1RadialGradientBrush *iface, float radius)
Definition: brush.c:719
static ULONG STDMETHODCALLTYPE d2d_radial_gradient_brush_AddRef(ID2D1RadialGradientBrush *iface)
Definition: brush.c:616
static HRESULT STDMETHODCALLTYPE d2d_radial_gradient_brush_QueryInterface(ID2D1RadialGradientBrush *iface, REFIID iid, void **out)
Definition: brush.c:595
static D2D1_POINT_2F *STDMETHODCALLTYPE d2d_radial_gradient_brush_GetCenter(ID2D1RadialGradientBrush *iface, D2D1_POINT_2F *centre)
Definition: brush.c:728
static D2D1_POINT_2F *STDMETHODCALLTYPE d2d_radial_gradient_brush_GetGradientOriginOffset(ID2D1RadialGradientBrush *iface, D2D1_POINT_2F *offset)
Definition: brush.c:739
static ULONG STDMETHODCALLTYPE d2d_radial_gradient_brush_Release(ID2D1RadialGradientBrush *iface)
Definition: brush.c:626
static void STDMETHODCALLTYPE d2d_radial_gradient_brush_GetFactory(ID2D1RadialGradientBrush *iface, ID2D1Factory **factory)
Definition: brush.c:642
static void STDMETHODCALLTYPE d2d_radial_gradient_brush_GetTransform(ID2D1RadialGradientBrush *iface, D2D1_MATRIX_3X2_F *transform)
Definition: brush.c:680
static void STDMETHODCALLTYPE d2d_radial_gradient_brush_SetCenter(ID2D1RadialGradientBrush *iface, D2D1_POINT_2F centre)
Definition: brush.c:690
static float STDMETHODCALLTYPE d2d_radial_gradient_brush_GetOpacity(ID2D1RadialGradientBrush *iface)
Definition: brush.c:671
static void STDMETHODCALLTYPE d2d_radial_gradient_brush_SetRadiusX(ID2D1RadialGradientBrush *iface, float radius)
Definition: brush.c:710
static void STDMETHODCALLTYPE d2d_radial_gradient_brush_SetTransform(ID2D1RadialGradientBrush *iface, const D2D1_MATRIX_3X2_F *transform)
Definition: brush.c:661
static void STDMETHODCALLTYPE d2d_radial_gradient_brush_GetGradientStopCollection(ID2D1RadialGradientBrush *iface, ID2D1GradientStopCollection **gradient)
Definition: brush.c:768
static void STDMETHODCALLTYPE d2d_radial_gradient_brush_SetOpacity(ID2D1RadialGradientBrush *iface, float opacity)
Definition: brush.c:652
static float STDMETHODCALLTYPE d2d_radial_gradient_brush_GetRadiusX(ID2D1RadialGradientBrush *iface)
Definition: brush.c:750

Definition at line 778 of file brush.c.

Referenced by d2d_radial_gradient_brush_create(), and unsafe_impl_from_ID2D1Brush().

◆ d2d_solid_color_brush_vtbl

const struct ID2D1SolidColorBrushVtbl d2d_solid_color_brush_vtbl
static
Initial value:
=
{
}
static HRESULT STDMETHODCALLTYPE d2d_solid_color_brush_QueryInterface(ID2D1SolidColorBrush *iface, REFIID iid, void **out)
Definition: brush.c:265
static D2D1_COLOR_F *STDMETHODCALLTYPE d2d_solid_color_brush_GetColor(ID2D1SolidColorBrush *iface, D2D1_COLOR_F *color)
Definition: brush.c:365
static void STDMETHODCALLTYPE d2d_solid_color_brush_SetOpacity(ID2D1SolidColorBrush *iface, float opacity)
Definition: brush.c:318
static float STDMETHODCALLTYPE d2d_solid_color_brush_GetOpacity(ID2D1SolidColorBrush *iface)
Definition: brush.c:337
static void STDMETHODCALLTYPE d2d_solid_color_brush_GetFactory(ID2D1SolidColorBrush *iface, ID2D1Factory **factory)
Definition: brush.c:309
static void STDMETHODCALLTYPE d2d_solid_color_brush_SetColor(ID2D1SolidColorBrush *iface, const D2D1_COLOR_F *color)
Definition: brush.c:356
static void STDMETHODCALLTYPE d2d_solid_color_brush_GetTransform(ID2D1SolidColorBrush *iface, D2D1_MATRIX_3X2_F *transform)
Definition: brush.c:346
static void STDMETHODCALLTYPE d2d_solid_color_brush_SetTransform(ID2D1SolidColorBrush *iface, const D2D1_MATRIX_3X2_F *transform)
Definition: brush.c:327
static ULONG STDMETHODCALLTYPE d2d_solid_color_brush_AddRef(ID2D1SolidColorBrush *iface)
Definition: brush.c:286
static ULONG STDMETHODCALLTYPE d2d_solid_color_brush_Release(ID2D1SolidColorBrush *iface)
Definition: brush.c:296

Definition at line 375 of file brush.c.

Referenced by d2d_solid_color_brush_create(), and unsafe_impl_from_ID2D1Brush().