static void STDMETHODCALLTYPE d2d_solid_color_brush_GetFactory(ID2D1SolidColorBrush *iface, ID2D1Factory **factory) { struct d2d_brush *brush = impl_from_ID2D1SolidColorBrush(iface); TRACE("iface %p, factory %p.\n", iface, factory); ID2D1Factory_AddRef(*factory = brush->factory); }
static void STDMETHODCALLTYPE d2d_bitmap_GetFactory(ID2D1Bitmap *iface, ID2D1Factory **factory) { struct d2d_bitmap *bitmap = impl_from_ID2D1Bitmap(iface); TRACE("iface %p, factory %p.\n", iface, factory); ID2D1Factory_AddRef(*factory = bitmap->factory); }
static void STDMETHODCALLTYPE d2d_gradient_GetFactory(ID2D1GradientStopCollection *iface, ID2D1Factory **factory) { struct d2d_gradient *gradient = impl_from_ID2D1GradientStopCollection(iface); TRACE("iface %p, factory %p.\n", iface, factory); ID2D1Factory_AddRef(*factory = gradient->factory); }
static void STDMETHODCALLTYPE d2d_layer_GetFactory(ID2D1Layer *iface, ID2D1Factory **factory) { struct d2d_layer *layer = impl_from_ID2D1Layer(iface); TRACE("iface %p, factory %p.\n", iface, factory); ID2D1Factory_AddRef(*factory = layer->factory); }
static void STDMETHODCALLTYPE d2d_linear_gradient_brush_GetFactory(ID2D1LinearGradientBrush *iface, ID2D1Factory **factory) { struct d2d_brush *brush = impl_from_ID2D1LinearGradientBrush(iface); TRACE("iface %p, factory %p.\n", iface, factory); ID2D1Factory_AddRef(*factory = brush->factory); }
HRESULT d2d_layer_create(ID2D1Factory *factory, const D2D1_SIZE_F *size, struct d2d_layer **layer) { if (!(*layer = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(**layer)))) return E_OUTOFMEMORY; (*layer)->ID2D1Layer_iface.lpVtbl = &d2d_layer_vtbl; (*layer)->refcount = 1; ID2D1Factory_AddRef((*layer)->factory = factory); if (size) (*layer)->size = *size; TRACE("Created layer %p.\n", *layer); return S_OK; }
HRESULT d2d_gradient_init(struct d2d_gradient *gradient, ID2D1Factory *factory, const D2D1_GRADIENT_STOP *stops, UINT32 stop_count, D2D1_GAMMA gamma, D2D1_EXTEND_MODE extend_mode) { FIXME("Ignoring gradient properties.\n"); gradient->ID2D1GradientStopCollection_iface.lpVtbl = &d2d_gradient_vtbl; gradient->refcount = 1; ID2D1Factory_AddRef(gradient->factory = factory); gradient->stop_count = stop_count; if (!(gradient->stops = HeapAlloc(GetProcessHeap(), 0, stop_count * sizeof(*stops)))) return E_OUTOFMEMORY; memcpy(gradient->stops, stops, stop_count * sizeof(*stops)); return S_OK; }
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 const D2D1_MATRIX_3X2_F identity = { 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, }; brush->ID2D1Brush_iface.lpVtbl = vtbl; brush->refcount = 1; ID2D1Factory_AddRef(brush->factory = factory); brush->opacity = desc ? desc->opacity : 1.0f; brush->transform = desc ? desc->transform : identity; brush->type = type; }
static void d2d_bitmap_init(struct d2d_bitmap *bitmap, ID2D1Factory *factory, ID3D10ShaderResourceView *view, D2D1_SIZE_U size, const D2D1_BITMAP_PROPERTIES *desc) { bitmap->ID2D1Bitmap_iface.lpVtbl = &d2d_bitmap_vtbl; bitmap->refcount = 1; ID2D1Factory_AddRef(bitmap->factory = factory); ID3D10ShaderResourceView_AddRef(bitmap->view = view); bitmap->pixel_size = size; bitmap->format = desc->pixelFormat; bitmap->dpi_x = desc->dpiX; bitmap->dpi_y = desc->dpiY; if (bitmap->dpi_x == 0.0f && bitmap->dpi_y == 0.0f) { bitmap->dpi_x = 96.0f; bitmap->dpi_y = 96.0f; } }