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