| /* |
| * Copyright (C) 2007 Alexey Proskuryakov <ap@nypop.com>. |
| * Copyright (C) 2008, 2009, 2010 Apple Inc. All rights reserved. |
| * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/) |
| * Copyright (C) 2009 Jeff Schiller <codedread@gmail.com> |
| * Copyright (C) Research In Motion Limited 2010. All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * |
| * 1. Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * 2. Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in the |
| * documentation and/or other materials provided with the distribution. |
| * |
| * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
| * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
| * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
| * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
| * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
| * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| |
| #ifndef CSSPrimitiveValueMappings_h |
| #define CSSPrimitiveValueMappings_h |
| |
| #include "ColorSpace.h" |
| #include "CSSPrimitiveValue.h" |
| #include "CSSValueKeywords.h" |
| #include "FontSmoothingMode.h" |
| #include "GraphicsTypes.h" |
| #include "Path.h" |
| #include "RenderStyleConstants.h" |
| #include "SVGRenderStyleDefs.h" |
| #include "TextDirection.h" |
| #include "TextOrientation.h" |
| #include "TextRenderingMode.h" |
| #include "ThemeTypes.h" |
| |
| namespace WebCore { |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EBorderStyle e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case BNONE: |
| m_value.ident = CSSValueNone; |
| break; |
| case BHIDDEN: |
| m_value.ident = CSSValueHidden; |
| break; |
| case INSET: |
| m_value.ident = CSSValueInset; |
| break; |
| case GROOVE: |
| m_value.ident = CSSValueGroove; |
| break; |
| case RIDGE: |
| m_value.ident = CSSValueRidge; |
| break; |
| case OUTSET: |
| m_value.ident = CSSValueOutset; |
| break; |
| case DOTTED: |
| m_value.ident = CSSValueDotted; |
| break; |
| case DASHED: |
| m_value.ident = CSSValueDashed; |
| break; |
| case SOLID: |
| m_value.ident = CSSValueSolid; |
| break; |
| case DOUBLE: |
| m_value.ident = CSSValueDouble; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EBorderStyle() const |
| { |
| return (EBorderStyle)(m_value.ident - CSSValueNone); |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(CompositeOperator e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case CompositeClear: |
| m_value.ident = CSSValueClear; |
| break; |
| case CompositeCopy: |
| m_value.ident = CSSValueCopy; |
| break; |
| case CompositeSourceOver: |
| m_value.ident = CSSValueSourceOver; |
| break; |
| case CompositeSourceIn: |
| m_value.ident = CSSValueSourceIn; |
| break; |
| case CompositeSourceOut: |
| m_value.ident = CSSValueSourceOut; |
| break; |
| case CompositeSourceAtop: |
| m_value.ident = CSSValueSourceAtop; |
| break; |
| case CompositeDestinationOver: |
| m_value.ident = CSSValueDestinationOver; |
| break; |
| case CompositeDestinationIn: |
| m_value.ident = CSSValueDestinationIn; |
| break; |
| case CompositeDestinationOut: |
| m_value.ident = CSSValueDestinationOut; |
| break; |
| case CompositeDestinationAtop: |
| m_value.ident = CSSValueDestinationAtop; |
| break; |
| case CompositeXOR: |
| m_value.ident = CSSValueXor; |
| break; |
| case CompositePlusDarker: |
| m_value.ident = CSSValuePlusDarker; |
| break; |
| case CompositeHighlight: |
| m_value.ident = CSSValueHighlight; |
| break; |
| case CompositePlusLighter: |
| m_value.ident = CSSValuePlusLighter; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator CompositeOperator() const |
| { |
| switch (m_value.ident) { |
| case CSSValueClear: |
| return CompositeClear; |
| case CSSValueCopy: |
| return CompositeCopy; |
| case CSSValueSourceOver: |
| return CompositeSourceOver; |
| case CSSValueSourceIn: |
| return CompositeSourceIn; |
| case CSSValueSourceOut: |
| return CompositeSourceOut; |
| case CSSValueSourceAtop: |
| return CompositeSourceAtop; |
| case CSSValueDestinationOver: |
| return CompositeDestinationOver; |
| case CSSValueDestinationIn: |
| return CompositeDestinationIn; |
| case CSSValueDestinationOut: |
| return CompositeDestinationOut; |
| case CSSValueDestinationAtop: |
| return CompositeDestinationAtop; |
| case CSSValueXor: |
| return CompositeXOR; |
| case CSSValuePlusDarker: |
| return CompositePlusDarker; |
| case CSSValueHighlight: |
| return CompositeHighlight; |
| case CSSValuePlusLighter: |
| return CompositePlusLighter; |
| default: |
| ASSERT_NOT_REACHED(); |
| return CompositeClear; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ControlPart e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case NoControlPart: |
| m_value.ident = CSSValueNone; |
| break; |
| case CheckboxPart: |
| m_value.ident = CSSValueCheckbox; |
| break; |
| case RadioPart: |
| m_value.ident = CSSValueRadio; |
| break; |
| case PushButtonPart: |
| m_value.ident = CSSValuePushButton; |
| break; |
| case SquareButtonPart: |
| m_value.ident = CSSValueSquareButton; |
| break; |
| case ButtonPart: |
| m_value.ident = CSSValueButton; |
| break; |
| case ButtonBevelPart: |
| m_value.ident = CSSValueButtonBevel; |
| break; |
| case DefaultButtonPart: |
| m_value.ident = CSSValueDefaultButton; |
| break; |
| case InnerSpinButtonPart: |
| m_value.ident = CSSValueInnerSpinButton; |
| break; |
| case ListboxPart: |
| m_value.ident = CSSValueListbox; |
| break; |
| case ListButtonPart: |
| #if ENABLE(DATALIST) |
| m_value.ident = CSSValueListButton; |
| #endif |
| break; |
| case ListItemPart: |
| m_value.ident = CSSValueListitem; |
| break; |
| case MediaFullscreenButtonPart: |
| m_value.ident = CSSValueMediaFullscreenButton; |
| break; |
| case MediaPlayButtonPart: |
| m_value.ident = CSSValueMediaPlayButton; |
| break; |
| case MediaMuteButtonPart: |
| m_value.ident = CSSValueMediaMuteButton; |
| break; |
| case MediaSeekBackButtonPart: |
| m_value.ident = CSSValueMediaSeekBackButton; |
| break; |
| case MediaSeekForwardButtonPart: |
| m_value.ident = CSSValueMediaSeekForwardButton; |
| break; |
| case MediaRewindButtonPart: |
| m_value.ident = CSSValueMediaRewindButton; |
| break; |
| case MediaReturnToRealtimeButtonPart: |
| m_value.ident = CSSValueMediaReturnToRealtimeButton; |
| break; |
| case MediaToggleClosedCaptionsButtonPart: |
| m_value.ident = CSSValueMediaToggleClosedCaptionsButton; |
| break; |
| case MediaSliderPart: |
| m_value.ident = CSSValueMediaSlider; |
| break; |
| case MediaSliderThumbPart: |
| m_value.ident = CSSValueMediaSliderthumb; |
| break; |
| case MediaVolumeSliderContainerPart: |
| m_value.ident = CSSValueMediaVolumeSliderContainer; |
| break; |
| case MediaVolumeSliderPart: |
| m_value.ident = CSSValueMediaVolumeSlider; |
| break; |
| case MediaVolumeSliderMuteButtonPart: |
| m_value.ident = CSSValueMediaVolumeSliderMuteButton; |
| break; |
| case MediaVolumeSliderThumbPart: |
| m_value.ident = CSSValueMediaVolumeSliderthumb; |
| break; |
| case MediaControlsBackgroundPart: |
| m_value.ident = CSSValueMediaControlsBackground; |
| break; |
| case MediaControlsFullscreenBackgroundPart: |
| m_value.ident = CSSValueMediaControlsFullscreenBackground; |
| break; |
| case MediaCurrentTimePart: |
| m_value.ident = CSSValueMediaCurrentTimeDisplay; |
| break; |
| case MediaTimeRemainingPart: |
| m_value.ident = CSSValueMediaTimeRemainingDisplay; |
| break; |
| case MenulistPart: |
| m_value.ident = CSSValueMenulist; |
| break; |
| case MenulistButtonPart: |
| m_value.ident = CSSValueMenulistButton; |
| break; |
| case MenulistTextPart: |
| m_value.ident = CSSValueMenulistText; |
| break; |
| case MenulistTextFieldPart: |
| m_value.ident = CSSValueMenulistTextfield; |
| break; |
| case MeterPart: |
| m_value.ident = CSSValueMeter; |
| break; |
| case RelevancyLevelIndicatorPart: |
| m_value.ident = CSSValueRelevancyLevelIndicator; |
| break; |
| case ContinuousCapacityLevelIndicatorPart: |
| m_value.ident = CSSValueContinuousCapacityLevelIndicator; |
| break; |
| case DiscreteCapacityLevelIndicatorPart: |
| m_value.ident = CSSValueDiscreteCapacityLevelIndicator; |
| break; |
| case RatingLevelIndicatorPart: |
| m_value.ident = CSSValueRatingLevelIndicator; |
| break; |
| case OuterSpinButtonPart: |
| m_value.ident = CSSValueOuterSpinButton; |
| break; |
| case ProgressBarPart: |
| #if ENABLE(PROGRESS_TAG) |
| m_value.ident = CSSValueProgressBar; |
| #endif |
| break; |
| case ProgressBarValuePart: |
| #if ENABLE(PROGRESS_TAG) |
| m_value.ident = CSSValueProgressBarValue; |
| #endif |
| break; |
| case SliderHorizontalPart: |
| m_value.ident = CSSValueSliderHorizontal; |
| break; |
| case SliderVerticalPart: |
| m_value.ident = CSSValueSliderVertical; |
| break; |
| case SliderThumbHorizontalPart: |
| m_value.ident = CSSValueSliderthumbHorizontal; |
| break; |
| case SliderThumbVerticalPart: |
| m_value.ident = CSSValueSliderthumbVertical; |
| break; |
| case CaretPart: |
| m_value.ident = CSSValueCaret; |
| break; |
| case SearchFieldPart: |
| m_value.ident = CSSValueSearchfield; |
| break; |
| case SearchFieldDecorationPart: |
| m_value.ident = CSSValueSearchfieldDecoration; |
| break; |
| case SearchFieldResultsDecorationPart: |
| m_value.ident = CSSValueSearchfieldResultsDecoration; |
| break; |
| case SearchFieldResultsButtonPart: |
| m_value.ident = CSSValueSearchfieldResultsButton; |
| break; |
| case SearchFieldCancelButtonPart: |
| m_value.ident = CSSValueSearchfieldCancelButton; |
| break; |
| case TextFieldPart: |
| m_value.ident = CSSValueTextfield; |
| break; |
| case TextAreaPart: |
| m_value.ident = CSSValueTextarea; |
| break; |
| case CapsLockIndicatorPart: |
| m_value.ident = CSSValueCapsLockIndicator; |
| break; |
| case InputSpeechButtonPart: |
| #if ENABLE(INPUT_SPEECH) |
| m_value.ident = CSSValueWebkitInputSpeechButton; |
| #endif |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator ControlPart() const |
| { |
| if (m_value.ident == CSSValueNone) |
| return NoControlPart; |
| else |
| return ControlPart(m_value.ident - CSSValueCheckbox + 1); |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EFillAttachment e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case ScrollBackgroundAttachment: |
| m_value.ident = CSSValueScroll; |
| break; |
| case LocalBackgroundAttachment: |
| m_value.ident = CSSValueLocal; |
| break; |
| case FixedBackgroundAttachment: |
| m_value.ident = CSSValueFixed; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EFillAttachment() const |
| { |
| switch (m_value.ident) { |
| case CSSValueScroll: |
| return ScrollBackgroundAttachment; |
| case CSSValueLocal: |
| return LocalBackgroundAttachment; |
| case CSSValueFixed: |
| return FixedBackgroundAttachment; |
| default: |
| ASSERT_NOT_REACHED(); |
| return ScrollBackgroundAttachment; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EFillBox e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case BorderFillBox: |
| m_value.ident = CSSValueBorderBox; |
| break; |
| case PaddingFillBox: |
| m_value.ident = CSSValuePaddingBox; |
| break; |
| case ContentFillBox: |
| m_value.ident = CSSValueContentBox; |
| break; |
| case TextFillBox: |
| m_value.ident = CSSValueText; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EFillBox() const |
| { |
| switch (m_value.ident) { |
| case CSSValueBorder: |
| case CSSValueBorderBox: |
| return BorderFillBox; |
| case CSSValuePadding: |
| case CSSValuePaddingBox: |
| return PaddingFillBox; |
| case CSSValueContent: |
| case CSSValueContentBox: |
| return ContentFillBox; |
| case CSSValueText: |
| case CSSValueWebkitText: |
| return TextFillBox; |
| default: |
| ASSERT_NOT_REACHED(); |
| return BorderFillBox; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EFillRepeat e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case RepeatFill: |
| m_value.ident = CSSValueRepeat; |
| break; |
| case NoRepeatFill: |
| m_value.ident = CSSValueNoRepeat; |
| break; |
| case RoundFill: |
| m_value.ident = CSSValueRound; |
| break; |
| case SpaceFill: |
| m_value.ident = CSSValueSpace; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EFillRepeat() const |
| { |
| switch (m_value.ident) { |
| case CSSValueRepeat: |
| return RepeatFill; |
| case CSSValueNoRepeat: |
| return NoRepeatFill; |
| case CSSValueRound: |
| return RoundFill; |
| case CSSValueSpace: |
| return SpaceFill; |
| default: |
| ASSERT_NOT_REACHED(); |
| return RepeatFill; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EBoxAlignment e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case BSTRETCH: |
| m_value.ident = CSSValueStretch; |
| break; |
| case BSTART: |
| m_value.ident = CSSValueStart; |
| break; |
| case BCENTER: |
| m_value.ident = CSSValueCenter; |
| break; |
| case BEND: |
| m_value.ident = CSSValueEnd; |
| break; |
| case BBASELINE: |
| m_value.ident = CSSValueBaseline; |
| break; |
| case BJUSTIFY: |
| m_value.ident = CSSValueJustify; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EBoxAlignment() const |
| { |
| switch (m_value.ident) { |
| case CSSValueStretch: |
| return BSTRETCH; |
| case CSSValueStart: |
| return BSTART; |
| case CSSValueEnd: |
| return BEND; |
| case CSSValueCenter: |
| return BCENTER; |
| case CSSValueBaseline: |
| return BBASELINE; |
| case CSSValueJustify: |
| return BJUSTIFY; |
| default: |
| ASSERT_NOT_REACHED(); |
| return BSTRETCH; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EBoxDirection e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case BNORMAL: |
| m_value.ident = CSSValueNormal; |
| break; |
| case BREVERSE: |
| m_value.ident = CSSValueReverse; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EBoxDirection() const |
| { |
| switch (m_value.ident) { |
| case CSSValueNormal: |
| return BNORMAL; |
| case CSSValueReverse: |
| return BREVERSE; |
| default: |
| ASSERT_NOT_REACHED(); |
| return BNORMAL; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EBoxLines e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case SINGLE: |
| m_value.ident = CSSValueSingle; |
| break; |
| case MULTIPLE: |
| m_value.ident = CSSValueMultiple; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EBoxLines() const |
| { |
| switch (m_value.ident) { |
| case CSSValueSingle: |
| return SINGLE; |
| case CSSValueMultiple: |
| return MULTIPLE; |
| default: |
| ASSERT_NOT_REACHED(); |
| return SINGLE; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EBoxOrient e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case HORIZONTAL: |
| m_value.ident = CSSValueHorizontal; |
| break; |
| case VERTICAL: |
| m_value.ident = CSSValueVertical; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EBoxOrient() const |
| { |
| switch (m_value.ident) { |
| case CSSValueHorizontal: |
| case CSSValueInlineAxis: |
| return HORIZONTAL; |
| case CSSValueVertical: |
| case CSSValueBlockAxis: |
| return VERTICAL; |
| default: |
| ASSERT_NOT_REACHED(); |
| return HORIZONTAL; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ECaptionSide e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case CAPLEFT: |
| m_value.ident = CSSValueLeft; |
| break; |
| case CAPRIGHT: |
| m_value.ident = CSSValueRight; |
| break; |
| case CAPTOP: |
| m_value.ident = CSSValueTop; |
| break; |
| case CAPBOTTOM: |
| m_value.ident = CSSValueBottom; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator ECaptionSide() const |
| { |
| switch (m_value.ident) { |
| case CSSValueLeft: |
| return CAPLEFT; |
| case CSSValueRight: |
| return CAPRIGHT; |
| case CSSValueTop: |
| return CAPTOP; |
| case CSSValueBottom: |
| return CAPBOTTOM; |
| default: |
| ASSERT_NOT_REACHED(); |
| return CAPTOP; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EClear e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case CNONE: |
| m_value.ident = CSSValueNone; |
| break; |
| case CLEFT: |
| m_value.ident = CSSValueLeft; |
| break; |
| case CRIGHT: |
| m_value.ident = CSSValueRight; |
| break; |
| case CBOTH: |
| m_value.ident = CSSValueBoth; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EClear() const |
| { |
| switch (m_value.ident) { |
| case CSSValueNone: |
| return CNONE; |
| case CSSValueLeft: |
| return CLEFT; |
| case CSSValueRight: |
| return CRIGHT; |
| case CSSValueBoth: |
| return CBOTH; |
| default: |
| ASSERT_NOT_REACHED(); |
| return CNONE; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ECursor e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case CURSOR_AUTO: |
| m_value.ident = CSSValueAuto; |
| break; |
| case CURSOR_CROSS: |
| m_value.ident = CSSValueCrosshair; |
| break; |
| case CURSOR_DEFAULT: |
| m_value.ident = CSSValueDefault; |
| break; |
| case CURSOR_POINTER: |
| m_value.ident = CSSValuePointer; |
| break; |
| case CURSOR_MOVE: |
| m_value.ident = CSSValueMove; |
| break; |
| case CURSOR_CELL: |
| m_value.ident = CSSValueCell; |
| break; |
| case CURSOR_VERTICAL_TEXT: |
| m_value.ident = CSSValueVerticalText; |
| break; |
| case CURSOR_CONTEXT_MENU: |
| m_value.ident = CSSValueContextMenu; |
| break; |
| case CURSOR_ALIAS: |
| m_value.ident = CSSValueAlias; |
| break; |
| case CURSOR_COPY: |
| m_value.ident = CSSValueCopy; |
| break; |
| case CURSOR_NONE: |
| m_value.ident = CSSValueNone; |
| break; |
| case CURSOR_PROGRESS: |
| m_value.ident = CSSValueProgress; |
| break; |
| case CURSOR_NO_DROP: |
| m_value.ident = CSSValueNoDrop; |
| break; |
| case CURSOR_NOT_ALLOWED: |
| m_value.ident = CSSValueNotAllowed; |
| break; |
| case CURSOR_WEBKIT_ZOOM_IN: |
| m_value.ident = CSSValueWebkitZoomIn; |
| break; |
| case CURSOR_WEBKIT_ZOOM_OUT: |
| m_value.ident = CSSValueWebkitZoomOut; |
| break; |
| case CURSOR_E_RESIZE: |
| m_value.ident = CSSValueEResize; |
| break; |
| case CURSOR_NE_RESIZE: |
| m_value.ident = CSSValueNeResize; |
| break; |
| case CURSOR_NW_RESIZE: |
| m_value.ident = CSSValueNwResize; |
| break; |
| case CURSOR_N_RESIZE: |
| m_value.ident = CSSValueNResize; |
| break; |
| case CURSOR_SE_RESIZE: |
| m_value.ident = CSSValueSeResize; |
| break; |
| case CURSOR_SW_RESIZE: |
| m_value.ident = CSSValueSwResize; |
| break; |
| case CURSOR_S_RESIZE: |
| m_value.ident = CSSValueSResize; |
| break; |
| case CURSOR_W_RESIZE: |
| m_value.ident = CSSValueWResize; |
| break; |
| case CURSOR_EW_RESIZE: |
| m_value.ident = CSSValueEwResize; |
| break; |
| case CURSOR_NS_RESIZE: |
| m_value.ident = CSSValueNsResize; |
| break; |
| case CURSOR_NESW_RESIZE: |
| m_value.ident = CSSValueNeswResize; |
| break; |
| case CURSOR_NWSE_RESIZE: |
| m_value.ident = CSSValueNwseResize; |
| break; |
| case CURSOR_COL_RESIZE: |
| m_value.ident = CSSValueColResize; |
| break; |
| case CURSOR_ROW_RESIZE: |
| m_value.ident = CSSValueRowResize; |
| break; |
| case CURSOR_TEXT: |
| m_value.ident = CSSValueText; |
| break; |
| case CURSOR_WAIT: |
| m_value.ident = CSSValueWait; |
| break; |
| case CURSOR_HELP: |
| m_value.ident = CSSValueHelp; |
| break; |
| case CURSOR_ALL_SCROLL: |
| m_value.ident = CSSValueAllScroll; |
| break; |
| case CURSOR_WEBKIT_GRAB: |
| m_value.ident = CSSValueWebkitGrab; |
| break; |
| case CURSOR_WEBKIT_GRABBING: |
| m_value.ident = CSSValueWebkitGrabbing; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator ECursor() const |
| { |
| if (m_value.ident == CSSValueCopy) |
| return CURSOR_COPY; |
| if (m_value.ident == CSSValueNone) |
| return CURSOR_NONE; |
| return static_cast<ECursor>(m_value.ident - CSSValueAuto); |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EDisplay e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case INLINE: |
| m_value.ident = CSSValueInline; |
| break; |
| case BLOCK: |
| m_value.ident = CSSValueBlock; |
| break; |
| case LIST_ITEM: |
| m_value.ident = CSSValueListItem; |
| break; |
| case RUN_IN: |
| m_value.ident = CSSValueRunIn; |
| break; |
| case COMPACT: |
| m_value.ident = CSSValueCompact; |
| break; |
| case INLINE_BLOCK: |
| m_value.ident = CSSValueInlineBlock; |
| break; |
| case TABLE: |
| m_value.ident = CSSValueTable; |
| break; |
| case INLINE_TABLE: |
| m_value.ident = CSSValueInlineTable; |
| break; |
| case TABLE_ROW_GROUP: |
| m_value.ident = CSSValueTableRowGroup; |
| break; |
| case TABLE_HEADER_GROUP: |
| m_value.ident = CSSValueTableHeaderGroup; |
| break; |
| case TABLE_FOOTER_GROUP: |
| m_value.ident = CSSValueTableFooterGroup; |
| break; |
| case TABLE_ROW: |
| m_value.ident = CSSValueTableRow; |
| break; |
| case TABLE_COLUMN_GROUP: |
| m_value.ident = CSSValueTableColumnGroup; |
| break; |
| case TABLE_COLUMN: |
| m_value.ident = CSSValueTableColumn; |
| break; |
| case TABLE_CELL: |
| m_value.ident = CSSValueTableCell; |
| break; |
| case TABLE_CAPTION: |
| m_value.ident = CSSValueTableCaption; |
| break; |
| #if ENABLE(WCSS) |
| case WAP_MARQUEE: |
| m_value.ident = CSSValueWapMarquee; |
| break; |
| #endif |
| case BOX: |
| m_value.ident = CSSValueWebkitBox; |
| break; |
| case INLINE_BOX: |
| m_value.ident = CSSValueWebkitInlineBox; |
| break; |
| case NONE: |
| m_value.ident = CSSValueNone; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EDisplay() const |
| { |
| if (m_value.ident == CSSValueNone) |
| return NONE; |
| return static_cast<EDisplay>(m_value.ident - CSSValueInline); |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EEmptyCell e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case SHOW: |
| m_value.ident = CSSValueShow; |
| break; |
| case HIDE: |
| m_value.ident = CSSValueHide; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EEmptyCell() const |
| { |
| switch (m_value.ident) { |
| case CSSValueShow: |
| return SHOW; |
| case CSSValueHide: |
| return HIDE; |
| default: |
| ASSERT_NOT_REACHED(); |
| return SHOW; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EFloat e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case FNONE: |
| m_value.ident = CSSValueNone; |
| break; |
| case FLEFT: |
| m_value.ident = CSSValueLeft; |
| break; |
| case FRIGHT: |
| m_value.ident = CSSValueRight; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EFloat() const |
| { |
| switch (m_value.ident) { |
| case CSSValueLeft: |
| return FLEFT; |
| case CSSValueRight: |
| return FRIGHT; |
| case CSSValueNone: |
| case CSSValueCenter: // Non-standard CSS value |
| return FNONE; |
| default: |
| ASSERT_NOT_REACHED(); |
| return FNONE; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EKHTMLLineBreak e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case LBNORMAL: |
| m_value.ident = CSSValueNormal; |
| break; |
| case AFTER_WHITE_SPACE: |
| m_value.ident = CSSValueAfterWhiteSpace; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EKHTMLLineBreak() const |
| { |
| switch (m_value.ident) { |
| case CSSValueAfterWhiteSpace: |
| return AFTER_WHITE_SPACE; |
| case CSSValueNormal: |
| return LBNORMAL; |
| default: |
| ASSERT_NOT_REACHED(); |
| return LBNORMAL; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EListStylePosition e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case OUTSIDE: |
| m_value.ident = CSSValueOutside; |
| break; |
| case INSIDE: |
| m_value.ident = CSSValueInside; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EListStylePosition() const |
| { |
| return (EListStylePosition)(m_value.ident - CSSValueOutside); |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EListStyleType e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case Afar: |
| m_value.ident = CSSValueAfar; |
| break; |
| case Amharic: |
| m_value.ident = CSSValueAmharic; |
| break; |
| case AmharicAbegede: |
| m_value.ident = CSSValueAmharicAbegede; |
| break; |
| case ArabicIndic: |
| m_value.ident = CSSValueArabicIndic; |
| break; |
| case Armenian: |
| m_value.ident = CSSValueArmenian; |
| break; |
| case Asterisks: |
| m_value.ident = CSSValueAsterisks; |
| break; |
| case BinaryListStyle: |
| m_value.ident = CSSValueBinary; |
| break; |
| case Bengali: |
| m_value.ident = CSSValueBengali; |
| break; |
| case Cambodian: |
| m_value.ident = CSSValueCambodian; |
| break; |
| case Circle: |
| m_value.ident = CSSValueCircle; |
| break; |
| case CjkEarthlyBranch: |
| m_value.ident = CSSValueCjkEarthlyBranch; |
| break; |
| case CjkHeavenlyStem: |
| m_value.ident = CSSValueCjkHeavenlyStem; |
| break; |
| case CJKIdeographic: |
| m_value.ident = CSSValueCjkIdeographic; |
| break; |
| case DecimalLeadingZero: |
| m_value.ident = CSSValueDecimalLeadingZero; |
| break; |
| case DecimalListStyle: |
| m_value.ident = CSSValueDecimal; |
| break; |
| case Devanagari: |
| m_value.ident = CSSValueDevanagari; |
| break; |
| case Disc: |
| m_value.ident = CSSValueDisc; |
| break; |
| case Ethiopic: |
| m_value.ident = CSSValueEthiopic; |
| break; |
| case EthiopicAbegede: |
| m_value.ident = CSSValueEthiopicAbegede; |
| break; |
| case EthiopicAbegedeAmEt: |
| m_value.ident = CSSValueEthiopicAbegedeAmEt; |
| break; |
| case EthiopicAbegedeGez: |
| m_value.ident = CSSValueEthiopicAbegedeGez; |
| break; |
| case EthiopicAbegedeTiEr: |
| m_value.ident = CSSValueEthiopicAbegedeTiEr; |
| break; |
| case EthiopicAbegedeTiEt: |
| m_value.ident = CSSValueEthiopicAbegedeTiEt; |
| break; |
| case EthiopicHalehameAaEr: |
| m_value.ident = CSSValueEthiopicHalehameAaEr; |
| break; |
| case EthiopicHalehameAaEt: |
| m_value.ident = CSSValueEthiopicHalehameAaEt; |
| break; |
| case EthiopicHalehameAmEt: |
| m_value.ident = CSSValueEthiopicHalehameAmEt; |
| break; |
| case EthiopicHalehameGez: |
| m_value.ident = CSSValueEthiopicHalehameGez; |
| break; |
| case EthiopicHalehameOmEt: |
| m_value.ident = CSSValueEthiopicHalehameOmEt; |
| break; |
| case EthiopicHalehameSidEt: |
| m_value.ident = CSSValueEthiopicHalehameSidEt; |
| break; |
| case EthiopicHalehameSoEt: |
| m_value.ident = CSSValueEthiopicHalehameSoEt; |
| break; |
| case EthiopicHalehameTiEr: |
| m_value.ident = CSSValueEthiopicHalehameTiEr; |
| break; |
| case EthiopicHalehameTiEt: |
| m_value.ident = CSSValueEthiopicHalehameTiEt; |
| break; |
| case EthiopicHalehameTig: |
| m_value.ident = CSSValueEthiopicHalehameTig; |
| break; |
| case Footnotes: |
| m_value.ident = CSSValueFootnotes; |
| break; |
| case Georgian: |
| m_value.ident = CSSValueGeorgian; |
| break; |
| case Gujarati: |
| m_value.ident = CSSValueGujarati; |
| break; |
| case Gurmukhi: |
| m_value.ident = CSSValueGurmukhi; |
| break; |
| case Hangul: |
| m_value.ident = CSSValueHangul; |
| break; |
| case HangulConsonant: |
| m_value.ident = CSSValueHangulConsonant; |
| break; |
| case Hebrew: |
| m_value.ident = CSSValueHebrew; |
| break; |
| case Hiragana: |
| m_value.ident = CSSValueHiragana; |
| break; |
| case HiraganaIroha: |
| m_value.ident = CSSValueHiraganaIroha; |
| break; |
| case Kannada: |
| m_value.ident = CSSValueKannada; |
| break; |
| case Katakana: |
| m_value.ident = CSSValueKatakana; |
| break; |
| case KatakanaIroha: |
| m_value.ident = CSSValueKatakanaIroha; |
| break; |
| case Khmer: |
| m_value.ident = CSSValueKhmer; |
| break; |
| case Lao: |
| m_value.ident = CSSValueLao; |
| break; |
| case LowerAlpha: |
| m_value.ident = CSSValueLowerAlpha; |
| break; |
| case LowerArmenian: |
| m_value.ident = CSSValueLowerArmenian; |
| break; |
| case LowerGreek: |
| m_value.ident = CSSValueLowerGreek; |
| break; |
| case LowerHexadecimal: |
| m_value.ident = CSSValueLowerHexadecimal; |
| break; |
| case LowerLatin: |
| m_value.ident = CSSValueLowerLatin; |
| break; |
| case LowerNorwegian: |
| m_value.ident = CSSValueLowerNorwegian; |
| break; |
| case LowerRoman: |
| m_value.ident = CSSValueLowerRoman; |
| break; |
| case Malayalam: |
| m_value.ident = CSSValueMalayalam; |
| break; |
| case Mongolian: |
| m_value.ident = CSSValueMongolian; |
| break; |
| case Myanmar: |
| m_value.ident = CSSValueMyanmar; |
| break; |
| case NoneListStyle: |
| m_value.ident = CSSValueNone; |
| break; |
| case Octal: |
| m_value.ident = CSSValueOctal; |
| break; |
| case Oriya: |
| m_value.ident = CSSValueOriya; |
| break; |
| case Oromo: |
| m_value.ident = CSSValueOromo; |
| break; |
| case Persian: |
| m_value.ident = CSSValuePersian; |
| break; |
| case Sidama: |
| m_value.ident = CSSValueSidama; |
| break; |
| case Somali: |
| m_value.ident = CSSValueSomali; |
| break; |
| case Square: |
| m_value.ident = CSSValueSquare; |
| break; |
| case Telugu: |
| m_value.ident = CSSValueTelugu; |
| break; |
| case Thai: |
| m_value.ident = CSSValueThai; |
| break; |
| case Tibetan: |
| m_value.ident = CSSValueTibetan; |
| break; |
| case Tigre: |
| m_value.ident = CSSValueTigre; |
| break; |
| case TigrinyaEr: |
| m_value.ident = CSSValueTigrinyaEr; |
| break; |
| case TigrinyaErAbegede: |
| m_value.ident = CSSValueTigrinyaErAbegede; |
| break; |
| case TigrinyaEt: |
| m_value.ident = CSSValueTigrinyaEt; |
| break; |
| case TigrinyaEtAbegede: |
| m_value.ident = CSSValueTigrinyaEtAbegede; |
| break; |
| case UpperAlpha: |
| m_value.ident = CSSValueUpperAlpha; |
| break; |
| case UpperArmenian: |
| m_value.ident = CSSValueUpperArmenian; |
| break; |
| case UpperGreek: |
| m_value.ident = CSSValueUpperGreek; |
| break; |
| case UpperHexadecimal: |
| m_value.ident = CSSValueUpperHexadecimal; |
| break; |
| case UpperLatin: |
| m_value.ident = CSSValueUpperLatin; |
| break; |
| case UpperNorwegian: |
| m_value.ident = CSSValueUpperNorwegian; |
| break; |
| case UpperRoman: |
| m_value.ident = CSSValueUpperRoman; |
| break; |
| case Urdu: |
| m_value.ident = CSSValueUrdu; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EListStyleType() const |
| { |
| switch (m_value.ident) { |
| case CSSValueNone: |
| return NoneListStyle; |
| default: |
| return static_cast<EListStyleType>(m_value.ident - CSSValueDisc); |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EMarginCollapse e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case MCOLLAPSE: |
| m_value.ident = CSSValueCollapse; |
| break; |
| case MSEPARATE: |
| m_value.ident = CSSValueSeparate; |
| break; |
| case MDISCARD: |
| m_value.ident = CSSValueDiscard; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EMarginCollapse() const |
| { |
| switch (m_value.ident) { |
| case CSSValueCollapse: |
| return MCOLLAPSE; |
| case CSSValueSeparate: |
| return MSEPARATE; |
| case CSSValueDiscard: |
| return MDISCARD; |
| default: |
| ASSERT_NOT_REACHED(); |
| return MCOLLAPSE; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EMarqueeBehavior e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case MNONE: |
| m_value.ident = CSSValueNone; |
| break; |
| case MSCROLL: |
| m_value.ident = CSSValueScroll; |
| break; |
| case MSLIDE: |
| m_value.ident = CSSValueSlide; |
| break; |
| case MALTERNATE: |
| m_value.ident = CSSValueAlternate; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EMarqueeBehavior() const |
| { |
| switch (m_value.ident) { |
| case CSSValueNone: |
| return MNONE; |
| case CSSValueScroll: |
| return MSCROLL; |
| case CSSValueSlide: |
| return MSLIDE; |
| case CSSValueAlternate: |
| return MALTERNATE; |
| default: |
| ASSERT_NOT_REACHED(); |
| return MNONE; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EMarqueeDirection e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case MFORWARD: |
| m_value.ident = CSSValueForwards; |
| break; |
| case MBACKWARD: |
| m_value.ident = CSSValueBackwards; |
| break; |
| case MAUTO: |
| m_value.ident = CSSValueAuto; |
| break; |
| case MUP: |
| m_value.ident = CSSValueUp; |
| break; |
| case MDOWN: |
| m_value.ident = CSSValueDown; |
| break; |
| case MLEFT: |
| m_value.ident = CSSValueLeft; |
| break; |
| case MRIGHT: |
| m_value.ident = CSSValueRight; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EMarqueeDirection() const |
| { |
| switch (m_value.ident) { |
| case CSSValueForwards: |
| return MFORWARD; |
| case CSSValueBackwards: |
| return MBACKWARD; |
| case CSSValueAuto: |
| return MAUTO; |
| case CSSValueAhead: |
| case CSSValueUp: // We don't support vertical languages, so AHEAD just maps to UP. |
| return MUP; |
| case CSSValueReverse: |
| case CSSValueDown: // REVERSE just maps to DOWN, since we don't do vertical text. |
| return MDOWN; |
| case CSSValueLeft: |
| return MLEFT; |
| case CSSValueRight: |
| return MRIGHT; |
| default: |
| ASSERT_NOT_REACHED(); |
| return MAUTO; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EMatchNearestMailBlockquoteColor e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case BCNORMAL: |
| m_value.ident = CSSValueNormal; |
| break; |
| case MATCH: |
| m_value.ident = CSSValueMatch; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EMatchNearestMailBlockquoteColor() const |
| { |
| switch (m_value.ident) { |
| case CSSValueNormal: |
| return BCNORMAL; |
| case CSSValueMatch: |
| return MATCH; |
| default: |
| ASSERT_NOT_REACHED(); |
| return BCNORMAL; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ENBSPMode e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case NBNORMAL: |
| m_value.ident = CSSValueNormal; |
| break; |
| case SPACE: |
| m_value.ident = CSSValueSpace; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator ENBSPMode() const |
| { |
| switch (m_value.ident) { |
| case CSSValueSpace: |
| return SPACE; |
| case CSSValueNormal: |
| return NBNORMAL; |
| default: |
| ASSERT_NOT_REACHED(); |
| return NBNORMAL; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EOverflow e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case OVISIBLE: |
| m_value.ident = CSSValueVisible; |
| break; |
| case OHIDDEN: |
| m_value.ident = CSSValueHidden; |
| break; |
| case OSCROLL: |
| m_value.ident = CSSValueScroll; |
| break; |
| case OAUTO: |
| m_value.ident = CSSValueAuto; |
| break; |
| case OMARQUEE: |
| m_value.ident = CSSValueWebkitMarquee; |
| break; |
| case OOVERLAY: |
| m_value.ident = CSSValueOverlay; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EOverflow() const |
| { |
| switch (m_value.ident) { |
| case CSSValueVisible: |
| return OVISIBLE; |
| case CSSValueHidden: |
| return OHIDDEN; |
| case CSSValueScroll: |
| return OSCROLL; |
| case CSSValueAuto: |
| return OAUTO; |
| case CSSValueWebkitMarquee: |
| return OMARQUEE; |
| case CSSValueOverlay: |
| return OOVERLAY; |
| default: |
| ASSERT_NOT_REACHED(); |
| return OVISIBLE; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EPageBreak e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case PBAUTO: |
| m_value.ident = CSSValueAuto; |
| break; |
| case PBALWAYS: |
| m_value.ident = CSSValueAlways; |
| break; |
| case PBAVOID: |
| m_value.ident = CSSValueAvoid; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EPageBreak() const |
| { |
| switch (m_value.ident) { |
| case CSSValueAuto: |
| return PBAUTO; |
| case CSSValueLeft: |
| case CSSValueRight: |
| case CSSValueAlways: |
| return PBALWAYS; // CSS2.1: "Conforming user agents may map left/right to always." |
| case CSSValueAvoid: |
| return PBAVOID; |
| default: |
| ASSERT_NOT_REACHED(); |
| return PBAUTO; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EPosition e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case StaticPosition: |
| m_value.ident = CSSValueStatic; |
| break; |
| case RelativePosition: |
| m_value.ident = CSSValueRelative; |
| break; |
| case AbsolutePosition: |
| m_value.ident = CSSValueAbsolute; |
| break; |
| case FixedPosition: |
| m_value.ident = CSSValueFixed; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EPosition() const |
| { |
| switch (m_value.ident) { |
| case CSSValueStatic: |
| return StaticPosition; |
| case CSSValueRelative: |
| return RelativePosition; |
| case CSSValueAbsolute: |
| return AbsolutePosition; |
| case CSSValueFixed: |
| return FixedPosition; |
| default: |
| ASSERT_NOT_REACHED(); |
| return StaticPosition; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EResize e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case RESIZE_BOTH: |
| m_value.ident = CSSValueBoth; |
| break; |
| case RESIZE_HORIZONTAL: |
| m_value.ident = CSSValueHorizontal; |
| break; |
| case RESIZE_VERTICAL: |
| m_value.ident = CSSValueVertical; |
| break; |
| case RESIZE_NONE: |
| m_value.ident = CSSValueNone; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EResize() const |
| { |
| switch (m_value.ident) { |
| case CSSValueBoth: |
| return RESIZE_BOTH; |
| case CSSValueHorizontal: |
| return RESIZE_HORIZONTAL; |
| case CSSValueVertical: |
| return RESIZE_VERTICAL; |
| case CSSValueAuto: |
| ASSERT_NOT_REACHED(); // Depends on settings, thus should be handled by the caller. |
| return RESIZE_NONE; |
| case CSSValueNone: |
| return RESIZE_NONE; |
| default: |
| ASSERT_NOT_REACHED(); |
| return RESIZE_NONE; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ETableLayout e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case TAUTO: |
| m_value.ident = CSSValueAuto; |
| break; |
| case TFIXED: |
| m_value.ident = CSSValueFixed; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator ETableLayout() const |
| { |
| switch (m_value.ident) { |
| case CSSValueFixed: |
| return TFIXED; |
| case CSSValueAuto: |
| return TAUTO; |
| default: |
| ASSERT_NOT_REACHED(); |
| return TAUTO; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ETextAlign e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case TAAUTO: |
| m_value.ident = CSSValueWebkitAuto; |
| break; |
| case TASTART: |
| m_value.ident = CSSValueStart; |
| break; |
| case TAEND: |
| m_value.ident = CSSValueEnd; |
| break; |
| case LEFT: |
| m_value.ident = CSSValueLeft; |
| break; |
| case RIGHT: |
| m_value.ident = CSSValueRight; |
| break; |
| case CENTER: |
| m_value.ident = CSSValueCenter; |
| break; |
| case JUSTIFY: |
| m_value.ident = CSSValueJustify; |
| break; |
| case WEBKIT_LEFT: |
| m_value.ident = CSSValueWebkitLeft; |
| break; |
| case WEBKIT_RIGHT: |
| m_value.ident = CSSValueWebkitRight; |
| break; |
| case WEBKIT_CENTER: |
| m_value.ident = CSSValueWebkitCenter; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator ETextAlign() const |
| { |
| switch (m_value.ident) { |
| case CSSValueStart: |
| return TASTART; |
| case CSSValueEnd: |
| return TAEND; |
| default: |
| return static_cast<ETextAlign>(m_value.ident - CSSValueWebkitAuto); |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ETextSecurity e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case TSNONE: |
| m_value.ident = CSSValueNone; |
| break; |
| case TSDISC: |
| m_value.ident = CSSValueDisc; |
| break; |
| case TSCIRCLE: |
| m_value.ident = CSSValueCircle; |
| break; |
| case TSSQUARE: |
| m_value.ident = CSSValueSquare; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator ETextSecurity() const |
| { |
| switch (m_value.ident) { |
| case CSSValueNone: |
| return TSNONE; |
| case CSSValueDisc: |
| return TSDISC; |
| case CSSValueCircle: |
| return TSCIRCLE; |
| case CSSValueSquare: |
| return TSSQUARE; |
| default: |
| ASSERT_NOT_REACHED(); |
| return TSNONE; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ETextTransform e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case CAPITALIZE: |
| m_value.ident = CSSValueCapitalize; |
| break; |
| case UPPERCASE: |
| m_value.ident = CSSValueUppercase; |
| break; |
| case LOWERCASE: |
| m_value.ident = CSSValueLowercase; |
| break; |
| case TTNONE: |
| m_value.ident = CSSValueNone; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator ETextTransform() const |
| { |
| switch (m_value.ident) { |
| case CSSValueCapitalize: |
| return CAPITALIZE; |
| case CSSValueUppercase: |
| return UPPERCASE; |
| case CSSValueLowercase: |
| return LOWERCASE; |
| case CSSValueNone: |
| return TTNONE; |
| default: |
| ASSERT_NOT_REACHED(); |
| return TTNONE; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EUnicodeBidi e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case UBNormal: |
| m_value.ident = CSSValueNormal; |
| break; |
| case Embed: |
| m_value.ident = CSSValueEmbed; |
| break; |
| case Override: |
| m_value.ident = CSSValueBidiOverride; |
| break; |
| case Isolate: |
| m_value.ident = CSSValueWebkitIsolate; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EUnicodeBidi() const |
| { |
| switch (m_value.ident) { |
| case CSSValueNormal: |
| return UBNormal; |
| case CSSValueEmbed: |
| return Embed; |
| case CSSValueBidiOverride: |
| return Override; |
| case CSSValueWebkitIsolate: |
| return Isolate; |
| default: |
| ASSERT_NOT_REACHED(); |
| return UBNormal; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EUserDrag e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case DRAG_AUTO: |
| m_value.ident = CSSValueAuto; |
| break; |
| case DRAG_NONE: |
| m_value.ident = CSSValueNone; |
| break; |
| case DRAG_ELEMENT: |
| m_value.ident = CSSValueElement; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EUserDrag() const |
| { |
| switch (m_value.ident) { |
| case CSSValueAuto: |
| return DRAG_AUTO; |
| case CSSValueNone: |
| return DRAG_NONE; |
| case CSSValueElement: |
| return DRAG_ELEMENT; |
| default: |
| ASSERT_NOT_REACHED(); |
| return DRAG_AUTO; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EUserModify e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case READ_ONLY: |
| m_value.ident = CSSValueReadOnly; |
| break; |
| case READ_WRITE: |
| m_value.ident = CSSValueReadWrite; |
| break; |
| case READ_WRITE_PLAINTEXT_ONLY: |
| m_value.ident = CSSValueReadWritePlaintextOnly; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EUserModify() const |
| { |
| return static_cast<EUserModify>(m_value.ident - CSSValueReadOnly); |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EUserSelect e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case SELECT_NONE: |
| m_value.ident = CSSValueNone; |
| break; |
| case SELECT_TEXT: |
| m_value.ident = CSSValueText; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EUserSelect() const |
| { |
| switch (m_value.ident) { |
| case CSSValueAuto: |
| return SELECT_TEXT; |
| case CSSValueNone: |
| return SELECT_NONE; |
| case CSSValueText: |
| return SELECT_TEXT; |
| default: |
| ASSERT_NOT_REACHED(); |
| return SELECT_TEXT; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EVisibility e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case VISIBLE: |
| m_value.ident = CSSValueVisible; |
| break; |
| case HIDDEN: |
| m_value.ident = CSSValueHidden; |
| break; |
| case COLLAPSE: |
| m_value.ident = CSSValueCollapse; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EVisibility() const |
| { |
| switch (m_value.ident) { |
| case CSSValueHidden: |
| return HIDDEN; |
| case CSSValueVisible: |
| return VISIBLE; |
| case CSSValueCollapse: |
| return COLLAPSE; |
| default: |
| ASSERT_NOT_REACHED(); |
| return VISIBLE; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EWhiteSpace e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case NORMAL: |
| m_value.ident = CSSValueNormal; |
| break; |
| case PRE: |
| m_value.ident = CSSValuePre; |
| break; |
| case PRE_WRAP: |
| m_value.ident = CSSValuePreWrap; |
| break; |
| case PRE_LINE: |
| m_value.ident = CSSValuePreLine; |
| break; |
| case NOWRAP: |
| m_value.ident = CSSValueNowrap; |
| break; |
| case KHTML_NOWRAP: |
| m_value.ident = CSSValueWebkitNowrap; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EWhiteSpace() const |
| { |
| switch (m_value.ident) { |
| case CSSValueWebkitNowrap: |
| return KHTML_NOWRAP; |
| case CSSValueNowrap: |
| return NOWRAP; |
| case CSSValuePre: |
| return PRE; |
| case CSSValuePreWrap: |
| return PRE_WRAP; |
| case CSSValuePreLine: |
| return PRE_LINE; |
| case CSSValueNormal: |
| return NORMAL; |
| default: |
| ASSERT_NOT_REACHED(); |
| return NORMAL; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EWordBreak e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case NormalWordBreak: |
| m_value.ident = CSSValueNormal; |
| break; |
| case BreakAllWordBreak: |
| m_value.ident = CSSValueBreakAll; |
| break; |
| case BreakWordBreak: |
| m_value.ident = CSSValueBreakWord; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EWordBreak() const |
| { |
| switch (m_value.ident) { |
| case CSSValueBreakAll: |
| return BreakAllWordBreak; |
| case CSSValueBreakWord: |
| return BreakWordBreak; |
| case CSSValueNormal: |
| return NormalWordBreak; |
| default: |
| ASSERT_NOT_REACHED(); |
| return NormalWordBreak; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EWordWrap e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case NormalWordWrap: |
| m_value.ident = CSSValueNormal; |
| break; |
| case BreakWordWrap: |
| m_value.ident = CSSValueBreakWord; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EWordWrap() const |
| { |
| switch (m_value.ident) { |
| case CSSValueBreakWord: |
| return BreakWordWrap; |
| case CSSValueNormal: |
| return NormalWordWrap; |
| default: |
| ASSERT_NOT_REACHED(); |
| return NormalWordWrap; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(TextDirection e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case LTR: |
| m_value.ident = CSSValueLtr; |
| break; |
| case RTL: |
| m_value.ident = CSSValueRtl; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator TextDirection() const |
| { |
| switch (m_value.ident) { |
| case CSSValueLtr: |
| return LTR; |
| case CSSValueRtl: |
| return RTL; |
| default: |
| ASSERT_NOT_REACHED(); |
| return LTR; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(WritingMode e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case TopToBottomWritingMode: |
| m_value.ident = CSSValueHorizontalTb; |
| break; |
| case RightToLeftWritingMode: |
| m_value.ident = CSSValueVerticalRl; |
| break; |
| case LeftToRightWritingMode: |
| m_value.ident = CSSValueVerticalLr; |
| break; |
| case BottomToTopWritingMode: |
| m_value.ident = CSSValueHorizontalBt; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator WritingMode() const |
| { |
| switch (m_value.ident) { |
| case CSSValueHorizontalTb: |
| return TopToBottomWritingMode; |
| case CSSValueVerticalRl: |
| return RightToLeftWritingMode; |
| case CSSValueVerticalLr: |
| return LeftToRightWritingMode; |
| case CSSValueHorizontalBt: |
| return BottomToTopWritingMode; |
| default: |
| ASSERT_NOT_REACHED(); |
| return TopToBottomWritingMode; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(TextCombine e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case TextCombineNone: |
| m_value.ident = CSSValueNone; |
| break; |
| case TextCombineHorizontal: |
| m_value.ident = CSSValueHorizontal; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator TextCombine() const |
| { |
| switch (m_value.ident) { |
| case CSSValueNone: |
| return TextCombineNone; |
| case CSSValueHorizontal: |
| return TextCombineHorizontal; |
| default: |
| ASSERT_NOT_REACHED(); |
| return TextCombineNone; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(TextEmphasisPosition position) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (position) { |
| case TextEmphasisPositionOver: |
| m_value.ident = CSSValueOver; |
| break; |
| case TextEmphasisPositionUnder: |
| m_value.ident = CSSValueUnder; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator TextEmphasisPosition() const |
| { |
| switch (m_value.ident) { |
| case CSSValueOver: |
| return TextEmphasisPositionOver; |
| case CSSValueUnder: |
| return TextEmphasisPositionUnder; |
| default: |
| ASSERT_NOT_REACHED(); |
| return TextEmphasisPositionOver; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(TextEmphasisFill fill) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (fill) { |
| case TextEmphasisFillFilled: |
| m_value.ident = CSSValueFilled; |
| break; |
| case TextEmphasisFillOpen: |
| m_value.ident = CSSValueOpen; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator TextEmphasisFill() const |
| { |
| switch (m_value.ident) { |
| case CSSValueFilled: |
| return TextEmphasisFillFilled; |
| case CSSValueOpen: |
| return TextEmphasisFillOpen; |
| default: |
| ASSERT_NOT_REACHED(); |
| return TextEmphasisFillFilled; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(TextEmphasisMark mark) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (mark) { |
| case TextEmphasisMarkDot: |
| m_value.ident = CSSValueDot; |
| break; |
| case TextEmphasisMarkCircle: |
| m_value.ident = CSSValueCircle; |
| break; |
| case TextEmphasisMarkDoubleCircle: |
| m_value.ident = CSSValueDoubleCircle; |
| break; |
| case TextEmphasisMarkTriangle: |
| m_value.ident = CSSValueTriangle; |
| break; |
| case TextEmphasisMarkSesame: |
| m_value.ident = CSSValueSesame; |
| break; |
| case TextEmphasisMarkNone: |
| case TextEmphasisMarkAuto: |
| case TextEmphasisMarkCustom: |
| ASSERT_NOT_REACHED(); |
| m_value.ident = CSSValueNone; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator TextEmphasisMark() const |
| { |
| switch (m_value.ident) { |
| case CSSValueNone: |
| return TextEmphasisMarkNone; |
| case CSSValueDot: |
| return TextEmphasisMarkDot; |
| case CSSValueCircle: |
| return TextEmphasisMarkCircle; |
| case CSSValueDoubleCircle: |
| return TextEmphasisMarkDoubleCircle; |
| case CSSValueTriangle: |
| return TextEmphasisMarkTriangle; |
| case CSSValueSesame: |
| return TextEmphasisMarkSesame; |
| default: |
| ASSERT_NOT_REACHED(); |
| return TextEmphasisMarkNone; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(TextOrientation e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case TextOrientationVerticalRight: |
| m_value.ident = CSSValueVerticalRight; |
| break; |
| case TextOrientationUpright: |
| m_value.ident = CSSValueUpright; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator TextOrientation() const |
| { |
| switch (m_value.ident) { |
| case CSSValueVerticalRight: |
| return TextOrientationVerticalRight; |
| case CSSValueUpright: |
| return TextOrientationUpright; |
| default: |
| ASSERT_NOT_REACHED(); |
| return TextOrientationVerticalRight; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EPointerEvents e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case PE_NONE: |
| m_value.ident = CSSValueNone; |
| break; |
| case PE_STROKE: |
| m_value.ident = CSSValueStroke; |
| break; |
| case PE_FILL: |
| m_value.ident = CSSValueFill; |
| break; |
| case PE_PAINTED: |
| m_value.ident = CSSValuePainted; |
| break; |
| case PE_VISIBLE: |
| m_value.ident = CSSValueVisible; |
| break; |
| case PE_VISIBLE_STROKE: |
| m_value.ident = CSSValueVisiblestroke; |
| break; |
| case PE_VISIBLE_FILL: |
| m_value.ident = CSSValueVisiblefill; |
| break; |
| case PE_VISIBLE_PAINTED: |
| m_value.ident = CSSValueVisiblepainted; |
| break; |
| case PE_AUTO: |
| m_value.ident = CSSValueAuto; |
| break; |
| case PE_ALL: |
| m_value.ident = CSSValueAll; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EPointerEvents() const |
| { |
| switch (m_value.ident) { |
| case CSSValueAll: |
| return PE_ALL; |
| case CSSValueAuto: |
| return PE_AUTO; |
| case CSSValueNone: |
| return PE_NONE; |
| case CSSValueVisiblepainted: |
| return PE_VISIBLE_PAINTED; |
| case CSSValueVisiblefill: |
| return PE_VISIBLE_FILL; |
| case CSSValueVisiblestroke: |
| return PE_VISIBLE_STROKE; |
| case CSSValueVisible: |
| return PE_VISIBLE; |
| case CSSValuePainted: |
| return PE_PAINTED; |
| case CSSValueFill: |
| return PE_FILL; |
| case CSSValueStroke: |
| return PE_STROKE; |
| default: |
| ASSERT_NOT_REACHED(); |
| return PE_ALL; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(FontSmoothingMode smoothing) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (smoothing) { |
| case AutoSmoothing: |
| m_value.ident = CSSValueAuto; |
| return; |
| case NoSmoothing: |
| m_value.ident = CSSValueNone; |
| return; |
| case Antialiased: |
| m_value.ident = CSSValueAntialiased; |
| return; |
| case SubpixelAntialiased: |
| m_value.ident = CSSValueSubpixelAntialiased; |
| return; |
| } |
| |
| ASSERT_NOT_REACHED(); |
| m_value.ident = CSSValueAuto; |
| } |
| |
| template<> inline CSSPrimitiveValue::operator FontSmoothingMode() const |
| { |
| switch (m_value.ident) { |
| case CSSValueAuto: |
| return AutoSmoothing; |
| case CSSValueNone: |
| return NoSmoothing; |
| case CSSValueAntialiased: |
| return Antialiased; |
| case CSSValueSubpixelAntialiased: |
| return SubpixelAntialiased; |
| } |
| |
| ASSERT_NOT_REACHED(); |
| return AutoSmoothing; |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(TextRenderingMode e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case AutoTextRendering: |
| m_value.ident = CSSValueAuto; |
| break; |
| case OptimizeSpeed: |
| m_value.ident = CSSValueOptimizespeed; |
| break; |
| case OptimizeLegibility: |
| m_value.ident = CSSValueOptimizelegibility; |
| break; |
| case GeometricPrecision: |
| m_value.ident = CSSValueGeometricprecision; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator TextRenderingMode() const |
| { |
| switch (m_value.ident) { |
| case CSSValueAuto: |
| return AutoTextRendering; |
| case CSSValueOptimizespeed: |
| return OptimizeSpeed; |
| case CSSValueOptimizelegibility: |
| return OptimizeLegibility; |
| case CSSValueGeometricprecision: |
| return GeometricPrecision; |
| default: |
| ASSERT_NOT_REACHED(); |
| return AutoTextRendering; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ColorSpace space) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (space) { |
| case ColorSpaceDeviceRGB: |
| m_value.ident = CSSValueDefault; |
| break; |
| case ColorSpaceSRGB: |
| m_value.ident = CSSValueSrgb; |
| break; |
| case ColorSpaceLinearRGB: |
| // CSS color correction does not support linearRGB yet. |
| ASSERT_NOT_REACHED(); |
| m_value.ident = CSSValueDefault; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator ColorSpace() const |
| { |
| switch (m_value.ident) { |
| case CSSValueDefault: |
| return ColorSpaceDeviceRGB; |
| case CSSValueSrgb: |
| return ColorSpaceSRGB; |
| default: |
| ASSERT_NOT_REACHED(); |
| return ColorSpaceDeviceRGB; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(Hyphens hyphens) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (hyphens) { |
| case HyphensNone: |
| m_value.ident = CSSValueNone; |
| break; |
| case HyphensManual: |
| m_value.ident = CSSValueManual; |
| break; |
| case HyphensAuto: |
| m_value.ident = CSSValueAuto; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator Hyphens() const |
| { |
| switch (m_value.ident) { |
| case CSSValueNone: |
| return HyphensNone; |
| case CSSValueManual: |
| return HyphensManual; |
| case CSSValueAuto: |
| return HyphensAuto; |
| default: |
| ASSERT_NOT_REACHED(); |
| return HyphensAuto; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ESpeak e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case SpeakNone: |
| m_value.ident = CSSValueNone; |
| break; |
| case SpeakNormal: |
| m_value.ident = CSSValueNormal; |
| break; |
| case SpeakSpellOut: |
| m_value.ident = CSSValueSpellOut; |
| break; |
| case SpeakDigits: |
| m_value.ident = CSSValueDigits; |
| break; |
| case SpeakLiteralPunctuation: |
| m_value.ident = CSSValueLiteralPunctuation; |
| break; |
| case SpeakNoPunctuation: |
| m_value.ident = CSSValueNoPunctuation; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator ESpeak() const |
| { |
| switch (m_value.ident) { |
| case CSSValueNone: |
| return SpeakNone; |
| case CSSValueNormal: |
| return SpeakNormal; |
| case CSSValueSpellOut: |
| return SpeakSpellOut; |
| case CSSValueDigits: |
| return SpeakDigits; |
| case CSSValueLiteralPunctuation: |
| return SpeakLiteralPunctuation; |
| case CSSValueNoPunctuation: |
| return SpeakNoPunctuation; |
| default: |
| ASSERT_NOT_REACHED(); |
| return SpeakNormal; |
| } |
| } |
| |
| #if ENABLE(SVG) |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(LineCap e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case ButtCap: |
| m_value.ident = CSSValueButt; |
| break; |
| case RoundCap: |
| m_value.ident = CSSValueRound; |
| break; |
| case SquareCap: |
| m_value.ident = CSSValueSquare; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator LineCap() const |
| { |
| switch (m_value.ident) { |
| case CSSValueButt: |
| return ButtCap; |
| case CSSValueRound: |
| return RoundCap; |
| case CSSValueSquare: |
| return SquareCap; |
| default: |
| ASSERT_NOT_REACHED(); |
| return ButtCap; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(LineJoin e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case MiterJoin: |
| m_value.ident = CSSValueMiter; |
| break; |
| case RoundJoin: |
| m_value.ident = CSSValueRound; |
| break; |
| case BevelJoin: |
| m_value.ident = CSSValueBevel; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator LineJoin() const |
| { |
| switch (m_value.ident) { |
| case CSSValueMiter: |
| return MiterJoin; |
| case CSSValueRound: |
| return RoundJoin; |
| case CSSValueBevel: |
| return BevelJoin; |
| default: |
| ASSERT_NOT_REACHED(); |
| return MiterJoin; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(WindRule e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case RULE_NONZERO: |
| m_value.ident = CSSValueNonzero; |
| break; |
| case RULE_EVENODD: |
| m_value.ident = CSSValueEvenodd; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator WindRule() const |
| { |
| switch (m_value.ident) { |
| case CSSValueNonzero: |
| return RULE_NONZERO; |
| case CSSValueEvenodd: |
| return RULE_EVENODD; |
| default: |
| ASSERT_NOT_REACHED(); |
| return RULE_NONZERO; |
| } |
| } |
| |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EAlignmentBaseline e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case AB_AUTO: |
| m_value.ident = CSSValueAuto; |
| break; |
| case AB_BASELINE: |
| m_value.ident = CSSValueBaseline; |
| break; |
| case AB_BEFORE_EDGE: |
| m_value.ident = CSSValueBeforeEdge; |
| break; |
| case AB_TEXT_BEFORE_EDGE: |
| m_value.ident = CSSValueTextBeforeEdge; |
| break; |
| case AB_MIDDLE: |
| m_value.ident = CSSValueMiddle; |
| break; |
| case AB_CENTRAL: |
| m_value.ident = CSSValueCentral; |
| break; |
| case AB_AFTER_EDGE: |
| m_value.ident = CSSValueAfterEdge; |
| break; |
| case AB_TEXT_AFTER_EDGE: |
| m_value.ident = CSSValueTextAfterEdge; |
| break; |
| case AB_IDEOGRAPHIC: |
| m_value.ident = CSSValueIdeographic; |
| break; |
| case AB_ALPHABETIC: |
| m_value.ident = CSSValueAlphabetic; |
| break; |
| case AB_HANGING: |
| m_value.ident = CSSValueHanging; |
| break; |
| case AB_MATHEMATICAL: |
| m_value.ident = CSSValueMathematical; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EAlignmentBaseline() const |
| { |
| switch (m_value.ident) { |
| case CSSValueAuto: |
| return AB_AUTO; |
| case CSSValueBaseline: |
| return AB_BASELINE; |
| case CSSValueBeforeEdge: |
| return AB_BEFORE_EDGE; |
| case CSSValueTextBeforeEdge: |
| return AB_TEXT_BEFORE_EDGE; |
| case CSSValueMiddle: |
| return AB_MIDDLE; |
| case CSSValueCentral: |
| return AB_CENTRAL; |
| case CSSValueAfterEdge: |
| return AB_AFTER_EDGE; |
| case CSSValueTextAfterEdge: |
| return AB_TEXT_AFTER_EDGE; |
| case CSSValueIdeographic: |
| return AB_IDEOGRAPHIC; |
| case CSSValueAlphabetic: |
| return AB_ALPHABETIC; |
| case CSSValueHanging: |
| return AB_HANGING; |
| case CSSValueMathematical: |
| return AB_MATHEMATICAL; |
| default: |
| ASSERT_NOT_REACHED(); |
| return AB_AUTO; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EColorInterpolation e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case CI_AUTO: |
| m_value.ident = CSSValueAuto; |
| break; |
| case CI_SRGB: |
| m_value.ident = CSSValueSrgb; |
| break; |
| case CI_LINEARRGB: |
| m_value.ident = CSSValueLinearrgb; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EColorInterpolation() const |
| { |
| switch (m_value.ident) { |
| case CSSValueSrgb: |
| return CI_SRGB; |
| case CSSValueLinearrgb: |
| return CI_LINEARRGB; |
| case CSSValueAuto: |
| return CI_AUTO; |
| default: |
| ASSERT_NOT_REACHED(); |
| return CI_AUTO; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EColorRendering e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case CR_AUTO: |
| m_value.ident = CSSValueAuto; |
| break; |
| case CR_OPTIMIZESPEED: |
| m_value.ident = CSSValueOptimizespeed; |
| break; |
| case CR_OPTIMIZEQUALITY: |
| m_value.ident = CSSValueOptimizequality; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EColorRendering() const |
| { |
| switch (m_value.ident) { |
| case CSSValueOptimizespeed: |
| return CR_OPTIMIZESPEED; |
| case CSSValueOptimizequality: |
| return CR_OPTIMIZEQUALITY; |
| case CSSValueAuto: |
| return CR_AUTO; |
| default: |
| ASSERT_NOT_REACHED(); |
| return CR_AUTO; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EDominantBaseline e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case DB_AUTO: |
| m_value.ident = CSSValueAuto; |
| break; |
| case DB_USE_SCRIPT: |
| m_value.ident = CSSValueUseScript; |
| break; |
| case DB_NO_CHANGE: |
| m_value.ident = CSSValueNoChange; |
| break; |
| case DB_RESET_SIZE: |
| m_value.ident = CSSValueResetSize; |
| break; |
| case DB_CENTRAL: |
| m_value.ident = CSSValueCentral; |
| break; |
| case DB_MIDDLE: |
| m_value.ident = CSSValueMiddle; |
| break; |
| case DB_TEXT_BEFORE_EDGE: |
| m_value.ident = CSSValueTextBeforeEdge; |
| break; |
| case DB_TEXT_AFTER_EDGE: |
| m_value.ident = CSSValueTextAfterEdge; |
| break; |
| case DB_IDEOGRAPHIC: |
| m_value.ident = CSSValueIdeographic; |
| break; |
| case DB_ALPHABETIC: |
| m_value.ident = CSSValueAlphabetic; |
| break; |
| case DB_HANGING: |
| m_value.ident = CSSValueHanging; |
| break; |
| case DB_MATHEMATICAL: |
| m_value.ident = CSSValueMathematical; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EDominantBaseline() const |
| { |
| switch (m_value.ident) { |
| case CSSValueAuto: |
| return DB_AUTO; |
| case CSSValueUseScript: |
| return DB_USE_SCRIPT; |
| case CSSValueNoChange: |
| return DB_NO_CHANGE; |
| case CSSValueResetSize: |
| return DB_RESET_SIZE; |
| case CSSValueIdeographic: |
| return DB_IDEOGRAPHIC; |
| case CSSValueAlphabetic: |
| return DB_ALPHABETIC; |
| case CSSValueHanging: |
| return DB_HANGING; |
| case CSSValueMathematical: |
| return DB_MATHEMATICAL; |
| case CSSValueCentral: |
| return DB_CENTRAL; |
| case CSSValueMiddle: |
| return DB_MIDDLE; |
| case CSSValueTextAfterEdge: |
| return DB_TEXT_AFTER_EDGE; |
| case CSSValueTextBeforeEdge: |
| return DB_TEXT_BEFORE_EDGE; |
| default: |
| ASSERT_NOT_REACHED(); |
| return DB_AUTO; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EImageRendering e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case IR_AUTO: |
| m_value.ident = CSSValueAuto; |
| break; |
| case IR_OPTIMIZESPEED: |
| m_value.ident = CSSValueOptimizespeed; |
| break; |
| case IR_OPTIMIZEQUALITY: |
| m_value.ident = CSSValueOptimizequality; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EImageRendering() const |
| { |
| switch (m_value.ident) { |
| case CSSValueAuto: |
| return IR_AUTO; |
| case CSSValueOptimizespeed: |
| return IR_OPTIMIZESPEED; |
| case CSSValueOptimizequality: |
| return IR_OPTIMIZEQUALITY; |
| default: |
| ASSERT_NOT_REACHED(); |
| return IR_AUTO; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EShapeRendering e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case IR_AUTO: |
| m_value.ident = CSSValueAuto; |
| break; |
| case IR_OPTIMIZESPEED: |
| m_value.ident = CSSValueOptimizespeed; |
| break; |
| case SR_CRISPEDGES: |
| m_value.ident = CSSValueCrispedges; |
| break; |
| case SR_GEOMETRICPRECISION: |
| m_value.ident = CSSValueGeometricprecision; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EShapeRendering() const |
| { |
| switch (m_value.ident) { |
| case CSSValueAuto: |
| return SR_AUTO; |
| case CSSValueOptimizespeed: |
| return SR_OPTIMIZESPEED; |
| case CSSValueCrispedges: |
| return SR_CRISPEDGES; |
| case CSSValueGeometricprecision: |
| return SR_GEOMETRICPRECISION; |
| default: |
| ASSERT_NOT_REACHED(); |
| return SR_AUTO; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ETextAnchor e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case TA_START: |
| m_value.ident = CSSValueStart; |
| break; |
| case TA_MIDDLE: |
| m_value.ident = CSSValueMiddle; |
| break; |
| case TA_END: |
| m_value.ident = CSSValueEnd; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator ETextAnchor() const |
| { |
| switch (m_value.ident) { |
| case CSSValueStart: |
| return TA_START; |
| case CSSValueMiddle: |
| return TA_MIDDLE; |
| case CSSValueEnd: |
| return TA_END; |
| default: |
| ASSERT_NOT_REACHED(); |
| return TA_START; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(SVGWritingMode e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case WM_LRTB: |
| m_value.ident = CSSValueLrTb; |
| break; |
| case WM_LR: |
| m_value.ident = CSSValueLr; |
| break; |
| case WM_RLTB: |
| m_value.ident = CSSValueRlTb; |
| break; |
| case WM_RL: |
| m_value.ident = CSSValueRl; |
| break; |
| case WM_TBRL: |
| m_value.ident = CSSValueTbRl; |
| break; |
| case WM_TB: |
| m_value.ident = CSSValueTb; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator SVGWritingMode() const |
| { |
| switch (m_value.ident) { |
| case CSSValueLrTb: |
| return WM_LRTB; |
| case CSSValueLr: |
| return WM_LR; |
| case CSSValueRlTb: |
| return WM_RLTB; |
| case CSSValueRl: |
| return WM_RL; |
| case CSSValueTbRl: |
| return WM_TBRL; |
| case CSSValueTb: |
| return WM_TB; |
| default: |
| ASSERT_NOT_REACHED(); |
| return WM_LRTB; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EVectorEffect e) |
| : m_type(CSS_IDENT) |
| , m_hasCachedCSSText(false) |
| { |
| switch (e) { |
| case VE_NONE: |
| m_value.ident = CSSValueNone; |
| break; |
| case VE_NON_SCALING_STROKE: |
| m_value.ident = CSSValueNonScalingStroke; |
| break; |
| } |
| } |
| |
| template<> inline CSSPrimitiveValue::operator EVectorEffect() const |
| { |
| switch (m_value.ident) { |
| case CSSValueNone: |
| return VE_NONE; |
| case CSSValueNonScalingStroke: |
| return VE_NON_SCALING_STROKE; |
| default: |
| ASSERT_NOT_REACHED(); |
| return VE_NONE; |
| } |
| } |
| |
| #endif |
| |
| } |
| |
| #endif |