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