// Filter for windows-composition's bindings (Windows.UI.Composition, the SYSTEM
// stack). tool-composition generates two modules from this single filter:
//
//   * bindings.rs        - the system stack, verbatim from this filter.
//   * bindings_lifted.rs - the lifted Microsoft.UI.Composition stack, derived by
//                          dropping every `// region: system-only` block and
//                          rewriting the Composition, DirectX, and native interop
//                          names to their Microsoft equivalents.
//
// The lifted build also reads the interop metadata generated from interop.rdl.
// One filter defines both stacks; the wrapper source (visual.rs, shape.rs, ...)
// is compiled against whichever module the crate's features select (see
// docs/crates/windows-composition.md). Prune or extend the safe surface by
// editing this file, then re-run cargo run -p tool-composition.
//
// The system stack - unlike lifted Microsoft.UI.Composition - can host a visual
// tree directly in an HWND via ICompositorDesktopInterop::CreateDesktopWindowTarget,
// with no WinUI / Windows App SDK dependency. Those standalone-hosting entries are
// marked `// region: system-only` and excluded from the lifted surface.

Windows.UI.Composition.Compositor
// region: system-only
// Standalone activation of a compositor. Lifted composition has no standalone
// activation; a reactor app obtains its compositor from the host element.
Windows.UI.Composition.Compositor::CreateInstance
// endregion
Windows.UI.Composition.ICompositor::{CreateContainerVisual, CreateSpriteVisual, CreateColorBrushWithColor, CreateScopedBatch, CreateScalarKeyFrameAnimation, CreateVector3KeyFrameAnimation, CreateLinearEasingFunction, CreateCubicBezierEasingFunction}
Windows.UI.Composition.ICompositor2::{CreateAnimationGroup, CreateNineGridBrush, CreateImplicitAnimationCollection}
Windows.UI.Composition.ICompositor5::{CreateShapeVisual, CreateSpriteShapeWithGeometry, CreateContainerShape, CreateEllipseGeometry, CreateRoundedRectangleGeometry}

Windows.UI.Composition.CompositionObject
Windows.UI.Composition.ICompositionObject::{get_Compositor, StartAnimation}
Windows.UI.Composition.ICompositionObject2::{put_ImplicitAnimations}

// region: system-only
// A dispatcher queue must exist on the thread before the compositor is created.
// Lifted composition runs on the reactor/WinUI dispatcher, so this is not part
// of the lifted surface.
Windows.System.DispatcherQueueController
Windows.Win32.CreateDispatcherQueueController
Windows.Win32.DISPATCHERQUEUE_THREAD_APARTMENTTYPE::{DQTAT_COM_ASTA}
Windows.Win32.DISPATCHERQUEUE_THREAD_TYPE::{DQTYPE_THREAD_CURRENT}
Windows.Win32.DispatcherQueueOptions
// endregion

Windows.UI.Composition.Visual
Windows.UI.Composition.IVisual::{put_Offset, get_Offset, put_Size, get_Size, put_Opacity, get_Opacity, put_IsVisible, get_IsVisible, put_AnchorPoint, put_CenterPoint, put_Scale, get_Scale, put_BorderMode, get_Parent}
Windows.UI.Composition.IVisual2::{put_RelativeSizeAdjustment, put_RelativeOffsetAdjustment, put_ParentForTransform}
Windows.UI.Composition.CompositionBorderMode

Windows.UI.Composition.ContainerVisual
Windows.UI.Composition.IContainerVisual::{get_Children}

Windows.UI.Composition.VisualCollection
Windows.UI.Composition.IVisualCollection::{get_Count, InsertAtTop, InsertAtBottom, Remove, RemoveAll}

Windows.UI.Composition.SpriteVisual
Windows.UI.Composition.ISpriteVisual::{put_Brush}

Windows.UI.Composition.CompositionBrush
Windows.UI.Composition.CompositionColorBrush
Windows.UI.Composition.ICompositionColorBrush::{put_Color, get_Color}

// Nine-grid brush: a stretchable border used for the tile-selection highlight.
Windows.UI.Composition.CompositionNineGridBrush
Windows.UI.Composition.ICompositionNineGridBrush::{SetInsetsWithValues, put_IsCenterHollow, put_Source}

// Shapes: composition-drawn geometry used to render the neighbor-count dots.
Windows.UI.Composition.ShapeVisual
Windows.UI.Composition.IShapeVisual::{get_Shapes}
Windows.UI.Composition.CompositionShape
Windows.UI.Composition.CompositionShapeCollection
Windows.UI.Composition.ICompositionShape::{put_Offset}
Windows.UI.Composition.CompositionSpriteShape
Windows.UI.Composition.ICompositionSpriteShape::{put_FillBrush}
Windows.UI.Composition.CompositionContainerShape
Windows.UI.Composition.ICompositionContainerShape::{get_Shapes}
Windows.UI.Composition.CompositionGeometry
Windows.UI.Composition.CompositionEllipseGeometry
Windows.UI.Composition.ICompositionEllipseGeometry::{put_Radius}
Windows.UI.Composition.CompositionRoundedRectangleGeometry
Windows.UI.Composition.ICompositionRoundedRectangleGeometry::{put_Size, put_CornerRadius}

// Animations: key-frame animations drive both the reactor transition engine
// (implicit + explicit property animations, with easing and expression key
// frames) and the composition "reveal" scale bounce.
Windows.UI.Composition.CompositionAnimation
Windows.UI.Composition.ICompositionAnimation2::{put_Target}
Windows.UI.Composition.ICompositionAnimationBase
Windows.UI.Composition.CompositionAnimationGroup
Windows.UI.Composition.ICompositionAnimationGroup::Add
Windows.UI.Composition.KeyFrameAnimation
Windows.UI.Composition.IKeyFrameAnimation::{put_Duration, put_DelayTime, put_IterationBehavior, put_IterationCount, InsertExpressionKeyFrameWithEasingFunction}
Windows.UI.Composition.ScalarKeyFrameAnimation
Windows.UI.Composition.IScalarKeyFrameAnimation::{InsertKeyFrame, InsertKeyFrameWithEasingFunction}
Windows.UI.Composition.Vector3KeyFrameAnimation
Windows.UI.Composition.IVector3KeyFrameAnimation::{InsertKeyFrame, InsertKeyFrameWithEasingFunction}
Windows.UI.Composition.AnimationIterationBehavior

// Easing functions shape a key frame's interpolation curve.
Windows.UI.Composition.CompositionEasingFunction
Windows.UI.Composition.LinearEasingFunction
Windows.UI.Composition.CubicBezierEasingFunction

// Implicit animations: a target-name → animation map applied to a visual so
// property changes animate automatically. The `IMap` projection it exposes is
// referenced from windows-collections rather than re-generated here.
Windows.UI.Composition.ImplicitAnimationCollection

// Scoped batch: groups the mine animations so completion could be observed.
Windows.UI.Composition.CompositionScopedBatch
Windows.UI.Composition.ICompositionScopedBatch::{End, Completed}
Windows.UI.Composition.CompositionBatchTypes

// region: system-only
// Standalone HWND hosting: the desktop target and its root visual. Lifted
// composition has no standalone HWND target; a reactor app attaches its root
// visual to a host element via ElementCompositionPreview instead.
Windows.UI.Composition.CompositionTarget
Windows.UI.Composition.ICompositionTarget::{put_Root, get_Root}
Windows.UI.Composition.Desktop.DesktopWindowTarget
Windows.Win32.ICompositorDesktopInterop::{CreateDesktopWindowTarget}
// endregion

// Canvas bridge: draw Direct2D content into a composition surface, then paint a
// visual with it via a surface brush. The generator substitutes the matching
// native interop interfaces for each composition stack.
Windows.UI.Composition.ICompositor::{CreateSurfaceBrushWithSurface}
Windows.UI.Composition.CompositionSurfaceBrush
Windows.UI.Composition.ICompositionSurfaceBrush::{put_Stretch}
Windows.UI.Composition.CompositionStretch
Windows.UI.Composition.CompositionGraphicsDevice
Windows.UI.Composition.ICompositionGraphicsDevice::{CreateDrawingSurface}
Windows.UI.Composition.CompositionDrawingSurface
Windows.UI.Composition.ICompositionSurface
Windows.Graphics.DirectX.DirectXPixelFormat
Windows.Graphics.DirectX.DirectXAlphaMode
Windows.Win32.ICompositorInterop::{CreateGraphicsDevice}
Windows.Win32.ICompositionDrawingSurfaceInterop::{BeginDraw, EndDraw, Resize}
Windows.Win32.ICompositionGraphicsDeviceInterop::{SetRenderingDevice}

Windows.UI.Color
