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
29namespace 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.
46enum 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.
61enum 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.
68enum 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!
83enum EBorderStyle { BNONE, BHIDDEN, INSET, GROOVE, RIDGE, OUTSET, DOTTED, DASHED, SOLID, DOUBLE };
84
85enum EBorderPrecedence { BOFF, BTABLE, BCOLGROUP, BCOL, BROWGROUP, BROW, BCELL };
86
87enum PseudoState { PseudoUnknown, PseudoNone, PseudoAnyLink, PseudoLink, PseudoVisited};
88
89enum EPosition {
90    StaticPosition, RelativePosition, AbsolutePosition, FixedPosition
91};
92
93enum EFloat {
94    FNONE = 0, FLEFT, FRIGHT
95};
96
97
98enum EMarginCollapse { MCOLLAPSE, MSEPARATE, MDISCARD };
99
100// Box attributes. Not inherited.
101
102enum EBoxSizing { CONTENT_BOX, BORDER_BOX };
103
104// Random visual rendering model attributes. Not inherited.
105
106enum EOverflow {
107    OVISIBLE, OHIDDEN, OSCROLL, OAUTO, OOVERLAY, OMARQUEE
108};
109
110enum EVerticalAlign {
111    BASELINE, MIDDLE, SUB, SUPER, TEXT_TOP,
112    TEXT_BOTTOM, TOP, BOTTOM, BASELINE_MIDDLE, LENGTH
113};
114
115enum EClear {
116    CNONE = 0, CLEFT = 1, CRIGHT = 2, CBOTH = 3
117};
118
119enum ETableLayout {
120    TAUTO, TFIXED
121};
122
123enum EUnicodeBidi {
124    UBNormal, Embed, Override
125};
126
127enum EFillAttachment {
128    ScrollBackgroundAttachment, LocalBackgroundAttachment, FixedBackgroundAttachment
129};
130
131enum EFillBox {
132    BorderFillBox, PaddingFillBox, ContentFillBox, TextFillBox
133};
134
135enum EFillRepeat {
136    RepeatFill, NoRepeatFill, RoundFill, SpaceFill
137};
138
139enum EFillLayerType {
140    BackgroundFillLayer, MaskFillLayer
141};
142
143// CSS3 Background Values
144enum EFillSizeType { Contain, Cover, SizeLength, SizeNone };
145
146// CSS3 Marquee Properties
147
148enum EMarqueeBehavior { MNONE, MSCROLL, MSLIDE, MALTERNATE };
149enum EMarqueeDirection { MAUTO = 0, MLEFT = 1, MRIGHT = -1, MUP = 2, MDOWN = -2, MFORWARD = 3, MBACKWARD = -3 };
150
151// CSS3 Flexible Box Properties
152
153enum EBoxAlignment { BSTRETCH, BSTART, BCENTER, BEND, BJUSTIFY, BBASELINE };
154enum EBoxOrient { HORIZONTAL, VERTICAL };
155enum EBoxLines { SINGLE, MULTIPLE };
156enum EBoxDirection { BNORMAL, BREVERSE };
157
158enum ETextSecurity {
159    TSNONE, TSDISC, TSCIRCLE, TSSQUARE
160};
161
162// CSS3 User Modify Properties
163
164enum EUserModify {
165    READ_ONLY, READ_WRITE, READ_WRITE_PLAINTEXT_ONLY
166};
167
168// CSS3 User Drag Values
169
170enum EUserDrag {
171    DRAG_AUTO, DRAG_NONE, DRAG_ELEMENT
172};
173
174// CSS3 User Select Values
175
176enum EUserSelect {
177    SELECT_NONE, SELECT_TEXT
178};
179
180// Word Break Values. Matches WinIE, rather than CSS3
181
182enum EWordBreak {
183    NormalWordBreak, BreakAllWordBreak, BreakWordBreak
184};
185
186enum EWordWrap {
187    NormalWordWrap, BreakWordWrap
188};
189
190enum ENBSPMode {
191    NBNORMAL, SPACE
192};
193
194enum EKHTMLLineBreak {
195    LBNORMAL, AFTER_WHITE_SPACE
196};
197
198enum EMatchNearestMailBlockquoteColor {
199    BCNORMAL, MATCH
200};
201
202enum 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.
207enum 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
287enum StyleContentType {
288    CONTENT_NONE, CONTENT_OBJECT, CONTENT_TEXT, CONTENT_COUNTER
289};
290
291enum EBorderFit { BorderFitBorder, BorderFitLines };
292
293enum EAnimPlayState {
294    AnimPlayStatePlaying = 0x0,
295    AnimPlayStatePaused = 0x1
296};
297
298enum ETimingFunctionType { LinearTimingFunction, CubicBezierTimingFunction };
299
300enum EWhiteSpace {
301    NORMAL, PRE, PRE_WRAP, PRE_LINE, NOWRAP, KHTML_NOWRAP
302};
303
304enum ETextAlign {
305    TAAUTO, LEFT, RIGHT, CENTER, JUSTIFY, WEBKIT_LEFT, WEBKIT_RIGHT, WEBKIT_CENTER
306};
307
308enum ETextTransform {
309    CAPITALIZE, UPPERCASE, LOWERCASE, TTNONE
310};
311
312enum ETextDecoration {
313    TDNONE = 0x0 , UNDERLINE = 0x1, OVERLINE = 0x2, LINE_THROUGH= 0x4, BLINK = 0x8
314};
315
316enum EPageBreak {
317    PBAUTO, PBALWAYS, PBAVOID
318};
319
320enum EEmptyCell {
321    SHOW, HIDE
322};
323
324enum ECaptionSide {
325    CAPTOP, CAPBOTTOM, CAPLEFT, CAPRIGHT
326};
327
328enum EListStylePosition { OUTSIDE, INSIDE };
329
330enum EVisibility { VISIBLE, HIDDEN, COLLAPSE };
331
332enum 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
374enum 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
386enum 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
391enum ETransformStyle3D {
392    TransformStyle3DFlat, TransformStyle3DPreserve3D
393};
394
395enum EBackfaceVisibility {
396    BackfaceVisibilityVisible, BackfaceVisibilityHidden
397};
398
399enum ELineClampType { LineClampLineCount, LineClampPercentage };
400
401} // namespace WebCore
402
403#endif // RenderStyleConstants_h
404