/* * Copyright 2017 Lucian Poston * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ import "d2d1.idl"; interface ID2D1Device; interface ID2D1StrokeStyle1; interface ID2D1PathGeometry1; interface ID2D1DrawingStateBlock1; interface ID2D1GdiMetafile; interface ID2D1Properties; typedef enum D2D1_STROKE_TRANSFORM_TYPE { D2D1_STROKE_TRANSFORM_TYPE_NORMAL = 0x0, D2D1_STROKE_TRANSFORM_TYPE_FIXED = 0x1, D2D1_STROKE_TRANSFORM_TYPE_HAIRLINE = 0x2, D2D1_STROKE_TRANSFORM_TYPE_FORCE_DWORD = 0xffffffff, } D2D1_STROKE_TRANSFORM_TYPE; typedef enum D2D1_PRIMITIVE_BLEND { D2D1_PRIMITIVE_BLEND_SOURCE_OVER = 0x0, D2D1_PRIMITIVE_BLEND_COPY = 0x1, D2D1_PRIMITIVE_BLEND_MIN = 0x2, D2D1_PRIMITIVE_BLEND_ADD = 0x3, D2D1_PRIMITIVE_BLEND_MAX = 0x4, D2D1_PRIMITIVE_BLEND_FORCE_DWORD = 0xffffffff, } D2D1_PRIMITIVE_BLEND; typedef enum D2D1_UNIT_MODE { D2D1_UNIT_MODE_DIPS = 0x0, D2D1_UNIT_MODE_PIXELS = 0x1, D2D1_UNIT_MODE_FORCE_DWORD = 0xffffffff, } D2D1_UNIT_MODE; typedef struct D2D1_PROPERTY_BINDING D2D1_PROPERTY_BINDING; typedef struct D2D1_STROKE_STYLE_PROPERTIES1 { D2D1_CAP_STYLE startCap; D2D1_CAP_STYLE endCap; D2D1_CAP_STYLE dashCap; D2D1_LINE_JOIN lineJoin; float miterLimit; D2D1_DASH_STYLE dashStyle; float dashOffset; D2D1_STROKE_TRANSFORM_TYPE transformType; } D2D1_STROKE_STYLE_PROPERTIES1; typedef struct D2D1_DRAWING_STATE_DESCRIPTION1 { D2D1_ANTIALIAS_MODE antialiasMode; D2D1_TEXT_ANTIALIAS_MODE textAntialiasMode; D2D1_TAG tag1; D2D1_TAG tag2; D2D1_MATRIX_3X2_F transform; D2D1_PRIMITIVE_BLEND primitiveBlend; D2D1_UNIT_MODE unitMode; } D2D1_DRAWING_STATE_DESCRIPTION1; typedef HRESULT (__stdcall *PD2D1_EFFECT_FACTORY)(IUnknown **effect); [ object, uuid(bb12d362-daee-4b9a-aa1d-14ba401cfa1f), local, ] interface ID2D1Factory1 : ID2D1Factory { HRESULT CreateDevice( [in] IDXGIDevice *dxgi_device, [out] ID2D1Device **device ); HRESULT CreateStrokeStyle( [in] const D2D1_STROKE_STYLE_PROPERTIES1 *desc, [in, size_is(dash_count)] const float *dashes, [in] UINT32 dash_count, [out] ID2D1StrokeStyle1 **stroke_style ); HRESULT CreatePathGeometry( [out] ID2D1PathGeometry1 **geometry ); HRESULT CreateDrawingStateBlock( [in] const D2D1_DRAWING_STATE_DESCRIPTION1 *desc, [in] IDWriteRenderingParams *text_rendering_params, [out] ID2D1DrawingStateBlock1 **state_block ); HRESULT CreateGdiMetafile( [in] IStream *stream, [out] ID2D1GdiMetafile **metafile ); HRESULT RegisterEffectFromStream( [in] REFCLSID effect_id, [in] IStream *property_xml, [in, size_is(binding_count)] const D2D1_PROPERTY_BINDING *bindings, [in] UINT32 binding_count, [in] PD2D1_EFFECT_FACTORY effect_factory ); HRESULT RegisterEffectFromString( [in] REFCLSID effect_id, [in] const WCHAR *property_xml, [in, size_is(binding_count)] const D2D1_PROPERTY_BINDING *bindings, [in] UINT32 binding_count, [in] PD2D1_EFFECT_FACTORY effect_factory ); HRESULT UnregisterEffect( [in] REFCLSID effect_id ); HRESULT GetRegisteredEffects( [out, size_is(effect_count)] CLSID *effects, [in] UINT32 effect_count, [out] UINT32 *returned, [out] UINT32 *registered ); HRESULT GetEffectProperties( [in] REFCLSID effect_id, [out] ID2D1Properties **props ); }