blob: e4008a504634e4712d4891e743190b4eb4c513b1 [file] [log] [blame]
// Copyright (c) 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_CSS_CSS_VALUE_ID_MAPPINGS_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_CSS_CSS_VALUE_ID_MAPPINGS_H_
#include "third_party/blink/renderer/core/css/css_value_id_mappings_generated.h"
namespace blink {
template <class T>
T CssValueIDToPlatformEnum(CSSValueID v) {
// By default, we use the generated mappings. For special cases, we
// specialize.
return detail::cssValueIDToPlatformEnumGenerated<T>(v);
}
template <class T>
inline CSSValueID PlatformEnumToCSSValueID(T v) {
// By default, we use the generated mappings. For special cases, we overload.
return detail::platformEnumToCSSValueIDGenerated(v);
}
template <>
inline UnicodeBidi CssValueIDToPlatformEnum(CSSValueID v) {
if (v == CSSValueWebkitIsolate)
return UnicodeBidi::kIsolate;
if (v == CSSValueWebkitIsolateOverride)
return UnicodeBidi::kIsolateOverride;
if (v == CSSValueWebkitPlaintext)
return UnicodeBidi::kPlaintext;
return detail::cssValueIDToPlatformEnumGenerated<UnicodeBidi>(v);
}
template <>
inline EBoxOrient CssValueIDToPlatformEnum(CSSValueID v) {
if (v == CSSValueInlineAxis)
return EBoxOrient::kHorizontal;
if (v == CSSValueBlockAxis)
return EBoxOrient::kVertical;
return detail::cssValueIDToPlatformEnumGenerated<EBoxOrient>(v);
}
template <>
inline ETextCombine CssValueIDToPlatformEnum(CSSValueID v) {
if (v == CSSValueHorizontal) // -webkit-text-combine
return ETextCombine::kAll;
return detail::cssValueIDToPlatformEnumGenerated<ETextCombine>(v);
}
template <>
inline ETextAlign CssValueIDToPlatformEnum(CSSValueID v) {
if (v == CSSValueWebkitAuto) // Legacy -webkit-auto. Eqiuvalent to start.
return ETextAlign::kStart;
if (v == CSSValueInternalCenter)
return ETextAlign::kCenter;
return detail::cssValueIDToPlatformEnumGenerated<ETextAlign>(v);
}
template <>
inline ETextOrientation CssValueIDToPlatformEnum(CSSValueID v) {
if (v == CSSValueSidewaysRight) // Legacy -webkit-auto. Eqiuvalent to start.
return ETextOrientation::kSideways;
if (v == CSSValueVerticalRight)
return ETextOrientation::kMixed;
return detail::cssValueIDToPlatformEnumGenerated<ETextOrientation>(v);
}
template <>
inline EResize CssValueIDToPlatformEnum(CSSValueID v) {
if (v == CSSValueAuto) {
// Depends on settings, thus should be handled by the caller.
NOTREACHED();
return EResize::kNone;
}
return detail::cssValueIDToPlatformEnumGenerated<EResize>(v);
}
template <>
inline WritingMode CssValueIDToPlatformEnum(CSSValueID v) {
switch (v) {
case CSSValueHorizontalTb:
case CSSValueLr:
case CSSValueLrTb:
case CSSValueRl:
case CSSValueRlTb:
return WritingMode::kHorizontalTb;
case CSSValueVerticalRl:
case CSSValueTb:
case CSSValueTbRl:
return WritingMode::kVerticalRl;
case CSSValueVerticalLr:
return WritingMode::kVerticalLr;
default:
break;
}
NOTREACHED();
return WritingMode::kHorizontalTb;
}
template <>
inline ECursor CssValueIDToPlatformEnum(CSSValueID v) {
if (v == CSSValueWebkitZoomIn)
return ECursor::kZoomIn;
if (v == CSSValueWebkitZoomOut)
return ECursor::kZoomOut;
if (v == CSSValueWebkitGrab)
return ECursor::kGrab;
if (v == CSSValueWebkitGrabbing)
return ECursor::kGrabbing;
return detail::cssValueIDToPlatformEnumGenerated<ECursor>(v);
}
template <>
inline EDisplay CssValueIDToPlatformEnum(CSSValueID v) {
if (v == CSSValueNone)
return EDisplay::kNone;
if (v == CSSValueInline)
return EDisplay::kInline;
if (v == CSSValueBlock)
return EDisplay::kBlock;
if (v == CSSValueFlowRoot)
return EDisplay::kFlowRoot;
if (v == CSSValueListItem)
return EDisplay::kListItem;
if (v == CSSValueInlineBlock)
return EDisplay::kInlineBlock;
if (v == CSSValueTable)
return EDisplay::kTable;
if (v == CSSValueInlineTable)
return EDisplay::kInlineTable;
if (v == CSSValueTableRowGroup)
return EDisplay::kTableRowGroup;
if (v == CSSValueTableHeaderGroup)
return EDisplay::kTableHeaderGroup;
if (v == CSSValueTableFooterGroup)
return EDisplay::kTableFooterGroup;
if (v == CSSValueTableRow)
return EDisplay::kTableRow;
if (v == CSSValueTableColumnGroup)
return EDisplay::kTableColumnGroup;
if (v == CSSValueTableColumn)
return EDisplay::kTableColumn;
if (v == CSSValueTableCell)
return EDisplay::kTableCell;
if (v == CSSValueTableCaption)
return EDisplay::kTableCaption;
if (v == CSSValueWebkitBox)
return EDisplay::kWebkitBox;
if (v == CSSValueWebkitInlineBox)
return EDisplay::kWebkitInlineBox;
if (v == CSSValueFlex)
return EDisplay::kFlex;
if (v == CSSValueInlineFlex)
return EDisplay::kInlineFlex;
if (v == CSSValueGrid)
return EDisplay::kGrid;
if (v == CSSValueInlineGrid)
return EDisplay::kInlineGrid;
if (v == CSSValueContents)
return EDisplay::kContents;
if (v == CSSValueWebkitFlex)
return EDisplay::kFlex;
if (v == CSSValueWebkitInlineFlex)
return EDisplay::kInlineFlex;
NOTREACHED();
return EDisplay::kInline;
}
template <>
inline EUserSelect CssValueIDToPlatformEnum(CSSValueID v) {
if (v == CSSValueAuto)
return EUserSelect::kAuto;
return detail::cssValueIDToPlatformEnumGenerated<EUserSelect>(v);
}
template <>
inline CSSValueID PlatformEnumToCSSValueID(EDisplay v) {
if (v == EDisplay::kNone)
return CSSValueNone;
if (v == EDisplay::kInline)
return CSSValueInline;
if (v == EDisplay::kBlock)
return CSSValueBlock;
if (v == EDisplay::kFlowRoot)
return CSSValueFlowRoot;
if (v == EDisplay::kListItem)
return CSSValueListItem;
if (v == EDisplay::kInlineBlock)
return CSSValueInlineBlock;
if (v == EDisplay::kTable)
return CSSValueTable;
if (v == EDisplay::kInlineTable)
return CSSValueInlineTable;
if (v == EDisplay::kTableRowGroup)
return CSSValueTableRowGroup;
if (v == EDisplay::kTableHeaderGroup)
return CSSValueTableHeaderGroup;
if (v == EDisplay::kTableFooterGroup)
return CSSValueTableFooterGroup;
if (v == EDisplay::kTableRow)
return CSSValueTableRow;
if (v == EDisplay::kTableColumnGroup)
return CSSValueTableColumnGroup;
if (v == EDisplay::kTableColumn)
return CSSValueTableColumn;
if (v == EDisplay::kTableCell)
return CSSValueTableCell;
if (v == EDisplay::kTableCaption)
return CSSValueTableCaption;
if (v == EDisplay::kWebkitBox)
return CSSValueWebkitBox;
if (v == EDisplay::kWebkitInlineBox)
return CSSValueWebkitInlineBox;
if (v == EDisplay::kFlex)
return CSSValueFlex;
if (v == EDisplay::kInlineFlex)
return CSSValueInlineFlex;
if (v == EDisplay::kGrid)
return CSSValueGrid;
if (v == EDisplay::kInlineGrid)
return CSSValueInlineGrid;
if (v == EDisplay::kContents)
return CSSValueContents;
NOTREACHED();
return CSSValueInline;
}
} // namespace blink
#endif