void d2d_solid_color_brush_init(struct d2d_brush *brush, ID2D1Factory *factory, const D2D1_COLOR_F *color, const D2D1_BRUSH_PROPERTIES *desc) { d2d_brush_init(brush, factory, D2D_BRUSH_TYPE_SOLID, desc, (ID2D1BrushVtbl *)&d2d_solid_color_brush_vtbl); brush->u.solid.color = *color; }
HRESULT d2d_bitmap_brush_init(struct d2d_brush *brush, struct d2d_d3d_render_target *render_target, ID2D1Bitmap *bitmap, const D2D1_BITMAP_BRUSH_PROPERTIES *bitmap_brush_desc, const D2D1_BRUSH_PROPERTIES *brush_desc) { D3D10_SAMPLER_DESC sampler_desc; HRESULT hr; FIXME("Ignoring brush properties.\n"); d2d_brush_init(brush, &render_target->ID2D1RenderTarget_iface, D2D_BRUSH_TYPE_BITMAP, brush_desc, (ID2D1BrushVtbl *)&d2d_bitmap_brush_vtbl); brush->u.bitmap.bitmap = unsafe_impl_from_ID2D1Bitmap(bitmap); sampler_desc.Filter = D3D10_FILTER_MIN_MAG_MIP_POINT; sampler_desc.AddressU = D3D10_TEXTURE_ADDRESS_CLAMP; sampler_desc.AddressV = D3D10_TEXTURE_ADDRESS_CLAMP; sampler_desc.AddressW = D3D10_TEXTURE_ADDRESS_CLAMP; sampler_desc.MipLODBias = 0.0f; sampler_desc.MaxAnisotropy = 0; sampler_desc.ComparisonFunc = D3D10_COMPARISON_NEVER; sampler_desc.BorderColor[0] = 0.0f; sampler_desc.BorderColor[1] = 0.0f; sampler_desc.BorderColor[2] = 0.0f; sampler_desc.BorderColor[3] = 0.0f; sampler_desc.MinLOD = 0.0f; sampler_desc.MaxLOD = 0.0f; if (FAILED(hr = ID3D10Device_CreateSamplerState(render_target->device, &sampler_desc, &brush->u.bitmap.sampler_state))) { ERR("Failed to create sampler state, hr %#x.\n", hr); return hr; } return S_OK; }
void d2d_solid_color_brush_init(struct d2d_brush *brush, ID2D1RenderTarget *render_target, const D2D1_COLOR_F *color, const D2D1_BRUSH_PROPERTIES *desc) { FIXME("Ignoring brush properties.\n"); d2d_brush_init(brush, render_target, desc, (ID2D1BrushVtbl *)&d2d_solid_color_brush_vtbl); }
void d2d_linear_gradient_brush_init(struct d2d_brush *brush, ID2D1RenderTarget *render_target, const D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES *gradient_brush_desc, const D2D1_BRUSH_PROPERTIES *brush_desc, ID2D1GradientStopCollection *gradient) { FIXME("Ignoring brush properties.\n"); d2d_brush_init(brush, render_target, brush_desc, (ID2D1BrushVtbl *)&d2d_solid_color_brush_vtbl); }
void d2d_bitmap_brush_init(struct d2d_brush *brush, ID2D1RenderTarget *render_target, const ID2D1Bitmap *bitmap, const D2D1_BITMAP_BRUSH_PROPERTIES *bitmap_brush_desc, const D2D1_BRUSH_PROPERTIES *brush_desc) { FIXME("Ignoring brush properties.\n"); d2d_brush_init(brush, render_target, D2D_BRUSH_TYPE_BITMAP, brush_desc, (ID2D1BrushVtbl *)&d2d_bitmap_brush_vtbl); }
void d2d_linear_gradient_brush_init(struct d2d_brush *brush, ID2D1Factory *factory, const D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES *gradient_brush_desc, const D2D1_BRUSH_PROPERTIES *brush_desc, ID2D1GradientStopCollection *gradient) { FIXME("Ignoring brush properties.\n"); d2d_brush_init(brush, factory, D2D_BRUSH_TYPE_LINEAR, brush_desc, (ID2D1BrushVtbl *)&d2d_linear_gradient_brush_vtbl); }
void d2d_bitmap_brush_init(struct d2d_brush *brush, ID2D1Factory *factory, ID2D1Bitmap *bitmap, const D2D1_BITMAP_BRUSH_PROPERTIES *bitmap_brush_desc, const D2D1_BRUSH_PROPERTIES *brush_desc) { d2d_brush_init(brush, factory, D2D_BRUSH_TYPE_BITMAP, brush_desc, (ID2D1BrushVtbl *)&d2d_bitmap_brush_vtbl); if ((brush->u.bitmap.bitmap = unsafe_impl_from_ID2D1Bitmap(bitmap))) ID2D1Bitmap_AddRef(&brush->u.bitmap.bitmap->ID2D1Bitmap_iface); if (bitmap_brush_desc) { brush->u.bitmap.extend_mode_x = bitmap_brush_desc->extendModeX; brush->u.bitmap.extend_mode_y = bitmap_brush_desc->extendModeY; brush->u.bitmap.interpolation_mode = bitmap_brush_desc->interpolationMode; } else { brush->u.bitmap.extend_mode_x = D2D1_EXTEND_MODE_CLAMP; brush->u.bitmap.extend_mode_y = D2D1_EXTEND_MODE_CLAMP; brush->u.bitmap.interpolation_mode = D2D1_BITMAP_INTERPOLATION_MODE_LINEAR; } }