blob: 3eb682851c7d172ace1f170c8c89c9be4be72998 [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"
#include "third_party/blink/renderer/core/style/computed_style_constants.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 == CSSValueID::kWebkitIsolate)
return UnicodeBidi::kIsolate;
if (v == CSSValueID::kWebkitIsolateOverride)
return UnicodeBidi::kIsolateOverride;
if (v == CSSValueID::kWebkitPlaintext)
return UnicodeBidi::kPlaintext;
return detail::cssValueIDToPlatformEnumGenerated<UnicodeBidi>(v);
}
template <>
inline EBoxOrient CssValueIDToPlatformEnum(CSSValueID v) {
if (v == CSSValueID::kInlineAxis)
return EBoxOrient::kHorizontal;
if (v == CSSValueID::kBlockAxis)
return EBoxOrient::kVertical;
return detail::cssValueIDToPlatformEnumGenerated<EBoxOrient>(v);
}
template <>
inline ETextCombine CssValueIDToPlatformEnum(CSSValueID v) {
if (v == CSSValueID::kHorizontal) // -webkit-text-combine
return ETextCombine::kAll;
return detail::cssValueIDToPlatformEnumGenerated<ETextCombine>(v);
}
template <>
inline ETextAlign CssValueIDToPlatformEnum(CSSValueID v) {
if (v ==
CSSValueID::kWebkitAuto) // Legacy -webkit-auto. Eqiuvalent to start.
return ETextAlign::kStart;
if (v == CSSValueID::kInternalCenter)
return ETextAlign::kCenter;
return detail::cssValueIDToPlatformEnumGenerated<ETextAlign>(v);
}
template <>
inline ETextOrientation CssValueIDToPlatformEnum(CSSValueID v) {
if (v ==
CSSValueID::kSidewaysRight) // Legacy -webkit-auto. Eqiuvalent to start.
return ETextOrientation::kSideways;
if (v == CSSValueID::kVerticalRight)
return ETextOrientation::kMixed;
return detail::cssValueIDToPlatformEnumGenerated<ETextOrientation>(v);
}
template <>
inline EResize CssValueIDToPlatformEnum(CSSValueID v) {
if (v == CSSValueID::kAuto) {
// 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 CSSValueID::kHorizontalTb:
case CSSValueID::kLr:
case CSSValueID::kLrTb:
case CSSValueID::kRl:
case CSSValueID::kRlTb:
return WritingMode::kHorizontalTb;
case CSSValueID::kVerticalRl:
case CSSValueID::kTb:
case CSSValueID::kTbRl:
return WritingMode::kVerticalRl;
case CSSValueID::kVerticalLr:
return WritingMode::kVerticalLr;
default:
break;
}
NOTREACHED();
return WritingMode::kHorizontalTb;
}
template <>
inline ECursor CssValueIDToPlatformEnum(CSSValueID v) {
if (v == CSSValueID::kWebkitZoomIn)
return ECursor::kZoomIn;
if (v == CSSValueID::kWebkitZoomOut)
return ECursor::kZoomOut;
if (v == CSSValueID::kWebkitGrab)
return ECursor::kGrab;
if (v == CSSValueID::kWebkitGrabbing)
return ECursor::kGrabbing;
return detail::cssValueIDToPlatformEnumGenerated<ECursor>(v);
}
template <>
inline EDisplay CssValueIDToPlatformEnum(CSSValueID v) {
if (v == CSSValueID::kNone)
return EDisplay::kNone;
if (v == CSSValueID::kInline)
return EDisplay::kInline;
if (v == CSSValueID::kBlock)
return EDisplay::kBlock;
if (v == CSSValueID::kFlowRoot)
return EDisplay::kFlowRoot;
if (v == CSSValueID::kListItem)
return EDisplay::kListItem;
if (v == CSSValueID::kInlineBlock)
return EDisplay::kInlineBlock;
if (v == CSSValueID::kTable)
return EDisplay::kTable;
if (v == CSSValueID::kInlineTable)
return EDisplay::kInlineTable;
if (v == CSSValueID::kTableRowGroup)
return EDisplay::kTableRowGroup;
if (v == CSSValueID::kTableHeaderGroup)
return EDisplay::kTableHeaderGroup;
if (v == CSSValueID::kTableFooterGroup)
return EDisplay::kTableFooterGroup;
if (v == CSSValueID::kTableRow)
return EDisplay::kTableRow;
if (v == CSSValueID::kTableColumnGroup)
return EDisplay::kTableColumnGroup;
if (v == CSSValueID::kTableColumn)
return EDisplay::kTableColumn;
if (v == CSSValueID::kTableCell)
return EDisplay::kTableCell;
if (v == CSSValueID::kTableCaption)
return EDisplay::kTableCaption;
if (v == CSSValueID::kWebkitBox)
return EDisplay::kWebkitBox;
if (v == CSSValueID::kWebkitInlineBox)
return EDisplay::kWebkitInlineBox;
if (v == CSSValueID::kFlex)
return EDisplay::kFlex;
if (v == CSSValueID::kInlineFlex)
return EDisplay::kInlineFlex;
if (v == CSSValueID::kGrid)
return EDisplay::kGrid;
if (v == CSSValueID::kInlineGrid)
return EDisplay::kInlineGrid;
if (v == CSSValueID::kContents)
return EDisplay::kContents;
if (v == CSSValueID::kWebkitFlex)
return EDisplay::kFlex;
if (v == CSSValueID::kWebkitInlineFlex)
return EDisplay::kInlineFlex;
if (v == CSSValueID::kMath)
return EDisplay::kMath;
if (v == CSSValueID::kInlineMath)
return EDisplay::kInlineMath;
NOTREACHED();
return EDisplay::kInline;
}
template <>
inline EListStyleType CssValueIDToPlatformEnum(CSSValueID v) {
switch (v) {
case CSSValueID::kDisc:
return EListStyleType::kDisc;
case CSSValueID::kCircle:
return EListStyleType::kCircle;
case CSSValueID::kSquare:
return EListStyleType::kSquare;
case CSSValueID::kDecimal:
return EListStyleType::kDecimal;
case CSSValueID::kDecimalLeadingZero:
return EListStyleType::kDecimalLeadingZero;
case CSSValueID::kArabicIndic:
return EListStyleType::kArabicIndic;
case CSSValueID::kBengali:
return EListStyleType::kBengali;
case CSSValueID::kCambodian:
return EListStyleType::kCambodian;
case CSSValueID::kKhmer:
return EListStyleType::kKhmer;
case CSSValueID::kDevanagari:
return EListStyleType::kDevanagari;
case CSSValueID::kGujarati:
return EListStyleType::kGujarati;
case CSSValueID::kGurmukhi:
return EListStyleType::kGurmukhi;
case CSSValueID::kKannada:
return EListStyleType::kKannada;
case CSSValueID::kLao:
return EListStyleType::kLao;
case CSSValueID::kMalayalam:
return EListStyleType::kMalayalam;
case CSSValueID::kMongolian:
return EListStyleType::kMongolian;
case CSSValueID::kMyanmar:
return EListStyleType::kMyanmar;
case CSSValueID::kOriya:
return EListStyleType::kOriya;
case CSSValueID::kPersian:
return EListStyleType::kPersian;
case CSSValueID::kUrdu:
return EListStyleType::kUrdu;
case CSSValueID::kTelugu:
return EListStyleType::kTelugu;
case CSSValueID::kTibetan:
return EListStyleType::kTibetan;
case CSSValueID::kThai:
return EListStyleType::kThai;
case CSSValueID::kLowerRoman:
return EListStyleType::kLowerRoman;
case CSSValueID::kUpperRoman:
return EListStyleType::kUpperRoman;
case CSSValueID::kLowerGreek:
return EListStyleType::kLowerGreek;
case CSSValueID::kLowerAlpha:
return EListStyleType::kLowerAlpha;
case CSSValueID::kLowerLatin:
return EListStyleType::kLowerLatin;
case CSSValueID::kUpperAlpha:
return EListStyleType::kUpperAlpha;
case CSSValueID::kUpperLatin:
return EListStyleType::kUpperLatin;
case CSSValueID::kCjkEarthlyBranch:
return EListStyleType::kCjkEarthlyBranch;
case CSSValueID::kCjkHeavenlyStem:
return EListStyleType::kCjkHeavenlyStem;
case CSSValueID::kEthiopicHalehame:
return EListStyleType::kEthiopicHalehame;
case CSSValueID::kEthiopicHalehameAm:
return EListStyleType::kEthiopicHalehameAm;
case CSSValueID::kEthiopicHalehameTiEr:
return EListStyleType::kEthiopicHalehameTiEr;
case CSSValueID::kEthiopicHalehameTiEt:
return EListStyleType::kEthiopicHalehameTiEt;
case CSSValueID::kHangul:
return EListStyleType::kHangul;
case CSSValueID::kHangulConsonant:
return EListStyleType::kHangulConsonant;
case CSSValueID::kKoreanHangulFormal:
return EListStyleType::kKoreanHangulFormal;
case CSSValueID::kKoreanHanjaFormal:
return EListStyleType::kKoreanHanjaFormal;
case CSSValueID::kKoreanHanjaInformal:
return EListStyleType::kKoreanHanjaInformal;
case CSSValueID::kHebrew:
return EListStyleType::kHebrew;
case CSSValueID::kArmenian:
return EListStyleType::kArmenian;
case CSSValueID::kLowerArmenian:
return EListStyleType::kLowerArmenian;
case CSSValueID::kUpperArmenian:
return EListStyleType::kUpperArmenian;
case CSSValueID::kGeorgian:
return EListStyleType::kGeorgian;
case CSSValueID::kCjkIdeographic:
return EListStyleType::kCjkIdeographic;
case CSSValueID::kSimpChineseFormal:
return EListStyleType::kSimpChineseFormal;
case CSSValueID::kSimpChineseInformal:
return EListStyleType::kSimpChineseInformal;
case CSSValueID::kTradChineseFormal:
return EListStyleType::kTradChineseFormal;
case CSSValueID::kTradChineseInformal:
return EListStyleType::kTradChineseInformal;
case CSSValueID::kHiragana:
return EListStyleType::kHiragana;
case CSSValueID::kKatakana:
return EListStyleType::kKatakana;
case CSSValueID::kHiraganaIroha:
return EListStyleType::kHiraganaIroha;
case CSSValueID::kKatakanaIroha:
return EListStyleType::kKatakanaIroha;
case CSSValueID::kNone:
return EListStyleType::kNone;
default:
NOTREACHED();
break;
}
NOTREACHED();
return EListStyleType::kDisc;
}
template <>
inline EUserSelect CssValueIDToPlatformEnum(CSSValueID v) {
if (v == CSSValueID::kAuto)
return EUserSelect::kAuto;
return detail::cssValueIDToPlatformEnumGenerated<EUserSelect>(v);
}
template <>
inline CSSValueID PlatformEnumToCSSValueID(EDisplay v) {
if (v == EDisplay::kNone)
return CSSValueID::kNone;
if (v == EDisplay::kInline)
return CSSValueID::kInline;
if (v == EDisplay::kBlock)
return CSSValueID::kBlock;
if (v == EDisplay::kFlowRoot)
return CSSValueID::kFlowRoot;
if (v == EDisplay::kListItem)
return CSSValueID::kListItem;
if (v == EDisplay::kInlineBlock)
return CSSValueID::kInlineBlock;
if (v == EDisplay::kTable)
return CSSValueID::kTable;
if (v == EDisplay::kInlineTable)
return CSSValueID::kInlineTable;
if (v == EDisplay::kTableRowGroup)
return CSSValueID::kTableRowGroup;
if (v == EDisplay::kTableHeaderGroup)
return CSSValueID::kTableHeaderGroup;
if (v == EDisplay::kTableFooterGroup)
return CSSValueID::kTableFooterGroup;
if (v == EDisplay::kTableRow)
return CSSValueID::kTableRow;
if (v == EDisplay::kTableColumnGroup)
return CSSValueID::kTableColumnGroup;
if (v == EDisplay::kTableColumn)
return CSSValueID::kTableColumn;
if (v == EDisplay::kTableCell)
return CSSValueID::kTableCell;
if (v == EDisplay::kTableCaption)
return CSSValueID::kTableCaption;
if (v == EDisplay::kWebkitBox)
return CSSValueID::kWebkitBox;
if (v == EDisplay::kWebkitInlineBox)
return CSSValueID::kWebkitInlineBox;
if (v == EDisplay::kFlex)
return CSSValueID::kFlex;
if (v == EDisplay::kInlineFlex)
return CSSValueID::kInlineFlex;
if (v == EDisplay::kGrid)
return CSSValueID::kGrid;
if (v == EDisplay::kInlineGrid)
return CSSValueID::kInlineGrid;
if (v == EDisplay::kContents)
return CSSValueID::kContents;
if (v == EDisplay::kMath)
return CSSValueID::kMath;
if (v == EDisplay::kInlineMath)
return CSSValueID::kInlineMath;
NOTREACHED();
return CSSValueID::kInline;
}
template <>
inline CSSValueID PlatformEnumToCSSValueID(EListStyleType v) {
switch (v) {
case EListStyleType::kDisc:
return CSSValueID::kDisc;
case EListStyleType::kCircle:
return CSSValueID::kCircle;
case EListStyleType::kSquare:
return CSSValueID::kSquare;
case EListStyleType::kDecimal:
return CSSValueID::kDecimal;
case EListStyleType::kDecimalLeadingZero:
return CSSValueID::kDecimalLeadingZero;
case EListStyleType::kArabicIndic:
return CSSValueID::kArabicIndic;
case EListStyleType::kBengali:
return CSSValueID::kBengali;
case EListStyleType::kCambodian:
return CSSValueID::kCambodian;
case EListStyleType::kKhmer:
return CSSValueID::kKhmer;
case EListStyleType::kDevanagari:
return CSSValueID::kDevanagari;
case EListStyleType::kGujarati:
return CSSValueID::kGujarati;
case EListStyleType::kGurmukhi:
return CSSValueID::kGurmukhi;
case EListStyleType::kKannada:
return CSSValueID::kKannada;
case EListStyleType::kLao:
return CSSValueID::kLao;
case EListStyleType::kMalayalam:
return CSSValueID::kMalayalam;
case EListStyleType::kMongolian:
return CSSValueID::kMongolian;
case EListStyleType::kMyanmar:
return CSSValueID::kMyanmar;
case EListStyleType::kOriya:
return CSSValueID::kOriya;
case EListStyleType::kPersian:
return CSSValueID::kPersian;
case EListStyleType::kUrdu:
return CSSValueID::kUrdu;
case EListStyleType::kTelugu:
return CSSValueID::kTelugu;
case EListStyleType::kTibetan:
return CSSValueID::kTibetan;
case EListStyleType::kThai:
return CSSValueID::kThai;
case EListStyleType::kLowerRoman:
return CSSValueID::kLowerRoman;
case EListStyleType::kUpperRoman:
return CSSValueID::kUpperRoman;
case EListStyleType::kLowerGreek:
return CSSValueID::kLowerGreek;
case EListStyleType::kLowerAlpha:
return CSSValueID::kLowerAlpha;
case EListStyleType::kLowerLatin:
return CSSValueID::kLowerLatin;
case EListStyleType::kUpperAlpha:
return CSSValueID::kUpperAlpha;
case EListStyleType::kUpperLatin:
return CSSValueID::kUpperLatin;
case EListStyleType::kCjkEarthlyBranch:
return CSSValueID::kCjkEarthlyBranch;
case EListStyleType::kCjkHeavenlyStem:
return CSSValueID::kCjkHeavenlyStem;
case EListStyleType::kEthiopicHalehame:
return CSSValueID::kEthiopicHalehame;
case EListStyleType::kEthiopicHalehameAm:
return CSSValueID::kEthiopicHalehameAm;
case EListStyleType::kEthiopicHalehameTiEr:
return CSSValueID::kEthiopicHalehameTiEr;
case EListStyleType::kEthiopicHalehameTiEt:
return CSSValueID::kEthiopicHalehameTiEt;
case EListStyleType::kHangul:
return CSSValueID::kHangul;
case EListStyleType::kHangulConsonant:
return CSSValueID::kHangulConsonant;
case EListStyleType::kKoreanHangulFormal:
return CSSValueID::kKoreanHangulFormal;
case EListStyleType::kKoreanHanjaFormal:
return CSSValueID::kKoreanHanjaFormal;
case EListStyleType::kKoreanHanjaInformal:
return CSSValueID::kKoreanHanjaInformal;
case EListStyleType::kHebrew:
return CSSValueID::kHebrew;
case EListStyleType::kArmenian:
return CSSValueID::kArmenian;
case EListStyleType::kLowerArmenian:
return CSSValueID::kLowerArmenian;
case EListStyleType::kUpperArmenian:
return CSSValueID::kUpperArmenian;
case EListStyleType::kGeorgian:
return CSSValueID::kGeorgian;
case EListStyleType::kCjkIdeographic:
return CSSValueID::kCjkIdeographic;
case EListStyleType::kSimpChineseFormal:
return CSSValueID::kSimpChineseFormal;
case EListStyleType::kSimpChineseInformal:
return CSSValueID::kSimpChineseInformal;
case EListStyleType::kTradChineseFormal:
return CSSValueID::kTradChineseFormal;
case EListStyleType::kTradChineseInformal:
return CSSValueID::kTradChineseInformal;
case EListStyleType::kHiragana:
return CSSValueID::kHiragana;
case EListStyleType::kKatakana:
return CSSValueID::kKatakana;
case EListStyleType::kHiraganaIroha:
return CSSValueID::kHiraganaIroha;
case EListStyleType::kKatakanaIroha:
return CSSValueID::kKatakanaIroha;
case EListStyleType::kNone:
return CSSValueID::kNone;
case EListStyleType::kString:
NOTREACHED();
break;
}
NOTREACHED();
return CSSValueID::kDisc;
}
template <>
inline PageOrientation CssValueIDToPlatformEnum(CSSValueID v) {
if (v == CSSValueID::kUpright)
return PageOrientation::kUpright;
if (v == CSSValueID::kRotateLeft)
return PageOrientation::kRotateLeft;
if (v == CSSValueID::kRotateRight)
return PageOrientation::kRotateRight;
NOTREACHED();
return PageOrientation::kUpright;
}
template <>
inline ScrollbarGutter CssValueIDToPlatformEnum(CSSValueID v) {
if (v == CSSValueID::kAuto)
return kScrollbarGutterAuto;
if (v == CSSValueID::kStable)
return kScrollbarGutterStable;
if (v == CSSValueID::kAlways)
return kScrollbarGutterAlways;
if (v == CSSValueID::kBoth)
return kScrollbarGutterBoth;
if (v == CSSValueID::kForce)
return kScrollbarGutterForce;
NOTREACHED();
return kScrollbarGutterAuto;
}
} // namespace blink
#endif