Hello,
As we are working on this API, we noticed that the implemented methods ID2D1SvgElement API (d2d1svg.h) are in the wrong sequence.
The right sequence of the methods, leaving out the comment and inline methods should be:
interface DX_DECLARE_INTERFACE("ac7b67a6-183e-49c1-a823-0ebe40b0db29") ID2D1SvgElement : public ID2D1Resource
{
STDMETHOD_(void, GetDocument)(
_Outptr_result_maybenull_ ID2D1SvgDocument **document
) PURE;
STDMETHOD(GetTagName)(
_Out_writes_(nameCount) PWSTR name,
UINT32 nameCount
) PURE;
STDMETHOD_(UINT32, GetTagNameLength)(
) PURE;
STDMETHOD_(BOOL, IsTextContent)(
) PURE;
STDMETHOD_(void, GetParent)(
_Outptr_result_maybenull_ ID2D1SvgElement **parent
) PURE;
STDMETHOD_(BOOL, HasChildren)(
) PURE;
STDMETHOD_(void, GetFirstChild)(
_Outptr_result_maybenull_ ID2D1SvgElement **child
) PURE;
STDMETHOD_(void, GetLastChild)(
_Outptr_result_maybenull_ ID2D1SvgElement **child
) PURE;
STDMETHOD(GetPreviousChild)(
_In_ ID2D1SvgElement *referenceChild,
_COM_Outptr_result_maybenull_ ID2D1SvgElement **previousChild
) PURE;
STDMETHOD(GetNextChild)(
_In_ ID2D1SvgElement *referenceChild,
_COM_Outptr_result_maybenull_ ID2D1SvgElement **nextChild
) PURE;
STDMETHOD(InsertChildBefore)(
_In_ ID2D1SvgElement *newChild,
_In_opt_ ID2D1SvgElement *referenceChild = NULL
) PURE;
STDMETHOD(AppendChild)(
_In_ ID2D1SvgElement *newChild
) PURE;
STDMETHOD(ReplaceChild)(
_In_ ID2D1SvgElement *newChild,
_In_ ID2D1SvgElement *oldChild
) PURE;
STDMETHOD(RemoveChild)(
_In_ ID2D1SvgElement *oldChild
) PURE;
STDMETHOD(CreateChild)(
_In_ PCWSTR tagName,
_COM_Outptr_ ID2D1SvgElement **newChild
) PURE;
STDMETHOD_(BOOL, IsAttributeSpecified)(
_In_ PCWSTR name,
_Out_opt_ BOOL *inherited = NULL
) PURE;
STDMETHOD_(UINT32, GetSpecifiedAttributeCount)(
) PURE;
STDMETHOD(GetSpecifiedAttributeName)(
UINT32 index,
_Out_writes_(nameCount) PWSTR name,
UINT32 nameCount,
_Out_opt_ BOOL *inherited = NULL
) PURE;
STDMETHOD(GetSpecifiedAttributeNameLength)(
UINT32 index,
_Out_ UINT32 *nameLength,
_Out_opt_ BOOL *inherited = NULL
) PURE;
STDMETHOD(RemoveAttribute)(
_In_ PCWSTR name
) PURE;
STDMETHOD(SetTextValue)(
_In_reads_(nameCount) CONST WCHAR *name,
UINT32 nameCount
) PURE;
STDMETHOD(GetTextValue)(
_Out_writes_(nameCount) PWSTR name,
UINT32 nameCount
) PURE;
STDMETHOD_(UINT32, GetTextValueLength)(
) PURE;
/* this section should be in this sequence /*
STDMETHOD(SetAttributeValue)(
_In_ PCWSTR name,
_In_ ID2D1SvgAttribute *value
) PURE;
STDMETHOD(SetAttributeValue)(
_In_ PCWSTR name,
D2D1_SVG_ATTRIBUTE_POD_TYPE type,
_In_reads_bytes_(valueSizeInBytes) CONST void *value,
UINT32 valueSizeInBytes
) PURE;
STDMETHOD(SetAttributeValue)(
_In_ PCWSTR name,
D2D1_SVG_ATTRIBUTE_STRING_TYPE type,
_In_ PCWSTR value
) PURE;
STDMETHOD(GetAttributeValue)(
_In_ PCWSTR name,
_In_ REFIID riid,
_COM_Outptr_result_maybenull_ void **value
) PURE;
STDMETHOD(GetAttributeValue)(
_In_ PCWSTR name,
D2D1_SVG_ATTRIBUTE_POD_TYPE type,
_Out_writes_bytes_(valueSizeInBytes) void *value,
UINT32 valueSizeInBytes
) PURE;
STDMETHOD(GetAttributeValue)(
_In_ PCWSTR name,
D2D1_SVG_ATTRIBUTE_STRING_TYPE type,
_Out_writes_(valueCount) PWSTR value,
UINT32 valueCount
) PURE;
STDMETHOD(GetAttributeValueLength)(
_In_ PCWSTR name,
D2D1_SVG_ATTRIBUTE_STRING_TYPE type,
_Out_ UINT32 *valueLength
) PURE;
}; // interface ID2D1SvgElement