Home | History | Annotate | Download | only in style
      1 /*
      2  * Copyright (C) 2000 Lars Knoll (knoll (at) kde.org)
      3  *           (C) 2000 Antti Koivisto (koivisto (at) kde.org)
      4  *           (C) 2000 Dirk Mueller (mueller (at) kde.org)
      5  * Copyright (C) 2003, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
      6  * Copyright (C) 2006 Graham Dennis (graham.dennis (at) gmail.com)
      7  * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
      8  *
      9  * This library is free software; you can redistribute it and/or
     10  * modify it under the terms of the GNU Library General Public
     11  * License as published by the Free Software Foundation; either
     12  * version 2 of the License, or (at your option) any later version.
     13  *
     14  * This library is distributed in the hope that it will be useful,
     15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     17  * Library General Public License for more details.
     18  *
     19  * You should have received a copy of the GNU Library General Public License
     20  * along with this library; see the file COPYING.LIB.  If not, write to
     21  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
     22  * Boston, MA 02110-1301, USA.
     23  *
     24  */
     25 
     26 #ifndef RenderStyleConstants_h
     27 #define RenderStyleConstants_h
     28 
     29 namespace WebCore {
     30 
     31 /*
     32  * WARNING:
     33  * --------
     34  *
     35  * The order of the values in the enums have to agree with the order specified
     36  * in CSSValueKeywords.in, otherwise some optimizations in the parser will fail,
     37  * and produce invalid results.
     38  */
     39 
     40 // The difference between two styles.  The following values are used:
     41 // (1) StyleDifferenceEqual - The two styles are identical
     42 // (2) StyleDifferenceRecompositeLayer - The layer needs its position and transform updated, but no repaint
     43 // (3) StyleDifferenceRepaint - The object just needs to be repainted.
     44 // (4) StyleDifferenceRepaintLayer - The layer and its descendant layers needs to be repainted.
     45 // (5) StyleDifferenceLayout - A layout is required.
     46 enum StyleDifference {
     47     StyleDifferenceEqual,
     48 #if USE(ACCELERATED_COMPOSITING)
     49     StyleDifferenceRecompositeLayer,
     50 #endif
     51     StyleDifferenceRepaint,
     52     StyleDifferenceRepaintLayer,
     53     StyleDifferenceLayoutPositionedMovementOnly,
     54     StyleDifferenceLayout
     55 };
     56 
     57 // When some style properties change, different amounts of work have to be done depending on
     58 // context (e.g. whether the property is changing on an element which has a compositing layer).
     59 // A simple StyleDifference does not provide enough information so we return a bit mask of
     60 // StyleDifferenceContextSensitiveProperties from RenderStyle::diff() too.
     61 enum StyleDifferenceContextSensitiveProperty {
     62     ContextSensitivePropertyNone = 0,
     63     ContextSensitivePropertyTransform = (1 << 0),
     64     ContextSensitivePropertyOpacity = (1 << 1)
     65 };
     66 
     67 // Static pseudo styles. Dynamic ones are produced on the fly.
     68 enum PseudoId {
     69     NOPSEUDO, FIRST_LINE, FIRST_LETTER, BEFORE, AFTER, SELECTION, FIRST_LINE_INHERITED, SCROLLBAR, FILE_UPLOAD_BUTTON, INPUT_PLACEHOLDER,
     70     SLIDER_THUMB, SEARCH_CANCEL_BUTTON, SEARCH_DECORATION, SEARCH_RESULTS_DECORATION, SEARCH_RESULTS_BUTTON, MEDIA_CONTROLS_PANEL,
     71     MEDIA_CONTROLS_PLAY_BUTTON, MEDIA_CONTROLS_MUTE_BUTTON, MEDIA_CONTROLS_TIMELINE, MEDIA_CONTROLS_TIMELINE_CONTAINER,
     72     MEDIA_CONTROLS_VOLUME_SLIDER, MEDIA_CONTROLS_VOLUME_SLIDER_CONTAINER, MEDIA_CONTROLS_CURRENT_TIME_DISPLAY, MEDIA_CONTROLS_TIME_REMAINING_DISPLAY,
     73     MEDIA_CONTROLS_SEEK_BACK_BUTTON, MEDIA_CONTROLS_SEEK_FORWARD_BUTTON, MEDIA_CONTROLS_FULLSCREEN_BUTTON, MEDIA_CONTROLS_REWIND_BUTTON,
     74     MEDIA_CONTROLS_RETURN_TO_REALTIME_BUTTON, MEDIA_CONTROLS_TOGGLE_CLOSED_CAPTIONS_BUTTON,
     75     MEDIA_CONTROLS_STATUS_DISPLAY, SCROLLBAR_THUMB, SCROLLBAR_BUTTON, SCROLLBAR_TRACK, SCROLLBAR_TRACK_PIECE, SCROLLBAR_CORNER, RESIZER,
     76     INPUT_LIST_BUTTON, INNER_SPIN_BUTTON, OUTER_SPIN_BUTTON,
     77 
     78     FIRST_INTERNAL_PSEUDOID = FILE_UPLOAD_BUTTON
     79 };
     80 
     81 // These have been defined in the order of their precedence for border-collapsing. Do
     82 // not change this order!
     83 enum EBorderStyle { BNONE, BHIDDEN, INSET, GROOVE, RIDGE, OUTSET, DOTTED, DASHED, SOLID, DOUBLE };
     84 
     85 enum EBorderPrecedence { BOFF, BTABLE, BCOLGROUP, BCOL, BROWGROUP, BROW, BCELL };
     86 
     87 enum PseudoState { PseudoUnknown, PseudoNone, PseudoAnyLink, PseudoLink, PseudoVisited};
     88 
     89 enum EPosition {
     90     StaticPosition, RelativePosition, AbsolutePosition, FixedPosition
     91 };
     92 
     93 enum EFloat {
     94     FNONE = 0, FLEFT, FRIGHT
     95 };
     96 
     97 
     98 enum EMarginCollapse { MCOLLAPSE, MSEPARATE, MDISCARD };
     99 
    100 // Box attributes. Not inherited.
    101 
    102 enum EBoxSizing { CONTENT_BOX, BORDER_BOX };
    103 
    104 // Random visual rendering model attributes. Not inherited.
    105 
    106 enum EOverflow {
    107     OVISIBLE, OHIDDEN, OSCROLL, OAUTO, OOVERLAY, OMARQUEE
    108 };
    109 
    110 enum EVerticalAlign {
    111     BASELINE, MIDDLE, SUB, SUPER, TEXT_TOP,
    112     TEXT_BOTTOM, TOP, BOTTOM, BASELINE_MIDDLE, LENGTH
    113 };
    114 
    115 enum EClear {
    116     CNONE = 0, CLEFT = 1, CRIGHT = 2, CBOTH = 3
    117 };
    118 
    119 enum ETableLayout {
    120     TAUTO, TFIXED
    121 };
    122 
    123 enum EUnicodeBidi {
    124     UBNormal, Embed, Override
    125 };
    126 
    127 enum EFillAttachment {
    128     ScrollBackgroundAttachment, LocalBackgroundAttachment, FixedBackgroundAttachment
    129 };
    130 
    131 enum EFillBox {
    132     BorderFillBox, PaddingFillBox, ContentFillBox, TextFillBox
    133 };
    134 
    135 enum EFillRepeat {
    136     RepeatFill, NoRepeatFill, RoundFill, SpaceFill
    137 };
    138 
    139 enum EFillLayerType {
    140     BackgroundFillLayer, MaskFillLayer
    141 };
    142 
    143 // CSS3 Background Values
    144 enum EFillSizeType { Contain, Cover, SizeLength, SizeNone };
    145 
    146 // CSS3 Marquee Properties
    147 
    148 enum EMarqueeBehavior { MNONE, MSCROLL, MSLIDE, MALTERNATE };
    149 enum EMarqueeDirection { MAUTO = 0, MLEFT = 1, MRIGHT = -1, MUP = 2, MDOWN = -2, MFORWARD = 3, MBACKWARD = -3 };
    150 
    151 // CSS3 Flexible Box Properties
    152 
    153 enum EBoxAlignment { BSTRETCH, BSTART, BCENTER, BEND, BJUSTIFY, BBASELINE };
    154 enum EBoxOrient { HORIZONTAL, VERTICAL };
    155 enum EBoxLines { SINGLE, MULTIPLE };
    156 enum EBoxDirection { BNORMAL, BREVERSE };
    157 
    158 enum ETextSecurity {
    159     TSNONE, TSDISC, TSCIRCLE, TSSQUARE
    160 };
    161 
    162 // CSS3 User Modify Properties
    163 
    164 enum EUserModify {
    165     READ_ONLY, READ_WRITE, READ_WRITE_PLAINTEXT_ONLY
    166 };
    167 
    168 // CSS3 User Drag Values
    169 
    170 enum EUserDrag {
    171     DRAG_AUTO, DRAG_NONE, DRAG_ELEMENT
    172 };
    173 
    174 // CSS3 User Select Values
    175 
    176 enum EUserSelect {
    177     SELECT_NONE, SELECT_TEXT
    178 };
    179 
    180 // Word Break Values. Matches WinIE, rather than CSS3
    181 
    182 enum EWordBreak {
    183     NormalWordBreak, BreakAllWordBreak, BreakWordBreak
    184 };
    185 
    186 enum EWordWrap {
    187     NormalWordWrap, BreakWordWrap
    188 };
    189 
    190 enum ENBSPMode {
    191     NBNORMAL, SPACE
    192 };
    193 
    194 enum EKHTMLLineBreak {
    195     LBNORMAL, AFTER_WHITE_SPACE
    196 };
    197 
    198 enum EMatchNearestMailBlockquoteColor {
    199     BCNORMAL, MATCH
    200 };
    201 
    202 enum EResize {
    203     RESIZE_NONE, RESIZE_BOTH, RESIZE_HORIZONTAL, RESIZE_VERTICAL
    204 };
    205 
    206 // The order of this enum must match the order of the list style types in CSSValueKeywords.in.
    207 enum EListStyleType {
    208     Disc,
    209     Circle,
    210     Square,
    211     DecimalListStyle,
    212     DecimalLeadingZero,
    213     ArabicIndic,
    214     BinaryListStyle,
    215     Bengali,
    216     Cambodian,
    217     Khmer,
    218     Devanagari,
    219     Gujarati,
    220     Gurmukhi,
    221     Kannada,
    222     LowerHexadecimal,
    223     Lao,
    224     Malayalam,
    225     Mongolian,
    226     Myanmar,
    227     Octal,
    228     Oriya,
    229     Persian,
    230     Urdu,
    231     Telugu,
    232     Tibetan,
    233     Thai,
    234     UpperHexadecimal,
    235     LowerRoman,
    236     UpperRoman,
    237     LowerGreek,
    238     LowerAlpha,
    239     LowerLatin,
    240     UpperAlpha,
    241     UpperLatin,
    242     Afar,
    243     EthiopicHalehameAaEt,
    244     EthiopicHalehameAaEr,
    245     Amharic,
    246     EthiopicHalehameAmEt,
    247     AmharicAbegede,
    248     EthiopicAbegedeAmEt,
    249     CjkEarthlyBranch,
    250     CjkHeavenlyStem,
    251     Ethiopic,
    252     EthiopicHalehameGez,
    253     EthiopicAbegede,
    254     EthiopicAbegedeGez,
    255     HangulConsonant,
    256     Hangul,
    257     LowerNorwegian,
    258     Oromo,
    259     EthiopicHalehameOmEt,
    260     Sidama,
    261     EthiopicHalehameSidEt,
    262     Somali,
    263     EthiopicHalehameSoEt,
    264     Tigre,
    265     EthiopicHalehameTig,
    266     TigrinyaEr,
    267     EthiopicHalehameTiEr,
    268     TigrinyaErAbegede,
    269     EthiopicAbegedeTiEr,
    270     TigrinyaEt,
    271     EthiopicHalehameTiEt,
    272     TigrinyaEtAbegede,
    273     EthiopicAbegedeTiEt,
    274     UpperGreek,
    275     UpperNorwegian,
    276     Hebrew,
    277     Armenian,
    278     Georgian,
    279     CJKIdeographic,
    280     Hiragana,
    281     Katakana,
    282     HiraganaIroha,
    283     KatakanaIroha,
    284     NoneListStyle
    285 };
    286 
    287 enum StyleContentType {
    288     CONTENT_NONE, CONTENT_OBJECT, CONTENT_TEXT, CONTENT_COUNTER
    289 };
    290 
    291 enum EBorderFit { BorderFitBorder, BorderFitLines };
    292 
    293 enum EAnimPlayState {
    294     AnimPlayStatePlaying = 0x0,
    295     AnimPlayStatePaused = 0x1
    296 };
    297 
    298 enum ETimingFunctionType { LinearTimingFunction, CubicBezierTimingFunction };
    299 
    300 enum EWhiteSpace {
    301     NORMAL, PRE, PRE_WRAP, PRE_LINE, NOWRAP, KHTML_NOWRAP
    302 };
    303 
    304 enum ETextAlign {
    305     TAAUTO, LEFT, RIGHT, CENTER, JUSTIFY, WEBKIT_LEFT, WEBKIT_RIGHT, WEBKIT_CENTER
    306 };
    307 
    308 enum ETextTransform {
    309     CAPITALIZE, UPPERCASE, LOWERCASE, TTNONE
    310 };
    311 
    312 enum ETextDecoration {
    313     TDNONE = 0x0 , UNDERLINE = 0x1, OVERLINE = 0x2, LINE_THROUGH= 0x4, BLINK = 0x8
    314 };
    315 
    316 enum EPageBreak {
    317     PBAUTO, PBALWAYS, PBAVOID
    318 };
    319 
    320 enum EEmptyCell {
    321     SHOW, HIDE
    322 };
    323 
    324 enum ECaptionSide {
    325     CAPTOP, CAPBOTTOM, CAPLEFT, CAPRIGHT
    326 };
    327 
    328 enum EListStylePosition { OUTSIDE, INSIDE };
    329 
    330 enum EVisibility { VISIBLE, HIDDEN, COLLAPSE };
    331 
    332 enum ECursor {
    333     // The following must match the order in CSSValueKeywords.in.
    334     CURSOR_AUTO,
    335     CURSOR_CROSS,
    336     CURSOR_DEFAULT,
    337     CURSOR_POINTER,
    338     CURSOR_MOVE,
    339     CURSOR_VERTICAL_TEXT,
    340     CURSOR_CELL,
    341     CURSOR_CONTEXT_MENU,
    342     CURSOR_ALIAS,
    343     CURSOR_PROGRESS,
    344     CURSOR_NO_DROP,
    345     CURSOR_NOT_ALLOWED,
    346     CURSOR_WEBKIT_ZOOM_IN,
    347     CURSOR_WEBKIT_ZOOM_OUT,
    348     CURSOR_E_RESIZE,
    349     CURSOR_NE_RESIZE,
    350     CURSOR_NW_RESIZE,
    351     CURSOR_N_RESIZE,
    352     CURSOR_SE_RESIZE,
    353     CURSOR_SW_RESIZE,
    354     CURSOR_S_RESIZE,
    355     CURSOR_W_RESIZE,
    356     CURSOR_EW_RESIZE,
    357     CURSOR_NS_RESIZE,
    358     CURSOR_NESW_RESIZE,
    359     CURSOR_NWSE_RESIZE,
    360     CURSOR_COL_RESIZE,
    361     CURSOR_ROW_RESIZE,
    362     CURSOR_TEXT,
    363     CURSOR_WAIT,
    364     CURSOR_HELP,
    365     CURSOR_ALL_SCROLL,
    366     CURSOR_WEBKIT_GRAB,
    367     CURSOR_WEBKIT_GRABBING,
    368 
    369     // The following are handled as exceptions so don't need to match.
    370     CURSOR_COPY,
    371     CURSOR_NONE
    372 };
    373 
    374 enum EDisplay {
    375     INLINE, BLOCK, LIST_ITEM, RUN_IN, COMPACT, INLINE_BLOCK,
    376     TABLE, INLINE_TABLE, TABLE_ROW_GROUP,
    377     TABLE_HEADER_GROUP, TABLE_FOOTER_GROUP, TABLE_ROW,
    378     TABLE_COLUMN_GROUP, TABLE_COLUMN, TABLE_CELL,
    379     TABLE_CAPTION, BOX, INLINE_BOX,
    380 #if ENABLE(WCSS)
    381     WAP_MARQUEE,
    382 #endif
    383     NONE
    384 };
    385 
    386 enum EPointerEvents {
    387     PE_NONE, PE_AUTO, PE_STROKE, PE_FILL, PE_PAINTED, PE_VISIBLE,
    388     PE_VISIBLE_STROKE, PE_VISIBLE_FILL, PE_VISIBLE_PAINTED, PE_ALL
    389 };
    390 
    391 enum ETransformStyle3D {
    392     TransformStyle3DFlat, TransformStyle3DPreserve3D
    393 };
    394 
    395 enum EBackfaceVisibility {
    396     BackfaceVisibilityVisible, BackfaceVisibilityHidden
    397 };
    398 
    399 enum ELineClampType { LineClampLineCount, LineClampPercentage };
    400 
    401 } // namespace WebCore
    402 
    403 #endif // RenderStyleConstants_h
    404