Commit 9d9fbc0e authored by Lucian Poston's avatar Lucian Poston Committed by Alexandre Julliard

d2d1: Implement ID2D1Factory1.

parent 05b11380
......@@ -24,7 +24,7 @@
#include <assert.h>
#include <limits.h>
#define COBJMACROS
#include "d2d1.h"
#include "d2d1_1.h"
#ifdef D2D1_INIT_GUID
#include "initguid.h"
#endif
......
......@@ -18,4 +18,4 @@
#include "d3d10_1.h"
#include "initguid.h"
#include "d2d1.h"
#include "d2d1_1.h"
......@@ -36,6 +36,7 @@ IDL_SRCS = \
ctfutb.idl \
ctxtcall.idl \
d2d1.idl \
d2d1_1.idl \
d3d10.idl \
d3d10_1.idl \
d3d10sdklayers.idl \
......
/*
* 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
);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment