// 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.
use ctypes::c_void;
use shared::basetsd::UINT32;
use shared::dxgiformat::DXGI_FORMAT;
use shared::guiddef::{GUID, REFCLSID, REFGUID};
use shared::minwindef::{BOOL, BYTE, FLOAT};
use shared::ntdef::{HRESULT, PCSTR, PCWSTR};
use um::d2d1::D2D1_EXTEND_MODE;
use um::d2d1_1::{
D2D1_BUFFER_PRECISION, D2D1_COLOR_SPACE, ID2D1Bitmap1, ID2D1ColorContext, ID2D1Effec
t,
};
use um::d2dbasetypes::{D2D_POINT_2L, D2D_POINT_2U, D2D_RECT_L};
use um::d3dcommon::D3D_FEATURE_LEVEL;
use um::unknwnbase::{IUnknown, IUnknownVtbl};
use um::wincodec::IWICColorContext;
FN !{stdcall PD2D1_PROPERTY_SET_FUNCTION(
effect: *const IUnknown,
data: *const BYTE,
dataSize: UINT32,
) -> HRESULT}
FN !{stdcall PD2D1_PROPERTY_GET_FUNCTION(
effect: *const IUnknown,
data: *mut BYTE,
dataSize: UINT32,
actualSize: *mut UINT32,
) -> HRESULT}
ENUM !{enum D2D1_CHANGE_TYPE {
D2D1_CHANGE_TYPE_NONE = 0 ,
D2D1_CHANGE_TYPE_PROPERTIES = 1 ,
D2D1_CHANGE_TYPE_CONTEXT = 2 ,
D2D1_CHANGE_TYPE_GRAPH = 3 ,
}}
ENUM !{enum D2D1_PIXEL_OPTIONS {
D2D1_PIXEL_OPTIONS_NONE = 0 ,
D2D1_PIXEL_OPTIONS_TRIVIAL_SAMPLING = 1 ,
}}
ENUM !{enum D2D1_VERTEX_OPTIONS {
D2D1_VERTEX_OPTIONS_NONE = 0 ,
D2D1_VERTEX_OPTIONS_DO_NOT_CLEAR = 1 ,
D2D1_VERTEX_OPTIONS_USE_DEPTH_BUFFER = 2 ,
D2D1_VERTEX_OPTIONS_ASSUME_NO_OVERLAP = 4 ,
}}
ENUM !{enum D2D1_VERTEX_USAGE {
D2D1_VERTEX_USAGE_STATIC = 0 ,
D2D1_VERTEX_USAGE_DYNAMIC = 1 ,
}}
ENUM !{enum D2D1_BLEND_OPERATION {
D2D1_BLEND_OPERATION_ADD = 1 ,
D2D1_BLEND_OPERATION_SUBTRACT = 2 ,
D2D1_BLEND_OPERATION_REV_SUBTRACT = 3 ,
D2D1_BLEND_OPERATION_MIN = 4 ,
D2D1_BLEND_OPERATION_MAX = 5 ,
}}
ENUM !{enum D2D1_BLEND {
D2D1_BLEND_ZERO = 1 ,
D2D1_BLEND_ONE = 2 ,
D2D1_BLEND_SRC_COLOR = 3 ,
D2D1_BLEND_INV_SRC_COLOR = 4 ,
D2D1_BLEND_SRC_ALPHA = 5 ,
D2D1_BLEND_INV_SRC_ALPHA = 6 ,
D2D1_BLEND_DEST_ALPHA = 7 ,
D2D1_BLEND_INV_DEST_ALPHA = 8 ,
D2D1_BLEND_DEST_COLOR = 9 ,
D2D1_BLEND_INV_DEST_COLOR = 10 ,
D2D1_BLEND_SRC_ALPHA_SAT = 11 ,
D2D1_BLEND_BLEND_FACTOR = 14 ,
D2D1_BLEND_INV_BLEND_FACTOR = 15 ,
}}
ENUM !{enum D2D1_CHANNEL_DEPTH {
D2D1_CHANNEL_DEPTH_DEFAULT = 0 ,
D2D1_CHANNEL_DEPTH_1 = 1 ,
D2D1_CHANNEL_DEPTH_4 = 4 ,
}}
ENUM !{enum D2D1_FILTER {
D2D1_FILTER_MIN_MAG_MIP_POINT = 0 x00,
D2D1_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0 x01,
D2D1_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0 x04,
D2D1_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0 x05,
D2D1_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0 x10,
D2D1_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0 x11,
D2D1_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0 x14,
D2D1_FILTER_MIN_MAG_MIP_LINEAR = 0 x15,
D2D1_FILTER_ANISOTROPIC = 0 x55,
}}
ENUM !{enum D2D1_FEATURE {
D2D1_FEATURE_DOUBLES = 0 ,
D2D1_FEATURE_D3D10_X_HARDWARE_OPTIONS = 1 ,
}}
STRUCT !{struct D2D1_PROPERTY_BINDING {
propertyName: PCWSTR,
setFunction: PD2D1_PROPERTY_SET_FUNCTION,
getFunction: PD2D1_PROPERTY_GET_FUNCTION,
}}
STRUCT !{struct D2D1_RESOURCE_TEXTURE_PROPERTIES {
extents: *const UINT32,
dimensions: UINT32,
bufferPrecision: D2D1_BUFFER_PRECISION,
channelDepth: D2D1_CHANNEL_DEPTH,
filter: D2D1_FILTER,
extendModes: *const D2D1_EXTEND_MODE,
}}
STRUCT !{struct D2D1_INPUT_ELEMENT_DESC {
semanticName: PCSTR,
semanticIndex: UINT32,
format: DXGI_FORMAT,
inputSlot: UINT32,
alignedByteOffset: UINT32,
}}
pub const D2D1_APPEND_ALIGNED_ELEMENT: UINT32 = 0 xffffffff;
STRUCT !{struct D2D1_VERTEX_BUFFER_PROPERTIES {
inputCount: UINT32,
usage: D2D1_VERTEX_USAGE,
data: *const BYTE,
byteWidth: UINT32,
}}
STRUCT !{struct D2D1_CUSTOM_VERTEX_BUFFER_PROPERTIES {
shaderBufferWithInputSignature: *const BYTE,
shaderBufferSize: UINT32,
inputElements: *const D2D1_INPUT_ELEMENT_DESC,
elementCount: UINT32,
stride: UINT32,
}}
STRUCT !{struct D2D1_VERTEX_RANGE {
startVertex: UINT32,
vertexCount: UINT32,
}}
STRUCT !{struct D2D1_BLEND_DESCRIPTION {
sourceBlend: D2D1_BLEND,
destinationBlend: D2D1_BLEND,
blendOperation: D2D1_BLEND_OPERATION,
sourceBlendAlpha: D2D1_BLEND,
destinationBlendAlpha: D2D1_BLEND,
blendOperationAlpha: D2D1_BLEND_OPERATION,
blendFactor: [FLOAT; 4 ],
}}
STRUCT !{struct D2D1_INPUT_DESCRIPTION {
filter: D2D1_FILTER,
leveOfDetailCount: UINT32,
}}
STRUCT !{struct D2D1_FEATURE_DATA_DOUBLES {
doublePrecisionFloatShaderOps: BOOL,
}}
STRUCT !{struct D2D1_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS {
computeShaders_Plus_RawAndStructuredBuffers_Via_Shader_4_x: BOOL,
}}
DEFINE_GUID!{IID_ID2D1VertexBuffer,
0 x9b8b1336, 0 x00a5, 0 x4668, 0 x92, 0 xb7, 0 xce, 0 xd5, 0 xd8, 0 xbf, 0 x9b, 0 x7b}
DEFINE_GUID!{IID_ID2D1ResourceTexture,
0 x688d15c3, 0 x02b0, 0 x438d, 0 xb1, 0 x3a, 0 xd1, 0 xb4, 0 x4c, 0 x32, 0 xc3, 0 x9a}
DEFINE_GUID!{IID_ID2D1RenderInfo,
0 x519ae1bd, 0 xd19a, 0 x420d, 0 xb8, 0 x49, 0 x36, 0 x4f, 0 x59, 0 x47, 0 x76, 0 xb7}
DEFINE_GUID!{IID_ID2D1DrawInfo,
0 x693ce632, 0 x7f2f, 0 x45de, 0 x93, 0 xfe, 0 x18, 0 xd8, 0 x8b, 0 x37, 0 xaa, 0 x21}
DEFINE_GUID!{IID_ID2D1ComputeInfo,
0 x5598b14b, 0 x9fd7, 0 x48b7, 0 x9b, 0 xdb, 0 x8f, 0 x09, 0 x64, 0 xeb, 0 x38, 0 xbc}
DEFINE_GUID!{IID_ID2D1TransformNode,
0 xb2efe1e7, 0 x729f, 0 x4102, 0 x94, 0 x9f, 0 x50, 0 x5f, 0 xa2, 0 x1b, 0 xf6, 0 x66}
DEFINE_GUID!{IID_ID2D1TransformGraph,
0 x13d29038, 0 xc3e6, 0 x4034, 0 x90, 0 x81, 0 x13, 0 xb5, 0 x3a, 0 x41, 0 x79, 0 x92}
DEFINE_GUID!{IID_ID2D1Transform,
0 xef1a287d, 0 x342a, 0 x4f76, 0 x8f, 0 xdb, 0 xda, 0 x0d, 0 x6e, 0 xa9, 0 xf9, 0 x2b}
DEFINE_GUID!{IID_ID2D1DrawTransform,
0 x36bfdcb6, 0 x9739, 0 x435d, 0 xa3, 0 x0d, 0 xa6, 0 x53, 0 xbe, 0 xff, 0 x6a, 0 x6f}
DEFINE_GUID!{IID_ID2D1ComputeTransform,
0 x0d85573c, 0 x01e3, 0 x4f7d, 0 xbf, 0 xd9, 0 x0d, 0 x60, 0 x60, 0 x8b, 0 xf3, 0 xc3}
DEFINE_GUID!{IID_ID2D1AnalysisTransform,
0 x0359dc30, 0 x95e6, 0 x4568, 0 x90, 0 x55, 0 x27, 0 x72, 0 x0d, 0 x13, 0 x0e, 0 x93}
DEFINE_GUID!{IID_ID2D1SourceTransform,
0 xdb1800dd, 0 x0c34, 0 x4cf9, 0 xbe, 0 x90, 0 x31, 0 xcc, 0 x0a, 0 x56, 0 x53, 0 xe1}
DEFINE_GUID!{IID_ID2D1ConcreteTransform,
0 x1a799d8a, 0 x69f7, 0 x4e4c, 0 x9f, 0 xed, 0 x43, 0 x7c, 0 xcc, 0 x66, 0 x84, 0 xcc}
DEFINE_GUID!{IID_ID2D1BlendTransform,
0 x63ac0b32, 0 xba44, 0 x450f, 0 x88, 0 x06, 0 x7f, 0 x4c, 0 xa1, 0 xff, 0 x2f, 0 x1b}
DEFINE_GUID!{IID_ID2D1BorderTransform,
0 x4998735c, 0 x3a19, 0 x473c, 0 x97, 0 x81, 0 x65, 0 x68, 0 x47, 0 xe3, 0 xa3, 0 x47}
DEFINE_GUID!{IID_ID2D1OffsetTransform,
0 x3fe6adea, 0 x7643, 0 x4f53, 0 xbd, 0 x14, 0 xa0, 0 xce, 0 x63, 0 xf2, 0 x40, 0 x42}
DEFINE_GUID!{IID_ID2D1BoundsAdjustmentTransform,
0 x90f732e2, 0 x5092, 0 x4606, 0 xa8, 0 x19, 0 x86, 0 x51, 0 x97, 0 x0b, 0 xac, 0 xcd}
DEFINE_GUID!{IID_ID2D1EffectImpl,
0 xa248fd3f, 0 x3e6c, 0 x4e63, 0 x9f, 0 x03, 0 x7f, 0 x68, 0 xec, 0 xc9, 0 x1d, 0 xb9}
DEFINE_GUID!{IID_ID2D1EffectContext,
0 x3d9f916b, 0 x27dc, 0 x4ad7, 0 xb4, 0 xf1, 0 x64, 0 x94, 0 x53, 0 x40, 0 xf5, 0 x63}
RIDL!{#[ uuid(0 x9b8b1336, 0 x00a5, 0 x4668, 0 x92, 0 xb7, 0 xce, 0 xd5, 0 xd8, 0 xbf, 0 x9b, 0 x7b)]
interface ID2D1VertexBuffer(ID2D1VertexBufferVtbl): IUnknown(IUnknownVtbl) {
fn Map(
data: *mut *mut BYTE,
) -> HRESULT,
fn Unmap() -> HRESULT,
}}
RIDL!{#[ uuid(0 x688d15c3, 0 x02b0, 0 x438d, 0 xb1, 0 x3a, 0 xd1, 0 xb4, 0 x4c, 0 x32, 0 xc3, 0 x9a)]
interface ID2D1ResourceTexture(ID2D1ResourceTextureVtbl): IUnknown(IUnknownVtbl) {
fn Update(
minimumExtents: *const UINT32,
maximumExtents: *const UINT32,
strides: *const UINT32,
dimensions: UINT32,
data: *const BYTE,
dataCount: UINT32,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 x519ae1bd, 0 xd19a, 0 x420d, 0 xb8, 0 x49, 0 x36, 0 x4f, 0 x59, 0 x47, 0 x76, 0 xb7)]
interface ID2D1RenderInfo(ID2D1RenderInfoVtbl): IUnknown(IUnknownVtbl) {
fn SetInputDescription(
inputIndex: UINT32,
inputDescription: D2D1_INPUT_DESCRIPTION,
) -> HRESULT,
fn SetOutputBuffer(
bufferPrecision: D2D1_BUFFER_PRECISION,
channelDepth: D2D1_CHANNEL_DEPTH,
) -> HRESULT,
fn SetCached(
isCached: BOOL,
) -> (),
fn SetInstructionCountHint(
instructionCount: UINT32,
) -> (),
}}
RIDL!{#[ uuid(0 x693ce632, 0 x7f2f, 0 x45de, 0 x93, 0 xfe, 0 x18, 0 xd8, 0 x8b, 0 x37, 0 xaa, 0 x21)]
interface ID2D1DrawInfo(ID2D1DrawInfoVtbl): ID2D1RenderInfo(ID2D1RenderInfoVtbl) {
fn SetPixelShaderConstantBuffer(
buffer: *const BYTE,
bufferCount: UINT32,
) -> HRESULT,
fn SetResourceTexture(
textureIndex: UINT32,
resourceTexture: *mut ID2D1ResourceTexture,
) -> HRESULT,
fn SetVertexShaderConstantBuffer(
buffer: *const BYTE,
bufferCount: UINT32,
) -> HRESULT,
fn SetPixelShader(
shaderId: REFGUID,
pixelOptions: D2D1_PIXEL_OPTIONS,
) -> HRESULT,
fn SetVertexProcessing(
vertexBuffer: *mut ID2D1VertexBuffer,
vertexOptions: D2D1_VERTEX_OPTIONS,
blendDescription: *const D2D1_BLEND_DESCRIPTION,
vertexRange: *const D2D1_VERTEX_RANGE,
vertexShader: *const GUID,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 x5598b14b, 0 x9fd7, 0 x48b7, 0 x9b, 0 xdb, 0 x8f, 0 x09, 0 x64, 0 xeb, 0 x38, 0 xbc)]
interface ID2D1ComputeInfo(ID2D1ComputeInfoVtbl): ID2D1RenderInfo(ID2D1RenderInfoVtbl) {
fn SetComputeShaderConstantBuffer(
buffer: *const BYTE,
bufferCount: UINT32,
) -> HRESULT,
fn SetComputeShader(
shaderId: REFGUID,
) -> HRESULT,
fn SetResourceTexture(
textureIndex: UINT32,
resourceTexture: *mut ID2D1ResourceTexture,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 xb2efe1e7, 0 x729f, 0 x4102, 0 x94, 0 x9f, 0 x50, 0 x5f, 0 xa2, 0 x1b, 0 xf6, 0 x66)]
interface ID2D1TransformNode(ID2D1TransformNodeVtbl): IUnknown(IUnknownVtbl) {
fn GetInputCount() -> UINT32,
}}
RIDL!{#[ uuid(0 x13d29038, 0 xc3e6, 0 x4034, 0 x90, 0 x81, 0 x13, 0 xb5, 0 x3a, 0 x41, 0 x79, 0 x92)]
interface ID2D1TransformGraph(ID2D1TransformGraphVtbl): IUnknown(IUnknownVtbl) {
fn GetInputCount() -> UINT32,
fn SetSingleTransformNode(
node: *mut ID2D1TransformNode,
) -> HRESULT,
fn AddNode(
node: *mut ID2D1TransformNode,
) -> HRESULT,
fn RemoveNode(
node: *mut ID2D1TransformNode,
) -> HRESULT,
fn SetOutputNode(
node: *mut ID2D1TransformNode,
) -> HRESULT,
fn ConnectNode(
fromNode: *mut ID2D1TransformNode,
toNode: *mut ID2D1TransformNode,
toNodeInputIndex: UINT32,
) -> HRESULT,
fn ConnectToEffectInput(
toEffectInputIndex: UINT32,
node: *mut ID2D1TransformNode,
toNodeInputIndex: UINT32,
) -> HRESULT,
fn Clear() -> (),
fn SetPassthroughGraph(
effectInputIndex: UINT32,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 xef1a287d, 0 x342a, 0 x4f76, 0 x8f, 0 xdb, 0 xda, 0 x0d, 0 x6e, 0 xa9, 0 xf9, 0 x2b)]
interface ID2D1Transform(ID2D1TransformVtbl): ID2D1TransformNode(ID2D1TransformNodeVtbl) {
fn MapOutputRectToInputRects(
outputRect: *const D2D_RECT_L,
inputRects: *mut D2D_RECT_L,
inputRectsCount: UINT32,
) -> HRESULT,
fn MapInputRectsToOutputRect(
inputRects: *const D2D_RECT_L,
inputOpaqueSubRects: *const D2D_RECT_L,
inputRectCount: UINT32,
outputRect: *mut D2D_RECT_L,
outputOpaqueSubRect: *mut D2D_RECT_L,
) -> HRESULT,
fn MapInvalidRect(
inputIndex: UINT32,
invalidInputRect: D2D_RECT_L,
invalidOutputRect: *mut D2D_RECT_L,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 x36bfdcb6, 0 x9739, 0 x435d, 0 xa3, 0 x0d, 0 xa6, 0 x53, 0 xbe, 0 xff, 0 x6a, 0 x6f)]
interface ID2D1DrawTransform(ID2D1DrawTransformVtbl): ID2D1Transform(ID2D1TransformVtbl) {
fn SetDrawInfo(
drawInfo: *mut ID2D1DrawInfo,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 x0d85573c, 0 x01e3, 0 x4f7d, 0 xbf, 0 xd9, 0 x0d, 0 x60, 0 x60, 0 x8b, 0 xf3, 0 xc3)]
interface ID2D1ComputeTransform(ID2D1ComputeTransformVtbl): ID2D1Transform(ID2D1TransformVtbl) {
fn SetComputeInfo(
computeInfo: *mut ID2D1ComputeInfo,
) -> HRESULT,
fn CalculateThreadgroups(
outputRect: *const D2D_RECT_L,
dimensionX: *mut UINT32,
dimensionY: *mut UINT32,
dimensionZ: *mut UINT32,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 x0359dc30, 0 x95e6, 0 x4568, 0 x90, 0 x55, 0 x27, 0 x72, 0 x0d, 0 x13, 0 x0e, 0 x93)]
interface ID2D1AnalysisTransform(ID2D1AnalysisTransformVtbl): IUnknown(IUnknownVtbl) {
fn ProcessAnalysisResults(
analysisData: *const BYTE,
analysisDataCount: UINT32,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 xdb1800dd, 0 x0c34, 0 x4cf9, 0 xbe, 0 x90, 0 x31, 0 xcc, 0 x0a, 0 x56, 0 x53, 0 xe1)]
interface ID2D1SourceTransform(ID2D1SourceTransformVtbl): ID2D1Transform(ID2D1TransformVtbl) {
fn SetRenderInfo(
renderInfo: *mut ID2D1RenderInfo,
) -> HRESULT,
fn Draw(
target: *mut ID2D1Bitmap1,
drawRect: *mut D2D_RECT_L,
targetOrigin: D2D_POINT_2U,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 x1a799d8a, 0 x69f7, 0 x4e4c, 0 x9f, 0 xed, 0 x43, 0 x7c, 0 xcc, 0 x66, 0 x84, 0 xcc)]
interface ID2D1ConcreteTransform(ID2D1ConcreteTransformVtbl):
ID2D1TransformNode(ID2D1TransformNodeVtbl) {
fn SetOutputBuffer(
bufferPrecision: D2D1_BUFFER_PRECISION,
channelDepth: D2D1_CHANNEL_DEPTH,
) -> HRESULT,
fn SetCached(
isCached: BOOL,
) -> (),
}}
RIDL!{#[ uuid(0 x63ac0b32, 0 xba44, 0 x450f, 0 x88, 0 x06, 0 x7f, 0 x4c, 0 xa1, 0 xff, 0 x2f, 0 x1b)]
interface ID2D1BlendTransform(ID2D1BlendTransformVtbl):
ID2D1ConcreteTransform(ID2D1ConcreteTransformVtbl) {
fn SetDescription(
description: *const D2D1_BLEND_DESCRIPTION,
) -> (),
fn GetDescription(
description: *mut D2D1_BLEND_DESCRIPTION,
) -> (),
}}
RIDL!{#[ uuid(0 x4998735c, 0 x3a19, 0 x473c, 0 x97, 0 x81, 0 x65, 0 x68, 0 x47, 0 xe3, 0 xa3, 0 x47)]
interface ID2D1BorderTransform(ID2D1BorderTransformVtbl):
ID2D1ConcreteTransform(ID2D1ConcreteTransformVtbl) {
fn SetExtendModeX(
extendMode: D2D1_EXTEND_MODE,
) -> (),
fn SetExtendModeY(
extendMode: D2D1_EXTEND_MODE,
) -> (),
fn GetExtendModeX() -> D2D1_EXTEND_MODE,
fn GetExtendModeY() -> D2D1_EXTEND_MODE,
}}
RIDL!{#[ uuid(0 x3fe6adea, 0 x7643, 0 x4f53, 0 xbd, 0 x14, 0 xa0, 0 xce, 0 x63, 0 xf2, 0 x40, 0 x42)]
interface ID2D1OffsetTransform(ID2D1OffsetTransformVtbl):
ID2D1TransformNode(ID2D1TransformNodeVtbl) {
fn SetOffset(
offset: D2D_POINT_2L,
) -> (),
fn GetOffset() -> D2D_POINT_2L,
}}
RIDL!{#[ uuid(0 x90f732e2, 0 x5092, 0 x4606, 0 xa8, 0 x19, 0 x86, 0 x51, 0 x97, 0 x0b, 0 xac, 0 xcd)]
interface ID2D1BoundsAdjustmentTransform(ID2D1BoundsAdjustmentTransformVtbl):
ID2D1TransformNode(ID2D1TransformNodeVtbl) {
fn SetOutputBounds(
outputBounds: *const D2D_RECT_L,
) -> (),
fn GetOutputBounds(
outputBounds: *mut D2D_RECT_L,
) -> (),
}}
RIDL!{#[ uuid(0 xa248fd3f, 0 x3e6c, 0 x4e63, 0 x9f, 0 x03, 0 x7f, 0 x68, 0 xec, 0 xc9, 0 x1d, 0 xb9)]
interface ID2D1EffectImpl(ID2D1EffectImplVtbl): IUnknown(IUnknownVtbl) {
fn Initialize(
effectContext: *mut ID2D1EffectContext,
transformGraph: *mut ID2D1TransformGraph,
) -> HRESULT,
fn PrepareForRender(
changeType: D2D1_CHANGE_TYPE,
) -> HRESULT,
fn SetGraph(
transformGraph: *mut ID2D1TransformGraph,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 x3d9f916b, 0 x27dc, 0 x4ad7, 0 xb4, 0 xf1, 0 x64, 0 x94, 0 x53, 0 x40, 0 xf5, 0 x63)]
interface ID2D1EffectContext(ID2D1EffectContextVtbl): IUnknown(IUnknownVtbl) {
fn GetDpi(
dpiX: *mut FLOAT,
dpiY: *mut FLOAT,
) -> (),
fn CreateEffect(
effectId: REFCLSID,
effect: *mut *mut ID2D1Effect,
) -> HRESULT,
fn GetMaximumSupportedFeatureLevel(
featureLevels: *const D3D_FEATURE_LEVEL,
featureLevelsCount: UINT32,
maximumSupportedFeatureLevel: *mut D3D_FEATURE_LEVEL,
) -> HRESULT,
fn CreateTransformNodeFromEffect(
effect: *mut ID2D1Effect,
transformNode: *mut *mut ID2D1TransformNode,
) -> HRESULT,
fn CreateBlendTransform(
numInputs: UINT32,
blendDescription: D2D1_BLEND_DESCRIPTION,
transform: *mut *mut ID2D1BlendTransform,
) -> HRESULT,
fn CreateBorderTransform(
extendModeX: D2D1_EXTEND_MODE,
extendModeY: D2D1_EXTEND_MODE,
transform: *mut *mut ID2D1BorderTransform,
) -> HRESULT,
fn CreateOffsetTransform(
offset: D2D_POINT_2L,
transform: *mut *mut ID2D1OffsetTransform,
) -> HRESULT,
fn CreateBoundsAdjustmentTransform(
outputRectangle: *mut D2D_RECT_L,
transform: ID2D1BoundsAdjustmentTransform,
) -> HRESULT,
fn LoadPixelShader(
shaderId: REFGUID,
shaderBuffer: *const BYTE,
shaderBufferCount: UINT32,
) -> HRESULT,
fn LoadVertexShader(
resourceId: REFGUID,
shaderBuffer: *const BYTE,
shaderBufferCount: UINT32,
) -> HRESULT,
fn LoadComputeShader(
resourceId: REFGUID,
shaderBuffer: *const BYTE,
shaderBufferCount: UINT32,
) -> HRESULT,
fn IsShaderLoaded(
shaderId: REFGUID,
) -> BOOL,
fn CreateResourceTexture(
resourceId: *const GUID,
resourceTextureProperties: *const D2D1_RESOURCE_TEXTURE_PROPERTIES,
data: *const BYTE,
strides: *const UINT32,
dataSize: UINT32,
resourceTexture: *mut *mut ID2D1ResourceTexture,
) -> HRESULT,
fn FindResourceTexture(
resourceId: *const GUID,
resourceTexture: *mut *mut ID2D1ResourceTexture,
) -> HRESULT,
fn CreateVertexBuffer(
vertexBufferProperties: *const D2D1_VERTEX_BUFFER_PROPERTIES,
resourceId: *const GUID,
customVertexBufferProperties: *const D2D1_CUSTOM_VERTEX_BUFFER_PROPERTIES,
buffer: *mut *mut ID2D1VertexBuffer,
) -> HRESULT,
fn FindVertexBuffer(
resourceId: *const GUID,
buffer: *mut *mut ID2D1VertexBuffer,
) -> 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: *mut IWICColorContext,
colorContext: *mut *mut ID2D1ColorContext,
) -> HRESULT,
fn CheckFeatureSupport(
feature: D2D1_FEATURE,
featureSupportData: *mut c_void,
featureSupportDataSize: UINT32,
) -> HRESULT,
fn IsBufferPrecisionSupported(
bufferPrecision: D2D1_BUFFER_PRECISION,
) -> BOOL,
}}
Messung V0.5 in Prozent C=100 H=100 G=100
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet am 2026-06-25)
¤
*© Formatika GbR, Deutschland