Added DirectWrite, DXGI and WIC references to Vanara.PInvoke.Graphics

pull/133/head
dahall 2020-06-02 21:54:48 -06:00
parent 491c26e0d6
commit 5104c4c6e0
22 changed files with 47016 additions and 0 deletions

View File

@ -0,0 +1,255 @@
## Correlation report for d2d1.dll, dxgi.dll, dwrite.dll, windowscodecs.dll
### Methods (100% complete, 25 of 25 functions)
Native Method | Native DLL | Header | Managed Method
--- | --- | --- | ---
[CreateDXGIFactory](https://www.google.com/search?num=5&q=CreateDXGIFactory+site%3Adocs.microsoft.com) | dxgi.dll | dxgi.h | [Vanara.PInvoke.DXGI.CreateDXGIFactory](https://github.com/dahall/Vanara/search?l=C%23&q=CreateDXGIFactory)
[CreateDXGIFactory1](https://www.google.com/search?num=5&q=CreateDXGIFactory1+site%3Adocs.microsoft.com) | dxgi.dll | dxgi.h | [Vanara.PInvoke.DXGI.CreateDXGIFactory1](https://github.com/dahall/Vanara/search?l=C%23&q=CreateDXGIFactory1)
[CreateDXGIFactory2](https://www.google.com/search?num=5&q=CreateDXGIFactory2+site%3Adocs.microsoft.com) | dxgi.dll | dxgi1_3.h | [Vanara.PInvoke.DXGI.CreateDXGIFactory2](https://github.com/dahall/Vanara/search?l=C%23&q=CreateDXGIFactory2)
[D2D1ComputeMaximumScaleFactor](https://www.google.com/search?num=5&q=D2D1ComputeMaximumScaleFactor+site%3Adocs.microsoft.com) | d2d1.dll | d2d1_2.h | [Vanara.PInvoke.D2d1.D2D1ComputeMaximumScaleFactor](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1ComputeMaximumScaleFactor)
[D2D1ConvertColorSpace](https://www.google.com/search?num=5&q=D2D1ConvertColorSpace+site%3Adocs.microsoft.com) | d2d1.dll | d2d1_1.h | [Vanara.PInvoke.D2d1.D2D1ConvertColorSpace](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1ConvertColorSpace)
[D2D1CreateDevice](https://www.google.com/search?num=5&q=D2D1CreateDevice+site%3Adocs.microsoft.com) | d2d1.dll | d2d1_1.h | [Vanara.PInvoke.D2d1.D2D1CreateDevice](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1CreateDevice)
[D2D1CreateDeviceContext](https://www.google.com/search?num=5&q=D2D1CreateDeviceContext+site%3Adocs.microsoft.com) | d2d1.dll | d2d1_1.h | [Vanara.PInvoke.D2d1.D2D1CreateDeviceContext](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1CreateDeviceContext)
[D2D1CreateFactory](https://www.google.com/search?num=5&q=D2D1CreateFactory+site%3Adocs.microsoft.com) | d2d1.dll | d2d1.h | [Vanara.PInvoke.D2d1.D2D1CreateFactory](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1CreateFactory)
[D2D1GetGradientMeshInteriorPointsFromCoonsPatch](https://www.google.com/search?num=5&q=D2D1GetGradientMeshInteriorPointsFromCoonsPatch+site%3Adocs.microsoft.com) | d2d1.dll | d2d1_3.h | [Vanara.PInvoke.D2d1.D2D1GetGradientMeshInteriorPointsFromCoonsPatch](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1GetGradientMeshInteriorPointsFromCoonsPatch)
[D2D1InvertMatrix](https://www.google.com/search?num=5&q=D2D1InvertMatrix+site%3Adocs.microsoft.com) | d2d1.dll | d2d1.h | [Vanara.PInvoke.D2d1.D2D1InvertMatrix](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1InvertMatrix)
[D2D1IsMatrixInvertible](https://www.google.com/search?num=5&q=D2D1IsMatrixInvertible+site%3Adocs.microsoft.com) | d2d1.dll | d2d1.h | [Vanara.PInvoke.D2d1.D2D1IsMatrixInvertible](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1IsMatrixInvertible)
[D2D1MakeRotateMatrix](https://www.google.com/search?num=5&q=D2D1MakeRotateMatrix+site%3Adocs.microsoft.com) | d2d1.dll | d2d1.h | [Vanara.PInvoke.D2d1.D2D1MakeRotateMatrix](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1MakeRotateMatrix)
[D2D1MakeSkewMatrix](https://www.google.com/search?num=5&q=D2D1MakeSkewMatrix+site%3Adocs.microsoft.com) | d2d1.dll | d2d1.h | [Vanara.PInvoke.D2d1.D2D1MakeSkewMatrix](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1MakeSkewMatrix)
[D2D1SinCos](https://www.google.com/search?num=5&q=D2D1SinCos+site%3Adocs.microsoft.com) | d2d1.dll | d2d1_1.h | [Vanara.PInvoke.D2d1.D2D1SinCos](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1SinCos)
[D2D1Tan](https://www.google.com/search?num=5&q=D2D1Tan+site%3Adocs.microsoft.com) | d2d1.dll | d2d1_1.h | [Vanara.PInvoke.D2d1.D2D1Tan](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1Tan)
[D2D1Vec3Length](https://www.google.com/search?num=5&q=D2D1Vec3Length+site%3Adocs.microsoft.com) | d2d1.dll | d2d1_1.h | [Vanara.PInvoke.D2d1.D2D1Vec3Length](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1Vec3Length)
[DWriteCreateFactory](https://www.google.com/search?num=5&q=DWriteCreateFactory+site%3Adocs.microsoft.com) | dwrite.dll | dwrite.h | [Vanara.PInvoke.Dwrite.DWriteCreateFactory](https://github.com/dahall/Vanara/search?l=C%23&q=DWriteCreateFactory)
[DXGIDeclareAdapterRemovalSupport](https://www.google.com/search?num=5&q=DXGIDeclareAdapterRemovalSupport+site%3Adocs.microsoft.com) | dxgi.dll | dxgi1_6.h | [Vanara.PInvoke.DXGI.DXGIDeclareAdapterRemovalSupport](https://github.com/dahall/Vanara/search?l=C%23&q=DXGIDeclareAdapterRemovalSupport)
[DXGIGetDebugInterface1](https://www.google.com/search?num=5&q=DXGIGetDebugInterface1+site%3Adocs.microsoft.com) | dxgi.dll | dxgi1_3.h | [Vanara.PInvoke.DXGI.DXGIGetDebugInterface1](https://github.com/dahall/Vanara/search?l=C%23&q=DXGIGetDebugInterface1)
[WICConvertBitmapSource](https://www.google.com/search?num=5&q=WICConvertBitmapSource+site%3Adocs.microsoft.com) | windowscodecs.dll | wincodec.h | [Vanara.PInvoke.WindowsCodecs.WICConvertBitmapSource](https://github.com/dahall/Vanara/search?l=C%23&q=WICConvertBitmapSource)
[WICCreateBitmapFromSection](https://www.google.com/search?num=5&q=WICCreateBitmapFromSection+site%3Adocs.microsoft.com) | windowscodecs.dll | wincodec.h | [Vanara.PInvoke.WindowsCodecs.WICCreateBitmapFromSection](https://github.com/dahall/Vanara/search?l=C%23&q=WICCreateBitmapFromSection)
[WICCreateBitmapFromSectionEx](https://www.google.com/search?num=5&q=WICCreateBitmapFromSectionEx+site%3Adocs.microsoft.com) | windowscodecs.dll | wincodec.h | [Vanara.PInvoke.WindowsCodecs.WICCreateBitmapFromSectionEx](https://github.com/dahall/Vanara/search?l=C%23&q=WICCreateBitmapFromSectionEx)
[WICMapGuidToShortName](https://www.google.com/search?num=5&q=WICMapGuidToShortName+site%3Adocs.microsoft.com) | windowscodecs.dll | wincodec.h | [Vanara.PInvoke.WindowsCodecs.WICMapGuidToShortName](https://github.com/dahall/Vanara/search?l=C%23&q=WICMapGuidToShortName)
[WICMapSchemaToName](https://www.google.com/search?num=5&q=WICMapSchemaToName+site%3Adocs.microsoft.com) | windowscodecs.dll | wincodec.h | [Vanara.PInvoke.WindowsCodecs.WICMapSchemaToName](https://github.com/dahall/Vanara/search?l=C%23&q=WICMapSchemaToName)
[WICMapShortNameToGuid](https://www.google.com/search?num=5&q=WICMapShortNameToGuid+site%3Adocs.microsoft.com) | windowscodecs.dll | wincodec.h | [Vanara.PInvoke.WindowsCodecs.WICMapShortNameToGuid](https://github.com/dahall/Vanara/search?l=C%23&q=WICMapShortNameToGuid)
### Structures
Native Structure | Header | Managed Structure
--- | --- | ---
[D2D_MATRIX_3X2_F](https://www.google.com/search?num=5&q=D2D_MATRIX_3X2_F+site%3Adocs.microsoft.com) | dcommon.h | [Vanara.PInvoke.D2d1.D2D_MATRIX_3X2_F](https://github.com/dahall/Vanara/search?l=C%23&q=D2D_MATRIX_3X2_F)
[D2D_POINT_2F](https://www.google.com/search?num=5&q=D2D_POINT_2F+site%3Adocs.microsoft.com) | dcommon.h | [Vanara.PInvoke.D2d1.D2D_POINT_2F](https://github.com/dahall/Vanara/search?l=C%23&q=D2D_POINT_2F)
[D2D_RECT_F](https://www.google.com/search?num=5&q=D2D_RECT_F+site%3Adocs.microsoft.com) | dcommon.h | [Vanara.PInvoke.D2d1.D2D_RECT_F](https://github.com/dahall/Vanara/search?l=C%23&q=D2D_RECT_F)
[D2D_SIZE_F](https://www.google.com/search?num=5&q=D2D_SIZE_F+site%3Adocs.microsoft.com) | dcommon.h | [Vanara.PInvoke.D2d1.D2D_SIZE_F](https://github.com/dahall/Vanara/search?l=C%23&q=D2D_SIZE_F)
[D2D_SIZE_U](https://www.google.com/search?num=5&q=D2D_SIZE_U+site%3Adocs.microsoft.com) | dcommon.h | [Vanara.PInvoke.D2d1.D2D_SIZE_U](https://github.com/dahall/Vanara/search?l=C%23&q=D2D_SIZE_U)
[D2D1_ARC_SEGMENT](https://www.google.com/search?num=5&q=D2D1_ARC_SEGMENT+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.D2D1_ARC_SEGMENT](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1_ARC_SEGMENT)
[D2D1_BEZIER_SEGMENT](https://www.google.com/search?num=5&q=D2D1_BEZIER_SEGMENT+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.D2D1_BEZIER_SEGMENT](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1_BEZIER_SEGMENT)
[D2D1_BITMAP_BRUSH_PROPERTIES](https://www.google.com/search?num=5&q=D2D1_BITMAP_BRUSH_PROPERTIES+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.D2D1_BITMAP_BRUSH_PROPERTIES](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1_BITMAP_BRUSH_PROPERTIES)
[D2D1_BITMAP_PROPERTIES](https://www.google.com/search?num=5&q=D2D1_BITMAP_PROPERTIES+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.D2D1_BITMAP_PROPERTIES](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1_BITMAP_PROPERTIES)
[D2D1_BITMAP_PROPERTIES1](https://www.google.com/search?num=5&q=D2D1_BITMAP_PROPERTIES1+site%3Adocs.microsoft.com) | d2d1_1.h | [Vanara.PInvoke.D2d1.D2D1_BITMAP_PROPERTIES1](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1_BITMAP_PROPERTIES1)
[D2D1_BRUSH_PROPERTIES](https://www.google.com/search?num=5&q=D2D1_BRUSH_PROPERTIES+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.D2D1_BRUSH_PROPERTIES](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1_BRUSH_PROPERTIES)
[D2D1_CREATION_PROPERTIES](https://www.google.com/search?num=5&q=D2D1_CREATION_PROPERTIES+site%3Adocs.microsoft.com) | d2d1_1.h | [Vanara.PInvoke.D2d1.D2D1_CREATION_PROPERTIES](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1_CREATION_PROPERTIES)
[D2D1_DRAWING_STATE_DESCRIPTION](https://www.google.com/search?num=5&q=D2D1_DRAWING_STATE_DESCRIPTION+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.D2D1_DRAWING_STATE_DESCRIPTION](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1_DRAWING_STATE_DESCRIPTION)
[D2D1_EFFECT_INPUT_DESCRIPTION](https://www.google.com/search?num=5&q=D2D1_EFFECT_INPUT_DESCRIPTION+site%3Adocs.microsoft.com) | d2d1_1.h | [Vanara.PInvoke.D2d1.D2D1_EFFECT_INPUT_DESCRIPTION](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1_EFFECT_INPUT_DESCRIPTION)
[D2D1_ELLIPSE](https://www.google.com/search?num=5&q=D2D1_ELLIPSE+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.D2D1_ELLIPSE](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1_ELLIPSE)
[D2D1_FACTORY_OPTIONS](https://www.google.com/search?num=5&q=D2D1_FACTORY_OPTIONS+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.D2D1_FACTORY_OPTIONS](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1_FACTORY_OPTIONS)
[D2D1_GRADIENT_STOP](https://www.google.com/search?num=5&q=D2D1_GRADIENT_STOP+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.D2D1_GRADIENT_STOP](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1_GRADIENT_STOP)
[D2D1_HWND_RENDER_TARGET_PROPERTIES](https://www.google.com/search?num=5&q=D2D1_HWND_RENDER_TARGET_PROPERTIES+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.D2D1_HWND_RENDER_TARGET_PROPERTIES](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1_HWND_RENDER_TARGET_PROPERTIES)
[D2D1_IMAGE_BRUSH_PROPERTIES](https://www.google.com/search?num=5&q=D2D1_IMAGE_BRUSH_PROPERTIES+site%3Adocs.microsoft.com) | d2d1_1.h | [Vanara.PInvoke.D2d1.D2D1_IMAGE_BRUSH_PROPERTIES](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1_IMAGE_BRUSH_PROPERTIES)
[D2D1_LAYER_PARAMETERS](https://www.google.com/search?num=5&q=D2D1_LAYER_PARAMETERS+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.D2D1_LAYER_PARAMETERS](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1_LAYER_PARAMETERS)
[D2D1_LAYER_PARAMETERS1](https://www.google.com/search?num=5&q=D2D1_LAYER_PARAMETERS1+site%3Adocs.microsoft.com) | d2d1_1.h | [Vanara.PInvoke.D2d1.D2D1_LAYER_PARAMETERS1](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1_LAYER_PARAMETERS1)
[D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES](https://www.google.com/search?num=5&q=D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES)
[D2D1_MAPPED_RECT](https://www.google.com/search?num=5&q=D2D1_MAPPED_RECT+site%3Adocs.microsoft.com) | d2d1_1.h | [Vanara.PInvoke.D2d1.D2D1_MAPPED_RECT](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1_MAPPED_RECT)
[D2D1_PIXEL_FORMAT](https://www.google.com/search?num=5&q=D2D1_PIXEL_FORMAT+site%3Adocs.microsoft.com) | dcommon.h | [Vanara.PInvoke.D2d1.D2D1_PIXEL_FORMAT](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1_PIXEL_FORMAT)
[D2D1_PRINT_CONTROL_PROPERTIES](https://www.google.com/search?num=5&q=D2D1_PRINT_CONTROL_PROPERTIES+site%3Adocs.microsoft.com) | d2d1_1.h | [Vanara.PInvoke.D2d1.D2D1_PRINT_CONTROL_PROPERTIES](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1_PRINT_CONTROL_PROPERTIES)
[D2D1_QUADRATIC_BEZIER_SEGMENT](https://www.google.com/search?num=5&q=D2D1_QUADRATIC_BEZIER_SEGMENT+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.D2D1_QUADRATIC_BEZIER_SEGMENT](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1_QUADRATIC_BEZIER_SEGMENT)
[D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES](https://www.google.com/search?num=5&q=D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES)
[D2D1_RENDER_TARGET_PROPERTIES](https://www.google.com/search?num=5&q=D2D1_RENDER_TARGET_PROPERTIES+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.D2D1_RENDER_TARGET_PROPERTIES](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1_RENDER_TARGET_PROPERTIES)
[D2D1_RENDERING_CONTROLS](https://www.google.com/search?num=5&q=D2D1_RENDERING_CONTROLS+site%3Adocs.microsoft.com) | d2d1_1.h | [Vanara.PInvoke.D2d1.D2D1_RENDERING_CONTROLS](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1_RENDERING_CONTROLS)
[D2D1_ROUNDED_RECT](https://www.google.com/search?num=5&q=D2D1_ROUNDED_RECT+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.D2D1_ROUNDED_RECT](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1_ROUNDED_RECT)
[D2D1_STROKE_STYLE_PROPERTIES](https://www.google.com/search?num=5&q=D2D1_STROKE_STYLE_PROPERTIES+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.D2D1_STROKE_STYLE_PROPERTIES](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1_STROKE_STYLE_PROPERTIES)
[D2D1_TRIANGLE](https://www.google.com/search?num=5&q=D2D1_TRIANGLE+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.D2D1_TRIANGLE](https://github.com/dahall/Vanara/search?l=C%23&q=D2D1_TRIANGLE)
[D3DCOLORVALUE](https://www.google.com/search?num=5&q=D3DCOLORVALUE+site%3Adocs.microsoft.com) | | [Vanara.PInvoke.D2d1.D3DCOLORVALUE](https://github.com/dahall/Vanara/search?l=C%23&q=D3DCOLORVALUE)
[DWRITE_CLUSTER_METRICS](https://www.google.com/search?num=5&q=DWRITE_CLUSTER_METRICS+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.DWRITE_CLUSTER_METRICS](https://github.com/dahall/Vanara/search?l=C%23&q=DWRITE_CLUSTER_METRICS)
[DWRITE_FONT_FEATURE](https://www.google.com/search?num=5&q=DWRITE_FONT_FEATURE+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.DWRITE_FONT_FEATURE](https://github.com/dahall/Vanara/search?l=C%23&q=DWRITE_FONT_FEATURE)
[DWRITE_FONT_METRICS](https://www.google.com/search?num=5&q=DWRITE_FONT_METRICS+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.DWRITE_FONT_METRICS](https://github.com/dahall/Vanara/search?l=C%23&q=DWRITE_FONT_METRICS)
[DWRITE_GLYPH_METRICS](https://www.google.com/search?num=5&q=DWRITE_GLYPH_METRICS+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.DWRITE_GLYPH_METRICS](https://github.com/dahall/Vanara/search?l=C%23&q=DWRITE_GLYPH_METRICS)
[DWRITE_GLYPH_OFFSET](https://www.google.com/search?num=5&q=DWRITE_GLYPH_OFFSET+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.DWRITE_GLYPH_OFFSET](https://github.com/dahall/Vanara/search?l=C%23&q=DWRITE_GLYPH_OFFSET)
[DWRITE_GLYPH_RUN](https://www.google.com/search?num=5&q=DWRITE_GLYPH_RUN+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.D2d1.DWRITE_GLYPH_RUN](https://github.com/dahall/Vanara/search?l=C%23&q=DWRITE_GLYPH_RUN)
[DWRITE_GLYPH_RUN](https://www.google.com/search?num=5&q=DWRITE_GLYPH_RUN+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.DWRITE_GLYPH_RUN](https://github.com/dahall/Vanara/search?l=C%23&q=DWRITE_GLYPH_RUN)
[DWRITE_GLYPH_RUN_DESCRIPTION](https://www.google.com/search?num=5&q=DWRITE_GLYPH_RUN_DESCRIPTION+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.DWRITE_GLYPH_RUN_DESCRIPTION](https://github.com/dahall/Vanara/search?l=C%23&q=DWRITE_GLYPH_RUN_DESCRIPTION)
[DWRITE_HIT_TEST_METRICS](https://www.google.com/search?num=5&q=DWRITE_HIT_TEST_METRICS+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.DWRITE_HIT_TEST_METRICS](https://github.com/dahall/Vanara/search?l=C%23&q=DWRITE_HIT_TEST_METRICS)
[DWRITE_INLINE_OBJECT_METRICS](https://www.google.com/search?num=5&q=DWRITE_INLINE_OBJECT_METRICS+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.DWRITE_INLINE_OBJECT_METRICS](https://github.com/dahall/Vanara/search?l=C%23&q=DWRITE_INLINE_OBJECT_METRICS)
[DWRITE_LINE_BREAKPOINT](https://www.google.com/search?num=5&q=DWRITE_LINE_BREAKPOINT+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.DWRITE_LINE_BREAKPOINT](https://github.com/dahall/Vanara/search?l=C%23&q=DWRITE_LINE_BREAKPOINT)
[DWRITE_LINE_METRICS](https://www.google.com/search?num=5&q=DWRITE_LINE_METRICS+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.DWRITE_LINE_METRICS](https://github.com/dahall/Vanara/search?l=C%23&q=DWRITE_LINE_METRICS)
[DWRITE_MATRIX](https://www.google.com/search?num=5&q=DWRITE_MATRIX+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.DWRITE_MATRIX](https://github.com/dahall/Vanara/search?l=C%23&q=DWRITE_MATRIX)
[DWRITE_OVERHANG_METRICS](https://www.google.com/search?num=5&q=DWRITE_OVERHANG_METRICS+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.DWRITE_OVERHANG_METRICS](https://github.com/dahall/Vanara/search?l=C%23&q=DWRITE_OVERHANG_METRICS)
[DWRITE_SCRIPT_ANALYSIS](https://www.google.com/search?num=5&q=DWRITE_SCRIPT_ANALYSIS+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.DWRITE_SCRIPT_ANALYSIS](https://github.com/dahall/Vanara/search?l=C%23&q=DWRITE_SCRIPT_ANALYSIS)
[DWRITE_SHAPING_GLYPH_PROPERTIES](https://www.google.com/search?num=5&q=DWRITE_SHAPING_GLYPH_PROPERTIES+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.DWRITE_SHAPING_GLYPH_PROPERTIES](https://github.com/dahall/Vanara/search?l=C%23&q=DWRITE_SHAPING_GLYPH_PROPERTIES)
[DWRITE_SHAPING_TEXT_PROPERTIES](https://www.google.com/search?num=5&q=DWRITE_SHAPING_TEXT_PROPERTIES+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.DWRITE_SHAPING_TEXT_PROPERTIES](https://github.com/dahall/Vanara/search?l=C%23&q=DWRITE_SHAPING_TEXT_PROPERTIES)
[DWRITE_STRIKETHROUGH](https://www.google.com/search?num=5&q=DWRITE_STRIKETHROUGH+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.DWRITE_STRIKETHROUGH](https://github.com/dahall/Vanara/search?l=C%23&q=DWRITE_STRIKETHROUGH)
[DWRITE_TEXT_METRICS](https://www.google.com/search?num=5&q=DWRITE_TEXT_METRICS+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.DWRITE_TEXT_METRICS](https://github.com/dahall/Vanara/search?l=C%23&q=DWRITE_TEXT_METRICS)
[DWRITE_TEXT_RANGE](https://www.google.com/search?num=5&q=DWRITE_TEXT_RANGE+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.DWRITE_TEXT_RANGE](https://github.com/dahall/Vanara/search?l=C%23&q=DWRITE_TEXT_RANGE)
[DWRITE_TRIMMING](https://www.google.com/search?num=5&q=DWRITE_TRIMMING+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.DWRITE_TRIMMING](https://github.com/dahall/Vanara/search?l=C%23&q=DWRITE_TRIMMING)
[DWRITE_TYPOGRAPHIC_FEATURES](https://www.google.com/search?num=5&q=DWRITE_TYPOGRAPHIC_FEATURES+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.DWRITE_TYPOGRAPHIC_FEATURES](https://github.com/dahall/Vanara/search?l=C%23&q=DWRITE_TYPOGRAPHIC_FEATURES)
[DWRITE_UNDERLINE](https://www.google.com/search?num=5&q=DWRITE_UNDERLINE+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.DWRITE_UNDERLINE](https://github.com/dahall/Vanara/search?l=C%23&q=DWRITE_UNDERLINE)
[DXGI_ADAPTER_DESC](https://www.google.com/search?num=5&q=DXGI_ADAPTER_DESC+site%3Adocs.microsoft.com) | dxgi.h | [Vanara.PInvoke.DXGI.DXGI_ADAPTER_DESC](https://github.com/dahall/Vanara/search?l=C%23&q=DXGI_ADAPTER_DESC)
[DXGI_ADAPTER_DESC1](https://www.google.com/search?num=5&q=DXGI_ADAPTER_DESC1+site%3Adocs.microsoft.com) | dxgi.h | [Vanara.PInvoke.DXGI.DXGI_ADAPTER_DESC1](https://github.com/dahall/Vanara/search?l=C%23&q=DXGI_ADAPTER_DESC1)
[DXGI_FRAME_STATISTICS](https://www.google.com/search?num=5&q=DXGI_FRAME_STATISTICS+site%3Adocs.microsoft.com) | dxgi.h | [Vanara.PInvoke.DXGI.DXGI_FRAME_STATISTICS](https://github.com/dahall/Vanara/search?l=C%23&q=DXGI_FRAME_STATISTICS)
[DXGI_GAMMA_CONTROL](https://www.google.com/search?num=5&q=DXGI_GAMMA_CONTROL+site%3Adocs.microsoft.com) | DXGI.h | [Vanara.PInvoke.DXGI.DXGI_GAMMA_CONTROL](https://github.com/dahall/Vanara/search?l=C%23&q=DXGI_GAMMA_CONTROL)
[DXGI_GAMMA_CONTROL_CAPABILITIES](https://www.google.com/search?num=5&q=DXGI_GAMMA_CONTROL_CAPABILITIES+site%3Adocs.microsoft.com) | dxgitype.h | [Vanara.PInvoke.DXGI.DXGI_GAMMA_CONTROL_CAPABILITIES](https://github.com/dahall/Vanara/search?l=C%23&q=DXGI_GAMMA_CONTROL_CAPABILITIES)
[DXGI_JPEG_AC_HUFFMAN_TABLE](https://www.google.com/search?num=5&q=DXGI_JPEG_AC_HUFFMAN_TABLE+site%3Adocs.microsoft.com) | dxgitype.h | [Vanara.PInvoke.D2d1.DXGI_JPEG_AC_HUFFMAN_TABLE](https://github.com/dahall/Vanara/search?l=C%23&q=DXGI_JPEG_AC_HUFFMAN_TABLE)
[DXGI_JPEG_DC_HUFFMAN_TABLE](https://www.google.com/search?num=5&q=DXGI_JPEG_DC_HUFFMAN_TABLE+site%3Adocs.microsoft.com) | dxgitype.h | [Vanara.PInvoke.D2d1.DXGI_JPEG_DC_HUFFMAN_TABLE](https://github.com/dahall/Vanara/search?l=C%23&q=DXGI_JPEG_DC_HUFFMAN_TABLE)
[DXGI_JPEG_QUANTIZATION_TABLE](https://www.google.com/search?num=5&q=DXGI_JPEG_QUANTIZATION_TABLE+site%3Adocs.microsoft.com) | dxgitype.h | [Vanara.PInvoke.D2d1.DXGI_JPEG_QUANTIZATION_TABLE](https://github.com/dahall/Vanara/search?l=C%23&q=DXGI_JPEG_QUANTIZATION_TABLE)
[DXGI_MAPPED_RECT](https://www.google.com/search?num=5&q=DXGI_MAPPED_RECT+site%3Adocs.microsoft.com) | dxgi.h | [Vanara.PInvoke.DXGI.DXGI_MAPPED_RECT](https://github.com/dahall/Vanara/search?l=C%23&q=DXGI_MAPPED_RECT)
[DXGI_MODE_DESC](https://www.google.com/search?num=5&q=DXGI_MODE_DESC+site%3Adocs.microsoft.com) | DXGI.h | [Vanara.PInvoke.DXGI.DXGI_MODE_DESC](https://github.com/dahall/Vanara/search?l=C%23&q=DXGI_MODE_DESC)
[DXGI_OUTPUT_DESC](https://www.google.com/search?num=5&q=DXGI_OUTPUT_DESC+site%3Adocs.microsoft.com) | dxgi.h | [Vanara.PInvoke.DXGI.DXGI_OUTPUT_DESC](https://github.com/dahall/Vanara/search?l=C%23&q=DXGI_OUTPUT_DESC)
[DXGI_RATIONAL](https://www.google.com/search?num=5&q=DXGI_RATIONAL+site%3Adocs.microsoft.com) | dxgicommon.h | [Vanara.PInvoke.DXGI.DXGI_RATIONAL](https://github.com/dahall/Vanara/search?l=C%23&q=DXGI_RATIONAL)
[DXGI_RGB](https://www.google.com/search?num=5&q=DXGI_RGB+site%3Adocs.microsoft.com) | DXGI.h | [Vanara.PInvoke.DXGI.DXGI_RGB](https://github.com/dahall/Vanara/search?l=C%23&q=DXGI_RGB)
[DXGI_SAMPLE_DESC](https://www.google.com/search?num=5&q=DXGI_SAMPLE_DESC+site%3Adocs.microsoft.com) | dxgicommon.h | [Vanara.PInvoke.DXGI.DXGI_SAMPLE_DESC](https://github.com/dahall/Vanara/search?l=C%23&q=DXGI_SAMPLE_DESC)
[DXGI_SHARED_RESOURCE](https://www.google.com/search?num=5&q=DXGI_SHARED_RESOURCE+site%3Adocs.microsoft.com) | dxgi.h | [Vanara.PInvoke.DXGI.DXGI_SHARED_RESOURCE](https://github.com/dahall/Vanara/search?l=C%23&q=DXGI_SHARED_RESOURCE)
[DXGI_SURFACE_DESC](https://www.google.com/search?num=5&q=DXGI_SURFACE_DESC+site%3Adocs.microsoft.com) | dxgi.h | [Vanara.PInvoke.DXGI.DXGI_SURFACE_DESC](https://github.com/dahall/Vanara/search?l=C%23&q=DXGI_SURFACE_DESC)
[DXGI_SWAP_CHAIN_DESC](https://www.google.com/search?num=5&q=DXGI_SWAP_CHAIN_DESC+site%3Adocs.microsoft.com) | dxgi.h | [Vanara.PInvoke.DXGI.DXGI_SWAP_CHAIN_DESC](https://github.com/dahall/Vanara/search?l=C%23&q=DXGI_SWAP_CHAIN_DESC)
[PWICRect](https://www.google.com/search?num=5&q=PWICRect+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.PWICRect](https://github.com/dahall/Vanara/search?l=C%23&q=PWICRect)
[WICBitmapPattern](https://www.google.com/search?num=5&q=WICBitmapPattern+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.WICBitmapPattern](https://github.com/dahall/Vanara/search?l=C%23&q=WICBitmapPattern)
[WICBitmapPlane](https://www.google.com/search?num=5&q=WICBitmapPlane+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.WICBitmapPlane](https://github.com/dahall/Vanara/search?l=C%23&q=WICBitmapPlane)
[WICBitmapPlaneDescription](https://www.google.com/search?num=5&q=WICBitmapPlaneDescription+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.WICBitmapPlaneDescription](https://github.com/dahall/Vanara/search?l=C%23&q=WICBitmapPlaneDescription)
[WICDdsFormatInfo](https://www.google.com/search?num=5&q=WICDdsFormatInfo+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.WICDdsFormatInfo](https://github.com/dahall/Vanara/search?l=C%23&q=WICDdsFormatInfo)
[WICDdsParameters](https://www.google.com/search?num=5&q=WICDdsParameters+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.WICDdsParameters](https://github.com/dahall/Vanara/search?l=C%23&q=WICDdsParameters)
[WICImageParameters](https://www.google.com/search?num=5&q=WICImageParameters+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.WICImageParameters](https://github.com/dahall/Vanara/search?l=C%23&q=WICImageParameters)
[WICJpegFrameHeader](https://www.google.com/search?num=5&q=WICJpegFrameHeader+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.WICJpegFrameHeader](https://github.com/dahall/Vanara/search?l=C%23&q=WICJpegFrameHeader)
[WICJpegScanHeader](https://www.google.com/search?num=5&q=WICJpegScanHeader+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.WICJpegScanHeader](https://github.com/dahall/Vanara/search?l=C%23&q=WICJpegScanHeader)
[WICMetadataHeader](https://www.google.com/search?num=5&q=WICMetadataHeader+site%3Adocs.microsoft.com) | wincodecsdk.h | [Vanara.PInvoke.WindowsCodecs.WICMetadataHeader](https://github.com/dahall/Vanara/search?l=C%23&q=WICMetadataHeader)
[WICMetadataPattern](https://www.google.com/search?num=5&q=WICMetadataPattern+site%3Adocs.microsoft.com) | wincodecsdk.h | [Vanara.PInvoke.WindowsCodecs.WICMetadataPattern](https://github.com/dahall/Vanara/search?l=C%23&q=WICMetadataPattern)
[WICRawCapabilitiesInfo](https://www.google.com/search?num=5&q=WICRawCapabilitiesInfo+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.WICRawCapabilitiesInfo](https://github.com/dahall/Vanara/search?l=C%23&q=WICRawCapabilitiesInfo)
[WICRawToneCurve](https://www.google.com/search?num=5&q=WICRawToneCurve+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.WICRawToneCurve](https://github.com/dahall/Vanara/search?l=C%23&q=WICRawToneCurve)
[WICRawToneCurvePoint](https://www.google.com/search?num=5&q=WICRawToneCurvePoint+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.WICRawToneCurvePoint](https://github.com/dahall/Vanara/search?l=C%23&q=WICRawToneCurvePoint)
[WICRect](https://www.google.com/search?num=5&q=WICRect+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.WICRect](https://github.com/dahall/Vanara/search?l=C%23&q=WICRect)
### Interfaces
Native Interface | Header | Managed Interface
--- | --- | ---
[ID2D1Bitmap](https://www.google.com/search?num=5&q=ID2D1Bitmap+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.ID2D1Bitmap](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1Bitmap)
[ID2D1Bitmap1](https://www.google.com/search?num=5&q=ID2D1Bitmap1+site%3Adocs.microsoft.com) | d2d1_1.h | [Vanara.PInvoke.D2d1.ID2D1Bitmap1](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1Bitmap1)
[ID2D1BitmapBrush](https://www.google.com/search?num=5&q=ID2D1BitmapBrush+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.ID2D1BitmapBrush](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1BitmapBrush)
[ID2D1BitmapBrush1](https://www.google.com/search?num=5&q=ID2D1BitmapBrush1+site%3Adocs.microsoft.com) | d2d1_1.h | [Vanara.PInvoke.D2d1.ID2D1BitmapBrush1](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1BitmapBrush1)
[ID2D1BitmapRenderTarget](https://www.google.com/search?num=5&q=ID2D1BitmapRenderTarget+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.ID2D1BitmapRenderTarget](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1BitmapRenderTarget)
[ID2D1Brush](https://www.google.com/search?num=5&q=ID2D1Brush+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.ID2D1Brush](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1Brush)
[ID2D1ColorContext](https://www.google.com/search?num=5&q=ID2D1ColorContext+site%3Adocs.microsoft.com) | d2d1_1.h | [Vanara.PInvoke.D2d1.ID2D1ColorContext](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1ColorContext)
[ID2D1CommandList](https://www.google.com/search?num=5&q=ID2D1CommandList+site%3Adocs.microsoft.com) | | [Vanara.PInvoke.D2d1.ID2D1CommandList](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1CommandList)
[ID2D1CommandSink](https://www.google.com/search?num=5&q=ID2D1CommandSink+site%3Adocs.microsoft.com) | d2d1_1.h | [Vanara.PInvoke.D2d1.ID2D1CommandSink](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1CommandSink)
[ID2D1DCRenderTarget](https://www.google.com/search?num=5&q=ID2D1DCRenderTarget+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.ID2D1DCRenderTarget](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1DCRenderTarget)
[ID2D1Device](https://www.google.com/search?num=5&q=ID2D1Device+site%3Adocs.microsoft.com) | d2d1_1.h | [Vanara.PInvoke.D2d1.ID2D1Device](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1Device)
[ID2D1DeviceContext](https://www.google.com/search?num=5&q=ID2D1DeviceContext+site%3Adocs.microsoft.com) | d2d1_1.h | [Vanara.PInvoke.D2d1.ID2D1DeviceContext](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1DeviceContext)
[ID2D1DrawingStateBlock](https://www.google.com/search?num=5&q=ID2D1DrawingStateBlock+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.ID2D1DrawingStateBlock](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1DrawingStateBlock)
[ID2D1Effect](https://www.google.com/search?num=5&q=ID2D1Effect+site%3Adocs.microsoft.com) | d2d1_1.h | [Vanara.PInvoke.D2d1.ID2D1Effect](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1Effect)
[ID2D1EllipseGeometry](https://www.google.com/search?num=5&q=ID2D1EllipseGeometry+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.ID2D1EllipseGeometry](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1EllipseGeometry)
[ID2D1Factory](https://www.google.com/search?num=5&q=ID2D1Factory+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.ID2D1Factory](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1Factory)
[ID2D1GdiMetafile](https://www.google.com/search?num=5&q=ID2D1GdiMetafile+site%3Adocs.microsoft.com) | d2d1_1.h | [Vanara.PInvoke.D2d1.ID2D1GdiMetafile](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1GdiMetafile)
[ID2D1GdiMetafileSink](https://www.google.com/search?num=5&q=ID2D1GdiMetafileSink+site%3Adocs.microsoft.com) | d2d1_1.h | [Vanara.PInvoke.D2d1.ID2D1GdiMetafileSink](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1GdiMetafileSink)
[ID2D1Geometry](https://www.google.com/search?num=5&q=ID2D1Geometry+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.ID2D1Geometry](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1Geometry)
[ID2D1GeometryGroup](https://www.google.com/search?num=5&q=ID2D1GeometryGroup+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.ID2D1GeometryGroup](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1GeometryGroup)
[ID2D1GeometrySink](https://www.google.com/search?num=5&q=ID2D1GeometrySink+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.ID2D1GeometrySink](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1GeometrySink)
[ID2D1GradientStopCollection](https://www.google.com/search?num=5&q=ID2D1GradientStopCollection+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.ID2D1GradientStopCollection](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1GradientStopCollection)
[ID2D1GradientStopCollection1](https://www.google.com/search?num=5&q=ID2D1GradientStopCollection1+site%3Adocs.microsoft.com) | d2d1_1.h | [Vanara.PInvoke.D2d1.ID2D1GradientStopCollection1](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1GradientStopCollection1)
[ID2D1HwndRenderTarget](https://www.google.com/search?num=5&q=ID2D1HwndRenderTarget+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.ID2D1HwndRenderTarget](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1HwndRenderTarget)
[ID2D1Image](https://www.google.com/search?num=5&q=ID2D1Image+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.ID2D1Image](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1Image)
[ID2D1ImageBrush](https://www.google.com/search?num=5&q=ID2D1ImageBrush+site%3Adocs.microsoft.com) | d2d1_1.h | [Vanara.PInvoke.D2d1.ID2D1ImageBrush](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1ImageBrush)
[ID2D1Layer](https://www.google.com/search?num=5&q=ID2D1Layer+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.ID2D1Layer](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1Layer)
[ID2D1LinearGradientBrush](https://www.google.com/search?num=5&q=ID2D1LinearGradientBrush+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.ID2D1LinearGradientBrush](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1LinearGradientBrush)
[ID2D1Mesh](https://www.google.com/search?num=5&q=ID2D1Mesh+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.ID2D1Mesh](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1Mesh)
[ID2D1PathGeometry](https://www.google.com/search?num=5&q=ID2D1PathGeometry+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.ID2D1PathGeometry](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1PathGeometry)
[ID2D1PrintControl](https://www.google.com/search?num=5&q=ID2D1PrintControl+site%3Adocs.microsoft.com) | | [Vanara.PInvoke.D2d1.ID2D1PrintControl](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1PrintControl)
[ID2D1Properties](https://www.google.com/search?num=5&q=ID2D1Properties+site%3Adocs.microsoft.com) | | [Vanara.PInvoke.D2d1.ID2D1Properties](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1Properties)
[ID2D1RadialGradientBrush](https://www.google.com/search?num=5&q=ID2D1RadialGradientBrush+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.ID2D1RadialGradientBrush](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1RadialGradientBrush)
[ID2D1RectangleGeometry](https://www.google.com/search?num=5&q=ID2D1RectangleGeometry+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.ID2D1RectangleGeometry](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1RectangleGeometry)
[ID2D1RenderTarget](https://www.google.com/search?num=5&q=ID2D1RenderTarget+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.ID2D1RenderTarget](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1RenderTarget)
[ID2D1Resource](https://www.google.com/search?num=5&q=ID2D1Resource+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.ID2D1Resource](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1Resource)
[ID2D1RoundedRectangleGeometry](https://www.google.com/search?num=5&q=ID2D1RoundedRectangleGeometry+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.ID2D1RoundedRectangleGeometry](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1RoundedRectangleGeometry)
[ID2D1SimplifiedGeometrySink](https://www.google.com/search?num=5&q=ID2D1SimplifiedGeometrySink+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.ID2D1SimplifiedGeometrySink](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1SimplifiedGeometrySink)
[ID2D1SolidColorBrush](https://www.google.com/search?num=5&q=ID2D1SolidColorBrush+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.ID2D1SolidColorBrush](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1SolidColorBrush)
[ID2D1StrokeStyle](https://www.google.com/search?num=5&q=ID2D1StrokeStyle+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.ID2D1StrokeStyle](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1StrokeStyle)
[ID2D1TessellationSink](https://www.google.com/search?num=5&q=ID2D1TessellationSink+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.ID2D1TessellationSink](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1TessellationSink)
[ID2D1TransformedGeometry](https://www.google.com/search?num=5&q=ID2D1TransformedGeometry+site%3Adocs.microsoft.com) | d2d1.h | [Vanara.PInvoke.D2d1.ID2D1TransformedGeometry](https://github.com/dahall/Vanara/search?l=C%23&q=ID2D1TransformedGeometry)
[IDWriteBitmapRenderTarget](https://www.google.com/search?num=5&q=IDWriteBitmapRenderTarget+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.IDWriteBitmapRenderTarget](https://github.com/dahall/Vanara/search?l=C%23&q=IDWriteBitmapRenderTarget)
[IDWriteFactory](https://www.google.com/search?num=5&q=IDWriteFactory+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.IDWriteFactory](https://github.com/dahall/Vanara/search?l=C%23&q=IDWriteFactory)
[IDWriteFont](https://www.google.com/search?num=5&q=IDWriteFont+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.IDWriteFont](https://github.com/dahall/Vanara/search?l=C%23&q=IDWriteFont)
[IDWriteFontCollection](https://www.google.com/search?num=5&q=IDWriteFontCollection+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.IDWriteFontCollection](https://github.com/dahall/Vanara/search?l=C%23&q=IDWriteFontCollection)
[IDWriteFontCollectionLoader](https://www.google.com/search?num=5&q=IDWriteFontCollectionLoader+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.IDWriteFontCollectionLoader](https://github.com/dahall/Vanara/search?l=C%23&q=IDWriteFontCollectionLoader)
[IDWriteFontFace](https://www.google.com/search?num=5&q=IDWriteFontFace+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.IDWriteFontFace](https://github.com/dahall/Vanara/search?l=C%23&q=IDWriteFontFace)
[IDWriteFontFamily](https://www.google.com/search?num=5&q=IDWriteFontFamily+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.IDWriteFontFamily](https://github.com/dahall/Vanara/search?l=C%23&q=IDWriteFontFamily)
[IDWriteFontFile](https://www.google.com/search?num=5&q=IDWriteFontFile+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.IDWriteFontFile](https://github.com/dahall/Vanara/search?l=C%23&q=IDWriteFontFile)
[IDWriteFontFileEnumerator](https://www.google.com/search?num=5&q=IDWriteFontFileEnumerator+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.IDWriteFontFileEnumerator](https://github.com/dahall/Vanara/search?l=C%23&q=IDWriteFontFileEnumerator)
[IDWriteFontFileLoader](https://www.google.com/search?num=5&q=IDWriteFontFileLoader+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.IDWriteFontFileLoader](https://github.com/dahall/Vanara/search?l=C%23&q=IDWriteFontFileLoader)
[IDWriteFontFileStream](https://www.google.com/search?num=5&q=IDWriteFontFileStream+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.IDWriteFontFileStream](https://github.com/dahall/Vanara/search?l=C%23&q=IDWriteFontFileStream)
[IDWriteFontList](https://www.google.com/search?num=5&q=IDWriteFontList+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.IDWriteFontList](https://github.com/dahall/Vanara/search?l=C%23&q=IDWriteFontList)
[IDWriteGdiInterop](https://www.google.com/search?num=5&q=IDWriteGdiInterop+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.IDWriteGdiInterop](https://github.com/dahall/Vanara/search?l=C%23&q=IDWriteGdiInterop)
[IDWriteGlyphRunAnalysis](https://www.google.com/search?num=5&q=IDWriteGlyphRunAnalysis+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.IDWriteGlyphRunAnalysis](https://github.com/dahall/Vanara/search?l=C%23&q=IDWriteGlyphRunAnalysis)
[IDWriteInlineObject](https://www.google.com/search?num=5&q=IDWriteInlineObject+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.IDWriteInlineObject](https://github.com/dahall/Vanara/search?l=C%23&q=IDWriteInlineObject)
[IDWriteLocalFontFileLoader](https://www.google.com/search?num=5&q=IDWriteLocalFontFileLoader+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.IDWriteLocalFontFileLoader](https://github.com/dahall/Vanara/search?l=C%23&q=IDWriteLocalFontFileLoader)
[IDWriteLocalizedStrings](https://www.google.com/search?num=5&q=IDWriteLocalizedStrings+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.IDWriteLocalizedStrings](https://github.com/dahall/Vanara/search?l=C%23&q=IDWriteLocalizedStrings)
[IDWriteNumberSubstitution](https://www.google.com/search?num=5&q=IDWriteNumberSubstitution+site%3Adocs.microsoft.com) | | [Vanara.PInvoke.Dwrite.IDWriteNumberSubstitution](https://github.com/dahall/Vanara/search?l=C%23&q=IDWriteNumberSubstitution)
[IDWritePixelSnapping](https://www.google.com/search?num=5&q=IDWritePixelSnapping+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.IDWritePixelSnapping](https://github.com/dahall/Vanara/search?l=C%23&q=IDWritePixelSnapping)
[IDWriteRenderingParams](https://www.google.com/search?num=5&q=IDWriteRenderingParams+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.IDWriteRenderingParams](https://github.com/dahall/Vanara/search?l=C%23&q=IDWriteRenderingParams)
[IDWriteTextAnalysisSink](https://www.google.com/search?num=5&q=IDWriteTextAnalysisSink+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.IDWriteTextAnalysisSink](https://github.com/dahall/Vanara/search?l=C%23&q=IDWriteTextAnalysisSink)
[IDWriteTextAnalysisSource](https://www.google.com/search?num=5&q=IDWriteTextAnalysisSource+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.IDWriteTextAnalysisSource](https://github.com/dahall/Vanara/search?l=C%23&q=IDWriteTextAnalysisSource)
[IDWriteTextAnalyzer](https://www.google.com/search?num=5&q=IDWriteTextAnalyzer+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.IDWriteTextAnalyzer](https://github.com/dahall/Vanara/search?l=C%23&q=IDWriteTextAnalyzer)
[IDWriteTextFormat](https://www.google.com/search?num=5&q=IDWriteTextFormat+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.IDWriteTextFormat](https://github.com/dahall/Vanara/search?l=C%23&q=IDWriteTextFormat)
[IDWriteTextLayout](https://www.google.com/search?num=5&q=IDWriteTextLayout+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.IDWriteTextLayout](https://github.com/dahall/Vanara/search?l=C%23&q=IDWriteTextLayout)
[IDWriteTextRenderer](https://www.google.com/search?num=5&q=IDWriteTextRenderer+site%3Adocs.microsoft.com) | dwrite.h | [Vanara.PInvoke.Dwrite.IDWriteTextRenderer](https://github.com/dahall/Vanara/search?l=C%23&q=IDWriteTextRenderer)
[IDWriteTypography](https://www.google.com/search?num=5&q=IDWriteTypography+site%3Adocs.microsoft.com) | | [Vanara.PInvoke.Dwrite.IDWriteTypography](https://github.com/dahall/Vanara/search?l=C%23&q=IDWriteTypography)
[IDXGIAdapter](https://www.google.com/search?num=5&q=IDXGIAdapter+site%3Adocs.microsoft.com) | dxgi.h | [Vanara.PInvoke.DXGI.IDXGIAdapter](https://github.com/dahall/Vanara/search?l=C%23&q=IDXGIAdapter)
[IDXGIAdapter1](https://www.google.com/search?num=5&q=IDXGIAdapter1+site%3Adocs.microsoft.com) | dxgi.h | [Vanara.PInvoke.DXGI.IDXGIAdapter1](https://github.com/dahall/Vanara/search?l=C%23&q=IDXGIAdapter1)
[IDXGIDevice](https://www.google.com/search?num=5&q=IDXGIDevice+site%3Adocs.microsoft.com) | dxgi.h | [Vanara.PInvoke.DXGI.IDXGIDevice](https://github.com/dahall/Vanara/search?l=C%23&q=IDXGIDevice)
[IDXGIDeviceSubObject](https://www.google.com/search?num=5&q=IDXGIDeviceSubObject+site%3Adocs.microsoft.com) | | [Vanara.PInvoke.DXGI.IDXGIDeviceSubObject](https://github.com/dahall/Vanara/search?l=C%23&q=IDXGIDeviceSubObject)
[IDXGIFactory](https://www.google.com/search?num=5&q=IDXGIFactory+site%3Adocs.microsoft.com) | dxgi.h | [Vanara.PInvoke.DXGI.IDXGIFactory](https://github.com/dahall/Vanara/search?l=C%23&q=IDXGIFactory)
[IDXGIFactory1](https://www.google.com/search?num=5&q=IDXGIFactory1+site%3Adocs.microsoft.com) | | [Vanara.PInvoke.DXGI.IDXGIFactory1](https://github.com/dahall/Vanara/search?l=C%23&q=IDXGIFactory1)
[IDXGIObject](https://www.google.com/search?num=5&q=IDXGIObject+site%3Adocs.microsoft.com) | | [Vanara.PInvoke.DXGI.IDXGIObject](https://github.com/dahall/Vanara/search?l=C%23&q=IDXGIObject)
[IDXGIOutput](https://www.google.com/search?num=5&q=IDXGIOutput+site%3Adocs.microsoft.com) | dxgi.h | [Vanara.PInvoke.DXGI.IDXGIOutput](https://github.com/dahall/Vanara/search?l=C%23&q=IDXGIOutput)
[IDXGISurface](https://www.google.com/search?num=5&q=IDXGISurface+site%3Adocs.microsoft.com) | dxgi.h | [Vanara.PInvoke.DXGI.IDXGISurface](https://github.com/dahall/Vanara/search?l=C%23&q=IDXGISurface)
[IDXGISwapChain](https://www.google.com/search?num=5&q=IDXGISwapChain+site%3Adocs.microsoft.com) | dxgi.h | [Vanara.PInvoke.DXGI.IDXGISwapChain](https://github.com/dahall/Vanara/search?l=C%23&q=IDXGISwapChain)
[IWICBitmap](https://www.google.com/search?num=5&q=IWICBitmap+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICBitmap](https://github.com/dahall/Vanara/search?l=C%23&q=IWICBitmap)
[IWICBitmapClipper](https://www.google.com/search?num=5&q=IWICBitmapClipper+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICBitmapClipper](https://github.com/dahall/Vanara/search?l=C%23&q=IWICBitmapClipper)
[IWICBitmapCodecInfo](https://www.google.com/search?num=5&q=IWICBitmapCodecInfo+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICBitmapCodecInfo](https://github.com/dahall/Vanara/search?l=C%23&q=IWICBitmapCodecInfo)
[IWICBitmapCodecProgressNotification](https://www.google.com/search?num=5&q=IWICBitmapCodecProgressNotification+site%3Adocs.microsoft.com) | | [Vanara.PInvoke.WindowsCodecs.IWICBitmapCodecProgressNotification](https://github.com/dahall/Vanara/search?l=C%23&q=IWICBitmapCodecProgressNotification)
[IWICBitmapDecoder](https://www.google.com/search?num=5&q=IWICBitmapDecoder+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICBitmapDecoder](https://github.com/dahall/Vanara/search?l=C%23&q=IWICBitmapDecoder)
[IWICBitmapDecoderInfo](https://www.google.com/search?num=5&q=IWICBitmapDecoderInfo+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICBitmapDecoderInfo](https://github.com/dahall/Vanara/search?l=C%23&q=IWICBitmapDecoderInfo)
[IWICBitmapEncoder](https://www.google.com/search?num=5&q=IWICBitmapEncoder+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICBitmapEncoder](https://github.com/dahall/Vanara/search?l=C%23&q=IWICBitmapEncoder)
[IWICBitmapEncoderInfo](https://www.google.com/search?num=5&q=IWICBitmapEncoderInfo+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICBitmapEncoderInfo](https://github.com/dahall/Vanara/search?l=C%23&q=IWICBitmapEncoderInfo)
[IWICBitmapFlipRotator](https://www.google.com/search?num=5&q=IWICBitmapFlipRotator+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICBitmapFlipRotator](https://github.com/dahall/Vanara/search?l=C%23&q=IWICBitmapFlipRotator)
[IWICBitmapFrameDecode](https://www.google.com/search?num=5&q=IWICBitmapFrameDecode+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICBitmapFrameDecode](https://github.com/dahall/Vanara/search?l=C%23&q=IWICBitmapFrameDecode)
[IWICBitmapFrameEncode](https://www.google.com/search?num=5&q=IWICBitmapFrameEncode+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICBitmapFrameEncode](https://github.com/dahall/Vanara/search?l=C%23&q=IWICBitmapFrameEncode)
[IWICBitmapLock](https://www.google.com/search?num=5&q=IWICBitmapLock+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICBitmapLock](https://github.com/dahall/Vanara/search?l=C%23&q=IWICBitmapLock)
[IWICBitmapScaler](https://www.google.com/search?num=5&q=IWICBitmapScaler+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICBitmapScaler](https://github.com/dahall/Vanara/search?l=C%23&q=IWICBitmapScaler)
[IWICBitmapSource](https://www.google.com/search?num=5&q=IWICBitmapSource+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICBitmapSource](https://github.com/dahall/Vanara/search?l=C%23&q=IWICBitmapSource)
[IWICBitmapSourceTransform](https://www.google.com/search?num=5&q=IWICBitmapSourceTransform+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICBitmapSourceTransform](https://github.com/dahall/Vanara/search?l=C%23&q=IWICBitmapSourceTransform)
[IWICColorContext](https://www.google.com/search?num=5&q=IWICColorContext+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICColorContext](https://github.com/dahall/Vanara/search?l=C%23&q=IWICColorContext)
[IWICColorTransform](https://www.google.com/search?num=5&q=IWICColorTransform+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICColorTransform](https://github.com/dahall/Vanara/search?l=C%23&q=IWICColorTransform)
[IWICComponentFactory](https://www.google.com/search?num=5&q=IWICComponentFactory+site%3Adocs.microsoft.com) | wincodecsdk.h | [Vanara.PInvoke.WindowsCodecs.IWICComponentFactory](https://github.com/dahall/Vanara/search?l=C%23&q=IWICComponentFactory)
[IWICComponentInfo](https://www.google.com/search?num=5&q=IWICComponentInfo+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICComponentInfo](https://github.com/dahall/Vanara/search?l=C%23&q=IWICComponentInfo)
[IWICDdsDecoder](https://www.google.com/search?num=5&q=IWICDdsDecoder+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICDdsDecoder](https://github.com/dahall/Vanara/search?l=C%23&q=IWICDdsDecoder)
[IWICDdsEncoder](https://www.google.com/search?num=5&q=IWICDdsEncoder+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICDdsEncoder](https://github.com/dahall/Vanara/search?l=C%23&q=IWICDdsEncoder)
[IWICDdsFrameDecode](https://www.google.com/search?num=5&q=IWICDdsFrameDecode+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICDdsFrameDecode](https://github.com/dahall/Vanara/search?l=C%23&q=IWICDdsFrameDecode)
[IWICDevelopRaw](https://www.google.com/search?num=5&q=IWICDevelopRaw+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICDevelopRaw](https://github.com/dahall/Vanara/search?l=C%23&q=IWICDevelopRaw)
[IWICDevelopRawNotificationCallback](https://www.google.com/search?num=5&q=IWICDevelopRawNotificationCallback+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICDevelopRawNotificationCallback](https://github.com/dahall/Vanara/search?l=C%23&q=IWICDevelopRawNotificationCallback)
[IWICEnumMetadataItem](https://www.google.com/search?num=5&q=IWICEnumMetadataItem+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICEnumMetadataItem](https://github.com/dahall/Vanara/search?l=C%23&q=IWICEnumMetadataItem)
[IWICFastMetadataEncoder](https://www.google.com/search?num=5&q=IWICFastMetadataEncoder+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICFastMetadataEncoder](https://github.com/dahall/Vanara/search?l=C%23&q=IWICFastMetadataEncoder)
[IWICFormatConverter](https://www.google.com/search?num=5&q=IWICFormatConverter+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICFormatConverter](https://github.com/dahall/Vanara/search?l=C%23&q=IWICFormatConverter)
[IWICFormatConverterInfo](https://www.google.com/search?num=5&q=IWICFormatConverterInfo+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICFormatConverterInfo](https://github.com/dahall/Vanara/search?l=C%23&q=IWICFormatConverterInfo)
[IWICImageEncoder](https://www.google.com/search?num=5&q=IWICImageEncoder+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICImageEncoder](https://github.com/dahall/Vanara/search?l=C%23&q=IWICImageEncoder)
[IWICImagingFactory](https://www.google.com/search?num=5&q=IWICImagingFactory+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICImagingFactory](https://github.com/dahall/Vanara/search?l=C%23&q=IWICImagingFactory)
[IWICImagingFactory2](https://www.google.com/search?num=5&q=IWICImagingFactory2+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICImagingFactory2](https://github.com/dahall/Vanara/search?l=C%23&q=IWICImagingFactory2)
[IWICJpegFrameDecode](https://www.google.com/search?num=5&q=IWICJpegFrameDecode+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICJpegFrameDecode](https://github.com/dahall/Vanara/search?l=C%23&q=IWICJpegFrameDecode)
[IWICJpegFrameEncode](https://www.google.com/search?num=5&q=IWICJpegFrameEncode+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICJpegFrameEncode](https://github.com/dahall/Vanara/search?l=C%23&q=IWICJpegFrameEncode)
[IWICMetadataBlockReader](https://www.google.com/search?num=5&q=IWICMetadataBlockReader+site%3Adocs.microsoft.com) | wincodecsdk.h | [Vanara.PInvoke.WindowsCodecs.IWICMetadataBlockReader](https://github.com/dahall/Vanara/search?l=C%23&q=IWICMetadataBlockReader)
[IWICMetadataBlockWriter](https://www.google.com/search?num=5&q=IWICMetadataBlockWriter+site%3Adocs.microsoft.com) | wincodecsdk.h | [Vanara.PInvoke.WindowsCodecs.IWICMetadataBlockWriter](https://github.com/dahall/Vanara/search?l=C%23&q=IWICMetadataBlockWriter)
[IWICMetadataHandlerInfo](https://www.google.com/search?num=5&q=IWICMetadataHandlerInfo+site%3Adocs.microsoft.com) | | [Vanara.PInvoke.WindowsCodecs.IWICMetadataHandlerInfo](https://github.com/dahall/Vanara/search?l=C%23&q=IWICMetadataHandlerInfo)
[IWICMetadataQueryReader](https://www.google.com/search?num=5&q=IWICMetadataQueryReader+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICMetadataQueryReader](https://github.com/dahall/Vanara/search?l=C%23&q=IWICMetadataQueryReader)
[IWICMetadataQueryWriter](https://www.google.com/search?num=5&q=IWICMetadataQueryWriter+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICMetadataQueryWriter](https://github.com/dahall/Vanara/search?l=C%23&q=IWICMetadataQueryWriter)
[IWICMetadataReader](https://www.google.com/search?num=5&q=IWICMetadataReader+site%3Adocs.microsoft.com) | wincodecsdk.h | [Vanara.PInvoke.WindowsCodecs.IWICMetadataReader](https://github.com/dahall/Vanara/search?l=C%23&q=IWICMetadataReader)
[IWICMetadataReaderInfo](https://www.google.com/search?num=5&q=IWICMetadataReaderInfo+site%3Adocs.microsoft.com) | wincodecsdk.h | [Vanara.PInvoke.WindowsCodecs.IWICMetadataReaderInfo](https://github.com/dahall/Vanara/search?l=C%23&q=IWICMetadataReaderInfo)
[IWICMetadataWriter](https://www.google.com/search?num=5&q=IWICMetadataWriter+site%3Adocs.microsoft.com) | wincodecsdk.h | [Vanara.PInvoke.WindowsCodecs.IWICMetadataWriter](https://github.com/dahall/Vanara/search?l=C%23&q=IWICMetadataWriter)
[IWICMetadataWriterInfo](https://www.google.com/search?num=5&q=IWICMetadataWriterInfo+site%3Adocs.microsoft.com) | wincodecsdk.h | [Vanara.PInvoke.WindowsCodecs.IWICMetadataWriterInfo](https://github.com/dahall/Vanara/search?l=C%23&q=IWICMetadataWriterInfo)
[IWICPalette](https://www.google.com/search?num=5&q=IWICPalette+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICPalette](https://github.com/dahall/Vanara/search?l=C%23&q=IWICPalette)
[IWICPersistStream](https://www.google.com/search?num=5&q=IWICPersistStream+site%3Adocs.microsoft.com) | wincodecsdk.h | [Vanara.PInvoke.WindowsCodecs.IWICPersistStream](https://github.com/dahall/Vanara/search?l=C%23&q=IWICPersistStream)
[IWICPixelFormatInfo](https://www.google.com/search?num=5&q=IWICPixelFormatInfo+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICPixelFormatInfo](https://github.com/dahall/Vanara/search?l=C%23&q=IWICPixelFormatInfo)
[IWICPixelFormatInfo2](https://www.google.com/search?num=5&q=IWICPixelFormatInfo2+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICPixelFormatInfo2](https://github.com/dahall/Vanara/search?l=C%23&q=IWICPixelFormatInfo2)
[IWICPlanarBitmapFrameEncode](https://www.google.com/search?num=5&q=IWICPlanarBitmapFrameEncode+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICPlanarBitmapFrameEncode](https://github.com/dahall/Vanara/search?l=C%23&q=IWICPlanarBitmapFrameEncode)
[IWICPlanarBitmapSourceTransform](https://www.google.com/search?num=5&q=IWICPlanarBitmapSourceTransform+site%3Adocs.microsoft.com) | | [Vanara.PInvoke.WindowsCodecs.IWICPlanarBitmapSourceTransform](https://github.com/dahall/Vanara/search?l=C%23&q=IWICPlanarBitmapSourceTransform)
[IWICPlanarFormatConverter](https://www.google.com/search?num=5&q=IWICPlanarFormatConverter+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICPlanarFormatConverter](https://github.com/dahall/Vanara/search?l=C%23&q=IWICPlanarFormatConverter)
[IWICProgressCallback](https://www.google.com/search?num=5&q=IWICProgressCallback+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICProgressCallback](https://github.com/dahall/Vanara/search?l=C%23&q=IWICProgressCallback)
[IWICProgressiveLevelControl](https://www.google.com/search?num=5&q=IWICProgressiveLevelControl+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICProgressiveLevelControl](https://github.com/dahall/Vanara/search?l=C%23&q=IWICProgressiveLevelControl)
[IWICStream](https://www.google.com/search?num=5&q=IWICStream+site%3Adocs.microsoft.com) | wincodec.h | [Vanara.PInvoke.WindowsCodecs.IWICStream](https://github.com/dahall/Vanara/search?l=C%23&q=IWICStream)
[IWICStreamProvider](https://www.google.com/search?num=5&q=IWICStreamProvider+site%3Adocs.microsoft.com) | wincodecsdk.h | [Vanara.PInvoke.WindowsCodecs.IWICStreamProvider](https://github.com/dahall/Vanara/search?l=C%23&q=IWICStreamProvider)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,777 @@
using System;
using System.Runtime.InteropServices;
namespace Vanara.PInvoke
{
/// <summary>Items from the D2d1.dll</summary>
public static partial class D2d1
{
/// <summary>Paints an area with a solid color.</summary>
/// <remarks>
/// <para>Creating ID2D1SolidColorBrush Objects</para>
/// <para>
/// To create a solid color brush, use the ID2D1RenderTarget::CreateSolidColorBrush method of the render target on which the brush
/// will be used. The brush can only be used with the render target that created it or with the compatible targets for that render target.
/// </para>
/// <para>A solid color brush is a device-dependent resource. (For more information about resources, see Resources Overview.)</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nn-d2d1-id2d1solidcolorbrush
[PInvokeData("d2d1.h", MSDNShortId = "a15c2696-3122-461e-806e-2195a50a3e92")]
[ComImport, Guid("2cd906a9-12e2-11dc-9fed-001143a055f9"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface ID2D1SolidColorBrush : ID2D1Brush
{
/// <summary>Retrieves the factory associated with this resource.</summary>
/// <param name="factory">
/// <para>Type: <c>ID2D1Factory**</c></para>
/// <para>
/// When this method returns, contains a pointer to a pointer to the factory that created this resource. This parameter is
/// passed uninitialized.
/// </para>
/// </param>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1resource-getfactory void GetFactory( ID2D1Factory
// **factory );
[PreserveSig]
new void GetFactory(out ID2D1Factory factory);
/// <summary>Sets the degree of opacity of this brush.</summary>
/// <param name="opacity">
/// <para>Type: <c>FLOAT</c></para>
/// <para>
/// A value between zero and 1 that indicates the opacity of the brush. This value is a constant multiplier that linearly scales
/// the alpha value of all pixels filled by the brush. The opacity values are clamped in the range 01 before they are multipled together.
/// </para>
/// </param>
/// <returns>None</returns>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1brush-setopacity void SetOpacity( FLOAT opacity );
[PreserveSig]
new void SetOpacity(float opacity);
/// <summary>Sets the transformation applied to the brush.</summary>
/// <param name="transform">
/// <para>Type: <c>const D2D1_MATRIX_3X2_F</c></para>
/// <para>The transformation to apply to this brush.</para>
/// </param>
/// <returns>None</returns>
/// <remarks>
/// <para>
/// When you paint with a brush, it paints in the coordinate space of the render target. Brushes do not automatically position
/// themselves to align with the object being painted; by default, they begin painting at the origin (0, 0) of the render target.
/// </para>
/// <para>
/// You can "move" the gradient defined by an ID2D1LinearGradientBrush to a target area by setting its start point and end
/// point. Likewise, you can move the gradient defined by an ID2D1RadialGradientBrush by changing its center and radii.
/// </para>
/// <para>
/// To align the content of an ID2D1BitmapBrush to the area being painted, you can use the SetTransform method to translate the
/// bitmap to the desired location. This transform only affects the brush; it does not affect any other content drawn by the
/// render target.
/// </para>
/// <para>
/// The following illustrations show the effect of using an ID2D1BitmapBrush to fill a rectangle located at (100, 100). The
/// illustration on the left illustration shows the result of filling the rectangle without transforming the brush: the bitmap
/// is drawn at the render target's origin. As a result, only a portion of the bitmap appears in the rectangle.
/// </para>
/// <para>
/// The illustration on the right shows the result of transforming the ID2D1BitmapBrush so that its content is shifted 50 pixels
/// to the right and 50 pixels down. The bitmap now fills the rectangle.
/// </para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1brush-settransform(constd2d1_matrix_3x2_f_) void
// SetTransform( const D2D1_MATRIX_3X2_F &amp; transform );
[PreserveSig]
new void SetTransform(in D2D_MATRIX_3X2_F transform);
/// <summary>Gets the degree of opacity of this brush.</summary>
/// <returns>
/// <para>Type: <c>FLOAT</c></para>
/// <para>
/// A value between zero and 1 that indicates the opacity of the brush. This value is a constant multiplier that linearly scales
/// the alpha value of all pixels filled by the brush. The opacity values are clamped in the range 01 before they are multipled together.
/// </para>
/// </returns>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1brush-getopacity FLOAT GetOpacity();
[PreserveSig]
new float GetOpacity();
/// <summary>Gets the transform applied to this brush.</summary>
/// <param name="transform">
/// <para>Type: <c>D2D1_MATRIX_3X2_F*</c></para>
/// <para>The transform applied to this brush.</para>
/// </param>
/// <returns>None</returns>
/// <remarks>
/// When the brush transform is the identity matrix, the brush appears in the same coordinate space as the render target in
/// which it is drawn.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1brush-gettransform void GetTransform( D2D1_MATRIX_3X2_F
// *transform );
[PreserveSig]
new void GetTransform(out D2D_MATRIX_3X2_F transform);
/// <summary>Specifies the color of this solid-color brush.</summary>
/// <param name="color">
/// <para>Type: <c>const D2D1_COLOR_F</c></para>
/// <para>The color of this solid-color brush.</para>
/// </param>
/// <returns>None</returns>
/// <remarks>
/// To help create colors, Direct2D provides the ColorF class. It offers several helper methods for creating colors and provides
/// a set or predefined colors.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1solidcolorbrush-setcolor(constd2d1_color_f_) void
// SetColor( const D2D1_COLOR_F &amp; color );
[PreserveSig]
void SetColor(in D3DCOLORVALUE color);
/// <summary>Retrieves the color of the solid color brush.</summary>
/// <returns>
/// <para>Type: <c>D2D1_COLOR_F</c></para>
/// <para>The color of this solid color brush.</para>
/// </returns>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1solidcolorbrush-getcolor D2D1_COLOR_F GetColor();
[PreserveSig]
D3DCOLORVALUE GetColor();
}
/// <summary>Describes the caps, miter limit, line join, and dash information for a stroke.</summary>
/// <remarks>
/// <para>Creating ID2D1StrokeStyle Objects</para>
/// <para>To create a stroke style, use the ID2D1Factory::CreateStrokeStyle method.</para>
/// <para>
/// A stroke style is a device-indenpendent resource; you can create it once then retain it for the life of your application. For
/// more information about resources, see the Resources Overview.
/// </para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nn-d2d1-id2d1strokestyle
[PInvokeData("d2d1.h", MSDNShortId = "2cdf66dc-f34f-4132-8c06-7464648d3cef")]
[ComImport, Guid("2cd9069d-12e2-11dc-9fed-001143a055f9"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface ID2D1StrokeStyle : ID2D1Resource
{
/// <summary>Retrieves the factory associated with this resource.</summary>
/// <param name="factory">
/// <para>Type: <c>ID2D1Factory**</c></para>
/// <para>
/// When this method returns, contains a pointer to a pointer to the factory that created this resource. This parameter is
/// passed uninitialized.
/// </para>
/// </param>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1resource-getfactory void GetFactory( ID2D1Factory
// **factory );
[PreserveSig]
new void GetFactory(out ID2D1Factory factory);
/// <summary>Retrieves the type of shape used at the beginning of a stroke.</summary>
/// <returns>
/// <para>Type: <c>D2D1_CAP_STYLE</c></para>
/// <para>The type of shape used at the beginning of a stroke.</para>
/// </returns>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1strokestyle-getstartcap D2D1_CAP_STYLE GetStartCap();
[PreserveSig]
D2D1_CAP_STYLE GetStartCap();
/// <summary>Retrieves the type of shape used at the end of a stroke.</summary>
/// <returns>
/// <para>Type: <c>D2D1_CAP_STYLE</c></para>
/// <para>The type of shape used at the end of a stroke.</para>
/// </returns>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1strokestyle-getendcap D2D1_CAP_STYLE GetEndCap();
[PreserveSig]
D2D1_CAP_STYLE GetEndCap();
/// <summary>Gets a value that specifies how the ends of each dash are drawn.</summary>
/// <returns>
/// <para>Type: <c>D2D1_CAP_STYLE</c></para>
/// <para>A value that specifies how the ends of each dash are drawn.</para>
/// </returns>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1strokestyle-getdashcap D2D1_CAP_STYLE GetDashCap();
[PreserveSig]
D2D1_CAP_STYLE GetDashCap();
/// <summary>Retrieves the limit on the ratio of the miter length to half the stroke's thickness.</summary>
/// <returns>
/// <para>Type: <c>FLOAT</c></para>
/// <para>
/// A positive number greater than or equal to 1.0f that describes the limit on the ratio of the miter length to half the
/// stroke's thickness.
/// </para>
/// </returns>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1strokestyle-getmiterlimit FLOAT GetMiterLimit();
[PreserveSig]
float GetMiterLimit();
/// <summary>Retrieves the type of joint used at the vertices of a shape's outline.</summary>
/// <returns>
/// <para>Type: <c>D2D1_LINE_JOIN</c></para>
/// <para>A value that specifies the type of joint used at the vertices of a shape's outline.</para>
/// </returns>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1strokestyle-getlinejoin D2D1_LINE_JOIN GetLineJoin();
[PreserveSig]
D2D1_LINE_JOIN GetLineJoin();
/// <summary>Retrieves a value that specifies how far in the dash sequence the stroke will start.</summary>
/// <returns>
/// <para>Type: <c>FLOAT</c></para>
/// <para>A value that specifies how far in the dash sequence the stroke will start.</para>
/// </returns>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1strokestyle-getdashoffset FLOAT GetDashOffset();
[PreserveSig]
float GetDashOffset();
/// <summary>Gets a value that describes the stroke's dash pattern.</summary>
/// <returns>
/// <para>Type: <c>D2D1_DASH_STYLE</c></para>
/// <para>A value that describes the predefined dash pattern used, or D2D1_DASH_STYLE_CUSTOM if a custom dash style is used.</para>
/// </returns>
/// <remarks>
/// If a custom dash style is specified, the dash pattern is described by the dashes array, which can be retrieved by calling
/// the GetDashes method.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1strokestyle-getdashstyle D2D1_DASH_STYLE GetDashStyle();
[PreserveSig]
D2D1_DASH_STYLE GetDashStyle();
/// <summary>Retrieves the number of entries in the dashes array.</summary>
/// <returns>
/// <para>Type: <c>UINT32</c></para>
/// <para>The number of entries in the dashes array if the stroke is dashed; otherwise, 0.</para>
/// </returns>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1strokestyle-getdashescount UINT32 GetDashesCount();
[PreserveSig]
uint GetDashesCount();
/// <summary>Copies the dash pattern to the specified array.</summary>
/// <param name="dashes">
/// <para>Type: <c>FLOAT*</c></para>
/// <para>
/// A pointer to an array that will receive the dash pattern. The array must be able to contain at least as many elements as
/// specified by dashesCount. You must allocate storage for this array.
/// </para>
/// </param>
/// <param name="dashesCount">
/// <para>Type: <c>UINT</c></para>
/// <para>
/// The number of dashes to copy. If this value is less than the number of dashes in the stroke style's dashes array, the
/// returned dashes are truncated to dashesCount. If this value is greater than the number of dashes in the stroke style's
/// dashes array, the extra dashes are set to 0.0f. To obtain the actual number of dashes in the stroke style's dashes array,
/// use the GetDashesCount method.
/// </para>
/// </param>
/// <returns>None</returns>
/// <remarks>
/// The dashes are specified in units that are a multiple of the stroke width, with subsequent members of the array indicating
/// the dashes and gaps between dashes: the first entry indicates a filled dash, the second a gap, and so on.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1strokestyle-getdashes void GetDashes( FLOAT *dashes,
// UINT32 dashesCount );
[PreserveSig]
void GetDashes([Out] float[] dashes, uint dashesCount);
}
/// <summary>Populates an ID2D1Mesh object with triangles.</summary>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nn-d2d1-id2d1tessellationsink
[PInvokeData("d2d1.h", MSDNShortId = "967c702f-d16f-4a8e-ac77-a8bb35afe0a1")]
[ComImport, Guid("2cd906c1-12e2-11dc-9fed-001143a055f9"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface ID2D1TessellationSink
{
/// <summary>Copies the specified triangles to the sink.</summary>
/// <param name="triangles">
/// <para>Type: <c>const D2D1_TRIANGLE*</c></para>
/// <para>An array of D2D1_TRIANGLE structures that describe the triangles to add to the sink.</para>
/// </param>
/// <param name="trianglesCount">
/// <para>Type: <c>UINT</c></para>
/// <para>The number of triangles to copy from the triangles array.</para>
/// </param>
/// <returns>None</returns>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1tessellationsink-addtriangles void AddTriangles( const
// D2D1_TRIANGLE *triangles, UINT32 trianglesCount );
[PreserveSig]
void AddTriangles([In] D2D1_TRIANGLE[] triangles, uint trianglesCount);
/// <summary>Closes the sink and returns its error status.</summary>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1tessellationsink-close HRESULT Close();
void Close();
}
/// <summary>Represents a geometry that has been transformed.</summary>
/// <remarks>
/// <para>
/// Using an <c>ID2D1TransformedGeometry</c> rather than transforming a geometry by using a render target's transform enables you to
/// transform a geometry without transforming its stroke.
/// </para>
/// <para>Creating ID2D1TransformedGeometry Objects</para>
/// <para>To create an <c>ID2D1TransformedGeometry</c>, call the ID2D1Factory::CreateTransformedGeometry method.</para>
/// <para>
/// Direct2D geometries are immutable and device-independent resources created by ID2D1Factory. In general, you should create
/// geometries once and retain them for the life of the application, or until they need to be modified. For more information about
/// device-independent and device-dependent resources, see the Resources Overview.
/// </para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nn-d2d1-id2d1transformedgeometry
[PInvokeData("d2d1.h", MSDNShortId = "5d48eab6-1229-4e54-bfab-602b471b23a4")]
[ComImport, Guid("2cd906bb-12e2-11dc-9fed-001143a055f9"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface ID2D1TransformedGeometry : ID2D1Geometry
{
/// <summary>Retrieves the factory associated with this resource.</summary>
/// <param name="factory">
/// <para>Type: <c>ID2D1Factory**</c></para>
/// <para>
/// When this method returns, contains a pointer to a pointer to the factory that created this resource. This parameter is
/// passed uninitialized.
/// </para>
/// </param>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1resource-getfactory void GetFactory( ID2D1Factory
// **factory );
[PreserveSig]
new void GetFactory(out ID2D1Factory factory);
/// <summary>Retrieves the bounds of the geometry.</summary>
/// <param name="worldTransform">
/// <para>Type: <c>const D2D1_MATRIX_3X2_F*</c></para>
/// <para>The transform to apply to this geometry before calculating its bounds, or <c>NULL</c>.</para>
/// </param>
/// <returns>
/// <para>Type: <c>D2D1_RECT_F*</c></para>
/// <para>
/// When this method returns, contains the bounds of this geometry. If the bounds are empty, this parameter will be a rect where
/// bounds.left &gt; bounds.right. You must allocate storage for this parameter.
/// </para>
/// </returns>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1geometry-getbounds(constd2d1_matrix_3x2_f_d2d1_rect_f)
// HRESULT GetBounds( const D2D1_MATRIX_3X2_F *worldTransform, D2D1_RECT_F *bounds );
new D2D_RECT_F GetBounds([In, Optional] IntPtr worldTransform);
/// <summary>
/// Gets the bounds of the geometry after it has been widened by the specified stroke width and style and transformed by the
/// specified matrix.
/// </summary>
/// <param name="strokeWidth">
/// <para>Type: <c>FLOAT</c></para>
/// <para>The amount by which to widen the geometry by stroking its outline.</para>
/// </param>
/// <param name="strokeStyle">
/// <para>Type: <c>ID2D1StrokeStyle*</c></para>
/// <para>The style of the stroke that widens the geometry.</para>
/// </param>
/// <param name="worldTransform">
/// <para>Type: <c>const D2D1_MATRIX_3X2_F*</c></para>
/// <para>
/// A transform to apply to the geometry after the geometry is transformed and after the geometry has been stroked, or <c>NULL</c>.
/// </para>
/// </param>
/// <param name="flatteningTolerance">
/// <para>Type: <c>FLOAT</c></para>
/// <para>
/// The maximum error allowed when constructing a polygonal approximation of the geometry. No point in the polygonal
/// representation will diverge from the original geometry by more than the flattening tolerance. Smaller values produce more
/// accurate results but cause slower execution.
/// </para>
/// </param>
/// <returns>
/// <para>Type: <c>D2D1_RECT_F*</c></para>
/// <para>When this method returns, contains the bounds of the widened geometry. You must allocate storage for this parameter.</para>
/// </returns>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1geometry-getwidenedbounds%28float_id2d1strokestyle_constd2d1_matrix_3x2_f_float_d2d1_rect_f%29
// HRESULT GetWidenedBounds( FLOAT strokeWidth, ID2D1StrokeStyle *strokeStyle, const D2D1_MATRIX_3X2_F *worldTransform, FLOAT
// flatteningTolerance, D2D1_RECT_F *bounds );
new D2D_RECT_F GetWidenedBounds(float strokeWidth, [In, Optional] ID2D1StrokeStyle strokeStyle, [In, Optional] IntPtr worldTransform, float flatteningTolerance);
/// <summary>
/// Determines whether the geometry's stroke contains the specified point given the specified stroke thickness, style, and transform.
/// </summary>
/// <param name="point">
/// <para>Type: [in] <c>D2D1_POINT_2F</c></para>
/// <para>The point to test for containment.</para>
/// </param>
/// <param name="strokeWidth">
/// <para>Type: [in] <c>FLOAT</c></para>
/// <para>The thickness of the stroke to apply.</para>
/// </param>
/// <param name="strokeStyle">
/// <para>Type: [in, optional] <c>ID2D1StrokeStyle*</c></para>
/// <para>The style of stroke to apply.</para>
/// </param>
/// <param name="worldTransform">
/// <para>Type: [in, optional] <c>const D2D1_MATRIX_3X2_F*</c></para>
/// <para>The transform to apply to the stroked geometry.</para>
/// </param>
/// <param name="flatteningTolerance">
/// <para>Type: [in] <c>FLOAT</c></para>
/// <para>
/// The numeric accuracy with which the precise geometric path and path intersection is calculated. Points missing the stroke by
/// less than the tolerance are still considered inside. Smaller values produce more accurate results but cause slower execution.
/// </para>
/// </param>
/// <returns>
/// <para>Type: [out] <c>BOOL*</c></para>
/// <para>
/// When this method returns, contains a boolean value set to true if the geometry's stroke contains the specified point;
/// otherwise, false. You must allocate storage for this parameter.
/// </para>
/// </returns>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1geometry-strokecontainspoint%28d2d1_point_2f_float_id2d1strokestyle_constd2d1_matrix_3x2_f_float_bool%29
// HRESULT StrokeContainsPoint( D2D1_POINT_2F point, FLOAT strokeWidth, ID2D1StrokeStyle *strokeStyle, const D2D1_MATRIX_3X2_F
// *worldTransform, FLOAT flatteningTolerance, BOOL *contains );
[return: MarshalAs(UnmanagedType.Bool)]
new bool StrokeContainsPoint(D2D_POINT_2F point, float strokeWidth, [In, Optional] ID2D1StrokeStyle strokeStyle, [In, Optional] IntPtr worldTransform, float flatteningTolerance);
/// <summary>
/// Indicates whether the area filled by the geometry would contain the specified point given the specified flattening tolerance.
/// </summary>
/// <param name="point">
/// <para>Type: <c>D2D1_POINT_2F</c></para>
/// <para>The point to test.</para>
/// </param>
/// <param name="worldTransform">
/// <para>Type: <c>const D2D1_MATRIX_3X2_F</c></para>
/// <para>The transform to apply to the geometry prior to testing for containment.</para>
/// </param>
/// <param name="flatteningTolerance">
/// <para>Type: <c>FLOAT</c></para>
/// <para>
/// The numeric accuracy with which the precise geometric path and path intersection is calculated. Points missing the fill by
/// less than the tolerance are still considered inside. Smaller values produce more accurate results but cause slower execution.
/// </para>
/// </param>
/// <returns>
/// <para>Type: <c>BOOL*</c></para>
/// <para>
/// When this method returns, contains a bool value that is true if the area filled by the geometry contains point; otherwise,
/// false. You must allocate storage for this parameter.
/// </para>
/// </returns>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1geometry-fillcontainspoint(d2d1_point_2f_constd2d1_matrix_3x2_f__float_bool)
// HRESULT FillContainsPoint( D2D1_POINT_2F point, const D2D1_MATRIX_3X2_F &amp; worldTransform, FLOAT flatteningTolerance, BOOL
// *contains );
[return: MarshalAs(UnmanagedType.Bool)]
new bool FillContainsPoint(D2D_POINT_2F point, [In, Optional] IntPtr worldTransform, float flatteningTolerance);
/// <summary>
/// Describes the intersection between this geometry and the specified geometry. The comparison is performed by using the
/// specified flattening tolerance.
/// </summary>
/// <param name="inputGeometry">
/// <para>Type: [in] <c>ID2D1Geometry*</c></para>
/// <para>The geometry to test.</para>
/// </param>
/// <param name="inputGeometryTransform">
/// <para>Type: [in, optional] <c>const D2D1_MATRIX_3X2_F*</c></para>
/// <para>The transform to apply to inputGeometry, or <c>NULL</c>.</para>
/// </param>
/// <param name="flatteningTolerance">
/// <para>Type: [in] <c>FLOAT</c></para>
/// <para>
/// The maximum error allowed when constructing a polygonal approximation of the geometry. No point in the polygonal
/// representation will diverge from the original geometry by more than the flattening tolerance. Smaller values produce more
/// accurate results but cause slower execution.
/// </para>
/// </param>
/// <returns>
/// <para>Type: [out] <c>D2D1_GEOMETRY_RELATION*</c></para>
/// <para>
/// When this method returns, contains a pointer to a value that describes how this geometry is related to inputGeometry. You
/// must allocate storage for this parameter.
/// </para>
/// </returns>
/// <remarks>
/// <para>
/// When interpreting the returned relation value, it is important to remember that the member
/// D2D1_GEOMETRY_RELATION_IS_CONTAINED of the <c>D2D1_GEOMETRY_RELATION</c> enumeration type means that this geometry is
/// contained inside inputGeometry, not that this geometry contains inputGeometry.
/// </para>
/// <para>For more information about how to interpret other possible return values, see D2D1_GEOMETRY_RELATION.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1geometry-comparewithgeometry%28id2d1geometry_constd2d1_matrix_3x2_f_float_d2d1_geometry_relation%29
// HRESULT CompareWithGeometry( ID2D1Geometry *inputGeometry, const D2D1_MATRIX_3X2_F *inputGeometryTransform, FLOAT
// flatteningTolerance, D2D1_GEOMETRY_RELATION *relation );
new D2D1_GEOMETRY_RELATION CompareWithGeometry([In] ID2D1Geometry inputGeometry, [In, Optional] IntPtr inputGeometryTransform, float flatteningTolerance);
/// <summary>
/// Creates a simplified version of the geometry that contains only lines and (optionally) cubic Bezier curves and writes the
/// result to an ID2D1SimplifiedGeometrySink.
/// </summary>
/// <param name="simplificationOption">
/// <para>Type: [in] <c>D2D1_GEOMETRY_SIMPLIFICATION_OPTION</c></para>
/// <para>A value that specifies whether the simplified geometry should contain curves.</para>
/// </param>
/// <param name="worldTransform">
/// <para>Type: [in, optional] <c>const D2D1_MATRIX_3X2_F*</c></para>
/// <para>The transform to apply to the simplified geometry, or <c>NULL</c>.</para>
/// </param>
/// <param name="flatteningTolerance">
/// <para>Type: [in] <c>FLOAT</c></para>
/// <para>
/// The maximum error allowed when constructing a polygonal approximation of the geometry. No point in the polygonal
/// representation will diverge from the original geometry by more than the flattening tolerance. Smaller values produce more
/// accurate results but cause slower execution.
/// </para>
/// </param>
/// <param name="geometrySink">
/// <para>Type: [in] <c>ID2D1SimplifiedGeometrySink*</c></para>
/// <para>The ID2D1SimplifiedGeometrySink to which the simplified geometry is appended.</para>
/// </param>
/// <returns>
/// <para>Type: <c>HRESULT</c></para>
/// <para>If this method succeeds, it returns <c>S_OK</c>. Otherwise, it returns an <c>HRESULT</c> error code.</para>
/// </returns>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1geometry-simplify%28d2d1_geometry_simplification_option_constd2d1_matrix_3x2_f_float_id2d1simplifiedgeometrysink%29
// HRESULT Simplify( D2D1_GEOMETRY_SIMPLIFICATION_OPTION simplificationOption, const D2D1_MATRIX_3X2_F *worldTransform, FLOAT
// flatteningTolerance, ID2D1SimplifiedGeometrySink *geometrySink );
new void Simplify(D2D1_GEOMETRY_SIMPLIFICATION_OPTION simplificationOption, [In, Optional] IntPtr worldTransform, float flatteningTolerance, [In] ID2D1SimplifiedGeometrySink geometrySink);
/// <summary>
/// Creates a set of clockwise-wound triangles that cover the geometry after it has been transformed using the specified matrix
/// and flattened using the specified tolerance.
/// </summary>
/// <param name="worldTransform">
/// <para>Type: [in, optional] <c>const D2D1_MATRIX_3X2_F*</c></para>
/// <para>The transform to apply to this geometry, or <c>NULL</c>.</para>
/// </param>
/// <param name="flatteningTolerance">
/// <para>Type: [in] <c>FLOAT</c></para>
/// <para>
/// The maximum error allowed when constructing a polygonal approximation of the geometry. No point in the polygonal
/// representation will diverge from the original geometry by more than the flattening tolerance. Smaller values produce more
/// accurate results but cause slower execution.
/// </para>
/// </param>
/// <param name="tessellationSink">
/// <para>Type: [in] <c>ID2D1TessellationSink*</c></para>
/// <para>The ID2D1TessellationSink to which the tessellated is appended.</para>
/// </param>
// https://docs.microsoft.com/ja-jp/windows/win32/api/d2d1/nf-d2d1-id2d1geometry-tessellate%28constd2d1_matrix_3x2_f_float_id2d1tessellationsink%29
// HRESULT Tessellate( const D2D1_MATRIX_3X2_F *worldTransform, FLOAT flatteningTolerance, ID2D1TessellationSink
// *tessellationSink );
new void Tessellate([In, Optional] IntPtr worldTransform, float flatteningTolerance, [In] ID2D1TessellationSink tessellationSink);
/// <summary>Combines this geometry with the specified geometry and stores the result in an ID2D1SimplifiedGeometrySink.</summary>
/// <param name="inputGeometry">
/// <para>Type: [in] <c>ID2D1Geometry*</c></para>
/// <para>The geometry to combine with this instance.</para>
/// </param>
/// <param name="combineMode">
/// <para>Type: [in] <c>D2D1_COMBINE_MODE</c></para>
/// <para>The type of combine operation to perform.</para>
/// </param>
/// <param name="inputGeometryTransform">
/// <para>Type: [in] <c>const D2D1_MATRIX_3X2_F &amp;</c></para>
/// <para>The transform to apply to inputGeometry before combining.</para>
/// </param>
/// <param name="flatteningTolerance">
/// <para>Type: [in] <c>FLOAT</c></para>
/// <para>
/// The maximum error allowed when constructing a polygonal approximation of the geometry. No point in the polygonal
/// representation will diverge from the original geometry by more than the flattening tolerance. Smaller values produce more
/// accurate results but cause slower execution.
/// </para>
/// </param>
/// <param name="geometrySink">
/// <para>Type: [in] <c>ID2D1SimplifiedGeometrySink*</c></para>
/// <para>The result of the combine operation.</para>
/// </param>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1geometry-combinewithgeometry(id2d1geometry_d2d1_combine_mode_constd2d1_matrix_3x2_f__float_id2d1simplifiedgeometrysink)
// HRESULT CombineWithGeometry( ID2D1Geometry *inputGeometry, D2D1_COMBINE_MODE combineMode, const D2D1_MATRIX_3X2_F &amp;
// inputGeometryTransform, FLOAT flatteningTolerance, ID2D1SimplifiedGeometrySink *geometrySink );
new void CombineWithGeometry([In] ID2D1Geometry inputGeometry, D2D1_COMBINE_MODE combineMode, [In, Optional] IntPtr inputGeometryTransform, float flatteningTolerance, [In] ID2D1SimplifiedGeometrySink geometrySink);
/// <summary>Computes the outline of the geometry and writes the result to an ID2D1SimplifiedGeometrySink.</summary>
/// <param name="worldTransform">
/// <para>Type: <c>const D2D1_MATRIX_3X2_F*</c></para>
/// <para>The transform to apply to the geometry outline, or <c>NULL</c>.</para>
/// </param>
/// <param name="flatteningTolerance">
/// <para>Type: <c>FLOAT</c></para>
/// <para>
/// The maximum error allowed when constructing a polygonal approximation of the geometry. No point in the polygonal
/// representation will diverge from the original geometry by more than the flattening tolerance. Smaller values produce more
/// accurate results but cause slower execution.
/// </para>
/// </param>
/// <param name="geometrySink">
/// <para>Type: <c>ID2D1SimplifiedGeometrySink*</c></para>
/// <para>The ID2D1SimplifiedGeometrySink to which the geometry's transformed outline is appended.</para>
/// </param>
/// <remarks>
/// <para>
/// The Outline method allows the caller to produce a geometry with an equivalent fill to the input geometry, with the following
/// additional properties:
/// </para>
/// <list type="bullet">
/// <item>
/// <term>The output geometry contains no transverse intersections; that is, segments may touch, but they never cross.</term>
/// </item>
/// <item>
/// <term>The outermost figures in the output geometry are all oriented counterclockwise.</term>
/// </item>
/// <item>
/// <term>
/// The output geometry is fill-mode invariant; that is, the fill of the geometry does not depend on the choice of the fill
/// mode. For more information about the fill mode, see D2D1_FILL_MODE.
/// </term>
/// </item>
/// </list>
/// <para>
/// Additionally, the Outline method can be useful in removing redundant portions of said geometries to simplify complex
/// geometries. It can also be useful in combination with ID2D1GeometryGroup to create unions among several geometries simultaneously.
/// </para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1geometry-outline%28constd2d1_matrix_3x2_f_float_id2d1simplifiedgeometrysink%29
// HRESULT Outline( const D2D1_MATRIX_3X2_F *worldTransform, FLOAT flatteningTolerance, ID2D1SimplifiedGeometrySink
// *geometrySink );
new void Outline([In, Optional] IntPtr worldTransform, float flatteningTolerance, [In] ID2D1SimplifiedGeometrySink geometrySink);
/// <summary>
/// Computes the area of the geometry after it has been transformed by the specified matrix and flattened using the specified tolerance.
/// </summary>
/// <param name="worldTransform">
/// <para>Type: [in] <c>const D2D1_MATRIX_3X2_F &amp;</c></para>
/// <para>The transform to apply to this geometry before computing its area.</para>
/// </param>
/// <param name="flatteningTolerance">
/// <para>Type: [in] <c>FLOAT</c></para>
/// <para>
/// The maximum error allowed when constructing a polygonal approximation of the geometry. No point in the polygonal
/// representation will diverge from the original geometry by more than the flattening tolerance. Smaller values produce more
/// accurate results but cause slower execution.
/// </para>
/// </param>
/// <returns>
/// <para>Type: [out] <c>FLOAT*</c></para>
/// <para>
/// When this method returns, contains a pointer to the area of the transformed, flattened version of this geometry. You must
/// allocate storage for this parameter.
/// </para>
/// </returns>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1geometry-computearea(constd2d1_matrix_3x2_f__float_float)
// HRESULT ComputeArea( const D2D1_MATRIX_3X2_F &amp; worldTransform, FLOAT flatteningTolerance, FLOAT *area );
new float ComputeArea([In, Optional] IntPtr worldTransform, float flatteningTolerance);
/// <summary>Calculates the length of the geometry as though each segment were unrolled into a line.</summary>
/// <param name="worldTransform">
/// <para>Type: [in] <c>const D2D1_MATRIX_3X2_F &amp;</c></para>
/// <para>The transform to apply to the geometry before calculating its length.</para>
/// </param>
/// <param name="flatteningTolerance">
/// <para>Type: [in] <c>FLOAT</c></para>
/// <para>
/// The maximum error allowed when constructing a polygonal approximation of the geometry. No point in the polygonal
/// representation will diverge from the original geometry by more than the flattening tolerance. Smaller values produce more
/// accurate results but cause slower execution.
/// </para>
/// </param>
/// <returns>
/// <para>Type: [out] <c>FLOAT*</c></para>
/// <para>
/// When this method returns, contains a pointer to the length of the geometry. For closed geometries, the length includes an
/// implicit closing segment. You must allocate storage for this parameter.
/// </para>
/// </returns>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1geometry-computelength(constd2d1_matrix_3x2_f__float_float)
// HRESULT ComputeLength( const D2D1_MATRIX_3X2_F &amp; worldTransform, FLOAT flatteningTolerance, FLOAT *length );
new float ComputeLength([In, Optional] IntPtr worldTransform, float flatteningTolerance);
/// <summary>
/// Calculates the point and tangent vector at the specified distance along the geometry after it has been transformed by the
/// specified matrix and flattened using the specified tolerance.
/// </summary>
/// <param name="length">
/// <para>Type: [in] <c>FLOAT</c></para>
/// <para>
/// The distance along the geometry of the point and tangent to find. If this distance is less than 0, this method calculates
/// the first point in the geometry. If this distance is greater than the length of the geometry, this method calculates the
/// last point in the geometry.
/// </para>
/// </param>
/// <param name="worldTransform">
/// <para>Type: [in] <c>const D2D1_MATRIX_3X2_F &amp;</c></para>
/// <para>The transform to apply to the geometry before calculating the specified point and tangent.</para>
/// </param>
/// <param name="flatteningTolerance">
/// <para>Type: [in] <c>FLOAT</c></para>
/// <para>
/// The maximum error allowed when constructing a polygonal approximation of the geometry. No point in the polygonal
/// representation will diverge from the original geometry by more than the flattening tolerance. Smaller values produce more
/// accurate results but cause slower execution.
/// </para>
/// </param>
/// <param name="point">
/// <para>Type: [out, optional] <c>D2D1_POINT_2F*</c></para>
/// <para>
/// The location at the specified distance along the geometry. If the geometry is empty, this point contains NaN as its x and y values.
/// </para>
/// </param>
/// <param name="unitTangentVector">
/// <para>Type: [out, optional] <c>D2D1_POINT_2F*</c></para>
/// <para>
/// When this method returns, contains a pointer to the tangent vector at the specified distance along the geometry. If the
/// geometry is empty, this vector contains NaN as its x and y values. You must allocate storage for this parameter.
/// </para>
/// </param>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1geometry-computepointatlength(float_constd2d1_matrix_3x2_f__float_d2d1_point_2f_d2d1_point_2f)
// HRESULT ComputePointAtLength( FLOAT length, const D2D1_MATRIX_3X2_F &amp; worldTransform, FLOAT flatteningTolerance,
// D2D1_POINT_2F *point, D2D1_POINT_2F *unitTangentVector );
new void ComputePointAtLength(float length, [In, Optional] IntPtr worldTransform, float flatteningTolerance, out D2D_POINT_2F point, out D2D_POINT_2F unitTangentVector);
/// <summary>
/// Widens the geometry by the specified stroke and writes the result to an ID2D1SimplifiedGeometrySink after it has been
/// transformed by the specified matrix and flattened using the specified tolerance.
/// </summary>
/// <param name="strokeWidth">
/// <para>Type: [in] <c>FLOAT</c></para>
/// <para>The amount by which to widen the geometry.</para>
/// </param>
/// <param name="strokeStyle">
/// <para>Type: [in, optional] <c>ID2D1StrokeStyle*</c></para>
/// <para>The style of stroke to apply to the geometry, or <c>NULL</c>.</para>
/// </param>
/// <param name="worldTransform">
/// <para>Type: [in] <c>const D2D1_MATRIX_3X2_F &amp;</c></para>
/// <para>The transform to apply to the geometry after widening it.</para>
/// </param>
/// <param name="flatteningTolerance">
/// <para>Type: [in] <c>FLOAT</c></para>
/// <para>
/// The maximum error allowed when constructing a polygonal approximation of the geometry. No point in the polygonal
/// representation will diverge from the original geometry by more than the flattening tolerance. Smaller values produce more
/// accurate results but cause slower execution.
/// </para>
/// </param>
/// <param name="geometrySink">
/// <para>Type: [in] <c>ID2D1SimplifiedGeometrySink*</c></para>
/// <para>The ID2D1SimplifiedGeometrySink to which the widened geometry is appended.</para>
/// </param>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1geometry-widen(float_id2d1strokestyle_constd2d1_matrix_3x2_f__float_id2d1simplifiedgeometrysink)
// HRESULT Widen( FLOAT strokeWidth, ID2D1StrokeStyle *strokeStyle, const D2D1_MATRIX_3X2_F &amp; worldTransform, FLOAT
// flatteningTolerance, ID2D1SimplifiedGeometrySink *geometrySink );
new void Widen(float strokeWidth, [In, Optional] ID2D1StrokeStyle strokeStyle, [In, Optional] IntPtr worldTransform, float flatteningTolerance, [In] ID2D1SimplifiedGeometrySink geometrySink);
/// <summary>Retrieves the source geometry of this transformed geometry object.</summary>
/// <param name="sourceGeometry">
/// <para>Type: <c>ID2D1Geometry**</c></para>
/// <para>
/// When this method returns, contains a pointer to a pointer to the source geometry for this transformed geometry object. This
/// parameter is passed uninitialized.
/// </para>
/// </param>
/// <returns>None</returns>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1transformedgeometry-getsourcegeometry void
// GetSourceGeometry( ID2D1Geometry **sourceGeometry );
[PreserveSig]
void GetSourceGeometry(out ID2D1Geometry sourceGeometry);
/// <summary>Retrieves the matrix used to transform the ID2D1TransformedGeometry object's source geometry.</summary>
/// <param name="transform">
/// <para>Type: <c>D2D1_MATRIX_3X2_F*</c></para>
/// <para>
/// A pointer that receives the matrix used to transform the ID2D1TransformedGeometry object's source geometry. You must
/// allocate storage for this parameter.
/// </para>
/// </param>
/// <returns>None</returns>
// https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nf-d2d1-id2d1transformedgeometry-gettransform void GetTransform(
// D2D1_MATRIX_3X2_F *transform );
[PreserveSig]
void GetTransform(out D2D_MATRIX_3X2_F transform);
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk">
<ProjectExtensions>
<SupportedDlls>d2d1.dll;dxgi.dll;dwrite.dll;windowscodecs.dll</SupportedDlls>
</ProjectExtensions>
<PropertyGroup>
<Description>PInvoke API (methods, interfaces, structures and constants) imported from Windows Graphics APIs. Currently supports Windows Imaging Component (WIC), DirectWrite (full), Direct2D (partial), and Direct3D (DXGI only).</Description>
<AssemblyTitle>$(AssemblyName)</AssemblyTitle>
<TargetFrameworks>net20;net35;net40;net45;netstandard2.0;netcoreapp2.0;netcoreapp2.1;netcoreapp3.0;netcoreapp3.1</TargetFrameworks>
<AssemblyName>Vanara.PInvoke.Graphics</AssemblyName>
<PackageId>$(AssemblyName)</PackageId>
<PackageTags>pinvoke;vanara;net-extensions;interop;DirectX;DirectWrite;DXGI;Direct2D;Windows Imaging Component;WIC;windowscodecs</PackageTags>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
<PackageReleaseNotes>Currently implements:
Functions
CreateDXGIFactory, CreateDXGIFactory1, CreateDXGIFactory2, D2D1ComputeMaximumScaleFactor, D2D1ConvertColorSpace, D2D1CreateDevice, D2D1CreateDeviceContext, D2D1CreateFactory, D2D1GetGradientMeshInteriorPointsFromCoonsPatch, D2D1InvertMatrix, D2D1IsMatrixInvertible, D2D1MakeRotateMatrix, D2D1MakeSkewMatrix, D2D1SinCos, D2D1Tan, D2D1Vec3Length, DWriteCreateFactory, DXGIDeclareAdapterRemovalSupport, DXGIGetDebugInterface1, WICConvertBitmapSource, WICCreateBitmapFromSection, WICCreateBitmapFromSectionEx, WICMapGuidToShortName, WICMapSchemaToName, WICMapShortNameToGuid
Structures
D2D_MATRIX_3X2_F, D2D_POINT_2F, D2D_RECT_F, D2D_SIZE_F, D2D_SIZE_U, D2D1_ARC_SEGMENT, D2D1_BEZIER_SEGMENT, D2D1_BITMAP_BRUSH_PROPERTIES, D2D1_BITMAP_PROPERTIES, D2D1_BRUSH_PROPERTIES, D2D1_DRAWING_STATE_DESCRIPTION, D2D1_ELLIPSE, D2D1_FACTORY_OPTIONS, D2D1_GRADIENT_STOP, D2D1_HWND_RENDER_TARGET_PROPERTIES, D2D1_LAYER_PARAMETERS, D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES, D2D1_PIXEL_FORMAT, D2D1_PRINT_CONTROL_PROPERTIES, D2D1_QUADRATIC_BEZIER_SEGMENT, D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES, D2D1_RENDER_TARGET_PROPERTIES, D2D1_ROUNDED_RECT, D2D1_STROKE_STYLE_PROPERTIES, D2D1_TRIANGLE, D3DCOLORVALUE, DWRITE_GLYPH_RUN, DXGI_JPEG_AC_HUFFMAN_TABLE, DXGI_JPEG_DC_HUFFMAN_TABLE, DXGI_JPEG_QUANTIZATION_TABLE, D2D1_BITMAP_PROPERTIES1, D2D1_CREATION_PROPERTIES, D2D1_EFFECT_INPUT_DESCRIPTION, D2D1_IMAGE_BRUSH_PROPERTIES, D2D1_LAYER_PARAMETERS1, D2D1_MAPPED_RECT, D2D1_RENDERING_CONTROLS, DXGI_ADAPTER_DESC, DXGI_ADAPTER_DESC1, DXGI_FRAME_STATISTICS, DXGI_GAMMA_CONTROL, DXGI_GAMMA_CONTROL_CAPABILITIES, DXGI_MAPPED_RECT, DXGI_MODE_DESC, DXGI_OUTPUT_DESC, DXGI_RATIONAL, DXGI_RGB, DXGI_SAMPLE_DESC, DXGI_SHARED_RESOURCE, DXGI_SURFACE_DESC, DXGI_SWAP_CHAIN_DESC, DWRITE_CLUSTER_METRICS, DWRITE_FONT_FEATURE, DWRITE_FONT_METRICS, DWRITE_GLYPH_METRICS, DWRITE_GLYPH_OFFSET, DWRITE_GLYPH_RUN, DWRITE_GLYPH_RUN_DESCRIPTION, DWRITE_HIT_TEST_METRICS, DWRITE_INLINE_OBJECT_METRICS, DWRITE_LINE_BREAKPOINT, DWRITE_LINE_METRICS, DWRITE_MATRIX, DWRITE_OVERHANG_METRICS, DWRITE_SCRIPT_ANALYSIS, DWRITE_SHAPING_GLYPH_PROPERTIES, DWRITE_SHAPING_TEXT_PROPERTIES, DWRITE_STRIKETHROUGH, DWRITE_TEXT_METRICS, DWRITE_TEXT_RANGE, DWRITE_TRIMMING, DWRITE_TYPOGRAPHIC_FEATURES, DWRITE_UNDERLINE, WICBitmapPattern, WICBitmapPlane, WICBitmapPlaneDescription, WICDdsFormatInfo, WICDdsParameters, WICImageParameters, WICJpegFrameHeader, WICJpegScanHeader, WICMetadataHeader, WICMetadataPattern, WICRawCapabilitiesInfo, WICRawToneCurve, WICRawToneCurvePoint, WICRect, PWICRect
Interfaces
ID2D1Bitmap, ID2D1BitmapBrush, ID2D1BitmapRenderTarget, ID2D1Brush, ID2D1DCRenderTarget, ID2D1Device, ID2D1DeviceContext, ID2D1DrawingStateBlock, ID2D1EllipseGeometry, ID2D1Factory, ID2D1Geometry, ID2D1GeometryGroup, ID2D1GeometrySink, ID2D1GradientStopCollection, ID2D1HwndRenderTarget, ID2D1Image, ID2D1Layer, ID2D1LinearGradientBrush, ID2D1Mesh, ID2D1PathGeometry, ID2D1PrintControl, ID2D1RadialGradientBrush, ID2D1RectangleGeometry, ID2D1RenderTarget, ID2D1Resource, ID2D1RoundedRectangleGeometry, ID2D1SimplifiedGeometrySink, ID2D1SolidColorBrush, ID2D1StrokeStyle, ID2D1TessellationSink, ID2D1TransformedGeometry, ID2D1Bitmap1, ID2D1BitmapBrush1, ID2D1ColorContext, ID2D1CommandList, ID2D1CommandSink, ID2D1Effect, ID2D1GdiMetafile, ID2D1GdiMetafileSink, ID2D1GradientStopCollection1, ID2D1ImageBrush, ID2D1Properties, IDXGIAdapter, IDXGIAdapter1, IDXGIDevice, IDXGIDeviceSubObject, IDXGIFactory, IDXGIFactory1, IDXGIObject, IDXGIOutput, IDXGISurface, IDXGISwapChain, IDWriteBitmapRenderTarget, IDWriteFactory, IDWriteFont, IDWriteFontCollection, IDWriteFontCollectionLoader, IDWriteFontFace, IDWriteFontFamily, IDWriteFontFile, IDWriteFontFileEnumerator, IDWriteFontFileLoader, IDWriteFontFileStream, IDWriteFontList, IDWriteGdiInterop, IDWriteGlyphRunAnalysis, IDWriteInlineObject, IDWriteLocalFontFileLoader, IDWriteLocalizedStrings, IDWriteNumberSubstitution, IDWritePixelSnapping, IDWriteRenderingParams, IDWriteTextAnalysisSink, IDWriteTextAnalysisSource, IDWriteTextAnalyzer, IDWriteTextFormat, IDWriteTextLayout, IDWriteTextRenderer, IDWriteTypography, IWICBitmap, IWICBitmapClipper, IWICBitmapCodecInfo, IWICBitmapCodecProgressNotification, IWICBitmapDecoder, IWICBitmapDecoderInfo, IWICBitmapEncoder, IWICBitmapEncoderInfo, IWICBitmapFlipRotator, IWICBitmapFrameDecode, IWICBitmapFrameEncode, IWICBitmapLock, IWICBitmapScaler, IWICBitmapSource, IWICBitmapSourceTransform, IWICColorContext, IWICColorTransform, IWICComponentFactory, IWICComponentInfo, IWICDdsDecoder, IWICDdsEncoder, IWICDevelopRaw, IWICDevelopRawNotificationCallback, IWICDdsFrameDecode, IWICEnumMetadataItem, IWICFastMetadataEncoder, IWICFormatConverter, IWICFormatConverterInfo, IWICImageEncoder, IWICImagingFactory, IWICImagingFactory2, IWICJpegFrameDecode, IWICJpegFrameEncode, IWICMetadataBlockReader, IWICMetadataBlockWriter, IWICMetadataHandlerInfo, IWICMetadataQueryReader, IWICMetadataQueryWriter, IWICMetadataReader, IWICMetadataReaderInfo, IWICMetadataWriter, IWICMetadataWriterInfo, IWICPalette, IWICPersistStream, IWICPixelFormatInfo, IWICPixelFormatInfo2, IWICPlanarBitmapFrameEncode, IWICPlanarBitmapSourceTransform, IWICPlanarFormatConverter, IWICProgressCallback, IWICProgressiveLevelControl, IWICStream, IWICStreamProvider
</PackageReleaseNotes>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\Core\Vanara.Core.csproj" />
<ProjectReference Include="..\Ole\Vanara.PInvoke.Ole.csproj" />
<ProjectReference Include="..\Shared\Vanara.PInvoke.Shared.csproj" />
</ItemGroup>
</Project>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,248 @@
using System;
using System.Runtime.InteropServices;
using System.Text;
namespace Vanara.PInvoke
{
/// <summary>Items from the WindowsCodecs.dll</summary>
public static partial class WindowsCodecs
{
/// <summary>Application defined callback function called when codec component progress is made.</summary>
/// <param name="pvData">
/// <para>Type: <c>LPVOID</c></para>
/// <para>Component data passed to the callback function.</para>
/// </param>
/// <param name="uFrameNum">
/// <para>Type: <c>ULONG</c></para>
/// <para>The current frame number.</para>
/// </param>
/// <param name="operation">
/// <para>Type: <c>WICProgressOperation</c></para>
/// <para>The current operation the component is in.</para>
/// </param>
/// <param name="dblProgress">
/// <para>Type: <c>double</c></para>
/// <para>The progress value. The range is 0.0 to 1.0.</para>
/// </param>
/// <returns>
/// <para>Type: <c>HRESULT</c></para>
/// <para>If this callback function succeeds, it returns <c>S_OK</c>. Otherwise, it returns an <c>HRESULT</c> error code.</para>
/// </returns>
/// <remarks>
/// <para>An operation can be canceled by returning .</para>
/// <para>
/// To register your callback function, query the encoder or decoder for the IWICBitmapCodecProgressNotification interface and call RegisterProgressNotification.
/// </para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/wincodec/nc-wincodec-pfnprogressnotification PFNProgressNotification
// Pfnprogressnotification; HRESULT Pfnprogressnotification( LPVOID pvData, ULONG uFrameNum, WICProgressOperation operation, double
// dblProgress ) {...}
[PInvokeData("wincodec.h", MSDNShortId = "10dd9fbe-abff-4fc9-a3a5-7c01ecc10a7f")]
public delegate HRESULT PFNProgressNotification([In] IntPtr pvData, uint uFrameNum, WICProgressOperation operation, double dblProgress);
/// <summary>Obtains a IWICBitmapSource in the desired pixel format from a given <c>IWICBitmapSource</c>.</summary>
/// <param name="dstFormat">
/// <para>Type: <c>REFWICPixelFormatGUID</c></para>
/// <para>The pixel format to convert to.</para>
/// </param>
/// <param name="pISrc">
/// <para>Type: <c>IWICBitmapSource*</c></para>
/// <para>The source bitmap.</para>
/// </param>
/// <param name="ppIDst">
/// <para>Type: <c>IWICBitmapSource**</c></para>
/// <para>A pointer to the <c>null</c>-initialized destination bitmap pointer.</para>
/// </param>
/// <returns>
/// <para>Type: <c>HRESULT</c></para>
/// <para>If this function succeeds, it returns <c>S_OK</c>. Otherwise, it returns an <c>HRESULT</c> error code.</para>
/// </returns>
/// <remarks>
/// If the pISrc bitmap is already in the desired format, then pISrc is copied to the destination bitmap pointer and a reference is
/// added. If it is not in the desired format however, <c>WICConvertBitmapSource</c> will instantiate a dstFormat format converter
/// and initialize it with pISrc.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/wincodec/nf-wincodec-wicconvertbitmapsource HRESULT WICConvertBitmapSource(
// REFWICPixelFormatGUID dstFormat, IWICBitmapSource *pISrc, IWICBitmapSource **ppIDst );
[DllImport(Lib.Windowscodecs, SetLastError = false, ExactSpelling = true)]
[PInvokeData("wincodec.h", MSDNShortId = "ea735296-1bfd-4175-b8c9-cb5a61ab4203")]
public static extern HRESULT WICConvertBitmapSource(in Guid dstFormat, [In] IWICBitmapSource pISrc, out IWICBitmapSource ppIDst);
/// <summary>Returns a IWICBitmapSource that is backed by the pixels of a Windows Graphics Device Interface (GDI) section handle.</summary>
/// <param name="width">
/// <para>Type: <c>UINT</c></para>
/// <para>The width of the bitmap pixels.</para>
/// </param>
/// <param name="height">
/// <para>Type: <c>UINT</c></para>
/// <para>The height of the bitmap pixels.</para>
/// </param>
/// <param name="pixelFormat">
/// <para>Type: <c>REFWICPixelFormatGUID</c></para>
/// <para>The pixel format of the bitmap.</para>
/// </param>
/// <param name="hSection">
/// <para>Type: <c>HANDLE</c></para>
/// <para>The section handle. This is a file mapping object handle returned by the CreateFileMapping function.</para>
/// </param>
/// <param name="stride">
/// <para>Type: <c>UINT</c></para>
/// <para>The byte count of each scanline.</para>
/// </param>
/// <param name="offset">
/// <para>Type: <c>UINT</c></para>
/// <para>The offset into the section.</para>
/// </param>
/// <param name="ppIBitmap">
/// <para>Type: <c>IWICBitmap**</c></para>
/// <para>A pointer that receives the bitmap.</para>
/// </param>
/// <returns>
/// <para>Type: <c>HRESULT</c></para>
/// <para>If this function succeeds, it returns <c>S_OK</c>. Otherwise, it returns an <c>HRESULT</c> error code.</para>
/// </returns>
/// <remarks>
/// The <c>WICCreateBitmapFromSection</c> function calls the WICCreateBitmapFromSectionEx function with the desiredAccessLevel
/// parameter set to <c>WICSectionAccessLevelRead</c>.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/wincodec/nf-wincodec-wiccreatebitmapfromsection HRESULT
// WICCreateBitmapFromSection( UINT width, UINT height, REFWICPixelFormatGUID pixelFormat, HANDLE hSection, UINT stride, UINT
// offset, IWICBitmap **ppIBitmap );
[DllImport(Lib.Windowscodecs, SetLastError = false, ExactSpelling = true)]
[PInvokeData("wincodec.h", MSDNShortId = "a14022a0-7af6-4c06-9afa-4709b81efc96")]
public static extern HRESULT WICCreateBitmapFromSection(uint width, uint height, in Guid pixelFormat, HSECTION hSection, uint stride, uint offset, out IWICBitmap ppIBitmap);
/// <summary>Returns a IWICBitmapSource that is backed by the pixels of a Windows Graphics Device Interface (GDI) section handle.</summary>
/// <param name="width">
/// <para>Type: <c>UINT</c></para>
/// <para>The width of the bitmap pixels.</para>
/// </param>
/// <param name="height">
/// <para>Type: <c>UINT</c></para>
/// <para>The height of the bitmap pixels.</para>
/// </param>
/// <param name="pixelFormat">
/// <para>Type: <c>REFWICPixelFormatGUID</c></para>
/// <para>The pixel format of the bitmap.</para>
/// </param>
/// <param name="hSection">
/// <para>Type: <c>HANDLE</c></para>
/// <para>The section handle. This is a file mapping object handle returned by the CreateFileMapping function.</para>
/// </param>
/// <param name="stride">
/// <para>Type: <c>UINT</c></para>
/// <para>The byte count of each scanline.</para>
/// </param>
/// <param name="offset">
/// <para>Type: <c>UINT</c></para>
/// <para>The offset into the section.</para>
/// </param>
/// <param name="desiredAccessLevel">
/// <para>Type: <c>WICSectionAccessLevel</c></para>
/// <para>The desired access level.</para>
/// </param>
/// <param name="ppIBitmap">
/// <para>Type: <c>IWICBitmap**</c></para>
/// <para>A pointer that receives the bitmap.</para>
/// </param>
/// <returns>
/// <para>Type: <c>HRESULT</c></para>
/// <para>If this function succeeds, it returns <c>S_OK</c>. Otherwise, it returns an <c>HRESULT</c> error code.</para>
/// </returns>
// https://docs.microsoft.com/en-us/windows/win32/api/wincodec/nf-wincodec-wiccreatebitmapfromsectionex HRESULT
// WICCreateBitmapFromSectionEx( UINT width, UINT height, REFWICPixelFormatGUID pixelFormat, HANDLE hSection, UINT stride, UINT
// offset, WICSectionAccessLevel desiredAccessLevel, IWICBitmap **ppIBitmap );
[DllImport(Lib.Windowscodecs, SetLastError = false, ExactSpelling = true)]
[PInvokeData("wincodec.h", MSDNShortId = "0c9892a5-c136-41f6-8161-8077afe1a9da")]
public static extern HRESULT WICCreateBitmapFromSectionEx(uint width, uint height, in Guid pixelFormat, HSECTION hSection, uint stride, uint offset, WICSectionAccessLevel desiredAccessLevel, out IWICBitmap ppIBitmap);
/// <summary>Obtains the short name associated with a given GUID.</summary>
/// <param name="guid">
/// <para>Type: <c>REFGUID</c></para>
/// <para>The GUID to retrieve the short name for.</para>
/// </param>
/// <param name="cchName">
/// <para>Type: <c>UINT</c></para>
/// <para>The size of the wzName buffer.</para>
/// </param>
/// <param name="wzName">
/// <para>Type: <c>WCHAR*</c></para>
/// <para>A pointer that receives the short name associated with the GUID.</para>
/// </param>
/// <param name="pcchActual">
/// <para>Type: <c>UINT*</c></para>
/// <para>The actual size needed to retrieve the entire short name associated with the GUID.</para>
/// </param>
/// <returns>
/// <para>Type: <c>HRESULT</c></para>
/// <para>If this function succeeds, it returns <c>S_OK</c>. Otherwise, it returns an <c>HRESULT</c> error code.</para>
/// </returns>
/// <remarks>Windows Imaging Component (WIC) short name mappings can be found within the following registry key:</remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/wincodec/nf-wincodec-wicmapguidtoshortname HRESULT WICMapGuidToShortName(
// REFGUID guid, UINT cchName, WCHAR *wzName, UINT *pcchActual );
[DllImport(Lib.Windowscodecs, SetLastError = false, ExactSpelling = true)]
[PInvokeData("wincodec.h", MSDNShortId = "ae1e4680-2c20-4a3e-b931-206d26f4d09c")]
public static extern HRESULT WICMapGuidToShortName(in Guid guid, uint cchName, [MarshalAs(UnmanagedType.LPWStr)] StringBuilder wzName, out uint pcchActual);
/// <summary>Obtains the name associated with a given schema.</summary>
/// <param name="guidMetadataFormat">
/// <para>Type: <c>REFGUID</c></para>
/// <para>The metadata format GUID.</para>
/// </param>
/// <param name="pwzSchema">
/// <para>Type: <c>LPWSTR</c></para>
/// <para>The URI string of the schema for which the name is to be retrieved.</para>
/// </param>
/// <param name="cchName">
/// <para>Type: <c>UINT</c></para>
/// <para>The size of the wzName buffer.</para>
/// </param>
/// <param name="wzName">
/// <para>Type: <c>WCHAR*</c></para>
/// <para>A pointer to a buffer that receives the schema's name.</para>
/// <para>To obtain the required buffer size, call <c>WICMapSchemaToName</c> with cchName set to 0 and wzName set to <c>NULL</c>.</para>
/// </param>
/// <param name="pcchActual">
/// <para>Type: <c>UINT</c></para>
/// <para>The actual buffer size needed to retrieve the entire schema name.</para>
/// </param>
/// <returns>
/// <para>Type: <c>HRESULT</c></para>
/// <para>If this function succeeds, it returns <c>S_OK</c>. Otherwise, it returns an <c>HRESULT</c> error code.</para>
/// </returns>
/// <remarks>
/// <para>You can extend the schema name mapping by adding to the following registry key:</para>
/// <para><c>HKEY_CLASSES_ROOT</c><c>CLSID</c><c>{FAE3D380-FEA4-4623-8C75-C6B61110B681}</c><c>Schemas</c><c>BB5ACC38-F216-4CEC-A6C5-5F6E739763A9</c><c>...</c></para>
/// <para>For more information, see How to Write a WIC-Enabled Codec.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/wincodec/nf-wincodec-wicmapschematoname HRESULT WICMapSchemaToName( REFGUID
// guidMetadataFormat, LPWSTR pwzSchema, UINT cchName, WCHAR *wzName, UINT *pcchActual );
[DllImport(Lib.Windowscodecs, SetLastError = false, ExactSpelling = true)]
[PInvokeData("wincodec.h", MSDNShortId = "6e71b75a-a542-459c-9935-b05f3ce39217")]
public static extern HRESULT WICMapSchemaToName(in Guid guidMetadataFormat, [MarshalAs(UnmanagedType.LPWStr)] string pwzSchema, uint cchName, [MarshalAs(UnmanagedType.LPWStr)] StringBuilder wzName, out uint pcchActual);
/// <summary>Obtains the GUID associated with the given short name.</summary>
/// <param name="wzName">
/// <para>Type: <c>const WCHAR*</c></para>
/// <para>A pointer to the short name.</para>
/// </param>
/// <param name="pguid">
/// <para>Type: <c>GUID*</c></para>
/// <para>A pointer that receives the GUID associated with the given short name.</para>
/// </param>
/// <returns>
/// <para>Type: <c>HRESULT</c></para>
/// <para>If this function succeeds, it returns <c>S_OK</c>. Otherwise, it returns an <c>HRESULT</c> error code.</para>
/// </returns>
/// <remarks>
/// <para>You can extend the short name mapping by adding to the following registry key:</para>
/// <para><c>HKEY_CLASSES_ROOT</c><c>CLSID</c><c>{FAE3D380-FEA4-4623-8C75-C6B61110B681}</c><c>Namespace</c><c>...</c></para>
/// <para>For more information, see How to Write a WIC-Enabled Codec.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/wincodec/nf-wincodec-wicmapshortnametoguid HRESULT WICMapShortNameToGuid(
// PCWSTR wzName, GUID *pguid );
[DllImport(Lib.Windowscodecs, SetLastError = false, ExactSpelling = true)]
[PInvokeData("wincodec.h", MSDNShortId = "ceefa802-7930-4b01-b1a2-6db530032e88")]
public static extern HRESULT WICMapShortNameToGuid([MarshalAs(UnmanagedType.LPWStr)] string wzName, out Guid pguid);
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,673 @@
using System;
using System.Runtime.InteropServices;
using Vanara.InteropServices;
using static Vanara.PInvoke.D2d1;
using static Vanara.PInvoke.DXGI;
namespace Vanara.PInvoke
{
/// <summary>Items from the WindowsCodecs.dll</summary>
public static partial class WindowsCodecs
{
/// <summary>Contains members that identify a pattern within an image file which can be used to identify a particular format.</summary>
// https://docs.microsoft.com/en-us/windows/win32/api/wincodec/ns-wincodec-wicbitmappattern typedef struct WICBitmapPattern {
// ULARGE_INTEGER Position; ULONG Length; BYTE *Pattern; BYTE *Mask; BOOL EndOfStream; } WICBitmapPattern;
[PInvokeData("wincodec.h", MSDNShortId = "6f0cd639-c0db-46e4-b3a3-bc21222d97ee")]
[StructLayout(LayoutKind.Sequential)]
public struct WICBitmapPattern
{
/// <summary>
/// <para>Type: <c>ULARGE_INTEGER</c></para>
/// <para>The offset the pattern is located in the file.</para>
/// </summary>
public ulong Position;
/// <summary>
/// <para>Type: <c>ULONG</c></para>
/// <para>The pattern length.</para>
/// </summary>
public uint Length;
/// <summary>
/// <para>Type: <c>BYTE*</c></para>
/// <para>The actual pattern.</para>
/// </summary>
public IntPtr Pattern;
/// <summary>
/// <para>Type: <c>BYTE*</c></para>
/// <para>The pattern mask.</para>
/// </summary>
public IntPtr Mask;
/// <summary>
/// <para>Type: <c>BOOL</c></para>
/// <para>The end of the stream.</para>
/// </summary>
[MarshalAs(UnmanagedType.Bool)] public bool EndOfStream;
}
/// <summary>Specifies the pixel format, buffer, stride and size of a component plane for a planar pixel format.</summary>
// https://docs.microsoft.com/en-us/windows/win32/api/wincodec/ns-wincodec-wicbitmapplane typedef struct WICBitmapPlane {
// WICPixelFormatGUID Format; BYTE *pbBuffer; UINT cbStride; UINT cbBufferSize; } WICBitmapPlane;
[PInvokeData("wincodec.h", MSDNShortId = "4E988284-DE71-48B2-BF77-D616FAA2A3B1")]
[StructLayout(LayoutKind.Sequential)]
public struct WICBitmapPlane
{
/// <summary>
/// <para>Type: <c>WICPixelFormatGUID</c></para>
/// <para>Describes the pixel format of the plane.</para>
/// </summary>
public Guid Format;
/// <summary>
/// <para>Type: <c>BYTE*</c></para>
/// <para>Pointer to the buffer that holds the planes pixel components.</para>
/// </summary>
public IntPtr pbBuffer;
/// <summary>
/// <para>Type: <c>UINT</c></para>
/// <para>
/// The stride of the buffer ponted to by pbData. Stride indicates the total number of bytes to go from the beginning of one
/// scanline to the beginning of the next scanline.
/// </para>
/// </summary>
public uint cbStride;
/// <summary>
/// <para>Type: <c>UINT</c></para>
/// <para>The total size of the buffer pointed to by pbBuffer.</para>
/// </summary>
public uint cbBufferSize;
}
/// <summary>Specifies the pixel format and size of a component plane.</summary>
// https://docs.microsoft.com/en-us/windows/win32/api/wincodec/ns-wincodec-wicbitmapplanedescription typedef struct
// WICBitmapPlaneDescription { WICPixelFormatGUID Format; UINT Width; UINT Height; } WICBitmapPlaneDescription;
[PInvokeData("wincodec.h", MSDNShortId = "A5685E9B-F2B9-4A1B-9CEA-044E5FA1CC6D")]
[StructLayout(LayoutKind.Sequential)]
public struct WICBitmapPlaneDescription
{
/// <summary>Describes the pixel format of the plane.</summary>
public Guid Format;
/// <summary>Component width of the plane.</summary>
public uint Width;
/// <summary>Component height of the plane.</summary>
public uint Height;
}
/// <summary>Specifies the DXGI_FORMAT and block information of a DDS format.</summary>
// https://docs.microsoft.com/en-us/windows/win32/api/wincodec/ns-wincodec-wicddsformatinfo typedef struct WICDdsFormatInfo {
// DXGI_FORMAT DxgiFormat; UINT BytesPerBlock; UINT BlockWidth; UINT BlockHeight; } WICDdsFormatInfo;
[PInvokeData("wincodec.h", MSDNShortId = "C5F1DA49-EC11-4068-9DC6-D721894371F9")]
[StructLayout(LayoutKind.Sequential)]
public struct WICDdsFormatInfo
{
/// <summary>
/// <para>Type: <c>DXGI_FORMAT</c></para>
/// <para>The DXGI_FORMAT</para>
/// </summary>
public DXGI_FORMAT DxgiFormat;
/// <summary>
/// <para>Type: <c>UINT</c></para>
/// <para>
/// The size of a single block in bytes. For DXGI_FORMAT values that are not block-based, the value is equal to the size of a
/// single pixel in bytes.
/// </para>
/// </summary>
public uint BytesPerBlock;
/// <summary>
/// <para>Type: <c>UINT</c></para>
/// <para>The width of a single block in pixels. For DXGI_FORMAT values that are not block-based, the value is 1.</para>
/// </summary>
public uint BlockWidth;
/// <summary>
/// <para>Type: <c>UINT</c></para>
/// <para>The height of a single block in pixels. For DXGI_FORMAT values that are not block-based, the value is 1.</para>
/// </summary>
public uint BlockHeight;
}
/// <summary>Specifies the DDS image dimension, DXGI_FORMAT and alpha mode of contained data.</summary>
// https://docs.microsoft.com/en-us/windows/win32/api/wincodec/ns-wincodec-wicddsparameters typedef struct WICDdsParameters { UINT
// Width; UINT Height; UINT Depth; UINT MipLevels; UINT ArraySize; DXGI_FORMAT DxgiFormat; WICDdsDimension Dimension;
// WICDdsAlphaMode AlphaMode; } WICDdsParameters;
[PInvokeData("wincodec.h", MSDNShortId = "2E5755B4-E8DC-40B2-8DA1-B053A261079B")]
[StructLayout(LayoutKind.Sequential)]
public struct WICDdsParameters
{
/// <summary>
/// <para>Type: <c>UINT</c></para>
/// <para>The width, in pixels, of the texture at the largest mip size (mip level 0).</para>
/// </summary>
public uint Width;
/// <summary>
/// <para>Type: <c>UINT</c></para>
/// <para>
/// The height, in pixels, of the texture at the largest mip size (mip level 0). When the DDS image contains a 1-dimensional
/// texture, this value is equal to 1.
/// </para>
/// </summary>
public uint Height;
/// <summary>
/// <para>Type: <c>UINT</c></para>
/// <para>
/// The number of slices in the 3D texture. This is equivalent to the depth, in pixels, of the 3D texture at the largest mip
/// size (mip level 0). When the DDS image contains a 1- or 2-dimensional texture, this value is equal to 1.
/// </para>
/// </summary>
public uint Depth;
/// <summary>
/// <para>Type: <c>UINT</c></para>
/// <para>The number of mip levels contained in the DDS image.</para>
/// </summary>
public uint MipLevels;
/// <summary>
/// <para>Type: <c>UINT</c></para>
/// <para>The number of textures in the array in the DDS image.</para>
/// </summary>
public uint ArraySize;
/// <summary>
/// <para>Type: <c>DXGI_FORMAT</c></para>
/// <para>The DXGI_FORMAT of the DDS pixel data.</para>
/// </summary>
public DXGI_FORMAT DxgiFormat;
/// <summary>
/// <para>Type: <c>WICDdsDimension</c></para>
/// <para>Specifies the dimension type of the data contained in DDS image (1D, 2D, 3D or cube texture).</para>
/// </summary>
public WICDdsDimension Dimension;
/// <summary>
/// <para>Type: <c>WICDdsAlphaMode</c></para>
/// <para>Specifies the alpha behavior of the DDS image.</para>
/// </summary>
public WICDdsAlphaMode AlphaMode;
}
/// <summary>This defines parameters that you can use to override the default parameters normally used when encoding an image.</summary>
/// <remarks>
/// <para>If this parameter is not passed to the encoding API, the encoder uses these settings.</para>
/// <list type="bullet">
/// <item>
/// <term>A pixel format of (DXGI_FORMAT_B8G8R8A8_UNORM, D2D1_ALPHA_MODE_PREMULTIPLIED).</term>
/// </item>
/// <item>
/// <term>An x and y DPI of 96.</term>
/// </item>
/// <item>
/// <term>The entire image bounds will be used for encoding.</term>
/// </item>
/// </list>
/// <para>
/// <c>Note</c> The parameters as specified can't result in a scale. The encoder can use a larger portion of the input image based
/// on the passed in DPI and the pixel width and height.
/// </para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/wincodec/ns-wincodec-wicimageparameters typedef struct WICImageParameters {
// D2D1_PIXEL_FORMAT PixelFormat; FLOAT DpiX; FLOAT DpiY; FLOAT Top; FLOAT Left; UINT32 PixelWidth; UINT32 PixelHeight; } WICImageParameters;
[PInvokeData("wincodec.h", MSDNShortId = "0B461697-C7ED-48C9-A880-1B5F4A26FCFC")]
[StructLayout(LayoutKind.Sequential)]
public struct WICImageParameters
{
/// <summary>The pixel format to which the image is processed before it is written to the encoder.</summary>
public D2D1_PIXEL_FORMAT PixelFormat;
/// <summary>The DPI in the x dimension.</summary>
public float DpiX;
/// <summary>The DPI in the y dimension.</summary>
public float DpiY;
/// <summary>The top corner in pixels of the image space to be encoded to the destination.</summary>
public float Top;
/// <summary>The left corner in pixels of the image space to be encoded to the destination.</summary>
public float Left;
/// <summary>The width in pixels of the part of the image to write.</summary>
public uint PixelWidth;
/// <summary>The height in pixels of the part of the image to write.</summary>
public uint PixelHeight;
}
/// <summary>Represents a JPEG frame header.</summary>
/// <remarks>Get the frame header for an image by calling IWICJpegFrameDecode::GetFrameHeader.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/wincodec/ns-wincodec-wicjpegframeheader typedef struct WICJpegFrameHeader {
// UINT Width; UINT Height; WICJpegTransferMatrix TransferMatrix; WICJpegScanType ScanType; UINT cComponents; DWORD
// ComponentIdentifiers; DWORD SampleFactors; DWORD QuantizationTableIndices; } WICJpegFrameHeader;
[PInvokeData("wincodec.h", MSDNShortId = "BB207D78-9E27-49A4-91E4-601CED109389")]
[StructLayout(LayoutKind.Sequential)]
public struct WICJpegFrameHeader
{
/// <summary>The width of the JPEG frame.</summary>
public uint Width;
/// <summary>The height of the JPEG frame.</summary>
public uint Height;
/// <summary>The transfer matrix of the JPEG frame.</summary>
public WICJpegTransferMatrix TransferMatrix;
/// <summary>The scan type of the JPEG frame.</summary>
public WICJpegScanType ScanType;
/// <summary>The number of components in the frame.</summary>
public uint cComponents;
/// <summary>The component identifiers.</summary>
public uint ComponentIdentifiers;
/// <summary>
/// <para>The sample factors. Use one of the following constants, described in IWICJpegFrameDecode Constants.</para>
/// <list type="bullet">
/// <item>
/// <term>WIC_JPEG_SAMPLE_FACTORS_ONE</term>
/// </item>
/// <item>
/// <term>WIC_JPEG_SAMPLE_FACTORS_THREE_420</term>
/// </item>
/// <item>
/// <term>WIC_JPEG_SAMPLE_FACTORS_THREE_422</term>
/// </item>
/// <item>
/// <term>WIC_JPEG_SAMPLE_FACTORS_THREE_440</term>
/// </item>
/// <item>
/// <term>WIC_JPEG_SAMPLE_FACTORS_THREE_444</term>
/// </item>
/// </list>
/// </summary>
public WIC_JPEG_SAMPLE_FACTORS SampleFactors;
/// <summary>
/// <para>
/// The format of the quantization table indices. Use one of the following constants, described in IWICJpegFrameDecode Constants.
/// </para>
/// <list type="bullet">
/// <item>
/// <term>WIC_JPEG_QUANTIZATION_BASELINE_ONE</term>
/// </item>
/// <item>
/// <term>WIC_JPEG_QUANTIZATION_BASELINE_THREE</term>
/// </item>
/// </list>
/// </summary>
public WIC_JPEG_QUANTIZATION_BASELINE QuantizationTableIndices;
}
/// <summary>Represents a JPEG frame header.</summary>
/// <remarks>Get the scan header for an image by calling IWICJpegFrameDecode::GetScanHeader.</remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/wincodec/ns-wincodec-wicjpegscanheader typedef struct WICJpegScanHeader { UINT
// cComponents; UINT RestartInterval; DWORD ComponentSelectors; DWORD HuffmanTableIndices; BYTE StartSpectralSelection; BYTE
// EndSpectralSelection; BYTE SuccessiveApproximationHigh; BYTE SuccessiveApproximationLow; } WICJpegScanHeader;
[PInvokeData("wincodec.h", MSDNShortId = "87A36F9B-CD6B-4343-AAA7-9FDBAD41E38A")]
[StructLayout(LayoutKind.Sequential)]
public struct WICJpegScanHeader
{
/// <summary>The number of components in the scan.</summary>
public uint cComponents;
/// <summary>The interval of reset markers within the scan.</summary>
public uint RestartInterval;
/// <summary>The component identifiers.</summary>
public uint ComponentSelectors;
/// <summary>
/// <para>
/// The format of the quantization table indices. Use one of the following constants, described in IWICJpegFrameDecode Constants.
/// </para>
/// <list type="bullet">
/// <item>
/// <term>WIC_JPEG_HUFFMAN_BASELINE_ONE</term>
/// </item>
/// <item>
/// <term>WIC_JPEG_HUFFMAN_BASELINE_THREE</term>
/// </item>
/// </list>
/// </summary>
public WIC_JPEG_HUFFMAN_BASELINE HuffmanTableIndices;
/// <summary>The start of the spectral selection.</summary>
public byte StartSpectralSelection;
/// <summary>The end of the spectral selection.</summary>
public byte EndSpectralSelection;
/// <summary>The successive approximation high.</summary>
public byte SuccessiveApproximationHigh;
/// <summary>The successive approximation low.</summary>
public byte SuccessiveApproximationLow;
}
/// <summary>Represents metadata header.</summary>
// https://docs.microsoft.com/en-us/windows/win32/api/wincodecsdk/ns-wincodecsdk-wicmetadataheader typedef struct WICMetadataHeader
// { ULARGE_INTEGER Position; ULONG Length; BYTE *Header; ULARGE_INTEGER DataOffset; } WICMetadataHeader;
[PInvokeData("wincodecsdk.h", MSDNShortId = "f643b163-55b2-4691-a4eb-fc162949e936")]
[StructLayout(LayoutKind.Sequential)]
public struct WICMetadataHeader
{
/// <summary>
/// <para>Type: <c>ULARGE_INTEGER</c></para>
/// <para>The position of the header.</para>
/// </summary>
public ulong Position;
/// <summary>
/// <para>Type: <c>ULONG</c></para>
/// <para>The length of the header.</para>
/// </summary>
public uint Length;
/// <summary>
/// <para>Type: <c>BYTE*</c></para>
/// <para>Pointer to the header.</para>
/// </summary>
public IntPtr Header;
/// <summary>
/// <para>Type: <c>ULARGE_INTEGER</c></para>
/// <para>The offset of the header.</para>
/// </summary>
public ulong DataOffset;
}
/// <summary>Represents a metadata pattern.</summary>
// https://docs.microsoft.com/en-us/windows/win32/api/wincodecsdk/ns-wincodecsdk-wicmetadatapattern typedef struct
// WICMetadataPattern { ULARGE_INTEGER Position; ULONG Length; BYTE *Pattern; BYTE *Mask; ULARGE_INTEGER DataOffset; } WICMetadataPattern;
[PInvokeData("wincodecsdk.h", MSDNShortId = "cea9e07d-5e55-4320-9744-b5864b58cfd6")]
[StructLayout(LayoutKind.Sequential)]
public struct WICMetadataPattern
{
/// <summary>
/// <para>Type: <c>ULARGE_INTEGER</c></para>
/// <para>The position of the pattern.</para>
/// </summary>
public ulong Position;
/// <summary>
/// <para>Type: <c>ULONG</c></para>
/// <para>The length of the pattern.</para>
/// </summary>
public uint Length;
/// <summary>
/// <para>Type: <c>BYTE*</c></para>
/// <para>Pointer to the pattern.</para>
/// </summary>
public IntPtr Pattern;
/// <summary>
/// <para>Type: <c>BYTE*</c></para>
/// <para>Pointer to the pattern mask.</para>
/// </summary>
public IntPtr Mask;
/// <summary>
/// <para>Type: <c>ULARGE_INTEGER</c></para>
/// <para>The offset location of the pattern.</para>
/// </summary>
public ulong DataOffset;
}
/// <summary>Defines raw codec capabilites.</summary>
// https://docs.microsoft.com/en-us/windows/win32/api/wincodec/ns-wincodec-wicrawcapabilitiesinfo typedef struct
// WICRawCapabilitiesInfo { UINT cbSize; UINT CodecMajorVersion; UINT CodecMinorVersion; WICRawCapabilities
// ExposureCompensationSupport; WICRawCapabilities ContrastSupport; WICRawCapabilities RGBWhitePointSupport; WICRawCapabilities
// NamedWhitePointSupport; UINT NamedWhitePointSupportMask; WICRawCapabilities KelvinWhitePointSupport; WICRawCapabilities
// GammaSupport; WICRawCapabilities TintSupport; WICRawCapabilities SaturationSupport; WICRawCapabilities SharpnessSupport;
// WICRawCapabilities NoiseReductionSupport; WICRawCapabilities DestinationColorProfileSupport; WICRawCapabilities ToneCurveSupport;
// WICRawRotationCapabilities RotationSupport; WICRawCapabilities RenderModeSupport; } WICRawCapabilitiesInfo;
[PInvokeData("wincodec.h", MSDNShortId = "1466cd90-8eab-4c5c-bb77-c75d35fe586b")]
[StructLayout(LayoutKind.Sequential)]
public struct WICRawCapabilitiesInfo
{
/// <summary>
/// <para>Type: <c>UINT</c></para>
/// <para>Size of the <c>WICRawCapabilitiesInfo</c> structure.</para>
/// </summary>
public uint cbSize;
/// <summary>
/// <para>Type: <c>UINT</c></para>
/// <para>The codec's major version.</para>
/// </summary>
public uint CodecMajorVersion;
/// <summary>
/// <para>Type: <c>UINT</c></para>
/// <para>The codec's minor version.</para>
/// </summary>
public uint CodecMinorVersion;
/// <summary>
/// <para>Type: <c>WICRawCapabilities</c></para>
/// <para>The WICRawCapabilities of exposure compensation support.</para>
/// </summary>
public WICRawCapabilities ExposureCompensationSupport;
/// <summary>
/// <para>Type: <c>WICRawCapabilities</c></para>
/// <para>The WICRawCapabilities of contrast support.</para>
/// </summary>
public WICRawCapabilities ContrastSupport;
/// <summary>
/// <para>Type: <c>WICRawCapabilities</c></para>
/// <para>The WICRawCapabilities of RGB white point support.</para>
/// </summary>
public WICRawCapabilities RGBWhitePointSupport;
/// <summary>
/// <para>Type: <c>WICRawCapabilities</c></para>
/// <para>The WICRawCapabilities of WICNamedWhitePoint support.</para>
/// </summary>
public WICRawCapabilities NamedWhitePointSupport;
/// <summary>
/// <para>Type: <c>UINT</c></para>
/// <para>The WICNamedWhitePoint mask.</para>
/// </summary>
public uint NamedWhitePointSupportMask;
/// <summary>
/// <para>Type: <c>WICRawCapabilities</c></para>
/// <para>The WICRawCapabilities of kelvin white point support.</para>
/// </summary>
public WICRawCapabilities KelvinWhitePointSupport;
/// <summary>
/// <para>Type: <c>WICRawCapabilities</c></para>
/// <para>The WICRawCapabilities of gamma support.</para>
/// </summary>
public WICRawCapabilities GammaSupport;
/// <summary>
/// <para>Type: <c>WICRawCapabilities</c></para>
/// <para>The WICRawCapabilities of tint support.</para>
/// </summary>
public WICRawCapabilities TintSupport;
/// <summary>
/// <para>Type: <c>WICRawCapabilities</c></para>
/// <para>The WICRawCapabilities of saturation support.</para>
/// </summary>
public WICRawCapabilities SaturationSupport;
/// <summary>
/// <para>Type: <c>WICRawCapabilities</c></para>
/// <para>The WICRawCapabilities of sharpness support.</para>
/// </summary>
public WICRawCapabilities SharpnessSupport;
/// <summary>
/// <para>Type: <c>WICRawCapabilities</c></para>
/// <para>The WICRawCapabilities of noise reduction support.</para>
/// </summary>
public WICRawCapabilities NoiseReductionSupport;
/// <summary>
/// <para>Type: <c>WICRawCapabilities</c></para>
/// <para>The WICRawCapabilities of destination color profile support.</para>
/// </summary>
public WICRawCapabilities DestinationColorProfileSupport;
/// <summary>
/// <para>Type: <c>WICRawCapabilities</c></para>
/// <para>The WICRawCapabilities of tone curve support.</para>
/// </summary>
public WICRawCapabilities ToneCurveSupport;
/// <summary>
/// <para>Type: <c>WICRawRotationCapabilities</c></para>
/// <para>The WICRawRotationCapabilities of rotation support.</para>
/// </summary>
public WICRawRotationCapabilities RotationSupport;
/// <summary>
/// <para>Type: <c>WICRawCapabilities</c></para>
/// <para>The WICRawCapabilities of WICRawRenderMode support.</para>
/// </summary>
public WICRawCapabilities RenderModeSupport;
}
/// <summary>Represents a raw image tone curve.</summary>
// https://docs.microsoft.com/en-us/windows/win32/api/wincodec/ns-wincodec-wicrawtonecurve typedef struct WICRawToneCurve { UINT
// cPoints; WICRawToneCurvePoint aPoints[1]; } WICRawToneCurve;
[PInvokeData("wincodec.h", MSDNShortId = "45eedc32-a642-4ef6-a02a-63eaeacf0012")]
[VanaraMarshaler(typeof(SafeAnysizeStructMarshaler<WICRawToneCurve>), nameof(cPoints))]
[StructLayout(LayoutKind.Sequential)]
public struct WICRawToneCurve
{
/// <summary>
/// <para>Type: <c>UINT</c></para>
/// <para>The number of tone curve points.</para>
/// </summary>
public uint cPoints;
/// <summary>
/// <para>Type: <c>WICRawToneCurvePoint[1]</c></para>
/// <para>The array of tone curve points.</para>
/// </summary>
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 1)]
public WICRawToneCurvePoint[] aPoints;
}
/// <summary>Represents a raw image tone curve point.</summary>
// https://docs.microsoft.com/en-us/windows/win32/api/wincodec/ns-wincodec-wicrawtonecurvepoint typedef struct WICRawToneCurvePoint
// { double Input; double Output; } WICRawToneCurvePoint;
[PInvokeData("wincodec.h", MSDNShortId = "c5fbcd25-2884-4313-93d5-c1f290de4a77")]
[StructLayout(LayoutKind.Sequential)]
public struct WICRawToneCurvePoint
{
/// <summary>
/// <para>Type: <c>double</c></para>
/// <para>The tone curve input.</para>
/// </summary>
public double Input;
/// <summary>
/// <para>Type: <c>double</c></para>
/// <para>The tone curve output.</para>
/// </summary>
public double Output;
}
/// <summary>Represents a rectangle for Windows Imaging Component (WIC) API.</summary>
// https://docs.microsoft.com/en-us/windows/win32/api/wincodec/ns-wincodec-wicrect typedef struct WICRect { INT X; INT Y; INT Width;
// INT Height; } WICRect;
[PInvokeData("wincodec.h", MSDNShortId = "e07c26bf-b645-4382-bb93-8472ba397026")]
[StructLayout(LayoutKind.Sequential)]
public struct WICRect
{
/// <summary>
/// <para>Type: <c>INT</c></para>
/// <para>The horizontal coordinate of the rectangle.</para>
/// </summary>
public int X;
/// <summary>
/// <para>Type: <c>INT</c></para>
/// <para>The vertical coordinate of the rectangle.</para>
/// </summary>
public int Y;
/// <summary>
/// <para>Type: <c>INT</c></para>
/// <para>The width of the rectangle.</para>
/// </summary>
public int Width;
/// <summary>
/// <para>Type: <c>INT</c></para>
/// <para>The height of the rectangle.</para>
/// </summary>
public int Height;
}
/// <summary>Represents a rectangle for Windows Imaging Component (WIC) API.</summary>
// https://docs.microsoft.com/en-us/windows/win32/api/wincodec/ns-wincodec-wicrect typedef struct WICRect { INT X; INT Y; INT Width;
// INT Height; } WICRect;
[PInvokeData("wincodec.h", MSDNShortId = "e07c26bf-b645-4382-bb93-8472ba397026")]
[StructLayout(LayoutKind.Sequential)]
public class PWICRect
{
/// <summary>
/// <para>Type: <c>INT</c></para>
/// <para>The horizontal coordinate of the rectangle.</para>
/// </summary>
public int X;
/// <summary>
/// <para>Type: <c>INT</c></para>
/// <para>The vertical coordinate of the rectangle.</para>
/// </summary>
public int Y;
/// <summary>
/// <para>Type: <c>INT</c></para>
/// <para>The width of the rectangle.</para>
/// </summary>
public int Width;
/// <summary>
/// <para>Type: <c>INT</c></para>
/// <para>The height of the rectangle.</para>
/// </summary>
public int Height;
/// <summary>Initializes a new instance of the <see cref="PWICRect"/> class.</summary>
/// <param name="x">The x.</param>
/// <param name="y">The y.</param>
/// <param name="width">The width.</param>
/// <param name="height">The height.</param>
public PWICRect(int x, int y, int width, int height)
{
X = x;
Y = y;
Width = width;
Height = height;
}
/// <summary>Performs an implicit conversion from <see cref="WICRect"/> to <see cref="PWICRect"/>.</summary>
/// <param name="rect">The rect.</param>
/// <returns>The resulting <see cref="PWICRect"/> instance from the conversion.</returns>
public static implicit operator PWICRect(in WICRect rect) => new PWICRect(rect.X, rect.Y, rect.Width, rect.Height);
}
}
}

View File

@ -0,0 +1,27 @@
using NUnit.Framework;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Vanara.Extensions;
using Vanara.InteropServices;
using static Vanara.PInvoke.D2d1;
namespace Vanara.PInvoke.Tests
{
public class Direct2DTests
{
[Test]
public void DXGITest()
{
using var pFactory = ComReleaserFactory.Create(D2D1CreateFactory<ID2D1Factory>());
using var form = new System.Windows.Forms.Form { Text = "Sample App" };
}
}
}

View File

@ -0,0 +1,263 @@
using NUnit.Framework;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Vanara.Extensions;
using Vanara.InteropServices;
using static Vanara.PInvoke.D2d1;
using static Vanara.PInvoke.Dwrite;
namespace Vanara.PInvoke.Tests
{
public class DirectWriteTests : GenericComTester<IDWriteFactory>
{
private const string fontDir = @"C:\Temp\Fonts";
protected override IDWriteFactory InitInstance() => DWriteCreateFactory<IDWriteFactory>();
[Test]
public void EnumFontsTest()
{
Instance.GetSystemFontCollection(out var coll);
using var pColl = ComReleaserFactory.Create(coll);
EnumFonts(pColl.Item);
}
private static void EnumFonts(IDWriteFontCollection coll)
{
var count = coll.GetFontFamilyCount();
var locale = System.Globalization.CultureInfo.CurrentCulture.Name;
for (var i = 0U; i < count; i++)
{
try
{
using var pFontFam = ComReleaserFactory.Create(coll.GetFontFamily(i));
using var pFamNames = ComReleaserFactory.Create(pFontFam.Item.GetFamilyNames());
pFamNames.Item.FindLocaleName(locale, out var index, out var exists);
if (!exists) index = 0;
var len = pFamNames.Item.GetStringLength(index) + 1;
var str = new StringBuilder((int)len);
pFamNames.Item.GetString(index, str, len);
TestContext.WriteLine(str);
}
catch (Exception ex)
{
TestContext.WriteLine("ERROR: " + ex.Message);
}
}
}
[Test]
public void LoadCustomFontsTest()
{
var loader = new FontLoader();
Instance.RegisterFontCollectionLoader(loader);
try
{
using var pDir = new SafeCoTaskMemString(fontDir);
using var pColl = ComReleaserFactory.Create(Instance.CreateCustomFontCollection(loader, pDir, pDir.Size));
EnumFonts(pColl.Item);
}
finally
{
Instance.UnregisterFontCollectionLoader(loader);
}
}
[Test]
public void CreateFontFaceTest()
{
var ldr = new FontLoader();
var pList = Directory.EnumerateFiles(fontDir).Take(1).Select(f => Instance.CreateFontFileReference(f)).ToArray();
try
{
pList[0].Analyze(out var sup, out var ft, out var fc, out var fcn);
TestContext.WriteLine($"Supported={sup}; FileType={ft}; FaceType={fc}; FaceCnt={fcn}");
var pFF = ComReleaserFactory.Create(Instance.CreateFontFace(fc, (uint)pList.Length, pList, 0, DWRITE_FONT_SIMULATIONS.DWRITE_FONT_SIMULATIONS_NONE));
Assert.That(pFF.Item.GetType(), Is.EqualTo(fc));
var ff = new IDWriteFontFile[pList.Length];
var fflen = (uint)ff.Length;
Assert.That(() => pFF.Item.GetFiles(ref fflen, ff), Throws.Nothing);
ff.WriteValues();
TestContext.WriteLine($"Index in font files: {pFF.Item.GetIndex()}");
TestContext.WriteLine($"Simulations: {pFF.Item.GetSimulations()}");
Assert.That(pFF.Item.IsSymbolFont(), Is.False);
Assert.That(() => { pFF.Item.GetMetrics(out var faceMetrics); faceMetrics.WriteValues(); }, Throws.Nothing);
var glCnt = (int)pFF.Item.GetGlyphCount();
Assert.That(glCnt, Is.GreaterThan(0));
glCnt = Math.Min(3, glCnt);
var glm = new DWRITE_GLYPH_METRICS[glCnt];
var glidx = Enumerable.Range(0, glCnt).Select(i => (ushort)i).ToArray();
Assert.That(() => pFF.Item.GetDesignGlyphMetrics(glidx, (uint)glCnt, glm), Throws.Nothing);
glm.WriteValues();
Assert.That(() =>
{
var tag = DWRITE_FONT_FEATURE_TAG.DWRITE_FONT_FEATURE_TAG_DEFAULT;
pFF.Item.TryGetFontTable((uint)tag, out var tableData, out var tableSize, out var tableCtx, out var tableExists);
TestContext.WriteLine($"Table: {tag} = Sz:{tableSize}, {tableExists}");
pFF.Item.ReleaseFontTable(tableCtx);
}, Throws.Nothing);
var rParams = Instance.CreateRenderingParams();
pFF.Item.GetRecommendedRenderingMode(9f, 72f, DWRITE_MEASURING_MODE.DWRITE_MEASURING_MODE_NATURAL, rParams).WriteValues();
var hMon = User32.MonitorFromPoint(System.Drawing.Point.Empty, User32.MonitorFlags.MONITOR_DEFAULTTOPRIMARY);
rParams = Instance.CreateMonitorRenderingParams(hMon);
pFF.Item.GetRecommendedRenderingMode(9f, 72f, DWRITE_MEASURING_MODE.DWRITE_MEASURING_MODE_NATURAL, rParams).WriteValues();
rParams = Instance.CreateCustomRenderingParams(2.2f, 1f, 1f, DWRITE_PIXEL_GEOMETRY.DWRITE_PIXEL_GEOMETRY_BGR, DWRITE_RENDERING_MODE.DWRITE_RENDERING_MODE_ALIASED);
pFF.Item.GetRecommendedRenderingMode(9f, 72f, DWRITE_MEASURING_MODE.DWRITE_MEASURING_MODE_NATURAL, rParams).WriteValues();
pFF.Item.GetGdiCompatibleMetrics(9f, 72f).WriteValues();
Assert.That(() => pFF.Item.GetGdiCompatibleGlyphMetrics(9f, 72f, default, true, glidx, (uint)glCnt, glm), Throws.Nothing);
glm.WriteValues();
}
finally
{
foreach (var i in pList)
Marshal.ReleaseComObject(i);
}
}
[Test]
public void CreateTextFormatTest()
{
using var pTF = ComReleaserFactory.Create(Instance.CreateTextFormat("Arial", default, DWRITE_FONT_WEIGHT.DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE.DWRITE_FONT_STYLE_NORMAL, DWRITE_FONT_STRETCH.DWRITE_FONT_STRETCH_NORMAL, 11f, "en-us"));
Assert.That(pTF.Item.GetFontSize(), Is.GreaterThan(0f));
Assert.That(() => pTF.Item.SetTextAlignment(DWRITE_TEXT_ALIGNMENT.DWRITE_TEXT_ALIGNMENT_CENTER), Throws.Nothing);
var sb = new StringBuilder(20);
Assert.That(() => pTF.Item.GetLocaleName(sb, (uint)sb.Capacity), Throws.Nothing);
Assert.That(sb.ToString(), Is.EqualTo("en-us"));
}
[Test]
public void CreateTypographyTest()
{
using var pTyp = ComReleaserFactory.Create(Instance.CreateTypography());
var cnt = pTyp.Item.GetFontFeatureCount();
if (cnt > 0)
pTyp.Item.GetFontFeature(0).WriteValues();
}
[Test]
public void GetGdiInteropTest()
{
Assert.That(() =>
{
using var p = ComReleaserFactory.Create(Instance.GetGdiInterop());
}, Throws.Nothing);
}
[Test]
public void FontFileLoaderTest()
{
var loader = new FileLoader();
Assert.That(() => Instance.RegisterFontFileLoader(loader), Throws.Nothing);
try
{
}
finally
{
Assert.That(() => Instance.UnregisterFontFileLoader(loader), Throws.Nothing);
}
}
[ComVisible(true)]
public class FontLoader : IDWriteFontCollectionLoader
{
public HRESULT CreateEnumeratorFromKey([In] IDWriteFactory factory, IntPtr collectionKey, uint collectionKeySize, out IDWriteFontFileEnumerator fontFileEnumerator)
{
fontFileEnumerator = null;
if (factory is null || collectionKey == default)
return HRESULT.E_INVALIDARG;
fontFileEnumerator = new FontEnumerator(factory, StringHelper.GetString(collectionKey, CharSet.Unicode, collectionKeySize));
return HRESULT.S_OK;
}
}
[ComVisible(true)]
public class FileLoader : IDWriteFontFileLoader
{
public FileLoader()
{
}
public HRESULT CreateStreamFromKey([In] IntPtr fontFileReferenceKey, uint fontFileReferenceKeySize, out IDWriteFontFileStream fontFileStream)
{
fontFileStream = new FileStream(Directory.EnumerateFiles(fontDir).First());
return default;
}
}
[ComVisible(true)]
public class FileStream : IDWriteFontFileStream, IDisposable
{
FileInfo fi;
SafeHGlobalHandle mem;
public FileStream(string path)
{
fi = new FileInfo(path);
mem = new SafeHGlobalHandle(File.ReadAllBytes(path));
}
public HRESULT ReadFileFragment(out IntPtr fragmentStart, ulong fileOffset, ulong fragmentSize, [Out] out IntPtr fragmentContext)
{
fragmentContext = default;
if (fileOffset + fragmentSize >= (ulong)fi.Length)
{
fragmentStart = default;
return HRESULT.E_FAIL;
}
fragmentStart = ((IntPtr)mem).Offset((long)fileOffset);
return default;
}
public void ReleaseFileFragment([In] IntPtr fragmentContext)
{
}
public HRESULT GetFileSize(out ulong fileSize)
{
fileSize = (ulong)fi.Length;
return default;
}
public HRESULT GetLastWriteTime(out System.Runtime.InteropServices.ComTypes.FILETIME lastWriteTime)
{
lastWriteTime = fi.LastWriteTime.ToFileTimeStruct();
return default;
}
public void Dispose() => ((IDisposable)mem).Dispose();
}
[ComVisible(true)]
public class FontEnumerator : IDWriteFontFileEnumerator
{
private IEnumerator<string> enumerator;
private IDWriteFactory factory;
public FontEnumerator(IDWriteFactory fact, string path)
{
factory = fact;
enumerator = Directory.EnumerateFiles(path).GetEnumerator();
}
public HRESULT MoveNext([MarshalAs(UnmanagedType.Bool)] out bool hasCurrentFile) { hasCurrentFile = enumerator.MoveNext(); return HRESULT.S_OK; }
public HRESULT GetCurrentFontFile(out IDWriteFontFile fontFile)
{
try { fontFile = factory.CreateFontFileReference(enumerator.Current); }
catch (COMException ex) { fontFile = null; return ex.HResult; }
return default;
}
}
}
}

View File

@ -0,0 +1,83 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="16.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{AD003766-998F-4969-8632-A9CD0E3A21F8}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<AssemblyName>UnitTest.PInvoke.DirectX</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>AnyCPU</PlatformTarget>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Core\Vanara.Core.csproj">
<Project>{241f73ee-9298-45c9-b869-a045dff94c03}</Project>
<Name>Vanara.Core</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\PInvoke\Graphics\Vanara.PInvoke.Graphics.csproj">
<Project>{faf09c42-66ca-4765-910a-2a9a2ef399d0}</Project>
<Name>Vanara.PInvoke.Graphics</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\PInvoke\Shared\Vanara.PInvoke.Shared.csproj">
<Project>{a5e519e9-feba-4fe3-93a5-b8269bef72f4}</Project>
<Name>Vanara.PInvoke.Shared</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\PInvoke\User32\Vanara.PInvoke.User32.csproj">
<Project>{a6771907-addc-49fc-8444-a97aa65e77e2}</Project>
<Name>Vanara.PInvoke.User32</Name>
</ProjectReference>
<ProjectReference Include="..\..\CSharpRunner\Shared.csproj">
<Project>{a96cff10-0967-429a-8700-4a86c97c5603}</Project>
<Name>Shared</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<PackageReference Include="NUnit">
<Version>3.12.0</Version>
</PackageReference>
<PackageReference Include="NUnit3TestAdapter">
<Version>3.15.1</Version>
</PackageReference>
</ItemGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
</ItemGroup>
<ItemGroup>
<Compile Include="Direct2DTests.cs" />
<Compile Include="DirectWriteTests.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@ -225,6 +225,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CldApi", "UnitTests\PInvoke
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Vanara.PInvoke.ProjectedFSLib", "PInvoke\ProjectedFSLib\Vanara.PInvoke.ProjectedFSLib.csproj", "{30F2727D-0B8E-4364-8F0E-9EEB4CD9CB0E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Vanara.PInvoke.Graphics", "PInvoke\Graphics\Vanara.PInvoke.Graphics.csproj", "{FAF09C42-66CA-4765-910A-2A9A2EF399D0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Graphics", "UnitTests\PInvoke\Graphics\Graphics.csproj", "{AD003766-998F-4969-8632-A9CD0E3A21F8}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug (no Unit Tests)|Any CPU = Debug (no Unit Tests)|Any CPU
@ -721,6 +725,18 @@ Global
{30F2727D-0B8E-4364-8F0E-9EEB4CD9CB0E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{30F2727D-0B8E-4364-8F0E-9EEB4CD9CB0E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{30F2727D-0B8E-4364-8F0E-9EEB4CD9CB0E}.Release|Any CPU.Build.0 = Release|Any CPU
{FAF09C42-66CA-4765-910A-2A9A2EF399D0}.Debug (no Unit Tests)|Any CPU.ActiveCfg = Debug|Any CPU
{FAF09C42-66CA-4765-910A-2A9A2EF399D0}.Debug (no Unit Tests)|Any CPU.Build.0 = Debug|Any CPU
{FAF09C42-66CA-4765-910A-2A9A2EF399D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FAF09C42-66CA-4765-910A-2A9A2EF399D0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FAF09C42-66CA-4765-910A-2A9A2EF399D0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FAF09C42-66CA-4765-910A-2A9A2EF399D0}.Release|Any CPU.Build.0 = Release|Any CPU
{AD003766-998F-4969-8632-A9CD0E3A21F8}.Debug (no Unit Tests)|Any CPU.ActiveCfg = Debug|Any CPU
{AD003766-998F-4969-8632-A9CD0E3A21F8}.Debug (no Unit Tests)|Any CPU.Build.0 = Debug|Any CPU
{AD003766-998F-4969-8632-A9CD0E3A21F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AD003766-998F-4969-8632-A9CD0E3A21F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AD003766-998F-4969-8632-A9CD0E3A21F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AD003766-998F-4969-8632-A9CD0E3A21F8}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -816,6 +832,8 @@ Global
{DDFCBC19-B6CE-4DD4-A1BB-96EE86C54D93} = {212ABBD0-B724-4CFA-9D6D-E3891547FA90}
{CCEE0CAA-27BF-43B3-8609-2279BEDA3F61} = {385CAD2D-0A5E-4F80-927B-D5499D126B90}
{30F2727D-0B8E-4364-8F0E-9EEB4CD9CB0E} = {212ABBD0-B724-4CFA-9D6D-E3891547FA90}
{FAF09C42-66CA-4765-910A-2A9A2EF399D0} = {212ABBD0-B724-4CFA-9D6D-E3891547FA90}
{AD003766-998F-4969-8632-A9CD0E3A21F8} = {385CAD2D-0A5E-4F80-927B-D5499D126B90}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {543FAC75-2AF1-4EF1-9609-B242B63FEED4}