225 ID2D1CommandList_AddRef(iface);
256 ID2D1Factory_Release(command_list->
factory);
258 IUnknown_Release(command_list->
objects[
i]);
282 TRACE(
"iface %p, sink %p.\n", iface,
sink);
290 end = (
char *)command_list->
data + command_list->
size;
300 hr = ID2D1CommandSink_SetAntialiasMode(
sink,
c->mode);
306 hr = ID2D1CommandSink_SetTags(
sink,
c->tag1,
c->tag2);
312 hr = ID2D1CommandSink_SetTextAntialiasMode(
sink,
c->mode);
318 hr = ID2D1CommandSink_SetTextRenderingParams(
sink,
c->params);
324 hr = ID2D1CommandSink_SetTransform(
sink, &
c->transform);
333 switch (
c->primitive_blend)
337 hr = ID2D1CommandSink_SetPrimitiveBlend(
sink,
c->primitive_blend);
341 if (
SUCCEEDED(ID2D1CommandSink_QueryInterface(
sink, &IID_ID2D1CommandSink1, (
void **)&sink1)))
343 hr = ID2D1CommandSink1_SetPrimitiveBlend1(sink1,
c->primitive_blend);
344 ID2D1CommandSink1_Release(sink1);
350 if (
SUCCEEDED(ID2D1CommandSink_QueryInterface(
sink, &IID_ID2D1CommandSink4, (
void **)&sink4)))
352 hr = ID2D1CommandSink4_SetPrimitiveBlend2(sink4,
c->primitive_blend);
353 ID2D1CommandSink4_Release(sink4);
359 FIXME(
"Unexpected blend mode %u.\n",
c->primitive_blend);
367 hr = ID2D1CommandSink_SetUnitMode(
sink,
c->mode);
373 hr = ID2D1CommandSink_Clear(
sink, &
c->color);
379 hr = ID2D1CommandSink_DrawGlyphRun(
sink,
c->origin, &
c->run,
c->run_desc,
c->brush,
c->measuring_mode);
385 hr = ID2D1CommandSink_DrawLine(
sink,
c->p0,
c->p1,
c->brush,
c->stroke_width,
392 hr = ID2D1CommandSink_DrawGeometry(
sink,
c->geometry,
c->brush,
c->stroke_width,
399 hr = ID2D1CommandSink_DrawRectangle(
sink, &
c->rect,
c->brush,
c->stroke_width,
406 hr = ID2D1CommandSink_DrawBitmap(
sink,
c->bitmap,
c->dst_rect,
c->opacity,
407 c->interpolation_mode,
c->src_rect,
c->perspective_transform);
413 hr = ID2D1CommandSink_DrawImage(
sink,
c->image,
c->target_offset,
c->image_rect,
414 c->interpolation_mode,
c->composite_mode);
420 hr = ID2D1CommandSink_FillMesh(
sink,
c->mesh,
c->brush);
426 hr = ID2D1CommandSink_FillOpacityMask(
sink,
c->bitmap,
c->brush,
c->dst_rect,
c->src_rect);
432 hr = ID2D1CommandSink_FillGeometry(
sink,
c->geometry,
c->brush,
c->opacity_brush);
438 hr = ID2D1CommandSink_FillRectangle(
sink, &
c->rect,
c->brush);
444 hr = ID2D1CommandSink_PushAxisAlignedClip(
sink, &
c->rect,
c->mode);
450 hr = ID2D1CommandSink_PushLayer(
sink, &
c->params,
c->layer);
454 hr = ID2D1CommandSink_PopAxisAlignedClip(
sink);
457 hr = ID2D1CommandSink_PopLayer(
sink);
469 return ID2D1CommandSink_EndDraw(
sink);
476 FIXME(
"iface %p stub.\n", iface);
500 if (!(*command_list =
calloc(1,
sizeof(**command_list))))
504 (*command_list)->refcount = 1;
505 ID2D1Factory_AddRef((*command_list)->factory =
factory);
507 TRACE(
"Created command list %p.\n", *command_list);
548 IUnknown_AddRef(
obj);
563 properties.
opacity = brush->opacity;
569 hr = ID2D1DeviceContext_CreateSolidColorBrush(
context, &brush->u.solid.color,
573 linear_properties.
startPoint = brush->u.linear.start;
574 linear_properties.
endPoint = brush->u.linear.end;
575 hr = ID2D1DeviceContext_CreateLinearGradientBrush(
context, &linear_properties,
576 &properties, &brush->u.linear.gradient->ID2D1GradientStopCollection_iface,
580 radial_properties.
center = brush->u.radial.centre;
582 radial_properties.
radiusX = brush->u.radial.radius.x;
583 radial_properties.
radiusY = brush->u.radial.radius.y;
584 hr = ID2D1DeviceContext_CreateRadialGradientBrush(
context, &radial_properties,
585 &properties, &brush->u.radial.gradient->ID2D1GradientStopCollection_iface,
589 bitmap_properties.
extendModeX = brush->u.bitmap.extend_mode_x;
590 bitmap_properties.
extendModeY = brush->u.bitmap.extend_mode_y;
592 hr = ID2D1DeviceContext_CreateBitmapBrush(
context, (
ID2D1Bitmap *)&brush->u.bitmap.bitmap->ID2D1Bitmap1_iface,
597 image_properties.
extendModeX = brush->u.image.extend_mode_x;
598 image_properties.
extendModeY = brush->u.image.extend_mode_y;
600 hr = ID2D1DeviceContext_CreateImageBrush(
context, brush->u.image.image,
604 FIXME(
"Unsupported brush type %u.\n", brush->type);
611 ID2D1Brush_Release(*
ret);
722 params->opacityBrush, &opacity_brush)))
734 command->params.opacityBrush = opacity_brush;
842 ID2D1Brush_Release(
brush);
878 if (!
params && !allow_null)
return;
889 command_list->
flags &= ~D2D_COMMAND_LIST_HAS_NULL_TEXT_RENDERING_PARAMS;
943 context->text_rendering_params);
948 size =
sizeof(*command);
954 size +=
sizeof(*run_desc);
1007 size =
sizeof(*command);
1035 size =
sizeof(*command);
1087 size =
sizeof(*command);
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define STDMETHODCALLTYPE
while(CdLookupNextInitialFileDirent(IrpContext, Fcb, FileContext))
void d2d_command_list_draw_geometry(struct d2d_command_list *command_list, const struct d2d_device_context *context, ID2D1Geometry *geometry, ID2D1Brush *orig_brush, float stroke_width, ID2D1StrokeStyle *stroke_style)
void d2d_command_list_fill_opacity_mask(struct d2d_command_list *command_list, const struct d2d_device_context *context, ID2D1Bitmap *bitmap, ID2D1Brush *orig_brush, const D2D1_RECT_F *dst_rect, const D2D1_RECT_F *src_rect)
void d2d_command_list_set_unit_mode(struct d2d_command_list *command_list, D2D1_UNIT_MODE mode)
static HRESULT d2d_command_list_create_brush(struct d2d_command_list *command_list, const struct d2d_device_context *ctx, ID2D1Brush *orig_brush, ID2D1Brush **ret)
static struct d2d_command_list * impl_from_ID2D1CommandList(ID2D1CommandList *iface)
void d2d_command_list_pop_layer(struct d2d_command_list *command_list)
void d2d_command_list_push_layer(struct d2d_command_list *command_list, const struct d2d_device_context *context, const D2D1_LAYER_PARAMETERS1 *params, ID2D1Layer *layer)
void d2d_command_list_set_text_rendering_params(struct d2d_command_list *command_list, IDWriteRenderingParams *params)
void d2d_command_list_draw_line(struct d2d_command_list *command_list, const struct d2d_device_context *context, D2D1_POINT_2F p0, D2D1_POINT_2F p1, ID2D1Brush *orig_brush, float stroke_width, ID2D1StrokeStyle *stroke_style)
void d2d_command_list_fill_mesh(struct d2d_command_list *command_list, const struct d2d_device_context *context, ID2D1Mesh *mesh, ID2D1Brush *orig_brush)
void d2d_command_list_set_transform(struct d2d_command_list *command_list, const D2D1_MATRIX_3X2_F *transform)
@ D2D_COMMAND_LIST_HAS_NULL_TEXT_RENDERING_PARAMS
@ D2D_COMMAND_FILL_OPACITY_MASK
@ D2D_COMMAND_DRAW_GLYPH_RUN
@ D2D_COMMAND_SET_PRIMITIVE_BLEND
@ D2D_COMMAND_SET_ANTIALIAS_MODE
@ D2D_COMMAND_SET_UNIT_MODE
@ D2D_COMMAND_FILL_RECTANGLE
@ D2D_COMMAND_DRAW_GEOMETRY
@ D2D_COMMAND_DRAW_RECTANGLE
@ D2D_COMMAND_SET_TEXT_ANTIALIAS_MODE
@ D2D_COMMAND_SET_TEXT_RENDERING_PARAMS
@ D2D_COMMAND_FILL_GEOMETRY
@ D2D_COMMAND_DRAW_BITMAP
@ D2D_COMMAND_SET_TRANSFORM
void d2d_command_list_set_text_antialias_mode(struct d2d_command_list *command_list, D2D1_TEXT_ANTIALIAS_MODE mode)
HRESULT d2d_command_list_create(ID2D1Factory *factory, struct d2d_command_list **command_list)
void d2d_command_list_set_tags(struct d2d_command_list *command_list, D2D1_TAG tag1, D2D1_TAG tag2)
static void d2d_command_list_set_text_rendering_params_internal(struct d2d_command_list *command_list, BOOL allow_null, IDWriteRenderingParams *params)
void d2d_command_list_set_primitive_blend(struct d2d_command_list *command_list, D2D1_PRIMITIVE_BLEND primitive_blend)
void d2d_command_list_draw_bitmap(struct d2d_command_list *command_list, ID2D1Bitmap *bitmap, const D2D1_RECT_F *dst_rect, float opacity, D2D1_INTERPOLATION_MODE interpolation_mode, const D2D1_RECT_F *src_rect, const D2D1_MATRIX_4X4_F *perspective_transform)
void d2d_command_list_draw_rectangle(struct d2d_command_list *command_list, const struct d2d_device_context *context, const D2D1_RECT_F *rect, ID2D1Brush *orig_brush, float stroke_width, ID2D1StrokeStyle *stroke_style)
void d2d_command_list_push_clip(struct d2d_command_list *command_list, const D2D1_RECT_F *rect, D2D1_ANTIALIAS_MODE mode)
void d2d_command_list_fill_geometry(struct d2d_command_list *command_list, const struct d2d_device_context *context, ID2D1Geometry *geometry, ID2D1Brush *orig_brush, ID2D1Brush *orig_opacity_brush)
void d2d_command_list_draw_glyph_run(struct d2d_command_list *command_list, const struct d2d_device_context *context, D2D1_POINT_2F origin, const DWRITE_GLYPH_RUN *run, const DWRITE_GLYPH_RUN_DESCRIPTION *run_desc, ID2D1Brush *orig_brush, DWRITE_MEASURING_MODE measuring_mode)
static void d2d_command_list_reference_object(struct d2d_command_list *command_list, void *object)
struct d2d_command_list * unsafe_impl_from_ID2D1CommandList(ID2D1CommandList *iface)
static void d2d_command_list_write_field(BYTE **data, void *dst, const void *src, size_t size)
void d2d_command_list_clear(struct d2d_command_list *command_list, const D2D1_COLOR_F *color)
void d2d_command_list_draw_image(struct d2d_command_list *command_list, ID2D1Image *image, const D2D1_POINT_2F *target_offset, const D2D1_RECT_F *image_rect, D2D1_INTERPOLATION_MODE interpolation_mode, D2D1_COMPOSITE_MODE composite_mode)
void d2d_command_list_set_antialias_mode(struct d2d_command_list *command_list, D2D1_ANTIALIAS_MODE mode)
static HRESULT STDMETHODCALLTYPE d2d_command_list_Close(ID2D1CommandList *iface)
void d2d_command_list_begin_draw(struct d2d_command_list *command_list, const struct d2d_device_context *context)
void d2d_command_list_fill_rectangle(struct d2d_command_list *command_list, const struct d2d_device_context *context, const D2D1_RECT_F *rect, ID2D1Brush *orig_brush)
static HRESULT STDMETHODCALLTYPE d2d_command_list_QueryInterface(ID2D1CommandList *iface, REFIID iid, void **out)
static void * d2d_command_list_require_space(struct d2d_command_list *command_list, size_t size)
static const ID2D1CommandListVtbl d2d_command_list_vtbl
static ULONG STDMETHODCALLTYPE d2d_command_list_AddRef(ID2D1CommandList *iface)
static ULONG STDMETHODCALLTYPE d2d_command_list_Release(ID2D1CommandList *iface)
static void STDMETHODCALLTYPE d2d_command_list_GetFactory(ID2D1CommandList *iface, ID2D1Factory **factory)
void d2d_command_list_pop_clip(struct d2d_command_list *command_list)
static HRESULT STDMETHODCALLTYPE d2d_command_list_Stream(ID2D1CommandList *iface, ID2D1CommandSink *sink)
@ D2D1_PRIMITIVE_BLEND_ADD
@ D2D1_PRIMITIVE_BLEND_SOURCE_OVER
@ D2D1_PRIMITIVE_BLEND_MIN
@ D2D1_PRIMITIVE_BLEND_MAX
@ D2D1_PRIMITIVE_BLEND_COPY
static BOOL d2d_array_reserve(void **elements, size_t *capacity, size_t count, size_t size)
@ D2D_COMMAND_LIST_STATE_INITIAL
@ D2D_COMMAND_LIST_STATE_CLOSED
@ D2D_COMMAND_LIST_STATE_ERROR
@ D2D_COMMAND_LIST_STATE_OPEN
struct d2d_brush * unsafe_impl_from_ID2D1Brush(ID2D1Brush *iface)
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLdouble GLdouble GLdouble r
GLuint GLenum GLenum transform
GLenum const GLfloat * params
GLsizei GLenum GLboolean sink
GLenum GLuint GLint GLint layer
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
#define memcpy(s1, s2, n)
#define IsEqualGUID(rguid1, rguid2)
D2D1_INTERPOLATION_MODE interpolationMode
D2D1_EXTEND_MODE extendModeY
D2D1_EXTEND_MODE extendModeX
D2D1_MATRIX_3X2_F transform
D2D1_INTERPOLATION_MODE interpolationMode
D2D1_EXTEND_MODE extendModeX
D2D1_EXTEND_MODE extendModeY
D2D1_RECT_F sourceRectangle
D2D1_POINT_2F gradientOriginOffset
UINT16 const * clusterMap
IDWriteFontFace * fontFace
DWRITE_GLYPH_OFFSET const * glyphOffsets
UINT16 const * glyphIndices
FLOAT const * glyphAdvances
D2D1_MATRIX_4X4_F * perspective_transform
D2D1_INTERPOLATION_MODE interpolation_mode
ID2D1StrokeStyle * stroke_style
DWRITE_GLYPH_RUN_DESCRIPTION * run_desc
DWRITE_MEASURING_MODE measuring_mode
D2D1_COMPOSITE_MODE composite_mode
D2D1_POINT_2F * target_offset
D2D1_INTERPOLATION_MODE interpolation_mode
ID2D1StrokeStyle * stroke_style
ID2D1StrokeStyle * stroke_style
ID2D1Brush * opacity_brush
ID2D1CommandList ID2D1CommandList_iface
enum d2d_command_list_state state
D2D1_LAYER_PARAMETERS1 params
D2D1_PRIMITIVE_BLEND primitive_blend
D2D1_TEXT_ANTIALIAS_MODE mode
IDWriteRenderingParams * params
#define CONTAINING_RECORD(address, type, field)
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
#define D2DERR_WRONG_STATE