terminal/src/cascadia/TerminalControl/XamlUiaTextRange.h

76 lines
3.9 KiB
C++

/*++
Copyright (c) Microsoft Corporation
Licensed under the MIT license.
Module Name:
- XamlUiaTextRange.h
Abstract:
- This module is a wrapper for the UiaTextRange
(a text range accessibility provider). It allows
for UiaTextRange to be used in Windows Terminal.
- Wraps the UIAutomationCore ITextRangeProvider
(https://docs.microsoft.com/en-us/windows/win32/api/uiautomationcore/nn-uiautomationcore-itextrangeprovider)
with a XAML ITextRangeProvider
(https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.automation.provider.itextrangeprovider)
Author(s):
- Carlos Zamora (CaZamor) 2019
--*/
#pragma once
#include "TermControlAutomationPeer.h"
#include "XamlUiaTextRange.g.h"
#include <UIAutomationCore.h>
#include "../types/TermControlUiaTextRange.hpp"
namespace winrt::Microsoft::Terminal::Control::implementation
{
class XamlUiaTextRange : public XamlUiaTextRangeT<XamlUiaTextRange>
{
public:
XamlUiaTextRange(::ITextRangeProvider* uiaProvider, Windows::UI::Xaml::Automation::Provider::IRawElementProviderSimple parentProvider) :
_parentProvider{ parentProvider }
{
_uiaProvider.attach(uiaProvider);
}
#pragma region ITextRangeProvider
Windows::UI::Xaml::Automation::Provider::ITextRangeProvider Clone() const;
bool Compare(Windows::UI::Xaml::Automation::Provider::ITextRangeProvider pRange) const;
int32_t CompareEndpoints(Windows::UI::Xaml::Automation::Text::TextPatternRangeEndpoint endpoint,
Windows::UI::Xaml::Automation::Provider::ITextRangeProvider pTargetRange,
Windows::UI::Xaml::Automation::Text::TextPatternRangeEndpoint targetEndpoint);
void ExpandToEnclosingUnit(Windows::UI::Xaml::Automation::Text::TextUnit unit) const;
Windows::UI::Xaml::Automation::Provider::ITextRangeProvider FindAttribute(int32_t textAttributeId,
winrt::Windows::Foundation::IInspectable val,
bool searchBackward);
Windows::UI::Xaml::Automation::Provider::ITextRangeProvider FindText(winrt::hstring text,
bool searchBackward,
bool ignoreCase);
winrt::Windows::Foundation::IInspectable GetAttributeValue(int32_t textAttributeId) const;
void GetBoundingRectangles(winrt::com_array<double>& returnValue) const;
Windows::UI::Xaml::Automation::Provider::IRawElementProviderSimple GetEnclosingElement();
winrt::hstring GetText(int32_t maxLength) const;
int32_t Move(Windows::UI::Xaml::Automation::Text::TextUnit unit,
int32_t count);
int32_t MoveEndpointByUnit(Windows::UI::Xaml::Automation::Text::TextPatternRangeEndpoint endpoint,
Windows::UI::Xaml::Automation::Text::TextUnit unit,
int32_t count) const;
void MoveEndpointByRange(Windows::UI::Xaml::Automation::Text::TextPatternRangeEndpoint endpoint,
Windows::UI::Xaml::Automation::Provider::ITextRangeProvider pTargetRange,
Windows::UI::Xaml::Automation::Text::TextPatternRangeEndpoint targetEndpoint) const;
void Select() const;
void AddToSelection() const;
void RemoveFromSelection() const;
void ScrollIntoView(bool alignToTop) const;
winrt::com_array<Windows::UI::Xaml::Automation::Provider::IRawElementProviderSimple> GetChildren() const;
#pragma endregion ITextRangeProvider
private:
wil::com_ptr<::ITextRangeProvider> _uiaProvider;
Windows::UI::Xaml::Automation::Provider::IRawElementProviderSimple _parentProvider;
};
}