/* * 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); }