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