From ba29b02e9f529baea5e3015f7cb224a5c8447e6a Mon Sep 17 00:00:00 2001 From: alexlamtest <68841560+alexlamtest@users.noreply.github.com> Date: Tue, 2 Jul 2024 06:19:27 -0700 Subject: [PATCH] 52129746: Remove the Square sample app (#361) --- .../cpp-win32/Squares/DrawingIsland.cpp | 397 ------------------ .../Content/cpp-win32/Squares/DrawingIsland.h | 114 ----- .../cpp-win32/Squares/IslandFragmentRoot.cpp | 311 -------------- .../cpp-win32/Squares/IslandFragmentRoot.h | 91 ---- .../cpp-win32/Squares/NodeSimpleFragment.cpp | 267 ------------ .../cpp-win32/Squares/NodeSimpleFragment.h | 105 ----- Samples/Content/cpp-win32/Squares/Squares.sln | 37 -- .../Content/cpp-win32/Squares/Squares.vcxproj | 261 ------------ Samples/Content/cpp-win32/Squares/WinMain.cpp | 70 --- .../Content/cpp-win32/Squares/packages.config | 7 - Samples/Content/cpp-win32/Squares/pch.cpp | 4 - Samples/Content/cpp-win32/Squares/pch.h | 42 -- Samples/Content/cpp-win32/Squares/readme.md | 44 -- SamplesCI-Content.yml | 7 - 14 files changed, 1757 deletions(-) delete mode 100644 Samples/Content/cpp-win32/Squares/DrawingIsland.cpp delete mode 100644 Samples/Content/cpp-win32/Squares/DrawingIsland.h delete mode 100644 Samples/Content/cpp-win32/Squares/IslandFragmentRoot.cpp delete mode 100644 Samples/Content/cpp-win32/Squares/IslandFragmentRoot.h delete mode 100644 Samples/Content/cpp-win32/Squares/NodeSimpleFragment.cpp delete mode 100644 Samples/Content/cpp-win32/Squares/NodeSimpleFragment.h delete mode 100644 Samples/Content/cpp-win32/Squares/Squares.sln delete mode 100644 Samples/Content/cpp-win32/Squares/Squares.vcxproj delete mode 100644 Samples/Content/cpp-win32/Squares/WinMain.cpp delete mode 100644 Samples/Content/cpp-win32/Squares/packages.config delete mode 100644 Samples/Content/cpp-win32/Squares/pch.cpp delete mode 100644 Samples/Content/cpp-win32/Squares/pch.h delete mode 100644 Samples/Content/cpp-win32/Squares/readme.md delete mode 100644 SamplesCI-Content.yml diff --git a/Samples/Content/cpp-win32/Squares/DrawingIsland.cpp b/Samples/Content/cpp-win32/Squares/DrawingIsland.cpp deleted file mode 100644 index 0f70676b3..000000000 --- a/Samples/Content/cpp-win32/Squares/DrawingIsland.cpp +++ /dev/null @@ -1,397 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -#include "pch.h" - -#include "DrawingIsland.h" -#include "NodeSimpleFragment.h" -#include "IslandFragmentRoot.h" - -namespace Squares -{ - DrawingIsland::DrawingIsland( - const winrt::Compositor& compositor) - { - m_compositor = compositor; - - m_island = winrt::ContentIsland::Create(compositor); - - Output_Initialize(); - Input_Initialize(); - Accessibility_Initialize(); - Window_Initialize(); - } - - - DrawingIsland::~DrawingIsland() - { - m_fragmentRoot = nullptr; - m_fragmentFactory = nullptr; - m_compositor = nullptr; - } - - - void - DrawingIsland::Close() - { - m_visuals = nullptr; - m_selectedVisual = nullptr; - m_backgroundBrushDefault = nullptr; - m_backgroundBrushA = nullptr; - m_backgroundBrushB = nullptr; - m_backgroundBrushC = nullptr; - m_backgroundVisual = nullptr; - - // Destroy Content: - m_island.Close(); - m_island = nullptr; - } - - - void - DrawingIsland::Output_Initialize() - { - for (int i = 0; i < _countof(m_colorBrushes); i++) - { - m_colorBrushes[i] = m_compositor.CreateColorBrush(s_colors[i]); - - winrt::Color halfTransparent = s_colors[i]; - halfTransparent.A = 0x80; - m_halfTransparentColorBrushes[i] = m_compositor.CreateColorBrush(halfTransparent); - } - - // Create the background parent Visual that the individual square will be added into. - m_backgroundBrushDefault = m_compositor.CreateColorBrush(winrt::Color{ 0x99, 0x20, 0x20, 0x20 }); - m_backgroundBrushA = m_compositor.CreateColorBrush(winrt::Color{ 0x99, 0x99, 0x20, 0x20 }); - m_backgroundBrushB = m_compositor.CreateColorBrush(winrt::Color{ 0x99, 0x20, 0x99, 0x20 }); - m_backgroundBrushC = m_compositor.CreateColorBrush(winrt::Color{ 0x99, 0x20, 0x20, 0x99 }); - - m_backgroundVisual = m_compositor.CreateSpriteVisual(); - m_backgroundVisual.Brush(m_backgroundBrushDefault); - m_backgroundVisual.RelativeSizeAdjustment(winrt::float2(1, 1)); - m_island.Root(m_backgroundVisual); - - winrt::ContainerVisual drawingVisualsRoot = m_compositor.CreateContainerVisual(); - m_visuals = drawingVisualsRoot.Children(); - m_backgroundVisual.Children().InsertAtTop(drawingVisualsRoot); - } - - - void - DrawingIsland::Output_AddVisual( - winrt::float2 const point, - bool halfTransparent) - { - winrt::SpriteVisual visual = m_compositor.CreateSpriteVisual(); - visual.Brush(halfTransparent ? - m_halfTransparentColorBrushes[m_currentColorIndex] : - m_colorBrushes[m_currentColorIndex]); - - m_currentColorIndex = (m_currentColorIndex + 1) % 4; - - float const BlockSize = 30.0f; - visual.Size({ BlockSize, BlockSize }); - visual.Offset({ point.x - BlockSize / 2.0f, point.y - BlockSize / 2.0f, 0.0f }); - - m_visuals.InsertAtTop(visual); - - m_selectedVisual = visual; - m_offset.x = -BlockSize / 2.0f; - m_offset.y = -BlockSize / 2.0f; - - CreateUIAProviderForVisual(); - - Accessibility_UpdateScreenCoordinates(m_selectedVisual); - } - - - void - DrawingIsland::Input_Initialize() - { - auto pointerSource = winrt::InputPointerSource::GetForIsland(m_island); - - pointerSource.PointerPressed( - [this](winrt::InputPointerSource const&, - winrt::PointerEventArgs const& args) - { - auto currentPoint = args.CurrentPoint(); - auto properties = currentPoint.Properties(); - - if (properties.IsLeftButtonPressed()) - { - Input_OnLeftButtonPressed(args); - } - }); - - pointerSource.PointerMoved( - [this](winrt::InputPointerSource const&, - winrt::PointerEventArgs const& args) - { - Input_OnPointerMoved(args); - }); - - pointerSource.PointerReleased( - [&](auto&& ...) - { - Input_OnPointerReleased(); - }); - - // Set up the keyboard source. We store this in a member variable so we can easily call - // TrySetFocus() in response to left clicks in the content later on. - m_keyboardSource = winrt::InputKeyboardSource::GetForIsland(m_island); - - m_keyboardSource.KeyDown( - [this](winrt::InputKeyboardSource const&, - winrt::KeyEventArgs const& args) - { - bool handled = Input_OnKeyDown(args.VirtualKey()); - - // Mark the event as handled - if (handled) - { - args.Handled(true); - } - }); - - auto activationListener = winrt::InputActivationListener::GetForIsland(m_island); - (void)activationListener.InputActivationChanged( - [this, activationListener]( - winrt::InputActivationListener const&, - winrt::InputActivationListenerActivationChangedEventArgs const&) - { - switch (activationListener.State()) - { - case winrt::InputActivationState::Activated: - m_backgroundVisual.Opacity(1.0f); - break; - - default: - m_backgroundVisual.Opacity(0.5f); - break; - } - }); - } - - - bool - DrawingIsland::Input_OnKeyDown( - winrt::Windows::System::VirtualKey virtualKey) - { - bool handled = false; - - switch (virtualKey) - { - case winrt::VirtualKey::A: - { - m_backgroundVisual.Brush(m_backgroundBrushA); - handled = true; - break; - } - - case winrt::VirtualKey::B: - { - m_backgroundVisual.Brush(m_backgroundBrushB); - handled = true; - break; - } - - case winrt::VirtualKey::C: - { - m_backgroundVisual.Brush(m_backgroundBrushC); - handled = true; - break; - } - - case winrt::VirtualKey::Space: - { - m_backgroundVisual.Brush(m_backgroundBrushDefault); - break; - } - } - - return handled; - } - - winrt::Visual - DrawingIsland::HitTestVisual( - winrt::float2 const point) - { - winrt::Visual selectedVisual{ nullptr }; - for (winrt::Visual visual : m_visuals) - { - winrt::float3 const offset = visual.Offset(); - winrt::float2 const size = visual.Size(); - - if (point.x >= offset.x && - point.x < offset.x + size.x && - point.y >= offset.y && - point.y < offset.y + size.y) - { - selectedVisual = visual; - } - } - - return selectedVisual; - } - - - void - DrawingIsland::Input_OnLeftButtonPressed( - const winrt::PointerEventArgs& args) - { - // Left button manipulates the custom-drawn content - winrt::float2 const point = args.CurrentPoint().Position(); - - bool controlPressed = WI_IsFlagSet( - args.KeyModifiers(), - winrt::Windows::System::VirtualKeyModifiers::Control); - - OnLeftClick(point, controlPressed); - } - - - void - DrawingIsland::Input_OnPointerReleased() - { - m_selectedVisual = nullptr; - } - - - void - DrawingIsland::OnLeftClick( - const winrt::float2 point, - bool controlPressed) - { - m_selectedVisual = HitTestVisual(point); - - if (m_selectedVisual) - { - winrt::float3 const offset = m_selectedVisual.Offset(); - - m_offset.x = offset.x - point.x; - m_offset.y = offset.y - point.y; - - m_visuals.Remove(m_selectedVisual); - m_visuals.InsertAtTop(m_selectedVisual); - } - else - { - Output_AddVisual(point, controlPressed); - } - - m_keyboardSource.TrySetFocus(); - } - - - void - DrawingIsland::Input_OnPointerMoved( - const winrt::PointerEventArgs& args) - { - if (m_selectedVisual) - { - winrt::float2 const point = args.CurrentPoint().Position(); - m_selectedVisual.Offset({ point.x + m_offset.x, point.y + m_offset.y, 0.0f }); - } - } - - - void - DrawingIsland::Accessibility_Initialize() - { - m_fragmentRoot = winrt::make_self(m_island); - m_fragmentRoot->SetName(L"Content Island"); - - m_fragmentFactory = winrt::make_self(); - - - (void)m_island.AutomationProviderRequested( - [this](winrt::ContentIsland const& sender, - winrt::ContentIslandAutomationProviderRequestedEventArgs const& args) - { - return Accessibility_OnAutomationProviderRequested(sender, args); - }); - } - - - void - DrawingIsland::Accessibility_OnAutomationProviderRequested( - const winrt::ContentIsland& /*island*/, - const winrt::ContentIslandAutomationProviderRequestedEventArgs& args) - { - IInspectable providerAsIInspectable; - m_fragmentRoot->QueryInterface(winrt::guid_of(), winrt::put_abi(providerAsIInspectable)); - args.AutomationProvider(std::move(providerAsIInspectable)); - - args.Handled(true); - } - - - void - DrawingIsland::Accessibility_UpdateScreenCoordinates(winrt::Visual visual) - { - winrt::Rect logicalRect; - logicalRect.X = visual.Offset().x; - logicalRect.Y = visual.Offset().y; - logicalRect.Width = visual.Size().x; - logicalRect.Height = visual.Size().y; - - auto fragment = m_visualToFragmentMap[visual]; - - // This will convert from the logical coordinate space of the ContentIsland to - // Win32 screen coordinates that are needed by Accesibility. - auto screenRect = m_island.Coordinates().ComputeScreenCoordinates(logicalRect); - - UiaRect uiaRect; - uiaRect.left = screenRect.X; - uiaRect.top = screenRect.Y; - uiaRect.width = screenRect.Width; - uiaRect.height = screenRect.Height; - - fragment->SetBoundingRects(uiaRect); - } - - - void - DrawingIsland::CreateUIAProviderForVisual() - { - winrt::com_ptr fragment = m_fragmentFactory->Create(s_colorNames[m_currentColorIndex].c_str(), m_fragmentRoot); - - m_visualToFragmentMap[m_selectedVisual] = fragment; - - // Set up children roots. - m_fragmentRoot->AddChild(fragment); - - // Finally set up parent chain. - fragment->SetParent(m_fragmentRoot); - } - - void - DrawingIsland::Window_Initialize() - { - auto window = m_island.Window(); - - (void)window.StateChanged( - [this](winrt::IContentWindow const&, winrt::IInspectable const&) - { - return Window_StateChanged(); - }); - } - - void - DrawingIsland::Window_StateChanged() - { - bool isLandscapeOrientation = - (m_island.Window().CurrentOrientation() == winrt::ContentDisplayOrientations::Landscape || - m_island.Window().CurrentOrientation() == winrt::ContentDisplayOrientations::LandscapeFlipped); - if (isLandscapeOrientation) - { - m_backgroundBrushDefault = m_compositor.CreateColorBrush(winrt::Colors::DarkOrange()); - m_backgroundVisual.Brush(m_backgroundBrushDefault); - } - else - { - m_backgroundBrushDefault = m_compositor.CreateColorBrush(winrt::Colors::DarkGray()); - m_backgroundVisual.Brush(m_backgroundBrushDefault); - } - } -} diff --git a/Samples/Content/cpp-win32/Squares/DrawingIsland.h b/Samples/Content/cpp-win32/Squares/DrawingIsland.h deleted file mode 100644 index d70b8c920..000000000 --- a/Samples/Content/cpp-win32/Squares/DrawingIsland.h +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -#pragma once - -namespace Squares -{ - class NodeSimpleFragment; - class NodeSimpleFragmentFactory; - class IslandFragmentRoot; - - struct DrawingIsland : - public winrt::implements - { - public: - DrawingIsland( - const winrt::Compositor& compositor); - - ~DrawingIsland(); - - // IClosable methods - void Close(); - - // DrawingIsland methods - winrt::ContentIsland Island() const - { - return m_island; - } - - private: - void Output_Initialize(); - - void Output_AddVisual( - const winrt::float2 point, - bool halfTransparent); - - void Input_Initialize(); - - bool Input_OnKeyDown( - winrt::Windows::System::VirtualKey virtualKey); - - void Input_OnLeftButtonPressed( - const winrt::PointerEventArgs& args); - - void Input_OnPointerMoved( - const winrt::PointerEventArgs& args); - - void Input_OnPointerReleased(); - - void OnLeftClick( - const winrt::float2 point, - bool controlPressed); - - void Accessibility_Initialize(); - - void Accessibility_OnAutomationProviderRequested( - const winrt::ContentIsland& island, - const winrt::ContentIslandAutomationProviderRequestedEventArgs& args); - - void Accessibility_UpdateScreenCoordinates( - winrt::Visual visual); - - void CreateUIAProviderForVisual(); - - void Window_Initialize(); - - void Window_StateChanged(); - - winrt::Visual HitTestVisual( - winrt::float2 const point); - - private: - static inline winrt::Color s_colors[] = - { - { 0xFF, 0x5B, 0x9B, 0xD5 }, - { 0xFF, 0xED, 0x7D, 0x31 }, - { 0xFF, 0x70, 0xAD, 0x47 }, - { 0xFF, 0xFF, 0xC0, 0x00 } - }; - - static inline std::wstring s_colorNames[] = - { - L"Blue", - L"Orange", - L"Green", - L"Yellow" - }; - - winrt::com_ptr m_fragmentFactory{ nullptr }; - winrt::com_ptr m_fragmentRoot{ nullptr }; - winrt::Compositor m_compositor{ nullptr }; - winrt::ContentIsland m_island{ nullptr }; - winrt::InputKeyboardSource m_keyboardSource{ nullptr }; - - // Background - winrt::CompositionColorBrush m_backgroundBrushDefault { nullptr }; - winrt::CompositionColorBrush m_backgroundBrushA { nullptr }; - winrt::CompositionColorBrush m_backgroundBrushB { nullptr }; - winrt::CompositionColorBrush m_backgroundBrushC { nullptr }; - winrt::SpriteVisual m_backgroundVisual { nullptr }; - - // Drawing squares - winrt::VisualCollection m_visuals{ nullptr }; - winrt::Visual m_selectedVisual{ nullptr }; - winrt::SpriteVisual m_currentColorVisual{ nullptr }; - winrt::float2 m_offset{}; - - unsigned int m_currentColorIndex = 0; - winrt::CompositionColorBrush m_colorBrushes[_countof(s_colors)]{ nullptr, nullptr, nullptr, nullptr }; - winrt::CompositionColorBrush m_halfTransparentColorBrushes[_countof(s_colors)]{ nullptr, nullptr, nullptr, nullptr }; - - std::map> m_visualToFragmentMap; - }; -} diff --git a/Samples/Content/cpp-win32/Squares/IslandFragmentRoot.cpp b/Samples/Content/cpp-win32/Squares/IslandFragmentRoot.cpp deleted file mode 100644 index 5fc456268..000000000 --- a/Samples/Content/cpp-win32/Squares/IslandFragmentRoot.cpp +++ /dev/null @@ -1,311 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -#include "pch.h" - -#include "IslandFragmentRoot.h" -#include "NodeSimpleFragment.h" - -using unique_safearray = wil::unique_any; - -DECLARE_INTERFACE_IID_(IContentIslandAccessibility, IUnknown, "F2DEC451-ABE3-4E84-AAE7-9EAD26F8BD5D") -{ - IFACEMETHOD(GetAutomationHostProvider)( - _COM_Outptr_ IUnknown * *hostProvider - ) PURE; -}; - -namespace Squares -{ - void - IslandFragmentRoot::AddChild( - winrt::com_ptr child) - { - m_children.push_back(child); - } - - std::vector> - IslandFragmentRoot::GetChildren() - { - return m_children; - } - - void - IslandFragmentRoot::SetParent( - winrt::com_ptr parent) - { - m_parent = (parent); - } - - void - IslandFragmentRoot::SetName( - std::wstring name) - { - m_name = std::move(name); - } - - // IRawElementProviderSimple methods - HRESULT STDMETHODCALLTYPE - IslandFragmentRoot::get_ProviderOptions( - _Out_ ProviderOptions* retVal) - { - *retVal = (ProviderOptions_ServerSideProvider | ProviderOptions_UseComThreading | ProviderOptions_RefuseNonClientSupport); - return S_OK; - } - - HRESULT STDMETHODCALLTYPE - IslandFragmentRoot::GetPatternProvider( - PATTERNID /* idPattern */, - _Outptr_result_maybenull_ IUnknown** retVal) try - { - *retVal = nullptr; - return S_OK; - } - CATCH_RETURN(); - - HRESULT STDMETHODCALLTYPE - IslandFragmentRoot::GetPropertyValue( - PROPERTYID idProp, - _Out_ VARIANT* retVal) try - { - ::VariantInit(retVal); - - switch (idProp) - { - case UIA_NamePropertyId: - { - retVal->bstrVal = wil::make_bstr(m_name.c_str()).release(); - retVal->vt = VT_BSTR; - break; - } - - case UIA_IsContentElementPropertyId: - case UIA_IsControlElementPropertyId: - retVal->boolVal = VARIANT_TRUE; - retVal->vt = VT_BOOL; - break; - - case UIA_ControlTypePropertyId: - retVal->vt = VT_I4; - retVal->lVal = UIA_WindowControlTypeId; - break; - } - - return S_OK; - } - CATCH_RETURN(); - - HRESULT STDMETHODCALLTYPE - IslandFragmentRoot::get_HostRawElementProvider( - _Outptr_ IRawElementProviderSimple** retVal) try - { - *retVal = nullptr; - - auto islandI = m_island.try_as(); - if (islandI) - { - winrt::com_ptr host; - islandI->GetAutomationHostProvider(host.put()); - - *retVal = host.as().detach(); - } - - return S_OK; - } - CATCH_RETURN(); - - winrt::com_ptr - IslandFragmentRoot::GetPreviousSibling() - { - winrt::com_ptr previous = nullptr; - if (m_parent != nullptr) - { - std::vector> siblings = m_parent->GetChildren(); - int index = GetCurrentIndexFromSiblings(siblings); - - if (index != -1) - { - if (index > 0) - { - previous = siblings[index - 1]; - } - } - } - return previous; - } - - winrt::com_ptr - IslandFragmentRoot::GetNextSibling() - { - winrt::com_ptr next = nullptr; - if (m_parent != nullptr) - { - std::vector> siblings = m_parent->GetChildren(); - int index = GetCurrentIndexFromSiblings(siblings); - - if (index != -1) - { - if ((index+1) < static_cast(siblings.size())) - { - next = siblings[index + 1]; - } - } - } - return next; - } - - int - IslandFragmentRoot::GetCurrentIndexFromSiblings( - std::vector> siblings) - { - auto it = find_if( - siblings.begin(), - siblings.end(), - [this](const winrt::com_ptr& v) -> bool { return (v.get() == this); }); - - int index = -1; - if (it != siblings.end()) - { - index = (int)(it - siblings.begin()); - } - - return index; - } - - // IRawElementProviderFragment methods - HRESULT STDMETHODCALLTYPE - IslandFragmentRoot::Navigate( - NavigateDirection direction, - _Outptr_result_maybenull_ IRawElementProviderFragment** retVal) - { - direction; - *retVal = nullptr; - - winrt::com_ptr element; - - switch (direction) - { - case NavigateDirection_Parent: - if (m_parent) - { - element = m_parent.as(); - } - break; - - case NavigateDirection_FirstChild: - if (!m_children.empty()) - { - element = m_children.front().as(); - } - break; - - case NavigateDirection_LastChild: - if (!m_children.empty()) - { - element = m_children.back().as(); - } - break; - - case NavigateDirection_NextSibling: - { - winrt::com_ptr nextSibling = GetNextSibling(); - if (nextSibling) - { - element = nextSibling.as(); - } - } - break; - - case NavigateDirection_PreviousSibling: - { - winrt::com_ptr previousSibling = GetPreviousSibling(); - if (previousSibling) - { - element = previousSibling.as(); - } - break; - } - } - - if (element) - { - - *retVal = element.as().detach(); - } - - return S_OK; - } - - HRESULT STDMETHODCALLTYPE - IslandFragmentRoot::GetRuntimeId( - _Outptr_ SAFEARRAY** retVal) try - { - *retVal = nullptr; - std::array runtimeId = { UiaAppendRuntimeId, 0x1 }; - - unique_safearray runtimeIdArray{ ::SafeArrayCreateVector( - VT_I4, - 0, - static_cast(runtimeId.size())) }; - THROW_HR_IF_NULL(E_FAIL, runtimeIdArray.get()); - for (long i = 0; i < static_cast(runtimeId.size()); ++i) - { - ::SafeArrayPutElement(runtimeIdArray.get(), &i, &runtimeId[i]); - } - - *retVal = runtimeIdArray.release(); - return S_OK; - } - CATCH_RETURN(); - - HRESULT STDMETHODCALLTYPE - IslandFragmentRoot::get_BoundingRectangle( - _Out_ UiaRect* retVal) - { - *retVal = {}; - return S_OK; - } - - HRESULT STDMETHODCALLTYPE - IslandFragmentRoot::GetEmbeddedFragmentRoots( - _Outptr_result_maybenull_ SAFEARRAY** retVal) - { - *retVal = nullptr; - return S_OK; - } - - HRESULT STDMETHODCALLTYPE - IslandFragmentRoot::SetFocus() - { - return S_OK; - } - - HRESULT STDMETHODCALLTYPE - IslandFragmentRoot::get_FragmentRoot( - _Outptr_ IRawElementProviderFragmentRoot** retVal) - { - *retVal = nullptr; - RETURN_IF_FAILED(QueryInterface(IID_PPV_ARGS(retVal))); - return S_OK; - } - - // IRawElementProviderFragmentRoot methods - HRESULT STDMETHODCALLTYPE - IslandFragmentRoot::ElementProviderFromPoint( - double /* x */, - double /* y */, - _Outptr_result_maybenull_ IRawElementProviderFragment** retVal) - { - *retVal = nullptr; - return S_OK; - } - - HRESULT STDMETHODCALLTYPE - IslandFragmentRoot::GetFocus( - _Outptr_result_maybenull_ IRawElementProviderFragment** retVal) - { - *retVal = nullptr; - return S_OK; - } - -} diff --git a/Samples/Content/cpp-win32/Squares/IslandFragmentRoot.h b/Samples/Content/cpp-win32/Squares/IslandFragmentRoot.h deleted file mode 100644 index cc72c9550..000000000 --- a/Samples/Content/cpp-win32/Squares/IslandFragmentRoot.h +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -#pragma once - -namespace Squares -{ - class NodeSimpleFragment; - - class IslandFragmentRoot : - public winrt::implements - { - public: - explicit IslandFragmentRoot( - winrt::ContentIsland island) : m_island(island) {} - - void AddChild( - winrt::com_ptr child); - - std::vector> GetChildren(); - - void SetParent( - winrt::com_ptr parent); - - void SetName( - std::wstring name); - - // IRawElementProviderSimple methods - HRESULT STDMETHODCALLTYPE get_ProviderOptions( - _Out_ ProviderOptions* retVal) override final; - - HRESULT STDMETHODCALLTYPE GetPatternProvider( - PATTERNID /* idPattern */, - _Outptr_result_maybenull_ IUnknown** retVal) override final; - - HRESULT STDMETHODCALLTYPE GetPropertyValue( - PROPERTYID idProp, - _Out_ VARIANT* retVal) override final; - - HRESULT STDMETHODCALLTYPE get_HostRawElementProvider( - _Outptr_ IRawElementProviderSimple** retVal) override final; - - // IRawElementProviderFragment methods - HRESULT STDMETHODCALLTYPE Navigate( - NavigateDirection direction, - _Outptr_result_maybenull_ IRawElementProviderFragment** retVal) override final; - - HRESULT STDMETHODCALLTYPE GetRuntimeId( - _Outptr_ SAFEARRAY** retVal) override final; - - HRESULT STDMETHODCALLTYPE get_BoundingRectangle( - _Out_ UiaRect* retVal) override final; - - HRESULT STDMETHODCALLTYPE GetEmbeddedFragmentRoots( - _Outptr_result_maybenull_ SAFEARRAY** retVal) override final; - - HRESULT STDMETHODCALLTYPE SetFocus() override final; - - HRESULT STDMETHODCALLTYPE get_FragmentRoot( - _Outptr_ IRawElementProviderFragmentRoot** retVal) override final; - - // IRawElementProviderFragmentRoot methods - HRESULT STDMETHODCALLTYPE ElementProviderFromPoint( - double /* x */, - double /* y */, - _Outptr_result_maybenull_ IRawElementProviderFragment** retVal) override final; - - HRESULT STDMETHODCALLTYPE GetFocus( - _Outptr_result_maybenull_ IRawElementProviderFragment** retVal) override final; - - private: - // Helper methods - winrt::com_ptr GetPreviousSibling(); - - winrt::com_ptr GetNextSibling(); - - int GetCurrentIndexFromSiblings( - std::vector> siblings); - - private: - HWND m_hwnd{}; - winrt::ContentIsland m_island{ nullptr }; - std::wstring m_name; - std::vector> m_children; - winrt::com_ptr m_parent; - }; -} diff --git a/Samples/Content/cpp-win32/Squares/NodeSimpleFragment.cpp b/Samples/Content/cpp-win32/Squares/NodeSimpleFragment.cpp deleted file mode 100644 index 01dada93e..000000000 --- a/Samples/Content/cpp-win32/Squares/NodeSimpleFragment.cpp +++ /dev/null @@ -1,267 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -#include "pch.h" - -#include "IslandFragmentRoot.h" -#include "NodeSimpleFragment.h" - -using unique_safearray = wil::unique_any; - -namespace Squares -{ - NodeSimpleFragment::NodeSimpleFragment( - _In_z_ const wchar_t* name, - int id) : - m_name(name), - m_id(id) - { - } - - void - NodeSimpleFragment::AddChild( - winrt::com_ptr child) - { - m_children.push_back(child); - } - - std::vector> - NodeSimpleFragment::GetChildren() - { - return m_children; - } - - void - NodeSimpleFragment::SetParent( - winrt::com_ptr parent) - { - m_parent = (parent); - } - - void - NodeSimpleFragment::SetBoundingRects( - UiaRect rect) - { - m_boundingRect = rect; - } - - // IRawElementProviderSimple methods - IFACEMETHODIMP - NodeSimpleFragment::get_ProviderOptions( - _Out_ ProviderOptions* retVal) - { - *retVal = (ProviderOptions_ServerSideProvider | ProviderOptions_UseComThreading); - return S_OK; - } - - IFACEMETHODIMP - NodeSimpleFragment::GetPatternProvider( - PATTERNID /*patternId*/, - _Outptr_ IUnknown** retVal) try - { - *retVal = nullptr; - return S_OK; - } - CATCH_RETURN(); - - IFACEMETHODIMP - NodeSimpleFragment::GetPropertyValue( - PROPERTYID propertyId, - _Out_ VARIANT* retVal) try - { - ::VariantInit(retVal); - - if (propertyId == UIA_NamePropertyId) - { - retVal->bstrVal = wil::make_bstr(m_name.c_str()).release(); - retVal->vt = VT_BSTR; - } - - return S_OK; - } - CATCH_RETURN(); - - IFACEMETHODIMP - NodeSimpleFragment::get_HostRawElementProvider( - _Outptr_ IRawElementProviderSimple** retVal) - { - *retVal = nullptr; - return S_OK; - } - - winrt::com_ptr - NodeSimpleFragment::GetPreviousSibling() - { - winrt::com_ptr previous = nullptr; - if (m_parent != nullptr) - { - std::vector> siblings = m_parent->GetChildren(); - int index = GetCurrentIndexFromSiblings(siblings); - - if (index != -1) - { - if (index > 0) - { - previous = siblings[index - 1]; - } - } - } - return previous; - } - - winrt::com_ptr - NodeSimpleFragment::GetNextSibling() - { - winrt::com_ptr next = nullptr; - if (m_parent != nullptr) - { - std::vector> siblings = m_parent->GetChildren(); - int index = GetCurrentIndexFromSiblings(siblings); - - if (index != -1) - { - if ((index + 1) < static_cast(siblings.size())) - { - next = siblings[index + 1]; - } - } - } - return next; - } - - int - NodeSimpleFragment::GetCurrentIndexFromSiblings( - std::vector> siblings) - { - auto it = std::find_if( - siblings.begin(), - siblings.end(), - [this](const winrt::com_ptr& v) -> bool { return (v.get() == this); }); - - int index = -1; - if (it != siblings.end()) - { - index = (int)(it - siblings.begin()); - } - - return index; - } - - // IRawElementProviderFragment methods - IFACEMETHODIMP - NodeSimpleFragment::Navigate( - _In_ NavigateDirection direction, - _Outptr_ IRawElementProviderFragment** retVal) try - { - *retVal = nullptr; - - winrt::com_ptr result; - switch (direction) - { - case NavigateDirection_Parent: - if (m_parent) - { - result = m_parent.as(); - } - break; - - case NavigateDirection_FirstChild: - if (!m_children.empty()) - { - result = m_children.front().as(); - } - break; - - case NavigateDirection_LastChild: - if (!m_children.empty()) - { - result = m_children.back().as(); - } - break; - - case NavigateDirection_NextSibling: - { - winrt::com_ptr nextSibling = GetNextSibling(); - if (nextSibling) - { - result = nextSibling.as(); - } - } - break; - - case NavigateDirection_PreviousSibling: - { - winrt::com_ptr previousSibling = GetPreviousSibling(); - if (previousSibling) - { - result = previousSibling.as(); - } - } - break; - - } - - *retVal = result.detach(); - return S_OK; - } - CATCH_RETURN(); - - IFACEMETHODIMP - NodeSimpleFragment::GetRuntimeId( - _Outptr_ SAFEARRAY** retVal) - { - *retVal = nullptr; - - std::array runtimeId = { UiaAppendRuntimeId, m_id }; - - unique_safearray runtimeIdArray{ ::SafeArrayCreateVector( - VT_I4, - 0, - static_cast(runtimeId.size())) }; - THROW_HR_IF_NULL(E_FAIL, runtimeIdArray.get()); - for (long i = 0; i < static_cast(runtimeId.size()); ++i) - { - ::SafeArrayPutElement(runtimeIdArray.get(), &i, &runtimeId[i]); - } - - *retVal = runtimeIdArray.release(); - return S_OK; - } - - IFACEMETHODIMP - NodeSimpleFragment::get_BoundingRectangle( - _Out_ UiaRect* retVal) - { - *retVal = m_boundingRect; - return S_OK; - } - - IFACEMETHODIMP - NodeSimpleFragment::GetEmbeddedFragmentRoots( - _Outptr_ SAFEARRAY** retVal) - { - *retVal = nullptr; - return S_OK; - } - - IFACEMETHODIMP - NodeSimpleFragment::SetFocus() - { - return S_OK; - } - - IFACEMETHODIMP - NodeSimpleFragment::get_FragmentRoot( - _Outptr_ IRawElementProviderFragmentRoot** retVal) try - { - if (m_parent) - { - winrt::com_ptr result = m_parent.as(); - *retVal = result.detach(); - } - - return S_OK; - } - CATCH_RETURN(); - -} diff --git a/Samples/Content/cpp-win32/Squares/NodeSimpleFragment.h b/Samples/Content/cpp-win32/Squares/NodeSimpleFragment.h deleted file mode 100644 index 2e47f5cb4..000000000 --- a/Samples/Content/cpp-win32/Squares/NodeSimpleFragment.h +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -#pragma once - -namespace Squares -{ - class IslandFragmentRoot; - - class NodeSimpleFragment : - public winrt::implements - { - public: - NodeSimpleFragment( - _In_z_ const wchar_t* name, - int id); - - void AddChild(winrt::com_ptr child); - - std::vector> GetChildren(); - - void SetId( - int id); - - void SetBoundingRects( - UiaRect rect); - - void SetName( - std::wstring name); - - void SetParent( - winrt::com_ptr parent); - - // IRawElementProviderSimple methods - IFACEMETHODIMP get_ProviderOptions( - _Out_ ProviderOptions* retVal) override final; - - IFACEMETHODIMP GetPatternProvider( - PATTERNID patternId, - _Outptr_ IUnknown** retVal) override final; - - IFACEMETHODIMP GetPropertyValue( - PROPERTYID propertyId, - _Out_ VARIANT* retVal) override final; - - IFACEMETHODIMP get_HostRawElementProvider( - _Outptr_ IRawElementProviderSimple** retVal) override final; - - // IRawElementProviderFragment methods - IFACEMETHODIMP Navigate( - _In_ NavigateDirection direction, - _Outptr_ IRawElementProviderFragment** retVal) override final; - - IFACEMETHODIMP GetRuntimeId( - _Outptr_ SAFEARRAY** retVal) override final; - - IFACEMETHODIMP get_BoundingRectangle( - _Out_ UiaRect* retVal) override final; - - IFACEMETHODIMP GetEmbeddedFragmentRoots( - _Outptr_ SAFEARRAY** retVal) override final; - - IFACEMETHODIMP SetFocus(); - - IFACEMETHODIMP get_FragmentRoot( - _Outptr_ IRawElementProviderFragmentRoot** retVal) override final; - - private: - // Helper methods - // For the below 3 methods create a generic function instead so that they can be reused. - winrt::com_ptr GetPreviousSibling(); - - winrt::com_ptr GetNextSibling(); - - int GetCurrentIndexFromSiblings( - std::vector> siblings); - - private: - winrt::com_ptr m_parent; - std::vector> m_children; - - int m_id = 0xff; - std::wstring m_name; - UiaRect m_boundingRect = { 0, 0, 0, 0 }; - }; - - // A helper class that creates Fragments that are part of the same hierarchy. Most importantly, - // it ensures that each NodeSimpleFragment gets assigned a unique ID. - class NodeSimpleFragmentFactory: - public winrt::implements - { - public: - winrt::com_ptr Create( - _In_z_ const wchar_t* name, - winrt::com_ptr fragmentRoot) - { - return winrt::make_self(name, ++m_nextId); - } - - private: - int m_nextId = 10; - }; -} diff --git a/Samples/Content/cpp-win32/Squares/Squares.sln b/Samples/Content/cpp-win32/Squares/Squares.sln deleted file mode 100644 index 74f404b86..000000000 --- a/Samples/Content/cpp-win32/Squares/Squares.sln +++ /dev/null @@ -1,37 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.32630.194 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Squares", "Squares.vcxproj", "{BF13F903-0EA5-4B58-8631-7DB2C0E60734}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|ARM64 = Debug|ARM64 - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|ARM64 = Release|ARM64 - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {BF13F903-0EA5-4B58-8631-7DB2C0E60734}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {BF13F903-0EA5-4B58-8631-7DB2C0E60734}.Debug|ARM64.Build.0 = Debug|ARM64 - {BF13F903-0EA5-4B58-8631-7DB2C0E60734}.Debug|x64.ActiveCfg = Debug|x64 - {BF13F903-0EA5-4B58-8631-7DB2C0E60734}.Debug|x64.Build.0 = Debug|x64 - {BF13F903-0EA5-4B58-8631-7DB2C0E60734}.Debug|x86.ActiveCfg = Debug|Win32 - {BF13F903-0EA5-4B58-8631-7DB2C0E60734}.Debug|x86.Build.0 = Debug|Win32 - {BF13F903-0EA5-4B58-8631-7DB2C0E60734}.Release|ARM64.ActiveCfg = Release|ARM64 - {BF13F903-0EA5-4B58-8631-7DB2C0E60734}.Release|ARM64.Build.0 = Release|ARM64 - {BF13F903-0EA5-4B58-8631-7DB2C0E60734}.Release|x64.ActiveCfg = Release|x64 - {BF13F903-0EA5-4B58-8631-7DB2C0E60734}.Release|x64.Build.0 = Release|x64 - {BF13F903-0EA5-4B58-8631-7DB2C0E60734}.Release|x86.ActiveCfg = Release|Win32 - {BF13F903-0EA5-4B58-8631-7DB2C0E60734}.Release|x86.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {CF5B744B-97DE-434B-9CF3-602BC02A1968} - EndGlobalSection -EndGlobal diff --git a/Samples/Content/cpp-win32/Squares/Squares.vcxproj b/Samples/Content/cpp-win32/Squares/Squares.vcxproj deleted file mode 100644 index 77a78fcc1..000000000 --- a/Samples/Content/cpp-win32/Squares/Squares.vcxproj +++ /dev/null @@ -1,261 +0,0 @@ - - - - - packages - - - - - - - - Debug - ARM64 - - - Debug - Win32 - - - Release - ARM64 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 16.0 - Win32Proj - {BF13F903-0EA5-4B58-8631-7DB2C0E60734} - Squares - 10.0 - - None - false - False - high - - - - Application - true - Unicode - - - Application - false - true - Unicode - - - Application - true - Unicode - - - Application - true - Unicode - - - Application - false - true - Unicode - - - Application - false - true - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - true - - - false - - - true - - - true - - - false - - - false - - - - Level3 - true - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - Create - pch.h - - - Windows - true - - - - - true - - - - - Level3 - true - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Windows - true - true - true - - - - - Level3 - true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Windows - true - - - - - true - - - - - Level3 - true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Windows - true - - - - - true - - - - - Level3 - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Windows - true - true - true - - - - - Level3 - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Windows - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - - - - - - - \ No newline at end of file diff --git a/Samples/Content/cpp-win32/Squares/WinMain.cpp b/Samples/Content/cpp-win32/Squares/WinMain.cpp deleted file mode 100644 index 18dbb9a10..000000000 --- a/Samples/Content/cpp-win32/Squares/WinMain.cpp +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -#include "pch.h" - -#include "DrawingIsland.h" - - -int __stdcall WinMain( - _In_ HINSTANCE, - _In_opt_ HINSTANCE, - _In_ PSTR, - _In_ int) -{ - // This application is referencing WindowsAppSDK using the unpackaged sceanario - // by setting None in the project file. - // https://docs.microsoft.com/en-us/windows/apps/windows-app-sdk/deploy-unpackaged-apps - - // Initialize current thread for COM/WinRT. - winrt::init_apartment(winrt::apartment_type::single_threaded); - - // Create a Lifted (WinAppSDK) DispatcherQueue for this thread. This is needed for - // Microsoft.UI.Composition, Content, and Input APIs. - auto dispatcherQueueController = - winrt::Microsoft::UI::Dispatching::DispatcherQueueController::CreateOnCurrentThread(); - - auto dispatcherQueue = dispatcherQueueController.DispatcherQueue(); - - // Create a top level AppWindow and show it. - auto appWindow = winrt::AppWindow::Create(); - appWindow.Title(L"Squares"); - appWindow.Show(); - - // When the AppWindow is closing, post a quit to the message loop so we return from WinMain. - auto destroyingEventToken = appWindow.Destroying( - [&](winrt::AppWindow const& /*sender*/, - winrt::IInspectable const& /*args*/) - { - dispatcherQueue.EnqueueEventLoopExit(); - }); - - // Create a Compositor for all Content on this thread. - auto compositor = winrt::Microsoft::UI::Composition::Compositor(); - - // Create a DesktopChildSiteBridge that allows Content to be hosted in a HWND environment. - auto desktopChildSiteBridge = winrt::DesktopChildSiteBridge::Create(compositor, appWindow.Id()); - - // Make the DesktopChildSiteBridge visible. - desktopChildSiteBridge.Show(); - - // Set the resize policy so the DesktopChildSiteBridge matches its parent HWND size. - desktopChildSiteBridge.ResizePolicy(winrt::ContentSizePolicy::ResizeContentToParentWindow); - - // Create a DrawingIsland that uses a ContentIsland to provide Output, Input, - // Layout and Accesiblity functionality. - winrt::com_ptr drawingIsland = - winrt::make_self(compositor); - - // Connect the DesktopChildSiteBridge with the ContentIsland. - desktopChildSiteBridge.Connect(drawingIsland->Island()); - - // Run the event loop until somebody posts a quit message. - dispatcherQueue.RunEventLoop(); - - appWindow.Destroying(destroyingEventToken); - - dispatcherQueueController.ShutdownQueue(); - - return 0; -} diff --git a/Samples/Content/cpp-win32/Squares/packages.config b/Samples/Content/cpp-win32/Squares/packages.config deleted file mode 100644 index 8968b7311..000000000 --- a/Samples/Content/cpp-win32/Squares/packages.config +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/Samples/Content/cpp-win32/Squares/pch.cpp b/Samples/Content/cpp-win32/Squares/pch.cpp deleted file mode 100644 index 40e691ba7..000000000 --- a/Samples/Content/cpp-win32/Squares/pch.cpp +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -#include "pch.h" diff --git a/Samples/Content/cpp-win32/Squares/pch.h b/Samples/Content/cpp-win32/Squares/pch.h deleted file mode 100644 index 883dded31..000000000 --- a/Samples/Content/cpp-win32/Squares/pch.h +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -#pragma once - -#include -#include -#include -#include - -#include -#include -#include "winrt/Windows.Foundation.Collections.h" -#include -#include - -#include -#include -#include -#include -#include - -// UIA automation related headers -#include -#include -#include - -namespace winrt -{ - using namespace Windows::Foundation; - using namespace Windows::Foundation::Collections; - using namespace Windows::Foundation::Numerics; - using namespace Windows::System; - using namespace Windows::UI; - - using namespace Microsoft::UI::Composition; - using namespace Microsoft::UI::Content; - using namespace Microsoft::UI::Dispatching; - using namespace Microsoft::UI::Input; - using namespace Microsoft::UI::Windowing; -} - diff --git a/Samples/Content/cpp-win32/Squares/readme.md b/Samples/Content/cpp-win32/Squares/readme.md deleted file mode 100644 index 6488d9df7..000000000 --- a/Samples/Content/cpp-win32/Squares/readme.md +++ /dev/null @@ -1,44 +0,0 @@ -# Squares sample - -This sample illustrates how to use the Input, Composition, Accessibility and Content APIs to create -an interactive user experience. - -## Building & Running the sample - -This sample uses experimental API's first published in WindowsAppSdk 1.2 Experimental release. -You should just be able to build the sample in Visual Studio by opening Squares.sln. -Since this is an unpackaged application, WindowsAppSdk 1.2 Experimental Runtime will need to be -installed manually before running the sample. - -Here are the links for the installer packages for WindowsAppSdk 1.2 Experimental Runtime: - -- [AMD64](https://aka.ms/windowsappsdk/1.2/1.2.220909.2-experimental2/windowsappruntimeinstall-x64.exe) -- [ARM64](https://aka.ms/windowsappsdk/1.2/1.2.220909.2-experimental2/windowsappruntimeinstall-arm64.exe) -- [X86](https://aka.ms/windowsappsdk/1.2/1.2.220909.2-experimental2/windowsappruntimeinstall-x86.exe) - - -## Conceptual elements - -### Host - -The host is represented by the `DesktopChildSiteBridge`, and allows hosting in a HWND based -environment. It takes a parent HWND as a parameter on creation, and it will be a child of that -parent HWND. - - -### Content - -The content is represented by the `ContentIsland` and is a self-contained set of output, input, -state, and automation handling that provides a user experience. An application typically uses -`ContentIslands` as modernized [WS_CHILD -style HWND](https://docs.microsoft.com/en-us/windows/win32/winmsg/window-features#child-windows) -equivalents to provide Composition-based experiences with animations, rendering effects, and -interactive manipulations. - -## Connection - -After `DesktopChildSiteBridge` and `ContentIsland` are created, they need to be connected so that -the Content will show up in the Host. This is accomplished by calling -DesktopChildSiteBridge.Connect(ContentIsland). Once this connection has been established, the -Content will inherit state from the HWND environment around it by default. For instance, if the -parent HWND is hidden or resized, the Content will also follow that state. diff --git a/SamplesCI-Content.yml b/SamplesCI-Content.yml deleted file mode 100644 index 005308014..000000000 --- a/SamplesCI-Content.yml +++ /dev/null @@ -1,7 +0,0 @@ -# Please see https://www.osgwiki.com/wiki/Windows_App_SDK_-_How_to_build_and_use_the_pipelines -# for information on how to use the pipelines -name: $(BuildDefinitionName)_$(date:yyMM).$(date:dd)$(rev:rrr) -stages: -- template: WindowsAppSDK-SamplesCI.yml - parameters: - FeatureDirectory: "Content" \ No newline at end of file