// Copyright 2014 The Cobalt Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#ifndef COBALT_CSSOM_KEYWORD_NAMES_H_
#define COBALT_CSSOM_KEYWORD_NAMES_H_

namespace cobalt {
namespace cssom {

// Lower-case names of CSS keywords used as property values.
extern const char kAbsoluteKeywordName[];
extern const char kAlternateKeywordName[];
extern const char kAlternateReverseKeywordName[];
extern const char kAquaKeywordName[];
extern const char kAtKeywordName[];
extern const char kAutoKeywordName[];
extern const char kBackwardsKeywordName[];
extern const char kBaselineKeywordName[];
extern const char kBlackKeywordName[];
extern const char kBlockKeywordName[];
extern const char kBlueKeywordName[];
extern const char kBoldKeywordName[];
extern const char kBothKeywordName[];
extern const char kBottomKeywordName[];
extern const char kBreakWordKeywordName[];
extern const char kCenterKeywordName[];
extern const char kCircleKeywordName[];
extern const char kClipKeywordName[];
extern const char kClosestCornerKeywordName[];
extern const char kClosestSideKeywordName[];
extern const char kCollapseKeywordName[];
extern const char kColumnKeywordName[];
extern const char kColumnReverseKeywordName[];
extern const char kContainKeywordName[];
extern const char kContentKeywordName[];
extern const char kCoverKeywordName[];
extern const char kCurrentColorKeywordName[];
extern const char kCursiveKeywordName[];
extern const char kEaseInKeywordName[];
extern const char kEaseInOutKeywordName[];
extern const char kEaseKeywordName[];
extern const char kEaseOutKeywordName[];
extern const char kEllipseKeywordName[];
extern const char kEllipsisKeywordName[];
extern const char kEndKeywordName[];
extern const char kEquirectangularKeywordName[];
extern const char kFantasyKeywordName[];
extern const char kFarthestCornerKeywordName[];
extern const char kFarthestSideKeywordName[];
extern const char kFixedKeywordName[];
extern const char kFlexEndKeywordName[];
extern const char kFlexKeywordName[];
extern const char kFlexStartKeywordName[];
extern const char kForwardsKeywordName[];
extern const char kFromKeywordName[];
extern const char kFuchsiaKeywordName[];
extern const char kGrayKeywordName[];
extern const char kGreenKeywordName[];
extern const char kHiddenKeywordName[];
extern const char kInfiniteKeywordName[];
extern const char kInheritKeywordName[];
extern const char kInitialKeywordName[];
extern const char kInlineBlockKeywordName[];
extern const char kInlineFlexKeywordName[];
extern const char kInlineKeywordName[];
extern const char kInsetKeywordName[];
extern const char kItalicKeywordName[];
extern const char kLeftKeywordName[];
extern const char kLimeKeywordName[];
extern const char kLinearKeywordName[];
extern const char kLineThroughKeywordName[];
extern const char kMaroonKeywordName[];
extern const char kMiddleKeywordName[];
extern const char kMonoscopicKeywordName[];
extern const char kMonospaceKeywordName[];
extern const char kNavyKeywordName[];
extern const char kNoneKeywordName[];
extern const char kNoRepeatKeywordName[];
extern const char kNormalKeywordName[];
extern const char kNowrapKeywordName[];
extern const char kObliqueKeywordName[];
extern const char kOliveKeywordName[];
extern const char kPreKeywordName[];
extern const char kPreLineKeywordName[];
extern const char kPreWrapKeywordName[];
extern const char kPurpleKeywordName[];
extern const char kRectangularKeywordName[];
extern const char kRedKeywordName[];
extern const char kRelativeKeywordName[];
extern const char kRepeatKeywordName[];
extern const char kRepeatXKeywordName[];
extern const char kRepeatYKeywordName[];
extern const char kReverseKeywordName[];
extern const char kRightKeywordName[];
extern const char kRowKeywordName[];
extern const char kRowReverseKeywordName[];
extern const char kSansSerifKeywordName[];
extern const char kScrollKeywordName[];
extern const char kSerifKeywordName[];
extern const char kSilverKeywordName[];
extern const char kSolidKeywordName[];
extern const char kSpaceAroundKeywordName[];
extern const char kSpaceBetweenKeywordName[];
extern const char kStartKeywordName[];
extern const char kStaticKeywordName[];
extern const char kStepEndKeywordName[];
extern const char kStepStartKeywordName[];
extern const char kStereoscopicLeftRightKeywordName[];
extern const char kStereoscopicTopBottomKeywordName[];
extern const char kStretchKeywordName[];
extern const char kTealKeywordName[];
extern const char kToKeywordName[];
extern const char kTopKeywordName[];
extern const char kTransparentKeywordName[];
extern const char kUppercaseKeywordName[];
extern const char kVisibleKeywordName[];
extern const char kWhiteKeywordName[];
extern const char kWrapKeywordName[];
extern const char kWrapReverseKeywordName[];
extern const char kYellowKeywordName[];

}  // namespace cssom
}  // namespace cobalt

#endif  // COBALT_CSSOM_KEYWORD_NAMES_H_
