initial import
[vuplus_webkit] / 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     };
110
111     enum ScrollElasticity {
112         ScrollElasticityAutomatic,
113         ScrollElasticityNone,
114         ScrollElasticityAllowed
115     };
116
117     enum ScrollbarOrientation { HorizontalScrollbar, VerticalScrollbar };
118
119     enum ScrollbarMode { ScrollbarAuto, ScrollbarAlwaysOff, ScrollbarAlwaysOn };
120
121     enum ScrollbarControlSize { RegularScrollbar, SmallScrollbar };
122
123     typedef unsigned ScrollbarControlState;
124
125     enum ScrollbarControlStateMask {
126         ActiveScrollbarState = 1,
127         EnabledScrollbarState = 1 << 1,
128         PressedScrollbarState = 1 << 2
129     };
130
131     enum ScrollbarPart {
132         NoPart = 0,
133         BackButtonStartPart = 1,
134         ForwardButtonStartPart = 1 << 1,
135         BackTrackPart = 1 << 2,
136         ThumbPart = 1 << 3,
137         ForwardTrackPart = 1 << 4,
138         BackButtonEndPart = 1 << 5,
139         ForwardButtonEndPart = 1 << 6,
140         ScrollbarBGPart = 1 << 7,
141         TrackBGPart = 1 << 8,
142         AllParts = 0xffffffff
143     };
144
145     enum ScrollbarButtonsPlacement {
146         ScrollbarButtonsNone,
147         ScrollbarButtonsSingle,
148         ScrollbarButtonsDoubleStart,
149         ScrollbarButtonsDoubleEnd,
150         ScrollbarButtonsDoubleBoth
151     };
152     
153     enum ScrollbarOverlayStyle {
154         ScrollbarOverlayStyleDefault,
155         ScrollbarOverlayStyleDark,
156         ScrollbarOverlayStyleLight
157     };
158     
159     typedef unsigned ScrollbarControlPartMask;
160
161 }
162
163 #endif