Remove dependency on RenderStyle from FractionalLayoutBoxExtent and LayoutBox
[WebKit-https.git] / Source / WebCore / rendering / style / RenderStyleConstants.h
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 static const size_t PrintColorAdjustBits = 1;
32 enum PrintColorAdjust {
33     PrintColorAdjustEconomy,
34     PrintColorAdjustExact
35 };
36
37 // The difference between two styles.  The following values are used:
38 // (1) StyleDifferenceEqual - The two styles are identical
39 // (2) StyleDifferenceRecompositeLayer - The layer needs its position and transform updated, but no repaint
40 // (3) StyleDifferenceRepaint - The object just needs to be repainted.
41 // (4) StyleDifferenceRepaintLayer - The layer and its descendant layers needs to be repainted.
42 // (5) StyleDifferenceLayoutPositionedMovementOnly - Only the position of this positioned object has been updated
43 // (6) StyleDifferenceSimplifiedLayout - Only overflow needs to be recomputed
44 // (7) StyleDifferenceSimplifiedLayoutAndPositionedMovement - Both positioned movement and simplified layout updates are required.
45 // (8) StyleDifferenceLayout - A full layout is required.
46 enum StyleDifference {
47     StyleDifferenceEqual,
48 #if USE(ACCELERATED_COMPOSITING)
49     StyleDifferenceRecompositeLayer,
50 #endif
51     StyleDifferenceRepaint,
52     StyleDifferenceRepaintLayer,
53     StyleDifferenceLayoutPositionedMovementOnly,
54     StyleDifferenceSimplifiedLayout,
55     StyleDifferenceSimplifiedLayoutAndPositionedMovement,
56     StyleDifferenceLayout
57 };
58
59 // When some style properties change, different amounts of work have to be done depending on
60 // context (e.g. whether the property is changing on an element which has a compositing layer).
61 // A simple StyleDifference does not provide enough information so we return a bit mask of
62 // StyleDifferenceContextSensitiveProperties from RenderStyle::diff() too.
63 enum StyleDifferenceContextSensitiveProperty {
64     ContextSensitivePropertyNone = 0,
65     ContextSensitivePropertyTransform = (1 << 0),
66     ContextSensitivePropertyOpacity = (1 << 1),
67     ContextSensitivePropertyFilter = (1 << 2)
68 };
69
70 // Static pseudo styles. Dynamic ones are produced on the fly.
71 enum PseudoId {
72     // The order must be NOP ID, public IDs, and then internal IDs.
73     NOPSEUDO, FIRST_LINE, FIRST_LETTER, BEFORE, AFTER, SELECTION, FIRST_LINE_INHERITED, SCROLLBAR,
74     // Internal IDs follow:
75     SCROLLBAR_THUMB, SCROLLBAR_BUTTON, SCROLLBAR_TRACK, SCROLLBAR_TRACK_PIECE, SCROLLBAR_CORNER, RESIZER,
76     INPUT_LIST_BUTTON,
77     AFTER_LAST_INTERNAL_PSEUDOID,
78     FULL_SCREEN, FULL_SCREEN_DOCUMENT, FULL_SCREEN_ANCESTOR, ANIMATING_FULL_SCREEN_TRANSITION,
79     FIRST_PUBLIC_PSEUDOID = FIRST_LINE,
80     FIRST_INTERNAL_PSEUDOID = SCROLLBAR_THUMB,
81     PUBLIC_PSEUDOID_MASK = ((1 << FIRST_INTERNAL_PSEUDOID) - 1) & ~((1 << FIRST_PUBLIC_PSEUDOID) - 1)
82 };
83
84 enum ColumnSpan { ColumnSpanOne = 0, ColumnSpanAll};
85
86 enum EBorderCollapse { BSEPARATE = 0, BCOLLAPSE = 1 };
87
88 // These have been defined in the order of their precedence for border-collapsing. Do
89 // not change this order! This order also must match the order in CSSValueKeywords.in.
90 enum EBorderStyle { BNONE, BHIDDEN, INSET, GROOVE, OUTSET, RIDGE, DOTTED, DASHED, SOLID, DOUBLE };
91
92 enum EBorderPrecedence { BOFF, BTABLE, BCOLGROUP, BCOL, BROWGROUP, BROW, BCELL };
93
94 enum OutlineIsAuto { AUTO_OFF = 0, AUTO_ON };
95
96 enum EPosition {
97     StaticPosition, RelativePosition, AbsolutePosition, FixedPosition, StickyPosition
98 };
99
100 enum EFloat {
101     NoFloat, LeftFloat, RightFloat
102 };
103
104 enum EMarginCollapse { MCOLLAPSE, MSEPARATE, MDISCARD };
105
106 // Box decoration attributes. Not inherited.
107
108 enum EBoxDecorationBreak { DSLICE, DCLONE };
109
110 // Box attributes. Not inherited.
111
112 enum EBoxSizing { CONTENT_BOX, BORDER_BOX };
113
114 // Random visual rendering model attributes. Not inherited.
115
116 enum EOverflow {
117     OVISIBLE, OHIDDEN, OSCROLL, OAUTO, OOVERLAY, OMARQUEE, OPAGEDX, OPAGEDY
118 };
119
120 enum EVerticalAlign {
121     BASELINE, MIDDLE, SUB, SUPER, TEXT_TOP,
122     TEXT_BOTTOM, TOP, BOTTOM, BASELINE_MIDDLE, LENGTH
123 };
124
125 enum EClear {
126     CNONE = 0, CLEFT = 1, CRIGHT = 2, CBOTH = 3
127 };
128
129 enum ETableLayout {
130     TAUTO, TFIXED
131 };
132
133 enum TextCombine {
134     TextCombineNone, TextCombineHorizontal
135 };
136
137 enum EFillAttachment {
138     ScrollBackgroundAttachment, LocalBackgroundAttachment, FixedBackgroundAttachment
139 };
140
141 enum EFillBox {
142     BorderFillBox, PaddingFillBox, ContentFillBox, TextFillBox
143 };
144
145 enum EFillRepeat {
146     RepeatFill, NoRepeatFill, RoundFill, SpaceFill
147 };
148
149 enum EFillLayerType {
150     BackgroundFillLayer, MaskFillLayer
151 };
152
153 // CSS3 Background Values
154 enum EFillSizeType { Contain, Cover, SizeLength, SizeNone };
155
156 // CSS3 Marquee Properties
157
158 enum EMarqueeBehavior { MNONE, MSCROLL, MSLIDE, MALTERNATE };
159 enum EMarqueeDirection { MAUTO = 0, MLEFT = 1, MRIGHT = -1, MUP = 2, MDOWN = -2, MFORWARD = 3, MBACKWARD = -3 };
160
161 // Deprecated Flexible Box Properties
162
163 enum EBoxPack { Start, Center, End, Justify };
164 enum EBoxAlignment { BSTRETCH, BSTART, BCENTER, BEND, BBASELINE };
165 enum EBoxOrient { HORIZONTAL, VERTICAL };
166 enum EBoxLines { SINGLE, MULTIPLE };
167 enum EBoxDirection { BNORMAL, BREVERSE };
168
169 // CSS3 Flexbox Properties
170
171 enum EAlignContent { AlignContentFlexStart, AlignContentFlexEnd, AlignContentCenter, AlignContentSpaceBetween, AlignContentSpaceAround, AlignContentStretch };
172 enum EAlignItems { AlignAuto, AlignFlexStart, AlignFlexEnd, AlignCenter, AlignStretch, AlignBaseline };
173 enum EFlexDirection { FlowRow, FlowRowReverse, FlowColumn, FlowColumnReverse };
174 enum EFlexWrap { FlexWrapNone, FlexWrap, FlexWrapReverse };
175 enum EJustifyContent { JustifyFlexStart, JustifyFlexEnd, JustifyCenter, JustifySpaceBetween, JustifySpaceAround };
176
177 enum ETextSecurity {
178     TSNONE, TSDISC, TSCIRCLE, TSSQUARE
179 };
180
181 // CSS3 User Modify Properties
182
183 enum EUserModify {
184     READ_ONLY, READ_WRITE, READ_WRITE_PLAINTEXT_ONLY
185 };
186
187 // CSS3 User Drag Values
188
189 enum EUserDrag {
190     DRAG_AUTO, DRAG_NONE, DRAG_ELEMENT
191 };
192
193 // CSS3 User Select Values
194
195 enum EUserSelect {
196     SELECT_NONE, SELECT_TEXT, SELECT_ALL
197 };
198
199 // Word Break Values. Matches WinIE, rather than CSS3
200
201 enum EWordBreak {
202     NormalWordBreak, BreakAllWordBreak, BreakWordBreak
203 };
204
205 enum EWordWrap {
206     NormalWordWrap, BreakWordWrap
207 };
208
209 enum ENBSPMode {
210     NBNORMAL, SPACE
211 };
212
213 enum EKHTMLLineBreak {
214     LBNORMAL, AFTER_WHITE_SPACE
215 };
216
217 enum EResize {
218     RESIZE_NONE, RESIZE_BOTH, RESIZE_HORIZONTAL, RESIZE_VERTICAL
219 };
220
221 // The order of this enum must match the order of the list style types in CSSValueKeywords.in.
222 enum EListStyleType {
223     Disc,
224     Circle,
225     Square,
226     DecimalListStyle,
227     DecimalLeadingZero,
228     ArabicIndic,
229     BinaryListStyle,
230     Bengali,
231     Cambodian,
232     Khmer,
233     Devanagari,
234     Gujarati,
235     Gurmukhi,
236     Kannada,
237     LowerHexadecimal,
238     Lao,
239     Malayalam,
240     Mongolian,
241     Myanmar,
242     Octal,
243     Oriya,
244     Persian,
245     Urdu,
246     Telugu,
247     Tibetan,
248     Thai,
249     UpperHexadecimal,
250     LowerRoman,
251     UpperRoman,
252     LowerGreek,
253     LowerAlpha,
254     LowerLatin,
255     UpperAlpha,
256     UpperLatin,
257     Afar,
258     EthiopicHalehameAaEt,
259     EthiopicHalehameAaEr,
260     Amharic,
261     EthiopicHalehameAmEt,
262     AmharicAbegede,
263     EthiopicAbegedeAmEt,
264     CjkEarthlyBranch,
265     CjkHeavenlyStem,
266     Ethiopic,
267     EthiopicHalehameGez,
268     EthiopicAbegede,
269     EthiopicAbegedeGez,
270     HangulConsonant,
271     Hangul,
272     LowerNorwegian,
273     Oromo,
274     EthiopicHalehameOmEt,
275     Sidama,
276     EthiopicHalehameSidEt,
277     Somali,
278     EthiopicHalehameSoEt,
279     Tigre,
280     EthiopicHalehameTig,
281     TigrinyaEr,
282     EthiopicHalehameTiEr,
283     TigrinyaErAbegede,
284     EthiopicAbegedeTiEr,
285     TigrinyaEt,
286     EthiopicHalehameTiEt,
287     TigrinyaEtAbegede,
288     EthiopicAbegedeTiEt,
289     UpperGreek,
290     UpperNorwegian,
291     Asterisks,
292     Footnotes,
293     Hebrew,
294     Armenian,
295     LowerArmenian,
296     UpperArmenian,
297     Georgian,
298     CJKIdeographic,
299     Hiragana,
300     Katakana,
301     HiraganaIroha,
302     KatakanaIroha,
303     NoneListStyle
304 };
305
306 enum StyleContentType {
307     CONTENT_NONE, CONTENT_OBJECT, CONTENT_TEXT, CONTENT_COUNTER, CONTENT_QUOTE
308 };
309
310 enum QuoteType {
311     OPEN_QUOTE, CLOSE_QUOTE, NO_OPEN_QUOTE, NO_CLOSE_QUOTE
312 };
313
314 enum EBorderFit { BorderFitBorder, BorderFitLines };
315
316 enum EAnimationFillMode { AnimationFillModeNone, AnimationFillModeForwards, AnimationFillModeBackwards, AnimationFillModeBoth };
317
318 enum EAnimPlayState {
319     AnimPlayStatePlaying = 0x0,
320     AnimPlayStatePaused = 0x1
321 };
322
323 enum EWhiteSpace {
324     NORMAL, PRE, PRE_WRAP, PRE_LINE, NOWRAP, KHTML_NOWRAP
325 };
326
327 // The order of this enum must match the order of the text align values in CSSValueKeywords.in.
328 enum ETextAlign {
329     LEFT, RIGHT, CENTER, JUSTIFY, WEBKIT_LEFT, WEBKIT_RIGHT, WEBKIT_CENTER, TASTART, TAEND,
330 };
331
332 enum ETextTransform {
333     CAPITALIZE, UPPERCASE, LOWERCASE, TTNONE
334 };
335
336 static const size_t ETextDecorationBits = 4;
337 enum ETextDecoration {
338     TDNONE = 0x0 , UNDERLINE = 0x1, OVERLINE = 0x2, LINE_THROUGH= 0x4, BLINK = 0x8
339 };
340 inline ETextDecoration operator|(ETextDecoration a, ETextDecoration b) { return ETextDecoration(int(a) | int(b)); }
341 inline ETextDecoration& operator|=(ETextDecoration& a, ETextDecoration b) { return a = a | b; }
342
343 #if ENABLE(CSS3_TEXT_DECORATION)
344 enum TextDecorationStyle {
345     TextDecorationStyleSolid,
346     TextDecorationStyleDouble,
347     TextDecorationStyleDotted,
348     TextDecorationStyleDashed,
349     TextDecorationStyleWavy
350 };
351 #endif // CSS3_TEXT_DECORATION
352
353 enum EPageBreak {
354     PBAUTO, PBALWAYS, PBAVOID
355 };
356
357 enum EEmptyCell {
358     SHOW, HIDE
359 };
360
361 enum ECaptionSide {
362     CAPTOP, CAPBOTTOM, CAPLEFT, CAPRIGHT
363 };
364
365 enum EListStylePosition { OUTSIDE, INSIDE };
366
367 enum EVisibility { VISIBLE, HIDDEN, COLLAPSE };
368
369 enum ECursor {
370     // The following must match the order in CSSValueKeywords.in.
371     CURSOR_AUTO,
372     CURSOR_CROSS,
373     CURSOR_DEFAULT,
374     CURSOR_POINTER,
375     CURSOR_MOVE,
376     CURSOR_VERTICAL_TEXT,
377     CURSOR_CELL,
378     CURSOR_CONTEXT_MENU,
379     CURSOR_ALIAS,
380     CURSOR_PROGRESS,
381     CURSOR_NO_DROP,
382     CURSOR_NOT_ALLOWED,
383     CURSOR_WEBKIT_ZOOM_IN,
384     CURSOR_WEBKIT_ZOOM_OUT,
385     CURSOR_E_RESIZE,
386     CURSOR_NE_RESIZE,
387     CURSOR_NW_RESIZE,
388     CURSOR_N_RESIZE,
389     CURSOR_SE_RESIZE,
390     CURSOR_SW_RESIZE,
391     CURSOR_S_RESIZE,
392     CURSOR_W_RESIZE,
393     CURSOR_EW_RESIZE,
394     CURSOR_NS_RESIZE,
395     CURSOR_NESW_RESIZE,
396     CURSOR_NWSE_RESIZE,
397     CURSOR_COL_RESIZE,
398     CURSOR_ROW_RESIZE,
399     CURSOR_TEXT,
400     CURSOR_WAIT,
401     CURSOR_HELP,
402     CURSOR_ALL_SCROLL,
403     CURSOR_WEBKIT_GRAB,
404     CURSOR_WEBKIT_GRABBING,
405
406     // The following are handled as exceptions so don't need to match.
407     CURSOR_COPY,
408     CURSOR_NONE
409 };
410
411 // The order of this enum must match the order of the display values in CSSValueKeywords.in.
412 enum EDisplay {
413     INLINE, BLOCK, LIST_ITEM, RUN_IN, COMPACT, INLINE_BLOCK,
414     TABLE, INLINE_TABLE, TABLE_ROW_GROUP,
415     TABLE_HEADER_GROUP, TABLE_FOOTER_GROUP, TABLE_ROW,
416     TABLE_COLUMN_GROUP, TABLE_COLUMN, TABLE_CELL,
417     TABLE_CAPTION, BOX, INLINE_BOX,
418 #if ENABLE(CSS3_FLEXBOX)
419     FLEX, INLINE_FLEX,
420 #endif
421     GRID, INLINE_GRID,
422     NONE
423 };
424
425 enum EInsideLink {
426     NotInsideLink, InsideUnvisitedLink, InsideVisitedLink
427 };
428     
429 enum EPointerEvents {
430     PE_NONE, PE_AUTO, PE_STROKE, PE_FILL, PE_PAINTED, PE_VISIBLE,
431     PE_VISIBLE_STROKE, PE_VISIBLE_FILL, PE_VISIBLE_PAINTED, PE_ALL
432 };
433
434 enum ETransformStyle3D {
435     TransformStyle3DFlat, TransformStyle3DPreserve3D
436 };
437
438 enum EBackfaceVisibility {
439     BackfaceVisibilityVisible, BackfaceVisibilityHidden
440 };
441     
442 enum ELineClampType { LineClampLineCount, LineClampPercentage };
443
444 enum Hyphens { HyphensNone, HyphensManual, HyphensAuto };
445
446 enum ESpeak { SpeakNone, SpeakNormal, SpeakSpellOut, SpeakDigits, SpeakLiteralPunctuation, SpeakNoPunctuation };
447
448 enum TextEmphasisFill { TextEmphasisFillFilled, TextEmphasisFillOpen };
449
450 enum TextEmphasisMark { TextEmphasisMarkNone, TextEmphasisMarkAuto, TextEmphasisMarkDot, TextEmphasisMarkCircle, TextEmphasisMarkDoubleCircle, TextEmphasisMarkTriangle, TextEmphasisMarkSesame, TextEmphasisMarkCustom };
451
452 enum TextEmphasisPosition { TextEmphasisPositionOver, TextEmphasisPositionUnder };
453
454 enum TextOverflow { TextOverflowClip = 0, TextOverflowEllipsis };
455
456 enum EImageRendering { ImageRenderingAuto, ImageRenderingOptimizeSpeed, ImageRenderingOptimizeQuality, ImageRenderingOptimizeContrast };
457
458 enum ImageResolutionSource { ImageResolutionSpecified = 0, ImageResolutionFromImage };
459
460 enum ImageResolutionSnap { ImageResolutionNoSnap = 0, ImageResolutionSnapPixels };
461
462 enum Order { LogicalOrder = 0, VisualOrder };
463
464 enum RegionOverflow { AutoRegionOverflow, BreakRegionOverflow };
465
466 enum ColumnAxis { HorizontalColumnAxis, VerticalColumnAxis, AutoColumnAxis };
467
468 enum ColumnProgression { NormalColumnProgression, ReverseColumnProgression };
469
470 enum LineSnap { LineSnapNone, LineSnapBaseline, LineSnapContain };
471
472 enum LineAlign { LineAlignNone, LineAlignEdges };
473
474 enum WrapFlow { WrapFlowAuto, WrapFlowBoth, WrapFlowStart, WrapFlowEnd, WrapFlowMaximum, WrapFlowClear };
475
476 enum WrapThrough { WrapThroughWrap, WrapThroughNone };
477
478 } // namespace WebCore
479
480 #endif // RenderStyleConstants_h