Files
react-native/ReactCommon/react/renderer/components/view/AccessibilityPrimitives.h
T
Kevin Gozali fb39d45ed5 C++ - better => butter
Summary:
Renaming the `better` utilities to `butter`:
- to prevent claims that this library is superior to others - it really depends on use cases
- to indicate ease of use throughout the codebase, easily spread like butter

Changelog: [C++][Changed] Renaming C++ better util to butter, used by Fabric internals

Reviewed By: JoshuaGross

Differential Revision: D33242764

fbshipit-source-id: 26dc95d9597c61ce8e66708e44ed545e0fc5cff5
2021-12-20 22:25:14 -08:00

107 lines
2.5 KiB
C++

/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#pragma once
#include <butter/optional.h>
#include <cinttypes>
#include <string>
namespace facebook {
namespace react {
enum class AccessibilityTraits : uint32_t {
None = 0,
Button = (1 << 0),
Link = (1 << 1),
Image = (1 << 2),
Selected = (1 << 3),
PlaysSound = (1 << 4),
KeyboardKey = (1 << 5),
StaticText = (1 << 6),
SummaryElement = (1 << 7),
NotEnabled = (1 << 8),
UpdatesFrequently = (1 << 9),
SearchField = (1 << 10),
StartsMediaSession = (1 << 11),
Adjustable = (1 << 12),
AllowsDirectInteraction = (1 << 13),
CausesPageTurn = (1 << 14),
Header = (1 << 15),
Switch = (1 << 16),
TabBar = (1 << 17),
};
constexpr enum AccessibilityTraits operator|(
const enum AccessibilityTraits lhs,
const enum AccessibilityTraits rhs) {
return (enum AccessibilityTraits)((uint32_t)lhs | (uint32_t)rhs);
}
constexpr enum AccessibilityTraits operator&(
const enum AccessibilityTraits lhs,
const enum AccessibilityTraits rhs) {
return (enum AccessibilityTraits)((uint32_t)lhs & (uint32_t)rhs);
}
struct AccessibilityAction {
std::string name{""};
butter::optional<std::string> label{};
};
struct AccessibilityState {
bool disabled{false};
bool selected{false};
enum { Unchecked, Checked, Mixed, None } checked{None};
bool busy{false};
bool expanded{false};
};
constexpr bool operator==(
AccessibilityState const &lhs,
AccessibilityState const &rhs) {
return lhs.disabled == rhs.disabled && lhs.selected == rhs.selected &&
lhs.checked == rhs.checked && lhs.busy == rhs.busy &&
lhs.expanded == rhs.expanded;
}
constexpr bool operator!=(
AccessibilityState const &lhs,
AccessibilityState const &rhs) {
return !(rhs == lhs);
}
struct AccessibilityValue {
butter::optional<int> min;
butter::optional<int> max;
butter::optional<int> now;
butter::optional<std::string> text{};
};
constexpr bool operator==(
AccessibilityValue const &lhs,
AccessibilityValue const &rhs) {
return lhs.min == rhs.min && lhs.max == rhs.max && lhs.now == rhs.now &&
lhs.text == rhs.text;
}
constexpr bool operator!=(
AccessibilityValue const &lhs,
AccessibilityValue const &rhs) {
return !(rhs == lhs);
}
enum class ImportantForAccessibility {
Auto,
Yes,
No,
NoHideDescendants,
};
} // namespace react
} // namespace facebook