347 lines
9.3 KiB
Text
347 lines
9.3 KiB
Text
/*
|
|
* Copyright (C) 2023 Biswapriyo Nath
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
|
*/
|
|
|
|
import "oaidl.idl";
|
|
import "ocidl.idl";
|
|
import "inspectable.idl";
|
|
import "dxgi1_2.idl";
|
|
|
|
cpp_quote("#ifndef E_NOTFOUND")
|
|
cpp_quote("#define E_NOTFOUND HRESULT_FROM_WIN32(ERROR_NOT_FOUND)")
|
|
cpp_quote("#endif")
|
|
cpp_quote("#define E_UNKNOWNTYPE _HRESULT_TYPEDEF_(0x802b0028)")
|
|
cpp_quote("HRESULT WINAPI InitializeXamlDiagnostic(PCWSTR, DWORD, PCWSTR, PCWSTR, CLSID);")
|
|
cpp_quote("HRESULT WINAPI InitializeXamlDiagnosticsEx(PCWSTR, DWORD, PCWSTR, PCWSTR, CLSID, PCWSTR);")
|
|
|
|
typedef unsigned hyper InstanceHandle;
|
|
|
|
typedef enum VisualMutationType
|
|
{
|
|
Add,
|
|
Remove
|
|
} VisualMutationType;
|
|
|
|
typedef enum BaseValueSource
|
|
{
|
|
BaseValueSourceUnknown,
|
|
BaseValueSourceDefault,
|
|
BaseValueSourceBuiltInStyle,
|
|
BaseValueSourceStyle,
|
|
BaseValueSourceLocal,
|
|
Inherited,
|
|
DefaultStyleTrigger,
|
|
TemplateTrigger,
|
|
StyleTrigger,
|
|
ImplicitStyleReference,
|
|
ParentTemplate,
|
|
ParentTemplateTrigger,
|
|
Animation,
|
|
Coercion,
|
|
BaseValueSourceVisualState
|
|
} BaseValueSource;
|
|
|
|
typedef struct SourceInfo
|
|
{
|
|
BSTR FileName;
|
|
unsigned int LineNumber;
|
|
unsigned int ColumnNumber;
|
|
unsigned int CharPosition;
|
|
BSTR Hash;
|
|
} SourceInfo;
|
|
|
|
typedef struct ParentChildRelation
|
|
{
|
|
InstanceHandle Parent;
|
|
InstanceHandle Child;
|
|
unsigned int ChildIndex;
|
|
} ParentChildRelation;
|
|
|
|
typedef struct VisualElement
|
|
{
|
|
InstanceHandle Handle;
|
|
SourceInfo SrcInfo;
|
|
BSTR Type;
|
|
BSTR Name;
|
|
unsigned int NumChildren;
|
|
} VisualElement;
|
|
|
|
typedef struct PropertyChainSource
|
|
{
|
|
InstanceHandle Handle;
|
|
BSTR TargetType;
|
|
BSTR Name;
|
|
BaseValueSource Source;
|
|
SourceInfo SrcInfo;
|
|
} PropertyChainSource;
|
|
|
|
typedef enum MetadataBit
|
|
{
|
|
None = 0x0,
|
|
IsValueHandle = 0x1,
|
|
IsPropertyReadOnly = 0x2,
|
|
IsValueCollection = 0x4,
|
|
IsValueCollectionReadOnly = 0x8,
|
|
IsValueBindingExpression = 0x10,
|
|
IsValueNull = 0x20,
|
|
IsValueHandleAndEvaluatedValue = 0x40,
|
|
} MetadataBit;
|
|
|
|
typedef struct PropertyChainValue
|
|
{
|
|
unsigned int Index;
|
|
BSTR Type;
|
|
BSTR DeclaringType;
|
|
BSTR ValueType;
|
|
BSTR ItemType;
|
|
BSTR Value;
|
|
BOOL Overridden;
|
|
hyper MetadataBits;
|
|
BSTR PropertyName;
|
|
unsigned int PropertyChainIndex;
|
|
} PropertyChainValue;
|
|
|
|
typedef struct EnumType
|
|
{
|
|
BSTR Name;
|
|
SAFEARRAY(int) ValueInts;
|
|
SAFEARRAY(BSTR) ValueStrings;
|
|
} EnumType;
|
|
|
|
typedef struct CollectionElementValue
|
|
{
|
|
unsigned int Index;
|
|
BSTR ValueType;
|
|
BSTR Value;
|
|
hyper MetadataBits;
|
|
} CollectionElementValue;
|
|
|
|
typedef enum RenderTargetBitmapOptions
|
|
{
|
|
RenderTarget,
|
|
RenderTargetAndChildren
|
|
} RenderTargetBitmapOptions;
|
|
|
|
typedef struct BitmapDescription
|
|
{
|
|
unsigned int Width;
|
|
unsigned int Height;
|
|
DXGI_FORMAT Format;
|
|
DXGI_ALPHA_MODE AlphaMode;
|
|
} BitmapDescription;
|
|
|
|
typedef enum ResourceType
|
|
{
|
|
ResourceTypeStatic,
|
|
ResourceTypeTheme
|
|
} ResourceType;
|
|
|
|
typedef enum VisualElementState
|
|
{
|
|
ErrorResolved,
|
|
ErrorResourceNotFound,
|
|
ErrorInvalidResource,
|
|
} VisualElementState;
|
|
|
|
[
|
|
object,
|
|
uuid(aa7a8931-80e4-4fec-8f3b-553f87b4966e)
|
|
]
|
|
interface IVisualTreeServiceCallback : IUnknown
|
|
{
|
|
HRESULT OnVisualTreeChange(
|
|
[in] ParentChildRelation relation,
|
|
[in] VisualElement element,
|
|
[in] VisualMutationType mutation_type);
|
|
}
|
|
|
|
[
|
|
object,
|
|
uuid(bad9eb88-ae77-4397-b948-5fa2db0a19ea)
|
|
]
|
|
interface IVisualTreeServiceCallback2 : IVisualTreeServiceCallback
|
|
{
|
|
HRESULT OnElementStateChanged(
|
|
[in] InstanceHandle element,
|
|
[in] VisualElementState element_state,
|
|
[in] LPCWSTR context);
|
|
}
|
|
|
|
[
|
|
object,
|
|
uuid(a593b11a-d17f-48bb-8f66-83910731c8a5)
|
|
]
|
|
interface IVisualTreeService : IUnknown
|
|
{
|
|
HRESULT AdviseVisualTreeChange([in] IVisualTreeServiceCallback *callback);
|
|
|
|
HRESULT UnadviseVisualTreeChange([in] IVisualTreeServiceCallback *callback);
|
|
|
|
HRESULT GetEnums(
|
|
[out] unsigned int *count,
|
|
[out, size_is(, *count)] EnumType **enums);
|
|
|
|
HRESULT CreateInstance(
|
|
[in] BSTR type_name,
|
|
[in] BSTR value,
|
|
[out, retval] InstanceHandle *instance_handle);
|
|
|
|
HRESULT GetPropertyValuesChain(
|
|
[in] InstanceHandle instance_handle,
|
|
[out] unsigned int *source_count,
|
|
[out, size_is(, *source_count)] PropertyChainSource **property_sources,
|
|
[out] unsigned int *property_count,
|
|
[out, size_is(, *property_count)] PropertyChainValue **property_values);
|
|
|
|
HRESULT SetProperty(
|
|
[in] InstanceHandle instance_handle,
|
|
[in] InstanceHandle value,
|
|
[in] unsigned int property_index);
|
|
|
|
HRESULT ClearProperty(
|
|
[in] InstanceHandle instance_handle,
|
|
[in] unsigned int property_index);
|
|
|
|
HRESULT GetCollectionCount(
|
|
[in] InstanceHandle instance_handle,
|
|
[out] unsigned int *collection_size);
|
|
|
|
HRESULT GetCollectionElements(
|
|
[in] InstanceHandle instance_handle,
|
|
[in] unsigned int start_index,
|
|
[in, out] unsigned int *element_count,
|
|
[out, size_is(, *element_count)] CollectionElementValue **element_values);
|
|
|
|
HRESULT AddChild(
|
|
[in] InstanceHandle parent,
|
|
[in] InstanceHandle child,
|
|
[in] unsigned int index);
|
|
|
|
HRESULT RemoveChild(
|
|
[in] InstanceHandle parent,
|
|
[in] unsigned int index);
|
|
|
|
HRESULT ClearChildren([in] InstanceHandle parent);
|
|
}
|
|
|
|
[
|
|
object,
|
|
uuid(18c9e2b6-3f43-4116-9f2b-ff935d7770d2)
|
|
]
|
|
interface IXamlDiagnostics : IUnknown
|
|
{
|
|
HRESULT GetDispatcher([out, retval] IInspectable **dispatcher);
|
|
|
|
HRESULT GetUiLayer([out, retval] IInspectable **layer);
|
|
|
|
HRESULT GetApplication([out, retval] IInspectable **application);
|
|
|
|
HRESULT GetIInspectableFromHandle(
|
|
[in] InstanceHandle instance_handle,
|
|
[out, retval] IInspectable **instance);
|
|
|
|
HRESULT GetHandleFromIInspectable(
|
|
[in] IInspectable *instance,
|
|
[out, retval] InstanceHandle *handle);
|
|
|
|
HRESULT HitTest(
|
|
[in] RECT rect,
|
|
[out] unsigned int *count,
|
|
[out, size_is(, *count)] InstanceHandle **instance_handles);
|
|
|
|
HRESULT RegisterInstance(
|
|
[in] IInspectable *instance,
|
|
[out, retval] InstanceHandle *instance_handle);
|
|
|
|
HRESULT GetInitializationData([out, retval] BSTR *initialization_data);
|
|
}
|
|
|
|
[
|
|
object,
|
|
uuid(d1a34ef2-cad8-4635-a3d2-fcda8d3f3caf)
|
|
]
|
|
interface IBitmapData : IUnknown
|
|
{
|
|
HRESULT CopyBytesTo(
|
|
[in] unsigned int source_offset_in_bytes,
|
|
[in] unsigned int max_bytes_to_copy,
|
|
[out, size_is(max_bytes_to_copy)] byte *bytes,
|
|
[out] unsigned int *number_of_bytes_copied);
|
|
|
|
HRESULT GetStride([out] unsigned int *stride);
|
|
|
|
HRESULT GetBitmapDescription([out] BitmapDescription *bitmap_description);
|
|
|
|
HRESULT GetSourceBitmapDescription([out] BitmapDescription *bitmap_description);
|
|
}
|
|
|
|
[
|
|
object,
|
|
uuid(130f5136-ec43-4f61-89c7-9801a36d2e95)
|
|
]
|
|
interface IVisualTreeService2 : IVisualTreeService
|
|
{
|
|
HRESULT GetPropertyIndex(
|
|
[in] InstanceHandle object,
|
|
[in] LPCWSTR property_name,
|
|
[out] unsigned int *property_index);
|
|
|
|
HRESULT GetProperty(
|
|
[in] InstanceHandle object,
|
|
[in] unsigned int property_index,
|
|
[out] InstanceHandle *value);
|
|
|
|
HRESULT ReplaceResource(
|
|
[in] InstanceHandle resource_dictionary,
|
|
[in] InstanceHandle key,
|
|
[in] InstanceHandle new_value);
|
|
|
|
HRESULT RenderTargetBitmap(
|
|
[in] InstanceHandle handle,
|
|
[in] RenderTargetBitmapOptions options,
|
|
[in] unsigned int max_pixel_width,
|
|
[in] unsigned int max_pixel_height,
|
|
[out] IBitmapData **bitmap_data);
|
|
}
|
|
|
|
[
|
|
object,
|
|
uuid(0e79c6e0-85a0-4be8-b41a-655cf1fd19bd)
|
|
]
|
|
interface IVisualTreeService3 : IVisualTreeService2
|
|
{
|
|
HRESULT ResolveResource(
|
|
[in] InstanceHandle resource_context,
|
|
[in] LPCWSTR resource_name,
|
|
[in] ResourceType resource_type,
|
|
[in] unsigned int property_index);
|
|
|
|
HRESULT GetDictionaryItem(
|
|
[in] InstanceHandle dictionary_handle,
|
|
[in] LPCWSTR resource_name,
|
|
[in] BOOL resource_is_implicit_style,
|
|
[out] InstanceHandle *resource_handle);
|
|
|
|
HRESULT AddDictionaryItem(
|
|
[in] InstanceHandle dictionary_handle,
|
|
[in] InstanceHandle resource_key,
|
|
[in] InstanceHandle resource_handle);
|
|
|
|
HRESULT RemoveDictionaryItem(
|
|
[in] InstanceHandle dictionary_handle,
|
|
[in] InstanceHandle resource_key);
|
|
}
|