Revision control
Copy as Markdown
Other Tools
// Licensed under the Apache License, Version 2.0
// 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,
}}