Name all the GLib timeout sources
[WebKit-https.git] / Source / WebCore / platform / ScrollTypes.h
1 /*
2  * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24  */
25
26 #ifndef ScrollTypes_h
27 #define ScrollTypes_h
28
29 namespace WebCore {
30
31     enum ScrollDirection {
32         ScrollUp,
33         ScrollDown,
34         ScrollLeft,
35         ScrollRight
36     };
37
38     enum ScrollLogicalDirection {
39         ScrollBlockDirectionBackward,
40         ScrollBlockDirectionForward,
41         ScrollInlineDirectionBackward,
42         ScrollInlineDirectionForward
43     };
44     
45     
46     inline ScrollDirection logicalToPhysical(ScrollLogicalDirection direction, bool isVertical, bool isFlipped) 
47     {
48         switch (direction) {
49         case ScrollBlockDirectionBackward: {
50             if (isVertical) {
51                 if (!isFlipped)
52                     return ScrollUp;
53                 return ScrollDown;
54             } else {
55                 if (!isFlipped)
56                     return ScrollLeft;
57                 return ScrollRight;
58             }
59             break;
60         }
61         case ScrollBlockDirectionForward: {
62             if (isVertical) {
63                 if (!isFlipped)
64                     return ScrollDown;
65                 return ScrollUp;
66             } else {
67                 if (!isFlipped)
68                     return ScrollRight;
69                 return ScrollLeft;
70             }
71             break;
72         }
73         case ScrollInlineDirectionBackward: {
74             if (isVertical) {
75                 if (!isFlipped)
76                     return ScrollLeft;
77                 return ScrollRight;
78             } else {
79                 if (!isFlipped)
80                     return ScrollUp;
81                 return ScrollDown;
82             }
83             break;
84         }
85         case ScrollInlineDirectionForward: {
86             if (isVertical) {
87                 if (!isFlipped)
88                     return ScrollRight;
89                 return ScrollLeft;
90             } else {
91                 if (!isFlipped)
92                     return ScrollDown;
93                 return ScrollUp;
94             }
95             break;
96         }
97         default:
98             ASSERT_NOT_REACHED();
99             break;
100         }
101         return ScrollUp;
102     }
103
104     enum ScrollGranularity {
105         ScrollByLine,
106         ScrollByPage,
107         ScrollByDocument,
108         ScrollByPixel,
109         ScrollByPrecisePixel
110     };
111
112     enum ScrollElasticity {
113         ScrollElasticityAutomatic,
114         ScrollElasticityNone,
115         ScrollElasticityAllowed
116     };
117
118     enum ScrollbarOrientation { HorizontalScrollbar, VerticalScrollbar };
119
120     enum ScrollbarMode { ScrollbarAuto, ScrollbarAlwaysOff, ScrollbarAlwaysOn };
121
122     enum ScrollbarControlSize { RegularScrollbar, SmallScrollbar };
123
124     typedef unsigned ScrollbarControlState;
125
126     enum ScrollbarControlStateMask {
127         ActiveScrollbarState = 1,
128         EnabledScrollbarState = 1 << 1,
129         PressedScrollbarState = 1 << 2
130     };
131
132     enum ScrollbarPart {
133         NoPart = 0,
134         BackButtonStartPart = 1,
135         ForwardButtonStartPart = 1 << 1,
136         BackTrackPart = 1 << 2,
137         ThumbPart = 1 << 3,
138         ForwardTrackPart = 1 << 4,
139         BackButtonEndPart = 1 << 5,
140         ForwardButtonEndPart = 1 << 6,
141         ScrollbarBGPart = 1 << 7,
142         TrackBGPart = 1 << 8,
143         AllParts = 0xffffffff
144     };
145
146     enum ScrollbarButtonsPlacement {
147         ScrollbarButtonsNone,
148         ScrollbarButtonsSingle,
149         ScrollbarButtonsDoubleStart,
150         ScrollbarButtonsDoubleEnd,
151         ScrollbarButtonsDoubleBoth
152     };
153     
154     enum ScrollbarOverlayStyle {
155         ScrollbarOverlayStyleDefault,
156         ScrollbarOverlayStyleDark,
157         ScrollbarOverlayStyleLight
158     };
159
160     enum ScrollbarOverlayState {
161         ScrollbarOverlayStateHidden,
162         ScrollbarOverlayStateThumbShown,
163         ScrollbarOverlayStateAllShown,
164         ScrollbarOverlayStatePulseThumb
165     };
166
167     typedef unsigned ScrollbarControlPartMask;
168
169     enum ScrollPinningBehavior {
170         DoNotPin,
171         PinToTop,
172         PinToBottom
173     };
174 }
175
176 #endif