1 /* 2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) 3 * (C) 2000 Antti Koivisto (koivisto@kde.org) 4 * (C) 2000 Dirk Mueller (mueller@kde.org) 5 * Copyright (C) 2003, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved. 6 * Copyright (C) 2006 Graham Dennis (graham.dennis@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 enum StyleRecalcChange { 32 NoChange, 33 NoInherit, 34 UpdatePseudoElements, 35 Inherit, 36 Force, 37 Reattach, 38 ReattachNoRenderer 39 }; 40 41 static const size_t PrintColorAdjustBits = 1; 42 enum PrintColorAdjust { 43 PrintColorAdjustEconomy, 44 PrintColorAdjustExact 45 }; 46 47 // When some style properties change, different amounts of work have to be done depending on 48 // context (e.g. whether the property is changing on an element which has a compositing layer). 49 // A simple StyleDifference does not provide enough information so we return a bit mask of 50 // StyleDifferenceContextSensitiveProperties from RenderStyle::visualInvalidationDiff() too. 51 enum StyleDifferenceContextSensitiveProperty { 52 ContextSensitivePropertyNone = 0, 53 ContextSensitivePropertyTransform = (1 << 0), 54 ContextSensitivePropertyOpacity = (1 << 1), 55 ContextSensitivePropertyZIndex = (1 << 2), 56 ContextSensitivePropertyFilter = (1 << 3), 57 // The object needs to be repainted if it contains text or properties dependent on color (e.g., border or outline). 58 ContextSensitivePropertyTextOrColor = (1 << 4) 59 }; 60 61 // Static pseudo styles. Dynamic ones are produced on the fly. 62 enum PseudoId { 63 // The order must be NOP ID, public IDs, and then internal IDs. 64 // If you add or remove a public ID, you must update _pseudoBits in RenderStyle. 65 NOPSEUDO, FIRST_LINE, FIRST_LETTER, BEFORE, AFTER, BACKDROP, SELECTION, FIRST_LINE_INHERITED, SCROLLBAR, 66 // Internal IDs follow: 67 SCROLLBAR_THUMB, SCROLLBAR_BUTTON, SCROLLBAR_TRACK, SCROLLBAR_TRACK_PIECE, SCROLLBAR_CORNER, RESIZER, INPUT_LIST_BUTTON, 68 // Special values follow: 69 AFTER_LAST_INTERNAL_PSEUDOID, 70 FIRST_PUBLIC_PSEUDOID = FIRST_LINE, 71 FIRST_INTERNAL_PSEUDOID = SCROLLBAR_THUMB, 72 PUBLIC_PSEUDOID_MASK = ((1 << FIRST_INTERNAL_PSEUDOID) - 1) & ~((1 << FIRST_PUBLIC_PSEUDOID) - 1), 73 PSEUDO_ELEMENT_MASK = (1 << (BEFORE - 1)) | (1 << (AFTER - 1)) | (1 << (BACKDROP - 1)) 74 }; 75 76 enum ColumnFill { ColumnFillBalance, ColumnFillAuto }; 77 78 enum ColumnSpan { ColumnSpanNone = 0, ColumnSpanAll }; 79 80 enum EBorderCollapse { BSEPARATE = 0, BCOLLAPSE = 1 }; 81 82 // These have been defined in the order of their precedence for border-collapsing. Do 83 // not change this order! This order also must match the order in CSSValueKeywords.in. 84 enum EBorderStyle { BNONE, BHIDDEN, INSET, GROOVE, OUTSET, RIDGE, DOTTED, DASHED, SOLID, DOUBLE }; 85 86 enum EBorderPrecedence { BOFF, BTABLE, BCOLGROUP, BCOL, BROWGROUP, BROW, BCELL }; 87 88 enum OutlineIsAuto { AUTO_OFF = 0, AUTO_ON }; 89 90 enum EPosition { 91 StaticPosition = 0, 92 RelativePosition = 1, 93 AbsolutePosition = 2, 94 StickyPosition = 3, 95 // This value is required to pack our bits efficiently in RenderObject. 96 FixedPosition = 6 97 }; 98 99 enum EFloat { 100 NoFloat, LeftFloat, RightFloat 101 }; 102 103 enum EMarginCollapse { MCOLLAPSE, MSEPARATE, MDISCARD }; 104 105 // Box decoration attributes. Not inherited. 106 107 enum EBoxDecorationBreak { DSLICE, DCLONE }; 108 109 // Box attributes. Not inherited. 110 111 enum EBoxSizing { CONTENT_BOX, BORDER_BOX }; 112 113 // Random visual rendering model attributes. Not inherited. 114 115 enum EOverflow { 116 OVISIBLE, OHIDDEN, OSCROLL, OAUTO, OOVERLAY, OPAGEDX, OPAGEDY 117 }; 118 119 enum EVerticalAlign { 120 BASELINE, MIDDLE, SUB, SUPER, TEXT_TOP, 121 TEXT_BOTTOM, TOP, BOTTOM, BASELINE_MIDDLE, LENGTH 122 }; 123 124 enum EClear { 125 CNONE = 0, CLEFT = 1, CRIGHT = 2, CBOTH = 3 126 }; 127 128 enum ETableLayout { 129 TAUTO, TFIXED 130 }; 131 132 enum TextCombine { 133 TextCombineNone, TextCombineHorizontal 134 }; 135 136 enum EFillAttachment { 137 ScrollBackgroundAttachment, LocalBackgroundAttachment, FixedBackgroundAttachment 138 }; 139 140 enum EFillBox { 141 BorderFillBox, PaddingFillBox, ContentFillBox, TextFillBox 142 }; 143 144 enum EFillRepeat { 145 RepeatFill, NoRepeatFill, RoundFill, SpaceFill 146 }; 147 148 enum EFillLayerType { 149 BackgroundFillLayer, MaskFillLayer 150 }; 151 152 // CSS3 Background Values 153 enum EFillSizeType { Contain, Cover, SizeLength, SizeNone }; 154 155 // CSS3 Background Position 156 enum BackgroundEdgeOrigin { TopEdge, RightEdge, BottomEdge, LeftEdge }; 157 158 // CSS Mask Source Types 159 enum EMaskSourceType { MaskAlpha, MaskLuminance }; 160 161 // CSS3 Marquee Properties 162 163 enum EMarqueeBehavior { MNONE, MSCROLL, MSLIDE, MALTERNATE }; 164 enum EMarqueeDirection { MAUTO = 0, MLEFT = 1, MRIGHT = -1, MUP = 2, MDOWN = -2, MFORWARD = 3, MBACKWARD = -3 }; 165 166 // Deprecated Flexible Box Properties 167 168 enum EBoxPack { Start, Center, End, Justify }; 169 enum EBoxAlignment { BSTRETCH, BSTART, BCENTER, BEND, BBASELINE }; 170 enum EBoxOrient { HORIZONTAL, VERTICAL }; 171 enum EBoxLines { SINGLE, MULTIPLE }; 172 enum EBoxDirection { BNORMAL, BREVERSE }; 173 174 // CSS3 Flexbox Properties 175 176 enum EAlignContent { AlignContentFlexStart, AlignContentFlexEnd, AlignContentCenter, AlignContentSpaceBetween, AlignContentSpaceAround, AlignContentStretch }; 177 enum EFlexDirection { FlowRow, FlowRowReverse, FlowColumn, FlowColumnReverse }; 178 enum EFlexWrap { FlexNoWrap, FlexWrap, FlexWrapReverse }; 179 enum EJustifyContent { JustifyFlexStart, JustifyFlexEnd, JustifyCenter, JustifySpaceBetween, JustifySpaceAround }; 180 181 enum ETextSecurity { 182 TSNONE, TSDISC, TSCIRCLE, TSSQUARE 183 }; 184 185 // CSS3 User Modify Properties 186 187 enum EUserModify { 188 READ_ONLY, READ_WRITE, READ_WRITE_PLAINTEXT_ONLY 189 }; 190 191 // CSS3 User Drag Values 192 193 enum EUserDrag { 194 DRAG_AUTO, DRAG_NONE, DRAG_ELEMENT 195 }; 196 197 // CSS3 User Select Values 198 199 enum EUserSelect { 200 SELECT_NONE, SELECT_TEXT, SELECT_ALL 201 }; 202 203 // CSS3 Image Values 204 enum ObjectFit { ObjectFitFill, ObjectFitContain, ObjectFitCover, ObjectFitNone, ObjectFitScaleDown }; 205 206 // Word Break Values. Matches WinIE, rather than CSS3 207 208 enum EWordBreak { 209 NormalWordBreak, BreakAllWordBreak, BreakWordBreak 210 }; 211 212 enum EOverflowWrap { 213 NormalOverflowWrap, BreakOverflowWrap 214 }; 215 216 enum LineBreak { 217 LineBreakAuto, LineBreakLoose, LineBreakNormal, LineBreakStrict, LineBreakAfterWhiteSpace 218 }; 219 220 enum EResize { 221 RESIZE_NONE, RESIZE_BOTH, RESIZE_HORIZONTAL, RESIZE_VERTICAL 222 }; 223 224 // The order of this enum must match the order of the list style types in CSSValueKeywords.in. 225 enum EListStyleType { 226 Disc, 227 Circle, 228 Square, 229 DecimalListStyle, 230 DecimalLeadingZero, 231 ArabicIndic, 232 BinaryListStyle, 233 Bengali, 234 Cambodian, 235 Khmer, 236 Devanagari, 237 Gujarati, 238 Gurmukhi, 239 Kannada, 240 LowerHexadecimal, 241 Lao, 242 Malayalam, 243 Mongolian, 244 Myanmar, 245 Octal, 246 Oriya, 247 Persian, 248 Urdu, 249 Telugu, 250 Tibetan, 251 Thai, 252 UpperHexadecimal, 253 LowerRoman, 254 UpperRoman, 255 LowerGreek, 256 LowerAlpha, 257 LowerLatin, 258 UpperAlpha, 259 UpperLatin, 260 Afar, 261 EthiopicHalehameAaEt, 262 EthiopicHalehameAaEr, 263 Amharic, 264 EthiopicHalehameAmEt, 265 AmharicAbegede, 266 EthiopicAbegedeAmEt, 267 CjkEarthlyBranch, 268 CjkHeavenlyStem, 269 Ethiopic, 270 EthiopicHalehameGez, 271 EthiopicAbegede, 272 EthiopicAbegedeGez, 273 HangulConsonant, 274 Hangul, 275 LowerNorwegian, 276 Oromo, 277 EthiopicHalehameOmEt, 278 Sidama, 279 EthiopicHalehameSidEt, 280 Somali, 281 EthiopicHalehameSoEt, 282 Tigre, 283 EthiopicHalehameTig, 284 TigrinyaEr, 285 EthiopicHalehameTiEr, 286 TigrinyaErAbegede, 287 EthiopicAbegedeTiEr, 288 TigrinyaEt, 289 EthiopicHalehameTiEt, 290 TigrinyaEtAbegede, 291 EthiopicAbegedeTiEt, 292 UpperGreek, 293 UpperNorwegian, 294 Asterisks, 295 Footnotes, 296 Hebrew, 297 Armenian, 298 LowerArmenian, 299 UpperArmenian, 300 Georgian, 301 CJKIdeographic, 302 Hiragana, 303 Katakana, 304 HiraganaIroha, 305 KatakanaIroha, 306 NoneListStyle 307 }; 308 309 enum QuoteType { 310 OPEN_QUOTE, CLOSE_QUOTE, NO_OPEN_QUOTE, NO_CLOSE_QUOTE 311 }; 312 313 enum EBorderFit { BorderFitBorder, BorderFitLines }; 314 315 enum EAnimPlayState { 316 AnimPlayStatePlaying, 317 AnimPlayStatePaused 318 }; 319 320 enum EWhiteSpace { 321 NORMAL, PRE, PRE_WRAP, PRE_LINE, NOWRAP, KHTML_NOWRAP 322 }; 323 324 // The order of this enum must match the order of the text align values in CSSValueKeywords.in. 325 enum ETextAlign { 326 LEFT, RIGHT, CENTER, JUSTIFY, WEBKIT_LEFT, WEBKIT_RIGHT, WEBKIT_CENTER, TASTART, TAEND, 327 }; 328 329 enum ETextTransform { 330 CAPITALIZE, UPPERCASE, LOWERCASE, TTNONE 331 }; 332 333 static const size_t TextDecorationBits = 4; 334 enum TextDecoration { 335 TextDecorationNone = 0x0, 336 TextDecorationUnderline = 0x1, 337 TextDecorationOverline = 0x2, 338 TextDecorationLineThrough = 0x4, 339 TextDecorationBlink = 0x8 340 }; 341 inline TextDecoration operator| (TextDecoration a, TextDecoration b) { return TextDecoration(int(a) | int(b)); } 342 inline TextDecoration& operator|= (TextDecoration& a, TextDecoration b) { return a = a | b; } 343 344 enum TextDecorationStyle { 345 TextDecorationStyleSolid, 346 TextDecorationStyleDouble, 347 TextDecorationStyleDotted, 348 TextDecorationStyleDashed, 349 TextDecorationStyleWavy 350 }; 351 352 enum TextAlignLast { 353 TextAlignLastAuto, TextAlignLastStart, TextAlignLastEnd, TextAlignLastLeft, TextAlignLastRight, TextAlignLastCenter, TextAlignLastJustify 354 }; 355 356 enum TextJustify { 357 TextJustifyAuto, TextJustifyNone, TextJustifyInterWord, TextJustifyDistribute 358 }; 359 360 enum TextUnderlinePosition { 361 // FIXME: Implement support for 'under left' and 'under right' values. 362 TextUnderlinePositionAuto = 0x1, 363 TextUnderlinePositionUnder = 0x2 364 }; 365 366 enum EPageBreak { 367 PBAUTO, PBALWAYS, PBAVOID 368 }; 369 370 enum EEmptyCell { 371 SHOW, HIDE 372 }; 373 374 enum ECaptionSide { 375 CAPTOP, CAPBOTTOM, CAPLEFT, CAPRIGHT 376 }; 377 378 enum EListStylePosition { OUTSIDE, INSIDE }; 379 380 enum EVisibility { VISIBLE, HIDDEN, COLLAPSE }; 381 382 enum ECursor { 383 // The following must match the order in CSSValueKeywords.in. 384 CURSOR_AUTO, 385 CURSOR_CROSS, 386 CURSOR_DEFAULT, 387 CURSOR_POINTER, 388 CURSOR_MOVE, 389 CURSOR_VERTICAL_TEXT, 390 CURSOR_CELL, 391 CURSOR_CONTEXT_MENU, 392 CURSOR_ALIAS, 393 CURSOR_PROGRESS, 394 CURSOR_NO_DROP, 395 CURSOR_NOT_ALLOWED, 396 CURSOR_ZOOM_IN, 397 CURSOR_ZOOM_OUT, 398 CURSOR_E_RESIZE, 399 CURSOR_NE_RESIZE, 400 CURSOR_NW_RESIZE, 401 CURSOR_N_RESIZE, 402 CURSOR_SE_RESIZE, 403 CURSOR_SW_RESIZE, 404 CURSOR_S_RESIZE, 405 CURSOR_W_RESIZE, 406 CURSOR_EW_RESIZE, 407 CURSOR_NS_RESIZE, 408 CURSOR_NESW_RESIZE, 409 CURSOR_NWSE_RESIZE, 410 CURSOR_COL_RESIZE, 411 CURSOR_ROW_RESIZE, 412 CURSOR_TEXT, 413 CURSOR_WAIT, 414 CURSOR_HELP, 415 CURSOR_ALL_SCROLL, 416 CURSOR_WEBKIT_GRAB, 417 CURSOR_WEBKIT_GRABBING, 418 419 // The following are handled as exceptions so don't need to match. 420 CURSOR_COPY, 421 CURSOR_NONE 422 }; 423 424 // The order of this enum must match the order of the display values in CSSValueKeywords.in. 425 enum EDisplay { 426 INLINE, BLOCK, LIST_ITEM, INLINE_BLOCK, 427 TABLE, INLINE_TABLE, TABLE_ROW_GROUP, 428 TABLE_HEADER_GROUP, TABLE_FOOTER_GROUP, TABLE_ROW, 429 TABLE_COLUMN_GROUP, TABLE_COLUMN, TABLE_CELL, 430 TABLE_CAPTION, BOX, INLINE_BOX, 431 FLEX, INLINE_FLEX, 432 GRID, INLINE_GRID, 433 NONE, 434 FIRST_TABLE_DISPLAY = TABLE, 435 LAST_TABLE_DISPLAY = TABLE_CAPTION 436 }; 437 438 enum EInsideLink { 439 NotInsideLink, InsideUnvisitedLink, InsideVisitedLink 440 }; 441 442 enum EPointerEvents { 443 PE_NONE, PE_AUTO, PE_STROKE, PE_FILL, PE_PAINTED, PE_VISIBLE, 444 PE_VISIBLE_STROKE, PE_VISIBLE_FILL, PE_VISIBLE_PAINTED, PE_BOUNDINGBOX, 445 PE_ALL 446 }; 447 448 enum ETransformStyle3D { 449 TransformStyle3DFlat, TransformStyle3DPreserve3D 450 }; 451 452 enum EBackfaceVisibility { 453 BackfaceVisibilityVisible, BackfaceVisibilityHidden 454 }; 455 456 enum ELineClampType { LineClampLineCount, LineClampPercentage }; 457 458 enum Hyphens { HyphensNone, HyphensManual, HyphensAuto }; 459 460 enum ESpeak { SpeakNone, SpeakNormal, SpeakSpellOut, SpeakDigits, SpeakLiteralPunctuation, SpeakNoPunctuation }; 461 462 enum TextEmphasisFill { TextEmphasisFillFilled, TextEmphasisFillOpen }; 463 464 enum TextEmphasisMark { TextEmphasisMarkNone, TextEmphasisMarkAuto, TextEmphasisMarkDot, TextEmphasisMarkCircle, TextEmphasisMarkDoubleCircle, TextEmphasisMarkTriangle, TextEmphasisMarkSesame, TextEmphasisMarkCustom }; 465 466 enum TextEmphasisPosition { TextEmphasisPositionOver, TextEmphasisPositionUnder }; 467 468 enum TextOrientation { TextOrientationVerticalRight, TextOrientationUpright, TextOrientationSideways, TextOrientationSidewaysRight }; 469 470 enum TextOverflow { TextOverflowClip = 0, TextOverflowEllipsis }; 471 472 enum EImageRendering { ImageRenderingAuto, ImageRenderingOptimizeSpeed, ImageRenderingOptimizeQuality, ImageRenderingOptimizeContrast }; 473 474 enum ImageResolutionSource { ImageResolutionSpecified = 0, ImageResolutionFromImage }; 475 476 enum ImageResolutionSnap { ImageResolutionNoSnap = 0, ImageResolutionSnapPixels }; 477 478 enum Order { LogicalOrder = 0, VisualOrder }; 479 480 enum WrapFlow { WrapFlowAuto, WrapFlowBoth, WrapFlowStart, WrapFlowEnd, WrapFlowMaximum, WrapFlowClear }; 481 482 enum WrapThrough { WrapThroughWrap, WrapThroughNone }; 483 484 enum RubyPosition { RubyPositionBefore, RubyPositionAfter }; 485 486 enum GridAutoFlow { AutoFlowNone, AutoFlowColumn, AutoFlowRow }; 487 488 enum DraggableRegionMode { DraggableRegionNone, DraggableRegionDrag, DraggableRegionNoDrag }; 489 490 static const size_t TouchActionBits = 4; 491 enum TouchAction { 492 TouchActionAuto = 0x0, 493 TouchActionNone = 0x1, 494 TouchActionPanX = 0x2, 495 TouchActionPanY = 0x4, 496 TouchActionPinchZoom = 0x8, 497 }; 498 inline TouchAction operator| (TouchAction a, TouchAction b) { return TouchAction(int(a) | int(b)); } 499 inline TouchAction& operator|= (TouchAction& a, TouchAction b) { return a = a | b; } 500 inline TouchAction operator& (TouchAction a, TouchAction b) { return TouchAction(int(a) & int(b)); } 501 inline TouchAction& operator&= (TouchAction& a, TouchAction b) { return a = a & b; } 502 503 enum EIsolation { IsolationAuto, IsolationIsolate }; 504 505 enum TouchActionDelay { TouchActionDelayNone, TouchActionDelayScript }; 506 507 enum ItemPosition { 508 ItemPositionAuto, 509 ItemPositionStretch, 510 ItemPositionBaseline, 511 ItemPositionCenter, 512 ItemPositionStart, 513 ItemPositionEnd, 514 ItemPositionSelfStart, 515 ItemPositionSelfEnd, 516 ItemPositionFlexStart, 517 ItemPositionFlexEnd, 518 ItemPositionLeft, 519 ItemPositionRight 520 }; 521 522 enum OverflowAlignment { 523 OverflowAlignmentDefault, 524 OverflowAlignmentTrue, 525 OverflowAlignmentSafe 526 }; 527 528 // Reasonable maximum to prevent insane font sizes from causing crashes on some platforms (such as Windows). 529 static const float maximumAllowedFontSize = 1000000.0f; 530 531 enum TextIndentLine { TextIndentFirstLine, TextIndentEachLine }; 532 enum TextIndentType { TextIndentNormal, TextIndentHanging }; 533 534 enum CSSBoxType { BoxMissing = 0, MarginBox, BorderBox, PaddingBox, ContentBox }; 535 536 } // namespace WebCore 537 538 #endif // RenderStyleConstants_h 539