// Licensed under the Apache License, Version 2.0 // or the MIT license // , at your option. // All files in the project carrying such notice may not be copied, modified, or distributed // except according to those terms. //! Mappings for the contents of d2d1svg.h use ctypes::c_void; use shared::basetsd::UINT32; use shared::guiddef::REFIID; use shared::minwindef::{BOOL, FLOAT}; use shared::ntdef::{PCWSTR, PWSTR, WCHAR}; use shared::winerror::HRESULT; use um::d2d1::{ D2D1_CAP_STYLE_FLAT, D2D1_CAP_STYLE_ROUND, D2D1_CAP_STYLE_SQUARE, D2D1_COLOR_F, D2D1_FILL_MODE, D2D1_LINE_JOIN_BEVEL, D2D1_LINE_JOIN_MITER_OR_BEVEL, D2D1_LINE_JOIN_ROUND, D2D1_POINT_2F, D2D1_SIZE_F, ID2D1Resource, ID2D1ResourceVtbl }; use um::d2d1_1::ID2D1PathGeometry1; use um::objidlbase::IStream; ENUM!{enum D2D1_SVG_PAINT_TYPE { D2D1_SVG_PAINT_TYPE_NONE = 0, D2D1_SVG_PAINT_TYPE_COLOR = 1, D2D1_SVG_PAINT_TYPE_CURRENT_COLOR = 2, D2D1_SVG_PAINT_TYPE_URI = 3, D2D1_SVG_PAINT_TYPE_URI_NONE = 4, D2D1_SVG_PAINT_TYPE_URI_COLOR = 5, D2D1_SVG_PAINT_TYPE_URI_CURRENT_COLOR = 6, }} ENUM!{enum D2D1_SVG_LENGTH_UNITS { D2D1_SVG_LENGTH_UNITS_NUMBER = 0, D2D1_SVG_LENGTH_UNITS_PERCENTAGE = 1, }} ENUM!{enum D2D1_SVG_DISPLAY { D2D1_SVG_DISPLAY_INLINE = 0, D2D1_SVG_DISPLAY_NONE = 1, }} ENUM!{enum D2D1_SVG_VISIBILITY { D2D1_SVG_VISIBILITY_VISIBLE = 0, D2D1_SVG_VISIBILITY_HIDDEN = 1, }} ENUM!{enum D2D1_SVG_OVERFLOW { D2D1_SVG_OVERFLOW_VISIBLE = 0, D2D1_SVG_OVERFLOW_HIDDEN = 1, }} ENUM!{enum D2D1_SVG_LINE_CAP { D2D1_SVG_LINE_CAP_BUTT = D2D1_CAP_STYLE_FLAT, D2D1_SVG_LINE_CAP_SQUARE = D2D1_CAP_STYLE_SQUARE, D2D1_SVG_LINE_CAP_ROUND = D2D1_CAP_STYLE_ROUND, }} ENUM!{enum D2D1_SVG_LINE_JOIN { D2D1_SVG_LINE_JOIN_BEVEL = D2D1_LINE_JOIN_BEVEL, D2D1_SVG_LINE_JOIN_MITER = D2D1_LINE_JOIN_MITER_OR_BEVEL, D2D1_SVG_LINE_JOIN_ROUND = D2D1_LINE_JOIN_ROUND, }} ENUM!{enum D2D1_SVG_ASPECT_ALIGN { D2D1_SVG_ASPECT_ALIGN_NONE = 0, D2D1_SVG_ASPECT_ALIGN_X_MIN_Y_MIN = 1, D2D1_SVG_ASPECT_ALIGN_X_MID_Y_MIN = 2, D2D1_SVG_ASPECT_ALIGN_X_MAX_Y_MIN = 3, D2D1_SVG_ASPECT_ALIGN_X_MIN_Y_MID = 4, D2D1_SVG_ASPECT_ALIGN_X_MID_Y_MID = 5, D2D1_SVG_ASPECT_ALIGN_X_MAX_Y_MID = 6, D2D1_SVG_ASPECT_ALIGN_X_MIN_Y_MAX = 7, D2D1_SVG_ASPECT_ALIGN_X_MID_Y_MAX = 8, D2D1_SVG_ASPECT_ALIGN_X_MAX_Y_MAX = 9, }} ENUM!{enum D2D1_SVG_ASPECT_SCALING { D2D1_SVG_ASPECT_SCALING_MEET = 0, D2D1_SVG_ASPECT_SCALING_SLICE = 1, }} ENUM!{enum D2D1_SVG_PATH_COMMAND { D2D1_SVG_PATH_COMMAND_CLOSE_PATH = 0, D2D1_SVG_PATH_COMMAND_MOVE_ABSOLUTE = 1, D2D1_SVG_PATH_COMMAND_MOVE_RELATIVE = 2, D2D1_SVG_PATH_COMMAND_LINE_ABSOLUTE = 3, D2D1_SVG_PATH_COMMAND_LINE_RELATIVE = 4, D2D1_SVG_PATH_COMMAND_CUBIC_ABSOLUTE = 5, D2D1_SVG_PATH_COMMAND_CUBIC_RELATIVE = 6, D2D1_SVG_PATH_COMMAND_QUADRADIC_ABSOLUTE = 7, D2D1_SVG_PATH_COMMAND_QUADRADIC_RELATIVE = 8, D2D1_SVG_PATH_COMMAND_ARC_ABSOLUTE = 9, D2D1_SVG_PATH_COMMAND_ARC_RELATIVE = 10, D2D1_SVG_PATH_COMMAND_HORIZONTAL_ABSOLUTE = 11, D2D1_SVG_PATH_COMMAND_HORIZONTAL_RELATIVE = 12, D2D1_SVG_PATH_COMMAND_VERTICAL_ABSOLUTE = 13, D2D1_SVG_PATH_COMMAND_VERTICAL_RELATIVE = 14, D2D1_SVG_PATH_COMMAND_CUBIC_SMOOTH_ABSOLUTE = 15, D2D1_SVG_PATH_COMMAND_CUBIC_SMOOTH_RELATIVE = 16, D2D1_SVG_PATH_COMMAND_QUADRADIC_SMOOTH_ABSOLUTE = 17, D2D1_SVG_PATH_COMMAND_QUADRADIC_SMOOTH_RELATIVE = 18, }} ENUM!{enum D2D1_SVG_UNIT_TYPE { D2D1_SVG_UNIT_TYPE_USER_SPACE_ON_USE = 0, D2D1_SVG_UNIT_TYPE_OBJECT_BOUNDING_BOX = 1, }} ENUM!{enum D2D1_SVG_ATTRIBUTE_STRING_TYPE { D2D1_SVG_ATTRIBUTE_STRING_TYPE_SVG = 0, D2D1_SVG_ATTRIBUTE_STRING_TYPE_ID = 1, }} ENUM!{enum D2D1_SVG_ATTRIBUTE_POD_TYPE { D2D1_SVG_ATTRIBUTE_POD_TYPE_FLOAT = 0, D2D1_SVG_ATTRIBUTE_POD_TYPE_COLOR = 1, D2D1_SVG_ATTRIBUTE_POD_TYPE_FILL_MODE = 2, D2D1_SVG_ATTRIBUTE_POD_TYPE_DISPLAY = 3, D2D1_SVG_ATTRIBUTE_POD_TYPE_OVERFLOW = 4, D2D1_SVG_ATTRIBUTE_POD_TYPE_LINE_CAP = 5, D2D1_SVG_ATTRIBUTE_POD_TYPE_LINE_JOIN = 6, D2D1_SVG_ATTRIBUTE_POD_TYPE_VISIBILITY = 7, D2D1_SVG_ATTRIBUTE_POD_TYPE_MATRIX = 8, D2D1_SVG_ATTRIBUTE_POD_TYPE_UNIT_TYPE = 9, D2D1_SVG_ATTRIBUTE_POD_TYPE_EXTEND_MODE = 10, D2D1_SVG_ATTRIBUTE_POD_TYPE_PRESERVE_ASPECT_RATIO = 11, D2D1_SVG_ATTRIBUTE_POD_TYPE_VIEWBOX = 12, D2D1_SVG_ATTRIBUTE_POD_TYPE_LENGTH = 13, }} STRUCT!{struct D2D1_SVG_LENGTH { value: FLOAT, units: D2D1_SVG_LENGTH_UNITS, }} STRUCT!{struct D2D1_SVG_PRESERVE_ASPECT_RATIO { defer: BOOL, align: D2D1_SVG_ASPECT_ALIGN, meetOrSlice: D2D1_SVG_ASPECT_SCALING, }} STRUCT!{struct D2D1_SVG_VIEWBOX { x: FLOAT, y: FLOAT, width: FLOAT, height: FLOAT, }} DEFINE_GUID!{IID_ID2D1SvgAttribute, 0xc9cdb0dd, 0xf8c9, 0x4e70, 0xb7, 0xc2, 0x30, 0x1c, 0x80, 0x29, 0x2c, 0x5e} DEFINE_GUID!{IID_ID2D1SvgPaint, 0xd59bab0a, 0x68a2, 0x455b, 0xa5, 0xdc, 0x9e, 0xb2, 0x85, 0x4e, 0x24, 0x90} DEFINE_GUID!{IID_ID2D1SvgStrokeDashArray, 0xf1c0ca52, 0x92a3, 0x4f00, 0xb4, 0xce, 0xf3, 0x56, 0x91, 0xef, 0xd9, 0xd9} DEFINE_GUID!{IID_ID2D1SvgPointCollection, 0x9dbe4c0d, 0x3572, 0x4dd9, 0x98, 0x25, 0x55, 0x30, 0x81, 0x3b, 0xb7, 0x12} DEFINE_GUID!{IID_ID2D1SvgPathData, 0xc095e4f4, 0xbb98, 0x43d6, 0x97, 0x45, 0x4d, 0x1b, 0x84, 0xec, 0x98, 0x88} DEFINE_GUID!{IID_ID2D1SvgElement, 0xac7b67a6, 0x183e, 0x49c1, 0xa8, 0x23, 0x0e, 0xbe, 0x40, 0xb0, 0xdb, 0x29} DEFINE_GUID!{IID_ID2D1SvgDocument, 0x86b88e4d, 0xafa4, 0x4d7b, 0x88, 0xe4, 0x68, 0xa5, 0x1c, 0x4a, 0x0a, 0xec} RIDL!{#[uuid(0xc9cdb0dd, 0xf8c9, 0x4e70, 0xb7, 0xc2, 0x30, 0x1c, 0x80, 0x29, 0x2c, 0x5e)] interface ID2D1SvgAttribute(ID2D1SvgAttributeVtbl): ID2D1Resource(ID2D1ResourceVtbl) { fn GetElement( element: *mut *mut ID2D1SvgElement, ) -> (), fn Clone( attribute: *mut *mut ID2D1SvgAttribute, ) -> HRESULT, }} RIDL!{#[uuid(0xd59bab0a, 0x68a2, 0x455b, 0xa5, 0xdc, 0x9e, 0xb2, 0x85, 0x4e, 0x24, 0x90)] interface ID2D1SvgPaint(ID2D1SvgPaintVtbl): ID2D1SvgAttribute(ID2D1SvgAttributeVtbl) { fn SetPaintType( paintType: D2D1_SVG_PAINT_TYPE, ) -> HRESULT, fn GetPaintType() -> D2D1_SVG_PAINT_TYPE, fn SetColor( color: D2D1_COLOR_F, ) -> HRESULT, fn GetColor( color: *mut D2D1_COLOR_F, ) -> (), fn SetId( id: PCWSTR, ) -> HRESULT, fn GetId( id: PWSTR, idCount: UINT32, ) -> HRESULT, fn GetIdLength() -> UINT32, }} RIDL!{#[uuid(0xf1c0ca52, 0x92a3, 0x4f00, 0xb4, 0xce, 0xf3, 0x56, 0x91, 0xef, 0xd9, 0xd9)] interface ID2D1SvgStrokeDashArray(ID2D1SvgStrokeDashArrayVtbl): ID2D1SvgAttribute(ID2D1SvgAttributeVtbl) { fn RemoveDashesAtEnd( dashesCount: UINT32, ) -> HRESULT, fn UpdateDashes_1( dashes: *const D2D1_SVG_LENGTH, dashesCount: UINT32, startIndex: UINT32, ) -> HRESULT, fn UpdateDashes_2( dashes: *const FLOAT, dashesCount: UINT32, startIndex: UINT32, ) -> HRESULT, fn GetDashes_1( dashes: *mut D2D1_SVG_LENGTH, dashesCount: UINT32, startIndex: UINT32, ) -> HRESULT, fn GetDashes_2( dashes: *mut FLOAT, dashesCount: UINT32, startIndex: UINT32, ) -> HRESULT, fn GetDashesCount() -> UINT32, }} RIDL!{#[uuid(0x9dbe4c0d, 0x3572, 0x4dd9, 0x98, 0x25, 0x55, 0x30, 0x81, 0x3b, 0xb7, 0x12)] interface ID2D1SvgPointCollection(ID2D1SvgPointCollectionVtbl): ID2D1SvgAttribute(ID2D1SvgAttributeVtbl) { fn RemovePointsAtEnd( pointsCount: UINT32, ) -> HRESULT, fn UpdatePoints( points: *const D2D1_POINT_2F, pointsCount: UINT32, startIndex: UINT32, ) -> HRESULT, fn GetPoints( points: *mut D2D1_POINT_2F, pointsCount: UINT32, startIndex: UINT32, ) -> HRESULT, fn GetPointsCount() -> UINT32, }} RIDL!{#[uuid(0xc095e4f4, 0xbb98, 0x43d6, 0x97, 0x45, 0x4d, 0x1b, 0x84, 0xec, 0x98, 0x88)] interface ID2D1SvgPathData(ID2D1SvgPathDataVtbl): ID2D1SvgAttribute(ID2D1SvgAttributeVtbl) { fn RemoveSegmentDataAtEnd( dataCount: UINT32, ) -> HRESULT, fn UpdateSegmentData( data: *const FLOAT, dataCount: UINT32, startIndex: UINT32, ) -> HRESULT, fn GetSegmentData( data: *mut FLOAT, dataCount: UINT32, startIndex: UINT32, ) -> HRESULT, fn GetSegmentDataCount() -> UINT32, fn RemoveCommandsAtEnd( commandsCount: UINT32, ) -> HRESULT, fn UpdateCommands( commands: *const D2D1_SVG_PATH_COMMAND, commandsCount: UINT32, startIndex: UINT32, ) -> HRESULT, fn GetCommands( commands: *mut D2D1_SVG_PATH_COMMAND, commandsCount: UINT32, startIndex: UINT32, ) -> HRESULT, fn GetCommandsCount() -> UINT32, fn CreatePathGeometry( fillMode: D2D1_FILL_MODE, pathGeometry: *mut *mut ID2D1PathGeometry1, ) -> HRESULT, }} RIDL!{#[uuid(0xac7b67a6, 0x183e, 0x49c1, 0xa8, 0x23, 0x0e, 0xbe, 0x40, 0xb0, 0xdb, 0x29)] interface ID2D1SvgElement(ID2D1SvgElementVtbl): ID2D1Resource(ID2D1ResourceVtbl) { fn GetDocument( document: *mut *mut ID2D1SvgDocument, ) -> (), fn GetTagName( name: PWSTR, nameCount: UINT32, ) -> HRESULT, fn GetTagNameLength() -> UINT32, fn IsTextContent() -> BOOL, fn GetParent( parent: *mut *mut ID2D1SvgElement, ) -> (), fn HasChildren() -> BOOL, fn GetFirstChild( child: *mut *mut ID2D1SvgElement, ) -> (), fn GetLastChild( child: *mut *mut ID2D1SvgElement, ) -> (), fn GetPreviousChild( referenceChild: *mut ID2D1SvgElement, previousChild: *mut *mut ID2D1SvgElement, ) -> HRESULT, fn GetNextChild( referenceChild: *mut ID2D1SvgElement, nextChild: *mut *mut ID2D1SvgElement, ) -> HRESULT, fn InsertChildBefore( newChild: *mut ID2D1SvgElement, referenceChild: *mut ID2D1SvgElement, ) -> HRESULT, fn AppendChild( newChild: *mut ID2D1SvgElement, ) -> HRESULT, fn ReplaceChild( newChild: *mut ID2D1SvgElement, oldChild: *mut ID2D1SvgElement, ) -> HRESULT, fn RemoveChild( oldChild: *mut ID2D1SvgElement, ) -> HRESULT, fn IsAttributeSpecified( name: PCWSTR, inherited: *mut BOOL, ) -> BOOL, fn GetSpecifiedAttributeCount() -> UINT32, fn GetSpecifiedAttributeName( index: UINT32, name: PWSTR, nameCount: UINT32, inherited: *mut BOOL, ) -> HRESULT, fn GetSpecifiedAttributeNameLength( index: UINT32, nameLength: *mut UINT32, inherited: *mut BOOL, ) -> HRESULT, fn RemoveAttribute( name: PCWSTR, ) -> HRESULT, fn SetTextValue( name: *const WCHAR, nameCount: UINT32, ) -> HRESULT, fn GetTextValue( name: PWSTR, nameCount: UINT32, ) -> HRESULT, fn GetTextValueLength() -> UINT32, fn SetAttributeValue_1( name: PCWSTR, value: *mut ID2D1SvgAttribute, ) -> HRESULT, fn SetAttributeValue_2( name: PCWSTR, type_: D2D1_SVG_ATTRIBUTE_POD_TYPE, value: *const c_void, valueSizeInBytes: UINT32, ) -> HRESULT, fn SetAttributeValue_3( name: PCWSTR, type_: D2D1_SVG_ATTRIBUTE_STRING_TYPE, value: PCWSTR, ) -> HRESULT, fn GetAttributeValue_1( name: PCWSTR, riid: REFIID, value: *mut *mut c_void, ) -> HRESULT, fn GetAttributeValue_2( name: PCWSTR, type_: D2D1_SVG_ATTRIBUTE_POD_TYPE, value: *mut c_void, valueSizeInBytes: UINT32, ) -> HRESULT, fn GetAttributeValue_3( name: PCWSTR, type_: D2D1_SVG_ATTRIBUTE_STRING_TYPE, value: PWSTR, valueCount: UINT32, ) -> HRESULT, fn GetAttributeValueLength( name: PCWSTR, type_: D2D1_SVG_ATTRIBUTE_STRING_TYPE, valueLength: *mut UINT32, ) -> HRESULT, }} RIDL!{#[uuid(0x86b88e4d, 0xafa4, 0x4d7b, 0x88, 0xe4, 0x68, 0xa5, 0x1c, 0x4a, 0x0a, 0xec)] interface ID2D1SvgDocument(ID2D1SvgDocumentVtbl): ID2D1Resource(ID2D1ResourceVtbl) { fn SetViewportSize( viewportSize: D2D1_SIZE_F, ) -> HRESULT, fn GetViewportSize() -> D2D1_SIZE_F, fn SetRoot( root: *mut ID2D1SvgElement, ) -> HRESULT, fn GetRoot( root: *mut *mut ID2D1SvgElement, ) -> (), fn FindElementById( id: PCWSTR, svgElement: *mut *mut ID2D1SvgElement, ) -> HRESULT, fn Serialize( outputXmlStream: *mut IStream, subtree: *mut ID2D1SvgElement, ) -> HRESULT, fn Deserialize( inputXmlStream: *mut IStream, subtree: *mut *mut ID2D1SvgElement, ) -> HRESULT, fn CreatePaint( paintType: D2D1_SVG_PAINT_TYPE, color: *const D2D1_COLOR_F, id: PCWSTR, paint: *mut *mut ID2D1SvgPaint, ) -> HRESULT, fn CreateStrokeDashArray( dashes: *const D2D1_SVG_LENGTH, dashesCount: UINT32, strokeDashArray: *mut *mut ID2D1SvgStrokeDashArray, ) -> HRESULT, fn CreatePointCollection( points: *const D2D1_POINT_2F, pountsCount: UINT32, pointCollection: *mut ID2D1SvgPointCollection, ) -> HRESULT, fn CreatePathData( segmentData: *const FLOAT, segmentDataCount: UINT32, commands: *const D2D1_SVG_PATH_COMMAND, commandsCount: UINT32, pathData: *mut *mut ID2D1SvgPathData, ) -> HRESULT, }}