#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_GEOMETRY_AXIS_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_GEOMETRY_AXIS_H_
#include "base/types/strong_alias.h"
#include "third_party/blink/renderer/platform/text/writing_mode.h"
namespace blink {
enum class LogicalAxis : uint8_t { … };
enum class PhysicalAxis : uint8_t { … };
PhysicalAxes;
LogicalAxes;
inline constexpr LogicalAxes operator|(LogicalAxes a, LogicalAxes b) { … }
inline constexpr LogicalAxes& operator|=(LogicalAxes& a, LogicalAxes b) { … }
inline constexpr LogicalAxes operator&(LogicalAxes a, LogicalAxes b) { … }
inline constexpr LogicalAxes operator&=(LogicalAxes& a, LogicalAxes b) { … }
inline constexpr PhysicalAxes operator|(PhysicalAxes a, PhysicalAxes b) { … }
inline constexpr PhysicalAxes& operator|=(PhysicalAxes& a, PhysicalAxes b) { … }
inline constexpr PhysicalAxes operator&(PhysicalAxes a, PhysicalAxes b) { … }
inline constexpr PhysicalAxes operator&=(PhysicalAxes& a, PhysicalAxes b) { … }
inline constexpr PhysicalAxes operator^(PhysicalAxes a, PhysicalAxes b) { … }
inline constexpr PhysicalAxes operator^=(PhysicalAxes& a, PhysicalAxes b) { … }
inline constexpr LogicalAxes kLogicalAxesNone = …;
inline constexpr LogicalAxes kLogicalAxesInline = …;
inline constexpr LogicalAxes kLogicalAxesBlock = …;
inline constexpr LogicalAxes kLogicalAxesBoth = …;
inline constexpr PhysicalAxes kPhysicalAxesNone = …;
inline constexpr PhysicalAxes kPhysicalAxesHorizontal = …;
inline constexpr PhysicalAxes kPhysicalAxesVertical = …;
inline constexpr PhysicalAxes kPhysicalAxesBoth = …;
static_assert …;
static_assert …;
static_assert …;
static_assert …;
template <typename FromType, typename ToType>
inline ToType ConvertAxes(FromType from, WritingMode mode) { … }
inline PhysicalAxes ToPhysicalAxes(LogicalAxes logical, WritingMode mode) { … }
inline LogicalAxes ToLogicalAxes(PhysicalAxes physical, WritingMode mode) { … }
}
#endif