Home | History | Annotate | Download | only in platform
      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     typedef unsigned ScrollbarControlPartMask;
    154 
    155 }
    156 
    157 #endif
    158