2011-05-19 Mike Lawther <mikelawther@chromium.org>
[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 /*
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     StyleDifferenceSimplifiedLayout,
55     StyleDifferenceLayout
56 };
57
58 // When some style properties change, different amounts of work have to be done depending on
59 // context (e.g. whether the property is changing on an element which has a compositing layer).
60 // A simple StyleDifference does not provide enough information so we return a bit mask of
61 // StyleDifferenceContextSensitiveProperties from RenderStyle::diff() too.
62 enum StyleDifferenceContextSensitiveProperty {
63     ContextSensitivePropertyNone = 0,
64     ContextSensitivePropertyTransform = (1 << 0),
65     ContextSensitivePropertyOpacity = (1 << 1)
66 };
67
68 // Static pseudo styles. Dynamic ones are produced on the fly.
69 enum PseudoId {
70     // The order must be NOP ID, public IDs, and then internal IDs.
71     NOPSEUDO, FIRST_LINE, FIRST_LETTER, BEFORE, AFTER, SELECTION, FIRST_LINE_INHERITED, SCROLLBAR, FILE_UPLOAD_BUTTON, INPUT_PLACEHOLDER,
72     SEARCH_CANCEL_BUTTON, SEARCH_DECORATION, SEARCH_RESULTS_DECORATION, SEARCH_RESULTS_BUTTON,
73     SCROLLBAR_THUMB, SCROLLBAR_BUTTON, SCROLLBAR_TRACK, SCROLLBAR_TRACK_PIECE, SCROLLBAR_CORNER, RESIZER,
74     INPUT_LIST_BUTTON, INPUT_SPEECH_BUTTON, INNER_SPIN_BUTTON, OUTER_SPIN_BUTTON, VISITED_LINK,
75     METER_BAR, METER_OPTIMUM, METER_SUBOPTIMAL, METER_EVEN_LESS_GOOD,
76     AFTER_LAST_INTERNAL_PSEUDOID,
77     FULL_SCREEN, FULL_SCREEN_DOCUMENT, FULL_SCREEN_MEDIA_DOCUMENT,
78     FIRST_PUBLIC_PSEUDOID = FIRST_LINE,
79     FIRST_INTERNAL_PSEUDOID = FILE_UPLOAD_BUTTON,
80     PUBLIC_PSEUDOID_MASK = ((1 << FIRST_INTERNAL_PSEUDOID) - 1) & ~((1 << FIRST_PUBLIC_PSEUDOID) - 1)
81 };
82
83 enum EBorderCollapse { BSEPARATE = 0, BCOLLAPSE = 1 };
84
85 // These have been defined in the order of their precedence for border-collapsing. Do
86 // not change this order!
87 enum EBorderStyle { BNONE, BHIDDEN, INSET, GROOVE, RIDGE, OUTSET, DOTTED, DASHED, SOLID, DOUBLE };
88
89 enum EBorderPrecedence { BOFF, BTABLE, BCOLGROUP, BCOL, BROWGROUP, BROW, BCELL };
90
91 enum EPosition {
92     StaticPosition, RelativePosition, AbsolutePosition, FixedPosition
93 };
94
95 enum EFloat {
96     FNONE = 0, FLEFT, FRIGHT
97 };
98
99 enum EMarginCollapse { MCOLLAPSE, MSEPARATE, MDISCARD };
100
101 // Box attributes. Not inherited.
102
103 enum EBoxSizing { CONTENT_BOX, BORDER_BOX };
104
105 // Random visual rendering model attributes. Not inherited.
106
107 enum EOverflow {
108     OVISIBLE, OHIDDEN, OSCROLL, OAUTO, OOVERLAY, OMARQUEE
109 };
110
111 enum EVerticalAlign {
112     BASELINE, MIDDLE, SUB, SUPER, TEXT_TOP,
113     TEXT_BOTTOM, TOP, BOTTOM, BASELINE_MIDDLE, LENGTH
114 };
115
116 enum EClear {
117     CNONE = 0, CLEFT = 1, CRIGHT = 2, CBOTH = 3
118 };
119
120 enum ETableLayout {
121     TAUTO, TFIXED
122 };
123
124 // CSS Text Layout Module Level 3: Vertical writing support
125 enum WritingMode {
126     TopToBottomWritingMode, RightToLeftWritingMode, LeftToRightWritingMode, BottomToTopWritingMode
127 };
128
129 enum TextCombine {
130     TextCombineNone, TextCombineHorizontal
131 };
132
133 enum EFillAttachment {
134     ScrollBackgroundAttachment, LocalBackgroundAttachment, FixedBackgroundAttachment
135 };
136
137 enum EFillBox {
138     BorderFillBox, PaddingFillBox, ContentFillBox, TextFillBox
139 };
140
141 enum EFillRepeat {
142     RepeatFill, NoRepeatFill, RoundFill, SpaceFill
143 };
144
145 enum EFillLayerType {
146     BackgroundFillLayer, MaskFillLayer
147 };
148
149 // CSS3 Background Values
150 enum EFillSizeType { Contain, Cover, SizeLength, SizeNone };
151
152 // CSS3 Marquee Properties
153
154 enum EMarqueeBehavior { MNONE, MSCROLL, MSLIDE, MALTERNATE };
155 enum EMarqueeDirection { MAUTO = 0, MLEFT = 1, MRIGHT = -1, MUP = 2, MDOWN = -2, MFORWARD = 3, MBACKWARD = -3 };
156
157 // CSS3 Flexible Box Properties
158
159 enum EBoxAlignment { BSTRETCH, BSTART, BCENTER, BEND, BJUSTIFY, BBASELINE };
160 enum EBoxOrient { HORIZONTAL, VERTICAL };
161 enum EBoxLines { SINGLE, MULTIPLE };
162 enum EBoxDirection { BNORMAL, BREVERSE };
163
164 enum ETextSecurity {
165     TSNONE, TSDISC, TSCIRCLE, TSSQUARE
166 };
167
168 // CSS3 User Modify Properties
169
170 enum EUserModify {
171     READ_ONLY, READ_WRITE, READ_WRITE_PLAINTEXT_ONLY
172 };
173
174 // CSS3 User Drag Values
175
176 enum EUserDrag {
177     DRAG_AUTO, DRAG_NONE, DRAG_ELEMENT
178 };
179
180 // CSS3 User Select Values
181
182 enum EUserSelect {
183     SELECT_NONE, SELECT_TEXT
184 };
185
186 // Word Break Values. Matches WinIE, rather than CSS3
187
188 enum EWordBreak {
189     NormalWordBreak, BreakAllWordBreak, BreakWordBreak
190 };
191
192 enum EWordWrap {
193     NormalWordWrap, BreakWordWrap
194 };
195
196 enum ENBSPMode {
197     NBNORMAL, SPACE
198 };
199
200 enum EKHTMLLineBreak {
201     LBNORMAL, AFTER_WHITE_SPACE
202 };
203
204 enum EMatchNearestMailBlockquoteColor {
205     BCNORMAL, MATCH
206 };
207
208 enum EResize {
209     RESIZE_NONE, RESIZE_BOTH, RESIZE_HORIZONTAL, RESIZE_VERTICAL
210 };
211
212 // The order of this enum must match the order of the list style types in CSSValueKeywords.in. 
213 enum EListStyleType {
214     Disc,
215     Circle,
216     Square,
217     DecimalListStyle,
218     DecimalLeadingZero,
219     ArabicIndic,
220     BinaryListStyle,
221     Bengali,
222     Cambodian,
223     Khmer,
224     Devanagari,
225     Gujarati,
226     Gurmukhi,
227     Kannada,
228     LowerHexadecimal,
229     Lao,
230     Malayalam,
231     Mongolian,
232     Myanmar,
233     Octal,
234     Oriya,
235     Persian,
236     Urdu,
237     Telugu,
238     Tibetan,
239     Thai,
240     UpperHexadecimal,
241     LowerRoman,
242     UpperRoman,
243     LowerGreek,
244     LowerAlpha,
245     LowerLatin,
246     UpperAlpha,
247     UpperLatin,
248     Afar,
249     EthiopicHalehameAaEt,
250     EthiopicHalehameAaEr,
251     Amharic,
252     EthiopicHalehameAmEt,
253     AmharicAbegede,
254     EthiopicAbegedeAmEt,
255     CjkEarthlyBranch,
256     CjkHeavenlyStem,
257     Ethiopic,
258     EthiopicHalehameGez,
259     EthiopicAbegede,
260     EthiopicAbegedeGez,
261     HangulConsonant,
262     Hangul,
263     LowerNorwegian,
264     Oromo,
265     EthiopicHalehameOmEt,
266     Sidama,
267     EthiopicHalehameSidEt,
268     Somali,
269     EthiopicHalehameSoEt,
270     Tigre,
271     EthiopicHalehameTig,
272     TigrinyaEr,
273     EthiopicHalehameTiEr,
274     TigrinyaErAbegede,
275     EthiopicAbegedeTiEr,
276     TigrinyaEt,
277     EthiopicHalehameTiEt,
278     TigrinyaEtAbegede,
279     EthiopicAbegedeTiEt,
280     UpperGreek,
281     UpperNorwegian,
282     Asterisks,
283     Footnotes,
284     Hebrew,
285     Armenian,
286     LowerArmenian,
287     UpperArmenian,
288     Georgian,
289     CJKIdeographic,
290     Hiragana,
291     Katakana,
292     HiraganaIroha,
293     KatakanaIroha,
294     NoneListStyle
295 };
296
297 enum StyleContentType {
298     CONTENT_NONE, CONTENT_OBJECT, CONTENT_TEXT, CONTENT_COUNTER, CONTENT_QUOTE
299 };
300
301 enum QuoteType {
302     OPEN_QUOTE, CLOSE_QUOTE, NO_OPEN_QUOTE, NO_CLOSE_QUOTE
303 };
304
305 enum EBorderFit { BorderFitBorder, BorderFitLines };
306
307 enum EAnimationFillMode { AnimationFillModeNone, AnimationFillModeForwards, AnimationFillModeBackwards, AnimationFillModeBoth };
308
309 enum EAnimPlayState {
310     AnimPlayStatePlaying = 0x0,
311     AnimPlayStatePaused = 0x1
312 };
313
314 enum EWhiteSpace {
315     NORMAL, PRE, PRE_WRAP, PRE_LINE, NOWRAP, KHTML_NOWRAP
316 };
317
318 enum ETextAlign {
319     TAAUTO, LEFT, RIGHT, CENTER, JUSTIFY, WEBKIT_LEFT, WEBKIT_RIGHT, WEBKIT_CENTER, TASTART, TAEND,
320 };
321
322 enum ETextTransform {
323     CAPITALIZE, UPPERCASE, LOWERCASE, TTNONE
324 };
325
326 enum ETextDecoration {
327     TDNONE = 0x0 , UNDERLINE = 0x1, OVERLINE = 0x2, LINE_THROUGH= 0x4, BLINK = 0x8
328 };
329
330 enum EPageBreak {
331     PBAUTO, PBALWAYS, PBAVOID
332 };
333
334 enum EEmptyCell {
335     SHOW, HIDE
336 };
337
338 enum ECaptionSide {
339     CAPTOP, CAPBOTTOM, CAPLEFT, CAPRIGHT
340 };
341
342 enum EListStylePosition { OUTSIDE, INSIDE };
343
344 enum EVisibility { VISIBLE, HIDDEN, COLLAPSE };
345
346 enum ECursor {
347     // The following must match the order in CSSValueKeywords.in.
348     CURSOR_AUTO,
349     CURSOR_CROSS,
350     CURSOR_DEFAULT,
351     CURSOR_POINTER,
352     CURSOR_MOVE,
353     CURSOR_VERTICAL_TEXT,
354     CURSOR_CELL,
355     CURSOR_CONTEXT_MENU,
356     CURSOR_ALIAS,
357     CURSOR_PROGRESS,
358     CURSOR_NO_DROP,
359     CURSOR_NOT_ALLOWED,
360     CURSOR_WEBKIT_ZOOM_IN,
361     CURSOR_WEBKIT_ZOOM_OUT,
362     CURSOR_E_RESIZE,
363     CURSOR_NE_RESIZE,
364     CURSOR_NW_RESIZE,
365     CURSOR_N_RESIZE,
366     CURSOR_SE_RESIZE,
367     CURSOR_SW_RESIZE,
368     CURSOR_S_RESIZE,
369     CURSOR_W_RESIZE,
370     CURSOR_EW_RESIZE,
371     CURSOR_NS_RESIZE,
372     CURSOR_NESW_RESIZE,
373     CURSOR_NWSE_RESIZE,
374     CURSOR_COL_RESIZE,
375     CURSOR_ROW_RESIZE,
376     CURSOR_TEXT,
377     CURSOR_WAIT,
378     CURSOR_HELP,
379     CURSOR_ALL_SCROLL,
380     CURSOR_WEBKIT_GRAB,
381     CURSOR_WEBKIT_GRABBING,
382
383     // The following are handled as exceptions so don't need to match.
384     CURSOR_COPY,
385     CURSOR_NONE
386 };
387
388 enum EDisplay {
389     INLINE, BLOCK, LIST_ITEM, RUN_IN, COMPACT, INLINE_BLOCK,
390     TABLE, INLINE_TABLE, TABLE_ROW_GROUP,
391     TABLE_HEADER_GROUP, TABLE_FOOTER_GROUP, TABLE_ROW,
392     TABLE_COLUMN_GROUP, TABLE_COLUMN, TABLE_CELL,
393     TABLE_CAPTION, BOX, INLINE_BOX, 
394 #if ENABLE(WCSS)
395     WAP_MARQUEE,
396 #endif
397     NONE
398 };
399
400 enum EInsideLink {
401     NotInsideLink, InsideUnvisitedLink, InsideVisitedLink
402 };
403     
404 enum EPointerEvents {
405     PE_NONE, PE_AUTO, PE_STROKE, PE_FILL, PE_PAINTED, PE_VISIBLE,
406     PE_VISIBLE_STROKE, PE_VISIBLE_FILL, PE_VISIBLE_PAINTED, PE_ALL
407 };
408
409 enum ETransformStyle3D {
410     TransformStyle3DFlat, TransformStyle3DPreserve3D
411 };
412
413 enum EBackfaceVisibility {
414     BackfaceVisibilityVisible, BackfaceVisibilityHidden
415 };
416     
417 enum ELineClampType { LineClampLineCount, LineClampPercentage };
418
419 enum Hyphens { HyphensNone, HyphensManual, HyphensAuto };
420
421 enum ESpeak { SpeakNone, SpeakNormal, SpeakSpellOut, SpeakDigits, SpeakLiteralPunctuation, SpeakNoPunctuation };
422
423 enum TextEmphasisFill { TextEmphasisFillFilled, TextEmphasisFillOpen };
424
425 enum TextEmphasisMark { TextEmphasisMarkNone, TextEmphasisMarkAuto, TextEmphasisMarkDot, TextEmphasisMarkCircle, TextEmphasisMarkDoubleCircle, TextEmphasisMarkTriangle, TextEmphasisMarkSesame, TextEmphasisMarkCustom };
426
427 enum TextEmphasisPosition { TextEmphasisPositionOver, TextEmphasisPositionUnder };
428
429 enum EImageRendering { ImageRenderingAuto, ImageRenderingOptimizeSpeed, ImageRenderingOptimizeQuality, ImageRenderingOptimizeContrast };
430     
431 } // namespace WebCore
432
433 #endif // RenderStyleConstants_h