/*
 * Copyright 2014 Google Inc. 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 kContainKeywordName[];
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 kFantasyKeywordName[];
extern const char kFarthestCornerKeywordName[];
extern const char kFarthestSideKeywordName[];
extern const char kFixedKeywordName[];
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 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 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 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 kSansSerifKeywordName[];
extern const char kSerifKeywordName[];
extern const char kSilverKeywordName[];
extern const char kSolidKeywordName[];
extern const char kStartKeywordName[];
extern const char kStaticKeywordName[];
extern const char kStepEndKeywordName[];
extern const char kStepStartKeywordName[];
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 kYellowKeywordName[];

}  // namespace cssom
}  // namespace cobalt

#endif  // COBALT_CSSOM_KEYWORD_NAMES_H_
