// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0 > or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT >, at your option.
// All files in the project carrying such notice may not be copied, modified, or distributed
// except according to those terms.
//! Mappings for the contents of d2d1_1.h
use ctypes::c_void;
use shared::basetsd::{UINT32, UINT64};
use shared::dxgi::{IDXGIDevice, IDXGISurface};
use shared::dxgiformat::DXGI_FORMAT;
use shared::guiddef::{CLSID, REFCLSID};
use shared::minwindef::{BOOL, BYTE, DWORD, FLOAT};
use um::d2d1::{
D2D1_ANTIALIAS_MODE, D2D1_BRUSH_PROPERTIES, D2D1_CAP_STYLE, D2D1_COLOR_F,
D2D1_DASH_STYLE, D2D1_DEBUG_LEVEL, D2D1_EXTEND_MODE, D2D1_GRADIENT_STOP,
D2D1_INTERPOLATION_MODE_DEFINITION_ANISOTROPIC, D2D1_INTERPOLATION_MODE_DEFINITIO
N_CUBIC,
D2D1_INTERPOLATION_MODE_DEFINITION_HIGH_QUALITY_CUBIC,
D2D1_INTERPOLATION_MODE_DEFINITION_LINEAR,
D2D1_INTERPOLATION_MODE_DEFINITION_MULTI_SAMPLE_LINEAR,
D2D1_INTERPOLATION_MODE_DEFINITION_NEAREST_NEIGHBOR, D2D1_LINE_JOIN, D2D1_MATRIX_3X2_F,
D2D1_POINT_2F, D2D1_RECT_F, D2D1_SIZE_U, D2D1_TAG, D2D1_TEXT_ANTIALIAS_MODE, ID2D1Bitmap,
ID2D1BitmapBrush, ID2D1BitmapBrushVtbl, ID2D1BitmapVtbl, ID2D1Brush, ID2D1BrushVtbl,
ID2D1DrawingStateBlock, ID2D1DrawingStateBlockVtbl, ID2D1Factory, ID2D1FactoryVtbl,
ID2D1Geometry, ID2D1GradientStopCollection, ID2D1GradientStopCollectionVtbl, ID2D1Image,
ID2D1ImageVtbl, ID2D1Layer, ID2D1Mesh, ID2D1PathGeometry, ID2D1PathGeometryVtbl,
ID2D1RenderTarget, ID2D1RenderTargetVtbl, ID2D1Resource, ID2D1ResourceVtbl, ID2D1StrokeStyle,
ID2D1StrokeStyleVtbl,
};
use um::d2d1effectauthor::D2D1_PROPERTY_BINDING;
use um::d2dbasetypes::D2D_SIZE_F;
use um::dcommon::{D2D1_PIXEL_FORMAT, DWRITE_MEASURING_MODE};
use um::documenttarget::IPrintDocumentPackageTarget;
use um::dwrite::{DWRITE_GLYPH_RUN, DWRITE_GLYPH_RUN_DESCRIPTION, IDWriteRenderingParams};
use um::objidlbase::IStream;
use um::unknwnbase::{IUnknown, IUnknownVtbl};
use um::wincodec::{IWICBitmapSource, IWICColorContext, IWICImagingFactory};
use um::winnt::{HRESULT, PCWSTR, PWSTR};
FN !{stdcall PD2D1_EFFECT_FACTORY(
effectImpl: *mut *mut IUnknown,
) -> HRESULT}
pub use um::d2dbasetypes::D2D_RECT_L as D2D1_RECT_L;
pub use um::d2dbasetypes::D2D_POINT_2L as D2D1_POINT_2L;
ENUM !{enum D2D1_PROPERTY_TYPE {
D2D1_PROPERTY_TYPE_UNKNOWN = 0 ,
D2D1_PROPERTY_TYPE_STRING = 1 ,
D2D1_PROPERTY_TYPE_BOOL = 2 ,
D2D1_PROPERTY_TYPE_UINT32 = 3 ,
D2D1_PROPERTY_TYPE_INT32 = 4 ,
D2D1_PROPERTY_TYPE_FLOAT = 5 ,
D2D1_PROPERTY_TYPE_VECTOR2 = 6 ,
D2D1_PROPERTY_TYPE_VECTOR3 = 7 ,
D2D1_PROPERTY_TYPE_VECTOR4 = 8 ,
D2D1_PROPERTY_TYPE_BLOB = 9 ,
D2D1_PROPERTY_TYPE_IUNKNOWN = 10 ,
D2D1_PROPERTY_TYPE_ENUM = 11 ,
D2D1_PROPERTY_TYPE_ARRAY = 12 ,
D2D1_PROPERTY_TYPE_CLSID = 13 ,
D2D1_PROPERTY_TYPE_MATRIX_3X2 = 14 ,
D2D1_PROPERTY_TYPE_MATRIX_4X3 = 15 ,
D2D1_PROPERTY_TYPE_MATRIX_4X4 = 16 ,
D2D1_PROPERTY_TYPE_MATRIX_5X4 = 17 ,
D2D1_PROPERTY_TYPE_COLOR_CONTEXT = 18 ,
D2D1_PROPERTY_TYPE_FORCE_DWORD = 0 xffffffff,
}}
ENUM !{enum D2D1_PROPERTY {
D2D1_PROPERTY_CLSID = 0 x80000000,
D2D1_PROPERTY_DISPLAYNAME = 0 x80000001,
D2D1_PROPERTY_AUTHOR = 0 x80000002,
D2D1_PROPERTY_CATEGORY = 0 x80000003,
D2D1_PROPERTY_DESCRIPTION = 0 x80000004,
D2D1_PROPERTY_INPUTS = 0 x80000005,
D2D1_PROPERTY_CACHED = 0 x80000006,
D2D1_PROPERTY_PRECISION = 0 x80000007,
D2D1_PROPERTY_MIN_INPUTS = 0 x80000008,
D2D1_PROPERTY_MAX_INPUTS = 0 x80000009,
D2D1_PROPERTY_FORCE_DWORD = 0 xffffffff,
}}
ENUM !{enum D2D1_SUBPROPERTY {
D2D1_SUBPROPERTY_DISPLAYNAME = 0 x80000000,
D2D1_SUBPROPERTY_ISREADONLY = 0 x80000001,
D2D1_SUBPROPERTY_MIN = 0 x80000002,
D2D1_SUBPROPERTY_MAX = 0 x80000003,
D2D1_SUBPROPERTY_DEFAULT = 0 x80000004,
D2D1_SUBPROPERTY_FIELDS = 0 x80000005,
D2D1_SUBPROPERTY_INDEX = 0 x80000006,
D2D1_SUBPROPERTY_FORCE_DWORD = 0 xffffffff,
}}
ENUM !{enum D2D1_BITMAP_OPTIONS {
D2D1_BITMAP_OPTIONS_NONE = 0 x00000000,
D2D1_BITMAP_OPTIONS_TARGET = 0 x00000001,
D2D1_BITMAP_OPTIONS_CANNOT_DRAW = 0 x00000002,
D2D1_BITMAP_OPTIONS_CPU_READ = 0 x00000004,
D2D1_BITMAP_OPTIONS_GDI_COMPATIBLE = 0 x00000008,
D2D1_BITMAP_OPTIONS_FORCE_DWORD = 0 xffffffff,
}}
// DEFINE_ENUM_FLAG_OPERATORS(D2D1_BITMAP_OPTIONS);
ENUM !{enum D2D1_COMPOSITE_MODE {
D2D1_COMPOSITE_MODE_SOURCE_OVER = 0 ,
D2D1_COMPOSITE_MODE_DESTINATION_OVER = 1 ,
D2D1_COMPOSITE_MODE_SOURCE_IN = 2 ,
D2D1_COMPOSITE_MODE_DESTINATION_IN = 3 ,
D2D1_COMPOSITE_MODE_SOURCE_OUT = 4 ,
D2D1_COMPOSITE_MODE_DESTINATION_OUT = 5 ,
D2D1_COMPOSITE_MODE_SOURCE_ATOP = 6 ,
D2D1_COMPOSITE_MODE_DESTINATION_ATOP = 7 ,
D2D1_COMPOSITE_MODE_XOR = 8 ,
D2D1_COMPOSITE_MODE_PLUS = 9 ,
D2D1_COMPOSITE_MODE_SOURCE_COPY = 10 ,
D2D1_COMPOSITE_MODE_BOUNDED_SOURCE_COPY = 11 ,
D2D1_COMPOSITE_MODE_MASK_INVERT = 12 ,
D2D1_COMPOSITE_MODE_FORCE_DWORD = 0 xffffffff,
}}
ENUM !{enum D2D1_BUFFER_PRECISION {
D2D1_BUFFER_PRECISION_UNKNOWN = 0 ,
D2D1_BUFFER_PRECISION_8BPC_UNORM = 1 ,
D2D1_BUFFER_PRECISION_8BPC_UNORM_SRGB = 2 ,
D2D1_BUFFER_PRECISION_16BPC_UNORM = 3 ,
D2D1_BUFFER_PRECISION_16BPC_FLOAT = 4 ,
D2D1_BUFFER_PRECISION_32BPC_FLOAT = 5 ,
D2D1_BUFFER_PRECISION_FORCE_DWORD = 0 xffffffff,
}}
ENUM !{enum D2D1_MAP_OPTIONS {
D2D1_MAP_OPTIONS_NONE = 0 ,
D2D1_MAP_OPTIONS_READ = 1 ,
D2D1_MAP_OPTIONS_WRITE = 2 ,
D2D1_MAP_OPTIONS_DISCARD = 4 ,
D2D1_MAP_OPTIONS_FORCE_DWORD = 0 xffffffff,
}}
//DEFINE_ENUM_FLAG_OPERATORS(D2D1_MAP_OPTIONS);
ENUM !{enum D2D1_INTERPOLATION_MODE {
D2D1_INTERPOLATION_MODE_NEAREST_NEIGHBOR = D2D1_INTERPOLATION_MODE_DEFINITION_NEAREST_NEIGHBOR,
D2D1_INTERPOLATION_MODE_LINEAR = D2D1_INTERPOLATION_MODE_DEFINITION_LINEAR,
D2D1_INTERPOLATION_MODE_CUBIC = D2D1_INTERPOLATION_MODE_DEFINITION_CUBIC,
D2D1_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR
= D2D1_INTERPOLATION_MODE_DEFINITION_MULTI_SAMPLE_LINEAR,
D2D1_INTERPOLATION_MODE_ANISOTROPIC = D2D1_INTERPOLATION_MODE_DEFINITION_ANISOTROPIC,
D2D1_INTERPOLATION_MODE_HIGH_QUALITY_CUBIC
= D2D1_INTERPOLATION_MODE_DEFINITION_HIGH_QUALITY_CUBIC,
D2D1_INTERPOLATION_MODE_FORCE_DWORD = 0 xffffffff,
}}
ENUM !{enum D2D1_UNIT_MODE {
D2D1_UNIT_MODE_DIPS = 0 ,
D2D1_UNIT_MODE_PIXELS = 1 ,
D2D1_UNIT_MODE_FORCE_DWORD = 0 xffffffff,
}}
ENUM !{enum D2D1_COLOR_SPACE {
D2D1_COLOR_SPACE_CUSTOM = 0 ,
D2D1_COLOR_SPACE_SRGB = 1 ,
D2D1_COLOR_SPACE_SCRGB = 2 ,
D2D1_COLOR_SPACE_FORCE_DWORD = 0 xffffffff,
}}
ENUM !{enum D2D1_DEVICE_CONTEXT_OPTIONS {
D2D1_DEVICE_CONTEXT_OPTIONS_NONE = 0 ,
D2D1_DEVICE_CONTEXT_OPTIONS_ENABLE_MULTITHREADED_OPTIMIZATIONS = 1 ,
D2D1_DEVICE_CONTEXT_OPTIONS_FORCE_DWORD = 0 xffffffff,
}}
//DEFINE_ENUM_FLAG_OPERATORS(D2D1_DEVICE_CONTEXT_OPTIONS);
ENUM !{enum D2D1_STROKE_TRANSFORM_TYPE {
D2D1_STROKE_TRANSFORM_TYPE_NORMAL = 0 ,
D2D1_STROKE_TRANSFORM_TYPE_FIXED = 1 ,
D2D1_STROKE_TRANSFORM_TYPE_HAIRLINE = 2 ,
D2D1_STROKE_TRANSFORM_TYPE_FORCE_DWORD = 0 xffffffff,
}}
ENUM !{enum D2D1_PRIMITIVE_BLEND {
D2D1_PRIMITIVE_BLEND_SOURCE_OVER = 0 ,
D2D1_PRIMITIVE_BLEND_COPY = 1 ,
D2D1_PRIMITIVE_BLEND_MIN = 2 ,
D2D1_PRIMITIVE_BLEND_ADD = 3 ,
D2D1_PRIMITIVE_BLEND_FORCE_DWORD = 0 xffffffff,
}}
ENUM !{enum D2D1_THREADING_MODE {
D2D1_THREADING_MODE_SINGLE_THREADED = super ::d2d1::D2D1_FACTORY_TYPE_SINGLE_THREADED,
D2D1_THREADING_MODE_MULTI_THREADED = super ::d2d1::D2D1_FACTORY_TYPE_MULTI_THREADED,
D2D1_THREADING_MODE_FORCE_DWORD = 0 xffffffff,
}}
ENUM !{enum D2D1_COLOR_INTERPOLATION_MODE {
D2D1_COLOR_INTERPOLATION_MODE_STRAIGHT = 0 ,
D2D1_COLOR_INTERPOLATION_MODE_PREMULTIPLIED = 1 ,
D2D1_COLOR_INTERPOLATION_MODE_FORCE_DWORD = 0 xffffffff,
}}
pub use um::d2dbasetypes::D2D_VECTOR_2F as D2D1_VECTOR_2F;
pub use um::d2dbasetypes::D2D_VECTOR_3F as D2D1_VECTOR_3F;
pub use um::d2dbasetypes::D2D_VECTOR_4F as D2D1_VECTOR_4F;
STRUCT !{struct D2D1_BITMAP_PROPERTIES1 {
pixelFormat: D2D1_PIXEL_FORMAT,
dpiX: FLOAT,
dpiY: FLOAT,
bitmapOptions: D2D1_BITMAP_OPTIONS,
colorContext: *const ID2D1ColorContext,
}}
STRUCT !{struct D2D1_MAPPED_RECT {
pitch: UINT32,
bits: *const BYTE,
}}
STRUCT !{struct D2D1_RENDERING_CONTROLS {
bufferPrecision: D2D1_BUFFER_PRECISION,
tileSize: D2D1_SIZE_U,
}}
STRUCT !{struct D2D1_EFFECT_INPUT_DESCRIPTION {
effect: *const ID2D1Effect,
inputIndex: UINT32,
inputRectangle: D2D1_RECT_F,
}}
pub use um::d2dbasetypes::D2D_MATRIX_4X3_F as D2D1_MATRIX_4X3_F;
pub use um::d2dbasetypes::D2D_MATRIX_4X4_F as D2D1_MATRIX_4X4_F;
pub use um::d2dbasetypes::D2D_MATRIX_5X4_F as D2D1_MATRIX_5X4_F;
STRUCT !{struct D2D1_POINT_DESCRIPTION {
point: D2D1_POINT_2F,
unitTangentVector: D2D1_POINT_2F,
endSegment: UINT32,
endFigure: UINT32,
lengthToEndSegment: FLOAT,
}}
STRUCT !{struct D2D1_IMAGE_BRUSH_PROPERTIES {
sourceRectangle: D2D1_RECT_F,
extendModeX: D2D1_EXTEND_MODE,
extendModeY: D2D1_EXTEND_MODE,
interpolationMode: D2D1_INTERPOLATION_MODE,
}}
STRUCT !{struct D2D1_BITMAP_BRUSH_PROPERTIES1 {
extendModeX: D2D1_EXTEND_MODE,
extendModeY: D2D1_EXTEND_MODE,
interpolationMode: D2D1_INTERPOLATION_MODE,
}}
STRUCT !{struct D2D1_STROKE_STYLE_PROPERTIES1 {
startCap: D2D1_CAP_STYLE,
endCap: D2D1_CAP_STYLE,
dashCap: D2D1_CAP_STYLE,
lineJoin: D2D1_LINE_JOIN,
miterLimit: FLOAT,
dashStyle: D2D1_DASH_STYLE,
dashOffset: FLOAT,
transformType: D2D1_STROKE_TRANSFORM_TYPE,
}}
ENUM !{enum D2D1_LAYER_OPTIONS1 {
D2D1_LAYER_OPTIONS1_NONE = 0 ,
D2D1_LAYER_OPTIONS1_INITIALIZE_FROM_BACKGROUND = 1 ,
D2D1_LAYER_OPTIONS1_IGNORE_ALPHA = 2 ,
D2D1_LAYER_OPTIONS1_FORCE_DWORD = 0 xffffffff,
}}
//DEFINE_ENUM_FLAG_OPERATORS(D2D1_LAYER_OPTIONS1);
STRUCT !{struct D2D1_LAYER_PARAMETERS1 {
contentBounds: D2D1_RECT_F,
geometricMask: *const ID2D1Geometry,
maskAntialiasMode: D2D1_ANTIALIAS_MODE,
maskTransform: D2D1_MATRIX_3X2_F,
opacity: FLOAT,
opacityBrush: *const ID2D1Brush,
layerOptions: D2D1_LAYER_OPTIONS1,
}}
ENUM !{enum D2D1_PRINT_FONT_SUBSET_MODE {
D2D1_PRINT_FONT_SUBSET_MODE_DEFAULT = 0 ,
D2D1_PRINT_FONT_SUBSET_MODE_EACHPAGE = 1 ,
D2D1_PRINT_FONT_SUBSET_MODE_NONE = 2 ,
D2D1_PRINT_FONT_SUBSET_MODE_FORCE_DWORD = 0 xffffffff,
}}
STRUCT !{struct D2D1_DRAWING_STATE_DESCRIPTION1 {
antialiasMode: D2D1_ANTIALIAS_MODE,
textAntialiasMode: D2D1_TEXT_ANTIALIAS_MODE,
tag1: D2D1_TAG,
tag2: D2D1_TAG,
transform: D2D1_MATRIX_3X2_F,
primitiveBlend: D2D1_PRIMITIVE_BLEND,
unitMode: D2D1_UNIT_MODE,
}}
STRUCT !{struct D2D1_PRINT_CONTROL_PROPERTIES {
fontSubset: D2D1_PRINT_FONT_SUBSET_MODE,
rasterDPI: FLOAT,
colorSpace: D2D1_COLOR_SPACE,
}}
STRUCT !{struct D2D1_CREATION_PROPERTIES {
threadingMode: D2D1_THREADING_MODE,
debugLevel: D2D1_DEBUG_LEVEL,
options: D2D1_DEVICE_CONTEXT_OPTIONS,
}}
RIDL!{#[ uuid(0 x82237326, 0 x8111, 0 x4f7c, 0 xbc, 0 xf4, 0 xb5, 0 xc1, 0 x17, 0 x55, 0 x64, 0 xfe)]
interface ID2D1GdiMetafileSink(ID2D1GdiMetafileSinkVtbl): IUnknown(IUnknownVtbl) {
fn ProcessRecord(
recordType: DWORD,
recordData: *const c_void,
recordDataSize: DWORD,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 x2f543dc3, 0 xcfc1, 0 x4211, 0 x86, 0 x4f, 0 xcf, 0 xd9, 0 x1c, 0 x6f, 0 x33, 0 x95)]
interface ID2D1GdiMetafile(ID2D1GdiMetafileVtbl): ID2D1Resource(ID2D1ResourceVtbl) {
fn Stream(
sink: *const ID2D1GdiMetafileSink,
) -> HRESULT,
fn GetBounds(
bounds: *mut D2D1_RECT_F,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 x54d7898a, 0 xa061, 0 x40a7, 0 xbe, 0 xc7, 0 xe4, 0 x65, 0 xbc, 0 xba, 0 x2c, 0 x4f)]
interface ID2D1CommandSink(ID2D1CommandSinkVtbl): IUnknown(IUnknownVtbl) {
fn BeginDraw() -> HRESULT,
fn EndDraw() -> HRESULT,
fn SetAntialiasMode(
antialiasMode: D2D1_ANTIALIAS_MODE,
) -> HRESULT,
fn SetTags(
tag1: D2D1_TAG,
tag2: D2D1_TAG,
) -> HRESULT,
fn SetTextAntialiasMode(
textAntialiasMode: D2D1_TEXT_ANTIALIAS_MODE,
) -> HRESULT,
fn SetTextRenderingParams(
textRenderingParams: *const IDWriteRenderingParams,
) -> HRESULT,
fn SetTransform(
transform: *const D2D1_MATRIX_3X2_F,
) -> HRESULT,
fn SetPrimitiveBlend(
primitiveBlend: D2D1_PRIMITIVE_BLEND,
) -> HRESULT,
fn SetUnitMode(
unitMode: D2D1_UNIT_MODE,
) -> HRESULT,
fn Clear(
color: *const D2D1_COLOR_F,
) -> HRESULT,
fn DrawGlyphRun(
baselineOrigin: D2D1_POINT_2F,
glyphRun: *const DWRITE_GLYPH_RUN,
glyphRunDescription: *const DWRITE_GLYPH_RUN_DESCRIPTION,
foregroundBrush: *const ID2D1Brush,
measuringMode: DWRITE_MEASURING_MODE,
) -> HRESULT,
fn DrawLine(
point0: D2D1_POINT_2F,
point1: D2D1_POINT_2F,
brush: *const ID2D1Brush,
strokeWidth: FLOAT,
strokeStyle: *const ID2D1StrokeStyle,
) -> HRESULT,
fn DrawGeometry(
geometry: *const ID2D1Geometry,
brush: *const ID2D1Brush,
strokeWidth: FLOAT,
strokeStyle: *const ID2D1StrokeStyle,
) -> HRESULT,
fn DrawRectangle(
rect: *const D2D1_RECT_F,
brush: *const ID2D1Brush,
strokeWidth: FLOAT,
strokeStyle: *const ID2D1StrokeStyle,
) -> HRESULT,
fn DrawBitmap(
bitmap: *const ID2D1Bitmap,
destinationRectangle: *const D2D1_RECT_F,
opacity: FLOAT,
interpolationMode: D2D1_INTERPOLATION_MODE,
sourceRectangle: *const D2D1_RECT_F,
perspectiveTransform: *const D2D1_MATRIX_4X4_F,
) -> HRESULT,
fn DrawImage(
image: *const ID2D1Image,
targetOffset: *const D2D1_POINT_2F,
imageRectangle: *const D2D1_RECT_F,
interpolationMode: D2D1_INTERPOLATION_MODE,
compositeMode: D2D1_COMPOSITE_MODE,
) -> HRESULT,
fn DrawGdiMetafile(
gdiMetafile: *const ID2D1GdiMetafile,
targetOffset: *const D2D1_POINT_2F,
) -> HRESULT,
fn FillMesh(
mesh: *const ID2D1Mesh,
brush: *const ID2D1Brush,
) -> HRESULT,
fn FillOpacityMask(
opacityMask: *const ID2D1Bitmap,
brush: *const ID2D1Brush,
destinationRectangle: *const D2D1_RECT_F,
sourceRectangle: *const D2D1_RECT_F,
) -> HRESULT,
fn FillGeometry(
geometry: *const ID2D1Geometry,
brush: *const ID2D1Brush,
opacityBrush: *const ID2D1Brush,
) -> HRESULT,
fn FillRectangle(
rect: *const D2D1_RECT_F,
brush: *const ID2D1Brush,
) -> HRESULT,
fn PushAxisAlignedClip(
clipRect: *const D2D1_RECT_F,
antialiasMode: D2D1_ANTIALIAS_MODE,
) -> HRESULT,
fn PushLayer(
layerParameters1: *const D2D1_LAYER_PARAMETERS1,
layer: *const ID2D1Layer,
) -> HRESULT,
fn PopAxisAlignedClip() -> HRESULT,
fn PopLayer() -> HRESULT,
}}
RIDL!{#[ uuid(0 xb4f34a19, 0 x2383, 0 x4d76, 0 x94, 0 xf6, 0 xec, 0 x34, 0 x36, 0 x57, 0 xc3, 0 xdc)]
interface ID2D1CommandList(ID2D1CommandListVtbl): ID2D1Image(ID2D1ImageVtbl) {
fn Stream(
sink: *const ID2D1CommandSink,
) -> HRESULT,
fn Close() -> HRESULT,
}}
RIDL!{#[ uuid(0 x2c1d867d, 0 xc290, 0 x41c8, 0 xae, 0 x7e, 0 x34, 0 xa9, 0 x87, 0 x02, 0 xe9, 0 xa5)]
interface ID2D1PrintControl(ID2D1PrintControlVtbl): IUnknown(IUnknownVtbl) {
fn AddPage(
commandList: *const ID2D1CommandList,
pageSize: D2D_SIZE_F,
pagePrintTicketStream: *const IStream,
tag1: *mut D2D1_TAG,
tag2: *mut D2D1_TAG,
) -> HRESULT,
fn Close() -> HRESULT,
}}
RIDL!{#[ uuid(0 xfe9e984d, 0 x3f95, 0 x407c, 0 xb5, 0 xdb, 0 xcb, 0 x94, 0 xd4, 0 xe8, 0 xf8, 0 x7c)]
interface ID2D1ImageBrush(ID2D1ImageBrushVtbl): ID2D1Brush(ID2D1BrushVtbl) {
fn SetImage(
image: *const ID2D1Image,
) -> (),
fn SetExtendModeX(
extendModeX: D2D1_EXTEND_MODE,
) -> (),
fn SetExtendModeY(
extendModeY: D2D1_EXTEND_MODE,
) -> (),
fn SetInterpolationMode(
interpolationMode: D2D1_INTERPOLATION_MODE,
) -> (),
fn SetSourceRectangle(
sourceRectangle: *const D2D1_RECT_F,
) -> (),
fn GetImage(
image: *mut *mut ID2D1Image,
) -> (),
fn GetExtendModeX() -> D2D1_EXTEND_MODE,
fn GetExtendModeY() -> D2D1_EXTEND_MODE,
fn GetInterpolationMode() -> D2D1_INTERPOLATION_MODE,
fn GetSourceRectangle(
sourceRectangle: *mut D2D1_RECT_F,
) -> (),
}}
RIDL!{#[ uuid(0 x41343a53, 0 xe41a, 0 x49a2, 0 x91, 0 xcd, 0 x21, 0 x79, 0 x3b, 0 xbb, 0 x62, 0 xe5)]
interface ID2D1BitmapBrush1(ID2D1BitmapBrush1Vtbl): ID2D1BitmapBrush(ID2D1BitmapBrushVtbl) {
fn SetInterpolationMode1(
interpolationMode: D2D1_INTERPOLATION_MODE,
) -> (),
fn GetInterpolationMode1() -> D2D1_INTERPOLATION_MODE,
}}
RIDL!{#[ uuid(0 x10a72a66, 0 xe91c, 0 x43f4, 0 x99, 0 x3f, 0 xdd, 0 xf4, 0 xb8, 0 x2b, 0 x0b, 0 x4a)]
interface ID2D1StrokeStyle1(ID2D1StrokeStyle1Vtbl): ID2D1StrokeStyle(ID2D1StrokeStyleVtbl) {
fn GetStrokeTransformType() -> D2D1_STROKE_TRANSFORM_TYPE,
}}
RIDL!{#[ uuid(0 x62baa2d2, 0 xab54, 0 x41b7, 0 xb8, 0 x72, 0 x78, 0 x7e, 0 x01, 0 x06, 0 xa4, 0 x21)]
interface ID2D1PathGeometry1(ID2D1PathGeometry1Vtbl): ID2D1PathGeometry(ID2D1PathGeometryVtbl) {
fn ComputePointAndSegmentAtLength(
length: FLOAT,
startSegment: UINT32,
worldTransform: *const D2D1_MATRIX_3X2_F,
flatteningTolerance: FLOAT,
pointDescription: *mut D2D1_POINT_DESCRIPTION,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 x483473d7, 0 xcd46, 0 x4f9d, 0 x9d, 0 x3a, 0 x31, 0 x12, 0 xaa, 0 x80, 0 x15, 0 x9d)]
interface ID2D1Properties(ID2D1PropertiesVtbl): IUnknown(IUnknownVtbl) {
fn GetPropertyCount() -> UINT32,
fn GetPropertyName(
index: UINT32,
name: PWSTR,
nameCount: UINT32,
) -> HRESULT,
fn GetPropertyNameLength(
index: UINT32,
) -> UINT32,
fn GetType(
index: UINT32,
) -> D2D1_PROPERTY_TYPE,
fn GetPropertyIndex(
name: PCWSTR,
) -> UINT32,
fn SetValueByName(
name: PCWSTR,
prop_type: D2D1_PROPERTY_TYPE,
data: *const BYTE,
dataSize: UINT32,
) -> HRESULT,
fn SetValue(
index: UINT32,
prop_type: D2D1_PROPERTY_TYPE,
data: *const BYTE,
dataSize: UINT32,
) -> HRESULT,
fn GetValueByName(
name: PCWSTR,
prop_type: D2D1_PROPERTY_TYPE,
data: *mut BYTE,
dataSize: UINT32,
) -> HRESULT,
fn GetValue(
index: UINT32,
prop_type: D2D1_PROPERTY_TYPE,
data: *mut BYTE,
dataSize: UINT32,
) -> HRESULT,
fn GetValueSize(
index: UINT32,
) -> UINT32,
fn GetSubProperties(
index: UINT32,
subProperties: *mut *mut ID2D1Properties,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 x28211a43, 0 x7d89, 0 x476f, 0 x81, 0 x81, 0 x2d, 0 x61, 0 x59, 0 xb2, 0 x20, 0 xad)]
interface ID2D1Effect(ID2D1EffectVtbl): ID2D1Properties(ID2D1PropertiesVtbl) {
fn SetInput(
index: UINT32,
input: *const ID2D1Image,
invalidate: BOOL,
) -> (),
fn SetInputCount(
inputCount: UINT32,
) -> HRESULT,
fn GetInput(
index: UINT32,
input: *mut *mut ID2D1Image,
) -> (),
fn GetInputCount() -> UINT32,
fn GetOutput(
outputImage: *mut *mut ID2D1Image,
) -> (),
}}
RIDL!{#[ uuid(0 xa898a84c, 0 x3873, 0 x4588, 0 xb0, 0 x8b, 0 xeb, 0 xbf, 0 x97, 0 x8d, 0 xf0, 0 x41)]
interface ID2D1Bitmap1(ID2D1Bitmap1Vtbl): ID2D1Bitmap(ID2D1BitmapVtbl) {
fn GetColorContext(
colorContext: *mut *mut ID2D1ColorContext,
) -> (),
fn GetOptions() -> D2D1_BITMAP_OPTIONS,
fn GetSurface(
dxgiSurface: *mut *mut IDXGISurface,
) -> HRESULT,
fn Map(
options: D2D1_MAP_OPTIONS,
mappedRect: *mut D2D1_MAPPED_RECT,
) -> HRESULT,
fn Unmap() -> HRESULT,
}}
RIDL!{#[ uuid(0 x1c4820bb, 0 x5771, 0 x4518, 0 xa5, 0 x81, 0 x2f, 0 xe4, 0 xdd, 0 x0e, 0 xc6, 0 x57)]
interface ID2D1ColorContext(ID2D1ColorContextVtbl): ID2D1Resource(ID2D1ResourceVtbl) {
fn GetColorSpace() -> D2D1_COLOR_SPACE,
fn GetProfileSize() -> UINT32,
fn GetProfile(
profile: *mut BYTE,
profileSize: UINT32,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 xae1572f4, 0 x5dd0, 0 x4777, 0 x99, 0 x8b, 0 x92, 0 x79, 0 x47, 0 x2a, 0 xe6, 0 x3b)]
interface ID2D1GradientStopCollection1(ID2D1GradientStopCollection1Vtbl):
ID2D1GradientStopCollection(ID2D1GradientStopCollectionVtbl) {
fn GetGradientStops1(
gradientStops: *mut D2D1_GRADIENT_STOP,
gradientStopsCount: UINT32,
) -> (),
fn GetPreInterpolationSpace() -> D2D1_COLOR_SPACE,
fn GetPostInterpolationSpace() -> D2D1_COLOR_SPACE,
fn GetBufferPrecision() -> D2D1_BUFFER_PRECISION,
fn GetColorInterpolationMode() -> D2D1_COLOR_INTERPOLATION_MODE,
}}
RIDL!{#[ uuid(0 x689f1f85, 0 xc72e, 0 x4e33, 0 x8f, 0 x19, 0 x85, 0 x75, 0 x4e, 0 xfd, 0 x5a, 0 xce)]
interface ID2D1DrawingStateBlock1(ID2D1DrawingStateBlock1Vtbl):
ID2D1DrawingStateBlock(ID2D1DrawingStateBlockVtbl) {
fn GetDescription(
stateDescription: *mut D2D1_DRAWING_STATE_DESCRIPTION1,
) -> (),
fn SetDescription(
stateDescription: *const D2D1_DRAWING_STATE_DESCRIPTION1,
) -> (),
}}
RIDL!{#[ uuid(0 xe8f7fe7a, 0 x191c, 0 x466d, 0 xad, 0 x95, 0 x97, 0 x56, 0 x78, 0 xbd, 0 xa9, 0 x98)]
interface ID2D1DeviceContext(ID2D1DeviceContextVtbl): ID2D1RenderTarget(ID2D1RenderTargetVtbl) {
fn CreateBitmap(
size: D2D1_SIZE_U,
sourceData: *const c_void,
pitch: UINT32,
bitmapProperties: *const D2D1_BITMAP_PROPERTIES1,
bitmap: *mut *mut ID2D1Bitmap1,
) -> HRESULT,
fn CreateBitmapFromWicBitmap(
wicBitmapSource: *const IWICBitmapSource,
bitmapProperties: *const D2D1_BITMAP_PROPERTIES1,
bitmap: *mut *mut ID2D1Bitmap1,
) -> HRESULT,
fn CreateColorContext(
space: D2D1_COLOR_SPACE,
profile: *const BYTE,
profileSize: UINT32,
colorContext: *mut *mut ID2D1ColorContext,
) -> HRESULT,
fn CreateColorContextFromFilename(
filename: PCWSTR,
colorContext: *mut *mut ID2D1ColorContext,
) -> HRESULT,
fn CreateColorContextFromWicColorContext(
wicColorContext: *const IWICColorContext,
colorContext: *mut *mut ID2D1ColorContext,
) -> HRESULT,
fn CreateBitmapFromDxgiSurface(
surface: *const IDXGISurface,
bitmapProperties: *const D2D1_BITMAP_PROPERTIES1,
bitmap: *mut *mut ID2D1Bitmap1,
) -> HRESULT,
fn CreateEffect(
effectId: REFCLSID,
effect: *mut *mut ID2D1Effect,
) -> HRESULT,
fn CreateGradientStopCollection(
straightAlphaGradientStops: *const D2D1_GRADIENT_STOP,
straightAlphaGradientStopsCount: UINT32,
preInterpolationSpace: D2D1_COLOR_SPACE,
postInterpolationSpace: D2D1_COLOR_SPACE,
bufferPrecision: D2D1_BUFFER_PRECISION,
extendMode: D2D1_EXTEND_MODE,
colorInterpolationMode: D2D1_COLOR_INTERPOLATION_MODE,
gradientStopCollection1: *mut *mut ID2D1GradientStopCollection1,
) -> HRESULT,
fn CreateImageBrush(
image: *const ID2D1Image,
imageBrushProperties: *const D2D1_IMAGE_BRUSH_PROPERTIES,
brushProperties: *const D2D1_BRUSH_PROPERTIES,
imageBrush: *mut *mut ID2D1ImageBrush,
) -> HRESULT,
fn CreateBitmapBrush(
bitmap: *const ID2D1Bitmap,
bitmapBrushProperties: *const D2D1_BITMAP_BRUSH_PROPERTIES1,
brushProperties: *const D2D1_BRUSH_PROPERTIES,
bitmapBrush: *mut *mut ID2D1BitmapBrush1,
) -> HRESULT,
fn CreateCommandList(
commandList: *mut *mut ID2D1CommandList,
) -> HRESULT,
fn IsDxgiFormatSupported(
format: DXGI_FORMAT,
) -> BOOL,
fn IsBufferPrecisionSupported(
bufferPrecision: D2D1_BUFFER_PRECISION,
) -> BOOL,
fn GetImageLocalBounds(
image: *const ID2D1Image,
localBounds: *mut D2D1_RECT_F,
) -> HRESULT,
fn GetImageWorldBounds(
image: *const ID2D1Image,
worldBounds: *mut D2D1_RECT_F,
) -> HRESULT,
fn GetGlyphRunWorldBounds(
baselineOrigin: D2D1_POINT_2F,
glyphRun: *const DWRITE_GLYPH_RUN,
measuringMode: DWRITE_MEASURING_MODE,
bounds: *mut D2D1_RECT_F,
) -> HRESULT,
fn GetDevice(
device: *mut *mut ID2D1Device,
) -> (),
fn SetTarget(
image: *const ID2D1Image,
) -> (),
fn GetTarget(
image: *mut *mut ID2D1Image,
) -> (),
fn SetRenderingControls(
renderingControls: *const D2D1_RENDERING_CONTROLS,
) -> (),
fn GetRenderingControls(
renderingControls: *mut D2D1_RENDERING_CONTROLS,
) -> (),
fn SetPrimitiveBlend(
primitiveBlend: D2D1_PRIMITIVE_BLEND,
) -> (),
fn GetPrimitiveBlend() -> D2D1_PRIMITIVE_BLEND,
fn SetUnitMode(
unitMode: D2D1_UNIT_MODE,
) -> (),
fn GetUnitMode() -> D2D1_UNIT_MODE,
fn DrawGlyphRun(
baselineOrigin: D2D1_POINT_2F,
glyphRun: *const DWRITE_GLYPH_RUN,
glyphRunDescription: *const DWRITE_GLYPH_RUN_DESCRIPTION,
foregroundBrush: *const ID2D1Brush,
measuringMode: DWRITE_MEASURING_MODE,
) -> (),
fn DrawImage(
image: *const ID2D1Image,
targetOffset: *const D2D1_POINT_2F,
imageRectangle: *const D2D1_RECT_F,
interpolationMode: D2D1_INTERPOLATION_MODE,
compositeMode: D2D1_COMPOSITE_MODE,
) -> (),
fn DrawGdiMetafile(
gdiMetafile: *const ID2D1GdiMetafile,
targetOffset: *const D2D1_POINT_2F,
) -> (),
fn DrawBitmap(
bitmap: *const ID2D1Bitmap,
destinationRectangle: *const D2D1_RECT_F,
opacity: FLOAT,
interpolationMode: D2D1_INTERPOLATION_MODE,
sourceRectangle: *const D2D1_RECT_F,
perspectiveTransform: *const D2D1_MATRIX_4X4_F,
) -> (),
fn PushLayer(
layerParameters: *const D2D1_LAYER_PARAMETERS1,
layer: *const ID2D1Layer,
) -> (),
fn InvalidateEffectInputRectangle(
effect: *const ID2D1Effect,
input: UINT32,
inputRectangle: *const D2D1_RECT_F,
) -> HRESULT,
fn GetEffectInvalidRectangleCount(
effect: *const ID2D1Effect,
rectangleCount: *mut UINT32,
) -> HRESULT,
fn GetEffectInvalidRectangles(
effect: *const ID2D1Effect,
rectangles: *mut D2D1_RECT_F,
rectanglesCount: UINT32,
) -> HRESULT,
fn GetEffectRequiredInputRectangles(
renderEffect: *const ID2D1Effect,
renderImageRectangle: *const D2D1_RECT_F,
inputDescriptions: *const D2D1_EFFECT_INPUT_DESCRIPTION,
requiredInputRects: *mut D2D1_RECT_F,
inputCount: UINT32,
) -> HRESULT,
fn FillOpacityMask(
opacityMask: *const ID2D1Bitmap,
brush: *const ID2D1Brush,
destinationRectangle: *const D2D1_RECT_F,
sourceRectangle: *const D2D1_RECT_F,
) -> (),
}}
RIDL!{#[ uuid(0 x47dd575d, 0 xac05, 0 x4cdd, 0 x80, 0 x49, 0 x9b, 0 x02, 0 xcd, 0 x16, 0 xf4, 0 x4c)]
interface ID2D1Device(ID2D1DeviceVtbl): ID2D1Resource(ID2D1ResourceVtbl) {
fn CreateDeviceContext(
options: D2D1_DEVICE_CONTEXT_OPTIONS,
deviceContext: *mut *mut ID2D1DeviceContext,
) -> HRESULT,
fn CreatePrintControl(
wicFactory: *const IWICImagingFactory,
documentTarget: *const IPrintDocumentPackageTarget,
printControlProperties: *const D2D1_PRINT_CONTROL_PROPERTIES,
printControl: *mut *mut ID2D1PrintControl,
) -> HRESULT,
fn SetMaximumTextureMemory(
maximumInBytes: UINT64,
) -> (),
fn GetMaximumTextureMemory() -> UINT64,
fn ClearResources(
millisecondsSinceUse: UINT32,
) -> (),
}}
RIDL!{#[ uuid(0 xbb12d362, 0 xdaee, 0 x4b9a, 0 xaa, 0 x1d, 0 x14, 0 xba, 0 x40, 0 x1c, 0 xfa, 0 x1f)]
interface ID2D1Factory1(ID2D1Factory1Vtbl): ID2D1Factory(ID2D1FactoryVtbl) {
fn CreateDevice(
dxgiDevice: *const IDXGIDevice,
d2dDevice: *mut *mut ID2D1Device,
) -> HRESULT,
fn CreateStrokeStyle(
strokeStyleProperties: *const D2D1_STROKE_STYLE_PROPERTIES1,
dashes: *const FLOAT,
dashesCount: UINT32,
strokeStyle: *mut *mut ID2D1StrokeStyle1,
) -> HRESULT,
fn CreatePathGeometry(
pathGeometry: *mut *mut ID2D1PathGeometry1,
) -> HRESULT,
fn CreateDrawingStateBlock(
drawingStateDescription: *const D2D1_DRAWING_STATE_DESCRIPTION1,
textRenderingParams: *const IDWriteRenderingParams,
drawingStateBlock: *mut *mut ID2D1DrawingStateBlock1,
) -> HRESULT,
fn CreateGdiMetafile(
metafileStream: *const IStream,
metafile: *mut *mut ID2D1GdiMetafile,
) -> HRESULT,
fn RegisterEffectFromStream(
classId: REFCLSID,
propertyXml: *const IStream,
bindings: *const D2D1_PROPERTY_BINDING,
bindingsCount: UINT32,
effectFactory: PD2D1_EFFECT_FACTORY,
) -> HRESULT,
fn RegisterEffectFromString(
classId: REFCLSID,
propertyXml: PCWSTR,
bindings: *const D2D1_PROPERTY_BINDING,
bindingsCount: UINT32,
effectFactory: PD2D1_EFFECT_FACTORY,
) -> HRESULT,
fn UnregisterEffect(
classId: REFCLSID,
) -> HRESULT,
fn GetRegisteredEffects(
effects: *mut CLSID,
effectsCount: UINT32,
effectsReturned: *mut UINT32,
effectsRegistered: *mut UINT32,
) -> HRESULT,
fn GetEffectProperties(
effectId: REFCLSID,
properties: *mut *mut ID2D1Properties,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 x31e6e7bc, 0 xe0ff, 0 x4d46, 0 x8c, 0 x64, 0 xa0, 0 xa8, 0 xc4, 0 x1c, 0 x15, 0 xd3)]
interface ID2D1Multithread(ID2D1MultithreadVtbl): IUnknown(IUnknownVtbl) {
fn GetMultithreadProtected() -> BOOL,
fn Enter() -> (),
fn Leave() -> (),
}}
extern "system" {
pub fn D2D1CreateDevice(
dxgiDevice: *const IDXGIDevice,
creationProperties: *const D2D1_CREATION_PROPERTIES,
d2dDevice: *mut *mut ID2D1Device,
) -> HRESULT;
pub fn D2D1CreateDeviceContext(
dxgiSurface: *const IDXGISurface,
creationProperties: *const D2D1_CREATION_PROPERTIES,
d2dDeviceContext: *mut *mut ID2D1DeviceContext,
) -> HRESULT;
pub fn D2D1ConvertColorSpace(
sourceColorSpace: D2D1_COLOR_SPACE,
destinationColorSpace: D2D1_COLOR_SPACE,
color: *const D2D1_COLOR_F,
) -> D2D1_COLOR_F;
pub fn D2D1SinCos(
angle: FLOAT,
s: *mut FLOAT,
c: *mut FLOAT,
) -> ();
pub fn D2D1Tan(
angle: FLOAT,
) -> FLOAT;
pub fn D2D1Vec3Length(
x: FLOAT,
y: FLOAT,
z: FLOAT,
) -> FLOAT;
}
Messung V0.5 in Prozent C=99 H=100 G=99
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.14Angebot
(Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-06-25)
¤
*Eine klare Vorstellung vom Zielzustand